indisposed 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/functions/handlers.d.ts +4 -4
- package/dist/functions/handlers.d.ts.map +1 -1
- package/dist/functions/timing.d.ts +1 -1
- package/dist/functions/timing.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +16 -32
- package/dist/index.js.map +1 -1
- package/dist/no-polyfill-D3v5MBct.js +430 -0
- package/dist/no-polyfill-D3v5MBct.js.map +1 -0
- package/dist/no-polyfill.d.ts +5 -5
- package/dist/no-polyfill.js +2 -166
- package/package.json +20 -16
- package/dist/explicit-resource-management-BSyjFgS-.js +0 -837
- package/dist/explicit-resource-management-BSyjFgS-.js.map +0 -1
- package/dist/no-polyfill.js.map +0 -1
- package/dist/path-DtH12Oyl.js +0 -1398
- package/dist/path-DtH12Oyl.js.map +0 -1
- package/dist/with-resolvers-0tPpPN4C.js +0 -1243
- package/dist/with-resolvers-0tPpPN4C.js.map +0 -1
package/dist/no-polyfill.js
CHANGED
|
@@ -1,166 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
}
|
|
4
|
-
function hasAsyncDisposable(value) {
|
|
5
|
-
return value != null && typeof value === "object" && typeof value[Symbol.asyncDispose] === "function";
|
|
6
|
-
}
|
|
7
|
-
function toDisposable(value, disposeFn) {
|
|
8
|
-
let disposed = false;
|
|
9
|
-
const originalDispose = hasDisposable(value) ? value[Symbol.dispose] : void 0;
|
|
10
|
-
return Object.assign(value, {
|
|
11
|
-
[Symbol.dispose]: () => {
|
|
12
|
-
if (disposed) return;
|
|
13
|
-
disposeFn(value);
|
|
14
|
-
originalDispose?.call(value);
|
|
15
|
-
disposed = true;
|
|
16
|
-
}
|
|
17
|
-
});
|
|
18
|
-
}
|
|
19
|
-
function toAsyncDisposable(value, disposeFn) {
|
|
20
|
-
let disposingPromise;
|
|
21
|
-
const originalDispose = hasAsyncDisposable(value) ? value[Symbol.asyncDispose] : void 0;
|
|
22
|
-
return Object.assign(value, {
|
|
23
|
-
[Symbol.asyncDispose]: async () => {
|
|
24
|
-
if (disposingPromise == null) {
|
|
25
|
-
disposingPromise = (async () => {
|
|
26
|
-
await disposeFn(value);
|
|
27
|
-
await originalDispose?.call(value);
|
|
28
|
-
})();
|
|
29
|
-
}
|
|
30
|
-
await disposingPromise;
|
|
31
|
-
}
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
const DEFAULT_OPTIONS = {
|
|
35
|
-
maxBuffer: 100,
|
|
36
|
-
drain: false
|
|
37
|
-
};
|
|
38
|
-
function channel(options) {
|
|
39
|
-
const { maxBuffer, drain: shouldDrain } = { ...DEFAULT_OPTIONS, ...options };
|
|
40
|
-
let closed = false;
|
|
41
|
-
const events = [];
|
|
42
|
-
const waiters = [];
|
|
43
|
-
const doneResult = () => ({
|
|
44
|
-
value: void 0,
|
|
45
|
-
done: true
|
|
46
|
-
});
|
|
47
|
-
const drainQueue = () => {
|
|
48
|
-
while (!closed && events.length && waiters.length) {
|
|
49
|
-
const value = events.shift();
|
|
50
|
-
const resolve = waiters.shift();
|
|
51
|
-
resolve({ value, done: false });
|
|
52
|
-
}
|
|
53
|
-
};
|
|
54
|
-
const push = (value) => {
|
|
55
|
-
if (closed) return;
|
|
56
|
-
if (maxBuffer <= 0) {
|
|
57
|
-
if (waiters.length) events.push(value);
|
|
58
|
-
} else {
|
|
59
|
-
events.push(value);
|
|
60
|
-
if (events.length > maxBuffer) events.shift();
|
|
61
|
-
}
|
|
62
|
-
drainQueue();
|
|
63
|
-
};
|
|
64
|
-
const dispose = () => {
|
|
65
|
-
if (closed) return;
|
|
66
|
-
closed = true;
|
|
67
|
-
if (shouldDrain) {
|
|
68
|
-
while (events.length && waiters.length) {
|
|
69
|
-
const value = events.shift();
|
|
70
|
-
const resolve = waiters.shift();
|
|
71
|
-
resolve({ value, done: false });
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
while (waiters.length > 0) {
|
|
75
|
-
const waiter = waiters.shift();
|
|
76
|
-
waiter?.(doneResult());
|
|
77
|
-
}
|
|
78
|
-
};
|
|
79
|
-
const iterator = {
|
|
80
|
-
async next() {
|
|
81
|
-
if (shouldDrain && events.length) {
|
|
82
|
-
return { value: events.shift(), done: false };
|
|
83
|
-
}
|
|
84
|
-
if (closed) {
|
|
85
|
-
return doneResult();
|
|
86
|
-
}
|
|
87
|
-
if (events.length) {
|
|
88
|
-
return { value: events.shift(), done: false };
|
|
89
|
-
}
|
|
90
|
-
return new Promise((resolve) => {
|
|
91
|
-
waiters.push(resolve);
|
|
92
|
-
drainQueue();
|
|
93
|
-
});
|
|
94
|
-
},
|
|
95
|
-
return() {
|
|
96
|
-
dispose();
|
|
97
|
-
return Promise.resolve(doneResult());
|
|
98
|
-
},
|
|
99
|
-
[Symbol.asyncIterator]() {
|
|
100
|
-
return this;
|
|
101
|
-
},
|
|
102
|
-
[Symbol.dispose]: dispose
|
|
103
|
-
};
|
|
104
|
-
return {
|
|
105
|
-
push,
|
|
106
|
-
get closed() {
|
|
107
|
-
return closed;
|
|
108
|
-
},
|
|
109
|
-
iterator
|
|
110
|
-
};
|
|
111
|
-
}
|
|
112
|
-
function unpackArray(values) {
|
|
113
|
-
return values.length === 0 ? void 0 : values.length === 1 ? values[0] : values;
|
|
114
|
-
}
|
|
115
|
-
function invoke(fn) {
|
|
116
|
-
return fn();
|
|
117
|
-
}
|
|
118
|
-
function once(emitter, event, rejects) {
|
|
119
|
-
const { promise, resolve, reject } = Promise.withResolvers();
|
|
120
|
-
const handler = (...args) => {
|
|
121
|
-
if (rejects) {
|
|
122
|
-
reject(args.length === 1 ? args[0] : args);
|
|
123
|
-
return;
|
|
124
|
-
}
|
|
125
|
-
resolve(unpackArray(args));
|
|
126
|
-
};
|
|
127
|
-
emitter.once(event, handler);
|
|
128
|
-
return toDisposable(promise, () => emitter.off(event, handler));
|
|
129
|
-
}
|
|
130
|
-
function on(emitter, event, options) {
|
|
131
|
-
const ch = channel(options);
|
|
132
|
-
const handler = (...args) => {
|
|
133
|
-
ch.push(unpackArray(args));
|
|
134
|
-
};
|
|
135
|
-
emitter.on(event, handler);
|
|
136
|
-
return toDisposable(ch.iterator, () => {
|
|
137
|
-
emitter.off(event, handler);
|
|
138
|
-
});
|
|
139
|
-
}
|
|
140
|
-
function timeout(ms) {
|
|
141
|
-
const timingPromise = Promise.withResolvers();
|
|
142
|
-
const timeoutId = setTimeout(timingPromise.resolve, ms);
|
|
143
|
-
return toDisposable(timingPromise.promise, () => clearTimeout(timeoutId));
|
|
144
|
-
}
|
|
145
|
-
function interval(ms, options) {
|
|
146
|
-
const ch = channel(options);
|
|
147
|
-
let currentValue = 0;
|
|
148
|
-
const intervalId = setInterval(() => {
|
|
149
|
-
if (ch.closed) return;
|
|
150
|
-
ch.push(currentValue++);
|
|
151
|
-
}, ms);
|
|
152
|
-
return toDisposable(ch.iterator, () => {
|
|
153
|
-
clearInterval(intervalId);
|
|
154
|
-
});
|
|
155
|
-
}
|
|
156
|
-
export {
|
|
157
|
-
channel,
|
|
158
|
-
interval,
|
|
159
|
-
invoke,
|
|
160
|
-
on,
|
|
161
|
-
once,
|
|
162
|
-
timeout,
|
|
163
|
-
toAsyncDisposable,
|
|
164
|
-
toDisposable
|
|
165
|
-
};
|
|
166
|
-
//# sourceMappingURL=no-polyfill.js.map
|
|
1
|
+
import { a as invoke, c as toDisposable, i as once, n as timeout, o as channel, r as on, s as toAsyncDisposable, t as interval } from "./no-polyfill-D3v5MBct.js";
|
|
2
|
+
export { channel, interval, invoke, on, once, timeout, toAsyncDisposable, toDisposable };
|
package/package.json
CHANGED
|
@@ -6,15 +6,13 @@
|
|
|
6
6
|
"description": "The missing utilities for disposable resources.",
|
|
7
7
|
"devDependencies": {
|
|
8
8
|
"@types/ws": "^8.18.1",
|
|
9
|
-
"core-js": "^3.
|
|
10
|
-
"prettier": "^3.
|
|
11
|
-
"
|
|
12
|
-
"
|
|
13
|
-
"vite": "^
|
|
14
|
-
"
|
|
15
|
-
"
|
|
16
|
-
"vitest": "^4.0.16",
|
|
17
|
-
"ws": "^8.18.3"
|
|
9
|
+
"core-js": "^3.49.0",
|
|
10
|
+
"prettier": "^3.8.3",
|
|
11
|
+
"typescript": "^6.0.3",
|
|
12
|
+
"unplugin-dts": "^1.0.1",
|
|
13
|
+
"vite": "^8.0.14",
|
|
14
|
+
"vitest": "^4.1.7",
|
|
15
|
+
"ws": "^8.20.1"
|
|
18
16
|
},
|
|
19
17
|
"engines": {
|
|
20
18
|
"node": ">=22.20.0"
|
|
@@ -34,6 +32,13 @@
|
|
|
34
32
|
"default": "./dist/no-polyfill.js"
|
|
35
33
|
}
|
|
36
34
|
},
|
|
35
|
+
"imports": {
|
|
36
|
+
"#/*": {
|
|
37
|
+
"development": "./src/*.ts",
|
|
38
|
+
"types": "./dist/*.d.ts",
|
|
39
|
+
"default": "./dist/*.js"
|
|
40
|
+
}
|
|
41
|
+
},
|
|
37
42
|
"homepage": "https://github.com/andrew-w-ross/indisposed#readme",
|
|
38
43
|
"keywords": [
|
|
39
44
|
"disposable",
|
|
@@ -52,7 +57,6 @@
|
|
|
52
57
|
],
|
|
53
58
|
"license": "MIT",
|
|
54
59
|
"name": "indisposed",
|
|
55
|
-
"packageManager": "yarn@4.11.0",
|
|
56
60
|
"peerDependencies": {
|
|
57
61
|
"core-js": "^3.46.0"
|
|
58
62
|
},
|
|
@@ -65,6 +69,11 @@
|
|
|
65
69
|
"type": "git",
|
|
66
70
|
"url": "git+https://github.com/andrew-w-ross/indisposed.git"
|
|
67
71
|
},
|
|
72
|
+
"sideEffects": [
|
|
73
|
+
"./src/polyfill.ts"
|
|
74
|
+
],
|
|
75
|
+
"type": "module",
|
|
76
|
+
"version": "0.2.0",
|
|
68
77
|
"scripts": {
|
|
69
78
|
"clean": "rm -rf dist/ && mkdir -p dist",
|
|
70
79
|
"build": "vite build",
|
|
@@ -72,10 +81,5 @@
|
|
|
72
81
|
"test:watch": "vitest",
|
|
73
82
|
"format": "prettier --write .",
|
|
74
83
|
"format:check": "prettier --check ."
|
|
75
|
-
}
|
|
76
|
-
"sideEffects": [
|
|
77
|
-
"./src/polyfill.ts"
|
|
78
|
-
],
|
|
79
|
-
"type": "module",
|
|
80
|
-
"version": "0.1.0"
|
|
84
|
+
}
|
|
81
85
|
}
|