synstate-preact-signals 1.0.2 → 2.0.1

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.
@@ -1,35 +1,46 @@
1
- import { createBooleanState as createBooleanState$1 } from 'synstate';
1
+ import { createBooleanState as createBooleanStateBase, } from 'synstate';
2
2
  import { toSignal } from './to-signal.mjs';
3
3
 
4
- const createBooleanState = (initialState) => {
5
- const [
6
- state,
7
- {
8
- setTrue,
9
- setFalse,
10
- setState,
11
- toggle,
12
- updateState,
13
- resetState,
14
- getSnapshot
15
- }
16
- ] = createBooleanState$1(initialState);
17
- const sig = toSignal(state);
18
- return [
19
- sig,
20
- {
21
- state,
22
- setTrue,
23
- setFalse,
24
- setState,
25
- toggle,
26
- updateState,
27
- resetState,
28
- getSnapshot,
29
- initialState
30
- }
31
- ];
32
- };
33
4
 
34
- export { createBooleanState };
35
- //# sourceMappingURL=create-boolean-state.mjs.map
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+
13
+
14
+
15
+
16
+
17
+
18
+
19
+
20
+
21
+
22
+
23
+
24
+
25
+
26
+
27
+
28
+ export const createBooleanState = (initialState) => {
29
+ const [state, { setTrue, setFalse, setState, toggle, updateState, resetState, getSnapshot, },] = createBooleanStateBase(initialState);
30
+ const sig = toSignal(state);
31
+ return [
32
+ sig,
33
+ {
34
+ state,
35
+ setTrue,
36
+ setFalse,
37
+ setState,
38
+ toggle,
39
+ updateState,
40
+ resetState,
41
+ getSnapshot,
42
+ initialState,
43
+ },
44
+ ];
45
+ };
46
+ //# sourceMappingURL=create-boolean-state.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-boolean-state.mjs","sources":["../src/create-boolean-state.mts"],"sourcesContent":["import { type ReadonlySignal } from '@preact/signals';\nimport {\n type InitializedObservable,\n createBooleanState as createBooleanStateBase,\n} from 'synstate';\nimport { toSignal } from './to-signal.mjs';\n\n/**\n * Creates a synstate boolean state with a `ReadonlySignal` for reading the\n * current value in Preact components.\n *\n * @example\n * ```ts\n * // eslint-disable-next-line @typescript-eslint/no-shadow\n * const [isOpenSignal, { setTrue: open, setFalse: close, toggle }] =\n * createBooleanState(false);\n *\n * assert.strictEqual(isOpenSignal.value, false);\n *\n * open();\n *\n * assert.strictEqual(isOpenSignal.value, true);\n *\n * close();\n *\n * assert.strictEqual(isOpenSignal.value, false);\n *\n * toggle();\n *\n * assert.strictEqual(isOpenSignal.value, true);\n * ```\n */\nexport const createBooleanState = (\n initialState: boolean,\n): readonly [\n signal: ReadonlySignal<boolean>,\n utils: Readonly<{\n state: InitializedObservable<boolean>;\n setTrue: () => void;\n setFalse: () => void;\n setState: (next: boolean) => boolean;\n toggle: () => boolean;\n updateState: (updateFn: (prev: boolean) => boolean) => boolean;\n resetState: () => boolean;\n getSnapshot: () => boolean;\n initialState: boolean;\n }>,\n] => {\n const [\n state,\n {\n setTrue,\n setFalse,\n setState,\n toggle,\n updateState,\n resetState,\n getSnapshot,\n },\n ] = createBooleanStateBase(initialState);\n\n const sig = toSignal(state);\n\n return [\n sig,\n {\n state,\n setTrue,\n setFalse,\n setState,\n toggle,\n updateState,\n resetState,\n getSnapshot,\n initialState,\n },\n ] as const;\n};\n"],"names":["createBooleanStateBase"],"mappings":";;;AAgCO,MAAM,kBAAA,GAAqB,CAChC,YAAA,KAcG;AACH,EAAA,MAAM;AAAA,IACJ,KAAA;AAAA,IACA;AAAA,MACE,OAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA,MAAA;AAAA,MACA,WAAA;AAAA,MACA,UAAA;AAAA,MACA;AAAA;AACF,GACF,GAAIA,qBAAuB,YAAY,CAAA;AAEvC,EAAA,MAAM,GAAA,GAAM,SAAS,KAAK,CAAA;AAE1B,EAAA,OAAO;AAAA,IACL,GAAA;AAAA,IACA;AAAA,MACE,KAAA;AAAA,MACA,OAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA,MAAA;AAAA,MACA,WAAA;AAAA,MACA,UAAA;AAAA,MACA,WAAA;AAAA,MACA;AAAA;AACF,GACF;AACF;;;;"}
1
+ {"version":3,"file":"create-boolean-state.mjs","sourceRoot":"","sources":["../src/create-boolean-state.mts"],"names":[],"mappings":"AACA,OAAO,EAEL,kBAAkB,IAAI,sBAAsB,GAC7C,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,YAAqB,EAcrB,EAAE;IACF,MAAM,CACJ,KAAK,EACL,EACE,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,WAAW,EACX,UAAU,EACV,WAAW,GACZ,EACF,GAAG,sBAAsB,CAAC,YAAY,CAAC,CAAC;IAEzC,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE5B,OAAO;QACL,GAAG;QACH;YACE,KAAK;YACL,OAAO;YACP,QAAQ;YACR,QAAQ;YACR,MAAM;YACN,WAAW;YACX,UAAU;YACV,WAAW;YACX,YAAY;SACb;KACO,CAAC;AACb,CAAC,CAAC"}
@@ -1,14 +1,39 @@
1
- import { createReducer as createReducer$1 } from 'synstate';
1
+ import { createReducer as createReducerBase, } from 'synstate';
2
2
  import { toSignal } from './to-signal.mjs';
