@bemedev/app-reactjs 1.6.0 → 1.8.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.
- package/lib/useService.cjs +4 -4
- package/lib/useService.cjs.map +1 -1
- package/lib/useService.d.ts.map +1 -1
- package/lib/useService.js +4 -4
- package/lib/useService.js.map +1 -1
- package/package.json +28 -28
package/lib/useService.cjs
CHANGED
|
@@ -11,10 +11,10 @@ let react = require("react");
|
|
|
11
11
|
*/
|
|
12
12
|
function useService(service, selector = (s) => s) {
|
|
13
13
|
const [state, setState] = (0, react.useState)(() => selector(service.state));
|
|
14
|
-
const sub = service.subscribe((nextState) => {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
return (0, _bemedev_app_utils.deepEqual)(
|
|
14
|
+
const sub = service.subscribe((nextState) => setState(selector(nextState)), { equals: (first, next) => {
|
|
15
|
+
const _first = selector(first);
|
|
16
|
+
const _next = selector(next);
|
|
17
|
+
return (0, _bemedev_app_utils.deepEqual)(_first, _next);
|
|
18
18
|
} });
|
|
19
19
|
(0, react.useEffect)(() => sub.unsubscribe, [service, selector]);
|
|
20
20
|
return state;
|
package/lib/useService.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useService.cjs","names":[],"sources":["../src/useService.ts"],"sourcesContent":["import type {\n AddSubscriber_F,\n EventObject,\n PrimitiveObject,\n State,\n} from '@bemedev/app/types';\nimport { deepEqual } from '@bemedev/app/utils';\nimport { useEffect, useState } from 'react';\n\n/**\n * A hook that creates a React state from a service with a subscribe function.\n *\n * @param service - The service containing the state and subscribe method.\n * @param selector - A function to select the desired slice of state.\n * @returns The selected state.\n */\nexport function useService<\n Tc extends PrimitiveObject,\n Ta extends string,\n Eo extends EventObject,\n T = State<Eo, Tc, Ta>,\n>(\n service: {\n subscribe: AddSubscriber_F<Tc, Ta, Eo>;\n state: State<Eo, Tc, Ta>;\n },\n selector: (state: State<Eo, Tc, Ta>) => T = (s: State<Eo, Tc, Ta>) =>\n s as unknown as T,\n): T {\n const [state, setState] = useState<T>(() => selector(service.state));\n\n const sub = service.subscribe(\n nextState =>
|
|
1
|
+
{"version":3,"file":"useService.cjs","names":["useState","deepEqual"],"sources":["../src/useService.ts"],"sourcesContent":["import type {\n AddSubscriber_F,\n EventObject,\n PrimitiveObject,\n State,\n} from '@bemedev/app/types';\nimport { deepEqual } from '@bemedev/app/utils';\nimport { useEffect, useState } from 'react';\n\n/**\n * A hook that creates a React state from a service with a subscribe function.\n *\n * @param service - The service containing the state and subscribe method.\n * @param selector - A function to select the desired slice of state.\n * @returns The selected state.\n */\nexport function useService<\n Tc extends PrimitiveObject,\n Ta extends string,\n Eo extends EventObject,\n T = State<Eo, Tc, Ta>,\n>(\n service: {\n subscribe: AddSubscriber_F<Tc, Ta, Eo>;\n state: State<Eo, Tc, Ta>;\n },\n selector: (state: State<Eo, Tc, Ta>) => T = (s: State<Eo, Tc, Ta>) =>\n s as unknown as T,\n): T {\n const [state, setState] = useState<T>(() => selector(service.state));\n\n const sub = service.subscribe(\n nextState => setState(selector(nextState)),\n {\n equals: (first, next) => {\n const _first = selector(first);\n const _next = selector(next);\n return deepEqual(_first, _next);\n },\n },\n );\n\n useEffect(() => sub.unsubscribe, [service, selector]);\n return state;\n}\n"],"mappings":";;;;;;;;;;;AAgBA,SAAgB,WAMd,SAIA,YAA6C,MAC3C,GACC;CACH,MAAM,CAAC,OAAO,aAAA,GAAYA,MAAAA,SAAAA,OAAkB,SAAS,QAAQ,KAAK,CAAC;CAEnE,MAAM,MAAM,QAAQ,WAClB,cAAa,SAAS,SAAS,SAAS,CAAC,GACzC,EACE,SAAS,OAAO,SAAS;EACvB,MAAM,SAAS,SAAS,KAAK;EAC7B,MAAM,QAAQ,SAAS,IAAI;EAC3B,QAAA,GAAOC,mBAAAA,UAAAA,CAAU,QAAQ,KAAK;CAChC,EACF,CACF;CAEA,CAAA,GAAA,MAAA,UAAA,OAAgB,IAAI,aAAa,CAAC,SAAS,QAAQ,CAAC;CACpD,OAAO;AACT"}
|
package/lib/useService.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useService.d.ts","sourceRoot":"","sources":["../src/useService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EACX,eAAe,EACf,KAAK,EACN,MAAM,oBAAoB,CAAC;AAI5B;;;;;;GAMG;AACH,wBAAgB,UAAU,CACxB,EAAE,SAAS,eAAe,EAC1B,EAAE,SAAS,MAAM,EACjB,EAAE,SAAS,WAAW,EACtB,CAAC,GAAG,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAErB,OAAO,EAAE;IACP,SAAS,EAAE,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACvC,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;CAC1B,EACD,QAAQ,GAAE,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,KAAK,CACrB,GAClB,CAAC,
|
|
1
|
+
{"version":3,"file":"useService.d.ts","sourceRoot":"","sources":["../src/useService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EACX,eAAe,EACf,KAAK,EACN,MAAM,oBAAoB,CAAC;AAI5B;;;;;;GAMG;AACH,wBAAgB,UAAU,CACxB,EAAE,SAAS,eAAe,EAC1B,EAAE,SAAS,MAAM,EACjB,EAAE,SAAS,WAAW,EACtB,CAAC,GAAG,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAErB,OAAO,EAAE;IACP,SAAS,EAAE,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACvC,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;CAC1B,EACD,QAAQ,GAAE,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,KAAK,CACrB,GAClB,CAAC,CAgBH"}
|
package/lib/useService.js
CHANGED
|
@@ -10,10 +10,10 @@ import { useEffect, useState } from "react";
|
|
|
10
10
|
*/
|
|
11
11
|
function useService(service, selector = (s) => s) {
|
|
12
12
|
const [state, setState] = useState(() => selector(service.state));
|
|
13
|
-
const sub = service.subscribe((nextState) => {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
return deepEqual(
|
|
13
|
+
const sub = service.subscribe((nextState) => setState(selector(nextState)), { equals: (first, next) => {
|
|
14
|
+
const _first = selector(first);
|
|
15
|
+
const _next = selector(next);
|
|
16
|
+
return deepEqual(_first, _next);
|
|
17
17
|
} });
|
|
18
18
|
useEffect(() => sub.unsubscribe, [service, selector]);
|
|
19
19
|
return state;
|
package/lib/useService.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useService.js","names":[],"sources":["../src/useService.ts"],"sourcesContent":["import type {\n AddSubscriber_F,\n EventObject,\n PrimitiveObject,\n State,\n} from '@bemedev/app/types';\nimport { deepEqual } from '@bemedev/app/utils';\nimport { useEffect, useState } from 'react';\n\n/**\n * A hook that creates a React state from a service with a subscribe function.\n *\n * @param service - The service containing the state and subscribe method.\n * @param selector - A function to select the desired slice of state.\n * @returns The selected state.\n */\nexport function useService<\n Tc extends PrimitiveObject,\n Ta extends string,\n Eo extends EventObject,\n T = State<Eo, Tc, Ta>,\n>(\n service: {\n subscribe: AddSubscriber_F<Tc, Ta, Eo>;\n state: State<Eo, Tc, Ta>;\n },\n selector: (state: State<Eo, Tc, Ta>) => T = (s: State<Eo, Tc, Ta>) =>\n s as unknown as T,\n): T {\n const [state, setState] = useState<T>(() => selector(service.state));\n\n const sub = service.subscribe(\n nextState =>
|
|
1
|
+
{"version":3,"file":"useService.js","names":[],"sources":["../src/useService.ts"],"sourcesContent":["import type {\n AddSubscriber_F,\n EventObject,\n PrimitiveObject,\n State,\n} from '@bemedev/app/types';\nimport { deepEqual } from '@bemedev/app/utils';\nimport { useEffect, useState } from 'react';\n\n/**\n * A hook that creates a React state from a service with a subscribe function.\n *\n * @param service - The service containing the state and subscribe method.\n * @param selector - A function to select the desired slice of state.\n * @returns The selected state.\n */\nexport function useService<\n Tc extends PrimitiveObject,\n Ta extends string,\n Eo extends EventObject,\n T = State<Eo, Tc, Ta>,\n>(\n service: {\n subscribe: AddSubscriber_F<Tc, Ta, Eo>;\n state: State<Eo, Tc, Ta>;\n },\n selector: (state: State<Eo, Tc, Ta>) => T = (s: State<Eo, Tc, Ta>) =>\n s as unknown as T,\n): T {\n const [state, setState] = useState<T>(() => selector(service.state));\n\n const sub = service.subscribe(\n nextState => setState(selector(nextState)),\n {\n equals: (first, next) => {\n const _first = selector(first);\n const _next = selector(next);\n return deepEqual(_first, _next);\n },\n },\n );\n\n useEffect(() => sub.unsubscribe, [service, selector]);\n return state;\n}\n"],"mappings":";;;;;;;;;;AAgBA,SAAgB,WAMd,SAIA,YAA6C,MAC3C,GACC;CACH,MAAM,CAAC,OAAO,YAAY,eAAkB,SAAS,QAAQ,KAAK,CAAC;CAEnE,MAAM,MAAM,QAAQ,WAClB,cAAa,SAAS,SAAS,SAAS,CAAC,GACzC,EACE,SAAS,OAAO,SAAS;EACvB,MAAM,SAAS,SAAS,KAAK;EAC7B,MAAM,QAAQ,SAAS,IAAI;EAC3B,OAAO,UAAU,QAAQ,KAAK;CAChC,EACF,CACF;CAEA,gBAAgB,IAAI,aAAa,CAAC,SAAS,QAAQ,CAAC;CACpD,OAAO;AACT"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bemedev/app-reactjs",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.8.0",
|
|
4
4
|
"description": "Middleware between @bemedev/app and reactjs",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"app",
|
|
@@ -34,6 +34,7 @@
|
|
|
34
34
|
"type": "git",
|
|
35
35
|
"url": "https://github.com/chlbri/app"
|
|
36
36
|
},
|
|
37
|
+
"homepage": "https://github.com/chlbri/app/blob/main/packages/reactjs/README.md",
|
|
37
38
|
"files": [
|
|
38
39
|
"lib",
|
|
39
40
|
"public"
|
|
@@ -43,43 +44,42 @@
|
|
|
43
44
|
"module": "lib/index.js",
|
|
44
45
|
"types": "lib/index.d.ts",
|
|
45
46
|
"devDependencies": {
|
|
46
|
-
"@bemedev/decompose": "2.
|
|
47
|
-
"@bemedev/dev-utils": "^
|
|
47
|
+
"@bemedev/decompose": "2.3.0",
|
|
48
|
+
"@bemedev/dev-utils": "^1.1.1",
|
|
48
49
|
"@bemedev/sleep": "^0.2.2",
|
|
49
|
-
"@size-limit/file": "^
|
|
50
|
-
"@testing-library/jest-dom": "^
|
|
51
|
-
"@testing-library/react": "^16.2
|
|
50
|
+
"@size-limit/file": "^13.0.2",
|
|
51
|
+
"@testing-library/jest-dom": "^7.0.0",
|
|
52
|
+
"@testing-library/react": "^16.3.2",
|
|
52
53
|
"@testing-library/user-event": "^14.6.1",
|
|
53
|
-
"@types/node": "^26.1.
|
|
54
|
-
"@types/react": "^19.
|
|
55
|
-
"@types/react-dom": "^19.
|
|
56
|
-
"@vitest/coverage-v8": "^4.1.
|
|
57
|
-
"@vitest/ui": "4.1.
|
|
54
|
+
"@types/node": "^26.1.2",
|
|
55
|
+
"@types/react": "^19.2.17",
|
|
56
|
+
"@types/react-dom": "^19.2.3",
|
|
57
|
+
"@vitest/coverage-v8": "^4.1.10",
|
|
58
|
+
"@vitest/ui": "4.1.10",
|
|
58
59
|
"glob": "^13.0.6",
|
|
59
|
-
"globals": "^17.
|
|
60
|
+
"globals": "^17.8.0",
|
|
60
61
|
"husky": "^9.1.7",
|
|
61
|
-
"jsdom": "^
|
|
62
|
+
"jsdom": "^30.0.1",
|
|
62
63
|
"onchange": "^7.1.0",
|
|
63
|
-
"oxfmt": "^0.
|
|
64
|
-
"oxlint": "^1.
|
|
65
|
-
"prettier": "^3.9.
|
|
64
|
+
"oxfmt": "^0.61.0",
|
|
65
|
+
"oxlint": "^1.76.0",
|
|
66
|
+
"prettier": "^3.9.6",
|
|
66
67
|
"pretty-quick": "^4.2.2",
|
|
67
|
-
"react": "^19.
|
|
68
|
-
"react-dom": "^19.
|
|
69
|
-
"rolldown": "1.1
|
|
70
|
-
"rolldown-plugin-dts": "^0.
|
|
71
|
-
"size-limit": "^
|
|
68
|
+
"react": "^19.2.8",
|
|
69
|
+
"react-dom": "^19.2.8",
|
|
70
|
+
"rolldown": "1.2.1",
|
|
71
|
+
"rolldown-plugin-dts": "^0.27.14",
|
|
72
|
+
"size-limit": "^13.0.2",
|
|
72
73
|
"tslib": "^2.8.1",
|
|
73
|
-
"tsx": "^4.
|
|
74
|
+
"tsx": "^4.23.1",
|
|
74
75
|
"typescript": "^6.0.3",
|
|
75
|
-
"vitest": "^4.1.
|
|
76
|
-
"@bemedev/app": "^1.
|
|
77
|
-
"@bemedev/app-vitest": "^1.
|
|
76
|
+
"vitest": "^4.1.10",
|
|
77
|
+
"@bemedev/app": "^1.8.0",
|
|
78
|
+
"@bemedev/app-vitest": "^1.8.0"
|
|
78
79
|
},
|
|
79
80
|
"peerDependencies": {
|
|
80
|
-
"
|
|
81
|
-
"
|
|
82
|
-
"@bemedev/app": "^1.6.0"
|
|
81
|
+
"react": "^19.2.8",
|
|
82
|
+
"@bemedev/app": "^1.8.0"
|
|
83
83
|
},
|
|
84
84
|
"size-limit": [
|
|
85
85
|
{
|