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

async-data

v0.1.1

Published

A web component for async data retrieval.

Downloads

49

Readme

async-data

Declarative ajax.

install

npm install async-data

usage

First, load the polyfill: <script src='node_modules/webcomponents.js/webcomponents.js

Import the element: <link rel="import" href="component/async-data.html">

Instantiate it: <async-data src='https://someapi.com'></async-data>

Data is fetched from the resource indicated by the src attribute.

If the element has an auto attribute, the request is made as soon as document.readyState === 'complete' is true, and whenever the src attribute is changed. Otherwise, the request can be triggered by calling the element's .get method, which takes no arguments.

The element uses the browser-request package to fetch the data. When done, it emits a 'data' event. This is an instance of MessageEvent, the .data property of which is set to the body of the response.

An 'error' event is emitted if there is an error, be it a network error, or a 404, or something else. This is an instance of ErrorEvent, whose .message property is set to the value of the .message property of the underlying error object, and whose .error property is set to that error object itself. According to MDN, the .error property of ErrorEvent is experimental, but of course none of this is well documented, so if something blows up on you, please file an issue here.

The element's .value property holds the requested data, if the call succeeds, and it's .error property holds an error object if there was an error making the request.

See index.html for an example.

Feedback is welcome. For instance, is it efficient to pass the retrieved data as the .data property of the data event? This technique was inspired by the way Server-Sent Events work, and I like it. Listeners can of course query event.target.data to get the same data. I'm not familiar with the way memory is handled in this case, and so would welcome any input.