@fluidframework/presence 2.41.0-338401 → 2.42.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/README.md +6 -10
- package/dist/alpha.d.ts +18 -14
- package/dist/baseTypes.d.ts +1 -1
- package/dist/baseTypes.js.map +1 -1
- package/dist/beta.d.ts +53 -0
- package/dist/broadcastControls.d.ts +4 -5
- package/dist/broadcastControls.d.ts.map +1 -1
- package/dist/broadcastControls.js +2 -3
- package/dist/broadcastControls.js.map +1 -1
- package/dist/datastorePresenceManagerFactory.d.ts +4 -1
- package/dist/datastorePresenceManagerFactory.d.ts.map +1 -1
- package/dist/datastorePresenceManagerFactory.js +24 -3
- package/dist/datastorePresenceManagerFactory.js.map +1 -1
- package/dist/datastoreSupport.d.ts +7 -2
- package/dist/datastoreSupport.d.ts.map +1 -1
- package/dist/datastoreSupport.js +6 -4
- package/dist/datastoreSupport.js.map +1 -1
- package/dist/experimentalAccess.d.ts +12 -4
- package/dist/experimentalAccess.d.ts.map +1 -1
- package/dist/experimentalAccess.js +24 -17
- package/dist/experimentalAccess.js.map +1 -1
- package/dist/exposedInternalTypes.d.ts +23 -5
- package/dist/exposedInternalTypes.d.ts.map +1 -1
- package/dist/exposedInternalTypes.js +1 -1
- package/dist/exposedInternalTypes.js.map +1 -1
- package/dist/exposedUtilityTypes.d.ts +6 -5
- package/dist/exposedUtilityTypes.d.ts.map +1 -1
- package/dist/exposedUtilityTypes.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/internalTypes.d.ts +32 -11
- package/dist/internalTypes.d.ts.map +1 -1
- package/dist/internalTypes.js.map +1 -1
- package/dist/internalUtils.d.ts +34 -11
- package/dist/internalUtils.d.ts.map +1 -1
- package/dist/internalUtils.js +39 -7
- package/dist/internalUtils.js.map +1 -1
- package/dist/latestMapValueManager.d.ts +36 -15
- package/dist/latestMapValueManager.d.ts.map +1 -1
- package/dist/latestMapValueManager.js +11 -10
- package/dist/latestMapValueManager.js.map +1 -1
- package/dist/latestValueManager.d.ts +21 -7
- package/dist/latestValueManager.d.ts.map +1 -1
- package/dist/latestValueManager.js +21 -10
- package/dist/latestValueManager.js.map +1 -1
- package/dist/latestValueTypes.d.ts +14 -4
- package/dist/latestValueTypes.d.ts.map +1 -1
- package/dist/latestValueTypes.js.map +1 -1
- package/dist/notificationsManager.d.ts +3 -3
- package/dist/notificationsManager.d.ts.map +1 -1
- package/dist/notificationsManager.js +14 -7
- package/dist/notificationsManager.js.map +1 -1
- package/dist/package.json +5 -4
- package/dist/presence.d.ts +26 -13
- package/dist/presence.d.ts.map +1 -1
- package/dist/presence.js +1 -1
- package/dist/presence.js.map +1 -1
- package/dist/presenceDatastoreManager.d.ts +9 -41
- package/dist/presenceDatastoreManager.d.ts.map +1 -1
- package/dist/presenceDatastoreManager.js +50 -36
- package/dist/presenceDatastoreManager.js.map +1 -1
- package/dist/presenceManager.d.ts +5 -9
- package/dist/presenceManager.d.ts.map +1 -1
- package/dist/presenceManager.js +13 -13
- package/dist/presenceManager.js.map +1 -1
- package/dist/presenceStates.d.ts +9 -14
- package/dist/presenceStates.d.ts.map +1 -1
- package/dist/presenceStates.js +1 -8
- package/dist/presenceStates.js.map +1 -1
- package/dist/protocol.d.ts +99 -0
- package/dist/protocol.d.ts.map +1 -0
- package/dist/protocol.js +20 -0
- package/dist/protocol.js.map +1 -0
- package/dist/stateDatastore.d.ts +9 -8
- package/dist/stateDatastore.d.ts.map +1 -1
- package/dist/stateDatastore.js +0 -4
- package/dist/stateDatastore.js.map +1 -1
- package/dist/stateFactory.d.ts +1 -1
- package/dist/stateFactory.js +1 -1
- package/dist/stateFactory.js.map +1 -1
- package/dist/systemWorkspace.d.ts +12 -6
- package/dist/systemWorkspace.d.ts.map +1 -1
- package/dist/systemWorkspace.js +14 -4
- package/dist/systemWorkspace.js.map +1 -1
- package/dist/types.d.ts +12 -10
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/valueManager.d.ts +0 -4
- package/dist/valueManager.d.ts.map +1 -1
- package/dist/valueManager.js +0 -4
- package/dist/valueManager.js.map +1 -1
- package/lib/alpha.d.ts +18 -14
- package/lib/baseTypes.d.ts +1 -1
- package/lib/baseTypes.js.map +1 -1
- package/lib/beta.d.ts +53 -0
- package/lib/broadcastControls.d.ts +4 -5
- package/lib/broadcastControls.d.ts.map +1 -1
- package/lib/broadcastControls.js +2 -3
- package/lib/broadcastControls.js.map +1 -1
- package/lib/datastorePresenceManagerFactory.d.ts +4 -1
- package/lib/datastorePresenceManagerFactory.d.ts.map +1 -1
- package/lib/datastorePresenceManagerFactory.js +24 -3
- package/lib/datastorePresenceManagerFactory.js.map +1 -1
- package/lib/datastoreSupport.d.ts +7 -2
- package/lib/datastoreSupport.d.ts.map +1 -1
- package/lib/datastoreSupport.js +6 -4
- package/lib/datastoreSupport.js.map +1 -1
- package/lib/experimentalAccess.d.ts +12 -4
- package/lib/experimentalAccess.d.ts.map +1 -1
- package/lib/experimentalAccess.js +22 -15
- package/lib/experimentalAccess.js.map +1 -1
- package/lib/exposedInternalTypes.d.ts +23 -5
- package/lib/exposedInternalTypes.d.ts.map +1 -1
- package/lib/exposedInternalTypes.js +1 -1
- package/lib/exposedInternalTypes.js.map +1 -1
- package/lib/exposedUtilityTypes.d.ts +6 -5
- package/lib/exposedUtilityTypes.d.ts.map +1 -1
- package/lib/exposedUtilityTypes.js.map +1 -1
- package/lib/index.d.ts +2 -2
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/internalTypes.d.ts +32 -11
- package/lib/internalTypes.d.ts.map +1 -1
- package/lib/internalTypes.js.map +1 -1
- package/lib/internalUtils.d.ts +34 -11
- package/lib/internalUtils.d.ts.map +1 -1
- package/lib/internalUtils.js +35 -6
- package/lib/internalUtils.js.map +1 -1
- package/lib/latestMapValueManager.d.ts +36 -15
- package/lib/latestMapValueManager.d.ts.map +1 -1
- package/lib/latestMapValueManager.js +12 -11
- package/lib/latestMapValueManager.js.map +1 -1
- package/lib/latestValueManager.d.ts +21 -7
- package/lib/latestValueManager.d.ts.map +1 -1
- package/lib/latestValueManager.js +20 -10
- package/lib/latestValueManager.js.map +1 -1
- package/lib/latestValueTypes.d.ts +14 -4
- package/lib/latestValueTypes.d.ts.map +1 -1
- package/lib/latestValueTypes.js.map +1 -1
- package/lib/notificationsManager.d.ts +3 -3
- package/lib/notificationsManager.d.ts.map +1 -1
- package/lib/notificationsManager.js +14 -7
- package/lib/notificationsManager.js.map +1 -1
- package/lib/presence.d.ts +26 -13
- package/lib/presence.d.ts.map +1 -1
- package/lib/presence.js +1 -1
- package/lib/presence.js.map +1 -1
- package/lib/presenceDatastoreManager.d.ts +9 -41
- package/lib/presenceDatastoreManager.d.ts.map +1 -1
- package/lib/presenceDatastoreManager.js +49 -35
- package/lib/presenceDatastoreManager.js.map +1 -1
- package/lib/presenceManager.d.ts +5 -9
- package/lib/presenceManager.d.ts.map +1 -1
- package/lib/presenceManager.js +13 -13
- package/lib/presenceManager.js.map +1 -1
- package/lib/presenceStates.d.ts +9 -14
- package/lib/presenceStates.d.ts.map +1 -1
- package/lib/presenceStates.js +1 -8
- package/lib/presenceStates.js.map +1 -1
- package/lib/protocol.d.ts +99 -0
- package/lib/protocol.d.ts.map +1 -0
- package/lib/protocol.js +17 -0
- package/lib/protocol.js.map +1 -0
- package/lib/stateDatastore.d.ts +9 -8
- package/lib/stateDatastore.d.ts.map +1 -1
- package/lib/stateDatastore.js +0 -4
- package/lib/stateDatastore.js.map +1 -1
- package/lib/stateFactory.d.ts +1 -1
- package/lib/stateFactory.js +1 -1
- package/lib/stateFactory.js.map +1 -1
- package/lib/systemWorkspace.d.ts +12 -6
- package/lib/systemWorkspace.d.ts.map +1 -1
- package/lib/systemWorkspace.js +14 -4
- package/lib/systemWorkspace.js.map +1 -1
- package/lib/types.d.ts +12 -10
- package/lib/types.d.ts.map +1 -1
- package/lib/types.js.map +1 -1
- package/lib/valueManager.d.ts +0 -4
- package/lib/valueManager.d.ts.map +1 -1
- package/lib/valueManager.js +0 -4
- package/lib/valueManager.js.map +1 -1
- package/package.json +30 -23
- package/dist/container-definitions/containerExtensions.d.ts +0 -137
- package/dist/container-definitions/containerExtensions.d.ts.map +0 -1
- package/dist/container-definitions/containerExtensions.js +0 -7
- package/dist/container-definitions/containerExtensions.js.map +0 -1
- package/dist/container-definitions/index.d.ts +0 -7
- package/dist/container-definitions/index.d.ts.map +0 -1
- package/dist/container-definitions/index.js +0 -7
- package/dist/container-definitions/index.js.map +0 -1
- package/dist/container-definitions/runtime.d.ts +0 -12
- package/dist/container-definitions/runtime.d.ts.map +0 -1
- package/dist/container-definitions/runtime.js +0 -7
- package/dist/container-definitions/runtime.js.map +0 -1
- package/lib/container-definitions/containerExtensions.d.ts +0 -137
- package/lib/container-definitions/containerExtensions.d.ts.map +0 -1
- package/lib/container-definitions/containerExtensions.js +0 -6
- package/lib/container-definitions/containerExtensions.js.map +0 -1
- package/lib/container-definitions/index.d.ts +0 -7
- package/lib/container-definitions/index.d.ts.map +0 -1
- package/lib/container-definitions/index.js +0 -6
- package/lib/container-definitions/index.js.map +0 -1
- package/lib/container-definitions/runtime.d.ts +0 -12
- package/lib/container-definitions/runtime.d.ts.map +0 -1
- package/lib/container-definitions/runtime.js +0 -6
- package/lib/container-definitions/runtime.js.map +0 -1
package/lib/types.d.ts
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
import type { BroadcastControls } from "./broadcastControls.js";
|
|
6
6
|
import type { InternalTypes } from "./exposedInternalTypes.js";
|
|
7
7
|
import type { NotificationsManager } from "./notificationsManager.js";
|
|
8
|
-
import type { Presence } from "./presence.js";
|
|
8
|
+
import type { Presence, PresenceWithNotifications } from "./presence.js";
|
|
9
9
|
/**
|
|
10
10
|
* Unique address within a session.
|
|
11
11
|
*
|
|
@@ -20,13 +20,13 @@ import type { Presence } from "./presence.js";
|
|
|
20
20
|
* "address:object0/sub-object2:pointers"
|
|
21
21
|
* ```
|
|
22
22
|
*
|
|
23
|
-
* @
|
|
23
|
+
* @beta
|
|
24
24
|
*/
|
|
25
25
|
export type WorkspaceAddress = `${string}:${string}`;
|
|
26
26
|
/**
|
|
27
27
|
* Single entry in {@link StatesWorkspaceSchema} or {@link NotificationsWorkspaceSchema}.
|
|
28
28
|
*
|
|
29
|
-
* @
|
|
29
|
+
* @beta
|
|
30
30
|
*/
|
|
31
31
|
export type StatesWorkspaceEntry<TKey extends string, TValue extends InternalTypes.ValueDirectoryOrState<unknown>, TManager = unknown> = InternalTypes.ManagerFactory<TKey, TValue, TManager>;
|
|
32
32
|
/**
|
|
@@ -34,16 +34,19 @@ export type StatesWorkspaceEntry<TKey extends string, TValue extends InternalTyp
|
|
|
34
34
|
*
|
|
35
35
|
* Keys of schema are the keys of the {@link StatesWorkspace} providing access to State objects.
|
|
36
36
|
*
|
|
37
|
-
* @
|
|
37
|
+
* @beta
|
|
38
38
|
*/
|
|
39
39
|
export interface StatesWorkspaceSchema {
|
|
40
|
+
/**
|
|
41
|
+
* Key-value pairs of State objects registered with the {@link StatesWorkspace}.
|
|
42
|
+
*/
|
|
40
43
|
[key: string]: StatesWorkspaceEntry<typeof key, InternalTypes.ValueDirectoryOrState<any>>;
|
|
41
44
|
}
|
|
42
45
|
/**
|
|
43
46
|
* Map of State objects registered with {@link StatesWorkspace}.
|
|
44
47
|
*
|
|
45
48
|
* @sealed
|
|
46
|
-
* @
|
|
49
|
+
* @beta
|
|
47
50
|
*/
|
|
48
51
|
export type StatesWorkspaceEntries<TSchema extends StatesWorkspaceSchema> = {
|
|
49
52
|
/**
|
|
@@ -59,7 +62,7 @@ export type StatesWorkspaceEntries<TSchema extends StatesWorkspaceSchema> = {
|
|
|
59
62
|
* each client's state is independent and may only be updated by originating client.
|
|
60
63
|
*
|
|
61
64
|
* @sealed
|
|
62
|
-
* @
|
|
65
|
+
* @beta
|
|
63
66
|
*/
|
|
64
67
|
export interface StatesWorkspace<TSchema extends StatesWorkspaceSchema, TManagerConstraints = unknown> {
|
|
65
68
|
/**
|
|
@@ -116,16 +119,15 @@ export interface NotificationsWorkspace<TSchema extends NotificationsWorkspaceSc
|
|
|
116
119
|
*/
|
|
117
120
|
readonly notifications: StatesWorkspaceEntries<TSchema>;
|
|
118
121
|
/**
|
|
119
|
-
* Containing {@link
|
|
122
|
+
* Containing {@link PresenceWithNotifications}
|
|
120
123
|
*/
|
|
121
|
-
readonly presence:
|
|
124
|
+
readonly presence: PresenceWithNotifications;
|
|
122
125
|
}
|
|
123
126
|
/**
|
|
124
127
|
* `AnyWorkspace` is a superset of {@link StatesWorkspace} and {@link NotificationsWorkspace}.
|
|
125
|
-
*
|
|
126
|
-
* @internal
|
|
127
128
|
*/
|
|
128
129
|
export interface AnyWorkspace<TSchema extends StatesWorkspaceSchema, TManagerConstraints = unknown> extends StatesWorkspace<TSchema, TManagerConstraints> {
|
|
129
130
|
readonly notifications: StatesWorkspaceEntries<TSchema>;
|
|
131
|
+
readonly presence: PresenceWithNotifications;
|
|
130
132
|
}
|
|
131
133
|
//# sourceMappingURL=types.d.ts.map
|
package/lib/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/lib/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.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 { BroadcastControls } from \"./broadcastControls.js\";\nimport type { InternalTypes } from \"./exposedInternalTypes.js\";\nimport type { NotificationsManager } from \"./notificationsManager.js\";\nimport type { Presence } from \"./presence.js\";\n\n/**\n * Unique address within a session.\n *\n * @remarks\n * A string known to all clients working with a certain Workspace and unique\n * among Workspaces. Recommend using specifying concatenation of: type of\n * unique identifier, `:` (required), and unique identifier.\n *\n * @example Examples\n * ```typescript\n * \"guid:g0fl001d-1415-5000-c00l-g0fa54g0b1g1\"\n * \"address:object0/sub-object2:pointers\"\n * ```\n *\n * @
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.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 { BroadcastControls } from \"./broadcastControls.js\";\nimport type { InternalTypes } from \"./exposedInternalTypes.js\";\nimport type { NotificationsManager } from \"./notificationsManager.js\";\nimport type { Presence, PresenceWithNotifications } from \"./presence.js\";\n\n/**\n * Unique address within a session.\n *\n * @remarks\n * A string known to all clients working with a certain Workspace and unique\n * among Workspaces. Recommend using specifying concatenation of: type of\n * unique identifier, `:` (required), and unique identifier.\n *\n * @example Examples\n * ```typescript\n * \"guid:g0fl001d-1415-5000-c00l-g0fa54g0b1g1\"\n * \"address:object0/sub-object2:pointers\"\n * ```\n *\n * @beta\n */\nexport type WorkspaceAddress = `${string}:${string}`;\n\n/**\n * Single entry in {@link StatesWorkspaceSchema} or {@link NotificationsWorkspaceSchema}.\n *\n * @beta\n */\nexport type StatesWorkspaceEntry<\n\tTKey extends string,\n\tTValue extends InternalTypes.ValueDirectoryOrState<unknown>,\n\tTManager = unknown,\n> = InternalTypes.ManagerFactory<TKey, TValue, TManager>;\n\n// #region StatesWorkspace\n\n/**\n * Schema for a {@link StatesWorkspace} workspace.\n *\n * Keys of schema are the keys of the {@link StatesWorkspace} providing access to State objects.\n *\n * @beta\n */\nexport interface StatesWorkspaceSchema {\n\t/**\n\t * Key-value pairs of State objects registered with the {@link StatesWorkspace}.\n\t */\n\t[key: string]: StatesWorkspaceEntry<typeof key, InternalTypes.ValueDirectoryOrState<any>>;\n}\n\n/**\n * Map of State objects registered with {@link StatesWorkspace}.\n *\n * @sealed\n * @beta\n */\nexport type StatesWorkspaceEntries<TSchema extends StatesWorkspaceSchema> = {\n\t/**\n\t * Registered State objects.\n\t */\n\treadonly [Key in keyof TSchema]: ReturnType<\n\t\tTSchema[Key]\n\t>[\"manager\"] extends InternalTypes.StateValue<infer TManager>\n\t\t? TManager\n\t\t: never;\n};\n\n/**\n * `StatesWorkspace` maintains a registry of State objects that all share and provide access to\n * presence state values across client members in a session.\n *\n * State objects offer variations on how to manage states, but all share same principle that\n * each client's state is independent and may only be updated by originating client.\n *\n * @sealed\n * @beta\n */\nexport interface StatesWorkspace<\n\tTSchema extends StatesWorkspaceSchema,\n\tTManagerConstraints = unknown,\n> {\n\t/**\n\t * Registers a new State object with the {@link StatesWorkspace}.\n\t * @param key - new unique key for the State object within the workspace\n\t * @param manager - factory for creating a State object\n\t */\n\tadd<\n\t\tTKey extends string,\n\t\tTValue extends InternalTypes.ValueDirectoryOrState<any>,\n\t\tTManager extends TManagerConstraints,\n\t>(\n\t\tkey: TKey,\n\t\tmanager: InternalTypes.ManagerFactory<TKey, TValue, TManager>,\n\t): asserts this is StatesWorkspace<\n\t\tTSchema & Record<TKey, InternalTypes.ManagerFactory<TKey, TValue, TManager>>,\n\t\tTManagerConstraints\n\t>;\n\n\t/**\n\t * Registry of State objects.\n\t */\n\treadonly states: StatesWorkspaceEntries<TSchema>;\n\n\t/**\n\t * Default controls for management of broadcast updates.\n\t */\n\treadonly controls: BroadcastControls;\n\n\t/**\n\t * Containing {@link Presence}\n\t */\n\treadonly presence: Presence;\n}\n\n// #endregion StatesWorkspace\n\n// #region NotificationsWorkspace\n\n/**\n * Schema for a {@link NotificationsWorkspace} workspace.\n *\n * Keys of schema are the keys of the {@link NotificationsWorkspace} providing access to {@link NotificationsManager}s.\n *\n * @alpha\n */\nexport interface NotificationsWorkspaceSchema {\n\t[key: string]: InternalTypes.ManagerFactory<\n\t\ttypeof key,\n\t\tInternalTypes.ValueRequiredState<InternalTypes.NotificationType>,\n\t\tNotificationsManager<any>\n\t>;\n}\n\n/**\n * `NotificationsWorkspace` maintains a registry of {@link NotificationsManager}s\n * that facilitate messages across client members in a session.\n *\n * @privateRemarks\n * This should be kept mostly in sync with {@link StatesWorkspace}. Notably the\n * return type of `add` is limited here and the `controls` property is omitted.\n * The `PresenceStatesImpl` class implements `AnyWorkspace` and therefore\n * `NotificationsWorkspace`, so long as this is proper subset.\n *\n * @sealed\n * @alpha\n */\nexport interface NotificationsWorkspace<TSchema extends NotificationsWorkspaceSchema> {\n\t/**\n\t * Registers a new `NotificationsManager` with the {@link NotificationsWorkspace}.\n\t * @param key - new unique key for the `NotificationsManager` within the workspace\n\t * @param manager - factory for creating a `NotificationsManager`\n\t */\n\tadd<\n\t\tTKey extends string,\n\t\tTValue extends InternalTypes.ValueDirectoryOrState<any>,\n\t\tTManager extends NotificationsManager<any>,\n\t>(\n\t\tkey: TKey,\n\t\tmanager: InternalTypes.ManagerFactory<TKey, TValue, TManager>,\n\t): asserts this is NotificationsWorkspace<\n\t\tTSchema & Record<TKey, InternalTypes.ManagerFactory<TKey, TValue, TManager>>\n\t>;\n\n\t/**\n\t * Registry of `NotificationsManager`s.\n\t */\n\treadonly notifications: StatesWorkspaceEntries<TSchema>;\n\n\t/**\n\t * Containing {@link PresenceWithNotifications}\n\t */\n\treadonly presence: PresenceWithNotifications;\n}\n\n// #endregion NotificationsWorkspace\n\n/**\n * `AnyWorkspace` is a superset of {@link StatesWorkspace} and {@link NotificationsWorkspace}.\n */\nexport interface AnyWorkspace<\n\tTSchema extends StatesWorkspaceSchema,\n\tTManagerConstraints = unknown,\n> extends StatesWorkspace<TSchema, TManagerConstraints> {\n\treadonly notifications: StatesWorkspaceEntries<TSchema>;\n\t// TO be removed if/when notifications are fully supported\n\treadonly presence: PresenceWithNotifications;\n}\n"]}
|
package/lib/valueManager.d.ts
CHANGED
|
@@ -6,14 +6,10 @@ import type { InternalTypes } from "./exposedInternalTypes.js";
|
|
|
6
6
|
import type { ValueManager } from "./internalTypes.js";
|
|
7
7
|
/**
|
|
8
8
|
* Given a value manager, return opaque InternalTypes.StateValue.
|
|
9
|
-
*
|
|
10
|
-
* @internal
|
|
11
9
|
*/
|
|
12
10
|
export declare function brandIVM<TManagerInterface, TValue, TValueState extends InternalTypes.ValueDirectoryOrState<TValue>>(manager: TManagerInterface & ValueManager<TValue, TValueState>): InternalTypes.StateValue<TManagerInterface>;
|
|
13
11
|
/**
|
|
14
12
|
* Extract the value manager from an opaque InternalTypes.StateValue.
|
|
15
|
-
*
|
|
16
|
-
* @internal
|
|
17
13
|
*/
|
|
18
14
|
export declare function unbrandIVM<TManagerInterface, TValue, TValueState extends InternalTypes.ValueDirectoryOrState<TValue>>(branded: InternalTypes.StateValue<TManagerInterface>): ValueManager<TValue, TValueState>;
|
|
19
15
|
//# sourceMappingURL=valueManager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"valueManager.d.ts","sourceRoot":"","sources":["../src/valueManager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD
|
|
1
|
+
{"version":3,"file":"valueManager.d.ts","sourceRoot":"","sources":["../src/valueManager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD;;GAEG;AACH,wBAAgB,QAAQ,CACvB,iBAAiB,EACjB,MAAM,EACN,WAAW,SAAS,aAAa,CAAC,qBAAqB,CAAC,MAAM,CAAC,EAE/D,OAAO,EAAE,iBAAiB,GAAG,YAAY,CAAC,MAAM,EAAE,WAAW,CAAC,GAC5D,aAAa,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAE7C;AAED;;GAEG;AACH,wBAAgB,UAAU,CACzB,iBAAiB,EACjB,MAAM,EACN,WAAW,SAAS,aAAa,CAAC,qBAAqB,CAAC,MAAM,CAAC,EAC9D,OAAO,EAAE,aAAa,CAAC,UAAU,CAAC,iBAAiB,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,WAAW,CAAC,CAEzF"}
|
package/lib/valueManager.js
CHANGED
|
@@ -4,16 +4,12 @@
|
|
|
4
4
|
*/
|
|
5
5
|
/**
|
|
6
6
|
* Given a value manager, return opaque InternalTypes.StateValue.
|
|
7
|
-
*
|
|
8
|
-
* @internal
|
|
9
7
|
*/
|
|
10
8
|
export function brandIVM(manager) {
|
|
11
9
|
return manager;
|
|
12
10
|
}
|
|
13
11
|
/**
|
|
14
12
|
* Extract the value manager from an opaque InternalTypes.StateValue.
|
|
15
|
-
*
|
|
16
|
-
* @internal
|
|
17
13
|
*/
|
|
18
14
|
export function unbrandIVM(branded) {
|
|
19
15
|
return branded;
|
package/lib/valueManager.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"valueManager.js","sourceRoot":"","sources":["../src/valueManager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH
|
|
1
|
+
{"version":3,"file":"valueManager.js","sourceRoot":"","sources":["../src/valueManager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH;;GAEG;AACH,MAAM,UAAU,QAAQ,CAKvB,OAA8D;IAE9D,OAAO,OAA2E,CAAC;AACpF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAIxB,OAAoD;IACrD,OAAO,OAAuD,CAAC;AAChE,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport type { InternalTypes } from \"./exposedInternalTypes.js\";\nimport type { ValueManager } from \"./internalTypes.js\";\n\n/**\n * Given a value manager, return opaque InternalTypes.StateValue.\n */\nexport function brandIVM<\n\tTManagerInterface,\n\tTValue,\n\tTValueState extends InternalTypes.ValueDirectoryOrState<TValue>,\n>(\n\tmanager: TManagerInterface & ValueManager<TValue, TValueState>,\n): InternalTypes.StateValue<TManagerInterface> {\n\treturn manager as TManagerInterface as InternalTypes.StateValue<TManagerInterface>;\n}\n\n/**\n * Extract the value manager from an opaque InternalTypes.StateValue.\n */\nexport function unbrandIVM<\n\tTManagerInterface,\n\tTValue,\n\tTValueState extends InternalTypes.ValueDirectoryOrState<TValue>,\n>(branded: InternalTypes.StateValue<TManagerInterface>): ValueManager<TValue, TValueState> {\n\treturn branded as unknown as ValueManager<TValue, TValueState>;\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fluidframework/presence",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.42.0",
|
|
4
4
|
"description": "A component for lightweight data sharing within a single session",
|
|
5
5
|
"homepage": "https://fluidframework.com",
|
|
6
6
|
"repository": {
|
|
@@ -13,6 +13,16 @@
|
|
|
13
13
|
"sideEffects": false,
|
|
14
14
|
"type": "module",
|
|
15
15
|
"exports": {
|
|
16
|
+
"./beta": {
|
|
17
|
+
"import": {
|
|
18
|
+
"types": "./lib/beta.d.ts",
|
|
19
|
+
"default": "./lib/index.js"
|
|
20
|
+
},
|
|
21
|
+
"require": {
|
|
22
|
+
"types": "./dist/beta.d.ts",
|
|
23
|
+
"default": "./dist/index.js"
|
|
24
|
+
}
|
|
25
|
+
},
|
|
16
26
|
"./alpha": {
|
|
17
27
|
"import": {
|
|
18
28
|
"types": "./lib/alpha.d.ts",
|
|
@@ -22,10 +32,6 @@
|
|
|
22
32
|
"types": "./dist/alpha.d.ts",
|
|
23
33
|
"default": "./dist/index.js"
|
|
24
34
|
}
|
|
25
|
-
},
|
|
26
|
-
"./internal/container-definitions/internal": {
|
|
27
|
-
"import": "./lib/container-definitions/index.js",
|
|
28
|
-
"require": "./dist/container-definitions/index.js"
|
|
29
35
|
}
|
|
30
36
|
},
|
|
31
37
|
"files": [
|
|
@@ -57,20 +63,19 @@
|
|
|
57
63
|
"temp-directory": "nyc/.nyc_output"
|
|
58
64
|
},
|
|
59
65
|
"dependencies": {
|
|
60
|
-
"@fluid-internal/client-utils": "2.
|
|
61
|
-
"@fluidframework/container-definitions": "2.
|
|
62
|
-
"@fluidframework/container-
|
|
63
|
-
"@fluidframework/
|
|
64
|
-
"@fluidframework/core-
|
|
65
|
-
"@fluidframework/
|
|
66
|
-
"@fluidframework/datastore": "2.
|
|
67
|
-
"@fluidframework/
|
|
68
|
-
"@fluidframework/
|
|
69
|
-
"@fluidframework/
|
|
70
|
-
"@fluidframework/runtime-
|
|
71
|
-
"@fluidframework/
|
|
72
|
-
"@fluidframework/
|
|
73
|
-
"@fluidframework/telemetry-utils": "2.41.0-338401"
|
|
66
|
+
"@fluid-internal/client-utils": "~2.42.0",
|
|
67
|
+
"@fluidframework/container-definitions": "~2.42.0",
|
|
68
|
+
"@fluidframework/container-runtime-definitions": "~2.42.0",
|
|
69
|
+
"@fluidframework/core-interfaces": "~2.42.0",
|
|
70
|
+
"@fluidframework/core-utils": "~2.42.0",
|
|
71
|
+
"@fluidframework/datastore": "~2.42.0",
|
|
72
|
+
"@fluidframework/datastore-definitions": "~2.42.0",
|
|
73
|
+
"@fluidframework/fluid-static": "~2.42.0",
|
|
74
|
+
"@fluidframework/id-compressor": "~2.42.0",
|
|
75
|
+
"@fluidframework/runtime-definitions": "~2.42.0",
|
|
76
|
+
"@fluidframework/runtime-utils": "~2.42.0",
|
|
77
|
+
"@fluidframework/shared-object-base": "~2.42.0",
|
|
78
|
+
"@fluidframework/telemetry-utils": "~2.42.0"
|
|
74
79
|
},
|
|
75
80
|
"devDependencies": {
|
|
76
81
|
"@arethetypeswrong/cli": "^0.17.1",
|
|
@@ -78,10 +83,10 @@
|
|
|
78
83
|
"@fluid-tools/build-cli": "^0.55.0",
|
|
79
84
|
"@fluidframework/build-common": "^2.0.3",
|
|
80
85
|
"@fluidframework/build-tools": "^0.55.0",
|
|
81
|
-
"@fluidframework/driver-definitions": "2.
|
|
82
|
-
"@fluidframework/eslint-config-fluid": "^5.7.
|
|
83
|
-
"@fluidframework/test-runtime-utils": "2.
|
|
84
|
-
"@fluidframework/test-utils": "2.
|
|
86
|
+
"@fluidframework/driver-definitions": "~2.42.0",
|
|
87
|
+
"@fluidframework/eslint-config-fluid": "^5.7.4",
|
|
88
|
+
"@fluidframework/test-runtime-utils": "~2.42.0",
|
|
89
|
+
"@fluidframework/test-utils": "~2.42.0",
|
|
85
90
|
"@microsoft/api-extractor": "7.52.8",
|
|
86
91
|
"@types/mocha": "^10.0.10",
|
|
87
92
|
"@types/node": "^18.19.0",
|
|
@@ -146,7 +151,9 @@
|
|
|
146
151
|
"check:exports": "concurrently \"npm:check:exports:*\"",
|
|
147
152
|
"check:exports:bundle-release-tags": "api-extractor run --config api-extractor/api-extractor-lint-bundle.json",
|
|
148
153
|
"check:exports:cjs:alpha": "api-extractor run --config api-extractor/api-extractor-lint-alpha.cjs.json",
|
|
154
|
+
"check:exports:cjs:beta": "api-extractor run --config api-extractor/api-extractor-lint-beta.cjs.json",
|
|
149
155
|
"check:exports:esm:alpha": "api-extractor run --config api-extractor/api-extractor-lint-alpha.esm.json",
|
|
156
|
+
"check:exports:esm:beta": "api-extractor run --config api-extractor/api-extractor-lint-beta.esm.json",
|
|
150
157
|
"check:format": "npm run check:biome",
|
|
151
158
|
"ci:build:docs": "api-extractor run",
|
|
152
159
|
"clean": "rimraf --glob dist lib \"**/*.tsbuildinfo\" \"**/*.build.log\" _api-extractor-temp nyc",
|
|
@@ -1,137 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
|
-
* Licensed under the MIT License.
|
|
4
|
-
*/
|
|
5
|
-
import type { JsonDeserialized, JsonSerializable } from "@fluidframework/core-interfaces/internal";
|
|
6
|
-
/**
|
|
7
|
-
* While connected, the id of a client within a session.
|
|
8
|
-
*
|
|
9
|
-
* @internal
|
|
10
|
-
*/
|
|
11
|
-
export type ClientConnectionId = string;
|
|
12
|
-
/**
|
|
13
|
-
* Common interface between incoming and outgoing extension signals.
|
|
14
|
-
*
|
|
15
|
-
* @sealed
|
|
16
|
-
* @internal
|
|
17
|
-
*/
|
|
18
|
-
export interface IExtensionMessage<TType extends string = string, TContent = unknown> {
|
|
19
|
-
/**
|
|
20
|
-
* Message type
|
|
21
|
-
*/
|
|
22
|
-
type: TType;
|
|
23
|
-
/**
|
|
24
|
-
* Message content
|
|
25
|
-
*/
|
|
26
|
-
content: JsonDeserialized<TContent>;
|
|
27
|
-
/**
|
|
28
|
-
* The client ID that submitted the message.
|
|
29
|
-
* For server generated messages the clientId will be null.
|
|
30
|
-
*/
|
|
31
|
-
clientId: ClientConnectionId | null;
|
|
32
|
-
/**
|
|
33
|
-
* Client ID of the singular client the message is being (or has been) sent to.
|
|
34
|
-
* May only be specified when IConnect.supportedFeatures['submit_signals_v2'] is true, will throw otherwise.
|
|
35
|
-
*/
|
|
36
|
-
targetClientId?: ClientConnectionId;
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Defines requirements for a component to register with container as an extension.
|
|
40
|
-
*
|
|
41
|
-
* @internal
|
|
42
|
-
*/
|
|
43
|
-
export interface IContainerExtension<TContext extends unknown[]> {
|
|
44
|
-
/**
|
|
45
|
-
* Notifies the extension of a new use context.
|
|
46
|
-
*
|
|
47
|
-
* @param context - Context new reference to extension is acquired within
|
|
48
|
-
*/
|
|
49
|
-
onNewContext(...context: TContext): void;
|
|
50
|
-
/**
|
|
51
|
-
* Callback for signal sent by this extension.
|
|
52
|
-
*
|
|
53
|
-
* @param address - Address of the signal
|
|
54
|
-
* @param signal - Signal content and metadata
|
|
55
|
-
* @param local - True if signal was sent by this client
|
|
56
|
-
*/
|
|
57
|
-
processSignal?(address: string, signal: IExtensionMessage, local: boolean): void;
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Defines the runtime interface an extension may access.
|
|
61
|
-
* In most cases this is a subset of {@link @fluidframework/container-runtime-definitions#IContainerRuntime}.
|
|
62
|
-
*
|
|
63
|
-
* @sealed
|
|
64
|
-
* @internal
|
|
65
|
-
*/
|
|
66
|
-
export interface IExtensionRuntime {
|
|
67
|
-
/**
|
|
68
|
-
* {@inheritdoc @fluidframework/container-runtime-definitions#IContainerRuntime.clientId}
|
|
69
|
-
*/
|
|
70
|
-
get clientId(): ClientConnectionId | undefined;
|
|
71
|
-
/**
|
|
72
|
-
* Submits a signal to be sent to other clients.
|
|
73
|
-
* @param address - Custom address for the signal.
|
|
74
|
-
* @param type - Custom type of the signal.
|
|
75
|
-
* @param content - Custom content of the signal. Should be a JSON serializable object or primitive via {@link https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify|JSON.stringify}.
|
|
76
|
-
* @param targetClientId - When specified, the signal is only sent to the provided client id.
|
|
77
|
-
*
|
|
78
|
-
* Upon receipt of signal, {@link IContainerExtension.processSignal} will be called with the same
|
|
79
|
-
* address, type, and content (less any non-{@link https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify|JSON.stringify}-able data).
|
|
80
|
-
*/
|
|
81
|
-
submitAddressedSignal<T>(address: string, type: string, content: JsonSerializable<T>, targetClientId?: ClientConnectionId): void;
|
|
82
|
-
}
|
|
83
|
-
/**
|
|
84
|
-
* Factory method to create an extension instance.
|
|
85
|
-
*
|
|
86
|
-
* Any such method provided to {@link ContainerExtensionStore.acquireExtension}
|
|
87
|
-
* must use the same value for a given {@link ContainerExtensionId} so that an
|
|
88
|
-
* `instanceof` check may be performed at runtime.
|
|
89
|
-
*
|
|
90
|
-
* @typeParam T - Type of extension to create
|
|
91
|
-
* @typeParam TContext - Array of optional custom context
|
|
92
|
-
*
|
|
93
|
-
* @param runtime - Runtime for extension to work against
|
|
94
|
-
* @param context - Custom context for extension.
|
|
95
|
-
* @returns Record providing:
|
|
96
|
-
* `interface` instance (type `T`) that is provided to caller of
|
|
97
|
-
* {@link ContainerExtensionStore.acquireExtension} and
|
|
98
|
-
* `extension` store/runtime uses to interact with extension.
|
|
99
|
-
*
|
|
100
|
-
* @internal
|
|
101
|
-
*/
|
|
102
|
-
export type ContainerExtensionFactory<T, TContext extends unknown[]> = new (runtime: IExtensionRuntime, ...context: TContext) => {
|
|
103
|
-
readonly interface: T;
|
|
104
|
-
readonly extension: IContainerExtension<TContext>;
|
|
105
|
-
};
|
|
106
|
-
/**
|
|
107
|
-
* Unique identifier for extension
|
|
108
|
-
*
|
|
109
|
-
* @remarks
|
|
110
|
-
* A string known to all clients working with a certain ContainerExtension and unique
|
|
111
|
-
* among ContainerExtensions. Not `/` may be used in the string. Recommend using
|
|
112
|
-
* concatenation of: type of unique identifier, `:` (required), and unique identifier.
|
|
113
|
-
*
|
|
114
|
-
* @example Examples
|
|
115
|
-
* ```typescript
|
|
116
|
-
* "guid:g0fl001d-1415-5000-c00l-g0fa54g0b1g1"
|
|
117
|
-
* "name:@foo-scope_bar:v1"
|
|
118
|
-
* ```
|
|
119
|
-
*
|
|
120
|
-
* @internal
|
|
121
|
-
*/
|
|
122
|
-
export type ContainerExtensionId = `${string}:${string}`;
|
|
123
|
-
/**
|
|
124
|
-
* @sealed
|
|
125
|
-
* @internal
|
|
126
|
-
*/
|
|
127
|
-
export interface ContainerExtensionStore {
|
|
128
|
-
/**
|
|
129
|
-
* Acquires an extension from store or adds new one.
|
|
130
|
-
*
|
|
131
|
-
* @param id - Identifier for the requested extension
|
|
132
|
-
* @param factory - Factory to create the extension if not found
|
|
133
|
-
* @returns The extension
|
|
134
|
-
*/
|
|
135
|
-
acquireExtension<T, TContext extends unknown[]>(id: ContainerExtensionId, factory: ContainerExtensionFactory<T, TContext>, ...context: TContext): T;
|
|
136
|
-
}
|
|
137
|
-
//# sourceMappingURL=containerExtensions.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"containerExtensions.d.ts","sourceRoot":"","sources":["../../src/container-definitions/containerExtensions.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACX,gBAAgB,EAChB,gBAAgB,EAChB,MAAM,0CAA0C,CAAC;AAElD;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAExC;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM,EAAE,QAAQ,GAAG,OAAO;IACnF;;OAEG;IACH,IAAI,EAAE,KAAK,CAAC;IAEZ;;OAEG;IACH,OAAO,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAEpC;;;OAGG;IAEH,QAAQ,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAEpC;;;OAGG;IACH,cAAc,CAAC,EAAE,kBAAkB,CAAC;CACpC;AAED;;;;GAIG;AACH,MAAM,WAAW,mBAAmB,CAAC,QAAQ,SAAS,OAAO,EAAE;IAC9D;;;;OAIG;IACH,YAAY,CAAC,GAAG,OAAO,EAAE,QAAQ,GAAG,IAAI,CAAC;IAEzC;;;;;;OAMG;IACH,aAAa,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;CACjF;AAED;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IACjC;;OAEG;IACH,IAAI,QAAQ,IAAI,kBAAkB,GAAG,SAAS,CAAC;IAE/C;;;;;;;;;OASG;IACH,qBAAqB,CAAC,CAAC,EACtB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAC5B,cAAc,CAAC,EAAE,kBAAkB,GACjC,IAAI,CAAC;CACR;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,MAAM,yBAAyB,CAAC,CAAC,EAAE,QAAQ,SAAS,OAAO,EAAE,IAAI,KACtE,OAAO,EAAE,iBAAiB,EAC1B,GAAG,OAAO,EAAE,QAAQ,KAChB;IAAE,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAA;CAAE,CAAC;AAElF;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,oBAAoB,GAAG,GAAG,MAAM,IAAI,MAAM,EAAE,CAAC;AAEzD;;;GAGG;AACH,MAAM,WAAW,uBAAuB;IACvC;;;;;;OAMG;IACH,gBAAgB,CAAC,CAAC,EAAE,QAAQ,SAAS,OAAO,EAAE,EAC7C,EAAE,EAAE,oBAAoB,EACxB,OAAO,EAAE,yBAAyB,CAAC,CAAC,EAAE,QAAQ,CAAC,EAC/C,GAAG,OAAO,EAAE,QAAQ,GAClB,CAAC,CAAC;CACL"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"containerExtensions.js","sourceRoot":"","sources":["../../src/container-definitions/containerExtensions.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 {\n\tJsonDeserialized,\n\tJsonSerializable,\n} from \"@fluidframework/core-interfaces/internal\";\n\n/**\n * While connected, the id of a client within a session.\n *\n * @internal\n */\nexport type ClientConnectionId = string;\n\n/**\n * Common interface between incoming and outgoing extension signals.\n *\n * @sealed\n * @internal\n */\nexport interface IExtensionMessage<TType extends string = string, TContent = unknown> {\n\t/**\n\t * Message type\n\t */\n\ttype: TType;\n\n\t/**\n\t * Message content\n\t */\n\tcontent: JsonDeserialized<TContent>;\n\n\t/**\n\t * The client ID that submitted the message.\n\t * For server generated messages the clientId will be null.\n\t */\n\t// eslint-disable-next-line @rushstack/no-new-null\n\tclientId: ClientConnectionId | null;\n\n\t/**\n\t * Client ID of the singular client the message is being (or has been) sent to.\n\t * May only be specified when IConnect.supportedFeatures['submit_signals_v2'] is true, will throw otherwise.\n\t */\n\ttargetClientId?: ClientConnectionId;\n}\n\n/**\n * Defines requirements for a component to register with container as an extension.\n *\n * @internal\n */\nexport interface IContainerExtension<TContext extends unknown[]> {\n\t/**\n\t * Notifies the extension of a new use context.\n\t *\n\t * @param context - Context new reference to extension is acquired within\n\t */\n\tonNewContext(...context: TContext): void;\n\n\t/**\n\t * Callback for signal sent by this extension.\n\t *\n\t * @param address - Address of the signal\n\t * @param signal - Signal content and metadata\n\t * @param local - True if signal was sent by this client\n\t */\n\tprocessSignal?(address: string, signal: IExtensionMessage, local: boolean): void;\n}\n\n/**\n * Defines the runtime interface an extension may access.\n * In most cases this is a subset of {@link @fluidframework/container-runtime-definitions#IContainerRuntime}.\n *\n * @sealed\n * @internal\n */\nexport interface IExtensionRuntime {\n\t/**\n\t * {@inheritdoc @fluidframework/container-runtime-definitions#IContainerRuntime.clientId}\n\t */\n\tget clientId(): ClientConnectionId | undefined;\n\n\t/**\n\t * Submits a signal to be sent to other clients.\n\t * @param address - Custom address for the signal.\n\t * @param type - Custom type of the signal.\n\t * @param content - Custom content of the signal. Should be a JSON serializable object or primitive via {@link https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify|JSON.stringify}.\n\t * @param targetClientId - When specified, the signal is only sent to the provided client id.\n\t *\n\t * Upon receipt of signal, {@link IContainerExtension.processSignal} will be called with the same\n\t * address, type, and content (less any non-{@link https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify|JSON.stringify}-able data).\n\t */\n\tsubmitAddressedSignal<T>(\n\t\taddress: string,\n\t\ttype: string,\n\t\tcontent: JsonSerializable<T>,\n\t\ttargetClientId?: ClientConnectionId,\n\t): void;\n}\n\n/**\n * Factory method to create an extension instance.\n *\n * Any such method provided to {@link ContainerExtensionStore.acquireExtension}\n * must use the same value for a given {@link ContainerExtensionId} so that an\n * `instanceof` check may be performed at runtime.\n *\n * @typeParam T - Type of extension to create\n * @typeParam TContext - Array of optional custom context\n *\n * @param runtime - Runtime for extension to work against\n * @param context - Custom context for extension.\n * @returns Record providing:\n * `interface` instance (type `T`) that is provided to caller of\n * {@link ContainerExtensionStore.acquireExtension} and\n * `extension` store/runtime uses to interact with extension.\n *\n * @internal\n */\nexport type ContainerExtensionFactory<T, TContext extends unknown[]> = new (\n\truntime: IExtensionRuntime,\n\t...context: TContext\n) => { readonly interface: T; readonly extension: IContainerExtension<TContext> };\n\n/**\n * Unique identifier for extension\n *\n * @remarks\n * A string known to all clients working with a certain ContainerExtension and unique\n * among ContainerExtensions. Not `/` may be used in the string. Recommend using\n * concatenation of: type of unique identifier, `:` (required), and unique identifier.\n *\n * @example Examples\n * ```typescript\n * \"guid:g0fl001d-1415-5000-c00l-g0fa54g0b1g1\"\n * \"name:@foo-scope_bar:v1\"\n * ```\n *\n * @internal\n */\nexport type ContainerExtensionId = `${string}:${string}`;\n\n/**\n * @sealed\n * @internal\n */\nexport interface ContainerExtensionStore {\n\t/**\n\t * Acquires an extension from store or adds new one.\n\t *\n\t * @param id - Identifier for the requested extension\n\t * @param factory - Factory to create the extension if not found\n\t * @returns The extension\n\t */\n\tacquireExtension<T, TContext extends unknown[]>(\n\t\tid: ContainerExtensionId,\n\t\tfactory: ContainerExtensionFactory<T, TContext>,\n\t\t...context: TContext\n\t): T;\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/container-definitions/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,YAAY,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAGrD,mBAAmB,0BAA0B,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/container-definitions/index.ts"],"names":[],"mappings":";AAAA;;;GAGG","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport type { IRuntimeInternal } from \"./runtime.js\";\n\n// eslint-disable-next-line no-restricted-syntax\nexport type * from \"./containerExtensions.js\";\n"]}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
|
-
* Licensed under the MIT License.
|
|
4
|
-
*/
|
|
5
|
-
import type { IRuntime } from "@fluidframework/container-definitions/internal";
|
|
6
|
-
import type { ContainerExtensionStore } from "./containerExtensions.js";
|
|
7
|
-
/**
|
|
8
|
-
* @internal
|
|
9
|
-
*/
|
|
10
|
-
export interface IRuntimeInternal extends IRuntime, ContainerExtensionStore {
|
|
11
|
-
}
|
|
12
|
-
//# sourceMappingURL=runtime.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/container-definitions/runtime.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gDAAgD,CAAC;AAE/E,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAExE;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,QAAQ,EAAE,uBAAuB;CAAG"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/container-definitions/runtime.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 { IRuntime } from \"@fluidframework/container-definitions/internal\";\n\nimport type { ContainerExtensionStore } from \"./containerExtensions.js\";\n\n/**\n * @internal\n */\nexport interface IRuntimeInternal extends IRuntime, ContainerExtensionStore {}\n"]}
|
|
@@ -1,137 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
|
-
* Licensed under the MIT License.
|
|
4
|
-
*/
|
|
5
|
-
import type { JsonDeserialized, JsonSerializable } from "@fluidframework/core-interfaces/internal";
|
|
6
|
-
/**
|
|
7
|
-
* While connected, the id of a client within a session.
|
|
8
|
-
*
|
|
9
|
-
* @internal
|
|
10
|
-
*/
|
|
11
|
-
export type ClientConnectionId = string;
|
|
12
|
-
/**
|
|
13
|
-
* Common interface between incoming and outgoing extension signals.
|
|
14
|
-
*
|
|
15
|
-
* @sealed
|
|
16
|
-
* @internal
|
|
17
|
-
*/
|
|
18
|
-
export interface IExtensionMessage<TType extends string = string, TContent = unknown> {
|
|
19
|
-
/**
|
|
20
|
-
* Message type
|
|
21
|
-
*/
|
|
22
|
-
type: TType;
|
|
23
|
-
/**
|
|
24
|
-
* Message content
|
|
25
|
-
*/
|
|
26
|
-
content: JsonDeserialized<TContent>;
|
|
27
|
-
/**
|
|
28
|
-
* The client ID that submitted the message.
|
|
29
|
-
* For server generated messages the clientId will be null.
|
|
30
|
-
*/
|
|
31
|
-
clientId: ClientConnectionId | null;
|
|
32
|
-
/**
|
|
33
|
-
* Client ID of the singular client the message is being (or has been) sent to.
|
|
34
|
-
* May only be specified when IConnect.supportedFeatures['submit_signals_v2'] is true, will throw otherwise.
|
|
35
|
-
*/
|
|
36
|
-
targetClientId?: ClientConnectionId;
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Defines requirements for a component to register with container as an extension.
|
|
40
|
-
*
|
|
41
|
-
* @internal
|
|
42
|
-
*/
|
|
43
|
-
export interface IContainerExtension<TContext extends unknown[]> {
|
|
44
|
-
/**
|
|
45
|
-
* Notifies the extension of a new use context.
|
|
46
|
-
*
|
|
47
|
-
* @param context - Context new reference to extension is acquired within
|
|
48
|
-
*/
|
|
49
|
-
onNewContext(...context: TContext): void;
|
|
50
|
-
/**
|
|
51
|
-
* Callback for signal sent by this extension.
|
|
52
|
-
*
|
|
53
|
-
* @param address - Address of the signal
|
|
54
|
-
* @param signal - Signal content and metadata
|
|
55
|
-
* @param local - True if signal was sent by this client
|
|
56
|
-
*/
|
|
57
|
-
processSignal?(address: string, signal: IExtensionMessage, local: boolean): void;
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Defines the runtime interface an extension may access.
|
|
61
|
-
* In most cases this is a subset of {@link @fluidframework/container-runtime-definitions#IContainerRuntime}.
|
|
62
|
-
*
|
|
63
|
-
* @sealed
|
|
64
|
-
* @internal
|
|
65
|
-
*/
|
|
66
|
-
export interface IExtensionRuntime {
|
|
67
|
-
/**
|
|
68
|
-
* {@inheritdoc @fluidframework/container-runtime-definitions#IContainerRuntime.clientId}
|
|
69
|
-
*/
|
|
70
|
-
get clientId(): ClientConnectionId | undefined;
|
|
71
|
-
/**
|
|
72
|
-
* Submits a signal to be sent to other clients.
|
|
73
|
-
* @param address - Custom address for the signal.
|
|
74
|
-
* @param type - Custom type of the signal.
|
|
75
|
-
* @param content - Custom content of the signal. Should be a JSON serializable object or primitive via {@link https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify|JSON.stringify}.
|
|
76
|
-
* @param targetClientId - When specified, the signal is only sent to the provided client id.
|
|
77
|
-
*
|
|
78
|
-
* Upon receipt of signal, {@link IContainerExtension.processSignal} will be called with the same
|
|
79
|
-
* address, type, and content (less any non-{@link https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify|JSON.stringify}-able data).
|
|
80
|
-
*/
|
|
81
|
-
submitAddressedSignal<T>(address: string, type: string, content: JsonSerializable<T>, targetClientId?: ClientConnectionId): void;
|
|
82
|
-
}
|
|
83
|
-
/**
|
|
84
|
-
* Factory method to create an extension instance.
|
|
85
|
-
*
|
|
86
|
-
* Any such method provided to {@link ContainerExtensionStore.acquireExtension}
|
|
87
|
-
* must use the same value for a given {@link ContainerExtensionId} so that an
|
|
88
|
-
* `instanceof` check may be performed at runtime.
|
|
89
|
-
*
|
|
90
|
-
* @typeParam T - Type of extension to create
|
|
91
|
-
* @typeParam TContext - Array of optional custom context
|
|
92
|
-
*
|
|
93
|
-
* @param runtime - Runtime for extension to work against
|
|
94
|
-
* @param context - Custom context for extension.
|
|
95
|
-
* @returns Record providing:
|
|
96
|
-
* `interface` instance (type `T`) that is provided to caller of
|
|
97
|
-
* {@link ContainerExtensionStore.acquireExtension} and
|
|
98
|
-
* `extension` store/runtime uses to interact with extension.
|
|
99
|
-
*
|
|
100
|
-
* @internal
|
|
101
|
-
*/
|
|
102
|
-
export type ContainerExtensionFactory<T, TContext extends unknown[]> = new (runtime: IExtensionRuntime, ...context: TContext) => {
|
|
103
|
-
readonly interface: T;
|
|
104
|
-
readonly extension: IContainerExtension<TContext>;
|
|
105
|
-
};
|
|
106
|
-
/**
|
|
107
|
-
* Unique identifier for extension
|
|
108
|
-
*
|
|
109
|
-
* @remarks
|
|
110
|
-
* A string known to all clients working with a certain ContainerExtension and unique
|
|
111
|
-
* among ContainerExtensions. Not `/` may be used in the string. Recommend using
|
|
112
|
-
* concatenation of: type of unique identifier, `:` (required), and unique identifier.
|
|
113
|
-
*
|
|
114
|
-
* @example Examples
|
|
115
|
-
* ```typescript
|
|
116
|
-
* "guid:g0fl001d-1415-5000-c00l-g0fa54g0b1g1"
|
|
117
|
-
* "name:@foo-scope_bar:v1"
|
|
118
|
-
* ```
|
|
119
|
-
*
|
|
120
|
-
* @internal
|
|
121
|
-
*/
|
|
122
|
-
export type ContainerExtensionId = `${string}:${string}`;
|
|
123
|
-
/**
|
|
124
|
-
* @sealed
|
|
125
|
-
* @internal
|
|
126
|
-
*/
|
|
127
|
-
export interface ContainerExtensionStore {
|
|
128
|
-
/**
|
|
129
|
-
* Acquires an extension from store or adds new one.
|
|
130
|
-
*
|
|
131
|
-
* @param id - Identifier for the requested extension
|
|
132
|
-
* @param factory - Factory to create the extension if not found
|
|
133
|
-
* @returns The extension
|
|
134
|
-
*/
|
|
135
|
-
acquireExtension<T, TContext extends unknown[]>(id: ContainerExtensionId, factory: ContainerExtensionFactory<T, TContext>, ...context: TContext): T;
|
|
136
|
-
}
|
|
137
|
-
//# sourceMappingURL=containerExtensions.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"containerExtensions.d.ts","sourceRoot":"","sources":["../../src/container-definitions/containerExtensions.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACX,gBAAgB,EAChB,gBAAgB,EAChB,MAAM,0CAA0C,CAAC;AAElD;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAExC;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM,EAAE,QAAQ,GAAG,OAAO;IACnF;;OAEG;IACH,IAAI,EAAE,KAAK,CAAC;IAEZ;;OAEG;IACH,OAAO,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAEpC;;;OAGG;IAEH,QAAQ,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAEpC;;;OAGG;IACH,cAAc,CAAC,EAAE,kBAAkB,CAAC;CACpC;AAED;;;;GAIG;AACH,MAAM,WAAW,mBAAmB,CAAC,QAAQ,SAAS,OAAO,EAAE;IAC9D;;;;OAIG;IACH,YAAY,CAAC,GAAG,OAAO,EAAE,QAAQ,GAAG,IAAI,CAAC;IAEzC;;;;;;OAMG;IACH,aAAa,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;CACjF;AAED;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IACjC;;OAEG;IACH,IAAI,QAAQ,IAAI,kBAAkB,GAAG,SAAS,CAAC;IAE/C;;;;;;;;;OASG;IACH,qBAAqB,CAAC,CAAC,EACtB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAC5B,cAAc,CAAC,EAAE,kBAAkB,GACjC,IAAI,CAAC;CACR;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,MAAM,yBAAyB,CAAC,CAAC,EAAE,QAAQ,SAAS,OAAO,EAAE,IAAI,KACtE,OAAO,EAAE,iBAAiB,EAC1B,GAAG,OAAO,EAAE,QAAQ,KAChB;IAAE,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAA;CAAE,CAAC;AAElF;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,oBAAoB,GAAG,GAAG,MAAM,IAAI,MAAM,EAAE,CAAC;AAEzD;;;GAGG;AACH,MAAM,WAAW,uBAAuB;IACvC;;;;;;OAMG;IACH,gBAAgB,CAAC,CAAC,EAAE,QAAQ,SAAS,OAAO,EAAE,EAC7C,EAAE,EAAE,oBAAoB,EACxB,OAAO,EAAE,yBAAyB,CAAC,CAAC,EAAE,QAAQ,CAAC,EAC/C,GAAG,OAAO,EAAE,QAAQ,GAClB,CAAC,CAAC;CACL"}
|