3
3
 
4
- const createReducer = (reducer, initialState) => {
5
- const [state, dispatch, { getSnapshot }] = createReducer$1(
6
- reducer,
7
- initialState
8
- );
9
- const sig = toSignal(state);
10
- return [sig, dispatch, { state, getSnapshot, initialState }];
11
- };
12
4
 
13
- export { createReducer };
14
- //# sourceMappingURL=create-reducer.mjs.map
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+
13
+
14
+
15
+
16
+
17
+
18
+
19
+
20
+
21
+
22
+
23
+
24
+
25
+
26
+
27
+
28
+
29
+
30
+
31
+
32
+
33
+
34
+ export const createReducer = (reducer, initialState) => {
35
+ const [state, dispatch, { getSnapshot }] = createReducerBase(reducer, initialState);
36
+ const sig = toSignal(state);
37
+ return [sig, dispatch, { state, getSnapshot, initialState }];
38
+ };
39
+ //# sourceMappingURL=create-reducer.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-reducer.mjs","sources":["../src/create-reducer.mts"],"sourcesContent":["import { type ReadonlySignal } from '@preact/signals';\nimport {\n createReducer as createReducerBase,\n type InitializedObservable,\n} from 'synstate';\nimport { type Reducer } from 'ts-type-forge';\nimport { toSignal } from './to-signal.mjs';\n\n/**\n * Creates a synstate reducer with a `ReadonlySignal` for reading the current\n * value in Preact components.\n *\n * @example\n * ```ts\n * type Action = Readonly<{ type: 'increment' } | { type: 'decrement' }>;\n *\n * const [countSignal, dispatch, { getSnapshot }] = createReducer(\n * (state: number, action: Action) =>\n * action.type === 'increment' ? state + 1 : state - 1,\n * 0,\n * );\n *\n * assert.strictEqual(countSignal.value, 0);\n *\n * dispatch({ type: 'increment' });\n *\n * assert.strictEqual(countSignal.value, 1);\n *\n * dispatch({ type: 'increment' });\n *\n * assert.strictEqual(countSignal.value, 2);\n *\n * dispatch({ type: 'decrement' });\n *\n * assert.strictEqual(countSignal.value, 1);\n *\n * assert.strictEqual(getSnapshot(), 1);\n * ```\n */\nexport const createReducer = <S, A>(\n reducer: Reducer<S, A>,\n initialState: S,\n): readonly [\n signal: ReadonlySignal<S>,\n dispatch: (action: A) => S,\n utils: Readonly<{\n state: InitializedObservable<S>;\n getSnapshot: () => S;\n initialState: S;\n }>,\n] => {\n const [state, dispatch, { getSnapshot }] = createReducerBase(\n reducer,\n initialState,\n );\n\n const sig = toSignal(state);\n\n return [sig, dispatch, { state, getSnapshot, initialState }];\n};\n"],"names":["createReducerBase"],"mappings":";;;AAuCO,MAAM,aAAA,GAAgB,CAC3B,OAAA,EACA,YAAA,KASG;AACH,EAAA,MAAM,CAAC,KAAA,EAAO,QAAA,EAAU,EAAE,WAAA,EAAa,CAAA,GAAIA,eAAA;AAAA,IACzC,OAAA;AAAA,IACA;AAAA,GACF;AAEA,EAAA,MAAM,GAAA,GAAM,SAAS,KAAK,CAAA;AAE1B,EAAA,OAAO,CAAC,GAAA,EAAK,QAAA,EAAU,EAAE,KAAA,EAAO,WAAA,EAAa,cAAc,CAAA;AAC7D;;;;"}
1
+ {"version":3,"file":"create-reducer.mjs","sourceRoot":"","sources":["../src/create-reducer.mts"],"names":[],"mappings":"AACA,OAAO,EACL,aAAa,IAAI,iBAAiB,GAEnC,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,OAAsB,EACtB,YAAe,EASf,EAAE;IACF,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,CAAC,GAAG,iBAAiB,CAC1D,OAAO,EACP,YAAY,CACb,CAAC;IAEF,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE5B,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC,CAAC;AAC/D,CAAC,CAAC"}
@@ -1,21 +1,53 @@
1
- import { createState as createState$1 } from 'synstate';
1
+ import { createState as createStateBase, } from 'synstate';
2
2
  import { toSignal } from './to-signal.mjs';
