@assistant-ui/store 0.0.4 → 0.0.6
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/dist/AssistantIf.d.ts +1 -1
- package/dist/AssistantIf.d.ts.map +1 -1
- package/dist/AssistantIf.js +3 -8
- package/dist/AssistantIf.js.map +1 -1
- package/dist/Derived.d.ts +1 -1
- package/dist/Derived.d.ts.map +1 -1
- package/dist/Derived.js +21 -8
- package/dist/Derived.js.map +1 -1
- package/dist/attachDefaultPeers.d.ts +2 -2
- package/dist/attachDefaultPeers.d.ts.map +1 -1
- package/dist/attachDefaultPeers.js +47 -18
- package/dist/attachDefaultPeers.js.map +1 -1
- package/dist/index.d.ts +14 -14
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -29
- package/dist/index.js.map +1 -1
- package/dist/tapClientList.d.ts +1 -1
- package/dist/tapClientList.d.ts.map +1 -1
- package/dist/tapClientList.js +56 -66
- package/dist/tapClientList.js.map +1 -1
- package/dist/tapClientLookup.d.ts +1 -1
- package/dist/tapClientLookup.d.ts.map +1 -1
- package/dist/tapClientLookup.js +25 -37
- package/dist/tapClientLookup.js.map +1 -1
- package/dist/tapClientResource.d.ts +1 -1
- package/dist/tapClientResource.d.ts.map +1 -1
- package/dist/tapClientResource.js +85 -88
- package/dist/tapClientResource.js.map +1 -1
- package/dist/types/client.d.ts +1 -1
- package/dist/types/client.d.ts.map +1 -1
- package/dist/types/client.js +1 -0
- package/dist/types/client.js.map +1 -1
- package/dist/types/events.d.ts +1 -1
- package/dist/types/events.d.ts.map +1 -1
- package/dist/types/events.js +6 -10
- package/dist/types/events.js.map +1 -1
- package/dist/useAssistantClient.d.ts +2 -2
- package/dist/useAssistantClient.d.ts.map +1 -1
- package/dist/useAssistantClient.js +118 -194
- package/dist/useAssistantClient.js.map +1 -1
- package/dist/useAssistantEvent.d.ts +1 -1
- package/dist/useAssistantEvent.d.ts.map +1 -1
- package/dist/useAssistantEvent.js +5 -9
- package/dist/useAssistantEvent.js.map +1 -1
- package/dist/useAssistantState.d.ts +1 -1
- package/dist/useAssistantState.d.ts.map +1 -1
- package/dist/useAssistantState.js +24 -19
- package/dist/useAssistantState.js.map +1 -1
- package/dist/utils/BaseProxyHandler.js +43 -38
- package/dist/utils/BaseProxyHandler.js.map +1 -1
- package/dist/utils/NotificationManager.d.ts +3 -3
- package/dist/utils/NotificationManager.d.ts.map +1 -1
- package/dist/utils/NotificationManager.js +76 -77
- package/dist/utils/NotificationManager.js.map +1 -1
- package/dist/utils/StoreResource.d.ts +1 -1
- package/dist/utils/StoreResource.d.ts.map +1 -1
- package/dist/utils/StoreResource.js +5 -16
- package/dist/utils/StoreResource.js.map +1 -1
- package/dist/utils/proxied-assistant-state.d.ts +1 -1
- package/dist/utils/proxied-assistant-state.d.ts.map +1 -1
- package/dist/utils/proxied-assistant-state.js +26 -33
- package/dist/utils/proxied-assistant-state.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 +61 -66
- package/dist/utils/react-assistant-context.js.map +1 -1
- package/dist/utils/splitClients.d.ts +3 -3
- package/dist/utils/splitClients.d.ts.map +1 -1
- package/dist/utils/splitClients.js +48 -31
- package/dist/utils/splitClients.js.map +1 -1
- package/dist/utils/tap-assistant-context.d.ts +3 -3
- package/dist/utils/tap-assistant-context.d.ts.map +1 -1
- package/dist/utils/tap-assistant-context.js +17 -31
- package/dist/utils/tap-assistant-context.js.map +1 -1
- package/dist/utils/tap-client-stack-context.d.ts +1 -1
- package/dist/utils/tap-client-stack-context.d.ts.map +1 -1
- package/dist/utils/tap-client-stack-context.js +24 -26
- package/dist/utils/tap-client-stack-context.js.map +1 -1
- package/package.json +23 -9
|
@@ -1,81 +1,80 @@
|
|
|
1
|
-
// src/utils/NotificationManager.ts
|
|
2
1
|
import { resource, tapMemo } from "@assistant-ui/tap";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
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,"
|
|
1
|
+
{"version":3,"file":"NotificationManager.js","sourceRoot":"","sources":["../../src/utils/NotificationManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -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,
|
|
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
|
-
|
|
2
|
-
|
|
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
|
-
|
|
5
|
+
return handle.unmount;
|
|
13
6
|
}, [handle]);
|
|
14
7
|
tapEffect(() => {
|
|
15
|
-
|
|
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"],"
|
|
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,
|
|
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
|
-
|
|
7
|
-
|
|
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
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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,"
|
|
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,
|
|
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
|
-
|
|
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
|
-
|
|
9
|
-
|
|
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
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
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
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
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
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
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,"
|
|
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,
|
|
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
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
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
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
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
|