diff --git a/.eslintrc.cjs b/.eslintrc.cjs index 698dfc4..ea53496 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -1,8 +1,9 @@ /** @type {import('eslint').Linter.Config} */ module.exports = { - extends: ['@dexaai/eslint-config', '@dexaai/eslint-config/node'], - ignorePatterns: ['.next/', 'dist/', 'node_modules/'], + extends: ['@dexaai/eslint-config/node'], + ignorePatterns: ['.next/', 'dist/', 'node_modules/', 'docs/'], rules: { + '@typescript-eslint/naming-convention': 'off', 'no-console': 'off', }, }; diff --git a/examples/abort-chat-completion.ts b/examples/abort-chat-completion.ts index ae3a7e0..d25d3ce 100644 --- a/examples/abort-chat-completion.ts +++ b/examples/abort-chat-completion.ts @@ -1,4 +1,5 @@ import 'dotenv/config'; + import { ChatModel, Msg, type Prompt } from '@dexaai/dexter'; /** diff --git a/examples/ai-function.ts b/examples/ai-function.ts index f0bdb2b..f50d83c 100644 --- a/examples/ai-function.ts +++ b/examples/ai-function.ts @@ -1,6 +1,7 @@ import 'dotenv/config'; -import { z } from 'zod'; + import { ChatModel, createAIFunction, Msg, type Prompt } from '@dexaai/dexter'; +import { z } from 'zod'; /** * npx tsx examples/ai-function.ts diff --git a/examples/ai-runner-with-error.ts b/examples/ai-runner-with-error.ts index 8f75e83..4aa9f53 100644 --- a/examples/ai-runner-with-error.ts +++ b/examples/ai-runner-with-error.ts @@ -1,11 +1,12 @@ import 'dotenv/config'; -import { z } from 'zod'; + import { ChatModel, - Msg, createAIFunction, createAIRunner, + Msg, } from '@dexaai/dexter'; +import { z } from 'zod'; /** Get the weather for a given location. */ const getWeather = createAIFunction( diff --git a/examples/ai-runner.ts b/examples/ai-runner.ts index daef4c5..06ee444 100644 --- a/examples/ai-runner.ts +++ b/examples/ai-runner.ts @@ -1,11 +1,12 @@ import 'dotenv/config'; -import { z } from 'zod'; + import { ChatModel, - Msg, createAIFunction, createAIRunner, + Msg, } from '@dexaai/dexter'; +import { z } from 'zod'; /** Get the weather for a given location. */ const getWeather = createAIFunction( diff --git a/examples/basic.ts b/examples/basic.ts index 826765b..9dcd691 100644 --- a/examples/basic.ts +++ b/examples/basic.ts @@ -1,6 +1,7 @@ import 'dotenv/config'; -import { EmbeddingModel } from '@dexaai/dexter/model'; + import { PineconeDatastore } from '@dexaai/dexter/datastore/pinecone'; +import { EmbeddingModel } from '@dexaai/dexter/model'; /** * npx tsx examples/basic.ts diff --git a/examples/caching-redis.ts b/examples/caching-redis.ts index 276f142..9a78a1f 100644 --- a/examples/caching-redis.ts +++ b/examples/caching-redis.ts @@ -1,4 +1,5 @@ import 'dotenv/config'; + import { EmbeddingModel } from '@dexaai/dexter/model'; import KeyvRedis from '@keyv/redis'; import Keyv from 'keyv'; diff --git a/examples/caching.ts b/examples/caching.ts index 01cded2..64fa32d 100644 --- a/examples/caching.ts +++ b/examples/caching.ts @@ -1,6 +1,7 @@ import 'dotenv/config'; -import { EmbeddingModel } from '@dexaai/dexter/model'; + import { PineconeDatastore } from '@dexaai/dexter/datastore/pinecone'; +import { EmbeddingModel } from '@dexaai/dexter/model'; import QuickLRU from 'quick-lru'; /** @@ -21,7 +22,6 @@ async function main() { // Pinecone datastore with cache const store = new PineconeDatastore<{ content: string }>({ contentKey: 'content', - // @ts-ignore embeddingModel, events: { onQueryComplete: [console.log] }, cache: new Map(), diff --git a/examples/chatbot/answer.ts b/examples/chatbot/answer.ts index 660124d..68a6cb2 100644 --- a/examples/chatbot/answer.ts +++ b/examples/chatbot/answer.ts @@ -1,4 +1,5 @@ -import { type Prompt, Msg } from '@dexaai/dexter/prompt'; +import { Msg, type Prompt } from '@dexaai/dexter/prompt'; + import { chatModel, chunkDatastore } from './tools.js'; const system = Msg.system(` diff --git a/examples/chatbot/cli.ts b/examples/chatbot/cli.ts index 46e07c4..870877b 100644 --- a/examples/chatbot/cli.ts +++ b/examples/chatbot/cli.ts @@ -1,6 +1,9 @@ import 'dotenv/config'; + import readline from 'node:readline'; -import type { Prompt } from '@dexaai/dexter/prompt'; + +import { type Prompt } from '@dexaai/dexter/prompt'; + import { generateAnswer } from './answer.js'; const history: Prompt.Msg[] = []; diff --git a/examples/chatbot/ingest.ts b/examples/chatbot/ingest.ts index ee71bde..9d87b33 100644 --- a/examples/chatbot/ingest.ts +++ b/examples/chatbot/ingest.ts @@ -1,6 +1,8 @@ import 'dotenv/config'; + import { readFile } from 'node:fs/promises'; -import { chunkDatastore, type Chunk } from './tools.js'; + +import { type Chunk, chunkDatastore } from './tools.js'; async function main() { const chunks = await loadChunks(); diff --git a/examples/extract-people-names.ts b/examples/extract-people-names.ts index 326102a..9dd5f8e 100644 --- a/examples/extract-people-names.ts +++ b/examples/extract-people-names.ts @@ -1,6 +1,7 @@ import 'dotenv/config'; -import { z } from 'zod'; + import { ChatModel, createAIExtractFunction } from '@dexaai/dexter'; +import { z } from 'zod'; /** A function to extract people names from text. */ const extractPeopleNamesRunner = createAIExtractFunction({ diff --git a/examples/with-telemetry.ts b/examples/with-telemetry.ts index 10392eb..8ee7751 100644 --- a/examples/with-telemetry.ts +++ b/examples/with-telemetry.ts @@ -1,5 +1,6 @@ import './instrument.js'; import 'dotenv/config'; + import { ChatModel } from '@dexaai/dexter'; import * as Sentry from '@sentry/node'; diff --git a/package.json b/package.json index 0c8161e..3381288 100644 --- a/package.json +++ b/package.json @@ -81,7 +81,7 @@ "zod-validation-error": "^3.4.0" }, "devDependencies": { - "@dexaai/eslint-config": "^0.4.0", + "@dexaai/eslint-config": "^1.3.6", "@sentry/node": "^8.34.0", "@types/node": "^20.14.11", "dotenv-cli": "^7.4.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 20352c1..ee2d0ae 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -52,8 +52,8 @@ importers: version: 3.4.0(zod@3.23.8) devDependencies: '@dexaai/eslint-config': - specifier: ^0.4.0 - version: 0.4.0(eslint@8.57.1)(typescript@5.6.3) + specifier: ^1.3.6 + version: 1.3.6(@testing-library/dom@8.20.1)(eslint@8.57.1)(typescript@5.6.3) '@sentry/node': specifier: ^8.34.0 version: 8.34.0 @@ -104,16 +104,16 @@ importers: dependencies: '@vercel/analytics': specifier: ^1.3.1 - version: 1.3.1(next@14.2.15(@babel/core@7.24.6)(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) + version: 1.3.1(next@14.2.15(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) next: specifier: ^14.2.15 - version: 14.2.15(@babel/core@7.24.6)(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 14.2.15(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) nextra: specifier: ^2.13.2 - version: 2.13.2(next@14.2.15(@babel/core@7.24.6)(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 2.13.2(next@14.2.15(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) nextra-theme-docs: specifier: ^2.13.2 - version: 2.13.2(next@14.2.15(@babel/core@7.24.6)(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(nextra@2.13.2(next@14.2.15(@babel/core@7.24.6)(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 2.13.2(next@14.2.15(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(nextra@2.13.2(next@14.2.15(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: specifier: ^18.3.1 version: 18.3.1 @@ -141,164 +141,31 @@ importers: packages: - '@ampproject/remapping@2.3.0': - resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} - engines: {node: '>=6.0.0'} - '@babel/code-frame@7.24.7': resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.24.6': - resolution: {integrity: sha512-aC2DGhBq5eEdyXWqrDInSqQjO0k8xtPRf5YylULqx8MCd6jBtzqfta/3ETMRpuKIc5hyswfO80ObyA1MvkCcUQ==} - engines: {node: '>=6.9.0'} - - '@babel/core@7.24.6': - resolution: {integrity: sha512-qAHSfAdVyFmIvl0VHELib8xar7ONuSHrE2hLnsaWkYNTI68dmi1x8GYDhJjMI/e7XWal9QBlZkwbOnkcw7Z8gQ==} - engines: {node: '>=6.9.0'} - - '@babel/eslint-parser@7.24.6': - resolution: {integrity: sha512-Q1BfQX42zXHx732PLW0w4+Y3wJjoZKEMaatFUEAmQ7Z+jCXxinzeqX9bvv2Q8xNPes/H6F0I23oGkcgjaItmLw==} - engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} - peerDependencies: - '@babel/core': ^7.11.0 - eslint: ^7.5.0 || ^8.0.0 || ^9.0.0 - - '@babel/generator@7.24.6': - resolution: {integrity: sha512-S7m4eNa6YAPJRHmKsLHIDJhNAGNKoWNiWefz1MBbpnt8g9lvMDl1hir4P9bo/57bQEmuwEhnRU/AMWsD0G/Fbg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-annotate-as-pure@7.24.6': - resolution: {integrity: sha512-DitEzDfOMnd13kZnDqns1ccmftwJTS9DMkyn9pYTxulS7bZxUxpMly3Nf23QQ6NwA4UB8lAqjbqWtyvElEMAkg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-compilation-targets@7.24.6': - resolution: {integrity: sha512-VZQ57UsDGlX/5fFA7GkVPplZhHsVc+vuErWgdOiysI9Ksnw0Pbbd6pnPiR/mmJyKHgyIW0c7KT32gmhiF+cirg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-environment-visitor@7.24.6': - resolution: {integrity: sha512-Y50Cg3k0LKLMjxdPjIl40SdJgMB85iXn27Vk/qbHZCFx/o5XO3PSnpi675h1KEmmDb6OFArfd5SCQEQ5Q4H88g==} - engines: {node: '>=6.9.0'} - - '@babel/helper-function-name@7.24.6': - resolution: {integrity: sha512-xpeLqeeRkbxhnYimfr2PC+iA0Q7ljX/d1eZ9/inYbmfG2jpl8Lu3DyXvpOAnrS5kxkfOWJjioIMQsaMBXFI05w==} - engines: {node: '>=6.9.0'} - - '@babel/helper-hoist-variables@7.24.6': - resolution: {integrity: sha512-SF/EMrC3OD7dSta1bLJIlrsVxwtd0UpjRJqLno6125epQMJ/kyFmpTT4pbvPbdQHzCHg+biQ7Syo8lnDtbR+uA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-module-imports@7.24.6': - resolution: {integrity: sha512-a26dmxFJBF62rRO9mmpgrfTLsAuyHk4e1hKTUkD/fcMfynt8gvEKwQPQDVxWhca8dHoDck+55DFt42zV0QMw5g==} - engines: {node: '>=6.9.0'} - - '@babel/helper-module-transforms@7.24.6': - resolution: {integrity: sha512-Y/YMPm83mV2HJTbX1Qh2sjgjqcacvOlhbzdCCsSlblOKjSYmQqEbO6rUniWQyRo9ncyfjT8hnUjlG06RXDEmcA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-plugin-utils@7.24.6': - resolution: {integrity: sha512-MZG/JcWfxybKwsA9N9PmtF2lOSFSEMVCpIRrbxccZFLJPrJciJdG/UhSh5W96GEteJI2ARqm5UAHxISwRDLSNg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-simple-access@7.24.6': - resolution: {integrity: sha512-nZzcMMD4ZhmB35MOOzQuiGO5RzL6tJbsT37Zx8M5L/i9KSrukGXWTjLe1knIbb/RmxoJE9GON9soq0c0VEMM5g==} - engines: {node: '>=6.9.0'} - - '@babel/helper-split-export-declaration@7.24.6': - resolution: {integrity: sha512-CvLSkwXGWnYlF9+J3iZUvwgAxKiYzK3BWuo+mLzD/MDGOZDj7Gq8+hqaOkMxmJwmlv0iu86uH5fdADd9Hxkymw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-string-parser@7.24.6': - resolution: {integrity: sha512-WdJjwMEkmBicq5T9fm/cHND3+UlFa2Yj8ALLgmoSQAJZysYbBjw+azChSGPN4DSPLXOcooGRvDwZWMcF/mLO2Q==} - engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.24.7': resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-option@7.24.6': - resolution: {integrity: sha512-Jktc8KkF3zIkePb48QO+IapbXlSapOW9S+ogZZkcO6bABgYAxtZcjZ/O005111YLf+j4M84uEgwYoidDkXbCkQ==} - engines: {node: '>=6.9.0'} - - '@babel/helpers@7.24.6': - resolution: {integrity: sha512-V2PI+NqnyFu1i0GyTd/O/cTpxzQCYioSkUIRmgo7gFEHKKCg5w46+r/A6WeUR1+P3TeQ49dspGPNd/E3n9AnnA==} - engines: {node: '>=6.9.0'} - '@babel/highlight@7.24.7': resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} engines: {node: '>=6.9.0'} - '@babel/parser@7.24.6': - resolution: {integrity: sha512-eNZXdfU35nJC2h24RznROuOpO94h6x8sg9ju0tT9biNtLZ2vuP8SduLqqV+/8+cebSLV9SJEAN5Z3zQbJG/M+Q==} - engines: {node: '>=6.0.0'} - hasBin: true - - '@babel/plugin-syntax-jsx@7.24.6': - resolution: {integrity: sha512-lWfvAIFNWMlCsU0DRUun2GpFwZdGTukLaHJqRh1JRb80NdAP5Sb1HDHB5X9P9OtgZHQl089UzQkpYlBq2VTPRw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-react-display-name@7.24.6': - resolution: {integrity: sha512-/3iiEEHDsJuj9QU09gbyWGSUxDboFcD7Nj6dnHIlboWSodxXAoaY/zlNMHeYAC0WsERMqgO9a7UaM77CsYgWcg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-react-jsx-development@7.24.6': - resolution: {integrity: sha512-F7EsNp5StNDouSSdYyDSxh4J+xvj/JqG+Cb6s2fA+jCyHOzigG5vTwgH8tU2U8Voyiu5zCG9bAK49wTr/wPH0w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-react-jsx@7.24.6': - resolution: {integrity: sha512-pCtPHhpRZHfwdA5G1Gpk5mIzMA99hv0R8S/Ket50Rw+S+8hkt3wBWqdqHaPw0CuUYxdshUgsPiLQ5fAs4ASMhw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-react-pure-annotations@7.24.6': - resolution: {integrity: sha512-0HoDQlFJJkXRyV2N+xOpUETbKHcouSwijRQbKWVtxsPoq5bbB30qZag9/pSc5xcWVYjTHlLsBsY+hZDnzQTPNw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/preset-react@7.24.6': - resolution: {integrity: sha512-8mpzh1bWvmINmwM3xpz6ahu57mNaWavMm+wBNjQ4AFu1nghKBiIRET7l/Wmj4drXany/BBGjJZngICcD98F1iw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/runtime@7.24.6': resolution: {integrity: sha512-Ja18XcETdEl5mzzACGd+DKgaGJzPTCow7EglgwTmHdwokzDFYh/MHua6lU6DV/hjF2IaOJ4oX2nqnjG7RElKOw==} engines: {node: '>=6.9.0'} - '@babel/template@7.24.6': - resolution: {integrity: sha512-3vgazJlLwNXi9jhrR1ef8qiB65L1RK90+lEQwv4OxveHnqC3BfmnHdgySwRLzf6akhlOYenT+b7AfWq+a//AHw==} - engines: {node: '>=6.9.0'} - - '@babel/traverse@7.24.6': - resolution: {integrity: sha512-OsNjaJwT9Zn8ozxcfoBc+RaHdj3gFmCmYoQLUII1o6ZrUwku0BMg80FoOTPx+Gi6XhcQxAYE4xyjPTo4SxEQqw==} - engines: {node: '>=6.9.0'} - - '@babel/types@7.24.6': - resolution: {integrity: sha512-WaMsgi6Q8zMgMth93GvWPXkhAIEobfsIkLTacoVZoK1J0CevIPGYY2Vo5YvJGqyHqXM6P4ppOYGsIRU8MM9pFQ==} - engines: {node: '>=6.9.0'} - '@braintree/sanitize-url@6.0.4': resolution: {integrity: sha512-s3jaWicZd0pkP0jf5ysyHUI/RE7MHos6qlToFcGWXVp+ykHOy77OUMrfbgJ9it2C5bow7OIQwYYaHjk9XlBQ2A==} - '@dexaai/eslint-config@0.4.0': - resolution: {integrity: sha512-1tjeTvildwGN0H9j2yXZPgobyc006Prki4VS5JtKmFd2DVPWeuVMz4mjEMTEIk44VIsQQr0amwE16+JjNxofOg==} - engines: {node: '>=16.0.0'} + '@dexaai/eslint-config@1.3.6': + resolution: {integrity: sha512-GTOxeS1rfd7Q7mWojFgxUSPJMeN2/sn1d6+ceNrM4i5ploVAIhKYXtb0isPrO+upOByszkiv2Gh1/hUFsuq59w==} + engines: {node: '>=18.0.0'} peerDependencies: eslint: ^8.0.0 - typescript: ^4.0.0 || ^5.0.0 - peerDependenciesMeta: - typescript: - optional: true + typescript: ^5.0.0 '@esbuild/aix-ppc64@0.21.5': resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} @@ -638,24 +505,9 @@ packages: resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@jridgewell/gen-mapping@0.3.5': - resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} - engines: {node: '>=6.0.0'} - - '@jridgewell/resolve-uri@3.1.2': - resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} - engines: {node: '>=6.0.0'} - - '@jridgewell/set-array@1.2.1': - resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} - engines: {node: '>=6.0.0'} - '@jridgewell/sourcemap-codec@1.4.15': resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - '@jridgewell/trace-mapping@0.3.25': - resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} - '@keyv/redis@2.8.5': resolution: {integrity: sha512-e9W1faN32A1Wy5726qtorAvPu1Xffh75ngfQQtETQ0hIN/FQtK0RcBTz/OH/vwDvLX8zrzdu0sWq/KoSHDYfVw==} engines: {node: '>= 14'} @@ -795,9 +647,6 @@ packages: cpu: [x64] os: [win32] - '@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1': - resolution: {integrity: sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==} - '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -810,6 +659,10 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} + '@nolyfill/is-core-module@1.0.39': + resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==} + engines: {node: '>=12.4.0'} + '@opentelemetry/api-logs@0.52.1': resolution: {integrity: sha512-qnSqB2DQ9TPP96dl8cDubDvrUyWc0/sK81xHTK8eSUspzDM3bsewX903qclQFvVhgStjRWdC5bLb3kQqMkfV5A==} engines: {node: '>=14'} @@ -1112,8 +965,11 @@ packages: cpu: [x64] os: [win32] - '@rushstack/eslint-patch@1.10.3': - resolution: {integrity: sha512-qC/xYId4NMebE6w/V33Fh9gWxLgURiNYgVNObbJl2LZv0GUUItCcCqC5axQSwRaAgaxl2mELq1rMzlswaQ0Zxg==} + '@rtsao/scc@1.1.0': + resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} + + '@rushstack/eslint-patch@1.10.4': + resolution: {integrity: sha512-WJgX9nzTqknM393q1QJDJmoW28kUfEnybeTfVNcNAPnIx210RXm2DiXiHzfNPJNIUUb1tJnz/l4QGtJ30PgWmA==} '@samverschueren/stream-to-observable@0.3.1': resolution: {integrity: sha512-c/qwwcHyafOQuVQJj0IlBjf5yYgBI7YPJ77k4fOJYesb41jio65eaJODRUmfYKhTOFBrIZ66kgvGPlNbjuoRdQ==} @@ -1238,9 +1094,6 @@ packages: '@types/js-yaml@4.0.9': resolution: {integrity: sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==} - '@types/json-schema@7.0.15': - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - '@types/json5@0.0.29': resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} @@ -1280,9 +1133,6 @@ packages: '@types/react@18.3.3': resolution: {integrity: sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==} - '@types/semver@7.5.8': - resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} - '@types/shimmer@1.2.0': resolution: {integrity: sha512-UE7oxhQLLd9gub6JKIAhDq06T0F6FnztwMNRvYgjeQSBeMc1ZG/tA47EwfduvkuQS8apbkM/lpLpWsaCeYsXVg==} @@ -1292,63 +1142,62 @@ packages: '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} - '@typescript-eslint/eslint-plugin@5.62.0': - resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/eslint-plugin@8.8.1': + resolution: {integrity: sha512-xfvdgA8AP/vxHgtgU310+WBnLB4uJQ9XdyP17RebG26rLtDrQJV3ZYrcopX91GrHmMoH8bdSwMRh2a//TiJ1jQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^5.0.0 - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 + eslint: ^8.57.0 || ^9.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true - '@typescript-eslint/parser@5.62.0': - resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/parser@8.8.1': + resolution: {integrity: sha512-hQUVn2Lij2NAxVFEdvIGxT9gP1tq2yM83m+by3whWFsWC+1y8pxxxHUFE1UqDu2VsGi2i6RLcv4QvouM84U+ow==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + eslint: ^8.57.0 || ^9.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true - '@typescript-eslint/scope-manager@5.62.0': - resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/scope-manager@8.8.1': + resolution: {integrity: sha512-X4JdU+66Mazev/J0gfXlcC/dV6JI37h+93W9BRYXrSn0hrE64IoWgVkO9MSJgEzoWkxONgaQpICWg8vAN74wlA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@5.62.0': - resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/type-utils@8.8.1': + resolution: {integrity: sha512-qSVnpcbLP8CALORf0za+vjLYj1Wp8HSoiI8zYU5tHxRVj30702Z1Yw4cLwfNKhTPWp5+P+k1pjmD5Zd1nhxiZA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: '*' typescript: '*' peerDependenciesMeta: typescript: optional: true - '@typescript-eslint/types@5.62.0': - resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/types@8.8.1': + resolution: {integrity: sha512-WCcTP4SDXzMd23N27u66zTKMuEevH4uzU8C9jf0RO4E04yVHgQgW+r+TeVTNnO1KIfrL8ebgVVYYMMO3+jC55Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@5.62.0': - resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/typescript-estree@8.8.1': + resolution: {integrity: sha512-A5d1R9p+X+1js4JogdNilDuuq+EHZdsH9MjTVxXOdVFfTJXunKJR/v+fNNyO4TnoOn5HqobzfRlc70NC6HTcdg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '*' peerDependenciesMeta: typescript: optional: true - '@typescript-eslint/utils@5.62.0': - resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/utils@8.8.1': + resolution: {integrity: sha512-/QkNJDbV0bdL7H7d0/y0qBbV2HTtf0TIyjSDTvvmQEzeVx8jEImEbLuOA4EsvE8gIgqMitns0ifb5uQhMj8d9w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + eslint: ^8.57.0 || ^9.0.0 - '@typescript-eslint/visitor-keys@5.62.0': - resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/visitor-keys@8.8.1': + resolution: {integrity: sha512-0/TdC3aeRAsW7MDvYRwEc1Uwm0TIBfzjPFgg60UU2Haj5qsCs9cc3zNgY71edqE3LbWfF/WoZQd3lJoDXFQpag==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@ungap/structured-clone@1.2.0': resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} @@ -1490,9 +1339,6 @@ packages: aria-query@5.1.3: resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} - aria-query@5.3.0: - resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} - array-buffer-byte-length@1.0.1: resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} engines: {node: '>= 0.4'} @@ -1501,10 +1347,6 @@ packages: resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} engines: {node: '>= 0.4'} - array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} - array.prototype.findlast@1.2.5: resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} engines: {node: '>= 0.4'} @@ -1521,11 +1363,9 @@ packages: resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} engines: {node: '>= 0.4'} - array.prototype.toreversed@1.1.2: - resolution: {integrity: sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==} - - array.prototype.tosorted@1.1.3: - resolution: {integrity: sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==} + array.prototype.tosorted@1.1.4: + resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} + engines: {node: '>= 0.4'} arraybuffer.prototype.slice@1.0.3: resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} @@ -1545,12 +1385,13 @@ packages: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} - axe-core@4.7.0: - resolution: {integrity: sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==} + axe-core@4.10.0: + resolution: {integrity: sha512-Mr2ZakwQ7XUAjp7pAwQWRhhK8mQQ6JAaNWSjmjxil0R8BPioMtQsTLOolGYkji1rcL++3dCqZA3zWqpT+9Ew6g==} engines: {node: '>=4'} - axobject-query@3.2.1: - resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} + axobject-query@4.1.0: + resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} + engines: {node: '>= 0.4'} bail@2.0.2: resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} @@ -1578,11 +1419,6 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - browserslist@4.23.0: - resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} @@ -1763,9 +1599,6 @@ packages: resolution: {integrity: sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==} engines: {node: '>=12'} - convert-source-map@2.0.0: - resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - cose-base@1.0.3: resolution: {integrity: sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==} @@ -2097,9 +1930,6 @@ packages: eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - electron-to-chromium@1.4.788: - resolution: {integrity: sha512-ubp5+Ev/VV8KuRoWnfP2QF2Bg+O2ZFdb49DiiNbz2VmgkIqrnyYaqIOqj8A6K/3p1xV0QcU5hBQ1+BmB6ot1OA==} - elegant-spinner@1.0.1: resolution: {integrity: sha512-B+ZM+RXvRqQaAmkMlO/oSe5nMUOaUnyfGYCEHoR8wrXsZR2mA0XVibsxV1bvTwxdRWah1PkQqso2EzhILGHtEQ==} engines: {node: '>=0.10.0'} @@ -2168,10 +1998,6 @@ packages: engines: {node: '>=18'} hasBin: true - escalade@3.1.2: - resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} - engines: {node: '>=6'} - escape-goat@4.0.0: resolution: {integrity: sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==} engines: {node: '>=12'} @@ -2188,21 +2014,30 @@ packages: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} - eslint-import-resolver-node@0.3.7: - resolution: {integrity: sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==} + eslint-config-prettier@9.1.0: + resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' eslint-import-resolver-node@0.3.9: resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} - eslint-import-resolver-typescript@3.6.1: - resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==} + eslint-import-resolver-typescript@3.6.3: + resolution: {integrity: sha512-ud9aw4szY9cCT1EWWdGv1L1XR6hh2PaRWif0j2QjQ0pgTY/69iw+W0Z4qZv5wHahOl8isEr+k/JnyAqNQkLkIA==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '*' eslint-plugin-import: '*' + eslint-plugin-import-x: '*' + peerDependenciesMeta: + eslint-plugin-import: + optional: true + eslint-plugin-import-x: + optional: true - eslint-module-utils@2.8.1: - resolution: {integrity: sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==} + eslint-module-utils@2.12.0: + resolution: {integrity: sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' @@ -2222,34 +2057,32 @@ packages: eslint-import-resolver-webpack: optional: true - eslint-plugin-es@3.0.1: - resolution: {integrity: sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==} - engines: {node: '>=8.10.0'} - peerDependencies: - eslint: '>=4.19.1' - - eslint-plugin-import@2.29.1: - resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} + eslint-plugin-import@2.31.0: + resolution: {integrity: sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9 peerDependenciesMeta: '@typescript-eslint/parser': optional: true - eslint-plugin-jest-dom@4.0.3: - resolution: {integrity: sha512-9j+n8uj0+V0tmsoS7bYC7fLhQmIvjRqRYEcbDSi+TKPsTThLLXCyj5swMSSf/hTleeMktACnn+HFqXBr5gbcbA==} + eslint-plugin-jest-dom@5.4.0: + resolution: {integrity: sha512-yBqvFsnpS5Sybjoq61cJiUsenRkC9K32hYQBFS9doBR7nbQZZ5FyO+X7MlmfM1C48Ejx/qTuOCgukDUNyzKZ7A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6', yarn: '>=1'} peerDependencies: - eslint: ^6.8.0 || ^7.0.0 || ^8.0.0 + '@testing-library/dom': ^8.0.0 || ^9.0.0 || ^10.0.0 + eslint: ^6.8.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 + peerDependenciesMeta: + '@testing-library/dom': + optional: true - eslint-plugin-jest@26.9.0: - resolution: {integrity: sha512-TWJxWGp1J628gxh2KhaH1H1paEdgE2J61BBF1I59c6xWeL5+D1BzMxGDN/nXAfX+aSkR5u80K+XhskK6Gwq9ng==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + eslint-plugin-jest@28.8.3: + resolution: {integrity: sha512-HIQ3t9hASLKm2IhIOqnu+ifw7uLZkIlR7RYNv7fMcEi/p0CIiJmfriStQS2LDkgtY4nyLbIZAD+JL347Yc2ETQ==} + engines: {node: ^16.10.0 || ^18.12.0 || >=20.0.0} peerDependencies: - '@typescript-eslint/eslint-plugin': ^5.0.0 - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + '@typescript-eslint/eslint-plugin': ^6.0.0 || ^7.0.0 || ^8.0.0 + eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 jest: '*' peerDependenciesMeta: '@typescript-eslint/eslint-plugin': @@ -2257,50 +2090,33 @@ packages: jest: optional: true - eslint-plugin-jsx-a11y@6.8.0: - resolution: {integrity: sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==} + eslint-plugin-jsx-a11y@6.10.0: + resolution: {integrity: sha512-ySOHvXX8eSN6zz8Bywacm7CvGNhUtdjvqfQDVe6020TUK34Cywkw7m0KsCCk1Qtm9G1FayfTN1/7mMYnYO2Bhg==} engines: {node: '>=4.0'} peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 - eslint-plugin-node@11.1.0: - resolution: {integrity: sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==} - engines: {node: '>=8.10.0'} - peerDependencies: - eslint: '>=5.16.0' - - eslint-plugin-react-hooks@4.6.2: - resolution: {integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==} + eslint-plugin-react-hooks@5.0.0: + resolution: {integrity: sha512-hIOwI+5hYGpJEc4uPRmz2ulCjAGD/N13Lukkh8cLV0i2IRk/bdZDYjgLVHj+U9Z704kLIdIO6iueGvxNur0sgw==} engines: {node: '>=10'} peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 - eslint-plugin-react@7.34.2: - resolution: {integrity: sha512-2HCmrU+/JNigDN6tg55cRDKCQWicYAPB38JGSFDQt95jDm8rrvSUo7YPkOIm5l6ts1j1zCvysNcasvfTMQzUOw==} + eslint-plugin-react@7.37.1: + resolution: {integrity: sha512-xwTnwDqzbDRA8uJ7BMxPs/EXRB3i8ZfnOIp8BsxEQkT0nHPp+WWceqGgo6rKb9ctNi8GJLDT4Go5HAWELa/WMg==} engines: {node: '>=4'} peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 - eslint-scope@5.1.1: - resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} - engines: {node: '>=8.0.0'} + eslint-plugin-simple-import-sort@12.1.1: + resolution: {integrity: sha512-6nuzu4xwQtE3332Uz0to+TxDQYRLTKRESSc2hefVT48Zc8JthmN23Gx9lnYhu0FtkRSL1oxny3kJ2aveVhmOVA==} + peerDependencies: + eslint: '>=5.0.0' eslint-scope@7.2.2: resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - eslint-utils@2.1.0: - resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==} - engines: {node: '>=6'} - - eslint-visitor-keys@1.3.0: - resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} - engines: {node: '>=4'} - - eslint-visitor-keys@2.1.0: - resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} - engines: {node: '>=10'} - eslint-visitor-keys@3.4.3: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2328,10 +2144,6 @@ packages: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} engines: {node: '>=4.0'} - estraverse@4.3.0: - resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} - engines: {node: '>=4.0'} - estraverse@5.3.0: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} @@ -2471,10 +2283,6 @@ packages: functions-have-names@1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - gensync@1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} - get-func-name@2.0.2: resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} @@ -2530,10 +2338,6 @@ packages: resolution: {integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==} engines: {node: '>=18'} - globals@11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} - globals@13.24.0: resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} engines: {node: '>=8'} @@ -2542,10 +2346,6 @@ packages: resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} - globby@11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} - globby@13.2.2: resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -2802,6 +2602,9 @@ packages: resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} engines: {node: '>=4'} + is-bun-module@1.2.1: + resolution: {integrity: sha512-AmidtEM6D6NmUiLOvvU7+IePxjEjOzra2h0pSrsfSAcXwl/83zLLXDByafUJy9k/rKK0pvXMLdwKwGHlX2Ke6Q==} + is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} @@ -2809,6 +2612,10 @@ packages: is-core-module@2.13.1: resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + is-core-module@2.15.1: + resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==} + engines: {node: '>= 0.4'} + is-data-view@1.0.1: resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} engines: {node: '>= 0.4'} @@ -3039,11 +2846,6 @@ packages: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true - jsesc@2.5.2: - resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} - engines: {node: '>=4'} - hasBin: true - json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} @@ -3060,11 +2862,6 @@ packages: resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} hasBin: true - json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true - jsonc-parser@3.2.1: resolution: {integrity: sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==} @@ -3213,9 +3010,6 @@ packages: lru-cache@4.1.5: resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} - lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - lunr@2.3.9: resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} @@ -3503,9 +3297,6 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - natural-compare-lite@1.4.0: - resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} - natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} @@ -3568,9 +3359,6 @@ packages: react: '>=16.13.1' react-dom: '>=16.13.1' - node-releases@2.0.14: - resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} - non-layered-tidy-tree-layout@2.0.2: resolution: {integrity: sha512-gkXMxRzUH+PB0ax9dUN0yYF0S25BqeAYqhgMaLUFmpXLEk7Fcu8f4emJuOAY0V8kjDICxROIKsTAKsV/v355xw==} @@ -3634,10 +3422,6 @@ packages: resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} engines: {node: '>= 0.4'} - object.hasown@1.1.4: - resolution: {integrity: sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==} - engines: {node: '>= 0.4'} - object.values@1.2.0: resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} engines: {node: '>= 0.4'} @@ -3887,11 +3671,6 @@ packages: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - prettier@2.8.8: - resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} - engines: {node: '>=10.13.0'} - hasBin: true - prettier@3.3.3: resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} engines: {node: '>=14'} @@ -3998,10 +3777,6 @@ packages: resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} engines: {node: '>= 0.4'} - regexpp@3.2.0: - resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} - engines: {node: '>=8'} - registry-auth-token@5.0.2: resolution: {integrity: sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==} engines: {node: '>=14'} @@ -4303,10 +4078,16 @@ packages: resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} engines: {node: '>=12'} + string.prototype.includes@2.0.0: + resolution: {integrity: sha512-E34CkBgyeqNDcrbU76cDjL5JLcVrtSdYq0MEh/B10r17pRP4ciHLwTgnuLV8Ay6cgEMLkcBkFCKyFZ43YldYzg==} + string.prototype.matchall@4.0.11: resolution: {integrity: sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==} engines: {node: '>= 0.4'} + string.prototype.repeat@1.0.0: + resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==} + string.prototype.trim@1.2.9: resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} engines: {node: '>= 0.4'} @@ -4462,10 +4243,6 @@ packages: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} - to-fast-properties@2.0.0: - resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} - engines: {node: '>=4'} - to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -4476,6 +4253,12 @@ packages: trough@2.2.0: resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} + ts-api-utils@1.3.0: + resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} + engines: {node: '>=16'} + peerDependencies: + typescript: '>=4.2.0' + ts-dedent@2.2.0: resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} engines: {node: '>=6.10'} @@ -4489,12 +4272,6 @@ packages: tslib@2.7.0: resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} - tsutils@3.21.0: - resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} - engines: {node: '>= 6'} - peerDependencies: - typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' - tsx@4.19.1: resolution: {integrity: sha512-0flMz1lh74BR4wOvBjuh9olbnwqCPc35OOlfyzHba0Dc+QNUeWX/Gq2YTbnwcWPO3BMd8fkzRVrHcsR+a7z7rA==} engines: {node: '>=18.0.0'} @@ -4646,12 +4423,6 @@ packages: unist-util-visit@5.0.0: resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} - update-browserslist-db@1.0.16: - resolution: {integrity: sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - update-notifier@7.1.0: resolution: {integrity: sha512-8SV3rIqVY6EFC1WxH6L0j55s0MO79MFBS1pivmInRJg3pCEDgWHBj1Q6XByTtCLOZIFA0f6zoG9ZWf2Ks9lvTA==} engines: {node: '>=18'} @@ -4842,9 +4613,6 @@ packages: yallist@2.1.2: resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} - yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - yaml@2.6.0: resolution: {integrity: sha512-a6ae//JvKDEra2kdi1qzCyrJW/WZCgFi8ydDV+eXExl95t+5R+ijnqHJbz9tmMh8FUjx3iv2fCQ4dclAQlO2UQ==} engines: {node: '>= 14'} @@ -4881,110 +4649,13 @@ packages: snapshots: - '@ampproject/remapping@2.3.0': - dependencies: - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - '@babel/code-frame@7.24.7': dependencies: '@babel/highlight': 7.24.7 picocolors: 1.1.0 - '@babel/compat-data@7.24.6': {} - - '@babel/core@7.24.6': - dependencies: - '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.24.7 - '@babel/generator': 7.24.6 - '@babel/helper-compilation-targets': 7.24.6 - '@babel/helper-module-transforms': 7.24.6(@babel/core@7.24.6) - '@babel/helpers': 7.24.6 - '@babel/parser': 7.24.6 - '@babel/template': 7.24.6 - '@babel/traverse': 7.24.6 - '@babel/types': 7.24.6 - convert-source-map: 2.0.0 - debug: 4.3.7 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/eslint-parser@7.24.6(@babel/core@7.24.6)(eslint@8.57.1)': - dependencies: - '@babel/core': 7.24.6 - '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 - eslint: 8.57.1 - eslint-visitor-keys: 2.1.0 - semver: 6.3.1 - - '@babel/generator@7.24.6': - dependencies: - '@babel/types': 7.24.6 - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - jsesc: 2.5.2 - - '@babel/helper-annotate-as-pure@7.24.6': - dependencies: - '@babel/types': 7.24.6 - - '@babel/helper-compilation-targets@7.24.6': - dependencies: - '@babel/compat-data': 7.24.6 - '@babel/helper-validator-option': 7.24.6 - browserslist: 4.23.0 - lru-cache: 5.1.1 - semver: 6.3.1 - - '@babel/helper-environment-visitor@7.24.6': {} - - '@babel/helper-function-name@7.24.6': - dependencies: - '@babel/template': 7.24.6 - '@babel/types': 7.24.6 - - '@babel/helper-hoist-variables@7.24.6': - dependencies: - '@babel/types': 7.24.6 - - '@babel/helper-module-imports@7.24.6': - dependencies: - '@babel/types': 7.24.6 - - '@babel/helper-module-transforms@7.24.6(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-environment-visitor': 7.24.6 - '@babel/helper-module-imports': 7.24.6 - '@babel/helper-simple-access': 7.24.6 - '@babel/helper-split-export-declaration': 7.24.6 - '@babel/helper-validator-identifier': 7.24.7 - - '@babel/helper-plugin-utils@7.24.6': {} - - '@babel/helper-simple-access@7.24.6': - dependencies: - '@babel/types': 7.24.6 - - '@babel/helper-split-export-declaration@7.24.6': - dependencies: - '@babel/types': 7.24.6 - - '@babel/helper-string-parser@7.24.6': {} - '@babel/helper-validator-identifier@7.24.7': {} - '@babel/helper-validator-option@7.24.6': {} - - '@babel/helpers@7.24.6': - dependencies: - '@babel/template': 7.24.6 - '@babel/types': 7.24.6 - '@babel/highlight@7.24.7': dependencies: '@babel/helper-validator-identifier': 7.24.7 @@ -4992,106 +4663,34 @@ snapshots: js-tokens: 4.0.0 picocolors: 1.1.0 - '@babel/parser@7.24.6': - dependencies: - '@babel/types': 7.24.6 - - '@babel/plugin-syntax-jsx@7.24.6(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.6 - - '@babel/plugin-transform-react-display-name@7.24.6(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.6 - - '@babel/plugin-transform-react-jsx-development@7.24.6(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/plugin-transform-react-jsx': 7.24.6(@babel/core@7.24.6) - - '@babel/plugin-transform-react-jsx@7.24.6(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-annotate-as-pure': 7.24.6 - '@babel/helper-module-imports': 7.24.6 - '@babel/helper-plugin-utils': 7.24.6 - '@babel/plugin-syntax-jsx': 7.24.6(@babel/core@7.24.6) - '@babel/types': 7.24.6 - - '@babel/plugin-transform-react-pure-annotations@7.24.6(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-annotate-as-pure': 7.24.6 - '@babel/helper-plugin-utils': 7.24.6 - - '@babel/preset-react@7.24.6(@babel/core@7.24.6)': - dependencies: - '@babel/core': 7.24.6 - '@babel/helper-plugin-utils': 7.24.6 - '@babel/helper-validator-option': 7.24.6 - '@babel/plugin-transform-react-display-name': 7.24.6(@babel/core@7.24.6) - '@babel/plugin-transform-react-jsx': 7.24.6(@babel/core@7.24.6) - '@babel/plugin-transform-react-jsx-development': 7.24.6(@babel/core@7.24.6) - '@babel/plugin-transform-react-pure-annotations': 7.24.6(@babel/core@7.24.6) - '@babel/runtime@7.24.6': dependencies: regenerator-runtime: 0.14.1 - '@babel/template@7.24.6': - dependencies: - '@babel/code-frame': 7.24.7 - '@babel/parser': 7.24.6 - '@babel/types': 7.24.6 - - '@babel/traverse@7.24.6': - dependencies: - '@babel/code-frame': 7.24.7 - '@babel/generator': 7.24.6 - '@babel/helper-environment-visitor': 7.24.6 - '@babel/helper-function-name': 7.24.6 - '@babel/helper-hoist-variables': 7.24.6 - '@babel/helper-split-export-declaration': 7.24.6 - '@babel/parser': 7.24.6 - '@babel/types': 7.24.6 - debug: 4.3.7 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - - '@babel/types@7.24.6': - dependencies: - '@babel/helper-string-parser': 7.24.6 - '@babel/helper-validator-identifier': 7.24.7 - to-fast-properties: 2.0.0 - '@braintree/sanitize-url@6.0.4': {} - '@dexaai/eslint-config@0.4.0(eslint@8.57.1)(typescript@5.6.3)': + '@dexaai/eslint-config@1.3.6(@testing-library/dom@8.20.1)(eslint@8.57.1)(typescript@5.6.3)': dependencies: - '@babel/core': 7.24.6 - '@babel/eslint-parser': 7.24.6(@babel/core@7.24.6)(eslint@8.57.1) - '@babel/preset-react': 7.24.6(@babel/core@7.24.6) - '@rushstack/eslint-patch': 1.10.3 - '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.6.3))(eslint@8.57.1)(typescript@5.6.3) - '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.6.3) + '@rushstack/eslint-patch': 1.10.4 + '@typescript-eslint/eslint-plugin': 8.8.1(@typescript-eslint/parser@8.8.1(eslint@8.57.1)(typescript@5.6.3))(eslint@8.57.1)(typescript@5.6.3) + '@typescript-eslint/parser': 8.8.1(eslint@8.57.1)(typescript@5.6.3) + '@typescript-eslint/utils': 8.8.1(eslint@8.57.1)(typescript@5.6.3) eslint: 8.57.1 - eslint-import-resolver-node: 0.3.7 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.6.3))(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.29.1)(eslint@8.57.1) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.1) - eslint-plugin-jest: 26.9.0(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.6.3))(eslint@8.57.1)(typescript@5.6.3))(eslint@8.57.1)(typescript@5.6.3) - eslint-plugin-jest-dom: 4.0.3(eslint@8.57.1) - eslint-plugin-jsx-a11y: 6.8.0(eslint@8.57.1) - eslint-plugin-node: 11.1.0(eslint@8.57.1) - eslint-plugin-react: 7.34.2(eslint@8.57.1) - eslint-plugin-react-hooks: 4.6.2(eslint@8.57.1) - prettier: 2.8.8 - optionalDependencies: + eslint-config-prettier: 9.1.0(eslint@8.57.1) + eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.8.1(eslint@8.57.1)(typescript@5.6.3))(eslint-plugin-import@2.31.0)(eslint@8.57.1) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.8.1(eslint@8.57.1)(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1) + eslint-plugin-jest: 28.8.3(@typescript-eslint/eslint-plugin@8.8.1(@typescript-eslint/parser@8.8.1(eslint@8.57.1)(typescript@5.6.3))(eslint@8.57.1)(typescript@5.6.3))(eslint@8.57.1)(typescript@5.6.3) + eslint-plugin-jest-dom: 5.4.0(@testing-library/dom@8.20.1)(eslint@8.57.1) + eslint-plugin-jsx-a11y: 6.10.0(eslint@8.57.1) + eslint-plugin-react: 7.37.1(eslint@8.57.1) + eslint-plugin-react-hooks: 5.0.0(eslint@8.57.1) + eslint-plugin-simple-import-sort: 12.1.1(eslint@8.57.1) typescript: 5.6.3 transitivePeerDependencies: + - '@testing-library/dom' + - eslint-import-resolver-node - eslint-import-resolver-webpack + - eslint-plugin-import-x - jest - supports-color @@ -5297,23 +4896,8 @@ snapshots: dependencies: '@sinclair/typebox': 0.27.8 - '@jridgewell/gen-mapping@0.3.5': - dependencies: - '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.25 - - '@jridgewell/resolve-uri@3.1.2': {} - - '@jridgewell/set-array@1.2.1': {} - '@jridgewell/sourcemap-codec@1.4.15': {} - '@jridgewell/trace-mapping@0.3.25': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 - '@keyv/redis@2.8.5': dependencies: ioredis: 5.4.1 @@ -5424,10 +5008,6 @@ snapshots: '@next/swc-win32-x64-msvc@14.2.15': optional: true - '@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1': - dependencies: - eslint-scope: 5.1.1 - '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 @@ -5440,6 +5020,8 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 + '@nolyfill/is-core-module@1.0.39': {} + '@opentelemetry/api-logs@0.52.1': dependencies: '@opentelemetry/api': 1.9.0 @@ -5774,7 +5356,9 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.24.0': optional: true - '@rushstack/eslint-patch@1.10.3': {} + '@rtsao/scc@1.1.0': {} + + '@rushstack/eslint-patch@1.10.4': {} '@samverschueren/stream-to-observable@0.3.1(rxjs@6.6.7)': dependencies: @@ -5902,6 +5486,7 @@ snapshots: dom-accessibility-api: 0.5.16 lz-string: 1.5.0 pretty-format: 27.5.1 + optional: true '@theguild/remark-mermaid@0.0.5(react@18.3.1)': dependencies: @@ -5920,7 +5505,8 @@ snapshots: dependencies: '@types/estree': 1.0.6 - '@types/aria-query@5.0.4': {} + '@types/aria-query@5.0.4': + optional: true '@types/connect@3.4.36': dependencies: @@ -5954,8 +5540,6 @@ snapshots: '@types/js-yaml@4.0.9': {} - '@types/json-schema@7.0.15': {} - '@types/json5@0.0.29': {} '@types/katex@0.16.7': {} @@ -5999,38 +5583,36 @@ snapshots: '@types/prop-types': 15.7.12 csstype: 3.1.3 - '@types/semver@7.5.8': {} - '@types/shimmer@1.2.0': {} '@types/unist@2.0.10': {} '@types/unist@3.0.3': {} - '@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.6.3))(eslint@8.57.1)(typescript@5.6.3)': + '@typescript-eslint/eslint-plugin@8.8.1(@typescript-eslint/parser@8.8.1(eslint@8.57.1)(typescript@5.6.3))(eslint@8.57.1)(typescript@5.6.3)': dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.6.3) - '@typescript-eslint/scope-manager': 5.62.0 - '@typescript-eslint/type-utils': 5.62.0(eslint@8.57.1)(typescript@5.6.3) - '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.6.3) - debug: 4.3.7 + '@typescript-eslint/parser': 8.8.1(eslint@8.57.1)(typescript@5.6.3) + '@typescript-eslint/scope-manager': 8.8.1 + '@typescript-eslint/type-utils': 8.8.1(eslint@8.57.1)(typescript@5.6.3) + '@typescript-eslint/utils': 8.8.1(eslint@8.57.1)(typescript@5.6.3) + '@typescript-eslint/visitor-keys': 8.8.1 eslint: 8.57.1 graphemer: 1.4.0 ignore: 5.3.2 - natural-compare-lite: 1.4.0 - semver: 7.6.3 - tsutils: 3.21.0(typescript@5.6.3) + natural-compare: 1.4.0 + ts-api-utils: 1.3.0(typescript@5.6.3) optionalDependencies: typescript: 5.6.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.6.3)': + '@typescript-eslint/parser@8.8.1(eslint@8.57.1)(typescript@5.6.3)': dependencies: - '@typescript-eslint/scope-manager': 5.62.0 - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.6.3) + '@typescript-eslint/scope-manager': 8.8.1 + '@typescript-eslint/types': 8.8.1 + '@typescript-eslint/typescript-estree': 8.8.1(typescript@5.6.3) + '@typescript-eslint/visitor-keys': 8.8.1 debug: 4.3.7 eslint: 8.57.1 optionalDependencies: @@ -6038,66 +5620,63 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@5.62.0': + '@typescript-eslint/scope-manager@8.8.1': dependencies: - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/visitor-keys': 5.62.0 + '@typescript-eslint/types': 8.8.1 + '@typescript-eslint/visitor-keys': 8.8.1 - '@typescript-eslint/type-utils@5.62.0(eslint@8.57.1)(typescript@5.6.3)': + '@typescript-eslint/type-utils@8.8.1(eslint@8.57.1)(typescript@5.6.3)': dependencies: - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.6.3) - '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.6.3) + '@typescript-eslint/typescript-estree': 8.8.1(typescript@5.6.3) + '@typescript-eslint/utils': 8.8.1(eslint@8.57.1)(typescript@5.6.3) debug: 4.3.7 - eslint: 8.57.1 - tsutils: 3.21.0(typescript@5.6.3) + ts-api-utils: 1.3.0(typescript@5.6.3) optionalDependencies: typescript: 5.6.3 transitivePeerDependencies: + - eslint - supports-color - '@typescript-eslint/types@5.62.0': {} + '@typescript-eslint/types@8.8.1': {} - '@typescript-eslint/typescript-estree@5.62.0(typescript@5.6.3)': + '@typescript-eslint/typescript-estree@8.8.1(typescript@5.6.3)': dependencies: - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/visitor-keys': 5.62.0 + '@typescript-eslint/types': 8.8.1 + '@typescript-eslint/visitor-keys': 8.8.1 debug: 4.3.7 - globby: 11.1.0 + fast-glob: 3.3.2 is-glob: 4.0.3 + minimatch: 9.0.5 semver: 7.6.3 - tsutils: 3.21.0(typescript@5.6.3) + ts-api-utils: 1.3.0(typescript@5.6.3) optionalDependencies: typescript: 5.6.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@5.62.0(eslint@8.57.1)(typescript@5.6.3)': + '@typescript-eslint/utils@8.8.1(eslint@8.57.1)(typescript@5.6.3)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.1) - '@types/json-schema': 7.0.15 - '@types/semver': 7.5.8 - '@typescript-eslint/scope-manager': 5.62.0 - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.6.3) + '@typescript-eslint/scope-manager': 8.8.1 + '@typescript-eslint/types': 8.8.1 + '@typescript-eslint/typescript-estree': 8.8.1(typescript@5.6.3) eslint: 8.57.1 - eslint-scope: 5.1.1 - semver: 7.6.3 transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/visitor-keys@5.62.0': + '@typescript-eslint/visitor-keys@8.8.1': dependencies: - '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/types': 8.8.1 eslint-visitor-keys: 3.4.3 '@ungap/structured-clone@1.2.0': {} - '@vercel/analytics@1.3.1(next@14.2.15(@babel/core@7.24.6)(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)': + '@vercel/analytics@1.3.1(next@14.2.15(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)': dependencies: server-only: 0.0.1 optionalDependencies: - next: 14.2.15(@babel/core@7.24.6)(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + next: 14.2.15(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 '@vitest/expect@1.6.0': @@ -6211,10 +5790,6 @@ snapshots: dependencies: deep-equal: 2.2.3 - aria-query@5.3.0: - dependencies: - dequal: 2.0.3 - array-buffer-byte-length@1.0.1: dependencies: call-bind: 1.0.7 @@ -6229,8 +5804,6 @@ snapshots: get-intrinsic: 1.2.4 is-string: 1.0.7 - array-union@2.1.0: {} - array.prototype.findlast@1.2.5: dependencies: call-bind: 1.0.7 @@ -6263,14 +5836,7 @@ snapshots: es-abstract: 1.23.3 es-shim-unscopables: 1.0.2 - array.prototype.toreversed@1.1.2: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-shim-unscopables: 1.0.2 - - array.prototype.tosorted@1.1.3: + array.prototype.tosorted@1.1.4: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 @@ -6299,11 +5865,9 @@ snapshots: dependencies: possible-typed-array-names: 1.0.0 - axe-core@4.7.0: {} + axe-core@4.10.0: {} - axobject-query@3.2.1: - dependencies: - dequal: 2.0.3 + axobject-query@4.1.0: {} bail@2.0.2: {} @@ -6341,13 +5905,6 @@ snapshots: dependencies: fill-range: 7.1.1 - browserslist@4.23.0: - dependencies: - caniuse-lite: 1.0.30001668 - electron-to-chromium: 1.4.788 - node-releases: 2.0.14 - update-browserslist-db: 1.0.16(browserslist@4.23.0) - buffer@5.7.1: dependencies: base64-js: 1.5.1 @@ -6515,8 +6072,6 @@ snapshots: write-file-atomic: 3.0.3 xdg-basedir: 5.1.0 - convert-source-map@2.0.0: {} - cose-base@1.0.3: dependencies: layout-base: 1.0.2 @@ -6860,7 +6415,8 @@ snapshots: dependencies: esutils: 2.0.3 - dom-accessibility-api@0.5.16: {} + dom-accessibility-api@0.5.16: + optional: true dompurify@3.1.5: {} @@ -6881,8 +6437,6 @@ snapshots: eastasianwidth@0.2.0: {} - electron-to-chromium@1.4.788: {} - elegant-spinner@1.0.1: {} elkjs@0.9.3: {} @@ -7059,8 +6613,6 @@ snapshots: '@esbuild/win32-ia32': 0.23.1 '@esbuild/win32-x64': 0.23.1 - escalade@3.1.2: {} - escape-goat@4.0.0: {} escape-string-regexp@1.0.5: {} @@ -7069,69 +6621,51 @@ snapshots: escape-string-regexp@5.0.0: {} - eslint-import-resolver-node@0.3.7: + eslint-config-prettier@9.1.0(eslint@8.57.1): dependencies: - debug: 3.2.7 - is-core-module: 2.13.1 - resolve: 1.22.8 - transitivePeerDependencies: - - supports-color + eslint: 8.57.1 eslint-import-resolver-node@0.3.9: dependencies: debug: 3.2.7 - is-core-module: 2.13.1 + is-core-module: 2.15.1 resolve: 1.22.8 transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.6.3))(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.29.1)(eslint@8.57.1): + eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.8.1(eslint@8.57.1)(typescript@5.6.3))(eslint-plugin-import@2.31.0)(eslint@8.57.1): dependencies: + '@nolyfill/is-core-module': 1.0.39 debug: 4.3.7 enhanced-resolve: 5.16.1 eslint: 8.57.1 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.6.3))(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.1) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.1) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.8.1(eslint@8.57.1)(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1) fast-glob: 3.3.2 get-tsconfig: 4.8.1 - is-core-module: 2.13.1 + is-bun-module: 1.2.1 is-glob: 4.0.3 + optionalDependencies: + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.8.1(eslint@8.57.1)(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1) transitivePeerDependencies: - '@typescript-eslint/parser' - eslint-import-resolver-node - eslint-import-resolver-webpack - supports-color - eslint-module-utils@2.8.1(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.6.3))(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.1): - dependencies: - debug: 3.2.7 - optionalDependencies: - '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.6.3) - eslint: 8.57.1 - eslint-import-resolver-node: 0.3.7 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.6.3))(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.29.1)(eslint@8.57.1) - transitivePeerDependencies: - - supports-color - - eslint-module-utils@2.8.1(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.1): + eslint-module-utils@2.12.0(@typescript-eslint/parser@8.8.1(eslint@8.57.1)(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.6.3) + '@typescript-eslint/parser': 8.8.1(eslint@8.57.1)(typescript@5.6.3) eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.6.3))(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.29.1)(eslint@8.57.1) + eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.8.1(eslint@8.57.1)(typescript@5.6.3))(eslint-plugin-import@2.31.0)(eslint@8.57.1) transitivePeerDependencies: - supports-color - eslint-plugin-es@3.0.1(eslint@8.57.1): - dependencies: - eslint: 8.57.1 - eslint-utils: 2.1.0 - regexpp: 3.2.0 - - eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.1): + eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.8.1(eslint@8.57.1)(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1): dependencies: + '@rtsao/scc': 1.1.0 array-includes: 3.1.8 array.prototype.findlastindex: 1.2.5 array.prototype.flat: 1.3.2 @@ -7140,49 +6674,50 @@ snapshots: doctrine: 2.1.0 eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.1) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.8.1(eslint@8.57.1)(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1) hasown: 2.0.2 - is-core-module: 2.13.1 + is-core-module: 2.15.1 is-glob: 4.0.3 minimatch: 3.1.2 object.fromentries: 2.0.8 object.groupby: 1.0.3 object.values: 1.2.0 semver: 6.3.1 + string.prototype.trimend: 1.0.8 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.6.3) + '@typescript-eslint/parser': 8.8.1(eslint@8.57.1)(typescript@5.6.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-jest-dom@4.0.3(eslint@8.57.1): + eslint-plugin-jest-dom@5.4.0(@testing-library/dom@8.20.1)(eslint@8.57.1): dependencies: '@babel/runtime': 7.24.6 - '@testing-library/dom': 8.20.1 eslint: 8.57.1 requireindex: 1.2.0 + optionalDependencies: + '@testing-library/dom': 8.20.1 - eslint-plugin-jest@26.9.0(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.6.3))(eslint@8.57.1)(typescript@5.6.3))(eslint@8.57.1)(typescript@5.6.3): + eslint-plugin-jest@28.8.3(@typescript-eslint/eslint-plugin@8.8.1(@typescript-eslint/parser@8.8.1(eslint@8.57.1)(typescript@5.6.3))(eslint@8.57.1)(typescript@5.6.3))(eslint@8.57.1)(typescript@5.6.3): dependencies: - '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.6.3) + '@typescript-eslint/utils': 8.8.1(eslint@8.57.1)(typescript@5.6.3) eslint: 8.57.1 optionalDependencies: - '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.6.3))(eslint@8.57.1)(typescript@5.6.3) + '@typescript-eslint/eslint-plugin': 8.8.1(@typescript-eslint/parser@8.8.1(eslint@8.57.1)(typescript@5.6.3))(eslint@8.57.1)(typescript@5.6.3) transitivePeerDependencies: - supports-color - typescript - eslint-plugin-jsx-a11y@6.8.0(eslint@8.57.1): + eslint-plugin-jsx-a11y@6.10.0(eslint@8.57.1): dependencies: - '@babel/runtime': 7.24.6 - aria-query: 5.3.0 + aria-query: 5.1.3 array-includes: 3.1.8 array.prototype.flatmap: 1.3.2 ast-types-flow: 0.0.8 - axe-core: 4.7.0 - axobject-query: 3.2.1 + axe-core: 4.10.0 + axobject-query: 4.1.0 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 es-iterator-helpers: 1.0.19 @@ -7191,63 +6726,45 @@ snapshots: jsx-ast-utils: 3.3.5 language-tags: 1.0.9 minimatch: 3.1.2 - object.entries: 1.1.8 object.fromentries: 2.0.8 + safe-regex-test: 1.0.3 + string.prototype.includes: 2.0.0 - eslint-plugin-node@11.1.0(eslint@8.57.1): - dependencies: - eslint: 8.57.1 - eslint-plugin-es: 3.0.1(eslint@8.57.1) - eslint-utils: 2.1.0 - ignore: 5.3.2 - minimatch: 3.1.2 - resolve: 1.22.8 - semver: 6.3.1 - - eslint-plugin-react-hooks@4.6.2(eslint@8.57.1): + eslint-plugin-react-hooks@5.0.0(eslint@8.57.1): dependencies: eslint: 8.57.1 - eslint-plugin-react@7.34.2(eslint@8.57.1): + eslint-plugin-react@7.37.1(eslint@8.57.1): dependencies: array-includes: 3.1.8 array.prototype.findlast: 1.2.5 array.prototype.flatmap: 1.3.2 - array.prototype.toreversed: 1.1.2 - array.prototype.tosorted: 1.1.3 + array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 es-iterator-helpers: 1.0.19 eslint: 8.57.1 estraverse: 5.3.0 + hasown: 2.0.2 jsx-ast-utils: 3.3.5 minimatch: 3.1.2 object.entries: 1.1.8 object.fromentries: 2.0.8 - object.hasown: 1.1.4 object.values: 1.2.0 prop-types: 15.8.1 resolve: 2.0.0-next.5 semver: 6.3.1 string.prototype.matchall: 4.0.11 + string.prototype.repeat: 1.0.0 - eslint-scope@5.1.1: + eslint-plugin-simple-import-sort@12.1.1(eslint@8.57.1): dependencies: - esrecurse: 4.3.0 - estraverse: 4.3.0 + eslint: 8.57.1 eslint-scope@7.2.2: dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 - eslint-utils@2.1.0: - dependencies: - eslint-visitor-keys: 1.3.0 - - eslint-visitor-keys@1.3.0: {} - - eslint-visitor-keys@2.1.0: {} - eslint-visitor-keys@3.4.3: {} eslint@8.57.1: @@ -7309,8 +6826,6 @@ snapshots: dependencies: estraverse: 5.3.0 - estraverse@4.3.0: {} - estraverse@5.3.0: {} estree-util-attach-comments@2.1.1: @@ -7470,8 +6985,6 @@ snapshots: functions-have-names@1.2.3: {} - gensync@1.0.0-beta.2: {} - get-func-name@2.0.2: {} get-intrinsic@1.2.4: @@ -7539,8 +7052,6 @@ snapshots: dependencies: ini: 4.1.1 - globals@11.12.0: {} - globals@13.24.0: dependencies: type-fest: 0.20.2 @@ -7550,15 +7061,6 @@ snapshots: define-properties: 1.2.1 gopd: 1.0.1 - globby@11.1.0: - dependencies: - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.3.2 - ignore: 5.3.2 - merge2: 1.4.1 - slash: 3.0.0 - globby@13.2.2: dependencies: dir-glob: 3.0.1 @@ -7933,12 +7435,20 @@ snapshots: is-buffer@2.0.5: {} + is-bun-module@1.2.1: + dependencies: + semver: 7.6.3 + is-callable@1.2.7: {} is-core-module@2.13.1: dependencies: hasown: 2.0.2 + is-core-module@2.15.1: + dependencies: + hasown: 2.0.2 + is-data-view@1.0.1: dependencies: is-typed-array: 1.1.13 @@ -8119,8 +7629,6 @@ snapshots: dependencies: argparse: 2.0.1 - jsesc@2.5.2: {} - json-buffer@3.0.1: {} json-parse-even-better-errors@2.3.1: {} @@ -8133,8 +7641,6 @@ snapshots: dependencies: minimist: 1.2.8 - json5@2.2.3: {} - jsonc-parser@3.2.1: {} jsonrepair@3.8.1: {} @@ -8294,13 +7800,10 @@ snapshots: pseudomap: 1.0.2 yallist: 2.1.2 - lru-cache@5.1.1: - dependencies: - yallist: 3.1.1 - lunr@2.3.9: {} - lz-string@1.5.0: {} + lz-string@1.5.0: + optional: true magic-string@0.30.10: dependencies: @@ -8868,8 +8371,6 @@ snapshots: nanoid@3.3.7: {} - natural-compare-lite@1.4.0: {} - natural-compare@1.4.0: {} new-github-release-url@2.0.0: @@ -8887,19 +8388,19 @@ snapshots: transitivePeerDependencies: - supports-color - next-seo@6.5.0(next@14.2.15(@babel/core@7.24.6)(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + next-seo@6.5.0(next@14.2.15(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: - next: 14.2.15(@babel/core@7.24.6)(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + next: 14.2.15(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - next-themes@0.2.1(next@14.2.15(@babel/core@7.24.6)(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + next-themes@0.2.1(next@14.2.15(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: - next: 14.2.15(@babel/core@7.24.6)(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + next: 14.2.15(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - next@14.2.15(@babel/core@7.24.6)(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + next@14.2.15(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: '@next/env': 14.2.15 '@swc/helpers': 0.5.5 @@ -8909,7 +8410,7 @@ snapshots: postcss: 8.4.31 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - styled-jsx: 5.1.1(@babel/core@7.24.6)(react@18.3.1) + styled-jsx: 5.1.1(react@18.3.1) optionalDependencies: '@next/swc-darwin-arm64': 14.2.15 '@next/swc-darwin-x64': 14.2.15 @@ -8925,7 +8426,7 @@ snapshots: - '@babel/core' - babel-plugin-macros - nextra-theme-docs@2.13.2(next@14.2.15(@babel/core@7.24.6)(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(nextra@2.13.2(next@14.2.15(@babel/core@7.24.6)(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + nextra-theme-docs@2.13.2(next@14.2.15(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(nextra@2.13.2(next@14.2.15(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: '@headlessui/react': 1.7.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@popperjs/core': 2.11.8 @@ -8936,16 +8437,16 @@ snapshots: git-url-parse: 13.1.1 intersection-observer: 0.12.2 match-sorter: 6.3.4 - next: 14.2.15(@babel/core@7.24.6)(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - next-seo: 6.5.0(next@14.2.15(@babel/core@7.24.6)(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - next-themes: 0.2.1(next@14.2.15(@babel/core@7.24.6)(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - nextra: 2.13.2(next@14.2.15(@babel/core@7.24.6)(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + next: 14.2.15(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + next-seo: 6.5.0(next@14.2.15(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + next-themes: 0.2.1(next@14.2.15(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + nextra: 2.13.2(next@14.2.15(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) scroll-into-view-if-needed: 3.1.0 zod: 3.23.8 - nextra@2.13.2(next@14.2.15(@babel/core@7.24.6)(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + nextra@2.13.2(next@14.2.15(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: '@headlessui/react': 1.7.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mdx-js/mdx': 2.3.0 @@ -8959,7 +8460,7 @@ snapshots: gray-matter: 4.0.3 katex: 0.16.10 lodash.get: 4.4.2 - next: 14.2.15(@babel/core@7.24.6)(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + next: 14.2.15(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) next-mdx-remote: 4.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) p-limit: 3.1.0 react: 18.3.1 @@ -8979,8 +8480,6 @@ snapshots: transitivePeerDependencies: - supports-color - node-releases@2.0.14: {} - non-layered-tidy-tree-layout@2.0.2: {} normalize-package-data@6.0.2: @@ -9093,12 +8592,6 @@ snapshots: define-properties: 1.2.1 es-abstract: 1.23.3 - object.hasown@1.1.4: - dependencies: - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-object-atoms: 1.0.0 - object.values@1.2.0: dependencies: call-bind: 1.0.7 @@ -9350,8 +8843,6 @@ snapshots: prelude-ls@1.2.1: {} - prettier@2.8.8: {} - prettier@3.3.3: {} pretty-format@27.5.1: @@ -9359,6 +8850,7 @@ snapshots: ansi-regex: 5.0.1 ansi-styles: 5.2.0 react-is: 17.0.2 + optional: true pretty-format@29.7.0: dependencies: @@ -9407,7 +8899,8 @@ snapshots: react-is@16.13.1: {} - react-is@17.0.2: {} + react-is@17.0.2: + optional: true react-is@18.3.1: {} @@ -9464,8 +8957,6 @@ snapshots: es-errors: 1.3.0 set-function-name: 2.0.2 - regexpp@3.2.0: {} - registry-auth-token@5.0.2: dependencies: '@pnpm/npm-conf': 2.2.2 @@ -9572,7 +9063,7 @@ snapshots: resolve@2.0.0-next.5: dependencies: - is-core-module: 2.13.1 + is-core-module: 2.15.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 @@ -9815,6 +9306,11 @@ snapshots: emoji-regex: 9.2.2 strip-ansi: 7.1.0 + string.prototype.includes@2.0.0: + dependencies: + define-properties: 1.2.1 + es-abstract: 1.23.3 + string.prototype.matchall@4.0.11: dependencies: call-bind: 1.0.7 @@ -9830,6 +9326,11 @@ snapshots: set-function-name: 2.0.2 side-channel: 1.0.6 + string.prototype.repeat@1.0.0: + dependencies: + define-properties: 1.2.1 + es-abstract: 1.23.3 + string.prototype.trim@1.2.9: dependencies: call-bind: 1.0.7 @@ -9898,12 +9399,10 @@ snapshots: dependencies: inline-style-parser: 0.1.1 - styled-jsx@5.1.1(@babel/core@7.24.6)(react@18.3.1): + styled-jsx@5.1.1(react@18.3.1): dependencies: client-only: 0.0.1 react: 18.3.1 - optionalDependencies: - '@babel/core': 7.24.6 stylis@4.3.2: {} @@ -9964,8 +9463,6 @@ snapshots: dependencies: os-tmpdir: 1.0.2 - to-fast-properties@2.0.0: {} - to-regex-range@5.0.1: dependencies: is-number: 7.0.0 @@ -9974,6 +9471,10 @@ snapshots: trough@2.2.0: {} + ts-api-utils@1.3.0(typescript@5.6.3): + dependencies: + typescript: 5.6.3 + ts-dedent@2.2.0: {} tsconfig-paths@3.15.0: @@ -9987,11 +9488,6 @@ snapshots: tslib@2.7.0: {} - tsutils@3.21.0(typescript@5.6.3): - dependencies: - tslib: 1.14.1 - typescript: 5.6.3 - tsx@4.19.1: dependencies: esbuild: 0.23.1 @@ -10181,12 +9677,6 @@ snapshots: unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 - update-browserslist-db@1.0.16(browserslist@4.23.0): - dependencies: - browserslist: 4.23.0 - escalade: 3.1.2 - picocolors: 1.1.0 - update-notifier@7.1.0: dependencies: boxen: 7.1.1 @@ -10425,8 +9915,6 @@ snapshots: yallist@2.1.2: {} - yallist@3.1.1: {} - yaml@2.6.0: {} yocto-queue@0.1.0: {} diff --git a/src/datastore/datastore.ts b/src/datastore/datastore.ts index 22fbb1b..a49a33e 100644 --- a/src/datastore/datastore.ts +++ b/src/datastore/datastore.ts @@ -1,10 +1,10 @@ -import type { Datastore } from './types.js'; import { type CacheKey, type CacheStorage, defaultCacheKey, } from '../utils/cache.js'; import { mergeEvents } from '../utils/helpers.js'; +import { type Datastore } from './types.js'; export abstract class AbstractDatastore< DocMeta extends Datastore.BaseMeta, diff --git a/src/datastore/hybrid-datastore.ts b/src/datastore/hybrid-datastore.ts index d603a7b..6ca40be 100644 --- a/src/datastore/hybrid-datastore.ts +++ b/src/datastore/hybrid-datastore.ts @@ -1,5 +1,5 @@ import { AbstractDatastore } from './datastore.js'; -import type { Datastore } from './types.js'; +import { type Datastore } from './types.js'; export abstract class AbstractHybridDatastore< DocMeta extends Datastore.BaseMeta, @@ -8,7 +8,7 @@ export abstract class AbstractHybridDatastore< protected spladeModel: any; constructor(args: Datastore.OptsHybrid) { - const { spladeModel, ...rest } = args; + const { spladeModel: _, ...rest } = args; super(rest); this.spladeModel = args.spladeModel; } diff --git a/src/datastore/index.ts b/src/datastore/index.ts index 07fc5fc..bb31664 100644 --- a/src/datastore/index.ts +++ b/src/datastore/index.ts @@ -1,4 +1,4 @@ export { AbstractDatastore } from './datastore.js'; export { AbstractHybridDatastore } from './hybrid-datastore.js'; -export { VectorUtils } from './utils/vectors.js'; export type { Datastore } from './types.js'; +export { VectorUtils } from './utils/vectors.js'; diff --git a/src/datastore/pinecone/client.ts b/src/datastore/pinecone/client.ts index 04c5055..9a11847 100644 --- a/src/datastore/pinecone/client.ts +++ b/src/datastore/pinecone/client.ts @@ -1,10 +1,10 @@ import { PineconeClient } from 'pinecone-client'; -import type { JsonObject } from 'type-fest'; +import { type JsonObject } from 'type-fest'; type PineconeConfig = ConstructorParameters[0]; /** Create a new Pinecone client instance. */ -export function createPineconeClient( +export function createPineconeClient( config: PineconeConfig ): PineconeClient { return new PineconeClient(config); diff --git a/src/datastore/pinecone/datastore.test.ts b/src/datastore/pinecone/datastore.test.ts index efb665d..8f93b80 100644 --- a/src/datastore/pinecone/datastore.test.ts +++ b/src/datastore/pinecone/datastore.test.ts @@ -1,7 +1,7 @@ import { PineconeClient } from 'pinecone-client'; import { describe, expect, it, vi } from 'vitest'; -import { SparseVectorModel } from '../../model/index.js'; -import { EmbeddingModel } from '../../model/index.js'; + +import { EmbeddingModel, SparseVectorModel } from '../../model/index.js'; import { PineconeDatastore } from './datastore.js'; import { PineconeHybridDatastore } from './hybrid-datastore.js'; diff --git a/src/datastore/pinecone/datastore.ts b/src/datastore/pinecone/datastore.ts index bf81871..874626c 100644 --- a/src/datastore/pinecone/datastore.ts +++ b/src/datastore/pinecone/datastore.ts @@ -1,9 +1,8 @@ import { deepMerge, mergeEvents } from '../../utils/helpers.js'; import { AbstractDatastore } from '../datastore.js'; -import type { Datastore, Prettify } from '../types.js'; -import type { PineconeClient } from './client.js'; -import { createPineconeClient } from './client.js'; -import type { Pinecone } from './types.js'; +import { type Datastore, type Prettify } from '../types.js'; +import { createPineconeClient, type PineconeClient } from './client.js'; +import { type Pinecone } from './types.js'; export type PineconeDatastoreArgs = Prettify< @@ -51,7 +50,7 @@ export class PineconeDatastore< } // Query Pinecone - // @ts-ignore + // @ts-expect-error: legacy ignore const response = await this.pinecone.query({ topK: query.topK ?? 10, ...(typeof query.minScore === 'number' @@ -68,7 +67,7 @@ export class PineconeDatastore< const queryResult: Datastore.QueryResult = { query: query.query, - // @ts-ignore + // @ts-expect-error: legacy ignore docs: response.matches, }; diff --git a/src/datastore/pinecone/hybrid-datastore.ts b/src/datastore/pinecone/hybrid-datastore.ts index 29d164c..c5e9c98 100644 --- a/src/datastore/pinecone/hybrid-datastore.ts +++ b/src/datastore/pinecone/hybrid-datastore.ts @@ -1,10 +1,9 @@ +import { type Model } from '../../model/index.js'; import { deepMerge, mergeEvents } from '../../utils/helpers.js'; -import type { Model } from '../../model/index.js'; import { AbstractHybridDatastore } from '../hybrid-datastore.js'; -import type { Datastore, Prettify } from '../types.js'; -import type { PineconeClient } from './client.js'; -import { createPineconeClient } from './client.js'; -import type { Pinecone } from './types.js'; +import { type Datastore, type Prettify } from '../types.js'; +import { createPineconeClient, type PineconeClient } from './client.js'; +import { type Pinecone } from './types.js'; export type PineconeHybridDatastoreArgs = Prettify< @@ -77,7 +76,7 @@ export class PineconeHybridDatastore< includeValues: query.includeValues ?? false, includeMetadata: true, vector: embedding, - sparseVector: sparseVector, + sparseVector, }); const queryResult: Datastore.QueryResult = { diff --git a/src/datastore/pinecone/index.ts b/src/datastore/pinecone/index.ts index 7f9ec1a..7f9cec8 100644 --- a/src/datastore/pinecone/index.ts +++ b/src/datastore/pinecone/index.ts @@ -1,5 +1,4 @@ +export type { PineconeClient } from './client.js'; +export { createPineconeClient } from './client.js'; export { PineconeDatastore } from './datastore.js'; export { PineconeHybridDatastore } from './hybrid-datastore.js'; - -export { createPineconeClient } from './client.js'; -export type { PineconeClient } from './client.js'; diff --git a/src/datastore/pinecone/types.ts b/src/datastore/pinecone/types.ts index 1be5ec2..fa51b00 100644 --- a/src/datastore/pinecone/types.ts +++ b/src/datastore/pinecone/types.ts @@ -1,18 +1,6 @@ -import type { Datastore } from '../types.js'; +import { type Datastore } from '../types.js'; export namespace Pinecone { - /** - * An object of metadata filters. - * @see https://www.pinecone.io/docs/metadata-filtering/ - */ - export type QueryFilter = { - [key in keyof Metadata | FilterOperator]?: - | FilterValue - | { - [key in keyof Metadata | FilterOperator]?: FilterValue; - }; - }; - /** * The possible leaf values for filter objects. * @note Null values aren't supported in metadata for filters, but are allowed here and automatically removed for convenience. @@ -29,4 +17,16 @@ export namespace Pinecone { | '$lte' | '$in' | '$nin'; + + /** + * An object of metadata filters. + * @see https://www.pinecone.io/docs/metadata-filtering/ + */ + export type QueryFilter = { + [key in keyof Metadata | FilterOperator]?: + | FilterValue + | { + [key in keyof Metadata | FilterOperator]?: FilterValue; + }; + }; } diff --git a/src/datastore/types.ts b/src/datastore/types.ts index 438505c..ce6fdca 100644 --- a/src/datastore/types.ts +++ b/src/datastore/types.ts @@ -1,6 +1,9 @@ -import type { Model } from '../model/index.js'; -import type { AbstractDatastore } from './datastore.js'; +/* eslint-disable no-use-before-define */ +import { type JsonObject } from 'type-fest'; + +import { type Model } from '../model/index.js'; import { type CacheKey, type CacheStorage } from '../utils/cache.js'; +import { type AbstractDatastore } from './datastore.js'; /** Improve preview of union types in autocomplete. */ export type Prettify = { [K in keyof T]: T[K] } & {}; @@ -10,7 +13,7 @@ export type Prettify = { [K in keyof T]: T[K] } & {}; */ export namespace Datastore { /** Base document metadata to be extended */ - export type BaseMeta = {}; + export type BaseMeta = JsonObject; /** Generic metadata object. */ export type Ctx = { [key: string]: any }; @@ -130,7 +133,7 @@ export namespace Datastore { hybridAlpha?: number; } - // @ts-ignore + // @ts-expect-error: legacy ignore // eslint-disable-next-line @typescript-eslint/no-unused-vars export type BaseFilter = any; diff --git a/src/model/chat.test.ts b/src/model/chat.test.ts index 2815a92..0e063b6 100644 --- a/src/model/chat.test.ts +++ b/src/model/chat.test.ts @@ -1,6 +1,7 @@ import { describe, expect, it, vi } from 'vitest'; -import type { Model } from './types.js'; + import { ChatModel } from './chat.js'; +import { type Model } from './types.js'; const FAKE_RESPONSE: Model.Chat.Response = { message: { diff --git a/src/model/chat.ts b/src/model/chat.ts index 56d2c6a..ab122da 100644 --- a/src/model/chat.ts +++ b/src/model/chat.ts @@ -1,11 +1,10 @@ -import type { PartialDeep } from 'type-fest'; -import type { SetOptional } from 'type-fest'; -import type { ModelArgs } from './model.js'; -import type { Model } from './types.js'; -import { calculateCost } from './utils/calculate-cost.js'; -import { createOpenAIClient } from './clients/openai.js'; -import { AbstractModel } from './model.js'; +import { type PartialDeep, type SetOptional } from 'type-fest'; + import { deepMerge, mergeEvents, type Prettify } from '../utils/helpers.js'; +import { createOpenAIClient } from './clients/openai.js'; +import { AbstractModel, type ModelArgs } from './model.js'; +import { type Model } from './types.js'; +import { calculateCost } from './utils/calculate-cost.js'; export type ChatModelArgs = SetOptional< ModelArgs< @@ -330,7 +329,7 @@ function logMessage(message: Model.Message, index: number) { ); console.debug(formatted); } catch (err) { - console.debug(message.function_call.arguments); + console.error(`Failed to parse function call arguments`, err); } } } else if (message.tool_calls) { @@ -351,7 +350,7 @@ function logMessage(message: Model.Message, index: number) { ); console.debug(formatted); } catch (err) { - console.debug(toolCallFunction.arguments); + console.error(`Failed to parse tool call arguments`, err); } } } diff --git a/src/model/clients/openai.ts b/src/model/clients/openai.ts index 06d4bf0..bdd457c 100644 --- a/src/model/clients/openai.ts +++ b/src/model/clients/openai.ts @@ -1,5 +1,4 @@ -import type { ChatMessage } from 'openai-fetch'; -import { OpenAIClient } from 'openai-fetch'; +import { type ChatMessage, OpenAIClient } from 'openai-fetch'; /** Cached OpenAI clients. */ const cachedClients = new Map(); diff --git a/src/model/clients/splade.ts b/src/model/clients/splade.ts index e8c54c5..becf4ad 100644 --- a/src/model/clients/splade.ts +++ b/src/model/clients/splade.ts @@ -1,5 +1,6 @@ import ky, { type Options as KYOptions } from 'ky'; -import type { Model } from '../types.js'; + +import { type Model } from '../types.js'; export const createSpladeClient = () => ({ async createSparseVector( @@ -22,7 +23,6 @@ export const createSpladeClient = () => ({ .json(); return sparseValues; } catch (e) { - // @ts-ignore: TODO: add custom Error class that handles this throw new Error('Failed to create splade vector', { cause: e }); } }, diff --git a/src/model/completion.ts b/src/model/completion.ts index d9f7abf..c13ed1c 100644 --- a/src/model/completion.ts +++ b/src/model/completion.ts @@ -1,11 +1,10 @@ -import type { PartialDeep } from 'type-fest'; -import type { SetOptional } from 'type-fest'; -import type { ModelArgs } from './model.js'; -import type { Model } from './types.js'; -import { calculateCost } from './utils/calculate-cost.js'; -import { createOpenAIClient } from './clients/openai.js'; -import { AbstractModel } from './model.js'; +import { type PartialDeep, type SetOptional } from 'type-fest'; + import { deepMerge, mergeEvents, type Prettify } from '../index.js'; +import { createOpenAIClient } from './clients/openai.js'; +import { AbstractModel, type ModelArgs } from './model.js'; +import { type Model } from './types.js'; +import { calculateCost } from './utils/calculate-cost.js'; export type CompletionModelArgs = SetOptional< ModelArgs< @@ -37,7 +36,8 @@ export class CompletionModel< modelProvider = 'openai' as const; constructor(args?: CompletionModelArgs) { - let { client, params, ...rest } = args ?? {}; + let { client, params } = args ?? {}; + const { client: _, params: __, ...rest } = args ?? {}; // Add a default client if none is provided client = client ?? createOpenAIClient(); // Set default model if no params are provided diff --git a/src/model/embedding.test.ts b/src/model/embedding.test.ts index c2e2686..d0237e3 100644 --- a/src/model/embedding.test.ts +++ b/src/model/embedding.test.ts @@ -1,6 +1,7 @@ import { describe, expect, it } from 'vitest'; -import type { Model } from './types.js'; + import { EmbeddingModel } from './embedding.js'; +import { type Model } from './types.js'; const FAKE_RESPONSE: Model.Embedding.Response = { data: [ diff --git a/src/model/embedding.ts b/src/model/embedding.ts index 8324891..753bf19 100644 --- a/src/model/embedding.ts +++ b/src/model/embedding.ts @@ -1,13 +1,12 @@ -import type { PartialDeep } from 'type-fest'; -import pThrottle from 'p-throttle'; import pMap from 'p-map'; -import type { SetOptional } from 'type-fest'; -import type { ModelArgs } from './model.js'; -import type { Model } from './types.js'; -import { calculateCost } from './utils/calculate-cost.js'; -import { createOpenAIClient } from './clients/openai.js'; -import { AbstractModel } from './model.js'; +import pThrottle from 'p-throttle'; +import { type PartialDeep, type SetOptional } from 'type-fest'; + import { deepMerge, mergeEvents, type Prettify } from '../utils/helpers.js'; +import { createOpenAIClient } from './clients/openai.js'; +import { AbstractModel, type ModelArgs } from './model.js'; +import { type Model } from './types.js'; +import { calculateCost } from './utils/calculate-cost.js'; export type EmbeddingModelArgs = SetOptional< ModelArgs< @@ -210,7 +209,7 @@ function batchInputs(args: { let currentBatch: InputBatch = []; let currentBatchTokens = 0; - for (let input of inputs) { + for (const input of inputs) { const tokenCount = tokenizer.countTokens(input); // Ensure that the input does not exceed the max tokens per batch diff --git a/src/model/index.ts b/src/model/index.ts index a092e5f..9fc78db 100644 --- a/src/model/index.ts +++ b/src/model/index.ts @@ -1,20 +1,14 @@ -export type { ModelArgs } from './model.js'; -export { AbstractModel } from './model.js'; - -export { ChatModel } from './chat.js'; export type { ChatModelArgs } from './chat.js'; - -export { CompletionModel } from './completion.js'; +export { ChatModel } from './chat.js'; +export { createOpenAIClient } from './clients/openai.js'; export type { CompletionModelArgs } from './completion.js'; - -export { EmbeddingModel } from './embedding.js'; +export { CompletionModel } from './completion.js'; export type { EmbeddingModelArgs } from './embedding.js'; - -export type { Model } from './types.js'; - +export { EmbeddingModel } from './embedding.js'; +export type { ModelArgs } from './model.js'; +export { AbstractModel } from './model.js'; export type { SparseVectorModelArgs } from './sparse-vector.js'; export { SparseVectorModel } from './sparse-vector.js'; - +export type { Model } from './types.js'; export { calculateCost } from './utils/calculate-cost.js'; -export { createOpenAIClient } from './clients/openai.js'; export { createTokenizer } from './utils/tokenizer.js'; diff --git a/src/model/model.test.ts b/src/model/model.test.ts index abbd027..1080231 100644 --- a/src/model/model.test.ts +++ b/src/model/model.test.ts @@ -1,6 +1,7 @@ import { describe, expect, it } from 'vitest'; + import { AbstractModel } from './model.js'; -import type { Model } from './types.js'; +import { type Model } from './types.js'; /** Simple class for testing */ class Test extends AbstractModel< @@ -81,7 +82,7 @@ describe('AbstractModel', () => { }); try { await test.run({ input: 'throw error' }); - } catch (e) {} + } catch (e) {} // eslint-disable-line @typescript-eslint/no-unused-vars expect(errorEvent).toHaveBeenCalledOnce(); }); diff --git a/src/model/model.ts b/src/model/model.ts index 34079fb..7e97fbc 100644 --- a/src/model/model.ts +++ b/src/model/model.ts @@ -1,4 +1,14 @@ -import type { PartialDeep } from 'type-fest'; +import { type PartialDeep } from 'type-fest'; + +import { DefaultTelemetry } from '../telemetry/default-telemetry.js'; +import { type Telemetry } from '../telemetry/types.js'; +import { + type CacheKey, + type CacheStorage, + defaultCacheKey, +} from '../utils/cache.js'; +import { deepMerge, type Prettify } from '../utils/helpers.js'; +import { type Model } from './types.js'; import { extractAttrsFromContext, extractAttrsFromParams, @@ -6,15 +16,6 @@ import { getSpanName, } from './utils/telemetry.js'; import { createTokenizer } from './utils/tokenizer.js'; -import type { Model } from './types.js'; -import { deepMerge, type Prettify } from '../utils/helpers.js'; -import { - type CacheKey, - type CacheStorage, - defaultCacheKey, -} from '../utils/cache.js'; -import type { Telemetry } from '../telemetry/types.js'; -import { DefaultTelemetry } from '../telemetry/default-telemetry.js'; export interface ModelArgs< MClient extends Model.Base.Client, @@ -72,7 +73,7 @@ export abstract class AbstractModel< MConfig extends Model.Base.Config, MRun extends Model.Base.Run, MResponse extends Model.Base.Response, - AResponse extends any = any, + AResponse = any, CustomCtx extends Model.Ctx = Model.Ctx, > { /** This is used to implement specific model calls */ diff --git a/src/model/sparse-vector.ts b/src/model/sparse-vector.ts index e27b1cc..589a680 100644 --- a/src/model/sparse-vector.ts +++ b/src/model/sparse-vector.ts @@ -1,12 +1,12 @@ -import type { PartialDeep } from 'type-fest'; -import pThrottle from 'p-throttle'; -import pMap from 'p-map'; import { type Options as KYOptions } from 'ky'; -import type { ModelArgs } from './model.js'; -import { AbstractModel } from './model.js'; -import type { Model } from './types.js'; -import { createSpladeClient } from './clients/splade.js'; +import pMap from 'p-map'; +import pThrottle from 'p-throttle'; +import { type PartialDeep } from 'type-fest'; + import { deepMerge, mergeEvents, type Prettify } from '../utils/helpers.js'; +import { createSpladeClient } from './clients/splade.js'; +import { AbstractModel, type ModelArgs } from './model.js'; +import { type Model } from './types.js'; export type SparseVectorModelArgs = Prettify< Omit< @@ -47,7 +47,7 @@ export class SparseVectorModel< const { serviceUrl, ...rest } = args; super({ client: createSpladeClient(), ...rest }); const safeProcess = globalThis.process || { env: {} }; - const tempServiceUrl = serviceUrl || safeProcess.env['SPLADE_SERVICE_URL']; + const tempServiceUrl = serviceUrl || safeProcess.env.SPLADE_SERVICE_URL; if (!tempServiceUrl) { throw new Error('Missing process.env.SPLADE_SERVICE_URL'); } @@ -56,7 +56,7 @@ export class SparseVectorModel< protected async runModel( { - requestOpts, + requestOpts: _, ...params }: Model.SparseVector.Run & Model.SparseVector.Config, context: CustomCtx diff --git a/src/model/types.ts b/src/model/types.ts index 2ca6f55..aa4ec07 100644 --- a/src/model/types.ts +++ b/src/model/types.ts @@ -1,20 +1,22 @@ -import type { - ChatMessage, - ChatParams, - ChatResponse, - ChatStreamResponse, - CompletionParams, - CompletionResponse, - EmbeddingParams, - EmbeddingResponse, - OpenAIClient, -} from 'openai-fetch'; +/* eslint-disable no-use-before-define */ import { type Options as KYOptions } from 'ky'; -import type { AbstractModel } from './model.js'; -import type { ChatModel } from './chat.js'; -import type { CompletionModel } from './completion.js'; -import type { EmbeddingModel } from './embedding.js'; -import type { SparseVectorModel } from './sparse-vector.js'; +import { + type ChatMessage, + type ChatParams, + type ChatResponse, + type ChatStreamResponse, + type CompletionParams, + type CompletionResponse, + type EmbeddingParams, + type EmbeddingResponse, + type OpenAIClient, +} from 'openai-fetch'; + +import { type ChatModel } from './chat.js'; +import { type CompletionModel } from './completion.js'; +import { type EmbeddingModel } from './embedding.js'; +import { type AbstractModel } from './model.js'; +import { type SparseVectorModel } from './sparse-vector.js'; type InnerType = T extends ReadableStream ? U : never; @@ -95,12 +97,7 @@ export namespace Model { createCompletions: OpenAIClient['createCompletions']; }; export interface Run extends Base.Run { - prompt: - | string - | Array - | Array - | Array> - | null; + prompt: string | string[] | number[] | number[][] | null; } export interface Config extends Base.Config, @@ -158,7 +155,7 @@ export namespace Model { MParams extends Base.Params, MResponse extends Base.Response, MCtx extends Model.Ctx, - AResponse extends any = any, + AResponse = any, > { onStart?: ((event: { timestamp: string; diff --git a/src/model/utils/calculate-cost.test.ts b/src/model/utils/calculate-cost.test.ts index e748eb4..f70a6d2 100644 --- a/src/model/utils/calculate-cost.test.ts +++ b/src/model/utils/calculate-cost.test.ts @@ -1,4 +1,5 @@ import { describe, expect, test } from 'vitest'; + import { calculateCost } from './calculate-cost.js'; describe('Calculates cost for', () => { diff --git a/src/model/utils/calculate-cost.ts b/src/model/utils/calculate-cost.ts index c611acd..416ae24 100644 --- a/src/model/utils/calculate-cost.ts +++ b/src/model/utils/calculate-cost.ts @@ -98,7 +98,7 @@ export function calculateCost(args: { /** Find the cost for the given model. */ function getCost(model: string): Cost | null { - let cost: Cost | undefined = COSTS[model]; + const cost: Cost | undefined = COSTS[model]; if (cost) return cost; // Handle model names with versions that have the same price. diff --git a/src/model/utils/telemetry.ts b/src/model/utils/telemetry.ts index 4fd3779..33b0c0f 100644 --- a/src/model/utils/telemetry.ts +++ b/src/model/utils/telemetry.ts @@ -1,5 +1,6 @@ -import type { ChatMessage, ChatParams } from 'openai-fetch'; -import type { Telemetry } from '../../telemetry/types.js'; +import { type ChatMessage, type ChatParams } from 'openai-fetch'; + +import { type Telemetry } from '../../telemetry/types.js'; const SpanAttrs = { LLM_MODEL: 'llm.model', @@ -99,7 +100,7 @@ export function extractAttrsFromResponse(resp: { } function extractAttrsFromFunctions(funcs?: ChatParams['functions']): AttrMap { - let attrs: AttrMap = {}; + const attrs: AttrMap = {}; if (!funcs) return attrs; funcs.forEach((func, index) => { const prefix = `${SpanAttrs.LLM_FUNCTION}.${index}`; @@ -111,7 +112,7 @@ function extractAttrsFromFunctions(funcs?: ChatParams['functions']): AttrMap { } function extractAttrsFromTools(tools?: ChatParams['tools']): AttrMap { - let attrs: AttrMap = {}; + const attrs: AttrMap = {}; if (!tools) return attrs; tools.forEach((tool, index) => { const prefix = `${SpanAttrs.LLM_TOOL}.${index}`; @@ -128,7 +129,7 @@ function extractAttrsFromStrings( type: 'prompt' | 'completion', prompt?: string | string[] | null ): AttrMap { - let attrs: Record = {}; + const attrs: Record = {}; if (!prompt) return attrs; const prompts = Array.isArray(prompt) ? prompt : [prompt]; const prefix = @@ -143,7 +144,7 @@ function extractAttrsFromMessages( type: 'prompt' | 'completion', messages?: ChatMessage[] | null ): AttrMap { - let attrs: Record = {}; + const attrs: Record = {}; if (!messages) return attrs; messages.forEach((message, index) => { const prefix = `${type === 'prompt' ? SpanAttrs.LLM_PROMPT : SpanAttrs.LLM_COMPLETION}.${index}`; diff --git a/src/model/utils/tokenizer.ts b/src/model/utils/tokenizer.ts index 28e5676..674ebfb 100644 --- a/src/model/utils/tokenizer.ts +++ b/src/model/utils/tokenizer.ts @@ -1,23 +1,11 @@ -import { encoding_for_model } from 'tiktoken'; -import type { Tiktoken, TiktokenModel } from 'tiktoken'; -import type { ChatMessage } from 'openai-fetch'; -import type { Model } from '../types.js'; +import { type ChatMessage } from 'openai-fetch'; +import { + encoding_for_model, + type Tiktoken, + type TiktokenModel, +} from 'tiktoken'; -// Store instances of the tokenizer to avoid re-creating them for the same model -const tokenizerCache = new Map(); - -/** Create a tokenizer for a specific model */ -export const createTokenizer: (model: string) => Tokenizer = ( - model: string -) => { - if (tokenizerCache.has(model)) { - return tokenizerCache.get(model)!; - } else { - const tokenizer = new Tokenizer(model); - tokenizerCache.set(model, tokenizer); - return tokenizer; - } -}; +import { type Model } from '../types.js'; const GPT_4_MODELS = [ 'gpt-4', @@ -48,6 +36,7 @@ class Tokenizer implements Model.ITokenizer { try { this.tiktoken = encoding_for_model(model as TiktokenModel); } catch (e) { + console.error(`Failed to create tokenizer for model ${model}`, e); this.tiktoken = encoding_for_model('gpt-3.5-turbo'); } } @@ -143,3 +132,19 @@ class Tokenizer implements Model.ITokenizer { return GPT_4_MODELS.includes(model as any); } } + +// Store instances of the tokenizer to avoid re-creating them for the same model +const tokenizerCache = new Map(); + +/** Create a tokenizer for a specific model */ +export const createTokenizer: (model: string) => Tokenizer = ( + model: string +) => { + if (tokenizerCache.has(model)) { + return tokenizerCache.get(model)!; + } else { + const tokenizer = new Tokenizer(model); + tokenizerCache.set(model, tokenizer); + return tokenizer; + } +}; diff --git a/src/prompt/functions/ai-extract-function.ts b/src/prompt/functions/ai-extract-function.ts index 5bf978c..021dfbe 100644 --- a/src/prompt/functions/ai-extract-function.ts +++ b/src/prompt/functions/ai-extract-function.ts @@ -1,5 +1,6 @@ -import type { z } from 'zod'; -import type { Model } from '../../model/index.js'; +import { type z } from 'zod'; + +import { type Model } from '../../model/index.js'; import { Msg, type Prompt } from '../index.js'; import { createAIFunction } from './ai-function.js'; import { createAIRunner } from './ai-runner.js'; diff --git a/src/prompt/functions/ai-function.test.ts b/src/prompt/functions/ai-function.test.ts index 67aa6a9..2314dc3 100644 --- a/src/prompt/functions/ai-function.test.ts +++ b/src/prompt/functions/ai-function.test.ts @@ -1,5 +1,6 @@ import { describe, expect, it } from 'vitest'; import { z } from 'zod'; + import { createAIFunction } from './ai-function.js'; const fullName = createAIFunction( diff --git a/src/prompt/functions/ai-function.ts b/src/prompt/functions/ai-function.ts index ddb9bfc..281128c 100644 --- a/src/prompt/functions/ai-function.ts +++ b/src/prompt/functions/ai-function.ts @@ -1,8 +1,9 @@ -import type { z } from 'zod'; -import { zodToJsonSchema } from './zod-to-json.js'; -import { extractZodObject } from './extract-zod-object.js'; -import type { Prompt } from '../types.js'; +import { type z } from 'zod'; + +import { type Prompt } from '../types.js'; import { cleanString } from '../utils/message.js'; +import { extractZodObject } from './extract-zod-object.js'; +import { zodToJsonSchema } from './zod-to-json.js'; /** * Create a function meant to be used with OpenAI tool or function calling. @@ -13,10 +14,7 @@ import { cleanString } from '../utils/message.js'; * The `spec` property of the returned function is the spec for adding the * function to the OpenAI API `functions` property. */ -export function createAIFunction< - Schema extends z.ZodObject, - Return extends any, ->( +export function createAIFunction, Return>( spec: { /** Name of the function. */ name: string; diff --git a/src/prompt/functions/ai-runner.ts b/src/prompt/functions/ai-runner.ts index 8c0a397..60b2d79 100644 --- a/src/prompt/functions/ai-runner.ts +++ b/src/prompt/functions/ai-runner.ts @@ -1,7 +1,8 @@ import pMap from 'p-map'; -import { Msg, getErrorMsg } from '../index.js'; -import type { Prompt } from '../types.js'; -import type { Model } from '../../index.js'; + +import { type Model } from '../../index.js'; +import { getErrorMsg, Msg } from '../index.js'; +import { type Prompt } from '../types.js'; /** * Creates a function to run a chat model in a loop @@ -9,7 +10,7 @@ import type { Model } from '../../index.js'; * - Handles errors by adding a message with the error and rerunning the model * - Optionally validates the content of the last message */ -export function createAIRunner(args: { +export function createAIRunner(args: { /** The ChatModel used to make API calls. */ chatModel: Model.Chat.Model; /** The functions the model can call. */ diff --git a/src/prompt/functions/extract-json.test.ts b/src/prompt/functions/extract-json.test.ts index beea4cc..f51b7f1 100644 --- a/src/prompt/functions/extract-json.test.ts +++ b/src/prompt/functions/extract-json.test.ts @@ -1,4 +1,5 @@ import { describe, expect, it } from 'vitest'; + import { extractJsonObject } from './extract-json.js'; describe('extractJsonObject()', () => { diff --git a/src/prompt/functions/extract-json.ts b/src/prompt/functions/extract-json.ts index 30f23cb..2e29c6d 100644 --- a/src/prompt/functions/extract-json.ts +++ b/src/prompt/functions/extract-json.ts @@ -1,6 +1,6 @@ import { jsonrepair } from 'jsonrepair'; import parseJson from 'parse-json'; -import type { JsonObject } from 'type-fest'; +import { type JsonObject } from 'type-fest'; /** Extract a JSON object from a string. */ export function extractJsonObject(str: string): JsonObject { @@ -14,6 +14,7 @@ export function extractJsonObject(str: string): JsonObject { repairedObjectString = jsonrepair(objectString); const json: JsonObject = JSON.parse(repairedObjectString); return json; + // eslint-disable-next-line @typescript-eslint/no-unused-vars } catch (error) { // Parse again with parse-json for better error messages. const json: JsonObject = parseJson(repairedObjectString); diff --git a/src/prompt/functions/extract-zod-object.test.ts b/src/prompt/functions/extract-zod-object.test.ts index 0b29cb1..42f8bd8 100644 --- a/src/prompt/functions/extract-zod-object.test.ts +++ b/src/prompt/functions/extract-zod-object.test.ts @@ -1,5 +1,6 @@ import { describe, expect, it } from 'vitest'; import { z } from 'zod'; + import { extractZodObject } from './extract-zod-object.js'; describe('extractZodObject()', () => { diff --git a/src/prompt/functions/extract-zod-object.ts b/src/prompt/functions/extract-zod-object.ts index 1d564d7..d527ad3 100644 --- a/src/prompt/functions/extract-zod-object.ts +++ b/src/prompt/functions/extract-zod-object.ts @@ -1,5 +1,6 @@ import { z } from 'zod'; import { fromZodError } from 'zod-validation-error'; + import { extractJsonObject } from './extract-json.js'; /** diff --git a/src/prompt/functions/stringify-for-model.test.ts b/src/prompt/functions/stringify-for-model.test.ts index 1c1167c..0d08a68 100644 --- a/src/prompt/functions/stringify-for-model.test.ts +++ b/src/prompt/functions/stringify-for-model.test.ts @@ -1,4 +1,5 @@ import { describe, expect, it } from 'vitest'; + import { stringifyForModel } from './stringify-for-model.js'; describe('stringifyForModel', () => { diff --git a/src/prompt/functions/stringify-for-model.ts b/src/prompt/functions/stringify-for-model.ts index a468238..34973cc 100644 --- a/src/prompt/functions/stringify-for-model.ts +++ b/src/prompt/functions/stringify-for-model.ts @@ -1,4 +1,4 @@ -import type { Jsonifiable } from 'type-fest'; +import { type Jsonifiable } from 'type-fest'; /** * Stringifies a JSON value in a way that's optimized for use with LLM prompts. diff --git a/src/prompt/functions/zod-to-json.test.ts b/src/prompt/functions/zod-to-json.test.ts index 15506f4..a072880 100644 --- a/src/prompt/functions/zod-to-json.test.ts +++ b/src/prompt/functions/zod-to-json.test.ts @@ -1,5 +1,6 @@ -import { z } from 'zod'; import { describe, expect, it } from 'vitest'; +import { z } from 'zod'; + import { zodToJsonSchema } from './zod-to-json.js'; describe('zodToJsonSchema', () => { diff --git a/src/prompt/functions/zod-to-json.ts b/src/prompt/functions/zod-to-json.ts index 07b2abd..eba705e 100644 --- a/src/prompt/functions/zod-to-json.ts +++ b/src/prompt/functions/zod-to-json.ts @@ -1,5 +1,6 @@ -import type { z } from 'zod'; +import { type z } from 'zod'; import { zodToJsonSchema as zodToJsonSchemaImpl } from 'zod-to-json-schema'; + import { omit } from '../../utils/helpers.js'; /** Generate a JSON Schema from a Zod schema. */ diff --git a/src/prompt/index.ts b/src/prompt/index.ts index 711e45e..e8f27d5 100644 --- a/src/prompt/index.ts +++ b/src/prompt/index.ts @@ -1,15 +1,14 @@ -export type { Prompt } from './types.js'; - -export { Msg } from './utils/message.js'; +export { createAIExtractFunction } from './functions/ai-extract-function.js'; export { createAIFunction } from './functions/ai-function.js'; export { createAIRunner, handleFunctionCallMessage, } from './functions/ai-runner.js'; -export { createAIExtractFunction } from './functions/ai-extract-function.js'; export { extractJsonObject } from './functions/extract-json.js'; export { extractZodObject } from './functions/extract-zod-object.js'; -export { zodToJsonSchema } from './functions/zod-to-json.js'; -export { getErrorMsg } from './utils/get-error-message.js'; export { stringifyForModel } from './functions/stringify-for-model.js'; +export { zodToJsonSchema } from './functions/zod-to-json.js'; +export type { Prompt } from './types.js'; export * from './utils/errors.js'; +export { getErrorMsg } from './utils/get-error-message.js'; +export { Msg } from './utils/message.js'; diff --git a/src/prompt/types.ts b/src/prompt/types.ts index c707f14..a13576f 100644 --- a/src/prompt/types.ts +++ b/src/prompt/types.ts @@ -1,12 +1,14 @@ -import type { z } from 'zod'; -import type { SetOptional } from 'type-fest'; -import type { Model } from '../index.js'; +/* eslint-disable no-use-before-define */ +import { type SetOptional } from 'type-fest'; +import { type z } from 'zod'; + +import { type Model } from '../index.js'; export namespace Prompt { /** * A runner that iteratively calls the model and handles function calls. */ - export type Runner = ( + export type Runner = ( params: string | Runner.Params, context?: Model.Ctx ) => Promise>; @@ -26,7 +28,7 @@ export namespace Prompt { >; /** Response from executing a runner */ - export type Response = + export type Response = | { status: 'success'; messages: Prompt.Msg[]; @@ -61,7 +63,7 @@ export namespace Prompt { */ export interface AIFunction< Schema extends z.ZodObject = z.ZodObject, - Return extends any = any, + Return = any, > { /** The implementation of the function, with arg parsing and validation. */ (input: string | Msg): Promise; diff --git a/src/prompt/utils/message.test.ts b/src/prompt/utils/message.test.ts index 4536922..2653679 100644 --- a/src/prompt/utils/message.test.ts +++ b/src/prompt/utils/message.test.ts @@ -1,7 +1,8 @@ import type * as OpenAI from 'openai-fetch'; import { describe, expect, it } from 'vitest'; + +import { type Prompt } from '../types.js'; import { Msg } from './message.js'; -import type { Prompt } from '../types.js'; describe('Msg', () => { it('creates a message and fixes indentation', () => { diff --git a/src/prompt/utils/message.ts b/src/prompt/utils/message.ts index ca2f5e2..02b2ecc 100644 --- a/src/prompt/utils/message.ts +++ b/src/prompt/utils/message.ts @@ -1,7 +1,8 @@ import dedent from 'dedent'; -import type { Jsonifiable } from 'type-fest'; -import type { Prompt } from '../types.js'; +import { type Jsonifiable } from 'type-fest'; + import { stringifyForModel } from '../functions/stringify-for-model.js'; +import { type Prompt } from '../types.js'; /** * Clean a string by removing extra newlines and indentation. diff --git a/src/telemetry/default-telemetry.ts b/src/telemetry/default-telemetry.ts index 3147e0d..43517d4 100644 --- a/src/telemetry/default-telemetry.ts +++ b/src/telemetry/default-telemetry.ts @@ -1,4 +1,4 @@ -import type { Telemetry } from './types.js'; +import { type Telemetry } from './types.js'; export const DefaultTelemetry: Telemetry.Provider = { startSpan( diff --git a/src/telemetry/index.ts b/src/telemetry/index.ts index 4c29e21..f125389 100644 --- a/src/telemetry/index.ts +++ b/src/telemetry/index.ts @@ -1,2 +1,2 @@ -export type { Telemetry } from './types.js'; export { DefaultTelemetry } from './default-telemetry.js'; +export type { Telemetry } from './types.js'; diff --git a/src/telemetry/sentry.test.ts b/src/telemetry/sentry.test.ts index 0acbf7d..63c19dd 100644 --- a/src/telemetry/sentry.test.ts +++ b/src/telemetry/sentry.test.ts @@ -1,5 +1,6 @@ import * as Sentry from '@sentry/node'; -import type { Telemetry } from './types.js'; + +import { type Telemetry } from './types.js'; test('Sentry Telemetry Provider', () => { expectTypeOf(Sentry).toMatchTypeOf(); diff --git a/src/telemetry/types.ts b/src/telemetry/types.ts index e0811d9..1dbbc0f 100644 --- a/src/telemetry/types.ts +++ b/src/telemetry/types.ts @@ -1,3 +1,4 @@ +/* eslint-disable no-use-before-define */ export namespace Telemetry { export interface Provider { startSpan(options: SpanOptions, callback: (span: Span) => T): T; @@ -42,9 +43,9 @@ export namespace Telemetry { | string | number | boolean - | Array - | Array - | Array; + | (null | undefined | string)[] + | (null | undefined | number)[] + | (null | undefined | boolean)[]; export type SpanAttributes = Record; } diff --git a/src/utils/cache.ts b/src/utils/cache.ts index 9af5418..b7f865c 100644 --- a/src/utils/cache.ts +++ b/src/utils/cache.ts @@ -1,6 +1,6 @@ import hashObject from 'hash-object'; -export type CacheStorage = { +export type CacheStorage = { get: (key: KeyType) => Promise | ValueType | undefined; set: (key: KeyType, value: ValueType) => Promise | unknown; }; diff --git a/src/utils/helpers.test.ts b/src/utils/helpers.test.ts index 80b61f4..cf6723b 100644 --- a/src/utils/helpers.test.ts +++ b/src/utils/helpers.test.ts @@ -1,4 +1,5 @@ import { describe, expect, it } from 'vitest'; + import { deepMerge, mergeEvents } from './helpers.js'; describe('utils.helpers', () => {