@vscode/observables 0.1.1-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/LICENSE +21 -0
- package/README.md +164 -0
- package/dist/assert.d.ts +3 -0
- package/dist/assert.d.ts.map +1 -0
- package/dist/deps.d.ts +29 -0
- package/dist/deps.d.ts.map +1 -0
- package/dist/disposables.d.ts +20 -0
- package/dist/disposables.d.ts.map +1 -0
- package/dist/disposables.js +66 -0
- package/dist/disposables.js.map +1 -0
- package/dist/equals.d.ts +33 -0
- package/dist/equals.d.ts.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +27 -0
- package/dist/index.js.map +1 -0
- package/dist/index.min.js +124 -0
- package/dist/index.min.js.map +1 -0
- package/dist/observableInternal/base.d.ts +173 -0
- package/dist/observableInternal/base.d.ts.map +1 -0
- package/dist/observableInternal/base.js +21 -0
- package/dist/observableInternal/base.js.map +1 -0
- package/dist/observableInternal/changeTracker.d.ts +45 -0
- package/dist/observableInternal/changeTracker.d.ts.map +1 -0
- package/dist/observableInternal/changeTracker.js +78 -0
- package/dist/observableInternal/changeTracker.js.map +1 -0
- package/dist/observableInternal/commonFacade/cancellation.d.ts +25 -0
- package/dist/observableInternal/commonFacade/cancellation.d.ts.map +1 -0
- package/dist/observableInternal/commonFacade/cancellation.js +55 -0
- package/dist/observableInternal/commonFacade/cancellation.js.map +1 -0
- package/dist/observableInternal/commonFacade/deps.d.ts +25 -0
- package/dist/observableInternal/commonFacade/deps.d.ts.map +1 -0
- package/dist/observableInternal/commonFacade/deps.js +37 -0
- package/dist/observableInternal/commonFacade/deps.js.map +1 -0
- package/dist/observableInternal/debugLocation.d.ts +22 -0
- package/dist/observableInternal/debugLocation.d.ts.map +1 -0
- package/dist/observableInternal/debugLocation.js +77 -0
- package/dist/observableInternal/debugLocation.js.map +1 -0
- package/dist/observableInternal/debugName.d.ts +34 -0
- package/dist/observableInternal/debugName.d.ts.map +1 -0
- package/dist/observableInternal/debugName.js +114 -0
- package/dist/observableInternal/debugName.js.map +1 -0
- package/dist/observableInternal/experimental/deferUnobserve.d.ts +17 -0
- package/dist/observableInternal/experimental/deferUnobserve.d.ts.map +1 -0
- package/dist/observableInternal/experimental/deferUnobserve.js +68 -0
- package/dist/observableInternal/experimental/deferUnobserve.js.map +1 -0
- package/dist/observableInternal/experimental/reducer.d.ts +38 -0
- package/dist/observableInternal/experimental/reducer.d.ts.map +1 -0
- package/dist/observableInternal/experimental/utils.d.ts +16 -0
- package/dist/observableInternal/experimental/utils.d.ts.map +1 -0
- package/dist/observableInternal/experimental/utils.js +64 -0
- package/dist/observableInternal/experimental/utils.js.map +1 -0
- package/dist/observableInternal/index.d.ts +26 -0
- package/dist/observableInternal/index.d.ts.map +1 -0
- package/dist/observableInternal/index.js +21 -0
- package/dist/observableInternal/index.js.map +1 -0
- package/dist/observableInternal/logging/consoleObservableLogger.d.ts +41 -0
- package/dist/observableInternal/logging/consoleObservableLogger.d.ts.map +1 -0
- package/dist/observableInternal/logging/consoleObservableLogger.js +355 -0
- package/dist/observableInternal/logging/consoleObservableLogger.js.map +1 -0
- package/dist/observableInternal/logging/debugGetDependencyGraph.d.ts +5 -0
- package/dist/observableInternal/logging/debugGetDependencyGraph.d.ts.map +1 -0
- package/dist/observableInternal/logging/debugGetDependencyGraph.js +78 -0
- package/dist/observableInternal/logging/debugGetDependencyGraph.js.map +1 -0
- package/dist/observableInternal/logging/debugger/debuggerRpc.d.ts +5 -0
- package/dist/observableInternal/logging/debugger/debuggerRpc.d.ts.map +1 -0
- package/dist/observableInternal/logging/debugger/devToolsLogger.d.ts +44 -0
- package/dist/observableInternal/logging/debugger/devToolsLogger.d.ts.map +1 -0
- package/dist/observableInternal/logging/debugger/rpc.d.ts +42 -0
- package/dist/observableInternal/logging/debugger/rpc.d.ts.map +1 -0
- package/dist/observableInternal/logging/debugger/utils.d.ts +14 -0
- package/dist/observableInternal/logging/debugger/utils.d.ts.map +1 -0
- package/dist/observableInternal/logging/logging.d.ts +31 -0
- package/dist/observableInternal/logging/logging.d.ts.map +1 -0
- package/dist/observableInternal/logging/logging.js +100 -0
- package/dist/observableInternal/logging/logging.js.map +1 -0
- package/dist/observableInternal/map.d.ts +19 -0
- package/dist/observableInternal/map.d.ts.map +1 -0
- package/dist/observableInternal/map.js +71 -0
- package/dist/observableInternal/map.js.map +1 -0
- package/dist/observableInternal/observables/baseObservable.d.ts +59 -0
- package/dist/observableInternal/observables/baseObservable.d.ts.map +1 -0
- package/dist/observableInternal/observables/baseObservable.js +142 -0
- package/dist/observableInternal/observables/baseObservable.js.map +1 -0
- package/dist/observableInternal/observables/constObservable.d.ts +6 -0
- package/dist/observableInternal/observables/constObservable.d.ts.map +1 -0
- package/dist/observableInternal/observables/constObservable.js +43 -0
- package/dist/observableInternal/observables/constObservable.js.map +1 -0
- package/dist/observableInternal/observables/derived.d.ts +47 -0
- package/dist/observableInternal/observables/derived.d.ts.map +1 -0
- package/dist/observableInternal/observables/derived.js +102 -0
- package/dist/observableInternal/observables/derived.js.map +1 -0
- package/dist/observableInternal/observables/derivedImpl.d.ts +84 -0
- package/dist/observableInternal/observables/derivedImpl.d.ts.map +1 -0
- package/dist/observableInternal/observables/derivedImpl.js +370 -0
- package/dist/observableInternal/observables/derivedImpl.js.map +1 -0
- package/dist/observableInternal/observables/lazyObservableValue.d.ts +28 -0
- package/dist/observableInternal/observables/lazyObservableValue.d.ts.map +1 -0
- package/dist/observableInternal/observables/lazyObservableValue.js +130 -0
- package/dist/observableInternal/observables/lazyObservableValue.js.map +1 -0
- package/dist/observableInternal/observables/observableFromEvent.d.ts +38 -0
- package/dist/observableInternal/observables/observableFromEvent.d.ts.map +1 -0
- package/dist/observableInternal/observables/observableFromEvent.js +125 -0
- package/dist/observableInternal/observables/observableFromEvent.js.map +1 -0
- package/dist/observableInternal/observables/observableSignal.d.ts +12 -0
- package/dist/observableInternal/observables/observableSignal.d.ts.map +1 -0
- package/dist/observableInternal/observables/observableSignal.js +52 -0
- package/dist/observableInternal/observables/observableSignal.js.map +1 -0
- package/dist/observableInternal/observables/observableSignalFromEvent.d.ts +6 -0
- package/dist/observableInternal/observables/observableSignalFromEvent.d.ts.map +1 -0
- package/dist/observableInternal/observables/observableSignalFromEvent.js +46 -0
- package/dist/observableInternal/observables/observableSignalFromEvent.js.map +1 -0
- package/dist/observableInternal/observables/observableValue.d.ts +38 -0
- package/dist/observableInternal/observables/observableValue.d.ts.map +1 -0
- package/dist/observableInternal/observables/observableValue.js +108 -0
- package/dist/observableInternal/observables/observableValue.js.map +1 -0
- package/dist/observableInternal/observables/observableValueOpts.d.ts +9 -0
- package/dist/observableInternal/observables/observableValueOpts.d.ts.map +1 -0
- package/dist/observableInternal/observables/observableValueOpts.js +23 -0
- package/dist/observableInternal/observables/observableValueOpts.js.map +1 -0
- package/dist/observableInternal/reactions/createEffect.d.ts +65 -0
- package/dist/observableInternal/reactions/createEffect.d.ts.map +1 -0
- package/dist/observableInternal/reactions/createEffect.js +148 -0
- package/dist/observableInternal/reactions/createEffect.js.map +1 -0
- package/dist/observableInternal/reactions/createEffectImpl.d.ts +54 -0
- package/dist/observableInternal/reactions/createEffectImpl.d.ts.map +1 -0
- package/dist/observableInternal/reactions/createEffectImpl.js +225 -0
- package/dist/observableInternal/reactions/createEffectImpl.js.map +1 -0
- package/dist/observableInternal/set.d.ts +18 -0
- package/dist/observableInternal/set.d.ts.map +1 -0
- package/dist/observableInternal/set.js +69 -0
- package/dist/observableInternal/set.js.map +1 -0
- package/dist/observableInternal/transaction.d.ts +28 -0
- package/dist/observableInternal/transaction.d.ts.map +1 -0
- package/dist/observableInternal/transaction.js +114 -0
- package/dist/observableInternal/transaction.js.map +1 -0
- package/dist/observableInternal/utils/promise.d.ts +76 -0
- package/dist/observableInternal/utils/promise.d.ts.map +1 -0
- package/dist/observableInternal/utils/promise.js +112 -0
- package/dist/observableInternal/utils/promise.js.map +1 -0
- package/dist/observableInternal/utils/runOnChange.d.ts +8 -0
- package/dist/observableInternal/utils/runOnChange.d.ts.map +1 -0
- package/dist/observableInternal/utils/runOnChange.js +64 -0
- package/dist/observableInternal/utils/runOnChange.js.map +1 -0
- package/dist/observableInternal/utils/utils.d.ts +44 -0
- package/dist/observableInternal/utils/utils.d.ts.map +1 -0
- package/dist/observableInternal/utils/utils.js +249 -0
- package/dist/observableInternal/utils/utils.js.map +1 -0
- package/dist/observableInternal/utils/utilsCancellation.d.ts +11 -0
- package/dist/observableInternal/utils/utilsCancellation.d.ts.map +1 -0
- package/dist/observableInternal/utils/utilsCancellation.js +91 -0
- package/dist/observableInternal/utils/utilsCancellation.js.map +1 -0
- package/dist/observableInternal/utils/valueWithChangeEvent.d.ts +11 -0
- package/dist/observableInternal/utils/valueWithChangeEvent.d.ts.map +1 -0
- package/dist/observableInternal/utils/valueWithChangeEvent.js +48 -0
- package/dist/observableInternal/utils/valueWithChangeEvent.js.map +1 -0
- package/dist/utils.d.ts +16 -0
- package/dist/utils.d.ts.map +1 -0
- package/package.json +50 -0
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/*---------------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
+
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
4
|
+
*--------------------------------------------------------------------------------------------*/
|
|
5
|
+
/*---------------------------------------------------------------------------------------------
|
|
6
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
7
|
+
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
8
|
+
*--------------------------------------------------------------------------------------------*/
|
|
9
|
+
let globalObservableLogger;
|
|
10
|
+
function addLogger(logger) {
|
|
11
|
+
if (!globalObservableLogger) {
|
|
12
|
+
globalObservableLogger = logger;
|
|
13
|
+
}
|
|
14
|
+
else if (globalObservableLogger instanceof ComposedLogger) {
|
|
15
|
+
globalObservableLogger.loggers.push(logger);
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
globalObservableLogger = new ComposedLogger([globalObservableLogger, logger]);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
function getLogger() {
|
|
22
|
+
return globalObservableLogger;
|
|
23
|
+
}
|
|
24
|
+
let globalObservableLoggerFn = undefined;
|
|
25
|
+
function setLogObservableFn(fn) {
|
|
26
|
+
globalObservableLoggerFn = fn;
|
|
27
|
+
}
|
|
28
|
+
function logObservable(obs) {
|
|
29
|
+
if (globalObservableLoggerFn) {
|
|
30
|
+
globalObservableLoggerFn(obs);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
class ComposedLogger {
|
|
34
|
+
constructor(loggers) {
|
|
35
|
+
this.loggers = loggers;
|
|
36
|
+
}
|
|
37
|
+
handleObservableCreated(observable, location) {
|
|
38
|
+
for (const logger of this.loggers) {
|
|
39
|
+
logger.handleObservableCreated(observable, location);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
handleOnListenerCountChanged(observable, newCount) {
|
|
43
|
+
for (const logger of this.loggers) {
|
|
44
|
+
logger.handleOnListenerCountChanged(observable, newCount);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
handleObservableUpdated(observable, info) {
|
|
48
|
+
for (const logger of this.loggers) {
|
|
49
|
+
logger.handleObservableUpdated(observable, info);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
handleAutorunCreated(autorun, location) {
|
|
53
|
+
for (const logger of this.loggers) {
|
|
54
|
+
logger.handleAutorunCreated(autorun, location);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
handleAutorunDisposed(autorun) {
|
|
58
|
+
for (const logger of this.loggers) {
|
|
59
|
+
logger.handleAutorunDisposed(autorun);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
handleAutorunDependencyChanged(autorun, observable, change) {
|
|
63
|
+
for (const logger of this.loggers) {
|
|
64
|
+
logger.handleAutorunDependencyChanged(autorun, observable, change);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
handleAutorunStarted(autorun) {
|
|
68
|
+
for (const logger of this.loggers) {
|
|
69
|
+
logger.handleAutorunStarted(autorun);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
handleAutorunFinished(autorun) {
|
|
73
|
+
for (const logger of this.loggers) {
|
|
74
|
+
logger.handleAutorunFinished(autorun);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
handleDerivedDependencyChanged(derived, observable, change) {
|
|
78
|
+
for (const logger of this.loggers) {
|
|
79
|
+
logger.handleDerivedDependencyChanged(derived, observable, change);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
handleDerivedCleared(observable) {
|
|
83
|
+
for (const logger of this.loggers) {
|
|
84
|
+
logger.handleDerivedCleared(observable);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
handleBeginTransaction(transaction) {
|
|
88
|
+
for (const logger of this.loggers) {
|
|
89
|
+
logger.handleBeginTransaction(transaction);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
handleEndTransaction(transaction) {
|
|
93
|
+
for (const logger of this.loggers) {
|
|
94
|
+
logger.handleEndTransaction(transaction);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
export { addLogger, getLogger, logObservable, setLogObservableFn };
|
|
100
|
+
//# sourceMappingURL=logging.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logging.js","sources":["../../../src/observableInternal/logging/logging.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { IObservable, ITransaction } from './base';
|
|
2
|
+
export declare class ObservableMap<K, V> implements Map<K, V> {
|
|
3
|
+
private readonly _data;
|
|
4
|
+
private readonly _obs;
|
|
5
|
+
readonly observable: IObservable<Map<K, V>>;
|
|
6
|
+
get size(): number;
|
|
7
|
+
has(key: K): boolean;
|
|
8
|
+
get(key: K): V | undefined;
|
|
9
|
+
set(key: K, value: V, tx?: ITransaction): this;
|
|
10
|
+
delete(key: K, tx?: ITransaction): boolean;
|
|
11
|
+
clear(tx?: ITransaction): void;
|
|
12
|
+
forEach(callbackfn: (value: V, key: K, map: Map<K, V>) => void, thisArg?: any): void;
|
|
13
|
+
entries(): IterableIterator<[K, V]>;
|
|
14
|
+
keys(): IterableIterator<K>;
|
|
15
|
+
values(): IterableIterator<V>;
|
|
16
|
+
[Symbol.iterator](): IterableIterator<[K, V]>;
|
|
17
|
+
get [Symbol.toStringTag](): string;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=map.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"map.d.ts","sourceRoot":"","sources":["../../src/observableInternal/map.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAInD,qBAAa,aAAa,CAAC,CAAC,EAAE,CAAC,CAAE,YAAW,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IACpD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAmB;IAEzC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAwD;IAE7E,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAa;IAExD,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;IAIpB,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS;IAI1B,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,YAAY,GAAG,IAAI;IAU9C,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,YAAY,GAAG,OAAO;IAQ1C,KAAK,CAAC,EAAE,CAAC,EAAE,YAAY,GAAG,IAAI;IAO9B,OAAO,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,IAAI;IAMnF,OAAO,IAAI,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAInC,IAAI,IAAI,gBAAgB,CAAC,CAAC,CAAC;IAI3B,MAAM,IAAI,gBAAgB,CAAC,CAAC,CAAC;IAI9B,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAI7C,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM,CAEjC;CACD"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/*---------------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
+
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
4
|
+
*--------------------------------------------------------------------------------------------*/
|
|
5
|
+
import { observableValueOpts } from './observables/observableValueOpts.js';
|
|
6
|
+
|
|
7
|
+
/*---------------------------------------------------------------------------------------------
|
|
8
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
9
|
+
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
10
|
+
*--------------------------------------------------------------------------------------------*/
|
|
11
|
+
class ObservableMap {
|
|
12
|
+
constructor() {
|
|
13
|
+
this._data = new Map();
|
|
14
|
+
this._obs = observableValueOpts({ equalsFn: () => false }, this);
|
|
15
|
+
this.observable = this._obs;
|
|
16
|
+
}
|
|
17
|
+
get size() {
|
|
18
|
+
return this._data.size;
|
|
19
|
+
}
|
|
20
|
+
has(key) {
|
|
21
|
+
return this._data.has(key);
|
|
22
|
+
}
|
|
23
|
+
get(key) {
|
|
24
|
+
return this._data.get(key);
|
|
25
|
+
}
|
|
26
|
+
set(key, value, tx) {
|
|
27
|
+
const hadKey = this._data.has(key);
|
|
28
|
+
const oldValue = this._data.get(key);
|
|
29
|
+
if (!hadKey || oldValue !== value) {
|
|
30
|
+
this._data.set(key, value);
|
|
31
|
+
this._obs.set(this, tx);
|
|
32
|
+
}
|
|
33
|
+
return this;
|
|
34
|
+
}
|
|
35
|
+
delete(key, tx) {
|
|
36
|
+
const result = this._data.delete(key);
|
|
37
|
+
if (result) {
|
|
38
|
+
this._obs.set(this, tx);
|
|
39
|
+
}
|
|
40
|
+
return result;
|
|
41
|
+
}
|
|
42
|
+
clear(tx) {
|
|
43
|
+
if (this._data.size > 0) {
|
|
44
|
+
this._data.clear();
|
|
45
|
+
this._obs.set(this, tx);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
forEach(callbackfn, thisArg) {
|
|
49
|
+
this._data.forEach((value, key, _map) => {
|
|
50
|
+
callbackfn.call(thisArg, value, key, this);
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
*entries() {
|
|
54
|
+
yield* this._data.entries();
|
|
55
|
+
}
|
|
56
|
+
*keys() {
|
|
57
|
+
yield* this._data.keys();
|
|
58
|
+
}
|
|
59
|
+
*values() {
|
|
60
|
+
yield* this._data.values();
|
|
61
|
+
}
|
|
62
|
+
[Symbol.iterator]() {
|
|
63
|
+
return this.entries();
|
|
64
|
+
}
|
|
65
|
+
get [Symbol.toStringTag]() {
|
|
66
|
+
return 'ObservableMap';
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
export { ObservableMap };
|
|
71
|
+
//# sourceMappingURL=map.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"map.js","sources":["../../src/observableInternal/map.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;AAAA;;;AAGgG;MAMnF,aAAa,CAAA;AAA1B,IAAA,WAAA,GAAA;AACkB,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,GAAG,EAAQ,CAAC;AAExB,QAAA,IAAA,CAAA,IAAI,GAAG,mBAAmB,CAAC,EAAE,QAAQ,EAAE,MAAM,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;AAEpE,QAAA,IAAA,CAAA,UAAU,GAA2B,IAAI,CAAC,IAAI,CAAC;KAgExD;AA9DA,IAAA,IAAI,IAAI,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;KACvB;AAED,IAAA,GAAG,CAAC,GAAM,EAAA;QACT,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;KAC3B;AAED,IAAA,GAAG,CAAC,GAAM,EAAA;QACT,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;KAC3B;AAED,IAAA,GAAG,CAAC,GAAM,EAAE,KAAQ,EAAE,EAAiB,EAAA;QACtC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACrC,QAAA,IAAI,CAAC,MAAM,IAAI,QAAQ,KAAK,KAAK,EAAE;YAClC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC3B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;SACxB;AACD,QAAA,OAAO,IAAI,CAAC;KACZ;IAED,MAAM,CAAC,GAAM,EAAE,EAAiB,EAAA;QAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,MAAM,EAAE;YACX,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;SACxB;AACD,QAAA,OAAO,MAAM,CAAC;KACd;AAED,IAAA,KAAK,CAAC,EAAiB,EAAA;QACtB,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE;AACxB,YAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACnB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;SACxB;KACD;IAED,OAAO,CAAC,UAAsD,EAAE,OAAa,EAAA;AAC5E,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,KAAI;YACvC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AAC5C,SAAC,CAAC,CAAC;KACH;AAED,IAAA,CAAC,OAAO,GAAA;QACP,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;KAC5B;AAED,IAAA,CAAC,IAAI,GAAA;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;KACzB;AAED,IAAA,CAAC,MAAM,GAAA;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;KAC3B;IAED,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;KACtB;AAED,IAAA,KAAK,MAAM,CAAC,WAAW,CAAC,GAAA;AACvB,QAAA,OAAO,eAAe,CAAC;KACvB;AACD;;;;"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { IObservableWithChange, IObserver, IReader, IObservable } from '../base';
|
|
2
|
+
import { DisposableStore } from '../commonFacade/deps';
|
|
3
|
+
import { DebugLocation } from '../debugLocation';
|
|
4
|
+
import { DebugOwner } from '../debugName';
|
|
5
|
+
import { debugGetDependencyGraph } from '../logging/debugGetDependencyGraph';
|
|
6
|
+
import type { keepObserved, recomputeInitiallyAndOnChange } from '../utils/utils';
|
|
7
|
+
import { derivedOpts } from './derived';
|
|
8
|
+
declare let _derived: typeof derivedOpts;
|
|
9
|
+
/**
|
|
10
|
+
* @internal
|
|
11
|
+
* This is to allow splitting files.
|
|
12
|
+
*/
|
|
13
|
+
export declare function _setDerivedOpts(derived: typeof _derived): void;
|
|
14
|
+
declare let _recomputeInitiallyAndOnChange: typeof recomputeInitiallyAndOnChange;
|
|
15
|
+
export declare function _setRecomputeInitiallyAndOnChange(recomputeInitiallyAndOnChange: typeof _recomputeInitiallyAndOnChange): void;
|
|
16
|
+
declare let _keepObserved: typeof keepObserved;
|
|
17
|
+
export declare function _setKeepObserved(keepObserved: typeof _keepObserved): void;
|
|
18
|
+
declare let _debugGetDependencyGraph: typeof debugGetDependencyGraph;
|
|
19
|
+
export declare function _setDebugGetDependencyGraph(debugGetDependencyGraph: typeof _debugGetDependencyGraph): void;
|
|
20
|
+
export declare abstract class ConvenientObservable<T, TChange> implements IObservableWithChange<T, TChange> {
|
|
21
|
+
get TChange(): TChange;
|
|
22
|
+
abstract get(): T;
|
|
23
|
+
reportChanges(): void;
|
|
24
|
+
abstract addObserver(observer: IObserver): void;
|
|
25
|
+
abstract removeObserver(observer: IObserver): void;
|
|
26
|
+
/** @sealed */
|
|
27
|
+
read(reader: IReader | undefined): T;
|
|
28
|
+
/** @sealed */
|
|
29
|
+
map<TNew>(fn: (value: T, reader: IReader) => TNew): IObservable<TNew>;
|
|
30
|
+
map<TNew>(owner: DebugOwner, fn: (value: T, reader: IReader) => TNew): IObservable<TNew>;
|
|
31
|
+
abstract log(): IObservableWithChange<T, TChange>;
|
|
32
|
+
/**
|
|
33
|
+
* @sealed
|
|
34
|
+
* Converts an observable of an observable value into a direct observable of the value.
|
|
35
|
+
*/
|
|
36
|
+
flatten<TNew>(this: IObservable<IObservableWithChange<TNew, any>>): IObservable<TNew>;
|
|
37
|
+
recomputeInitiallyAndOnChange(store: DisposableStore, handleValue?: (value: T) => void): IObservable<T>;
|
|
38
|
+
/**
|
|
39
|
+
* Ensures that this observable is observed. This keeps the cache alive.
|
|
40
|
+
* However, in case of deriveds, it does not force eager evaluation (only when the value is read/get).
|
|
41
|
+
* Use `recomputeInitiallyAndOnChange` for eager evaluation.
|
|
42
|
+
*/
|
|
43
|
+
keepObserved(store: DisposableStore): IObservable<T>;
|
|
44
|
+
abstract get debugName(): string;
|
|
45
|
+
protected get debugValue(): T;
|
|
46
|
+
debugGetDependencyGraph(): string;
|
|
47
|
+
}
|
|
48
|
+
export declare abstract class BaseObservable<T, TChange = void> extends ConvenientObservable<T, TChange> {
|
|
49
|
+
protected readonly _observers: Set<IObserver>;
|
|
50
|
+
constructor(debugLocation: DebugLocation);
|
|
51
|
+
addObserver(observer: IObserver): void;
|
|
52
|
+
removeObserver(observer: IObserver): void;
|
|
53
|
+
protected onFirstObserverAdded(): void;
|
|
54
|
+
protected onLastObserverRemoved(): void;
|
|
55
|
+
log(): IObservableWithChange<T, TChange>;
|
|
56
|
+
debugGetObservers(): Set<IObserver>;
|
|
57
|
+
}
|
|
58
|
+
export {};
|
|
59
|
+
//# sourceMappingURL=baseObservable.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"baseObservable.d.ts","sourceRoot":"","sources":["../../../src/observableInternal/observables/baseObservable.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/*---------------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
+
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
4
|
+
*--------------------------------------------------------------------------------------------*/
|
|
5
|
+
import { DebugLocation } from '../debugLocation.js';
|
|
6
|
+
import { getFunctionName } from '../debugName.js';
|
|
7
|
+
import { logObservable, getLogger } from '../logging/logging.js';
|
|
8
|
+
|
|
9
|
+
/*---------------------------------------------------------------------------------------------
|
|
10
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
11
|
+
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
12
|
+
*--------------------------------------------------------------------------------------------*/
|
|
13
|
+
let _derived;
|
|
14
|
+
/**
|
|
15
|
+
* @internal
|
|
16
|
+
* This is to allow splitting files.
|
|
17
|
+
*/
|
|
18
|
+
function _setDerivedOpts(derived) {
|
|
19
|
+
_derived = derived;
|
|
20
|
+
}
|
|
21
|
+
let _recomputeInitiallyAndOnChange;
|
|
22
|
+
function _setRecomputeInitiallyAndOnChange(recomputeInitiallyAndOnChange) {
|
|
23
|
+
_recomputeInitiallyAndOnChange = recomputeInitiallyAndOnChange;
|
|
24
|
+
}
|
|
25
|
+
let _keepObserved;
|
|
26
|
+
function _setKeepObserved(keepObserved) {
|
|
27
|
+
_keepObserved = keepObserved;
|
|
28
|
+
}
|
|
29
|
+
let _debugGetDependencyGraph;
|
|
30
|
+
function _setDebugGetDependencyGraph(debugGetDependencyGraph) {
|
|
31
|
+
_debugGetDependencyGraph = debugGetDependencyGraph;
|
|
32
|
+
}
|
|
33
|
+
class ConvenientObservable {
|
|
34
|
+
get TChange() { return null; }
|
|
35
|
+
reportChanges() {
|
|
36
|
+
this.get();
|
|
37
|
+
}
|
|
38
|
+
/** @sealed */
|
|
39
|
+
read(reader) {
|
|
40
|
+
if (reader) {
|
|
41
|
+
return reader.readObservable(this);
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
return this.get();
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
map(fnOrOwner, fnOrUndefined, debugLocation = DebugLocation.ofCaller()) {
|
|
48
|
+
const owner = fnOrUndefined === undefined ? undefined : fnOrOwner;
|
|
49
|
+
const fn = fnOrUndefined === undefined ? fnOrOwner : fnOrUndefined;
|
|
50
|
+
return _derived({
|
|
51
|
+
owner,
|
|
52
|
+
debugName: () => {
|
|
53
|
+
const name = getFunctionName(fn);
|
|
54
|
+
if (name !== undefined) {
|
|
55
|
+
return name;
|
|
56
|
+
}
|
|
57
|
+
// regexp to match `x => x.y` or `x => x?.y` where x and y can be arbitrary identifiers (uses backref):
|
|
58
|
+
const regexp = /^\s*\(?\s*([a-zA-Z_$][a-zA-Z_$0-9]*)\s*\)?\s*=>\s*\1(?:\??)\.([a-zA-Z_$][a-zA-Z_$0-9]*)\s*$/;
|
|
59
|
+
const match = regexp.exec(fn.toString());
|
|
60
|
+
if (match) {
|
|
61
|
+
return `${this.debugName}.${match[2]}`;
|
|
62
|
+
}
|
|
63
|
+
if (!owner) {
|
|
64
|
+
return `${this.debugName} (mapped)`;
|
|
65
|
+
}
|
|
66
|
+
return undefined;
|
|
67
|
+
},
|
|
68
|
+
debugReferenceFn: fn,
|
|
69
|
+
}, (reader) => fn(this.read(reader), reader), debugLocation);
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* @sealed
|
|
73
|
+
* Converts an observable of an observable value into a direct observable of the value.
|
|
74
|
+
*/
|
|
75
|
+
flatten() {
|
|
76
|
+
return _derived({
|
|
77
|
+
owner: undefined,
|
|
78
|
+
debugName: () => `${this.debugName} (flattened)`,
|
|
79
|
+
}, (reader) => this.read(reader).read(reader));
|
|
80
|
+
}
|
|
81
|
+
recomputeInitiallyAndOnChange(store, handleValue) {
|
|
82
|
+
store.add(_recomputeInitiallyAndOnChange(this, handleValue));
|
|
83
|
+
return this;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Ensures that this observable is observed. This keeps the cache alive.
|
|
87
|
+
* However, in case of deriveds, it does not force eager evaluation (only when the value is read/get).
|
|
88
|
+
* Use `recomputeInitiallyAndOnChange` for eager evaluation.
|
|
89
|
+
*/
|
|
90
|
+
keepObserved(store) {
|
|
91
|
+
store.add(_keepObserved(this));
|
|
92
|
+
return this;
|
|
93
|
+
}
|
|
94
|
+
get debugValue() {
|
|
95
|
+
return this.get();
|
|
96
|
+
}
|
|
97
|
+
debugGetDependencyGraph() {
|
|
98
|
+
return _debugGetDependencyGraph(this);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
class BaseObservable extends ConvenientObservable {
|
|
102
|
+
constructor(debugLocation) {
|
|
103
|
+
super();
|
|
104
|
+
this._observers = new Set();
|
|
105
|
+
getLogger()?.handleObservableCreated(this, debugLocation);
|
|
106
|
+
}
|
|
107
|
+
addObserver(observer) {
|
|
108
|
+
const len = this._observers.size;
|
|
109
|
+
this._observers.add(observer);
|
|
110
|
+
if (len === 0) {
|
|
111
|
+
this.onFirstObserverAdded();
|
|
112
|
+
}
|
|
113
|
+
if (len !== this._observers.size) {
|
|
114
|
+
getLogger()?.handleOnListenerCountChanged(this, this._observers.size);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
removeObserver(observer) {
|
|
118
|
+
const deleted = this._observers.delete(observer);
|
|
119
|
+
if (deleted && this._observers.size === 0) {
|
|
120
|
+
this.onLastObserverRemoved();
|
|
121
|
+
}
|
|
122
|
+
if (deleted) {
|
|
123
|
+
getLogger()?.handleOnListenerCountChanged(this, this._observers.size);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
onFirstObserverAdded() { }
|
|
127
|
+
onLastObserverRemoved() { }
|
|
128
|
+
log() {
|
|
129
|
+
const hadLogger = !!getLogger();
|
|
130
|
+
logObservable(this);
|
|
131
|
+
if (!hadLogger) {
|
|
132
|
+
getLogger()?.handleObservableCreated(this, DebugLocation.ofCaller());
|
|
133
|
+
}
|
|
134
|
+
return this;
|
|
135
|
+
}
|
|
136
|
+
debugGetObservers() {
|
|
137
|
+
return this._observers;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
export { BaseObservable, ConvenientObservable, _setDebugGetDependencyGraph, _setDerivedOpts, _setKeepObserved, _setRecomputeInitiallyAndOnChange };
|
|
142
|
+
//# sourceMappingURL=baseObservable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"baseObservable.js","sources":["../../../src/observableInternal/observables/baseObservable.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constObservable.d.ts","sourceRoot":"","sources":["../../../src/observableInternal/observables/constObservable.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAoC,MAAM,SAAS,CAAC;AAGxE;;GAEG;AAEH,wBAAgB,eAAe,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAE3D"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/*---------------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
+
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
4
|
+
*--------------------------------------------------------------------------------------------*/
|
|
5
|
+
import { ConvenientObservable } from './baseObservable.js';
|
|
6
|
+
|
|
7
|
+
/*---------------------------------------------------------------------------------------------
|
|
8
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
9
|
+
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
10
|
+
*--------------------------------------------------------------------------------------------*/
|
|
11
|
+
/**
|
|
12
|
+
* Represents an efficient observable whose value never changes.
|
|
13
|
+
*/
|
|
14
|
+
function constObservable(value) {
|
|
15
|
+
return new ConstObservable(value);
|
|
16
|
+
}
|
|
17
|
+
class ConstObservable extends ConvenientObservable {
|
|
18
|
+
constructor(value) {
|
|
19
|
+
super();
|
|
20
|
+
this.value = value;
|
|
21
|
+
}
|
|
22
|
+
get debugName() {
|
|
23
|
+
return this.toString();
|
|
24
|
+
}
|
|
25
|
+
get() {
|
|
26
|
+
return this.value;
|
|
27
|
+
}
|
|
28
|
+
addObserver(observer) {
|
|
29
|
+
// NO OP
|
|
30
|
+
}
|
|
31
|
+
removeObserver(observer) {
|
|
32
|
+
// NO OP
|
|
33
|
+
}
|
|
34
|
+
log() {
|
|
35
|
+
return this;
|
|
36
|
+
}
|
|
37
|
+
toString() {
|
|
38
|
+
return `Const: ${this.value}`;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export { constObservable };
|
|
43
|
+
//# sourceMappingURL=constObservable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constObservable.js","sources":["../../../src/observableInternal/observables/constObservable.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;AAAA;;;AAGgG;AAKhG;;AAEG;AAEG,SAAU,eAAe,CAAI,KAAQ,EAAA;AAC1C,IAAA,OAAO,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;AACnC,CAAC;AACD,MAAM,eAAmB,SAAQ,oBAA6B,CAAA;AAC7D,IAAA,WAAA,CAA6B,KAAQ,EAAA;AACpC,QAAA,KAAK,EAAE,CAAC;QADoB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAG;KAEpC;AAED,IAAA,IAAoB,SAAS,GAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;KACvB;IAEM,GAAG,GAAA;QACT,OAAO,IAAI,CAAC,KAAK,CAAC;KAClB;AACM,IAAA,WAAW,CAAC,QAAmB,EAAA;;KAErC;AACM,IAAA,cAAc,CAAC,QAAmB,EAAA;;KAExC;IAEQ,GAAG,GAAA;AACX,QAAA,OAAO,IAAI,CAAC;KACZ;IAEQ,QAAQ,GAAA;AAChB,QAAA,OAAO,CAAU,OAAA,EAAA,IAAI,CAAC,KAAK,EAAE,CAAC;KAC9B;AACD;;;;"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { IObservable, IReader, ITransaction, ISettableObservable, IObservableWithChange } from '../base';
|
|
2
|
+
import { IChangeTracker } from '../changeTracker';
|
|
3
|
+
import { DisposableStore, EqualityComparer, IDisposable } from '../commonFacade/deps';
|
|
4
|
+
import { DebugLocation } from '../debugLocation';
|
|
5
|
+
import { DebugOwner, IDebugNameData } from '../debugName';
|
|
6
|
+
import { IDerivedReader } from './derivedImpl';
|
|
7
|
+
/**
|
|
8
|
+
* Creates an observable that is derived from other observables.
|
|
9
|
+
* The value is only recomputed when absolutely needed.
|
|
10
|
+
*
|
|
11
|
+
* {@link computeFn} should start with a JS Doc using `@description` to name the derived.
|
|
12
|
+
*/
|
|
13
|
+
export declare function derived<T, TChange = void>(computeFn: (reader: IDerivedReader<TChange>) => T): IObservableWithChange<T, TChange>;
|
|
14
|
+
export declare function derived<T, TChange = void>(owner: DebugOwner, computeFn: (reader: IDerivedReader<TChange>) => T): IObservableWithChange<T, TChange>;
|
|
15
|
+
export declare function derivedWithSetter<T>(owner: DebugOwner | undefined, computeFn: (reader: IReader) => T, setter: (value: T, transaction: ITransaction | undefined) => void, debugLocation?: DebugLocation): ISettableObservable<T>;
|
|
16
|
+
export declare function derivedOpts<T>(options: IDebugNameData & {
|
|
17
|
+
equalsFn?: EqualityComparer<T>;
|
|
18
|
+
onLastObserverRemoved?: (() => void);
|
|
19
|
+
}, computeFn: (reader: IReader) => T, debugLocation?: DebugLocation): IObservable<T>;
|
|
20
|
+
/**
|
|
21
|
+
* Represents an observable that is derived from other observables.
|
|
22
|
+
* The value is only recomputed when absolutely needed.
|
|
23
|
+
*
|
|
24
|
+
* {@link computeFn} should start with a JS Doc using `@description` to name the derived.
|
|
25
|
+
*
|
|
26
|
+
* Use `createEmptyChangeSummary` to create a "change summary" that can collect the changes.
|
|
27
|
+
* Use `handleChange` to add a reported change to the change summary.
|
|
28
|
+
* The compute function is given the last change summary.
|
|
29
|
+
* The change summary is discarded after the compute function was called.
|
|
30
|
+
*
|
|
31
|
+
* @see derived
|
|
32
|
+
*/
|
|
33
|
+
export declare function derivedHandleChanges<T, TDelta, TChangeSummary>(options: IDebugNameData & {
|
|
34
|
+
changeTracker: IChangeTracker<TChangeSummary>;
|
|
35
|
+
equalityComparer?: EqualityComparer<T>;
|
|
36
|
+
}, computeFn: (reader: IDerivedReader<TDelta>, changeSummary: TChangeSummary) => T, debugLocation?: DebugLocation): IObservableWithChange<T, TDelta>;
|
|
37
|
+
/**
|
|
38
|
+
* @deprecated Use `derived(reader => { reader.store.add(...) })` instead!
|
|
39
|
+
*/
|
|
40
|
+
export declare function derivedWithStore<T>(computeFn: (reader: IReader, store: DisposableStore) => T): IObservable<T>;
|
|
41
|
+
/**
|
|
42
|
+
* @deprecated Use `derived(reader => { reader.store.add(...) })` instead!
|
|
43
|
+
*/
|
|
44
|
+
export declare function derivedWithStore<T>(owner: DebugOwner, computeFn: (reader: IReader, store: DisposableStore) => T): IObservable<T>;
|
|
45
|
+
export declare function derivedDisposable<T extends IDisposable | undefined>(computeFn: (reader: IReader) => T): IObservable<T>;
|
|
46
|
+
export declare function derivedDisposable<T extends IDisposable | undefined>(owner: DebugOwner, computeFn: (reader: IReader) => T): IObservable<T>;
|
|
47
|
+
//# sourceMappingURL=derived.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"derived.d.ts","sourceRoot":"","sources":["../../../src/observableInternal/observables/derived.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/*---------------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
+
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
4
|
+
*--------------------------------------------------------------------------------------------*/
|
|
5
|
+
import { strictEquals } from '../commonFacade/deps.js';
|
|
6
|
+
import { DebugLocation } from '../debugLocation.js';
|
|
7
|
+
import { DebugNameData } from '../debugName.js';
|
|
8
|
+
import { _setDerivedOpts } from './baseObservable.js';
|
|
9
|
+
import { Derived, DerivedWithSetter } from './derivedImpl.js';
|
|
10
|
+
import { DisposableStore } from '../../disposables.js';
|
|
11
|
+
|
|
12
|
+
/*---------------------------------------------------------------------------------------------
|
|
13
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
14
|
+
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
15
|
+
*--------------------------------------------------------------------------------------------*/
|
|
16
|
+
function derived(computeFnOrOwner, computeFn, debugLocation = DebugLocation.ofCaller()) {
|
|
17
|
+
if (computeFn !== undefined) {
|
|
18
|
+
return new Derived(new DebugNameData(computeFnOrOwner, undefined, computeFn), computeFn, undefined, undefined, strictEquals, debugLocation);
|
|
19
|
+
}
|
|
20
|
+
return new Derived(new DebugNameData(undefined, undefined, computeFnOrOwner), computeFnOrOwner, undefined, undefined, strictEquals, debugLocation);
|
|
21
|
+
}
|
|
22
|
+
function derivedWithSetter(owner, computeFn, setter, debugLocation = DebugLocation.ofCaller()) {
|
|
23
|
+
return new DerivedWithSetter(new DebugNameData(owner, undefined, computeFn), computeFn, undefined, undefined, strictEquals, setter, debugLocation);
|
|
24
|
+
}
|
|
25
|
+
function derivedOpts(options, computeFn, debugLocation = DebugLocation.ofCaller()) {
|
|
26
|
+
return new Derived(new DebugNameData(options.owner, options.debugName, options.debugReferenceFn), computeFn, undefined, options.onLastObserverRemoved, options.equalsFn ?? strictEquals, debugLocation);
|
|
27
|
+
}
|
|
28
|
+
_setDerivedOpts(derivedOpts);
|
|
29
|
+
/**
|
|
30
|
+
* Represents an observable that is derived from other observables.
|
|
31
|
+
* The value is only recomputed when absolutely needed.
|
|
32
|
+
*
|
|
33
|
+
* {@link computeFn} should start with a JS Doc using `@description` to name the derived.
|
|
34
|
+
*
|
|
35
|
+
* Use `createEmptyChangeSummary` to create a "change summary" that can collect the changes.
|
|
36
|
+
* Use `handleChange` to add a reported change to the change summary.
|
|
37
|
+
* The compute function is given the last change summary.
|
|
38
|
+
* The change summary is discarded after the compute function was called.
|
|
39
|
+
*
|
|
40
|
+
* @see derived
|
|
41
|
+
*/
|
|
42
|
+
function derivedHandleChanges(options, computeFn, debugLocation = DebugLocation.ofCaller()) {
|
|
43
|
+
return new Derived(new DebugNameData(options.owner, options.debugName, undefined), computeFn, options.changeTracker, undefined, options.equalityComparer ?? strictEquals, debugLocation);
|
|
44
|
+
}
|
|
45
|
+
function derivedWithStore(computeFnOrOwner, computeFnOrUndefined, debugLocation = DebugLocation.ofCaller()) {
|
|
46
|
+
let computeFn;
|
|
47
|
+
let owner;
|
|
48
|
+
if (computeFnOrUndefined === undefined) {
|
|
49
|
+
computeFn = computeFnOrOwner;
|
|
50
|
+
owner = undefined;
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
owner = computeFnOrOwner;
|
|
54
|
+
computeFn = computeFnOrUndefined;
|
|
55
|
+
}
|
|
56
|
+
// Intentionally re-assigned in case an inactive observable is re-used later
|
|
57
|
+
// eslint-disable-next-line local/code-no-potentially-unsafe-disposables
|
|
58
|
+
let store = new DisposableStore();
|
|
59
|
+
return new Derived(new DebugNameData(owner, undefined, computeFn), r => {
|
|
60
|
+
if (store.isDisposed) {
|
|
61
|
+
store = new DisposableStore();
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
store.clear();
|
|
65
|
+
}
|
|
66
|
+
return computeFn(r, store);
|
|
67
|
+
}, undefined, () => store.dispose(), strictEquals, debugLocation);
|
|
68
|
+
}
|
|
69
|
+
function derivedDisposable(computeFnOrOwner, computeFnOrUndefined, debugLocation = DebugLocation.ofCaller()) {
|
|
70
|
+
let computeFn;
|
|
71
|
+
let owner;
|
|
72
|
+
if (computeFnOrUndefined === undefined) {
|
|
73
|
+
computeFn = computeFnOrOwner;
|
|
74
|
+
owner = undefined;
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
owner = computeFnOrOwner;
|
|
78
|
+
computeFn = computeFnOrUndefined;
|
|
79
|
+
}
|
|
80
|
+
let store = undefined;
|
|
81
|
+
return new Derived(new DebugNameData(owner, undefined, computeFn), r => {
|
|
82
|
+
if (!store) {
|
|
83
|
+
store = new DisposableStore();
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
store.clear();
|
|
87
|
+
}
|
|
88
|
+
const result = computeFn(r);
|
|
89
|
+
if (result) {
|
|
90
|
+
store.add(result);
|
|
91
|
+
}
|
|
92
|
+
return result;
|
|
93
|
+
}, undefined, () => {
|
|
94
|
+
if (store) {
|
|
95
|
+
store.dispose();
|
|
96
|
+
store = undefined;
|
|
97
|
+
}
|
|
98
|
+
}, strictEquals, debugLocation);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
export { derived, derivedDisposable, derivedHandleChanges, derivedOpts, derivedWithSetter, derivedWithStore };
|
|
102
|
+
//# sourceMappingURL=derived.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"derived.js","sources":["../../../src/observableInternal/observables/derived.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|