@serve-tools/polyfill-resource-management
v0.1.6
Published
Implements Explicit Resource Management with global mutation
Maintainers
Readme
@serve-tools/polyfill-resource-management
The @serve-tools/polyfill-resource-management package implements ECMAScript Explicit Resource Management, which reached TC39 Stage 4 in May 2026, by installing missing globals while preserving existing native implementations.
import "@serve-tools/polyfill-resource-management";
const stack = new DisposableStack();
stack.defer(() => console.log("disposed"));
stack.dispose();Install
npm install @serve-tools/polyfill-resource-managementUsage
Install every global
Import the package for its side effects to install every supported global, as shown above.
The package explicitly marks its root and global installers as side-effectful. Do not remove those imports as unused.
Install individual globals
Import a documented ./apply/... subpath to install only the globals an application needs:
import "@serve-tools/polyfill-resource-management/apply/Symbol/dispose";
import "@serve-tools/polyfill-resource-management/apply/DisposableStack";Available global installers are:
apply/Symbol/disposeapply/Symbol/asyncDisposeapply/DisposableStackapply/AsyncDisposableStackapply/SuppressedError
Each installer is self-guarding and leaves an existing native implementation unchanged.
Import without global mutation
The matching top-level subpaths export the native implementation when it is available and otherwise export the fallback without installing a global:
import { DisposableStack } from "@serve-tools/polyfill-resource-management/DisposableStack";
import { dispose } from "@serve-tools/polyfill-resource-management/Symbol/dispose";These subpaths are useful when an application wants native identity where available but cannot mutate the global environment.
The global, selective, and mutation-free import patterns above are covered by the package's TypeScript fixtures and runtime tests.
Public API
- The package root installs every missing Explicit Resource Management global.
./apply/Symbol/dispose,./apply/Symbol/asyncDispose,./apply/DisposableStack,./apply/AsyncDisposableStack, and./apply/SuppressedErrorinstall one selected global and its required symbol dependencies.- The matching top-level subpaths export native values when available and module-scoped fallbacks otherwise without changing globals.
Relationship to the ponyfill
This package shares its fallback contract with @serve-tools/ponyfill-resource-management, then integrates with native disposal symbols and globals.
Use the ponyfill instead when module-scoped symbols are preferred.
The package installs runtime APIs; it does not transform using or await using syntax.
Compatibility
The package is an ES module for JavaScript runtimes with globalThis, Symbol, and promises.
It can run in browsers, workers, and Node.js, preserves any native implementations it finds, and fills only missing globals.
A compiler or runtime must separately understand using and await using syntax.
Agent Skill
This package includes skills/serve-tools-polyfill-resource-management/SKILL.md with version-aligned usage guidance for compatible coding agents.
Activation is explicit; installing the package does not automatically trust or enable it.
Development
npm run typecheck --workspace @serve-tools/polyfill-resource-management
npm test --workspace @serve-tools/polyfill-resource-management
npm run build --workspace @serve-tools/polyfill-resource-management