@monstermann/dsp 0.2.2 → 0.3.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.
Files changed (47) hide show
  1. package/README.md +524 -0
  2. package/dist/Dsp/add.d.mts +45 -0
  3. package/dist/Dsp/{add.js → add.mjs} +3 -3
  4. package/dist/Dsp/create.d.mts +25 -0
  5. package/dist/Dsp/create.mjs +31 -0
  6. package/dist/Dsp/dispose.d.mts +95 -0
  7. package/dist/Dsp/dispose.mjs +131 -0
  8. package/dist/Dsp/find.d.mts +44 -0
  9. package/dist/Dsp/find.mjs +49 -0
  10. package/dist/Dsp/includes.d.mts +36 -0
  11. package/dist/Dsp/includes.mjs +38 -0
  12. package/dist/Dsp/{index.d.ts → index.d.mts} +10 -10
  13. package/dist/Dsp/index.mjs +27 -0
  14. package/dist/Dsp/{internals.js → internals.mjs} +1 -1
  15. package/dist/Dsp/isDisposed.d.mts +28 -0
  16. package/dist/Dsp/isDisposed.mjs +30 -0
  17. package/dist/Dsp/isDsp.d.mts +26 -0
  18. package/dist/Dsp/isDsp.mjs +28 -0
  19. package/dist/Dsp/remove.d.mts +34 -0
  20. package/dist/Dsp/remove.mjs +38 -0
  21. package/dist/Dsp/unlink.d.mts +34 -0
  22. package/dist/Dsp/unlink.mjs +38 -0
  23. package/dist/index.d.mts +2 -0
  24. package/dist/index.mjs +3 -0
  25. package/package.json +6 -6
  26. package/dist/Dsp/add.d.ts +0 -6
  27. package/dist/Dsp/create.d.ts +0 -6
  28. package/dist/Dsp/create.js +0 -13
  29. package/dist/Dsp/dispose.d.ts +0 -6
  30. package/dist/Dsp/dispose.js +0 -43
  31. package/dist/Dsp/find.d.ts +0 -6
  32. package/dist/Dsp/find.js +0 -12
  33. package/dist/Dsp/includes.d.ts +0 -6
  34. package/dist/Dsp/includes.js +0 -9
  35. package/dist/Dsp/index.js +0 -27
  36. package/dist/Dsp/isDisposed.d.ts +0 -6
  37. package/dist/Dsp/isDisposed.js +0 -9
  38. package/dist/Dsp/isDsp.d.ts +0 -6
  39. package/dist/Dsp/isDsp.js +0 -9
  40. package/dist/Dsp/remove.d.ts +0 -6
  41. package/dist/Dsp/remove.js +0 -11
  42. package/dist/Dsp/unlink.d.ts +0 -6
  43. package/dist/Dsp/unlink.js +0 -11
  44. package/dist/index.d.ts +0 -2
  45. package/dist/index.js +0 -3
  46. /package/dist/Dsp/{symbol.d.ts → symbol.d.mts} +0 -0
  47. /package/dist/Dsp/{symbol.js → symbol.mjs} +0 -0
@@ -0,0 +1,38 @@
1
+ import { unlinkDsp, unlinkVal } from "./internals.mjs";
2
+
3
+ //#region src/Dsp/unlink.ts
4
+ /**
5
+ * # unlink
6
+ *
7
+ * ```ts
8
+ * function Dsp.unlink(link: DspLink | undefined): void;
9
+ * ```
10
+ *
11
+ * `O(1)`
12
+ *
13
+ * Takes a value constructed by `add` and destroys all references.
14
+ *
15
+ * ## Example
16
+ *
17
+ * ```ts
18
+ * import { Dsp } from "@monstermann/dsp";
19
+ *
20
+ * const cb = () => {};
21
+ *
22
+ * const dsp = Dsp.create();
23
+ * const link = Dsp.add(dsp, cb);
24
+ *
25
+ * Dsp.includes(dsp, cb); // true
26
+ * Dsp.unlink(link);
27
+ * Dsp.includes(dsp, cb); // false
28
+ * ```
29
+ *
30
+ */
31
+ function unlink(link) {
32
+ if (!link) return;
33
+ unlinkVal(link);
34
+ unlinkDsp(link);
35
+ }
36
+
37
+ //#endregion
38
+ export { unlink };
@@ -0,0 +1,2 @@
1
+ import { Dsp, DspLink } from "./Dsp/index.mjs";
2
+ export { Dsp, DspLink };
package/dist/index.mjs ADDED
@@ -0,0 +1,3 @@
1
+ import { Dsp } from "./Dsp/index.mjs";
2
+
3
+ export { Dsp };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@monstermann/dsp",
3
3
  "type": "module",
