@fluidframework/presence 2.81.0-374083 → 2.81.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/broadcastControls.d.ts +1 -33
- package/dist/broadcastControls.d.ts.map +1 -1
- package/dist/broadcastControls.js.map +1 -1
- package/dist/broadcastControlsTypes.d.ts +38 -0
- package/dist/broadcastControlsTypes.d.ts.map +1 -0
- package/dist/broadcastControlsTypes.js +7 -0
- package/dist/broadcastControlsTypes.js.map +1 -0
- package/dist/exposedInternalTypes.d.ts +3 -3
- package/dist/exposedInternalTypes.d.ts.map +1 -1
- package/dist/exposedInternalTypes.js.map +1 -1
- package/dist/exposedUtilityTypes.d.ts +2 -2
- package/dist/exposedUtilityTypes.d.ts.map +1 -1
- package/dist/exposedUtilityTypes.js.map +1 -1
- package/dist/getPresence.d.ts.map +1 -1
- package/dist/getPresence.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/internalUtils.d.ts +1 -3
- package/dist/internalUtils.d.ts.map +1 -1
- package/dist/internalUtils.js +0 -2
- package/dist/internalUtils.js.map +1 -1
- package/dist/latestMapValueManager.d.ts +1 -1
- package/dist/latestMapValueManager.d.ts.map +1 -1
- package/dist/latestMapValueManager.js.map +1 -1
- package/dist/latestValueManager.d.ts +1 -8
- package/dist/latestValueManager.d.ts.map +1 -1
- package/dist/latestValueManager.js +1 -2
- package/dist/latestValueManager.js.map +1 -1
- package/dist/latestValueTypes.d.ts +1 -1
- package/dist/latestValueTypes.d.ts.map +1 -1
- package/dist/latestValueTypes.js.map +1 -1
- package/dist/notificationsManager.d.ts +1 -102
- package/dist/notificationsManager.d.ts.map +1 -1
- package/dist/notificationsManager.js.map +1 -1
- package/dist/notificationsManagerTypes.d.ts +108 -0
- package/dist/notificationsManagerTypes.d.ts.map +1 -0
- package/dist/notificationsManagerTypes.js +7 -0
- package/dist/notificationsManagerTypes.js.map +1 -0
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.d.ts.map +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/presence.d.ts +1 -1
- package/dist/presence.d.ts.map +1 -1
- package/dist/presence.js.map +1 -1
- package/dist/presenceDatastoreManager.d.ts +3 -11
- package/dist/presenceDatastoreManager.d.ts.map +1 -1
- package/dist/presenceDatastoreManager.js +12 -19
- package/dist/presenceDatastoreManager.js.map +1 -1
- package/dist/presenceManager.d.ts +1 -1
- package/dist/presenceManager.d.ts.map +1 -1
- package/dist/presenceManager.js +3 -7
- package/dist/presenceManager.js.map +1 -1
- package/dist/presenceStates.d.ts +4 -2
- package/dist/presenceStates.d.ts.map +1 -1
- package/dist/presenceStates.js.map +1 -1
- package/dist/runtimeTypes.d.ts +26 -0
- package/dist/runtimeTypes.d.ts.map +1 -0
- package/dist/{internalTypes.js → runtimeTypes.js} +1 -1
- package/dist/runtimeTypes.js.map +1 -0
- package/dist/stateDatastore.d.ts +11 -2
- package/dist/stateDatastore.d.ts.map +1 -1
- package/dist/stateDatastore.js.map +1 -1
- package/dist/statesManagerTypes.d.ts +27 -0
- package/dist/statesManagerTypes.d.ts.map +1 -0
- package/dist/statesManagerTypes.js +7 -0
- package/dist/statesManagerTypes.js.map +1 -0
- package/dist/systemWorkspace.d.ts.map +1 -1
- package/dist/systemWorkspace.js +1 -2
- package/dist/systemWorkspace.js.map +1 -1
- package/dist/types.d.ts +7 -6
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/{internalTypes.d.ts → validatableTypes.d.ts} +1 -59
- package/dist/validatableTypes.d.ts.map +1 -0
- package/dist/validatableTypes.js +7 -0
- package/dist/validatableTypes.js.map +1 -0
- package/dist/valueManager.d.ts +1 -1
- package/dist/valueManager.d.ts.map +1 -1
- package/dist/valueManager.js.map +1 -1
- package/lib/broadcastControls.d.ts +1 -33
- package/lib/broadcastControls.d.ts.map +1 -1
- package/lib/broadcastControls.js.map +1 -1
- package/lib/broadcastControlsTypes.d.ts +38 -0
- package/lib/broadcastControlsTypes.d.ts.map +1 -0
- package/lib/broadcastControlsTypes.js +6 -0
- package/lib/broadcastControlsTypes.js.map +1 -0
- package/lib/exposedInternalTypes.d.ts +3 -3
- package/lib/exposedInternalTypes.d.ts.map +1 -1
- package/lib/exposedInternalTypes.js.map +1 -1
- package/lib/exposedUtilityTypes.d.ts +2 -2
- package/lib/exposedUtilityTypes.d.ts.map +1 -1
- package/lib/exposedUtilityTypes.js.map +1 -1
- package/lib/getPresence.d.ts.map +1 -1
- package/lib/getPresence.js.map +1 -1
- package/lib/index.d.ts +3 -2
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/internalUtils.d.ts +1 -3
- package/lib/internalUtils.d.ts.map +1 -1
- package/lib/internalUtils.js +0 -2
- package/lib/internalUtils.js.map +1 -1
- package/lib/latestMapValueManager.d.ts +1 -1
- package/lib/latestMapValueManager.d.ts.map +1 -1
- package/lib/latestMapValueManager.js.map +1 -1
- package/lib/latestValueManager.d.ts +1 -8
- package/lib/latestValueManager.d.ts.map +1 -1
- package/lib/latestValueManager.js +1 -1
- package/lib/latestValueManager.js.map +1 -1
- package/lib/latestValueTypes.d.ts +1 -1
- package/lib/latestValueTypes.d.ts.map +1 -1
- package/lib/latestValueTypes.js.map +1 -1
- package/lib/notificationsManager.d.ts +1 -102
- package/lib/notificationsManager.d.ts.map +1 -1
- package/lib/notificationsManager.js.map +1 -1
- package/lib/notificationsManagerTypes.d.ts +108 -0
- package/lib/notificationsManagerTypes.d.ts.map +1 -0
- package/lib/notificationsManagerTypes.js +6 -0
- package/lib/notificationsManagerTypes.js.map +1 -0
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.d.ts.map +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/presence.d.ts +1 -1
- package/lib/presence.d.ts.map +1 -1
- package/lib/presence.js.map +1 -1
- package/lib/presenceDatastoreManager.d.ts +3 -11
- package/lib/presenceDatastoreManager.d.ts.map +1 -1
- package/lib/presenceDatastoreManager.js +12 -18
- package/lib/presenceDatastoreManager.js.map +1 -1
- package/lib/presenceManager.d.ts +1 -1
- package/lib/presenceManager.d.ts.map +1 -1
- package/lib/presenceManager.js +3 -7
- package/lib/presenceManager.js.map +1 -1
- package/lib/presenceStates.d.ts +4 -2
- package/lib/presenceStates.d.ts.map +1 -1
- package/lib/presenceStates.js.map +1 -1
- package/lib/runtimeTypes.d.ts +26 -0
- package/lib/runtimeTypes.d.ts.map +1 -0
- package/lib/{internalTypes.js → runtimeTypes.js} +1 -1
- package/lib/runtimeTypes.js.map +1 -0
- package/lib/stateDatastore.d.ts +11 -2
- package/lib/stateDatastore.d.ts.map +1 -1
- package/lib/stateDatastore.js.map +1 -1
- package/lib/statesManagerTypes.d.ts +27 -0
- package/lib/statesManagerTypes.d.ts.map +1 -0
- package/lib/statesManagerTypes.js +6 -0
- package/lib/statesManagerTypes.js.map +1 -0
- package/lib/systemWorkspace.d.ts.map +1 -1
- package/lib/systemWorkspace.js +1 -2
- package/lib/systemWorkspace.js.map +1 -1
- package/lib/types.d.ts +7 -6
- package/lib/types.d.ts.map +1 -1
- package/lib/types.js.map +1 -1
- package/lib/{internalTypes.d.ts → validatableTypes.d.ts} +1 -59
- package/lib/validatableTypes.d.ts.map +1 -0
- package/lib/validatableTypes.js +6 -0
- package/lib/validatableTypes.js.map +1 -0
- package/lib/valueManager.d.ts +1 -1
- package/lib/valueManager.d.ts.map +1 -1
- package/lib/valueManager.js.map +1 -1
- package/package.json +16 -16
- package/dist/internalTypes.d.ts.map +0 -1
- package/dist/internalTypes.js.map +0 -1
- package/lib/internalTypes.d.ts.map +0 -1
- package/lib/internalTypes.js.map +0 -1
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
|
+
* Licensed under the MIT License.
|
|
4
|
+
*/
|
|
5
|
+
import type { Listenable, Off } from "@fluidframework/core-interfaces";
|
|
6
|
+
import type { InternalUtilityTypes } from "./exposedUtilityTypes.js";
|
|
7
|
+
import type { Attendee, PresenceWithNotifications as Presence } from "./presence.js";
|
|
8
|
+
/**
|
|
9
|
+
* @sealed
|
|
10
|
+
* @alpha
|
|
11
|
+
*/
|
|
12
|
+
export interface NotificationsManagerEvents {
|
|
13
|
+
/**
|
|
14
|
+
* Raised when notification is received, but no subscribers were found.
|
|
15
|
+
*
|
|
16
|
+
* @eventProperty
|
|
17
|
+
*/
|
|
18
|
+
unattendedNotification: (name: string, sender: Attendee, ...content: unknown[]) => void;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* An object which allows the registration of listeners so that subscribers can be
|
|
22
|
+
* notified when a notification happens.
|
|
23
|
+
*
|
|
24
|
+
* @sealed
|
|
25
|
+
* @alpha
|
|
26
|
+
*/
|
|
27
|
+
export interface NotificationListenable<TListeners extends InternalUtilityTypes.NotificationListeners<TListeners>> {
|
|
28
|
+
/**
|
|
29
|
+
* Register a notification listener.
|
|
30
|
+
* @param notificationName - the name of the notification
|
|
31
|
+
* @param listener - The listener function to run when the notification is fired.
|
|
32
|
+
* @returns A {@link @fluidframework/core-interfaces#Off | function} which will deregister the listener when called.
|
|
33
|
+
* Calling the deregistration function more than once will have no effect.
|
|
34
|
+
*
|
|
35
|
+
* Listeners may also be deregistered by passing the listener to {@link NotificationListenable.off | off()}.
|
|
36
|
+
* @remarks Registering the exact same `listener` object for the same notification more than once will throw an error.
|
|
37
|
+
* If registering the same listener for the same notification multiple times is desired, consider using a wrapper function for the second subscription.
|
|
38
|
+
*/
|
|
39
|
+
on<K extends keyof InternalUtilityTypes.NotificationListeners<TListeners>>(notificationName: K, listener: (sender: Attendee, ...args: InternalUtilityTypes.JsonDeserializedParameters<TListeners[K]>) => void): Off;
|
|
40
|
+
/**
|
|
41
|
+
* Deregister notification listener.
|
|
42
|
+
* @param notificationName - The name of the notification.
|
|
43
|
+
* @param listener - The listener function to remove from the current set of notification listeners.
|
|
44
|
+
* @remarks If `listener` is not currently registered, this method will have no effect.
|
|
45
|
+
*
|
|
46
|
+
* Listeners may also be deregistered by calling the {@link @fluidframework/core-interfaces#Off | deregistration function} returned when they are {@link NotificationListenable.on | registered}.
|
|
47
|
+
*/
|
|
48
|
+
off<K extends keyof InternalUtilityTypes.NotificationListeners<TListeners>>(notificationName: K, listener: (sender: Attendee, ...args: InternalUtilityTypes.JsonDeserializedParameters<TListeners[K]>) => void): void;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Record of notification subscriptions.
|
|
52
|
+
*
|
|
53
|
+
* @sealed
|
|
54
|
+
* @alpha
|
|
55
|
+
*/
|
|
56
|
+
export type NotificationSubscriptions<E extends InternalUtilityTypes.NotificationListeners<E>> = {
|
|
57
|
+
[K in string & keyof InternalUtilityTypes.NotificationListeners<E>]: (sender: Attendee, ...args: InternalUtilityTypes.JsonDeserializedParameters<E[K]>) => void;
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* Interface for a notification emitter that can send typed notification to other clients.
|
|
61
|
+
*
|
|
62
|
+
* @sealed
|
|
63
|
+
* @alpha
|
|
64
|
+
*/
|
|
65
|
+
export interface NotificationEmitter<E extends InternalUtilityTypes.NotificationListeners<E>> {
|
|
66
|
+
/**
|
|
67
|
+
* Emits a notification with the specified name and arguments, notifying all clients.
|
|
68
|
+
* @param notificationName - the name of the notification to fire
|
|
69
|
+
* @param args - the arguments sent with the notification
|
|
70
|
+
*/
|
|
71
|
+
broadcast<K extends keyof InternalUtilityTypes.NotificationListeners<E>>(notificationName: K, ...args: Parameters<E[K]>): void;
|
|
72
|
+
/**
|
|
73
|
+
* Emits a notification with the specified name and arguments, notifying a single attendee.
|
|
74
|
+
* @param notificationName - the name of the notification to fire
|
|
75
|
+
* @param targetAttendee - the single attendee to notify
|
|
76
|
+
* @param args - the arguments sent with the notification
|
|
77
|
+
*/
|
|
78
|
+
unicast<K extends keyof InternalUtilityTypes.NotificationListeners<E>>(notificationName: K, targetAttendee: Attendee, ...args: Parameters<E[K]>): void;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Provides notifications from this client to others and subscription
|
|
82
|
+
* to their notifications.
|
|
83
|
+
*
|
|
84
|
+
* @remarks Create using {@link Notifications} registered to
|
|
85
|
+
* {@link NotificationsWorkspace} or {@link StatesWorkspace}.
|
|
86
|
+
*
|
|
87
|
+
* @sealed
|
|
88
|
+
* @alpha
|
|
89
|
+
*/
|
|
90
|
+
export interface NotificationsManager<T extends InternalUtilityTypes.NotificationListeners<T>> {
|
|
91
|
+
/**
|
|
92
|
+
* Containing {@link Presence}
|
|
93
|
+
*/
|
|
94
|
+
readonly presence: Presence;
|
|
95
|
+
/**
|
|
96
|
+
* Events for Notifications manager.
|
|
97
|
+
*/
|
|
98
|
+
readonly events: Listenable<NotificationsManagerEvents>;
|
|
99
|
+
/**
|
|
100
|
+
* Send notifications to other clients.
|
|
101
|
+
*/
|
|
102
|
+
readonly emit: NotificationEmitter<T>;
|
|
103
|
+
/**
|
|
104
|
+
* Provides subscription to notifications from other clients.
|
|
105
|
+
*/
|
|
106
|
+
readonly notifications: NotificationListenable<T>;
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=notificationsManagerTypes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notificationsManagerTypes.d.ts","sourceRoot":"","sources":["../src/notificationsManagerTypes.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,iCAAiC,CAAC;AAEvE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,KAAK,EAAE,QAAQ,EAAE,yBAAyB,IAAI,QAAQ,EAAE,MAAM,eAAe,CAAC;AAErF;;;GAGG;AACH,MAAM,WAAW,0BAA0B;IAC1C;;;;OAIG;IACH,sBAAsB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;CACxF;AAED;;;;;;GAMG;AACH,MAAM,WAAW,sBAAsB,CACtC,UAAU,SAAS,oBAAoB,CAAC,qBAAqB,CAAC,UAAU,CAAC;IAEzE;;;;;;;;;;OAUG;IACH,EAAE,CAAC,CAAC,SAAS,MAAM,oBAAoB,CAAC,qBAAqB,CAAC,UAAU,CAAC,EACxE,gBAAgB,EAAE,CAAC,EACnB,QAAQ,EAAE,CACT,MAAM,EAAE,QAAQ,EAChB,GAAG,IAAI,EAAE,oBAAoB,CAAC,0BAA0B,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KACnE,IAAI,GACP,GAAG,CAAC;IAEP;;;;;;;OAOG;IACH,GAAG,CAAC,CAAC,SAAS,MAAM,oBAAoB,CAAC,qBAAqB,CAAC,UAAU,CAAC,EACzE,gBAAgB,EAAE,CAAC,EACnB,QAAQ,EAAE,CACT,MAAM,EAAE,QAAQ,EAChB,GAAG,IAAI,EAAE,oBAAoB,CAAC,0BAA0B,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KACnE,IAAI,GACP,IAAI,CAAC;CACR;AAED;;;;;GAKG;AACH,MAAM,MAAM,yBAAyB,CACpC,CAAC,SAAS,oBAAoB,CAAC,qBAAqB,CAAC,CAAC,CAAC,IACpD;KACF,CAAC,IAAI,MAAM,GAAG,MAAM,oBAAoB,CAAC,qBAAqB,CAAC,CAAC,CAAC,GAAG,CACpE,MAAM,EAAE,QAAQ,EAChB,GAAG,IAAI,EAAE,oBAAoB,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAC1D,IAAI;CACT,CAAC;AAEF;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB,CAAC,CAAC,SAAS,oBAAoB,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAC3F;;;;OAIG;IACH,SAAS,CAAC,CAAC,SAAS,MAAM,oBAAoB,CAAC,qBAAqB,CAAC,CAAC,CAAC,EACtE,gBAAgB,EAAE,CAAC,EACnB,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACvB,IAAI,CAAC;IAER;;;;;OAKG;IACH,OAAO,CAAC,CAAC,SAAS,MAAM,oBAAoB,CAAC,qBAAqB,CAAC,CAAC,CAAC,EACpE,gBAAgB,EAAE,CAAC,EACnB,cAAc,EAAE,QAAQ,EACxB,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACvB,IAAI,CAAC;CACR;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,oBAAoB,CACpC,CAAC,SAAS,oBAAoB,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAEvD;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAE5B;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,0BAA0B,CAAC,CAAC;IAExD;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC;IAEtC;;OAEG;IACH,QAAQ,CAAC,aAAa,EAAE,sBAAsB,CAAC,CAAC,CAAC,CAAC;CAClD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notificationsManagerTypes.js","sourceRoot":"","sources":["../src/notificationsManagerTypes.ts"],"names":[],"mappings":";AAAA;;;GAGG","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport type { Listenable, Off } from \"@fluidframework/core-interfaces\";\n\nimport type { InternalUtilityTypes } from \"./exposedUtilityTypes.js\";\nimport type { Attendee, PresenceWithNotifications as Presence } from \"./presence.js\";\n\n/**\n * @sealed\n * @alpha\n */\nexport interface NotificationsManagerEvents {\n\t/**\n\t * Raised when notification is received, but no subscribers were found.\n\t *\n\t * @eventProperty\n\t */\n\tunattendedNotification: (name: string, sender: Attendee, ...content: unknown[]) => void;\n}\n\n/**\n * An object which allows the registration of listeners so that subscribers can be\n * notified when a notification happens.\n *\n * @sealed\n * @alpha\n */\nexport interface NotificationListenable<\n\tTListeners extends InternalUtilityTypes.NotificationListeners<TListeners>,\n> {\n\t/**\n\t * Register a notification listener.\n\t * @param notificationName - the name of the notification\n\t * @param listener - The listener function to run when the notification is fired.\n\t * @returns A {@link @fluidframework/core-interfaces#Off | function} which will deregister the listener when called.\n\t * Calling the deregistration function more than once will have no effect.\n\t *\n\t * Listeners may also be deregistered by passing the listener to {@link NotificationListenable.off | off()}.\n\t * @remarks Registering the exact same `listener` object for the same notification more than once will throw an error.\n\t * If registering the same listener for the same notification multiple times is desired, consider using a wrapper function for the second subscription.\n\t */\n\ton<K extends keyof InternalUtilityTypes.NotificationListeners<TListeners>>(\n\t\tnotificationName: K,\n\t\tlistener: (\n\t\t\tsender: Attendee,\n\t\t\t...args: InternalUtilityTypes.JsonDeserializedParameters<TListeners[K]>\n\t\t) => void,\n\t): Off;\n\n\t/**\n\t * Deregister notification listener.\n\t * @param notificationName - The name of the notification.\n\t * @param listener - The listener function to remove from the current set of notification listeners.\n\t * @remarks If `listener` is not currently registered, this method will have no effect.\n\t *\n\t * Listeners may also be deregistered by calling the {@link @fluidframework/core-interfaces#Off | deregistration function} returned when they are {@link NotificationListenable.on | registered}.\n\t */\n\toff<K extends keyof InternalUtilityTypes.NotificationListeners<TListeners>>(\n\t\tnotificationName: K,\n\t\tlistener: (\n\t\t\tsender: Attendee,\n\t\t\t...args: InternalUtilityTypes.JsonDeserializedParameters<TListeners[K]>\n\t\t) => void,\n\t): void;\n}\n\n/**\n * Record of notification subscriptions.\n *\n * @sealed\n * @alpha\n */\nexport type NotificationSubscriptions<\n\tE extends InternalUtilityTypes.NotificationListeners<E>,\n> = {\n\t[K in string & keyof InternalUtilityTypes.NotificationListeners<E>]: (\n\t\tsender: Attendee,\n\t\t...args: InternalUtilityTypes.JsonDeserializedParameters<E[K]>\n\t) => void;\n};\n\n/**\n * Interface for a notification emitter that can send typed notification to other clients.\n *\n * @sealed\n * @alpha\n */\nexport interface NotificationEmitter<E extends InternalUtilityTypes.NotificationListeners<E>> {\n\t/**\n\t * Emits a notification with the specified name and arguments, notifying all clients.\n\t * @param notificationName - the name of the notification to fire\n\t * @param args - the arguments sent with the notification\n\t */\n\tbroadcast<K extends keyof InternalUtilityTypes.NotificationListeners<E>>(\n\t\tnotificationName: K,\n\t\t...args: Parameters<E[K]>\n\t): void;\n\n\t/**\n\t * Emits a notification with the specified name and arguments, notifying a single attendee.\n\t * @param notificationName - the name of the notification to fire\n\t * @param targetAttendee - the single attendee to notify\n\t * @param args - the arguments sent with the notification\n\t */\n\tunicast<K extends keyof InternalUtilityTypes.NotificationListeners<E>>(\n\t\tnotificationName: K,\n\t\ttargetAttendee: Attendee,\n\t\t...args: Parameters<E[K]>\n\t): void;\n}\n\n/**\n * Provides notifications from this client to others and subscription\n * to their notifications.\n *\n * @remarks Create using {@link Notifications} registered to\n * {@link NotificationsWorkspace} or {@link StatesWorkspace}.\n *\n * @sealed\n * @alpha\n */\nexport interface NotificationsManager<\n\tT extends InternalUtilityTypes.NotificationListeners<T>,\n> {\n\t/**\n\t * Containing {@link Presence}\n\t */\n\treadonly presence: Presence;\n\n\t/**\n\t * Events for Notifications manager.\n\t */\n\treadonly events: Listenable<NotificationsManagerEvents>;\n\n\t/**\n\t * Send notifications to other clients.\n\t */\n\treadonly emit: NotificationEmitter<T>;\n\n\t/**\n\t * Provides subscription to notifications from other clients.\n\t */\n\treadonly notifications: NotificationListenable<T>;\n}\n"]}
|
package/dist/packageVersion.d.ts
CHANGED
|
@@ -5,5 +5,5 @@
|
|
|
5
5
|
* THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY
|
|
6
6
|
*/
|
|
7
7
|
export declare const pkgName = "@fluidframework/presence";
|
|
8
|
-
export declare const pkgVersion = "2.81.0
|
|
8
|
+
export declare const pkgVersion = "2.81.0";
|
|
9
9
|
//# sourceMappingURL=packageVersion.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packageVersion.d.ts","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,OAAO,6BAA6B,CAAC;AAClD,eAAO,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"packageVersion.d.ts","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,OAAO,6BAA6B,CAAC;AAClD,eAAO,MAAM,UAAU,WAAW,CAAC"}
|
package/dist/packageVersion.js
CHANGED
|
@@ -8,5 +8,5 @@
|
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.pkgVersion = exports.pkgName = void 0;
|
|
10
10
|
exports.pkgName = "@fluidframework/presence";
|
|
11
|
-
exports.pkgVersion = "2.81.0
|
|
11
|
+
exports.pkgVersion = "2.81.0";
|
|
12
12
|
//# sourceMappingURL=packageVersion.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packageVersion.js","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEU,QAAA,OAAO,GAAG,0BAA0B,CAAC;AACrC,QAAA,UAAU,GAAG,
|
|
1
|
+
{"version":3,"file":"packageVersion.js","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEU,QAAA,OAAO,GAAG,0BAA0B,CAAC;AACrC,QAAA,UAAU,GAAG,QAAQ,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n *\n * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY\n */\n\nexport const pkgName = \"@fluidframework/presence\";\nexport const pkgVersion = \"2.81.0\";\n"]}
|
package/dist/presence.d.ts
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
import type { Listenable } from "@fluidframework/core-interfaces";
|
|
6
6
|
import type { SessionId } from "@fluidframework/id-compressor";
|
|
7
7
|
import type { ClientConnectionId } from "./baseTypes.js";
|
|
8
|
-
import type { BroadcastControlSettings } from "./
|
|
8
|
+
import type { BroadcastControlSettings } from "./broadcastControlsTypes.js";
|
|
9
9
|
import type { NotificationsWorkspace, NotificationsWorkspaceSchema, StatesWorkspace, StatesWorkspaceSchema, WorkspaceAddress } from "./types.js";
|
|
10
10
|
/**
|
|
11
11
|
* A Fluid client session identifier.
|
package/dist/presence.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"presence.d.ts","sourceRoot":"","sources":["../src/presence.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAE/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"presence.d.ts","sourceRoot":"","sources":["../src/presence.ts"],"names":[],"mappings":"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"}
|
package/dist/presence.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"presence.js","sourceRoot":"","sources":["../src/presence.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AA6BH;;;;GAIG;AACU,QAAA,cAAc,GAAG;IAC7B;;OAEG;IACH,SAAS,EAAE,WAAW;IAEtB;;OAEG;IACH,YAAY,EAAE,cAAc;CACnB,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport type { Listenable } from \"@fluidframework/core-interfaces\";\nimport type { SessionId } from \"@fluidframework/id-compressor\";\n\nimport type { ClientConnectionId } from \"./baseTypes.js\";\nimport type { BroadcastControlSettings } from \"./
|
|
1
|
+
{"version":3,"file":"presence.js","sourceRoot":"","sources":["../src/presence.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AA6BH;;;;GAIG;AACU,QAAA,cAAc,GAAG;IAC7B;;OAEG;IACH,SAAS,EAAE,WAAW;IAEtB;;OAEG;IACH,YAAY,EAAE,cAAc;CACnB,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport type { Listenable } from \"@fluidframework/core-interfaces\";\nimport type { SessionId } from \"@fluidframework/id-compressor\";\n\nimport type { ClientConnectionId } from \"./baseTypes.js\";\nimport type { BroadcastControlSettings } from \"./broadcastControlsTypes.js\";\nimport type {\n\tNotificationsWorkspace,\n\tNotificationsWorkspaceSchema,\n\tStatesWorkspace,\n\tStatesWorkspaceSchema,\n\tWorkspaceAddress,\n} from \"./types.js\";\n\n/**\n * A Fluid client session identifier.\n *\n * @remarks\n * Each client once connected to a session is given a unique identifier for the\n * duration of the session. If a client disconnects and reconnects, it will\n * retain its identifier. Prefer use of {@link Attendee} as a way to\n * identify clients in a session. {@link Attendee.attendeeId} will provide\n * the session ID.\n *\n * @beta\n */\nexport type AttendeeId = SessionId & { readonly AttendeeId: \"AttendeeId\" };\n\n/**\n * The connection status of the {@link Attendee}.\n *\n * @beta\n */\nexport const AttendeeStatus = {\n\t/**\n\t * The {@link Attendee} is connected to the Fluid service.\n\t */\n\tConnected: \"Connected\",\n\n\t/**\n\t * The {@link Attendee} is not connected to the Fluid service.\n\t */\n\tDisconnected: \"Disconnected\",\n} as const;\n\n/**\n * Represents the connection status of an {@link Attendee}.\n *\n * This type can be either `'Connected'` or `'Disconnected'`, indicating whether\n * the attendee is currently connected to the Fluid service.\n *\n * When `'Disconnected'`:\n * - State changes are kept locally and communicated to others upon reconnect.\n * - Notification requests are discarded (silently).\n *\n * @beta\n */\nexport type AttendeeStatus = (typeof AttendeeStatus)[keyof typeof AttendeeStatus];\n\n/**\n * A client within a Fluid session (period of container connectivity to service).\n *\n * @remarks\n * Note: This is very preliminary attendee representation.\n *\n * {@link Attendee} should be used as key to distinguish between different\n * clients as they join, rejoin, and disconnect from a session. While a\n * client's {@link ClientConnectionId} from {@link Attendee.getConnectionStatus}\n * may change over time, `Attendee` will be fixed.\n *\n * @privateRemarks\n * As this is evolved, pay attention to how this relates to Audience, Service\n * Audience, and Quorum representations of clients and users.\n *\n * @sealed\n * @beta\n */\nexport interface Attendee<SpecificAttendeeId extends AttendeeId = AttendeeId> {\n\t/**\n\t * The session ID of the client that is stable over all connections.\n\t */\n\treadonly attendeeId: SpecificAttendeeId;\n\n\t/**\n\t * Get current client connection ID.\n\t *\n\t * @returns Current client connection ID.\n\t *\n\t * @remarks\n\t * Connection ID will change on reconnect.\n\t *\n\t * If {@link Attendee.getConnectionStatus} is {@link (AttendeeStatus:variable).Disconnected}, this will represent the last known connection ID.\n\t */\n\tgetConnectionId(): ClientConnectionId;\n\n\t/**\n\t * Get connection status of attendee.\n\t *\n\t * @returns Connection status of attendee.\n\t *\n\t */\n\tgetConnectionStatus(): AttendeeStatus;\n}\n\n/**\n * Utility type limiting to a specific attendee. (A attendee with\n * a specific session ID - not just any session ID.)\n */\nexport type SpecificAttendee<SpecificAttendeeId extends AttendeeId> =\n\tstring extends SpecificAttendeeId ? never : Attendee<SpecificAttendeeId>;\n\n/**\n * Events from {@link Presence.attendees}.\n *\n * @sealed\n * @beta\n */\nexport interface AttendeesEvents {\n\t/**\n\t * Raised when new client joins session.\n\t *\n\t * @eventProperty\n\t */\n\tattendeeConnected: (attendee: Attendee) => void;\n\n\t/**\n\t * Raised when client appears disconnected from session.\n\t *\n\t * @eventProperty\n\t */\n\tattendeeDisconnected: (attendee: Attendee) => void;\n}\n\n/**\n * Events from {@link Presence}.\n *\n * @sealed\n * @beta\n */\nexport interface PresenceEvents {\n\t/**\n\t * Raised when a workspace is activated within the session.\n\t *\n\t * \"Activated\" means that a workspace is being used by a client and this\n\t * client is seeing information for the first time.\n\t *\n\t * @remarks\n\t * Local workspaces may be passively acquired/registered when this event\n\t * is raised. For a notifications workspace, that lazy registration must\n\t * be done before the event handler returns to ensure no notifications\n\t * are missed.\n\t */\n\tworkspaceActivated: (\n\t\tworkspaceAddress: WorkspaceAddress,\n\t\ttype: \"States\" | \"Notifications\" | \"Unknown\",\n\t) => void;\n}\n\n/**\n * Provides top-level access to Presence feature set including known\n * {@link Attendee}s within a session and their custom states kept\n * under {@link StatesWorkspace}s.\n *\n * @sealed\n * @beta\n */\nexport interface Presence {\n\t/**\n\t * Events for Presence.\n\t */\n\treadonly events: Listenable<PresenceEvents>;\n\n\t/**\n\t * Container-wide {@link Attendee} information and event provider.\n\t *\n\t * @remarks\n\t * This provides access to all {@link Attendee}s in the session, including\n\t * the current client. As {@link StatesWorkspace} aren't required to be\n\t * uniform across an application, some {@link Attendee}s may be enumerated\n\t * here while not being present in any particular {@link StatesWorkspace}.\n\t */\n\treadonly attendees: {\n\t\t/**\n\t\t * Events for {@link Attendee}s.\n\t\t */\n\t\treadonly events: Listenable<AttendeesEvents>;\n\n\t\t/**\n\t\t * Get all {@link Attendee}s in the session.\n\t\t *\n\t\t * @remarks\n\t\t * Attendee states are dynamic and will change as clients join and leave\n\t\t * the session.\n\t\t */\n\t\tgetAttendees(): ReadonlySet<Attendee>;\n\n\t\t/**\n\t\t * Lookup a specific {@link Attendee} in the session.\n\t\t *\n\t\t * @param clientId - Client connection or session ID\n\t\t */\n\t\tgetAttendee(clientId: ClientConnectionId | AttendeeId): Attendee;\n\n\t\t/**\n\t\t * Get this client's {@link Attendee}.\n\t\t *\n\t\t * @returns This client's attendee.\n\t\t */\n\t\tgetMyself(): Attendee;\n\t};\n\n\t/**\n\t * Provides access to {@link StatesWorkspace}s that allow clients to\n\t * manage custom states.\n\t */\n\treadonly states: {\n\t\t/**\n\t\t * Acquires a {@link StatesWorkspace} from store or adds new one.\n\t\t *\n\t\t * @param workspaceAddress - Address of the requested {@link StatesWorkspace}\n\t\t * @param requestedStates - Requested states for the workspace\n\t\t * @param controls - Optional settings for default broadcast controls\n\t\t * @returns A {@link StatesWorkspace}\n\t\t */\n\t\tgetWorkspace<StatesSchema extends StatesWorkspaceSchema>(\n\t\t\tworkspaceAddress: WorkspaceAddress,\n\t\t\trequestedStates: StatesSchema,\n\t\t\tcontrols?: BroadcastControlSettings,\n\t\t): StatesWorkspace<StatesSchema>;\n\t};\n}\n\n/**\n * Provides top-level access to Presence feature set including known\n * {@link Attendee}s within a session and their custom states and\n * notifications kept under {@link StatesWorkspace}s and\n * {@link NotificationsWorkspace}s.\n *\n * @remarks\n * To access this alpha API, cast any `{@link Presence}` to `PresenceWithNotifications`.\n *\n * @sealed\n * @alpha\n */\nexport interface PresenceWithNotifications extends Presence {\n\treadonly notifications: {\n\t\t/**\n\t\t * Acquires a Notifications workspace from store or adds new one.\n\t\t *\n\t\t * @param workspaceAddress - Address of the requested Notifications Workspace\n\t\t * @param requestedNotifications - Requested notifications for the workspace\n\t\t * @returns A Notifications workspace\n\t\t */\n\t\tgetWorkspace<NotificationsSchema extends NotificationsWorkspaceSchema>(\n\t\t\tnotificationsId: WorkspaceAddress,\n\t\t\trequestedNotifications: NotificationsSchema,\n\t\t): NotificationsWorkspace<NotificationsSchema>;\n\t};\n}\n"]}
|
|
@@ -6,25 +6,17 @@ import type { InboundExtensionMessage } from "@fluidframework/container-runtime-
|
|
|
6
6
|
import type { IEmitter } from "@fluidframework/core-interfaces/internal";
|
|
7
7
|
import type { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils/internal";
|
|
8
8
|
import type { ClientConnectionId } from "./baseTypes.js";
|
|
9
|
-
import type { BroadcastControlSettings } from "./
|
|
10
|
-
import type { IEphemeralRuntime, ValidatableOptionalState, ValidatableValueDirectory } from "./internalTypes.js";
|
|
9
|
+
import type { BroadcastControlSettings } from "./broadcastControlsTypes.js";
|
|
11
10
|
import type { AttendeeId, PresenceWithNotifications as Presence, PresenceEvents } from "./presence.js";
|
|
12
11
|
import type { PresenceStatesInternal } from "./presenceStates.js";
|
|
13
12
|
import type { InternalWorkspaceAddress, SignalMessages } from "./protocol.js";
|
|
13
|
+
import type { IEphemeralRuntime } from "./runtimeTypes.js";
|
|
14
14
|
import type { SystemWorkspaceDatastore } from "./systemWorkspace.js";
|
|
15
15
|
import type { AnyWorkspace, NotificationsWorkspace, NotificationsWorkspaceSchema, StatesWorkspace, StatesWorkspaceSchema, WorkspaceAddress } from "./types.js";
|
|
16
16
|
interface AnyWorkspaceEntry<TSchema extends StatesWorkspaceSchema> {
|
|
17
17
|
public: AnyWorkspace<TSchema>;
|
|
18
18
|
internal: PresenceStatesInternal;
|
|
19
19
|
}
|
|
20
|
-
/**
|
|
21
|
-
* Type guard to check if a value hierarchy object is a directory (has "items"
|
|
22
|
-
* property).
|
|
23
|
-
*
|
|
24
|
-
* @param obj - The object to check
|
|
25
|
-
* @returns True if the object is a {@link ValidatableValueDirectory}
|
|
26
|
-
*/
|
|
27
|
-
export declare function isValueDirectory<T>(obj: ValidatableValueDirectory<T> | ValidatableOptionalState<T>): obj is ValidatableValueDirectory<T>;
|
|
28
20
|
/**
|
|
29
21
|
* High-level contract for manager of singleton Presence datastore
|
|
30
22
|
*/
|
|
@@ -103,7 +95,7 @@ export declare class PresenceDatastoreManagerImpl implements PresenceDatastoreMa
|
|
|
103
95
|
* Timer for managing broadcast (join response) request timing.
|
|
104
96
|
*/
|
|
105
97
|
private readonly broadcastRequestsTimer;
|
|
106
|
-
constructor(attendeeId: AttendeeId, runtime: IEphemeralRuntime, logger: ITelemetryLoggerExt
|
|
98
|
+
constructor(attendeeId: AttendeeId, runtime: IEphemeralRuntime, logger: ITelemetryLoggerExt, events: IEmitter<PresenceEvents>, presence: Presence, systemWorkspaceDatastore: SystemWorkspaceDatastore, systemWorkspace: AnyWorkspaceEntry<StatesWorkspaceSchema>);
|
|
107
99
|
private getAudienceInformation;
|
|
108
100
|
joinSession(selfClientId: ClientConnectionId, alternateProvider?: ClientConnectionId | undefined): void;
|
|
109
101
|
onDisconnected(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"presenceDatastoreManager.d.ts","sourceRoot":"","sources":["../src/presenceDatastoreManager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wDAAwD,CAAC;AACtG,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0CAA0C,CAAC;AAEzE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAEpF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"presenceDatastoreManager.d.ts","sourceRoot":"","sources":["../src/presenceDatastoreManager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wDAAwD,CAAC;AACtG,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0CAA0C,CAAC;AAEzE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAEpF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAG5E,OAAO,KAAK,EACX,UAAU,EACV,yBAAyB,IAAI,QAAQ,EACrC,cAAc,EACd,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAGX,sBAAsB,EAEtB,MAAM,qBAAqB,CAAC;AAM7B,OAAO,KAAK,EAKX,wBAAwB,EAExB,cAAc,EAEd,MAAM,eAAe,CAAC;AAMvB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE3D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAErE,OAAO,KAAK,EACX,YAAY,EACZ,sBAAsB,EACtB,4BAA4B,EAC5B,eAAe,EACf,qBAAqB,EACrB,gBAAgB,EAChB,MAAM,YAAY,CAAC;AAOpB,UAAU,iBAAiB,CAAC,OAAO,SAAS,qBAAqB;IAChE,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;IAC9B,QAAQ,EAAE,sBAAsB,CAAC;CACjC;AAuCD;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACxC,WAAW,CACV,QAAQ,EAAE,kBAAkB,EAC5B,iBAAiB,EAAE,kBAAkB,GAAG,SAAS,GAC/C,IAAI,CAAC;IACR,cAAc,IAAI,IAAI,CAAC;IACvB,YAAY,CAAC,OAAO,SAAS,qBAAqB,EACjD,wBAAwB,EAAE,KAAK,gBAAgB,EAAE,EACjD,gBAAgB,EAAE,OAAO,EACzB,QAAQ,CAAC,EAAE,wBAAwB,GACjC,eAAe,CAAC,OAAO,CAAC,CAAC;IAC5B,YAAY,CAAC,OAAO,SAAS,4BAA4B,EACxD,wBAAwB,EAAE,KAAK,gBAAgB,EAAE,EACjD,gBAAgB,EAAE,OAAO,GACvB,sBAAsB,CAAC,OAAO,CAAC,CAAC;IACnC,aAAa,CACZ,OAAO,EAAE,uBAAuB,CAAC,cAAc,CAAC,GAAG;QAAE,QAAQ,EAAE,kBAAkB,CAAA;KAAE,EACnF,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,OAAO,GACf,IAAI,CAAC;CACR;AAqCD;;;;;;;GAOG;AACH,eAAO,MAAM,6BAA6B;IACzC;;;;OAIG;;IAEH;;;OAGG;;CAEM,CAAC;AAEX;;GAEG;AACH,qBAAa,4BAA6B,YAAW,wBAAwB;IA4C3E,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IA/C1B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoB;IAC9C,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAsB;IACvD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA+D;IAC1F,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAU;IAEhD;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,OAAO,CAAC,yBAAyB,CAAC,CAA8C;IAEhF;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAG9B;IACJ;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAsB;gBAG3C,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,iBAAiB,EAC1B,MAAM,EAAE,mBAAmB,EAC3B,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,EAChC,QAAQ,EAAE,QAAQ,EACnC,wBAAwB,EAAE,wBAAwB,EAClD,eAAe,EAAE,iBAAiB,CAAC,qBAAqB,CAAC;IAY1D,OAAO,CAAC,sBAAsB;IAkCvB,WAAW,CACjB,YAAY,EAAE,kBAAkB,EAChC,iBAAiB,GAAE,kBAAkB,GAAG,SAAqB,GAC3D,IAAI;IAuEA,cAAc,IAAI,IAAI;IAItB,YAAY,CAAC,OAAO,SAAS,qBAAqB,EACxD,wBAAwB,EAAE,wBAAwB,EAClD,gBAAgB,EAAE,OAAO,EACzB,QAAQ,CAAC,EAAE,wBAAwB,GACjC,YAAY,CAAC,OAAO,CAAC;IA6CxB;;;OAGG;IACH,OAAO,CAAC,UAAU,CAAyD;IAE3E;;;OAGG;IACH,OAAO,CAAC,cAAc;IA4CtB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAmDzB;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IA6B/B;;OAEG;IACH,OAAO,CAAC,4BAA4B;IAkCpC,OAAO,CAAC,sBAAsB;IAkDvB,aAAa,CACnB,OAAO,EAAE,uBAAuB,CAAC,cAAc,CAAC,GAAG;QAAE,QAAQ,EAAE,kBAAkB,CAAA;KAAE,EACnF,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,OAAO,GACf,IAAI;IAyJP;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,6BAA6B,CAsB5C;IAEF;;;;;;;;;;OAUG;IACH,OAAO,CAAC,mBAAmB;CAqG3B"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Licensed under the MIT License.
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.PresenceDatastoreManagerImpl = exports.broadcastJoinResponseDelaysMs =
|
|
7
|
+
exports.PresenceDatastoreManagerImpl = exports.broadcastJoinResponseDelaysMs = void 0;
|
|
8
8
|
const internal_1 = require("@fluidframework/core-utils/internal");
|
|
9
9
|
const internalUtils_js_1 = require("./internalUtils.js");
|
|
10
10
|
const presenceStates_js_1 = require("./presenceStates.js");
|
|
@@ -32,7 +32,6 @@ function isPresenceMessage(message) {
|
|
|
32
32
|
function isValueDirectory(obj) {
|
|
33
33
|
return "items" in obj;
|
|
34
34
|
}
|
|
35
|
-
exports.isValueDirectory = isValueDirectory;
|
|
36
35
|
function mergeGeneralDatastoreMessageContent(base, newData) {
|
|
37
36
|
// This function-local "datastore" will hold the merged message data.
|
|
38
37
|
const queueDatastore = base ?? {};
|
|
@@ -215,7 +214,7 @@ class PresenceDatastoreManagerImpl {
|
|
|
215
214
|
updateProviders,
|
|
216
215
|
},
|
|
217
216
|
});
|
|
218
|
-
this.logger
|
|
217
|
+
this.logger.sendTelemetryEvent({
|
|
219
218
|
eventName: "JoinRequested",
|
|
220
219
|
details: {
|
|
221
220
|
attendeeId: this.attendeeId,
|
|
@@ -235,11 +234,7 @@ class PresenceDatastoreManagerImpl {
|
|
|
235
234
|
if (existing) {
|
|
236
235
|
return existing.internal.ensureContent(requestedContent, controls);
|
|
237
236
|
}
|
|
238
|
-
|
|
239
|
-
// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing -- using ??= could change behavior if value is falsy
|
|
240
|
-
if (workspaceDatastore === undefined) {
|
|
241
|
-
workspaceDatastore = this.datastore[internalWorkspaceAddress] = {};
|
|
242
|
-
}
|
|
237
|
+
const workspaceDatastore = (this.datastore[internalWorkspaceAddress] ??= {});
|
|
243
238
|
const localUpdate = (states, options) => {
|
|
244
239
|
// Check for connectivity before sending updates.
|
|
245
240
|
if (this.runtime.getJoinedStatus() === "disconnected") {
|
|
@@ -407,15 +402,13 @@ class PresenceDatastoreManagerImpl {
|
|
|
407
402
|
const secondaryRequestors = [];
|
|
408
403
|
if (this.broadcastRequests.size > 0) {
|
|
409
404
|
content.joinResponseFor = [...this.broadcastRequests.keys()];
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
secondaryRequestors.push([requestor, responseOrder]);
|
|
418
|
-
}
|
|
405
|
+
// Build telemetry data
|
|
406
|
+
for (const [requestor, { responseOrder }] of this.broadcastRequests.entries()) {
|
|
407
|
+
if (responseOrder === undefined) {
|
|
408
|
+
primaryRequestors.push(requestor);
|
|
409
|
+
}
|
|
410
|
+
else {
|
|
411
|
+
secondaryRequestors.push([requestor, responseOrder]);
|
|
419
412
|
}
|
|
420
413
|
}
|
|
421
414
|
this.broadcastRequests.clear();
|
|
@@ -428,7 +421,7 @@ class PresenceDatastoreManagerImpl {
|
|
|
428
421
|
content,
|
|
429
422
|
});
|
|
430
423
|
if (content.joinResponseFor) {
|
|
431
|
-
this.logger
|
|
424
|
+
this.logger.sendTelemetryEvent({
|
|
432
425
|
eventName: "JoinResponse",
|
|
433
426
|
details: {
|
|
434
427
|
type: "broadcastAll",
|
|
@@ -486,7 +479,7 @@ class PresenceDatastoreManagerImpl {
|
|
|
486
479
|
// No response was expected. This might happen when
|
|
487
480
|
// either cautionary ClientJoin signal is received
|
|
488
481
|
// by audience member that was unknown.
|
|
489
|
-
this.logger
|
|
482
|
+
this.logger.sendTelemetryEvent({
|
|
490
483
|
eventName: "JoinResponseWhenAlone",
|
|
491
484
|
details: {
|
|
492
485
|
attendeeId: this.attendeeId,
|