@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.
Files changed (159) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +164 -0
  3. package/dist/assert.d.ts +3 -0
  4. package/dist/assert.d.ts.map +1 -0
  5. package/dist/deps.d.ts +29 -0
  6. package/dist/deps.d.ts.map +1 -0
  7. package/dist/disposables.d.ts +20 -0
  8. package/dist/disposables.d.ts.map +1 -0
  9. package/dist/disposables.js +66 -0
  10. package/dist/disposables.js.map +1 -0
  11. package/dist/equals.d.ts +33 -0
  12. package/dist/equals.d.ts.map +1 -0
  13. package/dist/index.d.ts +3 -0
  14. package/dist/index.d.ts.map +1 -0
  15. package/dist/index.js +27 -0
  16. package/dist/index.js.map +1 -0
  17. package/dist/index.min.js +124 -0
  18. package/dist/index.min.js.map +1 -0
  19. package/dist/observableInternal/base.d.ts +173 -0
  20. package/dist/observableInternal/base.d.ts.map +1 -0
  21. package/dist/observableInternal/base.js +21 -0
  22. package/dist/observableInternal/base.js.map +1 -0
  23. package/dist/observableInternal/changeTracker.d.ts +45 -0
  24. package/dist/observableInternal/changeTracker.d.ts.map +1 -0
  25. package/dist/observableInternal/changeTracker.js +78 -0
  26. package/dist/observableInternal/changeTracker.js.map +1 -0
  27. package/dist/observableInternal/commonFacade/cancellation.d.ts +25 -0
  28. package/dist/observableInternal/commonFacade/cancellation.d.ts.map +1 -0
  29. package/dist/observableInternal/commonFacade/cancellation.js +55 -0
  30. package/dist/observableInternal/commonFacade/cancellation.js.map +1 -0
  31. package/dist/observableInternal/commonFacade/deps.d.ts +25 -0
  32. package/dist/observableInternal/commonFacade/deps.d.ts.map +1 -0
  33. package/dist/observableInternal/commonFacade/deps.js +37 -0
  34. package/dist/observableInternal/commonFacade/deps.js.map +1 -0
  35. package/dist/observableInternal/debugLocation.d.ts +22 -0
  36. package/dist/observableInternal/debugLocation.d.ts.map +1 -0
  37. package/dist/observableInternal/debugLocation.js +77 -0
  38. package/dist/observableInternal/debugLocation.js.map +1 -0
  39. package/dist/observableInternal/debugName.d.ts +34 -0
  40. package/dist/observableInternal/debugName.d.ts.map +1 -0
  41. package/dist/observableInternal/debugName.js +114 -0
  42. package/dist/observableInternal/debugName.js.map +1 -0
  43. package/dist/observableInternal/experimental/deferUnobserve.d.ts +17 -0
  44. package/dist/observableInternal/experimental/deferUnobserve.d.ts.map +1 -0
  45. package/dist/observableInternal/experimental/deferUnobserve.js +68 -0
  46. package/dist/observableInternal/experimental/deferUnobserve.js.map +1 -0
  47. package/dist/observableInternal/experimental/reducer.d.ts +38 -0
  48. package/dist/observableInternal/experimental/reducer.d.ts.map +1 -0
  49. package/dist/observableInternal/experimental/utils.d.ts +16 -0
  50. package/dist/observableInternal/experimental/utils.d.ts.map +1 -0
  51. package/dist/observableInternal/experimental/utils.js +64 -0
  52. package/dist/observableInternal/experimental/utils.js.map +1 -0
  53. package/dist/observableInternal/index.d.ts +26 -0
  54. package/dist/observableInternal/index.d.ts.map +1 -0
  55. package/dist/observableInternal/index.js +21 -0
  56. package/dist/observableInternal/index.js.map +1 -0
  57. package/dist/observableInternal/logging/consoleObservableLogger.d.ts +41 -0
  58. package/dist/observableInternal/logging/consoleObservableLogger.d.ts.map +1 -0
  59. package/dist/observableInternal/logging/consoleObservableLogger.js +355 -0
  60. package/dist/observableInternal/logging/consoleObservableLogger.js.map +1 -0
  61. package/dist/observableInternal/logging/debugGetDependencyGraph.d.ts +5 -0
  62. package/dist/observableInternal/logging/debugGetDependencyGraph.d.ts.map +1 -0
  63. package/dist/observableInternal/logging/debugGetDependencyGraph.js +78 -0
  64. package/dist/observableInternal/logging/debugGetDependencyGraph.js.map +1 -0
  65. package/dist/observableInternal/logging/debugger/debuggerRpc.d.ts +5 -0
  66. package/dist/observableInternal/logging/debugger/debuggerRpc.d.ts.map +1 -0
  67. package/dist/observableInternal/logging/debugger/devToolsLogger.d.ts +44 -0
  68. package/dist/observableInternal/logging/debugger/devToolsLogger.d.ts.map +1 -0
  69. package/dist/observableInternal/logging/debugger/rpc.d.ts +42 -0
  70. package/dist/observableInternal/logging/debugger/rpc.d.ts.map +1 -0
  71. package/dist/observableInternal/logging/debugger/utils.d.ts +14 -0
  72. package/dist/observableInternal/logging/debugger/utils.d.ts.map +1 -0
  73. package/dist/observableInternal/logging/logging.d.ts +31 -0
  74. package/dist/observableInternal/logging/logging.d.ts.map +1 -0
  75. package/dist/observableInternal/logging/logging.js +100 -0
  76. package/dist/observableInternal/logging/logging.js.map +1 -0
  77. package/dist/observableInternal/map.d.ts +19 -0
  78. package/dist/observableInternal/map.d.ts.map +1 -0
  79. package/dist/observableInternal/map.js +71 -0
  80. package/dist/observableInternal/map.js.map +1 -0
  81. package/dist/observableInternal/observables/baseObservable.d.ts +59 -0
  82. package/dist/observableInternal/observables/baseObservable.d.ts.map +1 -0
  83. package/dist/observableInternal/observables/baseObservable.js +142 -0
  84. package/dist/observableInternal/observables/baseObservable.js.map +1 -0
  85. package/dist/observableInternal/observables/constObservable.d.ts +6 -0
  86. package/dist/observableInternal/observables/constObservable.d.ts.map +1 -0
  87. package/dist/observableInternal/observables/constObservable.js +43 -0
  88. package/dist/observableInternal/observables/constObservable.js.map +1 -0
  89. package/dist/observableInternal/observables/derived.d.ts +47 -0
  90. package/dist/observableInternal/observables/derived.d.ts.map +1 -0
  91. package/dist/observableInternal/observables/derived.js +102 -0
  92. package/dist/observableInternal/observables/derived.js.map +1 -0
  93. package/dist/observableInternal/observables/derivedImpl.d.ts +84 -0
  94. package/dist/observableInternal/observables/derivedImpl.d.ts.map +1 -0
  95. package/dist/observableInternal/observables/derivedImpl.js +370 -0
  96. package/dist/observableInternal/observables/derivedImpl.js.map +1 -0
  97. package/dist/observableInternal/observables/lazyObservableValue.d.ts +28 -0
  98. package/dist/observableInternal/observables/lazyObservableValue.d.ts.map +1 -0
  99. package/dist/observableInternal/observables/lazyObservableValue.js +130 -0
  100. package/dist/observableInternal/observables/lazyObservableValue.js.map +1 -0
  101. package/dist/observableInternal/observables/observableFromEvent.d.ts +38 -0
  102. package/dist/observableInternal/observables/observableFromEvent.d.ts.map +1 -0
  103. package/dist/observableInternal/observables/observableFromEvent.js +125 -0
  104. package/dist/observableInternal/observables/observableFromEvent.js.map +1 -0
  105. package/dist/observableInternal/observables/observableSignal.d.ts +12 -0
  106. package/dist/observableInternal/observables/observableSignal.d.ts.map +1 -0
  107. package/dist/observableInternal/observables/observableSignal.js +52 -0
  108. package/dist/observableInternal/observables/observableSignal.js.map +1 -0
  109. package/dist/observableInternal/observables/observableSignalFromEvent.d.ts +6 -0
  110. package/dist/observableInternal/observables/observableSignalFromEvent.d.ts.map +1 -0
  111. package/dist/observableInternal/observables/observableSignalFromEvent.js +46 -0
  112. package/dist/observableInternal/observables/observableSignalFromEvent.js.map +1 -0
  113. package/dist/observableInternal/observables/observableValue.d.ts +38 -0
  114. package/dist/observableInternal/observables/observableValue.d.ts.map +1 -0
  115. package/dist/observableInternal/observables/observableValue.js +108 -0
  116. package/dist/observableInternal/observables/observableValue.js.map +1 -0
  117. package/dist/observableInternal/observables/observableValueOpts.d.ts +9 -0
  118. package/dist/observableInternal/observables/observableValueOpts.d.ts.map +1 -0
  119. package/dist/observableInternal/observables/observableValueOpts.js +23 -0
  120. package/dist/observableInternal/observables/observableValueOpts.js.map +1 -0
  121. package/dist/observableInternal/reactions/createEffect.d.ts +65 -0
  122. package/dist/observableInternal/reactions/createEffect.d.ts.map +1 -0
  123. package/dist/observableInternal/reactions/createEffect.js +148 -0
  124. package/dist/observableInternal/reactions/createEffect.js.map +1 -0
  125. package/dist/observableInternal/reactions/createEffectImpl.d.ts +54 -0
  126. package/dist/observableInternal/reactions/createEffectImpl.d.ts.map +1 -0
  127. package/dist/observableInternal/reactions/createEffectImpl.js +225 -0
  128. package/dist/observableInternal/reactions/createEffectImpl.js.map +1 -0
  129. package/dist/observableInternal/set.d.ts +18 -0
  130. package/dist/observableInternal/set.d.ts.map +1 -0
  131. package/dist/observableInternal/set.js +69 -0
  132. package/dist/observableInternal/set.js.map +1 -0
  133. package/dist/observableInternal/transaction.d.ts +28 -0
  134. package/dist/observableInternal/transaction.d.ts.map +1 -0
  135. package/dist/observableInternal/transaction.js +114 -0
  136. package/dist/observableInternal/transaction.js.map +1 -0
  137. package/dist/observableInternal/utils/promise.d.ts +76 -0
  138. package/dist/observableInternal/utils/promise.d.ts.map +1 -0
  139. package/dist/observableInternal/utils/promise.js +112 -0
  140. package/dist/observableInternal/utils/promise.js.map +1 -0
  141. package/dist/observableInternal/utils/runOnChange.d.ts +8 -0
  142. package/dist/observableInternal/utils/runOnChange.d.ts.map +1 -0
  143. package/dist/observableInternal/utils/runOnChange.js +64 -0
  144. package/dist/observableInternal/utils/runOnChange.js.map +1 -0
  145. package/dist/observableInternal/utils/utils.d.ts +44 -0
  146. package/dist/observableInternal/utils/utils.d.ts.map +1 -0
  147. package/dist/observableInternal/utils/utils.js +249 -0
  148. package/dist/observableInternal/utils/utils.js.map +1 -0
  149. package/dist/observableInternal/utils/utilsCancellation.d.ts +11 -0
  150. package/dist/observableInternal/utils/utilsCancellation.d.ts.map +1 -0
  151. package/dist/observableInternal/utils/utilsCancellation.js +91 -0
  152. package/dist/observableInternal/utils/utilsCancellation.js.map +1 -0
  153. package/dist/observableInternal/utils/valueWithChangeEvent.d.ts +11 -0
  154. package/dist/observableInternal/utils/valueWithChangeEvent.d.ts.map +1 -0
  155. package/dist/observableInternal/utils/valueWithChangeEvent.js +48 -0
  156. package/dist/observableInternal/utils/valueWithChangeEvent.js.map +1 -0
  157. package/dist/utils.d.ts +16 -0
  158. package/dist/utils.d.ts.map +1 -0
  159. 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;;;;"}
@@ -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
+ }