3
3
 
4
- const createState = (initialState) => {
5
- const [state, setState, { updateState, resetState, getSnapshot }] = createState$1(initialState);
6
- const sig = toSignal(state);
7
- return [
8
- sig,
9
- setState,
10
- {
11
- state,
12
- updateState,
13
- resetState,
14
- getSnapshot,
15
- initialState
16
- }
17
- ];
18
- };
19
4
 
20
- export { createState };
21
- //# sourceMappingURL=create-state.mjs.map
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+
13
+
14
+
15
+
16
+
17
+
18
+
19
+
20
+
21
+
22
+
23
+
24
+
25
+
26
+
27
+
28
+
29
+
30
+
31
+
32
+
33
+
34
+
35
+
36
+
37
+
38
+ export const createState = (initialState) => {
39
+ const [state, setState, { updateState, resetState, getSnapshot }] = createStateBase(initialState);
40
+ const sig = toSignal(state);
41
+ return [
42
+ sig,
43
+ setState,
44
+ {
45
+ state,
46
+ updateState,
47
+ resetState,
48
+ getSnapshot,
49
+ initialState,
50
+ },
51
+ ];
52
+ };
53
+ //# sourceMappingURL=create-state.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-state.mjs","sources":["../src/create-state.mts"],"sourcesContent":["import { type ReadonlySignal } from '@preact/signals';\nimport {\n createState as createStateBase,\n type InitializedObservable,\n} from 'synstate';\nimport { toSignal } from './to-signal.mjs';\n\n/**\n * Creates a synstate state with a `ReadonlySignal` for reading the current\n * value in Preact components.\n *\n * Unlike `synstate-preact-hooks`' `createState` which returns a hook, this\n * returns a `ReadonlySignal` that can be embedded directly in JSX without\n * hooks, enabling fine-grained DOM updates.\n *\n * @example\n * ```ts\n * const [\n * countSignal,\n * setCount,\n * { updateState, resetState, getSnapshot, initialState },\n * ] = createState(0);\n *\n * assert.strictEqual(countSignal.value, 0);\n *\n * assert.strictEqual(initialState, 0);\n *\n * setCount(5);\n *\n * assert.strictEqual(countSignal.value, 5);\n *\n * updateState((prev) => prev + 1);\n *\n * assert.strictEqual(countSignal.value, 6);\n *\n * resetState();\n *\n * assert.strictEqual(countSignal.value, 0);\n *\n * assert.strictEqual(getSnapshot(), 0);\n * ```\n */\nexport const createState = <S,>(\n initialState: S,\n): readonly [\n signal: ReadonlySignal<S>,\n setState: (v: S) => S,\n utils: Readonly<{\n state: InitializedObservable<S>;\n updateState: (updateFn: (prev: S) => S) => S;\n resetState: () => S;\n getSnapshot: () => S;\n initialState: S;\n }>,\n] => {\n const [state, setState, { updateState, resetState, getSnapshot }] =\n createStateBase(initialState);\n\n const sig = toSignal(state);\n\n return [\n sig,\n setState,\n {\n state,\n updateState,\n resetState,\n getSnapshot,\n initialState,\n },\n ] as const;\n};\n"],"names":["createStateBase"],"mappings":";;;AA0CO,MAAM,WAAA,GAAc,CACzB,YAAA,KAWG;AACH,EAAA,MAAM,CAAC,KAAA,EAAO,QAAA,EAAU,EAAE,WAAA,EAAa,YAAY,WAAA,EAAa,CAAA,GAC9DA,aAAA,CAAgB,YAAY,CAAA;AAE9B,EAAA,MAAM,GAAA,GAAM,SAAS,KAAK,CAAA;AAE1B,EAAA,OAAO;AAAA,IACL,GAAA;AAAA,IACA,QAAA;AAAA,IACA;AAAA,MACE,KAAA;AAAA,MACA,WAAA;AAAA,MACA,UAAA;AAAA,MACA,WAAA;AAAA,MACA;AAAA;AACF,GACF;AACF;;;;"}
1
+ {"version":3,"file":"create-state.mjs","sourceRoot":"","sources":["../src/create-state.mts"],"names":[],"mappings":"AACA,OAAO,EACL,WAAW,IAAI,eAAe,GAE/B,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,YAAe,EAWf,EAAE;IACF,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,GAC/D,eAAe,CAAC,YAAY,CAAC,CAAC;IAEhC,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE5B,OAAO;QACL,GAAG;QACH,QAAQ;QACR;YACE,KAAK;YACL,WAAW;YACX,UAAU;YACV,WAAW;YACX,YAAY;SACb;KACO,CAAC;AACb,CAAC,CAAC"}
@@ -1,13 +1,48 @@
1
1
  import { effect } from '@preact/signals';
