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

@ecoacoustics/web-components

v7.1.0

Published

Ecoacoustic web components

Readme

Ecoacoustics Web Components

Component Deployments

How to Use

CDN

You can import all the web components through the CDN

Script tag snippet:

<script type="module" src="https://cdn.jsdelivr.net/npm/@ecoacoustics/web-components/dist/components.js"></script>

Full page example:

<!doctype html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Web Component CDN Example</title>
    <script type="module" src="https://cdn.jsdelivr.net/npm/@ecoacoustics/web-components/dist/components.js"></script>
  </head>

  <body>
    <oe-axes>
      <oe-indicator>
        <oe-spectrogram
          id="playing-spectrogram"
          class="large"
          src="/example.flac"
          window-size="1024"
          scaling="stretch"
        ></oe-spectrogram>
      </oe-indicator>
    </oe-axes>
    <oe-media-controls for="playing-spectrogram"></oe-media-controls>
  </body>
</html>

NPM

You can add the example components used in this repository by using the following command

$ npm i @ecoacoustics/web-components
>

You can then import them into a file using

import * from "@ecoacoustics/web-components";

Contributing

  • Install a recent stable version of Node JS
  • Install pnpm: corepack enable pnpm, followed by corepack use pnpm@latest
  • The install dependencies: pnpm install (this should have happened with the last step)

Then you can run the following commands:

  • pnpm dev to start a development server
  • pnpm build to build the components
  • pnpm test to run the tests

Test performance and retries

Verification-grid tests are grouped by behavior in src/tests/verification-grid/. Keep their suite titles stable: screenshot names are derived from those titles. Files run independently across workers and CI shards; tests within a file remain sequential.

Fixture readiness waits for element visibility, Lit updates, sourced spectrograms' render workers to finish, and their <audio> elements to stop downloading, rather than network idleness. Waiting for the media download prevents Firefox from logging a CORS console error when a test replaces or closes the page mid-download. Render readiness is checked every 500 ms with an eight-second timeout. Screenshot assertions can also retry for up to eight seconds instead of sleeping unconditionally.

Tests do not retry inline. In CI, each shard finishes its first pass before rerunning only its failed tests once with --last-failed --workers=1 --retries=0 --trace=on. Infrastructure/global errors are not retried. Locally, the same command can rerun failures from the last invocation (add the same --project used for that invocation). The Firefox page/context teardown workaround runs only when a test requests a page.

CI retains separate merged-test-report (first pass) and merged-retry-report (if needed) artifacts. A recovered failure remains a failure in the first-pass report and a pass in the retry report, rather than being labeled as a native Playwright flaky result. The shard succeeds only if its first pass or its retry passes. Retry traces are retained in the retry report. Browser installation and caching share an explicit PLAYWRIGHT_BROWSERS_PATH on every runner OS.

GitHub Releases

You can manually import the example components in this repository using the GitHub releases page

Download the component.js file to use all web components or import a subset of components through the components.zip zip archive.

Supported Browsers

| | Chrome | Firefox | Safari | | ------- | ------ | ------- | ------ | | Windows | ✅ | ✅ | ❌ | | MacOS | ✅ | ✅ | ✅ | | Linux | ✅ | ✅ | ❌ |