4
- "version": "0.2.2",
4
+ "version": "0.3.0",
5
5
  "description": "Small & fast disposables.",
6
6
  "author": "Michael Ostermann <michaelostermann@me.com>",
7
7
  "license": "MIT",
@@ -17,14 +17,14 @@
17
17
  "sideEffects": false,
18
18
  "exports": {
19
19
  ".": {
20
- "types": "./dist/index.d.ts",
21
- "import": "./dist/index.js"
20
+ "types": "./dist/index.d.mts",
21
+ "import": "./dist/index.mjs"
22
22
  },
23
23
  "./*": "./dist/*"
24
24
  },
25
- "main": "./dist/index.js",
26
- "module": "./dist/index.js",
27
- "types": "./dist/index.d.ts",
25
+ "main": "./dist/index.mjs",
26
+ "module": "./dist/index.mjs",
27
+ "types": "./dist/index.d.mts",
28
28
  "files": [
29
29
  "dist"
30
30
  ],
package/dist/Dsp/add.d.ts DELETED
@@ -1,6 +0,0 @@
1
- import { Dsp, DspLink } from "./index.js";
2
-
3
- //#region src/Dsp/add.d.ts
4
- declare function add(target: Dsp, value: (() => void) | Dsp): DspLink | undefined;
5
- //#endregion
6
- export { add };
@@ -1,6 +0,0 @@
1
- import { Dsp } from "./index.js";
2
-
3
- //#region src/Dsp/create.d.ts
4
- declare function create(): Dsp;
5
- //#endregion
6
- export { create };
@@ -1,13 +0,0 @@
1
- import { symbol } from "./symbol.js";
2
-
3
- //#region src/Dsp/create.ts
4
- function create() {
5
- return {
6
- dsps: void 0,
7
- [symbol]: false,
8
- vals: void 0
9
- };
10
- }
11
-
12
- //#endregion
13
- export { create };
@@ -1,6 +0,0 @@
1
- import { Dsp } from "./index.js";
2
-
3
- //#region src/Dsp/dispose.d.ts
4
- declare function dispose(target: Dsp): void;
5
- //#endregion
6
- export { dispose };
@@ -1,43 +0,0 @@
1
- import { symbol } from "./symbol.js";
2
- import { unlinkVal } from "./internals.js";
3
-
4
- //#region src/Dsp/dispose.ts
5
- function dispose(target) {
6
- let errors;
7
- let stack = {
8
- dsp: target,
9
- prev: void 0
10
- };
11
- let dsp = target;
12
- while (dsp) {
13
- dsp[symbol] = true;
14
- while (dsp.dsps) {
15
- unlinkVal(dsp.dsps);
16
- dsp.dsps = dsp.dsps.prevDsp;
17
- }
18
- while (dsp.vals) {
19
- const val = dsp.vals.val;
20
- dsp.vals = dsp.vals.prevVal;
21
- if (symbol in val) {
22
- stack = {
23
- dsp: val,
24
- prev: stack
25
- };
26
- dsp = val;
27
- } else try {
28
- val();
29
- } catch (err) {
30
- errors ??= [];
31
- errors.push(err);
32
- }
33
- }
34
- stack = stack?.prev;
35
- dsp = stack?.dsp;
36
- }
37
- if (!errors) return;
38
- if (errors.length === 1) throw errors[0];
39
- throw new AggregateError(errors, "DisposeError");
40
- }
41
-
42
- //#endregion
43
- export { dispose };
@@ -1,6 +0,0 @@
1
- import { Dsp, DspLink } from "./index.js";
2
-
3
- //#region src/Dsp/find.d.ts
4
- declare function find(target: Dsp, value: (() => void) | Dsp): DspLink | undefined;
5
- //#endregion
6
- export { find };
package/dist/Dsp/find.js DELETED
@@ -1,12 +0,0 @@
1
- //#region src/Dsp/find.ts
2
- function find(target, value) {
3
- let link = target.vals;
4
- while (link) {
5
- if (link.val === value) return link;
6
- link = link.prevVal;
7
- }
8
- return link;
9
- }
10
-
11
- //#endregion
12
- export { find };
@@ -1,6 +0,0 @@
1
- import { Dsp } from "./index.js";
2
-
3
- //#region src/Dsp/includes.d.ts
4
- declare function includes(target: Dsp, value: (() => void) | Dsp): boolean;
5
- //#endregion
6
- export { includes };
@@ -1,9 +0,0 @@
1
- import { find } from "./find.js";
2
-
3
- //#region src/Dsp/includes.ts
4
- function includes(target, value) {
5
- return !!find(target, value);
6
- }
7
-
8
- //#endregion
9
- export { includes };
package/dist/Dsp/index.js DELETED
@@ -1,27 +0,0 @@
1
- import { symbol } from "./symbol.js";
2
- import { dispose } from "./dispose.js";
3
- import { add } from "./add.js";
4
- import { create } from "./create.js";
5
- import { find } from "./find.js";
6
- import { includes } from "./includes.js";
7
- import { isDisposed } from "./isDisposed.js";
8
- import { isDsp } from "./isDsp.js";
9
- import { unlink } from "./unlink.js";
10
- import { remove } from "./remove.js";
11
-
12
- //#region src/Dsp/index.js
13
- const Dsp = {
14
- add,
15
- create,
16
- dispose,
17
- find,
18
- includes,
19
- isDisposed,
20
- isDsp,
21
- remove,
22
- symbol,
23
- unlink
24
- };
25
-
26
- //#endregion
27
- export { Dsp };
@@ -1,6 +0,0 @@
1
- import { Dsp } from "./index.js";
2
-
3
- //#region src/Dsp/isDisposed.d.ts
4
- declare function isDisposed(target: Dsp): boolean;
5
- //#endregion
6
- export { isDisposed };
@@ -1,9 +0,0 @@
1
- import { symbol } from "./symbol.js";
2
-
3
- //#region src/Dsp/isDisposed.ts
4
- function isDisposed(target) {
5
- return target[symbol];
6
- }
7
-
8
- //#endregion
9
- export { isDisposed };
@@ -1,6 +0,0 @@
1
- import { Dsp } from "./index.js";
2
-
3
- //#region src/Dsp/isDsp.d.ts
4
- declare function isDsp(value: unknown): value is Dsp;
5
- //#endregion
6
- export { isDsp };
package/dist/Dsp/isDsp.js DELETED
@@ -1,9 +0,0 @@
1
- import { symbol } from "./symbol.js";
2
-
3
- //#region src/Dsp/isDsp.ts
4
- function isDsp(value) {
5
- return value != null && typeof value === "object" && symbol in value;
6
- }
7
-
8
- //#endregion
9
- export { isDsp };
@@ -1,6 +0,0 @@
1
- import { Dsp } from "./index.js";
2
-
3
- //#region src/Dsp/remove.d.ts
4
- declare function remove(disposer: Dsp, value: (() => void) | Dsp): void;
5
- //#endregion
6
- export { remove };
@@ -1,11 +0,0 @@
1
- import { find } from "./find.js";
2
- import { unlink } from "./unlink.js";
3
-
4
- //#region src/Dsp/remove.ts
5
- function remove(disposer, value) {
6
- const link = find(disposer, value);
7
- if (link) unlink(link);
8
- }
9
-
10
- //#endregion
11
- export { remove };
@@ -1,6 +0,0 @@
1
- import { DspLink } from "./index.js";
2
-
3
- //#region src/Dsp/unlink.d.ts
4
- declare function unlink(link: DspLink | undefined): void;
5
- //#endregion
6
- export { unlink };
@@ -1,11 +0,0 @@
1
- import { unlinkDsp, unlinkVal } from "./internals.js";
2
-
3
- //#region src/Dsp/unlink.ts
4
- function unlink(link) {
5
- if (!link) return;
6
- unlinkVal(link);
7
- unlinkDsp(link);
8
- }
9
-
10
- //#endregion
11
- export { unlink };
package/dist/index.d.ts DELETED
@@ -1,2 +0,0 @@
1
- import { Dsp, DspLink } from "./Dsp/index.js";
2
- export { Dsp, DspLink };
package/dist/index.js DELETED
@@ -1,3 +0,0 @@
1
- import { Dsp } from "./Dsp/index.js";
2
-
3
- export { Dsp };
File without changes
File without changes