@assistant-ui/store 0.1.5 → 0.2.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/README.md +9 -10
- package/dist/AuiIf.d.ts +1 -1
- package/dist/AuiIf.d.ts.map +1 -1
- package/dist/AuiIf.js.map +1 -1
- package/dist/index.d.ts +3 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -10
- package/dist/index.js.map +1 -1
- package/dist/scope-registry-forward.d.ts +6 -0
- package/dist/scope-registry-forward.d.ts.map +1 -0
- package/dist/scope-registry-forward.js +2 -0
- package/dist/scope-registry-forward.js.map +1 -0
- package/dist/scope-registry.d.ts +17 -0
- package/dist/scope-registry.d.ts.map +1 -0
- package/dist/scope-registry.js +2 -0
- package/dist/scope-registry.js.map +1 -0
- package/dist/useAui.d.ts +3 -5
- package/dist/useAui.d.ts.map +1 -1
- package/dist/useAui.js +6 -11
- package/dist/useAui.js.map +1 -1
- package/dist/useAuiEvent.d.ts +1 -1
- package/dist/useAuiEvent.d.ts.map +1 -1
- package/dist/useAuiEvent.js +1 -1
- package/dist/useAuiEvent.js.map +1 -1
- package/dist/useAuiState.d.ts +1 -1
- package/dist/useAuiState.d.ts.map +1 -1
- package/dist/useAuiState.js +1 -1
- package/dist/useAuiState.js.map +1 -1
- package/dist/utils/react-assistant-context.d.ts +1 -1
- package/dist/utils/react-assistant-context.d.ts.map +1 -1
- package/dist/utils/react-assistant-context.js +1 -2
- package/dist/utils/react-assistant-context.js.map +1 -1
- package/package.json +11 -4
- package/src/{AuiIf.tsx → AuiIf.ts} +1 -1
- package/src/__tests__/hooks.test.tsx +126 -0
- package/src/index.ts +25 -32
- package/src/scope-registry-forward.ts +6 -0
- package/src/scope-registry.ts +15 -0
- package/src/{useAui.tsx → useAui.ts} +24 -27
- package/src/useAuiEvent.ts +2 -2
- package/src/{useAuiState.tsx → useAuiState.ts} +3 -3
- package/src/utils/react-assistant-context.tsx +7 -3
- package/dist/Derived.d.ts +0 -34
- package/dist/Derived.d.ts.map +0 -1
- package/dist/Derived.js +0 -24
- package/dist/Derived.js.map +0 -1
- package/dist/attachDefaultPeers.d.ts +0 -56
- package/dist/attachDefaultPeers.d.ts.map +0 -1
- package/dist/attachDefaultPeers.js +0 -51
- package/dist/attachDefaultPeers.js.map +0 -1
- package/dist/tapClientList.d.ts +0 -24
- package/dist/tapClientList.d.ts.map +0 -1
- package/dist/tapClientList.js +0 -68
- package/dist/tapClientList.js.map +0 -1
- package/dist/tapClientLookup.d.ts +0 -11
- package/dist/tapClientLookup.d.ts.map +0 -1
- package/dist/tapClientLookup.js +0 -42
- package/dist/tapClientLookup.js.map +0 -1
- package/dist/tapClientResource.d.ts +0 -28
- package/dist/tapClientResource.d.ts.map +0 -1
- package/dist/tapClientResource.js +0 -122
- package/dist/tapClientResource.js.map +0 -1
- package/dist/types/client.d.ts +0 -119
- package/dist/types/client.d.ts.map +0 -1
- package/dist/types/client.js +0 -2
- package/dist/types/client.js.map +0 -1
- package/dist/types/events.d.ts +0 -33
- package/dist/types/events.d.ts.map +0 -1
- package/dist/types/events.js +0 -8
- package/dist/types/events.js.map +0 -1
- package/dist/utils/BaseProxyHandler.d.ts +0 -23
- package/dist/utils/BaseProxyHandler.d.ts.map +0 -1
- package/dist/utils/BaseProxyHandler.js +0 -46
- package/dist/utils/BaseProxyHandler.js.map +0 -1
- package/dist/utils/NotificationManager.d.ts +0 -11
- package/dist/utils/NotificationManager.d.ts.map +0 -1
- package/dist/utils/NotificationManager.js +0 -84
- package/dist/utils/NotificationManager.js.map +0 -1
- package/dist/utils/proxied-assistant-state.d.ts +0 -8
- package/dist/utils/proxied-assistant-state.d.ts.map +0 -1
- package/dist/utils/proxied-assistant-state.js +0 -34
- package/dist/utils/proxied-assistant-state.js.map +0 -1
- package/dist/utils/splitClients.d.ts +0 -10
- package/dist/utils/splitClients.d.ts.map +0 -1
- package/dist/utils/splitClients.js +0 -83
- package/dist/utils/splitClients.js.map +0 -1
- package/dist/utils/tap-assistant-context.d.ts +0 -19
- package/dist/utils/tap-assistant-context.d.ts.map +0 -1
- package/dist/utils/tap-assistant-context.js +0 -23
- package/dist/utils/tap-assistant-context.js.map +0 -1
- package/dist/utils/tap-client-stack-context.d.ts +0 -23
- package/dist/utils/tap-client-stack-context.d.ts.map +0 -1
- package/dist/utils/tap-client-stack-context.js +0 -28
- package/dist/utils/tap-client-stack-context.js.map +0 -1
- package/dist/wrapperResource.d.ts +0 -3
- package/dist/wrapperResource.d.ts.map +0 -1
- package/dist/wrapperResource.js +0 -11
- package/dist/wrapperResource.js.map +0 -1
- package/src/Derived.ts +0 -46
- package/src/attachDefaultPeers.ts +0 -78
- package/src/tapClientList.ts +0 -118
- package/src/tapClientLookup.ts +0 -76
- package/src/tapClientResource.ts +0 -182
- package/src/types/client.ts +0 -186
- package/src/types/events.ts +0 -77
- package/src/utils/BaseProxyHandler.ts +0 -50
- package/src/utils/NotificationManager.ts +0 -114
- package/src/utils/proxied-assistant-state.tsx +0 -53
- package/src/utils/splitClients.ts +0 -130
- package/src/utils/tap-assistant-context.ts +0 -58
- package/src/utils/tap-client-stack-context.ts +0 -51
- package/src/wrapperResource.ts +0 -17
package/README.md
CHANGED
|
@@ -10,15 +10,15 @@ import { useAui, useAuiState, AuiProvider, type ClientOutput } from "@assistant-
|
|
|
10
10
|
|
|
11
11
|
// 1. Define client type
|
|
12
12
|
declare module "@assistant-ui/store" {
|
|
13
|
-
interface
|
|
14
|
-
counter: {
|
|
13
|
+
interface ScopeRegistry {
|
|
14
|
+
counter: { methods: { getState: () => { count: number }; increment: () => void } };
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
// 2. Create resource
|
|
19
19
|
const CounterClient = resource((): ClientOutput<"counter"> => {
|
|
20
20
|
const [state, setState] = tapState({ count: 0 });
|
|
21
|
-
return { state,
|
|
21
|
+
return { getState: () => state, increment: () => setState({ count: state.count + 1 }) };
|
|
22
22
|
});
|
|
23
23
|
|
|
24
24
|
// 3. Use in React
|
|
@@ -28,7 +28,7 @@ function App() {
|
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
function Counter() {
|
|
31
|
-
const count = useAuiState((
|
|
31
|
+
const count = useAuiState((s) => s.counter.count);
|
|
32
32
|
const aui = useAui();
|
|
33
33
|
return <button onClick={() => aui.counter().increment()}>{count}</button>;
|
|
34
34
|
}
|
|
@@ -39,10 +39,9 @@ function Counter() {
|
|
|
39
39
|
**Clients**: Named state containers registered via module augmentation.
|
|
40
40
|
```typescript
|
|
41
41
|
declare module "@assistant-ui/store" {
|
|
42
|
-
interface
|
|
42
|
+
interface ScopeRegistry {
|
|
43
43
|
myClient: {
|
|
44
|
-
|
|
45
|
-
methods: MyMethods;
|
|
44
|
+
methods: MyMethods; // must include getState(): MyState
|
|
46
45
|
meta?: { source: "parent"; query: { id: string } };
|
|
47
46
|
events?: { "myClient.updated": { id: string } };
|
|
48
47
|
};
|
|
@@ -83,10 +82,10 @@ useAuiEvent("myClient.updated", (p) => console.log(p.id));
|
|
|
83
82
|
| `tapClientResource(element)` | Wrap resource for event scoping (1:1 mappings) |
|
|
84
83
|
| `tapClientLookup(map, fn, deps)` | Lookup by `{index}` or `{key}` |
|
|
85
84
|
| `tapClientList(config)` | Dynamic list with add/remove |
|
|
86
|
-
| `
|
|
85
|
+
| `attachTransformScopes(resource, fn)` | Attach scope transform |
|
|
87
86
|
|
|
88
87
|
| Type | Description |
|
|
89
88
|
|------|-------------|
|
|
90
|
-
| `ClientOutput<K>` | Resource return type
|
|
91
|
-
| `
|
|
89
|
+
| `ClientOutput<K>` | Resource return type (methods object) |
|
|
90
|
+
| `ScopeRegistry` | Module augmentation interface |
|
|
92
91
|
| `AssistantClient` | Full client type |
|
package/dist/AuiIf.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { FC, PropsWithChildren } from "react";
|
|
2
|
-
import type { AssistantState } from "
|
|
2
|
+
import type { AssistantState } from "@assistant-ui/core/store";
|
|
3
3
|
export declare namespace AuiIf {
|
|
4
4
|
type Props = PropsWithChildren<{
|
|
5
5
|
condition: AuiIf.Condition;
|
package/dist/AuiIf.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuiIf.d.ts","sourceRoot":"","sources":["../src/AuiIf.
|
|
1
|
+
{"version":3,"file":"AuiIf.d.ts","sourceRoot":"","sources":["../src/AuiIf.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAAE,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAEnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE/D,yBAAiB,KAAK,CAAC;IACrB,KAAY,KAAK,GAAG,iBAAiB,CAAC;QAAE,SAAS,EAAE,KAAK,CAAC,SAAS,CAAA;KAAE,CAAC,CAAC;IACtE,KAAY,SAAS,GAAG,CAAC,KAAK,EAAE,cAAc,KAAK,OAAO,CAAC;CAC5D;AAED,eAAO,MAAM,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAGjC,CAAC"}
|
package/dist/AuiIf.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuiIf.js","sourceRoot":"","sources":["../src/AuiIf.
|
|
1
|
+
{"version":3,"file":"AuiIf.js","sourceRoot":"","sources":["../src/AuiIf.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAGb,OAAO,EAAE,WAAW,EAAE,yBAAsB;AAQ5C,MAAM,CAAC,MAAM,KAAK,GAAoB,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE;IAChE,MAAM,MAAM,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;IACtC,OAAO,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;AAClC,CAAC,CAAC;AAEF,KAAK,CAAC,WAAW,GAAG,OAAO,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,15 +1,9 @@
|
|
|
1
|
+
export type { ScopeRegistry } from "./scope-registry.js";
|
|
2
|
+
import "./scope-registry-forward.js";
|
|
3
|
+
export { Derived, attachTransformScopes, type ScopesConfig, tapAssistantClientRef, tapAssistantEmit, tapClientResource, tapClientLookup, tapClientList, type ClientOutput, type AssistantClient, type AssistantState, type AssistantEventName, type AssistantEventCallback, type AssistantEventPayload, type AssistantEventSelector, type AssistantEventScope, } from "@assistant-ui/core/store";
|
|
1
4
|
export { useAui } from "./useAui.js";
|
|
2
5
|
export { useAuiState } from "./useAuiState.js";
|
|
3
6
|
export { useAuiEvent } from "./useAuiEvent.js";
|
|
4
7
|
export { AuiIf } from "./AuiIf.js";
|
|
5
8
|
export { AuiProvider } from "./utils/react-assistant-context.js";
|
|
6
|
-
export { Derived } from "./Derived.js";
|
|
7
|
-
export { attachDefaultPeers } from "./attachDefaultPeers.js";
|
|
8
|
-
export { tapAssistantClientRef, tapAssistantEmit, } from "./utils/tap-assistant-context.js";
|
|
9
|
-
export { tapClientResource } from "./tapClientResource.js";
|
|
10
|
-
export { tapClientLookup } from "./tapClientLookup.js";
|
|
11
|
-
export { tapClientList } from "./tapClientList.js";
|
|
12
|
-
export type { ClientRegistry, ClientOutput, AssistantClient, AssistantState, } from "./types/client.js";
|
|
13
|
-
export type { AssistantEventName, AssistantEventCallback, AssistantEventPayload, AssistantEventSelector, AssistantEventScope, } from "./types/events.js";
|
|
14
|
-
export type { DefaultPeers } from "./attachDefaultPeers.js";
|
|
15
9
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,YAAY,EAAE,aAAa,EAAE,4BAAyB;AACtD,qCAAkC;AAGlC,OAAO,EACL,OAAO,EACP,qBAAqB,EACrB,KAAK,YAAY,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,aAAa,EACb,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,GACzB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EAAE,MAAM,EAAE,oBAAiB;AAClC,OAAO,EAAE,WAAW,EAAE,yBAAsB;AAC5C,OAAO,EAAE,WAAW,EAAE,yBAAsB;AAC5C,OAAO,EAAE,KAAK,EAAE,mBAAgB;AAChC,OAAO,EAAE,WAAW,EAAE,2CAAwC"}
|
package/dist/index.js
CHANGED
|
@@ -1,16 +1,10 @@
|
|
|
1
|
-
|
|
1
|
+
import "./scope-registry-forward.js";
|
|
2
|
+
// Re-export framework-agnostic infrastructure from core
|
|
3
|
+
export { Derived, attachTransformScopes, tapAssistantClientRef, tapAssistantEmit, tapClientResource, tapClientLookup, tapClientList, } from "@assistant-ui/core/store";
|
|
4
|
+
// React-specific (stay in store)
|
|
2
5
|
export { useAui } from "./useAui.js";
|
|
3
6
|
export { useAuiState } from "./useAuiState.js";
|
|
4
7
|
export { useAuiEvent } from "./useAuiEvent.js";
|
|
5
|
-
// components
|
|
6
8
|
export { AuiIf } from "./AuiIf.js";
|
|
7
9
|
export { AuiProvider } from "./utils/react-assistant-context.js";
|
|
8
|
-
// resources
|
|
9
|
-
export { Derived } from "./Derived.js";
|
|
10
|
-
export { attachDefaultPeers } from "./attachDefaultPeers.js";
|
|
11
|
-
// tap hooks
|
|
12
|
-
export { tapAssistantClientRef, tapAssistantEmit, } from "./utils/tap-assistant-context.js";
|
|
13
|
-
export { tapClientResource } from "./tapClientResource.js";
|
|
14
|
-
export { tapClientLookup } from "./tapClientLookup.js";
|
|
15
|
-
export { tapClientList } from "./tapClientList.js";
|
|
16
10
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,qCAAkC;AAElC,wDAAwD;AACxD,OAAO,EACL,OAAO,EACP,qBAAqB,EAErB,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,aAAa,GASd,MAAM,0BAA0B,CAAC;AAElC,iCAAiC;AACjC,OAAO,EAAE,MAAM,EAAE,oBAAiB;AAClC,OAAO,EAAE,WAAW,EAAE,yBAAsB;AAC5C,OAAO,EAAE,WAAW,EAAE,yBAAsB;AAC5C,OAAO,EAAE,KAAK,EAAE,mBAAgB;AAChC,OAAO,EAAE,WAAW,EAAE,2CAAwC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scope-registry-forward.d.ts","sourceRoot":"","sources":["../src/scope-registry-forward.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,IAAI,kBAAkB,EAAE,4BAAyB;AAG5E,OAAO,QAAQ,0BAA0B,CAAC;IACxC,UAAU,aAAc,SAAQ,kBAAkB;KAAG;CACtD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scope-registry-forward.js","sourceRoot":"","sources":["../src/scope-registry-forward.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Module augmentation interface for assistant-ui store type extensions.
|
|
3
|
+
*
|
|
4
|
+
* Users augment this interface to register custom scopes:
|
|
5
|
+
* ```typescript
|
|
6
|
+
* declare module "@assistant-ui/store" {
|
|
7
|
+
* interface ScopeRegistry {
|
|
8
|
+
* myScope: { methods: { getState: () => MyState } };
|
|
9
|
+
* }
|
|
10
|
+
* }
|
|
11
|
+
* ```
|
|
12
|
+
*
|
|
13
|
+
* Augmentations are automatically forwarded to `@assistant-ui/core/store`.
|
|
14
|
+
*/
|
|
15
|
+
export interface ScopeRegistry {
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=scope-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scope-registry.d.ts","sourceRoot":"","sources":["../src/scope-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,aAAa;CAAG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scope-registry.js","sourceRoot":"","sources":["../src/scope-registry.ts"],"names":[],"mappings":""}
|
package/dist/useAui.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { AssistantClient
|
|
2
|
-
import {
|
|
1
|
+
import type { AssistantClient } from "@assistant-ui/core/store";
|
|
2
|
+
import { type ScopesConfig } from "@assistant-ui/core/store";
|
|
3
3
|
/**
|
|
4
4
|
* Resource that creates an extended AssistantClient.
|
|
5
5
|
*/
|
|
@@ -11,9 +11,7 @@ export declare const AssistantClientResource: (props: {
|
|
|
11
11
|
clients: useAui.Props;
|
|
12
12
|
}>;
|
|
13
13
|
export declare namespace useAui {
|
|
14
|
-
type Props =
|
|
15
|
-
[K in ClientNames]?: ClientElement<K> | DerivedElement<K>;
|
|
16
|
-
};
|
|
14
|
+
type Props = ScopesConfig;
|
|
17
15
|
}
|
|
18
16
|
export declare function useAui(): AssistantClient;
|
|
19
17
|
export declare function useAui(clients: useAui.Props): AssistantClient;
|
package/dist/useAui.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAui.d.ts","sourceRoot":"","sources":["../src/useAui.
|
|
1
|
+
{"version":3,"file":"useAui.d.ts","sourceRoot":"","sources":["../src/useAui.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EACV,eAAe,EAKhB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAGL,KAAK,YAAY,EAMlB,MAAM,0BAA0B,CAAC;AAkQlC;;GAEG;AACH,eAAO,MAAM,uBAAuB;YAKxB,eAAe;aACd,MAAM,CAAC,KAAK;;YADb,eAAe;aACd,MAAM,CAAC,KAAK;EAwDxB,CAAC;AAEF,yBAAiB,MAAM,CAAC;IACtB,KAAY,KAAK,GAAG,YAAY,CAAC;CAClC;AAED,wBAAgB,MAAM,IAAI,eAAe,CAAC;AAC1C,wBAAgB,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,GAAG,eAAe,CAAC;AAC/D,wBAAgB,MAAM,CACpB,OAAO,EAAE,MAAM,CAAC,KAAK,EACrB,MAAM,EAAE;IAAE,MAAM,EAAE,IAAI,GAAG,eAAe,CAAA;CAAE,GACzC,eAAe,CAAC"}
|
package/dist/useAui.js
CHANGED
|
@@ -1,14 +1,9 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { useResource } from "@assistant-ui/tap/react";
|
|
3
|
-
import { resource, tapMemo, tapResources, tapEffectEvent,
|
|
3
|
+
import { resource, tapMemo, tapResources, tapEffectEvent, tapEffect, tapRef, tapResource, withKey, tapResourceRoot, } from "@assistant-ui/tap";
|
|
4
|
+
import { normalizeEventSelector, tapClientResource, } from "@assistant-ui/core/store";
|
|
5
|
+
import { NotificationManager, withAssistantTapContextProvider, getClientIndex, PROXIED_ASSISTANT_STATE_SYMBOL, createProxiedAssistantState, tapSplitClients, } from "@assistant-ui/core/store/internal";
|
|
4
6
|
import { useAssistantContextValue, DefaultAssistantClient, createRootAssistantClient, } from "./utils/react-assistant-context.js";
|
|
5
|
-
import { tapSplitClients, } from "./utils/splitClients.js";
|
|
6
|
-
import { normalizeEventSelector, } from "./types/events.js";
|
|
7
|
-
import { NotificationManager } from "./utils/NotificationManager.js";
|
|
8
|
-
import { withAssistantTapContextProvider } from "./utils/tap-assistant-context.js";
|
|
9
|
-
import { tapClientResource } from "./tapClientResource.js";
|
|
10
|
-
import { getClientIndex } from "./utils/tap-client-stack-context.js";
|
|
11
|
-
import { PROXIED_ASSISTANT_STATE_SYMBOL, createProxiedAssistantState, } from "./utils/proxied-assistant-state.js";
|
|
12
7
|
const tapShallowMemoArray = (array) => {
|
|
13
8
|
// biome-ignore lint/correctness/useExhaustiveDependencies: shallow memo
|
|
14
9
|
return tapMemo(() => array, array);
|
|
@@ -18,7 +13,7 @@ const RootClientResource = resource(({ element, emit, clientRef, }) => {
|
|
|
18
13
|
return tapMemo(() => ({ state, methods }), [methods, state]);
|
|
19
14
|
});
|
|
20
15
|
const RootClientAccessorResource = resource(({ element, notifications, clientRef, name, }) => {
|
|
21
|
-
const store =
|
|
16
|
+
const store = tapResourceRoot(RootClientResource({ element, emit: notifications.emit, clientRef }));
|
|
22
17
|
tapEffect(() => {
|
|
23
18
|
return store.subscribe(notifications.notifySubscribers);
|
|
24
19
|
}, [store, notifications]);
|
|
@@ -49,7 +44,7 @@ const NoOpRootClientsAccessorsResource = resource(() => {
|
|
|
49
44
|
}), []);
|
|
50
45
|
});
|
|
51
46
|
const RootClientsAccessorsResource = resource(({ clients: inputClients, clientRef, }) => {
|
|
52
|
-
const notifications =
|
|
47
|
+
const notifications = tapResource(NotificationManager());
|
|
53
48
|
tapEffect(() => clientRef.parent.subscribe(notifications.notifySubscribers), [clientRef, notifications]);
|
|
54
49
|
const results = tapShallowMemoArray(tapResources(() => Object.keys(inputClients).map((key) => withKey(key, RootClientAccessorResource({
|
|
55
50
|
element: inputClients[key],
|
|
@@ -149,7 +144,7 @@ export const AssistantClientResource = resource(({ parent, clients, }) => {
|
|
|
149
144
|
const rootFields = tapResource(Object.keys(rootClients).length > 0
|
|
150
145
|
? RootClientsAccessorsResource({ clients: rootClients, clientRef })
|
|
151
146
|
: NoOpRootClientsAccessorsResource());
|
|
152
|
-
const derivedFields =
|
|
147
|
+
const derivedFields = tapResource(DerivedClientsAccessorsResource({ clients: derivedClients, clientRef }));
|
|
153
148
|
const client = tapMemo(() => {
|
|
154
149
|
// Swap DefaultAssistantClient -> createRootAssistantClient at root to change error message
|
|
155
150
|
const proto = parent === DefaultAssistantClient
|
package/dist/useAui.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAui.js","sourceRoot":"","sources":["../src/useAui.
|
|
1
|
+
{"version":3,"file":"useAui.js","sourceRoot":"","sources":["../src/useAui.ts"],"names":[],"mappings":"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"}
|
package/dist/useAuiEvent.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type { AssistantEventName, AssistantEventCallback, AssistantEventSelector } from "
|
|
1
|
+
import type { AssistantEventName, AssistantEventCallback, AssistantEventSelector } from "@assistant-ui/core/store";
|
|
2
2
|
export declare const useAuiEvent: <TEvent extends AssistantEventName>(selector: AssistantEventSelector<TEvent>, callback: AssistantEventCallback<TEvent>) => void;
|
|
3
3
|
//# sourceMappingURL=useAuiEvent.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAuiEvent.d.ts","sourceRoot":"","sources":["../src/useAuiEvent.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,kBAAkB,EAClB,sBAAsB,EACtB,sBAAsB,EACvB,
|
|
1
|
+
{"version":3,"file":"useAuiEvent.d.ts","sourceRoot":"","sources":["../src/useAuiEvent.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,kBAAkB,EAClB,sBAAsB,EACtB,sBAAsB,EACvB,MAAM,0BAA0B,CAAC;AAGlC,eAAO,MAAM,WAAW,GAAI,MAAM,SAAS,kBAAkB,EAC3D,UAAU,sBAAsB,CAAC,MAAM,CAAC,EACxC,UAAU,sBAAsB,CAAC,MAAM,CAAC,SAUzC,CAAC"}
|
package/dist/useAuiEvent.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { useEffect } from "react";
|
|
2
2
|
import { useEffectEvent } from "use-effect-event";
|
|
3
3
|
import { useAui } from "./useAui.js";
|
|
4
|
-
import { normalizeEventSelector } from "
|
|
4
|
+
import { normalizeEventSelector } from "@assistant-ui/core/store";
|
|
5
5
|
export const useAuiEvent = (selector, callback) => {
|
|
6
6
|
const aui = useAui();
|
|
7
7
|
const callbackRef = useEffectEvent(callback);
|
package/dist/useAuiEvent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAuiEvent.js","sourceRoot":"","sources":["../src/useAuiEvent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,oBAAiB;AAMlC,OAAO,EAAE,sBAAsB,EAAE,
|
|
1
|
+
{"version":3,"file":"useAuiEvent.js","sourceRoot":"","sources":["../src/useAuiEvent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,oBAAiB;AAMlC,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,QAAwC,EACxC,QAAwC,EACxC,EAAE;IACF,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;IACrB,MAAM,WAAW,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IAE7C,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IAC1D,SAAS,CACP,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,WAAW,CAAC,EAC3C,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,CAAC,CACjC,CAAC;AACJ,CAAC,CAAC"}
|
package/dist/useAuiState.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAuiState.d.ts","sourceRoot":"","sources":["../src/useAuiState.
|
|
1
|
+
{"version":3,"file":"useAuiState.d.ts","sourceRoot":"","sources":["../src/useAuiState.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAI/D;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,WAAW,GAAI,CAAC,EAAE,UAAU,CAAC,KAAK,EAAE,cAAc,KAAK,CAAC,KAAG,CAmBvE,CAAC"}
|
package/dist/useAuiState.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { useSyncExternalStore, useDebugValue } from "react";
|
|
2
|
+
import { getProxiedAssistantState } from "@assistant-ui/core/store/internal";
|
|
2
3
|
import { useAui } from "./useAui.js";
|
|
3
|
-
import { getProxiedAssistantState } from "./utils/proxied-assistant-state.js";
|
|
4
4
|
/**
|
|
5
5
|
* Hook to access a slice of the assistant state with automatic subscription
|
|
6
6
|
*
|
package/dist/useAuiState.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAuiState.js","sourceRoot":"","sources":["../src/useAuiState.
|
|
1
|
+
{"version":3,"file":"useAuiState.js","sourceRoot":"","sources":["../src/useAuiState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAC7E,OAAO,EAAE,MAAM,EAAE,oBAAiB;AAElC;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAI,QAAsC,EAAK,EAAE;IAC1E,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;IACrB,MAAM,YAAY,GAAG,wBAAwB,CAAC,GAAG,CAAC,CAAC;IAEnD,MAAM,KAAK,GAAG,oBAAoB,CAChC,GAAG,CAAC,SAAS,EACb,GAAG,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,EAC5B,GAAG,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAC7B,CAAC;IAEF,IAAI,KAAK,KAAK,YAAY,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CACb,oGAAoG,CACrG,CAAC;IACJ,CAAC;IAED,aAAa,CAAC,KAAK,CAAC,CAAC;IAErB,OAAO,KAAK,CAAC;AACf,CAAC,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import type { AssistantClient } from "
|
|
2
|
+
import type { AssistantClient } from "@assistant-ui/core/store";
|
|
3
3
|
/** Default context value - throws "wrap in AuiProvider" error */
|
|
4
4
|
export declare const DefaultAssistantClient: AssistantClient;
|
|
5
5
|
/** Root prototype for created clients - throws "scope not defined" error */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react-assistant-context.d.ts","sourceRoot":"","sources":["../../src/utils/react-assistant-context.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoC,MAAM,OAAO,CAAC;AACzD,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"react-assistant-context.d.ts","sourceRoot":"","sources":["../../src/utils/react-assistant-context.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoC,MAAM,OAAO,CAAC;AACzD,OAAO,KAAK,EACV,eAAe,EAEhB,MAAM,0BAA0B,CAAC;AAoDlC,iEAAiE;AACjE,eAAO,MAAM,sBAAsB,EAAE,eAIlC,CAAC;AAMJ,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,QAAO,eAUzC,CAAC;AAOL,eAAO,MAAM,wBAAwB,QAAO,eAE3C,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,WAAW,GAAI,sBAGzB;IACD,KAAK,EAAE,eAAe,CAAC;IACvB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,KAAG,KAAK,CAAC,YAMT,CAAC"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { createContext, useContext } from "react";
|
|
3
|
-
import { createProxiedAssistantState, PROXIED_ASSISTANT_STATE_SYMBOL, } from "
|
|
4
|
-
import { BaseProxyHandler, handleIntrospectionProp } from "./BaseProxyHandler.js";
|
|
3
|
+
import { createProxiedAssistantState, PROXIED_ASSISTANT_STATE_SYMBOL, BaseProxyHandler, handleIntrospectionProp, } from "@assistant-ui/core/store/internal";
|
|
5
4
|
const NO_OP_SUBSCRIBE = () => () => { };
|
|
6
5
|
const createErrorClientField = (message) => {
|
|
7
6
|
const fn = (() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react-assistant-context.js","sourceRoot":"","sources":["../../src/utils/react-assistant-context.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"react-assistant-context.js","sourceRoot":"","sources":["../../src/utils/react-assistant-context.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAKzD,OAAO,EACL,2BAA2B,EAC3B,8BAA8B,EAC9B,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,mCAAmC,CAAC;AAE3C,MAAM,eAAe,GAAG,GAAG,EAAE,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;AAEvC,MAAM,sBAAsB,GAAG,CAC7B,OAAe,EACiB,EAAE;IAClC,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE;QACf,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC,CAAmC,CAAC;IACrC,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC;IACjB,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC;IAChB,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC;AAEF,MAAM,kCACJ,SAAQ,gBAAgB;IAGxB,GAAG,CAAC,CAAU,EAAE,IAAqB;QACnC,IAAI,IAAI,KAAK,WAAW;YAAE,OAAO,eAAe,CAAC;QACjD,IAAI,IAAI,KAAK,IAAI;YAAE,OAAO,eAAe,CAAC;QAC1C,IAAI,IAAI,KAAK,8BAA8B;YACzC,OAAO,2CAA2C,CAAC;QACrD,MAAM,aAAa,GAAG,uBAAuB,CAC3C,IAAI,EACJ,wBAAwB,CACzB,CAAC;QACF,IAAI,aAAa,KAAK,KAAK;YAAE,OAAO,aAAa,CAAC;QAClD,OAAO,sBAAsB,CAC3B,oHAAoH,CACrH,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO,CAAC,WAAW,EAAE,IAAI,EAAE,8BAA8B,CAAC,CAAC;IAC7D,CAAC;IAED,GAAG,CAAC,CAAU,EAAE,IAAqB;QACnC,OAAO,CACL,IAAI,KAAK,WAAW;YACpB,IAAI,KAAK,IAAI;YACb,IAAI,KAAK,8BAA8B,CACxC,CAAC;IACJ,CAAC;CACF;AACD,iEAAiE;AACjE,MAAM,CAAC,MAAM,sBAAsB,GACjC,IAAI,KAAK,CACP,EAAqB,EACrB,IAAI,kCAAkC,EAAE,CACzC,CAAC;AAEJ,MAAM,2CAA2C,GAAG,2BAA2B,CAC7E,sBAAsB,CACvB,CAAC;AAEF,4EAA4E;AAC5E,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAoB,EAAE,CAC7D,IAAI,KAAK,CAAkB,EAAqB,EAAE;IAChD,GAAG,CAAC,CAAkB,EAAE,IAAqB;QAC3C,MAAM,aAAa,GAAG,uBAAuB,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;QACvE,IAAI,aAAa,KAAK,KAAK;YAAE,OAAO,aAAa,CAAC;QAElD,OAAO,sBAAsB,CAC3B,sCAAsC,MAAM,CAAC,IAAI,CAAC,aAAa,CAChE,CAAC;IACJ,CAAC;CACF,CAAC,CAAC;AAEL;;GAEG;AACH,MAAM,gBAAgB,GAAG,aAAa,CAAkB,sBAAsB,CAAC,CAAC;AAEhF,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAoB,EAAE;IAC5D,OAAO,UAAU,CAAC,gBAAgB,CAAC,CAAC;AACtC,CAAC,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAC1B,KAAK,EACL,QAAQ,GAIT,EAAsB,EAAE;IACvB,OAAO,CACL,KAAC,gBAAgB,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YACpC,QAAQ,GACiB,CAC7B,CAAC;AACJ,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@assistant-ui/store",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Tap-based state management for @assistant-ui",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"state-management",
|
|
@@ -28,7 +28,8 @@
|
|
|
28
28
|
],
|
|
29
29
|
"sideEffects": false,
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@assistant-ui/
|
|
31
|
+
"@assistant-ui/core": "^0.1.0",
|
|
32
|
+
"@assistant-ui/tap": "^0.5.0",
|
|
32
33
|
"use-effect-event": "^2.0.3"
|
|
33
34
|
},
|
|
34
35
|
"peerDependencies": {
|
|
@@ -41,7 +42,11 @@
|
|
|
41
42
|
}
|
|
42
43
|
},
|
|
43
44
|
"devDependencies": {
|
|
44
|
-
"@
|
|
45
|
+
"@testing-library/react": "^16.3.2",
|
|
46
|
+
"@types/react": "^19.2.13",
|
|
47
|
+
"@types/react-dom": "^19.2.3",
|
|
48
|
+
"jsdom": "^28.0.0",
|
|
49
|
+
"vitest": "^4.0.18",
|
|
45
50
|
"react": "^19.2.4",
|
|
46
51
|
"@assistant-ui/x-buildutils": "0.0.1"
|
|
47
52
|
},
|
|
@@ -59,6 +64,8 @@
|
|
|
59
64
|
"url": "https://github.com/assistant-ui/assistant-ui/issues"
|
|
60
65
|
},
|
|
61
66
|
"scripts": {
|
|
62
|
-
"build": "aui-build"
|
|
67
|
+
"build": "aui-build",
|
|
68
|
+
"test": "vitest run",
|
|
69
|
+
"test:watch": "vitest"
|
|
63
70
|
}
|
|
64
71
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import type { FC, PropsWithChildren } from "react";
|
|
4
4
|
import { useAuiState } from "./useAuiState";
|
|
5
|
-
import type { AssistantState } from "
|
|
5
|
+
import type { AssistantState } from "@assistant-ui/core/store";
|
|
6
6
|
|
|
7
7
|
export namespace AuiIf {
|
|
8
8
|
export type Props = PropsWithChildren<{ condition: AuiIf.Condition }>;
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
// @vitest-environment jsdom
|
|
2
|
+
|
|
3
|
+
import type { ReactNode } from "react";
|
|
4
|
+
import { act, renderHook } from "@testing-library/react";
|
|
5
|
+
import { afterEach, describe, expect, it, vi } from "vitest";
|
|
6
|
+
import { AuiProvider } from "../utils/react-assistant-context";
|
|
7
|
+
import { useAuiState } from "../useAuiState";
|
|
8
|
+
import { useAuiEvent } from "../useAuiEvent";
|
|
9
|
+
import { PROXIED_ASSISTANT_STATE_SYMBOL } from "@assistant-ui/core/store/internal";
|
|
10
|
+
|
|
11
|
+
afterEach(() => {
|
|
12
|
+
vi.restoreAllMocks();
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
type Listener = () => void;
|
|
16
|
+
type EventEntry = {
|
|
17
|
+
selector: { scope: string; event: string };
|
|
18
|
+
callback: (payload: unknown) => void;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
const createTestAuiClient = (initialState: Record<string, unknown>) => {
|
|
22
|
+
const listeners = new Set<Listener>();
|
|
23
|
+
const eventEntries: EventEntry[] = [];
|
|
24
|
+
const state = initialState;
|
|
25
|
+
|
|
26
|
+
const client = {
|
|
27
|
+
subscribe: (listener: Listener) => {
|
|
28
|
+
listeners.add(listener);
|
|
29
|
+
return () => listeners.delete(listener);
|
|
30
|
+
},
|
|
31
|
+
on: (
|
|
32
|
+
selector: { scope: string; event: string },
|
|
33
|
+
callback: (payload: unknown) => void,
|
|
34
|
+
) => {
|
|
35
|
+
eventEntries.push({ selector, callback });
|
|
36
|
+
return () => {
|
|
37
|
+
const idx = eventEntries.findIndex(
|
|
38
|
+
(entry) => entry.callback === callback,
|
|
39
|
+
);
|
|
40
|
+
if (idx >= 0) eventEntries.splice(idx, 1);
|
|
41
|
+
};
|
|
42
|
+
},
|
|
43
|
+
[PROXIED_ASSISTANT_STATE_SYMBOL]: state,
|
|
44
|
+
} as const;
|
|
45
|
+
|
|
46
|
+
return {
|
|
47
|
+
client,
|
|
48
|
+
state,
|
|
49
|
+
notify: () => listeners.forEach((listener) => listener()),
|
|
50
|
+
emitEvent: (event: string, payload: unknown) => {
|
|
51
|
+
for (const entry of eventEntries) {
|
|
52
|
+
if (entry.selector.event === event) {
|
|
53
|
+
entry.callback(payload);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
getEventEntries: () => eventEntries.slice(),
|
|
58
|
+
};
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
describe("store hooks", () => {
|
|
62
|
+
it("useAuiState subscribes and updates selected state", () => {
|
|
63
|
+
const testClient = createTestAuiClient({ counter: 1 });
|
|
64
|
+
const wrapper = ({ children }: { children: ReactNode }) => (
|
|
65
|
+
<AuiProvider value={testClient.client as never}>{children}</AuiProvider>
|
|
66
|
+
);
|
|
67
|
+
|
|
68
|
+
const { result } = renderHook(() => useAuiState((s: any) => s.counter), {
|
|
69
|
+
wrapper,
|
|
70
|
+
});
|
|
71
|
+
expect(result.current).toBe(1);
|
|
72
|
+
|
|
73
|
+
act(() => {
|
|
74
|
+
testClient.state.counter = 2;
|
|
75
|
+
testClient.notify();
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
expect(result.current).toBe(2);
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
it("useAuiState throws when selector returns full state", () => {
|
|
82
|
+
const testClient = createTestAuiClient({ counter: 1 });
|
|
83
|
+
const wrapper = ({ children }: { children: ReactNode }) => (
|
|
84
|
+
<AuiProvider value={testClient.client as never}>{children}</AuiProvider>
|
|
85
|
+
);
|
|
86
|
+
|
|
87
|
+
expect(() => {
|
|
88
|
+
renderHook(() => useAuiState((s: any) => s), { wrapper });
|
|
89
|
+
}).toThrow(
|
|
90
|
+
"You tried to return the entire AssistantState. This is not supported due to technical limitations.",
|
|
91
|
+
);
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
it("useAuiEvent subscribes with normalized selector and invokes latest callback", () => {
|
|
95
|
+
const testClient = createTestAuiClient({ counter: 1 });
|
|
96
|
+
const wrapper = ({ children }: { children: ReactNode }) => (
|
|
97
|
+
<AuiProvider value={testClient.client as never}>{children}</AuiProvider>
|
|
98
|
+
);
|
|
99
|
+
|
|
100
|
+
const firstCallback = vi.fn();
|
|
101
|
+
const secondCallback = vi.fn();
|
|
102
|
+
|
|
103
|
+
const { rerender } = renderHook(
|
|
104
|
+
({ cb }) => useAuiEvent("thread.updated" as any, cb as any),
|
|
105
|
+
{
|
|
106
|
+
wrapper,
|
|
107
|
+
initialProps: { cb: firstCallback },
|
|
108
|
+
},
|
|
109
|
+
);
|
|
110
|
+
|
|
111
|
+
const [entry] = testClient.getEventEntries();
|
|
112
|
+
expect(entry?.selector).toEqual({
|
|
113
|
+
scope: "thread",
|
|
114
|
+
event: "thread.updated",
|
|
115
|
+
});
|
|
116
|
+
|
|
117
|
+
rerender({ cb: secondCallback });
|
|
118
|
+
|
|
119
|
+
act(() => {
|
|
120
|
+
testClient.emitEvent("thread.updated", { id: "t-1" });
|
|
121
|
+
});
|
|
122
|
+
|
|
123
|
+
expect(firstCallback).not.toHaveBeenCalled();
|
|
124
|
+
expect(secondCallback).toHaveBeenCalledWith({ id: "t-1" });
|
|
125
|
+
});
|
|
126
|
+
});
|