@juulsgaard/signal-tools 22.0.1 → 22.0.2

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/dist/index.d.ts CHANGED
@@ -829,7 +829,10 @@ declare function pairwiseSignal<T>(inputSignal: Signal<T>, firstValue: T): Signa
829
829
  * @param getter - The getter for the proxy
830
830
  * @param setter - The setter for the proxy
831
831
  */
832
- declare function proxySignal<T, TOut>(signal: WritableSignal<T>, getter: (value: T) => TOut, setter: (value: TOut) => T): WritableSignal<TOut>;
832
+ declare function proxySignal<T, TOut>(signal: WritableSignal<T>, getter: (value: T) => TOut, setter: (value: TOut) => T): ProxySignal<TOut>;
833
+ type ProxySignal<T> = WritableSignal<T> & {
834
+ readonly error: Signal<Error | undefined>;
835
+ };
833
836
 
834
837
  export { AsyncRequestState, EmptyRequestState, ErrorRequestState, IRequestState, IValueRequestState, LoadingRequestState, RequestTracker, SignalMap, SignalQueue, SignalSet, SignalStack, StaticRequestState, ValueRequestTracker, WritableRequestState, debouncedSignal, debouncedThrottledSignal, loadingSignal, pairwiseSignal, proxySignal, requestState, requestTracker, searchSignal, signalMap, signalQueue, signalSet, signalStack, subjectToSignal, throttledSignal, toLoadingSignal };
835
- export type { CreateLoadingSignalOptions, LoadingSignal, LoadingSignalOptions, ReadonlySignalMap, ReadonlySignalSet, SignalQueueDelta, SignalQueueOptions, SignalStackDelta };
838
+ export type { CreateLoadingSignalOptions, LoadingSignal, LoadingSignalOptions, ProxySignal, ReadonlySignalMap, ReadonlySignalSet, SignalQueueDelta, SignalQueueOptions, SignalStackDelta };
@@ -1,4 +1,5 @@
1
1
  import { computed, linkedSignal } from '@angular/core';
2
+ import { parseError } from '@juulsgaard/ts-tools';
2
3
 
3
4
  function pairwiseSignal(inputSignal, firstValue) {
4
5
  let prevValue = firstValue;
@@ -11,7 +12,18 @@ function pairwiseSignal(inputSignal, firstValue) {
11
12
  }
12
13
  function proxySignal(signal, getter, setter) {
13
14
  const output = linkedSignal(() => getter(signal()));
14
- output.set = (value) => signal.set(setter(value));
15
+ const error = linkedSignal({
16
+ source: signal,
17
+ computation: () => void 0
18
+ });
19
+ output.set = (value) => {
20
+ try {
21
+ signal.set(setter(value));
22
+ } catch (e) {
23
+ error.set(parseError(e));
24
+ }
25
+ };
26
+ output.error = error.asReadonly();
15
27
  return output;
16
28
  }
17
29
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@juulsgaard/signal-tools",
3
- "version": "22.0.1",
3
+ "version": "22.0.2",
4
4
  "description": "Tools for working with Angular signals",
5
5
  "repository": "git@github.com:Juulsgaard/signal-tools.git",
6
6
  "homepage": "https://juulsgaard.github.io/signal-tools/",