npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

pipspuzzle-word-finder

v1.0.0

Published

A comprehensive word game answer finder for Wordle, Strands, Connections, and Pips puzzles

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 URL
  • supabaseKey: 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

📄 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