@fluidframework/container-loader 0.53.0 → 0.54.2

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 (57) hide show
  1. package/dist/connectionManager.d.ts +153 -0
  2. package/dist/connectionManager.d.ts.map +1 -0
  3. package/dist/connectionManager.js +664 -0
  4. package/dist/connectionManager.js.map +1 -0
  5. package/dist/container.d.ts +2 -1
  6. package/dist/container.d.ts.map +1 -1
  7. package/dist/container.js +25 -28
  8. package/dist/container.js.map +1 -1
  9. package/dist/contracts.d.ts +112 -0
  10. package/dist/contracts.d.ts.map +1 -0
  11. package/dist/contracts.js +14 -0
  12. package/dist/contracts.js.map +1 -0
  13. package/dist/deltaManager.d.ts +26 -135
  14. package/dist/deltaManager.d.ts.map +1 -1
  15. package/dist/deltaManager.js +142 -767
  16. package/dist/deltaManager.js.map +1 -1
  17. package/dist/loader.d.ts +9 -4
  18. package/dist/loader.d.ts.map +1 -1
  19. package/dist/loader.js +5 -4
  20. package/dist/loader.js.map +1 -1
  21. package/dist/packageVersion.d.ts +1 -1
  22. package/dist/packageVersion.js +1 -1
  23. package/dist/packageVersion.js.map +1 -1
  24. package/dist/protocolTreeDocumentStorageService.d.ts +2 -2
  25. package/dist/protocolTreeDocumentStorageService.d.ts.map +1 -1
  26. package/lib/connectionManager.d.ts +153 -0
  27. package/lib/connectionManager.d.ts.map +1 -0
  28. package/lib/connectionManager.js +660 -0
  29. package/lib/connectionManager.js.map +1 -0
  30. package/lib/container.d.ts +2 -1
  31. package/lib/container.d.ts.map +1 -1
  32. package/lib/container.js +25 -28
  33. package/lib/container.js.map +1 -1
  34. package/lib/contracts.d.ts +112 -0
  35. package/lib/contracts.d.ts.map +1 -0
  36. package/lib/contracts.js +11 -0
  37. package/lib/contracts.js.map +1 -0
  38. package/lib/deltaManager.d.ts +26 -135
  39. package/lib/deltaManager.d.ts.map +1 -1
  40. package/lib/deltaManager.js +146 -771
  41. package/lib/deltaManager.js.map +1 -1
  42. package/lib/loader.d.ts +9 -4
  43. package/lib/loader.d.ts.map +1 -1
  44. package/lib/loader.js +6 -5
  45. package/lib/loader.js.map +1 -1
  46. package/lib/packageVersion.d.ts +1 -1
  47. package/lib/packageVersion.js +1 -1
  48. package/lib/packageVersion.js.map +1 -1
  49. package/lib/protocolTreeDocumentStorageService.d.ts +2 -2
  50. package/lib/protocolTreeDocumentStorageService.d.ts.map +1 -1
  51. package/package.json +8 -8
  52. package/src/connectionManager.ts +892 -0
  53. package/src/container.ts +39 -39
  54. package/src/contracts.ts +156 -0
  55. package/src/deltaManager.ts +181 -978
  56. package/src/loader.ts +31 -9
  57. package/src/packageVersion.ts +1 -1
package/src/loader.ts CHANGED
@@ -25,7 +25,16 @@ import {
25
25
  IProxyLoaderFactory,
26
26
  LoaderHeader,
27
27
  } from "@fluidframework/container-definitions";
