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

@ayonli/jsext

v1.3.0

Published

A JavaScript extension package for building strong and modern applications.

Downloads

13,695

Readme

JsExt

A JavaScript extension package for building strong and modern applications.

This package is built on top of modern web standards and provides unified high-level APIs that can work across different runtime environments, whether it's Node.js, Deno, Bun, Cloudflare Workers, browsers, Windows, macOS or Linux.

Outstanding Features

  • [x] Various useful functions for built-in data types that are not built-in.
  • [x] Various utility functions to extend the ability of flow control.
  • [x] Multi-threaded JavaScript with parallel threads.
  • [x] File system APIs for both server and browser environments.
  • [x] Open dialogs in both CLI and web applications.
  • [x] Serve HTTP requests, SSE and WebSockets for all server runtimes.
  • [x] Manipulate file system paths and URLs in the same fashion.
  • [x] Process byte arrays and readable streams effortlessly.
  • [x] Create, extract and preview archives in all runtimes.
  • [x] And many more...

Import

The recommended way is to only import the ones that are needed:

// Universal
import _try from "@ayonli/jsext/try";
import func from "@ayonli/jsext/func";
// ...

// Deno (URL)
import _try from "https://lib.deno.dev/x/ayonli_jsext@latest/try.ts";
import func from "https://lib.deno.dev/x/ayonli_jsext@latest/func.ts";
// ...

// Browsers (URL)
import _try from "https://ayonli.github.io/jsext/esm/try.js";
import func from "https://ayonli.github.io/jsext/esm/func.js";
// ...

There is also a bundled version that can be loaded via a <script> tag in the browser.

<script src="https://ayonli.github.io/jsext/bundle/jsext.js">
    // this will also include the sub-modules and augmentations
</script>

Note for Cloudflare Workers and Fastly Compute

For applications run in Cloudflare Workers and Fastly Compute, install the NPM version of this package instead of the JSR version.

Note for TypeScript Project

In tsconfig.json, the following compilerOptions must be set as such:

  • moduleResolution: Bundler or NodeNext
  • skipLibCheck: true

Language-enhancing Functions

  • _try Calls a function safely and return errors when captured.
  • func Declares a function along with a defer keyword, inspired by Golang.
  • wrap Wraps a function for decorator pattern but keep its signature.
  • mixin Declares a class that combines all methods from the base classes.
  • throttle Throttles function calls for frequent access.
  • debounce Debounces function calls for frequent access.
  • queue Handles tasks sequentially and prevent concurrency conflicts.
  • lock Provides mutual exclusion for concurrent operations.
  • chan Creates a channel that transfers data across routines, even across multiple threads, inspired by Golang.
  • parallel Runs functions in parallel threads and take advantage of multi-core CPUs, inspired by Golang.
  • run Runs the given script in a worker thread and invokes its default function to collect the result.
  • deprecate Marks a function as deprecated and emit warnings when it is called.
  • pipe Performs pipe operations through a series of functions upon a value.

Subcategories

Each of these modules includes specific functions and classes for their target categories:

  • archive Collecting files into an archive file, or extracting files from a archive file.
  • array Functions for dealing with arrays.
  • async Functions for async/promise context handling.
  • bytes Functions for dealing with byte arrays (Uint8Array).
  • class Functions for dealing with classes.
    • decorators Decorators to validate input/output data and guarantee type safety at runtime.
  • cli (Experimental) Useful utility functions for interacting with the terminal.
  • collections Additional collection data types.
  • dialog (Experimental) Asynchronous dialog functions for both browsers and terminals.
  • encoding Utilities for encoding and decoding binary representations like hex and base64 strings.
  • error Functions for converting errors to/from other types of objects.
  • event Functions for working with events.
  • filetype Functions to get file types in different fashions.
  • fs Universal file system APIs for both server and browser applications.
  • hash Simplified hash functions for various data types.
  • http Functions for handling HTTP related tasks, such as parsing headers and serving HTTP requests.
  • json Functions for parsing JSONs to specific structures.
  • math Functions for mathematical calculations.
  • module Functions for working with JavaScript modules.
  • net Functions for working with the network.
  • number Functions for dealing with numbers.
  • object Functions for dealing with objects.
  • path Platform-independent utility functions for dealing with file system paths and URLs.
  • reader Utility functions for reading data from various types of source into various forms.
  • runtime Utility functions to retrieve runtime information or configure runtime behaviors.
  • sse Tools for processing Server-sent Events requests and handling message events.
  • string Functions for dealing with strings.
  • types The missing builtin classes of JavaScript and utility types for TypeScript.
  • ws (Experimental) A unified WebSocket server interface for Node.js, Deno, Bun and Cloudflare Workers.

Augmentation

This package supports augmenting some functions to the corresponding built-in types/namespaces, but they should only be used for application development, don't use them when developing libraries.

NOTE: this feature is only available by the NPM package, they don't work by the JSR package.

For more details, please check this document.