@valentin30/signal 0.2.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.prettierrc +21 -0
- package/package.json +86 -8
- package/src/core/computed.ts +68 -0
- package/src/core/contracts/consumer.ts +3 -0
- package/src/core/contracts/source.ts +7 -0
- package/src/core/interfaces/consumers.ts +8 -0
- package/src/core/interfaces/sources.ts +8 -0
- package/src/core/interfaces/value.ts +5 -0
- package/src/core/signal.ts +45 -0
- package/src/modules/common/contracts/addable.ts +3 -0
- package/src/modules/common/contracts/disposable.ts +3 -0
- package/src/modules/common/contracts/subscriber.ts +6 -0
- package/src/modules/common/types/callable.ts +1 -0
- package/src/modules/common/types/callback.ts +1 -0
- package/src/modules/common/utils/compare.ts +3 -0
- package/src/modules/common/utils/swap.ts +23 -0
- package/src/modules/consumers/factory.ts +26 -0
- package/src/modules/event/channel.ts +82 -0
- package/src/modules/event/effect.ts +45 -0
- package/src/modules/event/notifier.ts +38 -0
- package/src/modules/node/factory.ts +51 -0
- package/src/modules/node/index.ts +13 -0
- package/src/modules/node/source.ts +11 -0
- package/src/modules/scheduler/dispatch.ts +3 -0
- package/src/modules/scheduler/runner.ts +47 -0
- package/src/modules/sources/dynamic.ts +73 -0
- package/src/modules/sources/static.ts +49 -0
- package/src/modules/value/factory.ts +29 -0
- package/src/packages/builder/consumers.ts +11 -0
- package/src/packages/builder/node.ts +16 -0
- package/src/packages/builder/sources.ts +18 -0
- package/src/packages/builder/value.ts +11 -0
- package/src/packages/builder.ts +4 -0
- package/src/packages/core/computed.ts +15 -0
- package/src/packages/core/context.ts +5 -0
- package/src/packages/core/scheduler.ts +5 -0
- package/src/packages/core/signal.ts +12 -0
- package/src/packages/core.ts +2 -0
- package/src/packages/event/channel.ts +17 -0
- package/src/packages/event/effect.ts +15 -0
- package/src/packages/event/notifier.ts +14 -0
- package/src/packages/event.ts +3 -0
- package/src/packages/react/use-computed.ts +9 -0
- package/src/packages/react/use-read.ts +23 -0
- package/src/packages/react/use-signal.ts +9 -0
- package/src/packages/react.ts +3 -0
- package/src/runtime/context.ts +36 -0
- package/src/runtime/scheduler.ts +75 -0
- package/tsconfig.build.json +4 -0
- package/tsconfig.json +16 -0
- package/tsup.config.ts +53 -0
- package/vitest.config.ts +14 -0
- package/dist/index.d.mts +0 -287
- package/dist/index.d.ts +0 -287
- package/dist/index.js +0 -497
- package/dist/index.mjs +0 -465
package/dist/index.mjs
DELETED
|
@@ -1,465 +0,0 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __export = (target, all) => {
|
|
3
|
-
for (var name in all)
|
|
4
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
5
|
-
};
|
|
6
|
-
|
|
7
|
-
// src/core/contracts/comparable.ts
|
|
8
|
-
var Equals;
|
|
9
|
-
((Equals2) => {
|
|
10
|
-
function strict(value, other) {
|
|
11
|
-
if (value === other) return true;
|
|
12
|
-
if (value !== value && other !== other) return true;
|
|
13
|
-
return false;
|
|
14
|
-
}
|
|
15
|
-
Equals2.strict = strict;
|
|
16
|
-
})(Equals || (Equals = {}));
|
|
17
|
-
function comparator(equals = Equals.strict) {
|
|
18
|
-
return { equals };
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
// src/core/contracts/readable.ts
|
|
22
|
-
function reader(read) {
|
|
23
|
-
return { read };
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
// src/core/contracts/writable.ts
|
|
27
|
-
function writer(write) {
|
|
28
|
-
return {
|
|
29
|
-
write(value) {
|
|
30
|
-
const result = write(value);
|
|
31
|
-
if (typeof result === "boolean") return result;
|
|
32
|
-
return true;
|
|
33
|
-
}
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
// src/internal/internal.ts
|
|
38
|
-
var internal_exports = {};
|
|
39
|
-
__export(internal_exports, {
|
|
40
|
-
BasicValue: () => BasicValue,
|
|
41
|
-
BatchWriter: () => BatchWriter,
|
|
42
|
-
CallbackScheduler: () => CallbackScheduler,
|
|
43
|
-
CollectorBasedBatcher: () => CollectorBasedBatcher,
|
|
44
|
-
CollectorController: () => CollectorController,
|
|
45
|
-
Composed: () => Composed,
|
|
46
|
-
ComputedValue: () => ComputedValue,
|
|
47
|
-
DependencyManager: () => DependencyManager,
|
|
48
|
-
EmittingValue: () => EmittingValue,
|
|
49
|
-
Reactive: () => Reactive,
|
|
50
|
-
ScheduledEmitter: () => ScheduledEmitter,
|
|
51
|
-
Snapshot: () => Snapshot
|
|
52
|
-
});
|
|
53
|
-
|
|
54
|
-
// src/utils/utils.ts
|
|
55
|
-
var utils_exports = {};
|
|
56
|
-
__export(utils_exports, {
|
|
57
|
-
call: () => call,
|
|
58
|
-
factory: () => factory,
|
|
59
|
-
singleton: () => singleton
|
|
60
|
-
});
|
|
61
|
-
|
|
62
|
-
// src/utils/call.ts
|
|
63
|
-
function call(callback) {
|
|
64
|
-
callback();
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
// src/utils/factory.ts
|
|
68
|
-
function factory(name) {
|
|
69
|
-
let __default__ = null;
|
|
70
|
-
let __factory__ = null;
|
|
71
|
-
function object(...args) {
|
|
72
|
-
if (__factory__) return __factory__(...args);
|
|
73
|
-
if (__default__) return __default__(...args);
|
|
74
|
-
throw new Error(`${name}::factory() not configured!`);
|
|
75
|
-
}
|
|
76
|
-
object.configured = () => __default__ !== null || __factory__ !== null;
|
|
77
|
-
object.default = (factory2) => {
|
|
78
|
-
__default__ = factory2 ?? null;
|
|
79
|
-
};
|
|
80
|
-
object.factory = (factory2) => {
|
|
81
|
-
__factory__ = factory2 ?? null;
|
|
82
|
-
};
|
|
83
|
-
return object;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
// src/utils/singleton.ts
|
|
87
|
-
function singleton(factory2) {
|
|
88
|
-
function object() {
|
|
89
|
-
return object.instance ??= factory2();
|
|
90
|
-
}
|
|
91
|
-
object.instance = void 0;
|
|
92
|
-
return object;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
// src/internal/batch.ts
|
|
96
|
-
var CollectorBasedBatcher = class {
|
|
97
|
-
collector;
|
|
98
|
-
constructor(collector) {
|
|
99
|
-
this.collector = collector;
|
|
100
|
-
}
|
|
101
|
-
batch(callback, ...args) {
|
|
102
|
-
if (this.collector.collecting()) return callback(...args);
|
|
103
|
-
const [value, collected] = this.collector.collect(callback, ...args);
|
|
104
|
-
collected.forEach(utils_exports.call);
|
|
105
|
-
return value;
|
|
106
|
-
}
|
|
107
|
-
};
|
|
108
|
-
|
|
109
|
-
// src/internal/collector.ts
|
|
110
|
-
var CollectorController = class {
|
|
111
|
-
values;
|
|
112
|
-
constructor(values = null) {
|
|
113
|
-
this.values = values;
|
|
114
|
-
}
|
|
115
|
-
collecting() {
|
|
116
|
-
return !!this.values;
|
|
117
|
-
}
|
|
118
|
-
add(value) {
|
|
119
|
-
if (!this.values) return;
|
|
120
|
-
this.values.add(value);
|
|
121
|
-
}
|
|
122
|
-
track(value) {
|
|
123
|
-
if (!this.values) return;
|
|
124
|
-
this.values.add(value);
|
|
125
|
-
}
|
|
126
|
-
collect(callback, ...args) {
|
|
127
|
-
const current = this.values;
|
|
128
|
-
this.values = /* @__PURE__ */ new Set();
|
|
129
|
-
const response = [];
|
|
130
|
-
try {
|
|
131
|
-
response[0] = callback(...args);
|
|
132
|
-
} finally {
|
|
133
|
-
response[1] = this.values;
|
|
134
|
-
this.values = current;
|
|
135
|
-
return response;
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
ignore(callback, ...args) {
|
|
139
|
-
const current = this.values;
|
|
140
|
-
this.values = null;
|
|
141
|
-
try {
|
|
142
|
-
return callback(...args);
|
|
143
|
-
} finally {
|
|
144
|
-
this.values = current;
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
};
|
|
148
|
-
|
|
149
|
-
// src/internal/composed.ts
|
|
150
|
-
var Composed = class {
|
|
151
|
-
value;
|
|
152
|
-
writer;
|
|
153
|
-
constructor(value, writer2) {
|
|
154
|
-
this.value = value;
|
|
155
|
-
this.writer = writer2;
|
|
156
|
-
}
|
|
157
|
-
read() {
|
|
158
|
-
return this.value.read();
|
|
159
|
-
}
|
|
160
|
-
peek() {
|
|
161
|
-
return this.value.peek();
|
|
162
|
-
}
|
|
163
|
-
write(value) {
|
|
164
|
-
if (this.value.equals(this.peek(), value)) return false;
|
|
165
|
-
return this.writer.write(value);
|
|
166
|
-
}
|
|
167
|
-
equals(...args) {
|
|
168
|
-
const [value, other] = args.length === 1 ? [this.read(), args[0]] : args;
|
|
169
|
-
return this.value.equals(value, other);
|
|
170
|
-
}
|
|
171
|
-
subscribe(callback) {
|
|
172
|
-
return this.value.subscribe(callback);
|
|
173
|
-
}
|
|
174
|
-
unsubscribe(callback) {
|
|
175
|
-
return this.value.unsubscribe(callback);
|
|
176
|
-
}
|
|
177
|
-
};
|
|
178
|
-
|
|
179
|
-
// src/internal/dependency.ts
|
|
180
|
-
var Snapshot;
|
|
181
|
-
((Snapshot2) => {
|
|
182
|
-
function changed([value, snapshot]) {
|
|
183
|
-
return !value.equals(value.peek(), snapshot);
|
|
184
|
-
}
|
|
185
|
-
Snapshot2.changed = changed;
|
|
186
|
-
function from(values) {
|
|
187
|
-
if (!values.size) return [];
|
|
188
|
-
return Array.from(values).map(create);
|
|
189
|
-
}
|
|
190
|
-
Snapshot2.from = from;
|
|
191
|
-
function create(value) {
|
|
192
|
-
return [value, value.peek()];
|
|
193
|
-
}
|
|
194
|
-
})(Snapshot || (Snapshot = {}));
|
|
195
|
-
var DependencyManager = class {
|
|
196
|
-
snapshot;
|
|
197
|
-
dependencies;
|
|
198
|
-
collector;
|
|
199
|
-
listeners;
|
|
200
|
-
constructor(collector, listeners = /* @__PURE__ */ new Set(), dependencies = /* @__PURE__ */ new Set(), snapshot = null) {
|
|
201
|
-
this.collector = collector;
|
|
202
|
-
this.listeners = listeners;
|
|
203
|
-
this.dependencies = dependencies;
|
|
204
|
-
this.snapshot = snapshot;
|
|
205
|
-
}
|
|
206
|
-
changed() {
|
|
207
|
-
if (!this.snapshot) return true;
|
|
208
|
-
return this.snapshot.some(Snapshot.changed);
|
|
209
|
-
}
|
|
210
|
-
track(callback) {
|
|
211
|
-
const [_, dependencies] = this.collector.collect(callback);
|
|
212
|
-
if (!this.dependencies.size && !dependencies.size) return;
|
|
213
|
-
this.snapshot = Snapshot.from(dependencies);
|
|
214
|
-
if (this.equals(dependencies)) return;
|
|
215
|
-
if (this.listeners.size) {
|
|
216
|
-
this.dependencies.forEach((dep) => !dependencies.has(dep) && this.listeners.forEach((cb) => dep.unsubscribe(cb)));
|
|
217
|
-
dependencies.forEach((dep) => !this.dependencies.has(dep) && this.listeners.forEach((cb) => dep.subscribe(cb)));
|
|
218
|
-
}
|
|
219
|
-
this.dependencies = dependencies;
|
|
220
|
-
}
|
|
221
|
-
subscribe(callback) {
|
|
222
|
-
this.listeners.add(callback);
|
|
223
|
-
this.dependencies.forEach((dep) => dep.subscribe(callback));
|
|
224
|
-
return () => this.unsubscribe(callback);
|
|
225
|
-
}
|
|
226
|
-
unsubscribe(callback) {
|
|
227
|
-
this.listeners.delete(callback);
|
|
228
|
-
this.dependencies.forEach((dep) => dep.unsubscribe(callback));
|
|
229
|
-
}
|
|
230
|
-
equals(other) {
|
|
231
|
-
if (this.dependencies === other) return true;
|
|
232
|
-
if (this.dependencies.size !== other.size) return false;
|
|
233
|
-
for (const item of this.dependencies) if (!other.has(item)) return false;
|
|
234
|
-
return true;
|
|
235
|
-
}
|
|
236
|
-
};
|
|
237
|
-
|
|
238
|
-
// src/internal/emitter.ts
|
|
239
|
-
var ScheduledEmitter = class {
|
|
240
|
-
listeners;
|
|
241
|
-
scheduler;
|
|
242
|
-
constructor(scheduler, listeners = /* @__PURE__ */ new Set()) {
|
|
243
|
-
this.scheduler = scheduler;
|
|
244
|
-
this.listeners = listeners;
|
|
245
|
-
}
|
|
246
|
-
emit() {
|
|
247
|
-
this.scheduler.schedule(...this.listeners);
|
|
248
|
-
}
|
|
249
|
-
subscribe(callback) {
|
|
250
|
-
this.listeners.add(callback);
|
|
251
|
-
return () => this.unsubscribe(callback);
|
|
252
|
-
}
|
|
253
|
-
unsubscribe(callback) {
|
|
254
|
-
this.listeners.delete(callback);
|
|
255
|
-
}
|
|
256
|
-
};
|
|
257
|
-
|
|
258
|
-
// src/internal/reactive.ts
|
|
259
|
-
var Reactive = class {
|
|
260
|
-
value;
|
|
261
|
-
tracker;
|
|
262
|
-
subscription;
|
|
263
|
-
constructor(value, tracker, subscription) {
|
|
264
|
-
this.value = value;
|
|
265
|
-
this.tracker = tracker;
|
|
266
|
-
this.subscription = subscription;
|
|
267
|
-
}
|
|
268
|
-
read() {
|
|
269
|
-
this.tracker.track(this);
|
|
270
|
-
return this.peek();
|
|
271
|
-
}
|
|
272
|
-
peek() {
|
|
273
|
-
return this.value.read();
|
|
274
|
-
}
|
|
275
|
-
write(value) {
|
|
276
|
-
return this.value.write(value);
|
|
277
|
-
}
|
|
278
|
-
equals(...args) {
|
|
279
|
-
const [value, other] = args.length === 1 ? [this.read(), args[0]] : args;
|
|
280
|
-
return this.value.equals(value, other);
|
|
281
|
-
}
|
|
282
|
-
subscribe(callback) {
|
|
283
|
-
return this.subscription.subscribe(callback);
|
|
284
|
-
}
|
|
285
|
-
unsubscribe(callback) {
|
|
286
|
-
return this.subscription.unsubscribe(callback);
|
|
287
|
-
}
|
|
288
|
-
};
|
|
289
|
-
|
|
290
|
-
// src/internal/scheduler.ts
|
|
291
|
-
var CallbackScheduler = class {
|
|
292
|
-
collector;
|
|
293
|
-
add;
|
|
294
|
-
constructor(collector) {
|
|
295
|
-
this.collector = collector;
|
|
296
|
-
this.add = this.collector.add.bind(this.collector);
|
|
297
|
-
}
|
|
298
|
-
schedule(...args) {
|
|
299
|
-
if (args.length === 0) return;
|
|
300
|
-
if (!this.collector.collecting()) return args.forEach(utils_exports.call);
|
|
301
|
-
args.forEach(this.add);
|
|
302
|
-
}
|
|
303
|
-
};
|
|
304
|
-
|
|
305
|
-
// src/internal/value.ts
|
|
306
|
-
var BasicValue = class {
|
|
307
|
-
value;
|
|
308
|
-
comparator;
|
|
309
|
-
constructor(value, comparator2) {
|
|
310
|
-
this.value = value;
|
|
311
|
-
this.comparator = comparator2;
|
|
312
|
-
}
|
|
313
|
-
read() {
|
|
314
|
-
return this.value;
|
|
315
|
-
}
|
|
316
|
-
write(value) {
|
|
317
|
-
if (this.comparator.equals(this.value, value)) return false;
|
|
318
|
-
this.value = value;
|
|
319
|
-
return true;
|
|
320
|
-
}
|
|
321
|
-
equals(...args) {
|
|
322
|
-
const [value, other] = args.length === 1 ? [this.read(), args[0]] : args;
|
|
323
|
-
return this.comparator.equals(value, other);
|
|
324
|
-
}
|
|
325
|
-
};
|
|
326
|
-
var EmittingValue = class {
|
|
327
|
-
value;
|
|
328
|
-
emitter;
|
|
329
|
-
constructor(value, emitter) {
|
|
330
|
-
this.value = value;
|
|
331
|
-
this.emitter = emitter;
|
|
332
|
-
}
|
|
333
|
-
read() {
|
|
334
|
-
return this.value.read();
|
|
335
|
-
}
|
|
336
|
-
write(value) {
|
|
337
|
-
const changed = this.value.write(value);
|
|
338
|
-
if (changed) this.emitter.emit();
|
|
339
|
-
return changed;
|
|
340
|
-
}
|
|
341
|
-
equals(...args) {
|
|
342
|
-
const [value, other] = args.length === 1 ? [this.read(), args[0]] : args;
|
|
343
|
-
return this.value.equals(value, other);
|
|
344
|
-
}
|
|
345
|
-
};
|
|
346
|
-
var ComputedValue = class {
|
|
347
|
-
cache;
|
|
348
|
-
computation;
|
|
349
|
-
dependencies;
|
|
350
|
-
constructor(cache, computation, dependencies) {
|
|
351
|
-
this.cache = cache;
|
|
352
|
-
this.computation = computation;
|
|
353
|
-
this.dependencies = dependencies;
|
|
354
|
-
this.recompute = this.recompute.bind(this);
|
|
355
|
-
}
|
|
356
|
-
read() {
|
|
357
|
-
if (this.dependencies.changed()) this.dependencies.track(this.recompute);
|
|
358
|
-
return this.cache.read();
|
|
359
|
-
}
|
|
360
|
-
recompute() {
|
|
361
|
-
this.cache.write(this.computation.read());
|
|
362
|
-
}
|
|
363
|
-
write(_) {
|
|
364
|
-
return false;
|
|
365
|
-
}
|
|
366
|
-
equals(...args) {
|
|
367
|
-
const [value, other] = args.length === 1 ? [this.read(), args[0]] : args;
|
|
368
|
-
return this.cache.equals(value, other);
|
|
369
|
-
}
|
|
370
|
-
};
|
|
371
|
-
|
|
372
|
-
// src/internal/writable.ts
|
|
373
|
-
var BatchWriter = class {
|
|
374
|
-
writer;
|
|
375
|
-
batcher;
|
|
376
|
-
constructor(writer2, batcher) {
|
|
377
|
-
this.writer = writer2;
|
|
378
|
-
this.batcher = batcher;
|
|
379
|
-
}
|
|
380
|
-
write(value) {
|
|
381
|
-
const result = this.batcher.batch(() => this.writer.write(value));
|
|
382
|
-
if (typeof result === "boolean") return result;
|
|
383
|
-
return true;
|
|
384
|
-
}
|
|
385
|
-
};
|
|
386
|
-
|
|
387
|
-
// src/app/index.ts
|
|
388
|
-
function configuration() {
|
|
389
|
-
return __configuration__;
|
|
390
|
-
}
|
|
391
|
-
var __configuration__ = {
|
|
392
|
-
signal: utils_exports.factory("@configuration.signal"),
|
|
393
|
-
computed: utils_exports.factory("@configuration.computed"),
|
|
394
|
-
composed: utils_exports.factory("@configuration.composed"),
|
|
395
|
-
batcher: utils_exports.factory("@configuration.batch"),
|
|
396
|
-
ignorer: utils_exports.factory("@configuration.ignore"),
|
|
397
|
-
// Internal
|
|
398
|
-
scheduler: utils_exports.factory("@configuration.scheduler"),
|
|
399
|
-
tracker: utils_exports.factory("@configuration.tracker"),
|
|
400
|
-
collector: utils_exports.factory("@configuration.collector"),
|
|
401
|
-
dependency_tracker: utils_exports.factory("@configuration.dependency.tracker"),
|
|
402
|
-
dependency_collector: utils_exports.factory("@configuration.dependency.collector"),
|
|
403
|
-
callback_collector: utils_exports.factory("@configuration.callback.collector")
|
|
404
|
-
};
|
|
405
|
-
__configuration__.signal.default((value, equals) => {
|
|
406
|
-
const emitter = new internal_exports.ScheduledEmitter(configuration().scheduler());
|
|
407
|
-
const state = new internal_exports.EmittingValue(new internal_exports.BasicValue(value, comparator(equals)), emitter);
|
|
408
|
-
return new internal_exports.Reactive(state, configuration().tracker(), emitter);
|
|
409
|
-
});
|
|
410
|
-
__configuration__.computed.default((compute, equals) => {
|
|
411
|
-
const dependency = configuration().dependency_tracker();
|
|
412
|
-
const cache = new internal_exports.BasicValue(void 0, comparator(equals));
|
|
413
|
-
const value = new internal_exports.ComputedValue(cache, reader(compute), dependency);
|
|
414
|
-
return new internal_exports.Reactive(value, configuration().tracker(), dependency);
|
|
415
|
-
});
|
|
416
|
-
__configuration__.composed.default(
|
|
417
|
-
(value, write) => new internal_exports.Composed(value, new internal_exports.BatchWriter(writer(write), configuration().batcher()))
|
|
418
|
-
);
|
|
419
|
-
__configuration__.batcher.default(utils_exports.singleton(() => new internal_exports.CollectorBasedBatcher(configuration().callback_collector())));
|
|
420
|
-
__configuration__.ignorer.default(configuration().dependency_collector);
|
|
421
|
-
__configuration__.scheduler.default(utils_exports.singleton(() => new internal_exports.CallbackScheduler(configuration().callback_collector())));
|
|
422
|
-
__configuration__.collector.default(configuration().dependency_collector);
|
|
423
|
-
__configuration__.tracker.default(configuration().dependency_collector);
|
|
424
|
-
__configuration__.dependency_tracker.default(() => new internal_exports.DependencyManager(configuration().collector()));
|
|
425
|
-
__configuration__.dependency_collector.default(utils_exports.singleton(() => new internal_exports.CollectorController()));
|
|
426
|
-
__configuration__.callback_collector.default(utils_exports.singleton(() => new internal_exports.CollectorController()));
|
|
427
|
-
|
|
428
|
-
// src/core/batch.ts
|
|
429
|
-
function batch(callback, ...args) {
|
|
430
|
-
return configuration().batcher().batch(callback, ...args);
|
|
431
|
-
}
|
|
432
|
-
|
|
433
|
-
// src/core/composed.ts
|
|
434
|
-
function composed(value, write) {
|
|
435
|
-
return configuration().composed(value, write);
|
|
436
|
-
}
|
|
437
|
-
|
|
438
|
-
// src/core/computed.ts
|
|
439
|
-
function computed(compute, equals) {
|
|
440
|
-
return configuration().computed(compute, equals);
|
|
441
|
-
}
|
|
442
|
-
|
|
443
|
-
// src/core/ignore.ts
|
|
444
|
-
function ignore(callback, ...args) {
|
|
445
|
-
return configuration().ignorer().ignore(callback, ...args);
|
|
446
|
-
}
|
|
447
|
-
|
|
448
|
-
// src/core/signal.ts
|
|
449
|
-
function signal(value, equals) {
|
|
450
|
-
return configuration().signal(value, equals);
|
|
451
|
-
}
|
|
452
|
-
export {
|
|
453
|
-
Equals,
|
|
454
|
-
internal_exports as Internal,
|
|
455
|
-
batch,
|
|
456
|
-
comparator,
|
|
457
|
-
composed,
|
|
458
|
-
computed,
|
|
459
|
-
configuration,
|
|
460
|
-
ignore,
|
|
461
|
-
reader,
|
|
462
|
-
signal,
|
|
463
|
-
utils_exports as utils,
|
|
464
|
-
writer
|
|
465
|
-
};
|