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 🙏

© 2024 – Pkg Stats / Ryan Hefner

querel

v2.1.0

Published

Utility for querying DOM elements.

Downloads

12

Readme

Querel

Utility for querying DOM elements.

Installation

With npm:

npm i querel

Usage

The Query class provides a chainable API for querying elements. It's reminiscent of jQuery:

import { Query } from 'querel'

var element = document.getElementById('foo')
var query = new Query(element)
var result = query
  .parent(2)        // grandparent of `element`
  .sibling()        // next sibling
  .children()       // all child elements
  .child(3)         // third child of all elements
  .select('.test')  // elements with class `test` in matched elements

console.log(result.elements) // Array of resulting elements

Interpreter

It might be more comfortable to use the query interpreter via parse():

import parse from 'querel'

var element = document.getElementById('foo')
var result = parse(element, '@parent(2).sibling.children.child(3).select(.test)')

This could be useful when the input value comes from somewhere else as it can handle all those cases:

parse(null)               // falsy value
parse(document.body)      // Element
parse('div#foo')          // CSS selector
parse('div#foo@sibling')  // CSS selector + query

If you have a defined starting element, you specify it as the first argument and the foreign input as second:

parse(element, null)                // element
parse(element, document.body)       // element
parse(element, 'div#foo')           // result of CSS selector on element
parse(element, '@sibling')          // sibling of element
parse(element, 'div#foo@sibling')   // sibling of div#foo

The return value of parse() is always an array containing the resulting elements. This allows you to get consistent results from various inputs. For example, if you're interested in a single element of the resulting query:

parse(null)[0]           // undefined
parse(document.body)[0]  // Element
parse('.many')[0]        // Element
parse('#foo@parent')[0]  // Element