@fluidframework/core-interfaces 2.0.0-internal.6.1.0 → 2.0.0-internal.6.2.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/CHANGELOG.md +31 -0
- package/README.md +4 -3
- 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 +249 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +7 -0
- package/dist/events.js.map +1 -0
- package/dist/index.d.ts +6 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -5
- package/dist/index.js.map +1 -1
- package/dist/logger.d.ts +18 -4
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.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 +249 -0
- package/lib/events.d.ts.map +1 -0
- package/lib/events.js +6 -0
- package/lib/events.js.map +1 -0
- package/lib/index.d.ts +6 -3
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +2 -1
- package/lib/index.js.map +1 -1
- package/lib/logger.d.ts +18 -4
- package/lib/logger.d.ts.map +1 -1
- package/lib/logger.js.map +1 -1
- package/package.json +5 -5
- package/src/error.ts +117 -0
- package/src/events.ts +430 -0
- package/src/index.ts +34 -13
- package/src/logger.ts +28 -4
package/src/events.ts
ADDED
|
@@ -0,0 +1,430 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
|
+
* Licensed under the MIT License.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Base interface for event emitters.
|
|
8
|
+
*/
|
|
9
|
+
export interface IEvent {
|
|
10
|
+
/**
|
|
11
|
+
* Base event emitter signature.
|
|
12
|
+
*
|
|
13
|
+
* @remarks The event emitter polyfill and the node event emitter have different event types:
|
|
14
|
+
* `string | symbol` vs. `string | number`.
|
|
15
|
+
*
|
|
16
|
+
* So for our typing we'll contrain to string, that way we work with both.
|
|
17
|
+
*
|
|
18
|
+
* @eventProperty
|
|
19
|
+
*/
|
|
20
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
21
|
+
(event: string, listener: (...args: any[]) => void);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Base interface for error event emitters.
|
|
26
|
+
*/
|
|
27
|
+
export interface IErrorEvent extends IEvent {
|
|
28
|
+
/**
|
|
29
|
+
* Base error event emitter signature.
|
|
30
|
+
*
|
|
31
|
+
* @eventProperty
|
|
32
|
+
*/
|
|
33
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
34
|
+
(event: "error", listener: (message: any) => void);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Base interface for event providers.
|
|
39
|
+
*/
|
|
40
|
+
export interface IEventProvider<TEvent extends IEvent> {
|
|
41
|
+
/**
|
|
42
|
+
* Registers a callback to be invoked when the corresponding event is triggered.
|
|
43
|
+
*/
|
|
44
|
+
readonly on: IEventTransformer<this, TEvent>;
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Registers a callback to be invoked the first time (after registration) the corresponding event is triggered.
|
|
48
|
+
*/
|
|
49
|
+
readonly once: IEventTransformer<this, TEvent>;
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Removes the corresponding event if it has been registered.
|
|
53
|
+
*/
|
|
54
|
+
readonly off: IEventTransformer<this, TEvent>;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Allows an interface to extend interfaces that already extend an {@link IEventProvider}.
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* ``` typescript
|
|
62
|
+
* interface AEvents extends IEvent{
|
|
63
|
+
* (event: "a-event",listener: (a: number)=>void);
|
|
64
|
+
* }
|
|
65
|
+
* interface A extends IEventProvider<AEvents>{
|
|
66
|
+
* a: object;
|
|
67
|
+
* }
|
|
68
|
+
*
|
|
69
|
+
* interface BEvents extends IEvent{
|
|
70
|
+
* (event: "b-event",listener: (b: string)=>void);
|
|
71
|
+
* }
|
|
72
|
+
* interface B extends ExtendEventProvider<AEvents, A, BEvents>{
|
|
73
|
+
* b: boolean;
|
|
74
|
+
* };
|
|
75
|
+
* ```
|
|
76
|
+
* interface B will now extend interface A and its events
|
|
77
|
+
*
|
|
78
|
+
*/
|
|
79
|
+
export type ExtendEventProvider<
|
|
80
|
+
TBaseEvent extends IEvent,
|
|
81
|
+
TBase extends IEventProvider<TBaseEvent>,
|
|
82
|
+
TEvent extends TBaseEvent,
|
|
83
|
+
> = Omit<Omit<Omit<TBase, "on">, "once">, "off"> &
|
|
84
|
+
IEventProvider<TBaseEvent> &
|
|
85
|
+
IEventProvider<TEvent>;
|
|
86
|
+
|
|
87
|
+
// These types handle replacing IEventThisPlaceHolder with `this`, so we can
|
|
88
|
+
// support polymorphic `this`. For instance if an event wanted to be:
|
|
89
|
+
// (event: "some-event", listener:(target: this)=>void)
|
|
90
|
+
//
|
|
91
|
+
// it should be written as
|
|
92
|
+
// (event: "some-event", listener:(target: IEventThisPlaceHolder)=>void)
|
|
93
|
+
//
|
|
94
|
+
// and IEventThisPlaceHolder will be replaced with this.
|
|
95
|
+
// This is all consumers of these types need to know.
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* The placeholder type that should be used instead of `this` in events.
|
|
99
|
+
*/
|
|
100
|
+
// eslint-disable-next-line @typescript-eslint/consistent-type-definitions
|
|
101
|
+
export type IEventThisPlaceHolder = { thisPlaceHolder: "thisPlaceHolder" };
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Does the type replacement by changing types of {@link IEventThisPlaceHolder} to `TThis`
|
|
105
|
+
*/
|
|
106
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
107
|
+
export type ReplaceIEventThisPlaceHolder<L extends any[], TThis> = L extends any[]
|
|
108
|
+
? { [K in keyof L]: L[K] extends IEventThisPlaceHolder ? TThis : L[K] }
|
|
109
|
+
: L;
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Transforms the event overload by replacing {@link IEventThisPlaceHolder} with `TThis` in the event listener
|
|
113
|
+
* arguments and having the overload return `TTHis` as well
|
|
114
|
+
*/
|
|
115
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
116
|
+
export type TransformedEvent<TThis, E, A extends any[]> = (
|
|
117
|
+
event: E,
|
|
118
|
+
listener: (...args: ReplaceIEventThisPlaceHolder<A, TThis>) => void,
|
|
119
|
+
) => TThis;
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* This type is a conditional type for transforming all the overloads provided in `TEvent`.
|
|
123
|
+
*
|
|
124
|
+
* @remarks
|
|
125
|
+
* Due to limitations of the TypeScript typing system, we need to handle each number of overload individually.
|
|
126
|
+
* It currently supports the max of 15 event overloads which is more than we use anywhere.
|
|
127
|
+
* At more than 15 overloads we start to hit {@link https://github.com/microsoft/TypeScript/issues/37209 | TS2589}.
|
|
128
|
+
* If we need to move beyond 15 we should evaluate using a mapped type pattern like `{"event":(listenerArgs)=>void}`
|
|
129
|
+
*/
|
|
130
|
+
export type IEventTransformer<TThis, TEvent extends IEvent> = TEvent extends {
|
|
131
|
+
(event: infer E0, listener: (...args: infer A0) => void);
|
|
132
|
+
(event: infer E1, listener: (...args: infer A1) => void);
|
|
133
|
+
(event: infer E2, listener: (...args: infer A2) => void);
|
|
134
|
+
(event: infer E3, listener: (...args: infer A3) => void);
|
|
135
|
+
(event: infer E4, listener: (...args: infer A4) => void);
|
|
136
|
+
(event: infer E5, listener: (...args: infer A5) => void);
|
|
137
|
+
(event: infer E6, listener: (...args: infer A6) => void);
|
|
138
|
+
(event: infer E7, listener: (...args: infer A7) => void);
|
|
139
|
+
(event: infer E8, listener: (...args: infer A8) => void);
|
|
140
|
+
(event: infer E9, listener: (...args: infer A9) => void);
|
|
141
|
+
(event: infer E10, listener: (...args: infer A10) => void);
|
|
142
|
+
(event: infer E11, listener: (...args: infer A11) => void);
|
|
143
|
+
(event: infer E12, listener: (...args: infer A12) => void);
|
|
144
|
+
(event: infer E13, listener: (...args: infer A13) => void);
|
|
145
|
+
(event: infer E14, listener: (...args: infer A14) => void);
|
|
146
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
147
|
+
(event: string, listener: (...args: any[]) => void);
|
|
148
|
+
}
|
|
149
|
+
? TransformedEvent<TThis, E0, A0> &
|
|
150
|
+
TransformedEvent<TThis, E1, A1> &
|
|
151
|
+
TransformedEvent<TThis, E2, A2> &
|
|
152
|
+
TransformedEvent<TThis, E3, A3> &
|
|
153
|
+
TransformedEvent<TThis, E4, A4> &
|
|
154
|
+
TransformedEvent<TThis, E5, A5> &
|
|
155
|
+
TransformedEvent<TThis, E6, A6> &
|
|
156
|
+
TransformedEvent<TThis, E7, A7> &
|
|
157
|
+
TransformedEvent<TThis, E8, A8> &
|
|
158
|
+
TransformedEvent<TThis, E9, A9> &
|
|
159
|
+
TransformedEvent<TThis, E10, A10> &
|
|
160
|
+
TransformedEvent<TThis, E11, A11> &
|
|
161
|
+
TransformedEvent<TThis, E12, A12> &
|
|
162
|
+
TransformedEvent<TThis, E13, A13> &
|
|
163
|
+
TransformedEvent<TThis, E14, A14>
|
|
164
|
+
: TEvent extends {
|
|
165
|
+
(event: infer E0, listener: (...args: infer A0) => void);
|
|
166
|
+
(event: infer E1, listener: (...args: infer A1) => void);
|
|
167
|
+
(event: infer E2, listener: (...args: infer A2) => void);
|
|
168
|
+
(event: infer E3, listener: (...args: infer A3) => void);
|
|
169
|
+
(event: infer E4, listener: (...args: infer A4) => void);
|
|
170
|
+
(event: infer E5, listener: (...args: infer A5) => void);
|
|
171
|
+
(event: infer E6, listener: (...args: infer A6) => void);
|
|
172
|
+
(event: infer E7, listener: (...args: infer A7) => void);
|
|
173
|
+
(event: infer E8, listener: (...args: infer A8) => void);
|
|
174
|
+
(event: infer E9, listener: (...args: infer A9) => void);
|
|
175
|
+
(event: infer E10, listener: (...args: infer A10) => void);
|
|
176
|
+
(event: infer E11, listener: (...args: infer A11) => void);
|
|
177
|
+
(event: infer E12, listener: (...args: infer A12) => void);
|
|
178
|
+
(event: infer E13, listener: (...args: infer A13) => void);
|
|
179
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
180
|
+
(event: string, listener: (...args: any[]) => void);
|
|
181
|
+
}
|
|
182
|
+
? TransformedEvent<TThis, E0, A0> &
|
|
183
|
+
TransformedEvent<TThis, E1, A1> &
|
|
184
|
+
TransformedEvent<TThis, E2, A2> &
|
|
185
|
+
TransformedEvent<TThis, E3, A3> &
|
|
186
|
+
TransformedEvent<TThis, E4, A4> &
|
|
187
|
+
TransformedEvent<TThis, E5, A5> &
|
|
188
|
+
TransformedEvent<TThis, E6, A6> &
|
|
189
|
+
TransformedEvent<TThis, E7, A7> &
|
|
190
|
+
TransformedEvent<TThis, E8, A8> &
|
|
191
|
+
TransformedEvent<TThis, E9, A9> &
|
|
192
|
+
TransformedEvent<TThis, E10, A10> &
|
|
193
|
+
TransformedEvent<TThis, E11, A11> &
|
|
194
|
+
TransformedEvent<TThis, E12, A12> &
|
|
195
|
+
TransformedEvent<TThis, E13, A13>
|
|
196
|
+
: TEvent extends {
|
|
197
|
+
(event: infer E0, listener: (...args: infer A0) => void);
|
|
198
|
+
(event: infer E1, listener: (...args: infer A1) => void);
|
|
199
|
+
(event: infer E2, listener: (...args: infer A2) => void);
|
|
200
|
+
(event: infer E3, listener: (...args: infer A3) => void);
|
|
201
|
+
(event: infer E4, listener: (...args: infer A4) => void);
|
|
202
|
+
(event: infer E5, listener: (...args: infer A5) => void);
|
|
203
|
+
(event: infer E6, listener: (...args: infer A6) => void);
|
|
204
|
+
(event: infer E7, listener: (...args: infer A7) => void);
|
|
205
|
+
(event: infer E8, listener: (...args: infer A8) => void);
|
|
206
|
+
(event: infer E9, listener: (...args: infer A9) => void);
|
|
207
|
+
(event: infer E10, listener: (...args: infer A10) => void);
|
|
208
|
+
(event: infer E11, listener: (...args: infer A11) => void);
|
|
209
|
+
(event: infer E12, listener: (...args: infer A12) => void);
|
|
210
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
211
|
+
(event: string, listener: (...args: any[]) => void);
|
|
212
|
+
}
|
|
213
|
+
? TransformedEvent<TThis, E0, A0> &
|
|
214
|
+
TransformedEvent<TThis, E1, A1> &
|
|
215
|
+
TransformedEvent<TThis, E2, A2> &
|
|
216
|
+
TransformedEvent<TThis, E3, A3> &
|
|
217
|
+
TransformedEvent<TThis, E4, A4> &
|
|
218
|
+
TransformedEvent<TThis, E5, A5> &
|
|
219
|
+
TransformedEvent<TThis, E6, A6> &
|
|
220
|
+
TransformedEvent<TThis, E7, A7> &
|
|
221
|
+
TransformedEvent<TThis, E8, A8> &
|
|
222
|
+
TransformedEvent<TThis, E9, A9> &
|
|
223
|
+
TransformedEvent<TThis, E10, A10> &
|
|
224
|
+
TransformedEvent<TThis, E11, A11> &
|
|
225
|
+
TransformedEvent<TThis, E12, A12>
|
|
226
|
+
: TEvent extends {
|
|
227
|
+
(event: infer E0, listener: (...args: infer A0) => void);
|
|
228
|
+
(event: infer E1, listener: (...args: infer A1) => void);
|
|
229
|
+
(event: infer E2, listener: (...args: infer A2) => void);
|
|
230
|
+
(event: infer E3, listener: (...args: infer A3) => void);
|
|
231
|
+
(event: infer E4, listener: (...args: infer A4) => void);
|
|
232
|
+
(event: infer E5, listener: (...args: infer A5) => void);
|
|
233
|
+
(event: infer E6, listener: (...args: infer A6) => void);
|
|
234
|
+
(event: infer E7, listener: (...args: infer A7) => void);
|
|
235
|
+
(event: infer E8, listener: (...args: infer A8) => void);
|
|
236
|
+
(event: infer E9, listener: (...args: infer A9) => void);
|
|
237
|
+
(event: infer E10, listener: (...args: infer A10) => void);
|
|
238
|
+
(event: infer E11, listener: (...args: infer A11) => void);
|
|
239
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
240
|
+
(event: string, listener: (...args: any[]) => void);
|
|
241
|
+
}
|
|
242
|
+
? TransformedEvent<TThis, E0, A0> &
|
|
243
|
+
TransformedEvent<TThis, E1, A1> &
|
|
244
|
+
TransformedEvent<TThis, E2, A2> &
|
|
245
|
+
TransformedEvent<TThis, E3, A3> &
|
|
246
|
+
TransformedEvent<TThis, E4, A4> &
|
|
247
|
+
TransformedEvent<TThis, E5, A5> &
|
|
248
|
+
TransformedEvent<TThis, E6, A6> &
|
|
249
|
+
TransformedEvent<TThis, E7, A7> &
|
|
250
|
+
TransformedEvent<TThis, E8, A8> &
|
|
251
|
+
TransformedEvent<TThis, E9, A9> &
|
|
252
|
+
TransformedEvent<TThis, E10, A10> &
|
|
253
|
+
TransformedEvent<TThis, E11, A11>
|
|
254
|
+
: TEvent extends {
|
|
255
|
+
(event: infer E0, listener: (...args: infer A0) => void);
|
|
256
|
+
(event: infer E1, listener: (...args: infer A1) => void);
|
|
257
|
+
(event: infer E2, listener: (...args: infer A2) => void);
|
|
258
|
+
(event: infer E3, listener: (...args: infer A3) => void);
|
|
259
|
+
(event: infer E4, listener: (...args: infer A4) => void);
|
|
260
|
+
(event: infer E5, listener: (...args: infer A5) => void);
|
|
261
|
+
(event: infer E6, listener: (...args: infer A6) => void);
|
|
262
|
+
(event: infer E7, listener: (...args: infer A7) => void);
|
|
263
|
+
(event: infer E8, listener: (...args: infer A8) => void);
|
|
264
|
+
(event: infer E9, listener: (...args: infer A9) => void);
|
|
265
|
+
(event: infer E10, listener: (...args: infer A10) => void);
|
|
266
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
267
|
+
(event: string, listener: (...args: any[]) => void);
|
|
268
|
+
}
|
|
269
|
+
? TransformedEvent<TThis, E0, A0> &
|
|
270
|
+
TransformedEvent<TThis, E1, A1> &
|
|
271
|
+
TransformedEvent<TThis, E2, A2> &
|
|
272
|
+
TransformedEvent<TThis, E3, A3> &
|
|
273
|
+
TransformedEvent<TThis, E4, A4> &
|
|
274
|
+
TransformedEvent<TThis, E5, A5> &
|
|
275
|
+
TransformedEvent<TThis, E6, A6> &
|
|
276
|
+
TransformedEvent<TThis, E7, A7> &
|
|
277
|
+
TransformedEvent<TThis, E8, A8> &
|
|
278
|
+
TransformedEvent<TThis, E9, A9> &
|
|
279
|
+
TransformedEvent<TThis, E10, A10>
|
|
280
|
+
: TEvent extends {
|
|
281
|
+
(event: infer E0, listener: (...args: infer A0) => void);
|
|
282
|
+
(event: infer E1, listener: (...args: infer A1) => void);
|
|
283
|
+
(event: infer E2, listener: (...args: infer A2) => void);
|
|
284
|
+
(event: infer E3, listener: (...args: infer A3) => void);
|
|
285
|
+
(event: infer E4, listener: (...args: infer A4) => void);
|
|
286
|
+
(event: infer E5, listener: (...args: infer A5) => void);
|
|
287
|
+
(event: infer E6, listener: (...args: infer A6) => void);
|
|
288
|
+
(event: infer E7, listener: (...args: infer A7) => void);
|
|
289
|
+
(event: infer E8, listener: (...args: infer A8) => void);
|
|
290
|
+
(event: infer E9, listener: (...args: infer A9) => void);
|
|
291
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
292
|
+
(event: string, listener: (...args: any[]) => void);
|
|
293
|
+
}
|
|
294
|
+
? TransformedEvent<TThis, E0, A0> &
|
|
295
|
+
TransformedEvent<TThis, E1, A1> &
|
|
296
|
+
TransformedEvent<TThis, E2, A2> &
|
|
297
|
+
TransformedEvent<TThis, E3, A3> &
|
|
298
|
+
TransformedEvent<TThis, E4, A4> &
|
|
299
|
+
TransformedEvent<TThis, E5, A5> &
|
|
300
|
+
TransformedEvent<TThis, E6, A6> &
|
|
301
|
+
TransformedEvent<TThis, E7, A7> &
|
|
302
|
+
TransformedEvent<TThis, E8, A8> &
|
|
303
|
+
TransformedEvent<TThis, E9, A9>
|
|
304
|
+
: TEvent extends {
|
|
305
|
+
(event: infer E0, listener: (...args: infer A0) => void);
|
|
306
|
+
(event: infer E1, listener: (...args: infer A1) => void);
|
|
307
|
+
(event: infer E2, listener: (...args: infer A2) => void);
|
|
308
|
+
(event: infer E3, listener: (...args: infer A3) => void);
|
|
309
|
+
(event: infer E4, listener: (...args: infer A4) => void);
|
|
310
|
+
(event: infer E5, listener: (...args: infer A5) => void);
|
|
311
|
+
(event: infer E6, listener: (...args: infer A6) => void);
|
|
312
|
+
(event: infer E7, listener: (...args: infer A7) => void);
|
|
313
|
+
(event: infer E8, listener: (...args: infer A8) => void);
|
|
314
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
315
|
+
(event: string, listener: (...args: any[]) => void);
|
|
316
|
+
}
|
|
317
|
+
? TransformedEvent<TThis, E0, A0> &
|
|
318
|
+
TransformedEvent<TThis, E1, A1> &
|
|
319
|
+
TransformedEvent<TThis, E2, A2> &
|
|
320
|
+
TransformedEvent<TThis, E3, A3> &
|
|
321
|
+
TransformedEvent<TThis, E4, A4> &
|
|
322
|
+
TransformedEvent<TThis, E5, A5> &
|
|
323
|
+
TransformedEvent<TThis, E6, A6> &
|
|
324
|
+
TransformedEvent<TThis, E7, A7> &
|
|
325
|
+
TransformedEvent<TThis, E8, A8>
|
|
326
|
+
: TEvent extends {
|
|
327
|
+
(event: infer E0, listener: (...args: infer A0) => void);
|
|
328
|
+
(event: infer E1, listener: (...args: infer A1) => void);
|
|
329
|
+
(event: infer E2, listener: (...args: infer A2) => void);
|
|
330
|
+
(event: infer E3, listener: (...args: infer A3) => void);
|
|
331
|
+
(event: infer E4, listener: (...args: infer A4) => void);
|
|
332
|
+
(event: infer E5, listener: (...args: infer A5) => void);
|
|
333
|
+
(event: infer E6, listener: (...args: infer A6) => void);
|
|
334
|
+
(event: infer E7, listener: (...args: infer A7) => void);
|
|
335
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
336
|
+
(event: string, listener: (...args: any[]) => void);
|
|
337
|
+
}
|
|
338
|
+
? TransformedEvent<TThis, E0, A0> &
|
|
339
|
+
TransformedEvent<TThis, E1, A1> &
|
|
340
|
+
TransformedEvent<TThis, E2, A2> &
|
|
341
|
+
TransformedEvent<TThis, E3, A3> &
|
|
342
|
+
TransformedEvent<TThis, E4, A4> &
|
|
343
|
+
TransformedEvent<TThis, E5, A5> &
|
|
344
|
+
TransformedEvent<TThis, E6, A6> &
|
|
345
|
+
TransformedEvent<TThis, E7, A7>
|
|
346
|
+
: TEvent extends {
|
|
347
|
+
(event: infer E0, listener: (...args: infer A0) => void);
|
|
348
|
+
(event: infer E1, listener: (...args: infer A1) => void);
|
|
349
|
+
(event: infer E2, listener: (...args: infer A2) => void);
|
|
350
|
+
(event: infer E3, listener: (...args: infer A3) => void);
|
|
351
|
+
(event: infer E4, listener: (...args: infer A4) => void);
|
|
352
|
+
(event: infer E5, listener: (...args: infer A5) => void);
|
|
353
|
+
(event: infer E6, listener: (...args: infer A6) => void);
|
|
354
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
355
|
+
(event: string, listener: (...args: any[]) => void);
|
|
356
|
+
}
|
|
357
|
+
? TransformedEvent<TThis, E0, A0> &
|
|
358
|
+
TransformedEvent<TThis, E1, A1> &
|
|
359
|
+
TransformedEvent<TThis, E2, A2> &
|
|
360
|
+
TransformedEvent<TThis, E3, A3> &
|
|
361
|
+
TransformedEvent<TThis, E4, A4> &
|
|
362
|
+
TransformedEvent<TThis, E5, A5> &
|
|
363
|
+
TransformedEvent<TThis, E6, A6>
|
|
364
|
+
: TEvent extends {
|
|
365
|
+
(event: infer E0, listener: (...args: infer A0) => void);
|
|
366
|
+
(event: infer E1, listener: (...args: infer A1) => void);
|
|
367
|
+
(event: infer E2, listener: (...args: infer A2) => void);
|
|
368
|
+
(event: infer E3, listener: (...args: infer A3) => void);
|
|
369
|
+
(event: infer E4, listener: (...args: infer A4) => void);
|
|
370
|
+
(event: infer E5, listener: (...args: infer A5) => void);
|
|
371
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
372
|
+
(event: string, listener: (...args: any[]) => void);
|
|
373
|
+
}
|
|
374
|
+
? TransformedEvent<TThis, E0, A0> &
|
|
375
|
+
TransformedEvent<TThis, E1, A1> &
|
|
376
|
+
TransformedEvent<TThis, E2, A2> &
|
|
377
|
+
TransformedEvent<TThis, E3, A3> &
|
|
378
|
+
TransformedEvent<TThis, E4, A4> &
|
|
379
|
+
TransformedEvent<TThis, E5, A5>
|
|
380
|
+
: TEvent extends {
|
|
381
|
+
(event: infer E0, listener: (...args: infer A0) => void);
|
|
382
|
+
(event: infer E1, listener: (...args: infer A1) => void);
|
|
383
|
+
(event: infer E2, listener: (...args: infer A2) => void);
|
|
384
|
+
(event: infer E3, listener: (...args: infer A3) => void);
|
|
385
|
+
(event: infer E4, listener: (...args: infer A4) => void);
|
|
386
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
387
|
+
(event: string, listener: (...args: any[]) => void);
|
|
388
|
+
}
|
|
389
|
+
? TransformedEvent<TThis, E0, A0> &
|
|
390
|
+
TransformedEvent<TThis, E1, A1> &
|
|
391
|
+
TransformedEvent<TThis, E2, A2> &
|
|
392
|
+
TransformedEvent<TThis, E3, A3> &
|
|
393
|
+
TransformedEvent<TThis, E4, A4>
|
|
394
|
+
: TEvent extends {
|
|
395
|
+
(event: infer E0, listener: (...args: infer A0) => void);
|
|
396
|
+
(event: infer E1, listener: (...args: infer A1) => void);
|
|
397
|
+
(event: infer E2, listener: (...args: infer A2) => void);
|
|
398
|
+
(event: infer E3, listener: (...args: infer A3) => void);
|
|
399
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
400
|
+
(event: string, listener: (...args: any[]) => void);
|
|
401
|
+
}
|
|
402
|
+
? TransformedEvent<TThis, E0, A0> &
|
|
403
|
+
TransformedEvent<TThis, E1, A1> &
|
|
404
|
+
TransformedEvent<TThis, E2, A2> &
|
|
405
|
+
TransformedEvent<TThis, E3, A3>
|
|
406
|
+
: TEvent extends {
|
|
407
|
+
(event: infer E0, listener: (...args: infer A0) => void);
|
|
408
|
+
(event: infer E1, listener: (...args: infer A1) => void);
|
|
409
|
+
(event: infer E2, listener: (...args: infer A2) => void);
|
|
410
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
411
|
+
(event: string, listener: (...args: any[]) => void);
|
|
412
|
+
}
|
|
413
|
+
? TransformedEvent<TThis, E0, A0> &
|
|
414
|
+
TransformedEvent<TThis, E1, A1> &
|
|
415
|
+
TransformedEvent<TThis, E2, A2>
|
|
416
|
+
: TEvent extends {
|
|
417
|
+
(event: infer E0, listener: (...args: infer A0) => void);
|
|
418
|
+
(event: infer E1, listener: (...args: infer A1) => void);
|
|
419
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
420
|
+
(event: string, listener: (...args: any[]) => void);
|
|
421
|
+
}
|
|
422
|
+
? TransformedEvent<TThis, E0, A0> & TransformedEvent<TThis, E1, A1>
|
|
423
|
+
: TEvent extends {
|
|
424
|
+
(event: infer E0, listener: (...args: infer A0) => void);
|
|
425
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
426
|
+
(event: string, listener: (...args: any[]) => void);
|
|
427
|
+
}
|
|
428
|
+
? TransformedEvent<TThis, E0, A0>
|
|
429
|
+
: // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
430
|
+
TransformedEvent<TThis, string, any[]>;
|
package/src/index.ts
CHANGED
|
@@ -3,6 +3,27 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
+
export type { IDisposable } from "./disposable";
|
|
7
|
+
|
|
8
|
+
export {
|
|
9
|
+
FluidErrorTypes,
|
|
10
|
+
IErrorBase,
|
|
11
|
+
IGenericError,
|
|
12
|
+
IUsageError,
|
|
13
|
+
IThrottlingWarning,
|
|
14
|
+
} from "./error";
|
|
15
|
+
|
|
16
|
+
export type {
|
|
17
|
+
ExtendEventProvider,
|
|
18
|
+
IErrorEvent,
|
|
19
|
+
IEvent,
|
|
20
|
+
IEventProvider,
|
|
21
|
+
IEventThisPlaceHolder,
|
|
22
|
+
IEventTransformer,
|
|
23
|
+
ReplaceIEventThisPlaceHolder,
|
|
24
|
+
TransformedEvent,
|
|
25
|
+
} from "./events";
|
|
26
|
+
|
|
6
27
|
export {
|
|
7
28
|
IFluidLoadable,
|
|
8
29
|
IProvideFluidLoadable,
|
|
@@ -10,6 +31,17 @@ export {
|
|
|
10
31
|
IProvideFluidRunnable,
|
|
11
32
|
} from "./fluidLoadable";
|
|
12
33
|
|
|
34
|
+
export {
|
|
35
|
+
IFluidPackageEnvironment,
|
|
36
|
+
IFluidPackage,
|
|
37
|
+
isFluidPackage,
|
|
38
|
+
IFluidCodeDetailsConfig,
|
|
39
|
+
IFluidCodeDetails,
|
|
40
|
+
isFluidCodeDetails,
|
|
41
|
+
IFluidCodeDetailsComparer,
|
|
42
|
+
IProvideFluidCodeDetailsComparer,
|
|
43
|
+
} from "./fluidPackage";
|
|
44
|
+
|
|
13
45
|
// Typescript forgets the index signature when customers augment IRequestHeader if we export *.
|
|
14
46
|
// So we export the explicit members as a workaround:
|
|
15
47
|
// https://github.com/microsoft/TypeScript/issues/18877#issuecomment-476921038
|
|
@@ -28,19 +60,6 @@ export {
|
|
|
28
60
|
IProvideFluidHandle,
|
|
29
61
|
} from "./handles";
|
|
30
62
|
|
|
31
|
-
export {
|
|
32
|
-
IFluidPackageEnvironment,
|
|
33
|
-
IFluidPackage,
|
|
34
|
-
isFluidPackage,
|
|
35
|
-
IFluidCodeDetailsConfig,
|
|
36
|
-
IFluidCodeDetails,
|
|
37
|
-
isFluidCodeDetails,
|
|
38
|
-
IFluidCodeDetailsComparer,
|
|
39
|
-
IProvideFluidCodeDetailsComparer,
|
|
40
|
-
} from "./fluidPackage";
|
|
41
|
-
|
|
42
|
-
export { FluidObjectProviderKeys, FluidObject, FluidObjectKeys } from "./provider";
|
|
43
|
-
export type { IDisposable } from "./disposable";
|
|
44
63
|
export type {
|
|
45
64
|
ILoggingError,
|
|
46
65
|
ITaggedTelemetryPropertyType,
|
|
@@ -54,3 +73,5 @@ export type {
|
|
|
54
73
|
TelemetryEventCategory,
|
|
55
74
|
TelemetryEventPropertyType,
|
|
56
75
|
} from "./logger";
|
|
76
|
+
export { LogLevel } from "./logger";
|
|
77
|
+
export { FluidObjectProviderKeys, FluidObject, FluidObjectKeys } from "./provider";
|
package/src/logger.ts
CHANGED
|
@@ -45,12 +45,23 @@ export interface ITelemetryBaseEvent extends ITelemetryProperties {
|
|
|
45
45
|
eventName: string;
|
|
46
46
|
}
|
|
47
47
|
|
|
48
|
+
/**
|
|
49
|
+
* Enum to specify a level to the log to filter out logs based on the level.
|
|
50
|
+
*/
|
|
51
|
+
export const enum LogLevel {
|
|
52
|
+
verbose = 0, // To log any verbose event for example when you are debugging something.
|
|
53
|
+
default = 10, // Default log level
|
|
54
|
+
error = 20, // To log errors.
|
|
55
|
+
}
|
|
56
|
+
|
|
48
57
|
/**
|
|
49
58
|
* Interface to output telemetry events.
|
|
50
59
|
* Implemented by hosting app / loader
|
|
51
60
|
*/
|
|
52
61
|
export interface ITelemetryBaseLogger {
|
|
53
|
-
send(event: ITelemetryBaseEvent): void;
|
|
62
|
+
send(event: ITelemetryBaseEvent, logLevel?: LogLevel): void;
|
|
63
|
+
|
|
64
|
+
minLogLevel?: LogLevel;
|
|
54
65
|
}
|
|
55
66
|
|
|
56
67
|
/**
|
|
@@ -98,20 +109,27 @@ export interface ITelemetryLogger extends ITelemetryBaseLogger {
|
|
|
98
109
|
* Actual implementation that sends telemetry event
|
|
99
110
|
* Implemented by derived classes
|
|
100
111
|
* @param event - Telemetry event to send over
|
|
112
|
+
* @param logLevel - optional level of the log.
|
|
101
113
|
*/
|
|
102
|
-
send(event: ITelemetryBaseEvent): void;
|
|
114
|
+
send(event: ITelemetryBaseEvent, logLevel?: LogLevel): void;
|
|
103
115
|
|
|
104
116
|
/**
|
|
105
117
|
* Send information telemetry event
|
|
106
118
|
* @param event - Event to send
|
|
107
119
|
* @param error - optional error object to log
|
|
120
|
+
* @param logLevel - optional level of the log.
|
|
108
121
|
*/
|
|
109
122
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
110
|
-
sendTelemetryEvent(
|
|
123
|
+
sendTelemetryEvent(
|
|
124
|
+
event: ITelemetryGenericEvent,
|
|
125
|
+
error?: any,
|
|
126
|
+
logLevel?: LogLevel.verbose | LogLevel.default,
|
|
127
|
+
): void;
|
|
111
128
|
|
|
112
129
|
/**
|
|
113
130
|
* Send error telemetry event
|
|
114
131
|
* @param event - Event to send
|
|
132
|
+
* @param error - optional error object to log
|
|
115
133
|
*/
|
|
116
134
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
117
135
|
sendErrorEvent(event: ITelemetryErrorEvent, error?: any): void;
|
|
@@ -119,7 +137,13 @@ export interface ITelemetryLogger extends ITelemetryBaseLogger {
|
|
|
119
137
|
/**
|
|
120
138
|
* Send performance telemetry event
|
|
121
139
|
* @param event - Event to send
|
|
140
|
+
* @param error - optional error object to log
|
|
141
|
+
* @param logLevel - optional level of the log.
|
|
122
142
|
*/
|
|
123
143
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
124
|
-
sendPerformanceEvent(
|
|
144
|
+
sendPerformanceEvent(
|
|
145
|
+
event: ITelemetryPerformanceEvent,
|
|
146
|
+
error?: any,
|
|
147
|
+
logLevel?: LogLevel.verbose | LogLevel.default,
|
|
148
|
+
): void;
|
|
125
149
|
}
|