@base44-preview/sdk 0.8.35-pr.212.1d74ede → 0.8.35-pr.212.2fe0031
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/index.d.ts
CHANGED
|
@@ -10,7 +10,7 @@ export type { IntegrationsModule, IntegrationEndpointFunction, CoreIntegrations,
|
|
|
10
10
|
export type { FunctionsModule, FunctionName, FunctionNameRegistry, } from "./modules/functions.types.js";
|
|
11
11
|
export type { AgentsModule, AgentName, AgentNameRegistry, AgentConversation, AgentMessage, AgentMessageReasoning, AgentMessageToolCall, AgentMessageUsage, AgentMessageCustomContext, AgentMessageMetadata, CreateConversationParams, } from "./modules/agents.types.js";
|
|
12
12
|
export type { AppLogsModule } from "./modules/app-logs.types.js";
|
|
13
|
-
export type { RealtimeModule, RealtimeHandlerClient,
|
|
13
|
+
export type { RealtimeModule, RealtimeHandlerClient, RealtimeSubscription, } from "./modules/realtime.types.js";
|
|
14
14
|
export type { SsoModule, SsoAccessTokenResponse } from "./modules/sso.types.js";
|
|
15
15
|
export { RealtimeHandler, type Conn } from "./realtime-handler.js";
|
|
16
16
|
export type { ConnectorsModule, UserConnectorsModule, } from "./modules/connectors.types.js";
|
|
@@ -4,7 +4,10 @@ export declare function createRealtimeModule(config: {
|
|
|
4
4
|
dispatcherWsUrl: string;
|
|
5
5
|
}): Record<string, RealtimeHandler>;
|
|
6
6
|
interface RealtimeHandler {
|
|
7
|
-
subscribe(instanceId: string, callback: (data: unknown) => void):
|
|
7
|
+
subscribe(instanceId: string, callback: (data: unknown) => void): Promise<{
|
|
8
|
+
send(data: unknown): void;
|
|
9
|
+
close(): void;
|
|
10
|
+
}>;
|
|
8
11
|
send(instanceId: string, data: unknown): void;
|
|
9
12
|
}
|
|
10
13
|
export {};
|
package/dist/modules/realtime.js
CHANGED
|
@@ -8,21 +8,19 @@ export function createRealtimeModule(config) {
|
|
|
8
8
|
return new Proxy({}, {
|
|
9
9
|
get(_, handlerName) {
|
|
10
10
|
return {
|
|
11
|
-
subscribe(instanceId, callback) {
|
|
11
|
+
async subscribe(instanceId, callback) {
|
|
12
12
|
var _a;
|
|
13
13
|
const key = socketKey(handlerName, instanceId);
|
|
14
14
|
// close existing if any
|
|
15
15
|
(_a = activeSockets.get(key)) === null || _a === void 0 ? void 0 : _a.close();
|
|
16
|
+
const token = await config.getToken(handlerName, instanceId);
|
|
16
17
|
const ws = new PartySocket({
|
|
17
18
|
host: config.dispatcherWsUrl,
|
|
18
19
|
party: handlerName,
|
|
19
20
|
room: instanceId,
|
|
21
|
+
query: { token },
|
|
20
22
|
});
|
|
21
23
|
activeSockets.set(key, ws);
|
|
22
|
-
// Fetch token and attach on connect
|
|
23
|
-
config.getToken(handlerName, instanceId).then((token) => {
|
|
24
|
-
ws.updateProperties({ party: handlerName, room: instanceId, query: { token } });
|
|
25
|
-
});
|
|
26
24
|
ws.addEventListener("message", (ev) => {
|
|
27
25
|
try {
|
|
28
26
|
callback(JSON.parse(ev.data));
|
|
@@ -37,15 +35,20 @@ export function createRealtimeModule(config) {
|
|
|
37
35
|
return; // replaced
|
|
38
36
|
try {
|
|
39
37
|
const newToken = await config.getToken(handlerName, instanceId);
|
|
40
|
-
ws.updateProperties({
|
|
38
|
+
ws.updateProperties({ query: { token: newToken } });
|
|
41
39
|
}
|
|
42
40
|
catch (_a) {
|
|
43
41
|
// ignore token refresh failure
|
|
44
42
|
}
|
|
45
43
|
});
|
|
46
|
-
return
|
|
47
|
-
|
|
48
|
-
|
|
44
|
+
return {
|
|
45
|
+
send(data) {
|
|
46
|
+
ws.send(JSON.stringify(data));
|
|
47
|
+
},
|
|
48
|
+
close() {
|
|
49
|
+
activeSockets.delete(key);
|
|
50
|
+
ws.close();
|
|
51
|
+
},
|
|
49
52
|
};
|
|
50
53
|
},
|
|
51
54
|
send(instanceId, data) {
|
|
@@ -1,46 +1,32 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
* for your deployed RealtimeHandlers.
|
|
4
|
-
*
|
|
5
|
-
* This is separate from {@link RealtimeHandlerNameRegistry} (which is auto-generated
|
|
6
|
-
* by `base44 types generate`), so there are no conflicts.
|
|
7
|
-
*
|
|
8
|
-
* @example
|
|
9
|
-
* ```typescript
|
|
10
|
-
* declare module "@base44/sdk" {
|
|
11
|
-
* interface RealtimeHandlerRegistry {
|
|
12
|
-
* ChatRoom: {
|
|
13
|
-
* inbound: { type: "joined" | "left" | "message"; userId?: string; from?: string; text?: string };
|
|
14
|
-
* outbound: { text: string };
|
|
15
|
-
* };
|
|
16
|
-
* }
|
|
17
|
-
* }
|
|
18
|
-
* ```
|
|
19
|
-
*/
|
|
20
|
-
export interface RealtimeHandlerRegistry {
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* Auto-populated by `base44 types generate` with the names of your deployed handlers.
|
|
24
|
-
* Do not edit this interface manually — use {@link RealtimeHandlerRegistry} for message types.
|
|
2
|
+
* A subscription handle returned by {@link RealtimeHandlerClient.subscribe}.
|
|
25
3
|
*/
|
|
26
|
-
export interface
|
|
4
|
+
export interface RealtimeSubscription {
|
|
5
|
+
/** Send a message to all subscribers of this instance. */
|
|
6
|
+
send(data: unknown): void;
|
|
7
|
+
/** Close the WebSocket connection and remove the subscription. */
|
|
8
|
+
close(): void;
|
|
27
9
|
}
|
|
28
|
-
type AllHandlerNames = keyof RealtimeHandlerRegistry | keyof RealtimeHandlerNameRegistry;
|
|
29
|
-
type InboundFor<N extends string> = N extends keyof RealtimeHandlerRegistry ? RealtimeHandlerRegistry[N] extends {
|
|
30
|
-
inbound: infer I;
|
|
31
|
-
} ? I : unknown : unknown;
|
|
32
|
-
type OutboundFor<N extends string> = N extends keyof RealtimeHandlerRegistry ? RealtimeHandlerRegistry[N] extends {
|
|
33
|
-
outbound: infer O;
|
|
34
|
-
} ? O : unknown : unknown;
|
|
35
10
|
/**
|
|
36
11
|
* Client for a single named RealtimeHandler.
|
|
37
|
-
* Typed automatically when the handler is registered in {@link RealtimeHandlerRegistry}.
|
|
38
12
|
*/
|
|
39
|
-
export interface RealtimeHandlerClient
|
|
40
|
-
/**
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
13
|
+
export interface RealtimeHandlerClient {
|
|
14
|
+
/**
|
|
15
|
+
* Subscribe to messages from a specific RealtimeHandler instance.
|
|
16
|
+
*
|
|
17
|
+
* @param instanceId - The instance ID of the Durable Object.
|
|
18
|
+
* @param callback - Called with each parsed message payload.
|
|
19
|
+
* @returns A subscription handle with `send` and `close` methods.
|
|
20
|
+
*/
|
|
21
|
+
subscribe(instanceId: string, callback: (data: unknown) => void): Promise<RealtimeSubscription>;
|
|
22
|
+
/**
|
|
23
|
+
* Send a message to an existing active subscription.
|
|
24
|
+
*
|
|
25
|
+
* @param instanceId - The instance ID of the Durable Object.
|
|
26
|
+
* @param data - The data to send (will be JSON-serialized).
|
|
27
|
+
* @throws {Error} When no active subscription exists for this handler/instance pair.
|
|
28
|
+
*/
|
|
29
|
+
send(instanceId: string, data: unknown): void;
|
|
44
30
|
}
|
|
45
31
|
/**
|
|
46
32
|
* The realtime module provides access to Cloudflare Durable Object-backed
|
|
@@ -49,13 +35,10 @@ export interface RealtimeHandlerClient<N extends string = string> {
|
|
|
49
35
|
* Handler names are accessed as dynamic properties on this module:
|
|
50
36
|
* ```typescript
|
|
51
37
|
* const sub = await base44.realtime.MyHandler.subscribe("room-1", (msg) => {
|
|
52
|
-
* console.log(msg);
|
|
38
|
+
* console.log(msg);
|
|
53
39
|
* });
|
|
54
40
|
* sub.send({ text: "hello" });
|
|
55
41
|
* sub.close();
|
|
56
42
|
* ```
|
|
57
43
|
*/
|
|
58
|
-
export type RealtimeModule =
|
|
59
|
-
[K in AllHandlerNames]: K extends keyof RealtimeHandlerRegistry ? RealtimeHandlerClient<string & K> : RealtimeHandlerClient;
|
|
60
|
-
} & Record<string, RealtimeHandlerClient>;
|
|
61
|
-
export {};
|
|
44
|
+
export type RealtimeModule = Record<string, RealtimeHandlerClient>;
|