@fluidframework/container-definitions 2.53.1 → 2.60.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.
Files changed (69) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/api-report/{container-definitions.legacy.alpha.api.md → container-definitions.legacy.beta.api.md} +44 -44
  3. package/dist/audience.d.ts +1 -2
  4. package/dist/audience.d.ts.map +1 -1
  5. package/dist/audience.js.map +1 -1
  6. package/dist/browserPackage.d.ts +3 -6
  7. package/dist/browserPackage.d.ts.map +1 -1
  8. package/dist/browserPackage.js +1 -2
  9. package/dist/browserPackage.js.map +1 -1
  10. package/dist/deltas.d.ts +7 -14
  11. package/dist/deltas.d.ts.map +1 -1
  12. package/dist/deltas.js.map +1 -1
  13. package/dist/error.d.ts +3 -6
  14. package/dist/error.d.ts.map +1 -1
  15. package/dist/error.js +1 -2
  16. package/dist/error.js.map +1 -1
  17. package/dist/fluidModule.d.ts +1 -2
  18. package/dist/fluidModule.d.ts.map +1 -1
  19. package/dist/fluidModule.js.map +1 -1
  20. package/dist/fluidPackage.d.ts +8 -16
  21. package/dist/fluidPackage.d.ts.map +1 -1
  22. package/dist/fluidPackage.js +2 -4
  23. package/dist/fluidPackage.js.map +1 -1
  24. package/dist/loader.d.ts +12 -24
  25. package/dist/loader.d.ts.map +1 -1
  26. package/dist/loader.js +1 -2
  27. package/dist/loader.js.map +1 -1
  28. package/dist/runtime.d.ts +8 -16
  29. package/dist/runtime.d.ts.map +1 -1
  30. package/dist/runtime.js +1 -2
  31. package/dist/runtime.js.map +1 -1
  32. package/lib/audience.d.ts +1 -2
  33. package/lib/audience.d.ts.map +1 -1
  34. package/lib/audience.js.map +1 -1
  35. package/lib/browserPackage.d.ts +3 -6
  36. package/lib/browserPackage.d.ts.map +1 -1
  37. package/lib/browserPackage.js +1 -2
  38. package/lib/browserPackage.js.map +1 -1
  39. package/lib/deltas.d.ts +7 -14
  40. package/lib/deltas.d.ts.map +1 -1
  41. package/lib/deltas.js.map +1 -1
  42. package/lib/error.d.ts +3 -6
  43. package/lib/error.d.ts.map +1 -1
  44. package/lib/error.js +1 -2
  45. package/lib/error.js.map +1 -1
  46. package/lib/fluidModule.d.ts +1 -2
  47. package/lib/fluidModule.d.ts.map +1 -1
  48. package/lib/fluidModule.js.map +1 -1
  49. package/lib/fluidPackage.d.ts +8 -16
  50. package/lib/fluidPackage.d.ts.map +1 -1
  51. package/lib/fluidPackage.js +2 -4
  52. package/lib/fluidPackage.js.map +1 -1
  53. package/lib/loader.d.ts +12 -24
  54. package/lib/loader.d.ts.map +1 -1
  55. package/lib/loader.js +1 -2
  56. package/lib/loader.js.map +1 -1
  57. package/lib/runtime.d.ts +8 -16
  58. package/lib/runtime.d.ts.map +1 -1
  59. package/lib/runtime.js +1 -2
  60. package/lib/runtime.js.map +1 -1
  61. package/package.json +4 -4
  62. package/src/audience.ts +1 -2
  63. package/src/browserPackage.ts +3 -6
  64. package/src/deltas.ts +7 -14
  65. package/src/error.ts +3 -6
  66. package/src/fluidModule.ts +1 -2
  67. package/src/fluidPackage.ts +8 -16
  68. package/src/loader.ts +12 -24
  69. package/src/runtime.ts +8 -16
package/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # @fluidframework/container-definitions
2
2
 
3
+ ## 2.60.0
4
+
5
+ Dependency updates only.
6
+
3
7
  ## 2.53.0
4
8
 
5
9
  Dependency updates only.
@@ -1,4 +1,4 @@
1
- ## Alpha API Report File for "@fluidframework/container-definitions"
1
+ ## Beta API Report File for "@fluidframework/container-definitions"
2
2
 
3
3
  > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
4
4
 
