@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,249 @@
|
|
|
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 { createEffect } from '../reactions/createEffect.js';
|
|
6
|
+
import { transaction } from '../transaction.js';
|
|
7
|
+
import { observableValue } from '../observables/observableValue.js';
|
|
8
|
+
import { toDisposable } from '../commonFacade/deps.js';
|
|
9
|
+
import { derivedOpts, derived } from '../observables/derived.js';
|
|
10
|
+
import { observableFromEvent } from '../observables/observableFromEvent.js';
|
|
11
|
+
import { observableSignal } from '../observables/observableSignal.js';
|
|
12
|
+
import { _setKeepObserved, _setRecomputeInitiallyAndOnChange } from '../observables/baseObservable.js';
|
|
13
|
+
import { DisposableStore } from '../../disposables.js';
|
|
14
|
+
|
|
15
|
+
/*---------------------------------------------------------------------------------------------
|
|
16
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
17
|
+
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
18
|
+
*--------------------------------------------------------------------------------------------*/
|
|
19
|
+
function observableFromPromise(promise) {
|
|
20
|
+
const observable = observableValue('promiseValue', {});
|
|
21
|
+
promise.then((value) => {
|
|
22
|
+
observable.set({ value }, undefined);
|
|
23
|
+
});
|
|
24
|
+
return observable;
|
|
25
|
+
}
|
|
26
|
+
function signalFromObservable(owner, observable) {
|
|
27
|
+
return derivedOpts({
|
|
28
|
+
owner,
|
|
29
|
+
equalsFn: () => false,
|
|
30
|
+
}, reader => {
|
|
31
|
+
observable.read(reader);
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* @deprecated Use `debouncedObservable` instead.
|
|
36
|
+
*/
|
|
37
|
+
function debouncedObservableDeprecated(observable, debounceMs, disposableStore) {
|
|
38
|
+
const debouncedObservable = observableValue('debounced', undefined);
|
|
39
|
+
let timeout = undefined;
|
|
40
|
+
disposableStore.add(createEffect(reader => {
|
|
41
|
+
/** @description debounce */
|
|
42
|
+
const value = observable.read(reader);
|
|
43
|
+
if (timeout) {
|
|
44
|
+
clearTimeout(timeout);
|
|
45
|
+
}
|
|
46
|
+
timeout = setTimeout(() => {
|
|
47
|
+
transaction(tx => {
|
|
48
|
+
debouncedObservable.set(value, tx);
|
|
49
|
+
});
|
|
50
|
+
}, debounceMs);
|
|
51
|
+
}));
|
|
52
|
+
return debouncedObservable;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Creates an observable that debounces the input observable.
|
|
56
|
+
*/
|
|
57
|
+
function debouncedObservable(observable, debounceMs) {
|
|
58
|
+
let hasValue = false;
|
|
59
|
+
let lastValue;
|
|
60
|
+
let timeout = undefined;
|
|
61
|
+
return observableFromEvent(cb => {
|
|
62
|
+
const d = createEffect(reader => {
|
|
63
|
+
const value = observable.read(reader);
|
|
64
|
+
if (!hasValue) {
|
|
65
|
+
hasValue = true;
|
|
66
|
+
lastValue = value;
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
if (timeout) {
|
|
70
|
+
clearTimeout(timeout);
|
|
71
|
+
}
|
|
72
|
+
timeout = setTimeout(() => {
|
|
73
|
+
lastValue = value;
|
|
74
|
+
cb();
|
|
75
|
+
}, debounceMs);
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
return {
|
|
79
|
+
dispose() {
|
|
80
|
+
d.dispose();
|
|
81
|
+
hasValue = false;
|
|
82
|
+
lastValue = undefined;
|
|
83
|
+
},
|
|
84
|
+
};
|
|
85
|
+
}, () => {
|
|
86
|
+
if (hasValue) {
|
|
87
|
+
return lastValue;
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
return observable.get();
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
function wasEventTriggeredRecently(event, timeoutMs, disposableStore) {
|
|
95
|
+
const observable = observableValue('triggeredRecently', false);
|
|
96
|
+
let timeout = undefined;
|
|
97
|
+
disposableStore.add(event(() => {
|
|
98
|
+
observable.set(true, undefined);
|
|
99
|
+
if (timeout) {
|
|
100
|
+
clearTimeout(timeout);
|
|
101
|
+
}
|
|
102
|
+
timeout = setTimeout(() => {
|
|
103
|
+
observable.set(false, undefined);
|
|
104
|
+
}, timeoutMs);
|
|
105
|
+
}));
|
|
106
|
+
return observable;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* This makes sure the observable is being observed and keeps its cache alive.
|
|
110
|
+
*/
|
|
111
|
+
function keepObserved(observable) {
|
|
112
|
+
const o = new KeepAliveObserver(false, undefined);
|
|
113
|
+
observable.addObserver(o);
|
|
114
|
+
return toDisposable(() => {
|
|
115
|
+
observable.removeObserver(o);
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
_setKeepObserved(keepObserved);
|
|
119
|
+
/**
|
|
120
|
+
* This converts the given observable into an autorun.
|
|
121
|
+
*/
|
|
122
|
+
function recomputeInitiallyAndOnChange(observable, handleValue) {
|
|
123
|
+
const o = new KeepAliveObserver(true, handleValue);
|
|
124
|
+
observable.addObserver(o);
|
|
125
|
+
try {
|
|
126
|
+
o.beginUpdate(observable);
|
|
127
|
+
}
|
|
128
|
+
finally {
|
|
129
|
+
o.endUpdate(observable);
|
|
130
|
+
}
|
|
131
|
+
return toDisposable(() => {
|
|
132
|
+
observable.removeObserver(o);
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
_setRecomputeInitiallyAndOnChange(recomputeInitiallyAndOnChange);
|
|
136
|
+
class KeepAliveObserver {
|
|
137
|
+
constructor(_forceRecompute, _handleValue) {
|
|
138
|
+
this._forceRecompute = _forceRecompute;
|
|
139
|
+
this._handleValue = _handleValue;
|
|
140
|
+
this._counter = 0;
|
|
141
|
+
}
|
|
142
|
+
beginUpdate(observable) {
|
|
143
|
+
this._counter++;
|
|
144
|
+
}
|
|
145
|
+
endUpdate(observable) {
|
|
146
|
+
if (this._counter === 1 && this._forceRecompute) {
|
|
147
|
+
if (this._handleValue) {
|
|
148
|
+
this._handleValue(observable.get());
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
observable.reportChanges();
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
this._counter--;
|
|
155
|
+
}
|
|
156
|
+
handlePossibleChange(observable) {
|
|
157
|
+
// NO OP
|
|
158
|
+
}
|
|
159
|
+
handleChange(observable, change) {
|
|
160
|
+
// NO OP
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
function derivedObservableWithCache(owner, computeFn) {
|
|
164
|
+
let lastValue = undefined;
|
|
165
|
+
const observable = derivedOpts({ owner, debugReferenceFn: computeFn }, reader => {
|
|
166
|
+
lastValue = computeFn(reader, lastValue);
|
|
167
|
+
return lastValue;
|
|
168
|
+
});
|
|
169
|
+
return observable;
|
|
170
|
+
}
|
|
171
|
+
function derivedObservableWithWritableCache(owner, computeFn) {
|
|
172
|
+
let lastValue = undefined;
|
|
173
|
+
const onChange = observableSignal('derivedObservableWithWritableCache');
|
|
174
|
+
const observable = derived(owner, reader => {
|
|
175
|
+
onChange.read(reader);
|
|
176
|
+
lastValue = computeFn(reader, lastValue);
|
|
177
|
+
return lastValue;
|
|
178
|
+
});
|
|
179
|
+
return Object.assign(observable, {
|
|
180
|
+
clearCache: (tx) => {
|
|
181
|
+
lastValue = undefined;
|
|
182
|
+
onChange.trigger(tx);
|
|
183
|
+
},
|
|
184
|
+
setCache: (newValue, tx) => {
|
|
185
|
+
lastValue = newValue;
|
|
186
|
+
onChange.trigger(tx);
|
|
187
|
+
}
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* When the items array changes, referential equal items are not mapped again.
|
|
192
|
+
*/
|
|
193
|
+
function mapObservableArrayCached(owner, items, map, keySelector) {
|
|
194
|
+
let m = new ArrayMap(map, keySelector);
|
|
195
|
+
const self = derivedOpts({
|
|
196
|
+
debugReferenceFn: map,
|
|
197
|
+
owner,
|
|
198
|
+
onLastObserverRemoved: () => {
|
|
199
|
+
m.dispose();
|
|
200
|
+
m = new ArrayMap(map);
|
|
201
|
+
}
|
|
202
|
+
}, (reader) => {
|
|
203
|
+
m.setItems(items.read(reader));
|
|
204
|
+
return m.getItems();
|
|
205
|
+
});
|
|
206
|
+
return self;
|
|
207
|
+
}
|
|
208
|
+
class ArrayMap {
|
|
209
|
+
constructor(_map, _keySelector) {
|
|
210
|
+
this._map = _map;
|
|
211
|
+
this._keySelector = _keySelector;
|
|
212
|
+
this._cache = new Map();
|
|
213
|
+
this._items = [];
|
|
214
|
+
}
|
|
215
|
+
dispose() {
|
|
216
|
+
this._cache.forEach(entry => entry.store.dispose());
|
|
217
|
+
this._cache.clear();
|
|
218
|
+
}
|
|
219
|
+
setItems(items) {
|
|
220
|
+
const newItems = [];
|
|
221
|
+
const itemsToRemove = new Set(this._cache.keys());
|
|
222
|
+
for (const item of items) {
|
|
223
|
+
const key = this._keySelector ? this._keySelector(item) : item;
|
|
224
|
+
let entry = this._cache.get(key);
|
|
225
|
+
if (!entry) {
|
|
226
|
+
const store = new DisposableStore();
|
|
227
|
+
const out = this._map(item, store);
|
|
228
|
+
entry = { out, store };
|
|
229
|
+
this._cache.set(key, entry);
|
|
230
|
+
}
|
|
231
|
+
else {
|
|
232
|
+
itemsToRemove.delete(key);
|
|
233
|
+
}
|
|
234
|
+
newItems.push(entry.out);
|
|
235
|
+
}
|
|
236
|
+
for (const item of itemsToRemove) {
|
|
237
|
+
const entry = this._cache.get(item);
|
|
238
|
+
entry.store.dispose();
|
|
239
|
+
this._cache.delete(item);
|
|
240
|
+
}
|
|
241
|
+
this._items = newItems;
|
|
242
|
+
}
|
|
243
|
+
getItems() {
|
|
244
|
+
return this._items;
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
export { KeepAliveObserver, debouncedObservable, debouncedObservableDeprecated, derivedObservableWithCache, derivedObservableWithWritableCache, keepObserved, mapObservableArrayCached, observableFromPromise, recomputeInitiallyAndOnChange, signalFromObservable, wasEventTriggeredRecently };
|
|
249
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../../src/observableInternal/utils/utils.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { IReader, IObservable } from '../base';
|
|
2
|
+
import { CancellationToken } from '../commonFacade/cancellation';
|
|
3
|
+
/**
|
|
4
|
+
* Resolves the promise when the observables state matches the predicate.
|
|
5
|
+
*/
|
|
6
|
+
export declare function waitForState<T>(observable: IObservable<T | null | undefined>): Promise<T>;
|
|
7
|
+
export declare function waitForState<T, TState extends T>(observable: IObservable<T>, predicate: (state: T) => state is TState, isError?: (state: T) => boolean | unknown | undefined, cancellationToken?: CancellationToken): Promise<TState>;
|
|
8
|
+
export declare function waitForState<T>(observable: IObservable<T>, predicate: (state: T) => boolean, isError?: (state: T) => boolean | unknown | undefined, cancellationToken?: CancellationToken): Promise<T>;
|
|
9
|
+
export declare function derivedWithCancellationToken<T>(computeFn: (reader: IReader, cancellationToken: CancellationToken) => T): IObservable<T>;
|
|
10
|
+
export declare function derivedWithCancellationToken<T>(owner: object, computeFn: (reader: IReader, cancellationToken: CancellationToken) => T): IObservable<T>;
|
|
11
|
+
//# sourceMappingURL=utilsCancellation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utilsCancellation.d.ts","sourceRoot":"","sources":["../../../src/observableInternal/utils/utilsCancellation.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE/C,OAAO,EAAqB,iBAAiB,EAA2B,MAAM,8BAA8B,CAAC;AAM7G;;GAEG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAC3F,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,SAAS,CAAC,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,KAAK,IAAI,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,GAAG,OAAO,GAAG,SAAS,EAAE,iBAAiB,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AACvO,wBAAgB,YAAY,CAAC,CAAC,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,GAAG,OAAO,GAAG,SAAS,EAAE,iBAAiB,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAqDxM,wBAAgB,4BAA4B,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,KAAK,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;AACzI,wBAAgB,4BAA4B,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,KAAK,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,91 @@
|
|
|
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 { DebugNameData } from '../debugName.js';
|
|
6
|
+
import { CancellationError, CancellationTokenSource } from '../commonFacade/cancellation.js';
|
|
7
|
+
import { strictEquals } from '../commonFacade/deps.js';
|
|
8
|
+
import { createEffect } from '../reactions/createEffect.js';
|
|
9
|
+
import { Derived } from '../observables/derivedImpl.js';
|
|
10
|
+
import { DebugLocation } from '../debugLocation.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 waitForState(observable, predicate, isError, cancellationToken) {
|
|
17
|
+
if (!predicate) {
|
|
18
|
+
predicate = state => state !== null && state !== undefined;
|
|
19
|
+
}
|
|
20
|
+
return new Promise((resolve, reject) => {
|
|
21
|
+
let isImmediateRun = true;
|
|
22
|
+
let shouldDispose = false;
|
|
23
|
+
const stateObs = observable.map(state => {
|
|
24
|
+
/** @description waitForState.state */
|
|
25
|
+
return {
|
|
26
|
+
isFinished: predicate(state),
|
|
27
|
+
error: isError ? isError(state) : false,
|
|
28
|
+
state
|
|
29
|
+
};
|
|
30
|
+
});
|
|
31
|
+
const d = createEffect(reader => {
|
|
32
|
+
/** @description waitForState */
|
|
33
|
+
const { isFinished, error, state } = stateObs.read(reader);
|
|
34
|
+
if (isFinished || error) {
|
|
35
|
+
if (isImmediateRun) {
|
|
36
|
+
// The variable `d` is not initialized yet
|
|
37
|
+
shouldDispose = true;
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
d.dispose();
|
|
41
|
+
}
|
|
42
|
+
if (error) {
|
|
43
|
+
reject(error === true ? state : error);
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
resolve(state);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
if (cancellationToken) {
|
|
51
|
+
const dc = cancellationToken.onCancellationRequested(() => {
|
|
52
|
+
d.dispose();
|
|
53
|
+
dc.dispose();
|
|
54
|
+
reject(new CancellationError());
|
|
55
|
+
});
|
|
56
|
+
if (cancellationToken.isCancellationRequested) {
|
|
57
|
+
d.dispose();
|
|
58
|
+
dc.dispose();
|
|
59
|
+
reject(new CancellationError());
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
isImmediateRun = false;
|
|
64
|
+
if (shouldDispose) {
|
|
65
|
+
d.dispose();
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
function derivedWithCancellationToken(computeFnOrOwner, computeFnOrUndefined) {
|
|
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 cancellationTokenSource = undefined;
|
|
81
|
+
return new Derived(new DebugNameData(owner, undefined, computeFn), r => {
|
|
82
|
+
if (cancellationTokenSource) {
|
|
83
|
+
cancellationTokenSource.dispose();
|
|
84
|
+
}
|
|
85
|
+
cancellationTokenSource = new CancellationTokenSource();
|
|
86
|
+
return computeFn(r, cancellationTokenSource.token);
|
|
87
|
+
}, undefined, () => cancellationTokenSource?.dispose(), strictEquals, DebugLocation.ofCaller());
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
export { derivedWithCancellationToken, waitForState };
|
|
91
|
+
//# sourceMappingURL=utilsCancellation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utilsCancellation.js","sources":["../../../src/observableInternal/utils/utilsCancellation.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { IObservable } from '../base';
|
|
2
|
+
import { Event, IValueWithChangeEvent } from '../commonFacade/deps';
|
|
3
|
+
import { DebugOwner } from '../debugName';
|
|
4
|
+
export declare class ValueWithChangeEventFromObservable<T> implements IValueWithChangeEvent<T> {
|
|
5
|
+
readonly observable: IObservable<T>;
|
|
6
|
+
constructor(observable: IObservable<T>);
|
|
7
|
+
get onDidChange(): Event<void>;
|
|
8
|
+
get value(): T;
|
|
9
|
+
}
|
|
10
|
+
export declare function observableFromValueWithChangeEvent<T>(owner: DebugOwner, value: IValueWithChangeEvent<T>): IObservable<T>;
|
|
11
|
+
//# sourceMappingURL=valueWithChangeEvent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"valueWithChangeEvent.d.ts","sourceRoot":"","sources":["../../../src/observableInternal/utils/valueWithChangeEvent.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,qBAAqB,EAAe,MAAM,sBAAsB,CAAC;AACjF,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAqB1C,qBAAa,kCAAkC,CAAC,CAAC,CAAE,YAAW,qBAAqB,CAAC,CAAC,CAAC;aACzD,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC;gBAA1B,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC;IAGtD,IAAI,WAAW,IAAI,KAAK,CAAC,IAAI,CAAC,CAE7B;IAED,IAAI,KAAK,IAAI,CAAC,CAEb;CACD;AAED,wBAAgB,kCAAkC,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,qBAAqB,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAKxH"}
|
|
@@ -0,0 +1,48 @@
|
|
|
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 { observableFromEvent } from '../observables/observableFromEvent.js';
|
|
6
|
+
import { createEffect } from '../reactions/createEffect.js';
|
|
7
|
+
|
|
8
|
+
/*---------------------------------------------------------------------------------------------
|
|
9
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
10
|
+
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
11
|
+
*--------------------------------------------------------------------------------------------*/
|
|
12
|
+
/**
|
|
13
|
+
* Creates an Event from an observable that fires whenever the observable changes.
|
|
14
|
+
*/
|
|
15
|
+
function eventFromObservable(observable) {
|
|
16
|
+
return (listener) => {
|
|
17
|
+
let isFirst = true;
|
|
18
|
+
return createEffect(reader => {
|
|
19
|
+
observable.read(reader);
|
|
20
|
+
if (isFirst) {
|
|
21
|
+
isFirst = false;
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
listener();
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
class ValueWithChangeEventFromObservable {
|
|
30
|
+
constructor(observable) {
|
|
31
|
+
this.observable = observable;
|
|
32
|
+
}
|
|
33
|
+
get onDidChange() {
|
|
34
|
+
return eventFromObservable(this.observable);
|
|
35
|
+
}
|
|
36
|
+
get value() {
|
|
37
|
+
return this.observable.get();
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
function observableFromValueWithChangeEvent(owner, value) {
|
|
41
|
+
if (value instanceof ValueWithChangeEventFromObservable) {
|
|
42
|
+
return value.observable;
|
|
43
|
+
}
|
|
44
|
+
return observableFromEvent(owner, value.onDidChange, () => value.value);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export { ValueWithChangeEventFromObservable, observableFromValueWithChangeEvent };
|
|
48
|
+
//# sourceMappingURL=valueWithChangeEvent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"valueWithChangeEvent.js","sources":["../../../src/observableInternal/utils/valueWithChangeEvent.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;AAAA;;;AAGgG;AAQhG;;AAEG;AACH,SAAS,mBAAmB,CAAI,UAA0B,EAAA;IACzD,OAAO,CAAC,QAAoB,KAAiB;QAC5C,IAAI,OAAO,GAAG,IAAI,CAAC;AACnB,QAAA,OAAO,YAAY,CAAC,MAAM,IAAG;AAC5B,YAAA,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACxB,IAAI,OAAO,EAAE;gBACZ,OAAO,GAAG,KAAK,CAAC;aAChB;iBAAM;AACN,gBAAA,QAAQ,EAAE,CAAC;aACX;AACF,SAAC,CAAC,CAAC;AACJ,KAAC,CAAC;AACH,CAAC;MAEY,kCAAkC,CAAA;AAC9C,IAAA,WAAA,CAA4B,UAA0B,EAAA;QAA1B,IAAU,CAAA,UAAA,GAAV,UAAU,CAAgB;KACrD;AAED,IAAA,IAAI,WAAW,GAAA;AACd,QAAA,OAAO,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KAC5C;AAED,IAAA,IAAI,KAAK,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;KAC7B;AACD,CAAA;AAEe,SAAA,kCAAkC,CAAI,KAAiB,EAAE,KAA+B,EAAA;AACvG,IAAA,IAAI,KAAK,YAAY,kCAAkC,EAAE;QACxD,OAAO,KAAK,CAAC,UAAU,CAAC;KACxB;AACD,IAAA,OAAO,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC;AACzE;;;;"}
|
package/dist/utils.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { IDisposable } from "./disposables";
|
|
2
|
+
import { IObservableWithChange } from "./observableInternal/index";
|
|
3
|
+
type ObservableResult<T> = T extends IObservableWithChange<infer U, any> ? U : never;
|
|
4
|
+
type ObservableArrayToChangesData<T extends Record<string, IObservableWithChange<any, any>>> = {
|
|
5
|
+
[Key in keyof T]: {
|
|
6
|
+
value: ObservableResult<T[Key]>;
|
|
7
|
+
changes: T[Key]['TChange'][];
|
|
8
|
+
/**
|
|
9
|
+
* The value of the observable before the changes. `undefined` if
|
|
10
|
+
*/
|
|
11
|
+
previous: ObservableResult<T[Key]> | undefined;
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
export declare function autorunWithChanges<T extends Record<string, IObservableWithChange<any, any>>>(owner: object, observables: T, handler: (data: ObservableArrayToChangesData<T>) => void): IDisposable;
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAwB,MAAM,4BAA4B,CAAC;AAEzF,KAAK,gBAAgB,CAAC,CAAC,IAAI,CAAC,SAAS,qBAAqB,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAErF,KAAK,4BAA4B,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI;KAC7F,GAAG,IAAI,MAAM,CAAC,GAAG;QACjB,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAChC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B;;WAEG;QACH,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC;KAC/C;CACD,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,4BAA4B,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,WAAW,CAgClM"}
|
package/package.json
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@vscode/observables",
|
|
3
|
+
"description": "Observable utilities for VS Code",
|
|
4
|
+
"author": "Microsoft",
|
|
5
|
+
"version": "0.1.1-0",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "git+https://github.com/microsoft/vscode-packages.git",
|
|
10
|
+
"directory": "vscode-observables/observables"
|
|
11
|
+
},
|
|
12
|
+
"homepage": "https://github.com/microsoft/vscode-packages/tree/main/vscode-observables/observables",
|
|
13
|
+
"bugs": {
|
|
14
|
+
"url": "https://github.com/microsoft/vscode-packages/issues"
|
|
15
|
+
},
|
|
16
|
+
"type": "module",
|
|
17
|
+
"main": "./dist/index.js",
|
|
18
|
+
"module": "./dist/index.js",
|
|
19
|
+
"types": "./dist/index.d.ts",
|
|
20
|
+
"exports": {
|
|
21
|
+
".": {
|
|
22
|
+
"types": "./dist/index.d.ts",
|
|
23
|
+
"import": "./dist/index.js",
|
|
24
|
+
"default": "./dist/index.js"
|
|
25
|
+
},
|
|
26
|
+
"./min": {
|
|
27
|
+
"import": "./dist/index.min.js",
|
|
28
|
+
"default": "./dist/index.min.js"
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
"files": [
|
|
32
|
+
"dist"
|
|
33
|
+
],
|
|
34
|
+
"scripts": {
|
|
35
|
+
"prepare": "pnpm run build",
|
|
36
|
+
"build": "rollup -c",
|
|
37
|
+
"dev": "rollup -c -w",
|
|
38
|
+
"clean": "rimraf dist",
|
|
39
|
+
"typecheck": "tsc --noEmit"
|
|
40
|
+
},
|
|
41
|
+
"devDependencies": {
|
|
42
|
+
"@rollup/plugin-node-resolve": "^16.0.3",
|
|
43
|
+
"@rollup/plugin-terser": "^0.4.4",
|
|
44
|
+
"@rollup/plugin-typescript": "^12.3.0",
|
|
45
|
+
"rimraf": "^5.0.0",
|
|
46
|
+
"rollup": "^3.29.5",
|
|
47
|
+
"tslib": "^2.8.1",
|
|
48
|
+
"typescript": "^5.0.0"
|
|
49
|
+
}
|
|
50
|
+
}
|