mutts 1.0.6 → 1.0.8

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 (196) hide show
  1. package/README.md +61 -23
  2. package/dist/async/browser.d.ts +2 -0
  3. package/dist/async/browser.d.ts.map +1 -0
  4. package/dist/async/index.d.ts +18 -0
  5. package/dist/async/index.d.ts.map +1 -0
  6. package/dist/async/node.d.ts +2 -0
  7. package/dist/async/node.d.ts.map +1 -0
  8. package/dist/{chunks/index-CDCOjzTy.js → browser.cjs} +5913 -4382
  9. package/dist/browser.cjs.map +1 -0
  10. package/dist/browser.d.ts +1655 -0
  11. package/dist/browser.esm.js +305 -0
  12. package/dist/browser.esm.js.map +1 -0
  13. package/dist/chunks/async-browser-CA0jPWIi.cjs +304 -0
  14. package/dist/chunks/async-browser-CA0jPWIi.cjs.map +1 -0
  15. package/dist/chunks/async-core-UqHzvJ-S.cjs +25 -0
  16. package/dist/chunks/async-core-UqHzvJ-S.cjs.map +1 -0
  17. package/dist/chunks/async-node-BYHuGTni.cjs +103 -0
  18. package/dist/chunks/async-node-BYHuGTni.cjs.map +1 -0
  19. package/dist/chunks/{index-DiP0RXoZ.esm.js → index-DhaOVusv.esm.js} +5851 -4345
  20. package/dist/chunks/index-DhaOVusv.esm.js.map +1 -0
  21. package/dist/decorator.d.ts +17 -18
  22. package/dist/decorator.d.ts.map +1 -0
  23. package/dist/destroyable.d.ts +12 -15
  24. package/dist/destroyable.d.ts.map +1 -0
  25. package/dist/devtools/devtool/devtools.d.ts +1 -0
  26. package/dist/devtools/devtool/devtools.d.ts.map +1 -0
  27. package/dist/devtools/devtool/panel.d.ts +2 -0
  28. package/dist/devtools/devtool/panel.d.ts.map +1 -0
  29. package/dist/devtools/panel.js.map +1 -1
  30. package/dist/entry-browser.d.ts +3 -0
  31. package/dist/entry-browser.d.ts.map +1 -0
  32. package/dist/entry-node.d.ts +3 -0
  33. package/dist/entry-node.d.ts.map +1 -0
  34. package/dist/eventful.d.ts +3 -5
  35. package/dist/eventful.d.ts.map +1 -0
  36. package/dist/index.d.ts +13 -19
  37. package/dist/index.d.ts.map +1 -0
  38. package/dist/indexable.d.ts +10 -10
  39. package/dist/indexable.d.ts.map +1 -0
  40. package/dist/introspection.d.ts +27 -0
  41. package/dist/introspection.d.ts.map +1 -0
  42. package/dist/iterableWeak.d.ts +53 -0
  43. package/dist/iterableWeak.d.ts.map +1 -0
  44. package/dist/mixins.d.ts +25 -0
  45. package/dist/mixins.d.ts.map +1 -0
  46. package/dist/mutts.umd.js +1 -1
  47. package/dist/mutts.umd.js.map +1 -1
  48. package/dist/mutts.umd.min.js +1 -1
  49. package/dist/mutts.umd.min.js.map +1 -1
  50. package/dist/node.cjs +105 -0
  51. package/dist/node.cjs.map +1 -0
  52. package/dist/node.d.ts +1 -0
  53. package/dist/node.esm.js +104 -0
  54. package/dist/node.esm.js.map +1 -0
  55. package/dist/promiseChain.d.ts +4 -5
  56. package/dist/promiseChain.d.ts.map +1 -0
  57. package/dist/reactive/array.d.ts +49 -0
  58. package/dist/reactive/array.d.ts.map +1 -0
  59. package/dist/reactive/buffer.d.ts +44 -0
  60. package/dist/reactive/buffer.d.ts.map +1 -0
  61. package/dist/reactive/change.d.ts +29 -0
  62. package/dist/reactive/change.d.ts.map +1 -0
  63. package/dist/reactive/debug.d.ts +111 -0
  64. package/dist/reactive/debug.d.ts.map +1 -0
  65. package/dist/reactive/deep-touch.d.ts +28 -0
  66. package/dist/reactive/deep-touch.d.ts.map +1 -0
  67. package/dist/reactive/deep-watch-state.d.ts +25 -0
  68. package/dist/reactive/deep-watch-state.d.ts.map +1 -0
  69. package/dist/reactive/deep-watch.d.ts +19 -0
  70. package/dist/reactive/deep-watch.d.ts.map +1 -0
  71. package/dist/reactive/effect-context.d.ts +7 -0
  72. package/dist/reactive/effect-context.d.ts.map +1 -0
  73. package/dist/reactive/effects.d.ts +151 -0
  74. package/dist/reactive/effects.d.ts.map +1 -0
  75. package/dist/reactive/index.d.ts +20 -0
  76. package/dist/reactive/index.d.ts.map +1 -0
  77. package/dist/reactive/interface.d.ts +64 -0
  78. package/dist/reactive/interface.d.ts.map +1 -0
  79. package/dist/reactive/map.d.ts +30 -0
  80. package/dist/reactive/map.d.ts.map +1 -0
  81. package/dist/reactive/memoize.d.ts +5 -0
  82. package/dist/reactive/memoize.d.ts.map +1 -0
  83. package/dist/reactive/non-reactive-state.d.ts +9 -0
  84. package/dist/reactive/non-reactive-state.d.ts.map +1 -0
  85. package/dist/reactive/non-reactive.d.ts +11 -0
  86. package/dist/reactive/non-reactive.d.ts.map +1 -0
  87. package/dist/reactive/project.d.ts +41 -0
  88. package/dist/reactive/project.d.ts.map +1 -0
  89. package/dist/reactive/proxy-state.d.ts +8 -0
  90. package/dist/reactive/proxy-state.d.ts.map +1 -0
  91. package/dist/reactive/proxy.d.ts +23 -0
  92. package/dist/reactive/proxy.d.ts.map +1 -0
  93. package/dist/reactive/record.d.ts +116 -0
  94. package/dist/reactive/record.d.ts.map +1 -0
  95. package/dist/reactive/register.d.ts +64 -0
  96. package/dist/reactive/register.d.ts.map +1 -0
  97. package/dist/reactive/registry.d.ts +20 -0
  98. package/dist/reactive/registry.d.ts.map +1 -0
  99. package/dist/reactive/set.d.ts +28 -0
  100. package/dist/reactive/set.d.ts.map +1 -0
  101. package/dist/reactive/tracking.d.ts +7 -0
  102. package/dist/reactive/tracking.d.ts.map +1 -0
  103. package/dist/reactive/types.d.ts +376 -0
  104. package/dist/reactive/types.d.ts.map +1 -0
  105. package/dist/std-decorators.d.ts +9 -11
  106. package/dist/std-decorators.d.ts.map +1 -0
  107. package/dist/utils.d.ts +49 -0
  108. package/dist/utils.d.ts.map +1 -0
  109. package/dist/zone.d.ts +40 -0
  110. package/dist/zone.d.ts.map +1 -0
  111. package/docs/ai/api-reference.md +0 -2
  112. package/docs/reactive/advanced.md +2 -5
  113. package/docs/reactive/collections.md +0 -125
  114. package/docs/reactive/core.md +27 -24
  115. package/docs/reactive/debugging.md +12 -2
  116. package/docs/reactive/project.md +1 -1
  117. package/docs/reactive/scan.md +78 -0
  118. package/docs/reactive.md +2 -1
  119. package/docs/std-decorators.md +69 -0
  120. package/docs/zone.md +95 -0
  121. package/package.json +67 -23
  122. package/src/async/browser.ts +319 -0
  123. package/src/async/index.ts +23 -0
  124. package/src/async/node.ts +104 -0
  125. package/src/decorator.ts +5 -1
  126. package/src/destroyable.ts +1 -1
  127. package/src/entry-browser.ts +5 -0
  128. package/src/entry-node.ts +5 -0
  129. package/src/index.d.ts +12 -9
  130. package/src/index.ts +23 -14
  131. package/src/indexable.ts +42 -0
  132. package/src/mixins.ts +2 -2
  133. package/src/reactive/array.ts +274 -179
  134. package/src/reactive/buffer.ts +168 -0
  135. package/src/reactive/change.ts +2 -2
  136. package/src/reactive/effect-context.ts +15 -91
  137. package/src/reactive/effects.ts +119 -179
  138. package/src/reactive/index.ts +11 -13
  139. package/src/reactive/interface.ts +19 -33
  140. package/src/reactive/map.ts +49 -62
  141. package/src/reactive/memoize.ts +19 -9
  142. package/src/reactive/project.ts +43 -22
  143. package/src/reactive/proxy.ts +16 -41
  144. package/src/reactive/record.ts +3 -3
  145. package/src/reactive/register.ts +5 -7
  146. package/src/reactive/registry.ts +9 -17
  147. package/src/reactive/set.ts +43 -57
  148. package/src/reactive/tracking.ts +1 -29
  149. package/src/reactive/types.ts +46 -23
  150. package/src/utils.ts +80 -37
  151. package/src/zone.ts +138 -0
  152. package/dist/chunks/_tslib-BgjropY9.js +0 -81
  153. package/dist/chunks/_tslib-BgjropY9.js.map +0 -1
  154. package/dist/chunks/_tslib-MCKDzsSq.esm.js +0 -75
  155. package/dist/chunks/_tslib-MCKDzsSq.esm.js.map +0 -1
  156. package/dist/chunks/decorator-BGILvPtN.esm.js +0 -627
  157. package/dist/chunks/decorator-BGILvPtN.esm.js.map +0 -1
  158. package/dist/chunks/decorator-BQ2eBTCj.js +0 -651
  159. package/dist/chunks/decorator-BQ2eBTCj.js.map +0 -1
  160. package/dist/chunks/index-CDCOjzTy.js.map +0 -1
  161. package/dist/chunks/index-DiP0RXoZ.esm.js.map +0 -1
  162. package/dist/decorator.esm.js +0 -2
  163. package/dist/decorator.esm.js.map +0 -1
  164. package/dist/decorator.js +0 -11
  165. package/dist/decorator.js.map +0 -1
  166. package/dist/destroyable.esm.js +0 -109
  167. package/dist/destroyable.esm.js.map +0 -1
  168. package/dist/destroyable.js +0 -116
  169. package/dist/destroyable.js.map +0 -1
  170. package/dist/eventful.esm.js +0 -66
  171. package/dist/eventful.esm.js.map +0 -1
  172. package/dist/eventful.js +0 -68
  173. package/dist/eventful.js.map +0 -1
  174. package/dist/index.esm.js +0 -53
  175. package/dist/index.esm.js.map +0 -1
  176. package/dist/index.js +0 -139
  177. package/dist/index.js.map +0 -1
  178. package/dist/indexable.esm.js +0 -285
  179. package/dist/indexable.esm.js.map +0 -1
  180. package/dist/indexable.js +0 -291
  181. package/dist/indexable.js.map +0 -1
  182. package/dist/promiseChain.esm.js +0 -78
  183. package/dist/promiseChain.esm.js.map +0 -1
  184. package/dist/promiseChain.js +0 -80
  185. package/dist/promiseChain.js.map +0 -1
  186. package/dist/reactive.d.ts +0 -910
  187. package/dist/reactive.esm.js +0 -5
  188. package/dist/reactive.esm.js.map +0 -1
  189. package/dist/reactive.js +0 -59
  190. package/dist/reactive.js.map +0 -1
  191. package/dist/std-decorators.esm.js +0 -196
  192. package/dist/std-decorators.esm.js.map +0 -1
  193. package/dist/std-decorators.js +0 -204
  194. package/dist/std-decorators.js.map +0 -1
  195. package/src/reactive/mapped.ts +0 -129
  196. package/src/reactive/zone.ts +0 -208
