mutts 1.0.6 → 1.0.7

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 (110) hide show
  1. package/README.md +1 -1
  2. package/dist/browser.d.ts +2 -0
  3. package/dist/browser.esm.js +70 -0
  4. package/dist/browser.esm.js.map +1 -0
  5. package/dist/browser.js +161 -0
  6. package/dist/browser.js.map +1 -0
  7. package/dist/chunks/{index-CDCOjzTy.js → index-BFYK02LG.js} +5760 -4338
  8. package/dist/chunks/index-BFYK02LG.js.map +1 -0
  9. package/dist/chunks/{index-DiP0RXoZ.esm.js → index-CNR6QRUl.esm.js} +5440 -4054
  10. package/dist/chunks/index-CNR6QRUl.esm.js.map +1 -0
  11. package/dist/devtools/panel.js.map +1 -1
  12. package/dist/mutts.umd.js +1 -1
  13. package/dist/mutts.umd.js.map +1 -1
  14. package/dist/mutts.umd.min.js +1 -1
  15. package/dist/mutts.umd.min.js.map +1 -1
  16. package/dist/node.d.ts +2 -0
  17. package/dist/node.esm.js +45 -0
  18. package/dist/node.esm.js.map +1 -0
  19. package/dist/node.js +136 -0
  20. package/dist/node.js.map +1 -0
  21. package/docs/ai/api-reference.md +0 -2
  22. package/docs/reactive/advanced.md +2 -5
  23. package/docs/reactive/collections.md +0 -125
  24. package/docs/reactive/core.md +27 -24
  25. package/docs/reactive/debugging.md +12 -2
  26. package/docs/reactive/project.md +1 -1
  27. package/docs/reactive/scan.md +78 -0
  28. package/docs/reactive.md +2 -1
  29. package/docs/std-decorators.md +1 -0
  30. package/docs/zone.md +88 -0
  31. package/package.json +42 -10
  32. package/src/async/browser.ts +87 -0
  33. package/src/async/index.ts +8 -0
  34. package/src/async/node.ts +46 -0
  35. package/src/decorator.ts +5 -1
  36. package/src/destroyable.ts +1 -1
  37. package/src/index.ts +22 -14
  38. package/src/indexable.ts +42 -0
  39. package/src/mixins.ts +2 -2
  40. package/src/reactive/array.ts +149 -141
  41. package/src/reactive/buffer.ts +168 -0
  42. package/src/reactive/change.ts +2 -2
  43. package/src/reactive/effect-context.ts +15 -91
  44. package/src/reactive/effects.ts +119 -179
  45. package/src/reactive/index.ts +10 -13
  46. package/src/reactive/interface.ts +19 -33
  47. package/src/reactive/map.ts +48 -61
  48. package/src/reactive/memoize.ts +19 -9
  49. package/src/reactive/project.ts +43 -22
  50. package/src/reactive/proxy.ts +16 -41
  51. package/src/reactive/record.ts +3 -3
  52. package/src/reactive/register.ts +5 -7
  53. package/src/reactive/registry.ts +9 -17
  54. package/src/reactive/set.ts +42 -56
  55. package/src/reactive/tracking.ts +1 -29
  56. package/src/reactive/types.ts +46 -23
  57. package/src/utils.ts +80 -37
  58. package/src/zone.ts +127 -0
  59. package/dist/chunks/_tslib-BgjropY9.js +0 -81
  60. package/dist/chunks/_tslib-BgjropY9.js.map +0 -1
  61. package/dist/chunks/_tslib-MCKDzsSq.esm.js +0 -75
  62. package/dist/chunks/_tslib-MCKDzsSq.esm.js.map +0 -1
  63. package/dist/chunks/decorator-BGILvPtN.esm.js +0 -627
  64. package/dist/chunks/decorator-BGILvPtN.esm.js.map +0 -1
  65. package/dist/chunks/decorator-BQ2eBTCj.js +0 -651
  66. package/dist/chunks/decorator-BQ2eBTCj.js.map +0 -1
  67. package/dist/chunks/index-CDCOjzTy.js.map +0 -1
  68. package/dist/chunks/index-DiP0RXoZ.esm.js.map +0 -1
  69. package/dist/decorator.d.ts +0 -107
  70. package/dist/decorator.esm.js +0 -2
  71. package/dist/decorator.esm.js.map +0 -1
  72. package/dist/decorator.js +0 -11
  73. package/dist/decorator.js.map +0 -1
  74. package/dist/destroyable.d.ts +0 -90
  75. package/dist/destroyable.esm.js +0 -109
  76. package/dist/destroyable.esm.js.map +0 -1
  77. package/dist/destroyable.js +0 -116
  78. package/dist/destroyable.js.map +0 -1
  79. package/dist/eventful.d.ts +0 -20
  80. package/dist/eventful.esm.js +0 -66
  81. package/dist/eventful.esm.js.map +0 -1
  82. package/dist/eventful.js +0 -68
  83. package/dist/eventful.js.map +0 -1
  84. package/dist/index.d.ts +0 -19
  85. package/dist/index.esm.js +0 -53
  86. package/dist/index.esm.js.map +0 -1
  87. package/dist/index.js +0 -139
  88. package/dist/index.js.map +0 -1
  89. package/dist/indexable.d.ts +0 -243
  90. package/dist/indexable.esm.js +0 -285
  91. package/dist/indexable.esm.js.map +0 -1
  92. package/dist/indexable.js +0 -291
  93. package/dist/indexable.js.map +0 -1
  94. package/dist/promiseChain.d.ts +0 -21
  95. package/dist/promiseChain.esm.js +0 -78
  96. package/dist/promiseChain.esm.js.map +0 -1
  97. package/dist/promiseChain.js +0 -80
  98. package/dist/promiseChain.js.map +0 -1
  99. package/dist/reactive.d.ts +0 -910
  100. package/dist/reactive.esm.js +0 -5
  101. package/dist/reactive.esm.js.map +0 -1
  102. package/dist/reactive.js +0 -59
  103. package/dist/reactive.js.map +0 -1
  104. package/dist/std-decorators.d.ts +0 -52
  105. package/dist/std-decorators.esm.js +0 -196
  106. package/dist/std-decorators.esm.js.map +0 -1
  107. package/dist/std-decorators.js +0 -204
  108. package/dist/std-decorators.js.map +0 -1
  109. package/src/reactive/mapped.ts +0 -129
  110. package/src/reactive/zone.ts +0 -208
