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

esmpile

v0.1.5

Published

Compile ESM source files on the browser

Downloads

4

Readme

esmpile

Npm package version Npm package monthly downloads License: AGPL v3 Discord

This library allows for you to compile ESM source files using standard import paths. For instance, you can compile [https://raw.githubusercontent.com/garrettmflynn/esmpile/main/src/index.js]!

Resulting bundles support incremental changes and recompilation.

esmpile is a core library of the Brains@Play Framework

Getting Started

The List of Options

const options = {
    collection: 'global', // Specify the bundle name to draw from
    bundler: 'objecturl', // Specify how to bundle the file
    callbacks: {
        progress: {
            fetch:(path, i, total, done, failed, range) => {}, // Fetch-level updates for each file
            file: (path, i, total, done, failed) => {} // File-level updates for each dependency resolution
        }
    },
    debug: true, // Toggle debug messages in the Developer Console 
    fallback: true, // Toggle to fallback to compilation if direct import is not available
    forceNativeImport: false // Override output specifications which require text import
    output: { // Specify which information to output to the user
        text: true, // Use text for module creation and output using onImport
        objecturl: true,
        datauri: true
    },
    relativeTo: import.meta.url // Specify what file the paths are relative to. 
    // If using a bundler for your main JavaScript file, you may have to substitute with window.location.href...
}

Available Extensions

TypeScript

TypeScript support can be enabled by preloading the associated script:

await esm.load.script('./extensions/typescriptServices.min.js');

The extension code has been generated using our TypeScript Services minifier script.

Open Issues

  1. Live Edit Any ES Module: Allow for minimal recompiling of a single module (and dependents) after submitting updated text.

  2. Visualize Code Execution: This project could be extended by es-monitor to visualize the ESM code execution of an application.

  3. Develop a RegExp that handles export * as name from "path" syntax: We have a draft RegExp that extends the existing one for imports—but it stalls when importing self (likely because of the amount of basic exports in the files).

  4. Allow for Any Circular Dependencies: Currently we are falling back to direct imports for files with circular depenencies.

Developer Notes

  1. To maintain compatibility with iOS Safari and Chrome, we have replaced all import assertions with fetch calls and removed lookbehind expressions from regular expressions. This allows the demo to load (at all...) on iOS.

Acknowledgments

This library is maintained by Garrett Flynn, who uses contract work and community contributions through Open Collective to support himself along with others at Brains@Play.

Backers

Support us with a monthly donation and help us continue our activities!

Sponsors

Become a sponsor and get your logo here with a link to your site!