@thomas-siegfried/tapout 0.0.1

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 (223) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1206 -0
  3. package/dist/applyBindings.d.ts +10 -0
  4. package/dist/applyBindings.d.ts.map +1 -0
  5. package/dist/applyBindings.js +261 -0
  6. package/dist/applyBindings.js.map +1 -0
  7. package/dist/arrayToDomMapping.d.ts +14 -0
  8. package/dist/arrayToDomMapping.d.ts.map +1 -0
  9. package/dist/arrayToDomMapping.js +219 -0
  10. package/dist/arrayToDomMapping.js.map +1 -0
  11. package/dist/attributeInterpolationMarkup.d.ts +6 -0
  12. package/dist/attributeInterpolationMarkup.d.ts.map +1 -0
  13. package/dist/attributeInterpolationMarkup.js +70 -0
  14. package/dist/attributeInterpolationMarkup.js.map +1 -0
  15. package/dist/bindingContext.d.ts +38 -0
  16. package/dist/bindingContext.d.ts.map +1 -0
  17. package/dist/bindingContext.js +138 -0
  18. package/dist/bindingContext.js.map +1 -0
  19. package/dist/bindingEvent.d.ts +33 -0
  20. package/dist/bindingEvent.d.ts.map +1 -0
  21. package/dist/bindingEvent.js +144 -0
  22. package/dist/bindingEvent.js.map +1 -0
  23. package/dist/bindingProvider.d.ts +38 -0
  24. package/dist/bindingProvider.d.ts.map +1 -0
  25. package/dist/bindingProvider.js +145 -0
  26. package/dist/bindingProvider.js.map +1 -0
  27. package/dist/bindings.d.ts +2 -0
  28. package/dist/bindings.d.ts.map +1 -0
  29. package/dist/bindings.js +862 -0
  30. package/dist/bindings.js.map +1 -0
  31. package/dist/compareArrays.d.ts +13 -0
  32. package/dist/compareArrays.d.ts.map +1 -0
  33. package/dist/compareArrays.js +91 -0
  34. package/dist/compareArrays.js.map +1 -0
  35. package/dist/componentBinding.d.ts +4 -0
  36. package/dist/componentBinding.d.ts.map +1 -0
  37. package/dist/componentBinding.js +240 -0
  38. package/dist/componentBinding.js.map +1 -0
  39. package/dist/componentDecorator.d.ts +22 -0
  40. package/dist/componentDecorator.d.ts.map +1 -0
  41. package/dist/componentDecorator.js +32 -0
  42. package/dist/componentDecorator.js.map +1 -0
  43. package/dist/components.d.ts +34 -0
  44. package/dist/components.d.ts.map +1 -0
  45. package/dist/components.js +256 -0
  46. package/dist/components.js.map +1 -0
  47. package/dist/computed.d.ts +54 -0
  48. package/dist/computed.d.ts.map +1 -0
  49. package/dist/computed.js +376 -0
  50. package/dist/computed.js.map +1 -0
  51. package/dist/configure.d.ts +4 -0
  52. package/dist/configure.d.ts.map +1 -0
  53. package/dist/configure.js +48 -0
  54. package/dist/configure.js.map +1 -0
  55. package/dist/controlFlowBindings.d.ts +2 -0
  56. package/dist/controlFlowBindings.d.ts.map +1 -0
  57. package/dist/controlFlowBindings.js +151 -0
  58. package/dist/controlFlowBindings.js.map +1 -0
  59. package/dist/core.d.ts +29 -0
  60. package/dist/core.d.ts.map +1 -0
  61. package/dist/core.js +27 -0
  62. package/dist/core.js.map +1 -0
  63. package/dist/decorators.d.ts +40 -0
  64. package/dist/decorators.d.ts.map +1 -0
  65. package/dist/decorators.js +276 -0
  66. package/dist/decorators.js.map +1 -0
  67. package/dist/dependencyDetection.d.ts +21 -0
  68. package/dist/dependencyDetection.d.ts.map +1 -0
  69. package/dist/dependencyDetection.js +53 -0
  70. package/dist/dependencyDetection.js.map +1 -0
  71. package/dist/disposable.d.ts +12 -0
  72. package/dist/disposable.d.ts.map +1 -0
  73. package/dist/disposable.js +29 -0
  74. package/dist/disposable.js.map +1 -0
  75. package/dist/domData.d.ts +6 -0
  76. package/dist/domData.d.ts.map +1 -0
  77. package/dist/domData.js +40 -0
  78. package/dist/domData.js.map +1 -0
  79. package/dist/domNodeDisposal.d.ts +7 -0
  80. package/dist/domNodeDisposal.d.ts.map +1 -0
  81. package/dist/domNodeDisposal.js +78 -0
  82. package/dist/domNodeDisposal.js.map +1 -0
  83. package/dist/effects.d.ts +13 -0
  84. package/dist/effects.d.ts.map +1 -0
  85. package/dist/effects.js +24 -0
  86. package/dist/effects.js.map +1 -0
  87. package/dist/event.d.ts +38 -0
  88. package/dist/event.d.ts.map +1 -0
  89. package/dist/event.js +138 -0
  90. package/dist/event.js.map +1 -0
  91. package/dist/expressionRewriting.d.ts +22 -0
  92. package/dist/expressionRewriting.d.ts.map +1 -0
  93. package/dist/expressionRewriting.js +169 -0
  94. package/dist/expressionRewriting.js.map +1 -0
  95. package/dist/extenders.d.ts +17 -0
  96. package/dist/extenders.d.ts.map +1 -0
  97. package/dist/extenders.js +75 -0
  98. package/dist/extenders.js.map +1 -0
  99. package/dist/filters.d.ts +5 -0
  100. package/dist/filters.d.ts.map +1 -0
  101. package/dist/filters.js +81 -0
  102. package/dist/filters.js.map +1 -0
  103. package/dist/index.d.ts +45 -0
  104. package/dist/index.d.ts.map +1 -0
  105. package/dist/index.js +35 -0
  106. package/dist/index.js.map +1 -0
  107. package/dist/interpolationMarkup.d.ts +6 -0
  108. package/dist/interpolationMarkup.d.ts.map +1 -0
  109. package/dist/interpolationMarkup.js +110 -0
  110. package/dist/interpolationMarkup.js.map +1 -0
  111. package/dist/memoization.d.ts +7 -0
  112. package/dist/memoization.d.ts.map +1 -0
  113. package/dist/memoization.js +59 -0
  114. package/dist/memoization.js.map +1 -0
  115. package/dist/namespacedBindings.d.ts +7 -0
  116. package/dist/namespacedBindings.d.ts.map +1 -0
  117. package/dist/namespacedBindings.js +81 -0
  118. package/dist/namespacedBindings.js.map +1 -0
  119. package/dist/observable.d.ts +13 -0
  120. package/dist/observable.d.ts.map +1 -0
  121. package/dist/observable.js +39 -0
  122. package/dist/observable.js.map +1 -0
  123. package/dist/observableArray.d.ts +58 -0
  124. package/dist/observableArray.d.ts.map +1 -0
  125. package/dist/observableArray.js +328 -0
  126. package/dist/observableArray.js.map +1 -0
  127. package/dist/options.d.ts +14 -0
  128. package/dist/options.d.ts.map +1 -0
  129. package/dist/options.js +12 -0
  130. package/dist/options.js.map +1 -0
  131. package/dist/selectExtensions.d.ts +4 -0
  132. package/dist/selectExtensions.d.ts.map +1 -0
  133. package/dist/selectExtensions.js +67 -0
  134. package/dist/selectExtensions.js.map +1 -0
  135. package/dist/slotBinding.d.ts +2 -0
  136. package/dist/slotBinding.d.ts.map +1 -0
  137. package/dist/slotBinding.js +63 -0
  138. package/dist/slotBinding.js.map +1 -0
  139. package/dist/subscribable.d.ts +57 -0
  140. package/dist/subscribable.d.ts.map +1 -0
  141. package/dist/subscribable.js +211 -0
  142. package/dist/subscribable.js.map +1 -0
  143. package/dist/tasks.d.ts +8 -0
  144. package/dist/tasks.d.ts.map +1 -0
  145. package/dist/tasks.js +68 -0
  146. package/dist/tasks.js.map +1 -0
  147. package/dist/templateEngine.d.ts +37 -0
  148. package/dist/templateEngine.d.ts.map +1 -0
  149. package/dist/templateEngine.js +60 -0
  150. package/dist/templateEngine.js.map +1 -0
  151. package/dist/templateRendering.d.ts +8 -0
  152. package/dist/templateRendering.d.ts.map +1 -0
  153. package/dist/templateRendering.js +322 -0
  154. package/dist/templateRendering.js.map +1 -0
  155. package/dist/templateRewriting.d.ts +7 -0
  156. package/dist/templateRewriting.d.ts.map +1 -0
  157. package/dist/templateRewriting.js +63 -0
  158. package/dist/templateRewriting.js.map +1 -0
  159. package/dist/templateSources.d.ts +19 -0
  160. package/dist/templateSources.d.ts.map +1 -0
  161. package/dist/templateSources.js +110 -0
  162. package/dist/templateSources.js.map +1 -0
  163. package/dist/utils.d.ts +8 -0
  164. package/dist/utils.d.ts.map +1 -0
  165. package/dist/utils.js +100 -0
  166. package/dist/utils.js.map +1 -0
  167. package/dist/utilsDom.d.ts +8 -0
  168. package/dist/utilsDom.d.ts.map +1 -0
  169. package/dist/utilsDom.js +81 -0
  170. package/dist/utilsDom.js.map +1 -0
  171. package/dist/virtualElements.d.ts +12 -0
  172. package/dist/virtualElements.d.ts.map +1 -0
  173. package/dist/virtualElements.js +141 -0
  174. package/dist/virtualElements.js.map +1 -0
  175. package/dist/wireParams.d.ts +6 -0
  176. package/dist/wireParams.d.ts.map +1 -0
  177. package/dist/wireParams.js +39 -0
  178. package/dist/wireParams.js.map +1 -0
  179. package/package.json +55 -0
  180. package/src/applyBindings.ts +372 -0
  181. package/src/arrayToDomMapping.ts +300 -0
  182. package/src/attributeInterpolationMarkup.ts +91 -0
  183. package/src/bindingContext.ts +207 -0
  184. package/src/bindingEvent.ts +198 -0
  185. package/src/bindingProvider.ts +260 -0
  186. package/src/bindings.ts +963 -0
  187. package/src/compareArrays.ts +122 -0
  188. package/src/componentBinding.ts +318 -0
  189. package/src/componentDecorator.ts +62 -0
  190. package/src/components.ts +367 -0
  191. package/src/computed.ts +439 -0
  192. package/src/configure.ts +52 -0
  193. package/src/controlFlowBindings.ts +206 -0
  194. package/src/core.ts +60 -0
  195. package/src/decorators.ts +407 -0
  196. package/src/dependencyDetection.ts +76 -0
  197. package/src/disposable.ts +36 -0
  198. package/src/domData.ts +42 -0
  199. package/src/domNodeDisposal.ts +94 -0
  200. package/src/effects.ts +29 -0
  201. package/src/event.ts +173 -0
  202. package/src/expressionRewriting.ts +219 -0
  203. package/src/extenders.ts +102 -0
  204. package/src/filters.ts +91 -0
  205. package/src/index.ts +150 -0
  206. package/src/interpolationMarkup.ts +130 -0
  207. package/src/memoization.ts +71 -0
  208. package/src/namespacedBindings.ts +132 -0
  209. package/src/observable.ts +48 -0
  210. package/src/observableArray.ts +397 -0
  211. package/src/options.ts +25 -0
  212. package/src/selectExtensions.ts +68 -0
  213. package/src/slotBinding.ts +84 -0
  214. package/src/subscribable.ts +266 -0
  215. package/src/tasks.ts +79 -0
  216. package/src/templateEngine.ts +108 -0
  217. package/src/templateRendering.ts +399 -0
  218. package/src/templateRewriting.ts +94 -0
  219. package/src/templateSources.ts +134 -0
  220. package/src/utils.ts +123 -0
  221. package/src/utilsDom.ts +87 -0
  222. package/src/virtualElements.ts +153 -0
  223. package/src/wireParams.ts +49 -0
