@fluidframework/core-interfaces 2.0.0-dev.5.3.2.178189 → 2.0.0-dev.6.4.0.191457
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 +1 -1
- package/CHANGELOG.md +75 -0
- package/README.md +4 -3
- package/Removing-IFluidRouter.md +113 -0
- package/dist/error.d.ts +105 -0
- package/dist/error.d.ts.map +1 -0
- package/dist/error.js +33 -0
- package/dist/error.js.map +1 -0
- package/dist/events.d.ts +251 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +7 -0
- package/dist/events.js.map +1 -0
- package/dist/fluidLoadable.d.ts.map +1 -1
- package/dist/fluidLoadable.js.map +1 -1
- package/dist/fluidPackage.d.ts +1 -1
- package/dist/fluidPackage.d.ts.map +1 -1
- package/dist/fluidPackage.js +7 -4
- package/dist/fluidPackage.js.map +1 -1
- package/dist/fluidRouter.d.ts.map +1 -1
- package/dist/fluidRouter.js.map +1 -1
- package/dist/index.d.ts +13 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -5
- package/dist/index.js.map +1 -1
- package/dist/logger.d.ts +64 -9
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +9 -0
- package/dist/logger.js.map +1 -1
- package/dist/provider.d.ts +11 -5
- package/dist/provider.d.ts.map +1 -1
- package/dist/provider.js.map +1 -1
- package/lib/error.d.ts +105 -0
- package/lib/error.d.ts.map +1 -0
- package/lib/error.js +30 -0
- package/lib/error.js.map +1 -0
- package/lib/events.d.ts +251 -0
- package/lib/events.d.ts.map +1 -0
- package/lib/events.js +6 -0
- package/lib/events.js.map +1 -0
- package/lib/fluidLoadable.d.ts.map +1 -1
- package/lib/fluidLoadable.js.map +1 -1
- package/lib/fluidPackage.d.ts +1 -1
- package/lib/fluidPackage.d.ts.map +1 -1
- package/lib/fluidPackage.js +7 -4
- package/lib/fluidPackage.js.map +1 -1
- package/lib/fluidRouter.d.ts.map +1 -1
- package/lib/fluidRouter.js.map +1 -1
- package/lib/index.d.ts +13 -3
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +3 -1
- package/lib/index.js.map +1 -1
- package/lib/logger.d.ts +64 -9
- package/lib/logger.d.ts.map +1 -1
- package/lib/logger.js +8 -1
- package/lib/logger.js.map +1 -1
- package/lib/provider.d.ts +11 -5
- package/lib/provider.d.ts.map +1 -1
- package/lib/provider.js.map +1 -1
- package/package.json +8 -9
- package/src/error.ts +121 -0
- package/src/events.ts +432 -0
- package/src/fluidLoadable.ts +2 -0
- package/src/fluidPackage.ts +5 -2
- package/src/fluidRouter.ts +6 -0
- package/src/index.ts +45 -21
- package/src/logger.ts +82 -11
- package/src/provider.ts +11 -5
package/src/logger.ts
CHANGED
|
@@ -5,6 +5,8 @@
|
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Examples of known categories, however category can be any string for extensibility.
|
|
8
|
+
*
|
|
9
|
+
* @deprecated Moved to \@fluidframework/telemetry-utils package
|
|
8
10
|
*/
|
|
9
11
|
export type TelemetryEventCategory = "generic" | "error" | "performance";
|
|
10
12
|
|
|
@@ -15,13 +17,32 @@ export type TelemetryEventCategory = "generic" | "error" | "performance";
|
|
|
15
17
|
* easily add fields to objects that shouldn't be logged and not realize it's going to be logged.
|
|
16
18
|
* General best practice is to explicitly log the fields you care about from objects.
|
|
17
19
|
*/
|
|
20
|
+
export type TelemetryBaseEventPropertyType = TelemetryEventPropertyType;
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* {@inheritDoc TelemetryBaseEventPropertyType}
|
|
24
|
+
*
|
|
25
|
+
* @deprecated Renamed to {@link TelemetryBaseEventPropertyType}
|
|
26
|
+
*/
|
|
18
27
|
export type TelemetryEventPropertyType = string | number | boolean | undefined;
|
|
19
28
|
|
|
20
29
|
/**
|
|
21
|
-
* A property to be logged to telemetry
|
|
22
|
-
*
|
|
30
|
+
* A property to be logged to telemetry may require a tag indicating the value may contain sensitive data.
|
|
31
|
+
* This type wraps a value of the given type V in an object along with a string tag (type can be further specified as T).
|
|
32
|
+
*
|
|
33
|
+
* This indicates that the value should be organized or handled differently by loggers in various first or third
|
|
23
34
|
* party scenarios. For example, tags are used to mark data that should not be stored in logs for privacy reasons.
|
|
24
35
|
*/
|
|
36
|
+
export interface Tagged<V, T extends string = string> {
|
|
37
|
+
value: V;
|
|
38
|
+
tag: T;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* @see {@link Tagged} for info on tagging
|
|
43
|
+
*
|
|
44
|
+
* @deprecated Use Tagged\<TelemetryBaseEventPropertyType\>
|
|
45
|
+
*/
|
|
25
46
|
export interface ITaggedTelemetryPropertyType {
|
|
26
47
|
value: TelemetryEventPropertyType;
|
|
27
48
|
tag: string;
|
|
@@ -30,8 +51,15 @@ export interface ITaggedTelemetryPropertyType {
|
|
|
30
51
|
/**
|
|
31
52
|
* JSON-serializable properties, which will be logged with telemetry.
|
|
32
53
|
*/
|
|
54
|
+
export type ITelemetryBaseProperties = ITelemetryProperties;
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* {@inheritDoc ITelemetryBaseProperties}
|
|
58
|
+
*
|
|
59
|
+
* @deprecated Renamed to {@link ITelemetryBaseProperties}
|
|
60
|
+
*/
|
|
33
61
|
export interface ITelemetryProperties {
|
|
34
|
-
[index: string]: TelemetryEventPropertyType |
|
|
62
|
+
[index: string]: TelemetryEventPropertyType | Tagged<TelemetryEventPropertyType>;
|
|
35
63
|
}
|
|
36
64
|
|
|
37
65
|
/**
|
|
@@ -40,22 +68,41 @@ export interface ITelemetryProperties {
|
|
|
40
68
|
* @param category - category of the event, like "error", "performance", "generic", etc.
|
|
41
69
|
* @param eventName - name of the event.
|
|
42
70
|
*/
|
|
43
|
-
export interface ITelemetryBaseEvent extends
|
|
71
|
+
export interface ITelemetryBaseEvent extends ITelemetryBaseProperties {
|
|
44
72
|
category: string;
|
|
45
73
|
eventName: string;
|
|
46
74
|
}
|
|
47
75
|
|
|
76
|
+
/**
|
|
77
|
+
* Specify levels of the logs.
|
|
78
|
+
*/
|
|
79
|
+
export const LogLevel = {
|
|
80
|
+
verbose: 10, // To log any verbose event for example when you are debugging something.
|
|
81
|
+
default: 20, // Default log level
|
|
82
|
+
error: 30, // To log errors.
|
|
83
|
+
} as const;
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Specify a level to the log to filter out logs based on the level.
|
|
87
|
+
*/
|
|
88
|
+
export type LogLevel = typeof LogLevel[keyof typeof LogLevel];
|
|
89
|
+
|
|
48
90
|
/**
|
|
49
91
|
* Interface to output telemetry events.
|
|
50
92
|
* Implemented by hosting app / loader
|
|
51
93
|
*/
|
|
52
94
|
export interface ITelemetryBaseLogger {
|
|
53
|
-
send(event: ITelemetryBaseEvent): void;
|
|
95
|
+
send(event: ITelemetryBaseEvent, logLevel?: LogLevel): void;
|
|
96
|
+
|
|
97
|
+
minLogLevel?: LogLevel;
|
|
54
98
|
}
|
|
55
99
|
|
|
56
100
|
/**
|
|
57
101
|
* Informational (non-error) telemetry event
|
|
58
102
|
* Maps to category = "generic"
|
|
103
|
+
*
|
|
104
|
+
* @deprecated For internal use within FluidFramework, use ITelemetryGenericEventExt in \@fluidframework/telemetry-utils.
|
|
105
|
+
* No replacement intended for FluidFramework consumers.
|
|
59
106
|
*/
|
|
60
107
|
export interface ITelemetryGenericEvent extends ITelemetryProperties {
|
|
61
108
|
eventName: string;
|
|
@@ -65,6 +112,9 @@ export interface ITelemetryGenericEvent extends ITelemetryProperties {
|
|
|
65
112
|
/**
|
|
66
113
|
* Error telemetry event.
|
|
67
114
|
* Maps to category = "error"
|
|
115
|
+
*
|
|
116
|
+
* @deprecated For internal use within FluidFramework, use ITelemetryErrorEventExt in \@fluidframework/telemetry-utils.
|
|
117
|
+
* No replacement intended for FluidFramework consumers.
|
|
68
118
|
*/
|
|
69
119
|
export interface ITelemetryErrorEvent extends ITelemetryProperties {
|
|
70
120
|
eventName: string;
|
|
@@ -73,6 +123,9 @@ export interface ITelemetryErrorEvent extends ITelemetryProperties {
|
|
|
73
123
|
/**
|
|
74
124
|
* Performance telemetry event.
|
|
75
125
|
* Maps to category = "performance"
|
|
126
|
+
*
|
|
127
|
+
* @deprecated For internal use within FluidFramework, use ITelemetryPerformanceEventExt in \@fluidframework/telemetry-utils.
|
|
128
|
+
* No replacement intended for FluidFramework consumers.
|
|
76
129
|
*/
|
|
77
130
|
export interface ITelemetryPerformanceEvent extends ITelemetryGenericEvent {
|
|
78
131
|
duration?: number; // Duration of event (optional)
|
|
@@ -85,33 +138,44 @@ export interface ILoggingError extends Error {
|
|
|
85
138
|
/**
|
|
86
139
|
* Return all properties from this object that should be logged to telemetry
|
|
87
140
|
*/
|
|
88
|
-
getTelemetryProperties():
|
|
141
|
+
getTelemetryProperties(): ITelemetryBaseProperties;
|
|
89
142
|
}
|
|
90
143
|
|
|
91
144
|
/**
|
|
92
145
|
* ITelemetryLogger interface contains various helper telemetry methods,
|
|
93
146
|
* encoding in one place schemas for various types of Fluid telemetry events.
|
|
94
147
|
* Creates sub-logger that appends properties to all events
|
|
148
|
+
*
|
|
149
|
+
* @deprecated For internal use within FluidFramework, use ITelemetryLoggerExt in \@fluidframework/telemetry-utils.
|
|
150
|
+
* No replacement intended for FluidFramework consumers.
|
|
95
151
|
*/
|
|
96
152
|
export interface ITelemetryLogger extends ITelemetryBaseLogger {
|
|
97
153
|
/**
|
|
98
154
|
* Actual implementation that sends telemetry event
|
|
99
155
|
* Implemented by derived classes
|
|
100
156
|
* @param event - Telemetry event to send over
|
|
157
|
+
* @param logLevel - optional level of the log.
|
|
101
158
|
*/
|
|
102
|
-
send(event: ITelemetryBaseEvent): void;
|
|
159
|
+
send(event: ITelemetryBaseEvent, logLevel?: LogLevel): void;
|
|
103
160
|
|
|
104
161
|
/**
|
|
105
162
|
* Send information telemetry event
|
|
106
163
|
* @param event - Event to send
|
|
107
164
|
* @param error - optional error object to log
|
|
165
|
+
* @param logLevel - optional level of the log.
|
|
108
166
|
*/
|
|
109
|
-
|
|
110
|
-
|
|
167
|
+
sendTelemetryEvent(
|
|
168
|
+
event: ITelemetryGenericEvent,
|
|
169
|
+
// TODO: Use `unknown` instead (API-Breaking)
|
|
170
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
171
|
+
error?: any,
|
|
172
|
+
logLevel?: typeof LogLevel.verbose | typeof LogLevel.default,
|
|
173
|
+
): void;
|
|
111
174
|
|
|
112
175
|
/**
|
|
113
176
|
* Send error telemetry event
|
|
114
177
|
* @param event - Event to send
|
|
178
|
+
* @param error - optional error object to log
|
|
115
179
|
*/
|
|
116
180
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
117
181
|
sendErrorEvent(event: ITelemetryErrorEvent, error?: any): void;
|
|
@@ -119,7 +183,14 @@ export interface ITelemetryLogger extends ITelemetryBaseLogger {
|
|
|
119
183
|
/**
|
|
120
184
|
* Send performance telemetry event
|
|
121
185
|
* @param event - Event to send
|
|
186
|
+
* @param error - optional error object to log
|
|
187
|
+
* @param logLevel - optional level of the log.
|
|
122
188
|
*/
|
|
123
|
-
|
|
124
|
-
|
|
189
|
+
sendPerformanceEvent(
|
|
190
|
+
event: ITelemetryPerformanceEvent,
|
|
191
|
+
// TODO: Use `unknown` instead (API-Breaking)
|
|
192
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
193
|
+
error?: any,
|
|
194
|
+
logLevel?: typeof LogLevel.verbose | typeof LogLevel.default,
|
|
195
|
+
): void;
|
|
125
196
|
}
|
package/src/provider.ts
CHANGED
|
@@ -4,13 +4,18 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
|
-
* This utility type is meant for internal use by {@link FluidObject}
|
|
8
7
|
* Produces a valid FluidObject key given a type and a property.
|
|
8
|
+
*
|
|
9
|
+
* @remarks
|
|
10
|
+
*
|
|
9
11
|
* A valid FluidObject key is a property that exists on the incoming type
|
|
10
12
|
* as well as on the type of the property itself. For example: `IProvideFoo.IFoo.IFoo`
|
|
11
13
|
* This aligns with the FluidObject pattern expected to be used with all FluidObjects.
|
|
12
14
|
*
|
|
15
|
+
* This utility type is meant for internal use by {@link FluidObject}
|
|
16
|
+
*
|
|
13
17
|
* @example
|
|
18
|
+
*
|
|
14
19
|
* ```typescript
|
|
15
20
|
* interface IProvideFoo{
|
|
16
21
|
* IFoo: IFoo
|
|
@@ -19,10 +24,9 @@
|
|
|
19
24
|
* foobar();
|
|
20
25
|
* }
|
|
21
26
|
* ```
|
|
22
|
-
* This pattern enables discovery, and delegation in a standard way which is central
|
|
23
|
-
* to FluidObject pattern
|
|
24
27
|
*
|
|
25
|
-
*
|
|
28
|
+
* This pattern enables discovery, and delegation in a standard way which is central
|
|
29
|
+
* to FluidObject pattern.
|
|
26
30
|
*/
|
|
27
31
|
export type FluidObjectProviderKeys<T, TProp extends keyof T = keyof T> = string extends TProp
|
|
28
32
|
? never
|
|
@@ -43,7 +47,9 @@ export type FluidObjectProviderKeys<T, TProp extends keyof T = keyof T> = string
|
|
|
43
47
|
* FluidObject without a generic argument.
|
|
44
48
|
*
|
|
45
49
|
* @example
|
|
46
|
-
*
|
|
50
|
+
*
|
|
51
|
+
* For example, if we have an interface like the following:
|
|
52
|
+
*
|
|
47
53
|
* ```typescript
|
|
48
54
|
* interface IProvideFoo{
|
|
49
55
|
* IFoo: IFoo
|