@whatwg-node/disposablestack
Advanced tools
Comparing version 0.0.1-alpha-20240729084750-06808cd94b89e5e4899b06595ee722bd19719955 to 0.0.1-alpha-20240729092210-5aebb04bd6697876d29d5fcb192d93bcae76da97
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.PonyfillAsyncDisposableStack = void 0; | ||
const symbols_js_1 = require("./symbols.js"); | ||
const utils_js_1 = require("./utils.js"); | ||
(0, utils_js_1.patchSymbols)(); | ||
class PonyfillAsyncDisposableStack { | ||
@@ -13,6 +13,6 @@ callbacks = []; | ||
if ((0, utils_js_1.isAsyncDisposable)(value)) { | ||
this.callbacks.push(() => value[Symbol.asyncDispose]()); | ||
this.callbacks.push(() => value[symbols_js_1.DisposableSymbols.asyncDispose]()); | ||
} | ||
else if ((0, utils_js_1.isSyncDisposable)(value)) { | ||
this.callbacks.push(() => value[Symbol.dispose]()); | ||
this.callbacks.push(() => value[symbols_js_1.DisposableSymbols.dispose]()); | ||
} | ||
@@ -35,5 +35,5 @@ return value; | ||
disposeAsync() { | ||
return this[Symbol.asyncDispose](); | ||
return this[symbols_js_1.DisposableSymbols.asyncDispose](); | ||
} | ||
async [Symbol.asyncDispose]() { | ||
async [symbols_js_1.DisposableSymbols.asyncDispose]() { | ||
for (const cb of this.callbacks) { | ||
@@ -40,0 +40,0 @@ await cb(); |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.PonyfillDisposableStack = void 0; | ||
const symbols_js_1 = require("./symbols.js"); | ||
const utils_js_1 = require("./utils.js"); | ||
(0, utils_js_1.patchSymbols)(); | ||
class PonyfillDisposableStack { | ||
@@ -12,10 +12,7 @@ callbacks = []; | ||
dispose() { | ||
for (const cb of this.callbacks) { | ||
cb(); | ||
} | ||
this.callbacks = []; | ||
return this[symbols_js_1.DisposableSymbols.dispose](); | ||
} | ||
use(value) { | ||
if ((0, utils_js_1.isSyncDisposable)(value)) { | ||
this.callbacks.push(() => value[Symbol.dispose]()); | ||
this.callbacks.push(() => value[symbols_js_1.DisposableSymbols.dispose]()); | ||
} | ||
@@ -37,4 +34,7 @@ return value; | ||
} | ||
[Symbol.dispose]() { | ||
this.dispose(); | ||
[symbols_js_1.DisposableSymbols.dispose]() { | ||
for (const cb of this.callbacks) { | ||
cb(); | ||
} | ||
this.callbacks = []; | ||
} | ||
@@ -41,0 +41,0 @@ [Symbol.toStringTag] = 'DisposableStack'; |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.AsyncDisposableStack = exports.DisposableStack = void 0; | ||
const tslib_1 = require("tslib"); | ||
const AsyncDisposableStack_js_1 = require("./AsyncDisposableStack.js"); | ||
const DisposableStack_js_1 = require("./DisposableStack.js"); | ||
const utils_js_1 = require("./utils.js"); | ||
(0, utils_js_1.patchSymbols)(); | ||
exports.DisposableStack = globalThis.DisposableStack || DisposableStack_js_1.PonyfillDisposableStack; | ||
exports.AsyncDisposableStack = globalThis.AsyncDisposableStack || AsyncDisposableStack_js_1.PonyfillAsyncDisposableStack; | ||
tslib_1.__exportStar(require("./symbols.js"), exports); |
@@ -5,16 +5,8 @@ "use strict"; | ||
exports.isAsyncDisposable = isAsyncDisposable; | ||
exports.patchSymbols = patchSymbols; | ||
const symbols_1 = require("./symbols"); | ||
function isSyncDisposable(obj) { | ||
return obj?.[Symbol.dispose] != null; | ||
return obj?.[symbols_1.DisposableSymbols.dispose] != null; | ||
} | ||
function isAsyncDisposable(obj) { | ||
return obj?.[Symbol.asyncDispose] != null; | ||
return obj?.[symbols_1.DisposableSymbols.asyncDispose] != null; | ||
} | ||
function patchSymbols() { | ||
// eslint-disable-next-line @typescript-eslint/ban-ts-comment | ||
// @ts-ignore - we ponyfill these symbols | ||
Symbol.dispose ||= Symbol.for('dispose'); | ||
// eslint-disable-next-line @typescript-eslint/ban-ts-comment | ||
// @ts-ignore - we ponyfill these symbols | ||
Symbol.asyncDispose ||= Symbol.for('asyncDispose'); | ||
} |
@@ -1,3 +0,3 @@ | ||
import { isAsyncDisposable, isSyncDisposable, patchSymbols } from './utils.js'; | ||
patchSymbols(); | ||
import { DisposableSymbols } from './symbols.js'; | ||
import { isAsyncDisposable, isSyncDisposable } from './utils.js'; | ||
export class PonyfillAsyncDisposableStack { | ||
@@ -10,6 +10,6 @@ callbacks = []; | ||
if (isAsyncDisposable(value)) { | ||
this.callbacks.push(() => value[Symbol.asyncDispose]()); | ||
this.callbacks.push(() => value[DisposableSymbols.asyncDispose]()); | ||
} | ||
else if (isSyncDisposable(value)) { | ||
this.callbacks.push(() => value[Symbol.dispose]()); | ||
this.callbacks.push(() => value[DisposableSymbols.dispose]()); | ||
} | ||
@@ -32,5 +32,5 @@ return value; | ||
disposeAsync() { | ||
return this[Symbol.asyncDispose](); | ||
return this[DisposableSymbols.asyncDispose](); | ||
} | ||
async [Symbol.asyncDispose]() { | ||
async [DisposableSymbols.asyncDispose]() { | ||
for (const cb of this.callbacks) { | ||
@@ -37,0 +37,0 @@ await cb(); |
@@ -1,3 +0,3 @@ | ||
import { isSyncDisposable, patchSymbols } from './utils.js'; | ||
patchSymbols(); | ||
import { DisposableSymbols } from './symbols.js'; | ||
import { isSyncDisposable } from './utils.js'; | ||
export class PonyfillDisposableStack { | ||
@@ -9,10 +9,7 @@ callbacks = []; | ||
dispose() { | ||
for (const cb of this.callbacks) { | ||
cb(); | ||
} | ||
this.callbacks = []; | ||
return this[DisposableSymbols.dispose](); | ||
} | ||
use(value) { | ||
if (isSyncDisposable(value)) { | ||
this.callbacks.push(() => value[Symbol.dispose]()); | ||
this.callbacks.push(() => value[DisposableSymbols.dispose]()); | ||
} | ||
@@ -34,6 +31,9 @@ return value; | ||
} | ||
[Symbol.dispose]() { | ||
this.dispose(); | ||
[DisposableSymbols.dispose]() { | ||
for (const cb of this.callbacks) { | ||
cb(); | ||
} | ||
this.callbacks = []; | ||
} | ||
[Symbol.toStringTag] = 'DisposableStack'; | ||
} |
import { PonyfillAsyncDisposableStack } from './AsyncDisposableStack.js'; | ||
import { PonyfillDisposableStack } from './DisposableStack.js'; | ||
import { patchSymbols } from './utils.js'; | ||
patchSymbols(); | ||
export const DisposableStack = globalThis.DisposableStack || PonyfillDisposableStack; | ||
export const AsyncDisposableStack = globalThis.AsyncDisposableStack || PonyfillAsyncDisposableStack; | ||
export * from './symbols.js'; |
@@ -0,14 +1,7 @@ | ||
import { DisposableSymbols } from './symbols'; | ||
export function isSyncDisposable(obj) { | ||
return obj?.[Symbol.dispose] != null; | ||
return obj?.[DisposableSymbols.dispose] != null; | ||
} | ||
export function isAsyncDisposable(obj) { | ||
return obj?.[Symbol.asyncDispose] != null; | ||
return obj?.[DisposableSymbols.asyncDispose] != null; | ||
} | ||
export function patchSymbols() { | ||
// eslint-disable-next-line @typescript-eslint/ban-ts-comment | ||
// @ts-ignore - we ponyfill these symbols | ||
Symbol.dispose ||= Symbol.for('dispose'); | ||
// eslint-disable-next-line @typescript-eslint/ban-ts-comment | ||
// @ts-ignore - we ponyfill these symbols | ||
Symbol.asyncDispose ||= Symbol.for('asyncDispose'); | ||
} |
{ | ||
"name": "@whatwg-node/disposablestack", | ||
"version": "0.0.1-alpha-20240729084750-06808cd94b89e5e4899b06595ee722bd19719955", | ||
"version": "0.0.1-alpha-20240729092210-5aebb04bd6697876d29d5fcb192d93bcae76da97", | ||
"description": "Cross Platform Smart DisposableStack API Ponyfill", | ||
@@ -5,0 +5,0 @@ "sideEffects": false, |
@@ -0,1 +1,2 @@ | ||
import { DisposableSymbols } from './symbols.js'; | ||
import { MaybePromise } from './utils.js'; | ||
@@ -10,4 +11,4 @@ export declare class PonyfillAsyncDisposableStack implements AsyncDisposableStack { | ||
disposeAsync(): Promise<void>; | ||
[Symbol.asyncDispose](): Promise<void>; | ||
[DisposableSymbols.asyncDispose](): Promise<void>; | ||
readonly [Symbol.toStringTag]: string; | ||
} |
@@ -0,1 +1,2 @@ | ||
import { DisposableSymbols } from './symbols.js'; | ||
export declare class PonyfillDisposableStack implements DisposableStack { | ||
@@ -9,4 +10,4 @@ private callbacks; | ||
move(): DisposableStack; | ||
[Symbol.dispose](): void; | ||
[DisposableSymbols.dispose](): void; | ||
readonly [Symbol.toStringTag]: string; | ||
} |
export declare const DisposableStack: DisposableStackConstructor; | ||
export declare const AsyncDisposableStack: AsyncDisposableStackConstructor; | ||
export * from './symbols.js'; |
export declare function isSyncDisposable(obj: any): obj is Disposable; | ||
export declare function isAsyncDisposable(obj: any): obj is AsyncDisposable; | ||
export declare function patchSymbols(): void; | ||
export type MaybePromise<T> = T | PromiseLike<T>; |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
12045
22
264