@voidhash/mimic 0.0.1 → 0.0.3
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/.turbo/turbo-build.log +257 -42
- package/dist/Document.cjs +152 -0
- package/dist/Document.d.cts +67 -0
- package/dist/Document.d.cts.map +1 -0
- package/dist/Document.d.mts +68 -0
- package/dist/Document.d.mts.map +1 -0
- package/dist/Document.mjs +147 -0
- package/dist/Document.mjs.map +1 -0
- package/dist/EffectSchema.cjs +180 -0
- package/dist/EffectSchema.d.cts +84 -0
- package/dist/EffectSchema.d.cts.map +1 -0
- package/dist/EffectSchema.d.mts +84 -0
- package/dist/EffectSchema.d.mts.map +1 -0
- package/dist/EffectSchema.mjs +176 -0
- package/dist/EffectSchema.mjs.map +1 -0
- package/dist/FractionalIndex.cjs +365 -0
- package/dist/FractionalIndex.mjs +364 -0
- package/dist/FractionalIndex.mjs.map +1 -0
- package/dist/Operation.cjs +53 -0
- package/dist/Operation.d.cts +39 -0
- package/dist/Operation.d.cts.map +1 -0
- package/dist/Operation.d.mts +39 -0
- package/dist/Operation.d.mts.map +1 -0
- package/dist/Operation.mjs +46 -0
- package/dist/Operation.mjs.map +1 -0
- package/dist/OperationDefinition.cjs +13 -0
- package/dist/OperationDefinition.d.cts +12 -0
- package/dist/OperationDefinition.d.cts.map +1 -0
- package/dist/OperationDefinition.d.mts +12 -0
- package/dist/OperationDefinition.d.mts.map +1 -0
- package/dist/OperationDefinition.mjs +13 -0
- package/dist/OperationDefinition.mjs.map +1 -0
- package/dist/OperationPath.cjs +148 -0
- package/dist/OperationPath.d.cts +60 -0
- package/dist/OperationPath.d.cts.map +1 -0
- package/dist/OperationPath.d.mts +60 -0
- package/dist/OperationPath.d.mts.map +1 -0
- package/dist/OperationPath.mjs +138 -0
- package/dist/OperationPath.mjs.map +1 -0
- package/dist/{Presence-gWrmGBeu.cjs → Presence.cjs} +4 -39
- package/dist/{Presence-N8u7Eppr.d.mts → Presence.d.cts} +2 -2
- package/dist/Presence.d.cts.map +1 -0
- package/dist/{Presence-DKKP4v5X.d.cts → Presence.d.mts} +2 -2
- package/dist/Presence.d.mts.map +1 -0
- package/dist/{Presence-DdMVKcOv.mjs → Presence.mjs} +3 -28
- package/dist/Presence.mjs.map +1 -0
- package/dist/Primitive.cjs +52 -0
- package/dist/Primitive.d.cts +20 -0
- package/dist/Primitive.d.cts.map +1 -0
- package/dist/Primitive.d.mts +20 -0
- package/dist/Primitive.d.mts.map +1 -0
- package/dist/Primitive.mjs +48 -0
- package/dist/Primitive.mjs.map +1 -0
- package/dist/ProxyEnvironment.cjs +34 -0
- package/dist/ProxyEnvironment.d.cts +31 -0
- package/dist/ProxyEnvironment.d.cts.map +1 -0
- package/dist/ProxyEnvironment.d.mts +31 -0
- package/dist/ProxyEnvironment.d.mts.map +1 -0
- package/dist/ProxyEnvironment.mjs +29 -0
- package/dist/ProxyEnvironment.mjs.map +1 -0
- package/dist/Transaction.cjs +66 -0
- package/dist/Transaction.d.cts +56 -0
- package/dist/Transaction.d.cts.map +1 -0
- package/dist/Transaction.d.mts +56 -0
- package/dist/Transaction.d.mts.map +1 -0
- package/dist/Transaction.mjs +58 -0
- package/dist/Transaction.mjs.map +1 -0
- package/dist/Transform.cjs +11 -0
- package/dist/Transform.d.cts +21 -0
- package/dist/Transform.d.cts.map +1 -0
- package/dist/Transform.d.mts +21 -0
- package/dist/Transform.d.mts.map +1 -0
- package/dist/Transform.mjs +6 -0
- package/dist/Transform.mjs.map +1 -0
- package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/defineProperty.cjs +14 -0
- package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/defineProperty.mjs +14 -0
- package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/objectSpread2.cjs +27 -0
- package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/objectSpread2.mjs +27 -0
- package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/toPrimitive.cjs +16 -0
- package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/toPrimitive.mjs +16 -0
- package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/toPropertyKey.cjs +11 -0
- package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/toPropertyKey.mjs +11 -0
- package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/typeof.cjs +18 -0
- package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/typeof.mjs +12 -0
- package/dist/_virtual/rolldown_runtime.cjs +43 -0
- package/dist/{chunk-CLMFDpHK.mjs → _virtual/rolldown_runtime.mjs} +1 -1
- package/dist/client/ClientDocument.cjs +590 -0
- package/dist/client/ClientDocument.d.cts +161 -0
- package/dist/client/ClientDocument.d.cts.map +1 -0
- package/dist/client/ClientDocument.d.mts +162 -0
- package/dist/client/ClientDocument.d.mts.map +1 -0
- package/dist/client/ClientDocument.mjs +586 -0
- package/dist/client/ClientDocument.mjs.map +1 -0
- package/dist/client/Rebase.cjs +204 -0
- package/dist/client/Rebase.d.cts +87 -0
- package/dist/client/Rebase.d.cts.map +1 -0
- package/dist/client/Rebase.d.mts +88 -0
- package/dist/client/Rebase.d.mts.map +1 -0
- package/dist/client/Rebase.mjs +198 -0
- package/dist/client/Rebase.mjs.map +1 -0
- package/dist/client/StateMonitor.cjs +133 -0
- package/dist/client/StateMonitor.d.cts +122 -0
- package/dist/client/StateMonitor.d.cts.map +1 -0
- package/dist/client/StateMonitor.d.mts +122 -0
- package/dist/client/StateMonitor.d.mts.map +1 -0
- package/dist/client/StateMonitor.mjs +129 -0
- package/dist/client/StateMonitor.mjs.map +1 -0
- package/dist/client/Transport.cjs +11 -0
- package/dist/client/Transport.d.cts +237 -0
- package/dist/client/Transport.d.cts.map +1 -0
- package/dist/client/Transport.d.mts +237 -0
- package/dist/client/Transport.d.mts.map +1 -0
- package/dist/client/Transport.mjs +6 -0
- package/dist/client/Transport.mjs.map +1 -0
- package/dist/client/WebSocketTransport.cjs +396 -0
- package/dist/client/WebSocketTransport.d.cts +29 -0
- package/dist/client/WebSocketTransport.d.cts.map +1 -0
- package/dist/client/WebSocketTransport.d.mts +29 -0
- package/dist/client/WebSocketTransport.d.mts.map +1 -0
- package/dist/client/WebSocketTransport.mjs +392 -0
- package/dist/client/WebSocketTransport.mjs.map +1 -0
- package/dist/client/errors.cjs +135 -0
- package/dist/client/errors.d.cts +87 -0
- package/dist/client/errors.d.cts.map +1 -0
- package/dist/client/errors.d.mts +87 -0
- package/dist/client/errors.d.mts.map +1 -0
- package/dist/client/errors.mjs +127 -0
- package/dist/client/errors.mjs.map +1 -0
- package/dist/client/index.cjs +22 -1424
- package/dist/client/index.d.cts +8 -692
- package/dist/client/index.d.mts +8 -692
- package/dist/client/index.mjs +9 -1413
- package/dist/index.cjs +30 -2529
- package/dist/index.d.cts +12 -143
- package/dist/index.d.mts +12 -143
- package/dist/index.mjs +13 -2526
- package/dist/primitives/Array.cjs +302 -0
- package/dist/primitives/Array.d.cts +95 -0
- package/dist/primitives/Array.d.cts.map +1 -0
- package/dist/primitives/Array.d.mts +95 -0
- package/dist/primitives/Array.d.mts.map +1 -0
- package/dist/primitives/Array.mjs +301 -0
- package/dist/primitives/Array.mjs.map +1 -0
- package/dist/primitives/Boolean.cjs +95 -0
- package/dist/primitives/Boolean.d.cts +44 -0
- package/dist/primitives/Boolean.d.cts.map +1 -0
- package/dist/primitives/Boolean.d.mts +44 -0
- package/dist/primitives/Boolean.d.mts.map +1 -0
- package/dist/primitives/Boolean.mjs +94 -0
- package/dist/primitives/Boolean.mjs.map +1 -0
- package/dist/primitives/Either.cjs +200 -0
- package/dist/primitives/Either.d.cts +113 -0
- package/dist/primitives/Either.d.cts.map +1 -0
- package/dist/primitives/Either.d.mts +113 -0
- package/dist/primitives/Either.d.mts.map +1 -0
- package/dist/primitives/Either.mjs +199 -0
- package/dist/primitives/Either.mjs.map +1 -0
- package/dist/primitives/Lazy.cjs +46 -0
- package/dist/primitives/Lazy.d.cts +46 -0
- package/dist/primitives/Lazy.d.cts.map +1 -0
- package/dist/primitives/Lazy.d.mts +46 -0
- package/dist/primitives/Lazy.d.mts.map +1 -0
- package/dist/primitives/Lazy.mjs +46 -0
- package/dist/primitives/Lazy.mjs.map +1 -0
- package/dist/primitives/Literal.cjs +91 -0
- package/dist/primitives/Literal.d.cts +46 -0
- package/dist/primitives/Literal.d.cts.map +1 -0
- package/dist/primitives/Literal.d.mts +46 -0
- package/dist/primitives/Literal.d.mts.map +1 -0
- package/dist/primitives/Literal.mjs +90 -0
- package/dist/primitives/Literal.mjs.map +1 -0
- package/dist/primitives/Number.cjs +115 -0
- package/dist/primitives/Number.d.cts +54 -0
- package/dist/primitives/Number.d.cts.map +1 -0
- package/dist/primitives/Number.d.mts +54 -0
- package/dist/primitives/Number.d.mts.map +1 -0
- package/dist/primitives/Number.mjs +114 -0
- package/dist/primitives/Number.mjs.map +1 -0
- package/dist/primitives/String.cjs +127 -0
- package/dist/primitives/String.d.cts +56 -0
- package/dist/primitives/String.d.cts.map +1 -0
- package/dist/primitives/String.d.mts +56 -0
- package/dist/primitives/String.d.mts.map +1 -0
- package/dist/primitives/String.mjs +126 -0
- package/dist/primitives/String.mjs.map +1 -0
- package/dist/primitives/Struct.cjs +207 -0
- package/dist/primitives/Struct.d.cts +96 -0
- package/dist/primitives/Struct.d.cts.map +1 -0
- package/dist/primitives/Struct.d.mts +97 -0
- package/dist/primitives/Struct.d.mts.map +1 -0
- package/dist/primitives/Struct.mjs +206 -0
- package/dist/primitives/Struct.mjs.map +1 -0
- package/dist/primitives/Tree.cjs +575 -0
- package/dist/primitives/Tree.d.cts +185 -0
- package/dist/primitives/Tree.d.cts.map +1 -0
- package/dist/primitives/Tree.d.mts +185 -0
- package/dist/primitives/Tree.d.mts.map +1 -0
- package/dist/primitives/Tree.mjs +574 -0
- package/dist/primitives/Tree.mjs.map +1 -0
- package/dist/primitives/TreeNode.cjs +73 -0
- package/dist/primitives/TreeNode.d.cts +92 -0
- package/dist/primitives/TreeNode.d.cts.map +1 -0
- package/dist/primitives/TreeNode.d.mts +93 -0
- package/dist/primitives/TreeNode.d.mts.map +1 -0
- package/dist/primitives/TreeNode.mjs +72 -0
- package/dist/primitives/TreeNode.mjs.map +1 -0
- package/dist/primitives/Union.cjs +170 -0
- package/dist/primitives/Union.d.cts +81 -0
- package/dist/primitives/Union.d.cts.map +1 -0
- package/dist/primitives/Union.d.mts +81 -0
- package/dist/primitives/Union.d.mts.map +1 -0
- package/dist/primitives/Union.mjs +169 -0
- package/dist/primitives/Union.mjs.map +1 -0
- package/dist/primitives/shared.cjs +60 -0
- package/dist/primitives/shared.d.cts +147 -0
- package/dist/primitives/shared.d.cts.map +1 -0
- package/dist/primitives/shared.d.mts +147 -0
- package/dist/primitives/shared.d.mts.map +1 -0
- package/dist/primitives/shared.mjs +58 -0
- package/dist/primitives/shared.mjs.map +1 -0
- package/dist/server/ServerDocument.cjs +110 -0
- package/dist/server/ServerDocument.d.cts +98 -0
- package/dist/server/ServerDocument.d.cts.map +1 -0
- package/dist/server/ServerDocument.d.mts +99 -0
- package/dist/server/ServerDocument.d.mts.map +1 -0
- package/dist/server/ServerDocument.mjs +106 -0
- package/dist/server/ServerDocument.mjs.map +1 -0
- package/dist/server/errors.cjs +85 -0
- package/dist/server/errors.d.cts +53 -0
- package/dist/server/errors.d.cts.map +1 -0
- package/dist/server/errors.d.mts +53 -0
- package/dist/server/errors.d.mts.map +1 -0
- package/dist/server/errors.mjs +81 -0
- package/dist/server/errors.mjs.map +1 -0
- package/dist/server/index.cjs +9 -185
- package/dist/server/index.d.cts +3 -148
- package/dist/server/index.d.mts +3 -148
- package/dist/server/index.mjs +3 -181
- package/dist/types/index.cjs +16 -0
- package/dist/types/index.d.cts +16 -0
- package/dist/types/index.d.cts.map +1 -0
- package/dist/types/index.d.mts +16 -0
- package/dist/types/index.d.mts.map +1 -0
- package/dist/types/index.mjs +12 -0
- package/dist/types/index.mjs.map +1 -0
- package/dist/utils/tree-helpers.cjs +443 -0
- package/dist/utils/tree-helpers.d.cts +280 -0
- package/dist/utils/tree-helpers.d.cts.map +1 -0
- package/dist/utils/tree-helpers.d.mts +280 -0
- package/dist/utils/tree-helpers.d.mts.map +1 -0
- package/dist/utils/tree-helpers.mjs +439 -0
- package/dist/utils/tree-helpers.mjs.map +1 -0
- package/package.json +2 -2
- package/src/index.ts +2 -0
- package/src/primitives/shared.ts +7 -1
- package/src/types/index.ts +137 -0
- package/src/utils/index.ts +7 -0
- package/src/utils/tree-helpers.ts +648 -0
- package/tsdown.config.ts +1 -1
- package/dist/Document-ChuFrTk1.cjs +0 -571
- package/dist/Document-CwiAFTIq.mjs +0 -438
- package/dist/Document-CwiAFTIq.mjs.map +0 -1
- package/dist/Presence-DKKP4v5X.d.cts.map +0 -1
- package/dist/Presence-DdMVKcOv.mjs.map +0 -1
- package/dist/Presence-N8u7Eppr.d.mts.map +0 -1
- package/dist/Primitive-CvFVxR8_.d.cts +0 -1175
- package/dist/Primitive-CvFVxR8_.d.cts.map +0 -1
- package/dist/Primitive-lEhQyGVL.d.mts +0 -1175
- package/dist/Primitive-lEhQyGVL.d.mts.map +0 -1
- package/dist/client/index.d.cts.map +0 -1
- package/dist/client/index.d.mts.map +0 -1
- package/dist/client/index.mjs.map +0 -1
- package/dist/index.d.cts.map +0 -1
- package/dist/index.d.mts.map +0 -1
- package/dist/index.mjs.map +0 -1
- package/dist/server/index.d.cts.map +0 -1
- package/dist/server/index.d.mts.map +0 -1
- package/dist/server/index.mjs.map +0 -1
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
import { AnyPresence, Infer, PresenceEntry } from "../Presence.cjs";
|
|
2
|
+
import { Transaction } from "../Transaction.cjs";
|
|
3
|
+
import { AnyPrimitive, InferProxy, InferState } from "../primitives/shared.cjs";
|
|
4
|
+
import { Transport } from "./Transport.cjs";
|
|
5
|
+
|
|
6
|
+
//#region src/client/ClientDocument.d.ts
|
|
7
|
+
declare namespace ClientDocument_d_exports {
|
|
8
|
+
export { ClientDocument, ClientDocumentListener, ClientDocumentOptions, ClientPresence, PresenceListener, make };
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Listener for presence changes.
|
|
12
|
+
*/
|
|
13
|
+
interface PresenceListener<_TData> {
|
|
14
|
+
/** Called when any presence changes (self or others) */
|
|
15
|
+
readonly onPresenceChange?: () => void;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Presence API exposed on the ClientDocument.
|
|
19
|
+
*/
|
|
20
|
+
interface ClientPresence<TData> {
|
|
21
|
+
/**
|
|
22
|
+
* Returns this client's connection ID (set after receiving presence_snapshot).
|
|
23
|
+
* Returns undefined before the snapshot is received.
|
|
24
|
+
*/
|
|
25
|
+
readonly selfId: () => string | undefined;
|
|
26
|
+
/**
|
|
27
|
+
* Returns this client's current presence data.
|
|
28
|
+
* Returns undefined if not set.
|
|
29
|
+
*/
|
|
30
|
+
readonly self: () => TData | undefined;
|
|
31
|
+
/**
|
|
32
|
+
* Returns a map of other clients' presence data.
|
|
33
|
+
* Keys are connection IDs.
|
|
34
|
+
*/
|
|
35
|
+
readonly others: () => ReadonlyMap<string, PresenceEntry<TData>>;
|
|
36
|
+
/**
|
|
37
|
+
* Returns all presence entries including self.
|
|
38
|
+
*/
|
|
39
|
+
readonly all: () => ReadonlyMap<string, PresenceEntry<TData>>;
|
|
40
|
+
/**
|
|
41
|
+
* Sets this client's presence data.
|
|
42
|
+
* Validates against the presence schema before sending.
|
|
43
|
+
* @throws ParseError if validation fails
|
|
44
|
+
*/
|
|
45
|
+
readonly set: (data: TData) => void;
|
|
46
|
+
/**
|
|
47
|
+
* Clears this client's presence data.
|
|
48
|
+
*/
|
|
49
|
+
readonly clear: () => void;
|
|
50
|
+
/**
|
|
51
|
+
* Subscribes to presence changes.
|
|
52
|
+
* @returns Unsubscribe function
|
|
53
|
+
*/
|
|
54
|
+
readonly subscribe: (listener: PresenceListener<TData>) => () => void;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Options for creating a ClientDocument.
|
|
58
|
+
*/
|
|
59
|
+
interface ClientDocumentOptions<TSchema extends AnyPrimitive, TPresence extends AnyPresence | undefined = undefined> {
|
|
60
|
+
/** The schema defining the document structure */
|
|
61
|
+
readonly schema: TSchema;
|
|
62
|
+
/** Transport for server communication */
|
|
63
|
+
readonly transport: Transport;
|
|
64
|
+
/** Initial state (optional, will sync from server if not provided) */
|
|
65
|
+
readonly initialState?: InferState<TSchema>;
|
|
66
|
+
/** Initial server version (optional) */
|
|
67
|
+
readonly initialVersion?: number;
|
|
68
|
+
/** Called when server rejects a transaction */
|
|
69
|
+
readonly onRejection?: (transaction: Transaction, reason: string) => void;
|
|
70
|
+
/** Called when optimistic state changes */
|
|
71
|
+
readonly onStateChange?: (state: InferState<TSchema> | undefined) => void;
|
|
72
|
+
/** Called when connection status changes */
|
|
73
|
+
readonly onConnectionChange?: (connected: boolean) => void;
|
|
74
|
+
/** Called when client is fully initialized and ready */
|
|
75
|
+
readonly onReady?: () => void;
|
|
76
|
+
/** Timeout in ms for pending transactions (default: 30000) */
|
|
77
|
+
readonly transactionTimeout?: number;
|
|
78
|
+
/** Timeout in ms for initialization (default: 10000) */
|
|
79
|
+
readonly initTimeout?: number;
|
|
80
|
+
/** Enable debug logging for all activity (default: false) */
|
|
81
|
+
readonly debug?: boolean;
|
|
82
|
+
/**
|
|
83
|
+
* Optional presence schema for ephemeral per-user data.
|
|
84
|
+
* When provided, enables the presence API on the ClientDocument.
|
|
85
|
+
*/
|
|
86
|
+
readonly presence?: TPresence;
|
|
87
|
+
/** Initial presence data, that will be set on the ClientDocument when it is created */
|
|
88
|
+
readonly initialPresence?: TPresence extends AnyPresence ? Infer<TPresence> : undefined;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Listener callbacks for subscribing to ClientDocument events.
|
|
92
|
+
*/
|
|
93
|
+
interface ClientDocumentListener<TSchema extends AnyPrimitive> {
|
|
94
|
+
/** Called when optimistic state changes */
|
|
95
|
+
readonly onStateChange?: (state: InferState<TSchema> | undefined) => void;
|
|
96
|
+
/** Called when connection status changes */
|
|
97
|
+
readonly onConnectionChange?: (connected: boolean) => void;
|
|
98
|
+
/** Called when client is fully initialized and ready */
|
|
99
|
+
readonly onReady?: () => void;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* A ClientDocument provides optimistic updates with server synchronization.
|
|
103
|
+
*/
|
|
104
|
+
interface ClientDocument<TSchema extends AnyPrimitive, TPresence extends AnyPresence | undefined = undefined> {
|
|
105
|
+
/** The schema defining this document's structure */
|
|
106
|
+
readonly schema: TSchema;
|
|
107
|
+
/** Root proxy for accessing and modifying document data (optimistic) */
|
|
108
|
+
readonly root: InferProxy<TSchema>;
|
|
109
|
+
/** Returns the current optimistic state (server + pending) */
|
|
110
|
+
get(): InferState<TSchema> | undefined;
|
|
111
|
+
/** Returns the confirmed server state */
|
|
112
|
+
getServerState(): InferState<TSchema> | undefined;
|
|
113
|
+
/** Returns the current server version */
|
|
114
|
+
getServerVersion(): number;
|
|
115
|
+
/** Returns pending transactions count */
|
|
116
|
+
getPendingCount(): number;
|
|
117
|
+
/** Returns whether there are pending transactions */
|
|
118
|
+
hasPendingChanges(): boolean;
|
|
119
|
+
/**
|
|
120
|
+
* Runs a function within a transaction.
|
|
121
|
+
* Changes are applied optimistically and sent to the server.
|
|
122
|
+
*/
|
|
123
|
+
transaction<R>(fn: (root: InferProxy<TSchema>) => R): R;
|
|
124
|
+
/**
|
|
125
|
+
* Connects to the server and starts syncing.
|
|
126
|
+
*/
|
|
127
|
+
connect(): Promise<void>;
|
|
128
|
+
/**
|
|
129
|
+
* Disconnects from the server.
|
|
130
|
+
*/
|
|
131
|
+
disconnect(): void;
|
|
132
|
+
/**
|
|
133
|
+
* Returns whether currently connected to the server.
|
|
134
|
+
*/
|
|
135
|
+
isConnected(): boolean;
|
|
136
|
+
/**
|
|
137
|
+
* Forces a full resync from the server.
|
|
138
|
+
*/
|
|
139
|
+
resync(): void;
|
|
140
|
+
/**
|
|
141
|
+
* Returns whether the client is fully initialized and ready.
|
|
142
|
+
*/
|
|
143
|
+
isReady(): boolean;
|
|
144
|
+
/**
|
|
145
|
+
* Subscribes to document events (state changes, connection changes, ready).
|
|
146
|
+
* @returns Unsubscribe function
|
|
147
|
+
*/
|
|
148
|
+
subscribe(listener: ClientDocumentListener<TSchema>): () => void;
|
|
149
|
+
/**
|
|
150
|
+
* Presence API for ephemeral per-user data.
|
|
151
|
+
* Only available when presence schema is provided in options.
|
|
152
|
+
*/
|
|
153
|
+
readonly presence: TPresence extends AnyPresence ? ClientPresence<Infer<TPresence>> : undefined;
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Creates a new ClientDocument for the given schema.
|
|
157
|
+
*/
|
|
158
|
+
declare const make: <TSchema extends AnyPrimitive, TPresence extends AnyPresence | undefined = undefined>(options: ClientDocumentOptions<TSchema, TPresence>) => ClientDocument<TSchema, TPresence>;
|
|
159
|
+
//#endregion
|
|
160
|
+
export { ClientDocument_d_exports };
|
|
161
|
+
//# sourceMappingURL=ClientDocument.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClientDocument.d.cts","names":[],"sources":["../../src/client/ClientDocument.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;UA6CiB;;;;;;;UAQA;EARA;AAQjB;;;EAiB6C,SAAA,MAAA,EAAA,GAAA,GAAA,MAAA,GAAA,SAAA;EAApB;;;;EAYF,SAAA,IAAA,EAAA,GAAA,GAlBA,KAkBA,GAAA,SAAA;EAW2B;;;AAMlD;EACkB,SAAA,MAAA,EAAA,GAAA,GA9BO,WA8BP,CAAA,MAAA,EA9B2B,aA8B3B,CA9BkD,KA8BlD,CAAA,CAAA;EACE;;;EAO2B,SAAA,GAAA,EAAA,GAAA,GAjCzB,WAiCyB,CAAA,MAAA,EAjCL,aAiCK,CAjCkB,KAiClB,CAAA,CAAA;EAArB;;;;;EA0BG,SAAA,GAAA,EAAA,CAAA,IAAA,EApDN,KAoDM,EAAA,GAAA,IAAA;EAAkB;;;EAAqC,SAAA,KAAA,EAAA,GAAA,GAAA,IAAA;EAMnE;;;;EAEsC,SAAA,SAAA,EAAA,CAAA,QAAA,EAjDtB,gBAiDsB,CAjDL,KAiDK,CAAA,EAAA,GAAA,GAAA,GAAA,IAAA;AAUvD;;;;AAQsC,UA7DrB,qBA6DqB,CAAA,gBA5DpB,YA4DoB,EAAA,kBA3DlB,WA2DkB,GAAA,SAAA,GAAA,SAAA,CAAA,CAAA;EAArB;EAGa,SAAA,MAAA,EA3DX,OA2DW;EAArB;EAGgC,SAAA,SAAA,EA5DnB,SA4DmB;EAArB;EAe6B,SAAA,YAAA,CAAA,EAzEvB,UAyEuB,CAzEF,OAyEE,CAAA;EAArB;EAAkC,SAAA,cAAA,CAAA,EAAA,MAAA;EAAI;EAKrD,SAAA,WAAA,CAAA,EAAA,CAAA,WAAA,EAzEI,WAyEJ,EAAA,MAAA,EAAA,MAAA,EAAA,GAAA,IAAA;EA0BgC;EAAvB,SAAA,aAAA,CAAA,EAAA,CAAA,KAAA,EA/Fa,UA+Fb,CA/FkC,OA+FlC,CAAA,GAAA,SAAA,EAAA,GAAA,IAAA;EAMD;EAAkB,SAAA,kBAAA,CAAA,EAAA,CAAA,SAAA,EAAA,OAAA,EAAA,GAAA,IAAA;EACH;EAAf,SAAA,OAAA,CAAA,EAAA,GAAA,GAAA,IAAA;EAAf;EAAc,SAAA,kBAAA,CAAA,EAAA,MAAA;EAWP;EACK,SAAA,WAAA,CAAA,EAAA,MAAA;EACE;EAEa,SAAA,KAAA,CAAA,EAAA,OAAA;EAAS;;;;EACvC,SAAA,QAAA,CAAA,EAvGmB,SAuGnB;EAAc;6BArGY,kBAAkB,cAAuB,MAAe;;;;;UAMpE,uCAAuC;;mCAErB,WAAqB;;;;;;;;;UAUvC,+BACC,gCACE;;mBAGD;;iBAGF,WAAqB;;SAG7B,WAAqB;;oBAGV,WAAqB;;;;;;;;;;;4BAeb,WAAqB,aAAa,IAAI;;;;aAKrD;;;;;;;;;;;;;;;;;;;;;sBA0BS,uBAAuB;;;;;qBAMxB,kBAAkB,cACjC,eAAe,MAAe;;;;;cAWvB,uBACK,gCACE,8CAET,sBAAsB,SAAS,eACvC,eAAe,SAAS"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import { AnyPresence, Infer, PresenceEntry } from "../Presence.mjs";
|
|
2
|
+
import { Transaction } from "../Transaction.mjs";
|
|
3
|
+
import { AnyPrimitive, InferProxy, InferState } from "../primitives/shared.mjs";
|
|
4
|
+
import "../Primitive.mjs";
|
|
5
|
+
import { Transport } from "./Transport.mjs";
|
|
6
|
+
|
|
7
|
+
//#region src/client/ClientDocument.d.ts
|
|
8
|
+
declare namespace ClientDocument_d_exports {
|
|
9
|
+
export { ClientDocument, ClientDocumentListener, ClientDocumentOptions, ClientPresence, PresenceListener, make };
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Listener for presence changes.
|
|
13
|
+
*/
|
|
14
|
+
interface PresenceListener<_TData> {
|
|
15
|
+
/** Called when any presence changes (self or others) */
|
|
16
|
+
readonly onPresenceChange?: () => void;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Presence API exposed on the ClientDocument.
|
|
20
|
+
*/
|
|
21
|
+
interface ClientPresence<TData> {
|
|
22
|
+
/**
|
|
23
|
+
* Returns this client's connection ID (set after receiving presence_snapshot).
|
|
24
|
+
* Returns undefined before the snapshot is received.
|
|
25
|
+
*/
|
|
26
|
+
readonly selfId: () => string | undefined;
|
|
27
|
+
/**
|
|
28
|
+
* Returns this client's current presence data.
|
|
29
|
+
* Returns undefined if not set.
|
|
30
|
+
*/
|
|
31
|
+
readonly self: () => TData | undefined;
|
|
32
|
+
/**
|
|
33
|
+
* Returns a map of other clients' presence data.
|
|
34
|
+
* Keys are connection IDs.
|
|
35
|
+
*/
|
|
36
|
+
readonly others: () => ReadonlyMap<string, PresenceEntry<TData>>;
|
|
37
|
+
/**
|
|
38
|
+
* Returns all presence entries including self.
|
|
39
|
+
*/
|
|
40
|
+
readonly all: () => ReadonlyMap<string, PresenceEntry<TData>>;
|
|
41
|
+
/**
|
|
42
|
+
* Sets this client's presence data.
|
|
43
|
+
* Validates against the presence schema before sending.
|
|
44
|
+
* @throws ParseError if validation fails
|
|
45
|
+
*/
|
|
46
|
+
readonly set: (data: TData) => void;
|
|
47
|
+
/**
|
|
48
|
+
* Clears this client's presence data.
|
|
49
|
+
*/
|
|
50
|
+
readonly clear: () => void;
|
|
51
|
+
/**
|
|
52
|
+
* Subscribes to presence changes.
|
|
53
|
+
* @returns Unsubscribe function
|
|
54
|
+
*/
|
|
55
|
+
readonly subscribe: (listener: PresenceListener<TData>) => () => void;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Options for creating a ClientDocument.
|
|
59
|
+
*/
|
|
60
|
+
interface ClientDocumentOptions<TSchema extends AnyPrimitive, TPresence extends AnyPresence | undefined = undefined> {
|
|
61
|
+
/** The schema defining the document structure */
|
|
62
|
+
readonly schema: TSchema;
|
|
63
|
+
/** Transport for server communication */
|
|
64
|
+
readonly transport: Transport;
|
|
65
|
+
/** Initial state (optional, will sync from server if not provided) */
|
|
66
|
+
readonly initialState?: InferState<TSchema>;
|
|
67
|
+
/** Initial server version (optional) */
|
|
68
|
+
readonly initialVersion?: number;
|
|
69
|
+
/** Called when server rejects a transaction */
|
|
70
|
+
readonly onRejection?: (transaction: Transaction, reason: string) => void;
|
|
71
|
+
/** Called when optimistic state changes */
|
|
72
|
+
readonly onStateChange?: (state: InferState<TSchema> | undefined) => void;
|
|
73
|
+
/** Called when connection status changes */
|
|
74
|
+
readonly onConnectionChange?: (connected: boolean) => void;
|
|
75
|
+
/** Called when client is fully initialized and ready */
|
|
76
|
+
readonly onReady?: () => void;
|
|
77
|
+
/** Timeout in ms for pending transactions (default: 30000) */
|
|
78
|
+
readonly transactionTimeout?: number;
|
|
79
|
+
/** Timeout in ms for initialization (default: 10000) */
|
|
80
|
+
readonly initTimeout?: number;
|
|
81
|
+
/** Enable debug logging for all activity (default: false) */
|
|
82
|
+
readonly debug?: boolean;
|
|
83
|
+
/**
|
|
84
|
+
* Optional presence schema for ephemeral per-user data.
|
|
85
|
+
* When provided, enables the presence API on the ClientDocument.
|
|
86
|
+
*/
|
|
87
|
+
readonly presence?: TPresence;
|
|
88
|
+
/** Initial presence data, that will be set on the ClientDocument when it is created */
|
|
89
|
+
readonly initialPresence?: TPresence extends AnyPresence ? Infer<TPresence> : undefined;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Listener callbacks for subscribing to ClientDocument events.
|
|
93
|
+
*/
|
|
94
|
+
interface ClientDocumentListener<TSchema extends AnyPrimitive> {
|
|
95
|
+
/** Called when optimistic state changes */
|
|
96
|
+
readonly onStateChange?: (state: InferState<TSchema> | undefined) => void;
|
|
97
|
+
/** Called when connection status changes */
|
|
98
|
+
readonly onConnectionChange?: (connected: boolean) => void;
|
|
99
|
+
/** Called when client is fully initialized and ready */
|
|
100
|
+
readonly onReady?: () => void;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* A ClientDocument provides optimistic updates with server synchronization.
|
|
104
|
+
*/
|
|
105
|
+
interface ClientDocument<TSchema extends AnyPrimitive, TPresence extends AnyPresence | undefined = undefined> {
|
|
106
|
+
/** The schema defining this document's structure */
|
|
107
|
+
readonly schema: TSchema;
|
|
108
|
+
/** Root proxy for accessing and modifying document data (optimistic) */
|
|
109
|
+
readonly root: InferProxy<TSchema>;
|
|
110
|
+
/** Returns the current optimistic state (server + pending) */
|
|
111
|
+
get(): InferState<TSchema> | undefined;
|
|
112
|
+
/** Returns the confirmed server state */
|
|
113
|
+
getServerState(): InferState<TSchema> | undefined;
|
|
114
|
+
/** Returns the current server version */
|
|
115
|
+
getServerVersion(): number;
|
|
116
|
+
/** Returns pending transactions count */
|
|
117
|
+
getPendingCount(): number;
|
|
118
|
+
/** Returns whether there are pending transactions */
|
|
119
|
+
hasPendingChanges(): boolean;
|
|
120
|
+
/**
|
|
121
|
+
* Runs a function within a transaction.
|
|
122
|
+
* Changes are applied optimistically and sent to the server.
|
|
123
|
+
*/
|
|
124
|
+
transaction<R>(fn: (root: InferProxy<TSchema>) => R): R;
|
|
125
|
+
/**
|
|
126
|
+
* Connects to the server and starts syncing.
|
|
127
|
+
*/
|
|
128
|
+
connect(): Promise<void>;
|
|
129
|
+
/**
|
|
130
|
+
* Disconnects from the server.
|
|
131
|
+
*/
|
|
132
|
+
disconnect(): void;
|
|
133
|
+
/**
|
|
134
|
+
* Returns whether currently connected to the server.
|
|
135
|
+
*/
|
|
136
|
+
isConnected(): boolean;
|
|
137
|
+
/**
|
|
138
|
+
* Forces a full resync from the server.
|
|
139
|
+
*/
|
|
140
|
+
resync(): void;
|
|
141
|
+
/**
|
|
142
|
+
* Returns whether the client is fully initialized and ready.
|
|
143
|
+
*/
|
|
144
|
+
isReady(): boolean;
|
|
145
|
+
/**
|
|
146
|
+
* Subscribes to document events (state changes, connection changes, ready).
|
|
147
|
+
* @returns Unsubscribe function
|
|
148
|
+
*/
|
|
149
|
+
subscribe(listener: ClientDocumentListener<TSchema>): () => void;
|
|
150
|
+
/**
|
|
151
|
+
* Presence API for ephemeral per-user data.
|
|
152
|
+
* Only available when presence schema is provided in options.
|
|
153
|
+
*/
|
|
154
|
+
readonly presence: TPresence extends AnyPresence ? ClientPresence<Infer<TPresence>> : undefined;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Creates a new ClientDocument for the given schema.
|
|
158
|
+
*/
|
|
159
|
+
declare const make: <TSchema extends AnyPrimitive, TPresence extends AnyPresence | undefined = undefined>(options: ClientDocumentOptions<TSchema, TPresence>) => ClientDocument<TSchema, TPresence>;
|
|
160
|
+
//#endregion
|
|
161
|
+
export { ClientDocument_d_exports };
|
|
162
|
+
//# sourceMappingURL=ClientDocument.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClientDocument.d.mts","names":[],"sources":["../../src/client/ClientDocument.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;;UA6CiB;;;;;;;UAQA;;AARjB;AAQA;;EAiBoE,SAAA,MAAA,EAAA,GAAA,GAAA,MAAA,GAAA,SAAA;EAAvB;;;;EAKvB,SAAA,IAAA,EAAA,GAAA,GAXC,KAWD,GAAA,SAAA;EAOC;;;;EAiBN,SAAA,MAAA,EAAA,GAAA,GA7BQ,WA6Ba,CAAA,MAAA,EA7BO,aA6BP,CA7B8B,KA6B9B,CAAA,CAAA;EACpB;;;EAMI,SAAA,GAAA,EAAA,GAAA,GA/BA,WA+BA,CAAA,MAAA,EA/BoB,aA+BpB,CA/B2C,KA+B3C,CAAA,CAAA;EAEyB;;;;;EAwBzB,SAAA,GAAA,EAAA,CAAA,IAAA,EAlDC,KAkDD,EAAA,GAAA,IAAA;EAEO;;;EAAyC,SAAA,KAAA,EAAA,GAAA,GAAA,IAAA;EAAc;AAMpF;;;EAEmC,SAAA,SAAA,EAAA,CAAA,QAAA,EAjDF,gBAiDE,CAjDe,KAiDf,CAAA,EAAA,GAAA,GAAA,GAAA,IAAA;;AAUnC;;;AAKmB,UA1DF,qBA0DE,CAAA,gBAzDD,YAyDC,EAAA,kBAxDC,WAwDD,GAAA,SAAA,GAAA,SAAA,CAAA,CAAA;EAGmB;EAArB,SAAA,MAAA,EAxDE,OAwDF;EAGa;EAArB,SAAA,SAAA,EAzDa,SAyDb;EAGgC;EAArB,SAAA,YAAA,CAAA,EA1DM,UA0DN,CA1D2B,OA0D3B,CAAA;EAe6B;EAArB,SAAA,cAAA,CAAA,EAAA,MAAA;EAAkC;EAAI,SAAA,WAAA,CAAA,EAAA,CAAA,WAAA,EApEjD,WAoEiD,EAAA,MAAA,EAAA,MAAA,EAAA,GAAA,IAAA;EAKrD;EA0BgC,SAAA,aAAA,CAAA,EAAA,CAAA,KAAA,EA/FV,UA+FU,CA/FW,OA+FX,CAAA,GAAA,SAAA,EAAA,GAAA,IAAA;EAAvB;EAMD,SAAA,kBAAA,CAAA,EAAA,CAAA,SAAA,EAAA,OAAA,EAAA,GAAA,IAAA;EAAkB;EACH,SAAA,OAAA,CAAA,EAAA,GAAA,GAAA,IAAA;EAAf;EAAf,SAAA,kBAAA,CAAA,EAAA,MAAA;EAAc;EAWP,SAo6BZ,WAAA,CAAA,EAAA,MAAA;EAn6BiB;EACE,SAAA,KAAA,CAAA,EAAA,OAAA;EAEa;;;;EACN,SAAA,QAAA,CAAA,EAvGL,SAuGK;EAAxB;EAAc,SAAA,eAAA,CAAA,EArGY,SAqGZ,SArG8B,WAqG9B,GArGqD,KAqGrD,CArGoE,SAqGpE,CAAA,GAAA,SAAA;;;;;UA/FA,uCAAuC;;mCAErB,WAAqB;;;;;;;;;UAUvC,+BACC,gCACE;;mBAGD;;iBAGF,WAAqB;;SAG7B,WAAqB;;oBAGV,WAAqB;;;;;;;;;;;4BAeb,WAAqB,aAAa,IAAI;;;;aAKrD;;;;;;;;;;;;;;;;;;;;;sBA0BS,uBAAuB;;;;;qBAMxB,kBAAkB,cACjC,eAAe,MAAe;;;;;cAWvB,uBACK,gCACE,8CAET,sBAAsB,SAAS,eACvC,eAAe,SAAS"}
|