28
- import { ChildLogger, DebugLogger, PerformanceEvent } from "@fluidframework/telemetry-utils";
28
+ import {
29
+ ChildLogger,
30
+ DebugLogger,
31
+ IConfigProviderBase,
32
+ loggerToMonitoringContext,
33
+ mixinMonitoringContext,
34
+ MonitoringContext,
35
+ PerformanceEvent,
36
+ sessionStorageConfigProvider,
37
+ } from "@fluidframework/telemetry-utils";
29
38
  import {
30
39
  IDocumentServiceFactory,
31
40
  IDocumentStorageService,
@@ -207,6 +216,11 @@ export interface ILoaderProps {
207
216
  * Blobs storage for detached containers.
208
217
  */
209
218
  readonly detachedBlobStorage?: IDetachedBlobStorage;
219
+
220
+ /**
221
+ * The configuration provider which may be used to control features.
222
+ */
223
+ readonly configProvider?: IConfigProviderBase;
210
224
  }
211
225
 
212
226
  /**
@@ -278,7 +292,7 @@ export type IDetachedBlobStorage = Pick<IDocumentStorageService, "createBlob" |
278
292
  export class Loader implements IHostLoader {
279
293
  private readonly containers = new Map<string, Promise<Container>>();
280
294
  public readonly services: ILoaderServices;
281
- private readonly logger: ITelemetryLogger;
295
+ private readonly mc: MonitoringContext;
282
296
 
283
297
  constructor(loaderProps: ILoaderProps) {
284
298
  const scope = { ...loaderProps.scope as FluidObject<ILoader> };
@@ -289,22 +303,30 @@ export class Loader implements IHostLoader {
289
303
  loaderId: uuid(),
290
304
  loaderVersion: pkgVersion,
291
305
  };
306
+
307
+ const subMc = mixinMonitoringContext(
308
+ DebugLogger.mixinDebugLogger("fluid:telemetry", loaderProps.logger, { all: telemetryProps }),
309
+ sessionStorageConfigProvider.value,
310
+ loaderProps.configProvider,
311
+ );
312
+
292
313
  this.services = {
293
314
  urlResolver: createCachedResolver(MultiUrlResolver.create(loaderProps.urlResolver)),
294
315
  documentServiceFactory: MultiDocumentServiceFactory.create(loaderProps.documentServiceFactory),
295
316
  codeLoader: loaderProps.codeLoader,
296
317
  options: loaderProps.options ?? {},
297
318
  scope,
298
- subLogger: DebugLogger.mixinDebugLogger("fluid:telemetry", loaderProps.logger, { all: telemetryProps }),
319
+ subLogger: subMc.logger,
299
320
  proxyLoaderFactories: loaderProps.proxyLoaderFactories ?? new Map<string, IProxyLoaderFactory>(),
300
321
  detachedBlobStorage: loaderProps.detachedBlobStorage,
301
322
  };
302
- this.logger = ChildLogger.create(this.services.subLogger, "Loader");
323
+ this.mc = loggerToMonitoringContext(
324
+ ChildLogger.create(this.services.subLogger, "Loader"));
303
325
  }
304
326
 
305
327
  public get IFluidRouter(): IFluidRouter { return this; }
306
328
 
307
- public async createDetachedContainer(codeDetails: IFluidCodeDetails): Promise<Container> {
329
+ public async createDetachedContainer(codeDetails: IFluidCodeDetails): Promise<IContainer> {
308
330
  const container = await Container.createDetached(
309
331
  this,
310
332
  codeDetails,
@@ -323,13 +345,13 @@ export class Loader implements IHostLoader {
323
345
  return container;
324
346
  }
325
347
 
326
- public async rehydrateDetachedContainerFromSnapshot(snapshot: string): Promise<Container> {
348
+ public async rehydrateDetachedContainerFromSnapshot(snapshot: string): Promise<IContainer> {
327
349
  return Container.rehydrateDetachedFromSnapshot(this, snapshot);
328
350
  }
329
351
 
330
- public async resolve(request: IRequest, pendingLocalState?: string): Promise<Container> {
352
+ public async resolve(request: IRequest, pendingLocalState?: string): Promise<IContainer> {
331
353
  const eventName = pendingLocalState === undefined ? "Resolve" : "ResolveWithPendingState";
332
- return PerformanceEvent.timedExecAsync(this.logger, { eventName }, async () => {
354
+ return PerformanceEvent.timedExecAsync(this.mc.logger, { eventName }, async () => {
333
355
  const resolved = await this.resolveCore(
334
356
  request,
335
357
  pendingLocalState !== undefined ? JSON.parse(pendingLocalState) : undefined,
@@ -339,7 +361,7 @@ export class Loader implements IHostLoader {
339
361
  }
340
362
 
341
363
  public async request(request: IRequest): Promise<IResponse> {
342
- return PerformanceEvent.timedExecAsync(this.logger, { eventName: "Request" }, async () => {
364
+ return PerformanceEvent.timedExecAsync(this.mc.logger, { eventName: "Request" }, async () => {
343
365
  const resolved = await this.resolveCore(request);
344
366
  return resolved.container.request({
345
367
  ...request,
@@ -6,4 +6,4 @@
6
6
  */
7
7
 
8
8
  export const pkgName = "@fluidframework/container-loader";
9
- export const pkgVersion = "0.53.0";
9
+ export const pkgVersion = "0.54.2";