pipspuzzle-word-finder
v1.0.0
Published
A comprehensive word game answer finder for Wordle, Strands, Connections, and Pips puzzles
Maintainers
Readme
@pipspuzzle/word-finder
A comprehensive Node.js package for finding answers to popular word games including Wordle, Strands, Connections, Pips, and Crosswords.
🎯 Features
- Multi-game support: Wordle, Strands, Connections, Pips, and Crosswords
- TypeScript ready: Full type definitions included
- Easy to use: Simple, consistent API across all games
- Date-specific queries: Get answers for any specific date
- Search functionality: Find answers matching specific terms
- Real-time data: Connected to live puzzle databases
📦 Installation
npm install @pipspuzzle/word-finder🚀 Quick Start
import WordFinder from '@pipspuzzle/word-finder';
// Initialize the client with your configuration
const finder = new WordFinder({
supabaseUrl: 'your-supabase-url',
supabaseKey: 'your-supabase-key'
});
// Get today's Wordle answer
const wordleAnswer = await finder.getAnswers('wordle');
console.log(wordleAnswer.answers.word); // Today's Wordle word
// Get a specific date's Strands answer
const strandsAnswer = await finder.getAnswers('strands', {
date: '2024-01-15'
});
console.log(strandsAnswer.answers.spangram); // Spangram for that date
// Search for specific terms across all games
const searchResults = await finder.searchAll('puzzle');🎮 Supported Games
Wordle
Get the daily 5-letter word and helpful hints:
const wordle = await finder.getAnswers('wordle');
console.log(wordle.answers);
// Output:
// {
// word: "BRAVE",
// length: 5,
// hints: {
// vowels: 2,
// consonants: 3,
// uniqueLetters: 5,
// firstLetter: "B",
// lastLetter: "E"
// }
// }Strands
Find themed words and the connecting spangram:
const strands = await finder.getAnswers('strands');
console.log(strands.answers);
// Output:
// {
// spangram: "WORDGAME",
// themeWords: ["PUZZLE", "CLUE", "SOLVE"],
// clue: "Things you do with letters",
// grid: [["W", "O", "R", "D"], ...],
// coordinates: { ... }
// }Connections
Get the four themed groups:
const connections = await finder.getAnswers('connections');
console.log(connections.answers.categories);
// Output:
// [
// {
// title: "FRUITS",
// words: ["APPLE", "BANANA", "ORANGE", "GRAPE"],
// difficulty: "Yellow"
// },
// // ... 3 more categories
// ]Pips
Access domino placement puzzle solutions:
const pips = await finder.getAnswers('pips', { difficulty: 'medium' });
console.log(pips.answers);
// Output:
// {
// medium: {
// solution: [[1, 2], [3, 4], ...],
// dominoes: [[0, 1], [1, 2], ...],
// regions: [...],
// boardSize: { rows: 6, cols: 6 }
// }
// }Crosswords
Get clues and answers for crossword puzzles:
const crossword = await finder.getAnswers('crosswords');
console.log(crossword.answers.across.slice(0, 3));
// Output:
// [
// { number: 1, clue: "Morning beverage", answer: "COFFEE", length: 6 },
// { number: 7, clue: "Feline pet", answer: "CAT", length: 3 },
// // ...
// ]📅 Date-Specific Queries
Get answers for any specific date:
// Get Wordle answer for a specific date
const pastWordle = await finder.getAnswers('wordle', {
date: '2024-01-01'
});
// Get all games for a specific date
const games = ['wordle', 'strands', 'connections', 'pips'];
const allAnswers = {};
for (const game of games) {
allAnswers[game] = await finder.getAnswers(game, {
date: '2024-01-15'
});
}🔍 Search Functionality
Search for specific terms across games:
// Search for a specific word
const results = await finder.searchAll('BRAIN');
// Search within a specific game
const strandsWithQuery = await finder.getAnswers('strands', {
query: 'MUSIC'
});
// Get matching words for Strands
console.log(strandsWithQuery.answers.matchingWords);📊 Available Dates
Check what dates have available data:
// Get all available Wordle dates
const wordleDates = await finder.getAvailableDates('wordle');
console.log(wordleDates.slice(0, 5)); // Latest 5 dates
// Check all games
const allDates = {};
const games = ['wordle', 'strands', 'connections', 'pips', 'crosswords'];
for (const game of games) {
allDates[game] = await finder.getAvailableDates(game);
}⚙️ Configuration
This package requires Supabase database credentials to function. You must provide both supabaseUrl and supabaseKey when initializing:
import WordFinder from '@pipspuzzle/word-finder';
const finder = new WordFinder({
supabaseUrl: 'https://your-project.supabase.co',
supabaseKey: 'your-anon-public-key'
});Note: This is a private package that requires access to the PipsPuzzle database. Contact [email protected] for access credentials.
🔧 API Reference
WordFinder
Constructor
new WordFinder(config: WordFinderConfig)Required Configuration:
supabaseUrl: Your Supabase project URLsupabaseKey: Your Supabase anon/public key
Methods
getAnswers(game, options?)
Get answers for a specific game.
getAnswers(
game: 'wordle' | 'strands' | 'connections' | 'pips' | 'crosswords',
options?: {
date?: string; // YYYY-MM-DD format
difficulty?: string; // For Pips: 'easy', 'medium', 'hard', 'all'
query?: string; // Search term
}
): Promise<GameAnswer>searchAll(query)
Search across all games for a specific term.
searchAll(query: string): Promise<{ [game: string]: GameAnswer }>getAvailableDates(game)
Get available dates for a specific game.
getAvailableDates(
game: 'wordle' | 'strands' | 'connections' | 'pips' | 'crosswords'
): Promise<string[]>📝 TypeScript Support
Full TypeScript definitions are included:
import WordFinder, {
WordleAnswer,
StrandsAnswer,
ConnectionsAnswer,
PipsAnswer,
CrosswordAnswer,
GameAnswer
} from '@pipspuzzle/word-finder';
const finder = new WordFinder();
// Type-safe responses
const wordle: GameAnswer<WordleAnswer> = await finder.getAnswers('wordle');
const strands: GameAnswer<StrandsAnswer> = await finder.getAnswers('strands');🚨 Error Handling
The package includes comprehensive error handling:
try {
const answer = await finder.getAnswers('wordle', { date: '2020-01-01' });
if (answer.error) {
console.error('Error:', answer.error);
} else {
console.log('Success:', answer.answers);
}
} catch (error) {
console.error('Network or parsing error:', error);
}📖 Examples
Daily Puzzle Dashboard
import WordFinder from '@pipspuzzle/word-finder';
async function getDailyPuzzles() {
const finder = new WordFinder();
const games = ['wordle', 'strands', 'connections', 'pips'];
const today = new Date().toISOString().split('T')[0];
const puzzles = {};
for (const game of games) {
try {
puzzles[game] = await finder.getAnswers(game, { date: today });
} catch (error) {
console.error(`Failed to get ${game}:`, error);
}
}
return puzzles;
}
getDailyPuzzles().then(puzzles => {
console.log("Today's Puzzles:", puzzles);
});Word Search Tool
async function findWordInGames(searchTerm) {
const finder = new WordFinder();
const results = await finder.searchAll(searchTerm);
Object.entries(results).forEach(([game, data]) => {
console.log(`\n${game.toUpperCase()}:`);
if (game === 'strands' && data.answers.matchingWords) {
console.log('Matching words:', data.answers.matchingWords);
} else if (game === 'connections' && data.answers.matchingCategories) {
data.answers.matchingCategories.forEach(cat => {
console.log(`Category: ${cat.title} - Words: ${cat.words.join(', ')}`);
});
}
});
}
findWordInGames('MUSIC');🐛 Issues and Support
- GitHub Issues: Report bugs or request features
- Website: https://pipspuzzle.com
📄 License
MIT License - see LICENSE file for details.
🤝 Contributing
Contributions are welcome! Please read our contributing guidelines and submit pull requests to our GitHub repository.
Made with ❤️ by PipsPuzzle.com