@@ -26,7 +26,7 @@ export namespace ConnectionState {
26
26
  // @public
27
27
  export type ConnectionState = ConnectionState.Disconnected | ConnectionState.EstablishingConnection | ConnectionState.CatchingUp | ConnectionState.Connected;
28
28
 
29
- // @alpha @legacy
29
+ // @beta @legacy
30
30
  export const ContainerErrorTypes: {
31
31
  readonly clientSessionExpiredError: "clientSessionExpiredError";
32
32
  readonly genericError: "genericError";
@@ -36,10 +36,10 @@ export const ContainerErrorTypes: {
36
36
  readonly usageError: "usageError";
37
37
  };
38
38
 
39
- // @alpha @legacy
39
+ // @beta @legacy
40
40
  export type ContainerErrorTypes = (typeof ContainerErrorTypes)[keyof typeof ContainerErrorTypes];
41
41
 
42
- // @alpha @legacy
42
+ // @beta @legacy
43
43
  export interface ContainerWarning extends IErrorBase_2 {
44
44
  logged?: boolean;
45
45
  }
@@ -60,14 +60,14 @@ export interface IAudienceEvents extends IEvent {
60
60
  (event: "selfChanged", listener: (oldValue: ISelf | undefined, newValue: ISelf) => void): void;
61
61
  }
62
62
 
63
- // @alpha @legacy
63
+ // @beta @legacy
64
64
  export interface IAudienceOwner extends IAudience {
65
65
  addMember(clientId: string, details: IClient): void;
66
66
  removeMember(clientId: string): boolean;
67
67
  setCurrentClientId(clientId: string): void;
68
68
  }
69
69
 
70
- // @alpha @legacy
70
+ // @beta @legacy
71
71
  export interface IBatchMessage {
72
72
  // (undocumented)
73
73
  compression?: string;
@@ -79,12 +79,12 @@ export interface IBatchMessage {
79
79
  referenceSequenceNumber?: number;
80
80
  }
81
81
 
82
- // @alpha @legacy
82
+ // @beta @legacy
83
83
  export interface ICodeDetailsLoader extends Partial<IProvideFluidCodeDetailsComparer> {
84
84
  load(source: IFluidCodeDetails): Promise<IFluidModuleWithDetails>;
85
85
  }
86
86
 
87
- // @alpha @legacy
87
+ // @beta @legacy
88
88
  export interface IConnectionDetails {
89
89
  checkpointSequenceNumber: number | undefined;
90
90
  // (undocumented)
@@ -94,7 +94,7 @@ export interface IConnectionDetails {
94
94
  serviceConfiguration: IClientConfiguration;
95
95
  }
96
96
 
97
- // @alpha @legacy
97
+ // @beta @legacy
98
98
  export interface IContainer extends IEventProvider<IContainerEvents> {
99
99
  attach(request: IRequest, attachProps?: {
100
100
  deltaConnection?: "none" | "delayed";
@@ -124,7 +124,7 @@ export interface IContainer extends IEventProvider<IContainerEvents> {
124
124
  serialize(): string;
125
125
  }
126
126
 
127
- // @alpha @legacy
127
+ // @beta @legacy
128
128
  export interface IContainerContext {
129
129
  readonly attachState: AttachState;
130
130
  // (undocumented)
@@ -176,7 +176,7 @@ export interface IContainerContext {
176
176
  updateDirtyContainerState(dirty: boolean): void;
177
177
  }
178
178
 
179
- // @alpha @legacy
179
+ // @beta @legacy
180
180
  export interface IContainerEvents extends IEvent {
181
181
  (event: "readonly", listener: (readonly: boolean) => void): void;
182
182
  (event: "connected", listener: (clientId: string) => void): any;
@@ -193,7 +193,7 @@ export interface IContainerEvents extends IEvent {
193
193
  (event: "metadataUpdate", listener: (metadata: Record<string, string>) => void): any;
194
194
  }
195
195
 
196
- // @alpha @legacy (undocumented)
196
+ // @beta @legacy (undocumented)
197
197
  export interface IContainerLoadMode {
198
198
  // (undocumented)
199
199
  deltaConnection?: "none" | "delayed" | undefined;
@@ -201,12 +201,12 @@ export interface IContainerLoadMode {
201
201
  opsBeforeReturn?: undefined | "cached" | "all";
202
202
  }
203
203
 
204
- // @alpha @legacy
204
+ // @beta @legacy
205
205
  export type IContainerPolicies = {
206
206
  maxClientLeaveWaitTime?: number;
207
207
  };
208
208
 
209
- // @alpha @legacy
209
+ // @beta @legacy
210
210
  export interface IContainerStorageService {
211
211
  createBlob(file: ArrayBufferLike): Promise<ICreateBlobResponse>;
212
212
  // @deprecated
@@ -228,7 +228,7 @@ export interface IContainerStorageService {
228
228
  // @public
229
229
  export type ICriticalContainerError = IErrorBase_2;
230
230
 
231
- // @alpha @sealed @legacy
231
+ // @beta @sealed @legacy
232
232
  export interface IDeltaManager<T, U> extends IEventProvider<IDeltaManagerEvents>, IDeltaSender {
233
233
  readonly active: boolean;
234
234
  readonly clientDetails: IClientDetails;
@@ -247,7 +247,7 @@ export interface IDeltaManager<T, U> extends IEventProvider<IDeltaManagerEvents>
247
247
  readonly version: string;
248
248
  }
249
249
 
250
- // @alpha @sealed @legacy
250
+ // @beta @sealed @legacy
251
251
  export interface IDeltaManagerEvents extends IEvent {
252
252
  // @deprecated (undocumented)
253
253
  (event: "prepareSend", listener: (messageBuffer: any[]) => void): any;
@@ -263,7 +263,7 @@ export interface IDeltaManagerEvents extends IEvent {
263
263
  }) => void): any;
264
264
  }
265
265
 
266
- // @alpha @sealed @legacy
266
+ // @beta @sealed @legacy
267
267
  export interface IDeltaQueue<T> extends IEventProvider<IDeltaQueueEvents<T>>, IDisposable {
268
268
  idle: boolean;
269
269
  length: number;
@@ -278,21 +278,21 @@ export interface IDeltaQueue<T> extends IEventProvider<IDeltaQueueEvents<T>>, ID
278
278
  }>;
279
279
  }
280
280
 
281
- // @alpha @sealed @legacy
281
+ // @beta @sealed @legacy
282
282
  export interface IDeltaQueueEvents<T> extends IErrorEvent {
283
283
  (event: "push", listener: (task: T) => void): any;
284
284
  (event: "op", listener: (task: T) => void): any;
285
285
  (event: "idle", listener: (count: number, duration: number) => void): any;
286
286
  }
287
287
 
288
- // @alpha @sealed @legacy
288
+ // @beta @sealed @legacy
289
289
  export interface IDeltaSender {
290
290
  flush(): void;
291
291
  }
292
292
 
293
293
  export { IErrorBase }
294
294
 
295
- // @alpha @legacy
295
+ // @beta @legacy
296
296
  export interface IFluidBrowserPackage extends IFluidPackage {
297
297
  fluid: {
298
298
  browser: IFluidBrowserPackageEnvironment;
@@ -300,7 +300,7 @@ export interface IFluidBrowserPackage extends IFluidPackage {
300
300
  };
301
301
  }
302
302
 
303
- // @alpha @legacy
303
+ // @beta @legacy
304
304
  export interface IFluidBrowserPackageEnvironment extends IFluidPackageEnvironment {
305
305
  umd: {
306
306
  files: string[];
@@ -308,40 +308,40 @@ export interface IFluidBrowserPackageEnvironment extends IFluidPackageEnvironmen
308
308
  };
309
309
  }
310
310
 
311
- // @alpha @legacy
311
+ // @beta @legacy
312
312
  export interface IFluidCodeDetails {
313
313
  readonly config?: IFluidCodeDetailsConfig;
314
314
  readonly package: string | Readonly<IFluidPackage>;
315
315
  }
316
316
 
317
- // @alpha @legacy (undocumented)
317
+ // @beta @legacy (undocumented)
318
318
  export const IFluidCodeDetailsComparer: keyof IProvideFluidCodeDetailsComparer;
319
319
 
320
- // @alpha @legacy
320
+ // @beta @legacy
321
321
  export interface IFluidCodeDetailsComparer extends IProvideFluidCodeDetailsComparer {
322
322
  compare(a: IFluidCodeDetails, b: IFluidCodeDetails): Promise<number | undefined>;
323
323
  satisfies(candidate: IFluidCodeDetails, constraint: IFluidCodeDetails): Promise<boolean>;
324
324
  }
325
325
 
326
- // @alpha @legacy
326
+ // @beta @legacy
327
327
  export interface IFluidCodeDetailsConfig {
328
328
  // (undocumented)
329
329
  readonly [key: string]: string;
330
330
  }
331
331
 
332
- // @alpha @legacy (undocumented)
332
+ // @beta @legacy (undocumented)
333
333
  export interface IFluidModule {
334
334
  // (undocumented)
335
335
  fluidExport: FluidObject<IRuntimeFactory & IProvideFluidCodeDetailsComparer>;
336
336
  }
337
337
 
338
- // @alpha @legacy
338
+ // @beta @legacy
339
339
  export interface IFluidModuleWithDetails {
340
340
  details: IFluidCodeDetails;
341
341
  module: IFluidModule;
342
342
  }
343
343
 
344
- // @alpha @legacy
344
+ // @beta @legacy
345
345
  export interface IFluidPackage {
346
346
  [key: string]: unknown;
347
347
  fluid: {
@@ -350,7 +350,7 @@ export interface IFluidPackage {
350
350
  name: string;
351
351
  }
352
352
 
353
- // @alpha @legacy
353
+ // @beta @legacy
354
354
  export interface IFluidPackageEnvironment {
355
355
  [target: string]: undefined | {
356
356
  files: string[];
@@ -358,7 +358,7 @@ export interface IFluidPackageEnvironment {
358
358
  };
359
359
  }
360
360
 
361
- // @alpha @legacy
361
+ // @beta @legacy
362
362
  export interface IGetPendingLocalStateProps {
363
363
  readonly notifyImminentClosure: boolean;
364
364
  readonly sessionExpiryTimerStarted?: number;
@@ -366,7 +366,7 @@ export interface IGetPendingLocalStateProps {
366
366
  readonly stopBlobAttachingSignal?: AbortSignal;
367
367
  }
368
368
 
369
- // @alpha @legacy
369
+ // @beta @legacy
370
370
  export interface IHostLoader extends ILoader {
371
371
  createDetachedContainer(codeDetails: IFluidCodeDetails, createDetachedProps?: {
372
372
  canReconnect?: boolean;
@@ -378,12 +378,12 @@ export interface IHostLoader extends ILoader {
378
378
  }): Promise<IContainer>;
379
379
  }
380
380
 
381
- // @alpha @legacy
381
+ // @beta @legacy
382
382
  export interface ILoader extends Partial<IProvideLoader> {
383
383
  resolve(request: IRequest, pendingLocalState?: string): Promise<IContainer>;
384
384
  }
385
385
 
386
- // @alpha @legacy
386
+ // @beta @legacy
387
387
  export type ILoaderOptions = {
388
388
  cache?: boolean;
389
389
  client?: IClient;
@@ -392,25 +392,25 @@ export type ILoaderOptions = {
392
392
  maxClientLeaveWaitTime?: number;
393
393
  };
394
394
 
395
- // @alpha @legacy (undocumented)
395
+ // @beta @legacy (undocumented)
396
396
  export interface IProvideFluidCodeDetailsComparer {
397
397
  // (undocumented)
398
398
  readonly IFluidCodeDetailsComparer: IFluidCodeDetailsComparer;
399
399
  }
400
400
 
401
- // @alpha @legacy (undocumented)
401
+ // @beta @legacy (undocumented)
402
402
  export interface IProvideLoader {
403
403
  // (undocumented)
404
404
  readonly ILoader: ILoader;
405
405
  }
406
406
 
407
- // @alpha @legacy (undocumented)
407
+ // @beta @legacy (undocumented)
408
408
  export interface IProvideRuntimeFactory {
409
409
  // (undocumented)
410
410
  readonly IRuntimeFactory: IRuntimeFactory;
411
411
  }
412
412
 
413
- // @alpha @legacy
413
+ // @beta @legacy
414
414
  export interface IRuntime extends IDisposable {
415
415
  createSummary(blobRedirectTable?: Map<string, string>): ISummaryTree;
416
416
  getEntryPoint(): Promise<FluidObject>;
@@ -422,10 +422,10 @@ export interface IRuntime extends IDisposable {
422
422
  setConnectionState(canSendOps: boolean, clientId?: string): any;
423
423
  }
424
424
 
425
- // @alpha @legacy (undocumented)
425
+ // @beta @legacy (undocumented)
426
426
  export const IRuntimeFactory: keyof IProvideRuntimeFactory;
427
427
 
428
- // @alpha @legacy
428
+ // @beta @legacy
429
429
  export interface IRuntimeFactory extends IProvideRuntimeFactory {
430
430
  instantiateRuntime(context: IContainerContext, existing: boolean): Promise<IRuntime>;
431
431
  }
@@ -436,13 +436,13 @@ export interface ISelf {
436
436
  readonly clientId: string;
437
437
  }
438
438
 
439
- // @alpha @legacy
439
+ // @beta @legacy
440
440
  export const isFluidBrowserPackage: (maybePkg: unknown) => maybePkg is Readonly<IFluidBrowserPackage>;
441
441
 
442
- // @alpha @legacy
442
+ // @beta @legacy
443
443
  export const isFluidPackage: (pkg: unknown) => pkg is Readonly<IFluidPackage>;
444
444
 
445
- // @alpha @legacy
445
+ // @beta @legacy
446
446
  export interface ISnapshotTreeWithBlobContents extends ISnapshotTree {
447
447
  // (undocumented)
448
448
  blobsContents?: {
@@ -456,7 +456,7 @@ export interface ISnapshotTreeWithBlobContents extends ISnapshotTree {
456
456
 
457
457
  export { IThrottlingWarning }
458
458
 
459
- // @alpha @legacy
459
+ // @beta @legacy
460
460
  export enum LoaderHeader {
461
461
  // @deprecated (undocumented)
462
462
  cache = "fluid-cache",
@@ -469,7 +469,7 @@ export enum LoaderHeader {
469
469
  version = "version"
470
470
  }
471
471
 
472
- // @alpha @legacy (undocumented)
472
+ // @beta @legacy (undocumented)
473
473
  export type ReadOnlyInfo = {
474
474
  readonly readonly: false | undefined;
475
475
  } | {
@@ -6,8 +6,7 @@ import type { IEvent, IEventProvider } from "@fluidframework/core-interfaces";
6
6
  import type { IClient } from "@fluidframework/driver-definitions";
7
7
  /**
8
8
  * Manages the state and the members for {@link IAudience}
9
- * @legacy
10
- * @alpha
9
+ * @legacy @beta
11
10
  */
12
11
  export interface IAudienceOwner extends IAudience {
13
12
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"audience.d.ts","sourceRoot":"","sources":["../src/audience.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAC9E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oCAAoC,CAAC;AAClE;;;;GAIG;AACH,MAAM,WAAW,cAAe,SAAQ,SAAS;IAChD;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAEpD;;;OAGG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IAExC;;;OAGG;IACH,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3C;AAED;;;GAGG;AACH,MAAM,WAAW,eAAgB,SAAQ,MAAM;IAC9C;;;;;;;OAOG;IACH,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI,CAAC;IAElF;;;;;;;OAOG;IACH,CAAC,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI,CAAC;IACrF;;;;;;OAMG;IACH,CACC,KAAK,EAAE,aAAa,EACpB,QAAQ,EAAE,CAAC,QAAQ,EAAE,KAAK,GAAG,SAAS,EAAE,QAAQ,EAAE,KAAK,KAAK,IAAI,GAC9D,IAAI,CAAC;CACR;AAED;;;GAGG;AACH,MAAM,WAAW,KAAK;IACrB;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B;;;;;;;;;OASG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,SAAU,SAAQ,cAAc,CAAC,eAAe,CAAC;IACjE;;;;;;;;;;OAUG;IACH,UAAU,IAAI,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEnC;;;;;;;;;;OAUG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;IAEjD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACH,OAAO,IAAI,KAAK,GAAG,SAAS,CAAC;CAC7B"}
1
+ {"version":3,"file":"audience.d.ts","sourceRoot":"","sources":["../src/audience.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAC9E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oCAAoC,CAAC;AAClE;;;GAGG;AACH,MAAM,WAAW,cAAe,SAAQ,SAAS;IAChD;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAEpD;;;OAGG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IAExC;;;OAGG;IACH,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3C;AAED;;;GAGG;AACH,MAAM,WAAW,eAAgB,SAAQ,MAAM;IAC9C;;;;;;;OAOG;IACH,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI,CAAC;IAElF;;;;;;;OAOG;IACH,CAAC,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI,CAAC;IACrF;;;;;;OAMG;IACH,CACC,KAAK,EAAE,aAAa,EACpB,QAAQ,EAAE,CAAC,QAAQ,EAAE,KAAK,GAAG,SAAS,EAAE,QAAQ,EAAE,KAAK,KAAK,IAAI,GAC9D,IAAI,CAAC;CACR;AAED;;;GAGG;AACH,MAAM,WAAW,KAAK;IACrB;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B;;;;;;;;;OASG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,SAAU,SAAQ,cAAc,CAAC,eAAe,CAAC;IACjE;;;;;;;;;;OAUG;IACH,UAAU,IAAI,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEnC;;;;;;;;;;OAUG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;IAEjD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACH,OAAO,IAAI,KAAK,GAAG,SAAS,CAAC;CAC7B"}
@@ -1 +1 @@
1
- {"version":3,"file":"audience.js","sourceRoot":"","sources":["../src/audience.ts"],"names":[],"mappings":";AAAA;;;GAGG","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport type { IEvent, IEventProvider } from \"@fluidframework/core-interfaces\";\nimport type { IClient } from \"@fluidframework/driver-definitions\";\n/**\n * Manages the state and the members for {@link IAudience}\n * @legacy\n * @alpha\n */\nexport interface IAudienceOwner extends IAudience {\n\t/**\n\t * Adds a new client to the audience\n\t */\n\taddMember(clientId: string, details: IClient): void;\n\n\t/**\n\t * Removes a client from the audience. Only emits an event if a client is actually removed\n\t * @returns if a client was removed from the audience\n\t */\n\tremoveMember(clientId: string): boolean;\n\n\t/**\n\t * Notifies Audience that current clientId has changed.\n\t * See {@link IAudience.getSelf} and {@link IAudienceEvents}'s \"selfChanged\" event for more details.\n\t */\n\tsetCurrentClientId(clientId: string): void;\n}\n\n/**\n * Interface describing Audience events\n * @public\n */\nexport interface IAudienceEvents extends IEvent {\n\t/**\n\t * Raised when a new user joins collaborative session.\n\t *\n\t * @param clientId - clientId of the new user that joined.\n\t * @param client - Information about the new user that joined (including user identity, connection properties).\n\t *\n\t * @eventProperty\n\t */\n\t(event: \"addMember\", listener: (clientId: string, client: IClient) => void): void;\n\n\t/**\n\t * Raised when a user leaves collaborative session.\n\t *\n\t * @param clientId - clientId of the user that left.\n\t * @param client - Information about the user that left (including user identity, connection properties).\n\t *\n\t * @eventProperty\n\t */\n\t(event: \"removeMember\", listener: (clientId: string, client: IClient) => void): void;\n\t/**\n\t * Notifies that client established new connection and caught-up on ops.\n\t * @param oldValue - represents old connection. Please note that oldValue.client in almost all cases will be undefined,\n\t * due to specifics how Audience refreshes on reconnect. In the future we could improve it and always provide client information.\n\t * @param newValue - represents newly established connection. While {@link IAudience.getSelf} is experimental, it's not guaranteed that\n\t * newValue.client is present. Same is true if you are consuming audience from container runtime layer and running against old version of loader.\n\t */\n\t(\n\t\tevent: \"selfChanged\",\n\t\tlistener: (oldValue: ISelf | undefined, newValue: ISelf) => void,\n\t): void;\n}\n\n/**\n * Return type of {@link IAudience.getSelf}. Please see remarks for {@link IAudience.getSelf} to learn more details on promises.\n * @public\n */\nexport interface ISelf {\n\t/**\n\t * clientId of current or previous connection (if client is in disconnected or reconnecting / catching up state)\n\t * It changes only when client has reconnected, caught up with latest ops.\n\t */\n\treadonly clientId: string;\n\n\t/**\n\t * Information about current client (including user identity, connection properties), supplied by ordering service when\n\t * client connected to it and received {@link ISelf.clientId}.\n\t * If present (not undefined), it's same value as calling IAudience.getMember(clientId).\n\t * This property could be undefined even if there is non-undefined clientId.\n\t * This could happen in the following cases:\n\t * 1) Container was loaded from stash, by providing IPendingContainerState state to Container.load().\n\t * 2) Container is in the process of establishing new connection. Information about old connection is already reset\n\t * (old clientId is no longer in list of members), but clientId has not yet changed to a new value.\n\t */\n\treadonly client?: IClient;\n}\n\n/**\n * Represents all clients connected to the op stream, both read-only and read/write.\n *\n * @remarks Access to the Audience when a container is disconnected is a tricky subject.\n * See the remarks on specific methods for more details.\n *\n * @public\n */\nexport interface IAudience extends IEventProvider<IAudienceEvents> {\n\t/**\n\t * List all clients connected to the op stream, keyed off their clientId.\n\t *\n\t * @remarks When the container is disconnected, there are no guarantees about the correctness of what this method returns.\n\t * The default implementation in Fluid Framework continues to return the list of members as it last saw it before the\n\t * container disconnected, but this could change in the future. Other implementations could decide to return an empty\n\t * list, or a list that only includes the local client.\n\t *\n\t * Note that the clientId that a disconnected container might see for itself is an old one. A disconnected container\n\t * does not technically have a clientId tied to an active connection to the service.\n\t */\n\tgetMembers(): Map<string, IClient>;\n\n\t/**\n\t * Get details about the connected client with the specified clientId, or undefined if the specified client isn't connected.\n\t *\n\t * @remarks When the container is disconnected, there are no guarantees about the correctness of what this method returns.\n\t * The default implementation in Fluid Framework continues to return members that were part of the audience when the\n\t * container disconnected, but this could change in the future. Other implementations could decide to always return\n\t * undefined, or only return an IClient when the local client is requested.\n\t *\n\t * Note that the clientId that a disconnected container might see for itself is an old one. A disconnected container\n\t * does not technically have a clientId tied to an active connection to the service.\n\t */\n\tgetMember(clientId: string): IClient | undefined;\n\n\t/**\n\t * Returns information about client's connection. Please see {@link ISelf} member descriptions for more details.\n\t * undefined if this client has never connected to the ordering service.\n\t * Please see {@link ISelf.clientId} for more details on when values returned by this function change over time.\n\t *\n\t * @experimental\n\t *\n\t * @remarks\n\t * This API is experimental.\n\t *\n\t * Reconnection process will have these phases:\n\t * 1. Establishing connection phase:\n\t * - new connection clientId is added to member's list. That said, self.clientId still reflects old information.\n\t * - The old client's information is removed from members' list. getMember(self.clientId) will return undefined.\n\t * 2. Catch-up phase. Client catches up on latest ops and becomes current.\n\t * 3. \"connect\" phase - the following happens synchronously:\n\t * - getSelf() information changes to reflect new connection\n\t * - \"selfChanged\" event on this object fires\n\t * - Various API surfaces may expose \"connected\" event. This event fires at the same time as self changes. That said, \"connected\" event will not fire at IContainerRuntime layer if container is read-only.\n\t *\n\t * That said, at the moment this is an experimental API. It depends on some experimental settings that might change in the future.\n\t * Events described in phase #3 may not happen at the same time if kill-bit feature gates are engaged due to a bug discovered in new logic\n\t * that delivers this functionality. Once it's proven (at scale) that everything works well, experimental tag will be removed.\n\t * Also application that deploy loader & container runtime bundles independently will see new (synchronized) behavior only when loader changes are deployed.\n\t * Newer runtimes will continue to observe old (non-synchronized) behavior when paired with older loader code.\n\t *\n\t * When promises in phase #3 are broken (due to conditions described above), consumers could experience current clientId being changed\n\t * (and \"selfChanged\" event fired) while\n\t * 1. Such clientId is not present in Audience\n\t * 2. Client is not fully caught up\n\t */\n\tgetSelf(): ISelf | undefined;\n}\n"]}
1
+ {"version":3,"file":"audience.js","sourceRoot":"","sources":["../src/audience.ts"],"names":[],"mappings":";AAAA;;;GAGG","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport type { IEvent, IEventProvider } from \"@fluidframework/core-interfaces\";\nimport type { IClient } from \"@fluidframework/driver-definitions\";\n/**\n * Manages the state and the members for {@link IAudience}\n * @legacy @beta\n */\nexport interface IAudienceOwner extends IAudience {\n\t/**\n\t * Adds a new client to the audience\n\t */\n\taddMember(clientId: string, details: IClient): void;\n\n\t/**\n\t * Removes a client from the audience. Only emits an event if a client is actually removed\n\t * @returns if a client was removed from the audience\n\t */\n\tremoveMember(clientId: string): boolean;\n\n\t/**\n\t * Notifies Audience that current clientId has changed.\n\t * See {@link IAudience.getSelf} and {@link IAudienceEvents}'s \"selfChanged\" event for more details.\n\t */\n\tsetCurrentClientId(clientId: string): void;\n}\n\n/**\n * Interface describing Audience events\n * @public\n */\nexport interface IAudienceEvents extends IEvent {\n\t/**\n\t * Raised when a new user joins collaborative session.\n\t *\n\t * @param clientId - clientId of the new user that joined.\n\t * @param client - Information about the new user that joined (including user identity, connection properties).\n\t *\n\t * @eventProperty\n\t */\n\t(event: \"addMember\", listener: (clientId: string, client: IClient) => void): void;\n\n\t/**\n\t * Raised when a user leaves collaborative session.\n\t *\n\t * @param clientId - clientId of the user that left.\n\t * @param client - Information about the user that left (including user identity, connection properties).\n\t *\n\t * @eventProperty\n\t */\n\t(event: \"removeMember\", listener: (clientId: string, client: IClient) => void): void;\n\t/**\n\t * Notifies that client established new connection and caught-up on ops.\n\t * @param oldValue - represents old connection. Please note that oldValue.client in almost all cases will be undefined,\n\t * due to specifics how Audience refreshes on reconnect. In the future we could improve it and always provide client information.\n\t * @param newValue - represents newly established connection. While {@link IAudience.getSelf} is experimental, it's not guaranteed that\n\t * newValue.client is present. Same is true if you are consuming audience from container runtime layer and running against old version of loader.\n\t */\n\t(\n\t\tevent: \"selfChanged\",\n\t\tlistener: (oldValue: ISelf | undefined, newValue: ISelf) => void,\n\t): void;\n}\n\n/**\n * Return type of {@link IAudience.getSelf}. Please see remarks for {@link IAudience.getSelf} to learn more details on promises.\n * @public\n */\nexport interface ISelf {\n\t/**\n\t * clientId of current or previous connection (if client is in disconnected or reconnecting / catching up state)\n\t * It changes only when client has reconnected, caught up with latest ops.\n\t */\n\treadonly clientId: string;\n\n\t/**\n\t * Information about current client (including user identity, connection properties), supplied by ordering service when\n\t * client connected to it and received {@link ISelf.clientId}.\n\t * If present (not undefined), it's same value as calling IAudience.getMember(clientId).\n\t * This property could be undefined even if there is non-undefined clientId.\n\t * This could happen in the following cases:\n\t * 1) Container was loaded from stash, by providing IPendingContainerState state to Container.load().\n\t * 2) Container is in the process of establishing new connection. Information about old connection is already reset\n\t * (old clientId is no longer in list of members), but clientId has not yet changed to a new value.\n\t */\n\treadonly client?: IClient;\n}\n\n/**\n * Represents all clients connected to the op stream, both read-only and read/write.\n *\n * @remarks Access to the Audience when a container is disconnected is a tricky subject.\n * See the remarks on specific methods for more details.\n *\n * @public\n */\nexport interface IAudience extends IEventProvider<IAudienceEvents> {\n\t/**\n\t * List all clients connected to the op stream, keyed off their clientId.\n\t *\n\t * @remarks When the container is disconnected, there are no guarantees about the correctness of what this method returns.\n\t * The default implementation in Fluid Framework continues to return the list of members as it last saw it before the\n\t * container disconnected, but this could change in the future. Other implementations could decide to return an empty\n\t * list, or a list that only includes the local client.\n\t *\n\t * Note that the clientId that a disconnected container might see for itself is an old one. A disconnected container\n\t * does not technically have a clientId tied to an active connection to the service.\n\t */\n\tgetMembers(): Map<string, IClient>;\n\n\t/**\n\t * Get details about the connected client with the specified clientId, or undefined if the specified client isn't connected.\n\t *\n\t * @remarks When the container is disconnected, there are no guarantees about the correctness of what this method returns.\n\t * The default implementation in Fluid Framework continues to return members that were part of the audience when the\n\t * container disconnected, but this could change in the future. Other implementations could decide to always return\n\t * undefined, or only return an IClient when the local client is requested.\n\t *\n\t * Note that the clientId that a disconnected container might see for itself is an old one. A disconnected container\n\t * does not technically have a clientId tied to an active connection to the service.\n\t */\n\tgetMember(clientId: string): IClient | undefined;\n\n\t/**\n\t * Returns information about client's connection. Please see {@link ISelf} member descriptions for more details.\n\t * undefined if this client has never connected to the ordering service.\n\t * Please see {@link ISelf.clientId} for more details on when values returned by this function change over time.\n\t *\n\t * @experimental\n\t *\n\t * @remarks\n\t * This API is experimental.\n\t *\n\t * Reconnection process will have these phases:\n\t * 1. Establishing connection phase:\n\t * - new connection clientId is added to member's list. That said, self.clientId still reflects old information.\n\t * - The old client's information is removed from members' list. getMember(self.clientId) will return undefined.\n\t * 2. Catch-up phase. Client catches up on latest ops and becomes current.\n\t * 3. \"connect\" phase - the following happens synchronously:\n\t * - getSelf() information changes to reflect new connection\n\t * - \"selfChanged\" event on this object fires\n\t * - Various API surfaces may expose \"connected\" event. This event fires at the same time as self changes. That said, \"connected\" event will not fire at IContainerRuntime layer if container is read-only.\n\t *\n\t * That said, at the moment this is an experimental API. It depends on some experimental settings that might change in the future.\n\t * Events described in phase #3 may not happen at the same time if kill-bit feature gates are engaged due to a bug discovered in new logic\n\t * that delivers this functionality. Once it's proven (at scale) that everything works well, experimental tag will be removed.\n\t * Also application that deploy loader & container runtime bundles independently will see new (synchronized) behavior only when loader changes are deployed.\n\t * Newer runtimes will continue to observe old (non-synchronized) behavior when paired with older loader code.\n\t *\n\t * When promises in phase #3 are broken (due to conditions described above), consumers could experience current clientId being changed\n\t * (and \"selfChanged\" event fired) while\n\t * 1. Such clientId is not present in Audience\n\t * 2. Client is not fully caught up\n\t */\n\tgetSelf(): ISelf | undefined;\n}\n"]}
@@ -5,8 +5,7 @@
5
5
  import type { IFluidPackage, IFluidPackageEnvironment } from "./fluidPackage.js";
6
6
  /**
7
7
  * A specific Fluid package environment for browsers
8
- * @legacy
9
- * @alpha
8
+ * @legacy @beta
10
9
  */
11
10
  export interface IFluidBrowserPackageEnvironment extends IFluidPackageEnvironment {
12
11
  /**
@@ -28,8 +27,7 @@ export interface IFluidBrowserPackageEnvironment extends IFluidPackageEnvironmen
28
27
  }
29
28
  /**
30
29
  * A Fluid package for specification for browser environments
31
- * @legacy
32
- * @alpha
30
+ * @legacy @beta
33
31
  */
34
32
  export interface IFluidBrowserPackage extends IFluidPackage {
35
33
  /**
@@ -49,8 +47,7 @@ export interface IFluidBrowserPackage extends IFluidPackage {
49
47
  /**
50
48
  * Determines if any object is an IFluidBrowserPackage
51
49
  * @param maybePkg - The object to check for compatibility with IFluidBrowserPackage
52
- * @legacy
53
- * @alpha
50
+ * @legacy @beta
54
51
  */
55
52
  export declare const isFluidBrowserPackage: (maybePkg: unknown) => maybePkg is Readonly<IFluidBrowserPackage>;
56
53
  //# sourceMappingURL=browserPackage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"browserPackage.d.ts","sourceRoot":"","sources":["../src/browserPackage.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAGjF;;;;GAIG;AACH,MAAM,WAAW,+BAAgC,SAAQ,wBAAwB;IAChF;;;OAGG;IACH,GAAG,EAAE;QACJ;;;WAGG;QACH,KAAK,EAAE,MAAM,EAAE,CAAC;QAEhB;;;WAGG;QACH,OAAO,EAAE,MAAM,CAAC;KAChB,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,WAAW,oBAAqB,SAAQ,aAAa;IAC1D;;OAEG;IACH,KAAK,EAAE;QACN;;WAEG;QACH,OAAO,EAAE,+BAA+B,CAAC;QACzC;;WAEG;QACH,CAAC,WAAW,EAAE,MAAM,GAAG,wBAAwB,CAAC;KAChD,CAAC;CACF;AAED;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,aACvB,OAAO,+CAIkC,CAAC"}
1
+ {"version":3,"file":"browserPackage.d.ts","sourceRoot":"","sources":["../src/browserPackage.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAGjF;;;GAGG;AACH,MAAM,WAAW,+BAAgC,SAAQ,wBAAwB;IAChF;;;OAGG;IACH,GAAG,EAAE;QACJ;;;WAGG;QACH,KAAK,EAAE,MAAM,EAAE,CAAC;QAEhB;;;WAGG;QACH,OAAO,EAAE,MAAM,CAAC;KAChB,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAqB,SAAQ,aAAa;IAC1D;;OAEG;IACH,KAAK,EAAE;QACN;;WAEG;QACH,OAAO,EAAE,+BAA+B,CAAC;QACzC;;WAEG;QACH,CAAC,WAAW,EAAE,MAAM,GAAG,wBAAwB,CAAC;KAChD,CAAC;CACF;AAED;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,aACvB,OAAO,+CAIkC,CAAC"}
@@ -9,8 +9,7 @@ const fluidPackage_js_1 = require("./fluidPackage.js");
9
9
  /**
10
10
  * Determines if any object is an IFluidBrowserPackage
11
11
  * @param maybePkg - The object to check for compatibility with IFluidBrowserPackage
12
- * @legacy
13
- * @alpha
12
+ * @legacy @beta
14
13
  */
15
14
  const isFluidBrowserPackage = (maybePkg) => (0, fluidPackage_js_1.isFluidPackage)(maybePkg) &&
16
15
  typeof maybePkg?.fluid?.browser?.umd?.library === "string" &&
@@ -1 +1 @@
1
- {"version":3,"file":"browserPackage.js","sourceRoot":"","sources":["../src/browserPackage.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAGH,uDAAmD;AAgDnD;;;;;GAKG;AACI,MAAM,qBAAqB,GAAG,CACpC,QAAiB,EAC4B,EAAE,CAC/C,IAAA,gCAAc,EAAC,QAAQ,CAAC;IACxB,OAAO,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,KAAK,QAAQ;IAC1D,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AALxC,QAAA,qBAAqB,yBAKmB","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport type { IFluidPackage, IFluidPackageEnvironment } from \"./fluidPackage.js\";\nimport { isFluidPackage } from \"./fluidPackage.js\";\n\n/**\n * A specific Fluid package environment for browsers\n * @legacy\n * @alpha\n */\nexport interface IFluidBrowserPackageEnvironment extends IFluidPackageEnvironment {\n\t/**\n\t * The Universal Module Definition (umd) target specifics the scripts necessary for\n\t * loading a packages in a browser environment and finding its entry point.\n\t */\n\tumd: {\n\t\t/**\n\t\t * The bundled js files for loading this package.\n\t\t * These files will be loaded and executed in order.\n\t\t */\n\t\tfiles: string[];\n\n\t\t/**\n\t\t * The global name that the script entry points will be exposed.\n\t\t * This entry point should be an {@link @fluidframework/container-definitions#IFluidModule}.\n\t\t */\n\t\tlibrary: string;\n\t};\n}\n\n/**\n * A Fluid package for specification for browser environments\n * @legacy\n * @alpha\n */\nexport interface IFluidBrowserPackage extends IFluidPackage {\n\t/**\n\t * {@inheritDoc @fluidframework/core-interfaces#IFluidPackage.fluid}\n\t */\n\tfluid: {\n\t\t/**\n\t\t * The browser specific package information for this package\n\t\t */\n\t\tbrowser: IFluidBrowserPackageEnvironment;\n\t\t/**\n\t\t * {@inheritDoc @fluidframework/core-interfaces#IFluidPackage.fluid.environment}\n\t\t */\n\t\t[environment: string]: IFluidPackageEnvironment;\n\t};\n}\n\n/**\n * Determines if any object is an IFluidBrowserPackage\n * @param maybePkg - The object to check for compatibility with IFluidBrowserPackage\n * @legacy\n * @alpha\n */\nexport const isFluidBrowserPackage = (\n\tmaybePkg: unknown,\n): maybePkg is Readonly<IFluidBrowserPackage> =>\n\tisFluidPackage(maybePkg) &&\n\ttypeof maybePkg?.fluid?.browser?.umd?.library === \"string\" &&\n\tArray.isArray(maybePkg?.fluid?.browser?.umd?.files);\n"]}
1
+ {"version":3,"file":"browserPackage.js","sourceRoot":"","sources":["../src/browserPackage.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAGH,uDAAmD;AA8CnD;;;;GAIG;AACI,MAAM,qBAAqB,GAAG,CACpC,QAAiB,EAC4B,EAAE,CAC/C,IAAA,gCAAc,EAAC,QAAQ,CAAC;IACxB,OAAO,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,KAAK,QAAQ;IAC1D,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AALxC,QAAA,qBAAqB,yBAKmB","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport type { IFluidPackage, IFluidPackageEnvironment } from \"./fluidPackage.js\";\nimport { isFluidPackage } from \"./fluidPackage.js\";\n\n/**\n * A specific Fluid package environment for browsers\n * @legacy @beta\n */\nexport interface IFluidBrowserPackageEnvironment extends IFluidPackageEnvironment {\n\t/**\n\t * The Universal Module Definition (umd) target specifics the scripts necessary for\n\t * loading a packages in a browser environment and finding its entry point.\n\t */\n\tumd: {\n\t\t/**\n\t\t * The bundled js files for loading this package.\n\t\t * These files will be loaded and executed in order.\n\t\t */\n\t\tfiles: string[];\n\n\t\t/**\n\t\t * The global name that the script entry points will be exposed.\n\t\t * This entry point should be an {@link @fluidframework/container-definitions#IFluidModule}.\n\t\t */\n\t\tlibrary: string;\n\t};\n}\n\n/**\n * A Fluid package for specification for browser environments\n * @legacy @beta\n */\nexport interface IFluidBrowserPackage extends IFluidPackage {\n\t/**\n\t * {@inheritDoc @fluidframework/core-interfaces#IFluidPackage.fluid}\n\t */\n\tfluid: {\n\t\t/**\n\t\t * The browser specific package information for this package\n\t\t */\n\t\tbrowser: IFluidBrowserPackageEnvironment;\n\t\t/**\n\t\t * {@inheritDoc @fluidframework/core-interfaces#IFluidPackage.fluid.environment}\n\t\t */\n\t\t[environment: string]: IFluidPackageEnvironment;\n\t};\n}\n\n/**\n * Determines if any object is an IFluidBrowserPackage\n * @param maybePkg - The object to check for compatibility with IFluidBrowserPackage\n * @legacy @beta\n */\nexport const isFluidBrowserPackage = (\n\tmaybePkg: unknown,\n): maybePkg is Readonly<IFluidBrowserPackage> =>\n\tisFluidPackage(maybePkg) &&\n\ttypeof maybePkg?.fluid?.browser?.umd?.library === \"string\" &&\n\tArray.isArray(maybePkg?.fluid?.browser?.umd?.files);\n"]}
package/dist/deltas.d.ts CHANGED
@@ -7,8 +7,7 @@ import type { IClientDetails } from "@fluidframework/driver-definitions";
7
7
  import type { IAnyDriverError, IClientConfiguration, IDocumentMessage, ITokenClaims, ISequencedDocumentMessage, ISignalMessage } from "@fluidframework/driver-definitions/internal";
8
8
  /**
9
9
  * Contract representing the result of a newly established connection to the server for syncing deltas.
10
- * @legacy
11
- * @alpha
10
+ * @legacy @beta
12
11
  */
13
12
  export interface IConnectionDetails {
14
13
  /**
@@ -34,8 +33,7 @@ export interface IConnectionDetails {
34
33
  /**
35
34
  * Contract supporting delivery of outbound messages to the server
36
35
  * @sealed
37
- * @legacy
38
- * @alpha
36
+ * @legacy @beta
39
37
  */
40
38
  export interface IDeltaSender {
41
39
  /**
@@ -46,8 +44,7 @@ export interface IDeltaSender {
46
44
  /**
47
45
  * Events emitted by {@link IDeltaManager}.
48
46
  * @sealed
49
- * @legacy
50
- * @alpha
47
+ * @legacy @beta
51
48
  */
52
49
  export interface IDeltaManagerEvents extends IEvent {
53
50
  /**
@@ -117,8 +114,7 @@ export interface IDeltaManagerEvents extends IEvent {
117
114
  /**
118
115
  * Manages the transmission of ops between the runtime and storage.
119
116
  * @sealed
120
- * @legacy
121
- * @alpha
117
+ * @legacy @beta
122
118
  */
123
119
  export interface IDeltaManager<T, U> extends IEventProvider<IDeltaManagerEvents>, IDeltaSender {
124
120
  /**
@@ -198,8 +194,7 @@ export declare function isIDeltaManagerFull(deltaManager: IDeltaManager<ISequenc
198
194
  /**
199
195
  * Events emitted by {@link IDeltaQueue}.
200
196
  * @sealed
201
- * @legacy
202
- * @alpha
197
+ * @legacy @beta
203
198
  */
204
199
  export interface IDeltaQueueEvents<T> extends IErrorEvent {
205
200
  /**
@@ -240,8 +235,7 @@ export interface IDeltaQueueEvents<T> extends IErrorEvent {
240
235
  /**
241
236
  * Queue of ops to be sent to or processed from storage
242
237
  * @sealed
243
- * @legacy
244
- * @alpha
238
+ * @legacy @beta
245
239
  */
246
240
  export interface IDeltaQueue<T> extends IEventProvider<IDeltaQueueEvents<T>>, IDisposable {
247
241
  /**
@@ -285,8 +279,7 @@ export interface IDeltaQueue<T> extends IEventProvider<IDeltaQueueEvents<T>>, ID
285
279
  }>;
286
280
  }
287
281
  /**
288
- * @legacy
289
- * @alpha
282
+ * @legacy @beta
290
283
  */
291
284
  export type ReadOnlyInfo = {
292
285
  readonly readonly: false | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"deltas.d.ts","sourceRoot":"","sources":["../src/deltas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deltas.d.ts","sourceRoot":"","sources":["../src/deltas.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACX,WAAW,EACX,UAAU,EACV,WAAW,EACX,MAAM,EACN,cAAc,EACd,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,KAAK,EACX,eAAe,EACf,oBAAoB,EACpB,gBAAgB,EAChB,YAAY,EACZ,yBAAyB,EACzB,cAAc,EACd,MAAM,6CAA6C,CAAC;AAErD;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IAClC;;;;OAIG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB,MAAM,EAAE,YAAY,CAAC;IACrB,oBAAoB,EAAE,oBAAoB,CAAC;IAE3C;;;;;;;;;OASG;IACH,wBAAwB,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7C;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC5B;;OAEG;IACH,KAAK,IAAI,IAAI,CAAC;CACd;AAED;;;;GAIG;AACH,MAAM,WAAW,mBAAoB,SAAQ,MAAM;IAClD;;OAEG;IAEH,CAAC,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC,aAAa,EAAE,GAAG,EAAE,KAAK,IAAI,OAAE;IAEjE;;OAEG;IACH,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,OAAE;IAEnE;;;;;;;;;;;;;;OAcG;IACH,CACC,KAAK,EAAE,IAAI,EACX,QAAQ,EAAE,CAAC,OAAO,EAAE,yBAAyB,EAAE,cAAc,EAAE,MAAM,KAAK,IAAI,OAC7E;IAEF;;OAEG;IACH,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,OAAE;IAErD;;;;;;;;;;;;;OAaG;IACH,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,kBAAkB,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,IAAI,OAAE;IAExF;;;;;;;OAOG;IACH,CAAC,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,eAAe,KAAK,IAAI,OAAE;IAEnF;;;;;;OAMG;IACH,CACC,KAAK,EAAE,UAAU,EACjB,QAAQ,EAAE,CACT,QAAQ,EAAE,OAAO,EACjB,wBAAwB,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,UAAU,CAAA;KAAE,KAC7D,IAAI,OACR;CACF;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAa,CAAC,CAAC,EAAE,CAAC,CAClC,SAAQ,cAAc,CAAC,mBAAmB,CAAC,EAC1C,YAAY;IACb;;OAEG;IACH,QAAQ,CAAC,aAAa,EAAE,WAAW,CAAC,cAAc,CAAC,CAAC;IAEpD;;OAEG;IACH,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IAEvC;;OAEG;IACH,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IAEpC;;OAEG;IACH,QAAQ,CAAC,WAAW,EAAE,yBAAyB,GAAG,SAAS,CAAC;IAE5D;;OAEG;IACH,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IAEpC;;OAEG;IACH,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IAEvC;;;OAGG;IACH,QAAQ,CAAC,2BAA2B,EAAE,OAAO,CAAC;IAE9C;;OAEG;IACH,QAAQ,CAAC,aAAa,EAAE,cAAc,CAAC;IAEvC;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAEhC;;OAEG;IACH,QAAQ,CAAC,oBAAoB,EAAE,oBAAoB,GAAG,SAAS,CAAC;IAEhE;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAEzB,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IAEpC;;OAEG;IAGH,YAAY,CAAC,OAAO,EAAE,GAAG,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1D;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB,CAAC,CAAC,GAAG,yBAAyB,EAAE,CAAC,GAAG,gBAAgB,CACrF,SAAQ,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC;IAC3B;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IAEjC;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC;CACpC;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAClC,YAAY,EAAE,aAAa,CAAC,yBAAyB,EAAE,gBAAgB,CAAC,GACtE,YAAY,IAAI,iBAAiB,CAEnC;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB,CAAC,CAAC,CAAE,SAAQ,WAAW;IACxD;;;;;;OAMG;IACH,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,OAAE;IAE7C;;;;;;;;;;;;OAYG;IACH,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,OAAE;IAE3C;;;;;;;;;;OAUG;IACH,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,OAAE;CACrE;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC,CAAE,SAAQ,cAAc,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW;IACxF;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC;IAEhB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,IAAI,EAAE,OAAO,CAAC;IAEd;;;;OAIG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvB;;OAEG;IACH,MAAM,IAAI,IAAI,CAAC;IAEf;;OAEG;IACH,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC;IAEtB;;OAEG;IACH,OAAO,IAAI,CAAC,EAAE,CAAC;IAEf;;;OAGG;IACH,sBAAsB,IAAI,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACvE;AAED;;GAEG;AACH,MAAM,MAAM,YAAY,GACrB;IACA,QAAQ,CAAC,QAAQ,EAAE,KAAK,GAAG,SAAS,CAAC;CACpC,GACD;IACA,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;IAExB;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAEzB;;OAEG;IACH,QAAQ,CAAC,WAAW,EAAE,OAAO,GAAG,SAAS,CAAC;IAE1C;;OAEG;IACH,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAE9B;;;;OAIG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CACnC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"deltas.js","sourceRoot":"","sources":["../src/deltas.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAmPH;;;GAGG;AACH,SAAgB,mBAAmB,CAClC,YAAwE;IAExE,OAAO,SAAS,IAAI,YAAY,IAAI,UAAU,IAAI,YAAY,CAAC;AAChE,CAAC;AAJD,kDAIC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport type {\n\tIDisposable,\n\tIErrorBase,\n\tIErrorEvent,\n\tIEvent,\n\tIEventProvider,\n} from \"@fluidframework/core-interfaces\";\nimport type { IClientDetails } from \"@fluidframework/driver-definitions\";\nimport type {\n\tIAnyDriverError,\n\tIClientConfiguration,\n\tIDocumentMessage,\n\tITokenClaims,\n\tISequencedDocumentMessage,\n\tISignalMessage,\n} from \"@fluidframework/driver-definitions/internal\";\n\n/**\n * Contract representing the result of a newly established connection to the server for syncing deltas.\n * @legacy\n * @alpha\n */\nexport interface IConnectionDetails {\n\t/**\n\t * The client's unique identifier assigned by the service.\n\t *\n\t * @remarks It is not stable across reconnections.\n\t */\n\tclientId: string;\n\n\tclaims: ITokenClaims;\n\tserviceConfiguration: IClientConfiguration;\n\n\t/**\n\t * Last known sequence number to ordering service at the time of connection.\n\t *\n\t * @remarks\n\t *\n\t * It may lag behind the actual last sequence number (quite a bit, if the container is very active),\n\t * but it's the best information the client has to figure out how far behind it is, at least\n\t * for \"read\" connections. \"write\" connections may use the client's own \"join\" op to obtain similar\n\t * information which is likely to be more up-to-date.\n\t */\n\tcheckpointSequenceNumber: number | undefined;\n}\n\n/**\n * Contract supporting delivery of outbound messages to the server\n * @sealed\n * @legacy\n * @alpha\n */\nexport interface IDeltaSender {\n\t/**\n\t * Flush all pending messages through the outbound queue\n\t */\n\tflush(): void;\n}\n\n/**\n * Events emitted by {@link IDeltaManager}.\n * @sealed\n * @legacy\n * @alpha\n */\nexport interface IDeltaManagerEvents extends IEvent {\n\t/**\n\t * @deprecated No replacement API recommended.\n\t */\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t(event: \"prepareSend\", listener: (messageBuffer: any[]) => void);\n\n\t/**\n\t * @deprecated No replacement API recommended.\n\t */\n\t(event: \"submitOp\", listener: (message: IDocumentMessage) => void);\n\n\t/**\n\t * Emitted immediately after processing an incoming operation (op).\n\t *\n\t * @remarks\n\t *\n\t * Note: this event is not intended for general use.\n\t * Prefer to listen to events on the appropriate ultimate recipients of the ops, rather than listening to the\n\t * ops directly on the {@link IDeltaManager}.\n\t *\n\t * Listener parameters:\n\t *\n\t * - `message`: The op that was processed.\n\t *\n\t * - `processingTime`: The amount of time it took to process the inbound operation (op), expressed in milliseconds.\n\t */\n\t(\n\t\tevent: \"op\",\n\t\tlistener: (message: ISequencedDocumentMessage, processingTime: number) => void,\n\t);\n\n\t/**\n\t * Emitted periodically with latest information on network roundtrip latency\n\t */\n\t(event: \"pong\", listener: (latency: number) => void);\n\n\t/**\n\t * Emitted when the {@link IDeltaManager} completes connecting to the Fluid service.\n\t *\n\t * @remarks\n\t * This occurs once we've received the connect_document_success message from the server,\n\t * and happens prior to the client's join message (if there is a join message).\n\t *\n\t * Listener parameters:\n\t *\n\t * - `details`: Connection metadata.\n\t *\n\t * - `opsBehind`: An estimate of far behind the client is relative to the service in terms of ops.\n\t * Will not be specified if an estimate cannot be determined.\n\t */\n\t(event: \"connect\", listener: (details: IConnectionDetails, opsBehind?: number) => void);\n\n\t/**\n\t * Emitted when the {@link IDeltaManager} becomes disconnected from the Fluid service.\n\t *\n\t * @remarks Listener parameters:\n\t *\n\t * - `reason`: Describes the reason for which the delta manager was disconnected.\n\t * - `error` : error if any for the disconnect.\n\t */\n\t(event: \"disconnect\", listener: (reason: string, error?: IAnyDriverError) => void);\n\n\t/**\n\t * Emitted when read/write permissions change.\n\t *\n\t * @remarks Listener parameters:\n\t *\n\t * - `readonly`: Whether or not the delta manager is now read-only.\n\t */\n\t(\n\t\tevent: \"readonly\",\n\t\tlistener: (\n\t\t\treadonly: boolean,\n\t\t\treadonlyConnectionReason?: { reason: string; error?: IErrorBase },\n\t\t) => void,\n\t);\n}\n\n/**\n * Manages the transmission of ops between the runtime and storage.\n * @sealed\n * @legacy\n * @alpha\n */\nexport interface IDeltaManager<T, U>\n\textends IEventProvider<IDeltaManagerEvents>,\n\t\tIDeltaSender {\n\t/**\n\t * The queue of inbound delta signals\n\t */\n\treadonly inboundSignal: IDeltaQueue<ISignalMessage>;\n\n\t/**\n\t * The current minimum sequence number\n\t */\n\treadonly minimumSequenceNumber: number;\n\n\t/**\n\t * The last sequence number processed by the delta manager\n\t */\n\treadonly lastSequenceNumber: number;\n\n\t/**\n\t * The last message processed by the delta manager\n\t */\n\treadonly lastMessage: ISequencedDocumentMessage | undefined;\n\n\t/**\n\t * The latest sequence number the delta manager is aware of\n\t */\n\treadonly lastKnownSeqNumber: number;\n\n\t/**\n\t * The initial sequence number set when attaching the op handler\n\t */\n\treadonly initialSequenceNumber: number;\n\n\t/**\n\t * Tells if current connection has checkpoint information.\n\t * I.e. we know how far behind the client was at the time of establishing connection\n\t */\n\treadonly hasCheckpointSequenceNumber: boolean;\n\n\t/**\n\t * Details of client\n\t */\n\treadonly clientDetails: IClientDetails;\n\n\t/**\n\t * Protocol version being used to communicate with the service\n\t */\n\treadonly version: string;\n\n\t/**\n\t * Max message size allowed to the delta manager\n\t */\n\treadonly maxMessageSize: number;\n\n\t/**\n\t * Service configuration provided by the service.\n\t */\n\treadonly serviceConfiguration: IClientConfiguration | undefined;\n\n\t/**\n\t * Flag to indicate whether the client can write or not.\n\t */\n\treadonly active: boolean;\n\n\treadonly readOnlyInfo: ReadOnlyInfo;\n\n\t/**\n\t * Submit a signal to the service to be broadcast to other connected clients, but not persisted\n\t */\n\t// TODO: use `unknown` instead (API breaking)\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tsubmitSignal(content: any, targetClientId?: string): void;\n}\n\n/**\n * DeltaManager which is used internally by the Fluid layers and not exposed to the end users.\n * @internal\n */\nexport interface IDeltaManagerFull<T = ISequencedDocumentMessage, U = IDocumentMessage>\n\textends IDeltaManager<T, U> {\n\t/**\n\t * The queue of inbound delta messages\n\t */\n\treadonly inbound: IDeltaQueue<T>;\n\n\t/**\n\t * The queue of outbound delta messages\n\t */\n\treadonly outbound: IDeltaQueue<U[]>;\n}\n\n/**\n * Type guard to check if the given deltaManager is of type {@link @fluidframework/container-definitions#IDeltaManagerFull}.\n * @internal\n */\nexport function isIDeltaManagerFull(\n\tdeltaManager: IDeltaManager<ISequencedDocumentMessage, IDocumentMessage>,\n): deltaManager is IDeltaManagerFull {\n\treturn \"inbound\" in deltaManager && \"outbound\" in deltaManager;\n}\n\n/**\n * Events emitted by {@link IDeltaQueue}.\n * @sealed\n * @legacy\n * @alpha\n */\nexport interface IDeltaQueueEvents<T> extends IErrorEvent {\n\t/**\n\t * Emitted when a task is enqueued.\n\t *\n\t * @remarks Listener parameters:\n\t *\n\t * - `task`: The task being enqueued.\n\t */\n\t(event: \"push\", listener: (task: T) => void);\n\n\t/**\n\t * Emitted immediately after processing an enqueued task and removing it from the queue.\n\t *\n\t * @remarks\n\t *\n\t * Note: this event is not intended for general use.\n\t * Prefer to listen to events on the appropriate ultimate recipients of the ops, rather than listening to the\n\t * ops directly on the {@link IDeltaQueue}.\n\t *\n\t * Listener parameters:\n\t *\n\t * - `task`: The task that was processed.\n\t */\n\t(event: \"op\", listener: (task: T) => void);\n\n\t/**\n\t * Emitted when the queue of tasks to process is emptied.\n\t *\n\t * @remarks Listener parameters:\n\t *\n\t * - `count`: The number of events (`T`) processed before becoming idle.\n\t *\n\t * - `duration`: The amount of time it took to process elements (in milliseconds).\n\t *\n\t * @see {@link IDeltaQueue.idle}\n\t */\n\t(event: \"idle\", listener: (count: number, duration: number) => void);\n}\n\n/**\n * Queue of ops to be sent to or processed from storage\n * @sealed\n * @legacy\n * @alpha\n */\nexport interface IDeltaQueue<T> extends IEventProvider<IDeltaQueueEvents<T>>, IDisposable {\n\t/**\n\t * Flag indicating whether or not the queue was paused\n\t */\n\tpaused: boolean;\n\n\t/**\n\t * The number of messages remaining in the queue\n\t */\n\tlength: number;\n\n\t/**\n\t * Flag indicating whether or not the queue is idle.\n\t * I.e. there are no remaining messages to processes.\n\t */\n\tidle: boolean;\n\n\t/**\n\t * Pauses processing on the queue.\n\t *\n\t * @returns A promise which resolves when processing has been paused.\n\t */\n\tpause(): Promise<void>;\n\n\t/**\n\t * Resumes processing on the queue\n\t */\n\tresume(): void;\n\n\t/**\n\t * Peeks at the next message in the queue\n\t */\n\tpeek(): T | undefined;\n\n\t/**\n\t * Returns all the items in the queue as an array. Does not remove them from the queue.\n\t */\n\ttoArray(): T[];\n\n\t/**\n\t * returns number of ops processed and time it took to process these ops.\n\t * Zeros if queue did not process anything (had no messages, was paused or had hit an error before)\n\t */\n\twaitTillProcessingDone(): Promise<{ count: number; duration: number }>;\n}\n\n/**\n * @legacy\n * @alpha\n */\nexport type ReadOnlyInfo =\n\t| {\n\t\t\treadonly readonly: false | undefined;\n\t }\n\t| {\n\t\t\treadonly readonly: true;\n\n\t\t\t/**\n\t\t\t * Read-only because `forceReadOnly()` was called.\n\t\t\t */\n\t\t\treadonly forced: boolean;\n\n\t\t\t/**\n\t\t\t * Read-only because client does not have write permissions for document.\n\t\t\t */\n\t\t\treadonly permissions: boolean | undefined;\n\n\t\t\t/**\n\t\t\t * Read-only with no delta stream connection.\n\t\t\t */\n\t\t\treadonly storageOnly: boolean;\n\n\t\t\t/**\n\t\t\t * Extra info on why connection to delta stream is not possible.\n\t\t\t *\n\t\t\t * @remarks This info might be provided if {@link ReadOnlyInfo.storageOnly} is set to `true`.\n\t\t\t */\n\t\t\treadonly storageOnlyReason?: string;\n\t };\n"]}
1
+ {"version":3,"file":"deltas.js","sourceRoot":"","sources":["../src/deltas.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AA+OH;;;GAGG;AACH,SAAgB,mBAAmB,CAClC,YAAwE;IAExE,OAAO,SAAS,IAAI,YAAY,IAAI,UAAU,IAAI,YAAY,CAAC;AAChE,CAAC;AAJD,kDAIC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport type {\n\tIDisposable,\n\tIErrorBase,\n\tIErrorEvent,\n\tIEvent,\n\tIEventProvider,\n} from \"@fluidframework/core-interfaces\";\nimport type { IClientDetails } from \"@fluidframework/driver-definitions\";\nimport type {\n\tIAnyDriverError,\n\tIClientConfiguration,\n\tIDocumentMessage,\n\tITokenClaims,\n\tISequencedDocumentMessage,\n\tISignalMessage,\n} from \"@fluidframework/driver-definitions/internal\";\n\n/**\n * Contract representing the result of a newly established connection to the server for syncing deltas.\n * @legacy @beta\n */\nexport interface IConnectionDetails {\n\t/**\n\t * The client's unique identifier assigned by the service.\n\t *\n\t * @remarks It is not stable across reconnections.\n\t */\n\tclientId: string;\n\n\tclaims: ITokenClaims;\n\tserviceConfiguration: IClientConfiguration;\n\n\t/**\n\t * Last known sequence number to ordering service at the time of connection.\n\t *\n\t * @remarks\n\t *\n\t * It may lag behind the actual last sequence number (quite a bit, if the container is very active),\n\t * but it's the best information the client has to figure out how far behind it is, at least\n\t * for \"read\" connections. \"write\" connections may use the client's own \"join\" op to obtain similar\n\t * information which is likely to be more up-to-date.\n\t */\n\tcheckpointSequenceNumber: number | undefined;\n}\n\n/**\n * Contract supporting delivery of outbound messages to the server\n * @sealed\n * @legacy @beta\n */\nexport interface IDeltaSender {\n\t/**\n\t * Flush all pending messages through the outbound queue\n\t */\n\tflush(): void;\n}\n\n/**\n * Events emitted by {@link IDeltaManager}.\n * @sealed\n * @legacy @beta\n */\nexport interface IDeltaManagerEvents extends IEvent {\n\t/**\n\t * @deprecated No replacement API recommended.\n\t */\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t(event: \"prepareSend\", listener: (messageBuffer: any[]) => void);\n\n\t/**\n\t * @deprecated No replacement API recommended.\n\t */\n\t(event: \"submitOp\", listener: (message: IDocumentMessage) => void);\n\n\t/**\n\t * Emitted immediately after processing an incoming operation (op).\n\t *\n\t * @remarks\n\t *\n\t * Note: this event is not intended for general use.\n\t * Prefer to listen to events on the appropriate ultimate recipients of the ops, rather than listening to the\n\t * ops directly on the {@link IDeltaManager}.\n\t *\n\t * Listener parameters:\n\t *\n\t * - `message`: The op that was processed.\n\t *\n\t * - `processingTime`: The amount of time it took to process the inbound operation (op), expressed in milliseconds.\n\t */\n\t(\n\t\tevent: \"op\",\n\t\tlistener: (message: ISequencedDocumentMessage, processingTime: number) => void,\n\t);\n\n\t/**\n\t * Emitted periodically with latest information on network roundtrip latency\n\t */\n\t(event: \"pong\", listener: (latency: number) => void);\n\n\t/**\n\t * Emitted when the {@link IDeltaManager} completes connecting to the Fluid service.\n\t *\n\t * @remarks\n\t * This occurs once we've received the connect_document_success message from the server,\n\t * and happens prior to the client's join message (if there is a join message).\n\t *\n\t * Listener parameters:\n\t *\n\t * - `details`: Connection metadata.\n\t *\n\t * - `opsBehind`: An estimate of far behind the client is relative to the service in terms of ops.\n\t * Will not be specified if an estimate cannot be determined.\n\t */\n\t(event: \"connect\", listener: (details: IConnectionDetails, opsBehind?: number) => void);\n\n\t/**\n\t * Emitted when the {@link IDeltaManager} becomes disconnected from the Fluid service.\n\t *\n\t * @remarks Listener parameters:\n\t *\n\t * - `reason`: Describes the reason for which the delta manager was disconnected.\n\t * - `error` : error if any for the disconnect.\n\t */\n\t(event: \"disconnect\", listener: (reason: string, error?: IAnyDriverError) => void);\n\n\t/**\n\t * Emitted when read/write permissions change.\n\t *\n\t * @remarks Listener parameters:\n\t *\n\t * - `readonly`: Whether or not the delta manager is now read-only.\n\t */\n\t(\n\t\tevent: \"readonly\",\n\t\tlistener: (\n\t\t\treadonly: boolean,\n\t\t\treadonlyConnectionReason?: { reason: string; error?: IErrorBase },\n\t\t) => void,\n\t);\n}\n\n/**\n * Manages the transmission of ops between the runtime and storage.\n * @sealed\n * @legacy @beta\n */\nexport interface IDeltaManager<T, U>\n\textends IEventProvider<IDeltaManagerEvents>,\n\t\tIDeltaSender {\n\t/**\n\t * The queue of inbound delta signals\n\t */\n\treadonly inboundSignal: IDeltaQueue<ISignalMessage>;\n\n\t/**\n\t * The current minimum sequence number\n\t */\n\treadonly minimumSequenceNumber: number;\n\n\t/**\n\t * The last sequence number processed by the delta manager\n\t */\n\treadonly lastSequenceNumber: number;\n\n\t/**\n\t * The last message processed by the delta manager\n\t */\n\treadonly lastMessage: ISequencedDocumentMessage | undefined;\n\n\t/**\n\t * The latest sequence number the delta manager is aware of\n\t */\n\treadonly lastKnownSeqNumber: number;\n\n\t/**\n\t * The initial sequence number set when attaching the op handler\n\t */\n\treadonly initialSequenceNumber: number;\n\n\t/**\n\t * Tells if current connection has checkpoint information.\n\t * I.e. we know how far behind the client was at the time of establishing connection\n\t */\n\treadonly hasCheckpointSequenceNumber: boolean;\n\n\t/**\n\t * Details of client\n\t */\n\treadonly clientDetails: IClientDetails;\n\n\t/**\n\t * Protocol version being used to communicate with the service\n\t */\n\treadonly version: string;\n\n\t/**\n\t * Max message size allowed to the delta manager\n\t */\n\treadonly maxMessageSize: number;\n\n\t/**\n\t * Service configuration provided by the service.\n\t */\n\treadonly serviceConfiguration: IClientConfiguration | undefined;\n\n\t/**\n\t * Flag to indicate whether the client can write or not.\n\t */\n\treadonly active: boolean;\n\n\treadonly readOnlyInfo: ReadOnlyInfo;\n\n\t/**\n\t * Submit a signal to the service to be broadcast to other connected clients, but not persisted\n\t */\n\t// TODO: use `unknown` instead (API breaking)\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tsubmitSignal(content: any, targetClientId?: string): void;\n}\n\n/**\n * DeltaManager which is used internally by the Fluid layers and not exposed to the end users.\n * @internal\n */\nexport interface IDeltaManagerFull<T = ISequencedDocumentMessage, U = IDocumentMessage>\n\textends IDeltaManager<T, U> {\n\t/**\n\t * The queue of inbound delta messages\n\t */\n\treadonly inbound: IDeltaQueue<T>;\n\n\t/**\n\t * The queue of outbound delta messages\n\t */\n\treadonly outbound: IDeltaQueue<U[]>;\n}\n\n/**\n * Type guard to check if the given deltaManager is of type {@link @fluidframework/container-definitions#IDeltaManagerFull}.\n * @internal\n */\nexport function isIDeltaManagerFull(\n\tdeltaManager: IDeltaManager<ISequencedDocumentMessage, IDocumentMessage>,\n): deltaManager is IDeltaManagerFull {\n\treturn \"inbound\" in deltaManager && \"outbound\" in deltaManager;\n}\n\n/**\n * Events emitted by {@link IDeltaQueue}.\n * @sealed\n * @legacy @beta\n */\nexport interface IDeltaQueueEvents<T> extends IErrorEvent {\n\t/**\n\t * Emitted when a task is enqueued.\n\t *\n\t * @remarks Listener parameters:\n\t *\n\t * - `task`: The task being enqueued.\n\t */\n\t(event: \"push\", listener: (task: T) => void);\n\n\t/**\n\t * Emitted immediately after processing an enqueued task and removing it from the queue.\n\t *\n\t * @remarks\n\t *\n\t * Note: this event is not intended for general use.\n\t * Prefer to listen to events on the appropriate ultimate recipients of the ops, rather than listening to the\n\t * ops directly on the {@link IDeltaQueue}.\n\t *\n\t * Listener parameters:\n\t *\n\t * - `task`: The task that was processed.\n\t */\n\t(event: \"op\", listener: (task: T) => void);\n\n\t/**\n\t * Emitted when the queue of tasks to process is emptied.\n\t *\n\t * @remarks Listener parameters:\n\t *\n\t * - `count`: The number of events (`T`) processed before becoming idle.\n\t *\n\t * - `duration`: The amount of time it took to process elements (in milliseconds).\n\t *\n\t * @see {@link IDeltaQueue.idle}\n\t */\n\t(event: \"idle\", listener: (count: number, duration: number) => void);\n}\n\n/**\n * Queue of ops to be sent to or processed from storage\n * @sealed\n * @legacy @beta\n */\nexport interface IDeltaQueue<T> extends IEventProvider<IDeltaQueueEvents<T>>, IDisposable {\n\t/**\n\t * Flag indicating whether or not the queue was paused\n\t */\n\tpaused: boolean;\n\n\t/**\n\t * The number of messages remaining in the queue\n\t */\n\tlength: number;\n\n\t/**\n\t * Flag indicating whether or not the queue is idle.\n\t * I.e. there are no remaining messages to processes.\n\t */\n\tidle: boolean;\n\n\t/**\n\t * Pauses processing on the queue.\n\t *\n\t * @returns A promise which resolves when processing has been paused.\n\t */\n\tpause(): Promise<void>;\n\n\t/**\n\t * Resumes processing on the queue\n\t */\n\tresume(): void;\n\n\t/**\n\t * Peeks at the next message in the queue\n\t */\n\tpeek(): T | undefined;\n\n\t/**\n\t * Returns all the items in the queue as an array. Does not remove them from the queue.\n\t */\n\ttoArray(): T[];\n\n\t/**\n\t * returns number of ops processed and time it took to process these ops.\n\t * Zeros if queue did not process anything (had no messages, was paused or had hit an error before)\n\t */\n\twaitTillProcessingDone(): Promise<{ count: number; duration: number }>;\n}\n\n/**\n * @legacy @beta\n */\nexport type ReadOnlyInfo =\n\t| {\n\t\t\treadonly readonly: false | undefined;\n\t }\n\t| {\n\t\t\treadonly readonly: true;\n\n\t\t\t/**\n\t\t\t * Read-only because `forceReadOnly()` was called.\n\t\t\t */\n\t\t\treadonly forced: boolean;\n\n\t\t\t/**\n\t\t\t * Read-only because client does not have write permissions for document.\n\t\t\t */\n\t\t\treadonly permissions: boolean | undefined;\n\n\t\t\t/**\n\t\t\t * Read-only with no delta stream connection.\n\t\t\t */\n\t\t\treadonly storageOnly: boolean;\n\n\t\t\t/**\n\t\t\t * Extra info on why connection to delta stream is not possible.\n\t\t\t *\n\t\t\t * @remarks This info might be provided if {@link ReadOnlyInfo.storageOnly} is set to `true`.\n\t\t\t */\n\t\t\treadonly storageOnlyReason?: string;\n\t };\n"]}
package/dist/error.d.ts CHANGED
@@ -5,8 +5,7 @@
5
5
  import type { IErrorBase } from "@fluidframework/core-interfaces";
6
6
  /**
7
7
  * Different error types the ClientSession may report out to the Host.
8
- * @legacy
9
- * @alpha
8
+ * @legacy @beta
10
9
  */
11
10
  export declare const ContainerErrorTypes: {
12
11
  /**
@@ -22,14 +21,12 @@ export declare const ContainerErrorTypes: {
22
21
  };
23
22
  /**
24
23
  * {@inheritDoc (ContainerErrorTypes:variable)}
25
- * @legacy
26
- * @alpha
24
+ * @legacy @beta
27
25
  */
28
26
  export type ContainerErrorTypes = (typeof ContainerErrorTypes)[keyof typeof ContainerErrorTypes];
29
27
  /**
30
28
  * Represents warnings raised on container.
31
- * @legacy
32
- * @alpha
29
+ * @legacy @beta
33
30
  */
34
31
  export interface ContainerWarning extends IErrorBase {
35
32
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../src/error.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAGlE;;;;GAIG;AACH,eAAO,MAAM,mBAAmB;IAE/B;;;OAGG;;;;;;;CAEM,CAAC;AAEX;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAC9B,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,OAAO,mBAAmB,CAAC,CAAC;AAEhE;;;;GAIG;AACH,MAAM,WAAW,gBAAiB,SAAQ,UAAU;IACnD;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,uBAAuB,GAAG,UAAU,CAAC"}
1
+ {"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../src/error.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAGlE;;;GAGG;AACH,eAAO,MAAM,mBAAmB;IAE/B;;;OAGG;;;;;;;CAEM,CAAC;AAEX;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAC9B,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,OAAO,mBAAmB,CAAC,CAAC;AAEhE;;;GAGG;AACH,MAAM,WAAW,gBAAiB,SAAQ,UAAU;IACnD;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,uBAAuB,GAAG,UAAU,CAAC"}