@thewhateverapp/platform 0.7.24 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/index.d.ts +2 -0
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +2 -0
- package/dist/client/index.js.map +1 -1
- package/dist/client/realtime/index.d.ts +138 -0
- package/dist/client/realtime/index.d.ts.map +1 -0
- package/dist/client/realtime/index.js +438 -0
- package/dist/client/realtime/index.js.map +1 -0
- package/dist/client/realtime/types.d.ts +143 -0
- package/dist/client/realtime/types.d.ts.map +1 -0
- package/dist/client/realtime/types.js +7 -0
- package/dist/client/realtime/types.js.map +1 -0
- package/dist/env.d.ts +1 -0
- package/dist/env.d.ts.map +1 -1
- package/dist/env.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/kv/providers/cloudflare-kv.d.ts +5 -0
- package/dist/kv/providers/cloudflare-kv.d.ts.map +1 -1
- package/dist/kv/providers/cloudflare-kv.js +7 -0
- package/dist/kv/providers/cloudflare-kv.js.map +1 -1
- package/dist/kv/types.d.ts +5 -0
- package/dist/kv/types.d.ts.map +1 -1
- package/dist/realtime/index.d.ts +77 -0
- package/dist/realtime/index.d.ts.map +1 -0
- package/dist/realtime/index.js +166 -0
- package/dist/realtime/index.js.map +1 -0
- package/dist/realtime/types.d.ts +178 -0
- package/dist/realtime/types.d.ts.map +1 -0
- package/dist/realtime/types.js +8 -0
- package/dist/realtime/types.js.map +1 -0
- package/package.json +7 -2
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Client-side Realtime Types
|
|
3
|
+
*
|
|
4
|
+
* Types for the useRealtime React hook and RealtimeClient class.
|
|
5
|
+
*/
|
|
6
|
+
import type { RealtimeMessage, RealtimeConnectionState } from '../../realtime/types';
|
|
7
|
+
export type { RealtimeMessage, RealtimeConnectionState };
|
|
8
|
+
/**
|
|
9
|
+
* Configuration for the realtime client
|
|
10
|
+
*/
|
|
11
|
+
export interface RealtimeClientConfig {
|
|
12
|
+
/**
|
|
13
|
+
* Base URL for WebSocket connection
|
|
14
|
+
* @default 'wss://realtime.thewhatever.app'
|
|
15
|
+
*/
|
|
16
|
+
baseUrl?: string;
|
|
17
|
+
/**
|
|
18
|
+
* App ID for channel isolation
|
|
19
|
+
*/
|
|
20
|
+
appId: string;
|
|
21
|
+
/**
|
|
22
|
+
* Initial channels to subscribe to
|
|
23
|
+
*/
|
|
24
|
+
channels?: string[];
|
|
25
|
+
/**
|
|
26
|
+
* Auto-reconnect on disconnect
|
|
27
|
+
* @default true
|
|
28
|
+
*/
|
|
29
|
+
autoReconnect?: boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Reconnect delay in milliseconds
|
|
32
|
+
* @default 1000
|
|
33
|
+
*/
|
|
34
|
+
reconnectDelay?: number;
|
|
35
|
+
/**
|
|
36
|
+
* Maximum reconnect attempts (0 = unlimited)
|
|
37
|
+
* @default 10
|
|
38
|
+
*/
|
|
39
|
+
maxReconnectAttempts?: number;
|
|
40
|
+
/**
|
|
41
|
+
* Ping interval in milliseconds (0 = disabled)
|
|
42
|
+
* @default 30000
|
|
43
|
+
*/
|
|
44
|
+
pingInterval?: number;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Options for the useRealtime hook
|
|
48
|
+
*/
|
|
49
|
+
export interface UseRealtimeOptions {
|
|
50
|
+
/**
|
|
51
|
+
* Base URL for WebSocket connection
|
|
52
|
+
* @default 'wss://realtime.thewhatever.app'
|
|
53
|
+
*/
|
|
54
|
+
baseUrl?: string;
|
|
55
|
+
/**
|
|
56
|
+
* Initial channels to subscribe to
|
|
57
|
+
*/
|
|
58
|
+
channels?: string[];
|
|
59
|
+
/**
|
|
60
|
+
* Auto-reconnect on disconnect
|
|
61
|
+
* @default true
|
|
62
|
+
*/
|
|
63
|
+
autoReconnect?: boolean;
|
|
64
|
+
/**
|
|
65
|
+
* Reconnect delay in milliseconds
|
|
66
|
+
* @default 1000
|
|
67
|
+
*/
|
|
68
|
+
reconnectDelay?: number;
|
|
69
|
+
/**
|
|
70
|
+
* Maximum reconnect attempts (0 = unlimited)
|
|
71
|
+
* @default 10
|
|
72
|
+
*/
|
|
73
|
+
maxReconnectAttempts?: number;
|
|
74
|
+
/**
|
|
75
|
+
* Callback when connected
|
|
76
|
+
*/
|
|
77
|
+
onConnect?: () => void;
|
|
78
|
+
/**
|
|
79
|
+
* Callback when disconnected
|
|
80
|
+
*/
|
|
81
|
+
onDisconnect?: () => void;
|
|
82
|
+
/**
|
|
83
|
+
* Callback when reconnecting
|
|
84
|
+
*/
|
|
85
|
+
onReconnecting?: (attempt: number) => void;
|
|
86
|
+
/**
|
|
87
|
+
* Callback on error
|
|
88
|
+
*/
|
|
89
|
+
onError?: (error: Error) => void;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Return type of the useRealtime hook
|
|
93
|
+
*/
|
|
94
|
+
export interface UseRealtimeReturn<T = unknown> {
|
|
95
|
+
/**
|
|
96
|
+
* Current connection state
|
|
97
|
+
*/
|
|
98
|
+
state: RealtimeConnectionState;
|
|
99
|
+
/**
|
|
100
|
+
* Whether connected
|
|
101
|
+
*/
|
|
102
|
+
isConnected: boolean;
|
|
103
|
+
/**
|
|
104
|
+
* Currently subscribed channels
|
|
105
|
+
*/
|
|
106
|
+
channels: string[];
|
|
107
|
+
/**
|
|
108
|
+
* Last received data (generic type)
|
|
109
|
+
*/
|
|
110
|
+
lastMessage: {
|
|
111
|
+
channel: string;
|
|
112
|
+
data: T;
|
|
113
|
+
} | null;
|
|
114
|
+
/**
|
|
115
|
+
* Subscribe to a channel
|
|
116
|
+
*/
|
|
117
|
+
subscribe: (channel: string) => void;
|
|
118
|
+
/**
|
|
119
|
+
* Unsubscribe from a channel
|
|
120
|
+
*/
|
|
121
|
+
unsubscribe: (channel: string) => void;
|
|
122
|
+
/**
|
|
123
|
+
* Publish data to a channel (client-to-server-to-all)
|
|
124
|
+
*/
|
|
125
|
+
publish: (channel: string, data: T) => void;
|
|
126
|
+
/**
|
|
127
|
+
* Manually reconnect
|
|
128
|
+
*/
|
|
129
|
+
reconnect: () => void;
|
|
130
|
+
/**
|
|
131
|
+
* Disconnect and cleanup
|
|
132
|
+
*/
|
|
133
|
+
disconnect: () => void;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Message handler callback type
|
|
137
|
+
*/
|
|
138
|
+
export type MessageHandler<T = unknown> = (data: T, channel: string) => void;
|
|
139
|
+
/**
|
|
140
|
+
* Connection state change handler
|
|
141
|
+
*/
|
|
142
|
+
export type StateChangeHandler = (state: RealtimeConnectionState) => void;
|
|
143
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/client/realtime/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAErF,YAAY,EAAE,eAAe,EAAE,uBAAuB,EAAE,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IAEpB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;OAGG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAE9B;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IAEpB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;OAGG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAE9B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IAEvB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAE1B;;OAEG;IACH,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAE3C;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB,CAAC,CAAC,GAAG,OAAO;IAC5C;;OAEG;IACH,KAAK,EAAE,uBAAuB,CAAC;IAE/B;;OAEG;IACH,WAAW,EAAE,OAAO,CAAC;IAErB;;OAEG;IACH,QAAQ,EAAE,MAAM,EAAE,CAAC;IAEnB;;OAEG;IACH,WAAW,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,CAAC,CAAA;KAAE,GAAG,IAAI,CAAC;IAEjD;;OAEG;IACH,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAErC;;OAEG;IACH,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAEvC;;OAEG;IACH,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;IAE5C;;OAEG;IACH,SAAS,EAAE,MAAM,IAAI,CAAC;IAEtB;;OAEG;IACH,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,GAAG,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;AAE7E;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,KAAK,EAAE,uBAAuB,KAAK,IAAI,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/client/realtime/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
package/dist/env.d.ts
CHANGED
package/dist/env.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,MAAM,WAAW,WAAW;IAC1B,EAAE,CAAC,EAAE,WAAW,CAAC;IACjB,EAAE,CAAC,EAAE,UAAU,CAAC;IAChB,OAAO,CAAC,EAAE,QAAQ,CAAC;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,KAAK,WAAW,GAAG,MAAM,WAAW,CAAC;AAIrC;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI,CAEhE;AAED;;;;GAIG;AACH,wBAAgB,cAAc,IAAI,WAAW,CAQ5C;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,OAAO,CAEjD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC"}
|
|
1
|
+
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,MAAM,WAAW,WAAW;IAC1B,EAAE,CAAC,EAAE,WAAW,CAAC;IACjB,EAAE,CAAC,EAAE,UAAU,CAAC;IAChB,OAAO,CAAC,EAAE,QAAQ,CAAC;IACnB,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAClC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,KAAK,WAAW,GAAG,MAAM,WAAW,CAAC;AAIrC;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI,CAEhE;AAED;;;;GAIG;AACH,wBAAgB,cAAc,IAAI,WAAW,CAQ5C;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,OAAO,CAEjD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC"}
|
package/dist/env.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAmBH,IAAI,WAAW,GAAuB,IAAI,CAAC;AAE3C;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAAqB;IACxD,WAAW,GAAG,QAAQ,CAAC;AACzB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc;IAC5B,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CACb,mCAAmC;YACjC,mGAAmG,CACtG,CAAC;IACJ,CAAC;IACD,OAAO,WAAW,EAAE,CAAC;AACvB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB;IACrC,OAAO,WAAW,KAAK,IAAI,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,WAAW,GAAG,IAAI,CAAC;AACrB,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -38,6 +38,8 @@ export { getAI, createAI } from './ai';
|
|
|
38
38
|
export type { AIServiceProvider, AIProvider, AICapability, AskOptions, PromptRequest, PromptResponse, ImageInput, } from './ai/types';
|
|
39
39
|
export { getTileState } from './tile-state';
|
|
40
40
|
export type { TileStateProvider, Comment, Report, } from './tile-state/types';
|
|
41
|
+
export { getRealtime, createRealtime, getRealtimeWebSocketUrl } from './realtime';
|
|
42
|
+
export type { RealtimeProvider, RealtimeEnv, RealtimeMessage, RealtimeMessageType, RealtimeStats, PublishOptions, PublishResult, RealtimeConnectionOptions, RealtimeConnectionState, RealtimeConnection, } from './realtime/types';
|
|
41
43
|
export { ProductionStorage } from './storage/production';
|
|
42
44
|
export { MockStorage } from './storage/mock';
|
|
43
45
|
export { ProductionDB } from './db/production';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAGH,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,uBAAuB,EACvB,gBAAgB,GACjB,MAAM,OAAO,CAAC;AACf,YAAY,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAGzC,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAG9D,mBAAmB,SAAS,CAAC;AAO7B,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACzD,YAAY,EACV,gBAAgB,EAChB,UAAU,EACV,KAAK,EACL,MAAM,EACN,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,YAAY,GACb,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AACvC,YAAY,EACV,UAAU,EACV,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,WAAW,EACX,OAAO,EACP,UAAU,GACX,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AACjD,YAAY,EACV,eAAe,EACf,aAAa,EACb,eAAe,EACf,WAAW,IAAI,kBAAkB,EACjC,UAAU,IAAI,iBAAiB,EAC/B,UAAU,IAAI,iBAAiB,EAC/B,SAAS,IAAI,gBAAgB,EAC7B,UAAU,IAAI,iBAAiB,GAChC,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AACvC,YAAY,EACV,iBAAiB,EACjB,UAAU,EACV,YAAY,EACZ,UAAU,EACV,aAAa,EACb,cAAc,EACd,UAAU,GACX,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,YAAY,EACV,iBAAiB,EACjB,OAAO,EACP,MAAM,GACP,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -41,6 +41,8 @@ export { getStorage, createStorage } from './r2';
|
|
|
41
41
|
export { getAI, createAI } from './ai';
|
|
42
42
|
// Tile State - Durable Objects for real-time state
|
|
43
43
|
export { getTileState } from './tile-state';
|
|
44
|
+
// Realtime - WebSocket pub/sub via Durable Objects
|
|
45
|
+
export { getRealtime, createRealtime, getRealtimeWebSocketUrl } from './realtime';
|
|
44
46
|
// =============================================================================
|
|
45
47
|
// Platform API Clients (for web apps, admin tools)
|
|
46
48
|
// =============================================================================
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,0EAA0E;AAC1E,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,uBAAuB,EACvB,gBAAgB,GACjB,MAAM,OAAO,CAAC;AAGf,eAAe;AACf,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAK9D,gFAAgF;AAChF,mEAAmE;AACnE,gFAAgF;AAEhF,mDAAmD;AACnD,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAazD,yCAAyC;AACzC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAWvC,gCAAgC;AAChC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AAYjD,6DAA6D;AAC7D,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAWvC,mDAAmD;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAO5C,gFAAgF;AAChF,mDAAmD;AACnD,gFAAgF;AAEhF,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,0EAA0E;AAC1E,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,uBAAuB,EACvB,gBAAgB,GACjB,MAAM,OAAO,CAAC;AAGf,eAAe;AACf,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAK9D,gFAAgF;AAChF,mEAAmE;AACnE,gFAAgF;AAEhF,mDAAmD;AACnD,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAazD,yCAAyC;AACzC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAWvC,gCAAgC;AAChC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AAYjD,6DAA6D;AAC7D,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAWvC,mDAAmD;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAO5C,mDAAmD;AACnD,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAclF,gFAAgF;AAChF,mDAAmD;AACnD,gFAAgF;AAEhF,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -12,6 +12,11 @@ export declare class CloudflareKV implements KVProvider {
|
|
|
12
12
|
constructor(kv: KVNamespace);
|
|
13
13
|
get<T = string>(key: string, type?: KVValueType): Promise<T | null>;
|
|
14
14
|
put(key: string, value: KVValue, options?: KVSetOptions): Promise<void>;
|
|
15
|
+
/**
|
|
16
|
+
* Alias for put() - undocumented, for backwards compatibility
|
|
17
|
+
* @internal
|
|
18
|
+
*/
|
|
19
|
+
set(key: string, value: KVValue, options?: KVSetOptions): Promise<void>;
|
|
15
20
|
delete(key: string): Promise<void>;
|
|
16
21
|
deleteMany(keys: string[]): Promise<void>;
|
|
17
22
|
has(key: string): Promise<boolean>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloudflare-kv.d.ts","sourceRoot":"","sources":["../../../src/kv/providers/cloudflare-kv.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,UAAU,EACV,OAAO,EACP,WAAW,EACX,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,UAAU,EACX,MAAM,UAAU,CAAC;AAElB;;GAEG;AACH,qBAAa,YAAa,YAAW,UAAU;IACjC,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,WAAW;IAE7B,GAAG,CAAC,CAAC,GAAG,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,WAAoB,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAmB3E,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"cloudflare-kv.d.ts","sourceRoot":"","sources":["../../../src/kv/providers/cloudflare-kv.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,UAAU,EACV,OAAO,EACP,WAAW,EACX,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,UAAU,EACX,MAAM,UAAU,CAAC;AAElB;;GAEG;AACH,qBAAa,YAAa,YAAW,UAAU;IACjC,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,WAAW;IAE7B,GAAG,CAAC,CAAC,GAAG,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,WAAoB,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAmB3E,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IA4B7E;;;OAGG;IACG,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvE,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAKzC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKlC,IAAI,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IA4BpD,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAY1D;;;OAGG;IACG,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,MAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAQjE;;;OAGG;IACG,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,MAAU,GAAG,OAAO,CAAC,MAAM,CAAC;CAGlE"}
|
|
@@ -51,6 +51,13 @@ export class CloudflareKV {
|
|
|
51
51
|
await this.kv.put(key, JSON.stringify(value), kvOptions);
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
|
+
/**
|
|
55
|
+
* Alias for put() - undocumented, for backwards compatibility
|
|
56
|
+
* @internal
|
|
57
|
+
*/
|
|
58
|
+
async set(key, value, options) {
|
|
59
|
+
return this.put(key, value, options);
|
|
60
|
+
}
|
|
54
61
|
async delete(key) {
|
|
55
62
|
await this.kv.delete(key);
|
|
56
63
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloudflare-kv.js","sourceRoot":"","sources":["../../../src/kv/providers/cloudflare-kv.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cloudflare-kv.js","sourceRoot":"","sources":["../../../src/kv/providers/cloudflare-kv.ts"],"names":[],"mappings":"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"}
|
package/dist/kv/types.d.ts
CHANGED
|
@@ -21,6 +21,11 @@ export interface KVProvider {
|
|
|
21
21
|
* @param options - Optional storage options (TTL, metadata)
|
|
22
22
|
*/
|
|
23
23
|
put(key: string, value: KVValue, options?: KVSetOptions): Promise<void>;
|
|
24
|
+
/**
|
|
25
|
+
* Alias for put() - undocumented, for backwards compatibility
|
|
26
|
+
* @internal
|
|
27
|
+
*/
|
|
28
|
+
set(key: string, value: KVValue, options?: KVSetOptions): Promise<void>;
|
|
24
29
|
/**
|
|
25
30
|
* Delete a value by key
|
|
26
31
|
* @param key - The key to delete
|
package/dist/kv/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/kv/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/kv/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Realtime WebSocket Pub/Sub API
|
|
3
|
+
*
|
|
4
|
+
* Provides real-time messaging capabilities for tiles using
|
|
5
|
+
* Cloudflare Durable Objects with WebSocket hibernation.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* import { getCloudflareContext } from '@opennextjs/cloudflare';
|
|
10
|
+
* import { configurePlatformEnv, getRealtime } from '@thewhateverapp/platform';
|
|
11
|
+
*
|
|
12
|
+
* export async function POST(req: NextRequest) {
|
|
13
|
+
* // Configure env once per request
|
|
14
|
+
* configurePlatformEnv(() => getCloudflareContext().env);
|
|
15
|
+
*
|
|
16
|
+
* const realtime = await getRealtime();
|
|
17
|
+
*
|
|
18
|
+
* // Publish to all subscribers
|
|
19
|
+
* await realtime.publish('counter', { count: newCount });
|
|
20
|
+
*
|
|
21
|
+
* return NextResponse.json({ success: true });
|
|
22
|
+
* }
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
import type { RealtimeProvider, RealtimeEnv } from './types';
|
|
26
|
+
export type * from './types';
|
|
27
|
+
/**
|
|
28
|
+
* Get a Realtime instance for the current request
|
|
29
|
+
*
|
|
30
|
+
* @param reqOrEnv - Optional: object with env property, or env object directly.
|
|
31
|
+
* If not provided, uses the env configured via configurePlatformEnv().
|
|
32
|
+
* @returns Realtime provider instance
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* ```typescript
|
|
36
|
+
* // Using configured env (recommended)
|
|
37
|
+
* configurePlatformEnv(() => getCloudflareContext().env);
|
|
38
|
+
* const realtime = await getRealtime();
|
|
39
|
+
*
|
|
40
|
+
* // Or pass env directly
|
|
41
|
+
* const realtime = await getRealtime({ env });
|
|
42
|
+
* const realtime = await getRealtime(env);
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
export declare function getRealtime(reqOrEnv?: {
|
|
46
|
+
env: RealtimeEnv;
|
|
47
|
+
} | RealtimeEnv): Promise<RealtimeProvider>;
|
|
48
|
+
/**
|
|
49
|
+
* Create a Realtime instance directly (for advanced usage)
|
|
50
|
+
*
|
|
51
|
+
* @param env - Environment with REALTIME binding
|
|
52
|
+
* @param appId - Optional app ID for isolation (defaults to env.APP_ID or 'default')
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* ```typescript
|
|
56
|
+
* const realtime = createRealtime({ REALTIME: env.REALTIME }, 'my-app-id');
|
|
57
|
+
* await realtime.publish('channel', { data: 'value' });
|
|
58
|
+
* ```
|
|
59
|
+
*/
|
|
60
|
+
export declare function createRealtime(env: RealtimeEnv, appId?: string): RealtimeProvider;
|
|
61
|
+
/**
|
|
62
|
+
* Get the WebSocket URL for connecting to realtime from the client
|
|
63
|
+
*
|
|
64
|
+
* This is typically used by the client SDK's useRealtime hook.
|
|
65
|
+
*
|
|
66
|
+
* @param appId - App ID for channel isolation
|
|
67
|
+
* @param channels - Optional initial channels to subscribe to
|
|
68
|
+
* @param baseUrl - Optional base URL (defaults to production)
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* ```typescript
|
|
72
|
+
* const wsUrl = getRealtimeWebSocketUrl('my-app', ['counter', 'chat']);
|
|
73
|
+
* // Returns: wss://realtime.thewhatever.app/ws?appId=my-app&channels=counter,chat
|
|
74
|
+
* ```
|
|
75
|
+
*/
|
|
76
|
+
export declare function getRealtimeWebSocketUrl(appId: string, channels?: string[], baseUrl?: string): string;
|
|
77
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/realtime/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAgD,MAAM,SAAS,CAAC;AAI3G,mBAAmB,SAAS,CAAC;AAoD7B;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,WAAW,CAC/B,QAAQ,CAAC,EAAE;IAAE,GAAG,EAAE,WAAW,CAAA;CAAE,GAAG,WAAW,GAC5C,OAAO,CAAC,gBAAgB,CAAC,CA0C3B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAUjF;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,MAAM,EAAE,EACnB,OAAO,SAAmC,GACzC,MAAM,CASR"}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Realtime WebSocket Pub/Sub API
|
|
3
|
+
*
|
|
4
|
+
* Provides real-time messaging capabilities for tiles using
|
|
5
|
+
* Cloudflare Durable Objects with WebSocket hibernation.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* import { getCloudflareContext } from '@opennextjs/cloudflare';
|
|
10
|
+
* import { configurePlatformEnv, getRealtime } from '@thewhateverapp/platform';
|
|
11
|
+
*
|
|
12
|
+
* export async function POST(req: NextRequest) {
|
|
13
|
+
* // Configure env once per request
|
|
14
|
+
* configurePlatformEnv(() => getCloudflareContext().env);
|
|
15
|
+
*
|
|
16
|
+
* const realtime = await getRealtime();
|
|
17
|
+
*
|
|
18
|
+
* // Publish to all subscribers
|
|
19
|
+
* await realtime.publish('counter', { count: newCount });
|
|
20
|
+
*
|
|
21
|
+
* return NextResponse.json({ success: true });
|
|
22
|
+
* }
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
import { getPlatformEnv, isPlatformEnvConfigured } from '../env';
|
|
26
|
+
/**
|
|
27
|
+
* Cloudflare Durable Object-backed Realtime Provider
|
|
28
|
+
*
|
|
29
|
+
* Communicates with the RealtimeChannel Durable Object via HTTP
|
|
30
|
+
* to publish messages to connected WebSocket clients.
|
|
31
|
+
*/
|
|
32
|
+
class CloudflareRealtime {
|
|
33
|
+
stub;
|
|
34
|
+
constructor(stub) {
|
|
35
|
+
this.stub = stub;
|
|
36
|
+
}
|
|
37
|
+
async publish(channel, data, _options) {
|
|
38
|
+
const response = await this.stub.fetch('http://internal/publish', {
|
|
39
|
+
method: 'POST',
|
|
40
|
+
headers: {
|
|
41
|
+
'Content-Type': 'application/json',
|
|
42
|
+
},
|
|
43
|
+
body: JSON.stringify({ channel, data }),
|
|
44
|
+
});
|
|
45
|
+
if (!response.ok) {
|
|
46
|
+
const error = await response.json().catch(() => ({ error: 'Unknown error' }));
|
|
47
|
+
throw new Error(`Failed to publish: ${error.error}`);
|
|
48
|
+
}
|
|
49
|
+
return (await response.json());
|
|
50
|
+
}
|
|
51
|
+
async getStats() {
|
|
52
|
+
const response = await this.stub.fetch('http://internal/stats');
|
|
53
|
+
if (!response.ok) {
|
|
54
|
+
throw new Error('Failed to get realtime stats');
|
|
55
|
+
}
|
|
56
|
+
return (await response.json());
|
|
57
|
+
}
|
|
58
|
+
async isHealthy() {
|
|
59
|
+
try {
|
|
60
|
+
const response = await this.stub.fetch('http://internal/health');
|
|
61
|
+
return response.ok;
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Get a Realtime instance for the current request
|
|
70
|
+
*
|
|
71
|
+
* @param reqOrEnv - Optional: object with env property, or env object directly.
|
|
72
|
+
* If not provided, uses the env configured via configurePlatformEnv().
|
|
73
|
+
* @returns Realtime provider instance
|
|
74
|
+
*
|
|
75
|
+
* @example
|
|
76
|
+
* ```typescript
|
|
77
|
+
* // Using configured env (recommended)
|
|
78
|
+
* configurePlatformEnv(() => getCloudflareContext().env);
|
|
79
|
+
* const realtime = await getRealtime();
|
|
80
|
+
*
|
|
81
|
+
* // Or pass env directly
|
|
82
|
+
* const realtime = await getRealtime({ env });
|
|
83
|
+
* const realtime = await getRealtime(env);
|
|
84
|
+
* ```
|
|
85
|
+
*/
|
|
86
|
+
export async function getRealtime(reqOrEnv) {
|
|
87
|
+
let env;
|
|
88
|
+
// If no argument provided, use the configured env provider
|
|
89
|
+
if (!reqOrEnv) {
|
|
90
|
+
if (!isPlatformEnvConfigured()) {
|
|
91
|
+
throw new Error('getRealtime() called without env and configurePlatformEnv() was not called. ' +
|
|
92
|
+
'Either pass env directly: getRealtime({ env }) or call configurePlatformEnv(() => getCloudflareContext().env) first.');
|
|
93
|
+
}
|
|
94
|
+
env = getPlatformEnv();
|
|
95
|
+
}
|
|
96
|
+
else if ('env' in reqOrEnv) {
|
|
97
|
+
env = reqOrEnv.env;
|
|
98
|
+
}
|
|
99
|
+
else if ('REALTIME' in reqOrEnv) {
|
|
100
|
+
// Direct env object
|
|
101
|
+
env = reqOrEnv;
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
env = reqOrEnv.env;
|
|
105
|
+
}
|
|
106
|
+
if (!env) {
|
|
107
|
+
throw new Error('No environment found. Ensure you are running in edge runtime.');
|
|
108
|
+
}
|
|
109
|
+
// Check for REALTIME Durable Object binding
|
|
110
|
+
if (!env.REALTIME) {
|
|
111
|
+
throw new Error('No REALTIME Durable Object binding found. ' +
|
|
112
|
+
'Add a service binding to the realtime-do worker in your wrangler.jsonc:\n' +
|
|
113
|
+
' "services": [{ "binding": "REALTIME", "service": "realtime-do", "entrypoint": "RealtimeChannel" }]');
|
|
114
|
+
}
|
|
115
|
+
// Get APP_ID for channel isolation (one DO per app)
|
|
116
|
+
const appId = env.APP_ID || 'default';
|
|
117
|
+
// Get Durable Object ID from app ID (deterministic)
|
|
118
|
+
const id = env.REALTIME.idFromName(appId);
|
|
119
|
+
const stub = env.REALTIME.get(id);
|
|
120
|
+
return new CloudflareRealtime(stub);
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Create a Realtime instance directly (for advanced usage)
|
|
124
|
+
*
|
|
125
|
+
* @param env - Environment with REALTIME binding
|
|
126
|
+
* @param appId - Optional app ID for isolation (defaults to env.APP_ID or 'default')
|
|
127
|
+
*
|
|
128
|
+
* @example
|
|
129
|
+
* ```typescript
|
|
130
|
+
* const realtime = createRealtime({ REALTIME: env.REALTIME }, 'my-app-id');
|
|
131
|
+
* await realtime.publish('channel', { data: 'value' });
|
|
132
|
+
* ```
|
|
133
|
+
*/
|
|
134
|
+
export function createRealtime(env, appId) {
|
|
135
|
+
if (!env.REALTIME) {
|
|
136
|
+
throw new Error('No REALTIME Durable Object binding found.');
|
|
137
|
+
}
|
|
138
|
+
const resolvedAppId = appId || env.APP_ID || 'default';
|
|
139
|
+
const id = env.REALTIME.idFromName(resolvedAppId);
|
|
140
|
+
const stub = env.REALTIME.get(id);
|
|
141
|
+
return new CloudflareRealtime(stub);
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Get the WebSocket URL for connecting to realtime from the client
|
|
145
|
+
*
|
|
146
|
+
* This is typically used by the client SDK's useRealtime hook.
|
|
147
|
+
*
|
|
148
|
+
* @param appId - App ID for channel isolation
|
|
149
|
+
* @param channels - Optional initial channels to subscribe to
|
|
150
|
+
* @param baseUrl - Optional base URL (defaults to production)
|
|
151
|
+
*
|
|
152
|
+
* @example
|
|
153
|
+
* ```typescript
|
|
154
|
+
* const wsUrl = getRealtimeWebSocketUrl('my-app', ['counter', 'chat']);
|
|
155
|
+
* // Returns: wss://realtime.thewhatever.app/ws?appId=my-app&channels=counter,chat
|
|
156
|
+
* ```
|
|
157
|
+
*/
|
|
158
|
+
export function getRealtimeWebSocketUrl(appId, channels, baseUrl = 'wss://realtime.thewhatever.app') {
|
|
159
|
+
const url = new URL('/ws', baseUrl);
|
|
160
|
+
url.searchParams.set('appId', appId);
|
|
161
|
+
if (channels && channels.length > 0) {
|
|
162
|
+
url.searchParams.set('channels', channels.join(','));
|
|
163
|
+
}
|
|
164
|
+
return url.toString();
|
|
165
|
+
}
|
|
166
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/realtime/index.ts"],"names":[],"mappings":"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"}
|