@fluid-experimental/data-objects 0.59.2001 → 0.59.3000-66610
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -1
- package/dist/index.js.map +1 -1
- package/dist/signalManager/signalManager.d.ts.map +1 -1
- package/dist/signalManager/signalManager.js.map +1 -1
- package/lib/index.d.ts +0 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +0 -1
- package/lib/index.js.map +1 -1
- package/lib/signalManager/signalManager.d.ts.map +1 -1
- package/lib/signalManager/signalManager.js.map +1 -1
- package/package.json +7 -7
- package/src/index.ts +0 -1
- package/src/signalManager/signalManager.ts +2 -3
- package/dist/kvpair/DataObject.d.ts +0 -57
- package/dist/kvpair/DataObject.d.ts.map +0 -1
- package/dist/kvpair/DataObject.js +0 -56
- package/dist/kvpair/DataObject.js.map +0 -1
- package/dist/kvpair/index.d.ts +0 -6
- package/dist/kvpair/index.d.ts.map +0 -1
- package/dist/kvpair/index.js +0 -6
- package/dist/kvpair/index.js.map +0 -1
- package/lib/kvpair/DataObject.d.ts +0 -57
- package/lib/kvpair/DataObject.d.ts.map +0 -1
- package/lib/kvpair/DataObject.js +0 -56
- package/lib/kvpair/DataObject.js.map +0 -1
- package/lib/kvpair/index.d.ts +0 -6
- package/lib/kvpair/index.d.ts.map +0 -1
- package/lib/kvpair/index.js +0 -6
- package/lib/kvpair/index.js.map +0 -1
- package/src/kvpair/DataObject.ts +0 -99
- package/src/kvpair/index.ts +0 -6
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,iBAAiB,CAAC"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,iBAAiB,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport * from \"./signalManager\";\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signalManager.d.ts","sourceRoot":"","sources":["../../src/signalManager/signalManager.ts"],"names":[],"mappings":"AAAA;;;GAGG;;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AACjE,OAAO,EAAU,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,EAAE,QAAQ,EAAE,MAAM,uCAAuC,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAM5E,oBAAY,cAAc,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,KAAK,IAAI,CAAC;AAE3F;;;;GAIG;AACH,MAAM,WAAW,SAAS;IACtB;;;;;;OAMG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,GAAG,SAAS,CAAC;IACjE;;;;;;MAME;IACH,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,GAAG,CAAC,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC9F;;;;OAIG;IACH,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,OAAE;IAErD;;;;;;;OAOG;IACH,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,GAAG,SAAS,CAAC;IAC9E;;;;;;OAMG;IACH,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,GAAG,SAAS,CAAC;IAC/E;;;;;OAKG;IACH,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,OAAE;CAC5D;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC7B,SAAS,EAAE,OAAO,CAAC;IACnB,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,qBAAqB,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,OAAE;IACxF,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,IAAI,CAAC;CAClD;AAED;;;;;;;;GAQG;AACH,qBAAa,QAAS,SAAQ,iBAAiB,CAAC,WAAW,CAAE,YAAW,SAAS;IAMzE;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAR7B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsB;IAE9C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAqB;;IAG3C;;OAEG;IACc,QAAQ,EAAE,gBAAgB;IAC3C;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM;IAkBtB,OAAO,CAAC,oBAAoB;IAI5B,OAAO,CAAC,sBAAsB;IAMvB,QAAQ,CACX,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,cAAc,GACzB,SAAS;IAML,SAAS,CACZ,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,cAAc,GACzB,SAAS;IAML,YAAY,CACf,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,QAAQ;IAQf,oBAAoB,CACvB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,cAAc,GACzB,SAAS;IAKL,qBAAqB,CACxB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,cAAc,GACzB,SAAS;IAKL,gBAAgB,CACnB,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,QAAQ;CAKzB;AAED;;;;;;GAMG;AACH,qBAAa,aAAc,SAAQ,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"signalManager.d.ts","sourceRoot":"","sources":["../../src/signalManager/signalManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signalManager.js","sourceRoot":"","sources":["../../src/signalManager/signalManager.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { EventEmitter } from \"events\";\nimport { DataObject, DataObjectFactory } from \"@fluidframework/aqueduct\";\nimport { IErrorEvent } from \"@fluidframework/common-definitions\";\nimport { assert, TypedEventEmitter } from \"@fluidframework/common-utils\";\nimport { Jsonable } from \"@fluidframework/datastore-definitions\";\nimport { IInboundSignalMessage } from \"@fluidframework/runtime-definitions\";\n\n// TODO:\n// add way to mark with current sequence number for ordering signals relative to ops\n// throttling and batching\n\nexport type SignalListener = (clientId: string, local: boolean, payload: Jsonable) => void;\n\n/**\n * ISignaler defines an interface for working with signals that is similar to the more common\n * eventing patterns of EventEmitter. In addition to sending and responding to signals, it\n * provides explicit methods around signal requests to other connected clients.\n */\nexport interface ISignaler {\n /**\n * Adds a listener for the specified signal. It behaves in the same way as EventEmitter's `on`\n * method regarding multiple registrations, callback order, etc.\n * @param signalName - The name of the signal\n * @param listener - The callback signal handler to add\n * @returns This ISignaler\n */\n onSignal(signalName: string, listener: SignalListener): ISignaler;\n /**\n * Remove a listener for the specified signal. It behaves in the same way as EventEmitter's\n * `off` method regarding multiple registrations, removal order, etc.\n * @param signalName - The name of the signal\n * @param listener - The callback signal handler to remove\n * @returns This ISignaler\n */\n offSignal(signalName: string, listener: SignalListener | ((message: any) => void)): ISignaler;\n /**\n * Send a signal with payload to its connected listeners.\n * @param signalName - The name of the signal\n * @param payload - The data to send with the signal\n */\n submitSignal(signalName: string, payload?: Jsonable);\n\n /**\n * Adds a listener for a broadcast request. The listener is called when a client calls\n * `requestBroadcast` for that signal. It behaves in the same way as EventEmitter's `on`\n * method regarding multiple registrations, callback order, etc.\n * @param signalName - The signal for which broadcast is requested\n * @param listener - The callback for the broadcast request to add\n * @returns This ISignaler\n */\n onBroadcastRequested(signalName: string, listener: SignalListener): ISignaler;\n /**\n * Remove a listener for a broadcast request. It behaves in the same way as EventEmitter's\n * `off` method regarding multiple registrations, removal order, etc.\n * @param signalName - The signal for which broadcast is requested\n * @param listener - The callback for the broadcast request to remove\n * @returns This ISignaler\n */\n offBroadcastRequested(signalName: string, listener: SignalListener): ISignaler;\n /**\n * Request broadcast of a signal from other connected clients. Other clients must have\n * registered to respond to broadcast requests using the `onBroadcastRequested` method.\n * @param signalName - The signal for which broadcast is requested\n * @param payload - A payload to send with the broadcast request\n */\n requestBroadcast(signalName: string, payload?: Jsonable);\n}\n\n/**\n * Duck type of something that provides the expected signalling functionality:\n * A way to verify we can signal, a way to send a signal, and a way to listen for incoming signals\n */\nexport interface IRuntimeSignaler {\n connected: boolean;\n on(event: \"signal\", listener: (message: IInboundSignalMessage, local: boolean) => void);\n submitSignal(type: string, content: any): void;\n}\n\n/**\n * Note: currently experimental and under development\n *\n * Helper class to assist common scenarios around working with signals. Signaler wraps a runtime\n * object with signaling functionality (e.g. ContainerRuntime or FluidDataStoreRuntime) and can\n * then be used in place of the original signaler. It uses a separate internal EventEmitter to\n * manage callbacks, and thus will reflect that behavior with regards to callback registration and\n * deregistration.\n */\nexport class Signaler extends TypedEventEmitter<IErrorEvent> implements ISignaler {\n private readonly emitter = new EventEmitter();\n\n private readonly managerId: string | undefined;\n\n constructor(\n /**\n * Object to wrap that can submit and listen to signals\n */\n private readonly signaler: IRuntimeSignaler,\n /**\n * Optional id to assign to this manager that will be attached to\n * signal names. Useful to avoid collisions if there are multiple\n * signal users at the Container level\n */\n managerId?: string,\n ) {\n super();\n this.emitter.on(\"error\", (error) => {\n this.emit(\"error\", error);\n });\n this.managerId = managerId ? `#${managerId}` : undefined;\n this.signaler.on(\"signal\", (message: IInboundSignalMessage, local: boolean) => {\n const clientId = message.clientId;\n // Only call listeners when the runtime is connected and if the signal has an\n // identifiable sender clientId. The listener is responsible for deciding how\n // it wants to handle local/remote signals\n if (this.signaler.connected && clientId !== null) {\n this.emitter.emit(message.type, clientId, local, message.content);\n }\n });\n }\n\n private getManagerSignalName(signalName: string): string {\n return this.managerId ? `${signalName}${this.managerId}` : signalName;\n }\n\n private getBroadcastSignalName(signalName: string): string {\n return `${signalName}#req`;\n }\n\n // ISignaler methods\n\n public onSignal(\n signalName: string,\n listener: SignalListener,\n ): ISignaler {\n const managerSignalName = this.getManagerSignalName(signalName);\n this.emitter.on(managerSignalName, listener);\n return this;\n }\n\n public offSignal(\n signalName: string,\n listener: SignalListener,\n ): ISignaler {\n const managerSignalName = this.getManagerSignalName(signalName);\n this.emitter.off(managerSignalName, listener);\n return this;\n }\n\n public submitSignal(\n signalName: string,\n payload?: Jsonable,\n ) {\n const managerSignalName = this.getManagerSignalName(signalName);\n if (this.signaler.connected) {\n this.signaler.submitSignal(managerSignalName, payload);\n }\n }\n\n public onBroadcastRequested(\n signalName: string,\n listener: SignalListener,\n ): ISignaler {\n const broadcastSignalName = this.getBroadcastSignalName(signalName);\n return this.onSignal(broadcastSignalName, listener);\n }\n\n public offBroadcastRequested(\n signalName: string,\n listener: SignalListener,\n ): ISignaler {\n const broadcastSignalName = this.getBroadcastSignalName(signalName);\n return this.offSignal(broadcastSignalName, listener);\n }\n\n public requestBroadcast(\n signalName: string,\n payload?: Jsonable,\n ) {\n const broadcastSignalName = this.getBroadcastSignalName(signalName);\n this.submitSignal(broadcastSignalName, payload);\n }\n}\n\n/**\n * Note: currently experimental and under development\n *\n * DataObject implementation of ISignaler for fluid-static plug-and-play. Allows fluid-static\n * users to get an ISignaler without a custom DO. Where possible, consumers should instead\n * create a Signaler themselves instead of using the DO wrapper to avoid the DO overhead.\n */\nexport class SignalManager extends DataObject<{Events: IErrorEvent}> implements EventEmitter, ISignaler {\n private _manager: Signaler | undefined;\n private get manager(): Signaler {\n assert(this._manager !== undefined, 0x24b /* \"internal signaler should be defined\" */);\n return this._manager;\n }\n\n public static get Name() { return \"@fluid-example/signal-manager\"; }\n\n public static readonly factory = new DataObjectFactory\n (\n SignalManager.Name,\n SignalManager,\n [],\n {},\n );\n\n protected async hasInitialized() {\n this._manager = new Signaler(this.runtime);\n this.manager.on(\"error\", (error) => {\n this.emit(\"error\", error);\n });\n }\n\n // ISignaler methods Note these are all passthroughs\n\n public onSignal(\n signalName: string,\n listener: SignalListener,\n ): ISignaler {\n this.manager.onSignal(signalName, listener);\n return this;\n }\n\n public offSignal(\n signalName: string,\n listener: SignalListener,\n ): ISignaler {\n this.manager.offSignal(signalName, listener);\n return this;\n }\n\n public submitSignal(\n signalName: string,\n payload?: Jsonable,\n ) {\n this.manager.submitSignal(signalName, payload);\n }\n\n public onBroadcastRequested(\n signalName: string,\n listener: SignalListener,\n ): ISignaler {\n this.manager.onBroadcastRequested(signalName, listener);\n return this;\n }\n\n public offBroadcastRequested(\n signalName: string,\n listener: SignalListener,\n ): ISignaler {\n this.manager.offBroadcastRequested(signalName, listener);\n return this;\n }\n\n public requestBroadcast(\n signalName: string,\n payload?: Jsonable,\n ) {\n this.manager.requestBroadcast(signalName, payload);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"signalManager.js","sourceRoot":"","sources":["../../src/signalManager/signalManager.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { EventEmitter } from \"events\";\nimport { DataObject, DataObjectFactory } from \"@fluidframework/aqueduct\";\nimport { IErrorEvent } from \"@fluidframework/common-definitions\";\nimport { assert, TypedEventEmitter } from \"@fluidframework/common-utils\";\nimport { Jsonable } from \"@fluidframework/datastore-definitions\";\nimport { IInboundSignalMessage } from \"@fluidframework/runtime-definitions\";\n\n// TODO:\n// add way to mark with current sequence number for ordering signals relative to ops\n// throttling and batching\n\nexport type SignalListener = (clientId: string, local: boolean, payload: Jsonable) => void;\n\n/**\n * ISignaler defines an interface for working with signals that is similar to the more common\n * eventing patterns of EventEmitter. In addition to sending and responding to signals, it\n * provides explicit methods around signal requests to other connected clients.\n */\nexport interface ISignaler {\n /**\n * Adds a listener for the specified signal. It behaves in the same way as EventEmitter's `on`\n * method regarding multiple registrations, callback order, etc.\n * @param signalName - The name of the signal\n * @param listener - The callback signal handler to add\n * @returns This ISignaler\n */\n onSignal(signalName: string, listener: SignalListener): ISignaler;\n /**\n * Remove a listener for the specified signal. It behaves in the same way as EventEmitter's\n * `off` method regarding multiple registrations, removal order, etc.\n * @param signalName - The name of the signal\n * @param listener - The callback signal handler to remove\n * @returns This ISignaler\n */\n offSignal(signalName: string, listener: SignalListener | ((message: any) => void)): ISignaler;\n /**\n * Send a signal with payload to its connected listeners.\n * @param signalName - The name of the signal\n * @param payload - The data to send with the signal\n */\n submitSignal(signalName: string, payload?: Jsonable);\n\n /**\n * Adds a listener for a broadcast request. The listener is called when a client calls\n * `requestBroadcast` for that signal. It behaves in the same way as EventEmitter's `on`\n * method regarding multiple registrations, callback order, etc.\n * @param signalName - The signal for which broadcast is requested\n * @param listener - The callback for the broadcast request to add\n * @returns This ISignaler\n */\n onBroadcastRequested(signalName: string, listener: SignalListener): ISignaler;\n /**\n * Remove a listener for a broadcast request. It behaves in the same way as EventEmitter's\n * `off` method regarding multiple registrations, removal order, etc.\n * @param signalName - The signal for which broadcast is requested\n * @param listener - The callback for the broadcast request to remove\n * @returns This ISignaler\n */\n offBroadcastRequested(signalName: string, listener: SignalListener): ISignaler;\n /**\n * Request broadcast of a signal from other connected clients. Other clients must have\n * registered to respond to broadcast requests using the `onBroadcastRequested` method.\n * @param signalName - The signal for which broadcast is requested\n * @param payload - A payload to send with the broadcast request\n */\n requestBroadcast(signalName: string, payload?: Jsonable);\n}\n\n/**\n * Duck type of something that provides the expected signalling functionality:\n * A way to verify we can signal, a way to send a signal, and a way to listen for incoming signals\n */\nexport interface IRuntimeSignaler {\n connected: boolean;\n on(event: \"signal\", listener: (message: IInboundSignalMessage, local: boolean) => void);\n submitSignal(type: string, content: any): void;\n}\n\n/**\n * Note: currently experimental and under development\n *\n * Helper class to assist common scenarios around working with signals. Signaler wraps a runtime\n * object with signaling functionality (e.g. ContainerRuntime or FluidDataStoreRuntime) and can\n * then be used in place of the original signaler. It uses a separate internal EventEmitter to\n * manage callbacks, and thus will reflect that behavior with regards to callback registration and\n * deregistration.\n */\nexport class Signaler extends TypedEventEmitter<IErrorEvent> implements ISignaler {\n private readonly emitter = new EventEmitter();\n\n private readonly managerId: string | undefined;\n\n constructor(\n /**\n * Object to wrap that can submit and listen to signals\n */\n private readonly signaler: IRuntimeSignaler,\n /**\n * Optional id to assign to this manager that will be attached to\n * signal names. Useful to avoid collisions if there are multiple\n * signal users at the Container level\n */\n managerId?: string,\n ) {\n super();\n this.emitter.on(\"error\", (error) => {\n this.emit(\"error\", error);\n });\n this.managerId = managerId ? `#${managerId}` : undefined;\n this.signaler.on(\"signal\", (message: IInboundSignalMessage, local: boolean) => {\n const clientId = message.clientId;\n // Only call listeners when the runtime is connected and if the signal has an\n // identifiable sender clientId. The listener is responsible for deciding how\n // it wants to handle local/remote signals\n if (this.signaler.connected && clientId !== null) {\n this.emitter.emit(message.type, clientId, local, message.content);\n }\n });\n }\n\n private getManagerSignalName(signalName: string): string {\n return this.managerId ? `${signalName}${this.managerId}` : signalName;\n }\n\n private getBroadcastSignalName(signalName: string): string {\n return `${signalName}#req`;\n }\n\n // ISignaler methods\n\n public onSignal(\n signalName: string,\n listener: SignalListener,\n ): ISignaler {\n const managerSignalName = this.getManagerSignalName(signalName);\n this.emitter.on(managerSignalName, listener);\n return this;\n }\n\n public offSignal(\n signalName: string,\n listener: SignalListener,\n ): ISignaler {\n const managerSignalName = this.getManagerSignalName(signalName);\n this.emitter.off(managerSignalName, listener);\n return this;\n }\n\n public submitSignal(\n signalName: string,\n payload?: Jsonable,\n ) {\n const managerSignalName = this.getManagerSignalName(signalName);\n if (this.signaler.connected) {\n this.signaler.submitSignal(managerSignalName, payload);\n }\n }\n\n public onBroadcastRequested(\n signalName: string,\n listener: SignalListener,\n ): ISignaler {\n const broadcastSignalName = this.getBroadcastSignalName(signalName);\n return this.onSignal(broadcastSignalName, listener);\n }\n\n public offBroadcastRequested(\n signalName: string,\n listener: SignalListener,\n ): ISignaler {\n const broadcastSignalName = this.getBroadcastSignalName(signalName);\n return this.offSignal(broadcastSignalName, listener);\n }\n\n public requestBroadcast(\n signalName: string,\n payload?: Jsonable,\n ) {\n const broadcastSignalName = this.getBroadcastSignalName(signalName);\n this.submitSignal(broadcastSignalName, payload);\n }\n}\n\n/**\n * Note: currently experimental and under development\n *\n * DataObject implementation of ISignaler for fluid-static plug-and-play. Allows fluid-static\n * users to get an ISignaler without a custom DO. Where possible, consumers should instead\n * create a Signaler themselves instead of using the DO wrapper to avoid the DO overhead.\n */\nexport class SignalManager extends DataObject<{ Events: IErrorEvent; }> implements EventEmitter, ISignaler {\n private _manager: Signaler | undefined;\n private get manager(): Signaler {\n assert(this._manager !== undefined, 0x24b /* \"internal signaler should be defined\" */);\n return this._manager;\n }\n\n public static get Name() { return \"@fluid-example/signal-manager\"; }\n\n public static readonly factory = new DataObjectFactory(\n SignalManager.Name,\n SignalManager,\n [],\n {},\n );\n\n protected async hasInitialized() {\n this._manager = new Signaler(this.runtime);\n this.manager.on(\"error\", (error) => {\n this.emit(\"error\", error);\n });\n }\n\n // ISignaler methods Note these are all passthroughs\n\n public onSignal(\n signalName: string,\n listener: SignalListener,\n ): ISignaler {\n this.manager.onSignal(signalName, listener);\n return this;\n }\n\n public offSignal(\n signalName: string,\n listener: SignalListener,\n ): ISignaler {\n this.manager.offSignal(signalName, listener);\n return this;\n }\n\n public submitSignal(\n signalName: string,\n payload?: Jsonable,\n ) {\n this.manager.submitSignal(signalName, payload);\n }\n\n public onBroadcastRequested(\n signalName: string,\n listener: SignalListener,\n ): ISignaler {\n this.manager.onBroadcastRequested(signalName, listener);\n return this;\n }\n\n public offBroadcastRequested(\n signalName: string,\n listener: SignalListener,\n ): ISignaler {\n this.manager.offBroadcastRequested(signalName, listener);\n return this;\n }\n\n public requestBroadcast(\n signalName: string,\n payload?: Jsonable,\n ) {\n this.manager.requestBroadcast(signalName, payload);\n }\n}\n"]}
|
package/lib/index.d.ts
CHANGED
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,iBAAiB,CAAC"}
|
package/lib/index.js
CHANGED
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,iBAAiB,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport * from \"./signalManager\";\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signalManager.d.ts","sourceRoot":"","sources":["../../src/signalManager/signalManager.ts"],"names":[],"mappings":"AAAA;;;GAGG;;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AACjE,OAAO,EAAU,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,EAAE,QAAQ,EAAE,MAAM,uCAAuC,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAM5E,oBAAY,cAAc,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,KAAK,IAAI,CAAC;AAE3F;;;;GAIG;AACH,MAAM,WAAW,SAAS;IACtB;;;;;;OAMG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,GAAG,SAAS,CAAC;IACjE;;;;;;MAME;IACH,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,GAAG,CAAC,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC9F;;;;OAIG;IACH,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,OAAE;IAErD;;;;;;;OAOG;IACH,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,GAAG,SAAS,CAAC;IAC9E;;;;;;OAMG;IACH,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,GAAG,SAAS,CAAC;IAC/E;;;;;OAKG;IACH,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,OAAE;CAC5D;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC7B,SAAS,EAAE,OAAO,CAAC;IACnB,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,qBAAqB,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,OAAE;IACxF,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,IAAI,CAAC;CAClD;AAED;;;;;;;;GAQG;AACH,qBAAa,QAAS,SAAQ,iBAAiB,CAAC,WAAW,CAAE,YAAW,SAAS;IAMzE;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAR7B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsB;IAE9C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAqB;;IAG3C;;OAEG;IACc,QAAQ,EAAE,gBAAgB;IAC3C;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM;IAkBtB,OAAO,CAAC,oBAAoB;IAI5B,OAAO,CAAC,sBAAsB;IAMvB,QAAQ,CACX,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,cAAc,GACzB,SAAS;IAML,SAAS,CACZ,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,cAAc,GACzB,SAAS;IAML,YAAY,CACf,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,QAAQ;IAQf,oBAAoB,CACvB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,cAAc,GACzB,SAAS;IAKL,qBAAqB,CACxB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,cAAc,GACzB,SAAS;IAKL,gBAAgB,CACnB,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,QAAQ;CAKzB;AAED;;;;;;GAMG;AACH,qBAAa,aAAc,SAAQ,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"signalManager.d.ts","sourceRoot":"","sources":["../../src/signalManager/signalManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signalManager.js","sourceRoot":"","sources":["../../src/signalManager/signalManager.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { EventEmitter } from \"events\";\nimport { DataObject, DataObjectFactory } from \"@fluidframework/aqueduct\";\nimport { IErrorEvent } from \"@fluidframework/common-definitions\";\nimport { assert, TypedEventEmitter } from \"@fluidframework/common-utils\";\nimport { Jsonable } from \"@fluidframework/datastore-definitions\";\nimport { IInboundSignalMessage } from \"@fluidframework/runtime-definitions\";\n\n// TODO:\n// add way to mark with current sequence number for ordering signals relative to ops\n// throttling and batching\n\nexport type SignalListener = (clientId: string, local: boolean, payload: Jsonable) => void;\n\n/**\n * ISignaler defines an interface for working with signals that is similar to the more common\n * eventing patterns of EventEmitter. In addition to sending and responding to signals, it\n * provides explicit methods around signal requests to other connected clients.\n */\nexport interface ISignaler {\n /**\n * Adds a listener for the specified signal. It behaves in the same way as EventEmitter's `on`\n * method regarding multiple registrations, callback order, etc.\n * @param signalName - The name of the signal\n * @param listener - The callback signal handler to add\n * @returns This ISignaler\n */\n onSignal(signalName: string, listener: SignalListener): ISignaler;\n /**\n * Remove a listener for the specified signal. It behaves in the same way as EventEmitter's\n * `off` method regarding multiple registrations, removal order, etc.\n * @param signalName - The name of the signal\n * @param listener - The callback signal handler to remove\n * @returns This ISignaler\n */\n offSignal(signalName: string, listener: SignalListener | ((message: any) => void)): ISignaler;\n /**\n * Send a signal with payload to its connected listeners.\n * @param signalName - The name of the signal\n * @param payload - The data to send with the signal\n */\n submitSignal(signalName: string, payload?: Jsonable);\n\n /**\n * Adds a listener for a broadcast request. The listener is called when a client calls\n * `requestBroadcast` for that signal. It behaves in the same way as EventEmitter's `on`\n * method regarding multiple registrations, callback order, etc.\n * @param signalName - The signal for which broadcast is requested\n * @param listener - The callback for the broadcast request to add\n * @returns This ISignaler\n */\n onBroadcastRequested(signalName: string, listener: SignalListener): ISignaler;\n /**\n * Remove a listener for a broadcast request. It behaves in the same way as EventEmitter's\n * `off` method regarding multiple registrations, removal order, etc.\n * @param signalName - The signal for which broadcast is requested\n * @param listener - The callback for the broadcast request to remove\n * @returns This ISignaler\n */\n offBroadcastRequested(signalName: string, listener: SignalListener): ISignaler;\n /**\n * Request broadcast of a signal from other connected clients. Other clients must have\n * registered to respond to broadcast requests using the `onBroadcastRequested` method.\n * @param signalName - The signal for which broadcast is requested\n * @param payload - A payload to send with the broadcast request\n */\n requestBroadcast(signalName: string, payload?: Jsonable);\n}\n\n/**\n * Duck type of something that provides the expected signalling functionality:\n * A way to verify we can signal, a way to send a signal, and a way to listen for incoming signals\n */\nexport interface IRuntimeSignaler {\n connected: boolean;\n on(event: \"signal\", listener: (message: IInboundSignalMessage, local: boolean) => void);\n submitSignal(type: string, content: any): void;\n}\n\n/**\n * Note: currently experimental and under development\n *\n * Helper class to assist common scenarios around working with signals. Signaler wraps a runtime\n * object with signaling functionality (e.g. ContainerRuntime or FluidDataStoreRuntime) and can\n * then be used in place of the original signaler. It uses a separate internal EventEmitter to\n * manage callbacks, and thus will reflect that behavior with regards to callback registration and\n * deregistration.\n */\nexport class Signaler extends TypedEventEmitter<IErrorEvent> implements ISignaler {\n private readonly emitter = new EventEmitter();\n\n private readonly managerId: string | undefined;\n\n constructor(\n /**\n * Object to wrap that can submit and listen to signals\n */\n private readonly signaler: IRuntimeSignaler,\n /**\n * Optional id to assign to this manager that will be attached to\n * signal names. Useful to avoid collisions if there are multiple\n * signal users at the Container level\n */\n managerId?: string,\n ) {\n super();\n this.emitter.on(\"error\", (error) => {\n this.emit(\"error\", error);\n });\n this.managerId = managerId ? `#${managerId}` : undefined;\n this.signaler.on(\"signal\", (message: IInboundSignalMessage, local: boolean) => {\n const clientId = message.clientId;\n // Only call listeners when the runtime is connected and if the signal has an\n // identifiable sender clientId. The listener is responsible for deciding how\n // it wants to handle local/remote signals\n if (this.signaler.connected && clientId !== null) {\n this.emitter.emit(message.type, clientId, local, message.content);\n }\n });\n }\n\n private getManagerSignalName(signalName: string): string {\n return this.managerId ? `${signalName}${this.managerId}` : signalName;\n }\n\n private getBroadcastSignalName(signalName: string): string {\n return `${signalName}#req`;\n }\n\n // ISignaler methods\n\n public onSignal(\n signalName: string,\n listener: SignalListener,\n ): ISignaler {\n const managerSignalName = this.getManagerSignalName(signalName);\n this.emitter.on(managerSignalName, listener);\n return this;\n }\n\n public offSignal(\n signalName: string,\n listener: SignalListener,\n ): ISignaler {\n const managerSignalName = this.getManagerSignalName(signalName);\n this.emitter.off(managerSignalName, listener);\n return this;\n }\n\n public submitSignal(\n signalName: string,\n payload?: Jsonable,\n ) {\n const managerSignalName = this.getManagerSignalName(signalName);\n if (this.signaler.connected) {\n this.signaler.submitSignal(managerSignalName, payload);\n }\n }\n\n public onBroadcastRequested(\n signalName: string,\n listener: SignalListener,\n ): ISignaler {\n const broadcastSignalName = this.getBroadcastSignalName(signalName);\n return this.onSignal(broadcastSignalName, listener);\n }\n\n public offBroadcastRequested(\n signalName: string,\n listener: SignalListener,\n ): ISignaler {\n const broadcastSignalName = this.getBroadcastSignalName(signalName);\n return this.offSignal(broadcastSignalName, listener);\n }\n\n public requestBroadcast(\n signalName: string,\n payload?: Jsonable,\n ) {\n const broadcastSignalName = this.getBroadcastSignalName(signalName);\n this.submitSignal(broadcastSignalName, payload);\n }\n}\n\n/**\n * Note: currently experimental and under development\n *\n * DataObject implementation of ISignaler for fluid-static plug-and-play. Allows fluid-static\n * users to get an ISignaler without a custom DO. Where possible, consumers should instead\n * create a Signaler themselves instead of using the DO wrapper to avoid the DO overhead.\n */\nexport class SignalManager extends DataObject<{Events: IErrorEvent}> implements EventEmitter, ISignaler {\n private _manager: Signaler | undefined;\n private get manager(): Signaler {\n assert(this._manager !== undefined, 0x24b /* \"internal signaler should be defined\" */);\n return this._manager;\n }\n\n public static get Name() { return \"@fluid-example/signal-manager\"; }\n\n public static readonly factory = new DataObjectFactory\n (\n SignalManager.Name,\n SignalManager,\n [],\n {},\n );\n\n protected async hasInitialized() {\n this._manager = new Signaler(this.runtime);\n this.manager.on(\"error\", (error) => {\n this.emit(\"error\", error);\n });\n }\n\n // ISignaler methods Note these are all passthroughs\n\n public onSignal(\n signalName: string,\n listener: SignalListener,\n ): ISignaler {\n this.manager.onSignal(signalName, listener);\n return this;\n }\n\n public offSignal(\n signalName: string,\n listener: SignalListener,\n ): ISignaler {\n this.manager.offSignal(signalName, listener);\n return this;\n }\n\n public submitSignal(\n signalName: string,\n payload?: Jsonable,\n ) {\n this.manager.submitSignal(signalName, payload);\n }\n\n public onBroadcastRequested(\n signalName: string,\n listener: SignalListener,\n ): ISignaler {\n this.manager.onBroadcastRequested(signalName, listener);\n return this;\n }\n\n public offBroadcastRequested(\n signalName: string,\n listener: SignalListener,\n ): ISignaler {\n this.manager.offBroadcastRequested(signalName, listener);\n return this;\n }\n\n public requestBroadcast(\n signalName: string,\n payload?: Jsonable,\n ) {\n this.manager.requestBroadcast(signalName, payload);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"signalManager.js","sourceRoot":"","sources":["../../src/signalManager/signalManager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAEzE,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AA2EzE;;;;;;;;GAQG;AACH,MAAM,OAAO,QAAS,SAAQ,iBAA8B;IAKxD;IACI;;OAEG;IACc,QAA0B;IAC3C;;;;OAIG;IACH,SAAkB;QAElB,KAAK,EAAE,CAAC;QARS,aAAQ,GAAR,QAAQ,CAAkB;QAR9B,YAAO,GAAG,IAAI,YAAY,EAAE,CAAC;QAiB1C,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YAC/B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QACzD,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,OAA8B,EAAE,KAAc,EAAE,EAAE;YAC1E,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;YAClC,6EAA6E;YAC7E,8EAA8E;YAC9E,0CAA0C;YAC1C,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,QAAQ,KAAK,IAAI,EAAE;gBAC9C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;aACrE;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,oBAAoB,CAAC,UAAkB;QAC3C,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;IAC1E,CAAC;IAEO,sBAAsB,CAAC,UAAkB;QAC7C,OAAO,GAAG,UAAU,MAAM,CAAC;IAC/B,CAAC;IAED,oBAAoB;IAEb,QAAQ,CACX,UAAkB,EAClB,QAAwB;QAExB,MAAM,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;QAChE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,SAAS,CACZ,UAAkB,EAClB,QAAwB;QAExB,MAAM,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;QAChE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,YAAY,CACf,UAAkB,EAClB,OAAkB;QAElB,MAAM,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;QAChE,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE;YACzB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;SAC1D;IACL,CAAC;IAEM,oBAAoB,CACvB,UAAkB,EAClB,QAAwB;QAExB,MAAM,mBAAmB,GAAG,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;QACpE,OAAO,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;IACxD,CAAC;IAEM,qBAAqB,CACxB,UAAkB,EAClB,QAAwB;QAExB,MAAM,mBAAmB,GAAG,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;QACpE,OAAO,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;IACzD,CAAC;IAEM,gBAAgB,CACnB,UAAkB,EAClB,OAAkB;QAElB,MAAM,mBAAmB,GAAG,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;QACpE,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;CACJ;AAED;;;;;;GAMG;AACH,MAAM,OAAO,aAAc,SAAQ,UAAoC;IAEnE,IAAY,OAAO;QACf,MAAM,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,KAAK,CAAC,2CAA2C,CAAC,CAAC;QACvF,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAEM,MAAM,KAAK,IAAI,KAAK,OAAO,+BAA+B,CAAC,CAAC,CAAC;IAS1D,KAAK,CAAC,cAAc;QAC1B,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3C,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YAC/B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;IACP,CAAC;IAED,qDAAqD;IAE9C,QAAQ,CACX,UAAkB,EAClB,QAAwB;QAExB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,SAAS,CACZ,UAAkB,EAClB,QAAwB;QAExB,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,YAAY,CACf,UAAkB,EAClB,OAAkB;QAElB,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACnD,CAAC;IAEM,oBAAoB,CACvB,UAAkB,EAClB,QAAwB;QAExB,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,qBAAqB,CACxB,UAAkB,EAClB,QAAwB;QAExB,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,gBAAgB,CACnB,UAAkB,EAClB,OAAkB;QAElB,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACvD,CAAC;;AA5DsB,qBAAO,GAAG,IAAI,iBAAiB,CAClD,aAAa,CAAC,IAAI,EAClB,aAAa,EACb,EAAE,EACF,EAAE,CACL,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { EventEmitter } from \"events\";\nimport { DataObject, DataObjectFactory } from \"@fluidframework/aqueduct\";\nimport { IErrorEvent } from \"@fluidframework/common-definitions\";\nimport { assert, TypedEventEmitter } from \"@fluidframework/common-utils\";\nimport { Jsonable } from \"@fluidframework/datastore-definitions\";\nimport { IInboundSignalMessage } from \"@fluidframework/runtime-definitions\";\n\n// TODO:\n// add way to mark with current sequence number for ordering signals relative to ops\n// throttling and batching\n\nexport type SignalListener = (clientId: string, local: boolean, payload: Jsonable) => void;\n\n/**\n * ISignaler defines an interface for working with signals that is similar to the more common\n * eventing patterns of EventEmitter. In addition to sending and responding to signals, it\n * provides explicit methods around signal requests to other connected clients.\n */\nexport interface ISignaler {\n /**\n * Adds a listener for the specified signal. It behaves in the same way as EventEmitter's `on`\n * method regarding multiple registrations, callback order, etc.\n * @param signalName - The name of the signal\n * @param listener - The callback signal handler to add\n * @returns This ISignaler\n */\n onSignal(signalName: string, listener: SignalListener): ISignaler;\n /**\n * Remove a listener for the specified signal. It behaves in the same way as EventEmitter's\n * `off` method regarding multiple registrations, removal order, etc.\n * @param signalName - The name of the signal\n * @param listener - The callback signal handler to remove\n * @returns This ISignaler\n */\n offSignal(signalName: string, listener: SignalListener | ((message: any) => void)): ISignaler;\n /**\n * Send a signal with payload to its connected listeners.\n * @param signalName - The name of the signal\n * @param payload - The data to send with the signal\n */\n submitSignal(signalName: string, payload?: Jsonable);\n\n /**\n * Adds a listener for a broadcast request. The listener is called when a client calls\n * `requestBroadcast` for that signal. It behaves in the same way as EventEmitter's `on`\n * method regarding multiple registrations, callback order, etc.\n * @param signalName - The signal for which broadcast is requested\n * @param listener - The callback for the broadcast request to add\n * @returns This ISignaler\n */\n onBroadcastRequested(signalName: string, listener: SignalListener): ISignaler;\n /**\n * Remove a listener for a broadcast request. It behaves in the same way as EventEmitter's\n * `off` method regarding multiple registrations, removal order, etc.\n * @param signalName - The signal for which broadcast is requested\n * @param listener - The callback for the broadcast request to remove\n * @returns This ISignaler\n */\n offBroadcastRequested(signalName: string, listener: SignalListener): ISignaler;\n /**\n * Request broadcast of a signal from other connected clients. Other clients must have\n * registered to respond to broadcast requests using the `onBroadcastRequested` method.\n * @param signalName - The signal for which broadcast is requested\n * @param payload - A payload to send with the broadcast request\n */\n requestBroadcast(signalName: string, payload?: Jsonable);\n}\n\n/**\n * Duck type of something that provides the expected signalling functionality:\n * A way to verify we can signal, a way to send a signal, and a way to listen for incoming signals\n */\nexport interface IRuntimeSignaler {\n connected: boolean;\n on(event: \"signal\", listener: (message: IInboundSignalMessage, local: boolean) => void);\n submitSignal(type: string, content: any): void;\n}\n\n/**\n * Note: currently experimental and under development\n *\n * Helper class to assist common scenarios around working with signals. Signaler wraps a runtime\n * object with signaling functionality (e.g. ContainerRuntime or FluidDataStoreRuntime) and can\n * then be used in place of the original signaler. It uses a separate internal EventEmitter to\n * manage callbacks, and thus will reflect that behavior with regards to callback registration and\n * deregistration.\n */\nexport class Signaler extends TypedEventEmitter<IErrorEvent> implements ISignaler {\n private readonly emitter = new EventEmitter();\n\n private readonly managerId: string | undefined;\n\n constructor(\n /**\n * Object to wrap that can submit and listen to signals\n */\n private readonly signaler: IRuntimeSignaler,\n /**\n * Optional id to assign to this manager that will be attached to\n * signal names. Useful to avoid collisions if there are multiple\n * signal users at the Container level\n */\n managerId?: string,\n ) {\n super();\n this.emitter.on(\"error\", (error) => {\n this.emit(\"error\", error);\n });\n this.managerId = managerId ? `#${managerId}` : undefined;\n this.signaler.on(\"signal\", (message: IInboundSignalMessage, local: boolean) => {\n const clientId = message.clientId;\n // Only call listeners when the runtime is connected and if the signal has an\n // identifiable sender clientId. The listener is responsible for deciding how\n // it wants to handle local/remote signals\n if (this.signaler.connected && clientId !== null) {\n this.emitter.emit(message.type, clientId, local, message.content);\n }\n });\n }\n\n private getManagerSignalName(signalName: string): string {\n return this.managerId ? `${signalName}${this.managerId}` : signalName;\n }\n\n private getBroadcastSignalName(signalName: string): string {\n return `${signalName}#req`;\n }\n\n // ISignaler methods\n\n public onSignal(\n signalName: string,\n listener: SignalListener,\n ): ISignaler {\n const managerSignalName = this.getManagerSignalName(signalName);\n this.emitter.on(managerSignalName, listener);\n return this;\n }\n\n public offSignal(\n signalName: string,\n listener: SignalListener,\n ): ISignaler {\n const managerSignalName = this.getManagerSignalName(signalName);\n this.emitter.off(managerSignalName, listener);\n return this;\n }\n\n public submitSignal(\n signalName: string,\n payload?: Jsonable,\n ) {\n const managerSignalName = this.getManagerSignalName(signalName);\n if (this.signaler.connected) {\n this.signaler.submitSignal(managerSignalName, payload);\n }\n }\n\n public onBroadcastRequested(\n signalName: string,\n listener: SignalListener,\n ): ISignaler {\n const broadcastSignalName = this.getBroadcastSignalName(signalName);\n return this.onSignal(broadcastSignalName, listener);\n }\n\n public offBroadcastRequested(\n signalName: string,\n listener: SignalListener,\n ): ISignaler {\n const broadcastSignalName = this.getBroadcastSignalName(signalName);\n return this.offSignal(broadcastSignalName, listener);\n }\n\n public requestBroadcast(\n signalName: string,\n payload?: Jsonable,\n ) {\n const broadcastSignalName = this.getBroadcastSignalName(signalName);\n this.submitSignal(broadcastSignalName, payload);\n }\n}\n\n/**\n * Note: currently experimental and under development\n *\n * DataObject implementation of ISignaler for fluid-static plug-and-play. Allows fluid-static\n * users to get an ISignaler without a custom DO. Where possible, consumers should instead\n * create a Signaler themselves instead of using the DO wrapper to avoid the DO overhead.\n */\nexport class SignalManager extends DataObject<{ Events: IErrorEvent; }> implements EventEmitter, ISignaler {\n private _manager: Signaler | undefined;\n private get manager(): Signaler {\n assert(this._manager !== undefined, 0x24b /* \"internal signaler should be defined\" */);\n return this._manager;\n }\n\n public static get Name() { return \"@fluid-example/signal-manager\"; }\n\n public static readonly factory = new DataObjectFactory(\n SignalManager.Name,\n SignalManager,\n [],\n {},\n );\n\n protected async hasInitialized() {\n this._manager = new Signaler(this.runtime);\n this.manager.on(\"error\", (error) => {\n this.emit(\"error\", error);\n });\n }\n\n // ISignaler methods Note these are all passthroughs\n\n public onSignal(\n signalName: string,\n listener: SignalListener,\n ): ISignaler {\n this.manager.onSignal(signalName, listener);\n return this;\n }\n\n public offSignal(\n signalName: string,\n listener: SignalListener,\n ): ISignaler {\n this.manager.offSignal(signalName, listener);\n return this;\n }\n\n public submitSignal(\n signalName: string,\n payload?: Jsonable,\n ) {\n this.manager.submitSignal(signalName, payload);\n }\n\n public onBroadcastRequested(\n signalName: string,\n listener: SignalListener,\n ): ISignaler {\n this.manager.onBroadcastRequested(signalName, listener);\n return this;\n }\n\n public offBroadcastRequested(\n signalName: string,\n listener: SignalListener,\n ): ISignaler {\n this.manager.offBroadcastRequested(signalName, listener);\n return this;\n }\n\n public requestBroadcast(\n signalName: string,\n payload?: Jsonable,\n ) {\n this.manager.requestBroadcast(signalName, payload);\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fluid-experimental/data-objects",
|
|
3
|
-
"version": "0.59.
|
|
3
|
+
"version": "0.59.3000-66610",
|
|
4
4
|
"description": "A collection of ready to use Fluid Data Objects",
|
|
5
5
|
"homepage": "https://fluidframework.com",
|
|
6
6
|
"repository": {
|
|
@@ -31,16 +31,16 @@
|
|
|
31
31
|
"tsfmt:fix": "tsfmt --replace"
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@fluidframework/aqueduct": "
|
|
34
|
+
"@fluidframework/aqueduct": "0.59.3000-66610",
|
|
35
35
|
"@fluidframework/common-definitions": "^0.20.1",
|
|
36
36
|
"@fluidframework/common-utils": "^0.32.1",
|
|
37
|
-
"@fluidframework/datastore-definitions": "
|
|
38
|
-
"@fluidframework/map": "
|
|
39
|
-
"@fluidframework/runtime-definitions": "
|
|
37
|
+
"@fluidframework/datastore-definitions": "0.59.3000-66610",
|
|
38
|
+
"@fluidframework/map": "0.59.3000-66610",
|
|
39
|
+
"@fluidframework/runtime-definitions": "0.59.3000-66610"
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
42
42
|
"@fluidframework/build-common": "^0.23.0",
|
|
43
|
-
"@fluidframework/eslint-config-fluid": "^0.28.
|
|
43
|
+
"@fluidframework/eslint-config-fluid": "^0.28.2000-0",
|
|
44
44
|
"@microsoft/api-extractor": "^7.22.2",
|
|
45
45
|
"@rushstack/eslint-config": "^2.5.1",
|
|
46
46
|
"@types/node": "^14.18.0",
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
"eslint-plugin-tsdoc": "~0.2.14",
|
|
61
61
|
"eslint-plugin-unicorn": "~40.0.0",
|
|
62
62
|
"rimraf": "^2.6.2",
|
|
63
|
-
"typescript": "~4.
|
|
63
|
+
"typescript": "~4.5.5",
|
|
64
64
|
"typescript-formatter": "7.1.0"
|
|
65
65
|
}
|
|
66
66
|
}
|
package/src/index.ts
CHANGED
|
@@ -193,7 +193,7 @@ export class Signaler extends TypedEventEmitter<IErrorEvent> implements ISignale
|
|
|
193
193
|
* users to get an ISignaler without a custom DO. Where possible, consumers should instead
|
|
194
194
|
* create a Signaler themselves instead of using the DO wrapper to avoid the DO overhead.
|
|
195
195
|
*/
|
|
196
|
-
export class SignalManager extends DataObject<{Events: IErrorEvent}> implements EventEmitter, ISignaler {
|
|
196
|
+
export class SignalManager extends DataObject<{ Events: IErrorEvent; }> implements EventEmitter, ISignaler {
|
|
197
197
|
private _manager: Signaler | undefined;
|
|
198
198
|
private get manager(): Signaler {
|
|
199
199
|
assert(this._manager !== undefined, 0x24b /* "internal signaler should be defined" */);
|
|
@@ -202,8 +202,7 @@ export class SignalManager extends DataObject<{Events: IErrorEvent}> implements
|
|
|
202
202
|
|
|
203
203
|
public static get Name() { return "@fluid-example/signal-manager"; }
|
|
204
204
|
|
|
205
|
-
public static readonly factory = new DataObjectFactory
|
|
206
|
-
(
|
|
205
|
+
public static readonly factory = new DataObjectFactory(
|
|
207
206
|
SignalManager.Name,
|
|
208
207
|
SignalManager,
|
|
209
208
|
[],
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
|
-
* Licensed under the MIT License.
|
|
4
|
-
*/
|
|
5
|
-
/// <reference types="node" />
|
|
6
|
-
import { EventEmitter } from "events";
|
|
7
|
-
import { DataObject, DataObjectFactory } from "@fluidframework/aqueduct";
|
|
8
|
-
import { IDirectoryValueChanged } from "@fluidframework/map";
|
|
9
|
-
/**
|
|
10
|
-
* IKeyValueDataObject describes the public API surface for our KeyValue DataObject.
|
|
11
|
-
*/
|
|
12
|
-
export interface IKeyValueDataObject extends EventEmitter {
|
|
13
|
-
/**
|
|
14
|
-
* Get value at Key
|
|
15
|
-
*/
|
|
16
|
-
get: (key: string) => any;
|
|
17
|
-
/**
|
|
18
|
-
* Set Value at Key
|
|
19
|
-
*/
|
|
20
|
-
set: (key: string, value: any) => void;
|
|
21
|
-
/**
|
|
22
|
-
* Event on value change
|
|
23
|
-
*/
|
|
24
|
-
on(event: "changed", listener: (args: IDirectoryValueChanged) => void): this;
|
|
25
|
-
/**
|
|
26
|
-
* Returns all the keys
|
|
27
|
-
*/
|
|
28
|
-
keys(): string[];
|
|
29
|
-
/**
|
|
30
|
-
* By default, returns an object containing all key value pairs
|
|
31
|
-
* Filter test function can be passed to limit keys added to object
|
|
32
|
-
*/
|
|
33
|
-
query: (test?: string | ((value: string) => boolean)) => any | {
|
|
34
|
-
[key: string]: any;
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* The KeyValueDataObject is our data object that implements the IKeyValueDataObject interface.
|
|
39
|
-
*/
|
|
40
|
-
export declare class KeyValueDataObject extends DataObject implements IKeyValueDataObject {
|
|
41
|
-
static readonly factory: DataObjectFactory<KeyValueDataObject, import("@fluidframework/aqueduct").DataObjectTypes>;
|
|
42
|
-
/**
|
|
43
|
-
* hasInitialized is run by each client as they load the DataObject. Here we use it to set up usage of the
|
|
44
|
-
* DataObject, by registering an event listener for changes in data.
|
|
45
|
-
*/
|
|
46
|
-
protected hasInitialized(): Promise<void>;
|
|
47
|
-
set: (key: string, value: any) => void;
|
|
48
|
-
get: (key: string) => any;
|
|
49
|
-
keys: () => string[];
|
|
50
|
-
query: (test?: string | ((value: string) => boolean) | undefined) => any;
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* The DataObjectFactory is used by Fluid Framework to instantiate our DataObject. We provide it with a unique name
|
|
54
|
-
* and the constructor it will call. In this scenario, the third and fourth arguments are not used.
|
|
55
|
-
*/
|
|
56
|
-
export declare const KeyValueInstantiationFactory: DataObjectFactory<KeyValueDataObject, import("@fluidframework/aqueduct").DataObjectTypes>;
|
|
57
|
-
//# sourceMappingURL=DataObject.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DataObject.d.ts","sourceRoot":"","sources":["../../src/kvpair/DataObject.ts"],"names":[],"mappings":"AAAA;;;GAGG;;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAiB,MAAM,qBAAqB,CAAC;AAE5E;;GAEG;AACH,MAAM,WAAW,mBAAoB,SAAQ,YAAY;IACrD;;OAEG;IACH,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,GAAG,CAAC;IAE1B;;OAEG;IACH,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;IAEvC;;OAEG;IACH,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,sBAAsB,KAAK,IAAI,GAAG,IAAI,CAAC;IAE7E;;OAEG;IACH,IAAI,IAAI,MAAM,EAAE,CAAC;IAEjB;;;OAGG;IACH,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,KAAK,GAAG,GAAG;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAA;CACxF;AAED;;GAEG;AACH,qBAAa,kBACT,SAAQ,UACR,YAAW,mBAAmB;IAC9B,gBAAuB,OAAO,4FAK5B;IAEF;;;OAGG;cACa,cAAc;IAMvB,GAAG,QAAS,MAAM,SAAS,GAAG,UAEnC;IAEK,GAAG,QAAS,MAAM,SAGvB;IAEK,IAAI,QAAO,MAAM,EAAE,CAExB;IAEK,KAAK,4BAA6B,MAAM,KAAK,OAAO,sBAezD;CACL;AAED;;;GAGG;AACH,eAAO,MAAM,4BAA4B,2FAA6B,CAAC"}
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
|
-
* Licensed under the MIT License.
|
|
4
|
-
*/
|
|
5
|
-
import { DataObject, DataObjectFactory } from "@fluidframework/aqueduct";
|
|
6
|
-
/**
|
|
7
|
-
* The KeyValueDataObject is our data object that implements the IKeyValueDataObject interface.
|
|
8
|
-
*/
|
|
9
|
-
export class KeyValueDataObject extends DataObject {
|
|
10
|
-
constructor() {
|
|
11
|
-
super(...arguments);
|
|
12
|
-
this.set = (key, value) => {
|
|
13
|
-
this.root.set(key, value);
|
|
14
|
-
};
|
|
15
|
-
this.get = (key) => {
|
|
16
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
17
|
-
return this.root.get(key);
|
|
18
|
-
};
|
|
19
|
-
this.keys = () => {
|
|
20
|
-
return Array.from(this.root.keys());
|
|
21
|
-
};
|
|
22
|
-
this.query = (test) => {
|
|
23
|
-
let keys = [];
|
|
24
|
-
if (!test) {
|
|
25
|
-
keys = this.keys();
|
|
26
|
-
}
|
|
27
|
-
else if (typeof test === "string") {
|
|
28
|
-
keys = [test];
|
|
29
|
-
}
|
|
30
|
-
else {
|
|
31
|
-
keys = this.keys().filter(test);
|
|
32
|
-
}
|
|
33
|
-
const newQuery = {};
|
|
34
|
-
keys.forEach((element) => {
|
|
35
|
-
newQuery[element] = this.get(element);
|
|
36
|
-
});
|
|
37
|
-
return newQuery;
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* hasInitialized is run by each client as they load the DataObject. Here we use it to set up usage of the
|
|
42
|
-
* DataObject, by registering an event listener for changes in data.
|
|
43
|
-
*/
|
|
44
|
-
async hasInitialized() {
|
|
45
|
-
this.root.on("valueChanged", (changed) => {
|
|
46
|
-
this.emit("changed", changed);
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
KeyValueDataObject.factory = new DataObjectFactory("keyvalue-dataobject", KeyValueDataObject, [], {});
|
|
51
|
-
/**
|
|
52
|
-
* The DataObjectFactory is used by Fluid Framework to instantiate our DataObject. We provide it with a unique name
|
|
53
|
-
* and the constructor it will call. In this scenario, the third and fourth arguments are not used.
|
|
54
|
-
*/
|
|
55
|
-
export const KeyValueInstantiationFactory = KeyValueDataObject.factory;
|
|
56
|
-
//# sourceMappingURL=DataObject.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DataObject.js","sourceRoot":"","sources":["../../src/kvpair/DataObject.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAkCzE;;GAEG;AACH,MAAM,OAAO,kBACT,SAAQ,UAAU;IADtB;;QAoBW,QAAG,GAAG,CAAC,GAAW,EAAE,KAAU,EAAE,EAAE;YACrC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC9B,CAAC,CAAC;QAEK,QAAG,GAAG,CAAC,GAAW,EAAE,EAAE;YACzB,+DAA+D;YAC/D,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC9B,CAAC,CAAC;QAEK,SAAI,GAAG,GAAa,EAAE;YACzB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACxC,CAAC,CAAC;QAEK,UAAK,GAAG,CAAC,IAA4C,EAAgC,EAAE;YAC1F,IAAI,IAAI,GAAa,EAAE,CAAC;YACxB,IAAI,CAAC,IAAI,EAAE;gBACP,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;aACtB;iBAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;gBACjC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;aACjB;iBAAM;gBACH,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;aACnC;YAED,MAAM,QAAQ,GAA2B,EAAE,CAAC;YAC5C,IAAI,CAAC,OAAO,CAAC,CAAC,OAAe,EAAE,EAAE;gBAC7B,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC1C,CAAC,CAAC,CAAC;YACH,OAAO,QAAQ,CAAC;QACpB,CAAC,CAAC;IACN,CAAC;IAvCG;;;OAGG;IACO,KAAK,CAAC,cAAc;QAC1B,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,OAAsB,EAAE,EAAE;YACpD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;IACP,CAAC;;AAfsB,0BAAO,GAAG,IAAI,iBAAiB,CAClD,qBAAqB,EACrB,kBAAkB,EAClB,EAAE,EACF,EAAE,CACL,CAAC;AA2CN;;;GAGG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,kBAAkB,CAAC,OAAO,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { EventEmitter } from \"events\";\nimport { DataObject, DataObjectFactory } from \"@fluidframework/aqueduct\";\nimport { IDirectoryValueChanged, IValueChanged } from \"@fluidframework/map\";\n\n/**\n * IKeyValueDataObject describes the public API surface for our KeyValue DataObject.\n */\nexport interface IKeyValueDataObject extends EventEmitter {\n /**\n * Get value at Key\n */\n get: (key: string) => any;\n\n /**\n * Set Value at Key\n */\n set: (key: string, value: any) => void;\n\n /**\n * Event on value change\n */\n on(event: \"changed\", listener: (args: IDirectoryValueChanged) => void): this;\n\n /**\n * Returns all the keys\n */\n keys(): string[];\n\n /**\n * By default, returns an object containing all key value pairs\n * Filter test function can be passed to limit keys added to object\n */\n query: (test?: string | ((value: string) => boolean)) => any | { [key: string]: any }\n}\n\n/**\n * The KeyValueDataObject is our data object that implements the IKeyValueDataObject interface.\n */\nexport class KeyValueDataObject\n extends DataObject\n implements IKeyValueDataObject {\n public static readonly factory = new DataObjectFactory(\n \"keyvalue-dataobject\",\n KeyValueDataObject,\n [],\n {},\n );\n\n /**\n * hasInitialized is run by each client as they load the DataObject. Here we use it to set up usage of the\n * DataObject, by registering an event listener for changes in data.\n */\n protected async hasInitialized() {\n this.root.on(\"valueChanged\", (changed: IValueChanged) => {\n this.emit(\"changed\", changed);\n });\n }\n\n public set = (key: string, value: any) => {\n this.root.set(key, value);\n };\n\n public get = (key: string) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return this.root.get(key);\n };\n\n public keys = (): string[] => {\n return Array.from(this.root.keys());\n };\n\n public query = (test?: string | ((value: string) => boolean)): any | { [key: string]: any } => {\n let keys: string[] = [];\n if (!test) {\n keys = this.keys();\n } else if (typeof test === \"string\") {\n keys = [test];\n } else {\n keys = this.keys().filter(test);\n }\n\n const newQuery: { [key: string]: any } = {};\n keys.forEach((element: string) => {\n newQuery[element] = this.get(element);\n });\n return newQuery;\n };\n}\n\n/**\n * The DataObjectFactory is used by Fluid Framework to instantiate our DataObject. We provide it with a unique name\n * and the constructor it will call. In this scenario, the third and fourth arguments are not used.\n */\nexport const KeyValueInstantiationFactory = KeyValueDataObject.factory;\n"]}
|
package/dist/kvpair/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/kvpair/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,cAAc,CAAC"}
|
package/dist/kvpair/index.js
DELETED
package/dist/kvpair/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/kvpair/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,cAAc,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport * from \"./DataObject\";\n"]}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
|
-
* Licensed under the MIT License.
|
|
4
|
-
*/
|
|
5
|
-
/// <reference types="node" />
|
|
6
|
-
import { EventEmitter } from "events";
|
|
7
|
-
import { DataObject, DataObjectFactory } from "@fluidframework/aqueduct";
|
|
8
|
-
import { IDirectoryValueChanged } from "@fluidframework/map";
|
|
9
|
-
/**
|
|
10
|
-
* IKeyValueDataObject describes the public API surface for our KeyValue DataObject.
|
|
11
|
-
*/
|
|
12
|
-
export interface IKeyValueDataObject extends EventEmitter {
|
|
13
|
-
/**
|
|
14
|
-
* Get value at Key
|
|
15
|
-
*/
|
|
16
|
-
get: (key: string) => any;
|
|
17
|
-
/**
|
|
18
|
-
* Set Value at Key
|
|
19
|
-
*/
|
|
20
|
-
set: (key: string, value: any) => void;
|
|
21
|
-
/**
|
|
22
|
-
* Event on value change
|
|
23
|
-
*/
|
|
24
|
-
on(event: "changed", listener: (args: IDirectoryValueChanged) => void): this;
|
|
25
|
-
/**
|
|
26
|
-
* Returns all the keys
|
|
27
|
-
*/
|
|
28
|
-
keys(): string[];
|
|
29
|
-
/**
|
|
30
|
-
* By default, returns an object containing all key value pairs
|
|
31
|
-
* Filter test function can be passed to limit keys added to object
|
|
32
|
-
*/
|
|
33
|
-
query: (test?: string | ((value: string) => boolean)) => any | {
|
|
34
|
-
[key: string]: any;
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* The KeyValueDataObject is our data object that implements the IKeyValueDataObject interface.
|
|
39
|
-
*/
|
|
40
|
-
export declare class KeyValueDataObject extends DataObject implements IKeyValueDataObject {
|
|
41
|
-
static readonly factory: DataObjectFactory<KeyValueDataObject, import("@fluidframework/aqueduct").DataObjectTypes>;
|
|
42
|
-
/**
|
|
43
|
-
* hasInitialized is run by each client as they load the DataObject. Here we use it to set up usage of the
|
|
44
|
-
* DataObject, by registering an event listener for changes in data.
|
|
45
|
-
*/
|
|
46
|
-
protected hasInitialized(): Promise<void>;
|
|
47
|
-
set: (key: string, value: any) => void;
|
|
48
|
-
get: (key: string) => any;
|
|
49
|
-
keys: () => string[];
|
|
50
|
-
query: (test?: string | ((value: string) => boolean) | undefined) => any;
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* The DataObjectFactory is used by Fluid Framework to instantiate our DataObject. We provide it with a unique name
|
|
54
|
-
* and the constructor it will call. In this scenario, the third and fourth arguments are not used.
|
|
55
|
-
*/
|
|
56
|
-
export declare const KeyValueInstantiationFactory: DataObjectFactory<KeyValueDataObject, import("@fluidframework/aqueduct").DataObjectTypes>;
|
|
57
|
-
//# sourceMappingURL=DataObject.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DataObject.d.ts","sourceRoot":"","sources":["../../src/kvpair/DataObject.ts"],"names":[],"mappings":"AAAA;;;GAGG;;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAiB,MAAM,qBAAqB,CAAC;AAE5E;;GAEG;AACH,MAAM,WAAW,mBAAoB,SAAQ,YAAY;IACrD;;OAEG;IACH,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,GAAG,CAAC;IAE1B;;OAEG;IACH,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;IAEvC;;OAEG;IACH,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,sBAAsB,KAAK,IAAI,GAAG,IAAI,CAAC;IAE7E;;OAEG;IACH,IAAI,IAAI,MAAM,EAAE,CAAC;IAEjB;;;OAGG;IACH,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,KAAK,GAAG,GAAG;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAA;CACxF;AAED;;GAEG;AACH,qBAAa,kBACT,SAAQ,UACR,YAAW,mBAAmB;IAC9B,gBAAuB,OAAO,4FAK5B;IAEF;;;OAGG;cACa,cAAc;IAMvB,GAAG,QAAS,MAAM,SAAS,GAAG,UAEnC;IAEK,GAAG,QAAS,MAAM,SAGvB;IAEK,IAAI,QAAO,MAAM,EAAE,CAExB;IAEK,KAAK,4BAA6B,MAAM,KAAK,OAAO,sBAezD;CACL;AAED;;;GAGG;AACH,eAAO,MAAM,4BAA4B,2FAA6B,CAAC"}
|
package/lib/kvpair/DataObject.js
DELETED
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
|
-
* Licensed under the MIT License.
|
|
4
|
-
*/
|
|
5
|
-
import { DataObject, DataObjectFactory } from "@fluidframework/aqueduct";
|
|
6
|
-
/**
|
|
7
|
-
* The KeyValueDataObject is our data object that implements the IKeyValueDataObject interface.
|
|
8
|
-
*/
|
|
9
|
-
export class KeyValueDataObject extends DataObject {
|
|
10
|
-
constructor() {
|
|
11
|
-
super(...arguments);
|
|
12
|
-
this.set = (key, value) => {
|
|
13
|
-
this.root.set(key, value);
|
|
14
|
-
};
|
|
15
|
-
this.get = (key) => {
|
|
16
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
17
|
-
return this.root.get(key);
|
|
18
|
-
};
|
|
19
|
-
this.keys = () => {
|
|
20
|
-
return Array.from(this.root.keys());
|
|
21
|
-
};
|
|
22
|
-
this.query = (test) => {
|
|
23
|
-
let keys = [];
|
|
24
|
-
if (!test) {
|
|
25
|
-
keys = this.keys();
|
|
26
|
-
}
|
|
27
|
-
else if (typeof test === "string") {
|
|
28
|
-
keys = [test];
|
|
29
|
-
}
|
|
30
|
-
else {
|
|
31
|
-
keys = this.keys().filter(test);
|
|
32
|
-
}
|
|
33
|
-
const newQuery = {};
|
|
34
|
-
keys.forEach((element) => {
|
|
35
|
-
newQuery[element] = this.get(element);
|
|
36
|
-
});
|
|
37
|
-
return newQuery;
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* hasInitialized is run by each client as they load the DataObject. Here we use it to set up usage of the
|
|
42
|
-
* DataObject, by registering an event listener for changes in data.
|
|
43
|
-
*/
|
|
44
|
-
async hasInitialized() {
|
|
45
|
-
this.root.on("valueChanged", (changed) => {
|
|
46
|
-
this.emit("changed", changed);
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
KeyValueDataObject.factory = new DataObjectFactory("keyvalue-dataobject", KeyValueDataObject, [], {});
|
|
51
|
-
/**
|
|
52
|
-
* The DataObjectFactory is used by Fluid Framework to instantiate our DataObject. We provide it with a unique name
|
|
53
|
-
* and the constructor it will call. In this scenario, the third and fourth arguments are not used.
|
|
54
|
-
*/
|
|
55
|
-
export const KeyValueInstantiationFactory = KeyValueDataObject.factory;
|
|
56
|
-
//# sourceMappingURL=DataObject.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DataObject.js","sourceRoot":"","sources":["../../src/kvpair/DataObject.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAkCzE;;GAEG;AACH,MAAM,OAAO,kBACT,SAAQ,UAAU;IADtB;;QAoBW,QAAG,GAAG,CAAC,GAAW,EAAE,KAAU,EAAE,EAAE;YACrC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC9B,CAAC,CAAC;QAEK,QAAG,GAAG,CAAC,GAAW,EAAE,EAAE;YACzB,+DAA+D;YAC/D,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC9B,CAAC,CAAC;QAEK,SAAI,GAAG,GAAa,EAAE;YACzB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACxC,CAAC,CAAC;QAEK,UAAK,GAAG,CAAC,IAA4C,EAAgC,EAAE;YAC1F,IAAI,IAAI,GAAa,EAAE,CAAC;YACxB,IAAI,CAAC,IAAI,EAAE;gBACP,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;aACtB;iBAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;gBACjC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;aACjB;iBAAM;gBACH,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;aACnC;YAED,MAAM,QAAQ,GAA2B,EAAE,CAAC;YAC5C,IAAI,CAAC,OAAO,CAAC,CAAC,OAAe,EAAE,EAAE;gBAC7B,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC1C,CAAC,CAAC,CAAC;YACH,OAAO,QAAQ,CAAC;QACpB,CAAC,CAAC;IACN,CAAC;IAvCG;;;OAGG;IACO,KAAK,CAAC,cAAc;QAC1B,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,OAAsB,EAAE,EAAE;YACpD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;IACP,CAAC;;AAfsB,0BAAO,GAAG,IAAI,iBAAiB,CAClD,qBAAqB,EACrB,kBAAkB,EAClB,EAAE,EACF,EAAE,CACL,CAAC;AA2CN;;;GAGG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,kBAAkB,CAAC,OAAO,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { EventEmitter } from \"events\";\nimport { DataObject, DataObjectFactory } from \"@fluidframework/aqueduct\";\nimport { IDirectoryValueChanged, IValueChanged } from \"@fluidframework/map\";\n\n/**\n * IKeyValueDataObject describes the public API surface for our KeyValue DataObject.\n */\nexport interface IKeyValueDataObject extends EventEmitter {\n /**\n * Get value at Key\n */\n get: (key: string) => any;\n\n /**\n * Set Value at Key\n */\n set: (key: string, value: any) => void;\n\n /**\n * Event on value change\n */\n on(event: \"changed\", listener: (args: IDirectoryValueChanged) => void): this;\n\n /**\n * Returns all the keys\n */\n keys(): string[];\n\n /**\n * By default, returns an object containing all key value pairs\n * Filter test function can be passed to limit keys added to object\n */\n query: (test?: string | ((value: string) => boolean)) => any | { [key: string]: any }\n}\n\n/**\n * The KeyValueDataObject is our data object that implements the IKeyValueDataObject interface.\n */\nexport class KeyValueDataObject\n extends DataObject\n implements IKeyValueDataObject {\n public static readonly factory = new DataObjectFactory(\n \"keyvalue-dataobject\",\n KeyValueDataObject,\n [],\n {},\n );\n\n /**\n * hasInitialized is run by each client as they load the DataObject. Here we use it to set up usage of the\n * DataObject, by registering an event listener for changes in data.\n */\n protected async hasInitialized() {\n this.root.on(\"valueChanged\", (changed: IValueChanged) => {\n this.emit(\"changed\", changed);\n });\n }\n\n public set = (key: string, value: any) => {\n this.root.set(key, value);\n };\n\n public get = (key: string) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return this.root.get(key);\n };\n\n public keys = (): string[] => {\n return Array.from(this.root.keys());\n };\n\n public query = (test?: string | ((value: string) => boolean)): any | { [key: string]: any } => {\n let keys: string[] = [];\n if (!test) {\n keys = this.keys();\n } else if (typeof test === \"string\") {\n keys = [test];\n } else {\n keys = this.keys().filter(test);\n }\n\n const newQuery: { [key: string]: any } = {};\n keys.forEach((element: string) => {\n newQuery[element] = this.get(element);\n });\n return newQuery;\n };\n}\n\n/**\n * The DataObjectFactory is used by Fluid Framework to instantiate our DataObject. We provide it with a unique name\n * and the constructor it will call. In this scenario, the third and fourth arguments are not used.\n */\nexport const KeyValueInstantiationFactory = KeyValueDataObject.factory;\n"]}
|
package/lib/kvpair/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/kvpair/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,cAAc,CAAC"}
|
package/lib/kvpair/index.js
DELETED
package/lib/kvpair/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/kvpair/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,cAAc,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport * from \"./DataObject\";\n"]}
|
package/src/kvpair/DataObject.ts
DELETED
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
|
-
* Licensed under the MIT License.
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import { EventEmitter } from "events";
|
|
7
|
-
import { DataObject, DataObjectFactory } from "@fluidframework/aqueduct";
|
|
8
|
-
import { IDirectoryValueChanged, IValueChanged } from "@fluidframework/map";
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* IKeyValueDataObject describes the public API surface for our KeyValue DataObject.
|
|
12
|
-
*/
|
|
13
|
-
export interface IKeyValueDataObject extends EventEmitter {
|
|
14
|
-
/**
|
|
15
|
-
* Get value at Key
|
|
16
|
-
*/
|
|
17
|
-
get: (key: string) => any;
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* Set Value at Key
|
|
21
|
-
*/
|
|
22
|
-
set: (key: string, value: any) => void;
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* Event on value change
|
|
26
|
-
*/
|
|
27
|
-
on(event: "changed", listener: (args: IDirectoryValueChanged) => void): this;
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* Returns all the keys
|
|
31
|
-
*/
|
|
32
|
-
keys(): string[];
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
* By default, returns an object containing all key value pairs
|
|
36
|
-
* Filter test function can be passed to limit keys added to object
|
|
37
|
-
*/
|
|
38
|
-
query: (test?: string | ((value: string) => boolean)) => any | { [key: string]: any }
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* The KeyValueDataObject is our data object that implements the IKeyValueDataObject interface.
|
|
43
|
-
*/
|
|
44
|
-
export class KeyValueDataObject
|
|
45
|
-
extends DataObject
|
|
46
|
-
implements IKeyValueDataObject {
|
|
47
|
-
public static readonly factory = new DataObjectFactory(
|
|
48
|
-
"keyvalue-dataobject",
|
|
49
|
-
KeyValueDataObject,
|
|
50
|
-
[],
|
|
51
|
-
{},
|
|
52
|
-
);
|
|
53
|
-
|
|
54
|
-
/**
|
|
55
|
-
* hasInitialized is run by each client as they load the DataObject. Here we use it to set up usage of the
|
|
56
|
-
* DataObject, by registering an event listener for changes in data.
|
|
57
|
-
*/
|
|
58
|
-
protected async hasInitialized() {
|
|
59
|
-
this.root.on("valueChanged", (changed: IValueChanged) => {
|
|
60
|
-
this.emit("changed", changed);
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
public set = (key: string, value: any) => {
|
|
65
|
-
this.root.set(key, value);
|
|
66
|
-
};
|
|
67
|
-
|
|
68
|
-
public get = (key: string) => {
|
|
69
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
70
|
-
return this.root.get(key);
|
|
71
|
-
};
|
|
72
|
-
|
|
73
|
-
public keys = (): string[] => {
|
|
74
|
-
return Array.from(this.root.keys());
|
|
75
|
-
};
|
|
76
|
-
|
|
77
|
-
public query = (test?: string | ((value: string) => boolean)): any | { [key: string]: any } => {
|
|
78
|
-
let keys: string[] = [];
|
|
79
|
-
if (!test) {
|
|
80
|
-
keys = this.keys();
|
|
81
|
-
} else if (typeof test === "string") {
|
|
82
|
-
keys = [test];
|
|
83
|
-
} else {
|
|
84
|
-
keys = this.keys().filter(test);
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
const newQuery: { [key: string]: any } = {};
|
|
88
|
-
keys.forEach((element: string) => {
|
|
89
|
-
newQuery[element] = this.get(element);
|
|
90
|
-
});
|
|
91
|
-
return newQuery;
|
|
92
|
-
};
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
/**
|
|
96
|
-
* The DataObjectFactory is used by Fluid Framework to instantiate our DataObject. We provide it with a unique name
|
|
97
|
-
* and the constructor it will call. In this scenario, the third and fourth arguments are not used.
|
|
98
|
-
*/
|
|
99
|
-
export const KeyValueInstantiationFactory = KeyValueDataObject.factory;
|