@@ -1,2 +0,0 @@
1
- export { D as DecoratorError, d as decorator, l as legacyDecorator, m as modernDecorator } from './chunks/decorator-BGILvPtN.esm.js';
2
- //# sourceMappingURL=decorator.esm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"decorator.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
package/dist/decorator.js DELETED
@@ -1,11 +0,0 @@
1
- 'use strict';
2
-
3
- var decorator = require('./chunks/decorator-BQ2eBTCj.js');
4
-
5
-
6
-
7
- exports.DecoratorError = decorator.DecoratorError;
8
- exports.decorator = decorator.decorator;
9
- exports.legacyDecorator = decorator.legacyDecorator;
10
- exports.modernDecorator = decorator.modernDecorator;
11
- //# sourceMappingURL=decorator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"decorator.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;"}
@@ -1,109 +0,0 @@
1
- import { d as decorator } from './chunks/decorator-BGILvPtN.esm.js';
2
-
3
- // Integrated with `using` statement via Symbol.dispose
4
- const fr = new FinalizationRegistry((f) => f());
5
- /**
6
- * Symbol for marking destructor methods
7
- */
8
- const destructor = Symbol('destructor');
9
- /**
10
- * Symbol for accessing allocated values in destroyable objects
11
- */
12
- const allocatedValues = Symbol('allocated');
13
- /**
14
- * Error thrown when attempting to access a destroyed object
15
- */
16
- class DestructionError extends Error {
17
- static throw(msg) {
18
- return () => {
19
- throw new DestructionError(msg);
20
- };
21
- }
22
- constructor(msg) {
23
- super(`Object is destroyed. ${msg}`);
24
- this.name = 'DestroyedAccessError';
25
- }
26
- }
27
- const destroyedHandler = {
28
- [Symbol.toStringTag]: 'MutTs Destroyable',
29
- get: DestructionError.throw('Cannot access destroyed object'),
30
- set: DestructionError.throw('Cannot access destroyed object'),
31
- };
32
- function Destroyable(base, destructorObj) {
33
- var _a;
34
- if (base && typeof base !== 'function') {
35
- destructorObj = base;
36
- base = undefined;
37
- }
38
- if (!base) {
39
- base = class {
40
- };
41
- }
42
- return _a = class Destroyable extends base {
43
- static destroy(obj) {
44
- const destructor = _a.destructors.get(obj);
45
- if (!destructor)
46
- return false;
47
- fr.unregister(obj[allocatedValues]);
48
- _a.destructors.delete(obj);
49
- Object.setPrototypeOf(obj, new Proxy({}, destroyedHandler));
50
- // Clear all own properties
51
- for (const key of Object.getOwnPropertyNames(obj)) {
52
- delete obj[key];
53
- }
54
- destructor();
55
- return true;
56
- }
57
- static isDestroyable(obj) {
58
- return _a.destructors.has(obj);
59
- }
60
- constructor(...args) {
61
- super(...args);
62
- const allocated = {};
63
- this[allocatedValues] = allocated;
64
- // @ts-expect-error `this` is an AbstractDestroyable
65
- const myDestructor = destructorObj?.destructor ?? this[destructor];
66
- if (!myDestructor) {
67
- throw new DestructionError('Destructor is not defined');
68
- }
69
- function destruction() {
70
- myDestructor(allocated);
71
- }
72
- _a.destructors.set(this, destruction);
73
- fr.register(this, destruction, allocated);
74
- }
75
- },
76
- _a.destructors = new WeakMap(),
77
- _a;
78
- }
79
- /**
80
- * Decorator that marks properties to be stored in the allocated object and passed to the destructor
81
- * Use with accessor properties or explicit get/set pairs
82
- */
83
- const allocated = decorator({
84
- setter(original, _target, propertyKey) {
85
- return function (value) {
86
- this[allocatedValues][propertyKey] = value;
87
- return original.call(this, value);
88
- };
89
- },
90
- });
91
- /**
92
- * Registers a callback to be called when an object is garbage collected
93
- * @param cb - The callback function to execute on garbage collection
94
- * @returns The object whose reference can be collected
95
- */
96
- function callOnGC(cb) {
97
- let called = false;
98
- const forward = () => {
99
- if (called)
100
- return;
101
- called = true;
102
- cb();
103
- };
104
- fr.register(forward, cb, cb);
105
- return forward;
106
- }
107
-
108
- export { Destroyable, DestructionError, allocated, allocatedValues, callOnGC, destructor };
109
- //# sourceMappingURL=destroyable.esm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"destroyable.esm.js","sources":["../src/destroyable.ts"],"sourcesContent":["import { decorator } from './decorator'\n\n// Integrated with `using` statement via Symbol.dispose\nconst fr = new FinalizationRegistry<() => void>((f) => f())\n/**\n * Symbol for marking destructor methods\n */\nexport const destructor = Symbol('destructor')\n/**\n * Symbol for accessing allocated values in destroyable objects\n */\nexport const allocatedValues = Symbol('allocated')\n/**\n * Error thrown when attempting to access a destroyed object\n */\nexport class DestructionError extends Error {\n\tstatic throw<_T = void>(msg: string) {\n\t\treturn () => {\n\t\t\tthrow new DestructionError(msg)\n\t\t}\n\t}\n\tconstructor(msg: string) {\n\t\tsuper(`Object is destroyed. ${msg}`)\n\t\tthis.name = 'DestroyedAccessError'\n\t}\n}\nconst destroyedHandler = {\n\t[Symbol.toStringTag]: 'MutTs Destroyable',\n\tget: DestructionError.throw('Cannot access destroyed object'),\n\tset: DestructionError.throw('Cannot access destroyed object'),\n} as const\n\nabstract class AbstractDestroyable<Allocated> {\n\tabstract [destructor](allocated: Allocated): void\n\t[Symbol.dispose](): void {\n\t\tthis[destructor](this as unknown as Allocated)\n\t}\n}\n\ninterface Destructor<Allocated> {\n\tdestructor(allocated: Allocated): void\n}\n\n/**\n * Creates a destroyable class with a base class and destructor object\n * @param base - The base class to extend\n * @param destructorObj - Object containing the destructor method\n * @returns A destroyable class with static destroy and isDestroyable methods\n */\nexport function Destroyable<\n\tT extends new (\n\t\t...args: any[]\n\t) => any,\n\tAllocated extends Partial<InstanceType<T>>,\n>(\n\tbase: T,\n\tdestructorObj: Destructor<Allocated>\n): (new (\n\t...args: ConstructorParameters<T>\n) => InstanceType<T> & { [allocatedValues]: Allocated }) & {\n\tdestroy(obj: InstanceType<T>): boolean\n\tisDestroyable(obj: InstanceType<T>): boolean\n}\n\n/**\n * Creates a destroyable class with only a destructor object (no base class)\n * @param destructorObj - Object containing the destructor method\n * @returns A destroyable class with static destroy and isDestroyable methods\n */\nexport function Destroyable<Allocated extends Record<PropertyKey, any> = Record<PropertyKey, any>>(\n\tdestructorObj: Destructor<Allocated>\n): (new () => { [allocatedValues]: Allocated }) & {\n\tdestroy(obj: any): boolean\n\tisDestroyable(obj: any): boolean\n}\n\n/**\n * Creates a destroyable class with a base class (requires [destructor] method)\n * @param base - The base class to extend\n * @returns A destroyable class with static destroy and isDestroyable methods\n */\nexport function Destroyable<\n\tT extends new (\n\t\t...args: any[]\n\t) => any,\n\tAllocated extends Record<PropertyKey, any> = Record<PropertyKey, any>,\n>(\n\tbase: T\n): (new (\n\t...args: ConstructorParameters<T>\n) => AbstractDestroyable<Allocated> & InstanceType<T> & { [allocatedValues]: Allocated }) & {\n\tdestroy(obj: InstanceType<T>): boolean\n\tisDestroyable(obj: InstanceType<T>): boolean\n}\n\n/**\n * Creates an abstract destroyable base class\n * @returns An abstract destroyable class with static destroy and isDestroyable methods\n */\nexport function Destroyable<\n\tAllocated extends Record<PropertyKey, any> = Record<PropertyKey, any>,\n>(): abstract new () => (AbstractDestroyable<Allocated> & {\n\t[allocatedValues]: Allocated\n}) & {\n\tdestroy(obj: any): boolean\n\tisDestroyable(obj: any): boolean\n}\n\nexport function Destroyable<\n\tT extends new (\n\t\t...args: any[]\n\t) => any,\n\tAllocated extends Record<PropertyKey, any> = Record<PropertyKey, any>,\n>(base?: T | Destructor<Allocated>, destructorObj?: Destructor<Allocated>) {\n\tif (base && typeof base !== 'function') {\n\t\tdestructorObj = base as Destructor<Allocated>\n\t\tbase = undefined\n\t}\n\tif (!base) {\n\t\tbase = class { } as T\n\t}\n\n\treturn class Destroyable extends (base as T) {\n\t\tstatic readonly destructors = new WeakMap<any, () => void>()\n\t\tstatic destroy(obj: Destroyable) {\n\t\t\tconst destructor = Destroyable.destructors.get(obj)\n\t\t\tif (!destructor) return false\n\t\t\tfr.unregister(obj[allocatedValues])\n\t\t\tDestroyable.destructors.delete(obj)\n\t\t\tObject.setPrototypeOf(obj, new Proxy({}, destroyedHandler))\n\t\t\t// Clear all own properties\n\t\t\tfor (const key of Object.getOwnPropertyNames(obj)) {\n\t\t\t\tdelete (obj as any)[key]\n\t\t\t}\n\t\t\tdestructor()\n\t\t\treturn true\n\t\t}\n\t\tstatic isDestroyable(obj: Destroyable) {\n\t\t\treturn Destroyable.destructors.has(obj)\n\t\t}\n\n\t\t[forwardProperties]!: PropertyKey[]\n\t\treadonly [allocatedValues]: Allocated\n\t\tconstructor(...args: any[]) {\n\t\t\tsuper(...args)\n\t\t\tconst allocated = {} as Allocated\n\t\t\tthis[allocatedValues] = allocated\n\t\t\t// @ts-expect-error `this` is an AbstractDestroyable\n\t\t\tconst myDestructor = destructorObj?.destructor ?? this[destructor]\n\t\t\tif (!myDestructor) {\n\t\t\t\tthrow new DestructionError('Destructor is not defined')\n\t\t\t}\n\t\t\tfunction destruction() {\n\t\t\t\tmyDestructor(allocated)\n\t\t\t}\n\t\t\tDestroyable.destructors.set(this, destruction)\n\t\t\tfr.register(this, destruction, allocated)\n\t\t}\n\t}\n}\n\nconst forwardProperties = Symbol('forwardProperties')\n/**\n * Decorator that marks properties to be stored in the allocated object and passed to the destructor\n * Use with accessor properties or explicit get/set pairs\n */\nexport const allocated = decorator({\n\tsetter(original, _target, propertyKey) {\n\t\treturn function (value) {\n\t\t\tthis[allocatedValues][propertyKey] = value\n\t\t\treturn original.call(this, value)\n\t\t}\n\t},\n})\n\n/**\n * Registers a callback to be called when an object is garbage collected\n * @param cb - The callback function to execute on garbage collection\n * @returns The object whose reference can be collected\n */\nexport function callOnGC(cb: () => void) {\n\tlet called = false\n\tconst forward = () => {\n\t\tif (called) return\n\t\tcalled = true\n\t\tcb()\n\t}\n\tfr.register(forward, cb, cb)\n\treturn forward\n}\n\n/**\n * Context Manager Protocol for `using` statement integration\n * Provides automatic resource cleanup when used with the `using` statement\n */\nexport interface ContextManager<T = any> {\n\t[Symbol.dispose](): void\n\tvalue?: T\n}\n"],"names":[],"mappings":"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"}
@@ -1,116 +0,0 @@
1
- 'use strict';
2
-
3
- var decorator = require('./chunks/decorator-BQ2eBTCj.js');
4
-
5
- // Integrated with `using` statement via Symbol.dispose
6
- const fr = new FinalizationRegistry((f) => f());
7
- /**
8
- * Symbol for marking destructor methods
9
- */
10
- const destructor = Symbol('destructor');
11
- /**
12
- * Symbol for accessing allocated values in destroyable objects
13
- */
14
- const allocatedValues = Symbol('allocated');
15
- /**
16
- * Error thrown when attempting to access a destroyed object
17
- */
18
- class DestructionError extends Error {
19
- static throw(msg) {
20
- return () => {
21
- throw new DestructionError(msg);
22
- };
23
- }
24
- constructor(msg) {
25
- super(`Object is destroyed. ${msg}`);
26
- this.name = 'DestroyedAccessError';
27
- }
28
- }
29
- const destroyedHandler = {
30
- [Symbol.toStringTag]: 'MutTs Destroyable',
31
- get: DestructionError.throw('Cannot access destroyed object'),
32
- set: DestructionError.throw('Cannot access destroyed object'),
33
- };
34
- function Destroyable(base, destructorObj) {
35
- var _a;
36
- if (base && typeof base !== 'function') {
37
- destructorObj = base;
38
- base = undefined;
39
- }
40
- if (!base) {
41
- base = class {
42
- };
43
- }
44
- return _a = class Destroyable extends base {
45
- static destroy(obj) {
46
- const destructor = _a.destructors.get(obj);
47
- if (!destructor)
48
- return false;
49
- fr.unregister(obj[allocatedValues]);
50
- _a.destructors.delete(obj);
51
- Object.setPrototypeOf(obj, new Proxy({}, destroyedHandler));
52
- // Clear all own properties
53
- for (const key of Object.getOwnPropertyNames(obj)) {
54
- delete obj[key];
55
- }
56
- destructor();
57
- return true;
58
- }
59
- static isDestroyable(obj) {
60
- return _a.destructors.has(obj);
61
- }
62
- constructor(...args) {
63
- super(...args);
64
- const allocated = {};
65
- this[allocatedValues] = allocated;
66
- // @ts-expect-error `this` is an AbstractDestroyable
67
- const myDestructor = destructorObj?.destructor ?? this[destructor];
68
- if (!myDestructor) {
69
- throw new DestructionError('Destructor is not defined');
70
- }
71
- function destruction() {
72
- myDestructor(allocated);
73
- }
74
- _a.destructors.set(this, destruction);
75
- fr.register(this, destruction, allocated);
76
- }
77
- },
78
- _a.destructors = new WeakMap(),
79
- _a;
80
- }
81
- /**
82
- * Decorator that marks properties to be stored in the allocated object and passed to the destructor
83
- * Use with accessor properties or explicit get/set pairs
84
- */
85
- const allocated = decorator.decorator({
86
- setter(original, _target, propertyKey) {
87
- return function (value) {
88
- this[allocatedValues][propertyKey] = value;
89
- return original.call(this, value);
90
- };
91
- },
92
- });
93
- /**
94
- * Registers a callback to be called when an object is garbage collected
95
- * @param cb - The callback function to execute on garbage collection
96
- * @returns The object whose reference can be collected
97
- */
98
- function callOnGC(cb) {
99
- let called = false;
100
- const forward = () => {
101
- if (called)
102
- return;
103
- called = true;
104
- cb();
105
- };
106
- fr.register(forward, cb, cb);
107
- return forward;
108
- }
109
-
110
- exports.Destroyable = Destroyable;
111
- exports.DestructionError = DestructionError;
112
- exports.allocated = allocated;
113
- exports.allocatedValues = allocatedValues;
114
- exports.callOnGC = callOnGC;
115
- exports.destructor = destructor;
116
- //# sourceMappingURL=destroyable.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"destroyable.js","sources":["../src/destroyable.ts"],"sourcesContent":["import { decorator } from './decorator'\n\n// Integrated with `using` statement via Symbol.dispose\nconst fr = new FinalizationRegistry<() => void>((f) => f())\n/**\n * Symbol for marking destructor methods\n */\nexport const destructor = Symbol('destructor')\n/**\n * Symbol for accessing allocated values in destroyable objects\n */\nexport const allocatedValues = Symbol('allocated')\n/**\n * Error thrown when attempting to access a destroyed object\n */\nexport class DestructionError extends Error {\n\tstatic throw<_T = void>(msg: string) {\n\t\treturn () => {\n\t\t\tthrow new DestructionError(msg)\n\t\t}\n\t}\n\tconstructor(msg: string) {\n\t\tsuper(`Object is destroyed. ${msg}`)\n\t\tthis.name = 'DestroyedAccessError'\n\t}\n}\nconst destroyedHandler = {\n\t[Symbol.toStringTag]: 'MutTs Destroyable',\n\tget: DestructionError.throw('Cannot access destroyed object'),\n\tset: DestructionError.throw('Cannot access destroyed object'),\n} as const\n\nabstract class AbstractDestroyable<Allocated> {\n\tabstract [destructor](allocated: Allocated): void\n\t[Symbol.dispose](): void {\n\t\tthis[destructor](this as unknown as Allocated)\n\t}\n}\n\ninterface Destructor<Allocated> {\n\tdestructor(allocated: Allocated): void\n}\n\n/**\n * Creates a destroyable class with a base class and destructor object\n * @param base - The base class to extend\n * @param destructorObj - Object containing the destructor method\n * @returns A destroyable class with static destroy and isDestroyable methods\n */\nexport function Destroyable<\n\tT extends new (\n\t\t...args: any[]\n\t) => any,\n\tAllocated extends Partial<InstanceType<T>>,\n>(\n\tbase: T,\n\tdestructorObj: Destructor<Allocated>\n): (new (\n\t...args: ConstructorParameters<T>\n) => InstanceType<T> & { [allocatedValues]: Allocated }) & {\n\tdestroy(obj: InstanceType<T>): boolean\n\tisDestroyable(obj: InstanceType<T>): boolean\n}\n\n/**\n * Creates a destroyable class with only a destructor object (no base class)\n * @param destructorObj - Object containing the destructor method\n * @returns A destroyable class with static destroy and isDestroyable methods\n */\nexport function Destroyable<Allocated extends Record<PropertyKey, any> = Record<PropertyKey, any>>(\n\tdestructorObj: Destructor<Allocated>\n): (new () => { [allocatedValues]: Allocated }) & {\n\tdestroy(obj: any): boolean\n\tisDestroyable(obj: any): boolean\n}\n\n/**\n * Creates a destroyable class with a base class (requires [destructor] method)\n * @param base - The base class to extend\n * @returns A destroyable class with static destroy and isDestroyable methods\n */\nexport function Destroyable<\n\tT extends new (\n\t\t...args: any[]\n\t) => any,\n\tAllocated extends Record<PropertyKey, any> = Record<PropertyKey, any>,\n>(\n\tbase: T\n): (new (\n\t...args: ConstructorParameters<T>\n) => AbstractDestroyable<Allocated> & InstanceType<T> & { [allocatedValues]: Allocated }) & {\n\tdestroy(obj: InstanceType<T>): boolean\n\tisDestroyable(obj: InstanceType<T>): boolean\n}\n\n/**\n * Creates an abstract destroyable base class\n * @returns An abstract destroyable class with static destroy and isDestroyable methods\n */\nexport function Destroyable<\n\tAllocated extends Record<PropertyKey, any> = Record<PropertyKey, any>,\n>(): abstract new () => (AbstractDestroyable<Allocated> & {\n\t[allocatedValues]: Allocated\n}) & {\n\tdestroy(obj: any): boolean\n\tisDestroyable(obj: any): boolean\n}\n\nexport function Destroyable<\n\tT extends new (\n\t\t...args: any[]\n\t) => any,\n\tAllocated extends Record<PropertyKey, any> = Record<PropertyKey, any>,\n>(base?: T | Destructor<Allocated>, destructorObj?: Destructor<Allocated>) {\n\tif (base && typeof base !== 'function') {\n\t\tdestructorObj = base as Destructor<Allocated>\n\t\tbase = undefined\n\t}\n\tif (!base) {\n\t\tbase = class { } as T\n\t}\n\n\treturn class Destroyable extends (base as T) {\n\t\tstatic readonly destructors = new WeakMap<any, () => void>()\n\t\tstatic destroy(obj: Destroyable) {\n\t\t\tconst destructor = Destroyable.destructors.get(obj)\n\t\t\tif (!destructor) return false\n\t\t\tfr.unregister(obj[allocatedValues])\n\t\t\tDestroyable.destructors.delete(obj)\n\t\t\tObject.setPrototypeOf(obj, new Proxy({}, destroyedHandler))\n\t\t\t// Clear all own properties\n\t\t\tfor (const key of Object.getOwnPropertyNames(obj)) {\n\t\t\t\tdelete (obj as any)[key]\n\t\t\t}\n\t\t\tdestructor()\n\t\t\treturn true\n\t\t}\n\t\tstatic isDestroyable(obj: Destroyable) {\n\t\t\treturn Destroyable.destructors.has(obj)\n\t\t}\n\n\t\t[forwardProperties]!: PropertyKey[]\n\t\treadonly [allocatedValues]: Allocated\n\t\tconstructor(...args: any[]) {\n\t\t\tsuper(...args)\n\t\t\tconst allocated = {} as Allocated\n\t\t\tthis[allocatedValues] = allocated\n\t\t\t// @ts-expect-error `this` is an AbstractDestroyable\n\t\t\tconst myDestructor = destructorObj?.destructor ?? this[destructor]\n\t\t\tif (!myDestructor) {\n\t\t\t\tthrow new DestructionError('Destructor is not defined')\n\t\t\t}\n\t\t\tfunction destruction() {\n\t\t\t\tmyDestructor(allocated)\n\t\t\t}\n\t\t\tDestroyable.destructors.set(this, destruction)\n\t\t\tfr.register(this, destruction, allocated)\n\t\t}\n\t}\n}\n\nconst forwardProperties = Symbol('forwardProperties')\n/**\n * Decorator that marks properties to be stored in the allocated object and passed to the destructor\n * Use with accessor properties or explicit get/set pairs\n */\nexport const allocated = decorator({\n\tsetter(original, _target, propertyKey) {\n\t\treturn function (value) {\n\t\t\tthis[allocatedValues][propertyKey] = value\n\t\t\treturn original.call(this, value)\n\t\t}\n\t},\n})\n\n/**\n * Registers a callback to be called when an object is garbage collected\n * @param cb - The callback function to execute on garbage collection\n * @returns The object whose reference can be collected\n */\nexport function callOnGC(cb: () => void) {\n\tlet called = false\n\tconst forward = () => {\n\t\tif (called) return\n\t\tcalled = true\n\t\tcb()\n\t}\n\tfr.register(forward, cb, cb)\n\treturn forward\n}\n\n/**\n * Context Manager Protocol for `using` statement integration\n * Provides automatic resource cleanup when used with the `using` statement\n */\nexport interface ContextManager<T = any> {\n\t[Symbol.dispose](): void\n\tvalue?: T\n}\n"],"names":["decorator"],"mappings":"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"}
@@ -1,66 +0,0 @@
1
- import { d as __classPrivateFieldGet } from './chunks/_tslib-MCKDzsSq.esm.js';
2
-
3
- var _Eventful_events, _Eventful_hooks;
4
- /**
5
- * A type-safe event system that provides a clean API for event handling
6
- * @template Events - The event map defining event names and their handler signatures
7
- */
8
- class Eventful {
9
- constructor() {
10
- _Eventful_events.set(this, new Map());
11
- _Eventful_hooks.set(this, []);
12
- }
13
- hook(cb) {
14
- if (!__classPrivateFieldGet(this, _Eventful_hooks, "f").includes(cb))
15
- __classPrivateFieldGet(this, _Eventful_hooks, "f").push(cb);
16
- return () => {
17
- __classPrivateFieldGet(this, _Eventful_hooks, "f").splice(__classPrivateFieldGet(this, _Eventful_hooks, "f").indexOf(cb), 1);
18
- };
19
- }
20
- on(eventOrEvents, cb) {
21
- if (typeof eventOrEvents === 'object') {
22
- for (const e of Object.keys(eventOrEvents)) {
23
- this.on(e, eventOrEvents[e]);
24
- }
25
- }
26
- else if (cb !== undefined) {
27
- let callbacks = __classPrivateFieldGet(this, _Eventful_events, "f").get(eventOrEvents);
28
- if (!callbacks) {
29
- callbacks = [];
30
- __classPrivateFieldGet(this, _Eventful_events, "f").set(eventOrEvents, callbacks);
31
- }
32
- callbacks.push(cb);
33
- }
34
- // @ts-expect-error Generic case leads to generic case
35
- return () => this.off(eventOrEvents, cb);
36
- }
37
- off(eventOrEvents, cb) {
38
- if (typeof eventOrEvents === 'object') {
39
- for (const e of Object.keys(eventOrEvents)) {
40
- this.off(e, eventOrEvents[e]);
41
- }
42
- }
43
- else if (cb !== null && cb !== undefined) {
44
- const callbacks = __classPrivateFieldGet(this, _Eventful_events, "f").get(eventOrEvents);
45
- if (callbacks) {
46
- __classPrivateFieldGet(this, _Eventful_events, "f").set(eventOrEvents, callbacks.filter((c) => c !== cb));
47
- }
48
- }
49
- else {
50
- // Remove all listeners for this event
51
- __classPrivateFieldGet(this, _Eventful_events, "f").delete(eventOrEvents);
52
- }
53
- }
54
- emit(event, ...args) {
55
- const callbacks = __classPrivateFieldGet(this, _Eventful_events, "f").get(event);
56
- if (callbacks)
57
- for (const cb of callbacks)
58
- cb.apply(this, args);
59
- for (const cb of __classPrivateFieldGet(this, _Eventful_hooks, "f"))
60
- cb.call(this, event, ...args);
61
- }
62
- }
63
- _Eventful_events = new WeakMap(), _Eventful_hooks = new WeakMap();
64
-
65
- export { Eventful };
66
- //# sourceMappingURL=eventful.esm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"eventful.esm.js","sources":["../src/eventful.ts"],"sourcesContent":["/**\n * Base type for event maps - all event handlers must be functions\n */\nexport type EventsBase = Record<string, (...args: any[]) => void>\n/**\n * A type-safe event system that provides a clean API for event handling\n * @template Events - The event map defining event names and their handler signatures\n */\nexport class Eventful<Events extends EventsBase> {\n\treadonly #events = new Map<keyof Events, ((...args: any[]) => void)[]>()\n\treadonly #hooks = [] as ((...args: any[]) => void)[]\n\n\tpublic hook(\n\t\tcb: <EventType extends keyof Events>(\n\t\t\tevent: EventType,\n\t\t\t...args: Parameters<Events[EventType]>\n\t\t) => void\n\t): () => void {\n\t\tif (!this.#hooks.includes(cb)) this.#hooks.push(cb)\n\t\treturn () => {\n\t\t\tthis.#hooks.splice(this.#hooks.indexOf(cb), 1)\n\t\t}\n\t}\n\n\tpublic on(events: Partial<Events>): void\n\tpublic on<EventType extends keyof Events>(event: EventType, cb: Events[EventType]): () => void\n\tpublic on<EventType extends keyof Events>(\n\t\teventOrEvents: EventType | Partial<Events>,\n\t\tcb?: Events[EventType]\n\t): () => void {\n\t\tif (typeof eventOrEvents === 'object') {\n\t\t\tfor (const e of Object.keys(eventOrEvents) as (keyof Events)[]) {\n\t\t\t\tthis.on(e, eventOrEvents[e]!)\n\t\t\t}\n\t\t} else if (cb !== undefined) {\n\t\t\tlet callbacks = this.#events.get(eventOrEvents)\n\t\t\tif (!callbacks) {\n\t\t\t\tcallbacks = []\n\t\t\t\tthis.#events.set(eventOrEvents, callbacks)\n\t\t\t}\n\t\t\tcallbacks.push(cb)\n\t\t}\n\t\t// @ts-expect-error Generic case leads to generic case\n\t\treturn () => this.off(eventOrEvents, cb)\n\t}\n\tpublic off(events: Partial<Events>): void\n\tpublic off<EventType extends keyof Events>(event: EventType, cb?: Events[EventType]): void\n\tpublic off<EventType extends keyof Events>(\n\t\teventOrEvents: EventType | Partial<Events>,\n\t\tcb?: Events[EventType]\n\t): void {\n\t\tif (typeof eventOrEvents === 'object') {\n\t\t\tfor (const e of Object.keys(eventOrEvents) as (keyof Events)[]) {\n\t\t\t\tthis.off(e, eventOrEvents[e])\n\t\t\t}\n\t\t} else if (cb !== null && cb !== undefined) {\n\t\t\tconst callbacks = this.#events.get(eventOrEvents)\n\t\t\tif (callbacks) {\n\t\t\t\tthis.#events.set(\n\t\t\t\t\teventOrEvents,\n\t\t\t\t\tcallbacks.filter((c) => c !== cb)\n\t\t\t\t)\n\t\t\t}\n\t\t} else {\n\t\t\t// Remove all listeners for this event\n\t\t\tthis.#events.delete(eventOrEvents)\n\t\t}\n\t}\n\tpublic emit<EventType extends keyof Events>(\n\t\tevent: EventType,\n\t\t...args: Parameters<Events[EventType]>\n\t) {\n\t\tconst callbacks = this.#events.get(event)\n\t\tif (callbacks) for (const cb of callbacks) cb.apply(this, args)\n\t\tfor (const cb of this.#hooks) cb.call(this, event, ...args)\n\t}\n}\n"],"names":[],"mappings":"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"}
package/dist/eventful.js DELETED
@@ -1,68 +0,0 @@
1
- 'use strict';
2
-
3
- var _tslib = require('./chunks/_tslib-BgjropY9.js');
4
-
5
- var _Eventful_events, _Eventful_hooks;
6
- /**
7
- * A type-safe event system that provides a clean API for event handling
8
- * @template Events - The event map defining event names and their handler signatures
9
- */
10
- class Eventful {
11
- constructor() {
12
- _Eventful_events.set(this, new Map());
13
- _Eventful_hooks.set(this, []);
14
- }
15
- hook(cb) {
16
- if (!_tslib.__classPrivateFieldGet(this, _Eventful_hooks, "f").includes(cb))
17
- _tslib.__classPrivateFieldGet(this, _Eventful_hooks, "f").push(cb);
18
- return () => {
19
- _tslib.__classPrivateFieldGet(this, _Eventful_hooks, "f").splice(_tslib.__classPrivateFieldGet(this, _Eventful_hooks, "f").indexOf(cb), 1);
20
- };
21
- }
22
- on(eventOrEvents, cb) {
23
- if (typeof eventOrEvents === 'object') {
24
- for (const e of Object.keys(eventOrEvents)) {
25
- this.on(e, eventOrEvents[e]);
26
- }
27
- }
28
- else if (cb !== undefined) {
29
- let callbacks = _tslib.__classPrivateFieldGet(this, _Eventful_events, "f").get(eventOrEvents);
30
- if (!callbacks) {
31
- callbacks = [];
32
- _tslib.__classPrivateFieldGet(this, _Eventful_events, "f").set(eventOrEvents, callbacks);
33
- }
34
- callbacks.push(cb);
35
- }
36
- // @ts-expect-error Generic case leads to generic case
37
- return () => this.off(eventOrEvents, cb);
38
- }
39
- off(eventOrEvents, cb) {
40
- if (typeof eventOrEvents === 'object') {
41
- for (const e of Object.keys(eventOrEvents)) {
42
- this.off(e, eventOrEvents[e]);
43
- }
44
- }
45
- else if (cb !== null && cb !== undefined) {
46
- const callbacks = _tslib.__classPrivateFieldGet(this, _Eventful_events, "f").get(eventOrEvents);
47
- if (callbacks) {
48
- _tslib.__classPrivateFieldGet(this, _Eventful_events, "f").set(eventOrEvents, callbacks.filter((c) => c !== cb));
49
- }
50
- }
51
- else {
52
- // Remove all listeners for this event
53
- _tslib.__classPrivateFieldGet(this, _Eventful_events, "f").delete(eventOrEvents);
54
- }
55
- }
56
- emit(event, ...args) {
57
- const callbacks = _tslib.__classPrivateFieldGet(this, _Eventful_events, "f").get(event);
58
- if (callbacks)
59
- for (const cb of callbacks)
60
- cb.apply(this, args);
61
- for (const cb of _tslib.__classPrivateFieldGet(this, _Eventful_hooks, "f"))
62
- cb.call(this, event, ...args);
63
- }
64
- }
65
- _Eventful_events = new WeakMap(), _Eventful_hooks = new WeakMap();
66
-
67
- exports.Eventful = Eventful;
68
- //# sourceMappingURL=eventful.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"eventful.js","sources":["../src/eventful.ts"],"sourcesContent":["/**\n * Base type for event maps - all event handlers must be functions\n */\nexport type EventsBase = Record<string, (...args: any[]) => void>\n/**\n * A type-safe event system that provides a clean API for event handling\n * @template Events - The event map defining event names and their handler signatures\n */\nexport class Eventful<Events extends EventsBase> {\n\treadonly #events = new Map<keyof Events, ((...args: any[]) => void)[]>()\n\treadonly #hooks = [] as ((...args: any[]) => void)[]\n\n\tpublic hook(\n\t\tcb: <EventType extends keyof Events>(\n\t\t\tevent: EventType,\n\t\t\t...args: Parameters<Events[EventType]>\n\t\t) => void\n\t): () => void {\n\t\tif (!this.#hooks.includes(cb)) this.#hooks.push(cb)\n\t\treturn () => {\n\t\t\tthis.#hooks.splice(this.#hooks.indexOf(cb), 1)\n\t\t}\n\t}\n\n\tpublic on(events: Partial<Events>): void\n\tpublic on<EventType extends keyof Events>(event: EventType, cb: Events[EventType]): () => void\n\tpublic on<EventType extends keyof Events>(\n\t\teventOrEvents: EventType | Partial<Events>,\n\t\tcb?: Events[EventType]\n\t): () => void {\n\t\tif (typeof eventOrEvents === 'object') {\n\t\t\tfor (const e of Object.keys(eventOrEvents) as (keyof Events)[]) {\n\t\t\t\tthis.on(e, eventOrEvents[e]!)\n\t\t\t}\n\t\t} else if (cb !== undefined) {\n\t\t\tlet callbacks = this.#events.get(eventOrEvents)\n\t\t\tif (!callbacks) {\n\t\t\t\tcallbacks = []\n\t\t\t\tthis.#events.set(eventOrEvents, callbacks)\n\t\t\t}\n\t\t\tcallbacks.push(cb)\n\t\t}\n\t\t// @ts-expect-error Generic case leads to generic case\n\t\treturn () => this.off(eventOrEvents, cb)\n\t}\n\tpublic off(events: Partial<Events>): void\n\tpublic off<EventType extends keyof Events>(event: EventType, cb?: Events[EventType]): void\n\tpublic off<EventType extends keyof Events>(\n\t\teventOrEvents: EventType | Partial<Events>,\n\t\tcb?: Events[EventType]\n\t): void {\n\t\tif (typeof eventOrEvents === 'object') {\n\t\t\tfor (const e of Object.keys(eventOrEvents) as (keyof Events)[]) {\n\t\t\t\tthis.off(e, eventOrEvents[e])\n\t\t\t}\n\t\t} else if (cb !== null && cb !== undefined) {\n\t\t\tconst callbacks = this.#events.get(eventOrEvents)\n\t\t\tif (callbacks) {\n\t\t\t\tthis.#events.set(\n\t\t\t\t\teventOrEvents,\n\t\t\t\t\tcallbacks.filter((c) => c !== cb)\n\t\t\t\t)\n\t\t\t}\n\t\t} else {\n\t\t\t// Remove all listeners for this event\n\t\t\tthis.#events.delete(eventOrEvents)\n\t\t}\n\t}\n\tpublic emit<EventType extends keyof Events>(\n\t\tevent: EventType,\n\t\t...args: Parameters<Events[EventType]>\n\t) {\n\t\tconst callbacks = this.#events.get(event)\n\t\tif (callbacks) for (const cb of callbacks) cb.apply(this, args)\n\t\tfor (const cb of this.#hooks) cb.call(this, event, ...args)\n\t}\n}\n"],"names":["__classPrivateFieldGet"],"mappings":"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"}
package/dist/index.esm.js DELETED
@@ -1,53 +0,0 @@
1
- export { D as DecoratorError, R as ReactiveError, a as ReflectGet, b as ReflectSet, c as arrayEquals, d as decorator, e as deepCompare, i as isConstructor, f as isOwnAccessor, l as legacyDecorator, m as modernDecorator, o as reactiveOptions, r as renamed, z as zip } from './chunks/decorator-BGILvPtN.esm.js';
2
- export { Destroyable, DestructionError, allocated, allocatedValues, callOnGC, destructor } from './destroyable.esm.js';
3
- export { Eventful } from './eventful.esm.js';
4
- export { ArrayReadForward, Indexable, forwardArray, getAt, setAt } from './indexable.esm.js';
5
- export { I as IterableWeakMap, a as IterableWeakSet, R as ReactiveBase, b as ReadOnlyError, c as Register, d as addBatchCleanup, e as atomic, f as batch, g as biDi, h as buildReactivityGraph, i as cleanedBy, j as cleanup, k as deepWatch, l as defer, m as derived, n as effect, o as enableDevTools, p as getActivationLog, q as getActiveEffect, r as getActiveProjection, s as getState, t as immutables, u as isDevtoolsEnabled, v as isNonReactive, w as isReactive, x as isZoneEnabled, y as mapped, z as memoize, A as mixin, B as organize, C as organized, D as profileInfo, E as project, F as reactive, G as reduced, H as register, J as registerEffectForDebug, K as registerNativeReactivity, L as registerObjectForDebug, M as root, N as setEffectName, O as setObjectName, P as setZoneEnabled, Q as touched, S as touched1, T as trackEffect, U as unreactive, V as untracked, W as unwrap, X as watch } from './chunks/index-DiP0RXoZ.esm.js';
6
- export { cache, cached, debounce, deprecated, describe, isCached, throttle } from './std-decorators.esm.js';
7
- import './chunks/_tslib-MCKDzsSq.esm.js';
8
-
9
- var version$1 = "1.0.6";
10
- var pkg = {
11
- version: version$1};
12
-
13
- const { version } = pkg;
14
- // Singleton verification
15
- const GLOBAL_MUTTS_KEY = '__MUTTS_INSTANCE__';
16
- const globalScope = (typeof globalThis !== 'undefined' ? globalThis :
17
- (typeof window !== 'undefined' ? window :
18
- (typeof global !== 'undefined' ? global : false)));
19
- if (globalScope) {
20
- // Detect the source of this instance safely across different environments
21
- let source = 'mutts/index';
22
- try {
23
- // @ts-ignore
24
- if (typeof __filename !== 'undefined')
25
- source = __filename;
26
- // @ts-ignore
27
- else {
28
- // Using eval to avoid SyntaxError in CJS environments where import.meta is not allowed
29
- const meta = eval('import.meta');
30
- if (meta && meta.url)
31
- source = meta.url;
32
- }
33
- }
34
- catch (e) {
35
- // Fallback for environments where neither is available or accessible
36
- }
37
- const currentSourceInfo = {
38
- version,
39
- source,
40
- timestamp: Date.now()
41
- };
42
- if (globalScope[GLOBAL_MUTTS_KEY]) {
43
- const existing = globalScope[GLOBAL_MUTTS_KEY];
44
- throw new Error(`[Mutts] Multiple instances detected!\n` +
45
- `Existing instance: ${JSON.stringify(existing, null, 2)}\n` +
46
- `New instance: ${JSON.stringify(currentSourceInfo, null, 2)}\n` +
47
- `This usually happens when 'mutts' is both installed as a dependency and bundled, ` +
48
- `or when different versions are loaded. ` +
49
- `Please check your build configuration (aliases, externals) to ensure a single source of truth.`);
50
- }
51
- globalScope[GLOBAL_MUTTS_KEY] = currentSourceInfo;
52
- }
53
- //# sourceMappingURL=index.esm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.esm.js","sources":["../src/index.ts"],"sourcesContent":["export * from './decorator'\nexport * from './destroyable'\nexport * from './eventful'\nexport * from './indexable'\nexport * from './iterableWeak'\nexport * from './mixins'\nexport * from './reactive'\nexport * from './std-decorators'\nexport * from './utils'\n\nimport pkg from '../package.json'\nconst { version } = pkg\n\n// Singleton verification\nconst GLOBAL_MUTTS_KEY = '__MUTTS_INSTANCE__'\nconst globalScope = \n\t(typeof globalThis !== 'undefined' ? globalThis : \n\t(typeof window !== 'undefined' ? window : \n\t(typeof global !== 'undefined' ? global : false))) as any\nif(globalScope) {\n\t// Detect the source of this instance safely across different environments\n\tlet source = 'mutts/index'\n\ttry {\n\t\t// @ts-ignore\n\t\tif (typeof __filename !== 'undefined') source = __filename\n\t\t// @ts-ignore\n\t\telse {\n\t\t\t// Using eval to avoid SyntaxError in CJS environments where import.meta is not allowed\n\t\t\tconst meta = eval('import.meta')\n\t\t\tif (meta && meta.url) source = meta.url\n\t\t}\n\t} catch (e) {\n\t\t// Fallback for environments where neither is available or accessible\n\t}\n\n\tconst currentSourceInfo = {\n\t\tversion,\n\t\tsource,\n\t\ttimestamp: Date.now()\n\t}\n\n\tif (globalScope[GLOBAL_MUTTS_KEY]) {\n\t\tconst existing = globalScope[GLOBAL_MUTTS_KEY]\n\t\tthrow new Error(\n\t\t\t`[Mutts] Multiple instances detected!\\n` + \n\t\t\t`Existing instance: ${JSON.stringify(existing, null, 2)}\\n` +\n\t\t\t`New instance: ${JSON.stringify(currentSourceInfo, null, 2)}\\n` +\n\t\t\t`This usually happens when 'mutts' is both installed as a dependency and bundled, ` +\n\t\t\t`or when different versions are loaded. ` +\n\t\t\t`Please check your build configuration (aliases, externals) to ensure a single source of truth.`\n\t\t)\n\t}\n\n\tglobalScope[GLOBAL_MUTTS_KEY] = currentSourceInfo\n}\n"],"names":[],"mappings":";;;;;;;;;;;;AAWA,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG;AAEvB;AACA,MAAM,gBAAgB,GAAG,oBAAoB;AAC7C,MAAM,WAAW,IACf,OAAO,UAAU,KAAK,WAAW,GAAG,UAAU;KAC9C,OAAO,MAAM,KAAK,WAAW,GAAG,MAAM;AACvC,SAAC,OAAO,MAAM,KAAK,WAAW,GAAG,MAAM,GAAG,KAAK,CAAC,CAAC,CAAQ;AAC1D,IAAG,WAAW,EAAE;;IAEf,IAAI,MAAM,GAAG,aAAa;AAC1B,IAAA,IAAI;;QAEH,IAAI,OAAO,UAAU,KAAK,WAAW;YAAE,MAAM,GAAG,UAAU;;aAErD;;AAEJ,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC;AAChC,YAAA,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG;AAAE,gBAAA,MAAM,GAAG,IAAI,CAAC,GAAG;QACxC;IACD;IAAE,OAAO,CAAC,EAAE;;IAEZ;AAEA,IAAA,MAAM,iBAAiB,GAAG;QACzB,OAAO;QACP,MAAM;AACN,QAAA,SAAS,EAAE,IAAI,CAAC,GAAG;KACnB;AAED,IAAA,IAAI,WAAW,CAAC,gBAAgB,CAAC,EAAE;AAClC,QAAA,MAAM,QAAQ,GAAG,WAAW,CAAC,gBAAgB,CAAC;QAC9C,MAAM,IAAI,KAAK,CACd,CAAA,sCAAA,CAAwC;YACxC,CAAA,mBAAA,EAAsB,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA,EAAA,CAAI;YAC3D,CAAA,cAAA,EAAiB,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA,EAAA,CAAI;YAC/D,CAAA,iFAAA,CAAmF;YACnF,CAAA,uCAAA,CAAyC;AACzC,YAAA,CAAA,8FAAA,CAAgG,CAChG;IACF;AAEA,IAAA,WAAW,CAAC,gBAAgB,CAAC,GAAG,iBAAiB;AAClD"}
package/dist/index.js DELETED
@@ -1,139 +0,0 @@
1
- 'use strict';
2
-
3
- var decorator = require('./chunks/decorator-BQ2eBTCj.js');
4
- var destroyable = require('./destroyable.js');
5
- var eventful = require('./eventful.js');
6
- var indexable = require('./indexable.js');
7
- var reactive = require('./chunks/index-CDCOjzTy.js');
8
- var stdDecorators = require('./std-decorators.js');
9
- require('./chunks/_tslib-BgjropY9.js');
10
-
11
- var version$1 = "1.0.6";
12
- var pkg = {
13
- version: version$1};
14
-
15
- const { version } = pkg;
16
- // Singleton verification
17
- const GLOBAL_MUTTS_KEY = '__MUTTS_INSTANCE__';
18
- const globalScope = (typeof globalThis !== 'undefined' ? globalThis :
19
- (typeof window !== 'undefined' ? window :
20
- (typeof global !== 'undefined' ? global : false)));
21
- if (globalScope) {
22
- // Detect the source of this instance safely across different environments
23
- let source = 'mutts/index';
24
- try {
25
- // @ts-ignore
26
- if (typeof __filename !== 'undefined')
27
- source = __filename;
28
- // @ts-ignore
29
- else {
30
- // Using eval to avoid SyntaxError in CJS environments where import.meta is not allowed
31
- const meta = eval('import.meta');
32
- if (meta && meta.url)
33
- source = meta.url;
34
- }
35
- }
36
- catch (e) {
37
- // Fallback for environments where neither is available or accessible
38
- }
39
- const currentSourceInfo = {
40
- version,
41
- source,
42
- timestamp: Date.now()
43
- };
44
- if (globalScope[GLOBAL_MUTTS_KEY]) {
45
- const existing = globalScope[GLOBAL_MUTTS_KEY];
46
- throw new Error(`[Mutts] Multiple instances detected!\n` +
47
- `Existing instance: ${JSON.stringify(existing, null, 2)}\n` +
48
- `New instance: ${JSON.stringify(currentSourceInfo, null, 2)}\n` +
49
- `This usually happens when 'mutts' is both installed as a dependency and bundled, ` +
50
- `or when different versions are loaded. ` +
51
- `Please check your build configuration (aliases, externals) to ensure a single source of truth.`);
52
- }
53
- globalScope[GLOBAL_MUTTS_KEY] = currentSourceInfo;
54
- }
55
-
56
- exports.DecoratorError = decorator.DecoratorError;
57
- exports.ReactiveError = decorator.ReactiveError;
58
- exports.ReflectGet = decorator.ReflectGet;
59
- exports.ReflectSet = decorator.ReflectSet;
60
- exports.arrayEquals = decorator.arrayEquals;
61
- exports.decorator = decorator.decorator;
62
- exports.deepCompare = decorator.deepCompare;
63
- exports.isConstructor = decorator.isConstructor;
64
- exports.isOwnAccessor = decorator.isOwnAccessor;
65
- exports.legacyDecorator = decorator.legacyDecorator;
66
- exports.modernDecorator = decorator.modernDecorator;
67
- exports.reactiveOptions = decorator.options;
68
- exports.renamed = decorator.renamed;
69
- exports.zip = decorator.zip;
70
- exports.Destroyable = destroyable.Destroyable;
71
- exports.DestructionError = destroyable.DestructionError;
72
- exports.allocated = destroyable.allocated;
73
- exports.allocatedValues = destroyable.allocatedValues;
74
- exports.callOnGC = destroyable.callOnGC;
75
- exports.destructor = destroyable.destructor;
76
- exports.Eventful = eventful.Eventful;
77
- exports.ArrayReadForward = indexable.ArrayReadForward;
78
- exports.Indexable = indexable.Indexable;
79
- exports.forwardArray = indexable.forwardArray;
80
- exports.getAt = indexable.getAt;
81
- exports.setAt = indexable.setAt;
82
- exports.IterableWeakMap = reactive.IterableWeakMap;
83
- exports.IterableWeakSet = reactive.IterableWeakSet;
84
- exports.ReactiveBase = reactive.ReactiveBase;
85
- exports.ReadOnlyError = reactive.ReadOnlyError;
86
- exports.Register = reactive.Register;
87
- exports.addBatchCleanup = reactive.addBatchCleanup;
88
- exports.atomic = reactive.atomic;
89
- exports.batch = reactive.batch;
90
- exports.biDi = reactive.biDi;
91
- exports.buildReactivityGraph = reactive.buildReactivityGraph;
92
- exports.cleanedBy = reactive.cleanedBy;
93
- exports.cleanup = reactive.cleanup;
94
- exports.deepWatch = reactive.deepWatch;
95
- exports.defer = reactive.defer;
96
- exports.derived = reactive.derived;
97
- exports.effect = reactive.effect;
98
- exports.enableDevTools = reactive.enableDevTools;
99
- exports.getActivationLog = reactive.getActivationLog;
100
- exports.getActiveEffect = reactive.getActiveEffect;
101
- exports.getActiveProjection = reactive.getActiveProjection;
102
- exports.getState = reactive.getState;
103
- exports.immutables = reactive.immutables;
104
- exports.isDevtoolsEnabled = reactive.isDevtoolsEnabled;
105
- exports.isNonReactive = reactive.isNonReactive;
106
- exports.isReactive = reactive.isReactive;
107
- exports.isZoneEnabled = reactive.isZoneEnabled;
108
- exports.mapped = reactive.mapped;
109
- exports.memoize = reactive.memoize;
110
- exports.mixin = reactive.mixin;
111
- exports.organize = reactive.organize;
112
- exports.organized = reactive.organized;
113
- exports.profileInfo = reactive.profileInfo;
114
- exports.project = reactive.project;
115
- exports.reactive = reactive.reactive;
116
- exports.reduced = reactive.reduced;
117
- exports.register = reactive.register;
118
- exports.registerEffectForDebug = reactive.registerEffectForDebug;
119
- exports.registerNativeReactivity = reactive.registerNativeReactivity;
120
- exports.registerObjectForDebug = reactive.registerObjectForDebug;
121
- exports.root = reactive.root;
122
- exports.setEffectName = reactive.setEffectName;
123
- exports.setObjectName = reactive.setObjectName;
124
- exports.setZoneEnabled = reactive.setZoneEnabled;
125
- exports.touched = reactive.touched;
126
- exports.touched1 = reactive.touched1;
127
- exports.trackEffect = reactive.trackEffect;
128
- exports.unreactive = reactive.unreactive;
129
- exports.untracked = reactive.untracked;
130
- exports.unwrap = reactive.unwrap;
131
- exports.watch = reactive.watch;
132
- exports.cache = stdDecorators.cache;
133
- exports.cached = stdDecorators.cached;
134
- exports.debounce = stdDecorators.debounce;
135
- exports.deprecated = stdDecorators.deprecated;
136
- exports.describe = stdDecorators.describe;
137
- exports.isCached = stdDecorators.isCached;
138
- exports.throttle = stdDecorators.throttle;
139
- //# sourceMappingURL=index.js.map