From 3cfc14194425e7475a2c1f432b63e1f8099f8bd0 Mon Sep 17 00:00:00 2001 From: Ajax Davis Date: Fri, 5 Dec 2025 00:10:18 +1000 Subject: [PATCH] chore: release emoji-magic v0.2.0 and create-basic-tools v1.0.4 --- .../tools/create-basic-tools/package.json | 2 +- .../src/generators/package-json.ts | 2 +- packages/tools/emoji-magic/CHANGELOG.md | 7 + packages/tools/emoji-magic/README.md | 41 +++ packages/tools/emoji-magic/package.json | 35 ++ packages/tools/emoji-magic/src/index.ts | 7 + .../tools/emoji-magic/src/tools/emojiMood.ts | 105 ++++++ .../emoji-magic/src/tools/textToEmoji.ts | 92 +++++ packages/tools/emoji-magic/tsconfig.json | 9 + pnpm-lock.yaml | 327 +++++++++++++++++- 10 files changed, 616 insertions(+), 11 deletions(-) create mode 100644 packages/tools/emoji-magic/CHANGELOG.md create mode 100644 packages/tools/emoji-magic/README.md create mode 100644 packages/tools/emoji-magic/package.json create mode 100644 packages/tools/emoji-magic/src/index.ts create mode 100644 packages/tools/emoji-magic/src/tools/emojiMood.ts create mode 100644 packages/tools/emoji-magic/src/tools/textToEmoji.ts create mode 100644 packages/tools/emoji-magic/tsconfig.json diff --git a/packages/tools/create-basic-tools/package.json b/packages/tools/create-basic-tools/package.json index cd6f237..c85b3aa 100644 --- a/packages/tools/create-basic-tools/package.json +++ b/packages/tools/create-basic-tools/package.json @@ -1,6 +1,6 @@ { "name": "@tpmjs/create-basic-tools", - "version": "1.0.3", + "version": "1.0.4", "description": "CLI generator for scaffolding production-ready TPMJS tool packages", "type": "module", "bin": { diff --git a/packages/tools/create-basic-tools/src/generators/package-json.ts b/packages/tools/create-basic-tools/src/generators/package-json.ts index 0ddbde7..3bea8bf 100644 --- a/packages/tools/create-basic-tools/src/generators/package-json.ts +++ b/packages/tools/create-basic-tools/src/generators/package-json.ts @@ -38,7 +38,7 @@ export function generatePackageJson(config: GeneratorConfig): string { }), }, dependencies: { - ai: '^6.0.0', + ai: '6.0.0-beta.131', zod: '^4.1.13', }, devDependencies: { diff --git a/packages/tools/emoji-magic/CHANGELOG.md b/packages/tools/emoji-magic/CHANGELOG.md new file mode 100644 index 0000000..9bdf7b8 --- /dev/null +++ b/packages/tools/emoji-magic/CHANGELOG.md @@ -0,0 +1,7 @@ +# @tpmjs/emoji-magic + +## 0.2.0 + +### Minor Changes + +- Add emoji-magic package with text-to-emoji conversion and mood detection tools diff --git a/packages/tools/emoji-magic/README.md b/packages/tools/emoji-magic/README.md new file mode 100644 index 0000000..379c601 --- /dev/null +++ b/packages/tools/emoji-magic/README.md @@ -0,0 +1,41 @@ +# @tpmjs/emoji-magic + +AI SDK tools for emoji conversion and mood detection. Make your text more expressive! ✨ + +## Tools + +### textToEmoji +Convert text into emoji representations - perfect for making messages more expressive! + +```typescript +import { textToEmoji } from '@tpmjs/emoji-magic'; + +const result = await textToEmoji.execute({ + text: "I love my cat and dog", + style: 'creative' +}); +// Result: "I ❤️ my 🐱 and 🐶" +``` + +### emojiMood +Detect the mood/sentiment and suggest appropriate emojis for the text. + +```typescript +import { emojiMood } from '@tpmjs/emoji-magic'; + +const result = await emojiMood.execute({ + text: "This is amazing! I'm so excited!", + count: 3 +}); +// Returns: { mood: 'excited', suggestions: ['🎉', '🎊', '🥳'] } +``` + +## Installation + +```bash +npm install @tpmjs/emoji-magic +``` + +## License + +MIT diff --git a/packages/tools/emoji-magic/package.json b/packages/tools/emoji-magic/package.json new file mode 100644 index 0000000..126eab3 --- /dev/null +++ b/packages/tools/emoji-magic/package.json @@ -0,0 +1,35 @@ +{ + "name": "@tpmjs/emoji-magic", + "version": "0.2.0", + "description": "AI SDK tools for emoji-magic - convert text to emojis and back!", + "type": "module", + "main": "dist/index.js", + "types": "dist/index.d.ts", + "scripts": { + "build": "tsc", + "type-check": "tsc --noEmit" + }, + "keywords": ["tpmjs-tool", "emoji", "ai", "text-processing"], + "tpmjs": { + "category": "text-analysis", + "frameworks": ["vercel-ai"], + "tools": [ + { + "exportName": "textToEmoji", + "description": "Convert text into emoji representations - perfect for making messages more expressive!" + }, + { + "exportName": "emojiMood", + "description": "Detect the mood/sentiment and suggest appropriate emojis for the text" + } + ] + }, + "dependencies": { + "ai": "6.0.0-beta.131", + "zod": "^4.1.13" + }, + "devDependencies": { + "@tpmjs/tsconfig": "workspace:*", + "typescript": "^5.9.3" + } +} diff --git a/packages/tools/emoji-magic/src/index.ts b/packages/tools/emoji-magic/src/index.ts new file mode 100644 index 0000000..550ef6e --- /dev/null +++ b/packages/tools/emoji-magic/src/index.ts @@ -0,0 +1,7 @@ +/** + * TPMJS Emoji Magic Tool Package + * AI SDK tools for emoji conversion and mood detection + */ + +export { textToEmoji } from './tools/textToEmoji.js'; +export { emojiMood } from './tools/emojiMood.js'; diff --git a/packages/tools/emoji-magic/src/tools/emojiMood.ts b/packages/tools/emoji-magic/src/tools/emojiMood.ts new file mode 100644 index 0000000..acec19c --- /dev/null +++ b/packages/tools/emoji-magic/src/tools/emojiMood.ts @@ -0,0 +1,105 @@ +import { tool } from 'ai'; +import { z } from 'zod'; + +const EmojiMoodSchema = z.object({ + text: z + .string() + .min(1, 'Text cannot be empty') + .describe('The text to analyze for mood/sentiment'), + count: z.number().int().positive().default(3).describe('Number of emoji suggestions to return'), +}); + +export const emojiMood = tool({ + description: 'Detect the mood/sentiment and suggest appropriate emojis for the text', + inputSchema: EmojiMoodSchema, + async execute(input: z.infer) { + const { text, count } = input; + + // Simple sentiment analysis based on keywords + const positiveWords = [ + 'happy', + 'joy', + 'great', + 'awesome', + 'excellent', + 'love', + 'wonderful', + 'amazing', + 'fantastic', + 'good', + 'nice', + 'best', + 'yay', + 'win', + 'success', + ]; + const negativeWords = [ + 'sad', + 'bad', + 'awful', + 'terrible', + 'hate', + 'worst', + 'angry', + 'mad', + 'upset', + 'disappointed', + 'fail', + 'lose', + 'pain', + ]; + const excitedWords = [ + 'excited', + 'wow', + 'omg', + 'amazing', + 'incredible', + 'party', + 'celebrate', + 'yay', + ]; + const calmWords = ['calm', 'peace', 'relax', 'chill', 'zen', 'meditate', 'sleep', 'rest']; + + const lowerText = text.toLowerCase(); + + let mood = 'neutral'; + let emojis: string[] = []; + + // Check for positive sentiment + if (positiveWords.some((word) => lowerText.includes(word))) { + mood = 'positive'; + emojis = ['😊', '😄', '🎉', '❤️', '👍', '🌟', '✨', '😁', '🥳', '💖']; + } + // Check for negative sentiment + else if (negativeWords.some((word) => lowerText.includes(word))) { + mood = 'negative'; + emojis = ['😢', '😞', '😔', '💔', '😭', '😟', '🙁', '😕', '😣', '😖']; + } + // Check for excited sentiment + else if (excitedWords.some((word) => lowerText.includes(word))) { + mood = 'excited'; + emojis = ['🎉', '🎊', '🥳', '😆', '🤩', '⚡', '🔥', '💥', '🌟', '✨']; + } + // Check for calm sentiment + else if (calmWords.some((word) => lowerText.includes(word))) { + mood = 'calm'; + emojis = ['😌', '😊', '🧘', '🌙', '☁️', '💙', '🕊️', '🌸', '🍃', '💤']; + } + // Default neutral + else { + mood = 'neutral'; + emojis = ['🙂', '😐', '😶', '🤔', '💭', '📝', '💬', '👌', '✌️', '🤷']; + } + + // Return requested number of suggestions + const suggestions = emojis.slice(0, count); + + return { + success: true, + mood, + suggestions, + text_length: text.length, + analysis: `Detected ${mood} mood with ${suggestions.length} emoji suggestions`, + }; + }, +}); diff --git a/packages/tools/emoji-magic/src/tools/textToEmoji.ts b/packages/tools/emoji-magic/src/tools/textToEmoji.ts new file mode 100644 index 0000000..3cd5c66 --- /dev/null +++ b/packages/tools/emoji-magic/src/tools/textToEmoji.ts @@ -0,0 +1,92 @@ +import { tool } from 'ai'; +import { z } from 'zod'; + +const TextToEmojiSchema = z.object({ + text: z.string().min(1, 'Text cannot be empty').describe('The text to convert to emoji'), + style: z + .enum(['literal', 'creative', 'random']) + .default('creative') + .describe( + 'How to convert: literal (direct replacements), creative (interpretive), random (surprise me!)' + ), +}); + +export const textToEmoji = tool({ + description: + 'Convert text into emoji representations - perfect for making messages more expressive!', + inputSchema: TextToEmojiSchema, + async execute(input: z.infer) { + const { text, style } = input; + + // Simple word-to-emoji mappings + const emojiMap: Record = { + // Emotions + happy: '😊', + sad: '😢', + angry: '😠', + love: '❤️', + heart: '💖', + excited: '🎉', + crying: '😭', + laughing: '😂', + cool: '😎', + // Animals + cat: '🐱', + dog: '🐶', + bird: '🐦', + fish: '🐠', + monkey: '🐵', + lion: '🦁', + tiger: '🐯', + bear: '🐻', + panda: '🐼', + // Objects + car: '🚗', + house: '🏠', + tree: '🌳', + flower: '🌸', + sun: '☀️', + moon: '🌙', + star: '⭐', + fire: '🔥', + water: '💧', + food: '🍔', + // Actions + run: '🏃', + dance: '💃', + sleep: '😴', + think: '🤔', + write: '✍️', + read: '📖', + music: '🎵', + party: '🎊', + work: '💼', + }; + + const words = text.toLowerCase().split(/\s+/); + const converted = words + .map((word) => { + // Remove punctuation for matching + const cleanWord = word.replace(/[^\w]/g, ''); + + if (style === 'random') { + // 50% chance to replace with random emoji + if (Math.random() > 0.5) { + const emojis = Object.values(emojiMap); + return emojis[Math.floor(Math.random() * emojis.length)]; + } + } + + return emojiMap[cleanWord] || word; + }) + .join(' '); + + return { + success: true, + original: text, + converted, + style, + emoji_count: (converted.match(/[\u{1F300}-\u{1F9FF}]/gu) || []).length, + }; + }, +}); diff --git a/packages/tools/emoji-magic/tsconfig.json b/packages/tools/emoji-magic/tsconfig.json new file mode 100644 index 0000000..66f44b0 --- /dev/null +++ b/packages/tools/emoji-magic/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "@tpmjs/tsconfig/base.json", + "compilerOptions": { + "outDir": "dist", + "rootDir": "src" + }, + "include": ["src/**/*"], + "exclude": ["node_modules", "dist"] +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fe8c06e..a15b0a8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -131,10 +131,10 @@ importers: version: 10.4.22(postcss@8.5.6) eslint: specifier: ^9.39.1 - version: 9.39.1(jiti@2.6.1) + version: 9.39.1(jiti@1.21.7) eslint-config-next: specifier: ^16.0.4 - version: 16.0.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + version: 16.0.4(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) postcss: specifier: ^8.5.1 version: 8.5.6 @@ -552,6 +552,22 @@ importers: specifier: ^5.9.3 version: 5.9.3 + packages/tools/emoji-magic: + dependencies: + ai: + specifier: 6.0.0-beta.131 + version: 6.0.0-beta.131(effect@3.18.4)(zod@4.1.13) + zod: + specifier: ^4.1.13 + version: 4.1.13 + devDependencies: + '@tpmjs/tsconfig': + specifier: workspace:* + version: link:../../config/tsconfig + typescript: + specifier: ^5.9.3 + version: 5.9.3 + packages/tools/hello: dependencies: ai: @@ -709,6 +725,12 @@ packages: peerDependencies: zod: ^3.25.76 || ^4.1.8 + '@ai-sdk/gateway@2.0.0-beta.71': + resolution: {integrity: sha512-Mn5WShiC0BUVOtO6C65FKdeQxfrIaM0QeZjYcQej6+4hRgSKWlySVDWr88ZZjXGpviB7q0zINTuc6YWV6TqfvQ==} + engines: {node: '>=18'} + peerDependencies: + zod: ^3.25.76 || ^4.1.8 + '@ai-sdk/gateway@2.0.18': resolution: {integrity: sha512-sDQcW+6ck2m0pTIHW6BPHD7S125WD3qNkx/B8sEzJp/hurocmJ5Cni0ybExg6sQMGo+fr/GWOwpHF1cmCdg5rQ==} engines: {node: '>=18'} @@ -759,6 +781,22 @@ packages: effect: optional: true + '@ai-sdk/provider-utils@4.0.0-beta.42': + resolution: {integrity: sha512-VY+aQzlbLT4R+n3AgsRrpaeHQRhBAxBPkfXnS8PdIFKY85/W1d4emA/40j++2N0yBDBeEW4I7xAPv1t43YkjbQ==} + engines: {node: '>=18'} + peerDependencies: + '@valibot/to-json-schema': ^1.3.0 + arktype: ^2.1.22 + effect: ^3.18.4 + zod: ^3.25.76 || ^4.1.8 + peerDependenciesMeta: + '@valibot/to-json-schema': + optional: true + arktype: + optional: true + effect: + optional: true + '@ai-sdk/provider@2.0.0': resolution: {integrity: sha512-6o7Y2SeO9vFKB8lArHXehNuusnpddKPk7xqL7T2/b+OvXMRIXUO1rR4wcv1hAFUAT9avGZshty3Wlua/XA7TvA==} engines: {node: '>=18'} @@ -2769,6 +2807,12 @@ packages: peerDependencies: zod: ^3.25.76 || ^4.1.8 + ai@6.0.0-beta.131: + resolution: {integrity: sha512-hoe+I4pPWjyP1CQHtftC5p7z/EEAx8nGTzzxG0Ka+cAKQW+3lQZsO3dBZ9kB2McYrLd2xntJl7V1tgqqnkfvYw==} + engines: {node: '>=18'} + peerDependencies: + zod: ^3.25.76 || ^4.1.8 + ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} @@ -6313,6 +6357,17 @@ snapshots: - arktype - effect + '@ai-sdk/gateway@2.0.0-beta.71(effect@3.18.4)(zod@4.1.13)': + dependencies: + '@ai-sdk/provider': 3.0.0-beta.23 + '@ai-sdk/provider-utils': 4.0.0-beta.42(effect@3.18.4)(zod@4.1.13) + '@vercel/oidc': 3.0.5 + zod: 4.1.13 + transitivePeerDependencies: + - '@valibot/to-json-schema' + - arktype + - effect + '@ai-sdk/gateway@2.0.18(zod@3.25.76)': dependencies: '@ai-sdk/provider': 2.0.0 @@ -6364,6 +6419,15 @@ snapshots: optionalDependencies: effect: 3.18.4 + '@ai-sdk/provider-utils@4.0.0-beta.42(effect@3.18.4)(zod@4.1.13)': + dependencies: + '@ai-sdk/provider': 3.0.0-beta.23 + '@standard-schema/spec': 1.0.0 + eventsource-parser: 3.0.6 + zod: 4.1.13 + optionalDependencies: + effect: 3.18.4 + '@ai-sdk/provider@2.0.0': dependencies: json-schema: 0.4.0 @@ -6948,6 +7012,11 @@ snapshots: '@esbuild/win32-x64@0.27.0': optional: true + '@eslint-community/eslint-utils@4.9.0(eslint@9.39.1(jiti@1.21.7))': + dependencies: + eslint: 9.39.1(jiti@1.21.7) + eslint-visitor-keys: 3.4.3 + '@eslint-community/eslint-utils@4.9.0(eslint@9.39.1(jiti@2.6.1))': dependencies: eslint: 9.39.1(jiti@2.6.1) @@ -8003,6 +8072,23 @@ snapshots: '@types/validate-npm-package-name@4.0.2': {} + '@typescript-eslint/eslint-plugin@8.48.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3))(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3)': + dependencies: + '@eslint-community/regexpp': 4.12.2 + '@typescript-eslint/parser': 8.48.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.48.0 + '@typescript-eslint/type-utils': 8.48.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + '@typescript-eslint/utils': 8.48.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.48.0 + eslint: 9.39.1(jiti@1.21.7) + graphemer: 1.4.0 + ignore: 7.0.5 + natural-compare: 1.4.0 + ts-api-utils: 2.1.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/eslint-plugin@8.48.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 @@ -8020,6 +8106,18 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3)': + dependencies: + '@typescript-eslint/scope-manager': 8.48.0 + '@typescript-eslint/types': 8.48.0 + '@typescript-eslint/typescript-estree': 8.48.0(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.48.0 + debug: 4.4.3 + eslint: 9.39.1(jiti@1.21.7) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@typescript-eslint/scope-manager': 8.48.0 @@ -8050,6 +8148,18 @@ snapshots: dependencies: typescript: 5.9.3 + '@typescript-eslint/type-utils@8.48.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3)': + dependencies: + '@typescript-eslint/types': 8.48.0 + '@typescript-eslint/typescript-estree': 8.48.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.48.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + debug: 4.4.3 + eslint: 9.39.1(jiti@1.21.7) + ts-api-utils: 2.1.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/type-utils@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@typescript-eslint/types': 8.48.0 @@ -8079,6 +8189,17 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/utils@8.48.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3)': + dependencies: + '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@1.21.7)) + '@typescript-eslint/scope-manager': 8.48.0 + '@typescript-eslint/types': 8.48.0 + '@typescript-eslint/typescript-estree': 8.48.0(typescript@5.9.3) + eslint: 9.39.1(jiti@1.21.7) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/utils@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@2.6.1)) @@ -8286,6 +8407,18 @@ snapshots: - arktype - effect + ai@6.0.0-beta.131(effect@3.18.4)(zod@4.1.13): + dependencies: + '@ai-sdk/gateway': 2.0.0-beta.71(effect@3.18.4)(zod@4.1.13) + '@ai-sdk/provider': 3.0.0-beta.23 + '@ai-sdk/provider-utils': 4.0.0-beta.42(effect@3.18.4)(zod@4.1.13) + '@opentelemetry/api': 1.9.0 + zod: 4.1.13 + transitivePeerDependencies: + - '@valibot/to-json-schema' + - arktype + - effect + ajv@6.12.6: dependencies: fast-deep-equal: 3.1.3 @@ -9257,12 +9390,32 @@ snapshots: escape-string-regexp@5.0.0: {} + eslint-config-next@16.0.4(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3): + dependencies: + '@next/eslint-plugin-next': 16.0.4 + eslint: 9.39.1(jiti@1.21.7) + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.1(jiti@1.21.7)) + eslint-plugin-import: 2.32.0(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1(jiti@1.21.7)) + eslint-plugin-jsx-a11y: 6.10.2(eslint@9.39.1(jiti@1.21.7)) + eslint-plugin-react: 7.37.5(eslint@9.39.1(jiti@1.21.7)) + eslint-plugin-react-hooks: 7.0.1(eslint@9.39.1(jiti@1.21.7)) + globals: 16.4.0 + typescript-eslint: 8.48.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - '@typescript-eslint/parser' + - eslint-import-resolver-webpack + - eslint-plugin-import-x + - supports-color + eslint-config-next@16.0.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3): dependencies: '@next/eslint-plugin-next': 16.0.4 eslint: 9.39.1(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.1(jiti@2.6.1)) eslint-plugin-import: 2.32.0(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1(jiti@2.6.1)) eslint-plugin-jsx-a11y: 6.10.2(eslint@9.39.1(jiti@2.6.1)) eslint-plugin-react: 7.37.5(eslint@9.39.1(jiti@2.6.1)) @@ -9285,7 +9438,22 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)): + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.1(jiti@1.21.7)): + dependencies: + '@nolyfill/is-core-module': 1.0.39 + debug: 4.4.3 + eslint: 9.39.1(jiti@1.21.7) + get-tsconfig: 4.13.0 + is-bun-module: 2.0.0 + stable-hash: 0.0.5 + tinyglobby: 0.2.15 + unrs-resolver: 1.11.1 + optionalDependencies: + eslint-plugin-import: 2.32.0(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1(jiti@1.21.7)) + transitivePeerDependencies: + - supports-color + + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.1(jiti@2.6.1)): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.3 @@ -9310,13 +9478,23 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)): + eslint-module-utils@2.12.1(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1(jiti@1.21.7)): + dependencies: + debug: 3.2.7 + optionalDependencies: + eslint: 9.39.1(jiti@1.21.7) + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.1(jiti@1.21.7)) + transitivePeerDependencies: + - supports-color + + eslint-module-utils@2.12.1(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1(jiti@2.6.1)): dependencies: debug: 3.2.7 optionalDependencies: eslint: 9.39.1(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.1(jiti@2.6.1)) transitivePeerDependencies: - supports-color @@ -9349,7 +9527,7 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-plugin-import@2.32.0(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1(jiti@2.6.1)): + eslint-plugin-import@2.32.0(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1(jiti@1.21.7)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -9358,9 +9536,9 @@ snapshots: array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 - eslint: 9.39.1(jiti@2.6.1) + eslint: 9.39.1(jiti@1.21.7) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)) + eslint-module-utils: 2.12.1(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1(jiti@1.21.7)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -9376,6 +9554,52 @@ snapshots: - eslint-import-resolver-webpack - supports-color + eslint-plugin-import@2.32.0(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1(jiti@2.6.1)): + dependencies: + '@rtsao/scc': 1.1.0 + array-includes: 3.1.9 + array.prototype.findlastindex: 1.2.6 + array.prototype.flat: 1.3.3 + array.prototype.flatmap: 1.3.3 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 9.39.1(jiti@2.6.1) + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.12.1(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1(jiti@2.6.1)) + hasown: 2.0.2 + is-core-module: 2.16.1 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.8 + object.groupby: 1.0.3 + object.values: 1.2.1 + semver: 6.3.1 + string.prototype.trimend: 1.0.9 + tsconfig-paths: 3.15.0 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + + eslint-plugin-jsx-a11y@6.10.2(eslint@9.39.1(jiti@1.21.7)): + dependencies: + aria-query: 5.3.2 + array-includes: 3.1.9 + array.prototype.flatmap: 1.3.3 + ast-types-flow: 0.0.8 + axe-core: 4.11.0 + axobject-query: 4.1.0 + damerau-levenshtein: 1.0.8 + emoji-regex: 9.2.2 + eslint: 9.39.1(jiti@1.21.7) + hasown: 2.0.2 + jsx-ast-utils: 3.3.5 + language-tags: 1.0.9 + minimatch: 3.1.2 + object.fromentries: 2.0.8 + safe-regex-test: 1.1.0 + string.prototype.includes: 2.0.1 + eslint-plugin-jsx-a11y@6.10.2(eslint@9.39.1(jiti@2.6.1)): dependencies: aria-query: 5.3.2 @@ -9399,6 +9623,17 @@ snapshots: dependencies: eslint: 9.39.1(jiti@2.6.1) + eslint-plugin-react-hooks@7.0.1(eslint@9.39.1(jiti@1.21.7)): + dependencies: + '@babel/core': 7.28.5 + '@babel/parser': 7.28.5 + eslint: 9.39.1(jiti@1.21.7) + hermes-parser: 0.25.1 + zod: 4.1.13 + zod-validation-error: 4.0.2(zod@4.1.13) + transitivePeerDependencies: + - supports-color + eslint-plugin-react-hooks@7.0.1(eslint@9.39.1(jiti@2.6.1)): dependencies: '@babel/core': 7.28.5 @@ -9410,6 +9645,28 @@ snapshots: transitivePeerDependencies: - supports-color + eslint-plugin-react@7.37.5(eslint@9.39.1(jiti@1.21.7)): + dependencies: + array-includes: 3.1.9 + array.prototype.findlast: 1.2.5 + array.prototype.flatmap: 1.3.3 + array.prototype.tosorted: 1.1.4 + doctrine: 2.1.0 + es-iterator-helpers: 1.2.1 + eslint: 9.39.1(jiti@1.21.7) + estraverse: 5.3.0 + hasown: 2.0.2 + jsx-ast-utils: 3.3.5 + minimatch: 3.1.2 + object.entries: 1.1.9 + object.fromentries: 2.0.8 + object.values: 1.2.1 + prop-types: 15.8.1 + resolve: 2.0.0-next.5 + semver: 6.3.1 + string.prototype.matchall: 4.0.12 + string.prototype.repeat: 1.0.0 + eslint-plugin-react@7.37.5(eslint@9.39.1(jiti@2.6.1)): dependencies: array-includes: 3.1.9 @@ -9441,6 +9698,47 @@ snapshots: eslint-visitor-keys@4.2.1: {} + eslint@9.39.1(jiti@1.21.7): + dependencies: + '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@1.21.7)) + '@eslint-community/regexpp': 4.12.2 + '@eslint/config-array': 0.21.1 + '@eslint/config-helpers': 0.4.2 + '@eslint/core': 0.17.0 + '@eslint/eslintrc': 3.3.1 + '@eslint/js': 9.39.1 + '@eslint/plugin-kit': 0.4.1 + '@humanfs/node': 0.16.7 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.4.3 + '@types/estree': 1.0.8 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.3 + escape-string-regexp: 4.0.0 + eslint-scope: 8.4.0 + eslint-visitor-keys: 4.2.1 + espree: 10.4.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.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + json-stable-stringify-without-jsonify: 1.0.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + optionalDependencies: + jiti: 1.21.7 + transitivePeerDependencies: + - supports-color + eslint@9.39.1(jiti@2.6.1): dependencies: '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@2.6.1)) @@ -12294,6 +12592,17 @@ snapshots: possible-typed-array-names: 1.1.0 reflect.getprototypeof: 1.0.10 + typescript-eslint@8.48.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3): + dependencies: + '@typescript-eslint/eslint-plugin': 8.48.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3))(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + '@typescript-eslint/parser': 8.48.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.48.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.48.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + eslint: 9.39.1(jiti@1.21.7) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + typescript-eslint@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3): dependencies: '@typescript-eslint/eslint-plugin': 8.48.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)