@assistant-ui/store 0.0.4 → 0.0.5

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.
Files changed (79) hide show
  1. package/dist/AssistantIf.d.ts +1 -1
  2. package/dist/AssistantIf.d.ts.map +1 -1
  3. package/dist/AssistantIf.js +3 -8
  4. package/dist/AssistantIf.js.map +1 -1
  5. package/dist/Derived.d.ts +1 -1
  6. package/dist/Derived.d.ts.map +1 -1
  7. package/dist/Derived.js +21 -8
  8. package/dist/Derived.js.map +1 -1
  9. package/dist/attachDefaultPeers.d.ts +2 -2
  10. package/dist/attachDefaultPeers.d.ts.map +1 -1
  11. package/dist/attachDefaultPeers.js +47 -18
  12. package/dist/attachDefaultPeers.js.map +1 -1
  13. package/dist/index.d.ts +14 -14
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +15 -29
  16. package/dist/index.js.map +1 -1
  17. package/dist/tapClientList.d.ts +1 -1
  18. package/dist/tapClientList.d.ts.map +1 -1
  19. package/dist/tapClientList.js +56 -66
  20. package/dist/tapClientList.js.map +1 -1
  21. package/dist/tapClientLookup.d.ts +1 -1
  22. package/dist/tapClientLookup.d.ts.map +1 -1
  23. package/dist/tapClientLookup.js +25 -37
  24. package/dist/tapClientLookup.js.map +1 -1
  25. package/dist/tapClientResource.d.ts +1 -1
  26. package/dist/tapClientResource.d.ts.map +1 -1
  27. package/dist/tapClientResource.js +85 -88
  28. package/dist/tapClientResource.js.map +1 -1
  29. package/dist/types/client.d.ts +1 -1
  30. package/dist/types/client.d.ts.map +1 -1
  31. package/dist/types/client.js +1 -0
  32. package/dist/types/client.js.map +1 -1
  33. package/dist/types/events.d.ts +1 -1
  34. package/dist/types/events.d.ts.map +1 -1
  35. package/dist/types/events.js +6 -10
  36. package/dist/types/events.js.map +1 -1
  37. package/dist/useAssistantClient.d.ts +2 -2
  38. package/dist/useAssistantClient.d.ts.map +1 -1
  39. package/dist/useAssistantClient.js +118 -194
  40. package/dist/useAssistantClient.js.map +1 -1
  41. package/dist/useAssistantEvent.d.ts +1 -1
  42. package/dist/useAssistantEvent.d.ts.map +1 -1
  43. package/dist/useAssistantEvent.js +5 -9
  44. package/dist/useAssistantEvent.js.map +1 -1
  45. package/dist/useAssistantState.d.ts +1 -1
  46. package/dist/useAssistantState.d.ts.map +1 -1
  47. package/dist/useAssistantState.js +24 -19
  48. package/dist/useAssistantState.js.map +1 -1
  49. package/dist/utils/BaseProxyHandler.js +43 -38
  50. package/dist/utils/BaseProxyHandler.js.map +1 -1
  51. package/dist/utils/NotificationManager.d.ts +3 -3
  52. package/dist/utils/NotificationManager.d.ts.map +1 -1
  53. package/dist/utils/NotificationManager.js +76 -77
  54. package/dist/utils/NotificationManager.js.map +1 -1
  55. package/dist/utils/StoreResource.d.ts +1 -1
  56. package/dist/utils/StoreResource.d.ts.map +1 -1
  57. package/dist/utils/StoreResource.js +5 -16
  58. package/dist/utils/StoreResource.js.map +1 -1
  59. package/dist/utils/proxied-assistant-state.d.ts +1 -1
  60. package/dist/utils/proxied-assistant-state.d.ts.map +1 -1
  61. package/dist/utils/proxied-assistant-state.js +26 -33
  62. package/dist/utils/proxied-assistant-state.js.map +1 -1
  63. package/dist/utils/react-assistant-context.d.ts +1 -1
  64. package/dist/utils/react-assistant-context.d.ts.map +1 -1
  65. package/dist/utils/react-assistant-context.js +61 -66
  66. package/dist/utils/react-assistant-context.js.map +1 -1
  67. package/dist/utils/splitClients.d.ts +3 -3
  68. package/dist/utils/splitClients.d.ts.map +1 -1
  69. package/dist/utils/splitClients.js +48 -31
  70. package/dist/utils/splitClients.js.map +1 -1
  71. package/dist/utils/tap-assistant-context.d.ts +3 -3
  72. package/dist/utils/tap-assistant-context.d.ts.map +1 -1
  73. package/dist/utils/tap-assistant-context.js +17 -31
  74. package/dist/utils/tap-assistant-context.js.map +1 -1
  75. package/dist/utils/tap-client-stack-context.d.ts +1 -1
  76. package/dist/utils/tap-client-stack-context.d.ts.map +1 -1
  77. package/dist/utils/tap-client-stack-context.js +24 -26
  78. package/dist/utils/tap-client-stack-context.js.map +1 -1
  79. package/package.json +23 -9
@@ -1,81 +1,80 @@
1
- // src/utils/NotificationManager.ts
2
1
  import { resource, tapMemo } from "@assistant-ui/tap";