2
2
  import { source } from 'synstate';
3
3
 
4
- const fromSignal = (sig) => {
5
- const src = source(sig.value);
6
- const dispose = effect(() => {
7
- src.next(sig.value);
8
- });
9
- return [src, dispose];
10
- };
11
4
 
12
- export { fromSignal };
13
- //# sourceMappingURL=from-signal.mjs.map
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+
13
+
14
+
15
+
16
+
17
+
18
+
19
+
20
+
21
+
22
+
23
+
24
+
25
+
26
+
27
+
28
+
29
+
30
+
31
+
32
+
33
+
34
+
35
+
36
+
37
+
38
+
39
+ export const fromSignal = (
40
+
41
+ sig) => {
42
+ const src = source(sig.value);
43
+ const dispose = effect(() => {
44
+ src.next(sig.value);
45
+ });
46
+ return [src, dispose];
47
+ };
48
+ //# sourceMappingURL=from-signal.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"from-signal.mjs","sources":["../src/from-signal.mts"],"sourcesContent":["import { effect, type ReadonlySignal, type Signal } from '@preact/signals';\nimport { source, type InitializedSourceObservable } from 'synstate';\n\n/**\n * Converts a Preact `Signal` (or `ReadonlySignal`) into a synstate\n * `InitializedSourceObservable`.\n *\n * This allows applying synstate's rich operator chain (e.g. `map`, `filter`,\n * `debounce`, `switchMap`) to values originating from Preact Signals.\n *\n * The bridge uses `effect()` from `@preact/signals` to track signal changes\n * and propagate them to the observable.\n *\n * @returns A tuple of `[observable, dispose]`.\n * - `observable` — an `InitializedSourceObservable` that mirrors the signal.\n * - `dispose` — a function to stop tracking the signal. Call this when the\n * bridge is no longer needed to avoid memory leaks.\n *\n * @example\n * ```ts\n * const input = signal('hello');\n *\n * const [input$, dispose] = fromSignal(input);\n *\n * const mut_valueHistory: string[] = [];\n *\n * input$.subscribe((value) => {\n * mut_valueHistory.push(value);\n * });\n *\n * assert.deepStrictEqual(mut_valueHistory, ['hello']);\n *\n * input.value = 'world';\n *\n * assert.deepStrictEqual(mut_valueHistory, ['hello', 'world']);\n *\n * dispose(); // stop tracking the signal\n * ```\n */\nexport const fromSignal = <A,>(\n // eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types\n sig: ReadonlySignal<A> | Signal<A>,\n): readonly [\n observable: InitializedSourceObservable<A>,\n dispose: () => void,\n] => {\n const src = source<A>(sig.value);\n\n const dispose = effect(() => {\n src.next(sig.value);\n });\n\n return [src, dispose] as const;\n};\n"],"names":[],"mappings":";;;AAuCO,MAAM,UAAA,GAAa,CAExB,GAAA,KAIG;AACH,EAAA,MAAM,GAAA,GAAM,MAAA,CAAU,GAAA,CAAI,KAAK,CAAA;AAE/B,EAAA,MAAM,OAAA,GAAU,OAAO,MAAM;AAC3B,IAAA,GAAA,CAAI,IAAA,CAAK,IAAI,KAAK,CAAA;AAAA,EACpB,CAAC,CAAA;AAED,EAAA,OAAO,CAAC,KAAK,OAAO,CAAA;AACtB;;;;"}
1
+ {"version":3,"file":"from-signal.mjs","sourceRoot":"","sources":["../src/from-signal.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAoC,MAAM,iBAAiB,CAAC;AAC3E,OAAO,EAAE,MAAM,EAAoC,MAAM,UAAU,CAAC;AAEpE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;AACxB,8EAA8E;AAC9E,GAAkC,EAIlC,EAAE;IACF,MAAM,GAAG,GAAG,MAAM,CAAI,GAAG,CAAC,KAAK,CAAC,CAAC;IAEjC,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,EAAE;QAC1B,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,EAAE,OAAO,CAAU,CAAC;AACjC,CAAC,CAAC"}
package/dist/index.mjs CHANGED
@@ -1,7 +1,7 @@
1
- export { createBooleanState } from './create-boolean-state.mjs';
2
- export { createReducer } from './create-reducer.mjs';
3
- export { createState } from './create-state.mjs';
4
- export { fromSignal } from './from-signal.mjs';
5
- export { AsyncChildObservableClass, InitializedSyncChildObservableClass, ObservableBaseClass, RootObservableClass, SyncChildObservableClass, attachIndex, audit, collectToArray, combine, combineLatest, counter, createEventEmitter, createValueEmitter, debounce, distinctUntilChanged, filter, flatMap, fromAbortablePromise, fromPromise, fromSubscribable, getKey, isChildObservable, isManagerObservable, isRootObservable, just, map, mapOptional, mapResultErr, mapResultOk, mapTo, merge, mergeMap, pairwise, pluck, scan, skip, skipIfNoChange, skipUntil, skipWhile, source, switchMap, take, takeUntil, takeWhile, throttle, timer, unwrapOptional, unwrapResultErr, unwrapResultOk, withBuffered, withBufferedFrom, withCurrentValueFrom, withIndex, withInitialValue, withLatestFrom, zip } from 'synstate';
6
- export { toSignal } from './to-signal.mjs';
7
- //# sourceMappingURL=index.mjs.map
1
+ export * from './create-boolean-state.mjs';
2
+ export * from './create-reducer.mjs';
3
+ export * from './create-state.mjs';
4
+ export * from './from-signal.mjs';
5
+ export * from './synstate.mjs';
6
+ export * from './to-signal.mjs';
7
+ //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}
1
+ {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.mts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC"}
@@ -1,2 +1,2 @@
1
- export { AsyncChildObservableClass, InitializedSyncChildObservableClass, ObservableBaseClass, RootObservableClass, SyncChildObservableClass, attachIndex, audit, collectToArray, combine, combineLatest, counter, createEventEmitter, createValueEmitter, debounce, distinctUntilChanged, filter, flatMap, fromAbortablePromise, fromPromise, fromSubscribable, getKey, isChildObservable, isManagerObservable, isRootObservable, just, map, mapOptional, mapResultErr, mapResultOk, mapTo, merge, mergeMap, pairwise, pluck, scan, skip, skipIfNoChange, skipUntil, skipWhile, source, switchMap, take, takeUntil, takeWhile, throttle, timer, unwrapOptional, unwrapResultErr, unwrapResultOk, withBuffered, withBufferedFrom, withCurrentValueFrom, withIndex, withInitialValue, withLatestFrom, zip, } from 'synstate';
1
+ export { attachIndex, audit, collectToArray, combine, combineLatest, counter, createEventEmitter, createValueEmitter, debounce, distinctUntilChanged, filter, flatMap, fromAbortablePromise, fromPromise, fromSubscribable, getKey, isChildObservable, isManagerObservable, isRootObservable, just, map, mapOptional, mapResultErr, mapResultOk, mapTo, merge, mergeMap, pairwise, pluck, scan, skip, skipIfNoChange, skipUntil, skipWhile, source, switchMap, take, takeUntil, takeWhile, throttle, timer, unwrapOptional, unwrapResultErr, unwrapResultOk, withBuffered, withBufferedFrom, withCurrentValueFrom, withIndex, withInitialValue, withLatestFrom, zip, } from 'synstate';
2
2
  //# sourceMappingURL=synstate.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"synstate.d.mts","sourceRoot":"","sources":["../src/synstate.mts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,EACzB,mCAAmC,EACnC,mBAAmB,EACnB,mBAAmB,EACnB,wBAAwB,EACxB,WAAW,EACX,KAAK,EACL,cAAc,EACd,OAAO,EACP,aAAa,EACb,OAAO,EACP,kBAAkB,EAClB,kBAAkB,EAClB,QAAQ,EACR,oBAAoB,EACpB,MAAM,EACN,OAAO,EACP,oBAAoB,EACpB,WAAW,EACX,gBAAgB,EAChB,MAAM,EACN,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,IAAI,EACJ,GAAG,EACH,WAAW,EACX,YAAY,EACZ,WAAW,EACX,KAAK,EACL,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,KAAK,EACL,IAAI,EACJ,IAAI,EACJ,cAAc,EACd,SAAS,EACT,SAAS,EACT,MAAM,EACN,SAAS,EACT,IAAI,EACJ,SAAS,EACT,SAAS,EACT,QAAQ,EACR,KAAK,EACL,cAAc,EACd,eAAe,EACf,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,oBAAoB,EACpB,SAAS,EACT,gBAAgB,EAChB,cAAc,EACd,GAAG,GACJ,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"synstate.d.mts","sourceRoot":"","sources":["../src/synstate.mts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,KAAK,EACL,cAAc,EACd,OAAO,EACP,aAAa,EACb,OAAO,EACP,kBAAkB,EAClB,kBAAkB,EAClB,QAAQ,EACR,oBAAoB,EACpB,MAAM,EACN,OAAO,EACP,oBAAoB,EACpB,WAAW,EACX,gBAAgB,EAChB,MAAM,EACN,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,IAAI,EACJ,GAAG,EACH,WAAW,EACX,YAAY,EACZ,WAAW,EACX,KAAK,EACL,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,KAAK,EACL,IAAI,EACJ,IAAI,EACJ,cAAc,EACd,SAAS,EACT,SAAS,EACT,MAAM,EACN,SAAS,EACT,IAAI,EACJ,SAAS,EACT,SAAS,EACT,QAAQ,EACR,KAAK,EACL,cAAc,EACd,eAAe,EACf,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,oBAAoB,EACpB,SAAS,EACT,gBAAgB,EAChB,cAAc,EACd,GAAG,GACJ,MAAM,UAAU,CAAC"}
package/dist/synstate.mjs CHANGED
@@ -1,2 +1,2 @@
1
- export { AsyncChildObservableClass, InitializedSyncChildObservableClass, ObservableBaseClass, RootObservableClass, SyncChildObservableClass, attachIndex, audit, collectToArray, combine, combineLatest, counter, createEventEmitter, createValueEmitter, debounce, distinctUntilChanged, filter, flatMap, fromAbortablePromise, fromPromise, fromSubscribable, getKey, isChildObservable, isManagerObservable, isRootObservable, just, map, mapOptional, mapResultErr, mapResultOk, mapTo, merge, mergeMap, pairwise, pluck, scan, skip, skipIfNoChange, skipUntil, skipWhile, source, switchMap, take, takeUntil, takeWhile, throttle, timer, unwrapOptional, unwrapResultErr, unwrapResultOk, withBuffered, withBufferedFrom, withCurrentValueFrom, withIndex, withInitialValue, withLatestFrom, zip } from 'synstate';
2
- //# sourceMappingURL=synstate.mjs.map
1
+ export { attachIndex, audit, collectToArray, combine, combineLatest, counter, createEventEmitter, createValueEmitter, debounce, distinctUntilChanged, filter, flatMap, fromAbortablePromise, fromPromise, fromSubscribable, getKey, isChildObservable, isManagerObservable, isRootObservable, just, map, mapOptional, mapResultErr, mapResultOk, mapTo, merge, mergeMap, pairwise, pluck, scan, skip, skipIfNoChange, skipUntil, skipWhile, source, switchMap, take, takeUntil, takeWhile, throttle, timer, unwrapOptional, unwrapResultErr, unwrapResultOk, withBuffered, withBufferedFrom, withCurrentValueFrom, withIndex, withInitialValue, withLatestFrom, zip, } from 'synstate';
2
+ //# sourceMappingURL=synstate.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"synstate.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
1
+ {"version":3,"file":"synstate.mjs","sourceRoot":"","sources":["../src/synstate.mts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,KAAK,EACL,cAAc,EACd,OAAO,EACP,aAAa,EACb,OAAO,EACP,kBAAkB,EAClB,kBAAkB,EAClB,QAAQ,EACR,oBAAoB,EACpB,MAAM,EACN,OAAO,EACP,oBAAoB,EACpB,WAAW,EACX,gBAAgB,EAChB,MAAM,EACN,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,IAAI,EACJ,GAAG,EACH,WAAW,EACX,YAAY,EACZ,WAAW,EACX,KAAK,EACL,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,KAAK,EACL,IAAI,EACJ,IAAI,EACJ,cAAc,EACd,SAAS,EACT,SAAS,EACT,MAAM,EACN,SAAS,EACT,IAAI,EACJ,SAAS,EACT,SAAS,EACT,QAAQ,EACR,KAAK,EACL,cAAc,EACd,eAAe,EACf,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,oBAAoB,EACpB,SAAS,EACT,gBAAgB,EAChB,cAAc,EACd,GAAG,GACJ,MAAM,UAAU,CAAC"}
@@ -1,14 +1,12 @@
1
1
  import { signal } from '@preact/signals';
2
2
  import { Optional } from 'ts-data-forge';
3
+ export function toSignal(observable$, fallback) {
4
+ const initialValue = Optional.unwrapOr(observable$.getSnapshot(), fallback);
5
+ const sig = signal(initialValue);
6
+ observable$.subscribe((value) => {
3
7
 
4
- function toSignal(observable$, fallback) {
5
- const initialValue = Optional.unwrapOr(observable$.getSnapshot(), fallback);
6
- const sig = signal(initialValue);
7
- observable$.subscribe((value) => {
8
- sig.value = value;
9
- });
10
- return sig;
8
+ sig.value = value;
9
+ });
10
+ return sig;
11
11
  }
12
-
13
- export { toSignal };
14
- //# sourceMappingURL=to-signal.mjs.map
12
+ //# sourceMappingURL=to-signal.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"to-signal.mjs","sources":["../src/to-signal.mts"],"sourcesContent":["import { signal, type ReadonlySignal } from '@preact/signals';\nimport { type InitializedObservable, type Observable } from 'synstate';\nimport { Optional } from 'ts-data-forge';\n\n/**\n * Converts a synstate `InitializedObservable` into a Preact `ReadonlySignal`.\n *\n * The signal automatically stays in sync with the observable. Since the\n * observable has an initial value, the returned signal is guaranteed to hold a\n * value of type `A`.\n *\n * The subscription lives for the lifetime of the observable (until it\n * completes).\n *\n * @example\n * ```ts\n * const count$ = source<number>(0);\n *\n * const countSignal = toSignal(count$);\n *\n * assert.strictEqual(countSignal.value, 0);\n *\n * count$.next(1);\n *\n * assert.strictEqual(countSignal.value, 1);\n *\n * count$.next(42);\n *\n * assert.strictEqual(countSignal.value, 42);\n * ```\n */\nexport function toSignal<A>(\n observable$: InitializedObservable<A>,\n): ReadonlySignal<A>;\n\n/**\n * Converts a synstate `Observable` (without guaranteed initial value) into a\n * Preact `ReadonlySignal`. The signal value may be `undefined` until the\n * observable emits.\n */\nexport function toSignal<A>(\n observable$: Observable<A>,\n): ReadonlySignal<A | undefined>;\n\n/**\n * Converts a synstate `Observable` into a Preact `ReadonlySignal` with a\n * fallback value used when the observable has not yet emitted.\n */\nexport function toSignal<A, B = A>(\n observable$: Observable<A>,\n fallback: B,\n): ReadonlySignal<A | B>;\n\nexport function toSignal<A, B = A>(\n observable$: Observable<A>,\n fallback?: B,\n): ReadonlySignal<A | B | undefined> {\n const initialValue = Optional.unwrapOr(observable$.getSnapshot(), fallback);\n\n const sig = signal<A | B | undefined>(initialValue);\n\n observable$.subscribe((value) => {\n // eslint-disable-next-line functional/immutable-data\n sig.value = value;\n });\n\n return sig;\n}\n"],"names":[],"mappings":";;;AAqDO,SAAS,QAAA,CACd,aACA,QAAA,EACmC;AACnC,EAAA,MAAM,eAAe,QAAA,CAAS,QAAA,CAAS,WAAA,CAAY,WAAA,IAAe,QAAQ,CAAA;AAE1E,EAAA,MAAM,GAAA,GAAM,OAA0B,YAAY,CAAA;AAElD,EAAA,WAAA,CAAY,SAAA,CAAU,CAAC,KAAA,KAAU;AAE/B,IAAA,GAAA,CAAI,KAAA,GAAQ,KAAA;AAAA,EACd,CAAC,CAAA;AAED,EAAA,OAAO,GAAA;AACT;;;;"}
1
+ {"version":3,"file":"to-signal.mjs","sourceRoot":"","sources":["../src/to-signal.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAuB,MAAM,iBAAiB,CAAC;AAE9D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAmDzC,MAAM,UAAU,QAAQ,CACtB,WAA0B,EAC1B,QAAY;IAEZ,MAAM,YAAY,GAAG,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,WAAW,EAAE,EAAE,QAAQ,CAAC,CAAC;IAE5E,MAAM,GAAG,GAAG,MAAM,CAAoB,YAAY,CAAC,CAAC;IAEpD,WAAW,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE;QAC9B,qDAAqD;QACrD,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC;AACb,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "synstate-preact-signals",
3
- "version": "1.0.2",
3
+ "version": "2.0.1",
4
4
  "description": "Preact Signals integration for SynState - bridge between synstate observables and @preact/signals",
5
5
  "repository": {
6
6
  "type": "git",
@@ -28,25 +28,23 @@
28
28
  "LICENSE"
29
29
  ],
30
30
  "dependencies": {
31
- "synstate": "2.0.2",
32
- "ts-data-forge": "^14.2.1",
33
- "ts-type-forge": "^9.2.1"
31
+ "synstate": "3.0.1",
32
+ "ts-data-forge": "^14.6.3",
33
+ "ts-type-forge": "^9.2.2"
34
34
  },
35
35
  "devDependencies": {
36
- "@preact/signals": "2.10.1",
37
- "@rollup/plugin-replace": "6.0.3",
38
- "@rollup/plugin-strip": "3.0.4",
36
+ "@preact/signals": "2.11.1",
37
+ "@vitest/browser-playwright": "4.1.11",
38
+ "eslint-config-typed": "5.11.2",
39
+ "eslint-plugin-ts-data-forge": "0.7.0",
40
+ "eslint-plugin-ts-fortress": "1.2.0",
41
+ "eslint-plugin-ts-type-forge": "0.8.1",
42
+ "playwright": "1.62.1",
39
43
  "preact": "10.29.8",
40
44
  "prettier": "3.9.6",
41
45
  "prettier-plugin-organize-imports": "4.3.0",
42
46
  "prettier-plugin-packagejson": "3.0.2",
43
- "rollup": "4.62.4",
44
- "rollup-plugin-esbuild": "6.2.1",
45
- "eslint-config-typed": "5.8.5",
46
- "eslint-plugin-ts-data-forge": "0.4.4",
47
- "eslint-plugin-ts-fortress": "1.0.1",
48
- "eslint-plugin-ts-type-forge": "0.6.3",
49
- "ts-repo-utils": "10.2.0"
47
+ "ts-repo-utils": "10.6.0"
50
48
  },
51
49
  "peerDependencies": {
52
50
  "@preact/signals": ">=1.0.0",
@@ -65,7 +63,7 @@
65
63
  "build:min": "tsx --tsconfig ../../tools/configs/tsconfig.tsx.json ./scripts/cmd/build.mts --skip-check",
66
64
  "check:ext": "tsx --tsconfig ../../tools/configs/tsconfig.tsx.json ./scripts/cmd/check-ext.mts",
67
65
  "check-all": "tsx --tsconfig ../../tools/configs/tsconfig.tsx.json ./scripts/cmd/check-all.mts",
68
- "codemod": "tsx --tsconfig ../../tools/configs/tsconfig.tsx.json ../../libs/ts-codemod-cli/src/cmd/convert-to-readonly.mts '{src,samples,test}/**/*.{mts,tsx}'",
66
+ "codemod": "tsx --tsconfig ../../tools/configs/tsconfig.tsx.json ../../libs/ts-codemod-cli/src/cmd/ts-codemod.mts --transformer convert-to-readonly '{src,samples,test}/**/*.{mts,tsx}'",
69
67
  "doc": "run-s doc:embed doc:embed:jsdoc",
70
68
  "doc:embed": "tsx --tsconfig ../../tools/configs/tsconfig.tsx.json ./scripts/cmd/embed-examples.mts",
71
69
  "doc:embed:jsdoc": "tsx --tsconfig ../../tools/configs/tsconfig.tsx.json ./scripts/cmd/embed-examples-in-jsdoc.mts",
package/src/synstate.mts CHANGED
@@ -1,9 +1,4 @@
1
1
  export {
2
- AsyncChildObservableClass,
3
- InitializedSyncChildObservableClass,
4
- ObservableBaseClass,
5
- RootObservableClass,
6
- SyncChildObservableClass,
7
2
  attachIndex,
8
3
  audit,
9
4
  collectToArray,