@veams/status-quo 0.0.2 → 0.0.4

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/.nvmrc CHANGED
@@ -1 +1 @@
1
- v20
1
+ v22
@@ -62,7 +62,7 @@ describe('State Handler', () => {
62
62
  stateHandler.destroy();
63
63
  customSubject.next(2);
64
64
  customSubject.next(3);
65
- expect(spy).toBeCalledTimes(1);
65
+ expect(spy).toHaveBeenCalledTimes(1);
66
66
  });
67
67
  it('should only call subscriber when object state has changed', async () => {
68
68
  const spy = jest.fn();
@@ -79,7 +79,7 @@ describe('State Handler', () => {
79
79
  stateHandler.setState({
80
80
  test: 'test2',
81
81
  });
82
- expect(spy).toBeCalledTimes(3); // 1. testValue (Initial value), 2. test (first setter), 3. test2 (second setter)
82
+ expect(spy).toHaveBeenCalledTimes(3); // 1. testValue (Initial value), 2. test (first setter), 3. test2 (second setter)
83
83
  });
84
84
  });
85
85
  //# sourceMappingURL=state-handler.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"state-handler.spec.js","sourceRoot":"","sources":["../../../src/store/__tests__/state-handler.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"state-handler.spec.js","sourceRoot":"","sources":["../../../src/store/__tests__/state-handler.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { useStateFactory } from './state-factory.js';
2
+ export { useStateSingleton } from './state-singleton.js';
@@ -0,0 +1,2 @@
1
+ import type { StateSubscriptionHandler } from '../types/types.js';
2
+ export declare function useStateFactory<V, A, P extends unknown[]>(stateFactoryFunction: (...args: P) => StateSubscriptionHandler<V, A>, params?: P): [V, A];
@@ -0,0 +1,2 @@
1
+ import type { StateSingleton } from '../store/state-singleton.js';
2
+ export declare function useStateSingleton<V, A>(stateSingleton: StateSingleton<V, A>): [V, A];
@@ -0,0 +1,3 @@
1
+ import type { StateSubscriptionHandler } from '../types/types.js';
2
+ import type { SetStateAction } from 'react';
3
+ export declare function useStateSubscription<V, A>(stateSubscriptionHandler: StateSubscriptionHandler<V, A>): SetStateAction<V>;
@@ -0,0 +1,6 @@
1
+ import { useStateFactory, useStateSingleton } from './hooks/index.js';
2
+ import { makeStateSingleton, StateHandler } from './store/index.js';
3
+ import type { StateSingleton } from './store/index.js';
4
+ import type { StateSubscriptionHandler } from './types/types.js';
5
+ export { makeStateSingleton, StateHandler, useStateFactory, useStateSingleton };
6
+ export type { StateSingleton, StateSubscriptionHandler };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,23 @@
1
+ declare global {
2
+ interface Window {
3
+ __REDUX_DEVTOOLS_EXTENSION__?: {
4
+ connect: (opts: Record<string, unknown>) => DevTools;
5
+ };
6
+ }
7
+ }
8
+ export type MessagePayload = {
9
+ type: string;
10
+ payload: {
11
+ type: string;
12
+ actionId: number;
13
+ };
14
+ state: string;
15
+ id: string;
16
+ source: '@devtools-extension';
17
+ };
18
+ export type DevTools = {
19
+ init: (state: unknown) => void;
20
+ send: (action: string, state: unknown) => void;
21
+ subscribe: (cb: (message: MessagePayload) => void) => void;
22
+ };
23
+ export declare function withDevTools<S>(initialState: S, options?: {}): DevTools | null;
@@ -0,0 +1,3 @@
1
+ export { StateHandler } from './state-handler.js';
2
+ export type { StateSingleton } from './state-singleton.js';
3
+ export { makeStateSingleton } from './state-singleton.js';
@@ -0,0 +1,36 @@
1
+ import { BehaviorSubject } from 'rxjs';
2
+ import type { StateSubscriptionHandler } from '../types/types.js';
3
+ import type { Observable, Subscription } from 'rxjs';
4
+ type Subscriptions = Subscription[];
5
+ type StateHandlerProps<S> = {
6
+ initialState: S;
7
+ options?: {
8
+ devTools: {
9
+ enabled?: boolean;
10
+ namespace: string;
11
+ };
12
+ };
13
+ };
14
+ type StateObservableOptions = {
15
+ useDistinctUntilChanged?: boolean;
16
+ };
17
+ export declare abstract class StateHandler<S, A> implements StateSubscriptionHandler<S, A> {
18
+ private readonly updates$;
19
+ private readonly state$;
20
+ private readonly initialState;
21
+ private devTools;
22
+ subscriptions: Subscriptions;
23
+ protected constructor({ initialState, options }: StateHandlerProps<S>);
24
+ getInitialState(): S;
25
+ getState(): S;
26
+ setState(newState: Partial<S>, actionName?: string): void;
27
+ destroy(): void;
28
+ getStateItemAsObservable(key: keyof S): Observable<S[keyof S]>;
29
+ getStateAsObservable(options?: StateObservableOptions): BehaviorSubject<S>;
30
+ getObservableItem(key: keyof S): Observable<S[keyof S]>;
31
+ private bindUpdatesAndEvents;
32
+ private handleDevToolsEvents;
33
+ getObservable(): Observable<S>;
34
+ abstract getActions(): A;
35
+ }
36
+ export {};
@@ -0,0 +1,5 @@
1
+ import type { StateSubscriptionHandler } from '../types/types.js';
2
+ export interface StateSingleton<V, A> {
3
+ getInstance: () => StateSubscriptionHandler<V, A>;
4
+ }
5
+ export declare function makeStateSingleton<S, A>(stateHandlerFactory: () => StateSubscriptionHandler<S, A>): StateSingleton<S, A>;
@@ -0,0 +1,7 @@
1
+ import type { Observable } from 'rxjs';
2
+ export interface StateSubscriptionHandler<V, A> {
3
+ getObservable: () => Observable<V>;
4
+ destroy: () => void;
5
+ getInitialState: () => V;
6
+ getActions: () => A;
7
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@veams/status-quo",
3
- "version": "0.0.2",
3
+ "version": "0.0.4",
4
4
  "description": "The manager to rule states in frontend.",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",
@@ -40,33 +40,33 @@
40
40
  "lint": "pnpm run lint:ts",
41
41
  "lint:ts": "eslint --fix \"src/**/*.{tsx,ts}\" --config ./.eslintrc.cjs",
42
42
  "start": "npm-run-all --parallel watch:**",
43
- "watch:bundle:ts": "npm run bundle:ts -w",
44
- "watch:generate:types": "npm run generate:types --watch",
43
+ "watch:bundle:ts": "npm run bundle:ts -- -w",
44
+ "watch:generate:types": "npm run generate:types -- --watch",
45
45
  "test": "cross-env NODE_ENV=test jest --config jest.config.cjs",
46
46
  "test:ci": "cross-env NODE_ENV=test jest --ci --silent --no-cache --config jest.config.ci.cjs",
47
47
  "release": "npm run build && release-it"
48
48
  },
