@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,148 @@
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 { toDisposable } from '../commonFacade/deps.js';
6
+ import { DebugNameData } from '../debugName.js';
7
+ import { AutorunObserver } from './createEffectImpl.js';
8
+ import { DebugLocation } from '../debugLocation.js';
9
+ import { DisposableStore } from '../../disposables.js';
10
+
11
+ /*---------------------------------------------------------------------------------------------
12
+ * Copyright (c) Microsoft Corporation. All rights reserved.
13
+ * Licensed under the MIT License. See License.txt in the project root for license information.
14
+ *--------------------------------------------------------------------------------------------*/
15
+ /**
16
+ * Runs immediately and whenever a transaction ends and an observed observable changed.
17
+ * {@link fn} should start with a JS Doc using `@description` to name the effect.
18
+ */
19
+ function createEffect(fn, debugLocation = DebugLocation.ofCaller()) {
20
+ return new AutorunObserver(new DebugNameData(undefined, undefined, fn), fn, undefined, debugLocation);
21
+ }
22
+ /**
23
+ * @deprecated Use {@link createEffect} instead.
24
+ */
25
+ const autorun = createEffect;
26
+ /**
27
+ * Runs immediately and whenever a transaction ends and an observed observable changed.
28
+ * {@link fn} should start with a JS Doc using `@description` to name the autorun.
29
+ */
30
+ function createEffectOpts(options, fn, debugLocation = DebugLocation.ofCaller()) {
31
+ return new AutorunObserver(new DebugNameData(options.owner, options.debugName, options.debugReferenceFn ?? fn), fn, undefined, debugLocation);
32
+ }
33
+ /**
34
+ * @deprecated Use {@link createEffectOpts} instead.
35
+ */
36
+ const autorunOpts = createEffectOpts;
37
+ /**
38
+ * Runs immediately and whenever a transaction ends and an observed observable changed.
39
+ * {@link fn} should start with a JS Doc using `@description` to name the autorun.
40
+ *
41
+ * Use `changeTracker.createChangeSummary` to create a "change summary" that can collect the changes.
42
+ * Use `changeTracker.handleChange` to add a reported change to the change summary.
43
+ * The run function is given the last change summary.
44
+ * The change summary is discarded after the run function was called.
45
+ *
46
+ * @see autorun
47
+ */
48
+ function autorunHandleChanges(options, fn, debugLocation = DebugLocation.ofCaller()) {
49
+ return new AutorunObserver(new DebugNameData(options.owner, options.debugName, options.debugReferenceFn ?? fn), fn, options.changeTracker, debugLocation);
50
+ }
51
+ /**
52
+ * @see autorunHandleChanges (but with a disposable store that is cleared before the next run or on dispose)
53
+ */
54
+ function autorunWithStoreHandleChanges(options, fn) {
55
+ const store = new DisposableStore();
56
+ const disposable = autorunHandleChanges({
57
+ owner: options.owner,
58
+ debugName: options.debugName,
59
+ debugReferenceFn: options.debugReferenceFn ?? fn,
60
+ changeTracker: options.changeTracker,
61
+ }, (reader, changeSummary) => {
62
+ store.clear();
63
+ fn(reader, changeSummary, store);
64
+ });
65
+ return toDisposable(() => {
66
+ disposable.dispose();
67
+ store.dispose();
68
+ });
69
+ }
70
+ /**
71
+ * @see autorun (but with a disposable store that is cleared before the next run or on dispose)
72
+ *
73
+ * @deprecated Use `autorun(reader => { reader.store.add(...) })` instead!
74
+ */
75
+ function autorunWithStore(fn) {
76
+ const store = new DisposableStore();
77
+ const disposable = createEffectOpts({
78
+ owner: undefined,
79
+ debugName: undefined,
80
+ debugReferenceFn: fn,
81
+ }, reader => {
82
+ store.clear();
83
+ fn(reader, store);
84
+ });
85
+ return toDisposable(() => {
86
+ disposable.dispose();
87
+ store.dispose();
88
+ });
89
+ }
90
+ function autorunDelta(observable, handler) {
91
+ let _lastValue;
92
+ return createEffectOpts({ debugReferenceFn: handler }, (reader) => {
93
+ const newValue = observable.read(reader);
94
+ const lastValue = _lastValue;
95
+ _lastValue = newValue;
96
+ handler({ lastValue, newValue });
97
+ });
98
+ }
99
+ function autorunIterableDelta(getValue, handler, getUniqueIdentifier = v => v) {
100
+ const lastValues = new Map();
101
+ return createEffectOpts({ debugReferenceFn: getValue }, (reader) => {
102
+ const newValues = new Map();
103
+ const removedValues = new Map(lastValues);
104
+ for (const value of getValue(reader)) {
105
+ const id = getUniqueIdentifier(value);
106
+ if (lastValues.has(id)) {
107
+ removedValues.delete(id);
108
+ }
109
+ else {
110
+ newValues.set(id, value);
111
+ lastValues.set(id, value);
112
+ }
113
+ }
114
+ for (const id of removedValues.keys()) {
115
+ lastValues.delete(id);
116
+ }
117
+ if (newValues.size || removedValues.size) {
118
+ handler({ addedValues: [...newValues.values()], removedValues: [...removedValues.values()] });
119
+ }
120
+ });
121
+ }
122
+ /**
123
+ * An autorun with a `dispose()` method on its `reader` which cancels the autorun.
124
+ * It it safe to call `dispose()` synchronously.
125
+ */
126
+ function autorunSelfDisposable(fn, debugLocation = DebugLocation.ofCaller()) {
127
+ let ar;
128
+ let disposed = false;
129
+ // eslint-disable-next-line prefer-const
130
+ ar = createEffect(reader => {
131
+ fn({
132
+ delayedStore: reader.delayedStore,
133
+ store: reader.store,
134
+ readObservable: reader.readObservable.bind(reader),
135
+ dispose: () => {
136
+ ar?.dispose();
137
+ disposed = true;
138
+ }
139
+ });
140
+ }, debugLocation);
141
+ if (disposed) {
142
+ ar.dispose();
143
+ }
144
+ return ar;
145
+ }
146
+
147
+ export { autorun, autorunDelta, autorunHandleChanges, autorunIterableDelta, autorunOpts, autorunSelfDisposable, autorunWithStore, autorunWithStoreHandleChanges, createEffect, createEffectOpts };
148
+ //# sourceMappingURL=createEffect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createEffect.js","sources":["../../../src/observableInternal/reactions/createEffect.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ import { IObservable, IObservableWithChange, IObserver, IReaderWithStore } from '../base';
2
+ import { DebugNameData } from '../debugName';
3
+ import { DisposableStore, IDisposable } from '../commonFacade/deps';
4
+ import { IChangeTracker } from '../changeTracker';
5
+ import { DebugLocation } from '../debugLocation';
6
+ export declare const enum AutorunState {
7
+ /**
8
+ * A dependency could have changed.
9
+ * We need to explicitly ask them if at least one dependency changed.
10
+ */
11
+ dependenciesMightHaveChanged = 1,
12
+ /**
13
+ * A dependency changed and we need to recompute.
14
+ */
15
+ stale = 2,
16
+ upToDate = 3
17
+ }
18
+ export declare class AutorunObserver<TChangeSummary = any> implements IObserver, IReaderWithStore, IDisposable {
19
+ readonly _debugNameData: DebugNameData;
20
+ readonly _runFn: (reader: IReaderWithStore, changeSummary: TChangeSummary) => void;
21
+ private readonly _changeTracker;
22
+ private _state;
23
+ private _updateCount;
24
+ private _disposed;
25
+ private _dependencies;
26
+ private _dependenciesToBeRemoved;
27
+ private _changeSummary;
28
+ private _isRunning;
29
+ get debugName(): string;
30
+ constructor(_debugNameData: DebugNameData, _runFn: (reader: IReaderWithStore, changeSummary: TChangeSummary) => void, _changeTracker: IChangeTracker<TChangeSummary> | undefined, debugLocation: DebugLocation);
31
+ dispose(): void;
32
+ private _run;
33
+ toString(): string;
34
+ beginUpdate(_observable: IObservable<any>): void;
35
+ endUpdate(_observable: IObservable<any>): void;
36
+ handlePossibleChange(observable: IObservable<any>): void;
37
+ handleChange<T, TChange>(observable: IObservableWithChange<T, TChange>, change: TChange): void;
38
+ private _isDependency;
39
+ private _ensureNoRunning;
40
+ readObservable<T>(observable: IObservable<T>): T;
41
+ private _store;
42
+ get store(): DisposableStore;
43
+ private _delayedStore;
44
+ get delayedStore(): DisposableStore;
45
+ debugGetState(): {
46
+ isRunning: boolean;
47
+ updateCount: number;
48
+ dependencies: Set<IObservable<any>>;
49
+ state: AutorunState;
50
+ stateStr: string;
51
+ };
52
+ debugRerun(): void;
53
+ }
54
+ //# sourceMappingURL=createEffectImpl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createEffectImpl.d.ts","sourceRoot":"","sources":["../../../src/observableInternal/reactions/createEffectImpl.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC1F,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAgC,eAAe,EAAE,WAAW,EAAyD,MAAM,sBAAsB,CAAC;AAEzJ,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,0BAAkB,YAAY;IAC7B;;;OAGG;IACH,4BAA4B,IAAI;IAEhC;;OAEG;IACH,KAAK,IAAI;IACT,QAAQ,IAAI;CACZ;AAWD,qBAAa,eAAe,CAAC,cAAc,GAAG,GAAG,CAAE,YAAW,SAAS,EAAE,gBAAgB,EAAE,WAAW;aAcpF,cAAc,EAAE,aAAa;aAC7B,MAAM,EAAE,CAAC,MAAM,EAAE,gBAAgB,EAAE,aAAa,EAAE,cAAc,KAAK,IAAI;IACzF,OAAO,CAAC,QAAQ,CAAC,cAAc;IAfhC,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,aAAa,CAA+B;IACpD,OAAO,CAAC,wBAAwB,CAA+B;IAC/D,OAAO,CAAC,cAAc,CAA6B;IACnD,OAAO,CAAC,UAAU,CAAS;IAE3B,IAAW,SAAS,IAAI,MAAM,CAE7B;gBAGgB,cAAc,EAAE,aAAa,EAC7B,MAAM,EAAE,CAAC,MAAM,EAAE,gBAAgB,EAAE,aAAa,EAAE,cAAc,KAAK,IAAI,EACxE,cAAc,EAAE,cAAc,CAAC,cAAc,CAAC,GAAG,SAAS,EAC3E,aAAa,EAAE,aAAa;IAStB,OAAO,IAAI,IAAI;IAqBtB,OAAO,CAAC,IAAI;IAiDL,QAAQ,IAAI,MAAM;IAKlB,WAAW,CAAC,WAAW,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,IAAI;IAOhD,SAAS,CAAC,WAAW,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,IAAI;IA2B9C,oBAAoB,CAAC,UAAU,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,IAAI;IAMxD,YAAY,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,qBAAqB,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI;IAmBrG,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,gBAAgB;IAIjB,cAAc,CAAC,CAAC,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC;IAevD,OAAO,CAAC,MAAM,CAA0C;IACxD,IAAI,KAAK,IAAI,eAAe,CAU3B;IAED,OAAO,CAAC,aAAa,CAA0C;IAC/D,IAAI,YAAY,IAAI,eAAe,CAUlC;IAEM,aAAa;;;;;;;IAUb,UAAU,IAAI,IAAI;CAOzB"}
@@ -0,0 +1,225 @@
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 { onBugIndicatingError, BugIndicatingError } from '../commonFacade/deps.js';
6
+ import { getLogger } from '../logging/logging.js';
7
+ import { DisposableStore } from '../../disposables.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
+ function autorunStateToString(state) {
14
+ switch (state) {
15
+ case 1 /* AutorunState.dependenciesMightHaveChanged */: return 'dependenciesMightHaveChanged';
16
+ case 2 /* AutorunState.stale */: return 'stale';
17
+ case 3 /* AutorunState.upToDate */: return 'upToDate';
18
+ default: return '<unknown>';
19
+ }
20
+ }
21
+ class AutorunObserver {
22
+ get debugName() {
23
+ return this._debugNameData.getDebugName(this) ?? '(anonymous)';
24
+ }
25
+ constructor(_debugNameData, _runFn, _changeTracker, debugLocation) {
26
+ this._debugNameData = _debugNameData;
27
+ this._runFn = _runFn;
28
+ this._changeTracker = _changeTracker;
29
+ this._state = 2 /* AutorunState.stale */;
30
+ this._updateCount = 0;
31
+ this._disposed = false;
32
+ this._dependencies = new Set();
33
+ this._dependenciesToBeRemoved = new Set();
34
+ this._isRunning = false;
35
+ this._store = undefined;
36
+ this._delayedStore = undefined;
37
+ this._changeSummary = this._changeTracker?.createChangeSummary(undefined);
38
+ getLogger()?.handleAutorunCreated(this, debugLocation);
39
+ this._run();
40
+ }
41
+ dispose() {
42
+ if (this._disposed) {
43
+ return;
44
+ }
45
+ this._disposed = true;
46
+ for (const o of this._dependencies) {
47
+ o.removeObserver(this); // Warning: external call!
48
+ }
49
+ this._dependencies.clear();
50
+ if (this._store !== undefined) {
51
+ this._store.dispose();
52
+ }
53
+ if (this._delayedStore !== undefined) {
54
+ this._delayedStore.dispose();
55
+ }
56
+ getLogger()?.handleAutorunDisposed(this);
57
+ }
58
+ _run() {
59
+ const emptySet = this._dependenciesToBeRemoved;
60
+ this._dependenciesToBeRemoved = this._dependencies;
61
+ this._dependencies = emptySet;
62
+ this._state = 3 /* AutorunState.upToDate */;
63
+ try {
64
+ if (!this._disposed) {
65
+ getLogger()?.handleAutorunStarted(this);
66
+ const changeSummary = this._changeSummary;
67
+ const delayedStore = this._delayedStore;
68
+ if (delayedStore !== undefined) {
69
+ this._delayedStore = undefined;
70
+ }
71
+ try {
72
+ this._isRunning = true;
73
+ if (this._changeTracker) {
74
+ this._changeTracker.beforeUpdate?.(this, changeSummary);
75
+ this._changeSummary = this._changeTracker.createChangeSummary(changeSummary); // Warning: external call!
76
+ }
77
+ if (this._store !== undefined) {
78
+ this._store.dispose();
79
+ this._store = undefined;
80
+ }
81
+ this._runFn(this, changeSummary); // Warning: external call!
82
+ }
83
+ catch (e) {
84
+ onBugIndicatingError(e);
85
+ }
86
+ finally {
87
+ this._isRunning = false;
88
+ if (delayedStore !== undefined) {
89
+ delayedStore.dispose();
90
+ }
91
+ }
92
+ }
93
+ }
94
+ finally {
95
+ if (!this._disposed) {
96
+ getLogger()?.handleAutorunFinished(this);
97
+ }
98
+ // We don't want our observed observables to think that they are (not even temporarily) not being observed.
99
+ // Thus, we only unsubscribe from observables that are definitely not read anymore.
100
+ for (const o of this._dependenciesToBeRemoved) {
101
+ o.removeObserver(this); // Warning: external call!
102
+ }
103
+ this._dependenciesToBeRemoved.clear();
104
+ }
105
+ }
106
+ toString() {
107
+ return `Autorun<${this.debugName}>`;
108
+ }
109
+ // IObserver implementation
110
+ beginUpdate(_observable) {
111
+ if (this._state === 3 /* AutorunState.upToDate */) {
112
+ this._state = 1 /* AutorunState.dependenciesMightHaveChanged */;
113
+ }
114
+ this._updateCount++;
115
+ }
116
+ endUpdate(_observable) {
117
+ try {
118
+ if (this._updateCount === 1) {
119
+ do {
120
+ if (this._state === 1 /* AutorunState.dependenciesMightHaveChanged */) {
121
+ this._state = 3 /* AutorunState.upToDate */;
122
+ for (const d of this._dependencies) {
123
+ d.reportChanges(); // Warning: external call!
124
+ if (this._state === 2 /* AutorunState.stale */) {
125
+ // The other dependencies will refresh on demand
126
+ break;
127
+ }
128
+ }
129
+ }
130
+ if (this._state !== 3 /* AutorunState.upToDate */) {
131
+ this._run(); // Warning: indirect external call!
132
+ }
133
+ } while (this._state !== 3 /* AutorunState.upToDate */);
134
+ }
135
+ }
136
+ finally {
137
+ this._updateCount--;
138
+ }
139
+ }
140
+ handlePossibleChange(observable) {
141
+ if (this._state === 3 /* AutorunState.upToDate */ && this._isDependency(observable)) {
142
+ this._state = 1 /* AutorunState.dependenciesMightHaveChanged */;
143
+ }
144
+ }
145
+ handleChange(observable, change) {
146
+ if (this._isDependency(observable)) {
147
+ getLogger()?.handleAutorunDependencyChanged(this, observable, change);
148
+ try {
149
+ // Warning: external call!
150
+ const shouldReact = this._changeTracker ? this._changeTracker.handleChange({
151
+ changedObservable: observable,
152
+ change,
153
+ didChange: (o) => o === observable,
154
+ }, this._changeSummary) : true;
155
+ if (shouldReact) {
156
+ this._state = 2 /* AutorunState.stale */;
157
+ }
158
+ }
159
+ catch (e) {
160
+ onBugIndicatingError(e);
161
+ }
162
+ }
163
+ }
164
+ _isDependency(observable) {
165
+ return this._dependencies.has(observable) && !this._dependenciesToBeRemoved.has(observable);
166
+ }
167
+ // IReader implementation
168
+ _ensureNoRunning() {
169
+ if (!this._isRunning) {
170
+ throw new BugIndicatingError('The reader object cannot be used outside its compute function!');
171
+ }
172
+ }
173
+ readObservable(observable) {
174
+ this._ensureNoRunning();
175
+ // In case the run action disposes the autorun
176
+ if (this._disposed) {
177
+ return observable.get(); // warning: external call!
178
+ }
179
+ observable.addObserver(this); // warning: external call!
180
+ const value = observable.get(); // warning: external call!
181
+ this._dependencies.add(observable);
182
+ this._dependenciesToBeRemoved.delete(observable);
183
+ return value;
184
+ }
185
+ get store() {
186
+ this._ensureNoRunning();
187
+ if (this._disposed) {
188
+ throw new BugIndicatingError('Cannot access store after dispose');
189
+ }
190
+ if (this._store === undefined) {
191
+ this._store = new DisposableStore();
192
+ }
193
+ return this._store;
194
+ }
195
+ get delayedStore() {
196
+ this._ensureNoRunning();
197
+ if (this._disposed) {
198
+ throw new BugIndicatingError('Cannot access store after dispose');
199
+ }
200
+ if (this._delayedStore === undefined) {
201
+ this._delayedStore = new DisposableStore();
202
+ }
203
+ return this._delayedStore;
204
+ }
205
+ debugGetState() {
206
+ return {
207
+ isRunning: this._isRunning,
208
+ updateCount: this._updateCount,
209
+ dependencies: this._dependencies,
210
+ state: this._state,
211
+ stateStr: autorunStateToString(this._state),
212
+ };
213
+ }
214
+ debugRerun() {
215
+ if (!this._isRunning) {
216
+ this._run();
217
+ }
218
+ else {
219
+ this._state = 2 /* AutorunState.stale */;
220
+ }
221
+ }
222
+ }
223
+
224
+ export { AutorunObserver };
225
+ //# sourceMappingURL=createEffectImpl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createEffectImpl.js","sources":["../../../src/observableInternal/reactions/createEffectImpl.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { IObservable, ITransaction } from './base';
2
+ export declare class ObservableSet<T> implements Set<T> {
3
+ private readonly _data;
4
+ private _obs;
5
+ readonly observable: IObservable<Set<T>>;
6
+ get size(): number;
7
+ has(value: T): boolean;
8
+ add(value: T, tx?: ITransaction): this;
9
+ delete(value: T, tx?: ITransaction): boolean;
10
+ clear(tx?: ITransaction): void;
11
+ forEach(callbackfn: (value: T, value2: T, set: Set<T>) => void, thisArg?: any): void;
12
+ entries(): IterableIterator<[T, T]>;
13
+ keys(): IterableIterator<T>;
14
+ values(): IterableIterator<T>;
15
+ [Symbol.iterator](): IterableIterator<T>;
16
+ get [Symbol.toStringTag](): string;
17
+ }
18
+ //# sourceMappingURL=set.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set.d.ts","sourceRoot":"","sources":["../../src/observableInternal/set.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAGnD,qBAAa,aAAa,CAAC,CAAC,CAAE,YAAW,GAAG,CAAC,CAAC,CAAC;IAE9C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgB;IAEtC,OAAO,CAAC,IAAI,CAAwD;IAEpE,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAa;IAErD,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO;IAItB,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,YAAY,GAAG,IAAI;IAStC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,YAAY,GAAG,OAAO;IAQ5C,KAAK,CAAC,EAAE,CAAC,EAAE,YAAY,GAAG,IAAI;IAO9B,OAAO,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,IAAI;IAMnF,OAAO,IAAI,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAMnC,IAAI,IAAI,gBAAgB,CAAC,CAAC,CAAC;IAI3B,MAAM,IAAI,gBAAgB,CAAC,CAAC,CAAC;IAI9B,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC;IAIxC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM,CAEjC;CACD"}
@@ -0,0 +1,69 @@
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 ObservableSet {
12
+ constructor() {
13
+ this._data = new Set();
14
+ this._obs = observableValueOpts({ equalsFn: () => false }, this);
15
+ this.observable = this._obs;
16
+ }
17
+ get size() {
18
+ return this._data.size;
19
+ }
20
+ has(value) {
21
+ return this._data.has(value);
22
+ }
23
+ add(value, tx) {
24
+ const hadValue = this._data.has(value);
25
+ if (!hadValue) {
26
+ this._data.add(value);
27
+ this._obs.set(this, tx);
28
+ }
29
+ return this;
30
+ }
31
+ delete(value, tx) {
32
+ const result = this._data.delete(value);
33
+ if (result) {
34
+ this._obs.set(this, tx);
35
+ }
36
+ return result;
37
+ }
38
+ clear(tx) {
39
+ if (this._data.size > 0) {
40
+ this._data.clear();
41
+ this._obs.set(this, tx);
42
+ }
43
+ }
44
+ forEach(callbackfn, thisArg) {
45
+ this._data.forEach((value, value2, _set) => {
46
+ callbackfn.call(thisArg, value, value2, this);
47
+ });
48
+ }
49
+ *entries() {
50
+ for (const value of this._data) {
51
+ yield [value, value];
52
+ }
53
+ }
54
+ *keys() {
55
+ yield* this._data.keys();
56
+ }
57
+ *values() {
58
+ yield* this._data.values();
59
+ }
60
+ [Symbol.iterator]() {
61
+ return this.values();
62
+ }
63
+ get [Symbol.toStringTag]() {
64
+ return 'ObservableSet';
65
+ }
66
+ }
67
+
68
+ export { ObservableSet };
69
+ //# sourceMappingURL=set.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set.js","sources":["../../src/observableInternal/set.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;AAAA;;;AAGgG;MAKnF,aAAa,CAAA;AAA1B,IAAA,WAAA,GAAA;AAEkB,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,GAAG,EAAK,CAAC;AAE9B,QAAA,IAAA,CAAA,IAAI,GAAG,mBAAmB,CAAC,EAAE,QAAQ,EAAE,MAAM,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;AAE3D,QAAA,IAAA,CAAA,UAAU,GAAwB,IAAI,CAAC,IAAI,CAAC;KA6DrD;AA3DA,IAAA,IAAI,IAAI,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;KACvB;AAED,IAAA,GAAG,CAAC,KAAQ,EAAA;QACX,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;KAC7B;IAED,GAAG,CAAC,KAAQ,EAAE,EAAiB,EAAA;QAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,CAAC,QAAQ,EAAE;AACd,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACtB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;SACxB;AACD,QAAA,OAAO,IAAI,CAAC;KACZ;IAED,MAAM,CAAC,KAAQ,EAAE,EAAiB,EAAA;QACjC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACxC,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,MAAM,EAAE,IAAI,KAAI;YAC1C,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAW,CAAC,CAAC;AACtD,SAAC,CAAC,CAAC;KACH;AAED,IAAA,CAAC,OAAO,GAAA;AACP,QAAA,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE;AAC/B,YAAA,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;SACrB;KACD;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,MAAM,EAAE,CAAC;KACrB;AAED,IAAA,KAAK,MAAM,CAAC,WAAW,CAAC,GAAA;AACvB,QAAA,OAAO,eAAe,CAAC;KACvB;AACD;;;;"}
@@ -0,0 +1,28 @@
1
+ import { IObservable, IObserver, ITransaction } from './base';
2
+ /**
3
+ * Starts a transaction in which many observables can be changed at once.
4
+ * {@link fn} should start with a JS Doc using `@description` to give the transaction a debug name.
5
+ * Reaction run on demand or when the transaction ends.
6
+ */
7
+ export declare function transaction(fn: (tx: ITransaction) => void, getDebugName?: () => string): void;
8
+ export declare function globalTransaction(fn: (tx: ITransaction) => void): void;
9
+ /** @deprecated */
10
+ export declare function asyncTransaction(fn: (tx: ITransaction) => Promise<void>, getDebugName?: () => string): Promise<void>;
11
+ /**
12
+ * Allows to chain transactions.
13
+ */
14
+ export declare function subtransaction(tx: ITransaction | undefined, fn: (tx: ITransaction) => void, getDebugName?: () => string): void;
15
+ export declare class TransactionImpl implements ITransaction {
16
+ readonly _fn: Function;
17
+ private readonly _getDebugName?;
18
+ private _updatingObservers;
19
+ constructor(_fn: Function, _getDebugName?: (() => string) | undefined);
20
+ getDebugName(): string | undefined;
21
+ updateObserver(observer: IObserver, observable: IObservable<any>): void;
22
+ finish(): void;
23
+ debugGetUpdatingObservers(): {
24
+ observer: IObserver;
25
+ observable: IObservable<any>;
26
+ }[] | null;
27
+ }
28
+ //# sourceMappingURL=transaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../src/observableInternal/transaction.ts"],"names":[],"mappings":"AAKA,OAAO,EAAoC,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAIhG;;;;GAIG;AAEH,wBAAgB,WAAW,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,YAAY,KAAK,IAAI,EAAE,YAAY,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,CAO7F;AAGD,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,YAAY,KAAK,IAAI,QAe/D;AACD,kBAAkB;AAElB,wBAAsB,gBAAgB,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,EAAE,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAO1H;AACD;;GAEG;AAEH,wBAAgB,cAAc,CAAC,EAAE,EAAE,YAAY,GAAG,SAAS,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,YAAY,KAAK,IAAI,EAAE,YAAY,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,CAM9H;AAAC,qBAAa,eAAgB,YAAW,YAAY;aAGzB,GAAG,EAAE,QAAQ;IAAE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;IAF1E,OAAO,CAAC,kBAAkB,CAAsE;gBAEpE,GAAG,EAAE,QAAQ,EAAmB,aAAa,CAAC,GAAE,MAAM,MAAM,aAAA;IAIjF,YAAY,IAAI,MAAM,GAAG,SAAS;IAOlC,cAAc,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,IAAI;IAiBvE,MAAM,IAAI,IAAI;IAgBd,yBAAyB;kBA9CQ,SAAS;oBAAc,WAAW,CAAC,GAAG,CAAC;;CAiD/E"}