@fluid-experimental/data-objects 2.0.0-rc.1.0.4 → 2.0.0-rc.2.0.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/{.eslintrc.js → .eslintrc.cjs} +5 -5
- package/CHANGELOG.md +4 -0
- package/api-extractor-cjs.json +8 -0
- package/api-extractor-lint.json +1 -1
- package/api-extractor.json +4 -0
- package/api-report/data-objects.api.md +56 -0
- package/dist/data-objects-alpha.d.ts +16 -0
- package/dist/data-objects-beta.d.ts +22 -0
- package/dist/data-objects-public.d.ts +22 -0
- package/dist/data-objects-untrimmed.d.ts +75 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/package.json +3 -0
- package/dist/signaler/index.d.ts +1 -1
- package/dist/signaler/index.d.ts.map +1 -1
- package/dist/signaler/index.js +5 -1
- package/dist/signaler/index.js.map +1 -1
- package/dist/signaler/signaler.d.ts +1 -2
- package/dist/signaler/signaler.d.ts.map +1 -1
- package/dist/signaler/signaler.js +12 -9
- package/dist/signaler/signaler.js.map +1 -1
- package/dist/tsdoc-metadata.json +11 -0
- package/lib/data-objects-alpha.d.ts +16 -0
- package/lib/data-objects-beta.d.ts +22 -0
- package/lib/data-objects-public.d.ts +22 -0
- package/lib/data-objects-untrimmed.d.ts +75 -0
- package/lib/index.d.ts +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/signaler/index.d.ts +1 -1
- package/lib/signaler/index.d.ts.map +1 -1
- package/lib/signaler/index.js +1 -1
- package/lib/signaler/index.js.map +1 -1
- package/lib/signaler/signaler.d.ts +1 -2
- package/lib/signaler/signaler.d.ts.map +1 -1
- package/lib/signaler/signaler.js +1 -2
- package/lib/signaler/signaler.js.map +1 -1
- package/package.json +68 -19
- package/src/index.ts +1 -1
- package/src/signaler/index.ts +1 -1
- package/src/signaler/signaler.ts +1 -2
- package/tsconfig.cjs.json +7 -0
- package/tsconfig.json +2 -4
|
@@ -4,15 +4,15 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
module.exports = {
|
|
7
|
-
extends: [
|
|
7
|
+
extends: [
|
|
8
|
+
require.resolve("@fluidframework/eslint-config-fluid/minimal-deprecated"),
|
|
9
|
+
"prettier",
|
|
10
|
+
],
|
|
8
11
|
parserOptions: {
|
|
9
12
|
project: ["./tsconfig.json"],
|
|
10
13
|
},
|
|
11
14
|
rules: {
|
|
12
15
|
"@typescript-eslint/strict-boolean-expressions": "off",
|
|
13
|
-
|
|
14
|
-
// This library is used in the browser, so we don't want dependencies on most node libraries.
|
|
15
|
-
"import/no-nodejs-modules": ["error", { allow: ["events"] }],
|
|
16
16
|
},
|
|
17
17
|
overrides: [
|
|
18
18
|
{
|
|
@@ -20,7 +20,7 @@ module.exports = {
|
|
|
20
20
|
files: ["*.spec.ts", "src/test/**"],
|
|
21
21
|
rules: {
|
|
22
22
|
// Test files are run in node only so additional node libraries can be used.
|
|
23
|
-
"import/no-nodejs-modules": ["error", { allow: ["assert"
|
|
23
|
+
"import/no-nodejs-modules": ["error", { allow: ["assert"] }],
|
|
24
24
|
},
|
|
25
25
|
},
|
|
26
26
|
],
|
package/CHANGELOG.md
CHANGED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json",
|
|
3
|
+
"extends": "../../../common/build/build-common/api-extractor-base.cjs.primary.json",
|
|
4
|
+
// CJS is actually secondary; so, no report.
|
|
5
|
+
"apiReport": {
|
|
6
|
+
"enabled": false
|
|
7
|
+
}
|
|
8
|
+
}
|
package/api-extractor-lint.json
CHANGED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
## API Report File for "@fluid-experimental/data-objects"
|
|
2
|
+
|
|
3
|
+
> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
|
|
4
|
+
|
|
5
|
+
```ts
|
|
6
|
+
|
|
7
|
+
import { DataObject } from '@fluidframework/aqueduct';
|
|
8
|
+
import { DataObjectFactory } from '@fluidframework/aqueduct';
|
|
9
|
+
import { EventEmitter } from '@fluid-internal/client-utils';
|
|
10
|
+
import { IErrorEvent } from '@fluidframework/core-interfaces';
|
|
11
|
+
import { IInboundSignalMessage } from '@fluidframework/runtime-definitions';
|
|
12
|
+
import { Jsonable } from '@fluidframework/datastore-definitions';
|
|
13
|
+
|
|
14
|
+
// @internal
|
|
15
|
+
export interface IRuntimeSignaler {
|
|
16
|
+
// (undocumented)
|
|
17
|
+
connected: boolean;
|
|
18
|
+
// (undocumented)
|
|
19
|
+
on(event: "signal", listener: (message: IInboundSignalMessage, local: boolean) => void): any;
|
|
20
|
+
// (undocumented)
|
|
21
|
+
submitSignal(type: string, content: Jsonable<unknown>): void;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// @internal
|
|
25
|
+
export interface ISignaler {
|
|
26
|
+
offSignal<T>(signalName: string, listener: SignalListener<T>): ISignaler;
|
|
27
|
+
onSignal<T>(signalName: string, listener: SignalListener<T>): ISignaler;
|
|
28
|
+
submitSignal<T>(signalName: string, payload?: Jsonable<T>): any;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// @internal
|
|
32
|
+
export class Signaler extends DataObject<{
|
|
33
|
+
Events: IErrorEvent;
|
|
34
|
+
}> implements EventEmitter, ISignaler {
|
|
35
|
+
// (undocumented)
|
|
36
|
+
static readonly factory: DataObjectFactory<Signaler, {
|
|
37
|
+
Events: IErrorEvent;
|
|
38
|
+
}>;
|
|
39
|
+
// (undocumented)
|
|
40
|
+
protected hasInitialized(): Promise<void>;
|
|
41
|
+
// (undocumented)
|
|
42
|
+
static readonly Name = "@fluid-example/signaler";
|
|
43
|
+
// (undocumented)
|
|
44
|
+
offSignal<T>(signalName: string, listener: SignalListener<T>): ISignaler;
|
|
45
|
+
// (undocumented)
|
|
46
|
+
onSignal<T>(signalName: string, listener: SignalListener<T>): ISignaler;
|
|
47
|
+
// (undocumented)
|
|
48
|
+
submitSignal<T>(signalName: string, payload?: Jsonable<T>): void;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// @internal (undocumented)
|
|
52
|
+
export type SignalListener<T> = (clientId: string, local: boolean, payload: Jsonable<T>) => void;
|
|
53
|
+
|
|
54
|
+
// (No @packageDocumentation comment for this package)
|
|
55
|
+
|
|
56
|
+
```
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { DataObject } from '@fluidframework/aqueduct';
|
|
2
|
+
import { DataObjectFactory } from '@fluidframework/aqueduct';
|
|
3
|
+
import { EventEmitter } from '@fluid-internal/client-utils';
|
|
4
|
+
import { IErrorEvent } from '@fluidframework/core-interfaces';
|
|
5
|
+
import { IInboundSignalMessage } from '@fluidframework/runtime-definitions';
|
|
6
|
+
import { Jsonable } from '@fluidframework/datastore-definitions';
|
|
7
|
+
|
|
8
|
+
/* Excluded from this release type: IRuntimeSignaler */
|
|
9
|
+
|
|
10
|
+
/* Excluded from this release type: ISignaler */
|
|
11
|
+
|
|
12
|
+
/* Excluded from this release type: Signaler */
|
|
13
|
+
|
|
14
|
+
/* Excluded from this release type: SignalListener */
|
|
15
|
+
|
|
16
|
+
export { }
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { DataObject } from '@fluidframework/aqueduct';
|
|
2
|
+
import { DataObjectFactory } from '@fluidframework/aqueduct';
|
|
3
|
+
import { EventEmitter } from '@fluid-internal/client-utils';
|
|
4
|
+
import { IErrorEvent } from '@fluidframework/core-interfaces';
|
|
5
|
+
import { IInboundSignalMessage } from '@fluidframework/runtime-definitions';
|
|
6
|
+
import { Jsonable } from '@fluidframework/datastore-definitions';
|
|
7
|
+
|
|
8
|
+
/* Excluded from this release type: DataObject */
|
|
9
|
+
|
|
10
|
+
/* Excluded from this release type: DataObjectFactory */
|
|
11
|
+
|
|
12
|
+
/* Excluded from this release type: IRuntimeSignaler */
|
|
13
|
+
|
|
14
|
+
/* Excluded from this release type: ISignaler */
|
|
15
|
+
|
|
16
|
+
/* Excluded from this release type: Jsonable */
|
|
17
|
+
|
|
18
|
+
/* Excluded from this release type: Signaler */
|
|
19
|
+
|
|
20
|
+
/* Excluded from this release type: SignalListener */
|
|
21
|
+
|
|
22
|
+
export { }
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { DataObject } from '@fluidframework/aqueduct';
|
|
2
|
+
import { DataObjectFactory } from '@fluidframework/aqueduct';
|
|
3
|
+
import { EventEmitter } from '@fluid-internal/client-utils';
|
|
4
|
+
import { IErrorEvent } from '@fluidframework/core-interfaces';
|
|
5
|
+
import { IInboundSignalMessage } from '@fluidframework/runtime-definitions';
|
|
6
|
+
import { Jsonable } from '@fluidframework/datastore-definitions';
|
|
7
|
+
|
|
8
|
+
/* Excluded from this release type: DataObject */
|
|
9
|
+
|
|
10
|
+
/* Excluded from this release type: DataObjectFactory */
|
|
11
|
+
|
|
12
|
+
/* Excluded from this release type: IRuntimeSignaler */
|
|
13
|
+
|
|
14
|
+
/* Excluded from this release type: ISignaler */
|
|
15
|
+
|
|
16
|
+
/* Excluded from this release type: Jsonable */
|
|
17
|
+
|
|
18
|
+
/* Excluded from this release type: Signaler */
|
|
19
|
+
|
|
20
|
+
/* Excluded from this release type: SignalListener */
|
|
21
|
+
|
|
22
|
+
export { }
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { DataObject } from '@fluidframework/aqueduct';
|
|
2
|
+
import { DataObjectFactory } from '@fluidframework/aqueduct';
|
|
3
|
+
import { EventEmitter } from '@fluid-internal/client-utils';
|
|
4
|
+
import { IErrorEvent } from '@fluidframework/core-interfaces';
|
|
5
|
+
import { IInboundSignalMessage } from '@fluidframework/runtime-definitions';
|
|
6
|
+
import { Jsonable } from '@fluidframework/datastore-definitions';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Duck type of something that provides the expected signalling functionality:
|
|
10
|
+
* A way to verify we can signal, a way to send a signal, and a way to listen for incoming signals
|
|
11
|
+
* @internal
|
|
12
|
+
*/
|
|
13
|
+
export declare interface IRuntimeSignaler {
|
|
14
|
+
connected: boolean;
|
|
15
|
+
on(event: "signal", listener: (message: IInboundSignalMessage, local: boolean) => void): any;
|
|
16
|
+
submitSignal(type: string, content: Jsonable<unknown>): void;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* ISignaler defines an interface for working with signals that is similar to the more common
|
|
21
|
+
* eventing patterns of EventEmitter. In addition to sending and responding to signals, it
|
|
22
|
+
* provides explicit methods around signal requests to other connected clients.
|
|
23
|
+
* @internal
|
|
24
|
+
*/
|
|
25
|
+
export declare interface ISignaler {
|
|
26
|
+
/**
|
|
27
|
+
* Adds a listener for the specified signal. It behaves in the same way as EventEmitter's `on`
|
|
28
|
+
* method regarding multiple registrations, callback order, etc.
|
|
29
|
+
* @param signalName - The name of the signal
|
|
30
|
+
* @param listener - The callback signal handler to add
|
|
31
|
+
* @returns This ISignaler
|
|
32
|
+
*/
|
|
33
|
+
onSignal<T>(signalName: string, listener: SignalListener<T>): ISignaler;
|
|
34
|
+
/**
|
|
35
|
+
* Remove a listener for the specified signal. It behaves in the same way as EventEmitter's
|
|
36
|
+
* `off` method regarding multiple registrations, removal order, etc.
|
|
37
|
+
* @param signalName - The name of the signal
|
|
38
|
+
* @param listener - The callback signal handler to remove
|
|
39
|
+
* @returns This ISignaler
|
|
40
|
+
*/
|
|
41
|
+
offSignal<T>(signalName: string, listener: SignalListener<T>): ISignaler;
|
|
42
|
+
/**
|
|
43
|
+
* Send a signal with payload to its connected listeners.
|
|
44
|
+
* @param signalName - The name of the signal
|
|
45
|
+
* @param payload - The data to send with the signal
|
|
46
|
+
*/
|
|
47
|
+
submitSignal<T>(signalName: string, payload?: Jsonable<T>): any;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* DataObject implementation of ISignaler for fluid-static plug-and-play. Allows fluid-static
|
|
52
|
+
* users to get an ISignaler without a custom DO.
|
|
53
|
+
* @internal
|
|
54
|
+
*/
|
|
55
|
+
export declare class Signaler extends DataObject<{
|
|
56
|
+
Events: IErrorEvent;
|
|
57
|
+
}> implements EventEmitter, ISignaler {
|
|
58
|
+
private _signaler;
|
|
59
|
+
private get signaler();
|
|
60
|
+
static readonly Name = "@fluid-example/signaler";
|
|
61
|
+
static readonly factory: DataObjectFactory<Signaler, {
|
|
62
|
+
Events: IErrorEvent;
|
|
63
|
+
}>;
|
|
64
|
+
protected hasInitialized(): Promise<void>;
|
|
65
|
+
onSignal<T>(signalName: string, listener: SignalListener<T>): ISignaler;
|
|
66
|
+
offSignal<T>(signalName: string, listener: SignalListener<T>): ISignaler;
|
|
67
|
+
submitSignal<T>(signalName: string, payload?: Jsonable<T>): void;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* @internal
|
|
72
|
+
*/
|
|
73
|
+
export declare type SignalListener<T> = (clientId: string, local: boolean, payload: Jsonable<T>) => void;
|
|
74
|
+
|
|
75
|
+
export { }
|
package/dist/index.d.ts
CHANGED
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
|
-
export { IRuntimeSignaler, ISignaler, Signaler, SignalListener } from "./signaler";
|
|
5
|
+
export { IRuntimeSignaler, ISignaler, Signaler, SignalListener } from "./signaler/index.js";
|
|
6
6
|
//# sourceMappingURL=index.d.ts.map
|
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,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
/*!
|
|
2
3
|
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
4
|
* Licensed under the MIT License.
|
|
4
5
|
*/
|
|
5
|
-
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.Signaler = void 0;
|
|
8
|
+
var index_js_1 = require("./signaler/index.js");
|
|
9
|
+
Object.defineProperty(exports, "Signaler", { enumerable: true, get: function () { return index_js_1.Signaler; } });
|
|
6
10
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,gDAA4F;AAAtD,oGAAA,QAAQ,OAAA","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport { IRuntimeSignaler, ISignaler, Signaler, SignalListener } from \"./signaler/index.js\";\n"]}
|
package/dist/signaler/index.d.ts
CHANGED
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
|
-
export { IRuntimeSignaler, ISignaler, Signaler, SignalListener } from "./signaler";
|
|
5
|
+
export { IRuntimeSignaler, ISignaler, Signaler, SignalListener } from "./signaler.js";
|
|
6
6
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/signaler/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/signaler/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC"}
|
package/dist/signaler/index.js
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
/*!
|
|
2
3
|
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
4
|
* Licensed under the MIT License.
|
|
4
5
|
*/
|
|
5
|
-
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.Signaler = void 0;
|
|
8
|
+
var signaler_js_1 = require("./signaler.js");
|
|
9
|
+
Object.defineProperty(exports, "Signaler", { enumerable: true, get: function () { return signaler_js_1.Signaler; } });
|
|
6
10
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/signaler/index.ts"],"names":[],"mappings":"AAAA;;;GAGG
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/signaler/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,6CAAsF;AAAhD,uGAAA,QAAQ,OAAA","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport { IRuntimeSignaler, ISignaler, Signaler, SignalListener } from \"./signaler.js\";\n"]}
|
|
@@ -2,9 +2,8 @@
|
|
|
2
2
|
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
|
-
/// <reference types="node" />
|
|
6
|
-
import { EventEmitter } from "events";
|
|
7
5
|
import { DataObject, DataObjectFactory } from "@fluidframework/aqueduct";
|
|
6
|
+
import { EventEmitter } from "@fluid-internal/client-utils";
|
|
8
7
|
import { Jsonable } from "@fluidframework/datastore-definitions";
|
|
9
8
|
import { IInboundSignalMessage } from "@fluidframework/runtime-definitions";
|
|
10
9
|
import { IErrorEvent } from "@fluidframework/core-interfaces";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signaler.d.ts","sourceRoot":"","sources":["../../src/signaler/signaler.ts"],"names":[],"mappings":"AAAA;;;GAGG
|
|
1
|
+
{"version":3,"file":"signaler.d.ts","sourceRoot":"","sources":["../../src/signaler/signaler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,EAAE,YAAY,EAAqB,MAAM,8BAA8B,CAAC;AAE/E,OAAO,EAAE,QAAQ,EAAE,MAAM,uCAAuC,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAM9D;;GAEG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;AAEjG;;;;;GAKG;AACH,MAAM,WAAW,SAAS;IACzB;;;;;;OAMG;IACH,QAAQ,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IACxE;;;;;;OAMG;IACH,SAAS,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IACzE;;;;OAIG;IACH,YAAY,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAE;CAC3D;AAED;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAChC,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,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;CAC7D;AAsED;;;;GAIG;AACH,qBAAa,QACZ,SAAQ,UAAU,CAAC;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,CAC1C,YAAW,YAAY,EAAE,SAAS;IAElC,OAAO,CAAC,SAAS,CAA+B;IAChD,OAAO,KAAK,QAAQ,GAGnB;IAED,gBAAuB,IAAI,6BAA6B;IAExD,gBAAuB,OAAO;gBAXD,WAAW;OAWgD;cAExE,cAAc;IASvB,QAAQ,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,SAAS;IAKvE,SAAS,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,SAAS;IAKxE,YAAY,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;CAGhE"}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
/*!
|
|
2
3
|
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
4
|
* Licensed under the MIT License.
|
|
4
5
|
*/
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.Signaler = void 0;
|
|
8
|
+
const aqueduct_1 = require("@fluidframework/aqueduct");
|
|
9
|
+
const client_utils_1 = require("@fluid-internal/client-utils");
|
|
10
|
+
const core_utils_1 = require("@fluidframework/core-utils");
|
|
9
11
|
/**
|
|
10
12
|
* Note: currently experimental and under development
|
|
11
13
|
*
|
|
@@ -15,7 +17,7 @@ import { assert } from "@fluidframework/core-utils";
|
|
|
15
17
|
* manage callbacks, and thus will reflect that behavior with regards to callback registration and
|
|
16
18
|
* deregistration.
|
|
17
19
|
*/
|
|
18
|
-
class InternalSignaler extends TypedEventEmitter {
|
|
20
|
+
class InternalSignaler extends client_utils_1.TypedEventEmitter {
|
|
19
21
|
constructor(
|
|
20
22
|
/**
|
|
21
23
|
* Object to wrap that can submit and listen to signals
|
|
@@ -29,7 +31,7 @@ class InternalSignaler extends TypedEventEmitter {
|
|
|
29
31
|
signalerId) {
|
|
30
32
|
super();
|
|
31
33
|
this.signaler = signaler;
|
|
32
|
-
this.emitter = new EventEmitter();
|
|
34
|
+
this.emitter = new client_utils_1.EventEmitter();
|
|
33
35
|
this.emitter.on("error", (error) => {
|
|
34
36
|
this.emit("error", error);
|
|
35
37
|
});
|
|
@@ -70,9 +72,9 @@ class InternalSignaler extends TypedEventEmitter {
|
|
|
70
72
|
* users to get an ISignaler without a custom DO.
|
|
71
73
|
* @internal
|
|
72
74
|
*/
|
|
73
|
-
|
|
75
|
+
class Signaler extends aqueduct_1.DataObject {
|
|
74
76
|
get signaler() {
|
|
75
|
-
assert(this._signaler !== undefined, 0x24b /* "internal signaler should be defined" */);
|
|
77
|
+
(0, core_utils_1.assert)(this._signaler !== undefined, 0x24b /* "internal signaler should be defined" */);
|
|
76
78
|
return this._signaler;
|
|
77
79
|
}
|
|
78
80
|
async hasInitialized() {
|
|
@@ -94,6 +96,7 @@ export class Signaler extends DataObject {
|
|
|
94
96
|
this.signaler.submitSignal(signalName, payload);
|
|
95
97
|
}
|
|
96
98
|
}
|
|
99
|
+
exports.Signaler = Signaler;
|
|
97
100
|
Signaler.Name = "@fluid-example/signaler";
|
|
98
|
-
Signaler.factory = new DataObjectFactory(Signaler.Name, Signaler, [], {});
|
|
101
|
+
Signaler.factory = new aqueduct_1.DataObjectFactory(Signaler.Name, Signaler, [], {});
|
|
99
102
|
//# sourceMappingURL=signaler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signaler.js","sourceRoot":"","sources":["../../src/signaler/signaler.ts"],"names":[],"mappings":"AAAA;;;GAGG
|
|
1
|
+
{"version":3,"file":"signaler.js","sourceRoot":"","sources":["../../src/signaler/signaler.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 { DataObject, DataObjectFactory } from \"@fluidframework/aqueduct\";\nimport { EventEmitter, TypedEventEmitter } from \"@fluid-internal/client-utils\";\nimport { assert } from \"@fluidframework/core-utils\";\nimport { Jsonable } from \"@fluidframework/datastore-definitions\";\nimport { IInboundSignalMessage } from \"@fluidframework/runtime-definitions\";\nimport { IErrorEvent } from \"@fluidframework/core-interfaces\";\n\n// TODO:\n// add way to mark with current sequence number for ordering signals relative to ops\n// throttling and batching\n\n/**\n * @internal\n */\nexport type SignalListener<T> = (clientId: string, local: boolean, payload: Jsonable<T>) => 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 * @internal\n */\nexport interface ISignaler {\n\t/**\n\t * Adds a listener for the specified signal. It behaves in the same way as EventEmitter's `on`\n\t * method regarding multiple registrations, callback order, etc.\n\t * @param signalName - The name of the signal\n\t * @param listener - The callback signal handler to add\n\t * @returns This ISignaler\n\t */\n\tonSignal<T>(signalName: string, listener: SignalListener<T>): ISignaler;\n\t/**\n\t * Remove a listener for the specified signal. It behaves in the same way as EventEmitter's\n\t * `off` method regarding multiple registrations, removal order, etc.\n\t * @param signalName - The name of the signal\n\t * @param listener - The callback signal handler to remove\n\t * @returns This ISignaler\n\t */\n\toffSignal<T>(signalName: string, listener: SignalListener<T>): ISignaler;\n\t/**\n\t * Send a signal with payload to its connected listeners.\n\t * @param signalName - The name of the signal\n\t * @param payload - The data to send with the signal\n\t */\n\tsubmitSignal<T>(signalName: string, payload?: Jsonable<T>);\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 * @internal\n */\nexport interface IRuntimeSignaler {\n\tconnected: boolean;\n\ton(event: \"signal\", listener: (message: IInboundSignalMessage, local: boolean) => void);\n\tsubmitSignal(type: string, content: Jsonable<unknown>): void;\n}\n\n/**\n * Note: currently experimental and under development\n *\n * Helper class to assist common scenarios around working with signals. InternalSignaler 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 */\nclass InternalSignaler extends TypedEventEmitter<IErrorEvent> implements ISignaler {\n\tprivate readonly emitter = new EventEmitter();\n\n\tprivate readonly signalerId: string | undefined;\n\n\tconstructor(\n\t\t/**\n\t\t * Object to wrap that can submit and listen to signals\n\t\t */\n\t\tprivate readonly signaler: IRuntimeSignaler,\n\t\t/**\n\t\t * Optional id to assign to this manager that will be attached to\n\t\t * signal names. Useful to avoid collisions if there are multiple\n\t\t * signal users at the Container level\n\t\t */\n\t\tsignalerId?: string,\n\t) {\n\t\tsuper();\n\t\tthis.emitter.on(\"error\", (error) => {\n\t\t\tthis.emit(\"error\", error);\n\t\t});\n\t\tthis.signalerId = signalerId ? `#${signalerId}` : undefined;\n\t\tthis.signaler.on(\"signal\", (message: IInboundSignalMessage, local: boolean) => {\n\t\t\tconst clientId = message.clientId;\n\t\t\t// Only call listeners when the runtime is connected and if the signal has an\n\t\t\t// identifiable sender clientId. The listener is responsible for deciding how\n\t\t\t// it wants to handle local/remote signals\n\t\t\tif (this.signaler.connected && clientId !== null) {\n\t\t\t\tthis.emitter.emit(message.type, clientId, local, message.content);\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate getSignalerSignalName(signalName: string): string {\n\t\treturn this.signalerId ? `${signalName}${this.signalerId}` : signalName;\n\t}\n\n\t// ISignaler methods\n\n\tpublic onSignal<T>(signalName: string, listener: SignalListener<T>): ISignaler {\n\t\tconst signalerSignalName = this.getSignalerSignalName(signalName);\n\t\tthis.emitter.on(signalerSignalName, listener);\n\t\treturn this;\n\t}\n\n\tpublic offSignal<T>(signalName: string, listener: SignalListener<T>): ISignaler {\n\t\tconst signalerSignalName = this.getSignalerSignalName(signalName);\n\t\tthis.emitter.off(signalerSignalName, listener);\n\t\treturn this;\n\t}\n\n\tpublic submitSignal<T>(signalName: string, payload?: Jsonable<T>) {\n\t\tconst signalerSignalName = this.getSignalerSignalName(signalName);\n\t\tif (this.signaler.connected) {\n\t\t\tthis.signaler.submitSignal(signalerSignalName, payload);\n\t\t}\n\t}\n}\n\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.\n * @internal\n */\nexport class Signaler\n\textends DataObject<{ Events: IErrorEvent }>\n\timplements EventEmitter, ISignaler\n{\n\tprivate _signaler: InternalSignaler | undefined;\n\tprivate get signaler(): InternalSignaler {\n\t\tassert(this._signaler !== undefined, 0x24b /* \"internal signaler should be defined\" */);\n\t\treturn this._signaler;\n\t}\n\n\tpublic static readonly Name = \"@fluid-example/signaler\";\n\n\tpublic static readonly factory = new DataObjectFactory(Signaler.Name, Signaler, [], {});\n\n\tprotected async hasInitialized() {\n\t\tthis._signaler = new InternalSignaler(this.runtime);\n\t\tthis.signaler.on(\"error\", (error) => {\n\t\t\tthis.emit(\"error\", error);\n\t\t});\n\t}\n\n\t// ISignaler methods Note these are all passthroughs\n\n\tpublic onSignal<T>(signalName: string, listener: SignalListener<T>): ISignaler {\n\t\tthis.signaler.onSignal(signalName, listener);\n\t\treturn this;\n\t}\n\n\tpublic offSignal<T>(signalName: string, listener: SignalListener<T>): ISignaler {\n\t\tthis.signaler.offSignal(signalName, listener);\n\t\treturn this;\n\t}\n\n\tpublic submitSignal<T>(signalName: string, payload?: Jsonable<T>) {\n\t\tthis.signaler.submitSignal(signalName, payload);\n\t}\n}\n"]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// This file is read by tools that parse documentation comments conforming to the TSDoc standard.
|
|
2
|
+
// It should be published with your NPM package. It should not be tracked by Git.
|
|
3
|
+
{
|
|
4
|
+
"tsdocVersion": "0.12",
|
|
5
|
+
"toolPackages": [
|
|
6
|
+
{
|
|
7
|
+
"packageName": "@microsoft/api-extractor",
|
|
8
|
+
"packageVersion": "7.42.3"
|
|
9
|
+
}
|
|
10
|
+
]
|
|
11
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { DataObject } from '@fluidframework/aqueduct';
|
|
2
|
+
import { DataObjectFactory } from '@fluidframework/aqueduct';
|
|
3
|
+
import { EventEmitter } from '@fluid-internal/client-utils';
|
|
4
|
+
import { IErrorEvent } from '@fluidframework/core-interfaces';
|
|
5
|
+
import { IInboundSignalMessage } from '@fluidframework/runtime-definitions';
|
|
6
|
+
import { Jsonable } from '@fluidframework/datastore-definitions';
|
|
7
|
+
|
|
8
|
+
/* Excluded from this release type: IRuntimeSignaler */
|
|
9
|
+
|
|
10
|
+
/* Excluded from this release type: ISignaler */
|
|
11
|
+
|
|
12
|
+
/* Excluded from this release type: Signaler */
|
|
13
|
+
|
|
14
|
+
/* Excluded from this release type: SignalListener */
|
|
15
|
+
|
|
16
|
+
export { }
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { DataObject } from '@fluidframework/aqueduct';
|
|
2
|
+
import { DataObjectFactory } from '@fluidframework/aqueduct';
|
|
3
|
+
import { EventEmitter } from '@fluid-internal/client-utils';
|
|
4
|
+
import { IErrorEvent } from '@fluidframework/core-interfaces';
|
|
5
|
+
import { IInboundSignalMessage } from '@fluidframework/runtime-definitions';
|
|
6
|
+
import { Jsonable } from '@fluidframework/datastore-definitions';
|
|
7
|
+
|
|
8
|
+
/* Excluded from this release type: DataObject */
|
|
9
|
+
|
|
10
|
+
/* Excluded from this release type: DataObjectFactory */
|
|
11
|
+
|
|
12
|
+
/* Excluded from this release type: IRuntimeSignaler */
|
|
13
|
+
|
|
14
|
+
/* Excluded from this release type: ISignaler */
|
|
15
|
+
|
|
16
|
+
/* Excluded from this release type: Jsonable */
|
|
17
|
+
|
|
18
|
+
/* Excluded from this release type: Signaler */
|
|
19
|
+
|
|
20
|
+
/* Excluded from this release type: SignalListener */
|
|
21
|
+
|
|
22
|
+
export { }
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { DataObject } from '@fluidframework/aqueduct';
|
|
2
|
+
import { DataObjectFactory } from '@fluidframework/aqueduct';
|
|
3
|
+
import { EventEmitter } from '@fluid-internal/client-utils';
|
|
4
|
+
import { IErrorEvent } from '@fluidframework/core-interfaces';
|
|
5
|
+
import { IInboundSignalMessage } from '@fluidframework/runtime-definitions';
|
|
6
|
+
import { Jsonable } from '@fluidframework/datastore-definitions';
|
|
7
|
+
|
|
8
|
+
/* Excluded from this release type: DataObject */
|
|
9
|
+
|
|
10
|
+
/* Excluded from this release type: DataObjectFactory */
|
|
11
|
+
|
|
12
|
+
/* Excluded from this release type: IRuntimeSignaler */
|
|
13
|
+
|
|
14
|
+
/* Excluded from this release type: ISignaler */
|
|
15
|
+
|
|
16
|
+
/* Excluded from this release type: Jsonable */
|
|
17
|
+
|
|
18
|
+
/* Excluded from this release type: Signaler */
|
|
19
|
+
|
|
20
|
+
/* Excluded from this release type: SignalListener */
|
|
21
|
+
|
|
22
|
+
export { }
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { DataObject } from '@fluidframework/aqueduct';
|
|
2
|
+
import { DataObjectFactory } from '@fluidframework/aqueduct';
|
|
3
|
+
import { EventEmitter } from '@fluid-internal/client-utils';
|
|
4
|
+
import { IErrorEvent } from '@fluidframework/core-interfaces';
|
|
5
|
+
import { IInboundSignalMessage } from '@fluidframework/runtime-definitions';
|
|
6
|
+
import { Jsonable } from '@fluidframework/datastore-definitions';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Duck type of something that provides the expected signalling functionality:
|
|
10
|
+
* A way to verify we can signal, a way to send a signal, and a way to listen for incoming signals
|
|
11
|
+
* @internal
|
|
12
|
+
*/
|
|
13
|
+
export declare interface IRuntimeSignaler {
|
|
14
|
+
connected: boolean;
|
|
15
|
+
on(event: "signal", listener: (message: IInboundSignalMessage, local: boolean) => void): any;
|
|
16
|
+
submitSignal(type: string, content: Jsonable<unknown>): void;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* ISignaler defines an interface for working with signals that is similar to the more common
|
|
21
|
+
* eventing patterns of EventEmitter. In addition to sending and responding to signals, it
|
|
22
|
+
* provides explicit methods around signal requests to other connected clients.
|
|
23
|
+
* @internal
|
|
24
|
+
*/
|
|
25
|
+
export declare interface ISignaler {
|
|
26
|
+
/**
|
|
27
|
+
* Adds a listener for the specified signal. It behaves in the same way as EventEmitter's `on`
|
|
28
|
+
* method regarding multiple registrations, callback order, etc.
|
|
29
|
+
* @param signalName - The name of the signal
|
|
30
|
+
* @param listener - The callback signal handler to add
|
|
31
|
+
* @returns This ISignaler
|
|
32
|
+
*/
|
|
33
|
+
onSignal<T>(signalName: string, listener: SignalListener<T>): ISignaler;
|
|
34
|
+
/**
|
|
35
|
+
* Remove a listener for the specified signal. It behaves in the same way as EventEmitter's
|
|
36
|
+
* `off` method regarding multiple registrations, removal order, etc.
|
|
37
|
+
* @param signalName - The name of the signal
|
|
38
|
+
* @param listener - The callback signal handler to remove
|
|
39
|
+
* @returns This ISignaler
|
|
40
|
+
*/
|
|
41
|
+
offSignal<T>(signalName: string, listener: SignalListener<T>): ISignaler;
|
|
42
|
+
/**
|
|
43
|
+
* Send a signal with payload to its connected listeners.
|
|
44
|
+
* @param signalName - The name of the signal
|
|
45
|
+
* @param payload - The data to send with the signal
|
|
46
|
+
*/
|
|
47
|
+
submitSignal<T>(signalName: string, payload?: Jsonable<T>): any;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* DataObject implementation of ISignaler for fluid-static plug-and-play. Allows fluid-static
|
|
52
|
+
* users to get an ISignaler without a custom DO.
|
|
53
|
+
* @internal
|
|
54
|
+
*/
|
|
55
|
+
export declare class Signaler extends DataObject<{
|
|
56
|
+
Events: IErrorEvent;
|
|
57
|
+
}> implements EventEmitter, ISignaler {
|
|
58
|
+
private _signaler;
|
|
59
|
+
private get signaler();
|
|
60
|
+
static readonly Name = "@fluid-example/signaler";
|
|
61
|
+
static readonly factory: DataObjectFactory<Signaler, {
|
|
62
|
+
Events: IErrorEvent;
|
|
63
|
+
}>;
|
|
64
|
+
protected hasInitialized(): Promise<void>;
|
|
65
|
+
onSignal<T>(signalName: string, listener: SignalListener<T>): ISignaler;
|
|
66
|
+
offSignal<T>(signalName: string, listener: SignalListener<T>): ISignaler;
|
|
67
|
+
submitSignal<T>(signalName: string, payload?: Jsonable<T>): void;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* @internal
|
|
72
|
+
*/
|
|
73
|
+
export declare type SignalListener<T> = (clientId: string, local: boolean, payload: Jsonable<T>) => void;
|
|
74
|
+
|
|
75
|
+
export { }
|
package/lib/index.d.ts
CHANGED
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
|
-
export { IRuntimeSignaler, ISignaler, Signaler, SignalListener } from "./signaler";
|
|
5
|
+
export { IRuntimeSignaler, ISignaler, Signaler, SignalListener } from "./signaler/index.js";
|
|
6
6
|
//# sourceMappingURL=index.d.ts.map
|
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,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,qBAAqB,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,OAAO,EAA+B,QAAQ,EAAkB,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAA+B,QAAQ,EAAkB,MAAM,qBAAqB,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport { IRuntimeSignaler, ISignaler, Signaler, SignalListener } from \"./signaler/index.js\";\n"]}
|
package/lib/signaler/index.d.ts
CHANGED
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
|
-
export { IRuntimeSignaler, ISignaler, Signaler, SignalListener } from "./signaler";
|
|
5
|
+
export { IRuntimeSignaler, ISignaler, Signaler, SignalListener } from "./signaler.js";
|
|
6
6
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/signaler/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/signaler/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC"}
|
package/lib/signaler/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/signaler/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAA+B,QAAQ,EAAkB,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/signaler/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAA+B,QAAQ,EAAkB,MAAM,eAAe,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport { IRuntimeSignaler, ISignaler, Signaler, SignalListener } from \"./signaler.js\";\n"]}
|
|
@@ -2,9 +2,8 @@
|
|
|
2
2
|
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
|
-
/// <reference types="node" />
|
|
6
|
-
import { EventEmitter } from "events";
|
|
7
5
|
import { DataObject, DataObjectFactory } from "@fluidframework/aqueduct";
|
|
6
|
+
import { EventEmitter } from "@fluid-internal/client-utils";
|
|
8
7
|
import { Jsonable } from "@fluidframework/datastore-definitions";
|
|
9
8
|
import { IInboundSignalMessage } from "@fluidframework/runtime-definitions";
|
|
10
9
|
import { IErrorEvent } from "@fluidframework/core-interfaces";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signaler.d.ts","sourceRoot":"","sources":["../../src/signaler/signaler.ts"],"names":[],"mappings":"AAAA;;;GAGG
|
|
1
|
+
{"version":3,"file":"signaler.d.ts","sourceRoot":"","sources":["../../src/signaler/signaler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,EAAE,YAAY,EAAqB,MAAM,8BAA8B,CAAC;AAE/E,OAAO,EAAE,QAAQ,EAAE,MAAM,uCAAuC,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAM9D;;GAEG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;AAEjG;;;;;GAKG;AACH,MAAM,WAAW,SAAS;IACzB;;;;;;OAMG;IACH,QAAQ,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IACxE;;;;;;OAMG;IACH,SAAS,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IACzE;;;;OAIG;IACH,YAAY,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAE;CAC3D;AAED;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAChC,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,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;CAC7D;AAsED;;;;GAIG;AACH,qBAAa,QACZ,SAAQ,UAAU,CAAC;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,CAC1C,YAAW,YAAY,EAAE,SAAS;IAElC,OAAO,CAAC,SAAS,CAA+B;IAChD,OAAO,KAAK,QAAQ,GAGnB;IAED,gBAAuB,IAAI,6BAA6B;IAExD,gBAAuB,OAAO;gBAXD,WAAW;OAWgD;cAExE,cAAc;IASvB,QAAQ,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,SAAS;IAKvE,SAAS,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,SAAS;IAKxE,YAAY,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;CAGhE"}
|
package/lib/signaler/signaler.js
CHANGED
|
@@ -2,9 +2,8 @@
|
|
|
2
2
|
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
|
-
import { EventEmitter } from "events";
|
|
6
5
|
import { DataObject, DataObjectFactory } from "@fluidframework/aqueduct";
|
|
7
|
-
import { TypedEventEmitter } from "@fluid-internal/client-utils";
|
|
6
|
+
import { EventEmitter, TypedEventEmitter } from "@fluid-internal/client-utils";
|
|
8
7
|
import { assert } from "@fluidframework/core-utils";
|
|
9
8
|
/**
|
|
10
9
|
* Note: currently experimental and under development
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signaler.js","sourceRoot":"","sources":["../../src/signaler/signaler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"signaler.js","sourceRoot":"","sources":["../../src/signaler/signaler.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 { DataObject, DataObjectFactory } from \"@fluidframework/aqueduct\";\nimport { EventEmitter, TypedEventEmitter } from \"@fluid-internal/client-utils\";\nimport { assert } from \"@fluidframework/core-utils\";\nimport { Jsonable } from \"@fluidframework/datastore-definitions\";\nimport { IInboundSignalMessage } from \"@fluidframework/runtime-definitions\";\nimport { IErrorEvent } from \"@fluidframework/core-interfaces\";\n\n// TODO:\n// add way to mark with current sequence number for ordering signals relative to ops\n// throttling and batching\n\n/**\n * @internal\n */\nexport type SignalListener<T> = (clientId: string, local: boolean, payload: Jsonable<T>) => 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 * @internal\n */\nexport interface ISignaler {\n\t/**\n\t * Adds a listener for the specified signal. It behaves in the same way as EventEmitter's `on`\n\t * method regarding multiple registrations, callback order, etc.\n\t * @param signalName - The name of the signal\n\t * @param listener - The callback signal handler to add\n\t * @returns This ISignaler\n\t */\n\tonSignal<T>(signalName: string, listener: SignalListener<T>): ISignaler;\n\t/**\n\t * Remove a listener for the specified signal. It behaves in the same way as EventEmitter's\n\t * `off` method regarding multiple registrations, removal order, etc.\n\t * @param signalName - The name of the signal\n\t * @param listener - The callback signal handler to remove\n\t * @returns This ISignaler\n\t */\n\toffSignal<T>(signalName: string, listener: SignalListener<T>): ISignaler;\n\t/**\n\t * Send a signal with payload to its connected listeners.\n\t * @param signalName - The name of the signal\n\t * @param payload - The data to send with the signal\n\t */\n\tsubmitSignal<T>(signalName: string, payload?: Jsonable<T>);\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 * @internal\n */\nexport interface IRuntimeSignaler {\n\tconnected: boolean;\n\ton(event: \"signal\", listener: (message: IInboundSignalMessage, local: boolean) => void);\n\tsubmitSignal(type: string, content: Jsonable<unknown>): void;\n}\n\n/**\n * Note: currently experimental and under development\n *\n * Helper class to assist common scenarios around working with signals. InternalSignaler 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 */\nclass InternalSignaler extends TypedEventEmitter<IErrorEvent> implements ISignaler {\n\tprivate readonly emitter = new EventEmitter();\n\n\tprivate readonly signalerId: string | undefined;\n\n\tconstructor(\n\t\t/**\n\t\t * Object to wrap that can submit and listen to signals\n\t\t */\n\t\tprivate readonly signaler: IRuntimeSignaler,\n\t\t/**\n\t\t * Optional id to assign to this manager that will be attached to\n\t\t * signal names. Useful to avoid collisions if there are multiple\n\t\t * signal users at the Container level\n\t\t */\n\t\tsignalerId?: string,\n\t) {\n\t\tsuper();\n\t\tthis.emitter.on(\"error\", (error) => {\n\t\t\tthis.emit(\"error\", error);\n\t\t});\n\t\tthis.signalerId = signalerId ? `#${signalerId}` : undefined;\n\t\tthis.signaler.on(\"signal\", (message: IInboundSignalMessage, local: boolean) => {\n\t\t\tconst clientId = message.clientId;\n\t\t\t// Only call listeners when the runtime is connected and if the signal has an\n\t\t\t// identifiable sender clientId. The listener is responsible for deciding how\n\t\t\t// it wants to handle local/remote signals\n\t\t\tif (this.signaler.connected && clientId !== null) {\n\t\t\t\tthis.emitter.emit(message.type, clientId, local, message.content);\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate getSignalerSignalName(signalName: string): string {\n\t\treturn this.signalerId ? `${signalName}${this.signalerId}` : signalName;\n\t}\n\n\t// ISignaler methods\n\n\tpublic onSignal<T>(signalName: string, listener: SignalListener<T>): ISignaler {\n\t\tconst signalerSignalName = this.getSignalerSignalName(signalName);\n\t\tthis.emitter.on(signalerSignalName, listener);\n\t\treturn this;\n\t}\n\n\tpublic offSignal<T>(signalName: string, listener: SignalListener<T>): ISignaler {\n\t\tconst signalerSignalName = this.getSignalerSignalName(signalName);\n\t\tthis.emitter.off(signalerSignalName, listener);\n\t\treturn this;\n\t}\n\n\tpublic submitSignal<T>(signalName: string, payload?: Jsonable<T>) {\n\t\tconst signalerSignalName = this.getSignalerSignalName(signalName);\n\t\tif (this.signaler.connected) {\n\t\t\tthis.signaler.submitSignal(signalerSignalName, payload);\n\t\t}\n\t}\n}\n\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.\n * @internal\n */\nexport class Signaler\n\textends DataObject<{ Events: IErrorEvent }>\n\timplements EventEmitter, ISignaler\n{\n\tprivate _signaler: InternalSignaler | undefined;\n\tprivate get signaler(): InternalSignaler {\n\t\tassert(this._signaler !== undefined, 0x24b /* \"internal signaler should be defined\" */);\n\t\treturn this._signaler;\n\t}\n\n\tpublic static readonly Name = \"@fluid-example/signaler\";\n\n\tpublic static readonly factory = new DataObjectFactory(Signaler.Name, Signaler, [], {});\n\n\tprotected async hasInitialized() {\n\t\tthis._signaler = new InternalSignaler(this.runtime);\n\t\tthis.signaler.on(\"error\", (error) => {\n\t\t\tthis.emit(\"error\", error);\n\t\t});\n\t}\n\n\t// ISignaler methods Note these are all passthroughs\n\n\tpublic onSignal<T>(signalName: string, listener: SignalListener<T>): ISignaler {\n\t\tthis.signaler.onSignal(signalName, listener);\n\t\treturn this;\n\t}\n\n\tpublic offSignal<T>(signalName: string, listener: SignalListener<T>): ISignaler {\n\t\tthis.signaler.offSignal(signalName, listener);\n\t\treturn this;\n\t}\n\n\tpublic submitSignal<T>(signalName: string, payload?: Jsonable<T>) {\n\t\tthis.signaler.submitSignal(signalName, payload);\n\t}\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fluid-experimental/data-objects",
|
|
3
|
-
"version": "2.0.0-rc.
|
|
3
|
+
"version": "2.0.0-rc.2.0.0",
|
|
4
4
|
"description": "A collection of ready to use Fluid Data Objects",
|
|
5
5
|
"homepage": "https://fluidframework.com",
|
|
6
6
|
"repository": {
|
|
@@ -11,43 +11,92 @@
|
|
|
11
11
|
"license": "MIT",
|
|
12
12
|
"author": "Microsoft and contributors",
|
|
13
13
|
"sideEffects": false,
|
|
14
|
+
"type": "module",
|
|
15
|
+
"exports": {
|
|
16
|
+
".": {
|
|
17
|
+
"import": {
|
|
18
|
+
"types": "./lib/index.d.ts",
|
|
19
|
+
"default": "./lib/index.js"
|
|
20
|
+
},
|
|
21
|
+
"require": {
|
|
22
|
+
"types": "./dist/index.d.ts",
|
|
23
|
+
"default": "./dist/index.js"
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
"./public": {
|
|
27
|
+
"import": {
|
|
28
|
+
"types": "./lib/data-objects-public.d.ts",
|
|
29
|
+
"default": "./lib/index.js"
|
|
30
|
+
},
|
|
31
|
+
"require": {
|
|
32
|
+
"types": "./dist/data-objects-public.d.ts",
|
|
33
|
+
"default": "./dist/index.js"
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
"./internal": {
|
|
37
|
+
"import": {
|
|
38
|
+
"types": "./lib/index.d.ts",
|
|
39
|
+
"default": "./lib/index.js"
|
|
40
|
+
},
|
|
41
|
+
"require": {
|
|
42
|
+
"types": "./dist/index.d.ts",
|
|
43
|
+
"default": "./dist/index.js"
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
},
|
|
14
47
|
"main": "dist/index.js",
|
|
15
|
-
"module": "lib/index.js",
|
|
16
48
|
"types": "dist/index.d.ts",
|
|
17
49
|
"dependencies": {
|
|
18
|
-
"@fluid-internal/client-utils": ">=2.0.0-rc.
|
|
19
|
-
"@fluidframework/aqueduct": ">=2.0.0-rc.
|
|
20
|
-
"@fluidframework/core-interfaces": ">=2.0.0-rc.
|
|
21
|
-
"@fluidframework/core-utils": ">=2.0.0-rc.
|
|
22
|
-
"@fluidframework/datastore-definitions": ">=2.0.0-rc.
|
|
23
|
-
"@fluidframework/map": ">=2.0.0-rc.
|
|
24
|
-
"@fluidframework/runtime-definitions": ">=2.0.0-rc.
|
|
25
|
-
"events": "^3.1.0"
|
|
50
|
+
"@fluid-internal/client-utils": ">=2.0.0-rc.2.0.0 <2.0.0-rc.2.1.0",
|
|
51
|
+
"@fluidframework/aqueduct": ">=2.0.0-rc.2.0.0 <2.0.0-rc.2.1.0",
|
|
52
|
+
"@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.0 <2.0.0-rc.2.1.0",
|
|
53
|
+
"@fluidframework/core-utils": ">=2.0.0-rc.2.0.0 <2.0.0-rc.2.1.0",
|
|
54
|
+
"@fluidframework/datastore-definitions": ">=2.0.0-rc.2.0.0 <2.0.0-rc.2.1.0",
|
|
55
|
+
"@fluidframework/map": ">=2.0.0-rc.2.0.0 <2.0.0-rc.2.1.0",
|
|
56
|
+
"@fluidframework/runtime-definitions": ">=2.0.0-rc.2.0.0 <2.0.0-rc.2.1.0"
|
|
26
57
|
},
|
|
27
58
|
"devDependencies": {
|
|
28
|
-
"@
|
|
59
|
+
"@arethetypeswrong/cli": "^0.13.3",
|
|
60
|
+
"@fluid-tools/build-cli": "^0.34.0",
|
|
29
61
|
"@fluidframework/build-common": "^2.0.3",
|
|
30
|
-
"@fluidframework/build-tools": "^0.
|
|
31
|
-
"@fluidframework/eslint-config-fluid": "^
|
|
32
|
-
"@microsoft/api-extractor": "^7.
|
|
62
|
+
"@fluidframework/build-tools": "^0.34.0",
|
|
63
|
+
"@fluidframework/eslint-config-fluid": "^4.0.0",
|
|
64
|
+
"@microsoft/api-extractor": "^7.42.3",
|
|
33
65
|
"@types/node": "^18.19.0",
|
|
66
|
+
"copyfiles": "^2.4.1",
|
|
34
67
|
"cross-env": "^7.0.3",
|
|
35
|
-
"eslint": "~8.
|
|
68
|
+
"eslint": "~8.55.0",
|
|
36
69
|
"prettier": "~3.0.3",
|
|
37
70
|
"rimraf": "^4.4.0",
|
|
38
71
|
"typescript": "~5.1.6"
|
|
39
72
|
},
|
|
73
|
+
"fluidBuild": {
|
|
74
|
+
"tasks": {
|
|
75
|
+
"build:docs": {
|
|
76
|
+
"dependsOn": [
|
|
77
|
+
"...",
|
|
78
|
+
"api-extractor:commonjs",
|
|
79
|
+
"api-extractor:esnext"
|
|
80
|
+
],
|
|
81
|
+
"script": false
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
},
|
|
40
85
|
"typeValidation": {
|
|
41
86
|
"disabled": true,
|
|
42
87
|
"broken": {}
|
|
43
88
|
},
|
|
44
89
|
"scripts": {
|
|
90
|
+
"api": "fluid-build . --task api",
|
|
91
|
+
"api-extractor:commonjs": "api-extractor run --config ./api-extractor-cjs.json",
|
|
92
|
+
"api-extractor:esnext": "api-extractor run --local",
|
|
45
93
|
"build": "fluid-build . --task build",
|
|
46
94
|
"build:commonjs": "fluid-build . --task commonjs",
|
|
47
95
|
"build:compile": "fluid-build . --task compile",
|
|
48
|
-
"build:
|
|
49
|
-
"
|
|
50
|
-
"
|
|
96
|
+
"build:docs": "fluid-build . --task api",
|
|
97
|
+
"build:esnext": "tsc --project ./tsconfig.json",
|
|
98
|
+
"check:are-the-types-wrong": "attw --pack . --entrypoints .",
|
|
99
|
+
"clean": "rimraf --glob dist lib \"**/*.tsbuildinfo\" \"**/*.build.log\" _api-extractor-temp",
|
|
51
100
|
"eslint": "eslint --format stylish src",
|
|
52
101
|
"eslint:fix": "eslint --format stylish src --fix --fix-type problem,suggestion,layout",
|
|
53
102
|
"format": "npm run prettier:fix",
|
|
@@ -55,6 +104,6 @@
|
|
|
55
104
|
"lint:fix": "npm run prettier:fix && npm run eslint:fix",
|
|
56
105
|
"prettier": "prettier --check . --cache --ignore-path ../../../.prettierignore",
|
|
57
106
|
"prettier:fix": "prettier --write . --cache --ignore-path ../../../.prettierignore",
|
|
58
|
-
"tsc": "tsc"
|
|
107
|
+
"tsc": "fluid-tsc commonjs --project ./tsconfig.cjs.json && copyfiles -f ../../../common/build/build-common/src/cjs/package.json ./dist"
|
|
59
108
|
}
|
|
60
109
|
}
|
package/src/index.ts
CHANGED
package/src/signaler/index.ts
CHANGED
package/src/signaler/signaler.ts
CHANGED
|
@@ -3,9 +3,8 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { EventEmitter } from "events";
|
|
7
6
|
import { DataObject, DataObjectFactory } from "@fluidframework/aqueduct";
|
|
8
|
-
import { TypedEventEmitter } from "@fluid-internal/client-utils";
|
|
7
|
+
import { EventEmitter, TypedEventEmitter } from "@fluid-internal/client-utils";
|
|
9
8
|
import { assert } from "@fluidframework/core-utils";
|
|
10
9
|
import { Jsonable } from "@fluidframework/datastore-definitions";
|
|
11
10
|
import { IInboundSignalMessage } from "@fluidframework/runtime-definitions";
|
package/tsconfig.json
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
{
|
|
2
|
-
"extends": "
|
|
2
|
+
"extends": "../../../common/build/build-common/tsconfig.node16.json",
|
|
3
3
|
"exclude": ["dist", "node_modules"],
|
|
4
4
|
"compilerOptions": {
|
|
5
|
-
"module": "esnext",
|
|
6
5
|
"rootDir": "./src",
|
|
7
|
-
"outDir": "./
|
|
8
|
-
"composite": true,
|
|
6
|
+
"outDir": "./lib",
|
|
9
7
|
"types": ["node"],
|
|
10
8
|
},
|
|
11
9
|
"include": ["src/**/*"],
|