diff --git a/apps/learnbefore-bff/package.json b/apps/learnbefore-bff/package.json index affdfb6..5e67573 100644 --- a/apps/learnbefore-bff/package.json +++ b/apps/learnbefore-bff/package.json @@ -17,7 +17,7 @@ "express": "^4.19.2", "express-async-handler": "^1.2.0", "mongodb": "^6.7.0", - "openai": "^4.48.1", + "openai": "^4.68.4", "vitest": "^1.6.0", "zod": "^3.23.8" }, diff --git a/apps/learnbefore-bff/src/get-words.ts b/apps/learnbefore-bff/src/get-words.ts index 76f5cda..84b683b 100644 --- a/apps/learnbefore-bff/src/get-words.ts +++ b/apps/learnbefore-bff/src/get-words.ts @@ -5,18 +5,19 @@ import { Word, wordSchema } from "../types" export async function* getWords( openAI: OpenAI, text: string, + translationLanguage: string = "Russian", ): AsyncGenerator { let data = "" for await (const part of await openAI.chat.completions.create({ - model: "gpt-3.5-turbo", + model: "gpt-4o", stream: true, max_tokens: 4096, response_format: { type: "json_object" }, messages: [ - { role: "system", content: systemPrompt }, + { role: "system", content: getPrompt(translationLanguage) }, { role: "user", - content: getUserPrompt(text), + content: text, }, ], })) { @@ -45,26 +46,61 @@ export async function* getWords( } } -const systemPrompt = - "Use only RFC8259 compliant compact JSON and help to extract big list of words from the text that the language learner is unlikely to know or that are crucial to the understanding of the text. Words should be converted to dictionary form. Duplicates, names of characters, persons or toponyms are not allowed." + - "Words that do not exist in the text are not allowed. Returns an empty response if the text contains no words. MUST keep the order of words as they appear in the text." +function getPrompt(translationLanguage: string) { + return `Please analyze the input text to extract valuable vocabulary, prioritizing words in three tiers: -function getUserPrompt(text: string, translationLanguage = "Russian") { - return ` - You must extract 50 words from the text below which language learner likely do not know or need to know in order to understand the text. - Please ensure the extracted words are diverse and relevant to the context of the text. - - Translation language is ${translationLanguage}. - - Example of list of words in JSON: +1. High-complexity words: + - Academic vocabulary (B1-C2 level) + - Technical and specialized terms + - Domain-specific terminology + - Scientific and professional jargon + - Abstract concepts + - Literary or archaic terms + +2. Medium-complexity words (B1-B2 level): + - Less common everyday verbs (e.g., blaze, scatter, dodge) + - Descriptive vocabulary (e.g., graceful, peculiar, vivid) + - Phrasal verbs beyond basics + - Nature and environment terms + - Emotion and behavior words + - Specific actions and processes + - Words with multiple meanings + - Common metaphorical usage + - Words that native speakers use but learners often don't know + +3. Contextually valuable words: + - Words crucial for understanding the text's meaning + - Topic-specific vocabulary + - Words with cultural significance + - Terms that often appear in media/news + - Words with tricky usage patterns + - Terms that often cause confusion for learners + +Processing rules: +- Maintain original order of appearance +- Convert to dictionary form +- Remove duplicates while preserving first occurrence +- Consider word frequency in general usage (roughly 3000-15000 range for medium complexity) +- Include words that might seem simple to native speakers but are often unknown to learners + +Format output as JSON: +{ + "words": [ { - words: [ - "word": "Hello", // The word itself. - "meaning": "A greeting or expression of goodwill.", // The definition or meaning of the word. - "translation": "Здравствуйте", // Translation of the word. - "languageCode": "en", // ISO 639 Language code indicating the language of the word (e.g., "en" for English). - ] + "word": "[Original word]", + "meaning": "[Definition in text language]", + "translation": "[${translationLanguage} translation]", + "languageCode": "[ISO 639-1 code]" } - - Text: ${text}`.trim() + ] +} + +Additional guidelines: +- Include words that appear in upper-intermediate textbooks +- Keep terms that might not be extremely complex but are still challenging for learners +- Consider including words that: + * Have subtle usage differences from their synonyms + * Are common in native speech but rare in learner vocabulary + * Represent concepts that might be familiar but whose specific term might not be + * Are frequently used in certain contexts but not necessarily in basic conversation` } diff --git a/packages/types/words.ts b/packages/types/words.ts index f201404..acb68c2 100644 --- a/packages/types/words.ts +++ b/packages/types/words.ts @@ -10,6 +10,5 @@ export type Word = { word: string meaning: string translation: string - context: string languageCode: string } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 106caa0..da093bd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -83,7 +83,7 @@ importers: version: 7.8.0(eslint@8.57.0)(typescript@5.4.5) '@vitejs/plugin-react': specifier: ^4.3.0 - version: 4.3.0(vite@5.2.12(@types/node@20.14.2)) + version: 4.3.0(vite@5.2.12(@types/node@22.8.1)) eslint: specifier: ^8.57.0 version: 8.57.0 @@ -98,7 +98,7 @@ importers: version: 5.4.5 vite: specifier: ^5.2.12 - version: 5.2.12(@types/node@20.14.2) + version: 5.2.12(@types/node@22.8.1) apps/learnbefore-bff: dependencies: @@ -124,8 +124,8 @@ importers: specifier: ^6.7.0 version: 6.7.0(socks@2.8.3) openai: - specifier: ^4.48.1 - version: 4.48.1(encoding@0.1.13) + specifier: ^4.68.4 + version: 4.68.4(encoding@0.1.13)(zod@3.23.8) vitest: specifier: ^1.6.0 version: 1.6.0(@types/node@20.14.2) @@ -156,19 +156,19 @@ importers: devDependencies: '@typescript-eslint/eslint-plugin': specifier: ^7.1.0 - version: 7.8.0(@typescript-eslint/parser@7.8.0(eslint@9.4.0)(typescript@5.4.5))(eslint@9.4.0)(typescript@5.4.5) + version: 7.8.0(@typescript-eslint/parser@7.8.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.4.5))(eslint@9.13.0(jiti@2.3.3))(typescript@5.4.5) '@typescript-eslint/parser': specifier: ^7.1.0 - version: 7.8.0(eslint@9.4.0)(typescript@5.4.5) + version: 7.8.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.4.5) '@vercel/style-guide': specifier: ^5.2.0 - version: 5.2.0(eslint@9.4.0)(prettier@3.3.1)(typescript@5.4.5) + version: 5.2.0(eslint@9.13.0(jiti@2.3.3))(prettier@3.3.3)(typescript@5.4.5) eslint-config-prettier: specifier: ^9.1.0 - version: 9.1.0(eslint@9.4.0) + version: 9.1.0(eslint@9.13.0(jiti@2.3.3)) eslint-config-turbo: specifier: ^2.0.0 - version: 2.0.5(eslint@9.4.0) + version: 2.0.5(eslint@9.13.0(jiti@2.3.3)) eslint-plugin-only-warn: specifier: ^1.1.0 version: 1.1.0 @@ -572,6 +572,12 @@ packages: peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + '@eslint-community/eslint-utils@4.4.1': + resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + '@eslint-community/regexpp@4.10.0': resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} @@ -580,8 +586,16 @@ packages: resolution: {integrity: sha512-Zm2NGpWELsQAD1xsJzGQpYfvICSsFkEpU0jxBjfdC6uNEWXcHnfs9hScFWtXVDVl+rBQJGrl4g1vcKIejpH9dA==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/config-array@0.15.1': - resolution: {integrity: sha512-K4gzNq+yymn/EVsXYmf+SBcBro8MTf+aXJZUphM96CdzUEr+ClGDvAbpmaEK+cGVigVXIgs9gNmvHAlrzzY5JQ==} + '@eslint-community/regexpp@4.12.0': + resolution: {integrity: sha512-gh7PdNombP8ftL8TinYC8Xd7WEypB8EKV4PI2h0eMzndKjPCXuo2zUiZtD2Hu+MSPt02Ty2MdS788ADl9ai1rA==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/config-array@0.18.0': + resolution: {integrity: sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.7.0': + resolution: {integrity: sha512-xp5Jirz5DyPYlPiKat8jaq0EmYvDXKKpzTbxXMpT9eqlRJkRKIz9AGMdlvYjih+im+QlhWrpvVjl8IPC/lHlUw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/eslintrc@2.1.4': @@ -596,14 +610,26 @@ packages: resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@eslint/js@9.4.0': - resolution: {integrity: sha512-fdI7VJjP3Rvc70lC4xkFXHB0fiPeojiL1PxVG6t1ZvXQrarj893PweuBTujxDUFk0Fxj4R7PIIAZ/aiiyZPZcg==} + '@eslint/js@9.13.0': + resolution: {integrity: sha512-IFLyoY4d72Z5y/6o/BazFBezupzI/taV8sGumxTAVw3lXG9A6md1Dc34T9s1FoD/an9pJH8RHbAxsaEbBed9lA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/object-schema@2.1.4': + resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/object-schema@2.1.3': - resolution: {integrity: sha512-HAbhAYKfsAC2EkTqve00ibWIZlaU74Z1EHwAjYr4PXF0YU2VEA1zSIKSSpKszRLRWwHzzRZXvK632u+uXzvsvw==} + '@eslint/plugin-kit@0.2.1': + resolution: {integrity: sha512-HFZ4Mp26nbWk9d/BpvP0YNL6W4UoZF0VFcTw/aPPA8RpOxeFQgK+ClABGgAUXs9Y/RGX/l1vOmrqz1MQt9MNuw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@humanfs/core@0.19.0': + resolution: {integrity: sha512-2cbWIHbZVEweE853g8jymffCA+NCMiuqeECeBBLm8dg2oFdjuGJhgN4UAbI+6v0CKbbhvtXA4qV8YR5Ji86nmw==} + engines: {node: '>=18.18.0'} + + '@humanfs/node@0.16.5': + resolution: {integrity: sha512-KSPA4umqSG4LHYRodq31VDwKAvaTF4xmVlzM8Aeh4PlU1JQ3IG0wiA8C25d3RQ9nJyM3mBHyI53K06VVL/oFFg==} + engines: {node: '>=18.18.0'} + '@humanwhocodes/config-array@0.11.14': resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} engines: {node: '>=10.10.0'} @@ -615,8 +641,8 @@ packages: '@humanwhocodes/object-schema@2.0.3': resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} - '@humanwhocodes/retry@0.3.0': - resolution: {integrity: sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==} + '@humanwhocodes/retry@0.3.1': + resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} engines: {node: '>=18.18'} '@isaacs/cliui@8.0.2': @@ -834,6 +860,9 @@ packages: '@types/estree@1.0.5': resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + '@types/estree@1.0.6': + resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} + '@types/express-serve-static-core@4.19.3': resolution: {integrity: sha512-KOzM7MhcBFlmnlr/fzISFF5vGWVSvN6fTd4T+ExOt08bA/dA5kpSzY52nMsI1KDFmUREpJelPYyuslLRSjjgCg==} @@ -864,12 +893,15 @@ packages: '@types/node-fetch@2.6.11': resolution: {integrity: sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==} - '@types/node@18.19.34': - resolution: {integrity: sha512-eXF4pfBNV5DAMKGbI02NnDtWrQ40hAN558/2vvS4gMpMIxaf6JmD7YjnZbq0Q9TDSSkKBamime8ewRoomHdt4g==} + '@types/node@18.19.59': + resolution: {integrity: sha512-vizm2EqwV/7Zay+A6J3tGl9Lhr7CjZe2HmWS988sefiEmsyP9CeXEleho6i4hJk/8UtZAo0bWN4QPZZr83RxvQ==} '@types/node@20.14.2': resolution: {integrity: sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q==} + '@types/node@22.8.1': + resolution: {integrity: sha512-k6Gi8Yyo8EtrNtkHXutUu2corfDf9su95VYVP10aGYMMROM6SAItZi0w1XszA6RtWTHSVp5OeFof37w0IEqCQg==} + '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -1116,6 +1148,11 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + acorn@8.14.0: + resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} + engines: {node: '>=0.4.0'} + hasBin: true + agent-base@7.1.1: resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==} engines: {node: '>= 14'} @@ -1637,6 +1674,15 @@ packages: supports-color: optional: true + debug@4.3.7: + resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + deep-eql@4.1.3: resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} engines: {node: '>=6'} @@ -1973,8 +2019,8 @@ packages: resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - eslint-scope@8.0.1: - resolution: {integrity: sha512-pL8XjgP4ZOmmwfFE8mEhSxA7ZY4C+LWyqjQ3o4yWkkmD0qcMT9kkW3zWHOczhWcjTSgqycYAgwSlXvZltv65og==} + eslint-scope@8.1.0: + resolution: {integrity: sha512-14dSvlhaVhKKsa9Fx1l8A17s7ah7Ef7wCakJ10LYk6+GYmP9yDti2oq2SEwcyndt6knfcZyhyxwY3i9yL78EQw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} eslint-visitor-keys@2.1.0: @@ -1985,8 +2031,8 @@ packages: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - eslint-visitor-keys@4.0.0: - resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==} + eslint-visitor-keys@4.1.0: + resolution: {integrity: sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} eslint@8.57.0: @@ -1994,13 +2040,18 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true - eslint@9.4.0: - resolution: {integrity: sha512-sjc7Y8cUD1IlwYcTS9qPSvGjAC8Ne9LctpxKKu3x/1IC9bnOg98Zy6GxEJUfr1NojMgVPlyANXYns8oE2c1TAA==} + eslint@9.13.0: + resolution: {integrity: sha512-EYZK6SX6zjFHST/HRytOdA/zE72Cq/bfw45LSyuwrdvcclb/gqV8RRQxywOBEWO2+WDpva6UZa4CcDeJKzUCFA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true - espree@10.0.1: - resolution: {integrity: sha512-MWkrWZbJsL2UwnjxTX3gG8FneachS/Mwg7tdGXce011sJd5b0JG54vat5KHnfSBODZ3Wvzd2WnjxyzsRoVv+ww==} + espree@10.2.0: + resolution: {integrity: sha512-upbkBJbckcCNBDBDXEbuhjbP68n+scUd3k/U2EkyM9nw+I/jPiL4cLF/Al06CF96wRltFda16sxDFrxsI1v0/g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} espree@9.6.1: @@ -2016,6 +2067,10 @@ packages: resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} engines: {node: '>=0.10'} + esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + engines: {node: '>=0.10'} + esrecurse@4.3.0: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} engines: {node: '>=4.0'} @@ -2152,8 +2207,8 @@ packages: form-data-encoder@1.7.2: resolution: {integrity: sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==} - form-data@4.0.0: - resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + form-data@4.0.1: + resolution: {integrity: sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==} engines: {node: '>= 6'} formats@1.0.0: @@ -2408,6 +2463,10 @@ packages: resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} engines: {node: '>= 4'} + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + import-fresh@3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} @@ -2635,6 +2694,10 @@ packages: resolution: {integrity: sha512-uy2bNX5zQ+tESe+TiC7ilGRz8AtRGmnJH55NC5S0nSUjvvvM2hJHmefHErugGXN4pNv4Qx7vLsnNw9qJ9mtIsw==} hasBin: true + jiti@2.3.3: + resolution: {integrity: sha512-EX4oNDwcXSivPrw2qKH2LB5PoFxEvgtv2JgwW0bU858HoLQ+kutSvjLMUqBd0PeJYEinLWhoI9Ol0eYMqj/wNQ==} + hasBin: true + jju@1.4.0: resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} @@ -3120,9 +3183,14 @@ packages: resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} engines: {node: '>=12'} - openai@4.48.1: - resolution: {integrity: sha512-nlEzUAzDG1GsTlBVAFFtB0WZB8BFY+XU7o4oslzC7YMZ9PlgDixnbM49hXRWzv5OztevSn64hVKqptvzHq5/6Q==} + openai@4.68.4: + resolution: {integrity: sha512-LRinV8iU9VQplkr25oZlyrsYGPGasIwYN8KFMAAFTHHLHjHhejtJ5BALuLFrkGzY4wfbKhOhuT+7lcHZ+F3iEA==} hasBin: true + peerDependencies: + zod: ^3.23.8 + peerDependenciesMeta: + zod: + optional: true opencollective-postinstall@2.0.3: resolution: {integrity: sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==} @@ -3324,6 +3392,11 @@ packages: engines: {node: '>=14'} hasBin: true + prettier@3.3.3: + resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} + engines: {node: '>=14'} + hasBin: true + pretty-format@29.7.0: resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -4041,6 +4114,9 @@ packages: undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + undici-types@6.19.8: + resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + universalify@2.0.1: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} @@ -4183,10 +4259,6 @@ packages: wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} - web-streams-polyfill@3.3.3: - resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} - engines: {node: '>= 8'} - web-streams-polyfill@4.0.0-beta.3: resolution: {integrity: sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==} engines: {node: '>= 14'} @@ -4325,11 +4397,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/eslint-parser@7.24.7(@babel/core@7.24.7)(eslint@9.4.0)': + '@babel/eslint-parser@7.24.7(@babel/core@7.24.7)(eslint@9.13.0(jiti@2.3.3))': dependencies: '@babel/core': 7.24.7 '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 - eslint: 9.4.0 + eslint: 9.13.0(jiti@2.3.3) eslint-visitor-keys: 2.1.0 semver: 6.3.1 @@ -4591,23 +4663,32 @@ snapshots: eslint: 8.57.0 eslint-visitor-keys: 3.4.3 - '@eslint-community/eslint-utils@4.4.0(eslint@9.4.0)': + '@eslint-community/eslint-utils@4.4.0(eslint@9.13.0(jiti@2.3.3))': dependencies: - eslint: 9.4.0 + eslint: 9.13.0(jiti@2.3.3) + eslint-visitor-keys: 3.4.3 + + '@eslint-community/eslint-utils@4.4.1(eslint@9.13.0(jiti@2.3.3))': + dependencies: + eslint: 9.13.0(jiti@2.3.3) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.10.0': {} '@eslint-community/regexpp@4.10.1': {} - '@eslint/config-array@0.15.1': + '@eslint-community/regexpp@4.12.0': {} + + '@eslint/config-array@0.18.0': dependencies: - '@eslint/object-schema': 2.1.3 - debug: 4.3.5(supports-color@5.5.0) + '@eslint/object-schema': 2.1.4 + debug: 4.3.7 minimatch: 3.1.2 transitivePeerDependencies: - supports-color + '@eslint/core@0.7.0': {} + '@eslint/eslintrc@2.1.4': dependencies: ajv: 6.12.6 @@ -4625,10 +4706,10 @@ snapshots: '@eslint/eslintrc@3.1.0': dependencies: ajv: 6.12.6 - debug: 4.3.5(supports-color@5.5.0) - espree: 10.0.1 + debug: 4.3.7 + espree: 10.2.0 globals: 14.0.0 - ignore: 5.3.1 + ignore: 5.3.2 import-fresh: 3.3.0 js-yaml: 4.1.0 minimatch: 3.1.2 @@ -4638,9 +4719,20 @@ snapshots: '@eslint/js@8.57.0': {} - '@eslint/js@9.4.0': {} + '@eslint/js@9.13.0': {} + + '@eslint/object-schema@2.1.4': {} + + '@eslint/plugin-kit@0.2.1': + dependencies: + levn: 0.4.1 - '@eslint/object-schema@2.1.3': {} + '@humanfs/core@0.19.0': {} + + '@humanfs/node@0.16.5': + dependencies: + '@humanfs/core': 0.19.0 + '@humanwhocodes/retry': 0.3.1 '@humanwhocodes/config-array@0.11.14': dependencies: @@ -4654,7 +4746,7 @@ snapshots: '@humanwhocodes/object-schema@2.0.3': {} - '@humanwhocodes/retry@0.3.0': {} + '@humanwhocodes/retry@0.3.1': {} '@isaacs/cliui@8.0.2': dependencies: @@ -4878,6 +4970,8 @@ snapshots: '@types/estree@1.0.5': {} + '@types/estree@1.0.6': {} + '@types/express-serve-static-core@4.19.3': dependencies: '@types/node': 20.14.2 @@ -4915,9 +5009,9 @@ snapshots: '@types/node-fetch@2.6.11': dependencies: '@types/node': 20.14.2 - form-data: 4.0.0 + form-data: 4.0.1 - '@types/node@18.19.34': + '@types/node@18.19.59': dependencies: undici-types: 5.26.5 @@ -4925,6 +5019,11 @@ snapshots: dependencies: undici-types: 5.26.5 + '@types/node@22.8.1': + dependencies: + undici-types: 6.19.8 + optional: true + '@types/normalize-package-data@2.4.4': {} '@types/prop-types@15.7.12': {} @@ -4967,16 +5066,16 @@ snapshots: dependencies: '@types/webidl-conversions': 7.0.3 - '@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@9.4.0)(typescript@5.4.5))(eslint@9.4.0)(typescript@5.4.5)': + '@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.4.5))(eslint@9.13.0(jiti@2.3.3))(typescript@5.4.5)': dependencies: '@eslint-community/regexpp': 4.10.1 - '@typescript-eslint/parser': 6.21.0(eslint@9.4.0)(typescript@5.4.5) + '@typescript-eslint/parser': 6.21.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.4.5) '@typescript-eslint/scope-manager': 6.21.0 - '@typescript-eslint/type-utils': 6.21.0(eslint@9.4.0)(typescript@5.4.5) - '@typescript-eslint/utils': 6.21.0(eslint@9.4.0)(typescript@5.4.5) + '@typescript-eslint/type-utils': 6.21.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.4.5) + '@typescript-eslint/utils': 6.21.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.4.5) '@typescript-eslint/visitor-keys': 6.21.0 debug: 4.3.5(supports-color@5.5.0) - eslint: 9.4.0 + eslint: 9.13.0(jiti@2.3.3) graphemer: 1.4.0 ignore: 5.3.1 natural-compare: 1.4.0 @@ -5007,16 +5106,16 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@7.8.0(@typescript-eslint/parser@7.8.0(eslint@9.4.0)(typescript@5.4.5))(eslint@9.4.0)(typescript@5.4.5)': + '@typescript-eslint/eslint-plugin@7.8.0(@typescript-eslint/parser@7.8.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.4.5))(eslint@9.13.0(jiti@2.3.3))(typescript@5.4.5)': dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 7.8.0(eslint@9.4.0)(typescript@5.4.5) + '@typescript-eslint/parser': 7.8.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.4.5) '@typescript-eslint/scope-manager': 7.8.0 - '@typescript-eslint/type-utils': 7.8.0(eslint@9.4.0)(typescript@5.4.5) - '@typescript-eslint/utils': 7.8.0(eslint@9.4.0)(typescript@5.4.5) + '@typescript-eslint/type-utils': 7.8.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.4.5) + '@typescript-eslint/utils': 7.8.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.4.5) '@typescript-eslint/visitor-keys': 7.8.0 debug: 4.3.4 - eslint: 9.4.0 + eslint: 9.13.0(jiti@2.3.3) graphemer: 1.4.0 ignore: 5.3.1 natural-compare: 1.4.0 @@ -5027,14 +5126,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@6.21.0(eslint@9.4.0)(typescript@5.4.5)': + '@typescript-eslint/parser@6.21.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.4.5)': dependencies: '@typescript-eslint/scope-manager': 6.21.0 '@typescript-eslint/types': 6.21.0 '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.5) '@typescript-eslint/visitor-keys': 6.21.0 debug: 4.3.5(supports-color@5.5.0) - eslint: 9.4.0 + eslint: 9.13.0(jiti@2.3.3) optionalDependencies: typescript: 5.4.5 transitivePeerDependencies: @@ -5053,14 +5152,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@7.8.0(eslint@9.4.0)(typescript@5.4.5)': + '@typescript-eslint/parser@7.8.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.4.5)': dependencies: '@typescript-eslint/scope-manager': 7.8.0 '@typescript-eslint/types': 7.8.0 '@typescript-eslint/typescript-estree': 7.8.0(typescript@5.4.5) '@typescript-eslint/visitor-keys': 7.8.0 debug: 4.3.4 - eslint: 9.4.0 + eslint: 9.13.0(jiti@2.3.3) optionalDependencies: typescript: 5.4.5 transitivePeerDependencies: @@ -5081,12 +5180,12 @@ snapshots: '@typescript-eslint/types': 7.8.0 '@typescript-eslint/visitor-keys': 7.8.0 - '@typescript-eslint/type-utils@6.21.0(eslint@9.4.0)(typescript@5.4.5)': + '@typescript-eslint/type-utils@6.21.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.4.5)': dependencies: '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.5) - '@typescript-eslint/utils': 6.21.0(eslint@9.4.0)(typescript@5.4.5) + '@typescript-eslint/utils': 6.21.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.4.5) debug: 4.3.5(supports-color@5.5.0) - eslint: 9.4.0 + eslint: 9.13.0(jiti@2.3.3) ts-api-utils: 1.3.0(typescript@5.4.5) optionalDependencies: typescript: 5.4.5 @@ -5105,12 +5204,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@7.8.0(eslint@9.4.0)(typescript@5.4.5)': + '@typescript-eslint/type-utils@7.8.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.4.5)': dependencies: '@typescript-eslint/typescript-estree': 7.8.0(typescript@5.4.5) - '@typescript-eslint/utils': 7.8.0(eslint@9.4.0)(typescript@5.4.5) + '@typescript-eslint/utils': 7.8.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.4.5) debug: 4.3.4 - eslint: 9.4.0 + eslint: 9.13.0(jiti@2.3.3) ts-api-utils: 1.3.0(typescript@5.4.5) optionalDependencies: typescript: 5.4.5 @@ -5167,30 +5266,30 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@5.62.0(eslint@9.4.0)(typescript@5.4.5)': + '@typescript-eslint/utils@5.62.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.4.5)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.4.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.13.0(jiti@2.3.3)) '@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.4.5) - eslint: 9.4.0 + eslint: 9.13.0(jiti@2.3.3) eslint-scope: 5.1.1 semver: 7.6.2 transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/utils@6.21.0(eslint@9.4.0)(typescript@5.4.5)': + '@typescript-eslint/utils@6.21.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.4.5)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.4.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.13.0(jiti@2.3.3)) '@types/json-schema': 7.0.15 '@types/semver': 7.5.8 '@typescript-eslint/scope-manager': 6.21.0 '@typescript-eslint/types': 6.21.0 '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.5) - eslint: 9.4.0 + eslint: 9.13.0(jiti@2.3.3) semver: 7.6.2 transitivePeerDependencies: - supports-color @@ -5210,15 +5309,15 @@ snapshots: - supports-color - typescript - '@typescript-eslint/utils@7.8.0(eslint@9.4.0)(typescript@5.4.5)': + '@typescript-eslint/utils@7.8.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.4.5)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.4.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.13.0(jiti@2.3.3)) '@types/json-schema': 7.0.15 '@types/semver': 7.5.8 '@typescript-eslint/scope-manager': 7.8.0 '@typescript-eslint/types': 7.8.0 '@typescript-eslint/typescript-estree': 7.8.0(typescript@5.4.5) - eslint: 9.4.0 + eslint: 9.13.0(jiti@2.3.3) semver: 7.6.2 transitivePeerDependencies: - supports-color @@ -5241,30 +5340,30 @@ snapshots: '@ungap/structured-clone@1.2.0': {} - '@vercel/style-guide@5.2.0(eslint@9.4.0)(prettier@3.3.1)(typescript@5.4.5)': + '@vercel/style-guide@5.2.0(eslint@9.13.0(jiti@2.3.3))(prettier@3.3.3)(typescript@5.4.5)': dependencies: '@babel/core': 7.24.7 - '@babel/eslint-parser': 7.24.7(@babel/core@7.24.7)(eslint@9.4.0) + '@babel/eslint-parser': 7.24.7(@babel/core@7.24.7)(eslint@9.13.0(jiti@2.3.3)) '@rushstack/eslint-patch': 1.10.3 - '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@9.4.0)(typescript@5.4.5))(eslint@9.4.0)(typescript@5.4.5) - '@typescript-eslint/parser': 6.21.0(eslint@9.4.0)(typescript@5.4.5) - eslint-config-prettier: 9.1.0(eslint@9.4.0) - eslint-import-resolver-alias: 1.1.2(eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0(eslint@9.4.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.1)(eslint@9.4.0)) - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.21.0(eslint@9.4.0)(typescript@5.4.5))(eslint-plugin-import@2.29.1)(eslint@9.4.0) - eslint-plugin-eslint-comments: 3.2.0(eslint@9.4.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.8.0(eslint@9.4.0)(typescript@5.4.5))(eslint@9.4.0) - eslint-plugin-jest: 27.9.0(@typescript-eslint/eslint-plugin@7.8.0(@typescript-eslint/parser@7.8.0(eslint@9.4.0)(typescript@5.4.5))(eslint@9.4.0)(typescript@5.4.5))(eslint@9.4.0)(typescript@5.4.5) - eslint-plugin-jsx-a11y: 6.8.0(eslint@9.4.0) - eslint-plugin-playwright: 0.16.0(eslint-plugin-jest@27.9.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@9.4.0)(typescript@5.4.5))(eslint@9.4.0)(typescript@5.4.5))(eslint@9.4.0)(typescript@5.4.5))(eslint@9.4.0) - eslint-plugin-react: 7.34.2(eslint@9.4.0) - eslint-plugin-react-hooks: 4.6.2(eslint@9.4.0) - eslint-plugin-testing-library: 6.2.2(eslint@9.4.0)(typescript@5.4.5) + '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.4.5))(eslint@9.13.0(jiti@2.3.3))(typescript@5.4.5) + '@typescript-eslint/parser': 6.21.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.4.5) + eslint-config-prettier: 9.1.0(eslint@9.13.0(jiti@2.3.3)) + eslint-import-resolver-alias: 1.1.2(eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.1)(eslint@9.13.0(jiti@2.3.3))) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.21.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.4.5))(eslint-plugin-import@2.29.1)(eslint@9.13.0(jiti@2.3.3)) + eslint-plugin-eslint-comments: 3.2.0(eslint@9.13.0(jiti@2.3.3)) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.8.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.4.5))(eslint@9.13.0(jiti@2.3.3)) + eslint-plugin-jest: 27.9.0(@typescript-eslint/eslint-plugin@7.8.0(@typescript-eslint/parser@7.8.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.4.5))(eslint@9.13.0(jiti@2.3.3))(typescript@5.4.5))(eslint@9.13.0(jiti@2.3.3))(typescript@5.4.5) + eslint-plugin-jsx-a11y: 6.8.0(eslint@9.13.0(jiti@2.3.3)) + eslint-plugin-playwright: 0.16.0(eslint-plugin-jest@27.9.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.4.5))(eslint@9.13.0(jiti@2.3.3))(typescript@5.4.5))(eslint@9.13.0(jiti@2.3.3))(typescript@5.4.5))(eslint@9.13.0(jiti@2.3.3)) + eslint-plugin-react: 7.34.2(eslint@9.13.0(jiti@2.3.3)) + eslint-plugin-react-hooks: 4.6.2(eslint@9.13.0(jiti@2.3.3)) + eslint-plugin-testing-library: 6.2.2(eslint@9.13.0(jiti@2.3.3))(typescript@5.4.5) eslint-plugin-tsdoc: 0.2.17 - eslint-plugin-unicorn: 48.0.1(eslint@9.4.0) - prettier-plugin-packagejson: 2.5.0(prettier@3.3.1) + eslint-plugin-unicorn: 48.0.1(eslint@9.13.0(jiti@2.3.3)) + prettier-plugin-packagejson: 2.5.0(prettier@3.3.3) optionalDependencies: - eslint: 9.4.0 - prettier: 3.3.1 + eslint: 9.13.0(jiti@2.3.3) + prettier: 3.3.3 typescript: 5.4.5 transitivePeerDependencies: - eslint-import-resolver-node @@ -5272,14 +5371,14 @@ snapshots: - jest - supports-color - '@vitejs/plugin-react@4.3.0(vite@5.2.12(@types/node@20.14.2))': + '@vitejs/plugin-react@4.3.0(vite@5.2.12(@types/node@22.8.1))': dependencies: '@babel/core': 7.24.7 '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.24.7) '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.24.7) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 5.2.12(@types/node@20.14.2) + vite: 5.2.12(@types/node@22.8.1) transitivePeerDependencies: - supports-color @@ -5325,10 +5424,16 @@ snapshots: dependencies: acorn: 8.11.3 + acorn-jsx@5.3.2(acorn@8.14.0): + dependencies: + acorn: 8.14.0 + acorn-walk@8.3.2: {} acorn@8.11.3: {} + acorn@8.14.0: {} + agent-base@7.1.1: dependencies: debug: 4.3.5(supports-color@5.5.0) @@ -5911,6 +6016,10 @@ snapshots: optionalDependencies: supports-color: 5.5.0 + debug@4.3.7: + dependencies: + ms: 2.1.3 + deep-eql@4.1.3: dependencies: type-detect: 4.0.8 @@ -6171,18 +6280,18 @@ snapshots: optionalDependencies: source-map: 0.6.1 - eslint-config-prettier@9.1.0(eslint@9.4.0): + eslint-config-prettier@9.1.0(eslint@9.13.0(jiti@2.3.3)): dependencies: - eslint: 9.4.0 + eslint: 9.13.0(jiti@2.3.3) - eslint-config-turbo@2.0.5(eslint@9.4.0): + eslint-config-turbo@2.0.5(eslint@9.13.0(jiti@2.3.3)): dependencies: - eslint: 9.4.0 - eslint-plugin-turbo: 2.0.5(eslint@9.4.0) + eslint: 9.13.0(jiti@2.3.3) + eslint-plugin-turbo: 2.0.5(eslint@9.13.0(jiti@2.3.3)) - eslint-import-resolver-alias@1.1.2(eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0(eslint@9.4.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.1)(eslint@9.4.0)): + eslint-import-resolver-alias@1.1.2(eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.1)(eslint@9.13.0(jiti@2.3.3))): dependencies: - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.8.0(eslint@9.4.0)(typescript@5.4.5))(eslint@9.4.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.8.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.4.5))(eslint@9.13.0(jiti@2.3.3)) eslint-import-resolver-node@0.3.9: dependencies: @@ -6192,13 +6301,13 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0(eslint@9.4.0)(typescript@5.4.5))(eslint-plugin-import@2.29.1)(eslint@9.4.0): + eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.4.5))(eslint-plugin-import@2.29.1)(eslint@9.13.0(jiti@2.3.3)): dependencies: debug: 4.3.5(supports-color@5.5.0) enhanced-resolve: 5.17.0 - eslint: 9.4.0 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@6.21.0(eslint@9.4.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0(eslint@9.4.0)(typescript@5.4.5))(eslint-plugin-import@2.29.1)(eslint@9.4.0))(eslint@9.4.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.8.0(eslint@9.4.0)(typescript@5.4.5))(eslint@9.4.0) + eslint: 9.13.0(jiti@2.3.3) + eslint-module-utils: 2.8.1(@typescript-eslint/parser@6.21.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.4.5))(eslint-plugin-import@2.29.1)(eslint@9.13.0(jiti@2.3.3)))(eslint@9.13.0(jiti@2.3.3)) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.8.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.4.5))(eslint@9.13.0(jiti@2.3.3)) fast-glob: 3.3.2 get-tsconfig: 4.7.5 is-core-module: 2.13.1 @@ -6209,34 +6318,24 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-module-utils@2.8.1(@typescript-eslint/parser@6.21.0(eslint@9.4.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0(eslint@9.4.0)(typescript@5.4.5))(eslint-plugin-import@2.29.1)(eslint@9.4.0))(eslint@9.4.0): + eslint-module-utils@2.8.1(@typescript-eslint/parser@6.21.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.4.5))(eslint-plugin-import@2.29.1)(eslint@9.13.0(jiti@2.3.3)))(eslint@9.13.0(jiti@2.3.3)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 6.21.0(eslint@9.4.0)(typescript@5.4.5) - eslint: 9.4.0 + '@typescript-eslint/parser': 6.21.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.4.5) + eslint: 9.13.0(jiti@2.3.3) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.21.0(eslint@9.4.0)(typescript@5.4.5))(eslint-plugin-import@2.29.1)(eslint@9.4.0) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.21.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.4.5))(eslint-plugin-import@2.29.1)(eslint@9.13.0(jiti@2.3.3)) transitivePeerDependencies: - supports-color - eslint-module-utils@2.8.1(@typescript-eslint/parser@7.8.0(eslint@9.4.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint@9.4.0): - dependencies: - debug: 3.2.7 - optionalDependencies: - '@typescript-eslint/parser': 7.8.0(eslint@9.4.0)(typescript@5.4.5) - eslint: 9.4.0 - eslint-import-resolver-node: 0.3.9 - transitivePeerDependencies: - - supports-color - - eslint-plugin-eslint-comments@3.2.0(eslint@9.4.0): + eslint-plugin-eslint-comments@3.2.0(eslint@9.13.0(jiti@2.3.3)): dependencies: escape-string-regexp: 1.0.5 - eslint: 9.4.0 + eslint: 9.13.0(jiti@2.3.3) ignore: 5.3.1 - eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.8.0(eslint@9.4.0)(typescript@5.4.5))(eslint@9.4.0): + eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.8.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.4.5))(eslint@9.13.0(jiti@2.3.3)): dependencies: array-includes: 3.1.8 array.prototype.findlastindex: 1.2.5 @@ -6244,9 +6343,9 @@ snapshots: array.prototype.flatmap: 1.3.2 debug: 3.2.7 doctrine: 2.1.0 - eslint: 9.4.0 + eslint: 9.13.0(jiti@2.3.3) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.8.0(eslint@9.4.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint@9.4.0) + eslint-module-utils: 2.8.1(@typescript-eslint/parser@6.21.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.4.5))(eslint-plugin-import@2.29.1)(eslint@9.13.0(jiti@2.3.3)))(eslint@9.13.0(jiti@2.3.3)) hasown: 2.0.2 is-core-module: 2.13.1 is-glob: 4.0.3 @@ -6257,23 +6356,23 @@ snapshots: semver: 6.3.1 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 7.8.0(eslint@9.4.0)(typescript@5.4.5) + '@typescript-eslint/parser': 7.8.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.4.5) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-jest@27.9.0(@typescript-eslint/eslint-plugin@7.8.0(@typescript-eslint/parser@7.8.0(eslint@9.4.0)(typescript@5.4.5))(eslint@9.4.0)(typescript@5.4.5))(eslint@9.4.0)(typescript@5.4.5): + eslint-plugin-jest@27.9.0(@typescript-eslint/eslint-plugin@7.8.0(@typescript-eslint/parser@7.8.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.4.5))(eslint@9.13.0(jiti@2.3.3))(typescript@5.4.5))(eslint@9.13.0(jiti@2.3.3))(typescript@5.4.5): dependencies: - '@typescript-eslint/utils': 5.62.0(eslint@9.4.0)(typescript@5.4.5) - eslint: 9.4.0 + '@typescript-eslint/utils': 5.62.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.4.5) + eslint: 9.13.0(jiti@2.3.3) optionalDependencies: - '@typescript-eslint/eslint-plugin': 7.8.0(@typescript-eslint/parser@7.8.0(eslint@9.4.0)(typescript@5.4.5))(eslint@9.4.0)(typescript@5.4.5) + '@typescript-eslint/eslint-plugin': 7.8.0(@typescript-eslint/parser@7.8.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.4.5))(eslint@9.13.0(jiti@2.3.3))(typescript@5.4.5) transitivePeerDependencies: - supports-color - typescript - eslint-plugin-jsx-a11y@6.8.0(eslint@9.4.0): + eslint-plugin-jsx-a11y@6.8.0(eslint@9.13.0(jiti@2.3.3)): dependencies: '@babel/runtime': 7.24.7 aria-query: 5.3.0 @@ -6285,7 +6384,7 @@ snapshots: damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 es-iterator-helpers: 1.0.19 - eslint: 9.4.0 + eslint: 9.13.0(jiti@2.3.3) hasown: 2.0.2 jsx-ast-utils: 3.3.5 language-tags: 1.0.9 @@ -6295,25 +6394,25 @@ snapshots: eslint-plugin-only-warn@1.1.0: {} - eslint-plugin-playwright@0.16.0(eslint-plugin-jest@27.9.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@9.4.0)(typescript@5.4.5))(eslint@9.4.0)(typescript@5.4.5))(eslint@9.4.0)(typescript@5.4.5))(eslint@9.4.0): + eslint-plugin-playwright@0.16.0(eslint-plugin-jest@27.9.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.4.5))(eslint@9.13.0(jiti@2.3.3))(typescript@5.4.5))(eslint@9.13.0(jiti@2.3.3))(typescript@5.4.5))(eslint@9.13.0(jiti@2.3.3)): dependencies: - eslint: 9.4.0 + eslint: 9.13.0(jiti@2.3.3) optionalDependencies: - eslint-plugin-jest: 27.9.0(@typescript-eslint/eslint-plugin@7.8.0(@typescript-eslint/parser@7.8.0(eslint@9.4.0)(typescript@5.4.5))(eslint@9.4.0)(typescript@5.4.5))(eslint@9.4.0)(typescript@5.4.5) + eslint-plugin-jest: 27.9.0(@typescript-eslint/eslint-plugin@7.8.0(@typescript-eslint/parser@7.8.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.4.5))(eslint@9.13.0(jiti@2.3.3))(typescript@5.4.5))(eslint@9.13.0(jiti@2.3.3))(typescript@5.4.5) eslint-plugin-react-hooks@4.6.2(eslint@8.57.0): dependencies: eslint: 8.57.0 - eslint-plugin-react-hooks@4.6.2(eslint@9.4.0): + eslint-plugin-react-hooks@4.6.2(eslint@9.13.0(jiti@2.3.3)): dependencies: - eslint: 9.4.0 + eslint: 9.13.0(jiti@2.3.3) eslint-plugin-react-refresh@0.4.7(eslint@8.57.0): dependencies: eslint: 8.57.0 - eslint-plugin-react@7.34.2(eslint@9.4.0): + eslint-plugin-react@7.34.2(eslint@9.13.0(jiti@2.3.3)): dependencies: array-includes: 3.1.8 array.prototype.findlast: 1.2.5 @@ -6322,7 +6421,7 @@ snapshots: array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 es-iterator-helpers: 1.0.19 - eslint: 9.4.0 + eslint: 9.13.0(jiti@2.3.3) estraverse: 5.3.0 jsx-ast-utils: 3.3.5 minimatch: 3.1.2 @@ -6335,10 +6434,10 @@ snapshots: semver: 6.3.1 string.prototype.matchall: 4.0.11 - eslint-plugin-testing-library@6.2.2(eslint@9.4.0)(typescript@5.4.5): + eslint-plugin-testing-library@6.2.2(eslint@9.13.0(jiti@2.3.3))(typescript@5.4.5): dependencies: - '@typescript-eslint/utils': 5.62.0(eslint@9.4.0)(typescript@5.4.5) - eslint: 9.4.0 + '@typescript-eslint/utils': 5.62.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.4.5) + eslint: 9.13.0(jiti@2.3.3) transitivePeerDependencies: - supports-color - typescript @@ -6348,18 +6447,18 @@ snapshots: '@microsoft/tsdoc': 0.14.2 '@microsoft/tsdoc-config': 0.16.2 - eslint-plugin-turbo@2.0.5(eslint@9.4.0): + eslint-plugin-turbo@2.0.5(eslint@9.13.0(jiti@2.3.3)): dependencies: dotenv: 16.0.3 - eslint: 9.4.0 + eslint: 9.13.0(jiti@2.3.3) - eslint-plugin-unicorn@48.0.1(eslint@9.4.0): + eslint-plugin-unicorn@48.0.1(eslint@9.13.0(jiti@2.3.3)): dependencies: '@babel/helper-validator-identifier': 7.24.7 - '@eslint-community/eslint-utils': 4.4.0(eslint@9.4.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.13.0(jiti@2.3.3)) ci-info: 3.9.0 clean-regexp: 1.0.0 - eslint: 9.4.0 + eslint: 9.13.0(jiti@2.3.3) esquery: 1.5.0 indent-string: 4.0.0 is-builtin-module: 3.2.1 @@ -6382,7 +6481,7 @@ snapshots: esrecurse: 4.3.0 estraverse: 5.3.0 - eslint-scope@8.0.1: + eslint-scope@8.1.0: dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 @@ -6391,7 +6490,7 @@ snapshots: eslint-visitor-keys@3.4.3: {} - eslint-visitor-keys@4.0.0: {} + eslint-visitor-keys@4.1.0: {} eslint@8.57.0: dependencies: @@ -6436,50 +6535,53 @@ snapshots: transitivePeerDependencies: - supports-color - eslint@9.4.0: + eslint@9.13.0(jiti@2.3.3): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.4.0) - '@eslint-community/regexpp': 4.10.1 - '@eslint/config-array': 0.15.1 + '@eslint-community/eslint-utils': 4.4.1(eslint@9.13.0(jiti@2.3.3)) + '@eslint-community/regexpp': 4.12.0 + '@eslint/config-array': 0.18.0 + '@eslint/core': 0.7.0 '@eslint/eslintrc': 3.1.0 - '@eslint/js': 9.4.0 + '@eslint/js': 9.13.0 + '@eslint/plugin-kit': 0.2.1 + '@humanfs/node': 0.16.5 '@humanwhocodes/module-importer': 1.0.1 - '@humanwhocodes/retry': 0.3.0 - '@nodelib/fs.walk': 1.2.8 + '@humanwhocodes/retry': 0.3.1 + '@types/estree': 1.0.6 + '@types/json-schema': 7.0.15 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.5(supports-color@5.5.0) + debug: 4.3.7 escape-string-regexp: 4.0.0 - eslint-scope: 8.0.1 - eslint-visitor-keys: 4.0.0 - espree: 10.0.1 - esquery: 1.5.0 + eslint-scope: 8.1.0 + eslint-visitor-keys: 4.1.0 + espree: 10.2.0 + esquery: 1.6.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 file-entry-cache: 8.0.0 find-up: 5.0.0 glob-parent: 6.0.2 - ignore: 5.3.1 + ignore: 5.3.2 imurmurhash: 0.1.4 is-glob: 4.0.3 - is-path-inside: 3.0.3 json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 lodash.merge: 4.6.2 minimatch: 3.1.2 natural-compare: 1.4.0 optionator: 0.9.4 - strip-ansi: 6.0.1 text-table: 0.2.0 + optionalDependencies: + jiti: 2.3.3 transitivePeerDependencies: - supports-color - espree@10.0.1: + espree@10.2.0: dependencies: - acorn: 8.11.3 - acorn-jsx: 5.3.2(acorn@8.11.3) - eslint-visitor-keys: 4.0.0 + acorn: 8.14.0 + acorn-jsx: 5.3.2(acorn@8.14.0) + eslint-visitor-keys: 4.1.0 espree@9.6.1: dependencies: @@ -6493,6 +6595,10 @@ snapshots: dependencies: estraverse: 5.3.0 + esquery@1.6.0: + dependencies: + estraverse: 5.3.0 + esrecurse@4.3.0: dependencies: estraverse: 5.3.0 @@ -6733,7 +6839,7 @@ snapshots: form-data-encoder@1.7.2: {} - form-data@4.0.0: + form-data@4.0.1: dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 @@ -7021,6 +7127,8 @@ snapshots: ignore@5.3.1: {} + ignore@5.3.2: {} + import-fresh@3.3.0: dependencies: parent-module: 1.0.1 @@ -7244,6 +7352,9 @@ snapshots: jiti@1.21.3: {} + jiti@2.3.3: + optional: true + jju@1.4.0: {} js-cookie@3.0.1: {} @@ -7698,16 +7809,17 @@ snapshots: dependencies: mimic-fn: 4.0.0 - openai@4.48.1(encoding@0.1.13): + openai@4.68.4(encoding@0.1.13)(zod@3.23.8): dependencies: - '@types/node': 18.19.34 + '@types/node': 18.19.59 '@types/node-fetch': 2.6.11 abort-controller: 3.0.0 agentkeepalive: 4.5.0 form-data-encoder: 1.7.2 formdata-node: 4.4.1 node-fetch: 2.7.0(encoding@0.1.13) - web-streams-polyfill: 3.3.3 + optionalDependencies: + zod: 3.23.8 transitivePeerDependencies: - encoding @@ -7900,15 +8012,18 @@ snapshots: prelude-ls@1.2.1: {} - prettier-plugin-packagejson@2.5.0(prettier@3.3.1): + prettier-plugin-packagejson@2.5.0(prettier@3.3.3): dependencies: sort-package-json: 2.10.0 synckit: 0.9.0 optionalDependencies: - prettier: 3.3.1 + prettier: 3.3.3 prettier@3.3.1: {} + prettier@3.3.3: + optional: true + pretty-format@29.7.0: dependencies: '@jest/schemas': 29.6.3 @@ -8775,6 +8890,9 @@ snapshots: undici-types@5.26.5: {} + undici-types@6.19.8: + optional: true + universalify@2.0.1: {} unpipe@1.0.0: {} @@ -8865,6 +8983,15 @@ snapshots: '@types/node': 20.14.2 fsevents: 2.3.3 + vite@5.2.12(@types/node@22.8.1): + dependencies: + esbuild: 0.20.2 + postcss: 8.4.38 + rollup: 4.18.0 + optionalDependencies: + '@types/node': 22.8.1 + fsevents: 2.3.3 + vitest@1.6.0(@types/node@20.14.2): dependencies: '@vitest/expect': 1.6.0 @@ -8906,8 +9033,6 @@ snapshots: dependencies: defaults: 1.0.4 - web-streams-polyfill@3.3.3: {} - web-streams-polyfill@4.0.0-beta.3: {} webidl-conversions@3.0.1: {}