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.
- Various useful functions for built-in data types that are not built-in.
- Various utility functions to extend the ability of flow control.
- Multi-threaded JavaScript with parallel threads.
- File system APIs for both server and browser environments.
- Open dialogs in both CLI and web applications.
- Serve HTTP requests, SSE and WebSockets for all server runtimes.
- Manipulate file system paths and URLs in the same fashion.
- Process byte arrays and readable streams effortlessly.
- Create, extract and preview archives in all runtimes.
- And many more...
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>
For applications run in Cloudflare Workers and Fastly Compute, install the NPM version of this package instead of the JSR version.
This package requires compilerOptions.moduleResolution
set to Bundler
or
NodeNext
in tsconfig.json
.
- _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 a script in another thread and abort at any time.
- 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.
Each of these modules includes specific functions and classes for their target categories:
- archive (Experimental) 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.
- Historically, this module was named
promise
, but that name has been deprecated.
- Historically, this module was named
- bytes Functions for dealing with
byte arrays (
Uint8Array
).- Historically, this module was named
uint8array
, but that name has been deprecated.
- Historically, this module was named
- class Functions for dealing with classes.
- 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 (Experimental) Universal file system APIs for both server and browser applications.
- hash Simplified hash functions for various data types.
- http (Experimental) 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 Utility functions for working with JavaScript modules.
- number Functions for dealing with numbers.
- object Functions for dealing with objects.
- path (Experimental) 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.
- Historically, there was a
read
module and arealAll
module, but they have been merged into this module as thetoAsyncIterable
function and thereadAsArray
function.
- Historically, there was a
- runtime (Experimental) Utility functions to retrieve runtime information or configure runtime behaviors.
- sse (Experimental) 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.
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.