@@ -0,0 +1,256 @@
1
+ import { Subscribable } from './subscribable.js';
2
+ import { schedule } from './tasks.js';
3
+ import { ignore } from './dependencyDetection.js';
4
+ import { parseHtmlFragment, cloneNodes } from './utilsDom.js';
5
+ // ---- Caches ----
6
+ const loadingSubscribablesCache = {};
7
+ const loadedDefinitionsCache = {};
8
+ // ---- Default Config Registry ----
9
+ const defaultConfigRegistry = {};
10
+ // ---- Registration API ----
11
+ export function register(name, config) {
12
+ if (!config) {
13
+ throw new Error('Invalid configuration for ' + name);
14
+ }
15
+ if (isRegistered(name)) {
16
+ throw new Error('Component ' + name + ' is already registered');
17
+ }
18
+ defaultConfigRegistry[name] = config;
19
+ }
20
+ export function isRegistered(name) {
21
+ return Object.prototype.hasOwnProperty.call(defaultConfigRegistry, name);
22
+ }
23
+ export function unregister(name) {
24
+ delete defaultConfigRegistry[name];
25
+ clearCachedDefinition(name);
26
+ }
27
+ export function clearCachedDefinition(name) {
28
+ delete loadedDefinitionsCache[name];
29
+ }
30
+ /** Reset all component caches. For testing only. */
31
+ export function _resetForTesting() {
32
+ for (const key of Object.keys(defaultConfigRegistry))
33
+ delete defaultConfigRegistry[key];
34
+ for (const key of Object.keys(loadedDefinitionsCache))
35
+ delete loadedDefinitionsCache[key];
36
+ for (const key of Object.keys(loadingSubscribablesCache))
37
+ delete loadingSubscribablesCache[key];
38
+ }
39
+ // ---- Loader Pipeline ----
40
+ export function get(name, callback) {
41
+ const cached = Object.prototype.hasOwnProperty.call(loadedDefinitionsCache, name)
42
+ ? loadedDefinitionsCache[name]
43
+ : undefined;
44
+ if (cached) {
45
+ if (cached.isSynchronousComponent) {
46
+ ignore(() => callback(cached.definition));
47
+ }
48
+ else {
49
+ schedule(() => callback(cached.definition));
50
+ }
51
+ }
52
+ else {
53
+ loadComponentAndNotify(name, callback);
54
+ }
55
+ }
56
+ function loadComponentAndNotify(name, callback) {
57
+ let subscribable = Object.prototype.hasOwnProperty.call(loadingSubscribablesCache, name)
58
+ ? loadingSubscribablesCache[name]
59
+ : undefined;
60
+ let completedAsync;
61
+ if (!subscribable) {
62
+ subscribable = loadingSubscribablesCache[name] = new Subscribable();
63
+ subscribable.subscribe(callback);
64
+ beginLoadingComponent(name, (definition, config) => {
65
+ const isSynchronousComponent = !!(config && config.synchronous);
66
+ loadedDefinitionsCache[name] = { definition, isSynchronousComponent };
67
+ delete loadingSubscribablesCache[name];
68
+ if (completedAsync || isSynchronousComponent) {
69
+ subscribable.notifySubscribers(definition);
70
+ }
71
+ else {
72
+ schedule(() => subscribable.notifySubscribers(definition));
73
+ }
74
+ });
75
+ completedAsync = true;
76
+ }
77
+ else {
78
+ subscribable.subscribe(callback);
79
+ }
80
+ }
81
+ function beginLoadingComponent(name, callback) {
82
+ getFirstResultFromLoaders('getConfig', [name], (config) => {
83
+ if (config) {
84
+ getFirstResultFromLoaders('loadComponent', [name, config], (definition) => {
85
+ callback(definition, config);
86
+ });
87
+ }
88
+ else {
89
+ callback(null, null);
90
+ }
91
+ });
92
+ }
93
+ export function getFirstResultFromLoaders(methodName, argsExceptCallback, callback, candidateLoaders) {
94
+ if (!candidateLoaders) {
95
+ candidateLoaders = loaders.slice(0);
96
+ }
97
+ const currentCandidateLoader = candidateLoaders.shift();
98
+ if (currentCandidateLoader) {
99
+ const methodInstance = currentCandidateLoader[methodName];
100
+ if (methodInstance) {
101
+ let wasAborted = false;
102
+ const synchronousReturnValue = methodInstance.apply(currentCandidateLoader, [...argsExceptCallback, (result) => {
103
+ if (wasAborted) {
104
+ callback(null);
105
+ }
106
+ else if (result !== null && result !== undefined) {
107
+ callback(result);
108
+ }
109
+ else {
110
+ getFirstResultFromLoaders(methodName, argsExceptCallback, callback, candidateLoaders);
111
+ }
112
+ }]);
113
+ if (synchronousReturnValue !== undefined) {
114
+ wasAborted = true;
115
+ if (!currentCandidateLoader.suppressLoaderExceptions) {
116
+ throw new Error('Component loaders must supply values by invoking the callback, not by returning values synchronously.');
117
+ }
118
+ }
119
+ }
120
+ else {
121
+ getFirstResultFromLoaders(methodName, argsExceptCallback, callback, candidateLoaders);
122
+ }
123
+ }
124
+ else {
125
+ callback(null);
126
+ }
127
+ }
128
+ // ---- Default Loader ----
129
+ function makeErrorCallback(componentName) {
130
+ return function (message) {
131
+ throw new Error("Component '" + componentName + "': " + message);
132
+ };
133
+ }
134
+ function resolveConfig(componentName, errorCallback, config, callback) {
135
+ const result = {};
136
+ let remaining = 2;
137
+ const tryIssueCallback = () => {
138
+ if (--remaining === 0) {
139
+ callback(result);
140
+ }
141
+ };
142
+ const templateConfig = config.template;
143
+ const viewModelConfig = config.viewModel;
144
+ if (templateConfig) {
145
+ getFirstResultFromLoaders('loadTemplate', [componentName, templateConfig], (resolvedTemplate) => {
146
+ result.template = resolvedTemplate;
147
+ tryIssueCallback();
148
+ });
149
+ }
150
+ else {
151
+ tryIssueCallback();
152
+ }
153
+ if (viewModelConfig) {
154
+ getFirstResultFromLoaders('loadViewModel', [componentName, viewModelConfig], (resolvedViewModel) => {
155
+ result.createViewModel = resolvedViewModel;
156
+ tryIssueCallback();
157
+ });
158
+ }
159
+ else {
160
+ tryIssueCallback();
161
+ }
162
+ }
163
+ function cloneNodesFromTemplateSourceElement(elemInstance) {
164
+ const tag = elemInstance.tagName?.toLowerCase();
165
+ switch (tag) {
166
+ case 'script':
167
+ return parseHtmlFragment(elemInstance.text);
168
+ case 'textarea':
169
+ return parseHtmlFragment(elemInstance.value);
170
+ case 'template': {
171
+ const content = elemInstance.content;
172
+ if (isDocumentFragment(content)) {
173
+ return cloneNodes(Array.from(content.childNodes));
174
+ }
175
+ break;
176
+ }
177
+ }
178
+ return cloneNodes(Array.from(elemInstance.childNodes));
179
+ }
180
+ function isDocumentFragment(obj) {
181
+ return !!obj && obj.nodeType === 11;
182
+ }
183
+ function isDomElement(obj) {
184
+ return !!obj && obj.nodeType === 1;
185
+ }
186
+ function resolveTemplate(errorCallback, templateConfig, callback) {
187
+ if (typeof templateConfig === 'string') {
188
+ callback(parseHtmlFragment(templateConfig));
189
+ }
190
+ else if (Array.isArray(templateConfig)) {
191
+ callback(templateConfig);
192
+ }
193
+ else if (isDocumentFragment(templateConfig)) {
194
+ callback(Array.from(templateConfig.childNodes));
195
+ }
196
+ else if (templateConfig && typeof templateConfig === 'object' && 'element' in templateConfig) {
197
+ const element = templateConfig.element;
198
+ if (isDomElement(element)) {
199
+ callback(cloneNodesFromTemplateSourceElement(element));
200
+ }
201
+ else if (typeof element === 'string') {
202
+ const elemInstance = (typeof document !== 'undefined' ? document : null)?.getElementById(element) ?? null;
203
+ if (elemInstance) {
204
+ callback(cloneNodesFromTemplateSourceElement(elemInstance));
205
+ }
206
+ else {
207
+ errorCallback('Cannot find element with ID ' + element);
208
+ }
209
+ }
210
+ else {
211
+ errorCallback('Unknown element type: ' + element);
212
+ }
213
+ }
214
+ else {
215
+ errorCallback('Unknown template value: ' + templateConfig);
216
+ }
217
+ }
218
+ function resolveViewModel(errorCallback, viewModelConfig, callback) {
219
+ if (typeof viewModelConfig === 'function') {
220
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
221
+ callback((params) => new viewModelConfig(params));
222
+ }
223
+ else if (viewModelConfig &&
224
+ typeof viewModelConfig === 'object' &&
225
+ typeof viewModelConfig.createViewModel === 'function') {
226
+ callback(viewModelConfig.createViewModel);
227
+ }
228
+ else if (viewModelConfig && typeof viewModelConfig === 'object' && 'instance' in viewModelConfig) {
229
+ const fixedInstance = viewModelConfig.instance;
230
+ callback(() => fixedInstance);
231
+ }
232
+ else if (viewModelConfig && typeof viewModelConfig === 'object' && 'viewModel' in viewModelConfig) {
233
+ resolveViewModel(errorCallback, viewModelConfig.viewModel, callback);
234
+ }
235
+ else {
236
+ errorCallback('Unknown viewModel value: ' + viewModelConfig);
237
+ }
238
+ }
239
+ export const defaultLoader = {
240
+ getConfig(name, callback) {
241
+ callback(isRegistered(name) ? defaultConfigRegistry[name] : null);
242
+ },
243
+ loadComponent(name, config, callback) {
244
+ const errorCallback = makeErrorCallback(name);
245
+ resolveConfig(name, errorCallback, config, callback);
246
+ },
247
+ loadTemplate(name, templateConfig, callback) {
248
+ resolveTemplate(makeErrorCallback(name), templateConfig, callback);
249
+ },
250
+ loadViewModel(name, viewModelConfig, callback) {
251
+ resolveViewModel(makeErrorCallback(name), viewModelConfig, callback);
252
+ },
253
+ };
254
+ // ---- Loader Array ----
255
+ export const loaders = [defaultLoader];
256
+ //# sourceMappingURL=components.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"components.js","sourceRoot":"","sources":["../src/components.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ import { Subscribable } from './subscribable.js';
2
+ import type { ReadableSubscribable } from './subscribable.js';
3
+ type AnySubscribable = Subscribable<any>;
4
+ export interface ComputedOptions<T> {
5
+ read: () => T;
6
+ write?: (value: T) => void;
7
+ pure?: boolean;
8
+ deferEvaluation?: boolean;
9
+ }
10
+ export declare class Computed<T> extends Subscribable<T> implements ReadableSubscribable<T> {
11
+ private _latestValue;
12
+ private _readFunction;
13
+ private _writeFunction;
14
+ private _isDisposed;
15
+ private _isBeingEvaluated;
16
+ private _isDirty;
17
+ private _pure;
18
+ private _isSleeping;
19
+ private _dependencyTracking;
20
+ private _dependenciesCount;
21
+ private _deferEvaluation;
22
+ constructor(evaluatorOrOptions: (() => T) | ComputedOptions<T>);
23
+ get hasWriteFunction(): boolean;
24
+ get isPure(): boolean;
25
+ get(): T;
26
+ peek(): T;
27
+ set(value: T): void;
28
+ getVersion(): number;
29
+ dispose(): void;
30
+ getDependenciesCount(): number;
31
+ getDependencies(): AnySubscribable[];
32
+ isActive(): boolean;
33
+ /** @internal */
34
+ private _isStale;
35
+ /** @internal */
36
+ _evalDelayed?: (isChange: boolean) => void;
37
+ limit(limitFunction: (callback: () => void) => () => void): void;
38
+ haveDependenciesChanged(): boolean;
39
+ protected beforeSubscriptionAdd(event: string): void;
40
+ protected afterSubscriptionRemove(event: string): void;
41
+ private _wake;
42
+ private _sleep;
43
+ private evaluateImmediate;
44
+ private _evaluateWithDependencyDetection;
45
+ private _addDependencyTracking;
46
+ private _subscribeToDependency;
47
+ }
48
+ export declare class PureComputed<T> extends Computed<T> {
49
+ constructor(evaluatorOrOptions: (() => T) | Omit<ComputedOptions<T>, 'pure'>);
50
+ }
51
+ export declare function isComputed(value: unknown): value is Computed<unknown>;
52
+ export declare function isPureComputed(value: unknown): value is PureComputed<unknown>;
53
+ export {};
54
+ //# sourceMappingURL=computed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"computed.d.ts","sourceRoot":"","sources":["../src/computed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA8B,MAAM,mBAAmB,CAAC;AAC7E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAK9D,KAAK,eAAe,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;AASzC,MAAM,WAAW,eAAe,CAAC,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC,CAAC;IACd,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IAC3B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,qBAAa,QAAQ,CAAC,CAAC,CAAE,SAAQ,YAAY,CAAC,CAAC,CAAE,YAAW,oBAAoB,CAAC,CAAC,CAAC;IACjF,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,aAAa,CAAwB;IAC7C,OAAO,CAAC,cAAc,CAAmC;IACzD,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,KAAK,CAAU;IACvB,OAAO,CAAC,WAAW,CAAU;IAC7B,OAAO,CAAC,mBAAmB,CAAiD;IAC5E,OAAO,CAAC,kBAAkB,CAAK;IAC/B,OAAO,CAAC,gBAAgB,CAAU;gBAEtB,kBAAkB,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC;IAyB9D,IAAI,gBAAgB,IAAI,OAAO,CAE9B;IAED,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,GAAG,IAAI,CAAC;IAUR,IAAI,IAAI,CAAC;IAUT,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI;IAOnB,UAAU,IAAI,MAAM;IAOpB,OAAO,IAAI,IAAI;IAoBf,oBAAoB,IAAI,MAAM;IAI9B,eAAe,IAAI,eAAe,EAAE;IAWpC,QAAQ,IAAI,OAAO;IAInB,gBAAgB;IAChB,OAAO,CAAC,QAAQ,CAAS;IACzB,gBAAgB;IAChB,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IAElC,KAAK,CAAC,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,MAAM,IAAI,GAAG,IAAI;IA0BzE,uBAAuB,IAAI,OAAO;cAkBf,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;cAY1C,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAS/D,OAAO,CAAC,KAAK;IAwCb,OAAO,CAAC,MAAM;IAgBd,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,gCAAgC;IAqFxC,OAAO,CAAC,sBAAsB;IAU9B,OAAO,CAAC,sBAAsB;CA6C/B;AAED,qBAAa,YAAY,CAAC,CAAC,CAAE,SAAQ,QAAQ,CAAC,CAAC,CAAC;gBAClC,kBAAkB,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC;CAO7E;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,QAAQ,CAAC,OAAO,CAAC,CAErE;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAAC,OAAO,CAAC,CAE7E"}