49
49
  "peerDependencies": {
50
- "react": "^18.0.0",
51
- "rxjs": "^7.5.4"
50
+ "react": ">=18.0.0",
51
+ "rxjs": ">=7.5.4"
52
52
  },
53
53
  "devDependencies": {
54
- "@types/jest": "29.5.10",
55
- "@types/node": "20.10.3",
56
- "@types/react": "18.2.41",
54
+ "@types/jest": "30.0.0",
55
+ "@types/node": "24.0.13",
56
+ "@types/react": "19.1.8",
57
57
  "cross-env": "7.0.3",
58
58
  "eslint": "8.55.0",
59
- "jest": "29.7.0",
60
- "jest-environment-jsdom": "29.7.0",
59
+ "jest": "30.0.4",
60
+ "jest-environment-jsdom": "30.0.4",
61
61
  "npm-run-all": "4.1.5",
62
- "prettier": "3.1.0",
63
- "react": "18.2.0",
64
- "rxjs": "7.8.1",
65
- "tslib": "2.6.2",
66
- "typescript": "5.3.2",
67
- "@swc/jest": "0.2.29",
68
- "@swc/core": "1.3.100",
69
- "release-it": "17.0.0"
62
+ "prettier": "3.6.2",
63
+ "react": "19.1.0",
64
+ "rxjs": "7.8.2",
65
+ "tslib": "2.8.1",
66
+ "typescript": "5.8.3",
67
+ "@swc/jest": "0.2.39",
68
+ "@swc/core": "1.12.11",
69
+ "release-it": "19.0.3"
70
70
  },
71
71
  "keywords": [
72
72
  "State Management"
@@ -83,7 +83,7 @@ describe('State Handler', () => {
83
83
  customSubject.next(2);
84
84
  customSubject.next(3);
85
85
 
86
- expect(spy).toBeCalledTimes(1);
86
+ expect(spy).toHaveBeenCalledTimes(1);
87
87
  });
88
88
 
89
89
  it('should only call subscriber when object state has changed', async () => {
@@ -103,6 +103,6 @@ describe('State Handler', () => {
103
103
  test: 'test2',
104
104
  });
105
105
 
106
- expect(spy).toBeCalledTimes(3); // 1. testValue (Initial value), 2. test (first setter), 3. test2 (second setter)
106
+ expect(spy).toHaveBeenCalledTimes(3); // 1. testValue (Initial value), 2. test (first setter), 3. test2 (second setter)
107
107
  });
108
108
  });