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

@josephuspaye/everything

v0.1.0

Published

A native Node.js module for fast programmatic access to Everything search on Windows

Readme

everything

A native Node.js module for fast programmatic access to Everything search on Windows.

This project is part of #CreateWeekly, my attempt to create something new publicly every week in 2020.

Requirements

  • A 64-bit version of Windows
  • Node.js v10 or later
  • Everything 1.4 or later, installed and running when used

Installation

npm install @josephuspaye/everything --save

Usage

Run a basic search

const { search } = require('@josephuspaye/everything');

// Search for files with "report.pdf" in their name, with the defualt options
const response = search('report.pdf');

console.log(JSON.stringify(response, null, '  '));
{
  "totalResults": 2,
  "results": [
    {
      "type": "file",
      "name": "JosephusPayeII-Work_Integrated_Learning_Final_Report.pdf",
      "dir": "C:\\Users\\jpaye\\OneDrive\\Documents"
    },
    {
      "type": "file",
      "name": "Report.pdf",
      "dir": "C:\\Users\\jpaye\\OneDrive\\Documents\\UON\\SENG2130\\Assignment 2\\Compilation"
    }
  ]
}

Include additional metadata with results

const { search } = require('@josephuspaye/everything');

// Search for files with "report.pdf" in their name, including size and date modified
const response = search('report.pdf', {
  includeSize: true,
  includeDateModified: true,
});

console.log(JSON.stringify(response, null, '  '));
{
  "totalResults": 2,
  "results": [
    {
      "type": "file",
      "name": "JosephusPayeII-Work_Integrated_Learning_Final_Report.pdf",
      "dir": "C:\\Users\\jpaye\\OneDrive\\Documents",
      "size": 2367729,
      "dateModified": 1596784835000
    },
    {
      "type": "file",
      "name": "Report.pdf",
      "dir": "C:\\Users\\jpaye\\OneDrive\\Documents\\UON\\SENG2130\\Assignment 2\\Compilation",
      "size": 2247789,
      "dateModified": 1495810102000
    }
  ]
}

Use regular expression in query, sort, and limit results

const { search } = require('@josephuspaye/everything');

// Find the top 10 largest files using a regular expression,
// sorted in descending order of size
const response = search('.*', {
  enableRegex: true,
  includeSize: true,
  sortBy: 'size',
  sortAsc: false,
  limit: 10,
});

console.log(JSON.stringify(response, null, '  '));
{
  "totalResults": 10,
  "results": [
    {
      "type": "file",
      "name": "ext4.vhdx",
      "dir": "C:\\Users\\jpaye\\AppData\\Local\\Docker\\wsl\\data",
      "size": 30343692288
    },
    {
      "type": "file",
      "name": "hiberfil.sys",
      "dir": "C:",
      "size": 13712793600
    },
    {
      "type": "file",
      "name": "pagefile.sys",
      "dir": "C:",
      "size": 10472558592
    }
    // ...
  ]
}

API

interface SearchOptions {
  /**
   * Return results from the nth result, where offset is n
   * @default 0
   */
  offset?: number;

  /**
   * Maximum number of results to return
   * @default 100
   */
  limit?: number;

  /**
   * Match results case to query
   * @default false
   */
  matchCase?: boolean;

  /**
   * Match whole words only
   * @default false
   */
  matchWholeWord?: boolean;

  /**
   * Match directory paths in addition to file names
   * @default false
   */
  matchPath?: boolean;

  /**
   * Enable regular expression matching. Overrides default search syntax.
   * See https://www.voidtools.com/support/everything/searching/#regex.
   * @default false
   */
  enableRegex?: boolean;

  /**
   * Include the size of the result. Volume and folder results will have a size of -1.
   * @default false
   */
  includeSize?: boolean;

  /**
   * Include the created date of the result. This property is not indexed
   * by Everything by default and its inclusion could lead to slower search
   * performance.
   * @default false
   */
  includeDateCreated?: boolean;

  /**
   * Include the modified date of the result
   * @default false
   */
  includeDateModified?: boolean;

  /**
   * Include the accessed date of the result. This property is not indexed
   * by Everything by default and its inclusion could lead to slower search
   * performance.
   * @default false
   */
  includeDateAccessed?: boolean;

  /**
   * Include the Everything run count of the result
   * @default false
   */
  includeRunCount?: boolean;

  /**
   * Sort the results in ascending order
   * @default true
   */
  sortAsc?: boolean;

  /**
   * Sort the results by this property. Note that properties that are optional
   * (like `size` and `dateCreated`) should be included when searching before
   * sorting by them. For better performance, consider enabling indexing and
   * ("fast sort")[https://www.voidtools.com/support/everything/indexes/#fast_sorting]
   * in Everything's Options for the properties you want to sort by.
   * @default 'name'
   */
  sortBy?:
    | 'name'
    | 'dir'
    | 'size'
    | 'dateCreated'
    | 'dateModified'
    | 'dateAccessed'
    | 'runCount';
}

interface SearchResult {
  /**
   * The type of result
   */
  type: 'file' | 'folder' | 'volume';

  /**
   * The name of the result
   */
  name: string;

  /**
   * The full path to the result's parent directory
   */
  dir: string;

  /**
   * The size of the result, in bytes. Only present if search had `includeSize` option.
   */
  size?: number;

  /**
   * The created date of the result, in milliseconds since the Unix Epoch.
   * Only present if search had `includeDateCreated` option.
   */
  dateCreated?: number;

  /**
   * The modified date of the result, in milliseconds since the Unix Epoch.
   * Only present if search had `includeDateModified` option.
   */
  dateModified?: number;

  /**
   * The accessed date of the result, in milliseconds since the Unix Epoch.
   * Only present if search had `includeDateAccessed` option.
   */
  dateAccessed?: number;

  /**
   * The Everything run count of the result. Only present if search had `includeRunCount` option.
   */
  runCount?: number;
}

interface SearchResponse {
  /**
   * The total number of results in this response
   */
  totalResults: number;

  /**
   * The search results
   */
  results: SearchResult[];
}

/**
 * Run an Everything search with the given query and options.
 * See https://www.voidtools.com/support/everything/searching/ for query syntax.
 * @throws Throws for invalid options
 */
function search(query: string, options: SearchOptions = {}): SearchResponse;

What's Next

  • Add an async version of search()
  • Add a function to launch Everything with the query entered (using an es:// URL)
  • Add support for the Everything_GetRunCountFromFileName(), Everything_SetRunCountFromFileName() and Everything_IncRunCountFromFileName() functions

Licence

MIT