package/src/zone.ts ADDED
@@ -0,0 +1,127 @@
1
+ import { asyncHooks } from "./async"
2
+ import { named, tag } from "./utils"
3
+
4
+ export abstract class AZone<T> {
5
+ abstract active?: T
6
+ enter(value?: T): unknown {
7
+ const prev = this.active
8
+ this.active = value
9
+ return prev
10
+ }
11
+ leave(entered: unknown): void {
12
+ this.active = entered as T | undefined
13
+ }
14
+ with<R>(value: T, fn: () => R): R {
15
+ const entered = this.enter(value)
16
+ try {
17
+ return fn()
18
+ } finally {
19
+ this.leave(entered)
20
+ }
21
+ }
22
+ root<R>(fn: () => R): R {
23
+ let prev = this.enter()
24
+ try {
25
+ return fn()
26
+ } finally {
27
+ this.leave(prev)
28
+ }
29
+ }
30
+ get zoned(): FunctionWrapper {
31
+ const active = this.active
32
+ return named(`${this}@${active}`, (fn) => this.with(active, fn))
33
+ }
34
+ }
35
+
36
+ export type FunctionWrapper = <R>(fn?: () => R) => R
37
+
38
+ export class Zone<T> extends AZone<T> {
39
+ active: T | undefined
40
+ }
41
+ type HistoryValue<T> = {present: T | undefined, history: Set<T>}
42
+ export class ZoneHistory<T> extends AZone<HistoryValue<T>> {
43
+ private history = new Set<T>()
44
+ public readonly present: AZone<T>
45
+ public has(value: T): boolean {
46
+ return this.history.has(value)
47
+ }
48
+ public some(predicate: (value: T) => boolean): boolean {
49
+ for(const value of this.history) if(predicate(value)) return true
50
+ return false
51
+ }
52
+ constructor(private controlled: AZone<T> = new Zone<T>()) {
53
+ super()
54
+ const self = this
55
+ this.present = Object.create(controlled,
56
+ Object.getOwnPropertyDescriptors({
57
+ get active() { return controlled.active },
58
+ set active(value: T | undefined) {
59
+ controlled.active = value
60
+ },
61
+ enter(value?: T) {
62
+ if(value && self.history.has(value)) throw new Error('ZoneHistory: re-entering historical zone')
63
+ if(value !== undefined) self.history.add(value)
64
+ return { added: value, entered: controlled.enter(value) }
65
+ },
66
+ leave(entered: { added: T | undefined, entered: unknown }) {
67
+ if(entered.added !== undefined) self.history.delete(entered.added)
68
+ return controlled.leave(entered.entered)
69
+ }
70
+ })
71
+ )
72
+ }
73
+ get active() {
74
+ return {present: this.controlled.active, history: new Set(this.history)}
75
+ }
76
+ set active(value: HistoryValue<T> | undefined) {
77
+ this.history = this.history && new Set(this.history)
78
+ this.controlled.active = value?.present
79
+ }
80
+ }
81
+
82
+ export class ZoneAggregator extends AZone<Map<AZone<unknown>, unknown>> {
83
+ #zones = new Set<AZone<unknown>>()
84
+ constructor(...zones: AZone<unknown>[]) {
85
+ super()
86
+ for (const z of zones) this.#zones.add(z)
87
+ }
88
+ get active(): Map<AZone<unknown>, unknown> | undefined {
89
+ const rv = new Map<AZone<unknown>, unknown>()
90
+ for (const z of this.#zones)
91
+ if (z.active !== undefined) rv.set(z, z.active)
92
+ return rv
93
+ }
94
+ set active(value: Map<AZone<unknown>, unknown> | undefined) {
95
+ for (const z of this.#zones) z.active = value?.get(z)
96
+ }
97
+ enter(value?: Map<AZone<unknown>, unknown> | undefined) {
98
+ const entered = new Map<AZone<unknown>, unknown>()
99
+ for (const z of this.#zones) {
100
+ const v = value?.get(z)
101
+ entered.set(z, z.enter(v))
102
+ }
103
+ return entered
104
+ }
105
+ leave(entered: Map<AZone<unknown>, unknown>): void {
106
+ for (const z of this.#zones) z.leave(entered.get(z))
107
+ }
108
+ add(z: AZone<unknown>) {
109
+ this.#zones.add(z)
110
+ }
111
+ delete(z: AZone<unknown>) {
112
+ this.#zones.delete(z)
113
+ }
114
+ clear() {
115
+ this.#zones.clear()
116
+ }
117
+ }
118
+
119
+ export const asyncZone = tag(new ZoneAggregator(), 'async')
120
+ asyncHooks.addHook(() => {
121
+ const zone = asyncZone.active
122
+ return () => {
123
+ const prev = asyncZone.active
124
+ asyncZone.active = zone
125
+ return () => asyncZone.active = prev
126
+ }
127
+ })
@@ -1,81 +0,0 @@
1
- 'use strict';
2
-
3
- /******************************************************************************
4
- Copyright (c) Microsoft Corporation.
5
-
6
- Permission to use, copy, modify, and/or distribute this software for any
7
- purpose with or without fee is hereby granted.
8
-
9
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
10
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
11
- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
12
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
13
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
14
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
15
- PERFORMANCE OF THIS SOFTWARE.
16
- ***************************************************************************** */
17
- /* global Reflect, Promise, SuppressedError, Symbol, Iterator */
18
-
19
-
20
- function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
21
- function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
22
- var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
23
- var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
24
- var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
25
- var _, done = false;
26
- for (var i = decorators.length - 1; i >= 0; i--) {
27
- var context = {};
28
- for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
29
- for (var p in contextIn.access) context.access[p] = contextIn.access[p];
30
- context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
31
- var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
32
- if (kind === "accessor") {
33
- if (result === void 0) continue;
34
- if (result === null || typeof result !== "object") throw new TypeError("Object expected");
35
- if (_ = accept(result.get)) descriptor.get = _;
36
- if (_ = accept(result.set)) descriptor.set = _;
37
- if (_ = accept(result.init)) initializers.unshift(_);
38
- }
39
- else if (_ = accept(result)) {
40
- if (kind === "field") initializers.unshift(_);
41
- else descriptor[key] = _;
42
- }
43
- }
44
- if (target) Object.defineProperty(target, contextIn.name, descriptor);
45
- done = true;
46
- }
47
- function __runInitializers(thisArg, initializers, value) {
48
- var useValue = arguments.length > 2;
49
- for (var i = 0; i < initializers.length; i++) {
50
- value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
51
- }
52
- return useValue ? value : void 0;
53
- }
54
- function __setFunctionName(f, name, prefix) {
55
- if (typeof name === "symbol") name = name.description ? "[".concat(name.description, "]") : "";
56
- return Object.defineProperty(f, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name });
57
- }
58
- function __classPrivateFieldGet(receiver, state, kind, f) {
59
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
60
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
61
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
62
- }
63
-
64
- function __classPrivateFieldSet(receiver, state, value, kind, f) {
65
- if (kind === "m") throw new TypeError("Private method is not writable");
66
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
67
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
68
- return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
69
- }
70
-
71
- typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
72
- var e = new Error(message);
73
- return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
74
- };
75
-
76
- exports.__classPrivateFieldGet = __classPrivateFieldGet;
77
- exports.__classPrivateFieldSet = __classPrivateFieldSet;
78
- exports.__esDecorate = __esDecorate;
79
- exports.__runInitializers = __runInitializers;
80
- exports.__setFunctionName = __setFunctionName;
81
- //# sourceMappingURL=_tslib-BgjropY9.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"_tslib-BgjropY9.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,75 +0,0 @@
1
- /******************************************************************************
2
- Copyright (c) Microsoft Corporation.
3
-
4
- Permission to use, copy, modify, and/or distribute this software for any
5
- purpose with or without fee is hereby granted.
6
-
7
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
8
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
9
- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
10
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
11
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
12
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
13
- PERFORMANCE OF THIS SOFTWARE.
14
- ***************************************************************************** */
15
- /* global Reflect, Promise, SuppressedError, Symbol, Iterator */
16
-
17
-
18
- function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
19
- function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
20
- var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
21
- var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
22
- var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
23
- var _, done = false;
24
- for (var i = decorators.length - 1; i >= 0; i--) {
25
- var context = {};
26
- for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
27
- for (var p in contextIn.access) context.access[p] = contextIn.access[p];
28
- context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
29
- var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
30
- if (kind === "accessor") {
31
- if (result === void 0) continue;
32
- if (result === null || typeof result !== "object") throw new TypeError("Object expected");
33
- if (_ = accept(result.get)) descriptor.get = _;
34
- if (_ = accept(result.set)) descriptor.set = _;
35
- if (_ = accept(result.init)) initializers.unshift(_);
36
- }
37
- else if (_ = accept(result)) {
38
- if (kind === "field") initializers.unshift(_);
39
- else descriptor[key] = _;
40
- }
41
- }
42
- if (target) Object.defineProperty(target, contextIn.name, descriptor);
43
- done = true;
44
- }
45
- function __runInitializers(thisArg, initializers, value) {
46
- var useValue = arguments.length > 2;
47
- for (var i = 0; i < initializers.length; i++) {
48
- value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
49
- }
50
- return useValue ? value : void 0;
51
- }
52
- function __setFunctionName(f, name, prefix) {
53
- if (typeof name === "symbol") name = name.description ? "[".concat(name.description, "]") : "";
54
- return Object.defineProperty(f, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name });
55
- }
56
- function __classPrivateFieldGet(receiver, state, kind, f) {
57
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
58
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
59
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
60
- }
61
-
62
- function __classPrivateFieldSet(receiver, state, value, kind, f) {
63
- if (kind === "m") throw new TypeError("Private method is not writable");
64
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
65
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
66
- return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
67
- }
68
-
69
- typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
70
- var e = new Error(message);
71
- return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
72
- };
73
-
74
- export { __setFunctionName as _, __esDecorate as a, __runInitializers as b, __classPrivateFieldSet as c, __classPrivateFieldGet as d };
75
- //# sourceMappingURL=_tslib-MCKDzsSq.esm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"_tslib-MCKDzsSq.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}