3
- var NotificationManager = resource(() => {
4
- return tapMemo(() => {
5
- const listeners = /* @__PURE__ */ new Map();
6
- const wildcardListeners = /* @__PURE__ */ new Set();
7
- const subscribers = /* @__PURE__ */ new Set();
8
- return {
9
- on(event, callback) {
10
- const cb = callback;
11
- if (event === "*") {
12
- wildcardListeners.add(cb);
13
- return () => wildcardListeners.delete(cb);
14
- }
15
- let set = listeners.get(event);
16
- if (!set) {
17
- set = /* @__PURE__ */ new Set();
18
- listeners.set(event, set);
19
- }
20
- set.add(cb);
21
- return () => {
22
- set.delete(cb);
23
- if (set.size === 0) listeners.delete(event);
2
+ export const NotificationManager = resource(() => {
3
+ return tapMemo(() => {
4
+ const listeners = new Map();
5
+ const wildcardListeners = new Set();
6
+ const subscribers = new Set();
7
+ return {
8
+ on(event, callback) {
9
+ const cb = callback;
10
+ if (event === "*") {
11
+ wildcardListeners.add(cb);
12
+ return () => wildcardListeners.delete(cb);
13
+ }
14
+ let set = listeners.get(event);
15
+ if (!set) {
16
+ set = new Set();
17
+ listeners.set(event, set);
18
+ }
19
+ set.add(cb);
20
+ return () => {
21
+ set.delete(cb);
22
+ if (set.size === 0)
23
+ listeners.delete(event);
24
+ };
25
+ },
26
+ emit(event, payload, clientStack) {
27
+ const eventListeners = listeners.get(event);
28
+ if (!eventListeners && wildcardListeners.size === 0)
29
+ return;
30
+ queueMicrotask(() => {
31
+ const errors = [];
32
+ if (eventListeners) {
33
+ for (const cb of eventListeners) {
34
+ try {
35
+ cb(payload, clientStack);
36
+ }
37
+ catch (e) {
38
+ errors.push(e);
39
+ }
40
+ }
41
+ }
42
+ if (wildcardListeners.size > 0) {
43
+ const wrapped = { event, payload };
44
+ for (const cb of wildcardListeners) {
45
+ try {
46
+ cb(wrapped, clientStack);
47
+ }
48
+ catch (e) {
49
+ errors.push(e);
50
+ }
51
+ }
52
+ }
53
+ if (errors.length > 0) {
54
+ if (errors.length === 1) {
55
+ throw errors[0];
56
+ }
57
+ else {
58
+ throw new AggregateError(errors, "Errors occurred during event emission");
59
+ }
60
+ }
61
+ });
62
+ },
63
+ subscribe(callback) {
64
+ subscribers.add(callback);
65
+ return () => subscribers.delete(callback);
66
+ },
67
+ notifySubscribers() {
68
+ for (const cb of subscribers) {
69
+ try {
70
+ cb();
71
+ }
72
+ catch (e) {
73
+ console.error("NotificationManager: subscriber callback error", e);
74
+ }
75
+ }
76
+ },
24
77
  };
25
- },
26
- emit(event, payload, clientStack) {
27
- const eventListeners = listeners.get(event);
28
- if (!eventListeners && wildcardListeners.size === 0) return;
29
- queueMicrotask(() => {
30
- const errors = [];
31
- if (eventListeners) {
32
- for (const cb of eventListeners) {
33
- try {
34
- cb(payload, clientStack);
35
- } catch (e) {
36
- errors.push(e);
37
- }
38
- }
39
- }
40
- if (wildcardListeners.size > 0) {
41
- const wrapped = { event, payload };
42
- for (const cb of wildcardListeners) {
43
- try {
44
- cb(wrapped, clientStack);
45
- } catch (e) {
46
- errors.push(e);
47
- }
48
- }
49
- }
50
- if (errors.length > 0) {
51
- if (errors.length === 1) {
52
- throw errors[0];
53
- } else {
54
- throw new AggregateError(
55
- errors,
56
- "Errors occurred during event emission"
57
- );
58
- }
59
- }
60
- });
61
- },
62
- subscribe(callback) {
63
- subscribers.add(callback);
64
- return () => subscribers.delete(callback);
65
- },
66
- notifySubscribers() {
67
- for (const cb of subscribers) {
68
- try {
69
- cb();
70
- } catch (e) {
71
- console.error("NotificationManager: subscriber callback error", e);
72
- }
73
- }
74
- }
75
- };
76
- }, []);
78
+ }, []);
77
79
  });
78
- export {
79
- NotificationManager
80
- };
81
80
  //# sourceMappingURL=NotificationManager.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/NotificationManager.ts"],"sourcesContent":["import { resource, tapMemo } from \"@assistant-ui/tap\";\nimport type { ClientStack } from \"./tap-client-stack-context\";\nimport type {\n AssistantEventName,\n AssistantEventPayload,\n} from \"../types/events\";\nimport { Unsubscribe } from \"../types/client\";\n\ntype InternalCallback = (payload: unknown, clientStack: ClientStack) => void;\n\nexport type NotificationManager = {\n on<TEvent extends AssistantEventName>(\n event: TEvent,\n callback: (\n payload: AssistantEventPayload[TEvent],\n clientStack: ClientStack,\n ) => void,\n ): Unsubscribe;\n emit<TEvent extends Exclude<AssistantEventName, \"*\">>(\n event: TEvent,\n payload: AssistantEventPayload[TEvent],\n clientStack: ClientStack,\n ): void;\n subscribe(callback: () => void): Unsubscribe;\n notifySubscribers(): void;\n};\n\nexport const NotificationManager = resource((): NotificationManager => {\n return tapMemo(() => {\n const listeners = new Map<string, Set<InternalCallback>>();\n const wildcardListeners = new Set<InternalCallback>();\n const subscribers = new Set<() => void>();\n\n return {\n on(event, callback) {\n const cb = callback as InternalCallback;\n if (event === \"*\") {\n wildcardListeners.add(cb);\n return () => wildcardListeners.delete(cb);\n }\n\n let set = listeners.get(event);\n if (!set) {\n set = new Set();\n listeners.set(event, set);\n }\n set.add(cb);\n\n return () => {\n set!.delete(cb);\n if (set!.size === 0) listeners.delete(event);\n };\n },\n\n emit(event, payload, clientStack) {\n const eventListeners = listeners.get(event);\n if (!eventListeners && wildcardListeners.size === 0) return;\n\n queueMicrotask(() => {\n const errors = [];\n if (eventListeners) {\n for (const cb of eventListeners) {\n try {\n cb(payload, clientStack);\n } catch (e) {\n errors.push(e);\n }\n }\n }\n if (wildcardListeners.size > 0) {\n const wrapped = { event, payload };\n for (const cb of wildcardListeners) {\n try {\n cb(wrapped, clientStack);\n } catch (e) {\n errors.push(e);\n }\n }\n }\n\n if (errors.length > 0) {\n if (errors.length === 1) {\n throw errors[0];\n } else {\n throw new AggregateError(\n errors,\n \"Errors occurred during event emission\",\n );\n }\n }\n });\n },\n\n subscribe(callback) {\n subscribers.add(callback);\n return () => subscribers.delete(callback);\n },\n\n notifySubscribers() {\n for (const cb of subscribers) {\n try {\n cb();\n } catch (e) {\n console.error(\"NotificationManager: subscriber callback error\", e);\n }\n }\n },\n };\n }, []);\n});\n"],"mappings":";AAAA,SAAS,UAAU,eAAe;AA2B3B,IAAM,sBAAsB,SAAS,MAA2B;AACrE,SAAO,QAAQ,MAAM;AACnB,UAAM,YAAY,oBAAI,IAAmC;AACzD,UAAM,oBAAoB,oBAAI,IAAsB;AACpD,UAAM,cAAc,oBAAI,IAAgB;AAExC,WAAO;AAAA,MACL,GAAG,OAAO,UAAU;AAClB,cAAM,KAAK;AACX,YAAI,UAAU,KAAK;AACjB,4BAAkB,IAAI,EAAE;AACxB,iBAAO,MAAM,kBAAkB,OAAO,EAAE;AAAA,QAC1C;AAEA,YAAI,MAAM,UAAU,IAAI,KAAK;AAC7B,YAAI,CAAC,KAAK;AACR,gBAAM,oBAAI,IAAI;AACd,oBAAU,IAAI,OAAO,GAAG;AAAA,QAC1B;AACA,YAAI,IAAI,EAAE;AAEV,eAAO,MAAM;AACX,cAAK,OAAO,EAAE;AACd,cAAI,IAAK,SAAS,EAAG,WAAU,OAAO,KAAK;AAAA,QAC7C;AAAA,MACF;AAAA,MAEA,KAAK,OAAO,SAAS,aAAa;AAChC,cAAM,iBAAiB,UAAU,IAAI,KAAK;AAC1C,YAAI,CAAC,kBAAkB,kBAAkB,SAAS,EAAG;AAErD,uBAAe,MAAM;AACnB,gBAAM,SAAS,CAAC;AAChB,cAAI,gBAAgB;AAClB,uBAAW,MAAM,gBAAgB;AAC/B,kBAAI;AACF,mBAAG,SAAS,WAAW;AAAA,cACzB,SAAS,GAAG;AACV,uBAAO,KAAK,CAAC;AAAA,cACf;AAAA,YACF;AAAA,UACF;AACA,cAAI,kBAAkB,OAAO,GAAG;AAC9B,kBAAM,UAAU,EAAE,OAAO,QAAQ;AACjC,uBAAW,MAAM,mBAAmB;AAClC,kBAAI;AACF,mBAAG,SAAS,WAAW;AAAA,cACzB,SAAS,GAAG;AACV,uBAAO,KAAK,CAAC;AAAA,cACf;AAAA,YACF;AAAA,UACF;AAEA,cAAI,OAAO,SAAS,GAAG;AACrB,gBAAI,OAAO,WAAW,GAAG;AACvB,oBAAM,OAAO,CAAC;AAAA,YAChB,OAAO;AACL,oBAAM,IAAI;AAAA,gBACR;AAAA,gBACA;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF,CAAC;AAAA,MACH;AAAA,MAEA,UAAU,UAAU;AAClB,oBAAY,IAAI,QAAQ;AACxB,eAAO,MAAM,YAAY,OAAO,QAAQ;AAAA,MAC1C;AAAA,MAEA,oBAAoB;AAClB,mBAAW,MAAM,aAAa;AAC5B,cAAI;AACF,eAAG;AAAA,UACL,SAAS,GAAG;AACV,oBAAQ,MAAM,kDAAkD,CAAC;AAAA,UACnE;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF,GAAG,CAAC,CAAC;AACP,CAAC;","names":[]}
1
+ {"version":3,"file":"NotificationManager.js","sourceRoot":"","sources":["../../src/utils/NotificationManager.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { ResourceElement } from "@assistant-ui/tap";
2
- import { Unsubscribe } from "../types/client";
2
+ import { Unsubscribe } from "../types/client.js";
3
3
  export interface Store<TState> {
4
4
  /**
5
5
  * Get the current state of the store.
@@ -1 +1 @@
1
- {"version":3,"file":"StoreResource.d.ts","sourceRoot":"","sources":["../../src/utils/StoreResource.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,eAAe,EAIhB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,MAAM,WAAW,KAAK,CAAC,MAAM;IAC3B;;OAEG;IACH,QAAQ,IAAI,MAAM,CAAC;IAEnB;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,WAAW,CAAC;CAC9C;AAED,eAAO,MAAM,aAAa,GACvB,MAAM,4FAaR,CAAC"}
1
+ {"version":3,"file":"StoreResource.d.ts","sourceRoot":"","sources":["../../src/utils/StoreResource.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,eAAe,EAIhB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,2BAAwB;AAE9C,MAAM,WAAW,KAAK,CAAC,MAAM;IAC3B;;OAEG;IACH,QAAQ,IAAI,MAAM,CAAC;IAEnB;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,WAAW,CAAC;CAC9C;AAED,eAAO,MAAM,aAAa,GACvB,MAAM,4FAaR,CAAC"}
@@ -1,23 +1,12 @@
1
- // src/utils/StoreResource.ts
2
- import {
3
- tapEffect,
4
- resource,
5
- createResource,
6
- tapState
7
- } from "@assistant-ui/tap";
8
- var StoreResource = resource(
9
- (element) => {
1
+ import { tapEffect, resource, createResource, tapState, } from "@assistant-ui/tap";
2
+ export const StoreResource = resource((element) => {
10
3
  const [handle] = tapState(() => createResource(element, { mount: false }));
11
4
  tapEffect(() => {
12
- return handle.unmount;
5
+ return handle.unmount;
13
6
  }, [handle]);
14
7
  tapEffect(() => {
15
- handle.render(element);
8
+ handle.render(element);
16
9
  }, [handle, element]);
17
10
  return handle;
18
- }
19
- );
20
- export {
21
- StoreResource
22
- };
11
+ });
23
12
  //# sourceMappingURL=StoreResource.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/StoreResource.ts"],"sourcesContent":["import {\n tapEffect,\n ResourceElement,\n resource,\n createResource,\n tapState,\n} from \"@assistant-ui/tap\";\nimport { Unsubscribe } from \"../types/client\";\n\nexport interface Store<TState> {\n /**\n * Get the current state of the store.\n */\n getState(): TState;\n\n /**\n * Subscribe to the store.\n */\n subscribe(listener: () => void): Unsubscribe;\n}\n\nexport const StoreResource = resource(\n <TState>(element: ResourceElement<TState>): Store<TState> => {\n const [handle] = tapState(() => createResource(element, { mount: false }));\n\n tapEffect(() => {\n return handle.unmount;\n }, [handle]);\n\n tapEffect(() => {\n handle.render(element);\n }, [handle, element]);\n\n return handle;\n },\n);\n"],"mappings":";AAAA;AAAA,EACE;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAeA,IAAM,gBAAgB;AAAA,EAC3B,CAAS,YAAoD;AAC3D,UAAM,CAAC,MAAM,IAAI,SAAS,MAAM,eAAe,SAAS,EAAE,OAAO,MAAM,CAAC,CAAC;AAEzE,cAAU,MAAM;AACd,aAAO,OAAO;AAAA,IAChB,GAAG,CAAC,MAAM,CAAC;AAEX,cAAU,MAAM;AACd,aAAO,OAAO,OAAO;AAAA,IACvB,GAAG,CAAC,QAAQ,OAAO,CAAC;AAEpB,WAAO;AAAA,EACT;AACF;","names":[]}
1
+ {"version":3,"file":"StoreResource.js","sourceRoot":"","sources":["../../src/utils/StoreResource.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EAET,QAAQ,EACR,cAAc,EACd,QAAQ,GACT,MAAM,mBAAmB,CAAC;AAe3B,MAAM,CAAC,MAAM,aAAa,GAAG,QAAQ,CACnC,CAAS,OAAgC,EAAiB,EAAE;IAC1D,MAAM,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IAE3E,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,MAAM,CAAC,OAAO,CAAC;IACxB,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACzB,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAEtB,OAAO,MAAM,CAAC;AAChB,CAAC,CACF,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { AssistantClient, AssistantState } from "../types/client";
1
+ import type { AssistantClient, AssistantState } from "../types/client.js";
2
2
  export declare const PROXIED_ASSISTANT_STATE_SYMBOL: unique symbol;
3
3
  /**
4
4
  * Proxied state that lazily accesses scope states
@@ -1 +1 @@
1
- {"version":3,"file":"proxied-assistant-state.d.ts","sourceRoot":"","sources":["../../src/utils/proxied-assistant-state.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGvE,eAAO,MAAM,8BAA8B,eAE1C,CAAC;AAMF;;GAEG;AACH,eAAO,MAAM,2BAA2B,GACtC,QAAQ,eAAe,KACtB,cA0BF,CAAC;AAEF,eAAO,MAAM,wBAAwB,GACnC,QAAQ,eAAe,KACtB,cAIF,CAAC"}
1
+ {"version":3,"file":"proxied-assistant-state.d.ts","sourceRoot":"","sources":["../../src/utils/proxied-assistant-state.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,2BAAwB;AAGvE,eAAO,MAAM,8BAA8B,eAE1C,CAAC;AAMF;;GAEG;AACH,eAAO,MAAM,2BAA2B,GACtC,QAAQ,eAAe,KACtB,cA0BF,CAAC;AAEF,eAAO,MAAM,wBAAwB,GACnC,QAAQ,eAAe,KACtB,cAIF,CAAC"}
@@ -1,41 +1,34 @@
1
1
  "use client";
2
-
3
- // src/utils/proxied-assistant-state.tsx
4
2
  import { getClientState } from "../tapClientResource.js";
5
3
  import { BaseProxyHandler, handleIntrospectionProp } from "./BaseProxyHandler.js";
6
- var PROXIED_ASSISTANT_STATE_SYMBOL = /* @__PURE__ */ Symbol(
7
- "assistant-ui.store.proxiedAssistantState"
8
- );
9
- var isIgnoredKey = (key) => {
10
- return key === "on" || key === "subscribe" || typeof key === "symbol";
4
+ export const PROXIED_ASSISTANT_STATE_SYMBOL = Symbol("assistant-ui.store.proxiedAssistantState");
5
+ const isIgnoredKey = (key) => {
6
+ return key === "on" || key === "subscribe" || typeof key === "symbol";
11
7
  };
12
- var createProxiedAssistantState = (client) => {
13
- class ProxiedAssistantStateProxyHandler extends BaseProxyHandler {
14
- get(_, prop) {
15
- const introspection = handleIntrospectionProp(prop, "AssistantState");
16
- if (introspection !== false) return introspection;
17
- const scope = prop;
18
- if (isIgnoredKey(scope)) return void 0;
19
- return getClientState(client[scope]());
8
+ /**
9
+ * Proxied state that lazily accesses scope states
10
+ */
11
+ export const createProxiedAssistantState = (client) => {
12
+ class ProxiedAssistantStateProxyHandler extends BaseProxyHandler {
13
+ get(_, prop) {
14
+ const introspection = handleIntrospectionProp(prop, "AssistantState");
15
+ if (introspection !== false)
16
+ return introspection;
17
+ const scope = prop;
18
+ if (isIgnoredKey(scope))
19
+ return undefined;
20
+ return getClientState(client[scope]());
21
+ }
22
+ ownKeys() {
23
+ return Object.keys(client).filter((key) => !isIgnoredKey(key));
24
+ }
25
+ has(_, prop) {
26
+ return !isIgnoredKey(prop) && prop in client;
27
+ }
20
28
  }
21
- ownKeys() {
22
- return Object.keys(client).filter((key) => !isIgnoredKey(key));
23
- }
24
- has(_, prop) {
25
- return !isIgnoredKey(prop) && prop in client;
26
- }
27
- }
28
- return new Proxy(
29
- {},
30
- new ProxiedAssistantStateProxyHandler()
31
- );
32
- };
33
- var getProxiedAssistantState = (client) => {
34
- return client[PROXIED_ASSISTANT_STATE_SYMBOL];
29
+ return new Proxy({}, new ProxiedAssistantStateProxyHandler());
35
30
  };
36
- export {
37
- PROXIED_ASSISTANT_STATE_SYMBOL,
38
- createProxiedAssistantState,
39
- getProxiedAssistantState
31
+ export const getProxiedAssistantState = (client) => {
32
+ return client[PROXIED_ASSISTANT_STATE_SYMBOL];
40
33
  };
41
34
  //# sourceMappingURL=proxied-assistant-state.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/proxied-assistant-state.tsx"],"sourcesContent":["\"use client\";\nimport { getClientState } from \"../tapClientResource\";\nimport type { AssistantClient, AssistantState } from \"../types/client\";\nimport { BaseProxyHandler, handleIntrospectionProp } from \"./BaseProxyHandler\";\n\nexport const PROXIED_ASSISTANT_STATE_SYMBOL = Symbol(\n \"assistant-ui.store.proxiedAssistantState\",\n);\n\nconst isIgnoredKey = (key: string | symbol): key is \"on\" | \"subscribe\" => {\n return key === \"on\" || key === \"subscribe\" || typeof key === \"symbol\";\n};\n\n/**\n * Proxied state that lazily accesses scope states\n */\nexport const createProxiedAssistantState = (\n client: AssistantClient,\n): AssistantState => {\n class ProxiedAssistantStateProxyHandler\n extends BaseProxyHandler\n implements ProxyHandler<AssistantState>\n {\n get(_: unknown, prop: string | symbol) {\n const introspection = handleIntrospectionProp(prop, \"AssistantState\");\n if (introspection !== false) return introspection;\n const scope = prop as keyof AssistantClient;\n if (isIgnoredKey(scope)) return undefined;\n return getClientState(client[scope]());\n }\n\n ownKeys(): ArrayLike<string | symbol> {\n return Object.keys(client).filter((key) => !isIgnoredKey(key));\n }\n\n has(_: unknown, prop: string | symbol): boolean {\n return !isIgnoredKey(prop) && prop in client;\n }\n }\n\n return new Proxy<AssistantState>(\n {} as AssistantState,\n new ProxiedAssistantStateProxyHandler(),\n );\n};\n\nexport const getProxiedAssistantState = (\n client: AssistantClient,\n): AssistantState => {\n return (\n client as unknown as { [PROXIED_ASSISTANT_STATE_SYMBOL]: AssistantState }\n )[PROXIED_ASSISTANT_STATE_SYMBOL];\n};\n"],"mappings":";;;AACA,SAAS,sBAAsB;AAE/B,SAAS,kBAAkB,+BAA+B;AAEnD,IAAM,iCAAiC;AAAA,EAC5C;AACF;AAEA,IAAM,eAAe,CAAC,QAAoD;AACxE,SAAO,QAAQ,QAAQ,QAAQ,eAAe,OAAO,QAAQ;AAC/D;AAKO,IAAM,8BAA8B,CACzC,WACmB;AAAA,EACnB,MAAM,0CACI,iBAEV;AAAA,IACE,IAAI,GAAY,MAAuB;AACrC,YAAM,gBAAgB,wBAAwB,MAAM,gBAAgB;AACpE,UAAI,kBAAkB,MAAO,QAAO;AACpC,YAAM,QAAQ;AACd,UAAI,aAAa,KAAK,EAAG,QAAO;AAChC,aAAO,eAAe,OAAO,KAAK,EAAE,CAAC;AAAA,IACvC;AAAA,IAEA,UAAsC;AACpC,aAAO,OAAO,KAAK,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,aAAa,GAAG,CAAC;AAAA,IAC/D;AAAA,IAEA,IAAI,GAAY,MAAgC;AAC9C,aAAO,CAAC,aAAa,IAAI,KAAK,QAAQ;AAAA,IACxC;AAAA,EACF;AAEA,SAAO,IAAI;AAAA,IACT,CAAC;AAAA,IACD,IAAI,kCAAkC;AAAA,EACxC;AACF;AAEO,IAAM,2BAA2B,CACtC,WACmB;AACnB,SACE,OACA,8BAA8B;AAClC;","names":[]}
1
+ {"version":3,"file":"proxied-assistant-state.js","sourceRoot":"","sources":["../../src/utils/proxied-assistant-state.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AACb,OAAO,EAAE,cAAc,EAAE,gCAA6B;AAEtD,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,8BAA2B;AAE/E,MAAM,CAAC,MAAM,8BAA8B,GAAG,MAAM,CAClD,0CAA0C,CAC3C,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,GAAoB,EAA6B,EAAE;IACvE,OAAO,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,WAAW,IAAI,OAAO,GAAG,KAAK,QAAQ,CAAC;AACxE,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CACzC,MAAuB,EACP,EAAE;IAClB,MAAM,iCACJ,SAAQ,gBAAgB;QAGxB,GAAG,CAAC,CAAU,EAAE,IAAqB;YACnC,MAAM,aAAa,GAAG,uBAAuB,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;YACtE,IAAI,aAAa,KAAK,KAAK;gBAAE,OAAO,aAAa,CAAC;YAClD,MAAM,KAAK,GAAG,IAA6B,CAAC;YAC5C,IAAI,YAAY,CAAC,KAAK,CAAC;gBAAE,OAAO,SAAS,CAAC;YAC1C,OAAO,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACzC,CAAC;QAED,OAAO;YACL,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;QACjE,CAAC;QAED,GAAG,CAAC,CAAU,EAAE,IAAqB;YACnC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,MAAM,CAAC;QAC/C,CAAC;KACF;IAED,OAAO,IAAI,KAAK,CACd,EAAoB,EACpB,IAAI,iCAAiC,EAAE,CACxC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAG,CACtC,MAAuB,EACP,EAAE;IAClB,OACE,MACD,CAAC,8BAA8B,CAAC,CAAC;AACpC,CAAC,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import type { AssistantClient } from "../types/client";
2
+ import type { AssistantClient } from "../types/client.js";
3
3
  /** Default context value - throws "wrap in AssistantProvider" 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,EAAE,eAAe,EAA2B,MAAM,iBAAiB,CAAC;AAmDhF,uEAAuE;AACvE,eAAO,MAAM,sBAAsB,EAAE,eAIlC,CAAC;AAMJ,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,QAAO,eASzC,CAAC;AAOL,eAAO,MAAM,wBAAwB,QAAO,eAE3C,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,iBAAiB,GAAI,uBAG/B;IACD,MAAM,EAAE,eAAe,CAAC;IACxB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,KAAG,KAAK,CAAC,YAMT,CAAC"}
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,EAAE,eAAe,EAA2B,2BAAwB;AAmDhF,uEAAuE;AACvE,eAAO,MAAM,sBAAsB,EAAE,eAIlC,CAAC;AAMJ,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,QAAO,eASzC,CAAC;AAOL,eAAO,MAAM,wBAAwB,QAAO,eAE3C,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,iBAAiB,GAAI,uBAG/B;IACD,MAAM,EAAE,eAAe,CAAC;IACxB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,KAAG,KAAK,CAAC,YAMT,CAAC"}
@@ -1,73 +1,68 @@
1
- // src/utils/react-assistant-context.tsx
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { createContext, useContext } from "react";
3
- import {
4
- createProxiedAssistantState,
5
- PROXIED_ASSISTANT_STATE_SYMBOL
6
- } from "./proxied-assistant-state.js";
3
+ import { createProxiedAssistantState, PROXIED_ASSISTANT_STATE_SYMBOL, } from "./proxied-assistant-state.js";
7
4
  import { BaseProxyHandler, handleIntrospectionProp } from "./BaseProxyHandler.js";
8
- import { jsx } from "react/jsx-runtime";
9
- var NO_OP_SUBSCRIBE = () => () => {
5
+ const NO_OP_SUBSCRIBE = () => () => { };
6
+ const createErrorClientField = (message) => {
7
+ const fn = (() => {
8
+ throw new Error(message);
9
+ });
10
+ fn.source = null;
11
+ fn.query = null;
12
+ return fn;
10
13
  };
11
- var createErrorClientField = (message) => {
12
- const fn = (() => {
13
- throw new Error(message);
14
- });
15
- fn.source = null;
16
- fn.query = null;
17
- return fn;
18
- };
19
- var DefaultAssistantClientProxyHandler = class extends BaseProxyHandler {
20
- get(_, prop) {
21
- if (prop === "subscribe") return NO_OP_SUBSCRIBE;
22
- if (prop === "on") return NO_OP_SUBSCRIBE;
23
- if (prop === PROXIED_ASSISTANT_STATE_SYMBOL)
24
- return DefaultAssistantClientProxiedAssistantState;
25
- const introspection = handleIntrospectionProp(
26
- prop,
27
- "DefaultAssistantClient"
28
- );
29
- if (introspection !== false) return introspection;
30
- return createErrorClientField(
31
- `The current scope does not have a "${String(prop)}" property.`
32
- );
33
- }
34
- ownKeys() {
35
- return ["subscribe", "on", PROXIED_ASSISTANT_STATE_SYMBOL];
36
- }
37
- has(_, prop) {
38
- return prop === "subscribe" || prop === "on" || prop === PROXIED_ASSISTANT_STATE_SYMBOL;
39
- }
40
- };
41
- var DefaultAssistantClient = new Proxy(
42
- {},
43
- new DefaultAssistantClientProxyHandler()
44
- );
45
- var DefaultAssistantClientProxiedAssistantState = createProxiedAssistantState(
46
- DefaultAssistantClient
47
- );
48
- var createRootAssistantClient = () => new Proxy({}, {
49
- get(_, prop) {
50
- const introspection = handleIntrospectionProp(prop, "AssistantClient");
51
- if (introspection !== false) return introspection;
52
- return createErrorClientField(
53
- `The current scope does not have a "${String(prop)}" property.`
54
- );
55
- }
14
+ class DefaultAssistantClientProxyHandler extends BaseProxyHandler {
15
+ get(_, prop) {
16
+ if (prop === "subscribe")
17
+ return NO_OP_SUBSCRIBE;
18
+ if (prop === "on")
19
+ return NO_OP_SUBSCRIBE;
20
+ if (prop === PROXIED_ASSISTANT_STATE_SYMBOL)
21
+ return DefaultAssistantClientProxiedAssistantState;
22
+ const introspection = handleIntrospectionProp(prop, "DefaultAssistantClient");
23
+ if (introspection !== false)
24
+ return introspection;
25
+ return createErrorClientField(`The current scope does not have a "${String(prop)}" property.`);
26
+ }
27
+ ownKeys() {
28
+ return ["subscribe", "on", PROXIED_ASSISTANT_STATE_SYMBOL];
29
+ }
30
+ has(_, prop) {
31
+ return (prop === "subscribe" ||
32
+ prop === "on" ||
33
+ prop === PROXIED_ASSISTANT_STATE_SYMBOL);
34
+ }
35
+ }
36
+ /** Default context value - throws "wrap in AssistantProvider" error */
37
+ export const DefaultAssistantClient = new Proxy({}, new DefaultAssistantClientProxyHandler());
38
+ const DefaultAssistantClientProxiedAssistantState = createProxiedAssistantState(DefaultAssistantClient);
39
+ /** Root prototype for created clients - throws "scope not defined" error */
40
+ export const createRootAssistantClient = () => new Proxy({}, {
41
+ get(_, prop) {
42
+ const introspection = handleIntrospectionProp(prop, "AssistantClient");
43
+ if (introspection !== false)
44
+ return introspection;
45
+ return createErrorClientField(`The current scope does not have a "${String(prop)}" property.`);
46
+ },
56
47
  });
57
- var AssistantContext = createContext(DefaultAssistantClient);
58
- var useAssistantContextValue = () => {
59
- return useContext(AssistantContext);
60
- };
61
- var AssistantProvider = ({
62
- client,
63
- children
64
- }) => {
65
- return /* @__PURE__ */ jsx(AssistantContext.Provider, { value: client, children });
48
+ /**
49
+ * React Context for the AssistantClient
50
+ */
51
+ const AssistantContext = createContext(DefaultAssistantClient);
52
+ export const useAssistantContextValue = () => {
53
+ return useContext(AssistantContext);
66
54
  };
67
- export {
68
- AssistantProvider,
69
- DefaultAssistantClient,
70
- createRootAssistantClient,
71
- useAssistantContextValue
55
+ /**
56
+ * Provider component for AssistantClient
57
+ *
58
+ * @example
59
+ * ```typescript
60
+ * <AssistantProvider client={client}>
61
+ * <YourApp />
62
+ * </AssistantProvider>
63
+ * ```
64
+ */
65
+ export const AssistantProvider = ({ client, children, }) => {
66
+ return (_jsx(AssistantContext.Provider, { value: client, children: children }));
72
67
  };
73
68
  //# sourceMappingURL=react-assistant-context.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/react-assistant-context.tsx"],"sourcesContent":["import React, { createContext, useContext } from \"react\";\nimport type { AssistantClient, AssistantClientAccessor } from \"../types/client\";\nimport {\n createProxiedAssistantState,\n PROXIED_ASSISTANT_STATE_SYMBOL,\n} from \"./proxied-assistant-state\";\nimport { BaseProxyHandler, handleIntrospectionProp } from \"./BaseProxyHandler\";\n\nconst NO_OP_SUBSCRIBE = () => () => {};\n\nconst createErrorClientField = (\n message: string,\n): AssistantClientAccessor<never> => {\n const fn = (() => {\n throw new Error(message);\n }) as AssistantClientAccessor<never>;\n fn.source = null;\n fn.query = null;\n return fn;\n};\n\nclass DefaultAssistantClientProxyHandler\n extends BaseProxyHandler\n implements ProxyHandler<AssistantClient>\n{\n get(_: unknown, prop: string | symbol) {\n if (prop === \"subscribe\") return NO_OP_SUBSCRIBE;\n if (prop === \"on\") return NO_OP_SUBSCRIBE;\n if (prop === PROXIED_ASSISTANT_STATE_SYMBOL)\n return DefaultAssistantClientProxiedAssistantState;\n const introspection = handleIntrospectionProp(\n prop,\n \"DefaultAssistantClient\",\n );\n if (introspection !== false) return introspection;\n return createErrorClientField(\n `The current scope does not have a \"${String(prop)}\" property.`,\n );\n }\n\n ownKeys(): ArrayLike<string | symbol> {\n return [\"subscribe\", \"on\", PROXIED_ASSISTANT_STATE_SYMBOL];\n }\n\n has(_: unknown, prop: string | symbol): boolean {\n return (\n prop === \"subscribe\" ||\n prop === \"on\" ||\n prop === PROXIED_ASSISTANT_STATE_SYMBOL\n );\n }\n}\n/** Default context value - throws \"wrap in AssistantProvider\" error */\nexport const DefaultAssistantClient: AssistantClient =\n new Proxy<AssistantClient>(\n {} as AssistantClient,\n new DefaultAssistantClientProxyHandler(),\n );\n\nconst DefaultAssistantClientProxiedAssistantState = createProxiedAssistantState(\n DefaultAssistantClient,\n);\n\n/** Root prototype for created clients - throws \"scope not defined\" error */\nexport const createRootAssistantClient = (): AssistantClient =>\n new Proxy<AssistantClient>({} as AssistantClient, {\n get(_: AssistantClient, prop: string | symbol) {\n const introspection = handleIntrospectionProp(prop, \"AssistantClient\");\n if (introspection !== false) return introspection;\n return createErrorClientField(\n `The current scope does not have a \"${String(prop)}\" property.`,\n );\n },\n });\n\n/**\n * React Context for the AssistantClient\n */\nconst AssistantContext = createContext<AssistantClient>(DefaultAssistantClient);\n\nexport const useAssistantContextValue = (): AssistantClient => {\n return useContext(AssistantContext);\n};\n\n/**\n * Provider component for AssistantClient\n *\n * @example\n * ```typescript\n * <AssistantProvider client={client}>\n * <YourApp />\n * </AssistantProvider>\n * ```\n */\nexport const AssistantProvider = ({\n client,\n children,\n}: {\n client: AssistantClient;\n children: React.ReactNode;\n}): React.ReactElement => {\n return (\n <AssistantContext.Provider value={client}>\n {children}\n </AssistantContext.Provider>\n );\n};\n"],"mappings":";AAAA,SAAgB,eAAe,kBAAkB;AAEjD;AAAA,EACE;AAAA,EACA;AAAA,OACK;AACP,SAAS,kBAAkB,+BAA+B;AAgGtD;AA9FJ,IAAM,kBAAkB,MAAM,MAAM;AAAC;AAErC,IAAM,yBAAyB,CAC7B,YACmC;AACnC,QAAM,MAAM,MAAM;AAChB,UAAM,IAAI,MAAM,OAAO;AAAA,EACzB;AACA,KAAG,SAAS;AACZ,KAAG,QAAQ;AACX,SAAO;AACT;AAEA,IAAM,qCAAN,cACU,iBAEV;AAAA,EACE,IAAI,GAAY,MAAuB;AACrC,QAAI,SAAS,YAAa,QAAO;AACjC,QAAI,SAAS,KAAM,QAAO;AAC1B,QAAI,SAAS;AACX,aAAO;AACT,UAAM,gBAAgB;AAAA,MACpB;AAAA,MACA;AAAA,IACF;AACA,QAAI,kBAAkB,MAAO,QAAO;AACpC,WAAO;AAAA,MACL,sCAAsC,OAAO,IAAI,CAAC;AAAA,IACpD;AAAA,EACF;AAAA,EAEA,UAAsC;AACpC,WAAO,CAAC,aAAa,MAAM,8BAA8B;AAAA,EAC3D;AAAA,EAEA,IAAI,GAAY,MAAgC;AAC9C,WACE,SAAS,eACT,SAAS,QACT,SAAS;AAAA,EAEb;AACF;AAEO,IAAM,yBACX,IAAI;AAAA,EACF,CAAC;AAAA,EACD,IAAI,mCAAmC;AACzC;AAEF,IAAM,8CAA8C;AAAA,EAClD;AACF;AAGO,IAAM,4BAA4B,MACvC,IAAI,MAAuB,CAAC,GAAsB;AAAA,EAChD,IAAI,GAAoB,MAAuB;AAC7C,UAAM,gBAAgB,wBAAwB,MAAM,iBAAiB;AACrE,QAAI,kBAAkB,MAAO,QAAO;AACpC,WAAO;AAAA,MACL,sCAAsC,OAAO,IAAI,CAAC;AAAA,IACpD;AAAA,EACF;AACF,CAAC;AAKH,IAAM,mBAAmB,cAA+B,sBAAsB;AAEvE,IAAM,2BAA2B,MAAuB;AAC7D,SAAO,WAAW,gBAAgB;AACpC;AAYO,IAAM,oBAAoB,CAAC;AAAA,EAChC;AAAA,EACA;AACF,MAG0B;AACxB,SACE,oBAAC,iBAAiB,UAAjB,EAA0B,OAAO,QAC/B,UACH;AAEJ;","names":[]}
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;AAEzD,OAAO,EACL,2BAA2B,EAC3B,8BAA8B,GAC/B,qCAAkC;AACnC,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,8BAA2B;AAE/E,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,sCAAsC,MAAM,CAAC,IAAI,CAAC,aAAa,CAChE,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,uEAAuE;AACvE,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;QAClD,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,iBAAiB,GAAG,CAAC,EAChC,MAAM,EACN,QAAQ,GAIT,EAAsB,EAAE;IACvB,OAAO,CACL,KAAC,gBAAgB,CAAC,QAAQ,IAAC,KAAK,EAAE,MAAM,YACrC,QAAQ,GACiB,CAC7B,CAAC;AACJ,CAAC,CAAC"}
@@ -1,6 +1,6 @@
1
- import { DerivedElement } from "../Derived";
2
- import type { AssistantClient, ClientElement, ClientNames } from "../types/client";
3
- import type { useAssistantClient } from "../useAssistantClient";
1
+ import { DerivedElement } from "../Derived.js";
2
+ import type { AssistantClient, ClientElement, ClientNames } from "../types/client.js";
3
+ import type { useAssistantClient } from "../useAssistantClient.js";
4
4
  export type RootClients = Partial<Record<ClientNames, ClientElement<ClientNames>>>;
5
5
  export type DerivedClients = Partial<Record<ClientNames, DerivedElement<ClientNames>>>;
6
6
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"splitClients.d.ts","sourceRoot":"","sources":["../../src/utils/splitClients.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,cAAc,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,KAAK,EACV,eAAe,EACf,aAAa,EACb,WAAW,EACZ,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,MAAM,MAAM,WAAW,GAAG,OAAO,CAC/B,MAAM,CAAC,WAAW,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC,CAChD,CAAC;AACF,MAAM,MAAM,cAAc,GAAG,OAAO,CAClC,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC,CACjD,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,kBAAkB,CAAC,KAAK,EACjC,UAAU,EAAE,eAAe;;;EAgD5B"}
1
+ {"version":3,"file":"splitClients.d.ts","sourceRoot":"","sources":["../../src/utils/splitClients.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,cAAc,EAAE,sBAAmB;AACrD,OAAO,KAAK,EACV,eAAe,EACf,aAAa,EACb,WAAW,EACZ,2BAAwB;AAEzB,OAAO,KAAK,EAAE,kBAAkB,EAAE,iCAA8B;AAEhE,MAAM,MAAM,WAAW,GAAG,OAAO,CAC/B,MAAM,CAAC,WAAW,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC,CAChD,CAAC;AACF,MAAM,MAAM,cAAc,GAAG,OAAO,CAClC,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC,CACjD,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,kBAAkB,CAAC,KAAK,EACjC,UAAU,EAAE,eAAe;;;EAgD5B"}
@@ -1,37 +1,54 @@
1
- // src/utils/splitClients.ts
2
1
  import { Derived } from "../Derived.js";
3
2
  import { getDefaultPeers } from "../attachDefaultPeers.js";
4
- function splitClients(clients, baseClient) {
5
- const rootClients = {};
6
- const derivedClients = {};
7
- for (const [key, clientElement] of Object.entries(clients)) {
8
- if (clientElement.type === Derived) {
9
- derivedClients[key] = clientElement;
10
- } else {
11
- rootClients[key] = clientElement;
3
+ /**
4
+ * Splits a clients object into root clients and derived clients.
5
+ *
6
+ * @param clients - The clients input object to split
7
+ * @returns An object with { rootClients, derivedClients }
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * const clients = {
12
+ * foo: RootClient({ ... }),
13
+ * bar: Derived({ ... }),
14
+ * };
15
+ *
16
+ * const { rootClients, derivedClients } = splitClients(clients);
17
+ * // rootClients = { foo: ... }
18
+ * // derivedClients = { bar: ... }
19
+ * ```
20
+ */
21
+ export function splitClients(clients, baseClient) {
22
+ const rootClients = {};
23
+ const derivedClients = {};
24
+ for (const [key, clientElement] of Object.entries(clients)) {
25
+ if (clientElement.type === Derived) {
26
+ derivedClients[key] = clientElement;
27
+ }
28
+ else {
29
+ rootClients[key] = clientElement;
30
+ }
12
31
  }
13
- }
14
- for (const [clientKey, clientElement] of Object.entries(rootClients)) {
15
- const defaultPeers = getDefaultPeers(clientElement.type);
16
- if (!defaultPeers) continue;
17
- for (const [key, peerElement] of Object.entries(defaultPeers)) {
18
- if (key in rootClients || key in derivedClients || baseClient[key].source !== null)
19
- continue;
20
- if (peerElement.type === Derived) {
21
- derivedClients[key] = peerElement;
22
- } else {
23
- rootClients[key] = peerElement;
24
- const subDefaultPeers = getDefaultPeers(peerElement.type);
25
- if (subDefaultPeers)
26
- throw new Error(
27
- `Nested default peers are not supported. Client "${clientKey}" has default peers, but its peer "${key}" also has default peers.`
28
- );
29
- }
32
+ for (const [clientKey, clientElement] of Object.entries(rootClients)) {
33
+ const defaultPeers = getDefaultPeers(clientElement.type);
34
+ if (!defaultPeers)
35
+ continue;
36
+ for (const [key, peerElement] of Object.entries(defaultPeers)) {
37
+ if (key in rootClients ||
38
+ key in derivedClients ||
39
+ baseClient[key].source !== null)
40
+ continue;
41
+ if (peerElement.type === (Derived)) {
42
+ derivedClients[key] = peerElement;
43
+ }
44
+ else {
45
+ rootClients[key] = peerElement;
46
+ const subDefaultPeers = getDefaultPeers(peerElement.type);
47
+ if (subDefaultPeers)
48
+ throw new Error(`Nested default peers are not supported. Client "${clientKey}" has default peers, but its peer "${key}" also has default peers.`);
49
+ }
50
+ }
30
51
  }
31
- }
32
- return { rootClients, derivedClients };
52
+ return { rootClients, derivedClients };
33
53
  }
34
- export {
35
- splitClients
36
- };
37
54
  //# sourceMappingURL=splitClients.js.map