From be4eb33925eaaaf467e3d45d163b8ccd227570d6 Mon Sep 17 00:00:00 2001 From: Andrea Ascari Date: Mon, 13 Jan 2025 21:39:31 +0100 Subject: [PATCH 01/19] chore(worker): added missing deps and removed unused ones (#2028) --- deploy/compose.yml | 2 + packages/@liexp/backend/package.json | 1 + .../extractThumbnailFromPDF.flow.ts | 1 - pnpm-lock.yaml | 69 +++++++------------ services/api/package.json | 12 +--- services/worker/package.json | 16 +++-- .../worker/src/bin/create-from-wikipedia.ts | 1 - 7 files changed, 37 insertions(+), 65 deletions(-) diff --git a/deploy/compose.yml b/deploy/compose.yml index 8b61ebbde..526638376 100644 --- a/deploy/compose.yml +++ b/deploy/compose.yml @@ -28,6 +28,7 @@ services: timeout: 10s retries: 10 start_period: 30s + restart: always mem_limit: 1G depends_on: - redis @@ -35,6 +36,7 @@ services: be-worker: image: ghcr.io/lies-exposed/liexp-worker:alpha-latest container_name: liexp-be-worker + restart: always environment: TG_BOT_POLLING: "true" REDIS_HOST: "127.0.0.1" diff --git a/packages/@liexp/backend/package.json b/packages/@liexp/backend/package.json index 28e4ce4ff..673b21867 100644 --- a/packages/@liexp/backend/package.json +++ b/packages/@liexp/backend/package.json @@ -31,6 +31,7 @@ "@databases/sql": "^3.3.0", "@liexp/core": "workspace:*", "@liexp/shared": "workspace:*", + "canvas": "^3.0.1", "date-fns": "^4.1.0", "fp-ts": "^2.16.9", "io-ts": "^2.2.22", diff --git a/packages/@liexp/backend/src/flows/media/thumbnails/extractThumbnailFromPDF.flow.ts b/packages/@liexp/backend/src/flows/media/thumbnails/extractThumbnailFromPDF.flow.ts index 04cbbe889..7e1c3fbb2 100644 --- a/packages/@liexp/backend/src/flows/media/thumbnails/extractThumbnailFromPDF.flow.ts +++ b/packages/@liexp/backend/src/flows/media/thumbnails/extractThumbnailFromPDF.flow.ts @@ -1,4 +1,3 @@ -// import { createRequire } from "module"; import { fp, pipe } from "@liexp/core/lib/fp/index.js"; import { ImageType, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4e5e9ab1b..0569b430c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -76,6 +76,9 @@ importers: axios: specifier: ^1 version: 1.7.9(debug@4.4.0) + canvas: + specifier: ^3.0.1 + version: 3.0.1 date-fns: specifier: ^4.1.0 version: 4.1.0 @@ -869,9 +872,6 @@ importers: '@liexp/shared': specifier: workspace:* version: link:../../packages/@liexp/shared - '@tanstack/react-query': - specifier: ^5.63.0 - version: 5.64.0(react@18.3.1) axios: specifier: ^1.7.9 version: 1.7.9(debug@4.4.0) @@ -881,18 +881,12 @@ importers: cors: specifier: 2.8.5 version: 2.8.5 - cronstrue: - specifier: ^2.50.0 - version: 2.52.0 date-fns: specifier: ^4.1.0 version: 4.1.0 debug: specifier: '*' version: 4.4.0 - domino: - specifier: ^2.1.6 - version: 2.1.6 express: specifier: ^4.21.0 version: 4.21.2 @@ -923,18 +917,9 @@ importers: multer: specifier: ^1.4.5-lts.1 version: 1.4.5-lts.1 - node-telegram-bot-api: - specifier: ^0.66.0 - version: 0.66.0(request@2.88.2) - nodemw: - specifier: ^0.22.0 - version: 0.22.0 page-metadata-parser: specifier: ^1.1.4 version: 1.1.4 - parse2-kmz: - specifier: ^1.0.7 - version: 1.0.7 pg: specifier: ^8.11.5 version: 8.13.1 @@ -959,15 +944,6 @@ importers: typescript: specifier: ^5.6.2 version: 5.7.2 - wink-eng-lite-web-model: - specifier: ^1.8.0 - version: 1.8.1 - wink-nlp: - specifier: ^2.3.0 - version: 2.3.2 - wink-nlp-utils: - specifier: ^2.1.0 - version: 2.1.0 devDependencies: '@liexp/test': specifier: workspace:* @@ -1002,9 +978,6 @@ importers: '@types/node': specifier: ^22.10.2 version: 22.10.2 - '@types/node-telegram-bot-api': - specifier: ^0.64.7 - version: 0.64.7 '@types/pg': specifier: ^8.11.10 version: 8.11.10 @@ -1286,9 +1259,12 @@ importers: axios: specifier: ^1.7.9 version: 1.7.9(debug@4.4.0) - canvas: - specifier: 3.0.1 - version: 3.0.1 + cronstrue: + specifier: ^2.50.0 + version: 2.52.0 + debug: + specifier: ^4.4.0 + version: 4.4.0 exifreader: specifier: ^4.26.0 version: 4.26.0 @@ -1298,6 +1274,9 @@ importers: fp-ts: specifier: ^2.16.9 version: 2.16.9 + instagram-private-api: + specifier: ^1.46.1 + version: 1.46.1 io-ts: specifier: ^2.2.22 version: 2.2.22(fp-ts@2.16.9) @@ -1313,6 +1292,9 @@ importers: node-telegram-bot-api: specifier: ^0.66.0 version: 0.66.0(request@2.88.2) + nodemw: + specifier: ^0.22.0 + version: 0.22.0 page-metadata-parser: specifier: ^1.1.4 version: 1.1.4 @@ -1322,6 +1304,9 @@ importers: pdfjs-dist: specifier: ^4.10.38 version: 4.10.38 + prompts: + specifier: ^2.4.2 + version: 2.4.2 puppeteer-core: specifier: ^23.11.1 version: 23.11.1 @@ -1337,13 +1322,16 @@ importers: typeorm: specifier: ^0.3.20 version: 0.3.20(ioredis@5.4.2)(pg@8.13.1) + wink-eng-lite-web-model: + specifier: ^1.8.0 + version: 1.8.1 wink-nlp: specifier: ^2.3.0 version: 2.3.2 + wink-nlp-utils: + specifier: ^2.1.0 + version: 2.1.0 devDependencies: - '@liexp/test': - specifier: workspace:* - version: link:../../packages/@liexp/test '@types/node-cron': specifier: ^3.0.11 version: 3.0.11 @@ -1356,12 +1344,6 @@ importers: eslint: specifier: ^9.18.0 version: 9.18.0(jiti@2.4.1) - prompts: - specifier: ^2.4.2 - version: 2.4.2 - supertest: - specifier: ^7.0.0 - version: 7.0.0 tsx: specifier: ^4.19.2 version: 4.19.2 @@ -1371,9 +1353,6 @@ importers: vitest: specifier: ^2.1.8 version: 2.1.8(@types/node@22.10.2)(jsdom@26.0.0(canvas@3.0.1))(sass@1.82.0)(terser@5.37.0) - vitest-mock-extended: - specifier: ^2.0.2 - version: 2.0.2(typescript@5.7.2)(vitest@2.1.8(@types/node@22.10.2)(jsdom@26.0.0(canvas@3.0.1))(sass@1.82.0)(terser@5.37.0)) packages: diff --git a/services/api/package.json b/services/api/package.json index 5f39ee598..39ec1abcc 100644 --- a/services/api/package.json +++ b/services/api/package.json @@ -60,14 +60,11 @@ "@liexp/backend": "workspace:*", "@liexp/core": "workspace:*", "@liexp/shared": "workspace:*", - "@tanstack/react-query": "^5.63.0", "axios": "^1.7.9", "body-parser": "^1.20.3", "cors": "2.8.5", - "cronstrue": "^2.50.0", "date-fns": "^4.1.0", "debug": "*", - "domino": "^2.1.6", "express": "^4.21.0", "express-jwt": "^8.5.1", "express-unless": "^2.1.3", @@ -78,10 +75,7 @@ "jsonwebtoken": "^9.0.2", "lodash": "^4.17.21", "multer": "^1.4.5-lts.1", - "node-telegram-bot-api": "^0.66.0", - "nodemw": "^0.22.0", "page-metadata-parser": "^1.1.4", - "parse2-kmz": "^1.0.7", "pg": "^8.11.5", "react": "^18.3.1", "react-dom": "^18.3.1", @@ -89,10 +83,7 @@ "ts-endpoint-express": "^2.0.0", "tsx": "^4.19.2", "typeorm": "^0.3.20", - "typescript": "^5.6.2", - "wink-eng-lite-web-model": "^1.8.0", - "wink-nlp": "^2.3.0", - "wink-nlp-utils": "^2.1.0" + "typescript": "^5.6.2" }, "devDependencies": { "@liexp/test": "workspace:*", @@ -106,7 +97,6 @@ "@types/lodash": "^4.17.14", "@types/multer": "^1.4.12", "@types/node": "^22.10.2", - "@types/node-telegram-bot-api": "^0.64.7", "@types/pg": "^8.11.10", "@types/prompts": "^2.4.9", "@types/react": "^18.3.18", diff --git a/services/worker/package.json b/services/worker/package.json index 7d62e3b6e..19de12659 100644 --- a/services/worker/package.json +++ b/services/worker/package.json @@ -50,37 +50,39 @@ "@liexp/core": "workspace:*", "@liexp/shared": "workspace:*", "axios": "^1.7.9", - "canvas": "3.0.1", + "cronstrue": "^2.50.0", + "debug": "^4.4.0", "exifreader": "^4.26.0", "fluent-ffmpeg": "^2.1.2", "fp-ts": "^2.16.9", + "instagram-private-api": "^1.46.1", "io-ts": "^2.2.22", "io-ts-types": "^0.5.19", "ioredis": "^5.4.2", "node-cron": "^3.0.3", "node-telegram-bot-api": "^0.66.0", + "nodemw": "^0.22.0", "page-metadata-parser": "^1.1.4", "parse2-kmz": "^1.0.7", "pdfjs-dist": "^4.10.38", + "prompts": "^2.4.2", "puppeteer-core": "^23.11.1", "puppeteer-extra": "^3.3.6", "puppeteer-extra-plugin-stealth": "^2.11.2", "sharp": "^0.33.5", "typeorm": "^0.3.20", - "wink-nlp": "^2.3.0" + "wink-eng-lite-web-model": "^1.8.0", + "wink-nlp": "^2.3.0", + "wink-nlp-utils": "^2.1.0" }, "devDependencies": { - "@liexp/test": "workspace:*", "@types/node-cron": "^3.0.11", "dotenv": "^16.4.7", "esbuild": "^0.24.2", "eslint": "^9.18.0", - "prompts": "^2.4.2", - "supertest": "^7.0.0", "tsx": "^4.19.2", "vite-tsconfig-paths": "^5.1.4", - "vitest": "^2.1.8", - "vitest-mock-extended": "^2.0.2" + "vitest": "^2.1.8" }, "packageManager": "pnpm@9.15.3+sha512.1f79bc245a66eb0b07c5d4d83131240774642caaa86ef7d0434ab47c0d16f66b04e21e0c086eb61e62c77efc4d7f7ec071afad3796af64892fae66509173893a" } diff --git a/services/worker/src/bin/create-from-wikipedia.ts b/services/worker/src/bin/create-from-wikipedia.ts index 5a5d77c5a..e8e1ba64f 100644 --- a/services/worker/src/bin/create-from-wikipedia.ts +++ b/services/worker/src/bin/create-from-wikipedia.ts @@ -1,7 +1,6 @@ import { type WikiProviders } from "@liexp/backend/lib/providers/wikipedia/types.js"; import { pipe } from "@liexp/core/lib/fp/index.js"; import { throwTE } from "@liexp/shared/lib/utils/task.utils.js"; - import prompts from "prompts"; import { fetchActorFromWikipedia } from "../flows/actor/fetchAndCreateActorFromWikipedia.flow.js"; import { fetchAndCreateAreaFromWikipedia } from "../flows/area/fetchAndCreateAreaFromWikipedia.js"; From bf3e50282a8c50631b91c6e8af472ffeeeb1b618 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 14 Jan 2025 19:39:27 +0100 Subject: [PATCH 02/19] build(deps-dev): bump dockerode from 4.0.2 to 4.0.3 (#2034) --- pnpm-lock.yaml | 125 +++++++++++++++++++++++++++++++++++--- services/api/package.json | 2 +- 2 files changed, 117 insertions(+), 10 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0569b430c..61ac1ac82 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -994,8 +994,8 @@ importers: specifier: ^6.0.2 version: 6.0.2 dockerode: - specifier: ^4.0.2 - version: 4.0.2 + specifier: ^4.0.3 + version: 4.0.3 dotenv: specifier: ^16.4.7 version: 16.4.7 @@ -2417,6 +2417,15 @@ packages: '@fortawesome/fontawesome-svg-core': ~1 || ~6 react: '>=16.3' + '@grpc/grpc-js@1.12.5': + resolution: {integrity: sha512-d3iiHxdpg5+ZcJ6jnDSOT8Z0O0VMVGy34jAnYLUX8yd36b1qn8f1TwOA/Lc7TsOh03IkPJ38eGI5qD2EjNkoEA==} + engines: {node: '>=12.10.0'} + + '@grpc/proto-loader@0.7.13': + resolution: {integrity: sha512-AiXO/bfe9bmxBjxxtYxFAXGZvMaN5s8kO+jBHAJCON8rJoB5YS/D6X7ZNc6XQkuHNmyl4CYaMI1fJ/Gn27RGGw==} + engines: {node: '>=6'} + hasBin: true + '@humanfs/core@0.19.1': resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} engines: {node: '>=18.18.0'} @@ -2587,6 +2596,9 @@ packages: '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + '@js-sdsl/ordered-map@4.4.2': + resolution: {integrity: sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==} + '@jsep-plugin/assignment@1.3.0': resolution: {integrity: sha512-VVgV+CXrhbMI3aSusQyclHkenWSAm95WaiKrMxRFam3JSUiIaQjoMIw2sEs/OX4XifnqeQUN4DYbJjlA8EfktQ==} engines: {node: '>= 10.16.0'} @@ -3391,6 +3403,36 @@ packages: '@postman/tunnel-agent@0.6.4': resolution: {integrity: sha512-CJJlq8V7rNKhAw4sBfjixKpJW00SHqebqNUQKxMoepgeWZIbdPcD+rguRcivGhS4N12PymDcKgUgSD4rVC+RjQ==} + '@protobufjs/aspromise@1.1.2': + resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} + + '@protobufjs/base64@1.1.2': + resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} + + '@protobufjs/codegen@2.0.4': + resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==} + + '@protobufjs/eventemitter@1.1.0': + resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==} + + '@protobufjs/fetch@1.1.0': + resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==} + + '@protobufjs/float@1.0.2': + resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} + + '@protobufjs/inquire@1.1.0': + resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==} + + '@protobufjs/path@1.1.2': + resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} + + '@protobufjs/pool@1.1.0': + resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==} + + '@protobufjs/utf8@1.1.0': + resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} + '@puppeteer/browsers@2.6.1': resolution: {integrity: sha512-aBSREisdsGH890S2rQqK82qmQYU3uFpSH8wcZWHgHzl3LfzsxAKbLNiAG9mO8v1Y0UICBeClICxPJvyr0rcuxg==} engines: {node: '>=18'} @@ -5992,12 +6034,12 @@ packages: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} - docker-modem@5.0.3: - resolution: {integrity: sha512-89zhop5YVhcPEt5FpUFGr3cDyceGhq/F9J+ZndQ4KfqNvfbJpPMfgeixFgUj5OjCYAboElqODxY5Z1EBsSa6sg==} + docker-modem@5.0.5: + resolution: {integrity: sha512-Cxw8uEcvNTRmsQuGqzzfiCnfGgf96tVJItLh8taOX0miTcIBALKH5TckCSuZbpbjP7uhAl81dOL9sxfa6HgCIg==} engines: {node: '>= 8.0'} - dockerode@4.0.2: - resolution: {integrity: sha512-9wM1BVpVMFr2Pw3eJNXrYYt6DT9k0xMcsSCjtPvyQ+xa1iPg/Mo3T/gUcwI0B2cczqCeCYRPF8yFYDwtFXT0+w==} + dockerode@4.0.3: + resolution: {integrity: sha512-QSXJFcBQNaGZO6U3qWW4B7p8yRIJn/dWmvL2AQWfO/bjptBBO6QYdVkYSYFz9qoivP2jsOHZfmXMAfrK0BMKyg==} engines: {node: '>= 8.0'} doctrine@2.1.0: @@ -7671,6 +7713,9 @@ packages: resolution: {integrity: sha512-CdaO738xRapbKIMVn2m4F6KTj4j7ooJ8POVnebSgKo3KBz5axNXRAL7ZdRjIV6NOr2Uf4vjtRkxrFETOioCqSA==} engines: {node: '>= 12.0.0'} + long@5.2.4: + resolution: {integrity: sha512-qtzLbJE8hq7VabR3mISmVGtoXP8KGc2Z/AT8OuqlYD7JTR3oqrgwdjnk07wpj1twXxYmgDXgoKVWUG/fReSzHg==} + longest-streak@3.1.0: resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} @@ -8693,6 +8738,10 @@ packages: prosemirror-view@1.37.0: resolution: {integrity: sha512-z2nkKI1sJzyi7T47Ji/ewBPuIma1RNvQCCYVdV+MqWBV7o4Sa1n94UJCJJ1aQRF/xRkFfyqLGlGFWitIcCOtbg==} + protobufjs@7.4.0: + resolution: {integrity: sha512-mRUWCc3KUU4w1jU8sGxICXH/gNS94DvI1gxqDvBzhj1JpcsimQkYiOJfwsPUykUI5ZaspFbSgmBLER8IrQ3tqw==} + engines: {node: '>=12.0.0'} + protocol-buffers-schema@3.6.0: resolution: {integrity: sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw==} @@ -12175,6 +12224,18 @@ snapshots: prop-types: 15.8.1 react: 18.3.1 + '@grpc/grpc-js@1.12.5': + dependencies: + '@grpc/proto-loader': 0.7.13 + '@js-sdsl/ordered-map': 4.4.2 + + '@grpc/proto-loader@0.7.13': + dependencies: + lodash.camelcase: 4.3.0 + long: 5.2.4 + protobufjs: 7.4.0 + yargs: 17.7.2 + '@humanfs/core@0.19.1': {} '@humanfs/node@0.16.6': @@ -12315,6 +12376,8 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 + '@js-sdsl/ordered-map@4.4.2': {} + '@jsep-plugin/assignment@1.3.0(jsep@1.4.0)': dependencies: jsep: 1.4.0 @@ -12808,6 +12871,29 @@ snapshots: dependencies: safe-buffer: 5.2.1 + '@protobufjs/aspromise@1.1.2': {} + + '@protobufjs/base64@1.1.2': {} + + '@protobufjs/codegen@2.0.4': {} + + '@protobufjs/eventemitter@1.1.0': {} + + '@protobufjs/fetch@1.1.0': + dependencies: + '@protobufjs/aspromise': 1.1.2 + '@protobufjs/inquire': 1.1.0 + + '@protobufjs/float@1.0.2': {} + + '@protobufjs/inquire@1.1.0': {} + + '@protobufjs/path@1.1.2': {} + + '@protobufjs/pool@1.1.0': {} + + '@protobufjs/utf8@1.1.0': {} + '@puppeteer/browsers@2.6.1': dependencies: debug: 4.4.0 @@ -15862,7 +15948,7 @@ snapshots: dependencies: path-type: 4.0.0 - docker-modem@5.0.3: + docker-modem@5.0.5: dependencies: debug: 4.4.0 readable-stream: 3.6.2 @@ -15871,11 +15957,15 @@ snapshots: transitivePeerDependencies: - supports-color - dockerode@4.0.2: + dockerode@4.0.3: dependencies: '@balena/dockerignore': 1.0.2 - docker-modem: 5.0.3 + '@grpc/grpc-js': 1.12.5 + '@grpc/proto-loader': 0.7.13 + docker-modem: 5.0.5 + protobufjs: 7.4.0 tar-fs: 2.0.1 + uuid: 10.0.0 transitivePeerDependencies: - supports-color @@ -17964,6 +18054,8 @@ snapshots: safe-stable-stringify: 2.5.0 triple-beam: 1.4.1 + long@5.2.4: {} + longest-streak@3.1.0: {} loose-envify@1.4.0: @@ -19179,6 +19271,21 @@ snapshots: prosemirror-state: 1.4.3 prosemirror-transform: 1.10.2 + protobufjs@7.4.0: + dependencies: + '@protobufjs/aspromise': 1.1.2 + '@protobufjs/base64': 1.1.2 + '@protobufjs/codegen': 2.0.4 + '@protobufjs/eventemitter': 1.1.0 + '@protobufjs/fetch': 1.1.0 + '@protobufjs/float': 1.0.2 + '@protobufjs/inquire': 1.1.0 + '@protobufjs/path': 1.1.2 + '@protobufjs/pool': 1.1.0 + '@protobufjs/utf8': 1.1.0 + '@types/node': 22.10.2 + long: 5.2.4 + protocol-buffers-schema@3.6.0: {} proxy-addr@2.0.7: diff --git a/services/api/package.json b/services/api/package.json index 39ec1abcc..325c81dd3 100644 --- a/services/api/package.json +++ b/services/api/package.json @@ -102,7 +102,7 @@ "@types/react": "^18.3.18", "@types/react-dom": "^18.3.5", "@types/supertest": "^6.0.2", - "dockerode": "^4.0.2", + "dockerode": "^4.0.3", "dotenv": "^16.4.7", "eslint": "^9.18.0", "prompts": "^2.4.2", From bc2bbdc2315277bfef806a4a03e40b8b328319de Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 14 Jan 2025 19:39:58 +0100 Subject: [PATCH 03/19] build(deps): bump the langchain group 0.3.29 to 0.3.30 (#2031) --- packages/@liexp/backend/package.json | 2 +- pnpm-lock.yaml | 46 ++++++++++++++-------------- services/ai-bot/package.json | 2 +- 3 files changed, 25 insertions(+), 25 deletions(-) diff --git a/packages/@liexp/backend/package.json b/packages/@liexp/backend/package.json index 673b21867..afe9d4653 100644 --- a/packages/@liexp/backend/package.json +++ b/packages/@liexp/backend/package.json @@ -45,7 +45,7 @@ "devDependencies": { "@liexp/test": "workspace:*", "@aws-sdk/types": "^3.723.0", - "@langchain/core": "^0.3.29", + "@langchain/core": "^0.3.30", "@langchain/openai": "^0.3.17", "@types/fluent-ffmpeg": "^2.1.27", "@types/jsdom": "^21.1.7", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 61ac1ac82..8b824f6c0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -147,11 +147,11 @@ importers: specifier: ^3.723.0 version: 3.723.0 '@langchain/core': - specifier: ^0.3.29 - version: 0.3.29(openai@4.78.1(zod@3.24.1)) + specifier: ^0.3.30 + version: 0.3.30(openai@4.78.1(zod@3.24.1)) '@langchain/openai': specifier: ^0.3.17 - version: 0.3.17(@langchain/core@0.3.29(openai@4.78.1(zod@3.24.1))) + version: 0.3.17(@langchain/core@0.3.30(openai@4.78.1(zod@3.24.1))) '@liexp/test': specifier: workspace:* version: link:../test @@ -181,7 +181,7 @@ importers: version: 5.4.2 langchain: specifier: ^0.3.11 - version: 0.3.11(@langchain/anthropic@0.3.8(@langchain/core@0.3.29(openai@4.78.1(zod@3.24.1))))(@langchain/core@0.3.29(openai@4.78.1(zod@3.24.1)))(axios@1.7.9)(cheerio@1.0.0)(handlebars@4.7.8)(openai@4.78.1(zod@3.24.1))(typeorm@0.3.20(ioredis@5.4.2)(pg@8.13.1)) + version: 0.3.11(@langchain/anthropic@0.3.8(@langchain/core@0.3.30(openai@4.78.1(zod@3.24.1))))(@langchain/core@0.3.30(openai@4.78.1(zod@3.24.1)))(axios@1.7.9)(cheerio@1.0.0)(handlebars@4.7.8)(openai@4.78.1(zod@3.24.1))(typeorm@0.3.20(ioredis@5.4.2)(pg@8.13.1)) puppeteer-core: specifier: ^23.11.1 version: 23.11.1 @@ -813,10 +813,10 @@ importers: version: 3.726.1 '@langchain/community': specifier: ^0.3.23 - version: 0.3.24(@aws-crypto/sha256-js@5.2.0)(@aws-sdk/client-s3@3.726.1)(@aws-sdk/credential-provider-node@3.726.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.1))(@aws-sdk/client-sts@3.726.1))(@browserbasehq/sdk@2.0.0)(@browserbasehq/stagehand@1.5.0(@playwright/test@1.49.0)(deepmerge@4.3.1)(dotenv@16.4.7)(openai@4.78.1(zod@3.24.1))(zod@3.24.1))(@ibm-cloud/watsonx-ai@1.3.0)(@langchain/anthropic@0.3.8(@langchain/core@0.3.29(openai@4.78.1(zod@3.24.1))))(@langchain/core@0.3.29(openai@4.78.1(zod@3.24.1)))(@smithy/util-utf8@2.3.0)(axios@1.7.9)(cheerio@1.0.0)(fast-xml-parser@4.5.1)(handlebars@4.7.8)(ibm-cloud-sdk-core@5.1.0)(ignore@5.3.2)(ioredis@5.4.2)(jsdom@26.0.0(canvas@3.0.1))(jsonwebtoken@9.0.2)(lodash@4.17.21)(openai@4.78.1(zod@3.24.1))(pdf-parse@1.1.1)(pg@8.13.1)(playwright@1.49.0)(typeorm@0.3.20(ioredis@5.4.2)(pg@8.13.1))(ws@8.18.0) + version: 0.3.24(@aws-crypto/sha256-js@5.2.0)(@aws-sdk/client-s3@3.726.1)(@aws-sdk/credential-provider-node@3.726.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.1))(@aws-sdk/client-sts@3.726.1))(@browserbasehq/sdk@2.0.0)(@browserbasehq/stagehand@1.5.0(@playwright/test@1.49.0)(deepmerge@4.3.1)(dotenv@16.4.7)(openai@4.78.1(zod@3.24.1))(zod@3.24.1))(@ibm-cloud/watsonx-ai@1.3.0)(@langchain/anthropic@0.3.8(@langchain/core@0.3.30(openai@4.78.1(zod@3.24.1))))(@langchain/core@0.3.30(openai@4.78.1(zod@3.24.1)))(@smithy/util-utf8@2.3.0)(axios@1.7.9)(cheerio@1.0.0)(fast-xml-parser@4.5.1)(handlebars@4.7.8)(ibm-cloud-sdk-core@5.1.0)(ignore@5.3.2)(ioredis@5.4.2)(jsdom@26.0.0(canvas@3.0.1))(jsonwebtoken@9.0.2)(lodash@4.17.21)(openai@4.78.1(zod@3.24.1))(pdf-parse@1.1.1)(pg@8.13.1)(playwright@1.49.0)(typeorm@0.3.20(ioredis@5.4.2)(pg@8.13.1))(ws@8.18.0) '@langchain/core': - specifier: ^0.3.29 - version: 0.3.29(openai@4.78.1(zod@3.24.1)) + specifier: ^0.3.30 + version: 0.3.30(openai@4.78.1(zod@3.24.1)) '@liexp/backend': specifier: workspace:* version: link:../../packages/@liexp/backend @@ -840,7 +840,7 @@ importers: version: 2.2.22(fp-ts@2.16.9) langchain: specifier: ^0.3.11 - version: 0.3.11(@langchain/anthropic@0.3.8(@langchain/core@0.3.29(openai@4.78.1(zod@3.24.1))))(@langchain/core@0.3.29(openai@4.78.1(zod@3.24.1)))(axios@1.7.9)(cheerio@1.0.0)(handlebars@4.7.8)(openai@4.78.1(zod@3.24.1))(typeorm@0.3.20(ioredis@5.4.2)(pg@8.13.1)) + version: 0.3.11(@langchain/anthropic@0.3.8(@langchain/core@0.3.30(openai@4.78.1(zod@3.24.1))))(@langchain/core@0.3.30(openai@4.78.1(zod@3.24.1)))(axios@1.7.9)(cheerio@1.0.0)(handlebars@4.7.8)(openai@4.78.1(zod@3.24.1))(typeorm@0.3.20(ioredis@5.4.2)(pg@8.13.1)) pdfjs-dist: specifier: ^4.10.38 version: 4.10.38 @@ -2999,8 +2999,8 @@ packages: resolution: {integrity: sha512-qHLvScqERDeH7y2cLuJaSAlMwg3f/3Oc9nayRSXRU2UuaK/SOhI42cxiPLj1FnuHJSmN0rBQFkrLx02gI4mcVg==} engines: {node: '>=18'} - '@langchain/core@0.3.29': - resolution: {integrity: sha512-LGjJq/UV43GnEzBpO2NWelIlzsAWoci+FEqofYqDE+F6O3EvTrSyma27NXs8eurM8MqWxjeL0t4RCmCSlJs2RQ==} + '@langchain/core@0.3.30': + resolution: {integrity: sha512-HFUpjJ6FkPSSeLKzCLKxba4VN1DKnrXRmjaWHDb5KUyE9DZrqak3Sh6k2dkzXDJIcdd/uNeeQGFyQnubVEMkPw==} engines: {node: '>=18'} '@langchain/openai@0.3.17': @@ -12388,10 +12388,10 @@ snapshots: '@jsonquerylang/jsonquery@4.0.0': {} - '@langchain/anthropic@0.3.8(@langchain/core@0.3.29(openai@4.78.1(zod@3.24.1)))': + '@langchain/anthropic@0.3.8(@langchain/core@0.3.30(openai@4.78.1(zod@3.24.1)))': dependencies: '@anthropic-ai/sdk': 0.27.3 - '@langchain/core': 0.3.29(openai@4.78.1(zod@3.24.1)) + '@langchain/core': 0.3.30(openai@4.78.1(zod@3.24.1)) fast-xml-parser: 4.5.1 zod: 3.24.1 zod-to-json-schema: 3.24.1(zod@3.24.1) @@ -12399,18 +12399,18 @@ snapshots: - encoding optional: true - '@langchain/community@0.3.24(@aws-crypto/sha256-js@5.2.0)(@aws-sdk/client-s3@3.726.1)(@aws-sdk/credential-provider-node@3.726.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.1))(@aws-sdk/client-sts@3.726.1))(@browserbasehq/sdk@2.0.0)(@browserbasehq/stagehand@1.5.0(@playwright/test@1.49.0)(deepmerge@4.3.1)(dotenv@16.4.7)(openai@4.78.1(zod@3.24.1))(zod@3.24.1))(@ibm-cloud/watsonx-ai@1.3.0)(@langchain/anthropic@0.3.8(@langchain/core@0.3.29(openai@4.78.1(zod@3.24.1))))(@langchain/core@0.3.29(openai@4.78.1(zod@3.24.1)))(@smithy/util-utf8@2.3.0)(axios@1.7.9)(cheerio@1.0.0)(fast-xml-parser@4.5.1)(handlebars@4.7.8)(ibm-cloud-sdk-core@5.1.0)(ignore@5.3.2)(ioredis@5.4.2)(jsdom@26.0.0(canvas@3.0.1))(jsonwebtoken@9.0.2)(lodash@4.17.21)(openai@4.78.1(zod@3.24.1))(pdf-parse@1.1.1)(pg@8.13.1)(playwright@1.49.0)(typeorm@0.3.20(ioredis@5.4.2)(pg@8.13.1))(ws@8.18.0)': + '@langchain/community@0.3.24(@aws-crypto/sha256-js@5.2.0)(@aws-sdk/client-s3@3.726.1)(@aws-sdk/credential-provider-node@3.726.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.1))(@aws-sdk/client-sts@3.726.1))(@browserbasehq/sdk@2.0.0)(@browserbasehq/stagehand@1.5.0(@playwright/test@1.49.0)(deepmerge@4.3.1)(dotenv@16.4.7)(openai@4.78.1(zod@3.24.1))(zod@3.24.1))(@ibm-cloud/watsonx-ai@1.3.0)(@langchain/anthropic@0.3.8(@langchain/core@0.3.30(openai@4.78.1(zod@3.24.1))))(@langchain/core@0.3.30(openai@4.78.1(zod@3.24.1)))(@smithy/util-utf8@2.3.0)(axios@1.7.9)(cheerio@1.0.0)(fast-xml-parser@4.5.1)(handlebars@4.7.8)(ibm-cloud-sdk-core@5.1.0)(ignore@5.3.2)(ioredis@5.4.2)(jsdom@26.0.0(canvas@3.0.1))(jsonwebtoken@9.0.2)(lodash@4.17.21)(openai@4.78.1(zod@3.24.1))(pdf-parse@1.1.1)(pg@8.13.1)(playwright@1.49.0)(typeorm@0.3.20(ioredis@5.4.2)(pg@8.13.1))(ws@8.18.0)': dependencies: '@browserbasehq/stagehand': 1.5.0(@playwright/test@1.49.0)(deepmerge@4.3.1)(dotenv@16.4.7)(openai@4.78.1(zod@3.24.1))(zod@3.24.1) '@ibm-cloud/watsonx-ai': 1.3.0 - '@langchain/core': 0.3.29(openai@4.78.1(zod@3.24.1)) - '@langchain/openai': 0.3.17(@langchain/core@0.3.29(openai@4.78.1(zod@3.24.1))) + '@langchain/core': 0.3.30(openai@4.78.1(zod@3.24.1)) + '@langchain/openai': 0.3.17(@langchain/core@0.3.30(openai@4.78.1(zod@3.24.1))) binary-extensions: 2.3.0 expr-eval: 2.0.2 flat: 5.0.2 ibm-cloud-sdk-core: 5.1.0 js-yaml: 4.1.0 - langchain: 0.3.11(@langchain/anthropic@0.3.8(@langchain/core@0.3.29(openai@4.78.1(zod@3.24.1))))(@langchain/core@0.3.29(openai@4.78.1(zod@3.24.1)))(axios@1.7.9)(cheerio@1.0.0)(handlebars@4.7.8)(openai@4.78.1(zod@3.24.1))(typeorm@0.3.20(ioredis@5.4.2)(pg@8.13.1)) + langchain: 0.3.11(@langchain/anthropic@0.3.8(@langchain/core@0.3.30(openai@4.78.1(zod@3.24.1))))(@langchain/core@0.3.30(openai@4.78.1(zod@3.24.1)))(axios@1.7.9)(cheerio@1.0.0)(handlebars@4.7.8)(openai@4.78.1(zod@3.24.1))(typeorm@0.3.20(ioredis@5.4.2)(pg@8.13.1)) langsmith: 0.2.11(openai@4.78.1(zod@3.24.1)) openai: 4.78.1(zod@3.24.1) uuid: 10.0.0 @@ -12466,7 +12466,7 @@ snapshots: transitivePeerDependencies: - openai - '@langchain/core@0.3.29(openai@4.78.1(zod@3.24.1))': + '@langchain/core@0.3.30(openai@4.78.1(zod@3.24.1))': dependencies: '@cfworker/json-schema': 4.0.3 ansi-styles: 5.2.0 @@ -12483,9 +12483,9 @@ snapshots: transitivePeerDependencies: - openai - '@langchain/openai@0.3.17(@langchain/core@0.3.29(openai@4.78.1(zod@3.24.1)))': + '@langchain/openai@0.3.17(@langchain/core@0.3.30(openai@4.78.1(zod@3.24.1)))': dependencies: - '@langchain/core': 0.3.29(openai@4.78.1(zod@3.24.1)) + '@langchain/core': 0.3.30(openai@4.78.1(zod@3.24.1)) js-tiktoken: 1.0.15 openai: 4.78.1(zod@3.24.1) zod: 3.24.1 @@ -17877,10 +17877,10 @@ snapshots: kuler@2.0.0: {} - langchain@0.3.11(@langchain/anthropic@0.3.8(@langchain/core@0.3.29(openai@4.78.1(zod@3.24.1))))(@langchain/core@0.3.29(openai@4.78.1(zod@3.24.1)))(axios@1.7.9)(cheerio@1.0.0)(handlebars@4.7.8)(openai@4.78.1(zod@3.24.1))(typeorm@0.3.20(ioredis@5.4.2)(pg@8.13.1)): + langchain@0.3.11(@langchain/anthropic@0.3.8(@langchain/core@0.3.30(openai@4.78.1(zod@3.24.1))))(@langchain/core@0.3.30(openai@4.78.1(zod@3.24.1)))(axios@1.7.9)(cheerio@1.0.0)(handlebars@4.7.8)(openai@4.78.1(zod@3.24.1))(typeorm@0.3.20(ioredis@5.4.2)(pg@8.13.1)): dependencies: - '@langchain/core': 0.3.29(openai@4.78.1(zod@3.24.1)) - '@langchain/openai': 0.3.17(@langchain/core@0.3.29(openai@4.78.1(zod@3.24.1))) + '@langchain/core': 0.3.30(openai@4.78.1(zod@3.24.1)) + '@langchain/openai': 0.3.17(@langchain/core@0.3.30(openai@4.78.1(zod@3.24.1))) '@langchain/textsplitters': 0.0.3(openai@4.78.1(zod@3.24.1)) js-tiktoken: 1.0.15 js-yaml: 4.1.0 @@ -17893,7 +17893,7 @@ snapshots: zod: 3.24.1 zod-to-json-schema: 3.24.1(zod@3.24.1) optionalDependencies: - '@langchain/anthropic': 0.3.8(@langchain/core@0.3.29(openai@4.78.1(zod@3.24.1))) + '@langchain/anthropic': 0.3.8(@langchain/core@0.3.30(openai@4.78.1(zod@3.24.1))) axios: 1.7.9(debug@4.4.0) cheerio: 1.0.0 handlebars: 4.7.8 diff --git a/services/ai-bot/package.json b/services/ai-bot/package.json index 8378e4d8f..d7f90341a 100644 --- a/services/ai-bot/package.json +++ b/services/ai-bot/package.json @@ -24,7 +24,7 @@ "@aws-sdk/client-sso-oidc": "^3.726.0", "@aws-sdk/client-sts": "^3.726.1", "@langchain/community": "^0.3.23", - "@langchain/core": "^0.3.29", + "@langchain/core": "^0.3.30", "@liexp/backend": "workspace:*", "@liexp/core": "workspace:*", "@liexp/shared": "workspace:*", From 703d872ccbd9fdfd9387bb8e708b061f778bd439 Mon Sep 17 00:00:00 2001 From: ascariandrea Date: Tue, 14 Jan 2025 20:42:31 +0100 Subject: [PATCH 04/19] chore: bump pnpm9.15.4 --- package.json | 2 +- packages/@liexp/backend/package.json | 2 +- packages/@liexp/core/package.json | 2 +- packages/@liexp/shared/package.json | 2 +- packages/@liexp/test/package.json | 2 +- packages/@liexp/ui/package.json | 2 +- services/admin-web/package.json | 2 +- services/api/package.json | 2 +- services/storybook/package.json | 2 +- services/web/package.json | 2 +- services/worker/package.json | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/package.json b/package.json index aa2cfdc73..840c073f6 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,7 @@ "typescript-eslint": "^8.18.0", "vitest": "^2.1.8" }, - "packageManager": "pnpm@9.15.0+sha512.76e2379760a4328ec4415815bcd6628dee727af3779aaa4c914e3944156c4299921a89f976381ee107d41f12cfa4b66681ca9c718f0668fa0831ed4c6d8ba56c", + "packageManager": "pnpm@9.15.4+sha512.b2dc20e2fc72b3e18848459b37359a32064663e5627a51e4c74b2c29dd8e8e0491483c3abb40789cfd578bf362fb6ba8261b05f0387d76792ed6e23ea3b1b6a0", "engines": { "node": ">= 22", "npm": "please use pnpm >= 9", diff --git a/packages/@liexp/backend/package.json b/packages/@liexp/backend/package.json index afe9d4653..1bafba960 100644 --- a/packages/@liexp/backend/package.json +++ b/packages/@liexp/backend/package.json @@ -84,5 +84,5 @@ "wink-nlp": "^2.3.0", "wink-nlp-utils": "^2.1.0" }, - "packageManager": "pnpm@9.15.3+sha512.1f79bc245a66eb0b07c5d4d83131240774642caaa86ef7d0434ab47c0d16f66b04e21e0c086eb61e62c77efc4d7f7ec071afad3796af64892fae66509173893a" + "packageManager": "pnpm@9.15.4+sha512.b2dc20e2fc72b3e18848459b37359a32064663e5627a51e4c74b2c29dd8e8e0491483c3abb40789cfd578bf362fb6ba8261b05f0387d76792ed6e23ea3b1b6a0" } diff --git a/packages/@liexp/core/package.json b/packages/@liexp/core/package.json index 8e019d05c..334133b16 100644 --- a/packages/@liexp/core/package.json +++ b/packages/@liexp/core/package.json @@ -54,5 +54,5 @@ "vite-plugin-optimizer": "^1", "vite-tsconfig-paths": "^5" }, - "packageManager": "pnpm@9.15.3+sha512.1f79bc245a66eb0b07c5d4d83131240774642caaa86ef7d0434ab47c0d16f66b04e21e0c086eb61e62c77efc4d7f7ec071afad3796af64892fae66509173893a" + "packageManager": "pnpm@9.15.4+sha512.b2dc20e2fc72b3e18848459b37359a32064663e5627a51e4c74b2c29dd8e8e0491483c3abb40789cfd578bf362fb6ba8261b05f0387d76792ed6e23ea3b1b6a0" } diff --git a/packages/@liexp/shared/package.json b/packages/@liexp/shared/package.json index 6f5bc04ee..5f6b9b408 100644 --- a/packages/@liexp/shared/package.json +++ b/packages/@liexp/shared/package.json @@ -67,5 +67,5 @@ "react-dom": "^18", "sharp": "*" }, - "packageManager": "pnpm@9.15.3+sha512.1f79bc245a66eb0b07c5d4d83131240774642caaa86ef7d0434ab47c0d16f66b04e21e0c086eb61e62c77efc4d7f7ec071afad3796af64892fae66509173893a" + "packageManager": "pnpm@9.15.4+sha512.b2dc20e2fc72b3e18848459b37359a32064663e5627a51e4c74b2c29dd8e8e0491483c3abb40789cfd578bf362fb6ba8261b05f0387d76792ed6e23ea3b1b6a0" } diff --git a/packages/@liexp/test/package.json b/packages/@liexp/test/package.json index a14e7dc22..877b3b00d 100644 --- a/packages/@liexp/test/package.json +++ b/packages/@liexp/test/package.json @@ -34,5 +34,5 @@ "debug": "*", "fast-check": "^2" }, - "packageManager": "pnpm@9.15.3+sha512.1f79bc245a66eb0b07c5d4d83131240774642caaa86ef7d0434ab47c0d16f66b04e21e0c086eb61e62c77efc4d7f7ec071afad3796af64892fae66509173893a" + "packageManager": "pnpm@9.15.4+sha512.b2dc20e2fc72b3e18848459b37359a32064663e5627a51e4c74b2c29dd8e8e0491483c3abb40789cfd578bf362fb6ba8261b05f0387d76792ed6e23ea3b1b6a0" } diff --git a/packages/@liexp/ui/package.json b/packages/@liexp/ui/package.json index b72dc9785..14775b6d8 100644 --- a/packages/@liexp/ui/package.json +++ b/packages/@liexp/ui/package.json @@ -130,5 +130,5 @@ "vite-tsconfig-paths": "^5.1.4", "vitest": "^2.1.8" }, - "packageManager": "pnpm@9.15.3+sha512.1f79bc245a66eb0b07c5d4d83131240774642caaa86ef7d0434ab47c0d16f66b04e21e0c086eb61e62c77efc4d7f7ec071afad3796af64892fae66509173893a" + "packageManager": "pnpm@9.15.4+sha512.b2dc20e2fc72b3e18848459b37359a32064663e5627a51e4c74b2c29dd8e8e0491483c3abb40789cfd578bf362fb6ba8261b05f0387d76792ed6e23ea3b1b6a0" } diff --git a/services/admin-web/package.json b/services/admin-web/package.json index 97efa3ec7..f7dde1c57 100644 --- a/services/admin-web/package.json +++ b/services/admin-web/package.json @@ -64,5 +64,5 @@ "vite-plugin-optimizer": "^1.4.3", "vite-tsconfig-paths": "^5.1.4" }, - "packageManager": "pnpm@9.15.3+sha512.1f79bc245a66eb0b07c5d4d83131240774642caaa86ef7d0434ab47c0d16f66b04e21e0c086eb61e62c77efc4d7f7ec071afad3796af64892fae66509173893a" + "packageManager": "pnpm@9.15.4+sha512.b2dc20e2fc72b3e18848459b37359a32064663e5627a51e4c74b2c29dd8e8e0491483c3abb40789cfd578bf362fb6ba8261b05f0387d76792ed6e23ea3b1b6a0" } diff --git a/services/api/package.json b/services/api/package.json index 325c81dd3..9bcf4a3c4 100644 --- a/services/api/package.json +++ b/services/api/package.json @@ -111,5 +111,5 @@ "vitest": "^2.1.8", "vitest-mock-extended": "^2.0.2" }, - "packageManager": "pnpm@9.15.3+sha512.1f79bc245a66eb0b07c5d4d83131240774642caaa86ef7d0434ab47c0d16f66b04e21e0c086eb61e62c77efc4d7f7ec071afad3796af64892fae66509173893a" + "packageManager": "pnpm@9.15.4+sha512.b2dc20e2fc72b3e18848459b37359a32064663e5627a51e4c74b2c29dd8e8e0491483c3abb40789cfd578bf362fb6ba8261b05f0387d76792ed6e23ea3b1b6a0" } diff --git a/services/storybook/package.json b/services/storybook/package.json index cfd85d824..1adba1fb1 100644 --- a/services/storybook/package.json +++ b/services/storybook/package.json @@ -61,5 +61,5 @@ "vite-plugin-optimizer": "^1.4.3", "vite-tsconfig-paths": "^5.1.4" }, - "packageManager": "pnpm@9.15.3+sha512.1f79bc245a66eb0b07c5d4d83131240774642caaa86ef7d0434ab47c0d16f66b04e21e0c086eb61e62c77efc4d7f7ec071afad3796af64892fae66509173893a" + "packageManager": "pnpm@9.15.4+sha512.b2dc20e2fc72b3e18848459b37359a32064663e5627a51e4c74b2c29dd8e8e0491483c3abb40789cfd578bf362fb6ba8261b05f0387d76792ed6e23ea3b1b6a0" } diff --git a/services/web/package.json b/services/web/package.json index c59c32448..52a6125fb 100644 --- a/services/web/package.json +++ b/services/web/package.json @@ -82,5 +82,5 @@ "vite-plugin-optimizer": "^1.4.3", "vite-tsconfig-paths": "^5.1.4" }, - "packageManager": "pnpm@9.15.3+sha512.1f79bc245a66eb0b07c5d4d83131240774642caaa86ef7d0434ab47c0d16f66b04e21e0c086eb61e62c77efc4d7f7ec071afad3796af64892fae66509173893a" + "packageManager": "pnpm@9.15.4+sha512.b2dc20e2fc72b3e18848459b37359a32064663e5627a51e4c74b2c29dd8e8e0491483c3abb40789cfd578bf362fb6ba8261b05f0387d76792ed6e23ea3b1b6a0" } diff --git a/services/worker/package.json b/services/worker/package.json index 19de12659..04e173593 100644 --- a/services/worker/package.json +++ b/services/worker/package.json @@ -84,5 +84,5 @@ "vite-tsconfig-paths": "^5.1.4", "vitest": "^2.1.8" }, - "packageManager": "pnpm@9.15.3+sha512.1f79bc245a66eb0b07c5d4d83131240774642caaa86ef7d0434ab47c0d16f66b04e21e0c086eb61e62c77efc4d7f7ec071afad3796af64892fae66509173893a" + "packageManager": "pnpm@9.15.4+sha512.b2dc20e2fc72b3e18848459b37359a32064663e5627a51e4c74b2c29dd8e8e0491483c3abb40789cfd578bf362fb6ba8261b05f0387d76792ed6e23ea3b1b6a0" } From e6d060b44995e90c3391863897047ac2fc59c044 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 15 Jan 2025 19:40:38 +0100 Subject: [PATCH 05/19] build(deps-dev): bump @tanstack/eslint-plugin-query to 5.62.16 (#2041) --- packages/@liexp/core/package.json | 2 +- pnpm-lock.yaml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/@liexp/core/package.json b/packages/@liexp/core/package.json index 334133b16..e71b02851 100644 --- a/packages/@liexp/core/package.json +++ b/packages/@liexp/core/package.json @@ -32,7 +32,7 @@ "devDependencies": { "@eslint/js": "^9.18.0", "@rollup/plugin-image": "^3.0.3", - "@tanstack/eslint-plugin-query": "^5.62.9", + "@tanstack/eslint-plugin-query": "^5.62.16", "@types/debug": "^4.1.12", "@types/eslint__js": "^8.42.3", "@vitejs/plugin-react": "^4.3.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8b824f6c0..b829dc39c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -247,8 +247,8 @@ importers: specifier: ^3.0.3 version: 3.0.3(rollup@4.31.0) '@tanstack/eslint-plugin-query': - specifier: ^5.62.9 - version: 5.62.9(eslint@9.18.0(jiti@2.4.1))(typescript@5.7.2) + specifier: ^5.62.16 + version: 5.62.16(eslint@9.18.0(jiti@2.4.1))(typescript@5.7.2) '@types/debug': specifier: ^4.1.12 version: 4.1.12 @@ -4097,8 +4097,8 @@ packages: peerDependencies: storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 - '@tanstack/eslint-plugin-query@5.62.9': - resolution: {integrity: sha512-F3onhTcpBj7zQDo0NVtZwZQKRFx8BwpSabMJybl9no3+dFHUurvNMrH5M/6KNpkdDCf3zyHWadruZL6636B8Fw==} + '@tanstack/eslint-plugin-query@5.62.16': + resolution: {integrity: sha512-VhnHSQ/hc62olLzGhlLJ4BJGWynwjs3cDMsByasKJ3zjW1YZ+6raxOv0gHHISm+VEnAY42pkMowmSWrXfL4NTw==} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -13674,7 +13674,7 @@ snapshots: dependencies: storybook: 8.4.7(prettier@3.4.2) - '@tanstack/eslint-plugin-query@5.62.9(eslint@9.18.0(jiti@2.4.1))(typescript@5.7.2)': + '@tanstack/eslint-plugin-query@5.62.16(eslint@9.18.0(jiti@2.4.1))(typescript@5.7.2)': dependencies: '@typescript-eslint/utils': 8.19.1(eslint@9.18.0(jiti@2.4.1))(typescript@5.7.2) eslint: 9.18.0(jiti@2.4.1) From a50fd738af42b21ffdfaf7ef5303b079b5673721 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 15 Jan 2025 19:40:58 +0100 Subject: [PATCH 06/19] build(deps): bump @tanstack/react-query from 5.64.0 to 5.64.1 (#2042) --- packages/@liexp/ui/package.json | 2 +- pnpm-lock.yaml | 35 +++++++++++++++++++++++---------- services/admin-web/package.json | 2 +- services/storybook/package.json | 2 +- services/web/package.json | 2 +- 5 files changed, 29 insertions(+), 14 deletions(-) diff --git a/packages/@liexp/ui/package.json b/packages/@liexp/ui/package.json index 14775b6d8..c77fc4c63 100644 --- a/packages/@liexp/ui/package.json +++ b/packages/@liexp/ui/package.json @@ -48,7 +48,7 @@ "@mui/system": "^5.16.14", "@mui/x-data-grid": "^7.23.6", "@react-spring/web": "^9.7.4", - "@tanstack/react-query": "^5.63.0", + "@tanstack/react-query": "^5.64.1", "@visx/axis": "^3.12.0", "@visx/curve": "^3.12.0", "@visx/event": "^3.12.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b829dc39c..e93003460 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -480,8 +480,8 @@ importers: specifier: ^9.7.4 version: 9.7.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@tanstack/react-query': - specifier: ^5.63.0 - version: 5.64.0(react@18.3.1) + specifier: ^5.64.1 + version: 5.64.1(react@18.3.1) '@visx/axis': specifier: ^3.12.0 version: 3.12.0(react@18.3.1) @@ -739,8 +739,8 @@ importers: specifier: ^5.16.14 version: 5.16.14(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@tanstack/react-query': - specifier: ^5.63.0 - version: 5.64.0(react@18.3.1) + specifier: ^5.64.1 + version: 5.64.1(react@18.3.1) debug: specifier: ^4.3.4 version: 4.4.0 @@ -1069,8 +1069,8 @@ importers: specifier: ^8.4.6 version: 8.4.7(storybook@8.4.7(prettier@3.4.2)) '@tanstack/react-query': - specifier: ^5.63.0 - version: 5.64.0(react@18.3.1) + specifier: ^5.64.1 + version: 5.64.1(react@18.3.1) '@visx/gradient': specifier: ^3.12.0 version: 3.12.0(react@18.3.1) @@ -1151,8 +1151,8 @@ importers: specifier: workspace:* version: link:../../packages/@liexp/ui '@tanstack/react-query': - specifier: ^5.63.0 - version: 5.64.0(react@18.3.1) + specifier: ^5.64.1 + version: 5.64.1(react@18.3.1) compression: specifier: ^1.7.4 version: 1.7.5 @@ -4105,11 +4105,19 @@ packages: '@tanstack/query-core@5.64.0': resolution: {integrity: sha512-/MPJt/AaaMzdWJZTafgMyYhEX/lGjQrNz8+NDQSk8fNoU5PHqh05FhQaBrEQafW2PeBHsRbefEf//qKMiSAbQQ==} + '@tanstack/query-core@5.64.1': + resolution: {integrity: sha512-978Wx4Wl4UJZbmvU/rkaM9cQtXXrbhK0lsz/UZhYIbyKYA8E4LdomTwyh2GHZ4oU0BKKoDH4YlKk2VscCUgNmg==} + '@tanstack/react-query@5.64.0': resolution: {integrity: sha512-tBMzlROROUcTDMpDt1NC3n9ndKnJHPB3RCpa6Bf9f31TFvqhLz879x8jldtKU+6IwMSw1Pn4K1AKA+2SYyA6TA==} peerDependencies: react: ^18 || ^19 + '@tanstack/react-query@5.64.1': + resolution: {integrity: sha512-vW5ggHpIO2Yjj44b4sB+Fd3cdnlMJppXRBJkEHvld6FXh3j5dwWJoQo7mGtKI2RbSFyiyu/PhGAy0+Vv5ev9Eg==} + peerDependencies: + react: ^18 || ^19 + '@testing-library/dom@10.4.0': resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==} engines: {node: '>=18'} @@ -13684,11 +13692,18 @@ snapshots: '@tanstack/query-core@5.64.0': {} + '@tanstack/query-core@5.64.1': {} + '@tanstack/react-query@5.64.0(react@18.3.1)': dependencies: '@tanstack/query-core': 5.64.0 react: 18.3.1 + '@tanstack/react-query@5.64.1(react@18.3.1)': + dependencies: + '@tanstack/query-core': 5.64.1 + react: 18.3.1 + '@testing-library/dom@10.4.0': dependencies: '@babel/code-frame': 7.26.2 @@ -19422,7 +19437,7 @@ snapshots: ra-core@5.4.4(react-dom@18.3.1(react@18.3.1))(react-hook-form@7.54.1(react@18.3.1))(react-router-dom@6.28.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-router@6.28.1(react@18.3.1))(react@18.3.1): dependencies: - '@tanstack/react-query': 5.64.0(react@18.3.1) + '@tanstack/react-query': 5.64.1(react@18.3.1) clsx: 2.1.1 date-fns: 3.6.0 eventemitter3: 5.0.1 @@ -19464,7 +19479,7 @@ snapshots: '@mui/icons-material': 5.16.14(@mui/material@5.16.14(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.18)(react@18.3.1) '@mui/material': 5.16.14(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/utils': 6.3.1(@types/react@18.3.18)(react@18.3.1) - '@tanstack/react-query': 5.64.0(react@18.3.1) + '@tanstack/react-query': 5.64.1(react@18.3.1) autosuggest-highlight: 3.3.4 clsx: 2.1.1 css-mediaquery: 0.1.2 diff --git a/services/admin-web/package.json b/services/admin-web/package.json index f7dde1c57..1406b88a9 100644 --- a/services/admin-web/package.json +++ b/services/admin-web/package.json @@ -40,7 +40,7 @@ "@liexp/ui": "workspace:*", "@mui/icons-material": "^5.16.14", "@mui/material": "^5.16.14", - "@tanstack/react-query": "^5.63.0", + "@tanstack/react-query": "^5.64.1", "debug": "^4.3.4", "fp-ts": "^2.16.9", "io-ts": "^2.2.22", diff --git a/services/storybook/package.json b/services/storybook/package.json index 1adba1fb1..3b309797c 100644 --- a/services/storybook/package.json +++ b/services/storybook/package.json @@ -37,7 +37,7 @@ "@storybook/react": "^8.4.6", "@storybook/react-vite": "^8.4.6", "@storybook/theming": "^8.4.6", - "@tanstack/react-query": "^5.63.0", + "@tanstack/react-query": "^5.64.1", "@visx/gradient": "^3.12.0", "d3": "^7.9.0", "date-fns": "^4.1.0", diff --git a/services/web/package.json b/services/web/package.json index 52a6125fb..d9f4ff5ce 100644 --- a/services/web/package.json +++ b/services/web/package.json @@ -48,7 +48,7 @@ "@liexp/core": "workspace:*", "@liexp/shared": "workspace:*", "@liexp/ui": "workspace:*", - "@tanstack/react-query": "^5.63.0", + "@tanstack/react-query": "^5.64.1", "compression": "^1.7.4", "date-fns": "^4.1.0", "debug": "^4.3.4", From 97be6ec79b94ca5b6c907a4c87073239164bbf5a Mon Sep 17 00:00:00 2001 From: ascariandrea Date: Thu, 16 Jan 2025 19:22:30 +0100 Subject: [PATCH 07/19] chore: ignore dependabot updates for @liexp/packages --- .github/dependabot.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 66db3267e..93a7f4372 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -1,6 +1,15 @@ --- version: 2 updates: + # ignore all updates for the @liexp/packages + - package-ecosystem: "npm" + directories: + - "/packages/@liexp/*" + schedule: + interval: "daily" + ignore: + - dependency-name: "*" + - package-ecosystem: "npm" directories: - "/" From 0358ef35c3b6c847cbf91d98531821664a72c665 Mon Sep 17 00:00:00 2001 From: ascariandrea Date: Thu, 16 Jan 2025 19:33:52 +0100 Subject: [PATCH 08/19] chore: include ai-bot and worker in dependabot directories --- .github/dependabot.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 93a7f4372..3c2f02872 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -20,6 +20,8 @@ updates: - "/packages/@liexp/ui" - "/services/api" - "/services/web" + - "/services/ai-bot" + - "/services/worker" - "/services/admin-web" - "/services/storybook" schedule: From 1e8d850ceca38d2d8f67f1228c71a658fac116f3 Mon Sep 17 00:00:00 2001 From: ascariandrea Date: Fri, 17 Jan 2025 19:22:41 +0100 Subject: [PATCH 09/19] chore: bump storybook to 8.5.0 --- package.json | 2 +- packages/@liexp/ui/package.json | 2 +- pnpm-lock.yaml | 3172 +++++++++++++++---------------- services/admin-web/package.json | 2 +- services/api/package.json | 4 +- services/storybook/package.json | 18 +- services/web/package.json | 2 +- 7 files changed, 1537 insertions(+), 1665 deletions(-) diff --git a/package.json b/package.json index 840c073f6..836426875 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ "devDependencies": { "@commitlint/cli": "^19.6.0", "@commitlint/config-conventional": "^19.6.0", - "@types/node": "^22.10.2", + "@types/node": "^22.10.7", "@vitest/coverage-v8": "^2.1.8", "eslint": "^9.18.0", "husky": "^9.1.7", diff --git a/packages/@liexp/ui/package.json b/packages/@liexp/ui/package.json index c77fc4c63..c559846ad 100644 --- a/packages/@liexp/ui/package.json +++ b/packages/@liexp/ui/package.json @@ -46,7 +46,7 @@ "@mui/lab": "^5.0.0-alpha.175", "@mui/material": "^5.16.14", "@mui/system": "^5.16.14", - "@mui/x-data-grid": "^7.23.6", + "@mui/x-data-grid": "^7.24.0", "@react-spring/web": "^9.7.4", "@tanstack/react-query": "^5.64.1", "@visx/axis": "^3.12.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e93003460..c4061f839 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -18,16 +18,16 @@ importers: devDependencies: '@commitlint/cli': specifier: ^19.6.0 - version: 19.6.1(@types/node@22.10.2)(typescript@5.7.2) + version: 19.6.1(@types/node@22.10.7)(typescript@5.7.2) '@commitlint/config-conventional': specifier: ^19.6.0 version: 19.6.0 '@types/node': - specifier: ^22.10.2 - version: 22.10.2 + specifier: ^22.10.7 + version: 22.10.7 '@vitest/coverage-v8': specifier: ^2.1.8 - version: 2.1.8(vitest@2.1.8(@types/node@22.10.2)(jsdom@26.0.0(canvas@3.0.1))(sass@1.82.0)(terser@5.37.0)) + version: 2.1.8(vitest@2.1.8(@types/node@22.10.7)(jsdom@26.0.0(canvas@3.0.1))(sass@1.82.0)(terser@5.37.0)) eslint: specifier: ^9.18.0 version: 9.18.0(jiti@2.4.1) @@ -36,7 +36,7 @@ importers: version: 9.1.7 knip: specifier: ^5.39.4 - version: 5.41.1(@types/node@22.10.2)(typescript@5.7.2) + version: 5.41.1(@types/node@22.10.7)(typescript@5.7.2) lint-staged: specifier: ^15.2.11 version: 15.3.0 @@ -45,22 +45,22 @@ importers: version: 5.7.2 typescript-eslint: specifier: ^8.18.0 - version: 8.19.1(eslint@9.18.0(jiti@2.4.1))(typescript@5.7.2) + version: 8.20.0(eslint@9.18.0(jiti@2.4.1))(typescript@5.7.2) vitest: specifier: ^2.1.8 - version: 2.1.8(@types/node@22.10.2)(jsdom@26.0.0(canvas@3.0.1))(sass@1.82.0)(terser@5.37.0) + version: 2.1.8(@types/node@22.10.7)(jsdom@26.0.0(canvas@3.0.1))(sass@1.82.0)(terser@5.37.0) packages/@liexp/backend: dependencies: '@aws-sdk/client-s3': specifier: ^3.726.1 - version: 3.726.1 + version: 3.732.0 '@aws-sdk/lib-storage': specifier: ^3.726.1 - version: 3.726.1(@aws-sdk/client-s3@3.726.1) + version: 3.732.0(@aws-sdk/client-s3@3.732.0) '@aws-sdk/s3-request-presigner': specifier: ^3.726.1 - version: 3.726.1 + version: 3.732.0 '@databases/escape-identifier': specifier: ^1.0.3 version: 1.0.3 @@ -145,7 +145,7 @@ importers: devDependencies: '@aws-sdk/types': specifier: ^3.723.0 - version: 3.723.0 + version: 3.731.0 '@langchain/core': specifier: ^0.3.30 version: 0.3.30(openai@4.78.1(zod@3.24.1)) @@ -196,13 +196,13 @@ importers: version: 5.7.2 vite-tsconfig-paths: specifier: ^5.1.4 - version: 5.1.4(typescript@5.7.2)(vite@5.4.11(@types/node@22.10.2)(sass@1.82.0)(terser@5.37.0)) + version: 5.1.4(typescript@5.7.2)(vite@5.4.14(@types/node@22.10.7)(sass@1.82.0)(terser@5.37.0)) vitest: specifier: ^2.1.8 - version: 2.1.8(@types/node@22.10.2)(jsdom@26.0.0(canvas@3.0.1))(sass@1.82.0)(terser@5.37.0) + version: 2.1.8(@types/node@22.10.7)(jsdom@26.0.0(canvas@3.0.1))(sass@1.82.0)(terser@5.37.0) vitest-mock-extended: specifier: ^2.0.2 - version: 2.0.2(typescript@5.7.2)(vitest@2.1.8(@types/node@22.10.2)(jsdom@26.0.0(canvas@3.0.1))(sass@1.82.0)(terser@5.37.0)) + version: 2.0.2(typescript@5.7.2)(vitest@2.1.8(@types/node@22.10.7)(jsdom@26.0.0(canvas@3.0.1))(sass@1.82.0)(terser@5.37.0)) packages/@liexp/core: dependencies: @@ -229,16 +229,16 @@ importers: version: 7.1.3 vite: specifier: ^6 - version: 6.0.9(@types/node@22.10.2)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) + version: 6.0.11(@types/node@22.10.7)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) vite-plugin-css-injected-by-js: specifier: ^3 - version: 3.5.2(vite@6.0.9(@types/node@22.10.2)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)) + version: 3.5.2(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)) vite-plugin-optimizer: specifier: ^1 version: 1.4.3 vite-tsconfig-paths: specifier: ^5 - version: 5.1.4(typescript@5.7.2)(vite@6.0.9(@types/node@22.10.2)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)) + version: 5.1.4(typescript@5.7.2)(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)) devDependencies: '@eslint/js': specifier: ^9.18.0 @@ -257,7 +257,7 @@ importers: version: 8.42.3 '@vitejs/plugin-react': specifier: ^4.3.4 - version: 4.3.4(vite@6.0.9(@types/node@22.10.2)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)) + version: 4.3.4(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)) eslint: specifier: ^9.18.0 version: 9.18.0(jiti@2.4.1) @@ -269,10 +269,10 @@ importers: version: 0.3.2(eslint@9.18.0(jiti@2.4.1))(typescript@5.7.2) eslint-plugin-import: specifier: ^2.31.0 - version: 2.31.0(@typescript-eslint/parser@8.19.1(eslint@9.18.0(jiti@2.4.1))(typescript@5.7.2))(eslint-import-resolver-typescript@3.7.0)(eslint@9.18.0(jiti@2.4.1)) + version: 2.31.0(@typescript-eslint/parser@8.20.0(eslint@9.18.0(jiti@2.4.1))(typescript@5.7.2))(eslint-import-resolver-typescript@3.7.0)(eslint@9.18.0(jiti@2.4.1)) eslint-plugin-prettier: specifier: ^5.2.1 - version: 5.2.1(@types/eslint@9.6.1)(eslint-config-prettier@9.1.0(eslint@9.18.0(jiti@2.4.1)))(eslint@9.18.0(jiti@2.4.1))(prettier@3.4.2) + version: 5.2.2(@types/eslint@9.6.1)(eslint-config-prettier@9.1.0(eslint@9.18.0(jiti@2.4.1)))(eslint@9.18.0(jiti@2.4.1))(prettier@3.4.2) eslint-plugin-react: specifier: ^7.37.4 version: 7.37.4(eslint@9.18.0(jiti@2.4.1)) @@ -290,13 +290,13 @@ importers: version: 0.22.0(@types/hast@3.0.4) '@blocknote/server-util': specifier: ^0.22.0 - version: 0.22.0(@types/hast@3.0.4)(canvas@2.11.2)(prosemirror-model@1.24.0)(prosemirror-state@1.4.3)(prosemirror-view@1.37.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.22.0(@types/hast@3.0.4)(canvas@2.11.2)(prosemirror-model@1.24.1)(prosemirror-state@1.4.3)(prosemirror-view@1.37.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@liexp/core': specifier: workspace:* version: link:../core '@tanstack/react-query': specifier: ^5 - version: 5.64.0(react@18.3.1) + version: 5.64.1(react@18.3.1) axios: specifier: ^1.7.9 version: 1.7.9(debug@4.4.0) @@ -378,13 +378,13 @@ importers: version: 5.7.2 vite-tsconfig-paths: specifier: ^5.1.4 - version: 5.1.4(typescript@5.7.2)(vite@6.0.9(@types/node@22.10.2)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)) + version: 5.1.4(typescript@5.7.2)(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)) vitest: specifier: ^2.1.8 - version: 2.1.8(@types/node@22.10.2)(jsdom@26.0.0(canvas@2.11.2))(sass@1.82.0)(terser@5.37.0) + version: 2.1.8(@types/node@22.10.7)(jsdom@26.0.0(canvas@2.11.2))(sass@1.82.0)(terser@5.37.0) vitest-mock-extended: specifier: ^2.0.2 - version: 2.0.2(typescript@5.7.2)(vitest@2.1.8(@types/node@22.10.2)(jsdom@26.0.0(canvas@2.11.2))(sass@1.82.0)(terser@5.37.0)) + version: 2.0.2(typescript@5.7.2)(vitest@2.1.8(@types/node@22.10.7)(jsdom@26.0.0(canvas@2.11.2))(sass@1.82.0)(terser@5.37.0)) packages/@liexp/test: dependencies: @@ -421,10 +421,10 @@ importers: version: 0.22.0(@types/hast@3.0.4) '@blocknote/mantine': specifier: ^0.22.0 - version: 0.22.0(@tiptap/pm@2.10.3)(@types/hast@3.0.4)(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.22.0(@tiptap/pm@2.11.3)(@types/hast@3.0.4)(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@blocknote/react': specifier: ^0.22.0 - version: 0.22.0(@tiptap/pm@2.10.3)(@types/hast@3.0.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.22.0(@tiptap/pm@2.11.3)(@types/hast@3.0.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@emotion/cache': specifier: ^11.14.0 version: 11.14.0 @@ -474,8 +474,8 @@ importers: specifier: ^5.16.14 version: 5.16.14(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1) '@mui/x-data-grid': - specifier: ^7.23.6 - version: 7.23.6(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@mui/material@5.16.14(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mui/system@5.16.14(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^7.24.0 + version: 7.24.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@mui/material@5.16.14(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mui/system@5.16.14(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@react-spring/web': specifier: ^9.7.4 version: 9.7.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -710,13 +710,13 @@ importers: version: 5.7.2 vite: specifier: ^6.0.9 - version: 6.0.9(@types/node@22.10.2)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) + version: 6.0.11(@types/node@22.10.7)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) vite-tsconfig-paths: specifier: ^5.1.4 - version: 5.1.4(typescript@5.7.2)(vite@6.0.9(@types/node@22.10.2)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)) + version: 5.1.4(typescript@5.7.2)(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)) vitest: specifier: ^2.1.8 - version: 2.1.8(@types/node@22.10.2)(jsdom@26.0.0(canvas@3.0.1))(sass@1.82.0)(terser@5.37.0) + version: 2.1.8(@types/node@22.10.7)(jsdom@26.0.0(canvas@3.0.1))(sass@1.82.0)(terser@5.37.0) services/admin-web: dependencies: @@ -773,8 +773,8 @@ importers: specifier: ^4.1.12 version: 4.1.12 '@types/node': - specifier: ^22.10.2 - version: 22.10.2 + specifier: ^22.10.7 + version: 22.10.7 '@types/react': specifier: ^18.3.18 version: 18.3.18 @@ -792,28 +792,28 @@ importers: version: 5.7.2 vite: specifier: ^6.0.9 - version: 6.0.9(@types/node@22.10.2)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) + version: 6.0.11(@types/node@22.10.7)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) vite-plugin-css-injected-by-js: specifier: ^3.5.2 - version: 3.5.2(vite@6.0.9(@types/node@22.10.2)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)) + version: 3.5.2(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)) vite-plugin-optimizer: specifier: ^1.4.3 version: 1.4.3 vite-tsconfig-paths: specifier: ^5.1.4 - version: 5.1.4(typescript@5.7.2)(vite@6.0.9(@types/node@22.10.2)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)) + version: 5.1.4(typescript@5.7.2)(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)) services/ai-bot: dependencies: '@aws-sdk/client-sso-oidc': specifier: ^3.726.0 - version: 3.726.0(@aws-sdk/client-sts@3.726.1) + version: 3.731.1 '@aws-sdk/client-sts': specifier: ^3.726.1 - version: 3.726.1 + version: 3.731.1 '@langchain/community': specifier: ^0.3.23 - version: 0.3.24(@aws-crypto/sha256-js@5.2.0)(@aws-sdk/client-s3@3.726.1)(@aws-sdk/credential-provider-node@3.726.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.1))(@aws-sdk/client-sts@3.726.1))(@browserbasehq/sdk@2.0.0)(@browserbasehq/stagehand@1.5.0(@playwright/test@1.49.0)(deepmerge@4.3.1)(dotenv@16.4.7)(openai@4.78.1(zod@3.24.1))(zod@3.24.1))(@ibm-cloud/watsonx-ai@1.3.0)(@langchain/anthropic@0.3.8(@langchain/core@0.3.30(openai@4.78.1(zod@3.24.1))))(@langchain/core@0.3.30(openai@4.78.1(zod@3.24.1)))(@smithy/util-utf8@2.3.0)(axios@1.7.9)(cheerio@1.0.0)(fast-xml-parser@4.5.1)(handlebars@4.7.8)(ibm-cloud-sdk-core@5.1.0)(ignore@5.3.2)(ioredis@5.4.2)(jsdom@26.0.0(canvas@3.0.1))(jsonwebtoken@9.0.2)(lodash@4.17.21)(openai@4.78.1(zod@3.24.1))(pdf-parse@1.1.1)(pg@8.13.1)(playwright@1.49.0)(typeorm@0.3.20(ioredis@5.4.2)(pg@8.13.1))(ws@8.18.0) + version: 0.3.24(@aws-crypto/sha256-js@5.2.0)(@aws-sdk/client-s3@3.732.0)(@aws-sdk/credential-provider-node@3.731.1)(@browserbasehq/sdk@2.0.0)(@browserbasehq/stagehand@1.5.0(@playwright/test@1.49.0)(deepmerge@4.3.1)(dotenv@16.4.7)(openai@4.78.1(zod@3.24.1))(zod@3.24.1))(@ibm-cloud/watsonx-ai@1.3.0)(@langchain/anthropic@0.3.8(@langchain/core@0.3.30(openai@4.78.1(zod@3.24.1))))(@langchain/core@0.3.30(openai@4.78.1(zod@3.24.1)))(@smithy/util-utf8@2.3.0)(axios@1.7.9)(cheerio@1.0.0)(fast-xml-parser@4.5.1)(handlebars@4.7.8)(ibm-cloud-sdk-core@5.1.0)(ignore@5.3.2)(ioredis@5.4.2)(jsdom@26.0.0(canvas@3.0.1))(jsonwebtoken@9.0.2)(lodash@4.17.21)(openai@4.78.1(zod@3.24.1))(pdf-parse@1.1.1)(pg@8.13.1)(playwright@1.49.0)(typeorm@0.3.20(ioredis@5.4.2)(pg@8.13.1))(ws@8.18.0) '@langchain/core': specifier: ^0.3.30 version: 0.3.30(openai@4.78.1(zod@3.24.1)) @@ -862,7 +862,7 @@ importers: dependencies: '@aws-sdk/client-s3': specifier: ^3.726.1 - version: 3.726.1 + version: 3.732.0 '@liexp/backend': specifier: workspace:* version: link:../../packages/@liexp/backend @@ -958,8 +958,8 @@ importers: specifier: ^4.1.12 version: 4.1.12 '@types/dockerode': - specifier: ^3.3.33 - version: 3.3.33 + specifier: ^3.3.34 + version: 3.3.34 '@types/express': specifier: ^4.17.21 version: 4.17.21 @@ -976,8 +976,8 @@ importers: specifier: ^1.4.12 version: 1.4.12 '@types/node': - specifier: ^22.10.2 - version: 22.10.2 + specifier: ^22.10.7 + version: 22.10.7 '@types/pg': specifier: ^8.11.10 version: 8.11.10 @@ -1010,13 +1010,13 @@ importers: version: 7.0.0 vite-tsconfig-paths: specifier: ^5.1.4 - version: 5.1.4(typescript@5.7.2)(vite@6.0.9(@types/node@22.10.2)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)) + version: 5.1.4(typescript@5.7.2)(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)) vitest: specifier: ^2.1.8 - version: 2.1.8(@types/node@22.10.2)(jsdom@26.0.0(canvas@3.0.1))(sass@1.82.0)(terser@5.37.0) + version: 2.1.8(@types/node@22.10.7)(jsdom@26.0.0(canvas@3.0.1))(sass@1.82.0)(terser@5.37.0) vitest-mock-extended: specifier: ^2.0.2 - version: 2.0.2(typescript@5.7.2)(vitest@2.1.8(@types/node@22.10.2)(jsdom@26.0.0(canvas@3.0.1))(sass@1.82.0)(terser@5.37.0)) + version: 2.0.2(typescript@5.7.2)(vitest@2.1.8(@types/node@22.10.7)(jsdom@26.0.0(canvas@3.0.1))(sass@1.82.0)(terser@5.37.0)) services/storybook: dependencies: @@ -1045,29 +1045,29 @@ importers: specifier: ^5.16.14 version: 5.16.14(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@storybook/addon-essentials': - specifier: ^8.4.6 - version: 8.4.7(@types/react@18.3.18)(storybook@8.4.7(prettier@3.4.2)) + specifier: ^8.5.0 + version: 8.5.0(@types/react@18.3.18)(storybook@8.5.0(prettier@3.4.2)) '@storybook/addon-interactions': - specifier: ^8.4.6 - version: 8.4.7(storybook@8.4.7(prettier@3.4.2)) + specifier: ^8.5.0 + version: 8.5.0(storybook@8.5.0(prettier@3.4.2)) '@storybook/addon-links': - specifier: ^8.4.6 - version: 8.4.7(react@18.3.1)(storybook@8.4.7(prettier@3.4.2)) + specifier: ^8.5.0 + version: 8.5.0(react@18.3.1)(storybook@8.5.0(prettier@3.4.2)) '@storybook/builder-vite': - specifier: ^8.4.6 - version: 8.4.7(storybook@8.4.7(prettier@3.4.2))(vite@6.0.9(@types/node@22.10.2)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)) + specifier: ^8.5.0 + version: 8.5.0(storybook@8.5.0(prettier@3.4.2))(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)) '@storybook/manager-api': - specifier: ^8.4.6 - version: 8.4.7(storybook@8.4.7(prettier@3.4.2)) + specifier: ^8.5.0 + version: 8.5.0(storybook@8.5.0(prettier@3.4.2)) '@storybook/react': - specifier: ^8.4.6 - version: 8.4.7(@storybook/test@8.4.7(storybook@8.4.7(prettier@3.4.2)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.7(prettier@3.4.2))(typescript@5.7.2) + specifier: ^8.5.0 + version: 8.5.0(@storybook/test@8.5.0(storybook@8.5.0(prettier@3.4.2)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.5.0(prettier@3.4.2))(typescript@5.7.2) '@storybook/react-vite': - specifier: ^8.4.6 - version: 8.4.7(@storybook/test@8.4.7(storybook@8.4.7(prettier@3.4.2)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.31.0)(storybook@8.4.7(prettier@3.4.2))(typescript@5.7.2)(vite@6.0.9(@types/node@22.10.2)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)) + specifier: ^8.5.0 + version: 8.5.0(@storybook/test@8.5.0(storybook@8.5.0(prettier@3.4.2)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.31.0)(storybook@8.5.0(prettier@3.4.2))(typescript@5.7.2)(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)) '@storybook/theming': - specifier: ^8.4.6 - version: 8.4.7(storybook@8.4.7(prettier@3.4.2)) + specifier: ^8.5.0 + version: 8.5.0(storybook@8.5.0(prettier@3.4.2)) '@tanstack/react-query': specifier: ^5.64.1 version: 5.64.1(react@18.3.1) @@ -1096,8 +1096,8 @@ importers: specifier: ^9.22.5 version: 9.22.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) storybook: - specifier: ^8.4.6 - version: 8.4.7(prettier@3.4.2) + specifier: ^8.5.0 + version: 8.5.0(prettier@3.4.2) devDependencies: '@types/d3': specifier: ^7.4.3 @@ -1122,16 +1122,16 @@ importers: version: 5.7.2 vite: specifier: ^6.0.9 - version: 6.0.9(@types/node@22.10.2)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) + version: 6.0.11(@types/node@22.10.7)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) vite-plugin-css-injected-by-js: specifier: ^3.5.2 - version: 3.5.2(vite@6.0.9(@types/node@22.10.2)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)) + version: 3.5.2(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)) vite-plugin-optimizer: specifier: ^1.4.3 version: 1.4.3 vite-tsconfig-paths: specifier: ^5.1.4 - version: 5.1.4(typescript@5.7.2)(vite@6.0.9(@types/node@22.10.2)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)) + version: 5.1.4(typescript@5.7.2)(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)) services/web: dependencies: @@ -1212,8 +1212,8 @@ importers: specifier: ^4.17.21 version: 4.17.21 '@types/node': - specifier: ^22.10.2 - version: 22.10.2 + specifier: ^22.10.7 + version: 22.10.7 '@types/react': specifier: ^18.3.18 version: 18.3.18 @@ -1234,16 +1234,16 @@ importers: version: 5.7.2 vite: specifier: ^6.0.9 - version: 6.0.9(@types/node@22.10.2)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) + version: 6.0.11(@types/node@22.10.7)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) vite-plugin-css-injected-by-js: specifier: ^3.5.2 - version: 3.5.2(vite@6.0.9(@types/node@22.10.2)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)) + version: 3.5.2(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)) vite-plugin-optimizer: specifier: ^1.4.3 version: 1.4.3 vite-tsconfig-paths: specifier: ^5.1.4 - version: 5.1.4(typescript@5.7.2)(vite@6.0.9(@types/node@22.10.2)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)) + version: 5.1.4(typescript@5.7.2)(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)) services/worker: dependencies: @@ -1349,10 +1349,10 @@ importers: version: 4.19.2 vite-tsconfig-paths: specifier: ^5.1.4 - version: 5.1.4(typescript@5.7.2)(vite@6.0.9(@types/node@22.10.2)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)) + version: 5.1.4(typescript@5.7.2)(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)) vitest: specifier: ^2.1.8 - version: 2.1.8(@types/node@22.10.2)(jsdom@26.0.0(canvas@3.0.1))(sass@1.82.0)(terser@5.37.0) + version: 2.1.8(@types/node@22.10.7)(jsdom@26.0.0(canvas@3.0.1))(sass@1.82.0)(terser@5.37.0) packages: @@ -1392,149 +1392,145 @@ packages: '@aws-crypto/util@5.2.0': resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} - '@aws-sdk/client-s3@3.726.1': - resolution: {integrity: sha512-UpOGcob87DiuS2d3fW6vDZg94g57mNiOSkzvR/6GOdvBSlUgk8LLwVzGASB71FdKMl1EGEr4MeD5uKH9JsG+dw==} + '@aws-sdk/client-s3@3.732.0': + resolution: {integrity: sha512-ITPcG40qdiLXZRvNQ8V3u4yB16afcdIabdRBN6Blba31rk0MfeBGWwah0+lLSTFo1ZIrIQvBl6PAQ7mO0mkKLg==} engines: {node: '>=18.0.0'} - '@aws-sdk/client-sso-oidc@3.726.0': - resolution: {integrity: sha512-5JzTX9jwev7+y2Jkzjz0pd1wobB5JQfPOQF3N2DrJ5Pao0/k6uRYwE4NqB0p0HlGrMTDm7xNq7OSPPIPG575Jw==} + '@aws-sdk/client-sso-oidc@3.731.1': + resolution: {integrity: sha512-jli6vZ3U33L5AHkBqQmB5pO9+R+qfWxsnc1VOsYsNwWVrrR6kA7WS+N+r19BZGHE6Rzo/fWo0KsHH1fc9mGjaw==} engines: {node: '>=18.0.0'} - peerDependencies: - '@aws-sdk/client-sts': ^3.726.0 - '@aws-sdk/client-sso@3.726.0': - resolution: {integrity: sha512-NM5pjv2qglEc4XN3nnDqtqGsSGv1k5YTmzDo3W3pObItHmpS8grSeNfX9zSH+aVl0Q8hE4ZIgvTPNZ+GzwVlqg==} + '@aws-sdk/client-sso@3.731.0': + resolution: {integrity: sha512-O4C/UYGgqMsBg21MMApFdgyh8BX568hQhbdoNFmRVTBoSnCZ3w+H4a1wBPX4Gyl0NX+ab6Xxo9rId8HiyPXJ0A==} engines: {node: '>=18.0.0'} - '@aws-sdk/client-sts@3.726.1': - resolution: {integrity: sha512-qh9Q9Vu1hrM/wMBOBIaskwnE4GTFaZu26Q6WHwyWNfj7J8a40vBxpW16c2vYXHLBtwRKM1be8uRLkmDwghpiNw==} + '@aws-sdk/client-sts@3.731.1': + resolution: {integrity: sha512-JHHyzmd8b61HACSwLBR1w+uKL+SMs3c7AVH8h6FtW0zWJv8MR01nZ6RJxVA41F53JDZxx3mHzpLzgaTeEGzosw==} engines: {node: '>=18.0.0'} - '@aws-sdk/core@3.723.0': - resolution: {integrity: sha512-UraXNmvqj3vScSsTkjMwQkhei30BhXlW5WxX6JacMKVtl95c7z0qOXquTWeTalYkFfulfdirUhvSZrl+hcyqTw==} + '@aws-sdk/core@3.731.0': + resolution: {integrity: sha512-ithBN1VWASkvAIlozJmenqDvNnFddr/SZXAs58+jCnBHgy3tXLHABZGVNCjetZkHRqNdXEO1kirnoxaFeXMeDA==} engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-env@3.723.0': - resolution: {integrity: sha512-OuH2yULYUHTVDUotBoP/9AEUIJPn81GQ/YBtZLoo2QyezRJ2QiO/1epVtbJlhNZRwXrToLEDmQGA2QfC8c7pbA==} + '@aws-sdk/credential-provider-env@3.731.0': + resolution: {integrity: sha512-h0WWZg4QMLgFVyIvQrC43zpVqsUWg1mPM1clpogP43B8+wEhDEQ4qWRzvFs3dQ4cqx/FLyDUZZF4cqgd94z7kw==} engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-http@3.723.0': - resolution: {integrity: sha512-DTsKC6xo/kz/ZSs1IcdbQMTgiYbpGTGEd83kngFc1bzmw7AmK92DBZKNZpumf8R/UfSpTcj9zzUUmrWz1kD0eQ==} + '@aws-sdk/credential-provider-http@3.731.0': + resolution: {integrity: sha512-iRtrjtcYaWgbvtu2cvDhIsPWXZGvhy1Hgks4682MEBNTc9AUwlfvDrYz2EEnTtJJyrbOdEHVrYrzqD8qPyVLCg==} engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-ini@3.726.0': - resolution: {integrity: sha512-seTtcKL2+gZX6yK1QRPr5mDJIBOatrpoyrO8D5b8plYtV/PDbDW3mtDJSWFHet29G61ZmlNElyXRqQCXn9WX+A==} + '@aws-sdk/credential-provider-ini@3.731.1': + resolution: {integrity: sha512-0M0ejuqW8iHNcTH2ZXSY9m+I7Y06qVkj6k3vfQU9XaB//mTUCxxfGfqWAtgfr7Yi73egABTcPc0jyPdcvSW4Kw==} engines: {node: '>=18.0.0'} - peerDependencies: - '@aws-sdk/client-sts': ^3.726.0 - '@aws-sdk/credential-provider-node@3.726.0': - resolution: {integrity: sha512-jjsewBcw/uLi24x8JbnuDjJad4VA9ROCE94uVRbEnGmUEsds75FWOKp3fWZLQlmjLtzsIbJOZLALkZP86liPaw==} + '@aws-sdk/credential-provider-node@3.731.1': + resolution: {integrity: sha512-5c0ZiagMTPmWilXNffeXJCLoCEz97jilHr3QJWwf2GaTay4tzN+Ld71rpdfEenzUR7fuxEWFfVlwQbFOzFNYHg==} engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-process@3.723.0': - resolution: {integrity: sha512-fgupvUjz1+jeoCBA7GMv0L6xEk92IN6VdF4YcFhsgRHlHvNgm7ayaoKQg7pz2JAAhG/3jPX6fp0ASNy+xOhmPA==} + '@aws-sdk/credential-provider-process@3.731.0': + resolution: {integrity: sha512-6yNMY6q3xHLbs2f2+C6GhvMrjTgtFBiPJJqKaPLsTIhlTRvh4sK8pGm3ITcma0jOxtPDIuoPfBAV8N8XVMBlZg==} engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-sso@3.726.0': - resolution: {integrity: sha512-WxkN76WeB08j2yw7jUH9yCMPxmT9eBFd9ZA/aACG7yzOIlsz7gvG3P2FQ0tVg25GHM0E4PdU3p/ByTOawzcOAg==} + '@aws-sdk/credential-provider-sso@3.731.1': + resolution: {integrity: sha512-p1tp+rMUf5YNQLr8rVRmDgNtKGYLL0KCdq3K2hwwvFnx9MjReF1sA4lfm3xWsxBQM+j3QN9AvMQqBzDJ+NOSdw==} engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-web-identity@3.723.0': - resolution: {integrity: sha512-tl7pojbFbr3qLcOE6xWaNCf1zEfZrIdSJtOPeSXfV/thFMMAvIjgf3YN6Zo1a6cxGee8zrV/C8PgOH33n+Ev/A==} + '@aws-sdk/credential-provider-web-identity@3.731.1': + resolution: {integrity: sha512-+ynAvEGWDR5ZJFxgpwwzhvlQ3WQ7BleWXU6JwpIw3yFrD4eZEn85b8DZC1aEz7C9kb1HSV6B3gpqHqlyS6wj8g==} engines: {node: '>=18.0.0'} - peerDependencies: - '@aws-sdk/client-sts': ^3.723.0 - '@aws-sdk/lib-storage@3.726.1': - resolution: {integrity: sha512-WuDxSZ8Bfe1N7gn5eXQ02dhlKWCAwW5qQErpJ4CCddXosF+gLxhGkrP9LkaaP0CpA3PxboHyET6HbWAggOWtqA==} + '@aws-sdk/lib-storage@3.732.0': + resolution: {integrity: sha512-A8dTXliJlb7GQKbI1sQ2v8N37s3A6HxlK/dGXzGvuvrMJYN1z+nCpq07ELtCikESYDPXHmKDba98cIIkNdXIwA==} engines: {node: '>=18.0.0'} peerDependencies: - '@aws-sdk/client-s3': ^3.726.1 + '@aws-sdk/client-s3': ^3.732.0 - '@aws-sdk/middleware-bucket-endpoint@3.726.0': - resolution: {integrity: sha512-vpaP80rZqwu0C3ELayIcRIW84/nd1tadeoqllT+N9TDshuEvq4UJ+w47OBHB7RkHFJoc79lXXNYle0fdQdaE/A==} + '@aws-sdk/middleware-bucket-endpoint@3.731.0': + resolution: {integrity: sha512-G9vuGW5GWCbzGOwlGFJcOkfxhw1cB6vzcv75QTT0CmciLXK+Cio8O2pqMSTTF2kg9Y6iHVC2BlOtLRkJAVOxVQ==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-expect-continue@3.723.0': - resolution: {integrity: sha512-w/O0EkIzkiqvGu7U8Ke7tue0V0HYM5dZQrz6nVU+R8T2LddWJ+njEIHU4Wh8aHPLQXdZA5NQumv0xLPdEutykw==} + '@aws-sdk/middleware-expect-continue@3.731.0': + resolution: {integrity: sha512-oY4nsY/mb5O5eZCzIuWpyvzO45Bi6UBtE48IaJsoyVctagA1l8hB66aczH9M1NHNjvbS4Beu1agwh3Nyb1eJug==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-flexible-checksums@3.723.0': - resolution: {integrity: sha512-JY76mrUCLa0FHeMZp8X9+KK6uEuZaRZaQrlgq6zkXX/3udukH0T3YdFC+Y9uw5ddbiwZ5+KwgmlhnPpiXKfP4g==} + '@aws-sdk/middleware-flexible-checksums@3.732.0': + resolution: {integrity: sha512-MIbF6cYWg5noRO1kRZNC0vewj6qzSYL/BGNlPxRQcqb6egUiGrhPEi8Y/qqweB7MlBHsqSO5YNPwH/Py8ToSVw==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-host-header@3.723.0': - resolution: {integrity: sha512-LLVzLvk299pd7v4jN9yOSaWDZDfH0SnBPb6q+FDPaOCMGBY8kuwQso7e/ozIKSmZHRMGO3IZrflasHM+rI+2YQ==} + '@aws-sdk/middleware-host-header@3.731.0': + resolution: {integrity: sha512-ndAJsm5uWPPJRZowLKpB1zuL17qWlWVtCJP4I/ynBkq1PU1DijDXBul2UZaG6Mpvsgms1NXo/h9noHuK7T3v8w==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-location-constraint@3.723.0': - resolution: {integrity: sha512-inp9tyrdRWjGOMu1rzli8i2gTo0P4X6L7nNRXNTKfyPNZcBimZ4H0H1B671JofSI5isaklVy5r4pvv2VjjLSHw==} + '@aws-sdk/middleware-location-constraint@3.731.0': + resolution: {integrity: sha512-1I2EjAFxrQksrzqdN7YYuY/q2YsjqeX4l7f9VOkdBjiZeDvVIEdM99IT5sISJB/r6CjNrYX5MhqGhE8i1VFchA==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-logger@3.723.0': - resolution: {integrity: sha512-chASQfDG5NJ8s5smydOEnNK7N0gDMyuPbx7dYYcm1t/PKtnVfvWF+DHCTrRC2Ej76gLJVCVizlAJKM8v8Kg3cg==} + '@aws-sdk/middleware-logger@3.731.0': + resolution: {integrity: sha512-IIZrOdjbY2vKzPJPrwE7FoFQCIPEL6UqURi8LEaiVyCag4p2fvaTN5pgKuQtGC2+iYd/HHcGT4qn2bAqF5Jmmw==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-recursion-detection@3.723.0': - resolution: {integrity: sha512-7usZMtoynT9/jxL/rkuDOFQ0C2mhXl4yCm67Rg7GNTstl67u7w5WN1aIRImMeztaKlw8ExjoTyo6WTs1Kceh7A==} + '@aws-sdk/middleware-recursion-detection@3.731.0': + resolution: {integrity: sha512-y6FLASB1iKWuR5tUipMyo77bt0lEl3OnCrrd2xw/H24avq1HhJjjPR0HHhJE6QKJzF/FYXeV88tcyPSMe32VDw==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-sdk-s3@3.723.0': - resolution: {integrity: sha512-wfjOvNJVp8LDWhq4wO5jtSMb8Vgf4tNlR7QTEQfoYc6AGU3WlK5xyUQcpfcpwytEhQTN9u0cJLQpSyXDO+qSCw==} + '@aws-sdk/middleware-sdk-s3@3.731.0': + resolution: {integrity: sha512-J9aKyQaVoec5eWTSDfO4h2sKHNP0wTzN15LFcHnkD+e/d0rdmOi7BTkkbJrIaynma9WShIasmrtM3HNi9GiiTA==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-ssec@3.723.0': - resolution: {integrity: sha512-Bs+8RAeSMik6ZYCGSDJzJieGsDDh2fRbh1HQG94T8kpwBXVxMYihm6e9Xp2cyl+w9fyyCnh0IdCKChP/DvrdhA==} + '@aws-sdk/middleware-ssec@3.731.0': + resolution: {integrity: sha512-1HP4lxGcQx4awXgxfL8t9faBK7TqEL7zkAZrm/YBbLrT9oQomxZOHKIOHvo5VVh4qmsNBdqnH2XUlSMY71gsww==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-user-agent@3.726.0': - resolution: {integrity: sha512-hZvzuE5S0JmFie1r68K2wQvJbzyxJFdzltj9skgnnwdvLe8F/tz7MqLkm28uV0m4jeHk0LpiBo6eZaPkQiwsZQ==} + '@aws-sdk/middleware-user-agent@3.731.0': + resolution: {integrity: sha512-Ngr2Gz0aec/uduoKaO3srN52SYkEHndYtFzkK/gDUyQwQzi4ha2eIisxPiuHEX6RvXT31V9ouqn/YtVkt0R76A==} engines: {node: '>=18.0.0'} - '@aws-sdk/region-config-resolver@3.723.0': - resolution: {integrity: sha512-tGF/Cvch3uQjZIj34LY2mg8M2Dr4kYG8VU8Yd0dFnB1ybOEOveIK/9ypUo9ycZpB9oO6q01KRe5ijBaxNueUQg==} + '@aws-sdk/nested-clients@3.731.1': + resolution: {integrity: sha512-/L8iVrulnXZl+kgmTn+oxRxNnhcSIbf+r12C06vGUq60w0YMidLvxJZN7vt8H9SnCAGCHqud2MS7ExCEvhc0gA==} engines: {node: '>=18.0.0'} - '@aws-sdk/s3-request-presigner@3.726.1': - resolution: {integrity: sha512-IoM/u1gaZiSHEZkkf+Hn6MvCFUtLJgJysApW6NFbM2GYt4hqGLX5jhbjo5KVxC3wFfAhAwK1deSOM0FriBrKrg==} + '@aws-sdk/region-config-resolver@3.731.0': + resolution: {integrity: sha512-XlDpRNkDVHF59f07JmkuAidEv//m3hT6/JL85h0l3+zrpaRWhf8n8lVUyAPNq35ZujK8AcorYM+93u7hdWsliQ==} engines: {node: '>=18.0.0'} - '@aws-sdk/signature-v4-multi-region@3.723.0': - resolution: {integrity: sha512-lJlVAa5Sl589qO8lwMLVUtnlF1Q7I+6k1Iomv2goY9d1bRl4q2N5Pit2qJVr2AMW0sceQXeh23i2a/CKOqVAdg==} + '@aws-sdk/s3-request-presigner@3.732.0': + resolution: {integrity: sha512-aIzl8UDZp1fNS6haLKmyHcLXg1vWhu9Yimz/9W1xElGB3XZc0LsTlp57yVTmx9ROYo3kAh+Z6RhF73bESTOmjA==} engines: {node: '>=18.0.0'} - '@aws-sdk/token-providers@3.723.0': - resolution: {integrity: sha512-hniWi1x4JHVwKElANh9afKIMUhAutHVBRD8zo6usr0PAoj+Waf220+1ULS74GXtLXAPCiNXl5Og+PHA7xT8ElQ==} + '@aws-sdk/signature-v4-multi-region@3.731.0': + resolution: {integrity: sha512-1r/b4Os15dR+BCVRRLVQJMF7Krq6xX6IKHxN43kuvODYWz8Nv3XDlaSpeRpAzyJuzW/fTp4JgE+z0+gmJfdEeA==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/token-providers@3.731.1': + resolution: {integrity: sha512-t34GOPwBZsX7zGHjiTXmMHGY3kHM7fLiQ60Jqk0On9P0ASHTDE5U75RgCXboE3u+qEv9wyKyaqMNyMWj9qQlFg==} engines: {node: '>=18.0.0'} - peerDependencies: - '@aws-sdk/client-sso-oidc': ^3.723.0 - '@aws-sdk/types@3.723.0': - resolution: {integrity: sha512-LmK3kwiMZG1y5g3LGihT9mNkeNOmwEyPk6HGcJqh0wOSV4QpWoKu2epyKE4MLQNUUlz2kOVbVbOrwmI6ZcteuA==} + '@aws-sdk/types@3.731.0': + resolution: {integrity: sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==} engines: {node: '>=18.0.0'} '@aws-sdk/util-arn-parser@3.723.0': resolution: {integrity: sha512-ZhEfvUwNliOQROcAk34WJWVYTlTa4694kSVhDSjW6lE1bMataPnIN8A0ycukEzBXmd8ZSoBcQLn6lKGl7XIJ5w==} engines: {node: '>=18.0.0'} - '@aws-sdk/util-endpoints@3.726.0': - resolution: {integrity: sha512-sLd30ASsPMoPn3XBK50oe/bkpJ4N8Bpb7SbhoxcY3Lk+fSASaWxbbXE81nbvCnkxrZCvkPOiDHzJCp1E2im71A==} + '@aws-sdk/util-endpoints@3.731.0': + resolution: {integrity: sha512-riztxTAfncFS9yQWcBJffGgOgLoKSa63ph+rxWJxKl6BHAmWEvHICj1qDcVmnWfIcvJ5cClclY75l9qKaUH7rQ==} engines: {node: '>=18.0.0'} - '@aws-sdk/util-format-url@3.723.0': - resolution: {integrity: sha512-70+xUrdcnencPlCdV9XkRqmgj0vLDb8vm4mcEsgabg5QQ3S80KM0GEuhBAIGMkBWwNQTzCgQy2s7xOUlJPbu+g==} + '@aws-sdk/util-format-url@3.731.0': + resolution: {integrity: sha512-wZHObjnYmiz8wFlUQ4/5dHsT7k0at+GvZM02LgvshcRJLnFjYdrzjelMKuNynd/NNK3gLgTsFTGuIgPpz9r4rA==} engines: {node: '>=18.0.0'} - '@aws-sdk/util-locate-window@3.568.0': - resolution: {integrity: sha512-3nh4TINkXYr+H41QaPelCceEB2FXP3fxp93YZXB/kqJvX0U9j0N0Uk45gvsjmEPzG8XxkPEeLIfT2I1M7A6Lig==} - engines: {node: '>=16.0.0'} + '@aws-sdk/util-locate-window@3.723.0': + resolution: {integrity: sha512-Yf2CS10BqK688DRsrKI/EO6B8ff5J86NXe4C+VCysK7UOgN0l1zOTeTukZ3H8Q9tYYX3oaF1961o8vRkFm7Nmw==} + engines: {node: '>=18.0.0'} - '@aws-sdk/util-user-agent-browser@3.723.0': - resolution: {integrity: sha512-Wh9I6j2jLhNFq6fmXydIpqD1WyQLyTfSxjW9B+PXSnPyk3jtQW8AKQur7p97rO8LAUzVI0bv8kb3ZzDEVbquIg==} + '@aws-sdk/util-user-agent-browser@3.731.0': + resolution: {integrity: sha512-EnYXxTkCNCjTTBjW/pelRPv4Thsi9jepoB6qQjPMA9/ixrZ71BhhQecz9kgqzZLR9BPCwb6hgJ/Yd702jqJ4aQ==} - '@aws-sdk/util-user-agent-node@3.726.0': - resolution: {integrity: sha512-iEj6KX9o6IQf23oziorveRqyzyclWai95oZHDJtYav3fvLJKStwSjygO4xSF7ycHcTYeCHSLO1FFOHgGVs4Viw==} + '@aws-sdk/util-user-agent-node@3.731.0': + resolution: {integrity: sha512-Rze78Ym5Bx7aWMvmZE2iL3JPo2INNCC5N9rLVx98Gg1G0ZaxclVRUvJrh1AojNlOFxU+otkxAe7FA3Foy2iLLQ==} engines: {node: '>=18.0.0'} peerDependencies: aws-crt: '>=1.0.0' @@ -2366,11 +2362,11 @@ packages: '@fast-csv/parse@5.0.2': resolution: {integrity: sha512-gMu1Btmm99TP+wc0tZnlH30E/F1Gw1Tah3oMDBHNPe9W8S68ixVHjt89Wg5lh7d9RuQMtwN+sGl5kxR891+fzw==} - '@floating-ui/core@1.6.8': - resolution: {integrity: sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==} + '@floating-ui/core@1.6.9': + resolution: {integrity: sha512-uMXCuQ3BItDUbAMhIXw7UPXRfAlOAvZzdK9BWpE60MCn+Svt3aLn9jsPTi/WNGlRUu2uI0v5S7JiIUsbsvh3fw==} - '@floating-ui/dom@1.6.11': - resolution: {integrity: sha512-qkMCxSR24v2vGkhYDo/UzxfJN3D4syqSjyuTFz6C7XcpU1pASPRieNI0Kj5VP3/503mOfYiGY891ugBX1GlABQ==} + '@floating-ui/dom@1.6.13': + resolution: {integrity: sha512-umqzocjDgNRGTuO7Q8CU32dkHkECqI8ZdMZ5Swb6QAM0t5rnlrN3lGo1hdpscRd3WS8T6DKYK4ephgIH9iRh3w==} '@floating-ui/react-dom@2.1.2': resolution: {integrity: sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==} @@ -2378,14 +2374,14 @@ packages: react: '>=16.8.0' react-dom: '>=16.8.0' - '@floating-ui/react@0.26.24': - resolution: {integrity: sha512-2ly0pCkZIGEQUq5H8bBK0XJmc1xIK/RM3tvVzY3GBER7IOD1UgmC2Y2tjj4AuS+TC+vTE1KJv2053290jua0Sw==} + '@floating-ui/react@0.26.28': + resolution: {integrity: sha512-yORQuuAtVpiRjpMhdc0wJj06b9JFjrYF4qp96j++v2NBpbi6SEGF7donUJ3TMieerQ6qVkAv1tgr7L4r5roTqw==} peerDependencies: react: '>=16.8.0' react-dom: '>=16.8.0' - '@floating-ui/utils@0.2.8': - resolution: {integrity: sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==} + '@floating-ui/utils@0.2.9': + resolution: {integrity: sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==} '@fortawesome/fontawesome-common-types@6.7.1': resolution: {integrity: sha512-gbDz3TwRrIPT3i0cDfujhshnXO9z03IT1UKRIVi/VEjpNHtSBIP2o5XSm+e816FzzCFEzAxPw09Z13n20PaQJQ==} @@ -3028,17 +3024,17 @@ packages: '@lifeomic/attempt@3.1.0': resolution: {integrity: sha512-QZqem4QuAnAyzfz+Gj5/+SLxqwCAw2qmt7732ZXodr6VDWGeYLG6w1i/vYLa55JQM9wRuBKLmXmiZ2P0LtE5rw==} - '@mantine/core@7.13.2': - resolution: {integrity: sha512-nD8oKIal+KdthqF074+ZG21035QBEAKso2zK9D6zWxRTLVCjLCNSc5JSXrXLrdBTnvPQGY26yunX4+MEPlmrHg==} + '@mantine/core@7.16.1': + resolution: {integrity: sha512-HYdjCeMU3dUJbc1CrAAedeAASTG5kVyL/qsiuYh5b7BoG0qsRtK8WJxBpUjW6VqtJpUaE94c5tlBJ8MgAmPHTQ==} peerDependencies: - '@mantine/hooks': 7.13.2 - react: ^18.2.0 - react-dom: ^18.2.0 + '@mantine/hooks': 7.16.1 + react: ^18.x || ^19.x + react-dom: ^18.x || ^19.x - '@mantine/hooks@7.13.2': - resolution: {integrity: sha512-NKfGl2sKZw6zF//AfAFJrVDftjg7DKCn0h8rwJBIZCKi9axhwlV0Mvlqe2dep8QuM7O/uLLJSymSKIv1gaxIJg==} + '@mantine/hooks@7.16.1': + resolution: {integrity: sha512-+hER8E4d2ByfQ/DKIXGM3Euxb7IH5ArSjzzzoF21sG095iXIryOCob22ZanrmiXCoAzKKdxqgVj4Di67ikLYSQ==} peerDependencies: - react: ^18.2.0 + react: ^18.x || ^19.x '@mantine/utils@6.0.22': resolution: {integrity: sha512-RSKlNZvxhMCkOFZ6slbYvZYbWjHUM+PxDQnupIOxIdsTZQQjx/BFfrfJ7kQFOP+g7MtpOds8weAetEs5obwMOQ==} @@ -3186,8 +3182,8 @@ packages: '@types/react': optional: true - '@mui/x-data-grid@7.23.6': - resolution: {integrity: sha512-NcCZH99ZBLRlCcfLwwhCkVowNZHgjy0XZ/c6EuTRMSZl1UqF8ouwitP1ZfAa1idDIWCHFhxo446U/93aGMqOyQ==} + '@mui/x-data-grid@7.24.0': + resolution: {integrity: sha512-goYTKDp+e+dXw7E+WndWUhWXTjX3aTqN8W2dCKhXnmE9Gu8dFwG6Azl7GK9l2m5YHGuqYmpWqcSG9etLdwYaVg==} engines: {node: '>=14.0.0'} peerDependencies: '@emotion/react': ^11.9.0 @@ -3202,8 +3198,8 @@ packages: '@emotion/styled': optional: true - '@mui/x-internals@7.23.6': - resolution: {integrity: sha512-hT1Pa4PNCnxwiauPbYMC3p4DiEF1x05Iu4C1MtC/jMJ1LtthymLmTuQ6ZQ53/R9FeqK6sYd6A6noR+vNMjp5DA==} + '@mui/x-internals@7.24.0': + resolution: {integrity: sha512-lYa/XLltxNMY8YAFDopIHrXda2EAoqMCilyGMuPMz+WTG+b+StlUKqtj8cgFPQ/sa5dQ2fR7R3KJdjLREKUrlQ==} engines: {node: '>=14.0.0'} peerDependencies: react: ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -3497,191 +3493,96 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.28.1': - resolution: {integrity: sha512-2aZp8AES04KI2dy3Ss6/MDjXbwBzj+i0GqKtWXgw2/Ma6E4jJvujryO6gJAghIRVz7Vwr9Gtl/8na3nDUKpraQ==} - cpu: [arm] - os: [android] - '@rollup/rollup-android-arm-eabi@4.31.0': resolution: {integrity: sha512-9NrR4033uCbUBRgvLcBrJofa2KY9DzxL2UKZ1/4xA/mnTNyhZCWBuD8X3tPm1n4KxcgaraOYgrFKSgwjASfmlA==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.28.1': - resolution: {integrity: sha512-EbkK285O+1YMrg57xVA+Dp0tDBRB93/BZKph9XhMjezf6F4TpYjaUSuPt5J0fZXlSag0LmZAsTmdGGqPp4pQFA==} - cpu: [arm64] - os: [android] - '@rollup/rollup-android-arm64@4.31.0': resolution: {integrity: sha512-iBbODqT86YBFHajxxF8ebj2hwKm1k8PTBQSojSt3d1FFt1gN+xf4CowE47iN0vOSdnd+5ierMHBbu/rHc7nq5g==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.28.1': - resolution: {integrity: sha512-prduvrMKU6NzMq6nxzQw445zXgaDBbMQvmKSJaxpaZ5R1QDM8w+eGxo6Y/jhT/cLoCvnZI42oEqf9KQNYz1fqQ==} - cpu: [arm64] - os: [darwin] - '@rollup/rollup-darwin-arm64@4.31.0': resolution: {integrity: sha512-WHIZfXgVBX30SWuTMhlHPXTyN20AXrLH4TEeH/D0Bolvx9PjgZnn4H677PlSGvU6MKNsjCQJYczkpvBbrBnG6g==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.28.1': - resolution: {integrity: sha512-WsvbOunsUk0wccO/TV4o7IKgloJ942hVFK1CLatwv6TJspcCZb9umQkPdvB7FihmdxgaKR5JyxDjWpCOp4uZlQ==} - cpu: [x64] - os: [darwin] - '@rollup/rollup-darwin-x64@4.31.0': resolution: {integrity: sha512-hrWL7uQacTEF8gdrQAqcDy9xllQ0w0zuL1wk1HV8wKGSGbKPVjVUv/DEwT2+Asabf8Dh/As+IvfdU+H8hhzrQQ==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.28.1': - resolution: {integrity: sha512-HTDPdY1caUcU4qK23FeeGxCdJF64cKkqajU0iBnTVxS8F7H/7BewvYoG+va1KPSL63kQ1PGNyiwKOfReavzvNA==} - cpu: [arm64] - os: [freebsd] - '@rollup/rollup-freebsd-arm64@4.31.0': resolution: {integrity: sha512-S2oCsZ4hJviG1QjPY1h6sVJLBI6ekBeAEssYKad1soRFv3SocsQCzX6cwnk6fID6UQQACTjeIMB+hyYrFacRew==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.28.1': - resolution: {integrity: sha512-m/uYasxkUevcFTeRSM9TeLyPe2QDuqtjkeoTpP9SW0XxUWfcYrGDMkO/m2tTw+4NMAF9P2fU3Mw4ahNvo7QmsQ==} - cpu: [x64] - os: [freebsd] - '@rollup/rollup-freebsd-x64@4.31.0': resolution: {integrity: sha512-pCANqpynRS4Jirn4IKZH4tnm2+2CqCNLKD7gAdEjzdLGbH1iO0zouHz4mxqg0uEMpO030ejJ0aA6e1PJo2xrPA==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.28.1': - resolution: {integrity: sha512-QAg11ZIt6mcmzpNE6JZBpKfJaKkqTm1A9+y9O+frdZJEuhQxiugM05gnCWiANHj4RmbgeVJpTdmKRmH/a+0QbA==} - cpu: [arm] - os: [linux] - '@rollup/rollup-linux-arm-gnueabihf@4.31.0': resolution: {integrity: sha512-0O8ViX+QcBd3ZmGlcFTnYXZKGbFu09EhgD27tgTdGnkcYXLat4KIsBBQeKLR2xZDCXdIBAlWLkiXE1+rJpCxFw==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.28.1': - resolution: {integrity: sha512-dRP9PEBfolq1dmMcFqbEPSd9VlRuVWEGSmbxVEfiq2cs2jlZAl0YNxFzAQS2OrQmsLBLAATDMb3Z6MFv5vOcXg==} - cpu: [arm] - os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.31.0': resolution: {integrity: sha512-w5IzG0wTVv7B0/SwDnMYmbr2uERQp999q8FMkKG1I+j8hpPX2BYFjWe69xbhbP6J9h2gId/7ogesl9hwblFwwg==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.28.1': - resolution: {integrity: sha512-uGr8khxO+CKT4XU8ZUH1TTEUtlktK6Kgtv0+6bIFSeiSlnGJHG1tSFSjm41uQ9sAO/5ULx9mWOz70jYLyv1QkA==} - cpu: [arm64] - os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.31.0': resolution: {integrity: sha512-JyFFshbN5xwy6fulZ8B/8qOqENRmDdEkcIMF0Zz+RsfamEW+Zabl5jAb0IozP/8UKnJ7g2FtZZPEUIAlUSX8cA==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.28.1': - resolution: {integrity: sha512-QF54q8MYGAqMLrX2t7tNpi01nvq5RI59UBNx+3+37zoKX5KViPo/gk2QLhsuqok05sSCRluj0D00LzCwBikb0A==} - cpu: [arm64] - os: [linux] - '@rollup/rollup-linux-arm64-musl@4.31.0': resolution: {integrity: sha512-kpQXQ0UPFeMPmPYksiBL9WS/BDiQEjRGMfklVIsA0Sng347H8W2iexch+IEwaR7OVSKtr2ZFxggt11zVIlZ25g==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loongarch64-gnu@4.28.1': - resolution: {integrity: sha512-vPul4uodvWvLhRco2w0GcyZcdyBfpfDRgNKU+p35AWEbJ/HPs1tOUrkSueVbBS0RQHAf/A+nNtDpvw95PeVKOA==} - cpu: [loong64] - os: [linux] - '@rollup/rollup-linux-loongarch64-gnu@4.31.0': resolution: {integrity: sha512-pMlxLjt60iQTzt9iBb3jZphFIl55a70wexvo8p+vVFK+7ifTRookdoXX3bOsRdmfD+OKnMozKO6XM4zR0sHRrQ==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.28.1': - resolution: {integrity: sha512-pTnTdBuC2+pt1Rmm2SV7JWRqzhYpEILML4PKODqLz+C7Ou2apEV52h19CR7es+u04KlqplggmN9sqZlekg3R1A==} - cpu: [ppc64] - os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.31.0': resolution: {integrity: sha512-D7TXT7I/uKEuWiRkEFbed1UUYZwcJDU4vZQdPTcepK7ecPhzKOYk4Er2YR4uHKme4qDeIh6N3XrLfpuM7vzRWQ==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.28.1': - resolution: {integrity: sha512-vWXy1Nfg7TPBSuAncfInmAI/WZDd5vOklyLJDdIRKABcZWojNDY0NJwruY2AcnCLnRJKSaBgf/GiJfauu8cQZA==} - cpu: [riscv64] - os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.31.0': resolution: {integrity: sha512-wal2Tc8O5lMBtoePLBYRKj2CImUCJ4UNGJlLwspx7QApYny7K1cUYlzQ/4IGQBLmm+y0RS7dwc3TDO/pmcneTw==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.28.1': - resolution: {integrity: sha512-/yqC2Y53oZjb0yz8PVuGOQQNOTwxcizudunl/tFs1aLvObTclTwZ0JhXF2XcPT/zuaymemCDSuuUPXJJyqeDOg==} - cpu: [s390x] - os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.31.0': resolution: {integrity: sha512-O1o5EUI0+RRMkK9wiTVpk2tyzXdXefHtRTIjBbmFREmNMy7pFeYXCFGbhKFwISA3UOExlo5GGUuuj3oMKdK6JQ==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.28.1': - resolution: {integrity: sha512-fzgeABz7rrAlKYB0y2kSEiURrI0691CSL0+KXwKwhxvj92VULEDQLpBYLHpF49MSiPG4sq5CK3qHMnb9tlCjBw==} - cpu: [x64] - os: [linux] - '@rollup/rollup-linux-x64-gnu@4.31.0': resolution: {integrity: sha512-zSoHl356vKnNxwOWnLd60ixHNPRBglxpv2g7q0Cd3Pmr561gf0HiAcUBRL3S1vPqRC17Zo2CX/9cPkqTIiai1g==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.28.1': - resolution: {integrity: sha512-xQTDVzSGiMlSshpJCtudbWyRfLaNiVPXt1WgdWTwWz9n0U12cI2ZVtWe/Jgwyv/6wjL7b66uu61Vg0POWVfz4g==} - cpu: [x64] - os: [linux] - '@rollup/rollup-linux-x64-musl@4.31.0': resolution: {integrity: sha512-ypB/HMtcSGhKUQNiFwqgdclWNRrAYDH8iMYH4etw/ZlGwiTVxBz2tDrGRrPlfZu6QjXwtd+C3Zib5pFqID97ZA==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.28.1': - resolution: {integrity: sha512-wSXmDRVupJstFP7elGMgv+2HqXelQhuNf+IS4V+nUpNVi/GUiBgDmfwD0UGN3pcAnWsgKG3I52wMOBnk1VHr/A==} - cpu: [arm64] - os: [win32] - '@rollup/rollup-win32-arm64-msvc@4.31.0': resolution: {integrity: sha512-JuhN2xdI/m8Hr+aVO3vspO7OQfUFO6bKLIRTAy0U15vmWjnZDLrEgCZ2s6+scAYaQVpYSh9tZtRijApw9IXyMw==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.28.1': - resolution: {integrity: sha512-ZkyTJ/9vkgrE/Rk9vhMXhf8l9D+eAhbAVbsGsXKy2ohmJaWg0LPQLnIxRdRp/bKyr8tXuPlXhIoGlEB5XpJnGA==} - cpu: [ia32] - os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.31.0': resolution: {integrity: sha512-U1xZZXYkvdf5MIWmftU8wrM5PPXzyaY1nGCI4KI4BFfoZxHamsIe+BtnPLIvvPykvQWlVbqUXdLa4aJUuilwLQ==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.28.1': - resolution: {integrity: sha512-ZvK2jBafvttJjoIdKm/Q/Bh7IJ1Ose9IBOwpOXcOvW3ikGTQGmKDgxTC6oCAzW6PynbkKP8+um1du81XJHZ0JA==} - cpu: [x64] - os: [win32] - '@rollup/rollup-win32-x64-msvc@4.31.0': resolution: {integrity: sha512-ul8rnCsUumNln5YWwz0ted2ZHFhzhRRnkpBZ+YRuHoRAlUji9KChpOUOndY7uykrPEPXVbHLlsdo6v5yXo/TXw==} cpu: [x64] @@ -3690,23 +3591,29 @@ packages: '@rtsao/scc@1.1.0': resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} - '@shikijs/core@1.23.1': - resolution: {integrity: sha512-NuOVgwcHgVC6jBVH5V7iblziw6iQbWWHrj5IlZI3Fqu2yx9awH7OIQkXIcsHsUmY19ckwSgUMgrqExEyP5A0TA==} + '@shikijs/core@1.29.1': + resolution: {integrity: sha512-Mo1gGGkuOYjDu5H8YwzmOuly9vNr8KDVkqj9xiKhhhFS8jisAtDSEWB9hzqRHLVQgFdA310e8XRJcW4tYhRB2A==} + + '@shikijs/engine-javascript@1.29.1': + resolution: {integrity: sha512-Hpi8k9x77rCQ7F/7zxIOUruNkNidMyBnP5qAGbLFqg4kRrg1HZhkB8btib5EXbQWTtLb5gBHOdBwshk20njD7Q==} - '@shikijs/engine-javascript@1.23.1': - resolution: {integrity: sha512-i/LdEwT5k3FVu07SiApRFwRcSJs5QM9+tod5vYCPig1Ywi8GR30zcujbxGQFJHwYD7A5BUqagi8o5KS+LEVgBg==} + '@shikijs/engine-oniguruma@1.29.1': + resolution: {integrity: sha512-gSt2WhLNgEeLstcweQOSp+C+MhOpTsgdNXRqr3zP6M+BUBZ8Md9OU2BYwUYsALBxHza7hwaIWtFHjQ/aOOychw==} - '@shikijs/engine-oniguruma@1.23.1': - resolution: {integrity: sha512-KQ+lgeJJ5m2ISbUZudLR1qHeH3MnSs2mjFg7bnencgs5jDVPeJ2NVDJ3N5ZHbcTsOIh0qIueyAJnwg7lg7kwXQ==} + '@shikijs/langs@1.29.1': + resolution: {integrity: sha512-iERn4HlyuT044/FgrvLOaZgKVKf3PozjKjyV/RZ5GnlyYEAZFcgwHGkYboeBv2IybQG1KVS/e7VGgiAU4JY2Gw==} - '@shikijs/types@1.23.1': - resolution: {integrity: sha512-98A5hGyEhzzAgQh2dAeHKrWW4HfCMeoFER2z16p5eJ+vmPeF6lZ/elEne6/UCU551F/WqkopqRsr1l2Yu6+A0g==} + '@shikijs/themes@1.29.1': + resolution: {integrity: sha512-lb11zf72Vc9uxkl+aec2oW1HVTHJ2LtgZgumb4Rr6By3y/96VmlU44bkxEb8WBWH3RUtbqAJEN0jljD9cF7H7g==} - '@shikijs/vscode-textmate@9.3.0': - resolution: {integrity: sha512-jn7/7ky30idSkd/O5yDBfAnVt+JJpepofP/POZ1iMOxK59cOfqIgg/Dj0eFsjOTMw+4ycJN0uhZH/Eb0bs/EUA==} + '@shikijs/types@1.29.1': + resolution: {integrity: sha512-aBqAuhYRp5vSir3Pc9+QPu9WESBOjUo03ao0IHLC4TyTioSsp/SkbAZSrIH4ghYYC1T1KTEpRSBa83bas4RnPA==} - '@smithy/abort-controller@4.0.0': - resolution: {integrity: sha512-xFNL1ZfluscKiVI0qlPEnu7pL1UgNNIzQdjTPkaO7JCJtIkbArPYNtqbxohuNaQdksJ01Tn1wLbDA5oIp62P8w==} + '@shikijs/vscode-textmate@10.0.1': + resolution: {integrity: sha512-fTIQwLF+Qhuws31iw7Ncl1R3HUDtGwIipiJ9iU+UsDUwMhegFcQKQHd51nZjb7CArq0MvON8rbgCGQYWHUKAdg==} + + '@smithy/abort-controller@4.0.1': + resolution: {integrity: sha512-fiUIYgIgRjMWznk6iLJz35K2YxSLHzLBA/RC6lBrKfQ8fHbPfvk7Pk9UvpKoHgJjI18MnbPuEju53zcVy6KF1g==} engines: {node: '>=18.0.0'} '@smithy/chunked-blob-reader-native@4.0.0': @@ -3717,56 +3624,56 @@ packages: resolution: {integrity: sha512-+sKqDBQqb036hh4NPaUiEkYFkTUGYzRsn3EuFhyfQfMy6oGHEUJDurLP9Ufb5dasr/XiAmPNMr6wa9afjQB+Gw==} engines: {node: '>=18.0.0'} - '@smithy/config-resolver@4.0.0': - resolution: {integrity: sha512-29pIDlUY/a9+ChJPAarPiD9cU8fBtBh0wFnmnhj7j5AhgMzc+uyXdfzmziH6xx2jzw54waSP3HfnFkTANZuPYA==} + '@smithy/config-resolver@4.0.1': + resolution: {integrity: sha512-Igfg8lKu3dRVkTSEm98QpZUvKEOa71jDX4vKRcvJVyRc3UgN3j7vFMf0s7xLQhYmKa8kyJGQgUJDOV5V3neVlQ==} engines: {node: '>=18.0.0'} - '@smithy/core@3.0.0': - resolution: {integrity: sha512-pKaas7RWvPljJ8uByCeBa10rtbVJCy4N/Fr7OSPxFezcyG0SQuXWnESZqzXj7m2+A+kPzG6fKyP4wrKidl2Ikg==} + '@smithy/core@3.1.1': + resolution: {integrity: sha512-hhUZlBWYuh9t6ycAcN90XOyG76C1AzwxZZgaCVPMYpWqqk9uMFo7HGG5Zu2cEhCJn7DdOi5krBmlibWWWPgdsw==} engines: {node: '>=18.0.0'} - '@smithy/credential-provider-imds@4.0.0': - resolution: {integrity: sha512-+hTShyZHiq2AVFOxJja3k6O17DKU6TaZbwr2y1OH5HQtUw2a+7O3mMR+10LVmc39ef72SAj+uFX0IW9rJGaLQQ==} + '@smithy/credential-provider-imds@4.0.1': + resolution: {integrity: sha512-l/qdInaDq1Zpznpmev/+52QomsJNZ3JkTl5yrTl02V6NBgJOQ4LY0SFw/8zsMwj3tLe8vqiIuwF6nxaEwgf6mg==} engines: {node: '>=18.0.0'} - '@smithy/eventstream-codec@4.0.0': - resolution: {integrity: sha512-YvKUUOo3qehqOxNrkax3YKXF1v0ff475FhDgbBmF8Bo0oOOpsXZyltjQnwBzIeTYo446ZPV85KM3kY4YoxUNOg==} + '@smithy/eventstream-codec@4.0.1': + resolution: {integrity: sha512-Q2bCAAR6zXNVtJgifsU16ZjKGqdw/DyecKNgIgi7dlqw04fqDu0mnq+JmGphqheypVc64CYq3azSuCpAdFk2+A==} engines: {node: '>=18.0.0'} - '@smithy/eventstream-serde-browser@4.0.0': - resolution: {integrity: sha512-YRwsVPJU/DN1VshH8tKs4CxY66HLhmDSw6oZDM2LVIgHODsqpJBcRdEfcnb97ULmgyFrWxTjL9UXpyKPuJXQRA==} + '@smithy/eventstream-serde-browser@4.0.1': + resolution: {integrity: sha512-HbIybmz5rhNg+zxKiyVAnvdM3vkzjE6ccrJ620iPL8IXcJEntd3hnBl+ktMwIy12Te/kyrSbUb8UCdnUT4QEdA==} engines: {node: '>=18.0.0'} - '@smithy/eventstream-serde-config-resolver@4.0.0': - resolution: {integrity: sha512-OZ/aK9LHsZch0VZ6bnf+dPD80kJripnZnkc36QNymnej49VkHJLSNJxsM0pwt53FA6+fUYYMMT0DVDTH1Msq2g==} + '@smithy/eventstream-serde-config-resolver@4.0.1': + resolution: {integrity: sha512-lSipaiq3rmHguHa3QFF4YcCM3VJOrY9oq2sow3qlhFY+nBSTF/nrO82MUQRPrxHQXA58J5G1UnU2WuJfi465BA==} engines: {node: '>=18.0.0'} - '@smithy/eventstream-serde-node@4.0.0': - resolution: {integrity: sha512-10b4F+zXbzxZHKuP+m2st/C+rEGK7FUut1dNSRw6DQCCfaTUecJGCoHPCmk2CRvuMTzunVpS1BKLMk839318VQ==} + '@smithy/eventstream-serde-node@4.0.1': + resolution: {integrity: sha512-o4CoOI6oYGYJ4zXo34U8X9szDe3oGjmHgsMGiZM0j4vtNoT+h80TLnkUcrLZR3+E6HIxqW+G+9WHAVfl0GXK0Q==} engines: {node: '>=18.0.0'} - '@smithy/eventstream-serde-universal@4.0.0': - resolution: {integrity: sha512-HEhZpf731J3oFYJtaKO3dnV6stIjA+lJwXuXGu/WbSgicDWGAOITUwTt9ynldEFsnFkNu9b/C4ebXnJA16xSCA==} + '@smithy/eventstream-serde-universal@4.0.1': + resolution: {integrity: sha512-Z94uZp0tGJuxds3iEAZBqGU2QiaBHP4YytLUjwZWx+oUeohCsLyUm33yp4MMBmhkuPqSbQCXq5hDet6JGUgHWA==} engines: {node: '>=18.0.0'} - '@smithy/fetch-http-handler@5.0.0': - resolution: {integrity: sha512-jUEq+4056uqsDLRqQb1fm48rrSMBYcBxVvODfiP37ORcV5n9xWJQsINWcIffyYxWTM5K0Y/GOfhSQGDtWpAPpQ==} + '@smithy/fetch-http-handler@5.0.1': + resolution: {integrity: sha512-3aS+fP28urrMW2KTjb6z9iFow6jO8n3MFfineGbndvzGZit3taZhKWtTorf+Gp5RpFDDafeHlhfsGlDCXvUnJA==} engines: {node: '>=18.0.0'} - '@smithy/hash-blob-browser@4.0.0': - resolution: {integrity: sha512-JBXNC2YCDlm9uqP/eQJbK6auahAaq4HndJC2PURxWPRUDjbXDRJS5Npfi+7zSxKOSOWxXCG/3dLE5D8znI9l/w==} + '@smithy/hash-blob-browser@4.0.1': + resolution: {integrity: sha512-rkFIrQOKZGS6i1D3gKJ8skJ0RlXqDvb1IyAphksaFOMzkn3v3I1eJ8m7OkLj0jf1McP63rcCEoLlkAn/HjcTRw==} engines: {node: '>=18.0.0'} - '@smithy/hash-node@4.0.0': - resolution: {integrity: sha512-25OxGYGnG3JPEOTk4iFE03bfmoC6GXUQ4L13z4cNdsS3mkncH22AGSDRfKwwEqutNUxXQZWVy9f72Fm59C9qlg==} + '@smithy/hash-node@4.0.1': + resolution: {integrity: sha512-TJ6oZS+3r2Xu4emVse1YPB3Dq3d8RkZDKcPr71Nj/lJsdAP1c7oFzYqEn1IBc915TsgLl2xIJNuxCz+gLbLE0w==} engines: {node: '>=18.0.0'} - '@smithy/hash-stream-node@4.0.0': - resolution: {integrity: sha512-MRgYnr9atik1c02mdgjjJkNK5A8IvRRlpa/zOdA8PxmQtBCwjODKzobyI166uamxrL20wg7vuKoVSAjQU4IXfw==} + '@smithy/hash-stream-node@4.0.1': + resolution: {integrity: sha512-U1rAE1fxmReCIr6D2o/4ROqAQX+GffZpyMt3d7njtGDr2pUNmAKRWa49gsNVhCh2vVAuf3wXzWwNr2YN8PAXIw==} engines: {node: '>=18.0.0'} - '@smithy/invalid-dependency@4.0.0': - resolution: {integrity: sha512-0GTyet02HX/sPctEhOExY+3HI7hwkVwOoJg0XnItTJ+Xw7JMuL9FOxALTmKVIV6+wg0kF6veLeg72hVSbD9UCw==} + '@smithy/invalid-dependency@4.0.1': + resolution: {integrity: sha512-gdudFPf4QRQ5pzj7HEnu6FhKRi61BfH/Gk5Yf6O0KiSbr1LlVhgjThcvjdu658VE6Nve8vaIWB8/fodmS1rBPQ==} engines: {node: '>=18.0.0'} '@smithy/is-array-buffer@2.2.0': @@ -3777,76 +3684,76 @@ packages: resolution: {integrity: sha512-saYhF8ZZNoJDTvJBEWgeBccCg+yvp1CX+ed12yORU3NilJScfc6gfch2oVb4QgxZrGUx3/ZJlb+c/dJbyupxlw==} engines: {node: '>=18.0.0'} - '@smithy/md5-js@4.0.0': - resolution: {integrity: sha512-NUjbK+M1RNd0J/mM3eh4Yw5SfUrJBsIAea/H5dvc8tirxWFHFDUHJ/CK40/vtY3niiYnygWjZZ+ISydray6Raw==} + '@smithy/md5-js@4.0.1': + resolution: {integrity: sha512-HLZ647L27APi6zXkZlzSFZIjpo8po45YiyjMGJZM3gyDY8n7dPGdmxIIljLm4gPt/7rRvutLTTkYJpZVfG5r+A==} engines: {node: '>=18.0.0'} - '@smithy/middleware-content-length@4.0.0': - resolution: {integrity: sha512-nM1RJqLwkSCidumGK8WwNEZ0a0D/4LkwqdPna+QmHrdPoAK6WGLyZFosdMpsAW1OIbDLWGa+r37Mo4Vth4S4kQ==} + '@smithy/middleware-content-length@4.0.1': + resolution: {integrity: sha512-OGXo7w5EkB5pPiac7KNzVtfCW2vKBTZNuCctn++TTSOMpe6RZO/n6WEC1AxJINn3+vWLKW49uad3lo/u0WJ9oQ==} engines: {node: '>=18.0.0'} - '@smithy/middleware-endpoint@4.0.0': - resolution: {integrity: sha512-/f6z5SqUurmqemhBZNhM0c+C7QW0AY/zJpic//sbdu26q98HSPAI/xvzStjYq+UhtWeAe/jaX6gamdL/2r3W1g==} + '@smithy/middleware-endpoint@4.0.2': + resolution: {integrity: sha512-Z9m67CXizGpj8CF/AW/7uHqYNh1VXXOn9Ap54fenWsCa0HnT4cJuE61zqG3cBkTZJDCy0wHJphilI41co/PE5g==} engines: {node: '>=18.0.0'} - '@smithy/middleware-retry@4.0.0': - resolution: {integrity: sha512-K6tsFp3Ik44H3694a+LWoXLV8mqy8zn6/vTw2feU72MaIzi51EHMVNNxxpL6e2GI6oxw8FFRGWgGn8+wQRrHZQ==} + '@smithy/middleware-retry@4.0.3': + resolution: {integrity: sha512-TiKwwQTwUDeDtwWW8UWURTqu7s6F3wN2pmziLU215u7bqpVT9Mk2oEvURjpRLA+5XeQhM68R5BpAGzVtomsqgA==} engines: {node: '>=18.0.0'} - '@smithy/middleware-serde@4.0.0': - resolution: {integrity: sha512-aW4Zo8Cm988RCvhysErzqrQ4YPKgZFhajvgPoZnsWIDaZfT419J17Ahr13Lul3kqGad2dCz7YOrXd7r+UAEj/w==} + '@smithy/middleware-serde@4.0.1': + resolution: {integrity: sha512-Fh0E2SOF+S+P1+CsgKyiBInAt3o2b6Qk7YOp2W0Qx2XnfTdfMuSDKUEcnrtpxCzgKJnqXeLUZYqtThaP0VGqtA==} engines: {node: '>=18.0.0'} - '@smithy/middleware-stack@4.0.0': - resolution: {integrity: sha512-4NFaX88RmgVrCyJv/3RsSdqMwxzI/EQa8nvhUDVxmLUMRS2JUdHnliD6IwKuqIwIzz+E1aZK3EhSHUM4HXp3ww==} + '@smithy/middleware-stack@4.0.1': + resolution: {integrity: sha512-dHwDmrtR/ln8UTHpaIavRSzeIk5+YZTBtLnKwDW3G2t6nAupCiQUvNzNoHBpik63fwUaJPtlnMzXbQrNFWssIA==} engines: {node: '>=18.0.0'} - '@smithy/node-config-provider@4.0.0': - resolution: {integrity: sha512-Crp9rg1ewjqgM2i7pWSpNhfbBa0usyKGDVQLEXTOpu6trFqq3BFLLCgbCE1S18h6mxqKnOqUONq3nWOxUk75XA==} + '@smithy/node-config-provider@4.0.1': + resolution: {integrity: sha512-8mRTjvCtVET8+rxvmzRNRR0hH2JjV0DFOmwXPrISmTIJEfnCBugpYYGAsCj8t41qd+RB5gbheSQ/6aKZCQvFLQ==} engines: {node: '>=18.0.0'} - '@smithy/node-http-handler@4.0.0': - resolution: {integrity: sha512-WvumtEaFyxaI95zmj6eYlF/vCFCKNyru3P/UUHCUS9BjvajUtNckH2cY3bBfi+qqMPX5gha4g26lcOlE/wPz/Q==} + '@smithy/node-http-handler@4.0.2': + resolution: {integrity: sha512-X66H9aah9hisLLSnGuzRYba6vckuFtGE+a5DcHLliI/YlqKrGoxhisD5XbX44KyoeRzoNlGr94eTsMVHFAzPOw==} engines: {node: '>=18.0.0'} - '@smithy/property-provider@4.0.0': - resolution: {integrity: sha512-AJSvY1k3SdM0stGrIjL8/FIjXO7X9I7KkznXDmr76RGz+yvaDHLsLm2hSHyzAlmwEQnHaafSU2dwaV0JcnR/4w==} + '@smithy/property-provider@4.0.1': + resolution: {integrity: sha512-o+VRiwC2cgmk/WFV0jaETGOtX16VNPp2bSQEzu0whbReqE1BMqsP2ami2Vi3cbGVdKu1kq9gQkDAGKbt0WOHAQ==} engines: {node: '>=18.0.0'} - '@smithy/protocol-http@5.0.0': - resolution: {integrity: sha512-laAcIHWq9GQ5VdAS71DUrCj5HUHZ/89Ee+HRTLhFR5/E3toBlnZfPG+kqBajwfEB5aSdRuKslfzl5Dzrn3pr8A==} + '@smithy/protocol-http@5.0.1': + resolution: {integrity: sha512-TE4cpj49jJNB/oHyh/cRVEgNZaoPaxd4vteJNB0yGidOCVR0jCw/hjPVsT8Q8FRmj8Bd3bFZt8Dh7xGCT+xMBQ==} engines: {node: '>=18.0.0'} - '@smithy/querystring-builder@4.0.0': - resolution: {integrity: sha512-kMqPDRf+/hwm+Dmk8AQCaYTJxNWWpNdJJteeMm0jwDbmRDqSqHQ7oLEVzvOnbWJu1poVtOhv6v7jsbyx9JASsw==} + '@smithy/querystring-builder@4.0.1': + resolution: {integrity: sha512-wU87iWZoCbcqrwszsOewEIuq+SU2mSoBE2CcsLwE0I19m0B2gOJr1MVjxWcDQYOzHbR1xCk7AcOBbGFUYOKvdg==} engines: {node: '>=18.0.0'} - '@smithy/querystring-parser@4.0.0': - resolution: {integrity: sha512-SbogL1PNEmm28ya0eK2S0EZEbYwe0qpaqSGrODm+uYS6dQ7pekPLVNXjBRuuLIAT26ZF2wTsp6X7AVRBNZd8qw==} + '@smithy/querystring-parser@4.0.1': + resolution: {integrity: sha512-Ma2XC7VS9aV77+clSFylVUnPZRindhB7BbmYiNOdr+CHt/kZNJoPP0cd3QxCnCFyPXC4eybmyE98phEHkqZ5Jw==} engines: {node: '>=18.0.0'} - '@smithy/service-error-classification@4.0.0': - resolution: {integrity: sha512-hIZreT6aXSG0PK/psT1S+kfeGTnYnRRlf7rU3yDmH/crSVjTbS/5h5w2J7eO2ODrQb3xfhJcYxQBREdwsZk6TA==} + '@smithy/service-error-classification@4.0.1': + resolution: {integrity: sha512-3JNjBfOWpj/mYfjXJHB4Txc/7E4LVq32bwzE7m28GN79+M1f76XHflUaSUkhOriprPDzev9cX/M+dEB80DNDKA==} engines: {node: '>=18.0.0'} - '@smithy/shared-ini-file-loader@4.0.0': - resolution: {integrity: sha512-Ktupe8msp2GPaKKVfiz3NNUNnslJiGGRoVh3BDpm/RChkQ5INQpqmTc2taE0XChNYumNynLfb3keekIPaiaZeg==} + '@smithy/shared-ini-file-loader@4.0.1': + resolution: {integrity: sha512-hC8F6qTBbuHRI/uqDgqqi6J0R4GtEZcgrZPhFQnMhfJs3MnUTGSnR1NSJCJs5VWlMydu0kJz15M640fJlRsIOw==} engines: {node: '>=18.0.0'} - '@smithy/signature-v4@5.0.0': - resolution: {integrity: sha512-zqcOR1sZTuoA6K3PBNwzu4YgT1pmIwz47tYpgaJjBTfGUIMtcjUaXKtuSKEScdv+0wx45/PbXz0//hk80fky3w==} + '@smithy/signature-v4@5.0.1': + resolution: {integrity: sha512-nCe6fQ+ppm1bQuw5iKoeJ0MJfz2os7Ic3GBjOkLOPtavbD1ONoyE3ygjBfz2ythFWm4YnRm6OxW+8p/m9uCoIA==} engines: {node: '>=18.0.0'} - '@smithy/smithy-client@4.0.0': - resolution: {integrity: sha512-AgcZ6B+JuqArYioAbaYrCpTCjYsD3/1hPSXntbN2ipsfc4hE+72RFZevUPYgsKxpy3G+QxuLfqm11i3+oX4oSA==} + '@smithy/smithy-client@4.1.2': + resolution: {integrity: sha512-0yApeHWBqocelHGK22UivZyShNxFbDNrgREBllGh5Ws0D0rg/yId/CJfeoKKpjbfY2ju8j6WgDUGZHYQmINZ5w==} engines: {node: '>=18.0.0'} - '@smithy/types@4.0.0': - resolution: {integrity: sha512-aNwIGSOgDOhtTRY/rrn2aeuQeKw/IFrQ998yK5l6Ah853WeWIEmFPs/EO4OpfADEdcK+igWnZytm/oUgkLgUYg==} + '@smithy/types@4.1.0': + resolution: {integrity: sha512-enhjdwp4D7CXmwLtD6zbcDMbo6/T6WtuuKCY49Xxc6OMOmUWlBEBDREsxxgV2LIdeQPW756+f97GzcgAwp3iLw==} engines: {node: '>=18.0.0'} - '@smithy/url-parser@4.0.0': - resolution: {integrity: sha512-2iPpuLoH0hCKpLtqVgilHtpPKsmHihbkwBm3h3RPuEctdmuiOlFRZ2ZI8IHSwl0o4ff5IdyyJ0yu/2tS9KpUug==} + '@smithy/url-parser@4.0.1': + resolution: {integrity: sha512-gPXcIEUtw7VlK8f/QcruNXm7q+T5hhvGu9tl63LsJPZ27exB6dtNwvh2HIi0v7JcXJ5emBxB+CJxwaLEdJfA+g==} engines: {node: '>=18.0.0'} '@smithy/util-base64@4.0.0': @@ -3873,32 +3780,32 @@ packages: resolution: {integrity: sha512-L1RBVzLyfE8OXH+1hsJ8p+acNUSirQnWQ6/EgpchV88G6zGBTDPdXiiExei6Z1wR2RxYvxY/XLw6AMNCCt8H3w==} engines: {node: '>=18.0.0'} - '@smithy/util-defaults-mode-browser@4.0.0': - resolution: {integrity: sha512-7wqsXkzaJkpSqV+Ca95pN9yQutXvhaKeCxGGmjWnRGXY1fW/yR7wr1ouNnUYCJuTS8MvmB61xp5Qdj8YMgIA2Q==} + '@smithy/util-defaults-mode-browser@4.0.3': + resolution: {integrity: sha512-7c5SF1fVK0EOs+2EOf72/qF199zwJflU1d02AevwKbAUPUZyE9RUZiyJxeUmhVxfKDWdUKaaVojNiaDQgnHL9g==} engines: {node: '>=18.0.0'} - '@smithy/util-defaults-mode-node@4.0.0': - resolution: {integrity: sha512-P8VK885kiRT6TEtvcQvz+L/+xIhrDhCmM664ToUtrshFSBhwGYaJWlQNAH9fXlMhwnNvR+tmh1KngKJIgQP6bw==} + '@smithy/util-defaults-mode-node@4.0.3': + resolution: {integrity: sha512-CVnD42qYD3JKgDlImZ9+On+MqJHzq9uJgPbMdeBE8c2x8VJ2kf2R3XO/yVFx+30ts5lD/GlL0eFIShY3x9ROgQ==} engines: {node: '>=18.0.0'} - '@smithy/util-endpoints@3.0.0': - resolution: {integrity: sha512-kyOKbkg77lsIVN2jC08uEWm3s16eK1YdVDyi/nKeBDbUnjR30dmTEga79E5tiu5OEgTAdngNswA9V+L6xa65sA==} + '@smithy/util-endpoints@3.0.1': + resolution: {integrity: sha512-zVdUENQpdtn9jbpD9SCFK4+aSiavRb9BxEtw9ZGUR1TYo6bBHbIoi7VkrFQ0/RwZlzx0wRBaRmPclj8iAoJCLA==} engines: {node: '>=18.0.0'} '@smithy/util-hex-encoding@4.0.0': resolution: {integrity: sha512-Yk5mLhHtfIgW2W2WQZWSg5kuMZCVbvhFmC7rV4IO2QqnZdbEFPmQnCcGMAX2z/8Qj3B9hYYNjZOhWym+RwhePw==} engines: {node: '>=18.0.0'} - '@smithy/util-middleware@4.0.0': - resolution: {integrity: sha512-ncuvK6ekpDqtASHg7jx3d3nrkD2BsTzUmeVgvtepuHGxtySY8qUlb4SiNRdxHYcv3pL2SwdXs70RwKBU0edW5w==} + '@smithy/util-middleware@4.0.1': + resolution: {integrity: sha512-HiLAvlcqhbzhuiOa0Lyct5IIlyIz0PQO5dnMlmQ/ubYM46dPInB+3yQGkfxsk6Q24Y0n3/JmcA1v5iEhmOF5mA==} engines: {node: '>=18.0.0'} - '@smithy/util-retry@4.0.0': - resolution: {integrity: sha512-64WFoC19NVuHh3HQO2QbGw+n6GzQ6VH/drxwXLOU3GDLKxUUzIR9XNm9aTVqh8/7R+y+DgITiv5LpX5XdOy73A==} + '@smithy/util-retry@4.0.1': + resolution: {integrity: sha512-WmRHqNVwn3kI3rKk1LsKcVgPBG6iLTBGC1iYOV3GQegwJ3E8yjzHytPt26VNzOWr1qu0xE03nK0Ug8S7T7oufw==} engines: {node: '>=18.0.0'} - '@smithy/util-stream@4.0.0': - resolution: {integrity: sha512-ctcLq8Ogi2FQuGy2RxJXGGrozhFEb4p9FawB5SpTNAkNQWbNHcwrGcVSVI3FtdQtkNAINLiEdMnrx+UN/mafvw==} + '@smithy/util-stream@4.0.2': + resolution: {integrity: sha512-0eZ4G5fRzIoewtHtwaYyl8g2C+osYOT4KClXgfdNEDAgkbe2TYPqcnw4GAWabqkZCax2ihRGPe9LZnsPdIUIHA==} engines: {node: '>=18.0.0'} '@smithy/util-uri-escape@4.0.0': @@ -3913,8 +3820,8 @@ packages: resolution: {integrity: sha512-b+zebfKCfRdgNJDknHCob3O7FpeYQN6ZG6YLExMcasDHsCXlsXCEuiPZeLnJLpwa5dvPetGlnGCiMHuLwGvFow==} engines: {node: '>=18.0.0'} - '@smithy/util-waiter@4.0.0': - resolution: {integrity: sha512-C8dSfGmZH0ecrmnJOw4aDXJ47krihnUtee8eDZ2fA+28wTjD4TVM3L/bBQYnBBlDVWcYzldLV7loPRsPc1kERg==} + '@smithy/util-waiter@4.0.2': + resolution: {integrity: sha512-piUTHyp2Axx3p/kc2CIJkYSv0BAaheBQmbACZgQSSfWUumWNW+R1lL+H9PDBxKJkvOeEX+hKYEFiwO8xagL8AQ==} engines: {node: '>=18.0.0'} '@snyk/github-codeowners@1.1.0': @@ -3928,105 +3835,105 @@ packages: '@sqltools/formatter@1.2.5': resolution: {integrity: sha512-Uy0+khmZqUrUGm5dmMqVlnvufZRSK0FbYzVgp0UMstm+F5+W2/jnEEQyc9vo1ZR/E5ZI/B1WjjoTqBqwJL6Krw==} - '@storybook/addon-actions@8.4.7': - resolution: {integrity: sha512-mjtD5JxcPuW74T6h7nqMxWTvDneFtokg88p6kQ5OnC1M259iAXb//yiSZgu/quunMHPCXSiqn4FNOSgASTSbsA==} + '@storybook/addon-actions@8.5.0': + resolution: {integrity: sha512-6CW9+17rk5eNx6I8EKqCxRKtsJFTR/lHL+xiJ6/iBWApIm8sg63vhXvUTJ58UixmIkT5oLh0+ESNPh+x10D8fw==} peerDependencies: - storybook: ^8.4.7 + storybook: ^8.5.0 - '@storybook/addon-backgrounds@8.4.7': - resolution: {integrity: sha512-I4/aErqtFiazcoWyKafOAm3bLpxTj6eQuH/woSbk1Yx+EzN+Dbrgx1Updy8//bsNtKkcrXETITreqHC+a57DHQ==} + '@storybook/addon-backgrounds@8.5.0': + resolution: {integrity: sha512-lzyFLs7niNsqlhH5kdUrp7htLiMIcjY50VLWe0PaeJ6T6GZ7X9qhQzROAUV6cGqzyd8A6y/LzIUntDPMVEm/6g==} peerDependencies: - storybook: ^8.4.7 + storybook: ^8.5.0 - '@storybook/addon-controls@8.4.7': - resolution: {integrity: sha512-377uo5IsJgXLnQLJixa47+11V+7Wn9KcDEw+96aGCBCfLbWNH8S08tJHHnSu+jXg9zoqCAC23MetntVp6LetHA==} + '@storybook/addon-controls@8.5.0': + resolution: {integrity: sha512-1fivx77A/ahObrPl0L66o9i9MUNfqXxsrpekne5gjMNXw9XJFIRNUe/ddL4CMmwu7SgVbj2QV+q5E5mlnZNTJw==} peerDependencies: - storybook: ^8.4.7 + storybook: ^8.5.0 - '@storybook/addon-docs@8.4.7': - resolution: {integrity: sha512-NwWaiTDT5puCBSUOVuf6ME7Zsbwz7Y79WF5tMZBx/sLQ60vpmJVQsap6NSjvK1Ravhc21EsIXqemAcBjAWu80w==} + '@storybook/addon-docs@8.5.0': + resolution: {integrity: sha512-REwLSr1VgOVNJZwP3y3mldhOjBHlM5fqTvq/tC8NaYpAzx9O4rZdoUSZxW3tYtoNoYrHpB8kzRTeZl8WSdKllw==} peerDependencies: - storybook: ^8.4.7 + storybook: ^8.5.0 - '@storybook/addon-essentials@8.4.7': - resolution: {integrity: sha512-+BtZHCBrYtQKILtejKxh0CDRGIgTl9PumfBOKRaihYb4FX1IjSAxoV/oo/IfEjlkF5f87vouShWsRa8EUauFDw==} + '@storybook/addon-essentials@8.5.0': + resolution: {integrity: sha512-RrHRdaw2j3ugZiYQ6OHt3Ff08ID4hwAvipqULEsbEnEw3VlXOaW/MT5e2M7kW3MHskQ3iJ6XAD1Y1rNm432Pzw==} peerDependencies: - storybook: ^8.4.7 + storybook: ^8.5.0 - '@storybook/addon-highlight@8.4.7': - resolution: {integrity: sha512-whQIDBd3PfVwcUCrRXvCUHWClXe9mQ7XkTPCdPo4B/tZ6Z9c6zD8JUHT76ddyHivixFLowMnA8PxMU6kCMAiNw==} + '@storybook/addon-highlight@8.5.0': + resolution: {integrity: sha512-/JxYzMK5aJSYs0K/0eAEFyER2dMoxqwM891MdnkNwLFdyrM58lzHee00F9oEX6zeQoRUNQPRepq0ui2PvbTMGw==} peerDependencies: - storybook: ^8.4.7 + storybook: ^8.5.0 - '@storybook/addon-interactions@8.4.7': - resolution: {integrity: sha512-fnufT3ym8ht3HHUIRVXAH47iOJW/QOb0VSM+j269gDuvyDcY03D1civCu1v+eZLGaXPKJ8vtjr0L8zKQ/4P0JQ==} + '@storybook/addon-interactions@8.5.0': + resolution: {integrity: sha512-vX1a8qS7o/W3kEzfL/CqOj/Rr6UlGLT/n0KXMpfIhx63tzxe1a1qGpFLL0h0zqAVPHZIOu9humWMKri5Iny6oA==} peerDependencies: - storybook: ^8.4.7 + storybook: ^8.5.0 - '@storybook/addon-links@8.4.7': - resolution: {integrity: sha512-L/1h4dMeMKF+MM0DanN24v5p3faNYbbtOApMgg7SlcBT/tgo3+cAjkgmNpYA8XtKnDezm+T2mTDhB8mmIRZpIQ==} + '@storybook/addon-links@8.5.0': + resolution: {integrity: sha512-Y11GIByAYqn0TibI/xsy0vCe+ZxJS9PVAAoHngLxkf9J4WodAXcJABr8ZPlWDNdaEhSS/FF7UQUmNag0UC2/pw==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^8.4.7 + storybook: ^8.5.0 peerDependenciesMeta: react: optional: true - '@storybook/addon-measure@8.4.7': - resolution: {integrity: sha512-QfvqYWDSI5F68mKvafEmZic3SMiK7zZM8VA0kTXx55hF/+vx61Mm0HccApUT96xCXIgmwQwDvn9gS4TkX81Dmw==} + '@storybook/addon-measure@8.5.0': + resolution: {integrity: sha512-e8pJy2sICyj0Ff0W1PFc6HPE6PqcjnnHtfuDaO3M9uSKJLYkpTWJ8i1VSP178f8seq44r5/PdQCHqs5q5l3zgw==} peerDependencies: - storybook: ^8.4.7 + storybook: ^8.5.0 - '@storybook/addon-outline@8.4.7': - resolution: {integrity: sha512-6LYRqUZxSodmAIl8icr585Oi8pmzbZ90aloZJIpve+dBAzo7ydYrSQxxoQEVltXbKf3VeVcrs64ouAYqjisMYA==} + '@storybook/addon-outline@8.5.0': + resolution: {integrity: sha512-r12sk1b38Ph6NroWAOTfjbJ/V+gDobm7tKQQlbSDf6fgX7cqyPHmKjfNDCOCQpXouZm/Jm+41zd758PW+Yt4ng==} peerDependencies: - storybook: ^8.4.7 + storybook: ^8.5.0 - '@storybook/addon-toolbars@8.4.7': - resolution: {integrity: sha512-OSfdv5UZs+NdGB+nZmbafGUWimiweJ/56gShlw8Neo/4jOJl1R3rnRqqY7MYx8E4GwoX+i3GF5C3iWFNQqlDcw==} + '@storybook/addon-toolbars@8.5.0': + resolution: {integrity: sha512-q3yYYO2WX8K2DYNM++FzixGDjzYaeREincgsl2WXYXrcuGb5hkOoOgRiAQL8Nz9NQ1Eo+B/yZxrhG/5VoVhUUQ==} peerDependencies: - storybook: ^8.4.7 + storybook: ^8.5.0 - '@storybook/addon-viewport@8.4.7': - resolution: {integrity: sha512-hvczh/jjuXXcOogih09a663sRDDSATXwbE866al1DXgbDFraYD/LxX/QDb38W9hdjU9+Qhx8VFIcNWoMQns5HQ==} + '@storybook/addon-viewport@8.5.0': + resolution: {integrity: sha512-MlhVELImk9YzjEgGR2ciLC8d5tUSGcO7my4kWIClN0VyTRcvG4ZfwrsEC+jN3/l52nrgjLmKrDX5UAGZm6w5mQ==} peerDependencies: - storybook: ^8.4.7 + storybook: ^8.5.0 - '@storybook/blocks@8.4.7': - resolution: {integrity: sha512-+QH7+JwXXXIyP3fRCxz/7E2VZepAanXJM7G8nbR3wWsqWgrRp4Wra6MvybxAYCxU7aNfJX5c+RW84SNikFpcIA==} + '@storybook/blocks@8.5.0': + resolution: {integrity: sha512-2sTOgjH/JFOgWnpqkKjpKVvKAgUaC9ZBjH1gnCoA5dne/SDafYaCAYfv6yZn7g2Xm1sTxWCAmMIUkYSALeWr+w==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^8.4.7 + storybook: ^8.5.0 peerDependenciesMeta: react: optional: true react-dom: optional: true - '@storybook/builder-vite@8.4.7': - resolution: {integrity: sha512-LovyXG5VM0w7CovI/k56ZZyWCveQFVDl0m7WwetpmMh2mmFJ+uPQ35BBsgTvTfc8RHi+9Q3F58qP1MQSByXi9g==} + '@storybook/builder-vite@8.5.0': + resolution: {integrity: sha512-GVJFjAxX/mL3bmXX6N619ShuYprkh6Ix08JU6QGNf/tTkG92BxjgCqQdfovBrviDhFyO2bhkdlEp6ujMo5CbZA==} peerDependencies: - storybook: ^8.4.7 + storybook: ^8.5.0 vite: ^4.0.0 || ^5.0.0 || ^6.0.0 - '@storybook/components@8.4.7': - resolution: {integrity: sha512-uyJIcoyeMWKAvjrG9tJBUCKxr2WZk+PomgrgrUwejkIfXMO76i6jw9BwLa0NZjYdlthDv30r9FfbYZyeNPmF0g==} + '@storybook/components@8.5.0': + resolution: {integrity: sha512-DhaHtwfEcfWYj3ih/5RBSDHe3Idxyf+oHw2/DmaLKJX6MluhdK3ZqigjRcTmA9Gj/SbR4CkHEEtDzAvBlW0BYw==} peerDependencies: storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 - '@storybook/core@8.4.7': - resolution: {integrity: sha512-7Z8Z0A+1YnhrrSXoKKwFFI4gnsLbWzr8fnDCU6+6HlDukFYh8GHRcZ9zKfqmy6U3hw2h8H5DrHsxWfyaYUUOoA==} + '@storybook/core@8.5.0': + resolution: {integrity: sha512-apborO6ynns7SeydBSqE9o0zT6JSU+VY4gLFPJROGcconvSW4bS5xtJCsgjlulceyWVxepFHGXl4jEZw+SktXA==} peerDependencies: prettier: ^2 || ^3 peerDependenciesMeta: prettier: optional: true - '@storybook/csf-plugin@8.4.7': - resolution: {integrity: sha512-Fgogplu4HImgC+AYDcdGm1rmL6OR1rVdNX1Be9C/NEXwOCpbbBwi0BxTf/2ZxHRk9fCeaPEcOdP5S8QHfltc1g==} + '@storybook/csf-plugin@8.5.0': + resolution: {integrity: sha512-cs6ogviNyLG1h9J8Sb47U3DqIrQmn2EHm4ta3fpCeV3ABbrMgbzYyxtmybz4g/AwlDgjAZAt6PPcXkfCJ6p2CQ==} peerDependencies: - storybook: ^8.4.7 + storybook: ^8.5.0 '@storybook/csf@0.1.12': resolution: {integrity: sha512-9/exVhabisyIVL0VxTCxo01Tdm8wefIXKXfltAPTSr8cbLn5JAxGQ6QV3mjdecLGEOucfoVhAKtJfVHxEK1iqw==} @@ -4041,45 +3948,49 @@ packages: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - '@storybook/instrumenter@8.4.7': - resolution: {integrity: sha512-k6NSD3jaRCCHAFtqXZ7tw8jAzD/yTEWXGya+REgZqq5RCkmJ+9S4Ytp/6OhQMPtPFX23gAuJJzTQVLcCr+gjRg==} + '@storybook/instrumenter@8.5.0': + resolution: {integrity: sha512-eZ/UY6w4U2vay+wX7QVwKiRoyMzZscuv6v4k4r8BlmHPFWbhiZDO9S2GsG16UkyKnrQrYk432he70n7hn1Xvmg==} peerDependencies: - storybook: ^8.4.7 + storybook: ^8.5.0 - '@storybook/manager-api@8.4.7': - resolution: {integrity: sha512-ELqemTviCxAsZ5tqUz39sDmQkvhVAvAgiplYy9Uf15kO0SP2+HKsCMzlrm2ue2FfkUNyqbDayCPPCB0Cdn/mpQ==} + '@storybook/manager-api@8.5.0': + resolution: {integrity: sha512-Ildriueo3eif4M+gMlMxu/mrBIbAnz8+oesmQJKdzZfe/U9eQTI9OUqJsxx/IVBmdzQ3ySsgNmzj5VweRkse4A==} peerDependencies: storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 - '@storybook/preview-api@8.4.7': - resolution: {integrity: sha512-0QVQwHw+OyZGHAJEXo6Knx+6/4er7n2rTDE5RYJ9F2E2Lg42E19pfdLlq2Jhoods2Xrclo3wj6GWR//Ahi39Eg==} + '@storybook/preview-api@8.5.0': + resolution: {integrity: sha512-g0XbD54zMUkl6bpuA7qEBCE9rW1QV6KKmwkO4bkxMOJcMke3x9l00JTaYn7Un8wItjXiS3BIG15B6mnfBG7fng==} peerDependencies: storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 - '@storybook/react-dom-shim@8.4.7': - resolution: {integrity: sha512-6bkG2jvKTmWrmVzCgwpTxwIugd7Lu+2btsLAqhQSzDyIj2/uhMNp8xIMr/NBDtLgq3nomt9gefNa9xxLwk/OMg==} + '@storybook/react-dom-shim@8.5.0': + resolution: {integrity: sha512-7P8xg4FiuFpM6kQOzZynno+0zyLVs8NgsmRK58t3JRZXbda1tzlxTXzvqx4hUevvbPJGjmrB0F3xTFH+8Otnvw==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^8.4.7 + storybook: ^8.5.0 - '@storybook/react-vite@8.4.7': - resolution: {integrity: sha512-iiY9iLdMXhDnilCEVxU6vQsN72pW3miaf0WSenOZRyZv3HdbpgOxI0qapOS0KCyRUnX9vTlmrSPTMchY4cAeOg==} + '@storybook/react-vite@8.5.0': + resolution: {integrity: sha512-4f5AM8aPs2aTBeiycotinaDIPJg/YRtPb0F1dDquS097eUOeImS73+NSSCwrIjmSiapG/KWVkPgFnadEumFkAA==} engines: {node: '>=18.0.0'} peerDependencies: + '@storybook/test': 8.5.0 react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^8.4.7 + storybook: ^8.5.0 vite: ^4.0.0 || ^5.0.0 || ^6.0.0 + peerDependenciesMeta: + '@storybook/test': + optional: true - '@storybook/react@8.4.7': - resolution: {integrity: sha512-nQ0/7i2DkaCb7dy0NaT95llRVNYWQiPIVuhNfjr1mVhEP7XD090p0g7eqUmsx8vfdHh2BzWEo6CoBFRd3+EXxw==} + '@storybook/react@8.5.0': + resolution: {integrity: sha512-/jbkmGGc95N7KduIennL/k8grNTP5ye/YBnkcS4TbF7uDWBtKy3/Wqvx5BIlFXq3qeUnZJ8YtZc0lPIYeCY8XQ==} engines: {node: '>=18.0.0'} peerDependencies: - '@storybook/test': 8.4.7 + '@storybook/test': 8.5.0 react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^8.4.7 + storybook: ^8.5.0 typescript: '>= 4.2.x' peerDependenciesMeta: '@storybook/test': @@ -4087,13 +3998,13 @@ packages: typescript: optional: true - '@storybook/test@8.4.7': - resolution: {integrity: sha512-AhvJsu5zl3uG40itSQVuSy5WByp3UVhS6xAnme4FWRwgSxhvZjATJ3AZkkHWOYjnnk+P2/sbz/XuPli1FVCWoQ==} + '@storybook/test@8.5.0': + resolution: {integrity: sha512-M/DdPlI6gwL7NGkK5o7GYjdEBp95AsFEUtW29zQfnVIAngYugzi3nIuM/XkQHunidVdAZCYjw2s2Yhhsx/m9sw==} peerDependencies: - storybook: ^8.4.7 + storybook: ^8.5.0 - '@storybook/theming@8.4.7': - resolution: {integrity: sha512-99rgLEjf7iwfSEmdqlHkSG3AyLcK0sfExcr0jnc6rLiAkBhzuIsvcHjjUwkR210SOCgXqBPW0ZA6uhnuyppHLw==} + '@storybook/theming@8.5.0': + resolution: {integrity: sha512-591LbOj/HMmHYUfLgrMerxhF1A9mY61HWKxcRpB6xxalc1Xw1kRtQ49DcwuTXnUu9ktBB3nuOzPNPQPFSh/7PQ==} peerDependencies: storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 @@ -4102,17 +4013,9 @@ packages: peerDependencies: eslint: ^8.57.0 || ^9.0.0 - '@tanstack/query-core@5.64.0': - resolution: {integrity: sha512-/MPJt/AaaMzdWJZTafgMyYhEX/lGjQrNz8+NDQSk8fNoU5PHqh05FhQaBrEQafW2PeBHsRbefEf//qKMiSAbQQ==} - '@tanstack/query-core@5.64.1': resolution: {integrity: sha512-978Wx4Wl4UJZbmvU/rkaM9cQtXXrbhK0lsz/UZhYIbyKYA8E4LdomTwyh2GHZ4oU0BKKoDH4YlKk2VscCUgNmg==} - '@tanstack/react-query@5.64.0': - resolution: {integrity: sha512-tBMzlROROUcTDMpDt1NC3n9ndKnJHPB3RCpa6Bf9f31TFvqhLz879x8jldtKU+6IwMSw1Pn4K1AKA+2SYyA6TA==} - peerDependencies: - react: ^18 || ^19 - '@tanstack/react-query@5.64.1': resolution: {integrity: sha512-vW5ggHpIO2Yjj44b4sB+Fd3cdnlMJppXRBJkEHvld6FXh3j5dwWJoQo7mGtKI2RbSFyiyu/PhGAy0+Vv5ev9Eg==} peerDependencies: @@ -4132,125 +4035,125 @@ packages: peerDependencies: '@testing-library/dom': '>=7.21.4' - '@tiptap/core@2.8.0': - resolution: {integrity: sha512-xsqDI4BNzYRWRtBq7+/38ThhqEr7uG9Njip1x+9/wgR3vWPBFnBkYJTz6jSxS35NRE6BSnERm4/B/vrLuY1Hdw==} + '@tiptap/core@2.11.3': + resolution: {integrity: sha512-ibfi6U1gMRLo319Re6olv8uAuxtUpK343ygcVoZrJ8O4sqRnU9CEqPAM+n7YAKlOks1+Di0sTheIxZRak7Pj4g==} peerDependencies: '@tiptap/pm': ^2.7.0 - '@tiptap/extension-bold@2.8.0': - resolution: {integrity: sha512-U1YkZBxDkSLNvPNiqxB5g42IeJHr27C7zDb/yGQN2xL4UBeg4O9xVhCFfe32f6tLwivSL0dar4ScElpaCJuqow==} + '@tiptap/extension-bold@2.11.3': + resolution: {integrity: sha512-YafJ+BavtzQBir81HoM62G0cik1ww7zNcElkg35sQWtVFnT99s+fLEuSurixtmiLdgmSSb/YsPrCmNp/R75zOw==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-bubble-menu@2.8.0': - resolution: {integrity: sha512-swg+myJPN60LduQvLMF4hVBqP5LOIN01INZBzBI8egz8QufqtSyRCgXl7Xcma0RT5xIXnZSG9XOqNFf2rtkjKA==} + '@tiptap/extension-bubble-menu@2.11.3': + resolution: {integrity: sha512-KOAy9zCzqssJO7cGIwZNgv2hFyxrZ2AHoWptICPA79nVZrHQQw2ZP1/FDTR8cDEZzLQMbpgGqQhUhjZcAs3/zQ==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/pm': ^2.7.0 - '@tiptap/extension-code@2.8.0': - resolution: {integrity: sha512-VSFn3sFF6qPpOGkXFhik8oYRH5iByVJpFEFd/duIEftmS0MdPzkbSItOpN3mc9xsJ5dCX80LYaResSj5hr5zkA==} + '@tiptap/extension-code@2.11.3': + resolution: {integrity: sha512-w36Pb4DlB/cQZwsIpd5pSDwYuLBBSGh6dwGc9TVUdv+hdh8vIsnkGCjynapXgUrT2RFEJwObRYK+r5Gw84uGSA==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-collaboration-cursor@2.8.0': - resolution: {integrity: sha512-48UtdoF5ZXNPEkEKYOh+NQEdw+/6jrZp/VOrvEs/pdL0XqPgHsW0cpEV7D69l1sLheiMhMeOGC0iX+0Du6g1Yg==} + '@tiptap/extension-collaboration-cursor@2.11.3': + resolution: {integrity: sha512-Hw6ByVzE8KiuPqSC3BTFDFIidrtlyrJnJJ9Ff3PCMgloLz89H910yvWyAXnw8OhlzdZBRVdWML53kVS+402suw==} peerDependencies: '@tiptap/core': ^2.7.0 y-prosemirror: ^1.2.11 - '@tiptap/extension-collaboration@2.8.0': - resolution: {integrity: sha512-Ae5NZWj2aq8ZElsGxQiq3cAxxbb0cR7VHvmIG1mPA6USvrQL6/xtBVutersBqINFELmIuxh/jm8qVffBm2qXyg==} + '@tiptap/extension-collaboration@2.11.3': + resolution: {integrity: sha512-2zZrd1pA3jDhMiqlFUSewPvwSnFjjaA7+sjulQO49HCZykyqdR1Fd5cxNKKBsjMczZfR7mop8I/NANeSZyRGmg==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/pm': ^2.7.0 y-prosemirror: ^1.2.11 - '@tiptap/extension-floating-menu@2.8.0': - resolution: {integrity: sha512-H4QT61CrkLqisnGGC7zgiYmsl2jXPHl89yQCbdlkQN7aw11H7PltcJS2PJguL0OrRVJS/Mv/VTTUiMslmsEV5g==} + '@tiptap/extension-floating-menu@2.11.3': + resolution: {integrity: sha512-Za1x475cvv+URegCsoDr8rZI5GIoC4N6rHg/xqmozY4bA326Ko1cMrUbwpVF6p17nerDGAMCIstZM7SSUQdNSA==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/pm': ^2.7.0 - '@tiptap/extension-gapcursor@2.8.0': - resolution: {integrity: sha512-Be1LWCmvteQInOnNVN+HTqc1XWsj1bCl+Q7et8qqNjtGtTaCbdCp8ppcH1SKJxNTM/RLUtPyJ8FDgOTj51ixCA==} + '@tiptap/extension-gapcursor@2.11.3': + resolution: {integrity: sha512-QNVoMNvsinnpvIBAADCbPXMAxY6nv38dxLY3mmPBF0j51H1ggGRX2MdD8VsSBM+AP5az9vTa1+rO+0wBfDwDWw==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/pm': ^2.7.0 - '@tiptap/extension-hard-break@2.8.0': - resolution: {integrity: sha512-vqiIfviNiCmy/pJTHuDSCAGL2O4QDEdDmAvGJu8oRmElUrnlg8DbJUfKvn6DWQHNSQwRb+LDrwWlzAYj1K9u6A==} + '@tiptap/extension-hard-break@2.11.3': + resolution: {integrity: sha512-Jsz1qV/h4GFZiBtcrJ2yAF1Euw25IXgx5m4EBr/33TV6gT5+zRUr4e0y6h3jHicyInviZeXd9HXELCcQCEtHRg==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-history@2.8.0': - resolution: {integrity: sha512-u5YS0J5Egsxt8TUWMMAC3QhPZaak+IzQeyHch4gtqxftx96tprItY7AD/A3pGDF2uCSnN+SZrk6yVexm6EncDw==} + '@tiptap/extension-history@2.11.3': + resolution: {integrity: sha512-dxJeuGuLEn9V4iGfsvMOBcTwufcw971NoBdsyW1TOzYvucDkYHgIlOVE4DEWIVuOkfIjKEiCGl8IdZLaHWU8Sg==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/pm': ^2.7.0 - '@tiptap/extension-horizontal-rule@2.8.0': - resolution: {integrity: sha512-Sn/MI8WVFBoIYSIHA9NJryJIyCEzZdRysau8pC5TFnfifre0QV1ksPz2bgF+DyCD69ozQiRdBBHDEwKe47ZbfQ==} + '@tiptap/extension-horizontal-rule@2.11.3': + resolution: {integrity: sha512-+O6W6EbD4TLsUF8t0ApgZWLpcwn3tajRZtBU6u0SuwHtvhMTrQYySUTH5j06KfTDbw6JAqKKPCpKhPgH2Z6eFg==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/pm': ^2.7.0 - '@tiptap/extension-italic@2.8.0': - resolution: {integrity: sha512-PwwSE2LTYiHI47NJnsfhBmPiLE8IXZYqaSoNPU6flPrk1KxEzqvRI1joKZBmD9wuqzmHJ93VFIeZcC+kfwi8ZA==} + '@tiptap/extension-italic@2.11.3': + resolution: {integrity: sha512-GpeQh2tMb6ys/ft7xqitoXeWO7uM8z4hvLEhD92ACuk6VpcHUhksUwnv4G4Qc/cZ9i+qk3GYEsRha0JaHp3GVw==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-link@2.8.0': - resolution: {integrity: sha512-p67hCG/pYCiOK/oCTPZnlkw9Ei7KJ7kCKFaluTcAmr5j8IBdYfDqSMDNCT4vGXBvKFh4X6xD7S7QvOqcH0Gn9A==} + '@tiptap/extension-link@2.11.3': + resolution: {integrity: sha512-FPLLBPqJQmqVMww7qx+Oznru2OaeoeZ6wTSfwtZZv1jNa1wwtK9O0wRJ3g71qvdFAt1veOesZNiMn3q7MOrw0A==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/pm': ^2.7.0 - '@tiptap/extension-paragraph@2.8.0': - resolution: {integrity: sha512-XgxxNNbuBF48rAGwv7/s6as92/xjm/lTZIGTq9aG13ClUKFtgdel7C33SpUCcxg3cO2WkEyllXVyKUiauFZw/A==} + '@tiptap/extension-paragraph@2.11.3': + resolution: {integrity: sha512-snH9aIRJGpHCLm0zzuBwhXpRYMyZvyNBlF5MulJKxkwremFhD9fVP26UtQEneL/CnwpNs3q1QOQGTRlqFP2hbg==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-strike@2.8.0': - resolution: {integrity: sha512-ezkDiXxQ3ME/dDMMM7tAMkKRi6UWw7tIu+Mx7Os0z8HCGpVBk1gFhLlhEd8I5rJaPZr4tK1wtSehMA9bscFGQw==} + '@tiptap/extension-strike@2.11.3': + resolution: {integrity: sha512-Ei4rGEqytwXSj4Th1CN8EZFHnYmM5lAp8YUj1V3wWGX7EtRtnq1YG3+b7q68NKmdPSMFOjEz6pHtBzO+p+0aWw==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-table-cell@2.8.0': - resolution: {integrity: sha512-IZpxONWyOd474L8+k4bHrFNRhbsl9eRwbNs5O877JkVFItc2WUz1DIhbJzjmBRsqExtWQJuOsiqWFab1kpiwGQ==} + '@tiptap/extension-table-cell@2.11.3': + resolution: {integrity: sha512-evdzllWjBey8bzSR7sUxTdrHKjN6M3XOv+1XfaoQpqMr8ryRWDb6yPSEIssAjc8bIa7yvCl7jaXMreeXE7oBSQ==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-table-header@2.8.0': - resolution: {integrity: sha512-B67A96yMQlG96IFzZBc7D5dnn7O29hcjuDLtjyZkKvU5D/RlFKPMmC9nVphCV3CnbkvEOZUdK9pNaOpen64naw==} + '@tiptap/extension-table-header@2.11.3': + resolution: {integrity: sha512-Dcs7R0r5VDhuRvEfLhUKFvK9Yj2xPP8aTQ2UvLVCUJMlvo5Qv/xaJWDbXxH/AQ3wL4LvZomHTOWvdNad7WEkgg==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-table-row@2.8.0': - resolution: {integrity: sha512-Iezej6l7X+WqKzGLmCgAwmpL+QsfjFv1g8yVH5d0/3Pkcj3G9nDn+GSm4bZnbfYFyqInHG94PZ5PMReiALrJtA==} + '@tiptap/extension-table-row@2.11.3': + resolution: {integrity: sha512-ExCsW/7SFJ9geXhEBKb3eyLCvUOvfLC6pn69aua/AvXPJE4cv//5D42e6o5Iyu/xwLLPH1oAINa0HYmsFDp75w==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-text@2.8.0': - resolution: {integrity: sha512-EDAdFFzWOvQfVy7j3qkKhBpOeE5thkJaBemSWfXI93/gMVc0ZCdLi24mDvNNgUHlT+RjlIoQq908jZaaxLKN2A==} + '@tiptap/extension-text@2.11.3': + resolution: {integrity: sha512-DhrwR9tmDU2U4yjqdaX6odrnOYaE/Ai2ERs2bU4Sgm0ZF5QCyO31Cflg1OQ4erTi0IiqD5ilDPRXqFuu6FGzOQ==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-underline@2.8.0': - resolution: {integrity: sha512-1ouuHwZJphT8OosAmp6x8e+Wly3cUd1pNWBiOutJX+6QRGBXJnIKFCzn8YOTlWhg1YQigisG7dNF3YdlyuRNHw==} + '@tiptap/extension-underline@2.11.3': + resolution: {integrity: sha512-OPVG+D6byOn7mLTOwYVCIQL6j32SlYgic+Ku3km4qadynfqhHcALpmhMkWXcrlA7S9R7aIP2s5XW73dV//XCyQ==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/pm@2.10.3': - resolution: {integrity: sha512-771p53aU0KFvujvKpngvq2uAxThlEsjYaXcVVmwrhf0vxSSg+psKQEvqvWvHv/3BwkPVCGwmEKNVJZjaXFKu4g==} + '@tiptap/pm@2.11.3': + resolution: {integrity: sha512-AEpiWvYmXdELpuGGhX6lS2aU155ANwS7WbQ/+/SFqH3YIYHjgUzP8UnY6KSiEBI7a7kX4TWhG84mWrzPA3dPaw==} - '@tiptap/react@2.8.0': - resolution: {integrity: sha512-o/aSCjO5Nu4MsNpTF+N1SzYzVQvvBiclmTOZX2E6usZ8jre5zmKfXHDSZnjGSRTK6z6kw5KW8wpjRQha03f9mg==} + '@tiptap/react@2.11.3': + resolution: {integrity: sha512-tNY/xJ7swV1Ffc6W5CSEWJnBo3grDapkZnd2udSTJ7/zYMUe+vSN2bcdKga2Zo2rAC0WFuLUl27iUhrZ29FFuQ==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/pm': ^2.7.0 - react: ^17.0.0 || ^18.0.0 - react-dom: ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0 '@tokenizer/token@0.3.0': resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} @@ -4441,8 +4344,8 @@ packages: '@types/docker-modem@3.0.6': resolution: {integrity: sha512-yKpAGEuKRSS8wwx0joknWxsmLha78wNMe9R2S3UNsVOkZded8UqOrV8KoeDXoXsjndxwyF3eIhyClGbO1SEhEg==} - '@types/dockerode@3.3.33': - resolution: {integrity: sha512-7av8lVOhkW7Xd11aZTSq5zhdpyNraldXwQR0pxUCiSNTvIzsP86KrFrmrZgxtrXD2Zrtzwt4H6OYLbATONWzWg==} + '@types/dockerode@3.3.34': + resolution: {integrity: sha512-mH9SuIb8NuTDsMus5epcbTzSbEo52fKLBMo0zapzYIAIyfDqoIFn7L3trekHLKC8qmxGV++pPUP4YqQ9n5v2Zg==} '@types/doctrine@0.0.9': resolution: {integrity: sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA==} @@ -4537,14 +4440,11 @@ packages: '@types/node@10.14.22': resolution: {integrity: sha512-9taxKC944BqoTVjE+UT3pQH0nHZlTvITwfsOZqyc+R3sfJuxaTtxWjfn1K2UlxyPcKHf0rnaXcVFrS9F9vf0bw==} - '@types/node@18.19.70': - resolution: {integrity: sha512-RE+K0+KZoEpDUbGGctnGdkrLFwi1eYKTlIHNl2Um98mUkGsm1u2Ff6Ltd0e8DktTtC98uy7rSj+hO8t/QuLoVQ==} - - '@types/node@18.19.71': - resolution: {integrity: sha512-evXpcgtZm8FY4jqBSN8+DmOTcVkkvTmAayeo4Wf3m1xAruyVGzGuDh/Fb/WWX2yLItUiho42ozyJjB0dw//Tkw==} + '@types/node@18.19.74': + resolution: {integrity: sha512-HMwEkkifei3L605gFdV+/UwtpxP6JSzM+xFk2Ia6DNFSwSVBRh9qp5Tgf4lNFOMfPVuU0WnkcWpXZpgn5ufO4A==} - '@types/node@22.10.2': - resolution: {integrity: sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==} + '@types/node@22.10.7': + resolution: {integrity: sha512-V09KvXxFiutGp6B7XkpaDXlNadZxrzajcY50EuoLIpQ6WWYCSvf19lVIazzfIzQvhUN2HjX12spLojTnhuKlGg==} '@types/parse-json@4.0.2': resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} @@ -4650,8 +4550,8 @@ packages: '@types/yauzl@2.10.3': resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - '@typescript-eslint/eslint-plugin@8.19.1': - resolution: {integrity: sha512-tJzcVyvvb9h/PB96g30MpxACd9IrunT7GF9wfA9/0TJ1LxGOJx1TdPzSbBBnNED7K9Ka8ybJsnEpiXPktolTLg==} + '@typescript-eslint/eslint-plugin@8.20.0': + resolution: {integrity: sha512-naduuphVw5StFfqp4Gq4WhIBE2gN1GEmMUExpJYknZJdRnc+2gDzB8Z3+5+/Kv33hPQRDGzQO/0opHE72lZZ6A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 @@ -4664,8 +4564,8 @@ packages: peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - '@typescript-eslint/parser@8.19.1': - resolution: {integrity: sha512-67gbfv8rAwawjYx3fYArwldTQKoYfezNUT4D5ioWetr/xCrxXxvleo3uuiFuKfejipvq+og7mjz3b0G2bVyUCw==} + '@typescript-eslint/parser@8.20.0': + resolution: {integrity: sha512-gKXG7A5HMyjDIedBi6bUrDcun8GIjnI8qOwVLiY3rx6T/sHP/19XLJOnIq/FgQvWLHja5JN/LSE7eklNBr612g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -4675,12 +4575,12 @@ packages: resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@typescript-eslint/scope-manager@8.19.1': - resolution: {integrity: sha512-60L9KIuN/xgmsINzonOcMDSB8p82h95hoBfSBtXuO4jlR1R9L1xSkmVZKgCPVfavDlXihh4ARNjXhh1gGnLC7Q==} + '@typescript-eslint/scope-manager@8.20.0': + resolution: {integrity: sha512-J7+VkpeGzhOt3FeG1+SzhiMj9NzGD/M6KoGn9f4dbz3YzK9hvbhVTmLj/HiTp9DazIzJ8B4XcM80LrR9Dm1rJw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@8.19.1': - resolution: {integrity: sha512-Rp7k9lhDKBMRJB/nM9Ksp1zs4796wVNyihG9/TU9R6KCJDNkQbc2EOKjrBtLYh3396ZdpXLtr/MkaSEmNMtykw==} + '@typescript-eslint/type-utils@8.20.0': + resolution: {integrity: sha512-bPC+j71GGvA7rVNAHAtOjbVXbLN5PkwqMvy1cwGeaxUoRQXVuKCebRoLzm+IPW/NtFFpstn1ummSIasD5t60GA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -4690,8 +4590,8 @@ packages: resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@typescript-eslint/types@8.19.1': - resolution: {integrity: sha512-JBVHMLj7B1K1v1051ZaMMgLW4Q/jre5qGK0Ew6UgXz1Rqh+/xPzV1aW581OM00X6iOfyr1be+QyW8LOUf19BbA==} + '@typescript-eslint/types@8.20.0': + resolution: {integrity: sha512-cqaMiY72CkP+2xZRrFt3ExRBu0WmVitN/rYPZErA80mHjHx/Svgp8yfbzkJmDoQ/whcytOPO9/IZXnOc+wigRA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript-eslint/typescript-estree@5.62.0': @@ -4703,8 +4603,8 @@ packages: typescript: optional: true - '@typescript-eslint/typescript-estree@8.19.1': - resolution: {integrity: sha512-jk/TZwSMJlxlNnqhy0Eod1PNEvCkpY6MXOXE/WLlblZ6ibb32i2We4uByoKPv1d0OD2xebDv4hbs3fm11SMw8Q==} + '@typescript-eslint/typescript-estree@8.20.0': + resolution: {integrity: sha512-Y7ncuy78bJqHI35NwzWol8E0X7XkRVS4K4P4TCyzWkOJih5NDvtoRDW4Ba9YJJoB2igm9yXDdYI/+fkiiAxPzA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.8.0' @@ -4715,8 +4615,8 @@ packages: peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - '@typescript-eslint/utils@8.19.1': - resolution: {integrity: sha512-IxG5gLO0Ne+KaUc8iW1A+XuKLd63o4wlbI1Zp692n1xojCl/THvgIKXJXBZixTh5dd5+yTJ/VXH7GJaaw21qXA==} + '@typescript-eslint/utils@8.20.0': + resolution: {integrity: sha512-dq70RUw6UK9ei7vxc4KQtBRk7qkHZv447OUZ6RPQMQl71I3NZxQJX/f32Smr+iqWrB02pHKn2yAdHBb0KNrRMA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -4726,12 +4626,12 @@ packages: resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@typescript-eslint/visitor-keys@8.19.1': - resolution: {integrity: sha512-fzmjU8CHK853V/avYZAvuVut3ZTfwN5YtMaoi+X9Y9MA9keaWNHC3zEQ9zvyX/7Hj+5JkNyK1l7TOR2hevHB6Q==} + '@typescript-eslint/visitor-keys@8.20.0': + resolution: {integrity: sha512-v/BpkeeYAsPkKCkR8BDwcno0llhzWVqPOamQrAEMdpZav2Y9OVjd9dwJyBLJWwf335B5DmlifECIkZRJCaGaHA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@ungap/structured-clone@1.2.0': - resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + '@ungap/structured-clone@1.2.1': + resolution: {integrity: sha512-fEzPV3hSkSMltkw152tJKNARhOupqbH96MZWyRjNaYZOMIzbrTeQDG+MTc6Mr2pgzFQzFxAfmhGDNP5QK++2ZA==} '@use-gesture/core@10.3.1': resolution: {integrity: sha512-WcINiDt8WjqBdUXye25anHiNxPc0VOrlT8F6LLkU6cycrOGUDyY/yyFmsg3k8i5OLvv25llc0QC45GhR/C8llw==} @@ -6198,11 +6098,11 @@ packages: resolution: {integrity: sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==} engines: {node: '>= 0.4'} - es-module-lexer@1.5.4: - resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==} + es-module-lexer@1.6.0: + resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==} - es-object-atoms@1.0.0: - resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} engines: {node: '>= 0.4'} es-set-tostringtag@2.0.3: @@ -6315,8 +6215,8 @@ packages: '@typescript-eslint/parser': optional: true - eslint-plugin-prettier@5.2.1: - resolution: {integrity: sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==} + eslint-plugin-prettier@5.2.2: + resolution: {integrity: sha512-1yI3/hf35wmlq66C8yOyrujQnel+v5l1Vop5Cl2I6ylyNTT1JbuUUnV3/41PzwTzcyDp/oF0jWE3HXvcH5AQOQ==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: '@types/eslint': '>=8.0.0' @@ -6718,6 +6618,10 @@ packages: resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} engines: {node: '>=6'} + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + get-stream@5.2.0: resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} engines: {node: '>=8'} @@ -6903,8 +6807,8 @@ packages: hast-util-to-html@8.0.4: resolution: {integrity: sha512-4tpQTUOr9BMjtYyNlt0P50mH7xj0Ks2xpo8M943Vykljf99HW6EzulIoJP1N3eKOSScEHzyzi9dm7/cn0RfGwA==} - hast-util-to-html@9.0.3: - resolution: {integrity: sha512-M17uBDzMJ9RPCqLMO92gNNUDuBSq10a25SDBI08iCCxmorf4Yy6sYHK57n9WAbRAAaU+DuR4W6GN9K4DFZesYg==} + hast-util-to-html@9.0.4: + resolution: {integrity: sha512-wxQzXtdbhiwGAUKrnQJXlOPmHnEehzphwkK7aluUPQ+lEc1xefC8pblMgpp2w5ldBTEfveRIrADcrhGIWrlTDA==} hast-util-to-mdast@8.4.1: resolution: {integrity: sha512-tfmBLASuCgyhCzpkTXM5kU8xeuS5jkMZ17BYm2YftGT5wvgc7uHXTZ/X8WfNd6F5NV/IGmrLsuahZ+jXQir4zQ==} @@ -7112,8 +7016,8 @@ packages: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} - is-arguments@1.1.1: - resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} + is-arguments@1.2.0: + resolution: {integrity: sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==} engines: {node: '>= 0.4'} is-array-buffer@3.0.5: @@ -7193,8 +7097,8 @@ packages: resolution: {integrity: sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==} engines: {node: '>=18'} - is-generator-function@1.0.10: - resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + is-generator-function@1.1.0: + resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==} engines: {node: '>= 0.4'} is-glob@4.0.3: @@ -7594,8 +7498,8 @@ packages: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} - lib0@0.2.98: - resolution: {integrity: sha512-XteTiNO0qEXqqweWx+b21p/fBnNHUA1NwAtJNJek1oPrewEZs2uiT4gWivHKr9GqCjDPAhchz0UQO8NwU3bBNA==} + lib0@0.2.99: + resolution: {integrity: sha512-vwztYuUf1uf/1zQxfzRfO5yzfNKhTtgOByCruuiQQxWQXnPb8Itaube5ylofcV0oM0aKal9Mv+S1s1Ky0UYP1w==} engines: {node: '>=16'} hasBin: true @@ -7609,8 +7513,8 @@ packages: linkify-it@5.0.0: resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} - linkifyjs@4.1.3: - resolution: {integrity: sha512-auMesunaJ8yfkHvK4gfg1K0SaKX/6Wn9g2Aac/NwX+l5VdmFZzo/hdPGxEOETj+ryRa4/fiOPjeeKURSAJx1sg==} + linkifyjs@4.2.0: + resolution: {integrity: sha512-pCj3PrQyATaoTYKHrgWRF3SJwsm61udVh+vuls/Rl6SptiDhgE7ziUIudAedRY9QEfynmM7/RmLEfPUyw1HPCw==} lint-staged@15.3.0: resolution: {integrity: sha512-vHFahytLoF2enJklgtOtCtIjZrKD/LoxlaUusd5nh7dWv/dkKQJY74ndFSzxCdv7g0ueGg1ORgTSt4Y9LPZn9A==} @@ -7760,8 +7664,8 @@ packages: resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} engines: {node: '>=12'} - magic-string@0.30.14: - resolution: {integrity: sha512-5c99P1WKTed11ZC0HMJOj6CDIue6F8ySu+bJL+85q1zBEIY8IklrJ1eiKC2NDRh3Ct3FcvmJPyQHb9erXMTJNw==} + magic-string@0.30.17: + resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} magicast@0.3.5: resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==} @@ -7785,8 +7689,8 @@ packages: resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==} hasBin: true - markdown-table@3.0.3: - resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} + markdown-table@3.0.4: + resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} math-expression-evaluator@1.4.0: resolution: {integrity: sha512-4vRUvPyxdO8cWULGTh9dZWL2tZK6LDBvj+OGHBER7poH9Qdt7kXEoj20wiz4lQUbUXQZFjPbe5mVDo9nutizCw==} @@ -8120,8 +8024,8 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - napi-build-utils@1.0.2: - resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} + napi-build-utils@2.0.0: + resolution: {integrity: sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==} natural-compare-lite@1.4.0: resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} @@ -8150,8 +8054,8 @@ packages: fp-ts: ^2.0.0 monocle-ts: ^2.0.0 - node-abi@3.71.0: - resolution: {integrity: sha512-SZ40vRiy/+wRTf21hxkkEjPJZpARzUMVcJoQse2EF8qkUWbbO2z7vd5oA/H6bVH6SZQ5STGcu0KRDS7biNRfxw==} + node-abi@3.73.0: + resolution: {integrity: sha512-z8iYzQGBu35ZkTQ9mtR8RqugJZ9RCLn8fv3d7LsgDBzOijGQP3RdKTX4LA7LXw03ZhU5z0l4xfhIMgSES31+cg==} engines: {node: '>=10'} node-addon-api@7.1.1: @@ -8287,8 +8191,8 @@ packages: resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} engines: {node: '>=18'} - oniguruma-to-es@0.4.1: - resolution: {integrity: sha512-rNcEohFz095QKGRovP/yqPIKc+nP+Sjs4YTHMv33nMePGKrq/r2eu9Yh4646M5XluGJsUnmwoXuiXE69KDs+fQ==} + oniguruma-to-es@2.3.0: + resolution: {integrity: sha512-bwALDxriqfKGfUufKGGepCzu9x7nJQuoRoAFp4AnwehhC2crqrDIAP/uN2qdlsAvSMpeRC3+Yzhqc7hLmle5+g==} open@8.4.2: resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} @@ -8559,10 +8463,6 @@ packages: resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} engines: {node: '>= 0.4'} - postcss@8.4.49: - resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} - engines: {node: ^10 || ^12 || >=14} - postcss@8.5.1: resolution: {integrity: sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==} engines: {node: ^10 || ^12 || >=14} @@ -8606,8 +8506,8 @@ packages: resolution: {integrity: sha512-uE4AiIqhjtHKp4pj9ei7fkdfNXEX9IqDBlK1plGAQne6y79UUlrTdtYLhwXoO0AMOvqyl9Ar+BU6Eo6P/MPgfg==} engines: {node: '>= 16'} - prebuild-install@7.1.2: - resolution: {integrity: sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==} + prebuild-install@7.1.3: + resolution: {integrity: sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==} engines: {node: '>=10'} hasBin: true @@ -8718,8 +8618,8 @@ packages: prosemirror-menu@1.2.4: resolution: {integrity: sha512-S/bXlc0ODQup6aiBbWVsX/eM+xJgCTAfMq/nLqaO5ID/am4wS0tTCIkzwytmao7ypEtjj39i7YbJjAgO20mIqA==} - prosemirror-model@1.24.0: - resolution: {integrity: sha512-Ft7epNnycoQSM+2ObF35SBbBX+5WY39v8amVlrtlAcpglhlHs2tCTnWl7RX5tbp/PsMKcRcWV9cXPuoBWq0AIQ==} + prosemirror-model@1.24.1: + resolution: {integrity: sha512-YM053N+vTThzlWJ/AtPtF1j0ebO36nvbmDy4U7qA2XQB8JVaQp1FmB9Jhrps8s+z+uxhhVTny4m20ptUvhk0Mg==} prosemirror-schema-basic@1.2.3: resolution: {integrity: sha512-h+H0OQwZVqMon1PNn0AG9cTfx513zgIG2DY00eJ00Yvgb3UD+GQ/VlWW5rcaxacpCGT1Yx8nuhwXk4+QbXUfJA==} @@ -8730,8 +8630,8 @@ packages: prosemirror-state@1.4.3: resolution: {integrity: sha512-goFKORVbvPuAQaXhpbemJFRKJ2aixr+AZMGiquiqKxaucC6hlpHNZHWgz5R7dS4roHiwq9vDctE//CZ++o0W1Q==} - prosemirror-tables@1.6.1: - resolution: {integrity: sha512-p8WRJNA96jaNQjhJolmbxTzd6M4huRE5xQ8OxjvMhQUP0Nzpo4zz6TztEiwk6aoqGBhz9lxRWR1yRZLlpQN98w==} + prosemirror-tables@1.6.2: + resolution: {integrity: sha512-97dKocVLrEVTQjZ4GBLdrrMw7Gv3no8H8yMwf5IRM9OoHrzbWpcH5jJxYgNQIRCtdIqwDctT1HdMHrGTiwp1dQ==} prosemirror-trailing-node@3.0.0: resolution: {integrity: sha512-xiun5/3q0w5eRnGYfNlW1uU9W6x5MoFKWwq/0TIRgt09lv7Hcser2QYV8t4muXbEr+Fwo0geYn79Xs4GKywrRQ==} @@ -8743,8 +8643,8 @@ packages: prosemirror-transform@1.10.2: resolution: {integrity: sha512-2iUq0wv2iRoJO/zj5mv8uDUriOHWzXRnOTVgCzSXnktS/2iQRa3UUQwVlkBlYZFtygw6Nh1+X4mGqoYBINn5KQ==} - prosemirror-view@1.37.0: - resolution: {integrity: sha512-z2nkKI1sJzyi7T47Ji/ewBPuIma1RNvQCCYVdV+MqWBV7o4Sa1n94UJCJJ1aQRF/xRkFfyqLGlGFWitIcCOtbg==} + prosemirror-view@1.37.2: + resolution: {integrity: sha512-ApcyrfV/cRcaL65on7TQcfWElwLyOgIjnIynfAuV+fIdlpbSvSWRwfuPaH7T5mo4AbO/FID29qOtjiDIKGWyog==} protobufjs@7.4.0: resolution: {integrity: sha512-mRUWCc3KUU4w1jU8sGxICXH/gNS94DvI1gxqDvBzhj1JpcsimQkYiOJfwsPUykUI5ZaspFbSgmBLER8IrQ3tqw==} @@ -8987,8 +8887,8 @@ packages: peerDependencies: react: ^16.8.0 || ^17 || ^18 || ^19 - react-icons@5.3.0: - resolution: {integrity: sha512-DnUk8aFbTyQPSkCfF8dbX6kQjXA9DktMeJqfjrg6cK9vwQVMxmcA3BfP4QoiztVmEHtwlTgLFsPuH2NskKT6eg==} + react-icons@5.4.0: + resolution: {integrity: sha512-7eltJxgVt7X64oHh6wSWNwwbKTCtMfK35hcjvJS0yxEAhPM8oUKdS3+kqaW1vicIltw+kR2unHaa12S9pPALoQ==} peerDependencies: react: '*' @@ -9001,32 +8901,32 @@ packages: react-lifecycles-compat@3.0.4: resolution: {integrity: sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==} - react-number-format@5.4.2: - resolution: {integrity: sha512-cg//jVdS49PYDgmcYoBnMMHl4XNTMuV723ZnHD2aXYtWWWqbVF3hjQ8iB+UZEuXapLbeA8P8H+1o6ZB1lcw3vg==} + react-number-format@5.4.3: + resolution: {integrity: sha512-VCY5hFg/soBighAoGcdE+GagkJq0230qN6jcS5sp8wQX1qy1fYN/RX7/BXkrs0oyzzwqR8/+eSUrqXbGeywdUQ==} peerDependencies: - react: ^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 - react-dom: ^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 + react: ^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-refresh@0.14.2: resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} engines: {node: '>=0.10.0'} - react-remove-scroll-bar@2.3.6: - resolution: {integrity: sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==} + react-remove-scroll-bar@2.3.8: + resolution: {integrity: sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==} engines: {node: '>=10'} peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 peerDependenciesMeta: '@types/react': optional: true - react-remove-scroll@2.6.0: - resolution: {integrity: sha512-I2U4JVEsQenxDAKaVa3VZ/JeJZe0/2DxPWL8Tj8yLKctQJQiZM52pn/GWFpSp8dftjM3pSAHVJZscAnC/y+ySQ==} + react-remove-scroll@2.6.3: + resolution: {integrity: sha512-pnAi91oOk8g8ABQKGF5/M9qxmmOPxaAnopyTHYfqYEwJhyFrbbBtHuSgtKEoH0jpcxx5o3hXqH1mNd9/Oi+8iQ==} engines: {node: '>=10'} peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true @@ -9055,21 +8955,21 @@ packages: react: ^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - react-style-singleton@2.2.1: - resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} + react-style-singleton@2.2.3: + resolution: {integrity: sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==} engines: {node: '>=10'} peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true - react-textarea-autosize@8.5.3: - resolution: {integrity: sha512-XT1024o2pqCuZSuBt9FwHlaDeNtVrtCXu0Rnz88t1jUGheCLa3PhjE1GH8Ctm2axEtvdCl5SUHYschyQ0L5QHQ==} + react-textarea-autosize@8.5.6: + resolution: {integrity: sha512-aT3ioKXMa8f6zHYGebhbdMD2L00tKeRX1zuVuDx9YQK/JLLRSaSxq3ugECEmUB9z2kvk6bFSIoRHLkkUv0RJiw==} engines: {node: '>=10'} peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-toc@3.1.0: resolution: {integrity: sha512-JPvMScVqu8NuguplaM74lerkXVh4ASnnF6vrjUoHS0fTxOsNrLJEagwdfTXopY3iBMAuOFx9pOwuRYi8UfL4wQ==} @@ -9157,14 +9057,14 @@ packages: regenerator-runtime@0.14.1: resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - regex-recursion@4.2.1: - resolution: {integrity: sha512-QHNZyZAeKdndD1G3bKAbBEKOSSK4KOHQrAJ01N1LJeb0SoH4DJIeFhp0uUpETgONifS4+P3sOgoA1dhzgrQvhA==} + regex-recursion@5.1.1: + resolution: {integrity: sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w==} regex-utilities@2.3.0: resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==} - regex@5.0.1: - resolution: {integrity: sha512-gIS00E8eHNWONxofNKOhtlkwBQj/K39ZJamnvMEFH3pNKc06Zz2jtFXF/4ldAaJTzQNhMJU7b5+C7tTq2ukV7Q==} + regex@5.1.1: + resolution: {integrity: sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw==} regexp.prototype.flags@1.5.3: resolution: {integrity: sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==} @@ -9304,11 +9204,6 @@ packages: robust-predicates@3.0.2: resolution: {integrity: sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==} - rollup@4.28.1: - resolution: {integrity: sha512-61fXYl/qNVinKmGSTHAZ6Yy8I3YIJC/r2m9feHo6SwVAVcLT5MPwOUFe7EuURA/4m0NR8lXG4BBXuo/IZEsjMg==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true - rollup@4.31.0: resolution: {integrity: sha512-9cCE8P4rZLx9+PjoyqHLs31V9a9Vpvfo4qNcs6JCiGWYhw2gijSetFbH6SSy1whnkgcefnUwr8sad7tgqsGvnw==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -9439,8 +9334,8 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - shiki@1.23.1: - resolution: {integrity: sha512-8kxV9TH4pXgdKGxNOkrSMydn1Xf6It8lsle0fiqxf7a1149K1WGtdOu3Zb91T5r1JpvRPxqxU3C2XdZZXQnrig==} + shiki@1.29.1: + resolution: {integrity: sha512-TghWKV9pJTd/N+IgAIVJtr0qZkB7FfFCUrrEJc0aRmZupo3D1OCVRknQWVRVA7AX/M0Ld7QfoAruPzr3CnUJuw==} side-channel-list@1.0.0: resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} @@ -9588,8 +9483,8 @@ packages: resolution: {integrity: sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==} engines: {node: '>=0.10.0'} - storybook@8.4.7: - resolution: {integrity: sha512-RP/nMJxiWyFc8EVMH5gp20ID032Wvk+Yr3lmKidoegto5Iy+2dVQnUoElZb2zpbVXNHWakGuAkfI0dY1Hfp/vw==} + storybook@8.5.0: + resolution: {integrity: sha512-cEx42OlCetManF+cONVJVYP7SYsnI2K922DfWKmZhebP0it0n6TUof4y5/XzJ8YUruwPgyclGLdX8TvdRuNSfw==} hasBin: true peerDependencies: prettier: ^2 || ^3 @@ -9757,6 +9652,9 @@ packages: tar-fs@2.0.1: resolution: {integrity: sha512-6tzWDMeroL87uF/+lin46k+Q+46rAJ0SyPGz7OW7wTgblI273hsBqk2C1j0/xNadNLKDTUL9BukSjB7cwgmlPA==} + tar-fs@2.1.2: + resolution: {integrity: sha512-EsaAXwxmx8UB7FRKqeozqEPop69DXcmYwTQwXvyAPF352HJsPdkVhvTaDPYqfNgruveJIJy3TA2l+2zj8LJIJA==} + tar-fs@3.0.6: resolution: {integrity: sha512-iokBDQQkUyeXhgPYaZxmczGPhnhXZ0CmrqI+MOb/WFGS9DW5wnfrLgtjUJBvz50vQ3qfRwJ62QVoCFu8mPVu5w==} @@ -9813,8 +9711,8 @@ packages: tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} - tinyexec@0.3.1: - resolution: {integrity: sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==} + tinyexec@0.3.2: + resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} tinypool@1.0.2: resolution: {integrity: sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==} @@ -9835,11 +9733,11 @@ packages: resolution: {integrity: sha512-GA16+8HXvqtfEnw/DTcwB0UU354QE1n3+wh08oFjr6Znl7ZLAeUgYzCcK+/CCrOyE0vnHR8/pu3XXG3vDijXpQ==} hasBin: true - tldts-core@6.1.61: - resolution: {integrity: sha512-In7VffkDWUPgwa+c9picLUxvb0RltVwTkSgMNFgvlGSWveCzGBemBqTsgJCL4EDFWZ6WH0fKTsot6yNhzy3ZzQ==} + tldts-core@6.1.74: + resolution: {integrity: sha512-gTwtY6L2GfuxiL4CWpLknv9JDYYqBvKCk/BT5uAaAvCA0s6pzX7lr2IrkQZSUlnSjRHIjTl8ZwKCVXJ7XNRWYw==} - tldts@6.1.61: - resolution: {integrity: sha512-rv8LUyez4Ygkopqn+M6OLItAOT9FF3REpPQDkdMx5ix8w4qkuE7Vo2o/vw1nxKQYmJDV8JpAMJQr1b+lTKf0FA==} + tldts@6.1.74: + resolution: {integrity: sha512-O5vTZ1UmmEmrLl/59U9igitnSMlprALLaLgbv//dEvjobPT9vyURhHXKMCDLEhn3qxZFIkb9PwAfNYV0Ol7RPQ==} hasBin: true to-no-case@1.0.2: @@ -9879,8 +9777,8 @@ packages: resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} engines: {node: '>=6'} - tough-cookie@5.0.0: - resolution: {integrity: sha512-FRKsF7cz96xIIeMZ82ehjC3xW2E+O2+v11udrDYewUbszngYhsGa8z6YUMMzO9QJZzzyd0nGGXnML/TReX6W8Q==} + tough-cookie@5.1.0: + resolution: {integrity: sha512-rvZUv+7MoBYTiDmFPBrhL7Ujx9Sk+q9wwm22x8c8T5IJaR+Wsyc7TNxbVxo84kZoRJZZMazowFLqpankBEQrGg==} engines: {node: '>=16'} tr46@0.0.3: @@ -9998,8 +9896,8 @@ packages: resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} engines: {node: '>=12.20'} - type-fest@4.26.1: - resolution: {integrity: sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg==} + type-fest@4.33.0: + resolution: {integrity: sha512-s6zVrxuyKbbAsSAD5ZPTB77q4YIdRctkTbJ2/Dqlinwz+8ooH2gd+YA7VA6Pa93KML9GockVvoxjZ2vHP+mu8g==} engines: {node: '>=16'} type-is@1.6.18: @@ -10089,8 +9987,8 @@ packages: typeorm-aurora-data-api-driver: optional: true - typescript-eslint@8.19.1: - resolution: {integrity: sha512-LKPUQpdEMVOeKluHi8md7rwLcoXHhwvWp3x+sJkMuq3gGm9yaYJtPo8sRZSblMFJ5pcOGCAak/scKf1mvZDlQw==} + typescript-eslint@8.20.0: + resolution: {integrity: sha512-Kxz2QRFsgbWj6Xcftlw3Dd154b3cEPFqQC+qMZrMypSijPd4UanKKvoKDrJ4o8AIfZFKAF+7sMaEIR8mTElozA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -10184,8 +10082,8 @@ packages: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} - unplugin@1.16.0: - resolution: {integrity: sha512-5liCNPuJW8dqh3+DM6uNM2EI3MLLpCKp/KY+9pB5M2S2SR2qvvDHhKgBOaTWEbZTAws3CXfB0rKTIolWKL05VQ==} + unplugin@1.16.1: + resolution: {integrity: sha512-4/u/j4FrCKdi17jaxuJA0jClGxB1AvU2hw/IuayPc4ay1XGaJs/rbb4v5WKwAjNifjmXK9PIFyuPiaK8azyR9w==} engines: {node: '>=14.0.0'} unzipper@0.10.14: @@ -10215,45 +10113,49 @@ packages: re2: optional: true - use-callback-ref@1.3.2: - resolution: {integrity: sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==} + use-callback-ref@1.3.3: + resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==} engines: {node: '>=10'} peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true - use-composed-ref@1.3.0: - resolution: {integrity: sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ==} + use-composed-ref@1.4.0: + resolution: {integrity: sha512-djviaxuOOh7wkj0paeO1Q/4wMZ8Zrnag5H6yBvzN7AKKe8beOaED9SF5/ByLqsku8NP4zQqsvM2u3ew/tJK8/w==} peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true - use-isomorphic-layout-effect@1.1.2: - resolution: {integrity: sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==} + use-isomorphic-layout-effect@1.2.0: + resolution: {integrity: sha512-q6ayo8DWoPZT0VdG4u3D3uxcgONP3Mevx2i2b0434cwWBoL+aelL1DzkXI6w3PhTZzUeR2kaVlZn70iCiseP6w==} peerDependencies: '@types/react': '*' - react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 peerDependenciesMeta: '@types/react': optional: true - use-latest@1.2.1: - resolution: {integrity: sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw==} + use-latest@1.3.0: + resolution: {integrity: sha512-mhg3xdm9NaM8q+gLT8KryJPnRFOz1/5XPBhmDEVZK1webPzDjrPk7f/mbpeLqTgB9msytYWANxgALOCJKnLvcQ==} peerDependencies: '@types/react': '*' - react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 peerDependenciesMeta: '@types/react': optional: true - use-sidecar@1.1.2: - resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} + use-sidecar@1.1.3: + resolution: {integrity: sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==} engines: {node: '>=10'} peerDependencies: - '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true @@ -10263,10 +10165,10 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 - use-sync-external-store@1.2.2: - resolution: {integrity: sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==} + use-sync-external-store@1.4.0: + resolution: {integrity: sha512-9WXSPC5fMv61vaupRkCKCxsPxBocVnwakBEkMIHHpkTTg6icbJtg6jzgtLDm4bl3cSHAca52rYWih0k4K3PfHw==} peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} @@ -10358,8 +10260,8 @@ packages: vite: optional: true - vite@5.4.11: - resolution: {integrity: sha512-c7jFQRklXua0mTzneGW9QVyxFjUgwcihC4bXEtujIo2ouWCe1Ajt/amn2PCxYnhYfd5k09JX3SB7OYWFKYqj8Q==} + vite@5.4.14: + resolution: {integrity: sha512-EK5cY7Q1D8JNhSaPKVK4pwBFvaTmZxEnoKXLG/U9gmdDcihQGNzFlgIvaxezFR4glP1LsuiedwMBqCXH3wZccA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -10389,8 +10291,8 @@ packages: terser: optional: true - vite@6.0.9: - resolution: {integrity: sha512-MSgUxHcaXLtnBPktkbUSoQUANApKYuxZ6DrbVENlIorbhL2dZydTLaZ01tjUoE3szeFzlFk9ANOKk0xurh4MKA==} + vite@6.0.11: + resolution: {integrity: sha512-4VL9mQPKoHy4+FE0NnRE/kbY51TOfaknxAjt3fJbGJxhIpBZiqVzlZDEesWWsuREXHwNdAoOFZ9MkPEVXczHwg==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: @@ -10690,8 +10592,8 @@ packages: yauzl@2.10.0: resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} - yjs@13.6.19: - resolution: {integrity: sha512-GNKw4mEUn5yWU2QPHRx8jppxmCm9KzbBhB4qJLUJFiiYD0g/tDVgXQ7aPkyh01YO28kbs2J/BEbWBagjuWyejw==} + yjs@13.6.23: + resolution: {integrity: sha512-ExtnT5WIOVpkL56bhLeisG/N5c4fmzKn4k0ROVfJa5TY2QHbH7F0Wu2T5ZhR7ErsFWQEFafyrnSI8TPKVF9Few==} engines: {node: '>=16.0.0', npm: '>=8.0.0'} yocto-queue@0.1.0: @@ -10754,7 +10656,7 @@ snapshots: '@anthropic-ai/sdk@0.27.3': dependencies: - '@types/node': 18.19.71 + '@types/node': 18.19.74 '@types/node-fetch': 2.6.12 abort-controller: 3.0.0 agentkeepalive: 4.6.0 @@ -10775,21 +10677,21 @@ snapshots: '@aws-crypto/crc32@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.723.0 + '@aws-sdk/types': 3.731.0 tslib: 2.8.1 '@aws-crypto/crc32c@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.723.0 + '@aws-sdk/types': 3.731.0 tslib: 2.8.1 '@aws-crypto/sha1-browser@5.2.0': dependencies: '@aws-crypto/supports-web-crypto': 5.2.0 '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.723.0 - '@aws-sdk/util-locate-window': 3.568.0 + '@aws-sdk/types': 3.731.0 + '@aws-sdk/util-locate-window': 3.723.0 '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 @@ -10798,15 +10700,15 @@ snapshots: '@aws-crypto/sha256-js': 5.2.0 '@aws-crypto/supports-web-crypto': 5.2.0 '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.723.0 - '@aws-sdk/util-locate-window': 3.568.0 + '@aws-sdk/types': 3.731.0 + '@aws-sdk/util-locate-window': 3.723.0 '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 '@aws-crypto/sha256-js@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.723.0 + '@aws-sdk/types': 3.731.0 tslib: 2.8.1 '@aws-crypto/supports-web-crypto@5.2.0': @@ -10815,497 +10717,536 @@ snapshots: '@aws-crypto/util@5.2.0': dependencies: - '@aws-sdk/types': 3.723.0 + '@aws-sdk/types': 3.731.0 '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 - '@aws-sdk/client-s3@3.726.1': + '@aws-sdk/client-s3@3.732.0': dependencies: '@aws-crypto/sha1-browser': 5.2.0 '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/client-sso-oidc': 3.726.0(@aws-sdk/client-sts@3.726.1) - '@aws-sdk/client-sts': 3.726.1 - '@aws-sdk/core': 3.723.0 - '@aws-sdk/credential-provider-node': 3.726.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.1))(@aws-sdk/client-sts@3.726.1) - '@aws-sdk/middleware-bucket-endpoint': 3.726.0 - '@aws-sdk/middleware-expect-continue': 3.723.0 - '@aws-sdk/middleware-flexible-checksums': 3.723.0 - '@aws-sdk/middleware-host-header': 3.723.0 - '@aws-sdk/middleware-location-constraint': 3.723.0 - '@aws-sdk/middleware-logger': 3.723.0 - '@aws-sdk/middleware-recursion-detection': 3.723.0 - '@aws-sdk/middleware-sdk-s3': 3.723.0 - '@aws-sdk/middleware-ssec': 3.723.0 - '@aws-sdk/middleware-user-agent': 3.726.0 - '@aws-sdk/region-config-resolver': 3.723.0 - '@aws-sdk/signature-v4-multi-region': 3.723.0 - '@aws-sdk/types': 3.723.0 - '@aws-sdk/util-endpoints': 3.726.0 - '@aws-sdk/util-user-agent-browser': 3.723.0 - '@aws-sdk/util-user-agent-node': 3.726.0 + '@aws-sdk/core': 3.731.0 + '@aws-sdk/credential-provider-node': 3.731.1 + '@aws-sdk/middleware-bucket-endpoint': 3.731.0 + '@aws-sdk/middleware-expect-continue': 3.731.0 + '@aws-sdk/middleware-flexible-checksums': 3.732.0 + '@aws-sdk/middleware-host-header': 3.731.0 + '@aws-sdk/middleware-location-constraint': 3.731.0 + '@aws-sdk/middleware-logger': 3.731.0 + '@aws-sdk/middleware-recursion-detection': 3.731.0 + '@aws-sdk/middleware-sdk-s3': 3.731.0 + '@aws-sdk/middleware-ssec': 3.731.0 + '@aws-sdk/middleware-user-agent': 3.731.0 + '@aws-sdk/region-config-resolver': 3.731.0 + '@aws-sdk/signature-v4-multi-region': 3.731.0 + '@aws-sdk/types': 3.731.0 + '@aws-sdk/util-endpoints': 3.731.0 + '@aws-sdk/util-user-agent-browser': 3.731.0 + '@aws-sdk/util-user-agent-node': 3.731.0 '@aws-sdk/xml-builder': 3.723.0 - '@smithy/config-resolver': 4.0.0 - '@smithy/core': 3.0.0 - '@smithy/eventstream-serde-browser': 4.0.0 - '@smithy/eventstream-serde-config-resolver': 4.0.0 - '@smithy/eventstream-serde-node': 4.0.0 - '@smithy/fetch-http-handler': 5.0.0 - '@smithy/hash-blob-browser': 4.0.0 - '@smithy/hash-node': 4.0.0 - '@smithy/hash-stream-node': 4.0.0 - '@smithy/invalid-dependency': 4.0.0 - '@smithy/md5-js': 4.0.0 - '@smithy/middleware-content-length': 4.0.0 - '@smithy/middleware-endpoint': 4.0.0 - '@smithy/middleware-retry': 4.0.0 - '@smithy/middleware-serde': 4.0.0 - '@smithy/middleware-stack': 4.0.0 - '@smithy/node-config-provider': 4.0.0 - '@smithy/node-http-handler': 4.0.0 - '@smithy/protocol-http': 5.0.0 - '@smithy/smithy-client': 4.0.0 - '@smithy/types': 4.0.0 - '@smithy/url-parser': 4.0.0 + '@smithy/config-resolver': 4.0.1 + '@smithy/core': 3.1.1 + '@smithy/eventstream-serde-browser': 4.0.1 + '@smithy/eventstream-serde-config-resolver': 4.0.1 + '@smithy/eventstream-serde-node': 4.0.1 + '@smithy/fetch-http-handler': 5.0.1 + '@smithy/hash-blob-browser': 4.0.1 + '@smithy/hash-node': 4.0.1 + '@smithy/hash-stream-node': 4.0.1 + '@smithy/invalid-dependency': 4.0.1 + '@smithy/md5-js': 4.0.1 + '@smithy/middleware-content-length': 4.0.1 + '@smithy/middleware-endpoint': 4.0.2 + '@smithy/middleware-retry': 4.0.3 + '@smithy/middleware-serde': 4.0.1 + '@smithy/middleware-stack': 4.0.1 + '@smithy/node-config-provider': 4.0.1 + '@smithy/node-http-handler': 4.0.2 + '@smithy/protocol-http': 5.0.1 + '@smithy/smithy-client': 4.1.2 + '@smithy/types': 4.1.0 + '@smithy/url-parser': 4.0.1 '@smithy/util-base64': 4.0.0 '@smithy/util-body-length-browser': 4.0.0 '@smithy/util-body-length-node': 4.0.0 - '@smithy/util-defaults-mode-browser': 4.0.0 - '@smithy/util-defaults-mode-node': 4.0.0 - '@smithy/util-endpoints': 3.0.0 - '@smithy/util-middleware': 4.0.0 - '@smithy/util-retry': 4.0.0 - '@smithy/util-stream': 4.0.0 + '@smithy/util-defaults-mode-browser': 4.0.3 + '@smithy/util-defaults-mode-node': 4.0.3 + '@smithy/util-endpoints': 3.0.1 + '@smithy/util-middleware': 4.0.1 + '@smithy/util-retry': 4.0.1 + '@smithy/util-stream': 4.0.2 '@smithy/util-utf8': 4.0.0 - '@smithy/util-waiter': 4.0.0 + '@smithy/util-waiter': 4.0.2 tslib: 2.8.1 transitivePeerDependencies: - aws-crt - '@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.1)': + '@aws-sdk/client-sso-oidc@3.731.1': dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/client-sts': 3.726.1 - '@aws-sdk/core': 3.723.0 - '@aws-sdk/credential-provider-node': 3.726.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.1))(@aws-sdk/client-sts@3.726.1) - '@aws-sdk/middleware-host-header': 3.723.0 - '@aws-sdk/middleware-logger': 3.723.0 - '@aws-sdk/middleware-recursion-detection': 3.723.0 - '@aws-sdk/middleware-user-agent': 3.726.0 - '@aws-sdk/region-config-resolver': 3.723.0 - '@aws-sdk/types': 3.723.0 - '@aws-sdk/util-endpoints': 3.726.0 - '@aws-sdk/util-user-agent-browser': 3.723.0 - '@aws-sdk/util-user-agent-node': 3.726.0 - '@smithy/config-resolver': 4.0.0 - '@smithy/core': 3.0.0 - '@smithy/fetch-http-handler': 5.0.0 - '@smithy/hash-node': 4.0.0 - '@smithy/invalid-dependency': 4.0.0 - '@smithy/middleware-content-length': 4.0.0 - '@smithy/middleware-endpoint': 4.0.0 - '@smithy/middleware-retry': 4.0.0 - '@smithy/middleware-serde': 4.0.0 - '@smithy/middleware-stack': 4.0.0 - '@smithy/node-config-provider': 4.0.0 - '@smithy/node-http-handler': 4.0.0 - '@smithy/protocol-http': 5.0.0 - '@smithy/smithy-client': 4.0.0 - '@smithy/types': 4.0.0 - '@smithy/url-parser': 4.0.0 + '@aws-sdk/core': 3.731.0 + '@aws-sdk/credential-provider-node': 3.731.1 + '@aws-sdk/middleware-host-header': 3.731.0 + '@aws-sdk/middleware-logger': 3.731.0 + '@aws-sdk/middleware-recursion-detection': 3.731.0 + '@aws-sdk/middleware-user-agent': 3.731.0 + '@aws-sdk/region-config-resolver': 3.731.0 + '@aws-sdk/types': 3.731.0 + '@aws-sdk/util-endpoints': 3.731.0 + '@aws-sdk/util-user-agent-browser': 3.731.0 + '@aws-sdk/util-user-agent-node': 3.731.0 + '@smithy/config-resolver': 4.0.1 + '@smithy/core': 3.1.1 + '@smithy/fetch-http-handler': 5.0.1 + '@smithy/hash-node': 4.0.1 + '@smithy/invalid-dependency': 4.0.1 + '@smithy/middleware-content-length': 4.0.1 + '@smithy/middleware-endpoint': 4.0.2 + '@smithy/middleware-retry': 4.0.3 + '@smithy/middleware-serde': 4.0.1 + '@smithy/middleware-stack': 4.0.1 + '@smithy/node-config-provider': 4.0.1 + '@smithy/node-http-handler': 4.0.2 + '@smithy/protocol-http': 5.0.1 + '@smithy/smithy-client': 4.1.2 + '@smithy/types': 4.1.0 + '@smithy/url-parser': 4.0.1 '@smithy/util-base64': 4.0.0 '@smithy/util-body-length-browser': 4.0.0 '@smithy/util-body-length-node': 4.0.0 - '@smithy/util-defaults-mode-browser': 4.0.0 - '@smithy/util-defaults-mode-node': 4.0.0 - '@smithy/util-endpoints': 3.0.0 - '@smithy/util-middleware': 4.0.0 - '@smithy/util-retry': 4.0.0 + '@smithy/util-defaults-mode-browser': 4.0.3 + '@smithy/util-defaults-mode-node': 4.0.3 + '@smithy/util-endpoints': 3.0.1 + '@smithy/util-middleware': 4.0.1 + '@smithy/util-retry': 4.0.1 '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 transitivePeerDependencies: - aws-crt - '@aws-sdk/client-sso@3.726.0': + '@aws-sdk/client-sso@3.731.0': dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.723.0 - '@aws-sdk/middleware-host-header': 3.723.0 - '@aws-sdk/middleware-logger': 3.723.0 - '@aws-sdk/middleware-recursion-detection': 3.723.0 - '@aws-sdk/middleware-user-agent': 3.726.0 - '@aws-sdk/region-config-resolver': 3.723.0 - '@aws-sdk/types': 3.723.0 - '@aws-sdk/util-endpoints': 3.726.0 - '@aws-sdk/util-user-agent-browser': 3.723.0 - '@aws-sdk/util-user-agent-node': 3.726.0 - '@smithy/config-resolver': 4.0.0 - '@smithy/core': 3.0.0 - '@smithy/fetch-http-handler': 5.0.0 - '@smithy/hash-node': 4.0.0 - '@smithy/invalid-dependency': 4.0.0 - '@smithy/middleware-content-length': 4.0.0 - '@smithy/middleware-endpoint': 4.0.0 - '@smithy/middleware-retry': 4.0.0 - '@smithy/middleware-serde': 4.0.0 - '@smithy/middleware-stack': 4.0.0 - '@smithy/node-config-provider': 4.0.0 - '@smithy/node-http-handler': 4.0.0 - '@smithy/protocol-http': 5.0.0 - '@smithy/smithy-client': 4.0.0 - '@smithy/types': 4.0.0 - '@smithy/url-parser': 4.0.0 + '@aws-sdk/core': 3.731.0 + '@aws-sdk/middleware-host-header': 3.731.0 + '@aws-sdk/middleware-logger': 3.731.0 + '@aws-sdk/middleware-recursion-detection': 3.731.0 + '@aws-sdk/middleware-user-agent': 3.731.0 + '@aws-sdk/region-config-resolver': 3.731.0 + '@aws-sdk/types': 3.731.0 + '@aws-sdk/util-endpoints': 3.731.0 + '@aws-sdk/util-user-agent-browser': 3.731.0 + '@aws-sdk/util-user-agent-node': 3.731.0 + '@smithy/config-resolver': 4.0.1 + '@smithy/core': 3.1.1 + '@smithy/fetch-http-handler': 5.0.1 + '@smithy/hash-node': 4.0.1 + '@smithy/invalid-dependency': 4.0.1 + '@smithy/middleware-content-length': 4.0.1 + '@smithy/middleware-endpoint': 4.0.2 + '@smithy/middleware-retry': 4.0.3 + '@smithy/middleware-serde': 4.0.1 + '@smithy/middleware-stack': 4.0.1 + '@smithy/node-config-provider': 4.0.1 + '@smithy/node-http-handler': 4.0.2 + '@smithy/protocol-http': 5.0.1 + '@smithy/smithy-client': 4.1.2 + '@smithy/types': 4.1.0 + '@smithy/url-parser': 4.0.1 '@smithy/util-base64': 4.0.0 '@smithy/util-body-length-browser': 4.0.0 '@smithy/util-body-length-node': 4.0.0 - '@smithy/util-defaults-mode-browser': 4.0.0 - '@smithy/util-defaults-mode-node': 4.0.0 - '@smithy/util-endpoints': 3.0.0 - '@smithy/util-middleware': 4.0.0 - '@smithy/util-retry': 4.0.0 + '@smithy/util-defaults-mode-browser': 4.0.3 + '@smithy/util-defaults-mode-node': 4.0.3 + '@smithy/util-endpoints': 3.0.1 + '@smithy/util-middleware': 4.0.1 + '@smithy/util-retry': 4.0.1 '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 transitivePeerDependencies: - aws-crt - '@aws-sdk/client-sts@3.726.1': + '@aws-sdk/client-sts@3.731.1': dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/client-sso-oidc': 3.726.0(@aws-sdk/client-sts@3.726.1) - '@aws-sdk/core': 3.723.0 - '@aws-sdk/credential-provider-node': 3.726.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.1))(@aws-sdk/client-sts@3.726.1) - '@aws-sdk/middleware-host-header': 3.723.0 - '@aws-sdk/middleware-logger': 3.723.0 - '@aws-sdk/middleware-recursion-detection': 3.723.0 - '@aws-sdk/middleware-user-agent': 3.726.0 - '@aws-sdk/region-config-resolver': 3.723.0 - '@aws-sdk/types': 3.723.0 - '@aws-sdk/util-endpoints': 3.726.0 - '@aws-sdk/util-user-agent-browser': 3.723.0 - '@aws-sdk/util-user-agent-node': 3.726.0 - '@smithy/config-resolver': 4.0.0 - '@smithy/core': 3.0.0 - '@smithy/fetch-http-handler': 5.0.0 - '@smithy/hash-node': 4.0.0 - '@smithy/invalid-dependency': 4.0.0 - '@smithy/middleware-content-length': 4.0.0 - '@smithy/middleware-endpoint': 4.0.0 - '@smithy/middleware-retry': 4.0.0 - '@smithy/middleware-serde': 4.0.0 - '@smithy/middleware-stack': 4.0.0 - '@smithy/node-config-provider': 4.0.0 - '@smithy/node-http-handler': 4.0.0 - '@smithy/protocol-http': 5.0.0 - '@smithy/smithy-client': 4.0.0 - '@smithy/types': 4.0.0 - '@smithy/url-parser': 4.0.0 + '@aws-sdk/core': 3.731.0 + '@aws-sdk/credential-provider-node': 3.731.1 + '@aws-sdk/middleware-host-header': 3.731.0 + '@aws-sdk/middleware-logger': 3.731.0 + '@aws-sdk/middleware-recursion-detection': 3.731.0 + '@aws-sdk/middleware-user-agent': 3.731.0 + '@aws-sdk/region-config-resolver': 3.731.0 + '@aws-sdk/types': 3.731.0 + '@aws-sdk/util-endpoints': 3.731.0 + '@aws-sdk/util-user-agent-browser': 3.731.0 + '@aws-sdk/util-user-agent-node': 3.731.0 + '@smithy/config-resolver': 4.0.1 + '@smithy/core': 3.1.1 + '@smithy/fetch-http-handler': 5.0.1 + '@smithy/hash-node': 4.0.1 + '@smithy/invalid-dependency': 4.0.1 + '@smithy/middleware-content-length': 4.0.1 + '@smithy/middleware-endpoint': 4.0.2 + '@smithy/middleware-retry': 4.0.3 + '@smithy/middleware-serde': 4.0.1 + '@smithy/middleware-stack': 4.0.1 + '@smithy/node-config-provider': 4.0.1 + '@smithy/node-http-handler': 4.0.2 + '@smithy/protocol-http': 5.0.1 + '@smithy/smithy-client': 4.1.2 + '@smithy/types': 4.1.0 + '@smithy/url-parser': 4.0.1 '@smithy/util-base64': 4.0.0 '@smithy/util-body-length-browser': 4.0.0 '@smithy/util-body-length-node': 4.0.0 - '@smithy/util-defaults-mode-browser': 4.0.0 - '@smithy/util-defaults-mode-node': 4.0.0 - '@smithy/util-endpoints': 3.0.0 - '@smithy/util-middleware': 4.0.0 - '@smithy/util-retry': 4.0.0 + '@smithy/util-defaults-mode-browser': 4.0.3 + '@smithy/util-defaults-mode-node': 4.0.3 + '@smithy/util-endpoints': 3.0.1 + '@smithy/util-middleware': 4.0.1 + '@smithy/util-retry': 4.0.1 '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 transitivePeerDependencies: - aws-crt - '@aws-sdk/core@3.723.0': - dependencies: - '@aws-sdk/types': 3.723.0 - '@smithy/core': 3.0.0 - '@smithy/node-config-provider': 4.0.0 - '@smithy/property-provider': 4.0.0 - '@smithy/protocol-http': 5.0.0 - '@smithy/signature-v4': 5.0.0 - '@smithy/smithy-client': 4.0.0 - '@smithy/types': 4.0.0 - '@smithy/util-middleware': 4.0.0 + '@aws-sdk/core@3.731.0': + dependencies: + '@aws-sdk/types': 3.731.0 + '@smithy/core': 3.1.1 + '@smithy/node-config-provider': 4.0.1 + '@smithy/property-provider': 4.0.1 + '@smithy/protocol-http': 5.0.1 + '@smithy/signature-v4': 5.0.1 + '@smithy/smithy-client': 4.1.2 + '@smithy/types': 4.1.0 + '@smithy/util-middleware': 4.0.1 fast-xml-parser: 4.4.1 tslib: 2.8.1 - '@aws-sdk/credential-provider-env@3.723.0': + '@aws-sdk/credential-provider-env@3.731.0': dependencies: - '@aws-sdk/core': 3.723.0 - '@aws-sdk/types': 3.723.0 - '@smithy/property-provider': 4.0.0 - '@smithy/types': 4.0.0 + '@aws-sdk/core': 3.731.0 + '@aws-sdk/types': 3.731.0 + '@smithy/property-provider': 4.0.1 + '@smithy/types': 4.1.0 tslib: 2.8.1 - '@aws-sdk/credential-provider-http@3.723.0': - dependencies: - '@aws-sdk/core': 3.723.0 - '@aws-sdk/types': 3.723.0 - '@smithy/fetch-http-handler': 5.0.0 - '@smithy/node-http-handler': 4.0.0 - '@smithy/property-provider': 4.0.0 - '@smithy/protocol-http': 5.0.0 - '@smithy/smithy-client': 4.0.0 - '@smithy/types': 4.0.0 - '@smithy/util-stream': 4.0.0 + '@aws-sdk/credential-provider-http@3.731.0': + dependencies: + '@aws-sdk/core': 3.731.0 + '@aws-sdk/types': 3.731.0 + '@smithy/fetch-http-handler': 5.0.1 + '@smithy/node-http-handler': 4.0.2 + '@smithy/property-provider': 4.0.1 + '@smithy/protocol-http': 5.0.1 + '@smithy/smithy-client': 4.1.2 + '@smithy/types': 4.1.0 + '@smithy/util-stream': 4.0.2 tslib: 2.8.1 - '@aws-sdk/credential-provider-ini@3.726.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.1))(@aws-sdk/client-sts@3.726.1)': - dependencies: - '@aws-sdk/client-sts': 3.726.1 - '@aws-sdk/core': 3.723.0 - '@aws-sdk/credential-provider-env': 3.723.0 - '@aws-sdk/credential-provider-http': 3.723.0 - '@aws-sdk/credential-provider-process': 3.723.0 - '@aws-sdk/credential-provider-sso': 3.726.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.1)) - '@aws-sdk/credential-provider-web-identity': 3.723.0(@aws-sdk/client-sts@3.726.1) - '@aws-sdk/types': 3.723.0 - '@smithy/credential-provider-imds': 4.0.0 - '@smithy/property-provider': 4.0.0 - '@smithy/shared-ini-file-loader': 4.0.0 - '@smithy/types': 4.0.0 + '@aws-sdk/credential-provider-ini@3.731.1': + dependencies: + '@aws-sdk/core': 3.731.0 + '@aws-sdk/credential-provider-env': 3.731.0 + '@aws-sdk/credential-provider-http': 3.731.0 + '@aws-sdk/credential-provider-process': 3.731.0 + '@aws-sdk/credential-provider-sso': 3.731.1 + '@aws-sdk/credential-provider-web-identity': 3.731.1 + '@aws-sdk/nested-clients': 3.731.1 + '@aws-sdk/types': 3.731.0 + '@smithy/credential-provider-imds': 4.0.1 + '@smithy/property-provider': 4.0.1 + '@smithy/shared-ini-file-loader': 4.0.1 + '@smithy/types': 4.1.0 tslib: 2.8.1 transitivePeerDependencies: - - '@aws-sdk/client-sso-oidc' - aws-crt - '@aws-sdk/credential-provider-node@3.726.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.1))(@aws-sdk/client-sts@3.726.1)': - dependencies: - '@aws-sdk/credential-provider-env': 3.723.0 - '@aws-sdk/credential-provider-http': 3.723.0 - '@aws-sdk/credential-provider-ini': 3.726.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.1))(@aws-sdk/client-sts@3.726.1) - '@aws-sdk/credential-provider-process': 3.723.0 - '@aws-sdk/credential-provider-sso': 3.726.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.1)) - '@aws-sdk/credential-provider-web-identity': 3.723.0(@aws-sdk/client-sts@3.726.1) - '@aws-sdk/types': 3.723.0 - '@smithy/credential-provider-imds': 4.0.0 - '@smithy/property-provider': 4.0.0 - '@smithy/shared-ini-file-loader': 4.0.0 - '@smithy/types': 4.0.0 + '@aws-sdk/credential-provider-node@3.731.1': + dependencies: + '@aws-sdk/credential-provider-env': 3.731.0 + '@aws-sdk/credential-provider-http': 3.731.0 + '@aws-sdk/credential-provider-ini': 3.731.1 + '@aws-sdk/credential-provider-process': 3.731.0 + '@aws-sdk/credential-provider-sso': 3.731.1 + '@aws-sdk/credential-provider-web-identity': 3.731.1 + '@aws-sdk/types': 3.731.0 + '@smithy/credential-provider-imds': 4.0.1 + '@smithy/property-provider': 4.0.1 + '@smithy/shared-ini-file-loader': 4.0.1 + '@smithy/types': 4.1.0 tslib: 2.8.1 transitivePeerDependencies: - - '@aws-sdk/client-sso-oidc' - - '@aws-sdk/client-sts' - aws-crt - '@aws-sdk/credential-provider-process@3.723.0': + '@aws-sdk/credential-provider-process@3.731.0': dependencies: - '@aws-sdk/core': 3.723.0 - '@aws-sdk/types': 3.723.0 - '@smithy/property-provider': 4.0.0 - '@smithy/shared-ini-file-loader': 4.0.0 - '@smithy/types': 4.0.0 + '@aws-sdk/core': 3.731.0 + '@aws-sdk/types': 3.731.0 + '@smithy/property-provider': 4.0.1 + '@smithy/shared-ini-file-loader': 4.0.1 + '@smithy/types': 4.1.0 tslib: 2.8.1 - '@aws-sdk/credential-provider-sso@3.726.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.1))': + '@aws-sdk/credential-provider-sso@3.731.1': dependencies: - '@aws-sdk/client-sso': 3.726.0 - '@aws-sdk/core': 3.723.0 - '@aws-sdk/token-providers': 3.723.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.1)) - '@aws-sdk/types': 3.723.0 - '@smithy/property-provider': 4.0.0 - '@smithy/shared-ini-file-loader': 4.0.0 - '@smithy/types': 4.0.0 + '@aws-sdk/client-sso': 3.731.0 + '@aws-sdk/core': 3.731.0 + '@aws-sdk/token-providers': 3.731.1 + '@aws-sdk/types': 3.731.0 + '@smithy/property-provider': 4.0.1 + '@smithy/shared-ini-file-loader': 4.0.1 + '@smithy/types': 4.1.0 tslib: 2.8.1 transitivePeerDependencies: - - '@aws-sdk/client-sso-oidc' - aws-crt - '@aws-sdk/credential-provider-web-identity@3.723.0(@aws-sdk/client-sts@3.726.1)': + '@aws-sdk/credential-provider-web-identity@3.731.1': dependencies: - '@aws-sdk/client-sts': 3.726.1 - '@aws-sdk/core': 3.723.0 - '@aws-sdk/types': 3.723.0 - '@smithy/property-provider': 4.0.0 - '@smithy/types': 4.0.0 + '@aws-sdk/core': 3.731.0 + '@aws-sdk/nested-clients': 3.731.1 + '@aws-sdk/types': 3.731.0 + '@smithy/property-provider': 4.0.1 + '@smithy/types': 4.1.0 tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt - '@aws-sdk/lib-storage@3.726.1(@aws-sdk/client-s3@3.726.1)': + '@aws-sdk/lib-storage@3.732.0(@aws-sdk/client-s3@3.732.0)': dependencies: - '@aws-sdk/client-s3': 3.726.1 - '@smithy/abort-controller': 4.0.0 - '@smithy/middleware-endpoint': 4.0.0 - '@smithy/smithy-client': 4.0.0 + '@aws-sdk/client-s3': 3.732.0 + '@smithy/abort-controller': 4.0.1 + '@smithy/middleware-endpoint': 4.0.2 + '@smithy/smithy-client': 4.1.2 buffer: 5.6.0 events: 3.3.0 stream-browserify: 3.0.0 tslib: 2.8.1 - '@aws-sdk/middleware-bucket-endpoint@3.726.0': + '@aws-sdk/middleware-bucket-endpoint@3.731.0': dependencies: - '@aws-sdk/types': 3.723.0 + '@aws-sdk/types': 3.731.0 '@aws-sdk/util-arn-parser': 3.723.0 - '@smithy/node-config-provider': 4.0.0 - '@smithy/protocol-http': 5.0.0 - '@smithy/types': 4.0.0 + '@smithy/node-config-provider': 4.0.1 + '@smithy/protocol-http': 5.0.1 + '@smithy/types': 4.1.0 '@smithy/util-config-provider': 4.0.0 tslib: 2.8.1 - '@aws-sdk/middleware-expect-continue@3.723.0': + '@aws-sdk/middleware-expect-continue@3.731.0': dependencies: - '@aws-sdk/types': 3.723.0 - '@smithy/protocol-http': 5.0.0 - '@smithy/types': 4.0.0 + '@aws-sdk/types': 3.731.0 + '@smithy/protocol-http': 5.0.1 + '@smithy/types': 4.1.0 tslib: 2.8.1 - '@aws-sdk/middleware-flexible-checksums@3.723.0': + '@aws-sdk/middleware-flexible-checksums@3.732.0': dependencies: '@aws-crypto/crc32': 5.2.0 '@aws-crypto/crc32c': 5.2.0 '@aws-crypto/util': 5.2.0 - '@aws-sdk/core': 3.723.0 - '@aws-sdk/types': 3.723.0 + '@aws-sdk/core': 3.731.0 + '@aws-sdk/types': 3.731.0 '@smithy/is-array-buffer': 4.0.0 - '@smithy/node-config-provider': 4.0.0 - '@smithy/protocol-http': 5.0.0 - '@smithy/types': 4.0.0 - '@smithy/util-middleware': 4.0.0 - '@smithy/util-stream': 4.0.0 + '@smithy/node-config-provider': 4.0.1 + '@smithy/protocol-http': 5.0.1 + '@smithy/types': 4.1.0 + '@smithy/util-middleware': 4.0.1 + '@smithy/util-stream': 4.0.2 '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 - '@aws-sdk/middleware-host-header@3.723.0': + '@aws-sdk/middleware-host-header@3.731.0': dependencies: - '@aws-sdk/types': 3.723.0 - '@smithy/protocol-http': 5.0.0 - '@smithy/types': 4.0.0 + '@aws-sdk/types': 3.731.0 + '@smithy/protocol-http': 5.0.1 + '@smithy/types': 4.1.0 tslib: 2.8.1 - '@aws-sdk/middleware-location-constraint@3.723.0': + '@aws-sdk/middleware-location-constraint@3.731.0': dependencies: - '@aws-sdk/types': 3.723.0 - '@smithy/types': 4.0.0 + '@aws-sdk/types': 3.731.0 + '@smithy/types': 4.1.0 tslib: 2.8.1 - '@aws-sdk/middleware-logger@3.723.0': + '@aws-sdk/middleware-logger@3.731.0': dependencies: - '@aws-sdk/types': 3.723.0 - '@smithy/types': 4.0.0 + '@aws-sdk/types': 3.731.0 + '@smithy/types': 4.1.0 tslib: 2.8.1 - '@aws-sdk/middleware-recursion-detection@3.723.0': + '@aws-sdk/middleware-recursion-detection@3.731.0': dependencies: - '@aws-sdk/types': 3.723.0 - '@smithy/protocol-http': 5.0.0 - '@smithy/types': 4.0.0 + '@aws-sdk/types': 3.731.0 + '@smithy/protocol-http': 5.0.1 + '@smithy/types': 4.1.0 tslib: 2.8.1 - '@aws-sdk/middleware-sdk-s3@3.723.0': + '@aws-sdk/middleware-sdk-s3@3.731.0': dependencies: - '@aws-sdk/core': 3.723.0 - '@aws-sdk/types': 3.723.0 + '@aws-sdk/core': 3.731.0 + '@aws-sdk/types': 3.731.0 '@aws-sdk/util-arn-parser': 3.723.0 - '@smithy/core': 3.0.0 - '@smithy/node-config-provider': 4.0.0 - '@smithy/protocol-http': 5.0.0 - '@smithy/signature-v4': 5.0.0 - '@smithy/smithy-client': 4.0.0 - '@smithy/types': 4.0.0 + '@smithy/core': 3.1.1 + '@smithy/node-config-provider': 4.0.1 + '@smithy/protocol-http': 5.0.1 + '@smithy/signature-v4': 5.0.1 + '@smithy/smithy-client': 4.1.2 + '@smithy/types': 4.1.0 '@smithy/util-config-provider': 4.0.0 - '@smithy/util-middleware': 4.0.0 - '@smithy/util-stream': 4.0.0 + '@smithy/util-middleware': 4.0.1 + '@smithy/util-stream': 4.0.2 '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 - '@aws-sdk/middleware-ssec@3.723.0': + '@aws-sdk/middleware-ssec@3.731.0': dependencies: - '@aws-sdk/types': 3.723.0 - '@smithy/types': 4.0.0 + '@aws-sdk/types': 3.731.0 + '@smithy/types': 4.1.0 tslib: 2.8.1 - '@aws-sdk/middleware-user-agent@3.726.0': + '@aws-sdk/middleware-user-agent@3.731.0': dependencies: - '@aws-sdk/core': 3.723.0 - '@aws-sdk/types': 3.723.0 - '@aws-sdk/util-endpoints': 3.726.0 - '@smithy/core': 3.0.0 - '@smithy/protocol-http': 5.0.0 - '@smithy/types': 4.0.0 + '@aws-sdk/core': 3.731.0 + '@aws-sdk/types': 3.731.0 + '@aws-sdk/util-endpoints': 3.731.0 + '@smithy/core': 3.1.1 + '@smithy/protocol-http': 5.0.1 + '@smithy/types': 4.1.0 tslib: 2.8.1 - '@aws-sdk/region-config-resolver@3.723.0': + '@aws-sdk/nested-clients@3.731.1': dependencies: - '@aws-sdk/types': 3.723.0 - '@smithy/node-config-provider': 4.0.0 - '@smithy/types': 4.0.0 + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.731.0 + '@aws-sdk/middleware-host-header': 3.731.0 + '@aws-sdk/middleware-logger': 3.731.0 + '@aws-sdk/middleware-recursion-detection': 3.731.0 + '@aws-sdk/middleware-user-agent': 3.731.0 + '@aws-sdk/region-config-resolver': 3.731.0 + '@aws-sdk/types': 3.731.0 + '@aws-sdk/util-endpoints': 3.731.0 + '@aws-sdk/util-user-agent-browser': 3.731.0 + '@aws-sdk/util-user-agent-node': 3.731.0 + '@smithy/config-resolver': 4.0.1 + '@smithy/core': 3.1.1 + '@smithy/fetch-http-handler': 5.0.1 + '@smithy/hash-node': 4.0.1 + '@smithy/invalid-dependency': 4.0.1 + '@smithy/middleware-content-length': 4.0.1 + '@smithy/middleware-endpoint': 4.0.2 + '@smithy/middleware-retry': 4.0.3 + '@smithy/middleware-serde': 4.0.1 + '@smithy/middleware-stack': 4.0.1 + '@smithy/node-config-provider': 4.0.1 + '@smithy/node-http-handler': 4.0.2 + '@smithy/protocol-http': 5.0.1 + '@smithy/smithy-client': 4.1.2 + '@smithy/types': 4.1.0 + '@smithy/url-parser': 4.0.1 + '@smithy/util-base64': 4.0.0 + '@smithy/util-body-length-browser': 4.0.0 + '@smithy/util-body-length-node': 4.0.0 + '@smithy/util-defaults-mode-browser': 4.0.3 + '@smithy/util-defaults-mode-node': 4.0.3 + '@smithy/util-endpoints': 3.0.1 + '@smithy/util-middleware': 4.0.1 + '@smithy/util-retry': 4.0.1 + '@smithy/util-utf8': 4.0.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/region-config-resolver@3.731.0': + dependencies: + '@aws-sdk/types': 3.731.0 + '@smithy/node-config-provider': 4.0.1 + '@smithy/types': 4.1.0 '@smithy/util-config-provider': 4.0.0 - '@smithy/util-middleware': 4.0.0 + '@smithy/util-middleware': 4.0.1 tslib: 2.8.1 - '@aws-sdk/s3-request-presigner@3.726.1': + '@aws-sdk/s3-request-presigner@3.732.0': dependencies: - '@aws-sdk/signature-v4-multi-region': 3.723.0 - '@aws-sdk/types': 3.723.0 - '@aws-sdk/util-format-url': 3.723.0 - '@smithy/middleware-endpoint': 4.0.0 - '@smithy/protocol-http': 5.0.0 - '@smithy/smithy-client': 4.0.0 - '@smithy/types': 4.0.0 + '@aws-sdk/signature-v4-multi-region': 3.731.0 + '@aws-sdk/types': 3.731.0 + '@aws-sdk/util-format-url': 3.731.0 + '@smithy/middleware-endpoint': 4.0.2 + '@smithy/protocol-http': 5.0.1 + '@smithy/smithy-client': 4.1.2 + '@smithy/types': 4.1.0 tslib: 2.8.1 - '@aws-sdk/signature-v4-multi-region@3.723.0': + '@aws-sdk/signature-v4-multi-region@3.731.0': dependencies: - '@aws-sdk/middleware-sdk-s3': 3.723.0 - '@aws-sdk/types': 3.723.0 - '@smithy/protocol-http': 5.0.0 - '@smithy/signature-v4': 5.0.0 - '@smithy/types': 4.0.0 + '@aws-sdk/middleware-sdk-s3': 3.731.0 + '@aws-sdk/types': 3.731.0 + '@smithy/protocol-http': 5.0.1 + '@smithy/signature-v4': 5.0.1 + '@smithy/types': 4.1.0 tslib: 2.8.1 - '@aws-sdk/token-providers@3.723.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.1))': + '@aws-sdk/token-providers@3.731.1': dependencies: - '@aws-sdk/client-sso-oidc': 3.726.0(@aws-sdk/client-sts@3.726.1) - '@aws-sdk/types': 3.723.0 - '@smithy/property-provider': 4.0.0 - '@smithy/shared-ini-file-loader': 4.0.0 - '@smithy/types': 4.0.0 + '@aws-sdk/nested-clients': 3.731.1 + '@aws-sdk/types': 3.731.0 + '@smithy/property-provider': 4.0.1 + '@smithy/shared-ini-file-loader': 4.0.1 + '@smithy/types': 4.1.0 tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt - '@aws-sdk/types@3.723.0': + '@aws-sdk/types@3.731.0': dependencies: - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 tslib: 2.8.1 '@aws-sdk/util-arn-parser@3.723.0': dependencies: tslib: 2.8.1 - '@aws-sdk/util-endpoints@3.726.0': + '@aws-sdk/util-endpoints@3.731.0': dependencies: - '@aws-sdk/types': 3.723.0 - '@smithy/types': 4.0.0 - '@smithy/util-endpoints': 3.0.0 + '@aws-sdk/types': 3.731.0 + '@smithy/types': 4.1.0 + '@smithy/util-endpoints': 3.0.1 tslib: 2.8.1 - '@aws-sdk/util-format-url@3.723.0': + '@aws-sdk/util-format-url@3.731.0': dependencies: - '@aws-sdk/types': 3.723.0 - '@smithy/querystring-builder': 4.0.0 - '@smithy/types': 4.0.0 + '@aws-sdk/types': 3.731.0 + '@smithy/querystring-builder': 4.0.1 + '@smithy/types': 4.1.0 tslib: 2.8.1 - '@aws-sdk/util-locate-window@3.568.0': + '@aws-sdk/util-locate-window@3.723.0': dependencies: tslib: 2.8.1 - '@aws-sdk/util-user-agent-browser@3.723.0': + '@aws-sdk/util-user-agent-browser@3.731.0': dependencies: - '@aws-sdk/types': 3.723.0 - '@smithy/types': 4.0.0 + '@aws-sdk/types': 3.731.0 + '@smithy/types': 4.1.0 bowser: 2.11.0 tslib: 2.8.1 - '@aws-sdk/util-user-agent-node@3.726.0': + '@aws-sdk/util-user-agent-node@3.731.0': dependencies: - '@aws-sdk/middleware-user-agent': 3.726.0 - '@aws-sdk/types': 3.723.0 - '@smithy/node-config-provider': 4.0.0 - '@smithy/types': 4.0.0 + '@aws-sdk/middleware-user-agent': 3.731.0 + '@aws-sdk/types': 3.731.0 + '@smithy/node-config-provider': 4.0.1 + '@smithy/types': 4.1.0 tslib: 2.8.1 '@aws-sdk/xml-builder@3.723.0': dependencies: - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 tslib: 2.8.1 '@babel/code-frame@7.26.2': @@ -11429,34 +11370,34 @@ snapshots: '@blocknote/core@0.22.0(@types/hast@3.0.4)': dependencies: '@emoji-mart/data': 1.2.1 - '@tiptap/core': 2.8.0(@tiptap/pm@2.10.3) - '@tiptap/extension-bold': 2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.10.3)) - '@tiptap/extension-code': 2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.10.3)) - '@tiptap/extension-collaboration': 2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.10.3))(@tiptap/pm@2.10.3)(y-prosemirror@1.2.13(prosemirror-model@1.24.0)(prosemirror-state@1.4.3)(prosemirror-view@1.37.0)(y-protocols@1.0.6(yjs@13.6.19))(yjs@13.6.19)) - '@tiptap/extension-collaboration-cursor': 2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.10.3))(y-prosemirror@1.2.13(prosemirror-model@1.24.0)(prosemirror-state@1.4.3)(prosemirror-view@1.37.0)(y-protocols@1.0.6(yjs@13.6.19))(yjs@13.6.19)) - '@tiptap/extension-gapcursor': 2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.10.3))(@tiptap/pm@2.10.3) - '@tiptap/extension-hard-break': 2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.10.3)) - '@tiptap/extension-history': 2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.10.3))(@tiptap/pm@2.10.3) - '@tiptap/extension-horizontal-rule': 2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.10.3))(@tiptap/pm@2.10.3) - '@tiptap/extension-italic': 2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.10.3)) - '@tiptap/extension-link': 2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.10.3))(@tiptap/pm@2.10.3) - '@tiptap/extension-paragraph': 2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.10.3)) - '@tiptap/extension-strike': 2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.10.3)) - '@tiptap/extension-table-cell': 2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.10.3)) - '@tiptap/extension-table-header': 2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.10.3)) - '@tiptap/extension-table-row': 2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.10.3)) - '@tiptap/extension-text': 2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.10.3)) - '@tiptap/extension-underline': 2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.10.3)) - '@tiptap/pm': 2.10.3 + '@tiptap/core': 2.11.3(@tiptap/pm@2.11.3) + '@tiptap/extension-bold': 2.11.3(@tiptap/core@2.11.3(@tiptap/pm@2.11.3)) + '@tiptap/extension-code': 2.11.3(@tiptap/core@2.11.3(@tiptap/pm@2.11.3)) + '@tiptap/extension-collaboration': 2.11.3(@tiptap/core@2.11.3(@tiptap/pm@2.11.3))(@tiptap/pm@2.11.3)(y-prosemirror@1.2.13(prosemirror-model@1.24.1)(prosemirror-state@1.4.3)(prosemirror-view@1.37.2)(y-protocols@1.0.6(yjs@13.6.23))(yjs@13.6.23)) + '@tiptap/extension-collaboration-cursor': 2.11.3(@tiptap/core@2.11.3(@tiptap/pm@2.11.3))(y-prosemirror@1.2.13(prosemirror-model@1.24.1)(prosemirror-state@1.4.3)(prosemirror-view@1.37.2)(y-protocols@1.0.6(yjs@13.6.23))(yjs@13.6.23)) + '@tiptap/extension-gapcursor': 2.11.3(@tiptap/core@2.11.3(@tiptap/pm@2.11.3))(@tiptap/pm@2.11.3) + '@tiptap/extension-hard-break': 2.11.3(@tiptap/core@2.11.3(@tiptap/pm@2.11.3)) + '@tiptap/extension-history': 2.11.3(@tiptap/core@2.11.3(@tiptap/pm@2.11.3))(@tiptap/pm@2.11.3) + '@tiptap/extension-horizontal-rule': 2.11.3(@tiptap/core@2.11.3(@tiptap/pm@2.11.3))(@tiptap/pm@2.11.3) + '@tiptap/extension-italic': 2.11.3(@tiptap/core@2.11.3(@tiptap/pm@2.11.3)) + '@tiptap/extension-link': 2.11.3(@tiptap/core@2.11.3(@tiptap/pm@2.11.3))(@tiptap/pm@2.11.3) + '@tiptap/extension-paragraph': 2.11.3(@tiptap/core@2.11.3(@tiptap/pm@2.11.3)) + '@tiptap/extension-strike': 2.11.3(@tiptap/core@2.11.3(@tiptap/pm@2.11.3)) + '@tiptap/extension-table-cell': 2.11.3(@tiptap/core@2.11.3(@tiptap/pm@2.11.3)) + '@tiptap/extension-table-header': 2.11.3(@tiptap/core@2.11.3(@tiptap/pm@2.11.3)) + '@tiptap/extension-table-row': 2.11.3(@tiptap/core@2.11.3(@tiptap/pm@2.11.3)) + '@tiptap/extension-text': 2.11.3(@tiptap/core@2.11.3(@tiptap/pm@2.11.3)) + '@tiptap/extension-underline': 2.11.3(@tiptap/core@2.11.3(@tiptap/pm@2.11.3)) + '@tiptap/pm': 2.11.3 emoji-mart: 5.6.0 hast-util-from-dom: 4.2.0 prosemirror-dropcursor: 1.8.1 - prosemirror-highlight: 0.9.0(@types/hast@3.0.4)(prosemirror-model@1.24.0)(prosemirror-state@1.4.3)(prosemirror-transform@1.10.2)(prosemirror-view@1.37.0)(shiki@1.23.1) - prosemirror-model: 1.24.0 + prosemirror-highlight: 0.9.0(@types/hast@3.0.4)(prosemirror-model@1.24.1)(prosemirror-state@1.4.3)(prosemirror-transform@1.10.2)(prosemirror-view@1.37.2)(shiki@1.29.1) + prosemirror-model: 1.24.1 prosemirror-state: 1.4.3 - prosemirror-tables: 1.6.1 + prosemirror-tables: 1.6.2 prosemirror-transform: 1.10.2 - prosemirror-view: 1.37.0 + prosemirror-view: 1.37.2 rehype-format: 5.0.1 rehype-parse: 8.0.5 rehype-remark: 9.1.2 @@ -11465,12 +11406,12 @@ snapshots: remark-parse: 10.0.2 remark-rehype: 10.1.0 remark-stringify: 10.0.3 - shiki: 1.23.1 + shiki: 1.29.1 unified: 10.1.2 uuid: 8.3.2 - y-prosemirror: 1.2.13(prosemirror-model@1.24.0)(prosemirror-state@1.4.3)(prosemirror-view@1.37.0)(y-protocols@1.0.6(yjs@13.6.19))(yjs@13.6.19) - y-protocols: 1.0.6(yjs@13.6.19) - yjs: 13.6.19 + y-prosemirror: 1.2.13(prosemirror-model@1.24.1)(prosemirror-state@1.4.3)(prosemirror-view@1.37.2)(y-protocols@1.0.6(yjs@13.6.23))(yjs@13.6.23) + y-protocols: 1.0.6(yjs@13.6.23) + yjs: 13.6.23 transitivePeerDependencies: - '@types/hast' - highlight.js @@ -11479,16 +11420,16 @@ snapshots: - sugar-high - supports-color - '@blocknote/mantine@0.22.0(@tiptap/pm@2.10.3)(@types/hast@3.0.4)(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@blocknote/mantine@0.22.0(@tiptap/pm@2.11.3)(@types/hast@3.0.4)(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@blocknote/core': 0.22.0(@types/hast@3.0.4) - '@blocknote/react': 0.22.0(@tiptap/pm@2.10.3)(@types/hast@3.0.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mantine/core': 7.13.2(@mantine/hooks@7.13.2(react@18.3.1))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mantine/hooks': 7.13.2(react@18.3.1) + '@blocknote/react': 0.22.0(@tiptap/pm@2.11.3)(@types/hast@3.0.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mantine/core': 7.16.1(@mantine/hooks@7.16.1(react@18.3.1))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mantine/hooks': 7.16.1(react@18.3.1) '@mantine/utils': 6.0.22(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - react-icons: 5.3.0(react@18.3.1) + react-icons: 5.4.0(react@18.3.1) transitivePeerDependencies: - '@tiptap/pm' - '@types/hast' @@ -11499,16 +11440,16 @@ snapshots: - sugar-high - supports-color - '@blocknote/react@0.22.0(@tiptap/pm@2.10.3)(@types/hast@3.0.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@blocknote/react@0.22.0(@tiptap/pm@2.11.3)(@types/hast@3.0.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@blocknote/core': 0.22.0(@types/hast@3.0.4) - '@floating-ui/react': 0.26.24(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@tiptap/core': 2.8.0(@tiptap/pm@2.10.3) - '@tiptap/react': 2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.10.3))(@tiptap/pm@2.10.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@floating-ui/react': 0.26.28(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tiptap/core': 2.11.3(@tiptap/pm@2.11.3) + '@tiptap/react': 2.11.3(@tiptap/core@2.11.3(@tiptap/pm@2.11.3))(@tiptap/pm@2.11.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) lodash.merge: 4.6.2 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - react-icons: 5.3.0(react@18.3.1) + react-icons: 5.4.0(react@18.3.1) transitivePeerDependencies: - '@tiptap/pm' - '@types/hast' @@ -11518,18 +11459,18 @@ snapshots: - sugar-high - supports-color - '@blocknote/server-util@0.22.0(@types/hast@3.0.4)(canvas@2.11.2)(prosemirror-model@1.24.0)(prosemirror-state@1.4.3)(prosemirror-view@1.37.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@blocknote/server-util@0.22.0(@types/hast@3.0.4)(canvas@2.11.2)(prosemirror-model@1.24.1)(prosemirror-state@1.4.3)(prosemirror-view@1.37.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@blocknote/core': 0.22.0(@types/hast@3.0.4) - '@blocknote/react': 0.22.0(@tiptap/pm@2.10.3)(@types/hast@3.0.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@tiptap/core': 2.8.0(@tiptap/pm@2.10.3) - '@tiptap/pm': 2.10.3 + '@blocknote/react': 0.22.0(@tiptap/pm@2.11.3)(@types/hast@3.0.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tiptap/core': 2.11.3(@tiptap/pm@2.11.3) + '@tiptap/pm': 2.11.3 jsdom: 25.0.1(canvas@2.11.2) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - y-prosemirror: 1.2.13(prosemirror-model@1.24.0)(prosemirror-state@1.4.3)(prosemirror-view@1.37.0)(y-protocols@1.0.6(yjs@13.6.19))(yjs@13.6.19) - y-protocols: 1.0.6(yjs@13.6.19) - yjs: 13.6.19 + y-prosemirror: 1.2.13(prosemirror-model@1.24.1)(prosemirror-state@1.4.3)(prosemirror-view@1.37.2)(y-protocols@1.0.6(yjs@13.6.23))(yjs@13.6.23) + y-protocols: 1.0.6(yjs@13.6.23) + yjs: 13.6.23 transitivePeerDependencies: - '@types/hast' - bufferutil @@ -11546,7 +11487,7 @@ snapshots: '@browserbasehq/sdk@2.0.0': dependencies: - '@types/node': 18.19.71 + '@types/node': 18.19.74 '@types/node-fetch': 2.6.12 abort-controller: 3.0.0 agentkeepalive: 4.6.0 @@ -11622,14 +11563,14 @@ snapshots: '@colors/colors@1.6.0': {} - '@commitlint/cli@19.6.1(@types/node@22.10.2)(typescript@5.7.2)': + '@commitlint/cli@19.6.1(@types/node@22.10.7)(typescript@5.7.2)': dependencies: '@commitlint/format': 19.5.0 '@commitlint/lint': 19.6.0 - '@commitlint/load': 19.6.1(@types/node@22.10.2)(typescript@5.7.2) + '@commitlint/load': 19.6.1(@types/node@22.10.7)(typescript@5.7.2) '@commitlint/read': 19.5.0 '@commitlint/types': 19.5.0 - tinyexec: 0.3.1 + tinyexec: 0.3.2 yargs: 17.7.2 transitivePeerDependencies: - '@types/node' @@ -11673,7 +11614,7 @@ snapshots: '@commitlint/rules': 19.6.0 '@commitlint/types': 19.5.0 - '@commitlint/load@19.6.1(@types/node@22.10.2)(typescript@5.7.2)': + '@commitlint/load@19.6.1(@types/node@22.10.7)(typescript@5.7.2)': dependencies: '@commitlint/config-validator': 19.5.0 '@commitlint/execute-rule': 19.5.0 @@ -11681,7 +11622,7 @@ snapshots: '@commitlint/types': 19.5.0 chalk: 5.4.1 cosmiconfig: 9.0.0(typescript@5.7.2) - cosmiconfig-typescript-loader: 6.1.0(@types/node@22.10.2)(cosmiconfig@9.0.0(typescript@5.7.2))(typescript@5.7.2) + cosmiconfig-typescript-loader: 6.1.0(@types/node@22.10.7)(cosmiconfig@9.0.0(typescript@5.7.2))(typescript@5.7.2) lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 @@ -11703,7 +11644,7 @@ snapshots: '@commitlint/types': 19.5.0 git-raw-commits: 4.0.0 minimist: 1.2.8 - tinyexec: 0.3.1 + tinyexec: 0.3.2 '@commitlint/resolve-extends@19.5.0': dependencies: @@ -12181,30 +12122,30 @@ snapshots: lodash.isundefined: 3.0.1 lodash.uniq: 4.5.0 - '@floating-ui/core@1.6.8': + '@floating-ui/core@1.6.9': dependencies: - '@floating-ui/utils': 0.2.8 + '@floating-ui/utils': 0.2.9 - '@floating-ui/dom@1.6.11': + '@floating-ui/dom@1.6.13': dependencies: - '@floating-ui/core': 1.6.8 - '@floating-ui/utils': 0.2.8 + '@floating-ui/core': 1.6.9 + '@floating-ui/utils': 0.2.9 '@floating-ui/react-dom@2.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@floating-ui/dom': 1.6.11 + '@floating-ui/dom': 1.6.13 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@floating-ui/react@0.26.24(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@floating-ui/react@0.26.28(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@floating-ui/react-dom': 2.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@floating-ui/utils': 0.2.8 + '@floating-ui/utils': 0.2.9 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) tabbable: 6.2.0 - '@floating-ui/utils@0.2.8': {} + '@floating-ui/utils@0.2.9': {} '@fortawesome/fontawesome-common-types@6.7.1': {} @@ -12259,7 +12200,7 @@ snapshots: '@ibm-cloud/watsonx-ai@1.3.0': dependencies: - '@types/node': 18.19.71 + '@types/node': 18.19.74 extend: 3.0.2 ibm-cloud-sdk-core: 5.1.0 transitivePeerDependencies: @@ -12353,11 +12294,11 @@ snapshots: '@istanbuljs/schema@0.1.3': {} - '@joshwooding/vite-plugin-react-docgen-typescript@0.4.2(typescript@5.7.2)(vite@6.0.9(@types/node@22.10.2)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1))': + '@joshwooding/vite-plugin-react-docgen-typescript@0.4.2(typescript@5.7.2)(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1))': dependencies: magic-string: 0.27.0 react-docgen-typescript: 2.2.2(typescript@5.7.2) - vite: 6.0.9(@types/node@22.10.2)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) + vite: 6.0.11(@types/node@22.10.7)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) optionalDependencies: typescript: 5.7.2 @@ -12407,7 +12348,7 @@ snapshots: - encoding optional: true - '@langchain/community@0.3.24(@aws-crypto/sha256-js@5.2.0)(@aws-sdk/client-s3@3.726.1)(@aws-sdk/credential-provider-node@3.726.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.1))(@aws-sdk/client-sts@3.726.1))(@browserbasehq/sdk@2.0.0)(@browserbasehq/stagehand@1.5.0(@playwright/test@1.49.0)(deepmerge@4.3.1)(dotenv@16.4.7)(openai@4.78.1(zod@3.24.1))(zod@3.24.1))(@ibm-cloud/watsonx-ai@1.3.0)(@langchain/anthropic@0.3.8(@langchain/core@0.3.30(openai@4.78.1(zod@3.24.1))))(@langchain/core@0.3.30(openai@4.78.1(zod@3.24.1)))(@smithy/util-utf8@2.3.0)(axios@1.7.9)(cheerio@1.0.0)(fast-xml-parser@4.5.1)(handlebars@4.7.8)(ibm-cloud-sdk-core@5.1.0)(ignore@5.3.2)(ioredis@5.4.2)(jsdom@26.0.0(canvas@3.0.1))(jsonwebtoken@9.0.2)(lodash@4.17.21)(openai@4.78.1(zod@3.24.1))(pdf-parse@1.1.1)(pg@8.13.1)(playwright@1.49.0)(typeorm@0.3.20(ioredis@5.4.2)(pg@8.13.1))(ws@8.18.0)': + '@langchain/community@0.3.24(@aws-crypto/sha256-js@5.2.0)(@aws-sdk/client-s3@3.732.0)(@aws-sdk/credential-provider-node@3.731.1)(@browserbasehq/sdk@2.0.0)(@browserbasehq/stagehand@1.5.0(@playwright/test@1.49.0)(deepmerge@4.3.1)(dotenv@16.4.7)(openai@4.78.1(zod@3.24.1))(zod@3.24.1))(@ibm-cloud/watsonx-ai@1.3.0)(@langchain/anthropic@0.3.8(@langchain/core@0.3.30(openai@4.78.1(zod@3.24.1))))(@langchain/core@0.3.30(openai@4.78.1(zod@3.24.1)))(@smithy/util-utf8@2.3.0)(axios@1.7.9)(cheerio@1.0.0)(fast-xml-parser@4.5.1)(handlebars@4.7.8)(ibm-cloud-sdk-core@5.1.0)(ignore@5.3.2)(ioredis@5.4.2)(jsdom@26.0.0(canvas@3.0.1))(jsonwebtoken@9.0.2)(lodash@4.17.21)(openai@4.78.1(zod@3.24.1))(pdf-parse@1.1.1)(pg@8.13.1)(playwright@1.49.0)(typeorm@0.3.20(ioredis@5.4.2)(pg@8.13.1))(ws@8.18.0)': dependencies: '@browserbasehq/stagehand': 1.5.0(@playwright/test@1.49.0)(deepmerge@4.3.1)(dotenv@16.4.7)(openai@4.78.1(zod@3.24.1))(zod@3.24.1) '@ibm-cloud/watsonx-ai': 1.3.0 @@ -12426,8 +12367,8 @@ snapshots: zod-to-json-schema: 3.24.1(zod@3.24.1) optionalDependencies: '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/client-s3': 3.726.1 - '@aws-sdk/credential-provider-node': 3.726.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.1))(@aws-sdk/client-sts@3.726.1) + '@aws-sdk/client-s3': 3.732.0 + '@aws-sdk/credential-provider-node': 3.731.1 '@browserbasehq/sdk': 2.0.0 '@smithy/util-utf8': 2.3.0 cheerio: 1.0.0 @@ -12526,21 +12467,21 @@ snapshots: '@lifeomic/attempt@3.1.0': {} - '@mantine/core@7.13.2(@mantine/hooks@7.13.2(react@18.3.1))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@mantine/core@7.16.1(@mantine/hooks@7.16.1(react@18.3.1))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@floating-ui/react': 0.26.24(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mantine/hooks': 7.13.2(react@18.3.1) + '@floating-ui/react': 0.26.28(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mantine/hooks': 7.16.1(react@18.3.1) clsx: 2.1.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - react-number-format: 5.4.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react-remove-scroll: 2.6.0(@types/react@18.3.18)(react@18.3.1) - react-textarea-autosize: 8.5.3(@types/react@18.3.18)(react@18.3.1) - type-fest: 4.26.1 + react-number-format: 5.4.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-remove-scroll: 2.6.3(@types/react@18.3.18)(react@18.3.1) + react-textarea-autosize: 8.5.6(@types/react@18.3.18)(react@18.3.1) + type-fest: 4.33.0 transitivePeerDependencies: - '@types/react' - '@mantine/hooks@7.13.2(react@18.3.1)': + '@mantine/hooks@7.16.1(react@18.3.1)': dependencies: react: 18.3.1 @@ -12702,13 +12643,13 @@ snapshots: optionalDependencies: '@types/react': 18.3.18 - '@mui/x-data-grid@7.23.6(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@mui/material@5.16.14(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mui/system@5.16.14(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@mui/x-data-grid@7.24.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@mui/material@5.16.14(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mui/system@5.16.14(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.26.0 '@mui/material': 5.16.14(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/system': 5.16.14(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1) '@mui/utils': 6.3.1(@types/react@18.3.18)(react@18.3.1) - '@mui/x-internals': 7.23.6(@types/react@18.3.18)(react@18.3.1) + '@mui/x-internals': 7.24.0(@types/react@18.3.18)(react@18.3.1) clsx: 2.1.1 prop-types: 15.8.1 react: 18.3.1 @@ -12720,7 +12661,7 @@ snapshots: transitivePeerDependencies: - '@types/react' - '@mui/x-internals@7.23.6(@types/react@18.3.18)(react@18.3.1)': + '@mui/x-internals@7.24.0(@types/react@18.3.18)(react@18.3.1)': dependencies: '@babel/runtime': 7.26.0 '@mui/utils': 6.3.1(@types/react@18.3.18)(react@18.3.1) @@ -12972,152 +12913,103 @@ snapshots: optionalDependencies: rollup: 4.31.0 - '@rollup/rollup-android-arm-eabi@4.28.1': - optional: true - '@rollup/rollup-android-arm-eabi@4.31.0': optional: true - '@rollup/rollup-android-arm64@4.28.1': - optional: true - '@rollup/rollup-android-arm64@4.31.0': optional: true - '@rollup/rollup-darwin-arm64@4.28.1': - optional: true - '@rollup/rollup-darwin-arm64@4.31.0': optional: true - '@rollup/rollup-darwin-x64@4.28.1': - optional: true - '@rollup/rollup-darwin-x64@4.31.0': optional: true - '@rollup/rollup-freebsd-arm64@4.28.1': - optional: true - '@rollup/rollup-freebsd-arm64@4.31.0': optional: true - '@rollup/rollup-freebsd-x64@4.28.1': - optional: true - '@rollup/rollup-freebsd-x64@4.31.0': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.28.1': - optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.31.0': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.28.1': - optional: true - '@rollup/rollup-linux-arm-musleabihf@4.31.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.28.1': - optional: true - '@rollup/rollup-linux-arm64-gnu@4.31.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.28.1': - optional: true - '@rollup/rollup-linux-arm64-musl@4.31.0': optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.28.1': - optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.31.0': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.28.1': - optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.31.0': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.28.1': - optional: true - '@rollup/rollup-linux-riscv64-gnu@4.31.0': optional: true - '@rollup/rollup-linux-s390x-gnu@4.28.1': - optional: true - '@rollup/rollup-linux-s390x-gnu@4.31.0': optional: true - '@rollup/rollup-linux-x64-gnu@4.28.1': - optional: true - '@rollup/rollup-linux-x64-gnu@4.31.0': optional: true - '@rollup/rollup-linux-x64-musl@4.28.1': - optional: true - '@rollup/rollup-linux-x64-musl@4.31.0': optional: true - '@rollup/rollup-win32-arm64-msvc@4.28.1': - optional: true - '@rollup/rollup-win32-arm64-msvc@4.31.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.28.1': - optional: true - '@rollup/rollup-win32-ia32-msvc@4.31.0': optional: true - '@rollup/rollup-win32-x64-msvc@4.28.1': - optional: true - '@rollup/rollup-win32-x64-msvc@4.31.0': optional: true '@rtsao/scc@1.1.0': {} - '@shikijs/core@1.23.1': + '@shikijs/core@1.29.1': dependencies: - '@shikijs/engine-javascript': 1.23.1 - '@shikijs/engine-oniguruma': 1.23.1 - '@shikijs/types': 1.23.1 - '@shikijs/vscode-textmate': 9.3.0 + '@shikijs/engine-javascript': 1.29.1 + '@shikijs/engine-oniguruma': 1.29.1 + '@shikijs/types': 1.29.1 + '@shikijs/vscode-textmate': 10.0.1 '@types/hast': 3.0.4 - hast-util-to-html: 9.0.3 + hast-util-to-html: 9.0.4 - '@shikijs/engine-javascript@1.23.1': + '@shikijs/engine-javascript@1.29.1': dependencies: - '@shikijs/types': 1.23.1 - '@shikijs/vscode-textmate': 9.3.0 - oniguruma-to-es: 0.4.1 + '@shikijs/types': 1.29.1 + '@shikijs/vscode-textmate': 10.0.1 + oniguruma-to-es: 2.3.0 - '@shikijs/engine-oniguruma@1.23.1': + '@shikijs/engine-oniguruma@1.29.1': dependencies: - '@shikijs/types': 1.23.1 - '@shikijs/vscode-textmate': 9.3.0 + '@shikijs/types': 1.29.1 + '@shikijs/vscode-textmate': 10.0.1 - '@shikijs/types@1.23.1': + '@shikijs/langs@1.29.1': dependencies: - '@shikijs/vscode-textmate': 9.3.0 + '@shikijs/types': 1.29.1 + + '@shikijs/themes@1.29.1': + dependencies: + '@shikijs/types': 1.29.1 + + '@shikijs/types@1.29.1': + dependencies: + '@shikijs/vscode-textmate': 10.0.1 '@types/hast': 3.0.4 - '@shikijs/vscode-textmate@9.3.0': {} + '@shikijs/vscode-textmate@10.0.1': {} - '@smithy/abort-controller@4.0.0': + '@smithy/abort-controller@4.0.1': dependencies: - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 tslib: 2.8.1 '@smithy/chunked-blob-reader-native@4.0.0': @@ -13129,94 +13021,94 @@ snapshots: dependencies: tslib: 2.8.1 - '@smithy/config-resolver@4.0.0': + '@smithy/config-resolver@4.0.1': dependencies: - '@smithy/node-config-provider': 4.0.0 - '@smithy/types': 4.0.0 + '@smithy/node-config-provider': 4.0.1 + '@smithy/types': 4.1.0 '@smithy/util-config-provider': 4.0.0 - '@smithy/util-middleware': 4.0.0 + '@smithy/util-middleware': 4.0.1 tslib: 2.8.1 - '@smithy/core@3.0.0': + '@smithy/core@3.1.1': dependencies: - '@smithy/middleware-serde': 4.0.0 - '@smithy/protocol-http': 5.0.0 - '@smithy/types': 4.0.0 + '@smithy/middleware-serde': 4.0.1 + '@smithy/protocol-http': 5.0.1 + '@smithy/types': 4.1.0 '@smithy/util-body-length-browser': 4.0.0 - '@smithy/util-middleware': 4.0.0 - '@smithy/util-stream': 4.0.0 + '@smithy/util-middleware': 4.0.1 + '@smithy/util-stream': 4.0.2 '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 - '@smithy/credential-provider-imds@4.0.0': + '@smithy/credential-provider-imds@4.0.1': dependencies: - '@smithy/node-config-provider': 4.0.0 - '@smithy/property-provider': 4.0.0 - '@smithy/types': 4.0.0 - '@smithy/url-parser': 4.0.0 + '@smithy/node-config-provider': 4.0.1 + '@smithy/property-provider': 4.0.1 + '@smithy/types': 4.1.0 + '@smithy/url-parser': 4.0.1 tslib: 2.8.1 - '@smithy/eventstream-codec@4.0.0': + '@smithy/eventstream-codec@4.0.1': dependencies: '@aws-crypto/crc32': 5.2.0 - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 '@smithy/util-hex-encoding': 4.0.0 tslib: 2.8.1 - '@smithy/eventstream-serde-browser@4.0.0': + '@smithy/eventstream-serde-browser@4.0.1': dependencies: - '@smithy/eventstream-serde-universal': 4.0.0 - '@smithy/types': 4.0.0 + '@smithy/eventstream-serde-universal': 4.0.1 + '@smithy/types': 4.1.0 tslib: 2.8.1 - '@smithy/eventstream-serde-config-resolver@4.0.0': + '@smithy/eventstream-serde-config-resolver@4.0.1': dependencies: - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 tslib: 2.8.1 - '@smithy/eventstream-serde-node@4.0.0': + '@smithy/eventstream-serde-node@4.0.1': dependencies: - '@smithy/eventstream-serde-universal': 4.0.0 - '@smithy/types': 4.0.0 + '@smithy/eventstream-serde-universal': 4.0.1 + '@smithy/types': 4.1.0 tslib: 2.8.1 - '@smithy/eventstream-serde-universal@4.0.0': + '@smithy/eventstream-serde-universal@4.0.1': dependencies: - '@smithy/eventstream-codec': 4.0.0 - '@smithy/types': 4.0.0 + '@smithy/eventstream-codec': 4.0.1 + '@smithy/types': 4.1.0 tslib: 2.8.1 - '@smithy/fetch-http-handler@5.0.0': + '@smithy/fetch-http-handler@5.0.1': dependencies: - '@smithy/protocol-http': 5.0.0 - '@smithy/querystring-builder': 4.0.0 - '@smithy/types': 4.0.0 + '@smithy/protocol-http': 5.0.1 + '@smithy/querystring-builder': 4.0.1 + '@smithy/types': 4.1.0 '@smithy/util-base64': 4.0.0 tslib: 2.8.1 - '@smithy/hash-blob-browser@4.0.0': + '@smithy/hash-blob-browser@4.0.1': dependencies: '@smithy/chunked-blob-reader': 5.0.0 '@smithy/chunked-blob-reader-native': 4.0.0 - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 tslib: 2.8.1 - '@smithy/hash-node@4.0.0': + '@smithy/hash-node@4.0.1': dependencies: - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 '@smithy/util-buffer-from': 4.0.0 '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 - '@smithy/hash-stream-node@4.0.0': + '@smithy/hash-stream-node@4.0.1': dependencies: - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 - '@smithy/invalid-dependency@4.0.0': + '@smithy/invalid-dependency@4.0.1': dependencies: - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 tslib: 2.8.1 '@smithy/is-array-buffer@2.2.0': @@ -13227,125 +13119,125 @@ snapshots: dependencies: tslib: 2.8.1 - '@smithy/md5-js@4.0.0': + '@smithy/md5-js@4.0.1': dependencies: - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 - '@smithy/middleware-content-length@4.0.0': + '@smithy/middleware-content-length@4.0.1': dependencies: - '@smithy/protocol-http': 5.0.0 - '@smithy/types': 4.0.0 + '@smithy/protocol-http': 5.0.1 + '@smithy/types': 4.1.0 tslib: 2.8.1 - '@smithy/middleware-endpoint@4.0.0': + '@smithy/middleware-endpoint@4.0.2': dependencies: - '@smithy/core': 3.0.0 - '@smithy/middleware-serde': 4.0.0 - '@smithy/node-config-provider': 4.0.0 - '@smithy/shared-ini-file-loader': 4.0.0 - '@smithy/types': 4.0.0 - '@smithy/url-parser': 4.0.0 - '@smithy/util-middleware': 4.0.0 + '@smithy/core': 3.1.1 + '@smithy/middleware-serde': 4.0.1 + '@smithy/node-config-provider': 4.0.1 + '@smithy/shared-ini-file-loader': 4.0.1 + '@smithy/types': 4.1.0 + '@smithy/url-parser': 4.0.1 + '@smithy/util-middleware': 4.0.1 tslib: 2.8.1 - '@smithy/middleware-retry@4.0.0': + '@smithy/middleware-retry@4.0.3': dependencies: - '@smithy/node-config-provider': 4.0.0 - '@smithy/protocol-http': 5.0.0 - '@smithy/service-error-classification': 4.0.0 - '@smithy/smithy-client': 4.0.0 - '@smithy/types': 4.0.0 - '@smithy/util-middleware': 4.0.0 - '@smithy/util-retry': 4.0.0 + '@smithy/node-config-provider': 4.0.1 + '@smithy/protocol-http': 5.0.1 + '@smithy/service-error-classification': 4.0.1 + '@smithy/smithy-client': 4.1.2 + '@smithy/types': 4.1.0 + '@smithy/util-middleware': 4.0.1 + '@smithy/util-retry': 4.0.1 tslib: 2.8.1 uuid: 9.0.1 - '@smithy/middleware-serde@4.0.0': + '@smithy/middleware-serde@4.0.1': dependencies: - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 tslib: 2.8.1 - '@smithy/middleware-stack@4.0.0': + '@smithy/middleware-stack@4.0.1': dependencies: - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 tslib: 2.8.1 - '@smithy/node-config-provider@4.0.0': + '@smithy/node-config-provider@4.0.1': dependencies: - '@smithy/property-provider': 4.0.0 - '@smithy/shared-ini-file-loader': 4.0.0 - '@smithy/types': 4.0.0 + '@smithy/property-provider': 4.0.1 + '@smithy/shared-ini-file-loader': 4.0.1 + '@smithy/types': 4.1.0 tslib: 2.8.1 - '@smithy/node-http-handler@4.0.0': + '@smithy/node-http-handler@4.0.2': dependencies: - '@smithy/abort-controller': 4.0.0 - '@smithy/protocol-http': 5.0.0 - '@smithy/querystring-builder': 4.0.0 - '@smithy/types': 4.0.0 + '@smithy/abort-controller': 4.0.1 + '@smithy/protocol-http': 5.0.1 + '@smithy/querystring-builder': 4.0.1 + '@smithy/types': 4.1.0 tslib: 2.8.1 - '@smithy/property-provider@4.0.0': + '@smithy/property-provider@4.0.1': dependencies: - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 tslib: 2.8.1 - '@smithy/protocol-http@5.0.0': + '@smithy/protocol-http@5.0.1': dependencies: - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 tslib: 2.8.1 - '@smithy/querystring-builder@4.0.0': + '@smithy/querystring-builder@4.0.1': dependencies: - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 '@smithy/util-uri-escape': 4.0.0 tslib: 2.8.1 - '@smithy/querystring-parser@4.0.0': + '@smithy/querystring-parser@4.0.1': dependencies: - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 tslib: 2.8.1 - '@smithy/service-error-classification@4.0.0': + '@smithy/service-error-classification@4.0.1': dependencies: - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 - '@smithy/shared-ini-file-loader@4.0.0': + '@smithy/shared-ini-file-loader@4.0.1': dependencies: - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 tslib: 2.8.1 - '@smithy/signature-v4@5.0.0': + '@smithy/signature-v4@5.0.1': dependencies: '@smithy/is-array-buffer': 4.0.0 - '@smithy/protocol-http': 5.0.0 - '@smithy/types': 4.0.0 + '@smithy/protocol-http': 5.0.1 + '@smithy/types': 4.1.0 '@smithy/util-hex-encoding': 4.0.0 - '@smithy/util-middleware': 4.0.0 + '@smithy/util-middleware': 4.0.1 '@smithy/util-uri-escape': 4.0.0 '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 - '@smithy/smithy-client@4.0.0': + '@smithy/smithy-client@4.1.2': dependencies: - '@smithy/core': 3.0.0 - '@smithy/middleware-endpoint': 4.0.0 - '@smithy/middleware-stack': 4.0.0 - '@smithy/protocol-http': 5.0.0 - '@smithy/types': 4.0.0 - '@smithy/util-stream': 4.0.0 + '@smithy/core': 3.1.1 + '@smithy/middleware-endpoint': 4.0.2 + '@smithy/middleware-stack': 4.0.1 + '@smithy/protocol-http': 5.0.1 + '@smithy/types': 4.1.0 + '@smithy/util-stream': 4.0.2 tslib: 2.8.1 - '@smithy/types@4.0.0': + '@smithy/types@4.1.0': dependencies: tslib: 2.8.1 - '@smithy/url-parser@4.0.0': + '@smithy/url-parser@4.0.1': dependencies: - '@smithy/querystring-parser': 4.0.0 - '@smithy/types': 4.0.0 + '@smithy/querystring-parser': 4.0.1 + '@smithy/types': 4.1.0 tslib: 2.8.1 '@smithy/util-base64@4.0.0': @@ -13376,50 +13268,50 @@ snapshots: dependencies: tslib: 2.8.1 - '@smithy/util-defaults-mode-browser@4.0.0': + '@smithy/util-defaults-mode-browser@4.0.3': dependencies: - '@smithy/property-provider': 4.0.0 - '@smithy/smithy-client': 4.0.0 - '@smithy/types': 4.0.0 + '@smithy/property-provider': 4.0.1 + '@smithy/smithy-client': 4.1.2 + '@smithy/types': 4.1.0 bowser: 2.11.0 tslib: 2.8.1 - '@smithy/util-defaults-mode-node@4.0.0': + '@smithy/util-defaults-mode-node@4.0.3': dependencies: - '@smithy/config-resolver': 4.0.0 - '@smithy/credential-provider-imds': 4.0.0 - '@smithy/node-config-provider': 4.0.0 - '@smithy/property-provider': 4.0.0 - '@smithy/smithy-client': 4.0.0 - '@smithy/types': 4.0.0 + '@smithy/config-resolver': 4.0.1 + '@smithy/credential-provider-imds': 4.0.1 + '@smithy/node-config-provider': 4.0.1 + '@smithy/property-provider': 4.0.1 + '@smithy/smithy-client': 4.1.2 + '@smithy/types': 4.1.0 tslib: 2.8.1 - '@smithy/util-endpoints@3.0.0': + '@smithy/util-endpoints@3.0.1': dependencies: - '@smithy/node-config-provider': 4.0.0 - '@smithy/types': 4.0.0 + '@smithy/node-config-provider': 4.0.1 + '@smithy/types': 4.1.0 tslib: 2.8.1 '@smithy/util-hex-encoding@4.0.0': dependencies: tslib: 2.8.1 - '@smithy/util-middleware@4.0.0': + '@smithy/util-middleware@4.0.1': dependencies: - '@smithy/types': 4.0.0 + '@smithy/types': 4.1.0 tslib: 2.8.1 - '@smithy/util-retry@4.0.0': + '@smithy/util-retry@4.0.1': dependencies: - '@smithy/service-error-classification': 4.0.0 - '@smithy/types': 4.0.0 + '@smithy/service-error-classification': 4.0.1 + '@smithy/types': 4.1.0 tslib: 2.8.1 - '@smithy/util-stream@4.0.0': + '@smithy/util-stream@4.0.2': dependencies: - '@smithy/fetch-http-handler': 5.0.0 - '@smithy/node-http-handler': 4.0.0 - '@smithy/types': 4.0.0 + '@smithy/fetch-http-handler': 5.0.1 + '@smithy/node-http-handler': 4.0.2 + '@smithy/types': 4.1.0 '@smithy/util-base64': 4.0.0 '@smithy/util-buffer-from': 4.0.0 '@smithy/util-hex-encoding': 4.0.0 @@ -13440,10 +13332,10 @@ snapshots: '@smithy/util-buffer-from': 4.0.0 tslib: 2.8.1 - '@smithy/util-waiter@4.0.0': + '@smithy/util-waiter@4.0.2': dependencies: - '@smithy/abort-controller': 4.0.0 - '@smithy/types': 4.0.0 + '@smithy/abort-controller': 4.0.1 + '@smithy/types': 4.1.0 tslib: 2.8.1 '@snyk/github-codeowners@1.1.0': @@ -13456,125 +13348,125 @@ snapshots: '@sqltools/formatter@1.2.5': {} - '@storybook/addon-actions@8.4.7(storybook@8.4.7(prettier@3.4.2))': + '@storybook/addon-actions@8.5.0(storybook@8.5.0(prettier@3.4.2))': dependencies: '@storybook/global': 5.0.0 '@types/uuid': 9.0.8 dequal: 2.0.3 polished: 4.3.1 - storybook: 8.4.7(prettier@3.4.2) + storybook: 8.5.0(prettier@3.4.2) uuid: 9.0.1 - '@storybook/addon-backgrounds@8.4.7(storybook@8.4.7(prettier@3.4.2))': + '@storybook/addon-backgrounds@8.5.0(storybook@8.5.0(prettier@3.4.2))': dependencies: '@storybook/global': 5.0.0 memoizerific: 1.11.3 - storybook: 8.4.7(prettier@3.4.2) + storybook: 8.5.0(prettier@3.4.2) ts-dedent: 2.2.0 - '@storybook/addon-controls@8.4.7(storybook@8.4.7(prettier@3.4.2))': + '@storybook/addon-controls@8.5.0(storybook@8.5.0(prettier@3.4.2))': dependencies: '@storybook/global': 5.0.0 dequal: 2.0.3 - storybook: 8.4.7(prettier@3.4.2) + storybook: 8.5.0(prettier@3.4.2) ts-dedent: 2.2.0 - '@storybook/addon-docs@8.4.7(@types/react@18.3.18)(storybook@8.4.7(prettier@3.4.2))': + '@storybook/addon-docs@8.5.0(@types/react@18.3.18)(storybook@8.5.0(prettier@3.4.2))': dependencies: '@mdx-js/react': 3.1.0(@types/react@18.3.18)(react@18.3.1) - '@storybook/blocks': 8.4.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.7(prettier@3.4.2)) - '@storybook/csf-plugin': 8.4.7(storybook@8.4.7(prettier@3.4.2)) - '@storybook/react-dom-shim': 8.4.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.7(prettier@3.4.2)) + '@storybook/blocks': 8.5.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.5.0(prettier@3.4.2)) + '@storybook/csf-plugin': 8.5.0(storybook@8.5.0(prettier@3.4.2)) + '@storybook/react-dom-shim': 8.5.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.5.0(prettier@3.4.2)) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - storybook: 8.4.7(prettier@3.4.2) + storybook: 8.5.0(prettier@3.4.2) ts-dedent: 2.2.0 transitivePeerDependencies: - '@types/react' - '@storybook/addon-essentials@8.4.7(@types/react@18.3.18)(storybook@8.4.7(prettier@3.4.2))': - dependencies: - '@storybook/addon-actions': 8.4.7(storybook@8.4.7(prettier@3.4.2)) - '@storybook/addon-backgrounds': 8.4.7(storybook@8.4.7(prettier@3.4.2)) - '@storybook/addon-controls': 8.4.7(storybook@8.4.7(prettier@3.4.2)) - '@storybook/addon-docs': 8.4.7(@types/react@18.3.18)(storybook@8.4.7(prettier@3.4.2)) - '@storybook/addon-highlight': 8.4.7(storybook@8.4.7(prettier@3.4.2)) - '@storybook/addon-measure': 8.4.7(storybook@8.4.7(prettier@3.4.2)) - '@storybook/addon-outline': 8.4.7(storybook@8.4.7(prettier@3.4.2)) - '@storybook/addon-toolbars': 8.4.7(storybook@8.4.7(prettier@3.4.2)) - '@storybook/addon-viewport': 8.4.7(storybook@8.4.7(prettier@3.4.2)) - storybook: 8.4.7(prettier@3.4.2) + '@storybook/addon-essentials@8.5.0(@types/react@18.3.18)(storybook@8.5.0(prettier@3.4.2))': + dependencies: + '@storybook/addon-actions': 8.5.0(storybook@8.5.0(prettier@3.4.2)) + '@storybook/addon-backgrounds': 8.5.0(storybook@8.5.0(prettier@3.4.2)) + '@storybook/addon-controls': 8.5.0(storybook@8.5.0(prettier@3.4.2)) + '@storybook/addon-docs': 8.5.0(@types/react@18.3.18)(storybook@8.5.0(prettier@3.4.2)) + '@storybook/addon-highlight': 8.5.0(storybook@8.5.0(prettier@3.4.2)) + '@storybook/addon-measure': 8.5.0(storybook@8.5.0(prettier@3.4.2)) + '@storybook/addon-outline': 8.5.0(storybook@8.5.0(prettier@3.4.2)) + '@storybook/addon-toolbars': 8.5.0(storybook@8.5.0(prettier@3.4.2)) + '@storybook/addon-viewport': 8.5.0(storybook@8.5.0(prettier@3.4.2)) + storybook: 8.5.0(prettier@3.4.2) ts-dedent: 2.2.0 transitivePeerDependencies: - '@types/react' - '@storybook/addon-highlight@8.4.7(storybook@8.4.7(prettier@3.4.2))': + '@storybook/addon-highlight@8.5.0(storybook@8.5.0(prettier@3.4.2))': dependencies: '@storybook/global': 5.0.0 - storybook: 8.4.7(prettier@3.4.2) + storybook: 8.5.0(prettier@3.4.2) - '@storybook/addon-interactions@8.4.7(storybook@8.4.7(prettier@3.4.2))': + '@storybook/addon-interactions@8.5.0(storybook@8.5.0(prettier@3.4.2))': dependencies: '@storybook/global': 5.0.0 - '@storybook/instrumenter': 8.4.7(storybook@8.4.7(prettier@3.4.2)) - '@storybook/test': 8.4.7(storybook@8.4.7(prettier@3.4.2)) + '@storybook/instrumenter': 8.5.0(storybook@8.5.0(prettier@3.4.2)) + '@storybook/test': 8.5.0(storybook@8.5.0(prettier@3.4.2)) polished: 4.3.1 - storybook: 8.4.7(prettier@3.4.2) + storybook: 8.5.0(prettier@3.4.2) ts-dedent: 2.2.0 - '@storybook/addon-links@8.4.7(react@18.3.1)(storybook@8.4.7(prettier@3.4.2))': + '@storybook/addon-links@8.5.0(react@18.3.1)(storybook@8.5.0(prettier@3.4.2))': dependencies: '@storybook/csf': 0.1.12 '@storybook/global': 5.0.0 - storybook: 8.4.7(prettier@3.4.2) + storybook: 8.5.0(prettier@3.4.2) ts-dedent: 2.2.0 optionalDependencies: react: 18.3.1 - '@storybook/addon-measure@8.4.7(storybook@8.4.7(prettier@3.4.2))': + '@storybook/addon-measure@8.5.0(storybook@8.5.0(prettier@3.4.2))': dependencies: '@storybook/global': 5.0.0 - storybook: 8.4.7(prettier@3.4.2) + storybook: 8.5.0(prettier@3.4.2) tiny-invariant: 1.3.3 - '@storybook/addon-outline@8.4.7(storybook@8.4.7(prettier@3.4.2))': + '@storybook/addon-outline@8.5.0(storybook@8.5.0(prettier@3.4.2))': dependencies: '@storybook/global': 5.0.0 - storybook: 8.4.7(prettier@3.4.2) + storybook: 8.5.0(prettier@3.4.2) ts-dedent: 2.2.0 - '@storybook/addon-toolbars@8.4.7(storybook@8.4.7(prettier@3.4.2))': + '@storybook/addon-toolbars@8.5.0(storybook@8.5.0(prettier@3.4.2))': dependencies: - storybook: 8.4.7(prettier@3.4.2) + storybook: 8.5.0(prettier@3.4.2) - '@storybook/addon-viewport@8.4.7(storybook@8.4.7(prettier@3.4.2))': + '@storybook/addon-viewport@8.5.0(storybook@8.5.0(prettier@3.4.2))': dependencies: memoizerific: 1.11.3 - storybook: 8.4.7(prettier@3.4.2) + storybook: 8.5.0(prettier@3.4.2) - '@storybook/blocks@8.4.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.7(prettier@3.4.2))': + '@storybook/blocks@8.5.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.5.0(prettier@3.4.2))': dependencies: '@storybook/csf': 0.1.12 '@storybook/icons': 1.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - storybook: 8.4.7(prettier@3.4.2) + storybook: 8.5.0(prettier@3.4.2) ts-dedent: 2.2.0 optionalDependencies: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@storybook/builder-vite@8.4.7(storybook@8.4.7(prettier@3.4.2))(vite@6.0.9(@types/node@22.10.2)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1))': + '@storybook/builder-vite@8.5.0(storybook@8.5.0(prettier@3.4.2))(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1))': dependencies: - '@storybook/csf-plugin': 8.4.7(storybook@8.4.7(prettier@3.4.2)) + '@storybook/csf-plugin': 8.5.0(storybook@8.5.0(prettier@3.4.2)) browser-assert: 1.2.1 - storybook: 8.4.7(prettier@3.4.2) + storybook: 8.5.0(prettier@3.4.2) ts-dedent: 2.2.0 - vite: 6.0.9(@types/node@22.10.2)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) + vite: 6.0.11(@types/node@22.10.7)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) - '@storybook/components@8.4.7(storybook@8.4.7(prettier@3.4.2))': + '@storybook/components@8.5.0(storybook@8.5.0(prettier@3.4.2))': dependencies: - storybook: 8.4.7(prettier@3.4.2) + storybook: 8.5.0(prettier@3.4.2) - '@storybook/core@8.4.7(prettier@3.4.2)': + '@storybook/core@8.5.0(prettier@3.4.2)': dependencies: '@storybook/csf': 0.1.12 better-opn: 3.0.2 @@ -13594,10 +13486,10 @@ snapshots: - supports-color - utf-8-validate - '@storybook/csf-plugin@8.4.7(storybook@8.4.7(prettier@3.4.2))': + '@storybook/csf-plugin@8.5.0(storybook@8.5.0(prettier@3.4.2))': dependencies: - storybook: 8.4.7(prettier@3.4.2) - unplugin: 1.16.0 + storybook: 8.5.0(prettier@3.4.2) + unplugin: 1.16.1 '@storybook/csf@0.1.12': dependencies: @@ -13610,95 +13502,89 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@storybook/instrumenter@8.4.7(storybook@8.4.7(prettier@3.4.2))': + '@storybook/instrumenter@8.5.0(storybook@8.5.0(prettier@3.4.2))': dependencies: '@storybook/global': 5.0.0 '@vitest/utils': 2.1.8 - storybook: 8.4.7(prettier@3.4.2) + storybook: 8.5.0(prettier@3.4.2) - '@storybook/manager-api@8.4.7(storybook@8.4.7(prettier@3.4.2))': + '@storybook/manager-api@8.5.0(storybook@8.5.0(prettier@3.4.2))': dependencies: - storybook: 8.4.7(prettier@3.4.2) + storybook: 8.5.0(prettier@3.4.2) - '@storybook/preview-api@8.4.7(storybook@8.4.7(prettier@3.4.2))': + '@storybook/preview-api@8.5.0(storybook@8.5.0(prettier@3.4.2))': dependencies: - storybook: 8.4.7(prettier@3.4.2) + storybook: 8.5.0(prettier@3.4.2) - '@storybook/react-dom-shim@8.4.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.7(prettier@3.4.2))': + '@storybook/react-dom-shim@8.5.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.5.0(prettier@3.4.2))': dependencies: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - storybook: 8.4.7(prettier@3.4.2) + storybook: 8.5.0(prettier@3.4.2) - '@storybook/react-vite@8.4.7(@storybook/test@8.4.7(storybook@8.4.7(prettier@3.4.2)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.31.0)(storybook@8.4.7(prettier@3.4.2))(typescript@5.7.2)(vite@6.0.9(@types/node@22.10.2)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1))': + '@storybook/react-vite@8.5.0(@storybook/test@8.5.0(storybook@8.5.0(prettier@3.4.2)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.31.0)(storybook@8.5.0(prettier@3.4.2))(typescript@5.7.2)(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1))': dependencies: - '@joshwooding/vite-plugin-react-docgen-typescript': 0.4.2(typescript@5.7.2)(vite@6.0.9(@types/node@22.10.2)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)) + '@joshwooding/vite-plugin-react-docgen-typescript': 0.4.2(typescript@5.7.2)(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)) '@rollup/pluginutils': 5.1.0(rollup@4.31.0) - '@storybook/builder-vite': 8.4.7(storybook@8.4.7(prettier@3.4.2))(vite@6.0.9(@types/node@22.10.2)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)) - '@storybook/react': 8.4.7(@storybook/test@8.4.7(storybook@8.4.7(prettier@3.4.2)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.7(prettier@3.4.2))(typescript@5.7.2) + '@storybook/builder-vite': 8.5.0(storybook@8.5.0(prettier@3.4.2))(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)) + '@storybook/react': 8.5.0(@storybook/test@8.5.0(storybook@8.5.0(prettier@3.4.2)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.5.0(prettier@3.4.2))(typescript@5.7.2) find-up: 5.0.0 - magic-string: 0.30.14 + magic-string: 0.30.17 react: 18.3.1 react-docgen: 7.0.3 react-dom: 18.3.1(react@18.3.1) resolve: 1.22.8 - storybook: 8.4.7(prettier@3.4.2) + storybook: 8.5.0(prettier@3.4.2) tsconfig-paths: 4.2.0 - vite: 6.0.9(@types/node@22.10.2)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) + vite: 6.0.11(@types/node@22.10.7)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) + optionalDependencies: + '@storybook/test': 8.5.0(storybook@8.5.0(prettier@3.4.2)) transitivePeerDependencies: - - '@storybook/test' - rollup - supports-color - typescript - '@storybook/react@8.4.7(@storybook/test@8.4.7(storybook@8.4.7(prettier@3.4.2)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.7(prettier@3.4.2))(typescript@5.7.2)': + '@storybook/react@8.5.0(@storybook/test@8.5.0(storybook@8.5.0(prettier@3.4.2)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.5.0(prettier@3.4.2))(typescript@5.7.2)': dependencies: - '@storybook/components': 8.4.7(storybook@8.4.7(prettier@3.4.2)) + '@storybook/components': 8.5.0(storybook@8.5.0(prettier@3.4.2)) '@storybook/global': 5.0.0 - '@storybook/manager-api': 8.4.7(storybook@8.4.7(prettier@3.4.2)) - '@storybook/preview-api': 8.4.7(storybook@8.4.7(prettier@3.4.2)) - '@storybook/react-dom-shim': 8.4.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.7(prettier@3.4.2)) - '@storybook/theming': 8.4.7(storybook@8.4.7(prettier@3.4.2)) + '@storybook/manager-api': 8.5.0(storybook@8.5.0(prettier@3.4.2)) + '@storybook/preview-api': 8.5.0(storybook@8.5.0(prettier@3.4.2)) + '@storybook/react-dom-shim': 8.5.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.5.0(prettier@3.4.2)) + '@storybook/theming': 8.5.0(storybook@8.5.0(prettier@3.4.2)) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - storybook: 8.4.7(prettier@3.4.2) + storybook: 8.5.0(prettier@3.4.2) optionalDependencies: - '@storybook/test': 8.4.7(storybook@8.4.7(prettier@3.4.2)) + '@storybook/test': 8.5.0(storybook@8.5.0(prettier@3.4.2)) typescript: 5.7.2 - '@storybook/test@8.4.7(storybook@8.4.7(prettier@3.4.2))': + '@storybook/test@8.5.0(storybook@8.5.0(prettier@3.4.2))': dependencies: '@storybook/csf': 0.1.12 '@storybook/global': 5.0.0 - '@storybook/instrumenter': 8.4.7(storybook@8.4.7(prettier@3.4.2)) + '@storybook/instrumenter': 8.5.0(storybook@8.5.0(prettier@3.4.2)) '@testing-library/dom': 10.4.0 '@testing-library/jest-dom': 6.5.0 '@testing-library/user-event': 14.5.2(@testing-library/dom@10.4.0) '@vitest/expect': 2.0.5 '@vitest/spy': 2.0.5 - storybook: 8.4.7(prettier@3.4.2) + storybook: 8.5.0(prettier@3.4.2) - '@storybook/theming@8.4.7(storybook@8.4.7(prettier@3.4.2))': + '@storybook/theming@8.5.0(storybook@8.5.0(prettier@3.4.2))': dependencies: - storybook: 8.4.7(prettier@3.4.2) + storybook: 8.5.0(prettier@3.4.2) '@tanstack/eslint-plugin-query@5.62.16(eslint@9.18.0(jiti@2.4.1))(typescript@5.7.2)': dependencies: - '@typescript-eslint/utils': 8.19.1(eslint@9.18.0(jiti@2.4.1))(typescript@5.7.2) + '@typescript-eslint/utils': 8.20.0(eslint@9.18.0(jiti@2.4.1))(typescript@5.7.2) eslint: 9.18.0(jiti@2.4.1) transitivePeerDependencies: - supports-color - typescript - '@tanstack/query-core@5.64.0': {} - '@tanstack/query-core@5.64.1': {} - '@tanstack/react-query@5.64.0(react@18.3.1)': - dependencies: - '@tanstack/query-core': 5.64.0 - react: 18.3.1 - '@tanstack/react-query@5.64.1(react@18.3.1)': dependencies: '@tanstack/query-core': 5.64.1 @@ -13729,99 +13615,99 @@ snapshots: dependencies: '@testing-library/dom': 10.4.0 - '@tiptap/core@2.8.0(@tiptap/pm@2.10.3)': + '@tiptap/core@2.11.3(@tiptap/pm@2.11.3)': dependencies: - '@tiptap/pm': 2.10.3 + '@tiptap/pm': 2.11.3 - '@tiptap/extension-bold@2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.10.3))': + '@tiptap/extension-bold@2.11.3(@tiptap/core@2.11.3(@tiptap/pm@2.11.3))': dependencies: - '@tiptap/core': 2.8.0(@tiptap/pm@2.10.3) + '@tiptap/core': 2.11.3(@tiptap/pm@2.11.3) - '@tiptap/extension-bubble-menu@2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.10.3))(@tiptap/pm@2.10.3)': + '@tiptap/extension-bubble-menu@2.11.3(@tiptap/core@2.11.3(@tiptap/pm@2.11.3))(@tiptap/pm@2.11.3)': dependencies: - '@tiptap/core': 2.8.0(@tiptap/pm@2.10.3) - '@tiptap/pm': 2.10.3 + '@tiptap/core': 2.11.3(@tiptap/pm@2.11.3) + '@tiptap/pm': 2.11.3 tippy.js: 6.3.7 - '@tiptap/extension-code@2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.10.3))': + '@tiptap/extension-code@2.11.3(@tiptap/core@2.11.3(@tiptap/pm@2.11.3))': dependencies: - '@tiptap/core': 2.8.0(@tiptap/pm@2.10.3) + '@tiptap/core': 2.11.3(@tiptap/pm@2.11.3) - '@tiptap/extension-collaboration-cursor@2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.10.3))(y-prosemirror@1.2.13(prosemirror-model@1.24.0)(prosemirror-state@1.4.3)(prosemirror-view@1.37.0)(y-protocols@1.0.6(yjs@13.6.19))(yjs@13.6.19))': + '@tiptap/extension-collaboration-cursor@2.11.3(@tiptap/core@2.11.3(@tiptap/pm@2.11.3))(y-prosemirror@1.2.13(prosemirror-model@1.24.1)(prosemirror-state@1.4.3)(prosemirror-view@1.37.2)(y-protocols@1.0.6(yjs@13.6.23))(yjs@13.6.23))': dependencies: - '@tiptap/core': 2.8.0(@tiptap/pm@2.10.3) - y-prosemirror: 1.2.13(prosemirror-model@1.24.0)(prosemirror-state@1.4.3)(prosemirror-view@1.37.0)(y-protocols@1.0.6(yjs@13.6.19))(yjs@13.6.19) + '@tiptap/core': 2.11.3(@tiptap/pm@2.11.3) + y-prosemirror: 1.2.13(prosemirror-model@1.24.1)(prosemirror-state@1.4.3)(prosemirror-view@1.37.2)(y-protocols@1.0.6(yjs@13.6.23))(yjs@13.6.23) - '@tiptap/extension-collaboration@2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.10.3))(@tiptap/pm@2.10.3)(y-prosemirror@1.2.13(prosemirror-model@1.24.0)(prosemirror-state@1.4.3)(prosemirror-view@1.37.0)(y-protocols@1.0.6(yjs@13.6.19))(yjs@13.6.19))': + '@tiptap/extension-collaboration@2.11.3(@tiptap/core@2.11.3(@tiptap/pm@2.11.3))(@tiptap/pm@2.11.3)(y-prosemirror@1.2.13(prosemirror-model@1.24.1)(prosemirror-state@1.4.3)(prosemirror-view@1.37.2)(y-protocols@1.0.6(yjs@13.6.23))(yjs@13.6.23))': dependencies: - '@tiptap/core': 2.8.0(@tiptap/pm@2.10.3) - '@tiptap/pm': 2.10.3 - y-prosemirror: 1.2.13(prosemirror-model@1.24.0)(prosemirror-state@1.4.3)(prosemirror-view@1.37.0)(y-protocols@1.0.6(yjs@13.6.19))(yjs@13.6.19) + '@tiptap/core': 2.11.3(@tiptap/pm@2.11.3) + '@tiptap/pm': 2.11.3 + y-prosemirror: 1.2.13(prosemirror-model@1.24.1)(prosemirror-state@1.4.3)(prosemirror-view@1.37.2)(y-protocols@1.0.6(yjs@13.6.23))(yjs@13.6.23) - '@tiptap/extension-floating-menu@2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.10.3))(@tiptap/pm@2.10.3)': + '@tiptap/extension-floating-menu@2.11.3(@tiptap/core@2.11.3(@tiptap/pm@2.11.3))(@tiptap/pm@2.11.3)': dependencies: - '@tiptap/core': 2.8.0(@tiptap/pm@2.10.3) - '@tiptap/pm': 2.10.3 + '@tiptap/core': 2.11.3(@tiptap/pm@2.11.3) + '@tiptap/pm': 2.11.3 tippy.js: 6.3.7 - '@tiptap/extension-gapcursor@2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.10.3))(@tiptap/pm@2.10.3)': + '@tiptap/extension-gapcursor@2.11.3(@tiptap/core@2.11.3(@tiptap/pm@2.11.3))(@tiptap/pm@2.11.3)': dependencies: - '@tiptap/core': 2.8.0(@tiptap/pm@2.10.3) - '@tiptap/pm': 2.10.3 + '@tiptap/core': 2.11.3(@tiptap/pm@2.11.3) + '@tiptap/pm': 2.11.3 - '@tiptap/extension-hard-break@2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.10.3))': + '@tiptap/extension-hard-break@2.11.3(@tiptap/core@2.11.3(@tiptap/pm@2.11.3))': dependencies: - '@tiptap/core': 2.8.0(@tiptap/pm@2.10.3) + '@tiptap/core': 2.11.3(@tiptap/pm@2.11.3) - '@tiptap/extension-history@2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.10.3))(@tiptap/pm@2.10.3)': + '@tiptap/extension-history@2.11.3(@tiptap/core@2.11.3(@tiptap/pm@2.11.3))(@tiptap/pm@2.11.3)': dependencies: - '@tiptap/core': 2.8.0(@tiptap/pm@2.10.3) - '@tiptap/pm': 2.10.3 + '@tiptap/core': 2.11.3(@tiptap/pm@2.11.3) + '@tiptap/pm': 2.11.3 - '@tiptap/extension-horizontal-rule@2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.10.3))(@tiptap/pm@2.10.3)': + '@tiptap/extension-horizontal-rule@2.11.3(@tiptap/core@2.11.3(@tiptap/pm@2.11.3))(@tiptap/pm@2.11.3)': dependencies: - '@tiptap/core': 2.8.0(@tiptap/pm@2.10.3) - '@tiptap/pm': 2.10.3 + '@tiptap/core': 2.11.3(@tiptap/pm@2.11.3) + '@tiptap/pm': 2.11.3 - '@tiptap/extension-italic@2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.10.3))': + '@tiptap/extension-italic@2.11.3(@tiptap/core@2.11.3(@tiptap/pm@2.11.3))': dependencies: - '@tiptap/core': 2.8.0(@tiptap/pm@2.10.3) + '@tiptap/core': 2.11.3(@tiptap/pm@2.11.3) - '@tiptap/extension-link@2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.10.3))(@tiptap/pm@2.10.3)': + '@tiptap/extension-link@2.11.3(@tiptap/core@2.11.3(@tiptap/pm@2.11.3))(@tiptap/pm@2.11.3)': dependencies: - '@tiptap/core': 2.8.0(@tiptap/pm@2.10.3) - '@tiptap/pm': 2.10.3 - linkifyjs: 4.1.3 + '@tiptap/core': 2.11.3(@tiptap/pm@2.11.3) + '@tiptap/pm': 2.11.3 + linkifyjs: 4.2.0 - '@tiptap/extension-paragraph@2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.10.3))': + '@tiptap/extension-paragraph@2.11.3(@tiptap/core@2.11.3(@tiptap/pm@2.11.3))': dependencies: - '@tiptap/core': 2.8.0(@tiptap/pm@2.10.3) + '@tiptap/core': 2.11.3(@tiptap/pm@2.11.3) - '@tiptap/extension-strike@2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.10.3))': + '@tiptap/extension-strike@2.11.3(@tiptap/core@2.11.3(@tiptap/pm@2.11.3))': dependencies: - '@tiptap/core': 2.8.0(@tiptap/pm@2.10.3) + '@tiptap/core': 2.11.3(@tiptap/pm@2.11.3) - '@tiptap/extension-table-cell@2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.10.3))': + '@tiptap/extension-table-cell@2.11.3(@tiptap/core@2.11.3(@tiptap/pm@2.11.3))': dependencies: - '@tiptap/core': 2.8.0(@tiptap/pm@2.10.3) + '@tiptap/core': 2.11.3(@tiptap/pm@2.11.3) - '@tiptap/extension-table-header@2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.10.3))': + '@tiptap/extension-table-header@2.11.3(@tiptap/core@2.11.3(@tiptap/pm@2.11.3))': dependencies: - '@tiptap/core': 2.8.0(@tiptap/pm@2.10.3) + '@tiptap/core': 2.11.3(@tiptap/pm@2.11.3) - '@tiptap/extension-table-row@2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.10.3))': + '@tiptap/extension-table-row@2.11.3(@tiptap/core@2.11.3(@tiptap/pm@2.11.3))': dependencies: - '@tiptap/core': 2.8.0(@tiptap/pm@2.10.3) + '@tiptap/core': 2.11.3(@tiptap/pm@2.11.3) - '@tiptap/extension-text@2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.10.3))': + '@tiptap/extension-text@2.11.3(@tiptap/core@2.11.3(@tiptap/pm@2.11.3))': dependencies: - '@tiptap/core': 2.8.0(@tiptap/pm@2.10.3) + '@tiptap/core': 2.11.3(@tiptap/pm@2.11.3) - '@tiptap/extension-underline@2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.10.3))': + '@tiptap/extension-underline@2.11.3(@tiptap/core@2.11.3(@tiptap/pm@2.11.3))': dependencies: - '@tiptap/core': 2.8.0(@tiptap/pm@2.10.3) + '@tiptap/core': 2.11.3(@tiptap/pm@2.11.3) - '@tiptap/pm@2.10.3': + '@tiptap/pm@2.11.3': dependencies: prosemirror-changeset: 2.2.1 prosemirror-collab: 1.3.1 @@ -13833,26 +13719,26 @@ snapshots: prosemirror-keymap: 1.2.2 prosemirror-markdown: 1.13.1 prosemirror-menu: 1.2.4 - prosemirror-model: 1.24.0 + prosemirror-model: 1.24.1 prosemirror-schema-basic: 1.2.3 prosemirror-schema-list: 1.5.0 prosemirror-state: 1.4.3 - prosemirror-tables: 1.6.1 - prosemirror-trailing-node: 3.0.0(prosemirror-model@1.24.0)(prosemirror-state@1.4.3)(prosemirror-view@1.37.0) + prosemirror-tables: 1.6.2 + prosemirror-trailing-node: 3.0.0(prosemirror-model@1.24.1)(prosemirror-state@1.4.3)(prosemirror-view@1.37.2) prosemirror-transform: 1.10.2 - prosemirror-view: 1.37.0 + prosemirror-view: 1.37.2 - '@tiptap/react@2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.10.3))(@tiptap/pm@2.10.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@tiptap/react@2.11.3(@tiptap/core@2.11.3(@tiptap/pm@2.11.3))(@tiptap/pm@2.11.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@tiptap/core': 2.8.0(@tiptap/pm@2.10.3) - '@tiptap/extension-bubble-menu': 2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.10.3))(@tiptap/pm@2.10.3) - '@tiptap/extension-floating-menu': 2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.10.3))(@tiptap/pm@2.10.3) - '@tiptap/pm': 2.10.3 + '@tiptap/core': 2.11.3(@tiptap/pm@2.11.3) + '@tiptap/extension-bubble-menu': 2.11.3(@tiptap/core@2.11.3(@tiptap/pm@2.11.3))(@tiptap/pm@2.11.3) + '@tiptap/extension-floating-menu': 2.11.3(@tiptap/core@2.11.3(@tiptap/pm@2.11.3))(@tiptap/pm@2.11.3) + '@tiptap/pm': 2.11.3 '@types/use-sync-external-store': 0.0.6 fast-deep-equal: 3.1.3 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - use-sync-external-store: 1.2.2(react@18.3.1) + use-sync-external-store: 1.4.0(react@18.3.1) '@tokenizer/token@0.3.0': {} @@ -13886,7 +13772,7 @@ snapshots: '@types/body-parser@1.19.5': dependencies: '@types/connect': 3.4.38 - '@types/node': 22.10.2 + '@types/node': 22.10.7 '@types/caseless@0.12.5': {} @@ -13898,17 +13784,17 @@ snapshots: '@types/connect@3.4.38': dependencies: - '@types/node': 22.10.2 + '@types/node': 22.10.7 '@types/conventional-commits-parser@5.0.0': dependencies: - '@types/node': 22.10.2 + '@types/node': 22.10.7 '@types/cookiejar@2.1.5': {} '@types/cors@2.8.17': dependencies: - '@types/node': 22.10.2 + '@types/node': 22.10.7 '@types/d3-array@3.0.3': {} @@ -14071,13 +13957,13 @@ snapshots: '@types/docker-modem@3.0.6': dependencies: - '@types/node': 22.10.2 + '@types/node': 22.10.7 '@types/ssh2': 1.15.1 - '@types/dockerode@3.3.33': + '@types/dockerode@3.3.34': dependencies: '@types/docker-modem': 3.0.6 - '@types/node': 22.10.2 + '@types/node': 22.10.7 '@types/ssh2': 1.15.1 '@types/doctrine@0.0.9': {} @@ -14095,7 +13981,7 @@ snapshots: '@types/express-serve-static-core@4.19.6': dependencies: - '@types/node': 22.10.2 + '@types/node': 22.10.7 '@types/qs': 6.9.16 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -14111,7 +13997,7 @@ snapshots: '@types/fluent-ffmpeg@2.1.27': dependencies: - '@types/node': 22.10.2 + '@types/node': 22.10.7 '@types/geojson@7946.0.14': {} @@ -14127,7 +14013,7 @@ snapshots: '@types/jsdom@21.1.7': dependencies: - '@types/node': 22.10.2 + '@types/node': 22.10.7 '@types/tough-cookie': 4.0.5 parse5: 7.2.1 @@ -14137,7 +14023,7 @@ snapshots: '@types/jsonwebtoken@9.0.7': dependencies: - '@types/node': 22.10.2 + '@types/node': 22.10.7 '@types/linkify-it@5.0.0': {} @@ -14174,25 +14060,21 @@ snapshots: '@types/node-fetch@2.6.12': dependencies: - '@types/node': 22.10.2 + '@types/node': 22.10.7 form-data: 4.0.1 '@types/node-telegram-bot-api@0.64.7': dependencies: - '@types/node': 22.10.2 + '@types/node': 22.10.7 '@types/request': 2.48.12 '@types/node@10.14.22': {} - '@types/node@18.19.70': - dependencies: - undici-types: 5.26.5 - - '@types/node@18.19.71': + '@types/node@18.19.74': dependencies: undici-types: 5.26.5 - '@types/node@22.10.2': + '@types/node@22.10.7': dependencies: undici-types: 6.20.0 @@ -14202,13 +14084,13 @@ snapshots: '@types/pg@8.11.10': dependencies: - '@types/node': 22.10.2 + '@types/node': 22.10.7 pg-protocol: 1.7.0 pg-types: 4.0.2 '@types/prompts@2.4.9': dependencies: - '@types/node': 22.10.2 + '@types/node': 22.10.7 kleur: 3.0.3 '@types/prop-types@15.7.14': {} @@ -14249,7 +14131,7 @@ snapshots: '@types/request@2.48.12': dependencies: '@types/caseless': 0.12.5 - '@types/node': 22.10.2 + '@types/node': 22.10.7 '@types/tough-cookie': 4.0.5 form-data: 2.5.1 @@ -14262,23 +14144,23 @@ snapshots: '@types/send@0.17.4': dependencies: '@types/mime': 1.3.5 - '@types/node': 22.10.2 + '@types/node': 22.10.7 '@types/serve-static@1.15.7': dependencies: '@types/http-errors': 2.0.4 - '@types/node': 22.10.2 + '@types/node': 22.10.7 '@types/send': 0.17.4 '@types/ssh2@1.15.1': dependencies: - '@types/node': 18.19.70 + '@types/node': 18.19.74 '@types/superagent@8.1.7': dependencies: '@types/cookiejar': 2.1.5 '@types/methods': 1.1.4 - '@types/node': 22.10.2 + '@types/node': 22.10.7 '@types/supertest@6.0.2': dependencies: @@ -14312,17 +14194,17 @@ snapshots: '@types/yauzl@2.10.3': dependencies: - '@types/node': 22.10.2 + '@types/node': 22.10.7 optional: true - '@typescript-eslint/eslint-plugin@8.19.1(@typescript-eslint/parser@8.19.1(eslint@9.18.0(jiti@2.4.1))(typescript@5.7.2))(eslint@9.18.0(jiti@2.4.1))(typescript@5.7.2)': + '@typescript-eslint/eslint-plugin@8.20.0(@typescript-eslint/parser@8.20.0(eslint@9.18.0(jiti@2.4.1))(typescript@5.7.2))(eslint@9.18.0(jiti@2.4.1))(typescript@5.7.2)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.19.1(eslint@9.18.0(jiti@2.4.1))(typescript@5.7.2) - '@typescript-eslint/scope-manager': 8.19.1 - '@typescript-eslint/type-utils': 8.19.1(eslint@9.18.0(jiti@2.4.1))(typescript@5.7.2) - '@typescript-eslint/utils': 8.19.1(eslint@9.18.0(jiti@2.4.1))(typescript@5.7.2) - '@typescript-eslint/visitor-keys': 8.19.1 + '@typescript-eslint/parser': 8.20.0(eslint@9.18.0(jiti@2.4.1))(typescript@5.7.2) + '@typescript-eslint/scope-manager': 8.20.0 + '@typescript-eslint/type-utils': 8.20.0(eslint@9.18.0(jiti@2.4.1))(typescript@5.7.2) + '@typescript-eslint/utils': 8.20.0(eslint@9.18.0(jiti@2.4.1))(typescript@5.7.2) + '@typescript-eslint/visitor-keys': 8.20.0 eslint: 9.18.0(jiti@2.4.1) graphemer: 1.4.0 ignore: 5.3.2 @@ -14340,12 +14222,12 @@ snapshots: - supports-color - typescript - '@typescript-eslint/parser@8.19.1(eslint@9.18.0(jiti@2.4.1))(typescript@5.7.2)': + '@typescript-eslint/parser@8.20.0(eslint@9.18.0(jiti@2.4.1))(typescript@5.7.2)': dependencies: - '@typescript-eslint/scope-manager': 8.19.1 - '@typescript-eslint/types': 8.19.1 - '@typescript-eslint/typescript-estree': 8.19.1(typescript@5.7.2) - '@typescript-eslint/visitor-keys': 8.19.1 + '@typescript-eslint/scope-manager': 8.20.0 + '@typescript-eslint/types': 8.20.0 + '@typescript-eslint/typescript-estree': 8.20.0(typescript@5.7.2) + '@typescript-eslint/visitor-keys': 8.20.0 debug: 4.4.0 eslint: 9.18.0(jiti@2.4.1) typescript: 5.7.2 @@ -14357,15 +14239,15 @@ snapshots: '@typescript-eslint/types': 5.62.0 '@typescript-eslint/visitor-keys': 5.62.0 - '@typescript-eslint/scope-manager@8.19.1': + '@typescript-eslint/scope-manager@8.20.0': dependencies: - '@typescript-eslint/types': 8.19.1 - '@typescript-eslint/visitor-keys': 8.19.1 + '@typescript-eslint/types': 8.20.0 + '@typescript-eslint/visitor-keys': 8.20.0 - '@typescript-eslint/type-utils@8.19.1(eslint@9.18.0(jiti@2.4.1))(typescript@5.7.2)': + '@typescript-eslint/type-utils@8.20.0(eslint@9.18.0(jiti@2.4.1))(typescript@5.7.2)': dependencies: - '@typescript-eslint/typescript-estree': 8.19.1(typescript@5.7.2) - '@typescript-eslint/utils': 8.19.1(eslint@9.18.0(jiti@2.4.1))(typescript@5.7.2) + '@typescript-eslint/typescript-estree': 8.20.0(typescript@5.7.2) + '@typescript-eslint/utils': 8.20.0(eslint@9.18.0(jiti@2.4.1))(typescript@5.7.2) debug: 4.4.0 eslint: 9.18.0(jiti@2.4.1) ts-api-utils: 2.0.0(typescript@5.7.2) @@ -14375,7 +14257,7 @@ snapshots: '@typescript-eslint/types@5.62.0': {} - '@typescript-eslint/types@8.19.1': {} + '@typescript-eslint/types@8.20.0': {} '@typescript-eslint/typescript-estree@5.62.0(typescript@5.7.2)': dependencies: @@ -14391,10 +14273,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.19.1(typescript@5.7.2)': + '@typescript-eslint/typescript-estree@8.20.0(typescript@5.7.2)': dependencies: - '@typescript-eslint/types': 8.19.1 - '@typescript-eslint/visitor-keys': 8.19.1 + '@typescript-eslint/types': 8.20.0 + '@typescript-eslint/visitor-keys': 8.20.0 debug: 4.4.0 fast-glob: 3.3.3 is-glob: 4.0.3 @@ -14420,12 +14302,12 @@ snapshots: - supports-color - typescript - '@typescript-eslint/utils@8.19.1(eslint@9.18.0(jiti@2.4.1))(typescript@5.7.2)': + '@typescript-eslint/utils@8.20.0(eslint@9.18.0(jiti@2.4.1))(typescript@5.7.2)': dependencies: '@eslint-community/eslint-utils': 4.4.1(eslint@9.18.0(jiti@2.4.1)) - '@typescript-eslint/scope-manager': 8.19.1 - '@typescript-eslint/types': 8.19.1 - '@typescript-eslint/typescript-estree': 8.19.1(typescript@5.7.2) + '@typescript-eslint/scope-manager': 8.20.0 + '@typescript-eslint/types': 8.20.0 + '@typescript-eslint/typescript-estree': 8.20.0(typescript@5.7.2) eslint: 9.18.0(jiti@2.4.1) typescript: 5.7.2 transitivePeerDependencies: @@ -14436,12 +14318,12 @@ snapshots: '@typescript-eslint/types': 5.62.0 eslint-visitor-keys: 3.4.3 - '@typescript-eslint/visitor-keys@8.19.1': + '@typescript-eslint/visitor-keys@8.20.0': dependencies: - '@typescript-eslint/types': 8.19.1 + '@typescript-eslint/types': 8.20.0 eslint-visitor-keys: 4.2.0 - '@ungap/structured-clone@1.2.0': {} + '@ungap/structured-clone@1.2.1': {} '@use-gesture/core@10.3.1': {} @@ -14652,18 +14534,18 @@ snapshots: prop-types: 15.8.1 react: 18.3.1 - '@vitejs/plugin-react@4.3.4(vite@6.0.9(@types/node@22.10.2)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1))': + '@vitejs/plugin-react@4.3.4(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1))': dependencies: '@babel/core': 7.26.0 '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.0) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 6.0.9(@types/node@22.10.2)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) + vite: 6.0.11(@types/node@22.10.7)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) transitivePeerDependencies: - supports-color - '@vitest/coverage-v8@2.1.8(vitest@2.1.8(@types/node@22.10.2)(jsdom@26.0.0(canvas@3.0.1))(sass@1.82.0)(terser@5.37.0))': + '@vitest/coverage-v8@2.1.8(vitest@2.1.8(@types/node@22.10.7)(jsdom@26.0.0(canvas@3.0.1))(sass@1.82.0)(terser@5.37.0))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 0.2.3 @@ -14672,12 +14554,12 @@ snapshots: istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 5.0.6 istanbul-reports: 3.1.7 - magic-string: 0.30.14 + magic-string: 0.30.17 magicast: 0.3.5 std-env: 3.8.0 test-exclude: 7.0.1 tinyrainbow: 1.2.0 - vitest: 2.1.8(@types/node@22.10.2)(jsdom@26.0.0(canvas@3.0.1))(sass@1.82.0)(terser@5.37.0) + vitest: 2.1.8(@types/node@22.10.7)(jsdom@26.0.0(canvas@3.0.1))(sass@1.82.0)(terser@5.37.0) transitivePeerDependencies: - supports-color @@ -14695,13 +14577,13 @@ snapshots: chai: 5.1.2 tinyrainbow: 1.2.0 - '@vitest/mocker@2.1.8(vite@5.4.11(@types/node@22.10.2)(sass@1.82.0)(terser@5.37.0))': + '@vitest/mocker@2.1.8(vite@5.4.14(@types/node@22.10.7)(sass@1.82.0)(terser@5.37.0))': dependencies: '@vitest/spy': 2.1.8 estree-walker: 3.0.3 - magic-string: 0.30.14 + magic-string: 0.30.17 optionalDependencies: - vite: 5.4.11(@types/node@22.10.2)(sass@1.82.0)(terser@5.37.0) + vite: 5.4.14(@types/node@22.10.7)(sass@1.82.0)(terser@5.37.0) '@vitest/pretty-format@2.0.5': dependencies: @@ -14719,7 +14601,7 @@ snapshots: '@vitest/snapshot@2.1.8': dependencies: '@vitest/pretty-format': 2.1.8 - magic-string: 0.30.14 + magic-string: 0.30.17 pathe: 1.1.2 '@vitest/spy@2.0.5': @@ -14906,7 +14788,7 @@ snapshots: call-bind: 1.0.8 define-properties: 1.2.1 es-abstract: 1.23.8 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 get-intrinsic: 1.2.6 is-string: 1.1.1 @@ -14917,7 +14799,7 @@ snapshots: call-bind: 1.0.8 define-properties: 1.2.1 es-abstract: 1.23.8 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 es-shim-unscopables: 1.0.2 array.prototype.findlast@1.2.5: @@ -14926,7 +14808,7 @@ snapshots: define-properties: 1.2.1 es-abstract: 1.23.8 es-errors: 1.3.0 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 es-shim-unscopables: 1.0.2 array.prototype.findlastindex@1.2.5: @@ -14935,7 +14817,7 @@ snapshots: define-properties: 1.2.1 es-abstract: 1.23.8 es-errors: 1.3.0 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 es-shim-unscopables: 1.0.2 array.prototype.flat@1.3.2: @@ -14959,7 +14841,7 @@ snapshots: es-abstract: 1.23.8 es-array-method-boxes-properly: 1.0.0 es-errors: 1.3.0 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 is-string: 1.1.1 array.prototype.tosorted@1.1.4: @@ -15253,7 +15135,7 @@ snapshots: canvas@3.0.1: dependencies: node-addon-api: 7.1.1 - prebuild-install: 7.1.2 + prebuild-install: 7.1.3 simple-get: 3.1.1 caseless@0.12.0: {} @@ -15570,9 +15452,9 @@ snapshots: object-assign: 4.1.1 vary: 1.1.2 - cosmiconfig-typescript-loader@6.1.0(@types/node@22.10.2)(cosmiconfig@9.0.0(typescript@5.7.2))(typescript@5.7.2): + cosmiconfig-typescript-loader@6.1.0(@types/node@22.10.7)(cosmiconfig@9.0.0(typescript@5.7.2))(typescript@5.7.2): dependencies: - '@types/node': 22.10.2 + '@types/node': 22.10.7 cosmiconfig: 9.0.0(typescript@5.7.2) jiti: 2.4.1 typescript: 5.7.2 @@ -16118,7 +16000,7 @@ snapshots: data-view-byte-offset: 1.0.1 es-define-property: 1.0.1 es-errors: 1.3.0 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 es-set-tostringtag: 2.0.3 es-to-primitive: 1.3.0 function.prototype.name: 1.1.8 @@ -16183,9 +16065,9 @@ snapshots: iterator.prototype: 1.1.4 safe-array-concat: 1.1.3 - es-module-lexer@1.5.4: {} + es-module-lexer@1.6.0: {} - es-object-atoms@1.0.0: + es-object-atoms@1.1.1: dependencies: es-errors: 1.3.0 @@ -16334,15 +16216,15 @@ snapshots: is-glob: 4.0.3 stable-hash: 0.0.4 optionalDependencies: - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.19.1(eslint@9.18.0(jiti@2.4.1))(typescript@5.7.2))(eslint-import-resolver-typescript@3.7.0)(eslint@9.18.0(jiti@2.4.1)) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.20.0(eslint@9.18.0(jiti@2.4.1))(typescript@5.7.2))(eslint-import-resolver-typescript@3.7.0)(eslint@9.18.0(jiti@2.4.1)) transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@8.19.1(eslint@9.18.0(jiti@2.4.1))(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0)(eslint@9.18.0(jiti@2.4.1)): + eslint-module-utils@2.12.0(@typescript-eslint/parser@8.20.0(eslint@9.18.0(jiti@2.4.1))(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0)(eslint@9.18.0(jiti@2.4.1)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.19.1(eslint@9.18.0(jiti@2.4.1))(typescript@5.7.2) + '@typescript-eslint/parser': 8.20.0(eslint@9.18.0(jiti@2.4.1))(typescript@5.7.2) eslint: 9.18.0(jiti@2.4.1) eslint-import-resolver-node: 0.3.9 eslint-import-resolver-typescript: 3.7.0(eslint-plugin-import@2.31.0)(eslint@9.18.0(jiti@2.4.1)) @@ -16361,7 +16243,7 @@ snapshots: - supports-color - typescript - eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.19.1(eslint@9.18.0(jiti@2.4.1))(typescript@5.7.2))(eslint-import-resolver-typescript@3.7.0)(eslint@9.18.0(jiti@2.4.1)): + eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.20.0(eslint@9.18.0(jiti@2.4.1))(typescript@5.7.2))(eslint-import-resolver-typescript@3.7.0)(eslint@9.18.0(jiti@2.4.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.8 @@ -16372,7 +16254,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.18.0(jiti@2.4.1) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.19.1(eslint@9.18.0(jiti@2.4.1))(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0)(eslint@9.18.0(jiti@2.4.1)) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.20.0(eslint@9.18.0(jiti@2.4.1))(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0)(eslint@9.18.0(jiti@2.4.1)) hasown: 2.0.2 is-core-module: 2.15.1 is-glob: 4.0.3 @@ -16384,13 +16266,13 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.19.1(eslint@9.18.0(jiti@2.4.1))(typescript@5.7.2) + '@typescript-eslint/parser': 8.20.0(eslint@9.18.0(jiti@2.4.1))(typescript@5.7.2) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-prettier@5.2.1(@types/eslint@9.6.1)(eslint-config-prettier@9.1.0(eslint@9.18.0(jiti@2.4.1)))(eslint@9.18.0(jiti@2.4.1))(prettier@3.4.2): + eslint-plugin-prettier@5.2.2(@types/eslint@9.6.1)(eslint-config-prettier@9.1.0(eslint@9.18.0(jiti@2.4.1)))(eslint@9.18.0(jiti@2.4.1))(prettier@3.4.2): dependencies: eslint: 9.18.0(jiti@2.4.1) prettier: 3.4.2 @@ -16878,7 +16760,7 @@ snapshots: dunder-proto: 1.0.1 es-define-property: 1.0.1 es-errors: 1.3.0 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 function-bind: 1.1.2 gopd: 1.2.0 has-symbols: 1.1.0 @@ -16887,6 +16769,11 @@ snapshots: get-nonce@1.0.1: {} + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + get-stream@5.2.0: dependencies: pump: 3.0.2 @@ -17142,7 +17029,7 @@ snapshots: stringify-entities: 4.0.4 zwitch: 2.0.4 - hast-util-to-html@9.0.3: + hast-util-to-html@9.0.4: dependencies: '@types/hast': 3.0.4 '@types/unist': 3.0.3 @@ -17428,9 +17315,9 @@ snapshots: ipaddr.js@1.9.1: {} - is-arguments@1.1.1: + is-arguments@1.2.0: dependencies: - call-bind: 1.0.8 + call-bound: 1.0.3 has-tostringtag: 1.0.2 is-array-buffer@3.0.5: @@ -17499,9 +17386,12 @@ snapshots: dependencies: get-east-asian-width: 1.2.0 - is-generator-function@1.0.10: + is-generator-function@1.1.0: dependencies: + call-bound: 1.0.3 + get-proto: 1.0.1 has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 is-glob@4.0.3: dependencies: @@ -17623,7 +17513,7 @@ snapshots: iterator.prototype@1.1.4: dependencies: define-data-property: 1.1.4 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 get-intrinsic: 1.2.6 has-symbols: 1.1.0 reflect.getprototypeof: 1.0.9 @@ -17672,7 +17562,7 @@ snapshots: rrweb-cssom: 0.7.1 saxes: 6.0.0 symbol-tree: 3.2.4 - tough-cookie: 5.0.0 + tough-cookie: 5.1.0 w3c-xmlserializer: 5.0.0 webidl-conversions: 7.0.0 whatwg-encoding: 3.1.1 @@ -17702,7 +17592,7 @@ snapshots: rrweb-cssom: 0.8.0 saxes: 6.0.0 symbol-tree: 3.2.4 - tough-cookie: 5.0.0 + tough-cookie: 5.1.0 w3c-xmlserializer: 5.0.0 webidl-conversions: 7.0.0 whatwg-encoding: 3.1.1 @@ -17733,7 +17623,7 @@ snapshots: rrweb-cssom: 0.8.0 saxes: 6.0.0 symbol-tree: 3.2.4 - tough-cookie: 5.0.0 + tough-cookie: 5.1.0 w3c-xmlserializer: 5.0.0 webidl-conversions: 7.0.0 whatwg-encoding: 3.1.1 @@ -17869,11 +17759,11 @@ snapshots: kleur@4.1.5: {} - knip@5.41.1(@types/node@22.10.2)(typescript@5.7.2): + knip@5.41.1(@types/node@22.10.7)(typescript@5.7.2): dependencies: '@nodelib/fs.walk': 1.2.8 '@snyk/github-codeowners': 1.1.0 - '@types/node': 22.10.2 + '@types/node': 22.10.7 easy-table: 1.2.0 enhanced-resolve: 5.17.1 fast-glob: 3.3.3 @@ -17950,7 +17840,7 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 - lib0@0.2.98: + lib0@0.2.99: dependencies: isomorphic.js: 0.2.5 @@ -17962,7 +17852,7 @@ snapshots: dependencies: uc.micro: 2.1.0 - linkifyjs@4.1.3: {} + linkifyjs@4.2.0: {} lint-staged@15.3.0: dependencies: @@ -18097,7 +17987,7 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 - magic-string@0.30.14: + magic-string@0.30.17: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 @@ -18129,7 +18019,7 @@ snapshots: punycode.js: 2.3.1 uc.micro: 2.1.0 - markdown-table@3.0.3: {} + markdown-table@3.0.4: {} math-expression-evaluator@1.4.0: {} @@ -18186,7 +18076,7 @@ snapshots: mdast-util-gfm-table@1.0.7: dependencies: '@types/mdast': 3.0.15 - markdown-table: 3.0.3 + markdown-table: 3.0.4 mdast-util-from-markdown: 1.3.1 mdast-util-to-markdown: 1.5.0 transitivePeerDependencies: @@ -18229,7 +18119,7 @@ snapshots: dependencies: '@types/hast': 3.0.4 '@types/mdast': 4.0.4 - '@ungap/structured-clone': 1.2.0 + '@ungap/structured-clone': 1.2.1 devlop: 1.1.0 micromark-util-sanitize-uri: 2.0.1 trim-lines: 3.0.1 @@ -18605,7 +18495,7 @@ snapshots: nanoid@3.3.8: {} - napi-build-utils@1.0.2: {} + napi-build-utils@2.0.0: {} natural-compare-lite@1.4.0: {} @@ -18625,7 +18515,7 @@ snapshots: fp-ts: 2.16.9 monocle-ts: 2.3.13(fp-ts@2.16.9) - node-abi@3.71.0: + node-abi@3.73.0: dependencies: semver: 7.6.3 @@ -18723,7 +18613,7 @@ snapshots: call-bind: 1.0.8 call-bound: 1.0.3 define-properties: 1.2.1 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 has-symbols: 1.1.0 object-keys: 1.1.1 @@ -18731,14 +18621,14 @@ snapshots: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 object.fromentries@2.0.8: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 es-abstract: 1.23.8 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 object.groupby@1.0.3: dependencies: @@ -18751,7 +18641,7 @@ snapshots: call-bind: 1.0.8 call-bound: 1.0.3 define-properties: 1.2.1 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 obuf@1.1.2: {} @@ -18791,11 +18681,11 @@ snapshots: dependencies: mimic-function: 5.0.1 - oniguruma-to-es@0.4.1: + oniguruma-to-es@2.3.0: dependencies: emoji-regex-xs: 1.0.0 - regex: 5.0.1 - regex-recursion: 4.2.1 + regex: 5.1.1 + regex-recursion: 5.1.1 open@8.4.2: dependencies: @@ -18805,7 +18695,7 @@ snapshots: openai@4.78.1(zod@3.24.1): dependencies: - '@types/node': 18.19.70 + '@types/node': 18.19.74 '@types/node-fetch': 2.6.12 abort-controller: 3.0.0 agentkeepalive: 4.6.0 @@ -19063,12 +18953,6 @@ snapshots: possible-typed-array-names@1.0.0: {} - postcss@8.4.49: - dependencies: - nanoid: 3.3.8 - picocolors: 1.1.1 - source-map-js: 1.2.1 - postcss@8.5.1: dependencies: nanoid: 3.3.8 @@ -19122,19 +19006,19 @@ snapshots: stream-length: 1.0.2 uuid: 8.3.2 - prebuild-install@7.1.2: + prebuild-install@7.1.3: dependencies: detect-libc: 2.0.3 expand-template: 2.0.3 github-from-package: 0.0.0 minimist: 1.2.8 mkdirp-classic: 0.5.3 - napi-build-utils: 1.0.2 - node-abi: 3.71.0 + napi-build-utils: 2.0.0 + node-abi: 3.73.0 pump: 3.0.2 rc: 1.2.8 simple-get: 4.0.1 - tar-fs: 2.0.1 + tar-fs: 2.1.2 tunnel-agent: 0.6.0 prelude-ls@1.2.1: {} @@ -19184,7 +19068,7 @@ snapshots: prosemirror-commands@1.6.2: dependencies: - prosemirror-model: 1.24.0 + prosemirror-model: 1.24.1 prosemirror-state: 1.4.3 prosemirror-transform: 1.10.2 @@ -19192,29 +19076,29 @@ snapshots: dependencies: prosemirror-state: 1.4.3 prosemirror-transform: 1.10.2 - prosemirror-view: 1.37.0 + prosemirror-view: 1.37.2 prosemirror-gapcursor@1.3.2: dependencies: prosemirror-keymap: 1.2.2 - prosemirror-model: 1.24.0 + prosemirror-model: 1.24.1 prosemirror-state: 1.4.3 - prosemirror-view: 1.37.0 + prosemirror-view: 1.37.2 - prosemirror-highlight@0.9.0(@types/hast@3.0.4)(prosemirror-model@1.24.0)(prosemirror-state@1.4.3)(prosemirror-transform@1.10.2)(prosemirror-view@1.37.0)(shiki@1.23.1): + prosemirror-highlight@0.9.0(@types/hast@3.0.4)(prosemirror-model@1.24.1)(prosemirror-state@1.4.3)(prosemirror-transform@1.10.2)(prosemirror-view@1.37.2)(shiki@1.29.1): optionalDependencies: '@types/hast': 3.0.4 - prosemirror-model: 1.24.0 + prosemirror-model: 1.24.1 prosemirror-state: 1.4.3 prosemirror-transform: 1.10.2 - prosemirror-view: 1.37.0 - shiki: 1.23.1 + prosemirror-view: 1.37.2 + shiki: 1.29.1 prosemirror-history@1.4.1: dependencies: prosemirror-state: 1.4.3 prosemirror-transform: 1.10.2 - prosemirror-view: 1.37.0 + prosemirror-view: 1.37.2 rope-sequence: 1.3.4 prosemirror-inputrules@1.4.0: @@ -19231,7 +19115,7 @@ snapshots: dependencies: '@types/markdown-it': 14.1.2 markdown-it: 14.1.0 - prosemirror-model: 1.24.0 + prosemirror-model: 1.24.1 prosemirror-menu@1.2.4: dependencies: @@ -19240,49 +19124,49 @@ snapshots: prosemirror-history: 1.4.1 prosemirror-state: 1.4.3 - prosemirror-model@1.24.0: + prosemirror-model@1.24.1: dependencies: orderedmap: 2.1.1 prosemirror-schema-basic@1.2.3: dependencies: - prosemirror-model: 1.24.0 + prosemirror-model: 1.24.1 prosemirror-schema-list@1.5.0: dependencies: - prosemirror-model: 1.24.0 + prosemirror-model: 1.24.1 prosemirror-state: 1.4.3 prosemirror-transform: 1.10.2 prosemirror-state@1.4.3: dependencies: - prosemirror-model: 1.24.0 + prosemirror-model: 1.24.1 prosemirror-transform: 1.10.2 - prosemirror-view: 1.37.0 + prosemirror-view: 1.37.2 - prosemirror-tables@1.6.1: + prosemirror-tables@1.6.2: dependencies: prosemirror-keymap: 1.2.2 - prosemirror-model: 1.24.0 + prosemirror-model: 1.24.1 prosemirror-state: 1.4.3 prosemirror-transform: 1.10.2 - prosemirror-view: 1.37.0 + prosemirror-view: 1.37.2 - prosemirror-trailing-node@3.0.0(prosemirror-model@1.24.0)(prosemirror-state@1.4.3)(prosemirror-view@1.37.0): + prosemirror-trailing-node@3.0.0(prosemirror-model@1.24.1)(prosemirror-state@1.4.3)(prosemirror-view@1.37.2): dependencies: '@remirror/core-constants': 3.0.0 escape-string-regexp: 4.0.0 - prosemirror-model: 1.24.0 + prosemirror-model: 1.24.1 prosemirror-state: 1.4.3 - prosemirror-view: 1.37.0 + prosemirror-view: 1.37.2 prosemirror-transform@1.10.2: dependencies: - prosemirror-model: 1.24.0 + prosemirror-model: 1.24.1 - prosemirror-view@1.37.0: + prosemirror-view@1.37.2: dependencies: - prosemirror-model: 1.24.0 + prosemirror-model: 1.24.1 prosemirror-state: 1.4.3 prosemirror-transform: 1.10.2 @@ -19298,7 +19182,7 @@ snapshots: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/node': 22.10.2 + '@types/node': 22.10.7 long: 5.2.4 protocol-buffers-schema@3.6.0: {} @@ -19603,7 +19487,7 @@ snapshots: dependencies: react: 18.3.1 - react-icons@5.3.0(react@18.3.1): + react-icons@5.4.0(react@18.3.1): dependencies: react: 18.3.1 @@ -19613,29 +19497,29 @@ snapshots: react-lifecycles-compat@3.0.4: {} - react-number-format@5.4.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + react-number-format@5.4.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) react-refresh@0.14.2: {} - react-remove-scroll-bar@2.3.6(@types/react@18.3.18)(react@18.3.1): + react-remove-scroll-bar@2.3.8(@types/react@18.3.18)(react@18.3.1): dependencies: react: 18.3.1 - react-style-singleton: 2.2.1(@types/react@18.3.18)(react@18.3.1) + react-style-singleton: 2.2.3(@types/react@18.3.18)(react@18.3.1) tslib: 2.8.1 optionalDependencies: '@types/react': 18.3.18 - react-remove-scroll@2.6.0(@types/react@18.3.18)(react@18.3.1): + react-remove-scroll@2.6.3(@types/react@18.3.18)(react@18.3.1): dependencies: react: 18.3.1 - react-remove-scroll-bar: 2.3.6(@types/react@18.3.18)(react@18.3.1) - react-style-singleton: 2.2.1(@types/react@18.3.18)(react@18.3.1) + react-remove-scroll-bar: 2.3.8(@types/react@18.3.18)(react@18.3.1) + react-style-singleton: 2.2.3(@types/react@18.3.18)(react@18.3.1) tslib: 2.8.1 - use-callback-ref: 1.3.2(@types/react@18.3.18)(react@18.3.1) - use-sidecar: 1.1.2(@types/react@18.3.18)(react@18.3.1) + use-callback-ref: 1.3.3(@types/react@18.3.18)(react@18.3.1) + use-sidecar: 1.1.3(@types/react@18.3.18)(react@18.3.1) optionalDependencies: '@types/react': 18.3.18 @@ -19669,21 +19553,20 @@ snapshots: react-dom: 18.3.1(react@18.3.1) resize-observer-polyfill: 1.5.1 - react-style-singleton@2.2.1(@types/react@18.3.18)(react@18.3.1): + react-style-singleton@2.2.3(@types/react@18.3.18)(react@18.3.1): dependencies: get-nonce: 1.0.1 - invariant: 2.2.4 react: 18.3.1 tslib: 2.8.1 optionalDependencies: '@types/react': 18.3.18 - react-textarea-autosize@8.5.3(@types/react@18.3.18)(react@18.3.1): + react-textarea-autosize@8.5.6(@types/react@18.3.18)(react@18.3.1): dependencies: '@babel/runtime': 7.26.0 react: 18.3.1 - use-composed-ref: 1.3.0(react@18.3.1) - use-latest: 1.2.1(@types/react@18.3.18)(react@18.3.1) + use-composed-ref: 1.4.0(@types/react@18.3.18)(react@18.3.1) + use-latest: 1.3.0(@types/react@18.3.18)(react@18.3.1) transitivePeerDependencies: - '@types/react' @@ -19805,13 +19688,16 @@ snapshots: regenerator-runtime@0.14.1: {} - regex-recursion@4.2.1: + regex-recursion@5.1.1: dependencies: + regex: 5.1.1 regex-utilities: 2.3.0 regex-utilities@2.3.0: {} - regex@5.0.1: {} + regex@5.1.1: + dependencies: + regex-utilities: 2.3.0 regexp.prototype.flags@1.5.3: dependencies: @@ -19993,31 +19879,6 @@ snapshots: robust-predicates@3.0.2: {} - rollup@4.28.1: - dependencies: - '@types/estree': 1.0.6 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.28.1 - '@rollup/rollup-android-arm64': 4.28.1 - '@rollup/rollup-darwin-arm64': 4.28.1 - '@rollup/rollup-darwin-x64': 4.28.1 - '@rollup/rollup-freebsd-arm64': 4.28.1 - '@rollup/rollup-freebsd-x64': 4.28.1 - '@rollup/rollup-linux-arm-gnueabihf': 4.28.1 - '@rollup/rollup-linux-arm-musleabihf': 4.28.1 - '@rollup/rollup-linux-arm64-gnu': 4.28.1 - '@rollup/rollup-linux-arm64-musl': 4.28.1 - '@rollup/rollup-linux-loongarch64-gnu': 4.28.1 - '@rollup/rollup-linux-powerpc64le-gnu': 4.28.1 - '@rollup/rollup-linux-riscv64-gnu': 4.28.1 - '@rollup/rollup-linux-s390x-gnu': 4.28.1 - '@rollup/rollup-linux-x64-gnu': 4.28.1 - '@rollup/rollup-linux-x64-musl': 4.28.1 - '@rollup/rollup-win32-arm64-msvc': 4.28.1 - '@rollup/rollup-win32-ia32-msvc': 4.28.1 - '@rollup/rollup-win32-x64-msvc': 4.28.1 - fsevents: 2.3.3 - rollup@4.31.0: dependencies: '@types/estree': 1.0.6 @@ -20233,13 +20094,15 @@ snapshots: shebang-regex@3.0.0: {} - shiki@1.23.1: + shiki@1.29.1: dependencies: - '@shikijs/core': 1.23.1 - '@shikijs/engine-javascript': 1.23.1 - '@shikijs/engine-oniguruma': 1.23.1 - '@shikijs/types': 1.23.1 - '@shikijs/vscode-textmate': 9.3.0 + '@shikijs/core': 1.29.1 + '@shikijs/engine-javascript': 1.29.1 + '@shikijs/engine-oniguruma': 1.29.1 + '@shikijs/langs': 1.29.1 + '@shikijs/themes': 1.29.1 + '@shikijs/types': 1.29.1 + '@shikijs/vscode-textmate': 10.0.1 '@types/hast': 3.0.4 side-channel-list@1.0.0: @@ -20396,9 +20259,9 @@ snapshots: stealthy-require@1.1.1: {} - storybook@8.4.7(prettier@3.4.2): + storybook@8.5.0(prettier@3.4.2): dependencies: - '@storybook/core': 8.4.7(prettier@3.4.2) + '@storybook/core': 8.5.0(prettier@3.4.2) optionalDependencies: prettier: 3.4.2 transitivePeerDependencies: @@ -20456,7 +20319,7 @@ snapshots: define-properties: 1.2.1 es-abstract: 1.23.8 es-errors: 1.3.0 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 get-intrinsic: 1.2.6 gopd: 1.2.0 has-symbols: 1.1.0 @@ -20477,7 +20340,7 @@ snapshots: define-data-property: 1.1.4 define-properties: 1.2.1 es-abstract: 1.23.8 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 has-property-descriptors: 1.0.2 string.prototype.trimend@1.0.9: @@ -20485,13 +20348,13 @@ snapshots: call-bind: 1.0.8 call-bound: 1.0.3 define-properties: 1.2.1 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 string.prototype.trimstart@1.0.8: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 string_decoder@0.10.31: {} @@ -20589,7 +20452,7 @@ snapshots: esrap: 1.2.3 is-reference: 3.0.3 locate-character: 3.0.0 - magic-string: 0.30.14 + magic-string: 0.30.17 zimmerframe: 1.1.2 symbol-tree@3.2.4: {} @@ -20610,6 +20473,13 @@ snapshots: pump: 3.0.2 tar-stream: 2.2.0 + tar-fs@2.1.2: + dependencies: + chownr: 1.1.4 + mkdirp-classic: 0.5.3 + pump: 3.0.2 + tar-stream: 2.2.0 + tar-fs@3.0.6: dependencies: pump: 3.0.2 @@ -20685,7 +20555,7 @@ snapshots: tinybench@2.9.0: {} - tinyexec@0.3.1: {} + tinyexec@0.3.2: {} tinypool@1.0.2: {} @@ -20699,11 +20569,11 @@ snapshots: tlds@1.252.0: {} - tldts-core@6.1.61: {} + tldts-core@6.1.74: {} - tldts@6.1.61: + tldts@6.1.74: dependencies: - tldts-core: 6.1.61 + tldts-core: 6.1.74 to-no-case@1.0.2: {} @@ -20744,9 +20614,9 @@ snapshots: universalify: 0.2.0 url-parse: 1.5.10 - tough-cookie@5.0.0: + tough-cookie@5.1.0: dependencies: - tldts: 6.1.61 + tldts: 6.1.74 tr46@0.0.3: {} @@ -20848,7 +20718,7 @@ snapshots: type-fest@2.19.0: {} - type-fest@4.26.1: {} + type-fest@4.33.0: {} type-is@1.6.18: dependencies: @@ -20917,11 +20787,11 @@ snapshots: transitivePeerDependencies: - supports-color - typescript-eslint@8.19.1(eslint@9.18.0(jiti@2.4.1))(typescript@5.7.2): + typescript-eslint@8.20.0(eslint@9.18.0(jiti@2.4.1))(typescript@5.7.2): dependencies: - '@typescript-eslint/eslint-plugin': 8.19.1(@typescript-eslint/parser@8.19.1(eslint@9.18.0(jiti@2.4.1))(typescript@5.7.2))(eslint@9.18.0(jiti@2.4.1))(typescript@5.7.2) - '@typescript-eslint/parser': 8.19.1(eslint@9.18.0(jiti@2.4.1))(typescript@5.7.2) - '@typescript-eslint/utils': 8.19.1(eslint@9.18.0(jiti@2.4.1))(typescript@5.7.2) + '@typescript-eslint/eslint-plugin': 8.20.0(@typescript-eslint/parser@8.20.0(eslint@9.18.0(jiti@2.4.1))(typescript@5.7.2))(eslint@9.18.0(jiti@2.4.1))(typescript@5.7.2) + '@typescript-eslint/parser': 8.20.0(eslint@9.18.0(jiti@2.4.1))(typescript@5.7.2) + '@typescript-eslint/utils': 8.20.0(eslint@9.18.0(jiti@2.4.1))(typescript@5.7.2) eslint: 9.18.0(jiti@2.4.1) typescript: 5.7.2 transitivePeerDependencies: @@ -21025,7 +20895,7 @@ snapshots: unpipe@1.0.0: {} - unplugin@1.16.0: + unplugin@1.16.1: dependencies: acorn: 8.14.0 webpack-virtual-modules: 0.6.2 @@ -21068,31 +20938,33 @@ snapshots: ip-regex: 4.3.0 tlds: 1.252.0 - use-callback-ref@1.3.2(@types/react@18.3.18)(react@18.3.1): + use-callback-ref@1.3.3(@types/react@18.3.18)(react@18.3.1): dependencies: react: 18.3.1 tslib: 2.8.1 optionalDependencies: '@types/react': 18.3.18 - use-composed-ref@1.3.0(react@18.3.1): + use-composed-ref@1.4.0(@types/react@18.3.18)(react@18.3.1): dependencies: react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.18 - use-isomorphic-layout-effect@1.1.2(@types/react@18.3.18)(react@18.3.1): + use-isomorphic-layout-effect@1.2.0(@types/react@18.3.18)(react@18.3.1): dependencies: react: 18.3.1 optionalDependencies: '@types/react': 18.3.18 - use-latest@1.2.1(@types/react@18.3.18)(react@18.3.1): + use-latest@1.3.0(@types/react@18.3.18)(react@18.3.1): dependencies: react: 18.3.1 - use-isomorphic-layout-effect: 1.1.2(@types/react@18.3.18)(react@18.3.1) + use-isomorphic-layout-effect: 1.2.0(@types/react@18.3.18)(react@18.3.1) optionalDependencies: '@types/react': 18.3.18 - use-sidecar@1.1.2(@types/react@18.3.18)(react@18.3.1): + use-sidecar@1.1.3(@types/react@18.3.18)(react@18.3.1): dependencies: detect-node-es: 1.1.0 react: 18.3.1 @@ -21104,7 +20976,7 @@ snapshots: dependencies: react: 18.3.1 - use-sync-external-store@1.2.2(react@18.3.1): + use-sync-external-store@1.4.0(react@18.3.1): dependencies: react: 18.3.1 @@ -21113,8 +20985,8 @@ snapshots: util@0.12.5: dependencies: inherits: 2.0.4 - is-arguments: 1.1.1 - is-generator-function: 1.0.10 + is-arguments: 1.2.0 + is-generator-function: 1.1.0 is-typed-array: 1.1.15 which-typed-array: 1.1.18 @@ -21209,13 +21081,13 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.2 - vite-node@2.1.8(@types/node@22.10.2)(sass@1.82.0)(terser@5.37.0): + vite-node@2.1.8(@types/node@22.10.7)(sass@1.82.0)(terser@5.37.0): dependencies: cac: 6.7.14 debug: 4.4.0 - es-module-lexer: 1.5.4 + es-module-lexer: 1.6.0 pathe: 1.1.2 - vite: 5.4.11(@types/node@22.10.2)(sass@1.82.0)(terser@5.37.0) + vite: 5.4.14(@types/node@22.10.7)(sass@1.82.0)(terser@5.37.0) transitivePeerDependencies: - '@types/node' - less @@ -21227,52 +21099,52 @@ snapshots: - supports-color - terser - vite-plugin-css-injected-by-js@3.5.2(vite@6.0.9(@types/node@22.10.2)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)): + vite-plugin-css-injected-by-js@3.5.2(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)): dependencies: - vite: 6.0.9(@types/node@22.10.2)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) + vite: 6.0.11(@types/node@22.10.7)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) vite-plugin-optimizer@1.4.3: {} - vite-tsconfig-paths@5.1.4(typescript@5.7.2)(vite@5.4.11(@types/node@22.10.2)(sass@1.82.0)(terser@5.37.0)): + vite-tsconfig-paths@5.1.4(typescript@5.7.2)(vite@5.4.14(@types/node@22.10.7)(sass@1.82.0)(terser@5.37.0)): dependencies: debug: 4.4.0 globrex: 0.1.2 tsconfck: 3.0.3(typescript@5.7.2) optionalDependencies: - vite: 5.4.11(@types/node@22.10.2)(sass@1.82.0)(terser@5.37.0) + vite: 5.4.14(@types/node@22.10.7)(sass@1.82.0)(terser@5.37.0) transitivePeerDependencies: - supports-color - typescript - vite-tsconfig-paths@5.1.4(typescript@5.7.2)(vite@6.0.9(@types/node@22.10.2)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)): + vite-tsconfig-paths@5.1.4(typescript@5.7.2)(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)): dependencies: debug: 4.4.0 globrex: 0.1.2 tsconfck: 3.0.3(typescript@5.7.2) optionalDependencies: - vite: 6.0.9(@types/node@22.10.2)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) + vite: 6.0.11(@types/node@22.10.7)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) transitivePeerDependencies: - supports-color - typescript - vite@5.4.11(@types/node@22.10.2)(sass@1.82.0)(terser@5.37.0): + vite@5.4.14(@types/node@22.10.7)(sass@1.82.0)(terser@5.37.0): dependencies: esbuild: 0.21.5 - postcss: 8.4.49 - rollup: 4.28.1 + postcss: 8.5.1 + rollup: 4.31.0 optionalDependencies: - '@types/node': 22.10.2 + '@types/node': 22.10.7 fsevents: 2.3.3 sass: 1.82.0 terser: 5.37.0 - vite@6.0.9(@types/node@22.10.2)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1): + vite@6.0.11(@types/node@22.10.7)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1): dependencies: esbuild: 0.24.2 postcss: 8.5.1 rollup: 4.31.0 optionalDependencies: - '@types/node': 22.10.2 + '@types/node': 22.10.7 fsevents: 2.3.3 jiti: 2.4.1 sass: 1.82.0 @@ -21280,22 +21152,22 @@ snapshots: tsx: 4.19.2 yaml: 2.6.1 - vitest-mock-extended@2.0.2(typescript@5.7.2)(vitest@2.1.8(@types/node@22.10.2)(jsdom@26.0.0(canvas@2.11.2))(sass@1.82.0)(terser@5.37.0)): + vitest-mock-extended@2.0.2(typescript@5.7.2)(vitest@2.1.8(@types/node@22.10.7)(jsdom@26.0.0(canvas@2.11.2))(sass@1.82.0)(terser@5.37.0)): dependencies: ts-essentials: 10.0.1(typescript@5.7.2) typescript: 5.7.2 - vitest: 2.1.8(@types/node@22.10.2)(jsdom@26.0.0(canvas@2.11.2))(sass@1.82.0)(terser@5.37.0) + vitest: 2.1.8(@types/node@22.10.7)(jsdom@26.0.0(canvas@2.11.2))(sass@1.82.0)(terser@5.37.0) - vitest-mock-extended@2.0.2(typescript@5.7.2)(vitest@2.1.8(@types/node@22.10.2)(jsdom@26.0.0(canvas@3.0.1))(sass@1.82.0)(terser@5.37.0)): + vitest-mock-extended@2.0.2(typescript@5.7.2)(vitest@2.1.8(@types/node@22.10.7)(jsdom@26.0.0(canvas@3.0.1))(sass@1.82.0)(terser@5.37.0)): dependencies: ts-essentials: 10.0.1(typescript@5.7.2) typescript: 5.7.2 - vitest: 2.1.8(@types/node@22.10.2)(jsdom@26.0.0(canvas@3.0.1))(sass@1.82.0)(terser@5.37.0) + vitest: 2.1.8(@types/node@22.10.7)(jsdom@26.0.0(canvas@3.0.1))(sass@1.82.0)(terser@5.37.0) - vitest@2.1.8(@types/node@22.10.2)(jsdom@26.0.0(canvas@2.11.2))(sass@1.82.0)(terser@5.37.0): + vitest@2.1.8(@types/node@22.10.7)(jsdom@26.0.0(canvas@2.11.2))(sass@1.82.0)(terser@5.37.0): dependencies: '@vitest/expect': 2.1.8 - '@vitest/mocker': 2.1.8(vite@5.4.11(@types/node@22.10.2)(sass@1.82.0)(terser@5.37.0)) + '@vitest/mocker': 2.1.8(vite@5.4.14(@types/node@22.10.7)(sass@1.82.0)(terser@5.37.0)) '@vitest/pretty-format': 2.1.8 '@vitest/runner': 2.1.8 '@vitest/snapshot': 2.1.8 @@ -21304,18 +21176,18 @@ snapshots: chai: 5.1.2 debug: 4.4.0 expect-type: 1.1.0 - magic-string: 0.30.14 + magic-string: 0.30.17 pathe: 1.1.2 std-env: 3.8.0 tinybench: 2.9.0 - tinyexec: 0.3.1 + tinyexec: 0.3.2 tinypool: 1.0.2 tinyrainbow: 1.2.0 - vite: 5.4.11(@types/node@22.10.2)(sass@1.82.0)(terser@5.37.0) - vite-node: 2.1.8(@types/node@22.10.2)(sass@1.82.0)(terser@5.37.0) + vite: 5.4.14(@types/node@22.10.7)(sass@1.82.0)(terser@5.37.0) + vite-node: 2.1.8(@types/node@22.10.7)(sass@1.82.0)(terser@5.37.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 22.10.2 + '@types/node': 22.10.7 jsdom: 26.0.0(canvas@2.11.2) transitivePeerDependencies: - less @@ -21328,10 +21200,10 @@ snapshots: - supports-color - terser - vitest@2.1.8(@types/node@22.10.2)(jsdom@26.0.0(canvas@3.0.1))(sass@1.82.0)(terser@5.37.0): + vitest@2.1.8(@types/node@22.10.7)(jsdom@26.0.0(canvas@3.0.1))(sass@1.82.0)(terser@5.37.0): dependencies: '@vitest/expect': 2.1.8 - '@vitest/mocker': 2.1.8(vite@5.4.11(@types/node@22.10.2)(sass@1.82.0)(terser@5.37.0)) + '@vitest/mocker': 2.1.8(vite@5.4.14(@types/node@22.10.7)(sass@1.82.0)(terser@5.37.0)) '@vitest/pretty-format': 2.1.8 '@vitest/runner': 2.1.8 '@vitest/snapshot': 2.1.8 @@ -21340,18 +21212,18 @@ snapshots: chai: 5.1.2 debug: 4.4.0 expect-type: 1.1.0 - magic-string: 0.30.14 + magic-string: 0.30.17 pathe: 1.1.2 std-env: 3.8.0 tinybench: 2.9.0 - tinyexec: 0.3.1 + tinyexec: 0.3.2 tinypool: 1.0.2 tinyrainbow: 1.2.0 - vite: 5.4.11(@types/node@22.10.2)(sass@1.82.0)(terser@5.37.0) - vite-node: 2.1.8(@types/node@22.10.2)(sass@1.82.0)(terser@5.37.0) + vite: 5.4.14(@types/node@22.10.7)(sass@1.82.0)(terser@5.37.0) + vite-node: 2.1.8(@types/node@22.10.7)(sass@1.82.0)(terser@5.37.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 22.10.2 + '@types/node': 22.10.7 jsdom: 26.0.0(canvas@3.0.1) transitivePeerDependencies: - less @@ -21427,7 +21299,7 @@ snapshots: is-async-function: 2.0.0 is-date-object: 1.1.0 is-finalizationregistry: 1.1.1 - is-generator-function: 1.0.10 + is-generator-function: 1.1.0 is-regex: 1.2.1 is-weakref: 1.1.0 isarray: 2.0.5 @@ -21560,19 +21432,19 @@ snapshots: xtend@4.0.2: {} - y-prosemirror@1.2.13(prosemirror-model@1.24.0)(prosemirror-state@1.4.3)(prosemirror-view@1.37.0)(y-protocols@1.0.6(yjs@13.6.19))(yjs@13.6.19): + y-prosemirror@1.2.13(prosemirror-model@1.24.1)(prosemirror-state@1.4.3)(prosemirror-view@1.37.2)(y-protocols@1.0.6(yjs@13.6.23))(yjs@13.6.23): dependencies: - lib0: 0.2.98 - prosemirror-model: 1.24.0 + lib0: 0.2.99 + prosemirror-model: 1.24.1 prosemirror-state: 1.4.3 - prosemirror-view: 1.37.0 - y-protocols: 1.0.6(yjs@13.6.19) - yjs: 13.6.19 + prosemirror-view: 1.37.2 + y-protocols: 1.0.6(yjs@13.6.23) + yjs: 13.6.23 - y-protocols@1.0.6(yjs@13.6.19): + y-protocols@1.0.6(yjs@13.6.23): dependencies: - lib0: 0.2.98 - yjs: 13.6.19 + lib0: 0.2.99 + yjs: 13.6.23 y18n@5.0.8: {} @@ -21614,9 +21486,9 @@ snapshots: buffer-crc32: 0.2.13 fd-slicer: 1.1.0 - yjs@13.6.19: + yjs@13.6.23: dependencies: - lib0: 0.2.98 + lib0: 0.2.99 yocto-queue@0.1.0: {} diff --git a/services/admin-web/package.json b/services/admin-web/package.json index 1406b88a9..37f34ee54 100644 --- a/services/admin-web/package.json +++ b/services/admin-web/package.json @@ -53,7 +53,7 @@ }, "devDependencies": { "@types/debug": "^4.1.12", - "@types/node": "^22.10.2", + "@types/node": "^22.10.7", "@types/react": "^18.3.18", "@types/react-dom": "^18.3.5", "dotenv": "^16.4.7", diff --git a/services/api/package.json b/services/api/package.json index 9bcf4a3c4..d750a40bd 100644 --- a/services/api/package.json +++ b/services/api/package.json @@ -90,13 +90,13 @@ "@types/body-parser": "^1.19.5", "@types/cors": "^2.8.17", "@types/debug": "^4.1.12", - "@types/dockerode": "^3.3.33", + "@types/dockerode": "^3.3.34", "@types/express": "^4.17.21", "@types/fluent-ffmpeg": "^2.1.26", "@types/jsonwebtoken": "^9.0.6", "@types/lodash": "^4.17.14", "@types/multer": "^1.4.12", - "@types/node": "^22.10.2", + "@types/node": "^22.10.7", "@types/pg": "^8.11.10", "@types/prompts": "^2.4.9", "@types/react": "^18.3.18", diff --git a/services/storybook/package.json b/services/storybook/package.json index 3b309797c..8c6fcc1bb 100644 --- a/services/storybook/package.json +++ b/services/storybook/package.json @@ -29,14 +29,14 @@ "@liexp/test": "workspace:*", "@liexp/ui": "workspace:*", "@mui/material": "^5.16.14", - "@storybook/addon-essentials": "^8.4.6", - "@storybook/addon-interactions": "^8.4.6", - "@storybook/addon-links": "^8.4.6", - "@storybook/builder-vite": "^8.4.6", - "@storybook/manager-api": "^8.4.6", - "@storybook/react": "^8.4.6", - "@storybook/react-vite": "^8.4.6", - "@storybook/theming": "^8.4.6", + "@storybook/addon-essentials": "^8.5.0", + "@storybook/addon-interactions": "^8.5.0", + "@storybook/addon-links": "^8.5.0", + "@storybook/builder-vite": "^8.5.0", + "@storybook/manager-api": "^8.5.0", + "@storybook/react": "^8.5.0", + "@storybook/react-vite": "^8.5.0", + "@storybook/theming": "^8.5.0", "@tanstack/react-query": "^5.64.1", "@visx/gradient": "^3.12.0", "d3": "^7.9.0", @@ -46,7 +46,7 @@ "react": "^18.3.1", "react-dom": "^18.3.1", "react-virtualized": "^9.22.5", - "storybook": "^8.4.6" + "storybook": "^8.5.0" }, "devDependencies": { "@types/d3": "^7.4.3", diff --git a/services/web/package.json b/services/web/package.json index d9f4ff5ce..edfde27d0 100644 --- a/services/web/package.json +++ b/services/web/package.json @@ -70,7 +70,7 @@ "@types/compression": "^1.7.5", "@types/debug": "^4.1.12", "@types/express": "^4.17.21", - "@types/node": "^22.10.2", + "@types/node": "^22.10.7", "@types/react": "^18.3.18", "@types/react-dom": "^18.3.5", "dotenv": "^16.4.7", From 2bbd46f0a232175af2bd0a57e6e015efc6d1279a Mon Sep 17 00:00:00 2001 From: ascariandrea Date: Mon, 13 Jan 2025 20:32:04 +0100 Subject: [PATCH 10/19] fix(worker): defined transfer media from external provider subscriber --- .../flows/admin/nlp/upsertEntities.flow.ts | 6 ++++- .../src/endpoints/OpenGraph.endpoints.ts | 20 ++++++++++------ .../ui/src/components/Common/Icons/FAIcon.tsx | 21 +++-------------- .../links/SuggestedEntityRelationsBox.tsx | 4 ++-- .../routes/open-graph/getMetadata.route.ts | 2 +- services/worker/scripts/pkg.sh | 16 ------------- services/worker/src/config.ts | 8 ++++--- .../services/subscribers/WorkerSubscribers.ts | 2 ++ ...transferFromExternalProvider.subscriber.ts | 23 +++++++++++++++++++ 9 files changed, 54 insertions(+), 48 deletions(-) delete mode 100755 services/worker/scripts/pkg.sh create mode 100644 services/worker/src/services/subscribers/media/transferFromExternalProvider.subscriber.ts diff --git a/packages/@liexp/backend/src/flows/admin/nlp/upsertEntities.flow.ts b/packages/@liexp/backend/src/flows/admin/nlp/upsertEntities.flow.ts index cc0c2c4e5..1a56c046c 100644 --- a/packages/@liexp/backend/src/flows/admin/nlp/upsertEntities.flow.ts +++ b/packages/@liexp/backend/src/flows/admin/nlp/upsertEntities.flow.ts @@ -18,6 +18,7 @@ import { type DBError } from "../../../providers/orm/database.provider.js"; import { fetchActors } from "../../../queries/actors/fetchActors.query.js"; import { fetchGroups } from "../../../queries/groups/fetchGroups.query.js"; import { fetchKeywords } from "../../../queries/keywords/fetchKeywords.query.js"; +import { ensureFolderExists } from "../../fs/ensureFolderExists.flow.js"; const makePatterns = (s: string, acronym: boolean): string[] => { const chunks = s.split(" "); @@ -130,7 +131,10 @@ export const upsertNLPEntities = < ]; return pipe( - ctx.fs.writeObject(nplConfig, JSON.stringify(entities, null, 4)), + ensureFolderExists(ctx.config.dirs.config.nlp)(ctx), + TE.chain(() => + ctx.fs.writeObject(nplConfig, JSON.stringify(entities, null, 4)), + ), TE.map(() => entities), TE.mapLeft(ServerError.fromUnknown), ); diff --git a/packages/@liexp/shared/src/endpoints/OpenGraph.endpoints.ts b/packages/@liexp/shared/src/endpoints/OpenGraph.endpoints.ts index 1e9e15d32..45b3c7c5e 100644 --- a/packages/@liexp/shared/src/endpoints/OpenGraph.endpoints.ts +++ b/packages/@liexp/shared/src/endpoints/OpenGraph.endpoints.ts @@ -11,22 +11,28 @@ import { ResourceEndpoints } from "./types.js"; const SingleMediaOutput = Output(Media.Media, "Media"); const ListMediaOutput = ListOutput(Media.Media, "MediaList"); +const GetMetadataQuery = t.type( + { + url: URL, + type: t.union([t.literal("ScientificStudy"), t.literal("Link")]), + }, + "GetMetadataQuery", +); + export const GetMetadata = Endpoint({ Method: "GET", getPath: () => "/open-graph/metadata", Input: { - Query: t.type({ - url: URL, - type: t.union([t.literal("ScientificStudy"), t.literal("Link")]), - }), + Query: GetMetadataQuery, }, - Output: t.strict({ - data: t.strict({ + Output: Output( + t.strict({ metadata: t.any, link: t.union([Link, t.undefined]), relations: ExtractEntitiesWithNLPOutput, }), - }), + "GetMetadataOutput", + ), }); export const List = Endpoint({ diff --git a/packages/@liexp/ui/src/components/Common/Icons/FAIcon.tsx b/packages/@liexp/ui/src/components/Common/Icons/FAIcon.tsx index 8bcfe787e..2ed0ec86f 100644 --- a/packages/@liexp/ui/src/components/Common/Icons/FAIcon.tsx +++ b/packages/@liexp/ui/src/components/Common/Icons/FAIcon.tsx @@ -47,20 +47,10 @@ export const FAIcon: React.FC = ({ type FAIconFC = React.FC>; export const HashtagIcon: FAIconFC = (props) => ( - + ); export const ActorIcon: FAIconFC = (props) => ( - + ); export const GroupIcon: FAIconFC = (props) => ( ( /> ); export const LinkIcon: FAIconFC = (props) => ( - + ); export const MediaIcon: FAIconFC = (props) => ( diff --git a/packages/@liexp/ui/src/components/admin/links/SuggestedEntityRelationsBox.tsx b/packages/@liexp/ui/src/components/admin/links/SuggestedEntityRelationsBox.tsx index e02932e58..9c8c0fec5 100644 --- a/packages/@liexp/ui/src/components/admin/links/SuggestedEntityRelationsBox.tsx +++ b/packages/@liexp/ui/src/components/admin/links/SuggestedEntityRelationsBox.tsx @@ -157,8 +157,8 @@ export const SuggestedEntityRelationsBox: React.FC< const [importancePercentage, setImportancePercentage] = React.useState(25); const { sentences, excludedSentences } = React.useMemo(() => { - const excludedSentences = exclude?.sentences.map((s) => s.text) ?? []; - const sentences = data.sentences.map((s) => ({ + const excludedSentences = exclude?.sentences?.map((s) => s.text) ?? []; + const sentences = (data.sentences ?? []).map((s) => ({ text: s.text, importance: s.importance, excluded: excludedSentences.includes(s.text), diff --git a/services/api/src/routes/open-graph/getMetadata.route.ts b/services/api/src/routes/open-graph/getMetadata.route.ts index 2b7830744..7fb96df44 100644 --- a/services/api/src/routes/open-graph/getMetadata.route.ts +++ b/services/api/src/routes/open-graph/getMetadata.route.ts @@ -33,7 +33,7 @@ export const MakeGetMetadataRoute: Route = (r, ctx) => { date: link.value.publishDate?.toISOString() ?? undefined, title: link.value.title, description: link.value.description ?? link.value.title, - keywords: link.value.keywords.map((id) => id.id) ?? [], + keywords: link.value.keywords?.map((id) => id.id) ?? [], icon: "", image: link.value.image?.location ?? null, provider: link.value.provider ?? "", diff --git a/services/worker/scripts/pkg.sh b/services/worker/scripts/pkg.sh deleted file mode 100755 index 204b049cf..000000000 --- a/services/worker/scripts/pkg.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/usr/bin/env bash - -set -e -x - -node --experimental-sea-config sea-config.json - -cp $(command -v node) ./build/be-worker - -strip ./build/be-worker - -pnpx postject ./build/be-worker NODE_SEA_BLOB ./build/be-worker.blob \ - --sentinel-fuse NODE_SEA_FUSE_fce680ab2cc467b6e072b8b5df1996b2 - -cp ../../node_modules/jsdom/lib/jsdom/living/xhr/xhr-sync-worker.js ./build/xhr-sync-worker.js - -cp ../../node_modules/pdfjs-dist/build/pdf.worker.mjs ./build/pdf.worker.mjs \ No newline at end of file diff --git a/services/worker/src/config.ts b/services/worker/src/config.ts index a0e233306..5241067eb 100644 --- a/services/worker/src/config.ts +++ b/services/worker/src/config.ts @@ -21,9 +21,11 @@ export const Config = (cwd: string): WorkerConfig => { tg: path.resolve(tempRoot, "tg"), }; - Object.values(tempFolders).forEach((folder) => { - mkdirSync(folder, { recursive: true }); - }); + [...Object.values(configFolders), ...Object.values(tempFolders)].forEach( + (folder) => { + mkdirSync(folder, { recursive: true }); + }, + ); return { media: { diff --git a/services/worker/src/services/subscribers/WorkerSubscribers.ts b/services/worker/src/services/subscribers/WorkerSubscribers.ts index 2b796f17a..63ad78819 100644 --- a/services/worker/src/services/subscribers/WorkerSubscribers.ts +++ b/services/worker/src/services/subscribers/WorkerSubscribers.ts @@ -3,6 +3,7 @@ import { fp, pipe } from "@liexp/core/lib/fp/index.js"; import { type RTE } from "../../types.js"; import { ExtractMediaExtraSubscriber } from "./media/extractMediaExtra.subscriber.js"; import { GenerateThumbnailSubscriber } from "./media/generateThumbnail.subscriber.js"; +import { TransferFromExternalProviderSubscriber } from "./media/transferFromExternalProvider.subscriber.js"; import { ExtractEntitiesWithNLPSubscriber } from "./nlp/extractEntitiesWithNLP.subscriber.js"; import { PostToSocialPlatformsSubscriber } from "./social-post/PostToSocialPlatforms.subscriber.js"; import { type WorkerContext } from "#context/context.js"; @@ -13,6 +14,7 @@ export const WorkerSubscribers: RTE = (ctx) => { // media GenerateThumbnailSubscriber, ExtractMediaExtraSubscriber, + TransferFromExternalProviderSubscriber, // social posts PostToSocialPlatformsSubscriber, // admin diff --git a/services/worker/src/services/subscribers/media/transferFromExternalProvider.subscriber.ts b/services/worker/src/services/subscribers/media/transferFromExternalProvider.subscriber.ts new file mode 100644 index 000000000..8f14ce38e --- /dev/null +++ b/services/worker/src/services/subscribers/media/transferFromExternalProvider.subscriber.ts @@ -0,0 +1,23 @@ +import { Subscriber } from "@liexp/backend/lib/providers/redis/redis.provider.js"; +import { TransferMediaFromExternalProviderPubSub } from "@liexp/backend/lib/pubsub/media/transferFromExternalProvider.pubSub.js"; +import { MediaRepository } from "@liexp/backend/lib/services/entity-repository.service.js"; +import { fp, pipe } from "@liexp/core/lib/fp/index.js"; +import { transferFromExternalProvider } from "../../../flows/media/transferFromExternalProvider.flow.js"; +import { type RTE } from "../../../types.js"; + +export const TransferFromExternalProviderSubscriber = Subscriber( + TransferMediaFromExternalProviderPubSub, + ({ mediaId, mimeType, url, fileName }): RTE => + pipe( + transferFromExternalProvider(mediaId, url, fileName, mimeType), + fp.RTE.chain((location) => + MediaRepository.save([ + { + id: mediaId, + location, + }, + ]), + ), + fp.RTE.map(() => undefined), + ), +); From f33331f9232148ba858d75321456c0562380fb34 Mon Sep 17 00:00:00 2001 From: ascariandrea Date: Tue, 14 Jan 2025 19:54:51 +0100 Subject: [PATCH 11/19] fix(worker): ensure all config folders are created on bootstrap --- compose.yml | 2 + .../flows/admin/nlp/upsertEntities.flow.ts | 4 +- .../links/SuggestedEntityRelationsBox.tsx | 4 + services/api/.gitignore | 3 +- services/worker/.env | 1 + services/worker/.gitignore | 1 + services/{api => worker}/config/nlp/.gitkeep | 0 services/worker/package.json | 5 +- services/worker/src/config.ts | 77 +++++++++++-------- services/worker/src/context/make.ts | 6 +- services/worker/src/io/env.ts | 1 + services/worker/src/jobs/jobs.ts | 8 ++ services/worker/src/jobs/upsertNLPEntities.ts | 19 +++++ 13 files changed, 90 insertions(+), 41 deletions(-) create mode 100644 services/worker/.gitignore rename services/{api => worker}/config/nlp/.gitkeep (100%) create mode 100644 services/worker/src/jobs/upsertNLPEntities.ts diff --git a/compose.yml b/compose.yml index c80808151..1a8a1dcdd 100644 --- a/compose.yml +++ b/compose.yml @@ -81,6 +81,7 @@ services: - api-node-modules:/usr/src/app/node_modules - ./packages/@liexp:/usr/src/app/packages/@liexp:ro - ./services/api:/usr/src/app/services/api:cached + - ./services/worker/config:/usr/src/app/services/api/config:ro working_dir: /usr/src/app/services/api api.liexp.dev: @@ -124,6 +125,7 @@ services: - worker-node-modules:/usr/src/app/node_modules - ./packages/@liexp:/usr/src/app/packages/@liexp:ro - ./services/worker:/usr/src/app/services/worker:ro + - ./services/worker/config:/usr/src/app/services/worker/config:rw - ./services/worker/temp:/usr/src/app/services/worker/temp:rw mem_limit: 512M restart: always diff --git a/packages/@liexp/backend/src/flows/admin/nlp/upsertEntities.flow.ts b/packages/@liexp/backend/src/flows/admin/nlp/upsertEntities.flow.ts index 1a56c046c..39be5af40 100644 --- a/packages/@liexp/backend/src/flows/admin/nlp/upsertEntities.flow.ts +++ b/packages/@liexp/backend/src/flows/admin/nlp/upsertEntities.flow.ts @@ -132,9 +132,7 @@ export const upsertNLPEntities = < return pipe( ensureFolderExists(ctx.config.dirs.config.nlp)(ctx), - TE.chain(() => - ctx.fs.writeObject(nplConfig, JSON.stringify(entities, null, 4)), - ), + TE.chain(() => ctx.fs.writeObject(nplConfig, JSON.stringify(entities))), TE.map(() => entities), TE.mapLeft(ServerError.fromUnknown), ); diff --git a/packages/@liexp/ui/src/components/admin/links/SuggestedEntityRelationsBox.tsx b/packages/@liexp/ui/src/components/admin/links/SuggestedEntityRelationsBox.tsx index 9c8c0fec5..f0cd5a536 100644 --- a/packages/@liexp/ui/src/components/admin/links/SuggestedEntityRelationsBox.tsx +++ b/packages/@liexp/ui/src/components/admin/links/SuggestedEntityRelationsBox.tsx @@ -181,6 +181,10 @@ export const SuggestedEntityRelationsBox: React.FC< }; }, [data.sentences, exclude?.sentences, importancePercentage]); + if (!data.entities) { + return null; + } + return ( { - const tempRoot = path.resolve(cwd, "temp"); +export const Config = + ( + cwd: string, + ): ReaderTaskEither => + (ctx) => { + const tempRoot = path.resolve(cwd, "temp"); - const configFolders = { - nlp: path.resolve(cwd, "config", "nlp"), - }; + const configFolders = { + nlp: path.resolve(cwd, "config", "nlp"), + }; - const tempFolders = { - root: tempRoot, - media: path.resolve(tempRoot, "media"), - nlp: path.resolve(tempRoot, "nlp"), - queue: path.resolve(tempRoot, "queue"), - stats: path.resolve(tempRoot, "stats"), - tg: path.resolve(tempRoot, "tg"), - }; + const tempFolders = { + root: tempRoot, + media: path.resolve(tempRoot, "media"), + nlp: path.resolve(tempRoot, "nlp"), + queue: path.resolve(tempRoot, "queue"), + stats: path.resolve(tempRoot, "stats"), + tg: path.resolve(tempRoot, "tg"), + }; - [...Object.values(configFolders), ...Object.values(tempFolders)].forEach( - (folder) => { - mkdirSync(folder, { recursive: true }); - }, - ); + [...Object.values(configFolders), ...Object.values(tempFolders)].forEach( + (folder) => { + mkdirSync(folder, { recursive: true }); + }, + ); - return { - media: { - thumbnailWidth: 300, - thumbnailHeight: 200, - }, - dirs: { - cwd, - config: configFolders, - temp: tempFolders, - }, - events: EventsConfig, + return pipe( + [...Object.values(configFolders), ...Object.values(tempFolders)], + fp.A.traverse(fp.TE.ApplicativePar)((filePath) => + ensureFolderExists(filePath)(ctx), + ), + fp.TE.map(() => ({ + media: { + thumbnailWidth: 300, + thumbnailHeight: 200, + }, + dirs: { + cwd, + config: configFolders, + temp: tempFolders, + }, + events: EventsConfig, + })), + ); }; -}; diff --git a/services/worker/src/context/make.ts b/services/worker/src/context/make.ts index dc93c87fb..0414b0c82 100644 --- a/services/worker/src/context/make.ts +++ b/services/worker/src/context/make.ts @@ -159,8 +159,7 @@ export const makeContext = ( ), fp.TE.map((pdf) => PDFProvider({ client: pdf })), ), - config: fp.TE.right(config), - queue: fp.TE.right(GetQueueProvider(fsClient, config.dirs.temp.queue)), + config: config({ fs: fsClient, logger: serverLogger }), geo: fp.TE.right( GeocodeProvider({ http: HTTPProvider( @@ -180,5 +179,8 @@ export const makeContext = ( wp: fp.TE.right(wpProvider), rw: fp.TE.right(rationalWikiProvider), }), + fp.TE.bind("queue", (ctx) => + fp.TE.right(GetQueueProvider(fsClient, ctx.config.dirs.temp.queue)), + ), ); }; diff --git a/services/worker/src/io/env.ts b/services/worker/src/io/env.ts index 54b3731c1..ac28a9429 100644 --- a/services/worker/src/io/env.ts +++ b/services/worker/src/io/env.ts @@ -10,6 +10,7 @@ const CRON_ENVS = t.strict( SOCIAL_POSTING_CRON: t.string, PROCESS_DONE_JOB_CRON: t.string, REGENERATE_MEDIA_THUMBNAILS_CRON: t.string, + UPSERT_NLP_ENTITIES_CRON: t.string, }, "CRON_ENVS", ); diff --git a/services/worker/src/jobs/jobs.ts b/services/worker/src/jobs/jobs.ts index 771aa6975..e785acdfe 100644 --- a/services/worker/src/jobs/jobs.ts +++ b/services/worker/src/jobs/jobs.ts @@ -8,6 +8,7 @@ import { generateMissingThumbnailsCron } from "./generateMissingMedia.job.js"; import { processOpenAIJobsDone } from "./processOpenAIJobsDone.job.js"; import { regenerateMediaThumbnailJob } from "./regenerateMediaThumbnail.job.js"; import { postOnSocialJob } from "./socialPostScheduler.job.js"; +import { upsertNLPEntitiesJobCron } from "./upsertNLPEntities.js"; import { type WorkerContext } from "#context/context.js"; interface CronJobsHooks { @@ -57,6 +58,12 @@ export const CronJobs = (ctx: WorkerContext): CronJobsHooks => { { name: "REGENERATE_MEDIA_THUMBNAILS", scheduled: true, runOnInit: false }, ); + const upsertNLPEntitiesTask = Cron.schedule( + ctx.env.UPSERT_NLP_ENTITIES_CRON, + liftT(upsertNLPEntitiesJobCron), + { name: "UPSERT_NLP_ENTITIES", scheduled: true, runOnInit: true }, + ); + return { onBootstrap() { Cron.getTasks().forEach((task) => { @@ -75,6 +82,7 @@ export const CronJobs = (ctx: WorkerContext): CronJobsHooks => { generateMissingThumbnailsTask.start(); regenerateMediaThumbnailTask.start(); processOpenAIJobsDoneTask.start(); + upsertNLPEntitiesTask.start(); }, onShutdown() { // stop all tasks diff --git a/services/worker/src/jobs/upsertNLPEntities.ts b/services/worker/src/jobs/upsertNLPEntities.ts new file mode 100644 index 000000000..b7ea1cb69 --- /dev/null +++ b/services/worker/src/jobs/upsertNLPEntities.ts @@ -0,0 +1,19 @@ +import { upsertNLPEntities as upsertNLPEntitiesFlow } from "@liexp/backend/lib/flows/admin/nlp/upsertEntities.flow.js"; +import { fp, pipe } from "@liexp/core/lib/fp/index.js"; +import { type CronJobTE } from "./cron-task.type.js"; + +export const upsertNLPEntitiesJobCron: CronJobTE = (opts) => { + return pipe( + upsertNLPEntitiesFlow, + fp.RTE.fold( + (e) => (ctx) => { + ctx.logger.error.log("Error processing embeddings queue task %O", e); + return fp.T.of(undefined); + }, + () => (ctx) => { + ctx.logger.info.log("End processing embeddings queue task..."); + return fp.T.of(undefined); + }, + ), + ); +}; From 0b1afab01a293782bc6019baa8b760865c92ad35 Mon Sep 17 00:00:00 2001 From: ascariandrea Date: Wed, 15 Jan 2025 19:23:02 +0100 Subject: [PATCH 12/19] fix(backend): replaced 'cavans' with '@napi-rs/canvas' already used by pdfjs-dist --- packages/@liexp/backend/package.json | 1 - .../extractThumbnailFromPDF.flow.ts | 8 +++-- .../shared/src/providers/pdf/pdf.provider.ts | 10 +++++- .../media/button/GenerateThumbnailButton.tsx | 2 +- pnpm-lock.yaml | 32 +++++++++++++------ services/api/src/context/context.type.ts | 6 ---- services/api/src/context/index.ts | 3 -- .../api/src/flows/media/editMedia.flow.ts | 22 +++++++------ services/api/test/AppTest.ts | 2 -- services/worker/src/config.ts | 31 ++++++++++++------ services/worker/src/context/make.ts | 23 +++++++++---- .../media/extractMediaExtra.subscriber.ts | 2 +- 12 files changed, 89 insertions(+), 53 deletions(-) diff --git a/packages/@liexp/backend/package.json b/packages/@liexp/backend/package.json index 1bafba960..ba6e3fd7b 100644 --- a/packages/@liexp/backend/package.json +++ b/packages/@liexp/backend/package.json @@ -31,7 +31,6 @@ "@databases/sql": "^3.3.0", "@liexp/core": "workspace:*", "@liexp/shared": "workspace:*", - "canvas": "^3.0.1", "date-fns": "^4.1.0", "fp-ts": "^2.16.9", "io-ts": "^2.2.22", diff --git a/packages/@liexp/backend/src/flows/media/thumbnails/extractThumbnailFromPDF.flow.ts b/packages/@liexp/backend/src/flows/media/thumbnails/extractThumbnailFromPDF.flow.ts index 7e1c3fbb2..d63394842 100644 --- a/packages/@liexp/backend/src/flows/media/thumbnails/extractThumbnailFromPDF.flow.ts +++ b/packages/@liexp/backend/src/flows/media/thumbnails/extractThumbnailFromPDF.flow.ts @@ -3,7 +3,7 @@ import { ImageType, type PDFType, } from "@liexp/shared/lib/io/http/Media/index.js"; -import Canvas from "canvas"; +import { createCanvas } from "@napi-rs/canvas"; import * as TE from "fp-ts/lib/TaskEither.js"; import { type PDFPageProxy, @@ -27,7 +27,7 @@ export const extractThumbnailFromPDFPage = ( const outputScale = 1; - const canvas = Canvas.createCanvas(viewport.width, viewport.height); + const canvas = createCanvas(viewport.width, viewport.height); const context = canvas.getContext("2d"); canvas.height = viewport.height; @@ -64,7 +64,9 @@ export const extractThumbnailFromPDF = < fp.RTE.flatMapTaskEither(fetchPDF(media.location)), fp.RTE.chainTaskEitherK((pdf) => pipe( - [1, 2, 3], + pdf.numPages, + (p) => [1, p / 2, p].map(Math.floor), + fp.A.uniq(fp.N.Eq), fp.A.traverse(fp.TE.ApplicativePar)((page) => pipe( fp.TE.tryCatch(() => pdf.getPage(page), ServerError.fromUnknown), diff --git a/packages/@liexp/shared/src/providers/pdf/pdf.provider.ts b/packages/@liexp/shared/src/providers/pdf/pdf.provider.ts index 679af772e..ad4d535d5 100644 --- a/packages/@liexp/shared/src/providers/pdf/pdf.provider.ts +++ b/packages/@liexp/shared/src/providers/pdf/pdf.provider.ts @@ -34,6 +34,9 @@ const toError = (e: any): IOError => { interface PDFProviderContext { client: typeof pdf; + cMapUrl?: string; + cMapPacked?: boolean; + standardFontDataUrl?: string; } export interface PDFProvider { @@ -47,7 +50,12 @@ export const PDFProvider = (ctx: PDFProviderContext): PDFProvider => { return { getDocument: (data) => TE.tryCatch(() => { - return ctx.client.getDocument({ data, useSystemFonts: true }).promise; + return ctx.client.getDocument({ + data, + cMapUrl: ctx.cMapUrl, + cMapPacked: ctx.cMapPacked, + standardFontDataUrl: ctx.standardFontDataUrl, + }).promise; }, toError), getAllTextContents(pdf) { return TE.tryCatch(async () => { diff --git a/packages/@liexp/ui/src/components/admin/media/button/GenerateThumbnailButton.tsx b/packages/@liexp/ui/src/components/admin/media/button/GenerateThumbnailButton.tsx index 9ba2126ae..ea3904da6 100644 --- a/packages/@liexp/ui/src/components/admin/media/button/GenerateThumbnailButton.tsx +++ b/packages/@liexp/ui/src/components/admin/media/button/GenerateThumbnailButton.tsx @@ -51,7 +51,7 @@ const SelectThumbnailModalContent: React.FC<{ undefined), + fp.RTE.map(() => null), ), ) : O.isSome(transferThumbnail) && m.thumbnail - ? MediaPubSub.TransferMediaFromExternalProviderPubSub.publish({ - mediaId: m.id, - url: m.thumbnail, - fileName: `${m.id}-thumb`, - mimeType: m.type, - }) - : fp.RTE.right(0), + ? pipe( + MediaPubSub.TransferMediaFromExternalProviderPubSub.publish({ + mediaId: m.id, + url: m.thumbnail, + fileName: `${m.id}-thumb`, + mimeType: m.type, + }), + fp.RTE.map(() => m.thumbnail), + ) + : fp.RTE.right(fp.O.getOrElse(() => m.thumbnail)(thumbnail)), ), fp.RTE.bind("location", ({ media }) => O.isSome(transfer) @@ -102,13 +105,14 @@ export const editMedia = ( ) : fp.RTE.right(location), ), - fp.RTE.chain(({ media, location }) => + fp.RTE.chain(({ media, location, thumbnail }) => pipe( MediaRepository.save([ { ...media, ...body, location, + thumbnail, keywords: body.keywords.map((id) => ({ id })), links: body.links.map((id) => ({ id })), events: body.events.map((id) => ({ diff --git a/services/api/test/AppTest.ts b/services/api/test/AppTest.ts index d02c434a1..2c2cfd594 100644 --- a/services/api/test/AppTest.ts +++ b/services/api/test/AppTest.ts @@ -25,7 +25,6 @@ import { GetPuppeteerProvider } from "@liexp/backend/lib/providers/puppeteer.pro import { MakeSpaceProvider } from "@liexp/backend/lib/providers/space/space.provider.js"; import { GetLogger, Logger } from "@liexp/core/lib/logger/index.js"; import { HTTPProvider } from "@liexp/shared/lib/providers/http/http.provider.js"; -import { PDFProvider } from "@liexp/shared/lib/providers/pdf/pdf.provider.js"; import { throwTE } from "@liexp/shared/lib/utils/task.utils.js"; import { AxiosInstance } from "axios"; import { sequenceS, sequenceT } from "fp-ts/lib/Apply.js"; @@ -129,7 +128,6 @@ export const loadAppContext = async ( openai: {} as any, blocknote: {} as any, redis: mocks.redis, - pdf: PDFProvider({ client: {} as any }), geo: GeocodeProvider({ http: HTTPProvider(mocks.axios as any), apiKey: "fake-geo-api-key", diff --git a/services/worker/src/config.ts b/services/worker/src/config.ts index 7de4b00b9..0641f6a52 100644 --- a/services/worker/src/config.ts +++ b/services/worker/src/config.ts @@ -1,4 +1,3 @@ -import { mkdirSync } from "fs"; import path from "path"; import { type BEConfig } from "@liexp/backend/lib/context/config.context.js"; import { type FSClientContext } from "@liexp/backend/lib/context/fs.context.js"; @@ -10,7 +9,14 @@ import { type ReaderTaskEither } from "fp-ts/lib/ReaderTaskEither.js"; import { pipe } from "fp-ts/lib/function.js"; import { type WorkerError } from "./io/worker.error.js"; -export type WorkerConfig = BEConfig; +export interface WorkerConfig extends BEConfig { + dirs: BEConfig["dirs"] & { + pdf: { + cMapUrl: string; + standardFontDataUrl: string; + }; + }; +} export const Config = ( @@ -19,6 +25,14 @@ export const Config = (ctx) => { const tempRoot = path.resolve(cwd, "temp"); + const pdfJSDistPath = path.resolve(cwd, "../../node_modules/pdfjs-dist/"); + const pdfFolders = { + cMapUrl: path.resolve(pdfJSDistPath, "cmaps").concat(path.sep), + standardFontDataUrl: path + .resolve(pdfJSDistPath, "standard_fonts") + .concat(path.sep), + }; + const configFolders = { nlp: path.resolve(cwd, "config", "nlp"), }; @@ -32,14 +46,12 @@ export const Config = tg: path.resolve(tempRoot, "tg"), }; - [...Object.values(configFolders), ...Object.values(tempFolders)].forEach( - (folder) => { - mkdirSync(folder, { recursive: true }); - }, - ); - return pipe( - [...Object.values(configFolders), ...Object.values(tempFolders)], + [ + ...Object.values(configFolders), + ...Object.values(tempFolders), + ...Object.values(pdfFolders), + ], fp.A.traverse(fp.TE.ApplicativePar)((filePath) => ensureFolderExists(filePath)(ctx), ), @@ -50,6 +62,7 @@ export const Config = }, dirs: { cwd, + pdf: pdfFolders, config: configFolders, temp: tempFolders, }, diff --git a/services/worker/src/context/make.ts b/services/worker/src/context/make.ts index 0414b0c82..812821ff9 100644 --- a/services/worker/src/context/make.ts +++ b/services/worker/src/context/make.ts @@ -152,13 +152,6 @@ export const makeContext = ( ), ), http: fp.TE.right(HTTPProvider(axios.default.create({}))), - pdf: pipe( - fp.TE.tryCatch( - () => import("pdfjs-dist/legacy/build/pdf.mjs"), - toWorkerError, - ), - fp.TE.map((pdf) => PDFProvider({ client: pdf })), - ), config: config({ fs: fsClient, logger: serverLogger }), geo: fp.TE.right( GeocodeProvider({ @@ -182,5 +175,21 @@ export const makeContext = ( fp.TE.bind("queue", (ctx) => fp.TE.right(GetQueueProvider(fsClient, ctx.config.dirs.temp.queue)), ), + fp.TE.bind("pdf", ({ config }) => + pipe( + fp.TE.tryCatch( + () => import("pdfjs-dist/legacy/build/pdf.mjs"), + toWorkerError, + ), + fp.TE.map((pdf) => + PDFProvider({ + client: pdf, + cMapUrl: config.dirs.pdf.cMapUrl, + cMapPacked: true, + standardFontDataUrl: config.dirs.pdf.standardFontDataUrl, + }), + ), + ), + ), ); }; diff --git a/services/worker/src/services/subscribers/media/extractMediaExtra.subscriber.ts b/services/worker/src/services/subscribers/media/extractMediaExtra.subscriber.ts index 5f14977fc..364d06470 100644 --- a/services/worker/src/services/subscribers/media/extractMediaExtra.subscriber.ts +++ b/services/worker/src/services/subscribers/media/extractMediaExtra.subscriber.ts @@ -24,7 +24,7 @@ export const ExtractMediaExtraSubscriber = Subscriber( fp.RTE.chain( ({ media, extra }): RTE => pipe( - MediaRepository.save([{ ...media, extra }]), + MediaRepository.save([{ id: media.id, extra }]), fp.RTE.map((s) => s[0]), ), ), From 11e9c12dd9a9f11416348643a929151249cd2a11 Mon Sep 17 00:00:00 2001 From: ascariandrea Date: Wed, 15 Jan 2025 21:46:46 +0100 Subject: [PATCH 13/19] fix(backend): create event from url subscriber --- compose.yml | 4 +- lies.exposed.code-workspace | 1 + ...URL.flow.ts => createEventFromURL.flow.ts} | 54 ++++++++++--------- .../src/flows/event/extractFromURL.flow.ts | 16 +++--- .../events/createEventFromURL.pubSub.ts | 15 ++++++ .../scientific-study/createFromURL.pubSub.ts | 11 ---- .../src/queries/events/createEvent.query.ts | 2 +- .../events/scientificStudy.endpoint.ts | 2 +- .../src/io/http/Events/ScientificStudy.ts | 11 +--- .../@liexp/shared/src/io/http/Events/index.ts | 22 ++++++-- .../src/tests/arbitrary/Event.arbitrary.ts | 4 +- .../events/ScientificStudy.arbitrary.ts | 2 +- .../events/CreateEventFromLinkButton.tsx | 25 +-------- .../createFromPlainObject.flow.ts | 12 +++-- .../createScientificStudy.flow.ts | 29 +++++----- .../routes/events/createEvent.controller.ts | 43 +++++++++++++-- ...xtractScientificStudyFromUrl.controller.ts | 29 +++++++--- services/api/test/AppTest.ts | 2 +- services/api/test/vitest.config.e2e.ts | 6 +-- services/api/vitest.workspace.js | 5 +- .../services/subscribers/WorkerSubscribers.ts | 3 ++ .../event/createEventFromURL.subscriber.ts | 20 +++++++ 22 files changed, 191 insertions(+), 127 deletions(-) rename packages/@liexp/backend/src/flows/event/{scientific-study/createFromURL.flow.ts => createEventFromURL.flow.ts} (54%) create mode 100644 packages/@liexp/backend/src/pubsub/events/createEventFromURL.pubSub.ts delete mode 100644 packages/@liexp/backend/src/pubsub/events/scientific-study/createFromURL.pubSub.ts create mode 100644 services/worker/src/services/subscribers/event/createEventFromURL.subscriber.ts diff --git a/compose.yml b/compose.yml index 1a8a1dcdd..12462ffb7 100644 --- a/compose.yml +++ b/compose.yml @@ -125,8 +125,8 @@ services: - worker-node-modules:/usr/src/app/node_modules - ./packages/@liexp:/usr/src/app/packages/@liexp:ro - ./services/worker:/usr/src/app/services/worker:ro - - ./services/worker/config:/usr/src/app/services/worker/config:rw - - ./services/worker/temp:/usr/src/app/services/worker/temp:rw + - ./services/worker/config:/usr/src/app/services/worker/config:cached + - ./services/worker/temp:/usr/src/app/services/worker/temp:cached mem_limit: 512M restart: always networks: diff --git a/lies.exposed.code-workspace b/lies.exposed.code-workspace index 0910aba2d..8d3f0d851 100644 --- a/lies.exposed.code-workspace +++ b/lies.exposed.code-workspace @@ -63,6 +63,7 @@ "**/bower_components": true, "**/*.code-search": true, "build/**": true, + "coverage/**": true, "lib/**": true, }, "eslint.workingDirectories": [ diff --git a/packages/@liexp/backend/src/flows/event/scientific-study/createFromURL.flow.ts b/packages/@liexp/backend/src/flows/event/createEventFromURL.flow.ts similarity index 54% rename from packages/@liexp/backend/src/flows/event/scientific-study/createFromURL.flow.ts rename to packages/@liexp/backend/src/flows/event/createEventFromURL.flow.ts index abfa3cf02..e81d4091a 100644 --- a/packages/@liexp/backend/src/flows/event/scientific-study/createFromURL.flow.ts +++ b/packages/@liexp/backend/src/flows/event/createEventFromURL.flow.ts @@ -1,24 +1,24 @@ import { fp, pipe } from "@liexp/core/lib/fp/index.js"; -import { type URL } from "@liexp/shared/lib/io/http/Common/index.js"; -import { SCIENTIFIC_STUDY } from "@liexp/shared/lib/io/http/Events/EventType.js"; +import { type UUID, type URL } from "@liexp/shared/lib/io/http/Common/index.js"; +import { type EventType } from "@liexp/shared/lib/io/http/Events/EventType.js"; import * as O from "fp-ts/lib/Option.js"; import { type ReaderTaskEither } from "fp-ts/lib/ReaderTaskEither.js"; import * as TE from "fp-ts/lib/TaskEither.js"; import { Equal } from "typeorm"; -import { type ConfigContext } from "../../../context/config.context.js"; -import { type DatabaseContext } from "../../../context/db.context.js"; -import { type FSClientContext } from "../../../context/fs.context.js"; +import { type ConfigContext } from "../../context/config.context.js"; +import { type DatabaseContext } from "../../context/db.context.js"; +import { type FSClientContext } from "../../context/fs.context.js"; import { type NERProviderContext, type URLMetadataContext, -} from "../../../context/index.js"; -import { type LoggerContext } from "../../../context/logger.context.js"; -import { type PuppeteerProviderContext } from "../../../context/puppeteer.context.js"; -import { EventV2Entity } from "../../../entities/Event.v2.entity.js"; -import { type UserEntity } from "../../../entities/User.entity.js"; -import { ServerError } from "../../../errors/ServerError.js"; -import { findByURL } from "../../../queries/events/scientificStudy.query.js"; -import { extractEventFromURL } from "../extractFromURL.flow.js"; +} from "../../context/index.js"; +import { type LoggerContext } from "../../context/logger.context.js"; +import { type PuppeteerProviderContext } from "../../context/puppeteer.context.js"; +import { EventV2Entity } from "../../entities/Event.v2.entity.js"; +import { type UserEntity } from "../../entities/User.entity.js"; +import { ServerError } from "../../errors/ServerError.js"; +import { findByURL } from "../../queries/events/scientificStudy.query.js"; +import { extractEventFromURL } from "./extractFromURL.flow.js"; export const createEventFromURL = < C extends LoggerContext & @@ -30,7 +30,9 @@ export const createEventFromURL = < PuppeteerProviderContext, >( user: UserEntity, + eventId: UUID, url: URL, + type: EventType, ): ReaderTaskEither => { return pipe( findByURL(url), @@ -43,30 +45,32 @@ export const createEventFromURL = < fp.RTE.ask(), fp.RTE.chainTaskEitherK((ctx) => pipe( - ctx.puppeteer.getBrowser({}), - TE.mapLeft(ServerError.fromUnknown), - TE.chain((b) => - pipe( + ctx.puppeteer.execute({}, (b) => { + return pipe( TE.tryCatch( () => b.pages().then((p) => p[0]), ServerError.fromUnknown, ), TE.chain((p) => extractEventFromURL(p, user, { - type: SCIENTIFIC_STUDY.value, + type, url, })(ctx), ), - TE.chainFirst(() => { - return TE.tryCatch(() => b.close(), ServerError.fromUnknown); - }), - ), - ), + ); + }), TE.chain((meta) => { if (O.isSome(meta)) { - return ctx.db.save(EventV2Entity, [meta.value]); + return ctx.db.save(EventV2Entity, [ + { ...meta.value, id: eventId }, + ]); } - return TE.left(ServerError.of()); + + return TE.left( + ServerError.fromUnknown( + new Error(`No event can be extracted from url #{url} `), + ), + ); }), TE.chain(([result]) => ctx.db.findOneOrFail(EventV2Entity, { diff --git a/packages/@liexp/backend/src/flows/event/extractFromURL.flow.ts b/packages/@liexp/backend/src/flows/event/extractFromURL.flow.ts index eceb13fd5..2bdeb445f 100644 --- a/packages/@liexp/backend/src/flows/event/extractFromURL.flow.ts +++ b/packages/@liexp/backend/src/flows/event/extractFromURL.flow.ts @@ -28,7 +28,7 @@ import { ServerError } from "../../errors/ServerError.js"; import { extractRelationsFromURL } from "../admin/nlp/extractRelationsFromURL.flow.js"; import { fetchAndSave } from "../links/link.flow.js"; -const extractEventFromProviderLink = +const extractPageMetadataFromProviderLink = ( p: puppeteer.Page, host: string, @@ -170,6 +170,7 @@ const extractByProvider = p: puppeteer.Page, host: string, l: LinkEntity, + type: EventType, ): ReaderTaskEither> => (ctx) => { return pipe( @@ -177,7 +178,7 @@ const extractByProvider = TE.bind("relations", () => sequenceS(TE.ApplicativePar)({ relations: extractRelationsFromURL(p, l.url)(ctx), - provider: extractEventFromProviderLink(p, host, l)(ctx), + provider: extractPageMetadataFromProviderLink(p, host, l)(ctx), }), ), TE.bind( @@ -240,7 +241,7 @@ const extractByProvider = ); }, ServerError.fromUnknown), TE.map((suggestions) => - suggestions.find((s) => s.event.type === "ScientificStudy"), + suggestions.find((s) => s.event.type === type), ), TE.map(O.fromNullable), ); @@ -305,7 +306,10 @@ export const extractEventFromURL = ctx.logger.debug.log("Extracting event from host %s (%s)", host, l.url); return pipe( - fetchAndSave(user, l.url)(ctx), - TE.chain((le) => extractByProvider(p, host, le)(ctx)), - ); + fp.RTE.Do, + fp.RTE.bind("event", () => fetchAndSave(user, l.url)), + fp.RTE.chain(({ event }) => { + return pipe(extractByProvider(p, host, event, l.type)); + }), + )(ctx); }; diff --git a/packages/@liexp/backend/src/pubsub/events/createEventFromURL.pubSub.ts b/packages/@liexp/backend/src/pubsub/events/createEventFromURL.pubSub.ts new file mode 100644 index 000000000..a4020e84e --- /dev/null +++ b/packages/@liexp/backend/src/pubsub/events/createEventFromURL.pubSub.ts @@ -0,0 +1,15 @@ +import { URL } from "@liexp/shared/lib/io/http/Common/URL.js"; +import { UUID } from "@liexp/shared/lib/io/http/Common/UUID.js"; +import { EventType } from "@liexp/shared/lib/io/http/Events/EventType.js"; +import * as t from "io-ts"; +import { RedisPubSub } from "../../providers/redis/redis.provider.js"; + +export const CreateEventFromURLPubSub = RedisPubSub( + "event:create-from-url", + t.strict({ + url: URL, + type: EventType, + eventId: UUID, + userId: UUID, + }), +); diff --git a/packages/@liexp/backend/src/pubsub/events/scientific-study/createFromURL.pubSub.ts b/packages/@liexp/backend/src/pubsub/events/scientific-study/createFromURL.pubSub.ts deleted file mode 100644 index 4a495a34f..000000000 --- a/packages/@liexp/backend/src/pubsub/events/scientific-study/createFromURL.pubSub.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { EventType } from "@liexp/shared/lib/io/http/Events/EventType.js"; -import * as t from "io-ts"; -import { RedisPubSub } from "../../../providers/redis/redis.provider.js"; - -export const CreateScientificStudyFromURLPubSub = RedisPubSub( - "scientific-study:create-from-url", - t.strict({ - url: t.string, - type: EventType, - }), -); diff --git a/packages/@liexp/backend/src/queries/events/createEvent.query.ts b/packages/@liexp/backend/src/queries/events/createEvent.query.ts index bbf296fe6..2e55a3adc 100644 --- a/packages/@liexp/backend/src/queries/events/createEvent.query.ts +++ b/packages/@liexp/backend/src/queries/events/createEvent.query.ts @@ -14,7 +14,7 @@ import { fetchRelationIds } from "./fetchEventRelations.query.js"; export const createEventQuery = < C extends DatabaseContext & URLMetadataContext & LoggerContext, >( - input: http.Events.CreateEventBody, + input: http.Events.CreateEventPlainBody, ): ReaderTaskEither> => { return pipe( fetchRelationIds({ diff --git a/packages/@liexp/shared/src/endpoints/events/scientificStudy.endpoint.ts b/packages/@liexp/shared/src/endpoints/events/scientificStudy.endpoint.ts index f665a2c0d..45b38a08b 100644 --- a/packages/@liexp/shared/src/endpoints/events/scientificStudy.endpoint.ts +++ b/packages/@liexp/shared/src/endpoints/events/scientificStudy.endpoint.ts @@ -75,7 +75,7 @@ export const Edit = Endpoint({ Input: { Params: t.type({ id: UUID }), Body: t.strict( - propsOmit(CreateScientificStudyBody.types[0], ["type"]), + propsOmit(CreateScientificStudyBody, ["type"]), "CreateScientificStudyBody", ), }, diff --git a/packages/@liexp/shared/src/io/http/Events/ScientificStudy.ts b/packages/@liexp/shared/src/io/http/Events/ScientificStudy.ts index 32a27548d..6052152ef 100644 --- a/packages/@liexp/shared/src/io/http/Events/ScientificStudy.ts +++ b/packages/@liexp/shared/src/io/http/Events/ScientificStudy.ts @@ -1,6 +1,5 @@ import * as t from "io-ts"; import { UUID } from "io-ts-types/lib/UUID.js"; -import { URL } from "../Common/URL.js"; import { CreateEventCommon, EditEventCommon, @@ -21,20 +20,12 @@ export const ScientificStudyPayload = t.strict( export type ScientificStudyPayload = t.TypeOf; -export const CreateScientificStudyPlainBody = t.strict( +export const CreateScientificStudyBody = t.strict( { ...CreateEventCommon.type.props, type: SCIENTIFIC_STUDY, payload: ScientificStudyPayload, }, - "CreateScientificStudyPlainBody", -); -export type CreateScientificStudyPlainBody = t.TypeOf< - typeof CreateScientificStudyPlainBody ->; - -export const CreateScientificStudyBody = t.union( - [CreateScientificStudyPlainBody, t.strict({ url: URL })], "CreateScientificStudyBody", ); diff --git a/packages/@liexp/shared/src/io/http/Events/index.ts b/packages/@liexp/shared/src/io/http/Events/index.ts index 77c924daa..4c404ee61 100644 --- a/packages/@liexp/shared/src/io/http/Events/index.ts +++ b/packages/@liexp/shared/src/io/http/Events/index.ts @@ -1,7 +1,7 @@ import * as t from "io-ts"; import { type Actor } from "../Actor.js"; import { type Area } from "../Area.js"; -import { type UUID } from "../Common/index.js"; +import { URL, type UUID } from "../Common/index.js"; import { type Group } from "../Group.js"; import { type GroupMember } from "../GroupMember.js"; import { type Keyword } from "../Keyword.js"; @@ -43,17 +43,33 @@ export const EventMap: { [key in Event["type"]]: t.Mixed } = { Quote: Quote.Quote, }; -export const CreateEventBody = t.union( +export const EventFromURLBody = t.strict( + { + url: URL, + type: EventType, + }, + "EventFromURLBody", +); + +export type EventFromURLBody = t.TypeOf; + +export const CreateEventPlainBody = t.union( [ Book.CreateBookBody, Death.CreateDeathBody, Patent.CreatePatentBody, - ScientificStudy.CreateScientificStudyBody.types[0], + ScientificStudy.CreateScientificStudyBody, Uncategorized.CreateEventBody, Documentary.CreateDocumentaryBody, Transaction.CreateTransactionBody, Quote.CreateQuoteBody, ], + "CreateEventPlainBody", +); +export type CreateEventPlainBody = t.TypeOf; + +export const CreateEventBody = t.union( + [CreateEventPlainBody, EventFromURLBody], "CreateEventBody", ); diff --git a/packages/@liexp/shared/src/tests/arbitrary/Event.arbitrary.ts b/packages/@liexp/shared/src/tests/arbitrary/Event.arbitrary.ts index c6c210307..b41301d82 100644 --- a/packages/@liexp/shared/src/tests/arbitrary/Event.arbitrary.ts +++ b/packages/@liexp/shared/src/tests/arbitrary/Event.arbitrary.ts @@ -13,7 +13,7 @@ interface CreateEventBodyArbOpts { keywordIds?: boolean; } -const createEventProps = propsOmit(http.Events.CreateEventBody.types[4], [ +const createEventProps = propsOmit(http.Events.CreateEventPlainBody.types[4], [ "excerpt", "body", "date", @@ -27,7 +27,7 @@ export const CreateEventBodyArb = ({ linksIds = false, mediaIds = false, keywordIds = false, -}: CreateEventBodyArbOpts = {}): fc.Arbitrary => +}: CreateEventBodyArbOpts = {}): fc.Arbitrary => getArbitrary(t.strict(createEventProps)).map((b) => ({ ...b, excerpt: undefined, diff --git a/packages/@liexp/shared/src/tests/arbitrary/events/ScientificStudy.arbitrary.ts b/packages/@liexp/shared/src/tests/arbitrary/events/ScientificStudy.arbitrary.ts index eeea1edc0..378e0e9d3 100644 --- a/packages/@liexp/shared/src/tests/arbitrary/events/ScientificStudy.arbitrary.ts +++ b/packages/@liexp/shared/src/tests/arbitrary/events/ScientificStudy.arbitrary.ts @@ -7,7 +7,7 @@ import { URLArb } from "../URL.arbitrary.js"; import { UUIDArb } from "../common/UUID.arbitrary.js"; const createScientificStudyProps = propsOmit( - http.Events.ScientificStudy.CreateScientificStudyBody.types[0], + http.Events.ScientificStudy.CreateScientificStudyBody, ["excerpt", "body", "date", "draft", "payload", "media", "links", "keywords"], ); diff --git a/packages/@liexp/ui/src/components/admin/events/CreateEventFromLinkButton.tsx b/packages/@liexp/ui/src/components/admin/events/CreateEventFromLinkButton.tsx index 75e326a92..48961e980 100644 --- a/packages/@liexp/ui/src/components/admin/events/CreateEventFromLinkButton.tsx +++ b/packages/@liexp/ui/src/components/admin/events/CreateEventFromLinkButton.tsx @@ -1,18 +1,13 @@ import { flow, fp } from "@liexp/core/lib/fp/index.js"; -import { getRelationIdsFromEventRelations } from "@liexp/shared/lib/helpers/event/getEventRelationIds.js"; -import { getSuggestions } from "@liexp/shared/lib/helpers/event-suggestion.js"; import { type Link } from "@liexp/shared/lib/io/http/Link.js"; -import { type Media } from "@liexp/shared/lib/io/http/Media/Media.js"; import { type EventSuggestion } from "@liexp/shared/lib/io/http/index.js"; import * as io from "@liexp/shared/lib/io/index.js"; import { type Either } from "fp-ts/lib/Either.js"; -import * as O from "fp-ts/lib/Option.js"; import { useRecordContext } from "ra-core"; import * as React from "react"; import { Button } from "react-admin"; import { useNavigate } from "react-router"; import { useDataProvider } from "../../../hooks/useDataProvider.js"; -import { toBNDocument } from "../../Common/BlockNote/utils/utils.js"; import { ErrorBox } from "../../Common/ErrorBox.js"; import { Box, MenuItem, Select } from "../../mui/index.js"; import EventPreview from "../previews/EventPreview.js"; @@ -40,24 +35,8 @@ export const CreateEventFromLinkButton: React.FC = () => { return Promise.resolve(fp.E.right(suggestion)); } - const result = await apiProvider - .get("open-graph/metadata", { url: link.url, type: "Link" }) - .then(async ({ data: { metadata: m, relations } }: any) => { - const suggestions = await getSuggestions(toBNDocument)( - m, - O.some(link), - O.fromNullable(link.image as Media), - getRelationIdsFromEventRelations(relations.entities), - ); - - const suggestEvent = suggestions.find((t) => t.event.type === type); - if (suggestEvent) { - return fp.E.right(suggestEvent); - } - return fp.E.left(new Error("No suggestion found")); - }); - - return result; + const result = await apiProvider.post("events", { url: link.url, type }); + return result.data; }, [record, type], ); diff --git a/services/api/src/flows/events/scientific-studies/createFromPlainObject.flow.ts b/services/api/src/flows/events/scientific-studies/createFromPlainObject.flow.ts index a74f3bc8a..76b95acd8 100644 --- a/services/api/src/flows/events/scientific-studies/createFromPlainObject.flow.ts +++ b/services/api/src/flows/events/scientific-studies/createFromPlainObject.flow.ts @@ -1,18 +1,19 @@ import { EventV2Entity } from "@liexp/backend/lib/entities/Event.v2.entity.js"; import { type KeywordEntity } from "@liexp/backend/lib/entities/Keyword.entity.js"; import { type MediaEntity } from "@liexp/backend/lib/entities/Media.entity.js"; +import { type UserEntity } from "@liexp/backend/lib/entities/User.entity.js"; import { pipe } from "@liexp/core/lib/fp/index.js"; import { UUID } from "@liexp/shared/lib/io/http/Common/index.js"; -import { type CreateScientificStudyPlainBody } from "@liexp/shared/lib/io/http/Events/ScientificStudy.js"; +import { type CreateScientificStudyBody } from "@liexp/shared/lib/io/http/Events/ScientificStudy.js"; import * as TE from "fp-ts/lib/TaskEither.js"; import { type DeepPartial, Equal } from "typeorm"; import { type TEReader } from "#flows/flow.types.js"; export const createScientificStudyFromPlainObject = - ({ - payload, - ...body - }: CreateScientificStudyPlainBody): TEReader => + ( + { payload, ...body }: CreateScientificStudyBody, + user: UserEntity, + ): TEReader => (ctx) => { const scientificStudyData = { ...body, @@ -53,6 +54,7 @@ export const createScientificStudyFromPlainObject = ctx.db.save(EventV2Entity, [ { ...scientificStudyData, + user, }, ]), TE.chain(([result]) => diff --git a/services/api/src/flows/events/scientific-studies/createScientificStudy.flow.ts b/services/api/src/flows/events/scientific-studies/createScientificStudy.flow.ts index 7b7dc17ce..04e245f9f 100644 --- a/services/api/src/flows/events/scientific-studies/createScientificStudy.flow.ts +++ b/services/api/src/flows/events/scientific-studies/createScientificStudy.flow.ts @@ -1,27 +1,22 @@ import { type EventV2Entity } from "@liexp/backend/lib/entities/Event.v2.entity.js"; -import { UserEntity } from "@liexp/backend/lib/entities/User.entity.js"; -import { createEventFromURL } from "@liexp/backend/lib/flows/event/scientific-study/createFromURL.flow.js"; +import { UserRepository } from "@liexp/backend/lib/services/entity-repository.service.js"; import { fp, pipe } from "@liexp/core/lib/fp/index.js"; -import { CreateScientificStudyBody } from "@liexp/shared/lib/io/http/Events/ScientificStudy.js"; +import { type ScientificStudy } from "@liexp/shared/lib/io/http/Events/index.js"; +import { Equal } from "typeorm"; import { createScientificStudyFromPlainObject } from "./createFromPlainObject.flow.js"; import { type TEReader } from "#flows/flow.types.js"; import { ensureUserExists } from "#utils/user.utils.js"; export const createScientificStudy = ( - body: CreateScientificStudyBody, + body: ScientificStudy.CreateScientificStudyBody, req: Express.Request, ): TEReader => { - if (CreateScientificStudyBody.types[1].is(body)) { - return pipe( - ensureUserExists(req.user), - fp.RTE.fromEither, - fp.RTE.map((u) => { - const user = new UserEntity(); - user.id = u.id; - return user; - }), - fp.RTE.chain((u) => createEventFromURL(u, body.url)), - ); - } - return createScientificStudyFromPlainObject(body); + return pipe( + ensureUserExists(req.user), + fp.RTE.fromEither, + fp.RTE.chain((u) => + UserRepository.findOneOrFail({ where: { id: Equal(u.id) } }), + ), + fp.RTE.chain((u) => createScientificStudyFromPlainObject(body, u)), + ); }; diff --git a/services/api/src/routes/events/createEvent.controller.ts b/services/api/src/routes/events/createEvent.controller.ts index 1f41ba847..1ee0da29b 100644 --- a/services/api/src/routes/events/createEvent.controller.ts +++ b/services/api/src/routes/events/createEvent.controller.ts @@ -1,21 +1,56 @@ import { EventV2Entity } from "@liexp/backend/lib/entities/Event.v2.entity.js"; import { EventV2IO } from "@liexp/backend/lib/io/event/eventV2.io.js"; +import { CreateEventFromURLPubSub } from "@liexp/backend/lib/pubsub/events/createEventFromURL.pubSub.js"; import { createEventQuery } from "@liexp/backend/lib/queries/events/createEvent.query.js"; +import { UserRepository } from "@liexp/backend/lib/services/entity-repository.service.js"; import { LoggerService } from "@liexp/backend/lib/services/logger/logger.service.js"; import { pipe } from "@liexp/core/lib/fp/index.js"; import { Endpoints } from "@liexp/shared/lib/endpoints/index.js"; +import { uuid } from "@liexp/shared/lib/io/http/Common/UUID.js"; +import { EventFromURLBody } from "@liexp/shared/lib/io/http/Events/index.js"; +import { AdminCreate } from "@liexp/shared/lib/io/http/User.js"; import * as TE from "fp-ts/lib/TaskEither.js"; -import { Equal } from "typeorm"; +import { type DeepPartial, Equal } from "typeorm"; import { AddEndpoint } from "#routes/endpoint.subscriber.js"; import { type Route } from "#routes/route.types.js"; -import { authenticationHandler } from "#utils/authenticationHandler.js"; +import { + authenticationHandler, + RequestDecoder, +} from "#utils/authenticationHandler.js"; export const CreateEventRoute: Route = (r, ctx) => { AddEndpoint(r, authenticationHandler(["admin:create"])(ctx))( Endpoints.Event.Create, - ({ body }) => { + ({ body }, req) => { return pipe( - createEventQuery(body)(ctx), + RequestDecoder.decodeUserFromRequest(req, [AdminCreate.value])(ctx), + TE.fromIOEither, + TE.chain((u) => + UserRepository.findOneOrFail({ where: { id: Equal(u.id) } })(ctx), + ), + TE.chain((user) => + EventFromURLBody.is(body) + ? pipe( + uuid(), + TE.right, + TE.chainFirst((id) => + CreateEventFromURLPubSub.publish({ + ...body, + eventId: id, + userId: user.id, + })(ctx), + ), + TE.map( + (id) => + ({ + id, + type: body.type, + date: new Date(), + }) as DeepPartial, + ), + ) + : createEventQuery(body)(ctx), + ), LoggerService.TE.debug(ctx, "Create data %O"), TE.chain((data) => ctx.db.save(EventV2Entity, [data])), TE.chain(([event]) => diff --git a/services/api/src/routes/events/scientific-study/extractScientificStudyFromUrl.controller.ts b/services/api/src/routes/events/scientific-study/extractScientificStudyFromUrl.controller.ts index c19fbcbb9..2dcde9af2 100644 --- a/services/api/src/routes/events/scientific-study/extractScientificStudyFromUrl.controller.ts +++ b/services/api/src/routes/events/scientific-study/extractScientificStudyFromUrl.controller.ts @@ -1,7 +1,7 @@ import { EventV2Entity } from "@liexp/backend/lib/entities/Event.v2.entity.js"; import { EventV2IO } from "@liexp/backend/lib/io/event/eventV2.io.js"; -import { CreateScientificStudyFromURLPubSub } from "@liexp/backend/lib/pubsub/events/scientific-study/createFromURL.pubSub.js"; -import { pipe } from "@liexp/core/lib/fp/index.js"; +import { CreateEventFromURLPubSub } from "@liexp/backend/lib/pubsub/events/createEventFromURL.pubSub.js"; +import { fp, pipe } from "@liexp/core/lib/fp/index.js"; import { Endpoints } from "@liexp/shared/lib/endpoints/index.js"; import { SCIENTIFIC_STUDY } from "@liexp/shared/lib/io/http/Events/EventType.js"; import { @@ -13,7 +13,10 @@ import * as TE from "fp-ts/lib/TaskEither.js"; import { Equal } from "typeorm"; import { AddEndpoint } from "#routes/endpoint.subscriber.js"; import { type Route } from "#routes/route.types.js"; -import { authenticationHandler } from "#utils/authenticationHandler.js"; +import { + authenticationHandler, + RequestDecoder, +} from "#utils/authenticationHandler.js"; export const MakeExtractScientificStudyFromURLRoute: Route = (r, ctx) => { AddEndpoint( @@ -25,17 +28,27 @@ export const MakeExtractScientificStudyFromURLRoute: Route = (r, ctx) => { ])(ctx), )( Endpoints.ScientificStudy.Custom.ExtractFromURL, - ({ params: { id } }, req) => { return pipe( - ctx.db.findOneOrFail(EventV2Entity, { where: { id: Equal(id) } }), - TE.chainFirst((event) => - CreateScientificStudyFromURLPubSub.publish({ + TE.Do, + TE.bind("event", () => + ctx.db.findOneOrFail(EventV2Entity, { where: { id: Equal(id) } }), + ), + TE.bind("user", () => + pipe( + RequestDecoder.decodeUserFromRequest(req, [AdminCreate.value])(ctx), + fp.TE.fromIOEither, + ), + ), + TE.chainFirst(({ user, event }) => + CreateEventFromURLPubSub.publish({ type: SCIENTIFIC_STUDY.value, url: (event.payload as any).url, + eventId: event.id, + userId: user.id, })(ctx), ), - TE.chainEitherK(EventV2IO.decodeSingle), + TE.chainEitherK(({ event }) => EventV2IO.decodeSingle(event)), TE.map((data) => ({ body: { data, diff --git a/services/api/test/AppTest.ts b/services/api/test/AppTest.ts index 2c2cfd594..b44bc4b5d 100644 --- a/services/api/test/AppTest.ts +++ b/services/api/test/AppTest.ts @@ -79,7 +79,7 @@ export const loadAppContext = async ( ), }), TE.map(({ db, env }) => { - const config = Config(env, path.resolve(__dirname, "..")) + const config = Config(env, path.resolve(__dirname, "../temp")) return ({ env, diff --git a/services/api/test/vitest.config.e2e.ts b/services/api/test/vitest.config.e2e.ts index c69058dc8..e3b85bddf 100644 --- a/services/api/test/vitest.config.e2e.ts +++ b/services/api/test/vitest.config.e2e.ts @@ -14,11 +14,11 @@ const config = mergeConfig( setupFiles: [toAlias(`testSetup.ts`)], globalSetup: [toAlias(`globalSetup.ts`)], exclude: ["**/build", "**/src/migrations", "**/src/scripts"], - pool: "threads", + pool: "vmThreads", poolOptions: { threads: { - singleThread: process.env.CI ? true : false, - isolate: process.env.CI ? true : false, + singleThread: process.env.CI === "true" ? true : false, + isolate: false, }, }, }, diff --git a/services/api/vitest.workspace.js b/services/api/vitest.workspace.js index 2b651e41e..8f9cb512c 100644 --- a/services/api/vitest.workspace.js +++ b/services/api/vitest.workspace.js @@ -1,4 +1 @@ -export default [ - './test/vitest.config.spec.ts', - './test/vitest.config.e2e.ts', -] \ No newline at end of file +export default ["./test/vitest.config.spec.ts", "./test/vitest.config.e2e.ts"]; diff --git a/services/worker/src/services/subscribers/WorkerSubscribers.ts b/services/worker/src/services/subscribers/WorkerSubscribers.ts index 63ad78819..7fbbc220f 100644 --- a/services/worker/src/services/subscribers/WorkerSubscribers.ts +++ b/services/worker/src/services/subscribers/WorkerSubscribers.ts @@ -1,6 +1,7 @@ import { type Subscriber } from "@liexp/backend/lib/providers/redis/redis.provider.js"; import { fp, pipe } from "@liexp/core/lib/fp/index.js"; import { type RTE } from "../../types.js"; +import { CreateEventFromURLSubscriber } from "./event/createEventFromURL.subscriber.js"; import { ExtractMediaExtraSubscriber } from "./media/extractMediaExtra.subscriber.js"; import { GenerateThumbnailSubscriber } from "./media/generateThumbnail.subscriber.js"; import { TransferFromExternalProviderSubscriber } from "./media/transferFromExternalProvider.subscriber.js"; @@ -15,6 +16,8 @@ export const WorkerSubscribers: RTE = (ctx) => { GenerateThumbnailSubscriber, ExtractMediaExtraSubscriber, TransferFromExternalProviderSubscriber, + // event + CreateEventFromURLSubscriber, // social posts PostToSocialPlatformsSubscriber, // admin diff --git a/services/worker/src/services/subscribers/event/createEventFromURL.subscriber.ts b/services/worker/src/services/subscribers/event/createEventFromURL.subscriber.ts new file mode 100644 index 000000000..4c417246e --- /dev/null +++ b/services/worker/src/services/subscribers/event/createEventFromURL.subscriber.ts @@ -0,0 +1,20 @@ +import { createEventFromURL } from "@liexp/backend/lib/flows/event/createEventFromURL.flow.js"; +import { Subscriber } from "@liexp/backend/lib/providers/redis/redis.provider.js"; +import { CreateEventFromURLPubSub } from "@liexp/backend/lib/pubsub/events/createEventFromURL.pubSub.js"; +import { UserRepository } from "@liexp/backend/lib/services/entity-repository.service.js"; +import { fp } from "@liexp/core/lib/fp/index.js"; +import { pipe } from "fp-ts/lib/function.js"; +import { Equal } from "typeorm"; +import { type RTE } from "../../../types.js"; + +export const CreateEventFromURLSubscriber = Subscriber( + CreateEventFromURLPubSub, + (payload): RTE => + pipe( + UserRepository.findOneOrFail({ where: { id: Equal(payload.userId) } }), + fp.RTE.chain((user) => + createEventFromURL(user, payload.eventId, payload.url, payload.type), + ), + fp.RTE.map(() => undefined), + ), +); From 87dcf7d202fcab24844adec30dbce0eed116cb85 Mon Sep 17 00:00:00 2001 From: ascariandrea Date: Thu, 16 Jan 2025 21:57:34 +0100 Subject: [PATCH 14/19] fix: extract implementation from context make --- .github/workflows/packages-pull-request.yml | 2 + .../@liexp/backend/src/context/api.context.ts | 2 +- packages/@liexp/backend/src/context/index.ts | 5 - .../src/context/urlMetadata.context.ts | 5 + packages/@liexp/backend/src/errors/index.ts | 2 +- .../event/createEventFromURL.flow.spec.ts | 132 +++++++++++ .../flows/event/createEventFromURL.flow.ts | 24 +- .../flows/event/extractFromURL.flow.spec.ts | 135 +++++++++++ .../src/flows/event/extractFromURL.flow.ts | 109 ++++----- .../backend/src/flows/links/link.flow.ts | 2 +- .../thumbnails/extractMP4Thumbnail.flow.ts | 2 +- .../src/flows/tg/MessageParser/index.ts | 2 +- .../createFromTGMessage.flow.spec.ts | 65 ++---- .../upsertPinnedMessage.flow.spec.ts | 11 +- .../src/flows/tg/createFromTGMessage.flow.ts | 2 +- .../src/flows/tg/parseMessages.flow.ts | 2 +- .../backend/src/flows/tg/parseURL.flow.ts | 2 +- .../src/providers/URLMetadata.provider.ts | 2 +- .../providers/ffmpeg/ffmpeg.provider.spec.ts | 2 +- .../backend/src/providers/fs/fs.provider.ts | 25 +- .../backend/src/providers/ner/ner.provider.ts | 5 +- .../src/providers/puppeteer.provider.ts | 12 +- .../src/providers/redis/RedisPubSub.ts | 44 ++++ .../backend/src/providers/redis/Subscriber.ts | 74 ++++++ .../src/providers/redis/redis.error.ts | 25 ++ .../src/providers/redis/redis.provider.ts | 147 ++---------- ....provider.ts => creates3ProviderConfig.ts} | 17 +- .../backend/src/providers/tg/tg.provider.ts | 8 +- .../src/pubsub/buildImageWithSharp.pubSub.ts | 8 +- .../events/createEventFromURL.pubSub.ts | 2 +- .../src/pubsub/jobs/processJobDone.pubSub.ts | 2 +- .../pubsub/media/createThumbnail.pubSub.ts | 2 +- .../pubsub/media/extractMediaExtra.pubSub.ts | 2 +- .../pubsub/media/generateThumbnail.pubSub.ts | 2 +- .../transferFromExternalProvider.pubSub.ts | 2 +- .../nlp/extractEntitiesWithNLP.pubSub.ts | 2 +- .../pubsub/postToSocialPlatforms.pubSub.ts | 2 +- .../src/pubsub/searchFromWikipedia.pubSub.ts | 2 +- .../pubsub/stats/createEntityStats.pubSub.ts | 2 +- .../src/queries/events/createEvent.query.ts | 2 +- .../src/queries/events/editEvent.query.ts | 2 +- .../events/fetchEventRelations.query.ts | 2 +- packages/@liexp/backend/src/test/index.ts | 121 ++++++++++ packages/@liexp/backend/src/test/mocks.ts | 38 ++- .../@liexp/backend/src/test/mocks/db.mock.ts | 2 + .../@liexp/backend/src/test/mocks/fs.mock.ts | 9 + .../backend/src/test/mocks/mock.utils.ts | 20 ++ .../backend/src/test/mocks/sharp.mock.ts | 7 +- ...1785bf42b588eaa482b4a024c964d3096dc6e0.txt | 1 + ....timestamp-1737064274359-67b01676a0689.mjs | 57 +++++ .../shared/src/endpoints/admin.endpoints.ts | 2 +- .../src/tests/arbitrary/Date.arbitrary.ts | 2 +- .../HumanReadableString.arbitrary.ts | 2 +- .../src/tests/arbitrary/URL.arbitrary.ts | 2 +- .../tests/arbitrary/common/UUID.arbitrary.ts | 2 +- .../events/ScientificStudy.arbitrary.ts | 2 +- services/ai-bot/src/run.ts | 3 +- services/api/src/app/config.ts | 8 - services/api/src/context/context.type.ts | 2 +- services/api/src/context/index.ts | 20 +- services/api/src/io/ControllerError.ts | 2 +- .../admin/images/buildImage.controller.ts | 8 +- .../events/__tests__/searchEvents.e2e.ts | 2 +- .../__tests__/createScientificStudy.e2e.ts | 82 ------- .../routes/media/__tests__/createMedia.e2e.ts | 1 - services/api/src/run.ts | 8 + services/api/test/AppTest.ts | 14 +- services/api/test/GetDockerContainer.ts | 221 +++++++++--------- services/api/test/testSetup.ts | 15 -- services/api/test/vitest.config.e2e.ts | 13 +- services/worker/src/bin/start-ctx.ts | 5 +- services/worker/src/context/context.ts | 2 +- services/worker/src/context/load.ts | 87 ++++++- services/worker/src/context/make.ts | 178 +++++++------- services/worker/src/io/worker.error.ts | 2 +- .../services/subscribers/WorkerSubscribers.ts | 2 +- .../event/createEventFromURL.subscriber.ts | 2 +- .../media/extractMediaExtra.subscriber.ts | 2 +- .../media/generateThumbnail.subscriber.ts | 2 +- ...transferFromExternalProvider.subscriber.ts | 2 +- .../nlp/extractEntitiesWithNLP.subscriber.ts | 2 +- .../PostToSocialPlatforms.subscriber.ts | 5 +- services/worker/test/WorkerTest.ts | 4 +- 83 files changed, 1166 insertions(+), 694 deletions(-) create mode 100644 packages/@liexp/backend/src/context/urlMetadata.context.ts create mode 100644 packages/@liexp/backend/src/flows/event/createEventFromURL.flow.spec.ts create mode 100644 packages/@liexp/backend/src/flows/event/extractFromURL.flow.spec.ts create mode 100644 packages/@liexp/backend/src/providers/redis/RedisPubSub.ts create mode 100644 packages/@liexp/backend/src/providers/redis/Subscriber.ts create mode 100644 packages/@liexp/backend/src/providers/redis/redis.error.ts rename packages/@liexp/backend/src/providers/space/{creates3.provider.ts => creates3ProviderConfig.ts} (68%) create mode 100644 packages/@liexp/backend/src/test/index.ts create mode 100644 packages/@liexp/backend/src/test/mocks/fs.mock.ts create mode 100644 packages/@liexp/backend/src/test/mocks/mock.utils.ts create mode 100644 packages/@liexp/backend/urls/0d1785bf42b588eaa482b4a024c964d3096dc6e0.txt create mode 100644 packages/@liexp/backend/vitest.config.ts.timestamp-1737064274359-67b01676a0689.mjs diff --git a/.github/workflows/packages-pull-request.yml b/.github/workflows/packages-pull-request.yml index a69071441..5f72b030d 100644 --- a/.github/workflows/packages-pull-request.yml +++ b/.github/workflows/packages-pull-request.yml @@ -30,6 +30,7 @@ jobs: pnpm core lint pnpm shared lint pnpm test lint + pnpm backend lint pnpm ui lint - name: Run tests @@ -37,3 +38,4 @@ jobs: DEBUG: "-@liexp*" run: | pnpm shared test + pnpm backend test diff --git a/packages/@liexp/backend/src/context/api.context.ts b/packages/@liexp/backend/src/context/api.context.ts index f91b585df..bc4b3a9af 100644 --- a/packages/@liexp/backend/src/context/api.context.ts +++ b/packages/@liexp/backend/src/context/api.context.ts @@ -1,5 +1,5 @@ import { type Endpoints } from "@liexp/shared/lib/endpoints/index.js"; -import { type EndpointsRESTClient } from "@liexp/shared/lib/providers/EndpointsRESTClient/types"; +import { type EndpointsRESTClient } from "@liexp/shared/lib/providers/EndpointsRESTClient/types.js"; export interface APIContext { api: EndpointsRESTClient; diff --git a/packages/@liexp/backend/src/context/index.ts b/packages/@liexp/backend/src/context/index.ts index 105aa6dca..afdd6d2d8 100644 --- a/packages/@liexp/backend/src/context/index.ts +++ b/packages/@liexp/backend/src/context/index.ts @@ -1,4 +1,3 @@ -import { type URLMetadataClient } from "../providers/URLMetadata.provider.js"; import { type FFMPEGProvider } from "../providers/ffmpeg/ffmpeg.provider.js"; import { type GeocodeProvider } from "../providers/geocode/geocode.provider.js"; import { type IGProvider } from "../providers/ig/ig.provider.js"; @@ -7,10 +6,6 @@ import { type NERProvider } from "../providers/ner/ner.provider.js"; import { type TGBotProvider } from "../providers/tg/tg.provider.js"; import { type WikipediaProvider } from "../providers/wikipedia/wikipedia.provider.js"; -export interface URLMetadataContext { - urlMetadata: URLMetadataClient; -} - export interface FFMPEGProviderContext { ffmpeg: FFMPEGProvider; } diff --git a/packages/@liexp/backend/src/context/urlMetadata.context.ts b/packages/@liexp/backend/src/context/urlMetadata.context.ts new file mode 100644 index 000000000..8a0a53715 --- /dev/null +++ b/packages/@liexp/backend/src/context/urlMetadata.context.ts @@ -0,0 +1,5 @@ +import type { URLMetadataClient } from "../providers/URLMetadata.provider.js"; + +export interface URLMetadataContext { + urlMetadata: URLMetadataClient; +} diff --git a/packages/@liexp/backend/src/errors/index.ts b/packages/@liexp/backend/src/errors/index.ts index 058c4917a..28c5aa958 100644 --- a/packages/@liexp/backend/src/errors/index.ts +++ b/packages/@liexp/backend/src/errors/index.ts @@ -3,4 +3,4 @@ export * from "./NotAuthorizedError.js"; export * from "./NotFoundError.js"; export * from "./ServerError.js"; -export { IOError } from "ts-io-error/lib/index.js"; +export { IOError } from "ts-io-error"; diff --git a/packages/@liexp/backend/src/flows/event/createEventFromURL.flow.spec.ts b/packages/@liexp/backend/src/flows/event/createEventFromURL.flow.spec.ts new file mode 100644 index 000000000..07fff8ffe --- /dev/null +++ b/packages/@liexp/backend/src/flows/event/createEventFromURL.flow.spec.ts @@ -0,0 +1,132 @@ +import { fp, pipe } from "@liexp/core/lib/fp/index.js"; +import { uuid } from "@liexp/shared/lib/io/http/Common/UUID.js"; +import { SCIENTIFIC_STUDY } from "@liexp/shared/lib/io/http/Events/EventType.js"; +import { HumanReadableStringArb } from "@liexp/shared/lib/tests/arbitrary/HumanReadableString.arbitrary.js"; +import { throwTE } from "@liexp/shared/lib/utils/task.utils.js"; +import { sanitizeURL } from "@liexp/shared/lib/utils/url.utils.js"; +import { fc } from "@liexp/test"; +import { describe, expect, it } from "vitest"; +import { mockDeep } from "vitest-mock-extended"; +import { EventV2Entity } from "../../entities/Event.v2.entity.js"; +import { UserEntity } from "../../entities/User.entity.js"; +import { initContext } from "../../test/index.js"; +import { mockedContext, mockTERightOnce } from "../../test/mocks/mock.utils.js"; +import { + createEventFromURL, + type CreateEventFromURLContext, +} from "./createEventFromURL.flow.js"; + +describe(createEventFromURL.name, () => { + const appTest = { + ctx: mockedContext({ + puppeteer: mockDeep(), + logger: mockDeep(), + db: mockDeep(), + ner: mockDeep(), + fs: mockDeep(), + urlMetadata: mockDeep(), + config: initContext().config, + }), + }; + + it("should create an event from a URL", async () => { + const [url] = fc + .sample(fc.nat(), 1) + .map((id) => `https://www.sciencedirect.com/article/${id}` as any); + + const title = fc.sample(HumanReadableStringArb(), 1)[0]; + const description = fc.sample(HumanReadableStringArb(), 1)[0]; + + // no url in db + mockTERightOnce(appTest.ctx.db.execQuery, () => null); + // event by url + mockTERightOnce(appTest.ctx.puppeteer.execute, () => + fp.O.some({ + type: SCIENTIFIC_STUDY.value, + date: new Date(), + payload: { + title, + url, + description, + }, + }), + ); + + // link by url + let savedEvent: any; + mockTERightOnce(appTest.ctx.db.save, (_, event) => { + savedEvent = event[0]; + return event; + }); + + mockTERightOnce(appTest.ctx.db.findOneOrFail, () => savedEvent); + + // mocks.urlMetadata.fetchMetadata.mockResolvedValue({ + // title, + // description, + // url: scientificStudyData.url, + // keywords: [], + // }); + + // mockTERightOnce(appTest.ctx.puppeteer.getBrowser, () => null); + // mocks.puppeteer.page.goto.mockResolvedValueOnce(undefined); + + // // evaluate title + // mocks.puppeteer.page.$eval.mockResolvedValueOnce(title); + // // evaluate dropdown click + // mocks.puppeteer.page.click.mockResolvedValueOnce(undefined); + // // evaluate date string + // mocks.puppeteer.page.$eval.mockResolvedValueOnce([ + // "Received 27 July 2020", + // "Accepted 1 August 2020", + // ]); + // // wait for + // mocks.puppeteer.page.waitForSelector.mockResolvedValueOnce(undefined); + // mocks.puppeteer.page.$$.mockResolvedValueOnce([ + // { + // evaluate: vi.fn().mockResolvedValue(description), + // }, + // ]); + + // mocks.puppeteer.page.$eval.mockResolvedValueOnce("page content"); + + // mocks.ner.winkMethods.learnCustomEntities.mockResolvedValueOnce({} as any); + // mocks.ner.doc.out.mockReturnValue([]); + // mocks.ner.doc.sentences.mockReturnValue({ each: vi.fn() } as any); + // mocks.ner.doc.customEntities.mockReturnValue({ + // out: vi.fn().mockReturnValue([]), + // } as any); + // mocks.ner.doc.tokens.mockReturnValue({ each: vi.fn() } as any); + + // mocks.fs.existsSync.mockReturnValue(false); + // mocks.fs.readFileSync.mockReturnValue("[]"); + + const user = new UserEntity(); + + const event: any = await pipe( + createEventFromURL( + user, + uuid(), + url, + SCIENTIFIC_STUDY.value, + )(appTest.ctx), + throwTE, + ); + + expect(appTest.ctx.db.save).toHaveBeenCalledWith(EventV2Entity, [ + expect.objectContaining({ + type: SCIENTIFIC_STUDY.value, + payload: { + title, + description, + url: sanitizeURL(url), + }, + }), + ]); + + expect(event.type).toBe(SCIENTIFIC_STUDY.value); + expect(event.date).toBe(savedEvent.date); + + expect(event.payload).toMatchObject(savedEvent.payload); + }); +}); diff --git a/packages/@liexp/backend/src/flows/event/createEventFromURL.flow.ts b/packages/@liexp/backend/src/flows/event/createEventFromURL.flow.ts index e81d4091a..a2e1ee03d 100644 --- a/packages/@liexp/backend/src/flows/event/createEventFromURL.flow.ts +++ b/packages/@liexp/backend/src/flows/event/createEventFromURL.flow.ts @@ -8,27 +8,25 @@ import { Equal } from "typeorm"; import { type ConfigContext } from "../../context/config.context.js"; import { type DatabaseContext } from "../../context/db.context.js"; import { type FSClientContext } from "../../context/fs.context.js"; -import { - type NERProviderContext, - type URLMetadataContext, -} from "../../context/index.js"; +import { type NERProviderContext } from "../../context/index.js"; import { type LoggerContext } from "../../context/logger.context.js"; import { type PuppeteerProviderContext } from "../../context/puppeteer.context.js"; +import { type URLMetadataContext } from "../../context/urlMetadata.context.js"; import { EventV2Entity } from "../../entities/Event.v2.entity.js"; import { type UserEntity } from "../../entities/User.entity.js"; import { ServerError } from "../../errors/ServerError.js"; import { findByURL } from "../../queries/events/scientificStudy.query.js"; import { extractEventFromURL } from "./extractFromURL.flow.js"; -export const createEventFromURL = < - C extends LoggerContext & - ConfigContext & - FSClientContext & - NERProviderContext & - DatabaseContext & - URLMetadataContext & - PuppeteerProviderContext, ->( +export type CreateEventFromURLContext = LoggerContext & + ConfigContext & + FSClientContext & + NERProviderContext & + DatabaseContext & + URLMetadataContext & + PuppeteerProviderContext; + +export const createEventFromURL = ( user: UserEntity, eventId: UUID, url: URL, diff --git a/packages/@liexp/backend/src/flows/event/extractFromURL.flow.spec.ts b/packages/@liexp/backend/src/flows/event/extractFromURL.flow.spec.ts new file mode 100644 index 000000000..f29744f69 --- /dev/null +++ b/packages/@liexp/backend/src/flows/event/extractFromURL.flow.spec.ts @@ -0,0 +1,135 @@ +import { fp, pipe } from "@liexp/core/lib/fp/index.js"; +import { uuid } from "@liexp/shared/lib/io/http/Common/UUID.js"; +import { SCIENTIFIC_STUDY } from "@liexp/shared/lib/io/http/Events/EventType.js"; +import { HumanReadableStringArb } from "@liexp/shared/lib/tests/arbitrary/HumanReadableString.arbitrary.js"; +import { throwTE } from "@liexp/shared/lib/utils/task.utils.js"; +import { sanitizeURL } from "@liexp/shared/lib/utils/url.utils.js"; +import { fc } from "@liexp/test"; +import { describe, expect, it, vi } from "vitest"; +import { mock } from "vitest-mock-extended"; +import { LinkEntity } from "../../entities/Link.entity.js"; +import { UserEntity } from "../../entities/User.entity.js"; +import { initContext, testConfig } from "../../test/index.js"; +import { mockedContext, mockTERightOnce } from "../../test/mocks/mock.utils.js"; +import { mocks } from "../../test/mocks.js"; +import { + createEventFromURL, + type CreateEventFromURLContext, +} from "./createEventFromURL.flow.js"; +import { extractEventFromURL } from "./extractFromURL.flow.js"; + +describe.skip(extractEventFromURL.name, () => { + const appTest = { + ctx: mockedContext({ + puppeteer: mock(), + logger: mock(), + db: mock(), + ner: mock(), + fs: mock(), + urlMetadata: mock(), + config: testConfig, + }), + }; + + it("should create an event from a URL", async () => { + const [url] = fc + .sample(fc.nat(), 1) + .map((id) => `https://www.sciencedirect.com/article/${id}` as any); + + const title = fc.sample(HumanReadableStringArb(), 1)[0]; + const description = fc.sample(HumanReadableStringArb(), 1)[0]; + + const scientificStudyData = { url }; + + // event by url + mockTERightOnce(appTest.ctx.db.execQuery, () => null); + // link by url + mockTERightOnce(appTest.ctx.db.findOne, () => null); + // save link + let savedEvent: any; + appTest.ctx.db.save.mockImplementation((_, link) => { + const l: any = link; + if (l[0].type === SCIENTIFIC_STUDY.value) { + savedEvent = l[0]; + } + return fp.TE.right(link); + }); + + mockTERightOnce(appTest.ctx.db.findOneOrFail, () => savedEvent); + + mocks.redis.publish.mockResolvedValue(1); + mocks.urlMetadata.fetchMetadata.mockResolvedValue({ + title, + description, + url: scientificStudyData.url, + keywords: [], + }); + + mockTERightOnce(appTest.ctx.puppeteer.getBrowser, () => null); + mocks.puppeteer.page.goto.mockResolvedValueOnce(undefined); + + // evaluate title + mocks.puppeteer.page.$eval.mockResolvedValueOnce(title); + // evaluate dropdown click + mocks.puppeteer.page.click.mockResolvedValueOnce(undefined); + // evaluate date string + mocks.puppeteer.page.$eval.mockResolvedValueOnce([ + "Received 27 July 2020", + "Accepted 1 August 2020", + ]); + // wait for + mocks.puppeteer.page.waitForSelector.mockResolvedValueOnce(undefined); + mocks.puppeteer.page.$$.mockResolvedValueOnce([ + { + evaluate: vi.fn().mockResolvedValue(description), + }, + ]); + + mocks.puppeteer.page.$eval.mockResolvedValueOnce("page content"); + + mocks.ner.winkMethods.learnCustomEntities.mockResolvedValueOnce({} as any); + mocks.ner.doc.out.mockReturnValue([]); + mocks.ner.doc.sentences.mockReturnValue({ each: vi.fn() } as any); + mocks.ner.doc.customEntities.mockReturnValue({ + out: vi.fn().mockReturnValue([]), + } as any); + mocks.ner.doc.tokens.mockReturnValue({ each: vi.fn() } as any); + + mocks.fs.existsSync.mockReturnValue(false); + mocks.fs.readFileSync.mockReturnValue("[]"); + + const user = new UserEntity(); + + const event: any = await pipe( + createEventFromURL( + user, + uuid(), + scientificStudyData.url, + SCIENTIFIC_STUDY.value, + )(appTest.ctx), + throwTE, + ); + + expect(mocks.ner).toHaveBeenCalledTimes(1); + expect(mocks.ner.winkMethods.learnCustomEntities).toHaveBeenCalledTimes(1); + expect(mocks.ner.winkMethods.readDoc).toHaveBeenCalledTimes(1); + expect(mocks.ner.doc.out).toHaveBeenCalledTimes(1); + + expect(mocks.db.connection.manager.save).toHaveBeenCalledWith( + LinkEntity, + + [ + expect.objectContaining({ + url: sanitizeURL(scientificStudyData.url), + }), + ], + undefined, + ); + + expect(event.type).toBe(SCIENTIFIC_STUDY.value); + expect(event.date).toBeDefined(); + + expect(event.payload.url).toBeInstanceOf(String); + expect(event.payload.title).toEqual(title); + }); +}); diff --git a/packages/@liexp/backend/src/flows/event/extractFromURL.flow.ts b/packages/@liexp/backend/src/flows/event/extractFromURL.flow.ts index 2bdeb445f..64e81da77 100644 --- a/packages/@liexp/backend/src/flows/event/extractFromURL.flow.ts +++ b/packages/@liexp/backend/src/flows/event/extractFromURL.flow.ts @@ -3,8 +3,10 @@ import { getRelationIdsFromEventRelations } from "@liexp/shared/lib/helpers/even import { getSuggestions } from "@liexp/shared/lib/helpers/event-suggestion.js"; import { uuid } from "@liexp/shared/lib/io/http/Common/UUID.js"; import { type URL as URLT } from "@liexp/shared/lib/io/http/Common/index.js"; -import { type EventType } from "@liexp/shared/lib/io/http/Events/EventType.js"; -import { type ImageType } from "@liexp/shared/lib/io/http/Media/index.js"; +import { + SCIENTIFIC_STUDY, + type EventType, +} from "@liexp/shared/lib/io/http/Events/EventType.js"; import { toInitialValue } from "@liexp/shared/lib/providers/blocknote/utils.js"; import { parse } from "date-fns"; import { sequenceS } from "fp-ts/lib/Apply.js"; @@ -16,15 +18,14 @@ import type * as puppeteer from "puppeteer-core"; import { type ConfigContext } from "../../context/config.context.js"; import { type DatabaseContext } from "../../context/db.context.js"; import { type FSClientContext } from "../../context/fs.context.js"; -import { - type URLMetadataContext, - type NERProviderContext, -} from "../../context/index.js"; +import { type NERProviderContext } from "../../context/index.js"; import { type LoggerContext } from "../../context/logger.context.js"; +import { type URLMetadataContext } from "../../context/urlMetadata.context.js"; import { type EventV2Entity } from "../../entities/Event.v2.entity.js"; import { type LinkEntity } from "../../entities/Link.entity.js"; import { type UserEntity } from "../../entities/User.entity.js"; import { ServerError } from "../../errors/ServerError.js"; +import { LinkIO } from "../../io/link.io.js"; import { extractRelationsFromURL } from "../admin/nlp/extractRelationsFromURL.flow.js"; import { fetchAndSave } from "../links/link.flow.js"; @@ -75,7 +76,7 @@ const extractPageMetadataFromProviderLink = ); return O.some({ - type: "ScientificStudy", + type: SCIENTIFIC_STUDY.value, title, date: date.toISOString(), description: contentText ?? "", @@ -113,7 +114,7 @@ const extractPageMetadataFromProviderLink = ); return O.some({ - type: "ScientificStudy", + type: SCIENTIFIC_STUDY.value, title, date: date.toISOString(), description: contentText ?? "", @@ -141,7 +142,7 @@ const extractPageMetadataFromProviderLink = ); return O.some({ - type: "ScientificStudy", + type: SCIENTIFIC_STUDY.value, title, date: date.toISOString(), description: contentText ?? "", @@ -176,7 +177,7 @@ const extractByProvider = return pipe( TE.Do, TE.bind("relations", () => - sequenceS(TE.ApplicativePar)({ + sequenceS(TE.ApplicativeSeq)({ relations: extractRelationsFromURL(p, l.url)(ctx), provider: extractPageMetadataFromProviderLink(p, host, l)(ctx), }), @@ -191,58 +192,46 @@ const extractByProvider = }) => { if (fp.O.isSome(provider)) { return pipe( - TE.tryCatch(() => { - return getSuggestions((v) => - Promise.resolve(toInitialValue(v)), - )( - provider.value, - O.some({ - id: l.id, - title: l.title, - description: l.description ?? l.title, - publishDate: l.publishDate ?? undefined, - provider: l.provider as any, - creator: l.creator?.id, - url: l.url, - image: l.image - ? { - ...l.image, - label: l.image.label ?? undefined, - description: l.image.description ?? undefined, - thumbnail: l.image.thumbnail ?? undefined, - type: l.image as any as ImageType, - extra: l.image.extra ?? undefined, - events: [], - links: [], - keywords: [], - areas: [], - } - : undefined, - keywords: [], - events: [], - actors: [], - groups: [], - media: [], - socialPosts: [], - createdAt: new Date(), - updatedAt: new Date(), - deletedAt: undefined, - }), - O.none, - getRelationIdsFromEventRelations({ - groupsMembers: [], - media: [], - areas: [], - actors: entities.actors as any[], - groups: entities.groups as any[], - keywords: entities.keywords as any[], - links: entities.links as any[], - }), + TE.Do, + TE.bind("link", () => { + return pipe( + LinkIO.decodeSingle(l), + fp.E.fold(() => fp.O.none, fp.O.some), + fp.TE.right, ); - }, ServerError.fromUnknown), - TE.map((suggestions) => - suggestions.find((s) => s.event.type === type), + }), + TE.bind("relations", () => + pipe( + fp.TE.right( + getRelationIdsFromEventRelations({ + groupsMembers: [], + media: [], + areas: [], + actors: entities.actors as any[], + groups: entities.groups as any[], + keywords: entities.keywords as any[], + links: entities.links as any[], + }), + ), + ), + ), + TE.chain(({ link, relations }) => + TE.tryCatch(() => { + const suggestionMaker = getSuggestions((v) => + Promise.resolve(toInitialValue(v)), + ); + + return suggestionMaker( + provider.value, + link, + O.none, + relations, + ); + }, ServerError.fromUnknown), ), + TE.map((suggestions) => { + return suggestions.find((s) => s.event.type === type); + }), TE.map(O.fromNullable), ); } diff --git a/packages/@liexp/backend/src/flows/links/link.flow.ts b/packages/@liexp/backend/src/flows/links/link.flow.ts index 7c593bee1..dcd5f9f05 100644 --- a/packages/@liexp/backend/src/flows/links/link.flow.ts +++ b/packages/@liexp/backend/src/flows/links/link.flow.ts @@ -11,8 +11,8 @@ import { DateFromISOString } from "io-ts-types/lib/DateFromISOString.js"; import { type Metadata } from "page-metadata-parser"; import { Equal } from "typeorm"; import { type DatabaseContext } from "../../context/db.context.js"; -import { type URLMetadataContext } from "../../context/index.js"; import { type LoggerContext } from "../../context/logger.context.js"; +import { type URLMetadataContext } from "../../context/urlMetadata.context.js"; import { type LinkEntity } from "../../entities/Link.entity.js"; import { type UserEntity } from "../../entities/User.entity.js"; import { ServerError } from "../../errors/ServerError.js"; diff --git a/packages/@liexp/backend/src/flows/media/thumbnails/extractMP4Thumbnail.flow.ts b/packages/@liexp/backend/src/flows/media/thumbnails/extractMP4Thumbnail.flow.ts index 1c865d712..6a651eb4d 100644 --- a/packages/@liexp/backend/src/flows/media/thumbnails/extractMP4Thumbnail.flow.ts +++ b/packages/@liexp/backend/src/flows/media/thumbnails/extractMP4Thumbnail.flow.ts @@ -1,4 +1,4 @@ -import * as fs from "node:fs/promises"; +import * as fs from "fs/promises"; import path from "path"; import { fp, pipe } from "@liexp/core/lib/fp/index.js"; import { diff --git a/packages/@liexp/backend/src/flows/tg/MessageParser/index.ts b/packages/@liexp/backend/src/flows/tg/MessageParser/index.ts index a0faf267d..1e009afc7 100644 --- a/packages/@liexp/backend/src/flows/tg/MessageParser/index.ts +++ b/packages/@liexp/backend/src/flows/tg/MessageParser/index.ts @@ -19,7 +19,6 @@ import { type ENVContext } from "../../../context/env.context.js"; import { type FSClientContext } from "../../../context/fs.context.js"; import { type HTTPProviderContext } from "../../../context/http.context.js"; import { - type URLMetadataContext, type TGBotProviderContext, type FFMPEGProviderContext, type ImgProcClientContext, @@ -29,6 +28,7 @@ import { type PDFProviderContext } from "../../../context/pdf.context.js"; import { type PuppeteerProviderContext } from "../../../context/puppeteer.context.js"; import { type QueuesProviderContext } from "../../../context/queue.context.js"; import { type SpaceContext } from "../../../context/space.context.js"; +import { type URLMetadataContext } from "../../../context/urlMetadata.context.js"; import { type UserEntity } from "../../../entities/User.entity.js"; import { type TGError } from "../../../providers/tg/tg.provider.js"; import { LoggerService } from "../../../services/logger/logger.service.js"; diff --git a/packages/@liexp/backend/src/flows/tg/__tests__/createFromTGMessage.flow.spec.ts b/packages/@liexp/backend/src/flows/tg/__tests__/createFromTGMessage.flow.spec.ts index f741896de..158766fb7 100644 --- a/packages/@liexp/backend/src/flows/tg/__tests__/createFromTGMessage.flow.spec.ts +++ b/packages/@liexp/backend/src/flows/tg/__tests__/createFromTGMessage.flow.spec.ts @@ -1,12 +1,8 @@ -import * as fs from "fs"; import path from "path"; -import { GetLogger } from "@liexp/core"; import { fp, pipe } from "@liexp/core/lib/fp/index.js"; import { getPlatformEmbedURL } from "@liexp/shared/lib/helpers/media.helper.js"; import { uuid } from "@liexp/shared/lib/io/http/Common/UUID.js"; import { AdminCreate } from "@liexp/shared/lib/io/http/User.js"; -import { HTTPProvider } from "@liexp/shared/lib/providers/http/http.provider.js"; -import { PDFProvider } from "@liexp/shared/lib/providers/pdf/pdf.provider.js"; import { HumanReadableStringArb } from "@liexp/shared/lib/tests/arbitrary/HumanReadableString.arbitrary.js"; import { URLArb } from "@liexp/shared/lib/tests/arbitrary/URL.arbitrary.js"; import { UserArb } from "@liexp/shared/lib/tests/arbitrary/User.arbitrary.js"; @@ -15,15 +11,12 @@ import { sanitizeURL } from "@liexp/shared/lib/utils/url.utils.js"; import { fc } from "@liexp/test"; import debug from "debug"; import type TelegramBot from "node-telegram-bot-api"; -import { afterAll, beforeAll, describe, expect, test, vi } from "vitest"; -import { GetFSClient } from "../../../providers/fs/fs.provider.js"; -import { GetDatabaseClient } from "../../../providers/orm/database.provider.js"; -import { GetPuppeteerProvider } from "../../../providers/puppeteer.provider.js"; -import { EventsConfig } from "../../../queries/config/index.js"; +import { beforeAll, describe, expect, test, vi } from "vitest"; import { TGMessageArb, TGPhotoArb, } from "../../../test/arbitraries/TGMessage.arb.js"; +import { initContext } from "../../../test/index.js"; import puppeteerMocks from "../../../test/mocks/puppeteer.mock.js"; import { mocks } from "../../../test/mocks.js"; import { type UserTest } from "../../../test/user.utils.js"; @@ -43,25 +36,7 @@ interface MessageTest { describe("Create From TG Message", () => { let admin: UserTest; - const ctx = { - db: GetDatabaseClient({ - ...mocks.db, - logger: GetLogger("test"), - }), - tg: mocks.tg, - http: HTTPProvider(mocks.axios as any), - logger: GetLogger("test"), - imgProc: {} as any, - s3: mocks.s3 as any, - env: {} as any, - urlMetadata: mocks.urlMetadata, - queue: mocks.queueFS as any, - config: { events: EventsConfig } as any, - fs: GetFSClient(), - ffmpeg: {} as any, - pdf: PDFProvider({ client: mocks.pdf }), - puppeteer: GetPuppeteerProvider(mocks.puppeteer, {}, {} as any), - }; + const ctx = initContext(); beforeAll(() => { [admin] = fc.sample(UserArb, 1).map((u) => ({ @@ -69,17 +44,10 @@ describe("Create From TG Message", () => { password: "password", permissions: [AdminCreate.value], })); - if (!fs.existsSync(tempDir)) { - fs.mkdirSync(tempDir, { recursive: true }); - } // admin = await saveUser(ctx, [AdminCreate.value]); }); - afterAll(() => { - fs.rmSync(tempDir, { recursive: true }); - }); - describe.skip("createEventSuggestion", () => { test( "succeeds when link is not yet present in db", @@ -211,11 +179,10 @@ describe("Create From TG Message", () => { tempDir, `${message.message_id}.png`, ); - fs.writeFileSync(tempFileLocation, new Uint8Array(10)); // mock tg download mocks.tg.getFileStream.mockImplementationOnce(() => - fp.TE.right(fs.createReadStream(tempFileLocation)), + fp.TE.right(mocks.fs.createReadStream(tempFileLocation)), ); // mock puppeteer goto @@ -502,13 +469,11 @@ describe("Create From TG Message", () => { test.skip.each(messageCases)( "Running message case $n", async (c: MessageTest) => { - const message = pipe( - fs.readFileSync( - path.resolve(__dirname, `../../../../temp/tg/messages/${c.n}.json`), - "utf-8", - ), - JSON.parse, - ); + const message = { + message_id: c.n, + date: new Date().getTime(), + chat: {} as any, + }; puppeteerMocks.page.emulate.mockReset().mockResolvedValueOnce({}); const urls = c.urls(message); @@ -536,11 +501,9 @@ describe("Create From TG Message", () => { `${message.message_id}.png`, ); - fs.writeFileSync(tempFileLocation, new Uint8Array(10)); - // mock tg download mocks.tg.api.getFileStream.mockImplementationOnce(() => - fs.createReadStream(tempFileLocation), + mocks.fs.createReadStream(tempFileLocation), ); // mock s3 upload @@ -558,13 +521,13 @@ describe("Create From TG Message", () => { `${message.message_id}.png`, ); - fs.writeFileSync(tempFileLocation, new Uint8Array(10)); - // mock tg download mocks.tg.api.getFileStream - .mockImplementationOnce(() => fs.createReadStream(tempFileLocation)) .mockImplementationOnce(() => - fs.createReadStream(tempFileLocation), + mocks.fs.createReadStream(tempFileLocation), + ) + .mockImplementationOnce(() => + mocks.fs.createReadStream(tempFileLocation), ); // mock s3 upload diff --git a/packages/@liexp/backend/src/flows/tg/__tests__/upsertPinnedMessage.flow.spec.ts b/packages/@liexp/backend/src/flows/tg/__tests__/upsertPinnedMessage.flow.spec.ts index 44bfc7429..d6f4bc861 100644 --- a/packages/@liexp/backend/src/flows/tg/__tests__/upsertPinnedMessage.flow.spec.ts +++ b/packages/@liexp/backend/src/flows/tg/__tests__/upsertPinnedMessage.flow.spec.ts @@ -3,14 +3,21 @@ import { ActorArb, UncategorizedArb } from "@liexp/shared/lib/tests/index.js"; import { throwTE } from "@liexp/shared/lib/utils/task.utils.js"; import { fc } from "@liexp/test"; import * as E from "fp-ts/lib/Either.js"; -import { describe, test } from "vitest"; +import { describe, expect, test } from "vitest"; import { ActorEntity } from "../../../entities/Actor.entity.js"; +import { EventV2Entity } from "../../../entities/Event.v2.entity.js"; +import { KeywordEntity } from "../../../entities/Keyword.entity.js"; +import { initContext } from "../../../test/index.js"; +import { mocks } from "../../../test/mocks.js"; import { toPinnedMessage, upsertPinnedMessage, } from "../upsertPinnedMessage.flow.js"; describe("Upsert Pinned Message Flow", () => { + const Test = { + ctx: initContext(), + }; test.skip("Should upsert the message with 5 keywords", async () => { const keywordCount = 10; const actorCount = 10; @@ -43,7 +50,7 @@ describe("Upsert Pinned Message Flow", () => { ), ); - Test.mocks.tg.upsertPinnedMessage.mockImplementationOnce( + mocks.tg.upsertPinnedMessage.mockImplementationOnce( (text) => () => Promise.resolve(E.right({ message_id: 1, text })), ); diff --git a/packages/@liexp/backend/src/flows/tg/createFromTGMessage.flow.ts b/packages/@liexp/backend/src/flows/tg/createFromTGMessage.flow.ts index 678504a3f..66a3f5a66 100644 --- a/packages/@liexp/backend/src/flows/tg/createFromTGMessage.flow.ts +++ b/packages/@liexp/backend/src/flows/tg/createFromTGMessage.flow.ts @@ -10,7 +10,6 @@ import { type ENVContext } from "../../context/env.context.js"; import { type FSClientContext } from "../../context/fs.context.js"; import { type HTTPProviderContext } from "../../context/http.context.js"; import { - type URLMetadataContext, type ImgProcClientContext, type TGBotProviderContext, type FFMPEGProviderContext, @@ -20,6 +19,7 @@ import { type PDFProviderContext } from "../../context/pdf.context.js"; import { type PuppeteerProviderContext } from "../../context/puppeteer.context.js"; import { type QueuesProviderContext } from "../../context/queue.context.js"; import { type SpaceContext } from "../../context/space.context.js"; +import { type URLMetadataContext } from "../../context/urlMetadata.context.js"; import { type PuppeteerError, toPuppeteerError, diff --git a/packages/@liexp/backend/src/flows/tg/parseMessages.flow.ts b/packages/@liexp/backend/src/flows/tg/parseMessages.flow.ts index 4b7f08003..fbc312f31 100644 --- a/packages/@liexp/backend/src/flows/tg/parseMessages.flow.ts +++ b/packages/@liexp/backend/src/flows/tg/parseMessages.flow.ts @@ -7,7 +7,6 @@ import { type ENVContext } from "../../context/env.context.js"; import { type FSClientContext } from "../../context/fs.context.js"; import { type HTTPProviderContext } from "../../context/http.context.js"; import { - type URLMetadataContext, type ImgProcClientContext, type TGBotProviderContext, type FFMPEGProviderContext, @@ -17,6 +16,7 @@ import { type PDFProviderContext } from "../../context/pdf.context.js"; import { type PuppeteerProviderContext } from "../../context/puppeteer.context.js"; import { type QueuesProviderContext } from "../../context/queue.context.js"; import { type SpaceContext } from "../../context/space.context.js"; +import { type URLMetadataContext } from "../../context/urlMetadata.context.js"; import { toTGError, type TGError } from "../../providers/tg/tg.provider.js"; import { LoggerService } from "../../services/logger/logger.service.js"; import { diff --git a/packages/@liexp/backend/src/flows/tg/parseURL.flow.ts b/packages/@liexp/backend/src/flows/tg/parseURL.flow.ts index 604e04d8e..d3221ace9 100644 --- a/packages/@liexp/backend/src/flows/tg/parseURL.flow.ts +++ b/packages/@liexp/backend/src/flows/tg/parseURL.flow.ts @@ -16,11 +16,11 @@ import type * as puppeteer from "puppeteer-core"; import { Equal } from "typeorm"; import { type DatabaseContext } from "../../context/db.context.js"; import { type ENVContext } from "../../context/env.context.js"; -import { type URLMetadataContext } from "../../context/index.js"; import { type LoggerContext } from "../../context/logger.context.js"; import { type PuppeteerProviderContext } from "../../context/puppeteer.context.js"; import { type QueuesProviderContext } from "../../context/queue.context.js"; import { type SpaceContext } from "../../context/space.context.js"; +import { type URLMetadataContext } from "../../context/urlMetadata.context.js"; import { LinkEntity } from "../../entities/Link.entity.js"; import { type UserEntity } from "../../entities/User.entity.js"; import { ServerError } from "../../errors/index.js"; diff --git a/packages/@liexp/backend/src/providers/URLMetadata.provider.ts b/packages/@liexp/backend/src/providers/URLMetadata.provider.ts index 08c047ef6..668931fde 100644 --- a/packages/@liexp/backend/src/providers/URLMetadata.provider.ts +++ b/packages/@liexp/backend/src/providers/URLMetadata.provider.ts @@ -27,7 +27,7 @@ export interface URLMetadataClient { ) => TE.TaskEither; } -interface MakeURLMetadataContext { +export interface MakeURLMetadataContext { client: AxiosInstance; parser: { getMetadata: (dom: Document, url: string, opts?: any) => Metadata; diff --git a/packages/@liexp/backend/src/providers/ffmpeg/ffmpeg.provider.spec.ts b/packages/@liexp/backend/src/providers/ffmpeg/ffmpeg.provider.spec.ts index 696d558ce..246b1dbf1 100644 --- a/packages/@liexp/backend/src/providers/ffmpeg/ffmpeg.provider.spec.ts +++ b/packages/@liexp/backend/src/providers/ffmpeg/ffmpeg.provider.spec.ts @@ -1,7 +1,7 @@ import { throwTE } from "@liexp/shared/lib/utils/task.utils.js"; import type ffmpeg from "fluent-ffmpeg"; import { pipe } from "fp-ts/lib/function"; -import { describe, test, beforeEach } from "vitest"; +import { describe, test, beforeEach, expect } from "vitest"; import { mock } from "vitest-mock-extended"; import { GetFFMPEGProvider } from "./ffmpeg.provider"; diff --git a/packages/@liexp/backend/src/providers/fs/fs.provider.ts b/packages/@liexp/backend/src/providers/fs/fs.provider.ts index 47f466dd8..180dca1a9 100644 --- a/packages/@liexp/backend/src/providers/fs/fs.provider.ts +++ b/packages/@liexp/backend/src/providers/fs/fs.provider.ts @@ -1,4 +1,4 @@ -import fs from "fs"; +import type * as fs from "fs"; import path from "path"; import { fp } from "@liexp/core/lib/fp/index.js"; import * as logger from "@liexp/core/lib/logger/index.js"; @@ -29,6 +29,10 @@ export const toFSError = (e: unknown): FSError => { }); }; +export interface GetFSClientContext { + client: typeof fs; +} + export interface FSClient { _fs: typeof fs; resolve: (filePath: string) => string; @@ -41,21 +45,21 @@ export interface FSClient { ) => TE.TaskEither; } -export const GetFSClient = (): FSClient => { +export const GetFSClient = (ctx: GetFSClientContext): FSClient => { const objectExists: FSClient["objectExists"] = (filePath) => { return TE.fromIOEither( fp.IOE.tryCatch(() => { const filePathDir = path.dirname(filePath); - const tempFolderExists = fs.existsSync(filePathDir); + const tempFolderExists = ctx.client.existsSync(filePathDir); if (!tempFolderExists) { fsLogger.debug.log( "Folder %s does not exist, creating...", filePathDir, ); - fs.mkdirSync(filePathDir, { recursive: true }); + ctx.client.mkdirSync(filePathDir, { recursive: true }); } - const statsExists = fs.existsSync(filePath); + const statsExists = ctx.client.existsSync(filePath); // fsLogger.debug.log( // "Network file path %s exists? %s", // path.relative(process.cwd(), filePath), @@ -69,7 +73,10 @@ export const GetFSClient = (): FSClient => { const getObject: FSClient["getObject"] = (filePath) => { fsLogger.debug.log("Getting object from path %s", filePath); return pipe( - fp.IOE.tryCatch(() => fs.readFileSync(filePath, "utf-8"), toFSError), + fp.IOE.tryCatch( + () => ctx.client.readFileSync(filePath, "utf-8"), + toFSError, + ), fp.TE.fromIOEither, ); }; @@ -79,14 +86,14 @@ export const GetFSClient = (): FSClient => { return pipe( TE.fromIOEither( fp.IOE.tryCatch(() => { - fs.writeFileSync(filePath, data, "utf-8"); + ctx.client.writeFileSync(filePath, data, "utf-8"); }, toFSError), ), ); }; return { - _fs: fs, + _fs: ctx.client, resolve: (p) => path.resolve(process.cwd(), p), objectExists, writeObject, @@ -98,7 +105,7 @@ export const GetFSClient = (): FSClient => { TE.chain((exists) => { if (exists) { return TE.fromIO(() => { - fs.rmSync(filePath); + ctx.client.rmSync(filePath); }); } else { if (throwIfNoExists) { diff --git a/packages/@liexp/backend/src/providers/ner/ner.provider.ts b/packages/@liexp/backend/src/providers/ner/ner.provider.ts index 78357a2f4..4c131de90 100644 --- a/packages/@liexp/backend/src/providers/ner/ner.provider.ts +++ b/packages/@liexp/backend/src/providers/ner/ner.provider.ts @@ -67,13 +67,14 @@ interface NERProviderContext { export const GetNERProvider = ({ entitiesFile, - logger, + logger: _logger, nlp: winkNLP, }: NERProviderContext): NERProvider => { + const logger = _logger.extend("ner"); return { entitiesFile, process: (text, patterns) => { - logger.debug.log("Looking for %O", patterns); + logger.debug.log("Looking for patterns %O", patterns); return pipe( fp.IOE.tryCatch((): NERResults => { const nlp = winkNLP(model); diff --git a/packages/@liexp/backend/src/providers/puppeteer.provider.ts b/packages/@liexp/backend/src/providers/puppeteer.provider.ts index 2ffec4a83..3f3a73e81 100644 --- a/packages/@liexp/backend/src/providers/puppeteer.provider.ts +++ b/packages/@liexp/backend/src/providers/puppeteer.provider.ts @@ -5,8 +5,7 @@ import * as E from "fp-ts/lib/Either.js"; import * as TE from "fp-ts/lib/TaskEither.js"; import { pipe } from "fp-ts/lib/function.js"; import type * as puppeteer from "puppeteer-core"; -import { addExtra, type VanillaPuppeteer } from "puppeteer-extra"; -import puppeteerStealth from "puppeteer-extra-plugin-stealth"; +import { type VanillaPuppeteer } from "puppeteer-extra"; import { IOError } from "ts-io-error"; const puppeteerLogger = logger.GetLogger("puppeteer"); @@ -134,8 +133,8 @@ export type GetPuppeteerProvider = ( browser: puppeteer.Browser, ) => PuppeteerProvider; -export const GetPuppeteerProvider =

( - pup: P, +export const GetPuppeteerProvider = ( + pup: VanillaPuppeteer, defaultOpts: BrowserLaunchOpts, devices: typeof puppeteer.KnownDevices, ): PuppeteerProvider => { @@ -151,9 +150,6 @@ export const GetPuppeteerProvider =

( TE.fromEither, TE.chain((executablePath) => { return TE.tryCatch(async () => { - const p = addExtra(pup); - p.use(puppeteerStealth()); - const options = { executablePath, headless: true, @@ -165,7 +161,7 @@ export const GetPuppeteerProvider =

( puppeteerLogger.info.log("Launching browser with %O", options); - const b = await p.launch(options); + const b = await pup.launch(options); return b as puppeteer.Browser; }, toPuppeteerError); }), diff --git a/packages/@liexp/backend/src/providers/redis/RedisPubSub.ts b/packages/@liexp/backend/src/providers/redis/RedisPubSub.ts new file mode 100644 index 000000000..41527277a --- /dev/null +++ b/packages/@liexp/backend/src/providers/redis/RedisPubSub.ts @@ -0,0 +1,44 @@ +import { fp } from "@liexp/core/lib/fp/index.js"; +import type { ReaderTaskEither } from "fp-ts/lib/ReaderTaskEither.js"; +import * as TE from "fp-ts/lib/TaskEither.js"; +import { pipe } from "fp-ts/lib/function.js"; +import type { Decoder } from "io-ts"; +import type { LoggerContext } from "../../context/logger.context.js"; +import type { RedisContext } from "../../context/redis.context.js"; +import { type RedisError, toRedisError } from "./redis.error.js"; + +export interface RedisPubSub { + channel: K; + decoder: Decoder; + publish: ( + message: T, + ) => ReaderTaskEither; +} + +export const RedisPubSub = ( + channel: K, + decoder: Decoder, +): RedisPubSub => { + return { + channel, + decoder, + publish: + (message) => + ({ redis, logger }) => { + return pipe( + TE.tryCatch(async () => { + const count = await redis.publish(channel, JSON.stringify(message)); + logger.debug.log(`Published message to channel ${channel}`); + return count; + }, toRedisError), + fp.TE.filterOrElse( + (c) => c > 0, + () => + toRedisError( + new Error(`Failed to publish message on channel: ${channel}`), + ), + ), + ); + }, + }; +}; diff --git a/packages/@liexp/backend/src/providers/redis/Subscriber.ts b/packages/@liexp/backend/src/providers/redis/Subscriber.ts new file mode 100644 index 000000000..b98a7a5b4 --- /dev/null +++ b/packages/@liexp/backend/src/providers/redis/Subscriber.ts @@ -0,0 +1,74 @@ +import { fp } from "@liexp/core/lib/fp/index.js"; +import type { ReaderTaskEither } from "fp-ts/lib/ReaderTaskEither.js"; +import * as TE from "fp-ts/lib/TaskEither.js"; +import { pipe } from "fp-ts/lib/function.js"; +import { failure } from "io-ts/lib/PathReporter.js"; +import type { LoggerContext } from "../../context/logger.context.js"; +import type { RedisContext } from "../../context/redis.context.js"; +import type { RedisPubSub } from "./RedisPubSub.js"; +import { RedisError, toRedisError } from "./redis.error.js"; + +export interface Subscriber + extends RedisPubSub { + subscribe: () => ReaderTaskEither; +} + +export const Subscriber = < + C extends LoggerContext & RedisContext, + E, + T, + K extends string, +>( + pubSub: RedisPubSub, + subscribe: (payload: T) => ReaderTaskEither, +): Subscriber => ({ + ...pubSub, + subscribe: () => (ctx) => { + return pipe( + TE.tryCatch(async () => { + await ctx.redis.subscribe(pubSub.channel); + ctx.logger.debug.log(`Subscribed to channel ${pubSub.channel}`); + }, toRedisError), + fp.RTE.fromTaskEither, + fp.RTE.map(() => { + ctx.redis.on("message", (boundChannel, message) => { + if (boundChannel !== pubSub.channel) { + return; + } + + ctx.logger.debug.log(`Received message on channel ${pubSub.channel}`); + void pipe( + pubSub.decoder.decode(JSON.parse(message)), + fp.E.mapLeft( + (err) => + new RedisError("Failed to decode message", { + kind: "DecodingError", + errors: failure(err), + }) as E, + ), + fp.RTE.fromEither, + fp.RTE.chainTaskEitherK((message) => subscribe(message)(ctx)), + fp.RTE.fold( + (e) => { + ctx.logger.error.log( + `Handling message for channel %s failed: %O`, + pubSub.channel, + e, + ); + return () => fp.T.of(undefined); + }, + () => { + ctx.logger.debug.log( + `Message handled successfully for channel %s`, + pubSub.channel, + ); + return () => fp.T.of(undefined); + }, + ), + )(ctx)(); + }); + }), + )(ctx); + }, + // task, +}); diff --git a/packages/@liexp/backend/src/providers/redis/redis.error.ts b/packages/@liexp/backend/src/providers/redis/redis.error.ts new file mode 100644 index 000000000..9def84b20 --- /dev/null +++ b/packages/@liexp/backend/src/providers/redis/redis.error.ts @@ -0,0 +1,25 @@ +import { IOError } from "ts-io-error"; + +export class RedisError extends IOError { + name = "RedisError"; +} + +export const toRedisError = (e: unknown): RedisError => { + if (e instanceof IOError) { + return e as RedisError; + } + + if (e instanceof Error) { + return new RedisError(e.message, { + kind: "ServerError", + status: "500", + meta: [e.name, e.stack], + }); + } + + return new RedisError("An error occurred", { + kind: "ServerError", + status: "500", + meta: [String(e)], + }); +}; diff --git a/packages/@liexp/backend/src/providers/redis/redis.provider.ts b/packages/@liexp/backend/src/providers/redis/redis.provider.ts index b74792f63..c5a8f7031 100644 --- a/packages/@liexp/backend/src/providers/redis/redis.provider.ts +++ b/packages/@liexp/backend/src/providers/redis/redis.provider.ts @@ -1,133 +1,22 @@ -import { fp, pipe } from "@liexp/core/lib/fp/index.js"; -import { type ReaderTaskEither } from "fp-ts/lib/ReaderTaskEither.js"; -import * as TE from "fp-ts/lib/TaskEither.js"; -import { type Decoder } from "io-ts"; -import { failure } from "io-ts/lib/PathReporter.js"; -import { IOError } from "ts-io-error"; -import { type LoggerContext } from "../../context/logger.context.js"; -import { type RedisContext } from "context/redis.context.js"; - -export class RedisError extends IOError { - name = "RedisError"; +import { fp } from "@liexp/core/lib/fp/index.js"; +import Redis from "ioredis"; +import { toRedisError } from "./redis.error.js"; + +interface RedisClientContext { + client: Redis; + host: string; + port: number; + lazyConnect?: boolean; } -const toRedisError = (e: unknown): RedisError => { - if (e instanceof IOError) { - return e as RedisError; - } - - if (e instanceof Error) { - return new RedisError(e.message, { - kind: "ServerError", - status: "500", - meta: [e.name, e.stack], +export const RedisClient = (ctx: RedisClientContext) => + fp.TE.tryCatch(async () => { + const redis = new Redis(6379, ctx.host, { + lazyConnect: ctx.lazyConnect, }); - } - - return new RedisError("An error occurred", { - kind: "ServerError", - status: "500", - meta: [String(e)], - }); -}; - -export interface RedisPubSub { - channel: K; - decoder: Decoder; - publish: ( - message: T, - ) => ReaderTaskEither; -} - -export const RedisPubSub = ( - channel: K, - decoder: Decoder, -): RedisPubSub => { - return { - channel, - decoder, - publish: - (message) => - ({ redis, logger }) => { - return pipe( - TE.tryCatch(async () => { - const count = await redis.publish(channel, JSON.stringify(message)); - logger.debug.log(`Published message to channel ${channel}`); - return count; - }, toRedisError), - fp.TE.filterOrElse( - (c) => c > 0, - () => - toRedisError( - new Error(`Failed to publish message on channel: ${channel}`), - ), - ), - ); - }, - }; -}; - -export interface Subscriber - extends RedisPubSub { - subscribe: () => ReaderTaskEither; -} - -export const Subscriber = < - C extends LoggerContext & RedisContext, - E, - T, - K extends string, ->( - pubSub: RedisPubSub, - subscribe: (payload: T) => ReaderTaskEither, -): Subscriber => ({ - ...pubSub, - subscribe: () => (ctx) => { - return pipe( - TE.tryCatch(async () => { - await ctx.redis.subscribe(pubSub.channel); - ctx.logger.debug.log(`Subscribed to channel ${pubSub.channel}`); - }, toRedisError), - fp.RTE.fromTaskEither, - fp.RTE.map(() => { - ctx.redis.on("message", (boundChannel, message) => { - if (boundChannel !== pubSub.channel) { - return; - } - ctx.logger.debug.log(`Received message on channel ${pubSub.channel}`); - void pipe( - pubSub.decoder.decode(JSON.parse(message)), - fp.E.mapLeft( - (err) => - new RedisError("Failed to decode message", { - kind: "DecodingError", - errors: failure(err), - }) as E, - ), - fp.RTE.fromEither, - fp.RTE.chainTaskEitherK((message) => subscribe(message)(ctx)), - fp.RTE.fold( - (e) => { - ctx.logger.error.log( - `Handling message for channel %s failed: %O`, - pubSub.channel, - e, - ); - return () => fp.T.of(undefined); - }, - () => { - ctx.logger.debug.log( - `Message handled successfully for channel %s`, - pubSub.channel, - ); - return () => fp.T.of(undefined); - }, - ), - )(ctx)(); - }); - }), - )(ctx); - }, - // task, -}); + if (ctx.lazyConnect) { + await redis.connect(); + } + return redis; + }, toRedisError); diff --git a/packages/@liexp/backend/src/providers/space/creates3.provider.ts b/packages/@liexp/backend/src/providers/space/creates3ProviderConfig.ts similarity index 68% rename from packages/@liexp/backend/src/providers/space/creates3.provider.ts rename to packages/@liexp/backend/src/providers/space/creates3ProviderConfig.ts index 62e4c3333..953c78004 100644 --- a/packages/@liexp/backend/src/providers/space/creates3.provider.ts +++ b/packages/@liexp/backend/src/providers/space/creates3ProviderConfig.ts @@ -1,7 +1,8 @@ -import { type S3ClientConfig } from "@aws-sdk/client-s3"; +import { S3Client, type S3ClientConfig } from "@aws-sdk/client-s3"; +import { Upload } from "@aws-sdk/lib-storage"; +import { getSignedUrl } from "@aws-sdk/s3-request-presigner"; import { type NODE_ENV } from "@liexp/core/lib/env/node-env.js"; -import { GetS3Provider } from "./s3.provider.js"; -import { type SpaceProvider } from "./space.provider.js"; +import { type MakeSpaceProviderConfig } from "./space.provider.js"; interface ENV { NODE_ENV: NODE_ENV; @@ -11,7 +12,9 @@ interface ENV { SPACE_ACCESS_KEY_SECRET: string; } -export const createS3Provider = (env: E): SpaceProvider => { +export const createS3ProviderConfig = ( + env: E, +): MakeSpaceProviderConfig => { const config: S3ClientConfig = env.NODE_ENV === "development" || env.NODE_ENV === "test" ? { @@ -34,5 +37,9 @@ export const createS3Provider = (env: E): SpaceProvider => { tls: true, }; - return GetS3Provider(config); + return { + client: new S3Client(config), + getSignedUrl, + classes: { Upload }, + }; }; diff --git a/packages/@liexp/backend/src/providers/tg/tg.provider.ts b/packages/@liexp/backend/src/providers/tg/tg.provider.ts index 285cd2b05..65b96f35b 100644 --- a/packages/@liexp/backend/src/providers/tg/tg.provider.ts +++ b/packages/@liexp/backend/src/providers/tg/tg.provider.ts @@ -3,7 +3,8 @@ import { pipe, fp } from "@liexp/core/lib/fp/index.js"; import { type Logger } from "@liexp/core/lib/logger/index.js"; import { MP4Type, PDFType } from "@liexp/shared/lib/io/http/Media/MediaType.js"; import * as TE from "fp-ts/lib/TaskEither.js"; -import TelegramBot from "node-telegram-bot-api"; +import type TelegramBot from "node-telegram-bot-api"; +import { type ConstructorOptions } from "node-telegram-bot-api"; import { IOError } from "../../errors/index.js"; export interface TGBotProvider { @@ -76,11 +77,12 @@ const liftTGTE = (p: () => Promise): TE.TaskEither => { }; export interface TGBotProviderCtx { + client: (token: string, options: ConstructorOptions) => TelegramBot; logger: Logger; } export const TGBotProvider = ( - { logger }: TGBotProviderCtx, + { client, logger }: TGBotProviderCtx, opts: TGBotProviderOpts, ): TGBotProvider => { const encryptedToken = opts.token @@ -97,7 +99,7 @@ export const TGBotProvider = ( ...opts, token: encryptedToken, }); - const api = new TelegramBot(opts.token, { + const api = client(opts.token, { polling: opts.polling, baseApiUrl: opts.baseApiUrl, }); diff --git a/packages/@liexp/backend/src/pubsub/buildImageWithSharp.pubSub.ts b/packages/@liexp/backend/src/pubsub/buildImageWithSharp.pubSub.ts index 5d0f257c8..d80d431e9 100644 --- a/packages/@liexp/backend/src/pubsub/buildImageWithSharp.pubSub.ts +++ b/packages/@liexp/backend/src/pubsub/buildImageWithSharp.pubSub.ts @@ -1,8 +1,12 @@ +import { BuildImageLayer } from "@liexp/shared/lib/io/http/admin/BuildImage.js"; import * as t from "io-ts"; import { UUID } from "io-ts-types"; -import { RedisPubSub } from "../providers/redis/redis.provider.js"; +import { RedisPubSub } from "../providers/redis/RedisPubSub.js"; export const BuildImageWithSharpPubSub = RedisPubSub( "image:build-with-sharp", - t.strict({ id: UUID }), + t.strict({ + image: t.union([UUID, t.null]), + layers: t.array(BuildImageLayer), + }), ); diff --git a/packages/@liexp/backend/src/pubsub/events/createEventFromURL.pubSub.ts b/packages/@liexp/backend/src/pubsub/events/createEventFromURL.pubSub.ts index a4020e84e..dfe1dc8b6 100644 --- a/packages/@liexp/backend/src/pubsub/events/createEventFromURL.pubSub.ts +++ b/packages/@liexp/backend/src/pubsub/events/createEventFromURL.pubSub.ts @@ -2,7 +2,7 @@ import { URL } from "@liexp/shared/lib/io/http/Common/URL.js"; import { UUID } from "@liexp/shared/lib/io/http/Common/UUID.js"; import { EventType } from "@liexp/shared/lib/io/http/Events/EventType.js"; import * as t from "io-ts"; -import { RedisPubSub } from "../../providers/redis/redis.provider.js"; +import { RedisPubSub } from "../../providers/redis/RedisPubSub.js"; export const CreateEventFromURLPubSub = RedisPubSub( "event:create-from-url", diff --git a/packages/@liexp/backend/src/pubsub/jobs/processJobDone.pubSub.ts b/packages/@liexp/backend/src/pubsub/jobs/processJobDone.pubSub.ts index e4164a2d5..da3b488dc 100644 --- a/packages/@liexp/backend/src/pubsub/jobs/processJobDone.pubSub.ts +++ b/packages/@liexp/backend/src/pubsub/jobs/processJobDone.pubSub.ts @@ -1,5 +1,5 @@ import * as t from "io-ts"; -import { RedisPubSub } from "../../providers/redis/redis.provider.js"; +import { RedisPubSub } from "../../providers/redis/RedisPubSub.js"; export const ProcessJobDonePubSub = RedisPubSub( "job:process-done", diff --git a/packages/@liexp/backend/src/pubsub/media/createThumbnail.pubSub.ts b/packages/@liexp/backend/src/pubsub/media/createThumbnail.pubSub.ts index 5bf3456e8..36eb4af4d 100644 --- a/packages/@liexp/backend/src/pubsub/media/createThumbnail.pubSub.ts +++ b/packages/@liexp/backend/src/pubsub/media/createThumbnail.pubSub.ts @@ -1,6 +1,6 @@ import { Media } from "@liexp/shared/lib/io/http/Media/index.js"; import * as t from "io-ts"; -import { RedisPubSub } from "../../providers/redis/redis.provider.js"; +import { RedisPubSub } from "../../providers/redis/RedisPubSub.js"; const { id, location, thumbnail, type } = Media.type.props; diff --git a/packages/@liexp/backend/src/pubsub/media/extractMediaExtra.pubSub.ts b/packages/@liexp/backend/src/pubsub/media/extractMediaExtra.pubSub.ts index a75222cbc..efde29052 100644 --- a/packages/@liexp/backend/src/pubsub/media/extractMediaExtra.pubSub.ts +++ b/packages/@liexp/backend/src/pubsub/media/extractMediaExtra.pubSub.ts @@ -1,6 +1,6 @@ import * as t from "io-ts"; import { UUID } from "io-ts-types"; -import { RedisPubSub } from "../../providers/redis/redis.provider.js"; +import { RedisPubSub } from "../../providers/redis/RedisPubSub.js"; export const ExtractMediaExtraPubSub = RedisPubSub( "media:extract-media-extra", diff --git a/packages/@liexp/backend/src/pubsub/media/generateThumbnail.pubSub.ts b/packages/@liexp/backend/src/pubsub/media/generateThumbnail.pubSub.ts index 12fd53a18..ae80858ed 100644 --- a/packages/@liexp/backend/src/pubsub/media/generateThumbnail.pubSub.ts +++ b/packages/@liexp/backend/src/pubsub/media/generateThumbnail.pubSub.ts @@ -1,6 +1,6 @@ import * as t from "io-ts"; import { UUID } from "io-ts-types"; -import { RedisPubSub } from "../../providers/redis/redis.provider.js"; +import { RedisPubSub } from "../../providers/redis/RedisPubSub.js"; export const GenerateThumbnailPubSub = RedisPubSub( "media:generate-thumbnail", diff --git a/packages/@liexp/backend/src/pubsub/media/transferFromExternalProvider.pubSub.ts b/packages/@liexp/backend/src/pubsub/media/transferFromExternalProvider.pubSub.ts index 7d3a54424..5d02be4df 100644 --- a/packages/@liexp/backend/src/pubsub/media/transferFromExternalProvider.pubSub.ts +++ b/packages/@liexp/backend/src/pubsub/media/transferFromExternalProvider.pubSub.ts @@ -1,7 +1,7 @@ import { MediaType } from "@liexp/shared/lib/io/http/Media/MediaType.js"; import * as t from "io-ts"; import { UUID } from "io-ts-types"; -import { RedisPubSub } from "../../providers/redis/redis.provider.js"; +import { RedisPubSub } from "../../providers/redis/RedisPubSub.js"; export const TransferMediaFromExternalProviderPubSub = RedisPubSub( "media:transfer-from-external-provider", diff --git a/packages/@liexp/backend/src/pubsub/nlp/extractEntitiesWithNLP.pubSub.ts b/packages/@liexp/backend/src/pubsub/nlp/extractEntitiesWithNLP.pubSub.ts index 49ae1f6a7..d8f0cb8da 100644 --- a/packages/@liexp/backend/src/pubsub/nlp/extractEntitiesWithNLP.pubSub.ts +++ b/packages/@liexp/backend/src/pubsub/nlp/extractEntitiesWithNLP.pubSub.ts @@ -1,5 +1,5 @@ import { ExtractEntitiesWithNLPInput } from "@liexp/shared/lib/io/http/admin/ExtractNLPEntities.js"; -import { RedisPubSub } from "../../providers/redis/redis.provider.js"; +import { RedisPubSub } from "../../providers/redis/RedisPubSub.js"; export const ExtractEntitiesWithNLP = RedisPubSub( "nlp:extract-entities", diff --git a/packages/@liexp/backend/src/pubsub/postToSocialPlatforms.pubSub.ts b/packages/@liexp/backend/src/pubsub/postToSocialPlatforms.pubSub.ts index 1083f9bb2..f81a0a743 100644 --- a/packages/@liexp/backend/src/pubsub/postToSocialPlatforms.pubSub.ts +++ b/packages/@liexp/backend/src/pubsub/postToSocialPlatforms.pubSub.ts @@ -1,7 +1,7 @@ import { CreateSocialPost } from "@liexp/shared/lib/io/http/SocialPost.js"; import * as t from "io-ts"; import { UUID } from "io-ts-types"; -import { RedisPubSub } from "../providers/redis/redis.provider.js"; +import { RedisPubSub } from "../providers/redis/RedisPubSub.js"; export const PostToSocialPlatformsPubSub = RedisPubSub( "post-social-post", diff --git a/packages/@liexp/backend/src/pubsub/searchFromWikipedia.pubSub.ts b/packages/@liexp/backend/src/pubsub/searchFromWikipedia.pubSub.ts index fa0066fb1..f8626810b 100644 --- a/packages/@liexp/backend/src/pubsub/searchFromWikipedia.pubSub.ts +++ b/packages/@liexp/backend/src/pubsub/searchFromWikipedia.pubSub.ts @@ -1,6 +1,6 @@ import { ACTOR, GROUP } from "@liexp/shared/lib/io/http/Common/index.js"; import * as t from "io-ts"; -import { RedisPubSub } from "../providers/redis/redis.provider.js"; +import { RedisPubSub } from "../providers/redis/RedisPubSub.js"; export const SearchFromWikipediaPubSub = RedisPubSub( "search:search-from-wikipedia", diff --git a/packages/@liexp/backend/src/pubsub/stats/createEntityStats.pubSub.ts b/packages/@liexp/backend/src/pubsub/stats/createEntityStats.pubSub.ts index 321b8629b..36ee88c39 100644 --- a/packages/@liexp/backend/src/pubsub/stats/createEntityStats.pubSub.ts +++ b/packages/@liexp/backend/src/pubsub/stats/createEntityStats.pubSub.ts @@ -1,5 +1,5 @@ import * as t from "io-ts"; -import { RedisPubSub } from "../../providers/redis/redis.provider.js"; +import { RedisPubSub } from "../../providers/redis/RedisPubSub.js"; export const CreateEntityStatsPubSub = RedisPubSub( "stats:create-entity", diff --git a/packages/@liexp/backend/src/queries/events/createEvent.query.ts b/packages/@liexp/backend/src/queries/events/createEvent.query.ts index 2e55a3adc..03cd47115 100644 --- a/packages/@liexp/backend/src/queries/events/createEvent.query.ts +++ b/packages/@liexp/backend/src/queries/events/createEvent.query.ts @@ -5,8 +5,8 @@ import { type ReaderTaskEither } from "fp-ts/lib/ReaderTaskEither.js"; import * as TE from "fp-ts/lib/TaskEither.js"; import { type DeepPartial } from "typeorm"; import { type DatabaseContext } from "../../context/db.context.js"; -import { type URLMetadataContext } from "../../context/index.js"; import { type LoggerContext } from "../../context/logger.context.js"; +import { type URLMetadataContext } from "../../context/urlMetadata.context.js"; import { type EventV2Entity } from "../../entities/Event.v2.entity.js"; import { type DBError } from "../../providers/orm/database.provider.js"; import { fetchRelationIds } from "./fetchEventRelations.query.js"; diff --git a/packages/@liexp/backend/src/queries/events/editEvent.query.ts b/packages/@liexp/backend/src/queries/events/editEvent.query.ts index 476115170..132f0fa49 100644 --- a/packages/@liexp/backend/src/queries/events/editEvent.query.ts +++ b/packages/@liexp/backend/src/queries/events/editEvent.query.ts @@ -4,8 +4,8 @@ import * as O from "fp-ts/lib/Option.js"; import * as TE from "fp-ts/lib/TaskEither.js"; import { type DeepPartial } from "typeorm"; import { type DatabaseContext } from "../../context/db.context.js"; -import { type URLMetadataContext } from "../../context/index.js"; import { type LoggerContext } from "../../context/logger.context.js"; +import { type URLMetadataContext } from "../../context/urlMetadata.context.js"; import { type EventV2Entity } from "../../entities/Event.v2.entity.js"; import { type DBError } from "../../providers/orm/database.provider.js"; import { optionalsToUndefined } from "../../utils/foldOptionals.utils.js"; diff --git a/packages/@liexp/backend/src/queries/events/fetchEventRelations.query.ts b/packages/@liexp/backend/src/queries/events/fetchEventRelations.query.ts index 2bfa92f3d..2f2be95d9 100644 --- a/packages/@liexp/backend/src/queries/events/fetchEventRelations.query.ts +++ b/packages/@liexp/backend/src/queries/events/fetchEventRelations.query.ts @@ -12,8 +12,8 @@ import { type Int } from "io-ts"; import { type DeepPartial } from "typeorm"; import { type DatabaseContext } from "../../context/db.context.js"; import { type ENVContext } from "../../context/env.context.js"; -import { type URLMetadataContext } from "../../context/index.js"; import { type LoggerContext } from "../../context/logger.context.js"; +import { type URLMetadataContext } from "../../context/urlMetadata.context.js"; import { type ActorEntity } from "../../entities/Actor.entity.js"; import { type GroupEntity } from "../../entities/Group.entity.js"; import { type KeywordEntity } from "../../entities/Keyword.entity.js"; diff --git a/packages/@liexp/backend/src/test/index.ts b/packages/@liexp/backend/src/test/index.ts new file mode 100644 index 000000000..74f055a37 --- /dev/null +++ b/packages/@liexp/backend/src/test/index.ts @@ -0,0 +1,121 @@ +import { GetLogger } from "@liexp/core/lib/index.js"; +import { HTTPProvider } from "@liexp/shared/lib/providers/http/http.provider.js"; +import { PDFProvider } from "@liexp/shared/lib/providers/pdf/pdf.provider.js"; +import D from "debug"; +import * as puppeteer from "puppeteer-core"; +import { type ConfigContext } from "../context/config.context.js"; +import { type DatabaseContext } from "../context/db.context.js"; +import { type ENVContext } from "../context/env.context.js"; +import { type FSClientContext } from "../context/fs.context.js"; +import { type HTTPProviderContext } from "../context/http.context.js"; +import { + type FFMPEGProviderContext, + type ImgProcClientContext, + type NERProviderContext, + type TGBotProviderContext, +} from "../context/index.js"; +import { type LoggerContext } from "../context/logger.context.js"; +import { type PDFProviderContext } from "../context/pdf.context.js"; +import { type PuppeteerProviderContext } from "../context/puppeteer.context.js"; +import { type QueuesProviderContext } from "../context/queue.context.js"; +import { type SpaceContext } from "../context/space.context.js"; +import { type URLMetadataContext } from "../context/urlMetadata.context.js"; +import { type BACKEND_ENV } from "../io/ENV.js"; +import { MakeURLMetadata } from "../providers/URLMetadata.provider.js"; +import { GetFFMPEGProvider } from "../providers/ffmpeg/ffmpeg.provider.js"; +import { GetFSClient } from "../providers/fs/fs.provider.js"; +import { MakeImgProcClient } from "../providers/imgproc/imgproc.provider.js"; +import { GetNERProvider } from "../providers/ner/ner.provider.js"; +import { GetDatabaseClient } from "../providers/orm/index.js"; +import { GetPuppeteerProvider } from "../providers/puppeteer.provider.js"; +import { GetQueueProvider } from "../providers/queue.provider.js"; +import { MakeSpaceProvider } from "../providers/space/space.provider.js"; +import { TGBotProvider } from "../providers/tg/tg.provider.js"; +import { EventsConfig } from "../queries/config/index.js"; +import { mocks } from "./mocks.js"; + +const pdfContext = PDFProvider({ client: mocks.pdf }); + +type TestContext = ENVContext & + PDFProviderContext & + TGBotProviderContext & + LoggerContext & + DatabaseContext & + PuppeteerProviderContext & + ConfigContext & + FSClientContext & + NERProviderContext & + URLMetadataContext & + HTTPProviderContext & + ImgProcClientContext & + SpaceContext & + QueuesProviderContext & + FFMPEGProviderContext; + +export const testConfig = { + dirs: { + cwd: "", + config: { nlp: "" }, + temp: { root: "", queue: "", stats: "", nlp: "", media: "" }, + }, + media: { + thumbnailHeight: 0, + thumbnailWidth: 0, + }, + events: EventsConfig, +}; + +export const initContext = (): TestContext => { + D.enable(process.env.DEBUG ?? "*"); + + const logger = GetLogger("test"); + + const fs = GetFSClient({ client: mocks.fs }); + + const ctx = { + env: process.env as any as BACKEND_ENV, + db: GetDatabaseClient({ + connection: mocks.db.connection, + logger, + }), + fs, + s3: MakeSpaceProvider({ + client: mocks.s3.client as any, + getSignedUrl: mocks.s3.getSignedUrl, + classes: mocks.s3.classes as any, + }), + config: testConfig, + pdf: pdfContext, + puppeteer: GetPuppeteerProvider( + mocks.puppeteer, + {}, + puppeteer.KnownDevices, + ), + ffmpeg: GetFFMPEGProvider(mocks.ffmpeg), + queue: GetQueueProvider(fs, "fake-queue"), + http: HTTPProvider(mocks.axios as any), + ner: GetNERProvider({ + nlp: mocks.ner, + entitiesFile: "fake", + logger, + }), + urlMetadata: MakeURLMetadata({ + client: mocks.urlMetadata.fetchHTML as any, + parser: { + getMetadata: mocks.urlMetadata.fetchMetadata, + }, + }), + tg: TGBotProvider( + { logger: logger, client: () => mocks.tg as any }, + { token: "fake", chat: "fake", polling: false, baseApiUrl: "fake" }, + ), + imgProc: MakeImgProcClient({ + logger: logger.extend("imgproc"), + client: mocks.sharp, + exifR: mocks.exifR, + }), + logger: GetLogger("test"), + }; + + return ctx; +}; diff --git a/packages/@liexp/backend/src/test/mocks.ts b/packages/@liexp/backend/src/test/mocks.ts index 5e8e199a6..1d2e1a07f 100644 --- a/packages/@liexp/backend/src/test/mocks.ts +++ b/packages/@liexp/backend/src/test/mocks.ts @@ -1,7 +1,10 @@ +import { type AxiosInstance } from "axios"; import { type Mock, vi } from "vitest"; +import { mock, type MockProxy } from "vitest-mock-extended"; import { dbMock } from "./mocks/db.mock.js"; import { exifRMock } from "./mocks/exifreader.mock.js"; import ffmpegMock from "./mocks/ffmpeg.mock.js"; +import { fsMock } from "./mocks/fs.mock.js"; import { igProviderMock } from "./mocks/ig.mock.js"; import NLPMock from "./mocks/nlp.mock.js"; import { pdfJsMock } from "./mocks/pdfjs.mock.js"; @@ -13,8 +16,9 @@ import sharpMock from "./mocks/sharp.mock.js"; import { tgProviderMock } from "./mocks/tg.mock.js"; import { wikipediaProviderMock } from "./mocks/wikipedia.mock.js"; -export interface AppMocks { +export interface DepsMocks { axios: typeof axiosMock; + fs: typeof fsMock; ffmpeg: typeof ffmpegMock; ner: NLPMock; db: typeof dbMock; @@ -37,16 +41,30 @@ export interface AppMocks { const fetchHTML = vi.fn(); const fetchMetadata = vi.fn(); -export const axiosMock = { - get: vi.fn(), - interceptors: { - request: { - use: vi.fn(), - }, - }, -}; +export const axiosMock: MockProxy = mock( + { + get: vi.fn(), + interceptors: mock( + { + request: { + use: vi.fn(), + eject: vi.fn(), + clear: vi.fn(), + }, + response: { + use: vi.fn(), + eject: vi.fn(), + clear: vi.fn(), + }, + }, + { deep: true }, + ), + } as any, + { deep: true }, +); -export const mocks: AppMocks = { +export const mocks: DepsMocks = { + fs: fsMock, wiki: wikipediaProviderMock, axios: axiosMock, ffmpeg: ffmpegMock, diff --git a/packages/@liexp/backend/src/test/mocks/db.mock.ts b/packages/@liexp/backend/src/test/mocks/db.mock.ts index c423b4de6..8497a9029 100644 --- a/packages/@liexp/backend/src/test/mocks/db.mock.ts +++ b/packages/@liexp/backend/src/test/mocks/db.mock.ts @@ -10,6 +10,8 @@ import { mock, mockDeep } from "vitest-mock-extended"; const queryBuilder = mockDeep>({ where: vi.fn().mockReturnThis(), orWhere: vi.fn().mockReturnThis(), + loadAllRelationIds: vi.fn().mockReturnThis(), + getOne: vi.fn().mockRejectedValue(new Error("getOne not implemented")), getOneOrFail: vi .fn() .mockRejectedValue(new Error("getOneOrFail not implemented")), diff --git a/packages/@liexp/backend/src/test/mocks/fs.mock.ts b/packages/@liexp/backend/src/test/mocks/fs.mock.ts new file mode 100644 index 000000000..3a958b27b --- /dev/null +++ b/packages/@liexp/backend/src/test/mocks/fs.mock.ts @@ -0,0 +1,9 @@ +import type fs from "fs"; +import { vi } from "vitest"; +import { type DeepMockProxy, mock } from "vitest-mock-extended"; + +export const fsMock: DeepMockProxy = mock({ + existsSync: vi.fn().mockImplementation(() => { + throw new Error("fs.existsSync is not implemented"); + }), +}); diff --git a/packages/@liexp/backend/src/test/mocks/mock.utils.ts b/packages/@liexp/backend/src/test/mocks/mock.utils.ts new file mode 100644 index 000000000..d8ad6d8d3 --- /dev/null +++ b/packages/@liexp/backend/src/test/mocks/mock.utils.ts @@ -0,0 +1,20 @@ +import { fp } from "@liexp/core/lib/fp/index.js"; +import { type TaskEither } from "fp-ts/lib/TaskEither"; +import { type MockInstance } from "vitest"; +import { type DeepMockProxy } from "vitest-mock-extended"; + +export const mockTERightOnce = ( + fn: MockInstance<(...args: any[]) => TaskEither>, + value: (...args: any[]) => U, +) => + fn.mockImplementationOnce((...args) => { + return fp.TE.right(value(...args)); + }); + +type MockedContext> = { + [K in keyof C]: DeepMockProxy; +}; + +export const mockedContext = >( + ctx: C, +): MockedContext => ctx; diff --git a/packages/@liexp/backend/src/test/mocks/sharp.mock.ts b/packages/@liexp/backend/src/test/mocks/sharp.mock.ts index ded7432e5..cacf151a6 100644 --- a/packages/@liexp/backend/src/test/mocks/sharp.mock.ts +++ b/packages/@liexp/backend/src/test/mocks/sharp.mock.ts @@ -1,7 +1,8 @@ +import type sharp from "sharp"; import { vi } from "vitest"; -import { mock } from "vitest-mock-extended"; +import { type DeepMockProxy, mock } from "vitest-mock-extended"; -export const sharpMock = mock({ +export const sharpMock: DeepMockProxy = mock({ keepExif: vi.fn().mockReturnThis(), rotate: vi.fn().mockReturnThis(), resize: vi.fn().mockReturnThis(), @@ -9,4 +10,4 @@ export const sharpMock = mock({ toBuffer: vi.fn().mockResolvedValueOnce(Buffer.from([])), }); -export default vi.fn(() => sharpMock); +export default sharpMock as any as typeof sharp; diff --git a/packages/@liexp/backend/urls/0d1785bf42b588eaa482b4a024c964d3096dc6e0.txt b/packages/@liexp/backend/urls/0d1785bf42b588eaa482b4a024c964d3096dc6e0.txt new file mode 100644 index 000000000..acdfa8602 --- /dev/null +++ b/packages/@liexp/backend/urls/0d1785bf42b588eaa482b4a024c964d3096dc6e0.txt @@ -0,0 +1 @@ +"page content" \ No newline at end of file diff --git a/packages/@liexp/backend/vitest.config.ts.timestamp-1737064274359-67b01676a0689.mjs b/packages/@liexp/backend/vitest.config.ts.timestamp-1737064274359-67b01676a0689.mjs new file mode 100644 index 000000000..105a54e69 --- /dev/null +++ b/packages/@liexp/backend/vitest.config.ts.timestamp-1737064274359-67b01676a0689.mjs @@ -0,0 +1,57 @@ +// vitest.config.ts +import viteTsconfigPaths2 from "file:///home/ascariandrea/Workspace/lies-exposed/node_modules/vite-tsconfig-paths/dist/index.js"; +import { defineConfig as defineConfig2, mergeConfig } from "file:///home/ascariandrea/Workspace/lies-exposed/node_modules/vitest/dist/config.js"; + +// src/test/vitest.base-config.ts +import { URL } from "url"; +import viteTsconfigPaths from "file:///home/ascariandrea/Workspace/lies-exposed/node_modules/vite-tsconfig-paths/dist/index.js"; +import { defineConfig } from "file:///home/ascariandrea/Workspace/lies-exposed/node_modules/vitest/dist/config.js"; +var __vite_injected_original_import_meta_url = "file:///home/ascariandrea/Workspace/lies-exposed/packages/@liexp/backend/src/test/vitest.base-config.ts"; +var PathnameAlias = (url) => (mockPath) => { + return new URL(mockPath, url).pathname; +}; +var toAlias = PathnameAlias(__vite_injected_original_import_meta_url); +var baseConfig = defineConfig({ + root: toAlias("./"), + test: { + environment: "node", + watch: false, + alias: { + sharp: toAlias("mocks/sharp.mock.js"), + canvas: toAlias("mocks/canvas.mock.js"), + "pdfjs-dist/legacy/build/pdf.js": toAlias("mocks/pdfjs.mock.js"), + "@blocknote/core": toAlias("mocks/blocknote-core.mock.js"), + "@blocknote/react/**": toAlias("mocks/blocknote-react.mock.js") + } + }, + plugins: [ + viteTsconfigPaths({ + root: toAlias("./") + }) + ] +}); + +// vitest.config.ts +var __vite_injected_original_dirname = "/home/ascariandrea/Workspace/lies-exposed/packages/@liexp/backend"; +var vitest_config_default = mergeConfig(baseConfig, defineConfig2({ + test: { + name: "@liexp/backend", + root: __vite_injected_original_dirname, + globals: true, + include: [__vite_injected_original_dirname + "/src/**/*.spec.ts"], + watch: false, + coverage: { + thresholds: { + lines: 90, + statements: 80, + functions: 80 + } + } + }, + plugins: [viteTsconfigPaths2({ root: __vite_injected_original_dirname })], + root: __vite_injected_original_dirname +})); +export { + vitest_config_default as default +}; +//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZXN0LmNvbmZpZy50cyIsICJzcmMvdGVzdC92aXRlc3QuYmFzZS1jb25maWcudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCIvaG9tZS9hc2NhcmlhbmRyZWEvV29ya3NwYWNlL2xpZXMtZXhwb3NlZC9wYWNrYWdlcy9AbGlleHAvYmFja2VuZFwiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiL2hvbWUvYXNjYXJpYW5kcmVhL1dvcmtzcGFjZS9saWVzLWV4cG9zZWQvcGFja2FnZXMvQGxpZXhwL2JhY2tlbmQvdml0ZXN0LmNvbmZpZy50c1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9pbXBvcnRfbWV0YV91cmwgPSBcImZpbGU6Ly8vaG9tZS9hc2NhcmlhbmRyZWEvV29ya3NwYWNlL2xpZXMtZXhwb3NlZC9wYWNrYWdlcy9AbGlleHAvYmFja2VuZC92aXRlc3QuY29uZmlnLnRzXCI7aW1wb3J0IHZpdGVUc2NvbmZpZ1BhdGhzIGZyb20gXCJ2aXRlLXRzY29uZmlnLXBhdGhzXCI7XG5pbXBvcnQgeyBkZWZpbmVDb25maWcsIG1lcmdlQ29uZmlnIH0gZnJvbSBcInZpdGVzdC9jb25maWdcIjtcbmltcG9ydCB7IGJhc2VDb25maWcgfSBmcm9tIFwiLi9zcmMvdGVzdC92aXRlc3QuYmFzZS1jb25maWdcIjtcblxuZXhwb3J0IGRlZmF1bHQgbWVyZ2VDb25maWcoYmFzZUNvbmZpZywgZGVmaW5lQ29uZmlnKHtcbiAgdGVzdDoge1xuICAgIG5hbWU6IFwiQGxpZXhwL2JhY2tlbmRcIixcbiAgICByb290OiBfX2Rpcm5hbWUsXG4gICAgZ2xvYmFsczogdHJ1ZSxcbiAgICBpbmNsdWRlOiBbX19kaXJuYW1lICsgXCIvc3JjLyoqLyouc3BlYy50c1wiXSxcbiAgICB3YXRjaDogZmFsc2UsXG4gICAgY292ZXJhZ2U6IHtcbiAgICAgIHRocmVzaG9sZHM6IHtcbiAgICAgICAgbGluZXM6IDkwLFxuICAgICAgICBzdGF0ZW1lbnRzOiA4MCxcbiAgICAgICAgZnVuY3Rpb25zOiA4MCxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSxcbiAgcGx1Z2luczogW3ZpdGVUc2NvbmZpZ1BhdGhzKHsgcm9vdDogX19kaXJuYW1lIH0pXSxcbiAgcm9vdDogX19kaXJuYW1lLFxufSkpO1xuIiwgImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCIvaG9tZS9hc2NhcmlhbmRyZWEvV29ya3NwYWNlL2xpZXMtZXhwb3NlZC9wYWNrYWdlcy9AbGlleHAvYmFja2VuZC9zcmMvdGVzdFwiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiL2hvbWUvYXNjYXJpYW5kcmVhL1dvcmtzcGFjZS9saWVzLWV4cG9zZWQvcGFja2FnZXMvQGxpZXhwL2JhY2tlbmQvc3JjL3Rlc3Qvdml0ZXN0LmJhc2UtY29uZmlnLnRzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9ob21lL2FzY2FyaWFuZHJlYS9Xb3Jrc3BhY2UvbGllcy1leHBvc2VkL3BhY2thZ2VzL0BsaWV4cC9iYWNrZW5kL3NyYy90ZXN0L3ZpdGVzdC5iYXNlLWNvbmZpZy50c1wiO2ltcG9ydCB7IFVSTCB9IGZyb20gXCJ1cmxcIjtcbmltcG9ydCB2aXRlVHNjb25maWdQYXRocyBmcm9tIFwidml0ZS10c2NvbmZpZy1wYXRoc1wiO1xuaW1wb3J0IHsgZGVmaW5lQ29uZmlnIH0gZnJvbSBcInZpdGVzdC9jb25maWdcIjtcblxuZXhwb3J0IGNvbnN0IFBhdGhuYW1lQWxpYXMgPVxuICAodXJsOiBzdHJpbmcpID0+XG4gIChtb2NrUGF0aDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgICByZXR1cm4gbmV3IFVSTChtb2NrUGF0aCwgdXJsKS5wYXRobmFtZTtcbiAgfTtcblxuY29uc3QgdG9BbGlhcyA9IFBhdGhuYW1lQWxpYXMoaW1wb3J0Lm1ldGEudXJsKTtcblxuZXhwb3J0IGNvbnN0IGJhc2VDb25maWcgPSBkZWZpbmVDb25maWcoe1xuICByb290OiB0b0FsaWFzKFwiLi9cIiksXG4gIHRlc3Q6IHtcbiAgICBlbnZpcm9ubWVudDogXCJub2RlXCIsXG4gICAgd2F0Y2g6IGZhbHNlLFxuICAgIGFsaWFzOiB7XG4gICAgICBzaGFycDogdG9BbGlhcyhcIm1vY2tzL3NoYXJwLm1vY2suanNcIiksXG4gICAgICBjYW52YXM6IHRvQWxpYXMoXCJtb2Nrcy9jYW52YXMubW9jay5qc1wiKSxcbiAgICAgIFwicGRmanMtZGlzdC9sZWdhY3kvYnVpbGQvcGRmLmpzXCI6IHRvQWxpYXMoXCJtb2Nrcy9wZGZqcy5tb2NrLmpzXCIpLFxuICAgICAgXCJAYmxvY2tub3RlL2NvcmVcIjogdG9BbGlhcyhcIm1vY2tzL2Jsb2Nrbm90ZS1jb3JlLm1vY2suanNcIiksXG4gICAgICBcIkBibG9ja25vdGUvcmVhY3QvKipcIjogdG9BbGlhcyhcIm1vY2tzL2Jsb2Nrbm90ZS1yZWFjdC5tb2NrLmpzXCIpLFxuICAgIH0sXG4gIH0sXG4gIHBsdWdpbnM6IFtcbiAgICB2aXRlVHNjb25maWdQYXRocyh7XG4gICAgICByb290OiB0b0FsaWFzKFwiLi9cIiksXG4gICAgfSksXG4gIF0sXG59KTtcbiJdLAogICJtYXBwaW5ncyI6ICI7QUFBeVgsT0FBT0Esd0JBQXVCO0FBQ3ZaLFNBQVMsZ0JBQUFDLGVBQWMsbUJBQW1COzs7QUNEb1gsU0FBUyxXQUFXO0FBQ2xiLE9BQU8sdUJBQXVCO0FBQzlCLFNBQVMsb0JBQW9CO0FBRnNPLElBQU0sMkNBQTJDO0FBSTdTLElBQU0sZ0JBQ1gsQ0FBQyxRQUNELENBQUMsYUFBNkI7QUFDNUIsU0FBTyxJQUFJLElBQUksVUFBVSxHQUFHLEVBQUU7QUFDaEM7QUFFRixJQUFNLFVBQVUsY0FBYyx3Q0FBZTtBQUV0QyxJQUFNLGFBQWEsYUFBYTtBQUFBLEVBQ3JDLE1BQU0sUUFBUSxJQUFJO0FBQUEsRUFDbEIsTUFBTTtBQUFBLElBQ0osYUFBYTtBQUFBLElBQ2IsT0FBTztBQUFBLElBQ1AsT0FBTztBQUFBLE1BQ0wsT0FBTyxRQUFRLHFCQUFxQjtBQUFBLE1BQ3BDLFFBQVEsUUFBUSxzQkFBc0I7QUFBQSxNQUN0QyxrQ0FBa0MsUUFBUSxxQkFBcUI7QUFBQSxNQUMvRCxtQkFBbUIsUUFBUSw4QkFBOEI7QUFBQSxNQUN6RCx1QkFBdUIsUUFBUSwrQkFBK0I7QUFBQSxJQUNoRTtBQUFBLEVBQ0Y7QUFBQSxFQUNBLFNBQVM7QUFBQSxJQUNQLGtCQUFrQjtBQUFBLE1BQ2hCLE1BQU0sUUFBUSxJQUFJO0FBQUEsSUFDcEIsQ0FBQztBQUFBLEVBQ0g7QUFDRixDQUFDOzs7QUQ5QkQsSUFBTSxtQ0FBbUM7QUFJekMsSUFBTyx3QkFBUSxZQUFZLFlBQVlDLGNBQWE7QUFBQSxFQUNsRCxNQUFNO0FBQUEsSUFDSixNQUFNO0FBQUEsSUFDTixNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsSUFDVCxTQUFTLENBQUMsbUNBQVksbUJBQW1CO0FBQUEsSUFDekMsT0FBTztBQUFBLElBQ1AsVUFBVTtBQUFBLE1BQ1IsWUFBWTtBQUFBLFFBQ1YsT0FBTztBQUFBLFFBQ1AsWUFBWTtBQUFBLFFBQ1osV0FBVztBQUFBLE1BQ2I7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUFBLEVBQ0EsU0FBUyxDQUFDQyxtQkFBa0IsRUFBRSxNQUFNLGlDQUFVLENBQUMsQ0FBQztBQUFBLEVBQ2hELE1BQU07QUFDUixDQUFDLENBQUM7IiwKICAibmFtZXMiOiBbInZpdGVUc2NvbmZpZ1BhdGhzIiwgImRlZmluZUNvbmZpZyIsICJkZWZpbmVDb25maWciLCAidml0ZVRzY29uZmlnUGF0aHMiXQp9Cg== diff --git a/packages/@liexp/shared/src/endpoints/admin.endpoints.ts b/packages/@liexp/shared/src/endpoints/admin.endpoints.ts index 79784dadf..e345028fc 100644 --- a/packages/@liexp/shared/src/endpoints/admin.endpoints.ts +++ b/packages/@liexp/shared/src/endpoints/admin.endpoints.ts @@ -85,7 +85,7 @@ export const BuildImage = Endpoint({ ), }), }, - Output: t.any, + Output: Output(t.strict({ success: t.boolean }), "BuildImageOutput"), }); export const SearchAreaCoordinates = Endpoint({ diff --git a/packages/@liexp/shared/src/tests/arbitrary/Date.arbitrary.ts b/packages/@liexp/shared/src/tests/arbitrary/Date.arbitrary.ts index 2b715b614..5c623e947 100644 --- a/packages/@liexp/shared/src/tests/arbitrary/Date.arbitrary.ts +++ b/packages/@liexp/shared/src/tests/arbitrary/Date.arbitrary.ts @@ -1,4 +1,4 @@ -import { fc } from "@liexp/test"; +import { fc } from "@liexp/test/lib/index.js"; import { addYears, subYears } from "date-fns"; export const MIN_DATE = subYears(new Date(), 200); diff --git a/packages/@liexp/shared/src/tests/arbitrary/HumanReadableString.arbitrary.ts b/packages/@liexp/shared/src/tests/arbitrary/HumanReadableString.arbitrary.ts index 008923d6d..dd04eaf6d 100644 --- a/packages/@liexp/shared/src/tests/arbitrary/HumanReadableString.arbitrary.ts +++ b/packages/@liexp/shared/src/tests/arbitrary/HumanReadableString.arbitrary.ts @@ -1,4 +1,4 @@ -import { fc } from "@liexp/test"; +import { fc } from "@liexp/test/lib/index.js"; function capFirst(word: string): string { return word.charAt(0).toUpperCase() + word.slice(1); diff --git a/packages/@liexp/shared/src/tests/arbitrary/URL.arbitrary.ts b/packages/@liexp/shared/src/tests/arbitrary/URL.arbitrary.ts index e6042d21a..df0cfe04f 100644 --- a/packages/@liexp/shared/src/tests/arbitrary/URL.arbitrary.ts +++ b/packages/@liexp/shared/src/tests/arbitrary/URL.arbitrary.ts @@ -1,4 +1,4 @@ -import { fc } from "@liexp/test"; +import { fc } from "@liexp/test/lib/index.js"; import { HumanReadableStringArb } from "./HumanReadableString.arbitrary.js"; export const URLArb = fc diff --git a/packages/@liexp/shared/src/tests/arbitrary/common/UUID.arbitrary.ts b/packages/@liexp/shared/src/tests/arbitrary/common/UUID.arbitrary.ts index a58851fa2..ea610da03 100644 --- a/packages/@liexp/shared/src/tests/arbitrary/common/UUID.arbitrary.ts +++ b/packages/@liexp/shared/src/tests/arbitrary/common/UUID.arbitrary.ts @@ -1,4 +1,4 @@ -import { fc } from "@liexp/test"; +import { fc } from "@liexp/test/lib/index.js"; import { type UUID } from "../../../io/http/Common/UUID.js"; export const UUIDArb: fc.Arbitrary = fc.uuidV(4) as fc.Arbitrary; diff --git a/packages/@liexp/shared/src/tests/arbitrary/events/ScientificStudy.arbitrary.ts b/packages/@liexp/shared/src/tests/arbitrary/events/ScientificStudy.arbitrary.ts index 378e0e9d3..1411e38a4 100644 --- a/packages/@liexp/shared/src/tests/arbitrary/events/ScientificStudy.arbitrary.ts +++ b/packages/@liexp/shared/src/tests/arbitrary/events/ScientificStudy.arbitrary.ts @@ -1,5 +1,5 @@ import { propsOmit } from "@liexp/core/lib/io/utils.js"; -import * as tests from "@liexp/test"; +import * as tests from "@liexp/test/lib/index.js"; import * as t from "io-ts"; import * as http from "../../../io/http/index.js"; import { MIN_DATE, MAX_DATE, DateArb } from "../Date.arbitrary.js"; diff --git a/services/ai-bot/src/run.ts b/services/ai-bot/src/run.ts index 00d655a4b..50e32b053 100644 --- a/services/ai-bot/src/run.ts +++ b/services/ai-bot/src/run.ts @@ -1,3 +1,4 @@ +import fs from "fs"; import path from "path"; import { type AvailableModels, @@ -136,7 +137,7 @@ void pipe( fp.TE.bind("env", () => pipe(loadAndParseENV(parseENV)(process.cwd()), fp.TE.fromEither), ), - fp.TE.bind("fs", () => fp.TE.right(GetFSClient())), + fp.TE.bind("fs", () => fp.TE.right(GetFSClient({ client: fs }))), fp.TE.bind("config", ({ fs }) => configProvider({ fs })), fp.TE.bind("langchain", ({ config }) => fp.TE.right( diff --git a/services/api/src/app/config.ts b/services/api/src/app/config.ts index 72fff6650..ad461fac6 100644 --- a/services/api/src/app/config.ts +++ b/services/api/src/app/config.ts @@ -1,4 +1,3 @@ -import { mkdirSync } from "fs"; import path from "path"; import { type BEConfig } from "@liexp/backend/lib/context/config.context.js"; import { EventsConfig } from "@liexp/backend/lib/queries/config/index.js"; @@ -24,13 +23,6 @@ export const Config = (env: ENV, cwd: string): AppConfig => { stats: path.resolve(tempRoot, "stats"), }; - // TODO: handle properly a possible error thrown by mkdirSync - [...Object.values(configFolders), ...Object.values(tempFolders)].forEach( - (folder) => { - mkdirSync(folder, { recursive: true }); - }, - ); - return { cors: { origin: env.NODE_ENV === "production" ? true : "*", diff --git a/services/api/src/context/context.type.ts b/services/api/src/context/context.type.ts index cf36781ea..80524c5e2 100644 --- a/services/api/src/context/context.type.ts +++ b/services/api/src/context/context.type.ts @@ -4,7 +4,6 @@ import { type FFMPEGProviderContext, type GeocodeProviderContext, type NERProviderContext, - type URLMetadataContext, type WikipediaProviderContext, } from "@liexp/backend/lib/context/index.js"; import { type JWTProviderContext } from "@liexp/backend/lib/context/jwt.context.js"; @@ -13,6 +12,7 @@ import { type PuppeteerProviderContext } from "@liexp/backend/lib/context/puppet import { type QueuesProviderContext } from "@liexp/backend/lib/context/queue.context.js"; import { type RedisContext } from "@liexp/backend/lib/context/redis.context.js"; import { type SpaceContext } from "@liexp/backend/lib/context/space.context.js"; +import { type URLMetadataContext } from "@liexp/backend/lib/context/urlMetadata.context.js"; import { type WikipediaProvider } from "@liexp/backend/lib/providers/wikipedia/wikipedia.provider.js"; import { type ServerBlockNoteEditor } from "@liexp/shared/lib/providers/blocknote/ssr.js"; import { type HTTPProvider } from "@liexp/shared/lib/providers/http/http.provider.js"; diff --git a/services/api/src/context/index.ts b/services/api/src/context/index.ts index 477b41894..5f4521f2a 100644 --- a/services/api/src/context/index.ts +++ b/services/api/src/context/index.ts @@ -1,3 +1,4 @@ +import * as fs from "fs"; import * as path from "path"; import { MakeURLMetadata } from "@liexp/backend/lib/providers/URLMetadata.provider.js"; import { GetFFMPEGProvider } from "@liexp/backend/lib/providers/ffmpeg/ffmpeg.provider.js"; @@ -8,7 +9,8 @@ import { GetNERProvider } from "@liexp/backend/lib/providers/ner/ner.provider.js import { GetTypeORMClient } from "@liexp/backend/lib/providers/orm/index.js"; import { GetPuppeteerProvider } from "@liexp/backend/lib/providers/puppeteer.provider.js"; import { GetQueueProvider } from "@liexp/backend/lib/providers/queue.provider.js"; -import { createS3Provider } from "@liexp/backend/lib/providers/space/creates3.provider.js"; +import { createS3ProviderConfig } from "@liexp/backend/lib/providers/space/creates3ProviderConfig.js"; +import { MakeSpaceProvider } from "@liexp/backend/lib/providers/space/space.provider.js"; import { WikipediaProvider } from "@liexp/backend/lib/providers/wikipedia/wikipedia.provider.js"; import { getDataSource, @@ -86,7 +88,7 @@ export const makeContext = }), }); - const fsClient = GetFSClient(); + const fsClient = GetFSClient({ client: fs }); const jwtClient = GetJWTProvider({ secret: env.JWT_SECRET, @@ -113,24 +115,12 @@ export const makeContext = sequenceS(fp.TE.ApplicativePar)({ logger: fp.TE.right(serverLogger), db, - s3: fp.TE.right(createS3Provider(env)), + s3: fp.TE.right(MakeSpaceProvider(createS3ProviderConfig(env))), fs: fp.TE.right(fsClient), jwt: fp.TE.right(jwtClient), urlMetadata: fp.TE.right(urlMetadataClient), env: fp.TE.right(env), blocknote: fp.TE.right(editor), - // tg: pipe( - // TGBotProvider( - // { logger: serverLogger }, - // { - // token: env.TG_BOT_TOKEN, - // chat: env.TG_BOT_CHAT, - // polling: env.TG_BOT_POLLING, - // baseApiUrl: env.TG_BOT_BASE_API_URL, - // }, - // ), - // fp.TE.right, - // ), puppeteer: fp.TE.right( GetPuppeteerProvider( puppeteer as any as VanillaPuppeteer, diff --git a/services/api/src/io/ControllerError.ts b/services/api/src/io/ControllerError.ts index 6bbdde6a9..aee176c91 100644 --- a/services/api/src/io/ControllerError.ts +++ b/services/api/src/io/ControllerError.ts @@ -9,7 +9,7 @@ import { type FSError } from "@liexp/backend/lib/providers/fs/fs.provider.js"; import { JWTError } from "@liexp/backend/lib/providers/jwt/jwt.provider.js"; import { type NERError } from "@liexp/backend/lib/providers/ner/ner.provider.js"; import { DBError } from "@liexp/backend/lib/providers/orm/index.js"; -import { RedisError } from "@liexp/backend/lib/providers/redis/redis.provider.js"; +import { RedisError } from "@liexp/backend/lib/providers/redis/redis.error.js"; import { SpaceError } from "@liexp/backend/lib/providers/space/space.provider.js"; import { fp } from "@liexp/core/lib/fp/index.js"; import { diff --git a/services/api/src/routes/admin/images/buildImage.controller.ts b/services/api/src/routes/admin/images/buildImage.controller.ts index 70bd4b177..efe1f0c69 100644 --- a/services/api/src/routes/admin/images/buildImage.controller.ts +++ b/services/api/src/routes/admin/images/buildImage.controller.ts @@ -1,4 +1,4 @@ -import { buildImageWithSharp } from "@liexp/backend/lib/flows/media/admin/build-image/buildImageWithSharp.flow.js"; +import { BuildImageWithSharpPubSub } from "@liexp/backend/lib/pubsub/buildImageWithSharp.pubSub.js"; import { pipe } from "@liexp/core/lib/fp/index.js"; import { Endpoints } from "@liexp/shared/lib/endpoints/index.js"; import { type BuildImageLayer } from "@liexp/shared/lib/io/http/admin/BuildImage.js"; @@ -29,9 +29,9 @@ export const MakeAdminBuildImageRoute: Route = (r, ctx) => { layers.push(watermarkLayer); } return pipe( - buildImageWithSharp(layers)(ctx), - TE.map((buffer) => ({ - body: buffer.toString("base64"), + BuildImageWithSharpPubSub.publish({ image: null, layers })(ctx), + TE.map(() => ({ + body: { success: true }, statusCode: 201, })), ); diff --git a/services/api/src/routes/events/__tests__/searchEvents.e2e.ts b/services/api/src/routes/events/__tests__/searchEvents.e2e.ts index 4921b312d..de4ee16b6 100644 --- a/services/api/src/routes/events/__tests__/searchEvents.e2e.ts +++ b/services/api/src/routes/events/__tests__/searchEvents.e2e.ts @@ -8,7 +8,7 @@ import { UncategorizedArb } from "@liexp/shared/lib/tests/arbitrary/Event.arbitr import { GroupArb } from "@liexp/shared/lib/tests/arbitrary/Group.arbitrary.js"; import { GroupMemberArb } from "@liexp/shared/lib/tests/index.js"; import { throwTE } from "@liexp/shared/lib/utils/task.utils.js"; -import { fc } from "@liexp/test"; +import { fc } from "@liexp/test/lib/index.js"; import * as A from "fp-ts/lib/Array.js"; import jwt from "jsonwebtoken"; import { GetAppTest, type AppTest } from "../../../../test/AppTest.js"; diff --git a/services/api/src/routes/events/scientific-study/__tests__/createScientificStudy.e2e.ts b/services/api/src/routes/events/scientific-study/__tests__/createScientificStudy.e2e.ts index 445396fa4..23a656561 100644 --- a/services/api/src/routes/events/scientific-study/__tests__/createScientificStudy.e2e.ts +++ b/services/api/src/routes/events/scientific-study/__tests__/createScientificStudy.e2e.ts @@ -17,7 +17,6 @@ import { GroupArb } from "@liexp/shared/lib/tests/arbitrary/Group.arbitrary.js"; import { HumanReadableStringArb } from "@liexp/shared/lib/tests/arbitrary/HumanReadableString.arbitrary.js"; import { LinkArb } from "@liexp/shared/lib/tests/index.js"; import { throwTE } from "@liexp/shared/lib/utils/task.utils.js"; -import { sanitizeURL } from "@liexp/shared/lib/utils/url.utils.js"; import { fc } from "@liexp/test"; import { In } from "typeorm"; import { GetAppTest, type AppTest } from "../../../../../test/AppTest.js"; @@ -82,87 +81,6 @@ describe("Create Scientific Study", () => { await appTest.utils.e2eAfterAll(); }); - test("Should create a scientific study from url", async () => { - const [url] = fc - .sample(fc.nat(), 1) - .map((id) => `https://www.sciencedirect.com/article/${id}` as any); - - const title = fc.sample(HumanReadableStringArb(), 1)[0]; - const description = fc.sample(HumanReadableStringArb(), 1)[0]; - - const scientificStudyData = { url }; - - appTest.mocks.redis.publish.mockResolvedValue(1); - appTest.mocks.urlMetadata.fetchMetadata.mockResolvedValue({ - title, - description, - url: scientificStudyData.url, - keywords: [], - }); - - appTest.mocks.puppeteer.page.goto.mockResolvedValueOnce(undefined); - - // evaluate title - appTest.mocks.puppeteer.page.$eval.mockResolvedValueOnce(title); - // evaluate dropdown click - appTest.mocks.puppeteer.page.click.mockResolvedValueOnce(undefined); - // evaluate date string - appTest.mocks.puppeteer.page.$eval.mockResolvedValueOnce([ - "Received 27 July 2020", - "Accepted 1 August 2020", - ]); - // wait for - appTest.mocks.puppeteer.page.waitForSelector.mockResolvedValueOnce( - undefined, - ); - appTest.mocks.puppeteer.page.$$.mockResolvedValueOnce([ - { - evaluate: vi.fn().mockResolvedValue(description), - }, - ]); - - appTest.mocks.puppeteer.page.$eval.mockResolvedValueOnce("page content"); - - appTest.mocks.ner.winkMethods.learnCustomEntities.mockResolvedValueOnce( - {} as any, - ); - appTest.mocks.ner.doc.out.mockReturnValue([]); - appTest.mocks.ner.doc.sentences.mockReturnValue({ each: vi.fn() } as any); - appTest.mocks.ner.doc.customEntities.mockReturnValue({ - out: vi.fn().mockReturnValue([]), - } as any); - appTest.mocks.ner.doc.tokens.mockReturnValue({ each: vi.fn() } as any); - - const response = await appTest.req - .post(`/v1/scientific-studies`) - .set("Authorization", authorizationToken) - .send(scientificStudyData); - - const body = response.body.data; - expect(response.status).toEqual(201); - - expect(appTest.mocks.ner).toHaveBeenCalledTimes(1); - expect( - appTest.mocks.ner.winkMethods.learnCustomEntities, - ).toHaveBeenCalledTimes(1); - expect(appTest.mocks.ner.winkMethods.readDoc).toHaveBeenCalledTimes(1); - expect(appTest.mocks.ner.doc.out).toHaveBeenCalledTimes(1); - - const link = await pipe( - appTest.ctx.db.findOneOrFail(LinkEntity, { - where: { url: sanitizeURL(scientificStudyData.url) }, - }), - throwTE, - ); - - expect(body.type).toBe(SCIENTIFIC_STUDY.value); - expect(body.date).toBeDefined(); - expect(body.payload.url).toEqual(link.id); - expect(body.payload.title).toEqual(title); - - scientificStudyIds.push(body.id); - }); - test("Should create a scientific study from plain object", async () => { const [link] = await pipe( fc.sample(LinkArb, 1)[0], diff --git a/services/api/src/routes/media/__tests__/createMedia.e2e.ts b/services/api/src/routes/media/__tests__/createMedia.e2e.ts index 35841f9c5..5300f2067 100644 --- a/services/api/src/routes/media/__tests__/createMedia.e2e.ts +++ b/services/api/src/routes/media/__tests__/createMedia.e2e.ts @@ -42,7 +42,6 @@ describe("Create Media", () => { Test.mocks.puppeteer.page.goto.mockClear(); Test.mocks.puppeteer.page.waitForSelector.mockClear(); Test.mocks.puppeteer.page.$eval.mockClear(); - Test.mocks.sharp.mockClear(); Test.mocks.redis.publish.mockClear(); mockClear(sharpMock); }); diff --git a/services/api/src/run.ts b/services/api/src/run.ts index 657835bab..18a9d71a3 100644 --- a/services/api/src/run.ts +++ b/services/api/src/run.ts @@ -33,6 +33,14 @@ const run = (): Promise => { })), TE.mapLeft(ControllerError.report), TE.chain(({ ctx, app }) => { + // TODO: handle properly a possible error thrown by mkdirSync + [ + ...Object.values(ctx.config.dirs.config), + ...Object.values(ctx.config.dirs.temp), + ].forEach((folder) => { + ctx.fs._fs.mkdirSync(folder, { recursive: true }); + }); + const server = app.listen( ctx.env.SERVER_PORT, ctx.env.SERVER_HOST, diff --git a/services/api/test/AppTest.ts b/services/api/test/AppTest.ts index b44bc4b5d..49d2a4be1 100644 --- a/services/api/test/AppTest.ts +++ b/services/api/test/AppTest.ts @@ -17,7 +17,6 @@ import { ENV } from "#io/ENV.js"; import { GetFFMPEGProvider } from "@liexp/backend/lib/providers/ffmpeg/ffmpeg.provider.js"; import { GetFSClient } from "@liexp/backend/lib/providers/fs/fs.provider.js"; import { GeocodeProvider } from "@liexp/backend/lib/providers/geocode/geocode.provider.js"; -import { MakeImgProcClient } from "@liexp/backend/lib/providers/imgproc/imgproc.provider.js"; import { GetJWTProvider } from "@liexp/backend/lib/providers/jwt/jwt.provider.js"; import { GetNERProvider } from "@liexp/backend/lib/providers/ner/ner.provider.js"; import { GetTypeORMClient } from "@liexp/backend/lib/providers/orm/index.js"; @@ -35,7 +34,7 @@ import path from "path"; import supertest from "supertest"; import type TestAgent from "supertest/lib/agent.js"; import { vi } from "vitest"; -import { AppMocks, mocks } from "@liexp/backend/lib/test/mocks.js"; +import { DepsMocks, mocks } from "@liexp/backend/lib/test/mocks.js"; import { getDataSource, getORMConfig, @@ -56,7 +55,7 @@ vi.mock("node-telegram-bot-api"); export interface AppTest { ctx: ServerContext; - mocks: AppMocks; + mocks: DepsMocks; req: TestAgent; utils: { e2eAfterAll: () => Promise; @@ -93,10 +92,8 @@ export const loadAppContext = async ( { headless: "shell" }, mocks.puppeteer.devices, ), - tg: mocks.tg, s3: MakeSpaceProvider(mocks.s3 as any), - ig: mocks.ig, - fs: GetFSClient(), + fs: GetFSClient({ client: mocks.fs }), wp: mocks.wiki, rw: mocks.wiki, urlMetadata: { @@ -114,11 +111,6 @@ export const loadAppContext = async ( }, }, http: HTTPProvider(mocks.axios as any as AxiosInstance), - imgProc: MakeImgProcClient({ - logger, - exifR: mocks.exifR, - client: mocks.sharp as any, - }), ner: GetNERProvider({ logger, entitiesFile: path.resolve(config.dirs.config.nlp, "entities.json"), diff --git a/services/api/test/GetDockerContainer.ts b/services/api/test/GetDockerContainer.ts index 73c53f4dd..6ac19abd3 100644 --- a/services/api/test/GetDockerContainer.ts +++ b/services/api/test/GetDockerContainer.ts @@ -37,9 +37,8 @@ type GetDockerContainer = ( const listDatabases = async (): Promise => { const databases = await fs.readdir(DATABASES_FILE_PATH()); - // console.log("list databases", databases); - return databases; + return databases.filter((f) => DATABASE_RUN_COUNT_FILE_PATH() !== f); }; const readDatabases = async (): Promise> => { @@ -78,8 +77,9 @@ const getFirstFree = async (logger: Logger): Promise => { }; const waitForDatabase = async (logger: Logger): Promise => { - const [interval] = fc.sample(fc.integer({ min: 300, max: 600 }), 1); - return new Promise((resolve) => { + const [interval] = fc.sample(fc.integer({ min: 100, max: 200 }), 1); + return new Promise(async (resolve) => { + const databaseTimer = setInterval(async () => { const freeDatabase = await getFirstFree(logger); @@ -150,134 +150,133 @@ const safeUnlink = async (state?: STATE, db?: string) => { } }; -const GetDockerContainer: GetDockerContainer = - (logger) => (containerName) => { - const docker = new Docker(); +const GetDockerContainer: GetDockerContainer = (logger) => (containerName) => { + const docker = new Docker(); - const lookup = async () => { - const containers = await docker.listContainers({ all: true }); + const lookup = async () => { + const containers = await docker.listContainers({ all: true }); - logger.debug.log( - "Look for %s in %O", - containerName, - containers.map((c) => c.Names), - ); + logger.debug.log( + "Look for %s in %O", + containerName, + containers.map((c) => c.Names), + ); - const containerInfo = containers.find((c) => - // eslint-disable-next-line @typescript-eslint/restrict-template-expressions - c.Names.some((n) => n.indexOf(containerName) > 0), - ); + const containerInfo = containers.find((c) => + // eslint-disable-next-line @typescript-eslint/restrict-template-expressions + c.Names.some((n) => n.indexOf(containerName) > 0), + ); - if (containerInfo) { - container = docker.getContainer(containerInfo.Id); + if (containerInfo) { + container = docker.getContainer(containerInfo.Id); - return container; - } + return container; + } - throw new Error(`Container ${containerName} not found`); - }; + throw new Error(`Container ${containerName} not found`); + }; - const addDatabases = async (dbCount: number): Promise => { - const currentDatabases = await listDatabases(); + const addDatabases = async (dbCount: number): Promise => { + const currentDatabases = await listDatabases(); - logger.debug.log( - `${currentDatabases.length} databases found, expected ${dbCount}`, - ); + logger.debug.log( + `${currentDatabases.length} databases found, expected ${dbCount}`, + ); - await fs.writeFile(DATABASE_RUN_COUNT_FILE_PATH(), "0"); - - if (currentDatabases.length >= dbCount) { - const databases = await readDatabases(); - await Promise.all( - Object.entries(databases).flatMap(async ([db, isUse]) => { - const promises = []; - if (isUse) { - promises.push(safeUnlink(IN_USE_STATE, db)); - } - promises.push( - fs.writeFile(DATABASES_FILE_PATH(FREE_STATE, db), ""), - ); - - return promises; - }), - ); - - return currentDatabases; - } + await fs.writeFile(DATABASE_RUN_COUNT_FILE_PATH(), "0"); - container = await lookup(); + if (currentDatabases.length >= dbCount) { + const databases = await readDatabases(); + await Promise.all( + Object.entries(databases).flatMap(async ([db, isUse]) => { + const promises = []; + if (isUse) { + promises.push(safeUnlink(IN_USE_STATE, db)); + } + promises.push(fs.writeFile(DATABASES_FILE_PATH(FREE_STATE, db), "")); + + return promises; + }), + ); - const databases = fc - .sample(HumanReadableStringArb(), dbCount) - .map((s) => s.toLowerCase().replace(/-/g, "_")); + return currentDatabases; + } - logger.debug.log("adding databases: %s", databases); - await execCommand(container, { - Cmd: [ - "/bin/bash", - "-h", - "/docker-entrypoint-initdb.d/psql-create-database.sh", - ], - Env: [`DBS=${databases.join(",")}`], - AttachStdout: true, - AttachStderr: true, - }); + container = await lookup(); + + const databases = fc + .sample(HumanReadableStringArb(), dbCount) + .map((s) => s.toLowerCase().replace(/-/g, "_")); + + logger.debug.log("adding databases: %s", databases); + await execCommand(container, { + Cmd: [ + "/bin/bash", + "-h", + "/docker-entrypoint-initdb.d/psql-create-database.sh", + ], + Env: [`DBS=${databases.join(",")}`], + AttachStdout: true, + AttachStderr: true, + }); - await Promise.all( - databases.map((db) => - fs.writeFile(DATABASES_FILE_PATH(FREE_STATE, db), ""), - ), - ); + await Promise.all( + databases.map((db) => + fs.writeFile(DATABASES_FILE_PATH(FREE_STATE, db), ""), + ), + ); - return databases; - }; + return databases; + }; - const markDatabaseAsUsed = async (database: string) => { - await safeUnlink(IN_USE_STATE, database); - await fs.writeFile(DATABASES_FILE_PATH(FREE_STATE, database), ""); - }; + const markDatabaseAsUsed = async (database: string) => { + await safeUnlink(IN_USE_STATE, database); + await fs.writeFile(DATABASES_FILE_PATH(FREE_STATE, database), ""); + }; - const freeDatabases = async () => { - const databases = await readDatabases(); + const freeDatabases = async () => { + const databases = await readDatabases(); - logger.info.log( - "Resetting databases %d to free %O", - Object.keys(databases).length, - ); + logger.info.log( + "Resetting databases %d to free %O", + Object.keys(databases).length, + ); - await Promise.all( - Object.entries(databases).flatMap(([db, state]) => [ - safeUnlink(state ? IN_USE_STATE : FREE_STATE, db), - fs.writeFile(DATABASES_FILE_PATH(FREE_STATE, db), ""), - ]), - ); - }; - - const assertLocalCacheFolder = async () => { - try { - await fs.readdir(DATABASES_FILE_PATH(), { recursive: true }); - } catch (e: any) { - if (e.code !== "EEXIST") { - throw e; - } + await Promise.all( + Object.entries(databases).flatMap(([db, state]) => [ + safeUnlink(state ? IN_USE_STATE : FREE_STATE, db), + fs.writeFile(DATABASES_FILE_PATH(FREE_STATE, db), ""), + ]), + ); + }; + + const assertLocalCacheFolder = async () => { + try { + await fs.readdir(DATABASES_FILE_PATH(), { recursive: true }); + } catch (e: any) { + if (e.code !== "EEXIST") { + throw e; } - }; - - return { - lookup, - addDatabases, - waitForDatabase: () => waitForDatabase(logger), - markDatabaseAsUsed, - freeDatabases, - assertLocalCacheFolder, - getRunStats: async () => { - return { - used: await fs.readFile(DATABASE_RUN_COUNT_FILE_PATH(), "utf-8").then((s) => parseInt(s)), - }; - }, - }; + } }; + return { + lookup, + addDatabases, + waitForDatabase: () => waitForDatabase(logger), + markDatabaseAsUsed, + freeDatabases, + assertLocalCacheFolder, + getRunStats: async () => { + return { + used: await fs + .readFile(DATABASE_RUN_COUNT_FILE_PATH(), "utf-8") + .then((s) => parseInt(s)), + }; + }, + }; +}; + export const testDBContainer = GetDockerContainer(GetLogger("dkr"))( "db-test.liexp.dev", ); diff --git a/services/api/test/testSetup.ts b/services/api/test/testSetup.ts index a823d3726..c1d125509 100644 --- a/services/api/test/testSetup.ts +++ b/services/api/test/testSetup.ts @@ -2,13 +2,8 @@ import { GetLogger } from "@liexp/core/lib/logger/Logger.js"; import { afterAll, beforeAll } from "vitest"; import { type AppTest, initAppTest, loadAppContext } from "./AppTest.js"; import { testDBContainer } from "./GetDockerContainer.js"; -import { upsertNLPEntities } from "@liexp/backend/lib/flows/admin/nlp/upsertEntities.flow.js"; -import { pipe } from "@liexp/core/lib/fp/index.js"; -import { throwTE } from "@liexp/shared/lib/utils/task.utils.js"; import D from "debug"; -import { getOlderThanOr } from "@liexp/backend/lib/flows/fs/getOlderThanOr.flow.js"; import { ServerContext } from '../src/context/context.type.js' -import path from 'path'; const logger = GetLogger("testSetup"); @@ -34,16 +29,6 @@ beforeAll(async () => { g.appContext = await loadAppContext(logger); } - const configFile = path.resolve(g.appContext.config.dirs.config.nlp, "entities.json") - - await pipe( - getOlderThanOr( - configFile, - 10, - )(upsertNLPEntities)(g.appContext), - throwTE, - ); - logger.debug.log("app context", !!g.appContext); g.appTest = await initAppTest(g.appContext, process.env.DB_DATABASE!); diff --git a/services/api/test/vitest.config.e2e.ts b/services/api/test/vitest.config.e2e.ts index e3b85bddf..7a066476a 100644 --- a/services/api/test/vitest.config.e2e.ts +++ b/services/api/test/vitest.config.e2e.ts @@ -1,5 +1,8 @@ import { defineProject, mergeConfig } from "vitest/config"; -import { PathnameAlias, baseConfig } from "@liexp/backend/lib/test/vitest.base-config.js"; +import { + PathnameAlias, + baseConfig, +} from "@liexp/backend/lib/test/vitest.base-config.js"; const toAlias = PathnameAlias(import.meta.url); @@ -14,10 +17,10 @@ const config = mergeConfig( setupFiles: [toAlias(`testSetup.ts`)], globalSetup: [toAlias(`globalSetup.ts`)], exclude: ["**/build", "**/src/migrations", "**/src/scripts"], - pool: "vmThreads", + pool: "forks", poolOptions: { - threads: { - singleThread: process.env.CI === "true" ? true : false, + forks: { + singleFork: process.env.CI === "true" ? true : false, isolate: false, }, }, @@ -25,4 +28,4 @@ const config = mergeConfig( }), ); -export default config; \ No newline at end of file +export default config; diff --git a/services/worker/src/bin/start-ctx.ts b/services/worker/src/bin/start-ctx.ts index 9bc5717ff..008c129ce 100644 --- a/services/worker/src/bin/start-ctx.ts +++ b/services/worker/src/bin/start-ctx.ts @@ -4,6 +4,7 @@ import { ENVParser } from "@liexp/shared/lib/utils/env.utils.js"; import { throwTE } from "@liexp/shared/lib/utils/task.utils.js"; import D from "debug"; import { type WorkerContext } from "../context/context.js"; +import { loadImplementation } from "../context/load.js"; import { makeContext } from "../context/make.js"; import { ENV } from "../io/env.js"; @@ -15,10 +16,12 @@ export const startContext = async (env?: any): Promise => { D.enable(process.env.DEBUG ?? "@liexp:*:error"); + process.env.TG_BOT_POLLING = "false"; + return pipe( ENVParser(ENV.decode)({ ...process.env, TG_BOT_POLLING: "false", ...env }), fp.TE.fromEither, - fp.TE.chain(makeContext), + fp.TE.chain((env) => makeContext(env, loadImplementation(env))), throwTE, ); }; diff --git a/services/worker/src/context/context.ts b/services/worker/src/context/context.ts index d45f580f2..f171a0220 100644 --- a/services/worker/src/context/context.ts +++ b/services/worker/src/context/context.ts @@ -9,7 +9,6 @@ import { type ImgProcClientContext, type TGBotProviderContext, type WikipediaProviderContext, - type URLMetadataContext, type NERProviderContext, } from "@liexp/backend/lib/context/index.js"; import { type LoggerContext } from "@liexp/backend/lib/context/logger.context.js"; @@ -18,6 +17,7 @@ import { type PuppeteerProviderContext } from "@liexp/backend/lib/context/puppet import { type QueuesProviderContext } from "@liexp/backend/lib/context/queue.context.js"; import { type RedisContext } from "@liexp/backend/lib/context/redis.context.js"; import { type SpaceContext } from "@liexp/backend/lib/context/space.context.js"; +import { type URLMetadataContext } from "@liexp/backend/lib/context/urlMetadata.context.js"; import { type WikipediaProvider } from "@liexp/backend/lib/providers/wikipedia/wikipedia.provider.js"; import { type WorkerConfig } from "../config.js"; import { type ENV } from "#io/env.js"; diff --git a/services/worker/src/context/load.ts b/services/worker/src/context/load.ts index 407edcdad..ccdb82fb9 100644 --- a/services/worker/src/context/load.ts +++ b/services/worker/src/context/load.ts @@ -1,16 +1,99 @@ +import fs from "fs"; +import { createS3ProviderConfig } from "@liexp/backend/lib/providers/space/creates3ProviderConfig.js"; +import { + getDataSource, + getORMConfig, +} from "@liexp/backend/lib/utils/data-source.js"; import { loadAndParseENV } from "@liexp/core/lib/env/utils.js"; import { ENVParser } from "@liexp/shared/lib/utils/env.utils.js"; +import axios from "axios"; +import Ffmpeg from "fluent-ffmpeg"; import * as TE from "fp-ts/lib/TaskEither.js"; import { pipe } from "fp-ts/lib/function.js"; +import Redis from "ioredis"; +import MW from "nodemw"; +import metadataParser from "page-metadata-parser"; +import * as pdfJs from "pdfjs-dist/legacy/build/pdf.mjs"; +import * as pup from "puppeteer-core"; +import { addExtra, type VanillaPuppeteer } from "puppeteer-extra"; +import puppeteerStealth from "puppeteer-extra-plugin-stealth"; +import sharp from "sharp"; +import WinkFn from "wink-nlp"; import { type WorkerContext } from "./context.js"; -import { makeContext } from "./make.js"; +import { type ContextImplementation, makeContext } from "./make.js"; import { ENV } from "#io/env.js"; import { type WorkerError } from "#io/worker.error.js"; +export const loadImplementation = (env: ENV): ContextImplementation => { + const p = addExtra(pup as any); + p.use(puppeteerStealth()); + return { + redis: { + client: Redis.Redis as any, + }, + pdf: { + client: pdfJs, + }, + imgProc: { + client: () => Promise.resolve(sharp), + }, + ner: { + nlp: { + client: WinkFn, + }, + }, + puppeteer: { + client: p as any as VanillaPuppeteer, + }, + ffmpeg: { + client: Ffmpeg, + }, + urlMetadata: { + client: axios.create(), + parser: { + getMetadata: metadataParser.getMetadata, + }, + }, + wp: { + wiki: new MW({ + protocol: "https", + server: "en.wikipedia.org", + path: "/w", + debug: true, + concurrency: 5, + }), + http: axios.create({ + baseURL: "https://en.wikipedia.org/api/rest_v1", + }), + }, + rw: { + wiki: new MW({ + protocol: "https", + server: "rationalwiki.org", + path: "/w", + debug: true, + concurrency: 5, + }), + http: axios.create({ + baseURL: "https://rationalwiki.org/api/rest_v1", + }), + }, + http: { + client: axios.create(), + }, + geo: { + client: axios.create({ baseURL: env.GEO_CODE_BASE_URL }), + }, + space: createS3ProviderConfig(env), + db: { client: getDataSource(getORMConfig(env, false)) }, + fs: { client: fs }, + }; +}; + export const loadContext = (): TE.TaskEither => { return pipe( loadAndParseENV(ENVParser(ENV.decode))(process.cwd()), TE.fromEither, - TE.chain(makeContext), + TE.chain((env) => makeContext(env, loadImplementation(env))), ); }; diff --git a/services/worker/src/context/make.ts b/services/worker/src/context/make.ts index 812821ff9..7824a71df 100644 --- a/services/worker/src/context/make.ts +++ b/services/worker/src/context/make.ts @@ -1,7 +1,13 @@ import path from "path"; -import { MakeURLMetadata } from "@liexp/backend/lib/providers/URLMetadata.provider.js"; +import { + MakeURLMetadata, + type MakeURLMetadataContext, +} from "@liexp/backend/lib/providers/URLMetadata.provider.js"; import { GetFFMPEGProvider } from "@liexp/backend/lib/providers/ffmpeg/ffmpeg.provider.js"; -import { GetFSClient } from "@liexp/backend/lib/providers/fs/fs.provider.js"; +import { + GetFSClient, + type GetFSClientContext, +} from "@liexp/backend/lib/providers/fs/fs.provider.js"; import { GeocodeProvider } from "@liexp/backend/lib/providers/geocode/geocode.provider.js"; import { IGProvider } from "@liexp/backend/lib/providers/ig/ig.provider.js"; import { MakeImgProcClient } from "@liexp/backend/lib/providers/imgproc/imgproc.provider.js"; @@ -9,107 +15,104 @@ import { GetNERProvider } from "@liexp/backend/lib/providers/ner/ner.provider.js import { GetTypeORMClient } from "@liexp/backend/lib/providers/orm/database.provider.js"; import { GetPuppeteerProvider } from "@liexp/backend/lib/providers/puppeteer.provider.js"; import { GetQueueProvider } from "@liexp/backend/lib/providers/queue.provider.js"; -import { createS3Provider } from "@liexp/backend/lib/providers/space/creates3.provider.js"; +import { RedisClient } from "@liexp/backend/lib/providers/redis/redis.provider.js"; +import { + MakeSpaceProvider, + type MakeSpaceProviderConfig, +} from "@liexp/backend/lib/providers/space/space.provider.js"; import { TGBotProvider } from "@liexp/backend/lib/providers/tg/tg.provider.js"; import { WikipediaProvider } from "@liexp/backend/lib/providers/wikipedia/wikipedia.provider.js"; -import { - getDataSource, - getORMConfig, -} from "@liexp/backend/lib/utils/data-source.js"; import { fp, pipe } from "@liexp/core/lib/fp/index.js"; import { GetLogger } from "@liexp/core/lib/logger/index.js"; import { editor } from "@liexp/shared/lib/providers/blocknote/ssr.js"; import { HTTPProvider } from "@liexp/shared/lib/providers/http/http.provider.js"; import { PDFProvider } from "@liexp/shared/lib/providers/pdf/pdf.provider.js"; -import * as axios from "axios"; +import type * as axios from "axios"; import ExifReader from "exifreader"; -import ffmpeg from "fluent-ffmpeg"; +import type ffmpeg from "fluent-ffmpeg"; import { sequenceS } from "fp-ts/lib/Apply.js"; import { type TaskEither } from "fp-ts/lib/TaskEither.js"; -import { Redis } from "ioredis"; -import MW from "nodemw"; -import metadataParser from "page-metadata-parser"; +import type { Redis } from "ioredis"; +import TelegramBot from "node-telegram-bot-api"; +import type MW from "nodemw"; +import type * as pdfJS from "pdfjs-dist/legacy/build/pdf.mjs"; import * as puppeteer from "puppeteer-core"; import { type VanillaPuppeteer } from "puppeteer-extra"; import type sharpT from "sharp"; -import WinkFn from "wink-nlp"; +import { type DataSource } from "typeorm"; +import type winkNLP from "wink-nlp"; import { Config } from "../config.js"; import { type WorkerContext } from "./context.js"; import { type ENV } from "#io/env.js"; import { toWorkerError, type WorkerError } from "#io/worker.error.js"; +export interface ContextImplementation { + redis: { client: Redis }; + wp: { wiki: MW; http: axios.AxiosInstance }; + rw: { wiki: MW; http: axios.AxiosInstance }; + urlMetadata: MakeURLMetadataContext; + pdf: { client: typeof pdfJS }; + http: { client: axios.AxiosInstance }; + geo: { client: axios.AxiosInstance }; + imgProc: { client: () => Promise }; + ner: { nlp: { client: typeof winkNLP } }; + puppeteer: { client: VanillaPuppeteer }; + ffmpeg: { client: typeof ffmpeg }; + db: { client: TaskEither }; + space: MakeSpaceProviderConfig; + fs: GetFSClientContext; +} + export const makeContext = ( env: ENV, + impl: ContextImplementation, ): TaskEither => { const serverLogger = GetLogger("worker"); const config = Config(process.cwd()); const db = pipe( - getDataSource(getORMConfig(env, false)), + impl.db.client, fp.TE.chain(GetTypeORMClient), fp.TE.mapLeft(toWorkerError), ); - const fsClient = GetFSClient(); + const fsClient = GetFSClient(impl.fs); const wpProvider = WikipediaProvider({ logger: GetLogger("wp"), - client: new MW({ - protocol: "https", - server: "en.wikipedia.org", - path: "/w", - debug: true, - concurrency: 5, - }), - restClient: axios.default.create({ - baseURL: "https://en.wikipedia.org/api/rest_v1", - }), + client: impl.wp.wiki, + restClient: impl.wp.http, }); const rationalWikiProvider = WikipediaProvider({ logger: GetLogger("rw"), - client: new MW({ - protocol: "https", - server: "rationalwiki.org", - path: "/w", - debug: true, - concurrency: 5, - }), - restClient: axios.default.create({ - baseURL: "https://rationalwiki.org/api/rest_v1", - }), + client: impl.rw.wiki, + restClient: impl.rw.http, }); - const urlMetadataClient = MakeURLMetadata({ - client: axios.default.create({}), - parser: { - getMetadata: metadataParser.getMetadata, - }, - }); - - const redisClient = fp.TE.tryCatch(async () => { - const redis = new Redis(6379, env.REDIS_HOST, { - lazyConnect: true, - }); + const urlMetadataClient = MakeURLMetadata(impl.urlMetadata); - if (env.REDIS_CONNECT) { - await redis.connect(); - } - return redis; - }, toWorkerError); + const redisClient = RedisClient({ + port: 6379, + host: env.REDIS_HOST, + client: impl.redis.client, + }); return pipe( sequenceS(fp.TE.ApplicativePar)({ + env: fp.TE.right(env), logger: fp.TE.right(serverLogger), db, - s3: fp.TE.right(createS3Provider(env)), + s3: fp.TE.right(MakeSpaceProvider(impl.space)), fs: fp.TE.right(fsClient), - env: fp.TE.right(env), redis: redisClient, tg: pipe( TGBotProvider( - { logger: serverLogger }, + { + logger: serverLogger, + client: (token, opts) => new TelegramBot(token, opts), + }, { token: env.TG_BOT_TOKEN, chat: env.TG_BOT_CHAT, @@ -130,65 +133,56 @@ export const makeContext = ( ), urlMetadata: fp.TE.right(urlMetadataClient), puppeteer: fp.TE.right( - GetPuppeteerProvider( - puppeteer as any as VanillaPuppeteer, - {}, - puppeteer.KnownDevices, - ), + GetPuppeteerProvider(impl.puppeteer.client, {}, puppeteer.KnownDevices), ), - ffmpeg: fp.TE.right(GetFFMPEGProvider(ffmpeg)), + ffmpeg: fp.TE.right(GetFFMPEGProvider(impl.ffmpeg.client)), imgProc: pipe( - fp.TE.tryCatch( - (): Promise => - import("sharp").then((imp) => imp.default), - toWorkerError, - ), + fp.TE.tryCatch(() => impl.imgProc.client(), toWorkerError), fp.TE.map((sharp) => MakeImgProcClient({ logger: serverLogger.extend("imgproc"), - client: sharp.bind(sharp), + client: sharp, exifR: ExifReader, }), ), ), - http: fp.TE.right(HTTPProvider(axios.default.create({}))), + http: fp.TE.right(HTTPProvider(impl.http.client)), config: config({ fs: fsClient, logger: serverLogger }), - geo: fp.TE.right( + blocknote: fp.TE.right(editor), + wp: fp.TE.right(wpProvider), + rw: fp.TE.right(rationalWikiProvider), + }), + fp.TE.bind("geo", (ctx) => + fp.TE.right( GeocodeProvider({ - http: HTTPProvider( - axios.default.create({ baseURL: env.GEO_CODE_BASE_URL }), - ), - apiKey: env.GEO_CODE_API_KEY, + http: HTTPProvider(impl.geo.client), + apiKey: ctx.env.GEO_CODE_API_KEY, }), ), - blocknote: fp.TE.right(editor), - ner: fp.TE.right( + ), + fp.TE.bind("ner", (ctx) => + fp.TE.right( GetNERProvider({ logger: serverLogger.extend("ner"), - entitiesFile: path.resolve(process.cwd(), "config/nlp/entities.json"), - nlp: WinkFn, + entitiesFile: path.resolve( + ctx.config.dirs.config.nlp, + "entities.json", + ), + nlp: impl.ner.nlp.client, }), ), - wp: fp.TE.right(wpProvider), - rw: fp.TE.right(rationalWikiProvider), - }), + ), fp.TE.bind("queue", (ctx) => fp.TE.right(GetQueueProvider(fsClient, ctx.config.dirs.temp.queue)), ), fp.TE.bind("pdf", ({ config }) => - pipe( - fp.TE.tryCatch( - () => import("pdfjs-dist/legacy/build/pdf.mjs"), - toWorkerError, - ), - fp.TE.map((pdf) => - PDFProvider({ - client: pdf, - cMapUrl: config.dirs.pdf.cMapUrl, - cMapPacked: true, - standardFontDataUrl: config.dirs.pdf.standardFontDataUrl, - }), - ), + fp.TE.right( + PDFProvider({ + client: impl.pdf.client, + cMapUrl: config.dirs.pdf.cMapUrl, + cMapPacked: true, + standardFontDataUrl: config.dirs.pdf.standardFontDataUrl, + }), ), ), ); diff --git a/services/worker/src/io/worker.error.ts b/services/worker/src/io/worker.error.ts index 1ea2c218d..e5ea9263f 100644 --- a/services/worker/src/io/worker.error.ts +++ b/services/worker/src/io/worker.error.ts @@ -1,7 +1,7 @@ import { type NotFoundError } from "@liexp/backend/lib/errors/NotFoundError.js"; import { type IOError } from "@liexp/backend/lib/errors/index.js"; import { type DBError } from "@liexp/backend/lib/providers/orm/database.provider.js"; -import { type RedisError } from "@liexp/backend/lib/providers/redis/redis.provider.js"; +import { type RedisError } from "@liexp/backend/lib/providers/redis/redis.error.js"; import { type SpaceError } from "@liexp/backend/lib/providers/space/space.provider.js"; import { type _DecodeError } from "@liexp/shared/lib/io/http/Error/DecodeError.js"; import { type HTTPError } from "@liexp/shared/lib/providers/http/http.provider.js"; diff --git a/services/worker/src/services/subscribers/WorkerSubscribers.ts b/services/worker/src/services/subscribers/WorkerSubscribers.ts index 7fbbc220f..e8ac90a00 100644 --- a/services/worker/src/services/subscribers/WorkerSubscribers.ts +++ b/services/worker/src/services/subscribers/WorkerSubscribers.ts @@ -1,4 +1,4 @@ -import { type Subscriber } from "@liexp/backend/lib/providers/redis/redis.provider.js"; +import { type Subscriber } from "@liexp/backend/lib/providers/redis/Subscriber.js"; import { fp, pipe } from "@liexp/core/lib/fp/index.js"; import { type RTE } from "../../types.js"; import { CreateEventFromURLSubscriber } from "./event/createEventFromURL.subscriber.js"; diff --git a/services/worker/src/services/subscribers/event/createEventFromURL.subscriber.ts b/services/worker/src/services/subscribers/event/createEventFromURL.subscriber.ts index 4c417246e..d226e3ea5 100644 --- a/services/worker/src/services/subscribers/event/createEventFromURL.subscriber.ts +++ b/services/worker/src/services/subscribers/event/createEventFromURL.subscriber.ts @@ -1,5 +1,5 @@ import { createEventFromURL } from "@liexp/backend/lib/flows/event/createEventFromURL.flow.js"; -import { Subscriber } from "@liexp/backend/lib/providers/redis/redis.provider.js"; +import { Subscriber } from "@liexp/backend/lib/providers/redis/Subscriber.js"; import { CreateEventFromURLPubSub } from "@liexp/backend/lib/pubsub/events/createEventFromURL.pubSub.js"; import { UserRepository } from "@liexp/backend/lib/services/entity-repository.service.js"; import { fp } from "@liexp/core/lib/fp/index.js"; diff --git a/services/worker/src/services/subscribers/media/extractMediaExtra.subscriber.ts b/services/worker/src/services/subscribers/media/extractMediaExtra.subscriber.ts index 364d06470..7a57a9f24 100644 --- a/services/worker/src/services/subscribers/media/extractMediaExtra.subscriber.ts +++ b/services/worker/src/services/subscribers/media/extractMediaExtra.subscriber.ts @@ -1,6 +1,6 @@ import { type MediaEntity } from "@liexp/backend/lib/entities/Media.entity.js"; import { extractMediaExtra } from "@liexp/backend/lib/flows/media/extra/extractMediaExtra.flow.js"; -import { Subscriber } from "@liexp/backend/lib/providers/redis/redis.provider.js"; +import { Subscriber } from "@liexp/backend/lib/providers/redis/Subscriber.js"; import { ExtractMediaExtraPubSub } from "@liexp/backend/lib/pubsub/media/extractMediaExtra.pubSub.js"; import { MediaRepository } from "@liexp/backend/lib/services/entity-repository.service.js"; import { fp } from "@liexp/core/lib/fp/index.js"; diff --git a/services/worker/src/services/subscribers/media/generateThumbnail.subscriber.ts b/services/worker/src/services/subscribers/media/generateThumbnail.subscriber.ts index 726362aff..4897b0eb8 100644 --- a/services/worker/src/services/subscribers/media/generateThumbnail.subscriber.ts +++ b/services/worker/src/services/subscribers/media/generateThumbnail.subscriber.ts @@ -1,5 +1,5 @@ import { generateThumbnailFlow } from "@liexp/backend/lib/flows/media/thumbnails/generateThumbnails.flow.js"; -import { Subscriber } from "@liexp/backend/lib/providers/redis/redis.provider.js"; +import { Subscriber } from "@liexp/backend/lib/providers/redis/Subscriber.js"; import { GenerateThumbnailPubSub } from "@liexp/backend/lib/pubsub/media/generateThumbnail.pubSub.js"; import { fp } from "@liexp/core/lib/fp/index.js"; import { pipe } from "fp-ts/lib/function.js"; diff --git a/services/worker/src/services/subscribers/media/transferFromExternalProvider.subscriber.ts b/services/worker/src/services/subscribers/media/transferFromExternalProvider.subscriber.ts index 8f14ce38e..a1b822e3a 100644 --- a/services/worker/src/services/subscribers/media/transferFromExternalProvider.subscriber.ts +++ b/services/worker/src/services/subscribers/media/transferFromExternalProvider.subscriber.ts @@ -1,4 +1,4 @@ -import { Subscriber } from "@liexp/backend/lib/providers/redis/redis.provider.js"; +import { Subscriber } from "@liexp/backend/lib/providers/redis/Subscriber.js"; import { TransferMediaFromExternalProviderPubSub } from "@liexp/backend/lib/pubsub/media/transferFromExternalProvider.pubSub.js"; import { MediaRepository } from "@liexp/backend/lib/services/entity-repository.service.js"; import { fp, pipe } from "@liexp/core/lib/fp/index.js"; diff --git a/services/worker/src/services/subscribers/nlp/extractEntitiesWithNLP.subscriber.ts b/services/worker/src/services/subscribers/nlp/extractEntitiesWithNLP.subscriber.ts index a5aae895b..5637cc80e 100644 --- a/services/worker/src/services/subscribers/nlp/extractEntitiesWithNLP.subscriber.ts +++ b/services/worker/src/services/subscribers/nlp/extractEntitiesWithNLP.subscriber.ts @@ -1,5 +1,5 @@ import { extractEntitiesFromAnyCached } from "@liexp/backend/lib/flows/admin/nlp/extractEntitiesFromAny.flow.js"; -import { Subscriber } from "@liexp/backend/lib/providers/redis/redis.provider.js"; +import { Subscriber } from "@liexp/backend/lib/providers/redis/Subscriber.js"; import { ExtractEntitiesWithNLP } from "@liexp/backend/lib/pubsub/nlp/extractEntitiesWithNLP.pubSub.js"; import { fp } from "@liexp/core/lib/fp/index.js"; import { pipe } from "fp-ts/lib/function.js"; diff --git a/services/worker/src/services/subscribers/social-post/PostToSocialPlatforms.subscriber.ts b/services/worker/src/services/subscribers/social-post/PostToSocialPlatforms.subscriber.ts index debef1565..6bd6a202d 100644 --- a/services/worker/src/services/subscribers/social-post/PostToSocialPlatforms.subscriber.ts +++ b/services/worker/src/services/subscribers/social-post/PostToSocialPlatforms.subscriber.ts @@ -1,12 +1,13 @@ -import { Subscriber } from "@liexp/backend/lib/providers/redis/redis.provider.js"; +import { Subscriber } from "@liexp/backend/lib/providers/redis/Subscriber.js"; import { PostToSocialPlatformsPubSub } from "@liexp/backend/lib/pubsub/postToSocialPlatforms.pubSub.js"; import { fp } from "@liexp/core/lib/fp/index.js"; import { pipe } from "fp-ts/lib/function.js"; +import { type RTE } from "../../../types.js"; import { postToSocialPlatforms } from "#flows/social-post/postToPlatforms.flow.js"; export const PostToSocialPlatformsSubscriber = Subscriber( PostToSocialPlatformsPubSub, - (payload) => + (payload): RTE => pipe( postToSocialPlatforms(payload), fp.RTE.map(() => undefined), diff --git a/services/worker/test/WorkerTest.ts b/services/worker/test/WorkerTest.ts index 6fd311c54..a8e26ee4e 100644 --- a/services/worker/test/WorkerTest.ts +++ b/services/worker/test/WorkerTest.ts @@ -29,7 +29,7 @@ import * as TE from "fp-ts/lib/TaskEither.js"; import { pipe } from "fp-ts/lib/function.js"; import path from "path"; import { vi } from "vitest"; -import { mocks, type AppMocks } from "@liexp/backend/lib/test/mocks.js"; +import { mocks, type DepsMocks } from "@liexp/backend/lib/test/mocks.js"; import { WorkerContext } from "#context/context.js"; import { getDataSource, @@ -53,7 +53,7 @@ vi.mock("node-telegram-bot-api"); export interface WorkerTest { ctx: WorkerContext; - mocks: AppMocks; + mocks: DepsMocks; utils: { e2eAfterAll: () => Promise; }; From 7626f5214a91b2ec89f3e1adc72eeecfa4876f5d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 18 Jan 2025 11:44:35 +0100 Subject: [PATCH 15/19] build(deps): bump the eslint group across 10 directories with 2 updates (#2040) - Updates `typescript-eslint` from 8.19.1 to 8.20.0 - Updates `eslint-plugin-prettier` from 5.2.1 to 5.2.2 --- package.json | 2 +- packages/@liexp/core/package.json | 2 +- pnpm-lock.yaml | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 836426875..814008317 100644 --- a/package.json +++ b/package.json @@ -50,7 +50,7 @@ "knip": "^5.39.4", "lint-staged": "^15.2.11", "typescript": "^5.6.3", - "typescript-eslint": "^8.18.0", + "typescript-eslint": "^8.20.0", "vitest": "^2.1.8" }, "packageManager": "pnpm@9.15.4+sha512.b2dc20e2fc72b3e18848459b37359a32064663e5627a51e4c74b2c29dd8e8e0491483c3abb40789cfd578bf362fb6ba8261b05f0387d76792ed6e23ea3b1b6a0", diff --git a/packages/@liexp/core/package.json b/packages/@liexp/core/package.json index e71b02851..58cccf8fe 100644 --- a/packages/@liexp/core/package.json +++ b/packages/@liexp/core/package.json @@ -40,7 +40,7 @@ "eslint-import-resolver-typescript": "^3.7.0", "eslint-plugin-fp-ts": "^0.3.2", "eslint-plugin-import": "^2.31.0", - "eslint-plugin-prettier": "^5.2.1", + "eslint-plugin-prettier": "^5.2.2", "eslint-plugin-react": "^7.37.4", "prettier": "^3.4.2", "typescript": "^5.6.2" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7ba8fa6fb..60ec72e5b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -44,7 +44,7 @@ importers: specifier: ^5.6.3 version: 5.7.2 typescript-eslint: - specifier: ^8.18.0 + specifier: ^8.20.0 version: 8.20.0(eslint@9.18.0(jiti@2.4.1))(typescript@5.7.2) vitest: specifier: ^2.1.8 @@ -268,7 +268,7 @@ importers: specifier: ^2.31.0 version: 2.31.0(@typescript-eslint/parser@8.20.0(eslint@9.18.0(jiti@2.4.1))(typescript@5.7.2))(eslint-import-resolver-typescript@3.7.0)(eslint@9.18.0(jiti@2.4.1)) eslint-plugin-prettier: - specifier: ^5.2.1 + specifier: ^5.2.2 version: 5.2.2(@types/eslint@9.6.1)(eslint-config-prettier@9.1.0(eslint@9.18.0(jiti@2.4.1)))(eslint@9.18.0(jiti@2.4.1))(prettier@3.4.2) eslint-plugin-react: specifier: ^7.37.4 From 50cddc7b8f4f350c9b0bc01b718b026bafa5fb91 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 22 Jan 2025 18:08:21 +0100 Subject: [PATCH 16/19] build(deps-dev): bump the vite group across 8 directories with 2 updates (#2058) Updates `vitest` from 2.1.8 to 3.0.3 Updates `vite` from 6.0.7 to 6.0.11 --- package.json | 2 +- packages/@liexp/backend/package.json | 2 +- packages/@liexp/shared/package.json | 2 +- packages/@liexp/ui/package.json | 4 +- pnpm-lock.yaml | 513 +++++++-------------------- services/admin-web/package.json | 2 +- services/api/package.json | 2 +- services/storybook/package.json | 2 +- services/web/package.json | 2 +- services/worker/package.json | 2 +- 10 files changed, 139 insertions(+), 394 deletions(-) diff --git a/package.json b/package.json index 814008317..edb9949eb 100644 --- a/package.json +++ b/package.json @@ -51,7 +51,7 @@ "lint-staged": "^15.2.11", "typescript": "^5.6.3", "typescript-eslint": "^8.20.0", - "vitest": "^2.1.8" + "vitest": "^3.0.3" }, "packageManager": "pnpm@9.15.4+sha512.b2dc20e2fc72b3e18848459b37359a32064663e5627a51e4c74b2c29dd8e8e0491483c3abb40789cfd578bf362fb6ba8261b05f0387d76792ed6e23ea3b1b6a0", "engines": { diff --git a/packages/@liexp/backend/package.json b/packages/@liexp/backend/package.json index ba6e3fd7b..7890e1267 100644 --- a/packages/@liexp/backend/package.json +++ b/packages/@liexp/backend/package.json @@ -60,7 +60,7 @@ "puppeteer-extra-plugin-stealth": "^2.11.2", "typescript": "^5.6.2", "vite-tsconfig-paths": "^5.1.4", - "vitest": "^2.1.8", + "vitest": "^3.0.3", "vitest-mock-extended": "^2.0.2" }, "peerDependencies": { diff --git a/packages/@liexp/shared/package.json b/packages/@liexp/shared/package.json index 5f6b9b408..1e407e9cc 100644 --- a/packages/@liexp/shared/package.json +++ b/packages/@liexp/shared/package.json @@ -53,7 +53,7 @@ "react-admin": "^5.4.4", "typescript": "^5.6.2", "vite-tsconfig-paths": "^5.1.4", - "vitest": "^2.1.8", + "vitest": "^3.0.3", "vitest-mock-extended": "^2.0.2" }, "peerDependencies": { diff --git a/packages/@liexp/ui/package.json b/packages/@liexp/ui/package.json index c559846ad..fa0f656dc 100644 --- a/packages/@liexp/ui/package.json +++ b/packages/@liexp/ui/package.json @@ -126,9 +126,9 @@ "eslint": "^9.18.0", "openai": "^4.78.1", "typescript": "^5.6.2", - "vite": "^6.0.9", + "vite": "^6.0.11", "vite-tsconfig-paths": "^5.1.4", - "vitest": "^2.1.8" + "vitest": "^3.0.3" }, "packageManager": "pnpm@9.15.4+sha512.b2dc20e2fc72b3e18848459b37359a32064663e5627a51e4c74b2c29dd8e8e0491483c3abb40789cfd578bf362fb6ba8261b05f0387d76792ed6e23ea3b1b6a0" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 60ec72e5b..53ddd973d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -27,7 +27,7 @@ importers: version: 22.10.7 '@vitest/coverage-v8': specifier: ^2.1.8 - version: 2.1.8(vitest@2.1.8(@types/node@22.10.7)(jsdom@26.0.0(canvas@3.0.1))(sass@1.82.0)(terser@5.37.0)) + version: 2.1.8(vitest@3.0.4(@types/debug@4.1.12)(@types/node@22.10.7)(jiti@2.4.1)(jsdom@26.0.0(canvas@3.0.1))(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)) eslint: specifier: ^9.18.0 version: 9.18.0(jiti@2.4.1) @@ -47,8 +47,8 @@ importers: specifier: ^8.20.0 version: 8.20.0(eslint@9.18.0(jiti@2.4.1))(typescript@5.7.2) vitest: - specifier: ^2.1.8 - version: 2.1.8(@types/node@22.10.7)(jsdom@26.0.0(canvas@3.0.1))(sass@1.82.0)(terser@5.37.0) + specifier: ^3.0.3 + version: 3.0.4(@types/debug@4.1.12)(@types/node@22.10.7)(jiti@2.4.1)(jsdom@26.0.0(canvas@3.0.1))(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) packages/@liexp/backend: dependencies: @@ -193,13 +193,13 @@ importers: version: 5.7.2 vite-tsconfig-paths: specifier: ^5.1.4 - version: 5.1.4(typescript@5.7.2)(vite@5.4.14(@types/node@22.10.7)(sass@1.82.0)(terser@5.37.0)) + version: 5.1.4(typescript@5.7.2)(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)) vitest: - specifier: ^2.1.8 - version: 2.1.8(@types/node@22.10.7)(jsdom@26.0.0(canvas@3.0.1))(sass@1.82.0)(terser@5.37.0) + specifier: ^3.0.3 + version: 3.0.4(@types/debug@4.1.12)(@types/node@22.10.7)(jiti@2.4.1)(jsdom@26.0.0(canvas@3.0.1))(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) vitest-mock-extended: specifier: ^2.0.2 - version: 2.0.2(typescript@5.7.2)(vitest@2.1.8(@types/node@22.10.7)(jsdom@26.0.0(canvas@3.0.1))(sass@1.82.0)(terser@5.37.0)) + version: 2.0.2(typescript@5.7.2)(vitest@3.0.4(@types/debug@4.1.12)(@types/node@22.10.7)(jiti@2.4.1)(jsdom@26.0.0(canvas@3.0.1))(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)) packages/@liexp/core: dependencies: @@ -377,11 +377,11 @@ importers: specifier: ^5.1.4 version: 5.1.4(typescript@5.7.2)(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)) vitest: - specifier: ^2.1.8 - version: 2.1.8(@types/node@22.10.7)(jsdom@26.0.0(canvas@2.11.2))(sass@1.82.0)(terser@5.37.0) + specifier: ^3.0.3 + version: 3.0.4(@types/debug@4.1.12)(@types/node@22.10.7)(jiti@2.4.1)(jsdom@26.0.0(canvas@2.11.2))(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) vitest-mock-extended: specifier: ^2.0.2 - version: 2.0.2(typescript@5.7.2)(vitest@2.1.8(@types/node@22.10.7)(jsdom@26.0.0(canvas@2.11.2))(sass@1.82.0)(terser@5.37.0)) + version: 2.0.2(typescript@5.7.2)(vitest@3.0.4(@types/debug@4.1.12)(@types/node@22.10.7)(jiti@2.4.1)(jsdom@26.0.0(canvas@2.11.2))(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)) packages/@liexp/test: dependencies: @@ -706,14 +706,14 @@ importers: specifier: ^5.6.2 version: 5.7.2 vite: - specifier: ^6.0.9 + specifier: ^6.0.11 version: 6.0.11(@types/node@22.10.7)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) vite-tsconfig-paths: specifier: ^5.1.4 version: 5.1.4(typescript@5.7.2)(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)) vitest: - specifier: ^2.1.8 - version: 2.1.8(@types/node@22.10.7)(jsdom@26.0.0(canvas@3.0.1))(sass@1.82.0)(terser@5.37.0) + specifier: ^3.0.3 + version: 3.0.4(@types/debug@4.1.12)(@types/node@22.10.7)(jiti@2.4.1)(jsdom@26.0.0(canvas@3.0.1))(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) services/admin-web: dependencies: @@ -788,7 +788,7 @@ importers: specifier: ^5.6.2 version: 5.7.2 vite: - specifier: ^6.0.9 + specifier: ^6.0.11 version: 6.0.11(@types/node@22.10.7)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) vite-plugin-css-injected-by-js: specifier: ^3.5.2 @@ -1009,11 +1009,11 @@ importers: specifier: ^5.1.4 version: 5.1.4(typescript@5.7.2)(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)) vitest: - specifier: ^2.1.8 - version: 2.1.8(@types/node@22.10.7)(jsdom@26.0.0(canvas@3.0.1))(sass@1.82.0)(terser@5.37.0) + specifier: ^3.0.3 + version: 3.0.4(@types/debug@4.1.12)(@types/node@22.10.7)(jiti@2.4.1)(jsdom@26.0.0(canvas@3.0.1))(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) vitest-mock-extended: specifier: ^2.0.2 - version: 2.0.2(typescript@5.7.2)(vitest@2.1.8(@types/node@22.10.7)(jsdom@26.0.0(canvas@3.0.1))(sass@1.82.0)(terser@5.37.0)) + version: 2.0.2(typescript@5.7.2)(vitest@3.0.4(@types/debug@4.1.12)(@types/node@22.10.7)(jiti@2.4.1)(jsdom@26.0.0(canvas@3.0.1))(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)) services/storybook: dependencies: @@ -1118,7 +1118,7 @@ importers: specifier: ^5.6.2 version: 5.7.2 vite: - specifier: ^6.0.9 + specifier: ^6.0.11 version: 6.0.11(@types/node@22.10.7)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) vite-plugin-css-injected-by-js: specifier: ^3.5.2 @@ -1230,7 +1230,7 @@ importers: specifier: ^5.6.2 version: 5.7.2 vite: - specifier: ^6.0.9 + specifier: ^6.0.11 version: 6.0.11(@types/node@22.10.7)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) vite-plugin-css-injected-by-js: specifier: ^3.5.2 @@ -1348,8 +1348,8 @@ importers: specifier: ^5.1.4 version: 5.1.4(typescript@5.7.2)(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)) vitest: - specifier: ^2.1.8 - version: 2.1.8(@types/node@22.10.7)(jsdom@26.0.0(canvas@3.0.1))(sass@1.82.0)(terser@5.37.0) + specifier: ^3.0.3 + version: 3.0.4(@types/debug@4.1.12)(@types/node@22.10.7)(jiti@2.4.1)(jsdom@26.0.0(canvas@3.0.1))(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) packages: @@ -1887,12 +1887,6 @@ packages: '@emotion/weak-memoize@0.4.0': resolution: {integrity: sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==} - '@esbuild/aix-ppc64@0.21.5': - resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [aix] - '@esbuild/aix-ppc64@0.23.1': resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==} engines: {node: '>=18'} @@ -1905,12 +1899,6 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.21.5': - resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - '@esbuild/android-arm64@0.23.1': resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==} engines: {node: '>=18'} @@ -1923,12 +1911,6 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm@0.21.5': - resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - '@esbuild/android-arm@0.23.1': resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==} engines: {node: '>=18'} @@ -1941,12 +1923,6 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-x64@0.21.5': - resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - '@esbuild/android-x64@0.23.1': resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==} engines: {node: '>=18'} @@ -1959,12 +1935,6 @@ packages: cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.21.5': - resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - '@esbuild/darwin-arm64@0.23.1': resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==} engines: {node: '>=18'} @@ -1977,12 +1947,6 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.21.5': - resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - '@esbuild/darwin-x64@0.23.1': resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==} engines: {node: '>=18'} @@ -1995,12 +1959,6 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.21.5': - resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - '@esbuild/freebsd-arm64@0.23.1': resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==} engines: {node: '>=18'} @@ -2013,12 +1971,6 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.21.5': - resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - '@esbuild/freebsd-x64@0.23.1': resolution: {integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==} engines: {node: '>=18'} @@ -2031,12 +1983,6 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.21.5': - resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - '@esbuild/linux-arm64@0.23.1': resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==} engines: {node: '>=18'} @@ -2049,12 +1995,6 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.21.5': - resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - '@esbuild/linux-arm@0.23.1': resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==} engines: {node: '>=18'} @@ -2067,12 +2007,6 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.21.5': - resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - '@esbuild/linux-ia32@0.23.1': resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==} engines: {node: '>=18'} @@ -2085,12 +2019,6 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.21.5': - resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - '@esbuild/linux-loong64@0.23.1': resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==} engines: {node: '>=18'} @@ -2103,12 +2031,6 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.21.5': - resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - '@esbuild/linux-mips64el@0.23.1': resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==} engines: {node: '>=18'} @@ -2121,12 +2043,6 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.21.5': - resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - '@esbuild/linux-ppc64@0.23.1': resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==} engines: {node: '>=18'} @@ -2139,12 +2055,6 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.21.5': - resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - '@esbuild/linux-riscv64@0.23.1': resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==} engines: {node: '>=18'} @@ -2157,12 +2067,6 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.21.5': - resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - '@esbuild/linux-s390x@0.23.1': resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==} engines: {node: '>=18'} @@ -2175,12 +2079,6 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.21.5': - resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - '@esbuild/linux-x64@0.23.1': resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==} engines: {node: '>=18'} @@ -2199,12 +2097,6 @@ packages: cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-x64@0.21.5': - resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - '@esbuild/netbsd-x64@0.23.1': resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==} engines: {node: '>=18'} @@ -2229,12 +2121,6 @@ packages: cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-x64@0.21.5': - resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - '@esbuild/openbsd-x64@0.23.1': resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==} engines: {node: '>=18'} @@ -2247,12 +2133,6 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/sunos-x64@0.21.5': - resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - '@esbuild/sunos-x64@0.23.1': resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==} engines: {node: '>=18'} @@ -2265,12 +2145,6 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.21.5': - resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - '@esbuild/win32-arm64@0.23.1': resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==} engines: {node: '>=18'} @@ -2283,12 +2157,6 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.21.5': - resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - '@esbuild/win32-ia32@0.23.1': resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==} engines: {node: '>=18'} @@ -2301,12 +2169,6 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.21.5': - resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - '@esbuild/win32-x64@0.23.1': resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==} engines: {node: '>=18'} @@ -4763,14 +4625,14 @@ packages: '@vitest/expect@2.0.5': resolution: {integrity: sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==} - '@vitest/expect@2.1.8': - resolution: {integrity: sha512-8ytZ/fFHq2g4PJVAtDX57mayemKgDR6X3Oa2Foro+EygiOJHUXhCqBAAKQYYajZpFoIfvBCF1j6R6IYRSIUFuw==} + '@vitest/expect@3.0.4': + resolution: {integrity: sha512-Nm5kJmYw6P2BxhJPkO3eKKhGYKRsnqJqf+r0yOGRKpEP+bSCBDsjXgiu1/5QFrnPMEgzfC38ZEjvCFgaNBC0Eg==} - '@vitest/mocker@2.1.8': - resolution: {integrity: sha512-7guJ/47I6uqfttp33mgo6ga5Gr1VnL58rcqYKyShoRK9ebu8T5Rs6HN3s1NABiBeVTdWNrwUMcHH54uXZBN4zA==} + '@vitest/mocker@3.0.4': + resolution: {integrity: sha512-gEef35vKafJlfQbnyOXZ0Gcr9IBUsMTyTLXsEQwuyYAerpHqvXhzdBnDFuHLpFqth3F7b6BaFr4qV/Cs1ULx5A==} peerDependencies: msw: ^2.4.9 - vite: ^5.0.0 + vite: ^5.0.0 || ^6.0.0 peerDependenciesMeta: msw: optional: true @@ -4783,17 +4645,20 @@ packages: '@vitest/pretty-format@2.1.8': resolution: {integrity: sha512-9HiSZ9zpqNLKlbIDRWOnAWqgcA7xu+8YxXSekhr0Ykab7PAYFkhkwoqVArPOtJhPmYeE2YHgKZlj3CP36z2AJQ==} - '@vitest/runner@2.1.8': - resolution: {integrity: sha512-17ub8vQstRnRlIU5k50bG+QOMLHRhYPAna5tw8tYbj+jzjcspnwnwtPtiOlkuKC4+ixDPTuLZiqiWWQ2PSXHVg==} + '@vitest/pretty-format@3.0.4': + resolution: {integrity: sha512-ts0fba+dEhK2aC9PFuZ9LTpULHpY/nd6jhAQ5IMU7Gaj7crPCTdCFfgvXxruRBLFS+MLraicCuFXxISEq8C93g==} - '@vitest/snapshot@2.1.8': - resolution: {integrity: sha512-20T7xRFbmnkfcmgVEz+z3AU/3b0cEzZOt/zmnvZEctg64/QZbSDJEVm9fLnnlSi74KibmRsO9/Qabi+t0vCRPg==} + '@vitest/runner@3.0.4': + resolution: {integrity: sha512-dKHzTQ7n9sExAcWH/0sh1elVgwc7OJ2lMOBrAm73J7AH6Pf9T12Zh3lNE1TETZaqrWFXtLlx3NVrLRb5hCK+iw==} + + '@vitest/snapshot@3.0.4': + resolution: {integrity: sha512-+p5knMLwIk7lTQkM3NonZ9zBewzVp9EVkVpvNta0/PlFWpiqLaRcF4+33L1it3uRUCh0BGLOaXPPGEjNKfWb4w==} '@vitest/spy@2.0.5': resolution: {integrity: sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==} - '@vitest/spy@2.1.8': - resolution: {integrity: sha512-5swjf2q95gXeYPevtW0BLk6H8+bPlMb4Vw/9Em4hFxDcaOxS+e0LOX4yqNxoHzMR2akEB2xfpnWUzkZokmgWDg==} + '@vitest/spy@3.0.4': + resolution: {integrity: sha512-sXIMF0oauYyUy2hN49VFTYodzEAu744MmGcPR3ZBsPM20G+1/cSW/n1U+3Yu/zHxX2bIDe1oJASOkml+osTU6Q==} '@vitest/utils@2.0.5': resolution: {integrity: sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==} @@ -4801,6 +4666,9 @@ packages: '@vitest/utils@2.1.8': resolution: {integrity: sha512-dwSoui6djdwbfFmIgbIjX2ZhIoG7Ex/+xpxyiEgIGzjliY8xGkcpITKTlp6B4MgtGkF2ilvm97cPM96XZaAgcA==} + '@vitest/utils@3.0.4': + resolution: {integrity: sha512-8BqC1ksYsHtbWH+DfpOAKrFw3jl3Uf9J7yeFh85Pz52IWuh1hBBtyfEbRNNZNjl8H8A5yMLH9/t+k7HIKzQcZQ==} + '@xmldom/xmldom@0.8.10': resolution: {integrity: sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==} engines: {node: '>=10.0.0'} @@ -6118,11 +5986,6 @@ packages: peerDependencies: esbuild: '>=0.12 <1' - esbuild@0.21.5: - resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} - engines: {node: '>=12'} - hasBin: true - esbuild@0.23.1: resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==} engines: {node: '>=18'} @@ -8355,8 +8218,8 @@ packages: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} - pathe@1.1.2: - resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + pathe@2.0.2: + resolution: {integrity: sha512-15Ztpk+nov8DR524R4BF7uEuzESgzUEAV4Ah7CUMNGXdE5ELuvxElxGXndBl32vMSsWa1jpNf22Z+Er3sKwq+w==} pathval@2.0.0: resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} @@ -9719,6 +9582,10 @@ packages: resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==} engines: {node: '>=14.0.0'} + tinyrainbow@2.0.0: + resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} + engines: {node: '>=14.0.0'} + tinyspy@3.0.2: resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} engines: {node: '>=14.0.0'} @@ -10236,9 +10103,9 @@ packages: vfile@6.0.3: resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} - vite-node@2.1.8: - resolution: {integrity: sha512-uPAwSr57kYjAUux+8E2j0q0Fxpn8M9VoyfGiRI8Kfktz9NcYMCenwY5RnZxnF1WTu3TGiYipirIzacLL3VVGFg==} - engines: {node: ^18.0.0 || >=20.0.0} + vite-node@3.0.4: + resolution: {integrity: sha512-7JZKEzcYV2Nx3u6rlvN8qdo3QV7Fxyt6hx+CCKz9fbWxdX5IvUOmTWEAxMrWxaiSf7CKGLJQ5rFu8prb/jBjOA==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true vite-plugin-css-injected-by-js@3.5.2: @@ -10257,37 +10124,6 @@ packages: vite: optional: true - vite@5.4.14: - resolution: {integrity: sha512-EK5cY7Q1D8JNhSaPKVK4pwBFvaTmZxEnoKXLG/U9gmdDcihQGNzFlgIvaxezFR4glP1LsuiedwMBqCXH3wZccA==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 - less: '*' - lightningcss: ^1.21.0 - sass: '*' - sass-embedded: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - sass-embedded: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - vite@6.0.11: resolution: {integrity: sha512-4VL9mQPKoHy4+FE0NnRE/kbY51TOfaknxAjt3fJbGJxhIpBZiqVzlZDEesWWsuREXHwNdAoOFZ9MkPEVXczHwg==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} @@ -10334,20 +10170,23 @@ packages: typescript: 3.x || 4.x || 5.x vitest: '>=2.0.0' - vitest@2.1.8: - resolution: {integrity: sha512-1vBKTZskHw/aosXqQUlVWWlGUxSJR8YtiyZDJAFeW2kPAeX6S3Sool0mjspO+kXLuxVWlEDDowBAeqeAQefqLQ==} - engines: {node: ^18.0.0 || >=20.0.0} + vitest@3.0.4: + resolution: {integrity: sha512-6XG8oTKy2gnJIFTHP6LD7ExFeNLxiTkK3CfMvT7IfR8IN+BYICCf0lXUQmX7i7JoxUP8QmeP4mTnWXgflu4yjw==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' - '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': 2.1.8 - '@vitest/ui': 2.1.8 + '@types/debug': ^4.1.12 + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + '@vitest/browser': 3.0.4 + '@vitest/ui': 3.0.4 happy-dom: '*' jsdom: '*' peerDependenciesMeta: '@edge-runtime/vm': optional: true + '@types/debug': + optional: true '@types/node': optional: true '@vitest/browser': @@ -11844,153 +11683,102 @@ snapshots: '@emotion/weak-memoize@0.4.0': {} - '@esbuild/aix-ppc64@0.21.5': - optional: true - '@esbuild/aix-ppc64@0.23.1': optional: true '@esbuild/aix-ppc64@0.24.2': optional: true - '@esbuild/android-arm64@0.21.5': - optional: true - '@esbuild/android-arm64@0.23.1': optional: true '@esbuild/android-arm64@0.24.2': optional: true - '@esbuild/android-arm@0.21.5': - optional: true - '@esbuild/android-arm@0.23.1': optional: true '@esbuild/android-arm@0.24.2': optional: true - '@esbuild/android-x64@0.21.5': - optional: true - '@esbuild/android-x64@0.23.1': optional: true '@esbuild/android-x64@0.24.2': optional: true - '@esbuild/darwin-arm64@0.21.5': - optional: true - '@esbuild/darwin-arm64@0.23.1': optional: true '@esbuild/darwin-arm64@0.24.2': optional: true - '@esbuild/darwin-x64@0.21.5': - optional: true - '@esbuild/darwin-x64@0.23.1': optional: true '@esbuild/darwin-x64@0.24.2': optional: true - '@esbuild/freebsd-arm64@0.21.5': - optional: true - '@esbuild/freebsd-arm64@0.23.1': optional: true '@esbuild/freebsd-arm64@0.24.2': optional: true - '@esbuild/freebsd-x64@0.21.5': - optional: true - '@esbuild/freebsd-x64@0.23.1': optional: true '@esbuild/freebsd-x64@0.24.2': optional: true - '@esbuild/linux-arm64@0.21.5': - optional: true - '@esbuild/linux-arm64@0.23.1': optional: true '@esbuild/linux-arm64@0.24.2': optional: true - '@esbuild/linux-arm@0.21.5': - optional: true - '@esbuild/linux-arm@0.23.1': optional: true '@esbuild/linux-arm@0.24.2': optional: true - '@esbuild/linux-ia32@0.21.5': - optional: true - '@esbuild/linux-ia32@0.23.1': optional: true '@esbuild/linux-ia32@0.24.2': optional: true - '@esbuild/linux-loong64@0.21.5': - optional: true - '@esbuild/linux-loong64@0.23.1': optional: true '@esbuild/linux-loong64@0.24.2': optional: true - '@esbuild/linux-mips64el@0.21.5': - optional: true - '@esbuild/linux-mips64el@0.23.1': optional: true '@esbuild/linux-mips64el@0.24.2': optional: true - '@esbuild/linux-ppc64@0.21.5': - optional: true - '@esbuild/linux-ppc64@0.23.1': optional: true '@esbuild/linux-ppc64@0.24.2': optional: true - '@esbuild/linux-riscv64@0.21.5': - optional: true - '@esbuild/linux-riscv64@0.23.1': optional: true '@esbuild/linux-riscv64@0.24.2': optional: true - '@esbuild/linux-s390x@0.21.5': - optional: true - '@esbuild/linux-s390x@0.23.1': optional: true '@esbuild/linux-s390x@0.24.2': optional: true - '@esbuild/linux-x64@0.21.5': - optional: true - '@esbuild/linux-x64@0.23.1': optional: true @@ -12000,9 +11788,6 @@ snapshots: '@esbuild/netbsd-arm64@0.24.2': optional: true - '@esbuild/netbsd-x64@0.21.5': - optional: true - '@esbuild/netbsd-x64@0.23.1': optional: true @@ -12015,45 +11800,30 @@ snapshots: '@esbuild/openbsd-arm64@0.24.2': optional: true - '@esbuild/openbsd-x64@0.21.5': - optional: true - '@esbuild/openbsd-x64@0.23.1': optional: true '@esbuild/openbsd-x64@0.24.2': optional: true - '@esbuild/sunos-x64@0.21.5': - optional: true - '@esbuild/sunos-x64@0.23.1': optional: true '@esbuild/sunos-x64@0.24.2': optional: true - '@esbuild/win32-arm64@0.21.5': - optional: true - '@esbuild/win32-arm64@0.23.1': optional: true '@esbuild/win32-arm64@0.24.2': optional: true - '@esbuild/win32-ia32@0.21.5': - optional: true - '@esbuild/win32-ia32@0.23.1': optional: true '@esbuild/win32-ia32@0.24.2': optional: true - '@esbuild/win32-x64@0.21.5': - optional: true - '@esbuild/win32-x64@0.23.1': optional: true @@ -14542,7 +14312,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@vitest/coverage-v8@2.1.8(vitest@2.1.8(@types/node@22.10.7)(jsdom@26.0.0(canvas@3.0.1))(sass@1.82.0)(terser@5.37.0))': + '@vitest/coverage-v8@2.1.8(vitest@3.0.4(@types/debug@4.1.12)(@types/node@22.10.7)(jiti@2.4.1)(jsdom@26.0.0(canvas@3.0.1))(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 0.2.3 @@ -14556,7 +14326,7 @@ snapshots: std-env: 3.8.0 test-exclude: 7.0.1 tinyrainbow: 1.2.0 - vitest: 2.1.8(@types/node@22.10.7)(jsdom@26.0.0(canvas@3.0.1))(sass@1.82.0)(terser@5.37.0) + vitest: 3.0.4(@types/debug@4.1.12)(@types/node@22.10.7)(jiti@2.4.1)(jsdom@26.0.0(canvas@3.0.1))(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) transitivePeerDependencies: - supports-color @@ -14567,20 +14337,20 @@ snapshots: chai: 5.1.2 tinyrainbow: 1.2.0 - '@vitest/expect@2.1.8': + '@vitest/expect@3.0.4': dependencies: - '@vitest/spy': 2.1.8 - '@vitest/utils': 2.1.8 + '@vitest/spy': 3.0.4 + '@vitest/utils': 3.0.4 chai: 5.1.2 - tinyrainbow: 1.2.0 + tinyrainbow: 2.0.0 - '@vitest/mocker@2.1.8(vite@5.4.14(@types/node@22.10.7)(sass@1.82.0)(terser@5.37.0))': + '@vitest/mocker@3.0.4(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1))': dependencies: - '@vitest/spy': 2.1.8 + '@vitest/spy': 3.0.4 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: - vite: 5.4.14(@types/node@22.10.7)(sass@1.82.0)(terser@5.37.0) + vite: 6.0.11(@types/node@22.10.7)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) '@vitest/pretty-format@2.0.5': dependencies: @@ -14590,22 +14360,26 @@ snapshots: dependencies: tinyrainbow: 1.2.0 - '@vitest/runner@2.1.8': + '@vitest/pretty-format@3.0.4': dependencies: - '@vitest/utils': 2.1.8 - pathe: 1.1.2 + tinyrainbow: 2.0.0 - '@vitest/snapshot@2.1.8': + '@vitest/runner@3.0.4': dependencies: - '@vitest/pretty-format': 2.1.8 + '@vitest/utils': 3.0.4 + pathe: 2.0.2 + + '@vitest/snapshot@3.0.4': + dependencies: + '@vitest/pretty-format': 3.0.4 magic-string: 0.30.17 - pathe: 1.1.2 + pathe: 2.0.2 '@vitest/spy@2.0.5': dependencies: tinyspy: 3.0.2 - '@vitest/spy@2.1.8': + '@vitest/spy@3.0.4': dependencies: tinyspy: 3.0.2 @@ -14622,6 +14396,12 @@ snapshots: loupe: 3.1.2 tinyrainbow: 1.2.0 + '@vitest/utils@3.0.4': + dependencies: + '@vitest/pretty-format': 3.0.4 + loupe: 3.1.2 + tinyrainbow: 2.0.0 + '@xmldom/xmldom@0.8.10': {} '@xmldom/xmldom@0.9.5': @@ -16094,32 +15874,6 @@ snapshots: transitivePeerDependencies: - supports-color - esbuild@0.21.5: - optionalDependencies: - '@esbuild/aix-ppc64': 0.21.5 - '@esbuild/android-arm': 0.21.5 - '@esbuild/android-arm64': 0.21.5 - '@esbuild/android-x64': 0.21.5 - '@esbuild/darwin-arm64': 0.21.5 - '@esbuild/darwin-x64': 0.21.5 - '@esbuild/freebsd-arm64': 0.21.5 - '@esbuild/freebsd-x64': 0.21.5 - '@esbuild/linux-arm': 0.21.5 - '@esbuild/linux-arm64': 0.21.5 - '@esbuild/linux-ia32': 0.21.5 - '@esbuild/linux-loong64': 0.21.5 - '@esbuild/linux-mips64el': 0.21.5 - '@esbuild/linux-ppc64': 0.21.5 - '@esbuild/linux-riscv64': 0.21.5 - '@esbuild/linux-s390x': 0.21.5 - '@esbuild/linux-x64': 0.21.5 - '@esbuild/netbsd-x64': 0.21.5 - '@esbuild/openbsd-x64': 0.21.5 - '@esbuild/sunos-x64': 0.21.5 - '@esbuild/win32-arm64': 0.21.5 - '@esbuild/win32-ia32': 0.21.5 - '@esbuild/win32-x64': 0.21.5 - esbuild@0.23.1: optionalDependencies: '@esbuild/aix-ppc64': 0.23.1 @@ -18865,7 +18619,7 @@ snapshots: path-type@4.0.0: {} - pathe@1.1.2: {} + pathe@2.0.2: {} pathval@2.0.0: {} @@ -20573,6 +20327,8 @@ snapshots: tinyrainbow@1.2.0: {} + tinyrainbow@2.0.0: {} + tinyspy@3.0.2: {} tippy.js@6.3.7: @@ -21093,15 +20849,16 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.2 - vite-node@2.1.8(@types/node@22.10.7)(sass@1.82.0)(terser@5.37.0): + vite-node@3.0.4(@types/node@22.10.7)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1): dependencies: cac: 6.7.14 debug: 4.4.0 es-module-lexer: 1.6.0 - pathe: 1.1.2 - vite: 5.4.14(@types/node@22.10.7)(sass@1.82.0)(terser@5.37.0) + pathe: 2.0.2 + vite: 6.0.11(@types/node@22.10.7)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) transitivePeerDependencies: - '@types/node' + - jiti - less - lightningcss - sass @@ -21110,6 +20867,8 @@ snapshots: - sugarss - supports-color - terser + - tsx + - yaml vite-plugin-css-injected-by-js@3.5.2(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)): dependencies: @@ -21117,17 +20876,6 @@ snapshots: vite-plugin-optimizer@1.4.3: {} - vite-tsconfig-paths@5.1.4(typescript@5.7.2)(vite@5.4.14(@types/node@22.10.7)(sass@1.82.0)(terser@5.37.0)): - dependencies: - debug: 4.4.0 - globrex: 0.1.2 - tsconfck: 3.0.3(typescript@5.7.2) - optionalDependencies: - vite: 5.4.14(@types/node@22.10.7)(sass@1.82.0)(terser@5.37.0) - transitivePeerDependencies: - - supports-color - - typescript - vite-tsconfig-paths@5.1.4(typescript@5.7.2)(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)): dependencies: debug: 4.4.0 @@ -21139,17 +20887,6 @@ snapshots: - supports-color - typescript - vite@5.4.14(@types/node@22.10.7)(sass@1.82.0)(terser@5.37.0): - dependencies: - esbuild: 0.21.5 - postcss: 8.5.1 - rollup: 4.31.0 - optionalDependencies: - '@types/node': 22.10.7 - fsevents: 2.3.3 - sass: 1.82.0 - terser: 5.37.0 - vite@6.0.11(@types/node@22.10.7)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1): dependencies: esbuild: 0.24.2 @@ -21164,44 +20901,46 @@ snapshots: tsx: 4.19.2 yaml: 2.6.1 - vitest-mock-extended@2.0.2(typescript@5.7.2)(vitest@2.1.8(@types/node@22.10.7)(jsdom@26.0.0(canvas@2.11.2))(sass@1.82.0)(terser@5.37.0)): + vitest-mock-extended@2.0.2(typescript@5.7.2)(vitest@3.0.4(@types/debug@4.1.12)(@types/node@22.10.7)(jiti@2.4.1)(jsdom@26.0.0(canvas@2.11.2))(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)): dependencies: ts-essentials: 10.0.1(typescript@5.7.2) typescript: 5.7.2 - vitest: 2.1.8(@types/node@22.10.7)(jsdom@26.0.0(canvas@2.11.2))(sass@1.82.0)(terser@5.37.0) + vitest: 3.0.4(@types/debug@4.1.12)(@types/node@22.10.7)(jiti@2.4.1)(jsdom@26.0.0(canvas@2.11.2))(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) - vitest-mock-extended@2.0.2(typescript@5.7.2)(vitest@2.1.8(@types/node@22.10.7)(jsdom@26.0.0(canvas@3.0.1))(sass@1.82.0)(terser@5.37.0)): + vitest-mock-extended@2.0.2(typescript@5.7.2)(vitest@3.0.4(@types/debug@4.1.12)(@types/node@22.10.7)(jiti@2.4.1)(jsdom@26.0.0(canvas@3.0.1))(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)): dependencies: ts-essentials: 10.0.1(typescript@5.7.2) typescript: 5.7.2 - vitest: 2.1.8(@types/node@22.10.7)(jsdom@26.0.0(canvas@3.0.1))(sass@1.82.0)(terser@5.37.0) + vitest: 3.0.4(@types/debug@4.1.12)(@types/node@22.10.7)(jiti@2.4.1)(jsdom@26.0.0(canvas@3.0.1))(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) - vitest@2.1.8(@types/node@22.10.7)(jsdom@26.0.0(canvas@2.11.2))(sass@1.82.0)(terser@5.37.0): + vitest@3.0.4(@types/debug@4.1.12)(@types/node@22.10.7)(jiti@2.4.1)(jsdom@26.0.0(canvas@2.11.2))(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1): dependencies: - '@vitest/expect': 2.1.8 - '@vitest/mocker': 2.1.8(vite@5.4.14(@types/node@22.10.7)(sass@1.82.0)(terser@5.37.0)) - '@vitest/pretty-format': 2.1.8 - '@vitest/runner': 2.1.8 - '@vitest/snapshot': 2.1.8 - '@vitest/spy': 2.1.8 - '@vitest/utils': 2.1.8 + '@vitest/expect': 3.0.4 + '@vitest/mocker': 3.0.4(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)) + '@vitest/pretty-format': 3.0.4 + '@vitest/runner': 3.0.4 + '@vitest/snapshot': 3.0.4 + '@vitest/spy': 3.0.4 + '@vitest/utils': 3.0.4 chai: 5.1.2 debug: 4.4.0 expect-type: 1.1.0 magic-string: 0.30.17 - pathe: 1.1.2 + pathe: 2.0.2 std-env: 3.8.0 tinybench: 2.9.0 tinyexec: 0.3.2 tinypool: 1.0.2 - tinyrainbow: 1.2.0 - vite: 5.4.14(@types/node@22.10.7)(sass@1.82.0)(terser@5.37.0) - vite-node: 2.1.8(@types/node@22.10.7)(sass@1.82.0)(terser@5.37.0) + tinyrainbow: 2.0.0 + vite: 6.0.11(@types/node@22.10.7)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) + vite-node: 3.0.4(@types/node@22.10.7)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) why-is-node-running: 2.3.0 optionalDependencies: + '@types/debug': 4.1.12 '@types/node': 22.10.7 jsdom: 26.0.0(canvas@2.11.2) transitivePeerDependencies: + - jiti - less - lightningcss - msw @@ -21211,33 +20950,37 @@ snapshots: - sugarss - supports-color - terser - - vitest@2.1.8(@types/node@22.10.7)(jsdom@26.0.0(canvas@3.0.1))(sass@1.82.0)(terser@5.37.0): - dependencies: - '@vitest/expect': 2.1.8 - '@vitest/mocker': 2.1.8(vite@5.4.14(@types/node@22.10.7)(sass@1.82.0)(terser@5.37.0)) - '@vitest/pretty-format': 2.1.8 - '@vitest/runner': 2.1.8 - '@vitest/snapshot': 2.1.8 - '@vitest/spy': 2.1.8 - '@vitest/utils': 2.1.8 + - tsx + - yaml + + vitest@3.0.4(@types/debug@4.1.12)(@types/node@22.10.7)(jiti@2.4.1)(jsdom@26.0.0(canvas@3.0.1))(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1): + dependencies: + '@vitest/expect': 3.0.4 + '@vitest/mocker': 3.0.4(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)) + '@vitest/pretty-format': 3.0.4 + '@vitest/runner': 3.0.4 + '@vitest/snapshot': 3.0.4 + '@vitest/spy': 3.0.4 + '@vitest/utils': 3.0.4 chai: 5.1.2 debug: 4.4.0 expect-type: 1.1.0 magic-string: 0.30.17 - pathe: 1.1.2 + pathe: 2.0.2 std-env: 3.8.0 tinybench: 2.9.0 tinyexec: 0.3.2 tinypool: 1.0.2 - tinyrainbow: 1.2.0 - vite: 5.4.14(@types/node@22.10.7)(sass@1.82.0)(terser@5.37.0) - vite-node: 2.1.8(@types/node@22.10.7)(sass@1.82.0)(terser@5.37.0) + tinyrainbow: 2.0.0 + vite: 6.0.11(@types/node@22.10.7)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) + vite-node: 3.0.4(@types/node@22.10.7)(jiti@2.4.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) why-is-node-running: 2.3.0 optionalDependencies: + '@types/debug': 4.1.12 '@types/node': 22.10.7 jsdom: 26.0.0(canvas@3.0.1) transitivePeerDependencies: + - jiti - less - lightningcss - msw @@ -21247,6 +20990,8 @@ snapshots: - sugarss - supports-color - terser + - tsx + - yaml w3c-keyname@2.2.8: {} diff --git a/services/admin-web/package.json b/services/admin-web/package.json index 37f34ee54..257cc2393 100644 --- a/services/admin-web/package.json +++ b/services/admin-web/package.json @@ -59,7 +59,7 @@ "dotenv": "^16.4.7", "eslint": "^9.18.0", "typescript": "^5.6.2", - "vite": "^6.0.9", + "vite": "^6.0.11", "vite-plugin-css-injected-by-js": "^3.5.2", "vite-plugin-optimizer": "^1.4.3", "vite-tsconfig-paths": "^5.1.4" diff --git a/services/api/package.json b/services/api/package.json index d750a40bd..67206dfc3 100644 --- a/services/api/package.json +++ b/services/api/package.json @@ -108,7 +108,7 @@ "prompts": "^2.4.2", "supertest": "^7.0.0", "vite-tsconfig-paths": "^5.1.4", - "vitest": "^2.1.8", + "vitest": "^3.0.3", "vitest-mock-extended": "^2.0.2" }, "packageManager": "pnpm@9.15.4+sha512.b2dc20e2fc72b3e18848459b37359a32064663e5627a51e4c74b2c29dd8e8e0491483c3abb40789cfd578bf362fb6ba8261b05f0387d76792ed6e23ea3b1b6a0" diff --git a/services/storybook/package.json b/services/storybook/package.json index 8c6fcc1bb..ddc0ff42f 100644 --- a/services/storybook/package.json +++ b/services/storybook/package.json @@ -56,7 +56,7 @@ "prettier": "^3.4.2", "serve": "^14.2.4", "typescript": "^5.6.2", - "vite": "^6.0.9", + "vite": "^6.0.11", "vite-plugin-css-injected-by-js": "^3.5.2", "vite-plugin-optimizer": "^1.4.3", "vite-tsconfig-paths": "^5.1.4" diff --git a/services/web/package.json b/services/web/package.json index edfde27d0..d8f03a04e 100644 --- a/services/web/package.json +++ b/services/web/package.json @@ -77,7 +77,7 @@ "eslint": "^9.18.0", "tsx": "^4.19.2", "typescript": "^5.6.2", - "vite": "^6.0.9", + "vite": "^6.0.11", "vite-plugin-css-injected-by-js": "^3.5.2", "vite-plugin-optimizer": "^1.4.3", "vite-tsconfig-paths": "^5.1.4" diff --git a/services/worker/package.json b/services/worker/package.json index dd2077596..31376f0f7 100644 --- a/services/worker/package.json +++ b/services/worker/package.json @@ -79,7 +79,7 @@ "eslint": "^9.18.0", "tsx": "^4.19.2", "vite-tsconfig-paths": "^5.1.4", - "vitest": "^2.1.8" + "vitest": "^3.0.3" }, "packageManager": "pnpm@9.15.4+sha512.b2dc20e2fc72b3e18848459b37359a32064663e5627a51e4c74b2c29dd8e8e0491483c3abb40789cfd578bf362fb6ba8261b05f0387d76792ed6e23ea3b1b6a0" } From a42ae30016efc9ebf33c0d0cad26a5bd24841589 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 22 Jan 2025 18:40:00 +0100 Subject: [PATCH 17/19] build(deps): bump the aws-sdk group across 3 directories with 6 updates (#2059) --- packages/@liexp/backend/package.json | 8 ++++---- pnpm-lock.yaml | 14 +++++++------- services/ai-bot/package.json | 4 ++-- services/api/package.json | 2 +- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/packages/@liexp/backend/package.json b/packages/@liexp/backend/package.json index 7890e1267..b657aec74 100644 --- a/packages/@liexp/backend/package.json +++ b/packages/@liexp/backend/package.json @@ -24,9 +24,9 @@ "src/**/*.(ts|tsx|js|jsx)": "eslint --fix" }, "dependencies": { - "@aws-sdk/client-s3": "^3.726.1", - "@aws-sdk/lib-storage": "^3.726.1", - "@aws-sdk/s3-request-presigner": "^3.726.1", + "@aws-sdk/client-s3": "^3.732.0", + "@aws-sdk/lib-storage": "^3.732.0", + "@aws-sdk/s3-request-presigner": "^3.732.0", "@databases/escape-identifier": "^1.0.3", "@databases/sql": "^3.3.0", "@liexp/core": "workspace:*", @@ -43,7 +43,7 @@ }, "devDependencies": { "@liexp/test": "workspace:*", - "@aws-sdk/types": "^3.723.0", + "@aws-sdk/types": "^3.731.0", "@langchain/core": "^0.3.30", "@langchain/openai": "^0.3.17", "@types/fluent-ffmpeg": "^2.1.27", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 53ddd973d..26351c294 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -53,13 +53,13 @@ importers: packages/@liexp/backend: dependencies: '@aws-sdk/client-s3': - specifier: ^3.726.1 + specifier: ^3.732.0 version: 3.732.0 '@aws-sdk/lib-storage': - specifier: ^3.726.1 + specifier: ^3.732.0 version: 3.732.0(@aws-sdk/client-s3@3.732.0) '@aws-sdk/s3-request-presigner': - specifier: ^3.726.1 + specifier: ^3.732.0 version: 3.732.0 '@databases/escape-identifier': specifier: ^1.0.3 @@ -141,7 +141,7 @@ importers: version: 2.1.0 devDependencies: '@aws-sdk/types': - specifier: ^3.723.0 + specifier: ^3.731.0 version: 3.731.0 '@langchain/core': specifier: ^0.3.30 @@ -803,10 +803,10 @@ importers: services/ai-bot: dependencies: '@aws-sdk/client-sso-oidc': - specifier: ^3.726.0 + specifier: ^3.731.1 version: 3.731.1 '@aws-sdk/client-sts': - specifier: ^3.726.1 + specifier: ^3.731.1 version: 3.731.1 '@langchain/community': specifier: ^0.3.23 @@ -858,7 +858,7 @@ importers: services/api: dependencies: '@aws-sdk/client-s3': - specifier: ^3.726.1 + specifier: ^3.732.0 version: 3.732.0 '@liexp/backend': specifier: workspace:* diff --git a/services/ai-bot/package.json b/services/ai-bot/package.json index d7f90341a..cfeb8caa8 100644 --- a/services/ai-bot/package.json +++ b/services/ai-bot/package.json @@ -21,8 +21,8 @@ "pkg": "./scripts/pkg.sh" }, "dependencies": { - "@aws-sdk/client-sso-oidc": "^3.726.0", - "@aws-sdk/client-sts": "^3.726.1", + "@aws-sdk/client-sso-oidc": "^3.731.1", + "@aws-sdk/client-sts": "^3.731.1", "@langchain/community": "^0.3.23", "@langchain/core": "^0.3.30", "@liexp/backend": "workspace:*", diff --git a/services/api/package.json b/services/api/package.json index 67206dfc3..77573c6a9 100644 --- a/services/api/package.json +++ b/services/api/package.json @@ -56,7 +56,7 @@ "src/**/*.(ts|tsx|js|jsx)": "eslint --fix" }, "dependencies": { - "@aws-sdk/client-s3": "^3.726.1", + "@aws-sdk/client-s3": "^3.732.0", "@liexp/backend": "workspace:*", "@liexp/core": "workspace:*", "@liexp/shared": "workspace:*", From 15ba69332fad50c411bdddd8472cb038cf4df5a1 Mon Sep 17 00:00:00 2001 From: ascariandrea Date: Thu, 23 Jan 2025 17:33:28 +0100 Subject: [PATCH 18/19] chore: added configuration for zed ide --- .zed/settings.json | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 .zed/settings.json diff --git a/.zed/settings.json b/.zed/settings.json new file mode 100644 index 000000000..a5f5bec24 --- /dev/null +++ b/.zed/settings.json @@ -0,0 +1,20 @@ +// Folder-specific settings +// +// For a full list of overridable settings, and general information on folder-specific settings, +// see the documentation: https://zed.dev/docs/configuring-zed#settings-files +{ + "file_scan_exclusions": [ + "**/.git", + "**/.svn", + "**/.hg", + "**/.jj", + "**/CVS", + "**/.DS_Store", + "**/Thumbs.db", + "**/.classpath", + "**/.settings", + "**/lib", + "**/build", + "**/node_modules" + ] +} From 0714d4ff1680daa09c9b0fcd426ab08471da7baf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 23 Jan 2025 18:11:40 +0100 Subject: [PATCH 19/19] build(deps): bump the blocknote group from 0.22.0 to 0.23.0 (#2061) --- packages/@liexp/shared/package.json | 4 +-- packages/@liexp/ui/package.json | 6 ++-- pnpm-lock.yaml | 54 ++++++++++++++--------------- 3 files changed, 32 insertions(+), 32 deletions(-) diff --git a/packages/@liexp/shared/package.json b/packages/@liexp/shared/package.json index 1e407e9cc..21ed3f7fe 100644 --- a/packages/@liexp/shared/package.json +++ b/packages/@liexp/shared/package.json @@ -26,8 +26,8 @@ "src/**/*.(ts|tsx|js|jsx)": "eslint --fix" }, "dependencies": { - "@blocknote/core": "^0.22.0", - "@blocknote/server-util": "^0.22.0", + "@blocknote/core": "^0.23.0", + "@blocknote/server-util": "^0.23.0", "@liexp/core": "workspace:*", "axios": "^1.7.9", "date-fns": "^4.1.0", diff --git a/packages/@liexp/ui/package.json b/packages/@liexp/ui/package.json index fa0f656dc..1e6402183 100644 --- a/packages/@liexp/ui/package.json +++ b/packages/@liexp/ui/package.json @@ -27,9 +27,9 @@ "src/**/*.(ts|tsx|js|jsx)": "eslint --fix" }, "dependencies": { - "@blocknote/core": "^0.22.0", - "@blocknote/mantine": "^0.22.0", - "@blocknote/react": "^0.22.0", + "@blocknote/core": "^0.23.0", + "@blocknote/mantine": "^0.23.0", + "@blocknote/react": "^0.23.0", "@emotion/cache": "^11.14.0", "@emotion/css": "^11.13.5", "@emotion/react": "^11.14.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 26351c294..ef68540a1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -283,11 +283,11 @@ importers: packages/@liexp/shared: dependencies: '@blocknote/core': - specifier: ^0.22.0 - version: 0.22.0(@types/hast@3.0.4) + specifier: ^0.23.0 + version: 0.23.0(@types/hast@3.0.4) '@blocknote/server-util': - specifier: ^0.22.0 - version: 0.22.0(@types/hast@3.0.4)(canvas@2.11.2)(prosemirror-model@1.24.1)(prosemirror-state@1.4.3)(prosemirror-view@1.37.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^0.23.0 + version: 0.23.0(@types/hast@3.0.4)(canvas@2.11.2)(prosemirror-model@1.24.1)(prosemirror-state@1.4.3)(prosemirror-view@1.37.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@liexp/core': specifier: workspace:* version: link:../core @@ -414,14 +414,14 @@ importers: packages/@liexp/ui: dependencies: '@blocknote/core': - specifier: ^0.22.0 - version: 0.22.0(@types/hast@3.0.4) + specifier: ^0.23.0 + version: 0.23.0(@types/hast@3.0.4) '@blocknote/mantine': - specifier: ^0.22.0 - version: 0.22.0(@tiptap/pm@2.11.3)(@types/hast@3.0.4)(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^0.23.0 + version: 0.23.0(@tiptap/pm@2.11.3)(@types/hast@3.0.4)(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@blocknote/react': - specifier: ^0.22.0 - version: 0.22.0(@tiptap/pm@2.11.3)(@types/hast@3.0.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^0.23.0 + version: 0.23.0(@tiptap/pm@2.11.3)(@types/hast@3.0.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@emotion/cache': specifier: ^11.14.0 version: 11.14.0 @@ -1628,23 +1628,23 @@ packages: '@bcoe/v8-coverage@0.2.3': resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} - '@blocknote/core@0.22.0': - resolution: {integrity: sha512-AAEx01zK6u+b1SsZniMm/aogEMjasF4vA9ZHgFGj04G7AwK5Hjwa0Sxre58qcW+KzuvR09CQHTkwjmgVmJX/HA==} + '@blocknote/core@0.23.0': + resolution: {integrity: sha512-ulwJ6svm94rpAxzQhv4WybEbzkJUBz6lZa6HYiehHHqUkup2TgxMXqMXDV0lAl4EzuXJoYKhh1Xtv8W3MbBv2Q==} - '@blocknote/mantine@0.22.0': - resolution: {integrity: sha512-6irIKCGUpE47X8qWLx9oa5ndztSrvLEHgVRp+fdVUHMJCx0/OzijJyYTTFKw8yEI9qc01pjmwdYMZrMMZybyGw==} + '@blocknote/mantine@0.23.0': + resolution: {integrity: sha512-nnWGm2eTN+13iDRUAlTwfVQjjwb1m1DRNHrSpoDnHB4moECaehYxwxuDgdK/CtfG01tVcc/OcGUCQB1WwetQ6g==} peerDependencies: react: ^18.0 || ^19.0 || >= 19.0.0-rc react-dom: ^18.0 || ^19.0 || >= 19.0.0-rc - '@blocknote/react@0.22.0': - resolution: {integrity: sha512-Y6Oj99iOKnlh2FE/lgy8kO5PziPnA8MyEJyjCH9Jbvlc9t493L9EFmLK8iKBZek7sh0TOzhXGBOA6lIpk02X6A==} + '@blocknote/react@0.23.0': + resolution: {integrity: sha512-FkHDVgM87aIbI1OW3XGpKrA0q7SfN433jj9UsLc79iAvSHxMRCtq+ZYW+JS9ycayutFHKVtG1sRWB99+I916Sw==} peerDependencies: react: ^18.0 || ^19.0 || >= 19.0.0-rc react-dom: ^18.0 || ^19.0 || >= 19.0.0-rc - '@blocknote/server-util@0.22.0': - resolution: {integrity: sha512-d75ZSCrbwk1XdYglqUb+mKLkezIDT7J5Se9WCopc0DeKPXxoP7SbSEAjxfiAfgNGrB3Gj6um/PvbGKyF3gqB+A==} + '@blocknote/server-util@0.23.0': + resolution: {integrity: sha512-IZ5Dh5bEkFlOwzYN1HUS2areEKpmSjBtHcuMnLaNWjRv1fdm9Yu3RGhPOc7PnSpfn7h9cGU4DcREtPLdxEpDJQ==} peerDependencies: react: ^18.0 || ^19.0 || >= 19.0.0-rc react-dom: ^18.0 || ^19.0 || >= 19.0.0-rc @@ -11203,7 +11203,7 @@ snapshots: '@bcoe/v8-coverage@0.2.3': {} - '@blocknote/core@0.22.0(@types/hast@3.0.4)': + '@blocknote/core@0.23.0(@types/hast@3.0.4)': dependencies: '@emoji-mart/data': 1.2.1 '@tiptap/core': 2.11.3(@tiptap/pm@2.11.3) @@ -11256,10 +11256,10 @@ snapshots: - sugar-high - supports-color - '@blocknote/mantine@0.22.0(@tiptap/pm@2.11.3)(@types/hast@3.0.4)(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@blocknote/mantine@0.23.0(@tiptap/pm@2.11.3)(@types/hast@3.0.4)(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@blocknote/core': 0.22.0(@types/hast@3.0.4) - '@blocknote/react': 0.22.0(@tiptap/pm@2.11.3)(@types/hast@3.0.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@blocknote/core': 0.23.0(@types/hast@3.0.4) + '@blocknote/react': 0.23.0(@tiptap/pm@2.11.3)(@types/hast@3.0.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mantine/core': 7.16.1(@mantine/hooks@7.16.1(react@18.3.1))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mantine/hooks': 7.16.1(react@18.3.1) '@mantine/utils': 6.0.22(react@18.3.1) @@ -11276,9 +11276,9 @@ snapshots: - sugar-high - supports-color - '@blocknote/react@0.22.0(@tiptap/pm@2.11.3)(@types/hast@3.0.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@blocknote/react@0.23.0(@tiptap/pm@2.11.3)(@types/hast@3.0.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@blocknote/core': 0.22.0(@types/hast@3.0.4) + '@blocknote/core': 0.23.0(@types/hast@3.0.4) '@floating-ui/react': 0.26.28(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@tiptap/core': 2.11.3(@tiptap/pm@2.11.3) '@tiptap/react': 2.11.3(@tiptap/core@2.11.3(@tiptap/pm@2.11.3))(@tiptap/pm@2.11.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -11295,10 +11295,10 @@ snapshots: - sugar-high - supports-color - '@blocknote/server-util@0.22.0(@types/hast@3.0.4)(canvas@2.11.2)(prosemirror-model@1.24.1)(prosemirror-state@1.4.3)(prosemirror-view@1.37.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@blocknote/server-util@0.23.0(@types/hast@3.0.4)(canvas@2.11.2)(prosemirror-model@1.24.1)(prosemirror-state@1.4.3)(prosemirror-view@1.37.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@blocknote/core': 0.22.0(@types/hast@3.0.4) - '@blocknote/react': 0.22.0(@tiptap/pm@2.11.3)(@types/hast@3.0.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@blocknote/core': 0.23.0(@types/hast@3.0.4) + '@blocknote/react': 0.23.0(@tiptap/pm@2.11.3)(@types/hast@3.0.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@tiptap/core': 2.11.3(@tiptap/pm@2.11.3) '@tiptap/pm': 2.11.3 jsdom: 25.0.1(canvas@2.11.2)