@fluidframework/container-runtime 2.0.0-dev-rc.5.0.0.267932 → 2.0.0-dev-rc.5.0.0.268409

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.
@@ -1,4 +1,4 @@
1
- ## API Report File for "@fluidframework/container-runtime"
1
+ ## Alpha API Report File for "@fluidframework/container-runtime"
2
2
 
3
3
  > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
4
4
 
@@ -68,120 +68,9 @@ import { NamedFluidDataStoreRegistryEntries } from '@fluidframework/runtime-defi
68
68
  import { SummarizeInternalFn } from '@fluidframework/runtime-definitions/internal';
69
69
  import { TypedEventEmitter } from '@fluid-internal/client-utils';
70
70
 
71
- // @internal
72
- export const agentSchedulerId = "_scheduler";
73
-
74
- // @internal
75
- export const AllowInactiveRequestHeaderKey = "allowInactive";
76
-
77
71
  // @alpha
78
72
  export const AllowTombstoneRequestHeaderKey = "allowTombstone";
79
73
 
80
- // @internal
81
- export class ChannelCollection implements IFluidDataStoreChannel, IDisposable {
82
- constructor(baseSnapshot: ISnapshotTree | ISnapshot | undefined, parentContext: IFluidParentContext, baseLogger: ITelemetryBaseLogger, gcNodeUpdated: (props: IGCNodeUpdatedProps) => void, isDataStoreDeleted: (nodePath: string) => boolean, aliasMap: Map<string, string>, provideEntryPoint: (runtime: ChannelCollection) => Promise<FluidObject>);
83
- // (undocumented)
84
- get aliases(): ReadonlyMap<string, string>;
85
- // (undocumented)
86
- protected applyStashedChannelChannelOp(envelope: IEnvelope): Promise<unknown>;
87
- // (undocumented)
88
- applyStashedOp(content: unknown): Promise<unknown>;
89
- // (undocumented)
90
- readonly attachOpFiredForDataStore: Set<string>;
91
- // (undocumented)
92
- protected readonly baseSnapshot: ISnapshotTree | ISnapshot | undefined;
93
- // (undocumented)
94
- readonly containerLoadStats: {
95
- readonly containerLoadDataStoreCount: number;
96
- readonly referencedDataStoreCount: number;
97
- };
98
- // (undocumented)
99
- protected readonly contexts: DataStoreContexts;
100
- // (undocumented)
101
- protected createContext<T extends LocalFluidDataStoreContext>(id: string, pkg: Readonly<string[]>, contextCtor: new (props: ILocalDetachedFluidDataStoreContextProps) => T, createProps?: any, loadingGroupId?: string): T;
102
- // (undocumented)
103
- createDataStoreContext(pkg: Readonly<string[]>, props?: any, loadingGroupId?: string): IFluidDataStoreContextInternal;
104
- protected createDataStoreId(): string;
105
- // (undocumented)
106
- createDetachedDataStore(pkg: Readonly<string[]>, loadingGroupId?: string): IFluidDataStoreContextDetached;
107
- // (undocumented)
108
- deleteChild(dataStoreId: string): void;
109
- deleteSweepReadyNodes(sweepReadyDataStoreRoutes: readonly string[]): readonly string[];
110
- // (undocumented)
111
- readonly dispose: () => void;
112
- // (undocumented)
113
- get disposed(): boolean;
114
- // (undocumented)
115
- readonly entryPoint: IFluidHandleInternal<FluidObject>;
116
- getAttachSummary(telemetryContext?: ITelemetryContext): ISummaryTreeWithStats;
117
- getDataStoreIfAvailable(id: string, requestHeaderData: RuntimeHeaderData): Promise<IFluidDataStoreContextInternal | undefined>;
118
- getDataStorePackagePath(nodePath: string): Promise<readonly string[] | undefined>;
119
- getGCData(fullGC?: boolean): Promise<IGarbageCollectionData>;
120
- getGCNodeType(nodePath: string): GCNodeType | undefined;
121
- // (undocumented)
122
- internalId(maybeAlias: string): string;
123
- makeVisibleAndAttachGraph(): void;
124
- // (undocumented)
125
- protected readonly mc: MonitoringContext;
126
- // (undocumented)
127
- readonly parentContext: IFluidParentContext;
128
- // (undocumented)
129
- get pendingAliases(): Map<string, Promise<AliasResult>>;
130
- // (undocumented)
131
- process(message: ISequencedDocumentMessage, local: boolean, localMessageMetadata: unknown, addedOutboundReference?: (fromNodePath: string, toNodePath: string) => void): void;
132
- // (undocumented)
133
- processAliasMessageCore(internalId: string, alias: string): boolean;
134
- // (undocumented)
135
- protected processChannelOp(address: string, message: ISequencedDocumentMessage, local: boolean, localMessageMetadata: unknown): void;
136
- // (undocumented)
137
- processSignal(messageArg: IInboundSignalMessage, local: boolean): void;
138
- // (undocumented)
139
- request(request: IRequest): Promise<IResponse>;
140
- // (undocumented)
141
- reSubmit(type: string, content: any, localOpMetadata: unknown): void;
142
- // (undocumented)
143
- protected reSubmitChannelOp(type: string, content: any, localOpMetadata: unknown): void;
144
- // (undocumented)
145
- rollback(type: string, content: any, localOpMetadata: unknown): void;
146
- // (undocumented)
147
- setAttachState(attachState: AttachState.Attaching | AttachState.Attached): void;
148
- // (undocumented)
149
- setConnectionState(connected: boolean, clientId?: string): void;
150
- // (undocumented)
151
- get size(): number;
152
- // (undocumented)
153
- protected submitAttachChannelOp(localContext: LocalFluidDataStoreContext): void;
154
- // (undocumented)
155
- summarize(fullTree: boolean, trackState: boolean, telemetryContext?: ITelemetryContext): Promise<ISummaryTreeWithStats>;
156
- updateStateBeforeGC(): Promise<void>;
157
- updateTombstonedRoutes(tombstonedRoutes: readonly string[]): void;
158
- updateUsedRoutes(usedRoutes: readonly string[]): void;
159
- // (undocumented)
160
- waitIfPendingAlias(maybeAlias: string): Promise<AliasResult>;
161
- // (undocumented)
162
- protected wrapContextForInnerChannel(id: string): IFluidParentContext;
163
- }
164
-
165
- // @internal (undocumented)
166
- export class ChannelCollectionFactory<T extends ChannelCollection = ChannelCollection> implements IFluidDataStoreFactory {
167
- constructor(registryEntries: NamedFluidDataStoreRegistryEntries, provideEntryPoint: (runtime: IFluidDataStoreChannel) => Promise<FluidObject>, ctor: (...args: ConstructorParameters<typeof ChannelCollection>) => T);
168
- // (undocumented)
169
- get IFluidDataStoreFactory(): this;
170
- // (undocumented)
171
- IFluidDataStoreRegistry: IFluidDataStoreRegistry;
172
- // (undocumented)
173
- instantiateDataStore(context: IFluidDataStoreContext, _existing: boolean): Promise<IFluidDataStoreChannel>;
174
- // (undocumented)
175
- readonly type = "ChannelCollectionChannel";
176
- }
177
-
178
- // @internal
179
- export type CompatModeBehavior =
180
- /** Ignore the op. It won't be persisted if this client summarizes */
181
- "Ignore"
182
- /** Fail processing immediately. (The container will close) */
183
- | "FailToProcess";
184
-
185
74
  // @alpha
186
75
  export enum CompressionAlgorithms {
187
76
  // (undocumented)
@@ -358,55 +247,15 @@ export class ContainerRuntime extends TypedEventEmitter<IContainerRuntimeEvents
358
247
  uploadBlob(blob: ArrayBufferLike, signal?: AbortSignal): Promise<IFluidHandleInternal<ArrayBufferLike>>;
359
248
  }
360
249
 
361
- // @internal @deprecated
362
- export interface ContainerRuntimeMessage {
363
- compatDetails?: IContainerRuntimeMessageCompatDetails;
364
- contents: any;
365
- type: ContainerMessageType;
366
- }
367
-
368
250
  // @alpha
369
251
  export const currentDocumentVersionSchema = 1;
370
252
 
371
- // @internal (undocumented)
372
- export class DataStoreContexts implements Iterable<[string, FluidDataStoreContext]>, IDisposable {
373
- // (undocumented)
374
- [Symbol.iterator](): Iterator<[string, FluidDataStoreContext]>;
375
- constructor(baseLogger: ITelemetryBaseLogger);
376
- addBoundOrRemoted(context: FluidDataStoreContext): void;
377
- addUnbound(context: LocalFluidDataStoreContext): void;
378
- bind(id: string): void;
379
- // (undocumented)
380
- delete(id: string): boolean;
381
- // (undocumented)
382
- readonly dispose: () => void;
383
- // (undocumented)
384
- get disposed(): boolean;
385
- // (undocumented)
386
- get(id: string): FluidDataStoreContext | undefined;
387
- getBoundOrRemoted(id: string, wait: boolean): Promise<FluidDataStoreContext | undefined>;
388
- // (undocumented)
389
- getRecentlyDeletedContext(id: string): FluidDataStoreContext | undefined;
390
- getUnbound(id: string): LocalFluidDataStoreContext | undefined;
391
- // (undocumented)
392
- has(id: string): boolean;
393
- // (undocumented)
394
- isNotBound(id: string): boolean;
395
- // (undocumented)
396
- notBoundLength(): number;
397
- // (undocumented)
398
- get size(): number;
399
- }
400
-
401
253
  // @alpha (undocumented)
402
254
  export const DefaultSummaryConfiguration: ISummaryConfiguration;
403
255
 
404
256
  // @alpha
405
257
  export const DeletedResponseHeaderKey = "wasDeleted";
406
258
 
407
- // @internal
408
- export function detectOutboundReferences(address: string, contents: unknown, addedOutboundReference: (fromNodePath: string, toNodePath: string) => void): void;
409
-
410
259
  // @alpha (undocumented)
411
260
  export const disabledCompressionConfig: ICompressionRuntimeOptions;
412
261
 
@@ -437,154 +286,6 @@ export type EnqueueSummarizeResult = (ISummarizeResults & {
437
286
  readonly overridden?: undefined;
438
287
  };
439
288
 
440
- // @internal
441
- export abstract class FluidDataStoreContext extends TypedEventEmitter<IFluidDataStoreContextEvents> implements IFluidDataStoreContextInternal, IFluidParentContext, IDisposable {
442
- constructor(props: IFluidDataStoreContextProps, existing: boolean, isLocalDataStore: boolean, makeLocallyVisibleFn: () => void);
443
- // @deprecated (undocumented)
444
- addedGCOutboundReference(srcHandle: IFluidHandleInternal, outboundHandle: IFluidHandleInternal): void;
445
- addedGCOutboundRoute(fromPath: string, toPath: string): void;
446
- // (undocumented)
447
- applyStashedOp(contents: any): Promise<unknown>;
448
- // (undocumented)
449
- get attachState(): AttachState;
450
- // (undocumented)
451
- protected _attachState: AttachState;
452
- // (undocumented)
453
- get baseLogger(): ITelemetryBaseLogger;
454
- // (undocumented)
455
- get baseSnapshot(): ISnapshotTree | undefined;
456
- // (undocumented)
457
- protected _baseSnapshot: ISnapshotTree | undefined;
458
- // (undocumented)
459
- protected bindRuntime(channel: IFluidDataStoreChannel, existing: boolean): Promise<void>;
460
- // (undocumented)
461
- protected channel: IFluidDataStoreChannel | undefined;
462
- // (undocumented)
463
- protected channelP: Promise<IFluidDataStoreChannel> | undefined;
464
- // (undocumented)
465
- get clientDetails(): IClientDetails;
466
- // (undocumented)
467
- get clientId(): string | undefined;
468
- // (undocumented)
469
- protected completeBindingRuntime(channel: IFluidDataStoreChannel): void;
470
- // (undocumented)
471
- get connected(): boolean;
472
- // (undocumented)
473
- get containerRuntime(): IContainerRuntimeBase;
474
- delete(): void;
475
- // (undocumented)
476
- deleteChildSummarizerNode(id: string): void;
477
- protected deleted: boolean;
478
- // (undocumented)
479
- get deltaManager(): IDeltaManager<ISequencedDocumentMessage, IDocumentMessage>;
480
- // (undocumented)
481
- protected detachedRuntimeCreation: boolean;
482
- // (undocumented)
483
- dispose(): void;
484
- // (undocumented)
485
- get disposed(): boolean;
486
- // (undocumented)
487
- ensureNoDataModelChanges<T>(callback: () => T): T;
488
- // (undocumented)
489
- protected factoryFromPackagePath(): Promise<IFluidDataStoreFactory>;
490
- readonly gcThrowOnTombstoneUsage: boolean;
491
- // (undocumented)
492
- readonly gcTombstoneEnforcementAllowed: boolean;
493
- // (undocumented)
494
- getAbsoluteUrl(relativeUrl: string): Promise<string | undefined>;
495
- abstract getAttachData(includeGCData: boolean, telemetryContext?: ITelemetryContext): {
496
- attachSummary: ISummaryTreeWithStats;
497
- type: string;
498
- };
499
- // (undocumented)
500
- getAudience(): IAudience;
501
- // @deprecated (undocumented)
502
- getBaseGCDetails(): Promise<IGarbageCollectionDetailsBase>;
503
- // (undocumented)
504
- getCreateChildSummarizerNodeFn(id: string, createParam: CreateChildSummarizerNodeParam): (summarizeInternal: SummarizeInternalFn, getGCDataFn: (fullGC?: boolean) => Promise<IGarbageCollectionData>) => ISummarizerNodeWithGC;
505
- getGCData(fullGC?: boolean): Promise<IGarbageCollectionData>;
506
- // (undocumented)
507
- abstract getInitialSnapshotDetails(): Promise<ISnapshotDetails>;
508
- // (undocumented)
509
- getQuorum(): IQuorumClients;
510
- // (undocumented)
511
- readonly id: string;
512
- // (undocumented)
513
- get idCompressor(): IIdCompressor | undefined;
514
- protected identifyLocalChangeInSummarizer(eventName: string, type?: string): void;
515
- // (undocumented)
516
- get IFluidDataStoreRegistry(): IFluidDataStoreRegistry | undefined;
517
- // (undocumented)
518
- get IFluidHandleContext(): IFluidHandleContext;
519
- protected isInMemoryRoot(): boolean;
520
- // (undocumented)
521
- get isLoaded(): boolean;
522
- // (undocumented)
523
- readonly isLocalDataStore: boolean;
524
- isRoot(aliasedDataStores?: Set<string>): Promise<boolean>;
525
- // (undocumented)
526
- readonly loadingGroupId: string | undefined;
527
- makeLocallyVisible(): void;
528
- // (undocumented)
529
- protected readonly mc: MonitoringContext;
530
- // (undocumented)
531
- get options(): Record<string | number, any>;
532
- // (undocumented)
533
- get packagePath(): readonly string[];
534
- // (undocumented)
535
- protected pending: ISequencedDocumentMessage[] | undefined;
536
- // (undocumented)
537
- protected pkg?: readonly string[];
538
- // (undocumented)
539
- process(message: ISequencedDocumentMessage, local: boolean, localOpMetadata: unknown): void;
540
- // (undocumented)
541
- protected processPendingOps(channel: IFluidDataStoreChannel): void;
542
- // (undocumented)
543
- processSignal(message: IInboundSignalMessage, local: boolean): void;
544
- // (undocumented)
545
- realize(): Promise<IFluidDataStoreChannel>;
546
- // (undocumented)
547
- protected registry: IFluidDataStoreRegistry | undefined;
548
- // @deprecated (undocumented)
549
- request(request: IRequest): Promise<IResponse>;
550
- // (undocumented)
551
- reSubmit(type: string, contents: any, localOpMetadata: unknown): void;
552
- // (undocumented)
553
- rollback(type: string, contents: any, localOpMetadata: unknown): void;
554
- // (undocumented)
555
- readonly scope: FluidObject;
556
- // (undocumented)
557
- abstract setAttachState(attachState: AttachState.Attaching | AttachState.Attached): void;
558
- setChannelDirty(address: string): void;
559
- setConnectionState(connected: boolean, clientId?: string): void;
560
- // @deprecated (undocumented)
561
- setInMemoryRoot(): void;
562
- // (undocumented)
563
- setTombstone(tombstone: boolean): void;
564
- // (undocumented)
565
- readonly storage: IDocumentStorageService;
566
- // (undocumented)
567
- submitMessage(type: string, content: any, localOpMetadata: unknown): void;
568
- submitSignal(type: string, content: unknown, targetClientId?: string): void;
569
- summarize(fullTree?: boolean, trackState?: boolean, telemetryContext?: ITelemetryContext): Promise<ISummarizeResult>;
570
- // (undocumented)
571
- protected readonly summarizerNode: ISummarizerNodeWithGC;
572
- // (undocumented)
573
- get tombstoned(): boolean;
574
- updateUsedRoutes(usedRoutes: string[]): void;
575
- // (undocumented)
576
- uploadBlob(blob: ArrayBufferLike, signal?: AbortSignal): Promise<IFluidHandleInternal<ArrayBufferLike>>;
577
- }
578
-
579
- // @internal (undocumented)
580
- export class FluidDataStoreRegistry implements IFluidDataStoreRegistry {
581
- constructor(namedEntries: NamedFluidDataStoreRegistryEntries);
582
- // (undocumented)
583
- get(name: string): Promise<FluidDataStoreRegistryEntry | undefined>;
584
- // (undocumented)
585
- get IFluidDataStoreRegistry(): this;
586
- }
587
-
588
289
  // @alpha (undocumented)
589
290
  export type GCFeatureMatrix = {
590
291
  gcGeneration?: number;
@@ -661,20 +362,6 @@ export interface ICancellationToken<T> {
661
362
  readonly waitCancelled: Promise<T>;
662
363
  }
663
364
 
664
- // @internal (undocumented)
665
- export interface IChunkedOp {
666
- // (undocumented)
667
- chunkId: number;
668
- // (undocumented)
669
- contents: string;
670
- // (undocumented)
671
- originalCompression?: string;
672
- // (undocumented)
673
- originalMetadata?: Record<string, unknown>;
674
- // (undocumented)
675
- totalChunks: number;
676
- }
677
-
678
365
  // @alpha
679
366
  export interface IClientSummaryWatcher extends IDisposable {
680
367
  // (undocumented)
@@ -701,11 +388,6 @@ export interface IConnectableRuntime {
701
388
  once(event: "connected" | "disconnected" | "dispose", listener: () => void): this;
702
389
  }
703
390
 
704
- // @internal
705
- export interface IContainerRuntimeMessageCompatDetails {
706
- behavior: CompatModeBehavior;
707
- }
708
-
709
391
  // @alpha (undocumented)
710
392
  export interface IContainerRuntimeMetadata extends ICreateContainerMetadata, IGCMetadata {
711
393
  readonly disableIsolatedChannels?: true;
@@ -813,45 +495,6 @@ export interface IFluidDataStoreAttributes2 extends OmitAttributesVersions<IFlui
813
495
  readonly summaryFormatVersion: 2;
814
496
  }
815
497
 
816
- // @internal (undocumented)
817
- export interface IFluidDataStoreContextEvents extends IEvent {
818
- // (undocumented)
819
- (event: "attaching" | "attached", listener: () => void): any;
820
- }
821
-
822
- // @internal
823
- export interface IFluidDataStoreContextInternal extends IFluidDataStoreContext {
824
- // (undocumented)
825
- getAttachData(includeGCData: boolean, telemetryContext?: ITelemetryContext): {
826
- attachSummary: ISummaryTreeWithStats;
827
- type: string;
828
- };
829
- // (undocumented)
830
- getInitialSnapshotDetails(): Promise<ISnapshotDetails>;
831
- // (undocumented)
832
- isRoot(): Promise<boolean>;
833
- // (undocumented)
834
- realize(): Promise<IFluidDataStoreChannel>;
835
- }
836
-
837
- // @internal
838
- export interface IFluidDataStoreContextProps {
839
- // (undocumented)
840
- readonly createSummarizerNodeFn: CreateChildSummarizerNodeFn;
841
- // (undocumented)
842
- readonly id: string;
843
- // (undocumented)
844
- readonly loadingGroupId?: string;
845
- // (undocumented)
846
- readonly parentContext: IFluidParentContext;
847
- // (undocumented)
848
- readonly pkg?: Readonly<string[]>;
849
- // (undocumented)
850
- readonly scope: FluidObject;
851
- // (undocumented)
852
- readonly storage: IDocumentStorageService;
853
- }
854
-
855
498
  // @alpha
856
499
  export interface IGCMetadata {
857
500
  readonly gcFeature?: GCVersion;
@@ -862,19 +505,6 @@ export interface IGCMetadata {
862
505
  readonly tombstoneTimeoutMs?: number;
863
506
  }
864
507
 
865
- // @internal
866
- export interface IGCNodeUpdatedProps {
867
- headerData?: RuntimeHeaderData;
868
- node: {
869
- type: (typeof GCNodeType)["DataStore" | "Blob"];
870
- path: string;
871
- };
872
- packagePath?: readonly string[];
873
- reason: "Loaded" | "Changed";
874
- request?: IRequest;
875
- timestampMs?: number;
876
- }
877
-
878
508
  // @alpha (undocumented)
879
509
  export interface IGCRuntimeOptions {
880
510
  [key: string]: any;
@@ -907,24 +537,6 @@ export interface IGenerateSummaryTreeResult extends Omit<IBaseSummarizeResult, "
907
537
  readonly summaryTree: ISummaryTree;
908
538
  }
909
539
 
910
- // @internal
911
- export interface ILocalDetachedFluidDataStoreContextProps extends ILocalFluidDataStoreContextProps {
912
- // (undocumented)
913
- readonly channelToDataStoreFn: (channel: IFluidDataStoreChannel) => IDataStore;
914
- }
915
-
916
- // @internal
917
- export interface ILocalFluidDataStoreContextProps extends IFluidDataStoreContextProps {
918
- // @deprecated (undocumented)
919
- readonly createProps?: any;
920
- // (undocumented)
921
- readonly makeLocallyVisibleFn: () => void;
922
- // (undocumented)
923
- readonly pkg: Readonly<string[]> | undefined;
924
- // (undocumented)
925
- readonly snapshotTree: ISnapshotTree | undefined;
926
- }
927
-
928
540
  // @alpha
929
541
  export interface IMarkPhaseStats {
930
542
  attachmentBlobCount: number;
@@ -976,21 +588,6 @@ export interface ISerializedElection {
976
588
  readonly electionSequenceNumber: number;
977
589
  }
978
590
 
979
- // @internal (undocumented)
980
- export interface ISnapshotDetails {
981
- // (undocumented)
982
- isRootDataStore: boolean;
983
- // (undocumented)
984
- pkg: readonly string[];
985
- // (undocumented)
986
- sequenceNumber?: number;
987
- // (undocumented)
988
- snapshot?: ISnapshotTree;
989
- }
990
-
991
- // @internal @deprecated (undocumented)
992
- export function isRuntimeMessage(message: ISequencedDocumentMessage): boolean;
993
-
994
591
  // @alpha
995
592
  export interface ISubmitSummaryOpResult extends Omit<IUploadSummaryResult, "stage" | "error"> {
996
593
  readonly clientSequenceNumber: number;
@@ -1073,14 +670,6 @@ export interface ISummarizerRuntime extends IConnectableRuntime {
1073
670
  readonly summarizerClientId: string | undefined;
1074
671
  }
1075
672
 
1076
- // @internal (undocumented)
1077
- export interface ISummarizingWarning extends ContainerWarning {
1078
- // (undocumented)
1079
- readonly errorType: "summarizingError";
1080
- // (undocumented)
1081
- readonly logged: boolean;
1082
- }
1083
-
1084
673
  // @alpha
1085
674
  export interface ISummary {
1086
675
  // (undocumented)
@@ -1190,31 +779,6 @@ export interface IUploadSummaryResult extends Omit<IGenerateSummaryTreeResult, "
1190
779
  readonly uploadDuration: number;
1191
780
  }
1192
781
 
1193
- // @internal
1194
- export class LocalFluidDataStoreContext extends LocalFluidDataStoreContextBase {
1195
- constructor(props: ILocalFluidDataStoreContextProps);
1196
- }
1197
-
1198
- // @internal
1199
- export class LocalFluidDataStoreContextBase extends FluidDataStoreContext {
1200
- constructor(props: ILocalFluidDataStoreContextProps);
1201
- // @deprecated (undocumented)
1202
- readonly createProps?: any;
1203
- delete(): void;
1204
- // (undocumented)
1205
- getAttachData(includeGCData: boolean, telemetryContext?: ITelemetryContext): {
1206
- attachSummary: ISummaryTreeWithStats;
1207
- type: string;
1208
- };
1209
- // (undocumented)
1210
- getInitialSnapshotDetails(): Promise<ISnapshotDetails>;
1211
- // (undocumented)
1212
- setAttachState(attachState: AttachState.Attaching | AttachState.Attached): void;
1213
- }
1214
-
1215
- // @internal
1216
- export const neverCancelledSummaryToken: ISummaryCancellationToken;
1217
-
1218
782
  // @alpha @deprecated (undocumented)
1219
783
  export type OmitAttributesVersions<T> = Omit<T, "snapshotFormatVersion" | "summaryFormatVersion">;
1220
784
 
@@ -1227,29 +791,6 @@ export type OpActionEventName = MessageType.Summarize | MessageType.SummaryAck |
1227
791
  // @alpha @deprecated
1228
792
  export type ReadFluidDataStoreAttributes = IFluidDataStoreAttributes0 | IFluidDataStoreAttributes1 | IFluidDataStoreAttributes2;
1229
793
 
1230
- // @internal
1231
- export interface RecentlyAddedContainerRuntimeMessageDetails {
1232
- compatDetails: IContainerRuntimeMessageCompatDetails;
1233
- }
1234
-
1235
- // @internal
1236
- export interface RuntimeHeaderData {
1237
- // (undocumented)
1238
- allowInactive?: boolean;
1239
- // (undocumented)
1240
- allowTombstone?: boolean;
1241
- // (undocumented)
1242
- viaHandle?: boolean;
1243
- // (undocumented)
1244
- wait?: boolean;
1245
- }
1246
-
1247
- // @internal
1248
- export enum RuntimeHeaders {
1249
- viaHandle = "viaHandle",
1250
- wait = "wait"
1251
- }
1252
-
1253
794
  // @alpha
1254
795
  export interface SubmitSummaryFailureData {
1255
796
  // (undocumented)
@@ -1351,15 +892,6 @@ export type SummaryStage = SubmitSummaryResult["stage"] | "unknown";
1351
892
  // @alpha
1352
893
  export const TombstoneResponseHeaderKey = "isTombstoned";
1353
894
 
1354
- // @internal
1355
- export interface UnknownContainerRuntimeMessage extends Partial<RecentlyAddedContainerRuntimeMessageDetails> {
1356
- contents: unknown;
1357
- type: "__unknown_container_message_type__never_use_as_value__";
1358
- }
1359
-
1360
- // @internal
1361
- export function unpackRuntimeMessage(message: ISequencedDocumentMessage): boolean;
1362
-
1363
895
  // (No @packageDocumentation comment for this package)
1364
896
 
1365
897
  ```
@@ -0,0 +1,73 @@
1
+ ## Beta API Report File for "@fluidframework/container-runtime"
2
+
3
+ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
4
+
5
+ ```ts
6
+
7
+ import { AliasResult } from '@fluidframework/runtime-definitions/internal';
8
+ import { AttachState } from '@fluidframework/container-definitions';
9
+ import { ContainerWarning } from '@fluidframework/container-definitions/internal';
10
+ import { CreateChildSummarizerNodeFn } from '@fluidframework/runtime-definitions/internal';
11
+ import { CreateChildSummarizerNodeParam } from '@fluidframework/runtime-definitions/internal';
12
+ import { FluidDataStoreRegistryEntry } from '@fluidframework/runtime-definitions/internal';
13
+ import { FluidObject } from '@fluidframework/core-interfaces';
14
+ import { FlushMode } from '@fluidframework/runtime-definitions/internal';
15
+ import { IAudience } from '@fluidframework/container-definitions';
16
+ import { IClientDetails } from '@fluidframework/driver-definitions';
17
+ import { IContainerContext } from '@fluidframework/container-definitions/internal';
18
+ import { IContainerRuntime } from '@fluidframework/container-runtime-definitions/internal';
19
+ import { IContainerRuntimeBase } from '@fluidframework/runtime-definitions/internal';
20
+ import { IContainerRuntimeEvents } from '@fluidframework/container-runtime-definitions/internal';
21
+ import { ICriticalContainerError } from '@fluidframework/container-definitions';
22
+ import { IDataStore } from '@fluidframework/runtime-definitions/internal';
23
+ import { IDeltaManager } from '@fluidframework/container-definitions/internal';
24
+ import { IDisposable } from '@fluidframework/core-interfaces';
25
+ import { IDocumentMessage } from '@fluidframework/driver-definitions/internal';
26
+ import { IDocumentStorageService } from '@fluidframework/driver-definitions/internal';
27
+ import { IEnvelope } from '@fluidframework/runtime-definitions/internal';
28
+ import { IEvent } from '@fluidframework/core-interfaces';
29
+ import { IEventProvider } from '@fluidframework/core-interfaces';
30
+ import { IFluidDataStoreChannel } from '@fluidframework/runtime-definitions/internal';
31
+ import { IFluidDataStoreContext } from '@fluidframework/runtime-definitions/internal';
32
+ import { IFluidDataStoreContextDetached } from '@fluidframework/runtime-definitions/internal';
33
+ import { IFluidDataStoreFactory } from '@fluidframework/runtime-definitions/internal';
34
+ import { IFluidDataStoreRegistry } from '@fluidframework/runtime-definitions/internal';
35
+ import { IFluidHandle } from '@fluidframework/core-interfaces';
36
+ import { IFluidHandleContext } from '@fluidframework/core-interfaces/internal';
37
+ import { IFluidHandleInternal } from '@fluidframework/core-interfaces/internal';
38
+ import { IFluidParentContext } from '@fluidframework/runtime-definitions/internal';
39
+ import { IGarbageCollectionData } from '@fluidframework/runtime-definitions/internal';
40
+ import { IGarbageCollectionDetailsBase } from '@fluidframework/runtime-definitions/internal';
41
+ import { IGetPendingLocalStateProps } from '@fluidframework/container-definitions/internal';
42
+ import type { IIdCompressor } from '@fluidframework/id-compressor';
43
+ import type { IIdCompressorCore } from '@fluidframework/id-compressor/internal';
44
+ import { IInboundSignalMessage } from '@fluidframework/runtime-definitions/internal';
45
+ import { IProvideFluidHandleContext } from '@fluidframework/core-interfaces/internal';
46
+ import { IQuorumClients } from '@fluidframework/driver-definitions';
47
+ import { IRequest } from '@fluidframework/core-interfaces';
48
+ import { IResponse } from '@fluidframework/core-interfaces';
49
+ import { IRuntime } from '@fluidframework/container-definitions/internal';
50
+ import { ISequencedDocumentMessage } from '@fluidframework/driver-definitions';
51
+ import { ISignalMessage } from '@fluidframework/driver-definitions';
52
+ import type { ISnapshot } from '@fluidframework/driver-definitions/internal';
53
+ import { ISnapshotTree } from '@fluidframework/driver-definitions/internal';
54
+ import { ISummarizeResult } from '@fluidframework/runtime-definitions/internal';
55
+ import { ISummarizerNodeWithGC } from '@fluidframework/runtime-definitions/internal';
56
+ import { ISummaryAck } from '@fluidframework/driver-definitions/internal';
57
+ import { ISummaryContent } from '@fluidframework/driver-definitions/internal';
58
+ import { ISummaryNack } from '@fluidframework/driver-definitions/internal';
59
+ import { ISummaryStats } from '@fluidframework/runtime-definitions/internal';
60
+ import { ISummaryTree } from '@fluidframework/driver-definitions';
61
+ import { ISummaryTreeWithStats } from '@fluidframework/runtime-definitions/internal';
62
+ import { ITelemetryBaseLogger } from '@fluidframework/core-interfaces';
63
+ import { ITelemetryContext } from '@fluidframework/runtime-definitions/internal';
64
+ import { ITelemetryLoggerExt } from '@fluidframework/telemetry-utils/internal';
65
+ import { MessageType } from '@fluidframework/driver-definitions/internal';
66
+ import { MonitoringContext } from '@fluidframework/telemetry-utils/internal';
67
+ import { NamedFluidDataStoreRegistryEntries } from '@fluidframework/runtime-definitions/internal';
68
+ import { SummarizeInternalFn } from '@fluidframework/runtime-definitions/internal';
69
+ import { TypedEventEmitter } from '@fluid-internal/client-utils';
70
+
71
+ // (No @packageDocumentation comment for this package)
72
+
73
+ ```
@@ -0,0 +1,73 @@
1
+ ## Public API Report File for "@fluidframework/container-runtime"
2
+
3
+ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
4
+
5
+ ```ts
6
+
7
+ import { AliasResult } from '@fluidframework/runtime-definitions/internal';
8
+ import { AttachState } from '@fluidframework/container-definitions';
9
+ import { ContainerWarning } from '@fluidframework/container-definitions/internal';
10
+ import { CreateChildSummarizerNodeFn } from '@fluidframework/runtime-definitions/internal';
11
+ import { CreateChildSummarizerNodeParam } from '@fluidframework/runtime-definitions/internal';
12
+ import { FluidDataStoreRegistryEntry } from '@fluidframework/runtime-definitions/internal';
13
+ import { FluidObject } from '@fluidframework/core-interfaces';
14
+ import { FlushMode } from '@fluidframework/runtime-definitions/internal';
15
+ import { IAudience } from '@fluidframework/container-definitions';
16
+ import { IClientDetails } from '@fluidframework/driver-definitions';
17
+ import { IContainerContext } from '@fluidframework/container-definitions/internal';
18
+ import { IContainerRuntime } from '@fluidframework/container-runtime-definitions/internal';
19
+ import { IContainerRuntimeBase } from '@fluidframework/runtime-definitions/internal';
20
+ import { IContainerRuntimeEvents } from '@fluidframework/container-runtime-definitions/internal';
21
+ import { ICriticalContainerError } from '@fluidframework/container-definitions';
22
+ import { IDataStore } from '@fluidframework/runtime-definitions/internal';
23
+ import { IDeltaManager } from '@fluidframework/container-definitions/internal';
24
+ import { IDisposable } from '@fluidframework/core-interfaces';
25
+ import { IDocumentMessage } from '@fluidframework/driver-definitions/internal';
26
+ import { IDocumentStorageService } from '@fluidframework/driver-definitions/internal';
27
+ import { IEnvelope } from '@fluidframework/runtime-definitions/internal';
28
+ import { IEvent } from '@fluidframework/core-interfaces';
29
+ import { IEventProvider } from '@fluidframework/core-interfaces';
30
+ import { IFluidDataStoreChannel } from '@fluidframework/runtime-definitions/internal';
31
+ import { IFluidDataStoreContext } from '@fluidframework/runtime-definitions/internal';
32
+ import { IFluidDataStoreContextDetached } from '@fluidframework/runtime-definitions/internal';
33
+ import { IFluidDataStoreFactory } from '@fluidframework/runtime-definitions/internal';
34
+ import { IFluidDataStoreRegistry } from '@fluidframework/runtime-definitions/internal';
35
+ import { IFluidHandle } from '@fluidframework/core-interfaces';
36
+ import { IFluidHandleContext } from '@fluidframework/core-interfaces/internal';
37
+ import { IFluidHandleInternal } from '@fluidframework/core-interfaces/internal';
38
+ import { IFluidParentContext } from '@fluidframework/runtime-definitions/internal';
39
+ import { IGarbageCollectionData } from '@fluidframework/runtime-definitions/internal';
40
+ import { IGarbageCollectionDetailsBase } from '@fluidframework/runtime-definitions/internal';
41
+ import { IGetPendingLocalStateProps } from '@fluidframework/container-definitions/internal';
42
+ import type { IIdCompressor } from '@fluidframework/id-compressor';
43
+ import type { IIdCompressorCore } from '@fluidframework/id-compressor/internal';
44
+ import { IInboundSignalMessage } from '@fluidframework/runtime-definitions/internal';
45
+ import { IProvideFluidHandleContext } from '@fluidframework/core-interfaces/internal';
46
+ import { IQuorumClients } from '@fluidframework/driver-definitions';
47
+ import { IRequest } from '@fluidframework/core-interfaces';
48
+ import { IResponse } from '@fluidframework/core-interfaces';
49
+ import { IRuntime } from '@fluidframework/container-definitions/internal';
50
+ import { ISequencedDocumentMessage } from '@fluidframework/driver-definitions';
51
+ import { ISignalMessage } from '@fluidframework/driver-definitions';
52
+ import type { ISnapshot } from '@fluidframework/driver-definitions/internal';
53
+ import { ISnapshotTree } from '@fluidframework/driver-definitions/internal';
54
+ import { ISummarizeResult } from '@fluidframework/runtime-definitions/internal';
55
+ import { ISummarizerNodeWithGC } from '@fluidframework/runtime-definitions/internal';
56
+ import { ISummaryAck } from '@fluidframework/driver-definitions/internal';
57
+ import { ISummaryContent } from '@fluidframework/driver-definitions/internal';
58
+ import { ISummaryNack } from '@fluidframework/driver-definitions/internal';
59
+ import { ISummaryStats } from '@fluidframework/runtime-definitions/internal';
60
+ import { ISummaryTree } from '@fluidframework/driver-definitions';
61
+ import { ISummaryTreeWithStats } from '@fluidframework/runtime-definitions/internal';
62
+ import { ITelemetryBaseLogger } from '@fluidframework/core-interfaces';
63
+ import { ITelemetryContext } from '@fluidframework/runtime-definitions/internal';
64
+ import { ITelemetryLoggerExt } from '@fluidframework/telemetry-utils/internal';
65
+ import { MessageType } from '@fluidframework/driver-definitions/internal';
66
+ import { MonitoringContext } from '@fluidframework/telemetry-utils/internal';
67
+ import { NamedFluidDataStoreRegistryEntries } from '@fluidframework/runtime-definitions/internal';
68
+ import { SummarizeInternalFn } from '@fluidframework/runtime-definitions/internal';
69
+ import { TypedEventEmitter } from '@fluid-internal/client-utils';
70
+
71
+ // (No @packageDocumentation comment for this package)
72
+
73
+ ```
@@ -5,5 +5,5 @@
5
5
  * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY
6
6
  */
7
7
  export declare const pkgName = "@fluidframework/container-runtime";
8
- export declare const pkgVersion = "2.0.0-dev-rc.5.0.0.267932";
8
+ export declare const pkgVersion = "2.0.0-dev-rc.5.0.0.268409";
9
9
  //# sourceMappingURL=packageVersion.d.ts.map
@@ -8,5 +8,5 @@
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.pkgVersion = exports.pkgName = void 0;
10
10
  exports.pkgName = "@fluidframework/container-runtime";
11
- exports.pkgVersion = "2.0.0-dev-rc.5.0.0.267932";
11
+ exports.pkgVersion = "2.0.0-dev-rc.5.0.0.268409";
12
12
  //# sourceMappingURL=packageVersion.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"packageVersion.js","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEU,QAAA,OAAO,GAAG,mCAAmC,CAAC;AAC9C,QAAA,UAAU,GAAG,2BAA2B,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n *\n * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY\n */\n\nexport const pkgName = \"@fluidframework/container-runtime\";\nexport const pkgVersion = \"2.0.0-dev-rc.5.0.0.267932\";\n"]}
1
+ {"version":3,"file":"packageVersion.js","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEU,QAAA,OAAO,GAAG,mCAAmC,CAAC;AAC9C,QAAA,UAAU,GAAG,2BAA2B,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n *\n * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY\n */\n\nexport const pkgName = \"@fluidframework/container-runtime\";\nexport const pkgVersion = \"2.0.0-dev-rc.5.0.0.268409\";\n"]}
@@ -5,5 +5,5 @@
5
5
  * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY
6
6
  */
7
7
  export declare const pkgName = "@fluidframework/container-runtime";
8
- export declare const pkgVersion = "2.0.0-dev-rc.5.0.0.267932";
8
+ export declare const pkgVersion = "2.0.0-dev-rc.5.0.0.268409";
9
9
  //# sourceMappingURL=packageVersion.d.ts.map
@@ -5,5 +5,5 @@
5
5
  * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY
6
6
  */
7
7
  export const pkgName = "@fluidframework/container-runtime";
8
- export const pkgVersion = "2.0.0-dev-rc.5.0.0.267932";
8
+ export const pkgVersion = "2.0.0-dev-rc.5.0.0.268409";
9
9
  //# sourceMappingURL=packageVersion.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"packageVersion.js","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,OAAO,GAAG,mCAAmC,CAAC;AAC3D,MAAM,CAAC,MAAM,UAAU,GAAG,2BAA2B,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n *\n * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY\n */\n\nexport const pkgName = \"@fluidframework/container-runtime\";\nexport const pkgVersion = \"2.0.0-dev-rc.5.0.0.267932\";\n"]}
1
+ {"version":3,"file":"packageVersion.js","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,OAAO,GAAG,mCAAmC,CAAC;AAC3D,MAAM,CAAC,MAAM,UAAU,GAAG,2BAA2B,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n *\n * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY\n */\n\nexport const pkgName = \"@fluidframework/container-runtime\";\nexport const pkgVersion = \"2.0.0-dev-rc.5.0.0.268409\";\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluidframework/container-runtime",
3
- "version": "2.0.0-dev-rc.5.0.0.267932",
3
+ "version": "2.0.0-dev-rc.5.0.0.268409",
4
4
  "description": "Fluid container runtime",
5
5
  "homepage": "https://fluidframework.com",
6
6
  "repository": {
@@ -127,18 +127,18 @@
127
127
  "temp-directory": "nyc/.nyc_output"
128
128
  },
129
129
  "dependencies": {
130
- "@fluid-internal/client-utils": "2.0.0-dev-rc.5.0.0.267932",
131
- "@fluidframework/container-definitions": "2.0.0-dev-rc.5.0.0.267932",
132
- "@fluidframework/container-runtime-definitions": "2.0.0-dev-rc.5.0.0.267932",
133
- "@fluidframework/core-interfaces": "2.0.0-dev-rc.5.0.0.267932",
134
- "@fluidframework/core-utils": "2.0.0-dev-rc.5.0.0.267932",
135
- "@fluidframework/datastore": "2.0.0-dev-rc.5.0.0.267932",
136
- "@fluidframework/driver-definitions": "2.0.0-dev-rc.5.0.0.267932",
137
- "@fluidframework/driver-utils": "2.0.0-dev-rc.5.0.0.267932",
138
- "@fluidframework/id-compressor": "2.0.0-dev-rc.5.0.0.267932",
139
- "@fluidframework/runtime-definitions": "2.0.0-dev-rc.5.0.0.267932",
140
- "@fluidframework/runtime-utils": "2.0.0-dev-rc.5.0.0.267932",
141
- "@fluidframework/telemetry-utils": "2.0.0-dev-rc.5.0.0.267932",
130
+ "@fluid-internal/client-utils": "2.0.0-dev-rc.5.0.0.268409",
131
+ "@fluidframework/container-definitions": "2.0.0-dev-rc.5.0.0.268409",
132
+ "@fluidframework/container-runtime-definitions": "2.0.0-dev-rc.5.0.0.268409",
133
+ "@fluidframework/core-interfaces": "2.0.0-dev-rc.5.0.0.268409",
134
+ "@fluidframework/core-utils": "2.0.0-dev-rc.5.0.0.268409",
135
+ "@fluidframework/datastore": "2.0.0-dev-rc.5.0.0.268409",
136
+ "@fluidframework/driver-definitions": "2.0.0-dev-rc.5.0.0.268409",
137
+ "@fluidframework/driver-utils": "2.0.0-dev-rc.5.0.0.268409",
138
+ "@fluidframework/id-compressor": "2.0.0-dev-rc.5.0.0.268409",
139
+ "@fluidframework/runtime-definitions": "2.0.0-dev-rc.5.0.0.268409",
140
+ "@fluidframework/runtime-utils": "2.0.0-dev-rc.5.0.0.268409",
141
+ "@fluidframework/telemetry-utils": "2.0.0-dev-rc.5.0.0.268409",
142
142
  "@tylerbu/sorted-btree-es6": "^1.8.0",
143
143
  "double-ended-queue": "^2.1.0-0",
144
144
  "lz4js": "^0.2.0",
@@ -146,17 +146,17 @@
146
146
  },
147
147
  "devDependencies": {
148
148
  "@arethetypeswrong/cli": "^0.15.2",
149
- "@biomejs/biome": "^1.6.2",
150
- "@fluid-internal/mocha-test-setup": "2.0.0-dev-rc.5.0.0.267932",
151
- "@fluid-private/stochastic-test-utils": "2.0.0-dev-rc.5.0.0.267932",
152
- "@fluid-private/test-pairwise-generator": "2.0.0-dev-rc.5.0.0.267932",
149
+ "@biomejs/biome": "^1.7.3",
150
+ "@fluid-internal/mocha-test-setup": "2.0.0-dev-rc.5.0.0.268409",
151
+ "@fluid-private/stochastic-test-utils": "2.0.0-dev-rc.5.0.0.268409",
152
+ "@fluid-private/test-pairwise-generator": "2.0.0-dev-rc.5.0.0.268409",
153
153
  "@fluid-tools/benchmark": "^0.48.0",
154
154
  "@fluid-tools/build-cli": "^0.39.0-264124",
155
155
  "@fluidframework/build-common": "^2.0.3",
156
156
  "@fluidframework/build-tools": "^0.39.0-264124",
157
157
  "@fluidframework/container-runtime-previous": "npm:@fluidframework/container-runtime@2.0.0-rc.4.0.0",
158
- "@fluidframework/eslint-config-fluid": "^5.1.0",
159
- "@fluidframework/test-runtime-utils": "2.0.0-dev-rc.5.0.0.267932",
158
+ "@fluidframework/eslint-config-fluid": "^5.3.0",
159
+ "@fluidframework/test-runtime-utils": "2.0.0-dev-rc.5.0.0.268409",
160
160
  "@microsoft/api-extractor": "^7.45.1",
161
161
  "@types/double-ended-queue": "^2.1.0",
162
162
  "@types/mocha": "^9.1.1",
@@ -6,4 +6,4 @@
6
6
  */
7
7
 
8
8
  export const pkgName = "@fluidframework/container-runtime";
9
- export const pkgVersion = "2.0.0-dev-rc.5.0.0.267932";
9
+ export const pkgVersion = "2.0.0-dev-rc.5.0.0.268409";
Binary file
@@ -0,0 +1,160 @@
1
+ # Summary and snapshot formats
2
+
3
+ ## Table of contents
4
+
5
+ - [Introduction](#introduction)
6
+ - [Summary Format](#summary-format)
7
+ - [Snapshot Format](#snapshot-format)
8
+ - [Summary / Snapshot Tree Visualization](#summary--snapshot-tree-visualization)
9
+ - [Protocol Tree](#protocol-tree)
10
+ - [App Tree](#app-tree)
11
+ - [Summary Tree distinction](#summary-tree-distinction)
12
+
13
+ ## Introduction
14
+
15
+ This document describes the format of summaries and snapshots. For learning the differences between summaries and snapshots, see the FAQ section [here](https://fluidframework.com/docs/faq/#whats-the-difference-between-a-summary-and-a-snapshot).
16
+
17
+ The goal of this document is to describe the fundamental structure of a summary / snapshot tree as produced by the runtime, to explain the various node types within the tree along with their respective data, and to show the distinctions between a summary tree and a snapshot tree.
18
+
19
+ ## Summary Format
20
+
21
+ Summary is uploaded to storage and is the container's state at a point in time. A summary is represented by an `ISummaryTree` which is defined in [this file](../../../../../common/lib/protocol-definitions/src/summary.ts) and has the following basic structure (some optional properties are removed for simplicity):
22
+
23
+ ```typescript
24
+ export interface ISummaryTree {
25
+ type: SummaryType.Tree;
26
+ tree: { [path: string]: SummaryObject };
27
+ }
28
+ export type SummaryType =
29
+ | SummaryType.Attachment
30
+ | SummaryType.Blob
31
+ | SummaryType.Handle
32
+ | SummaryType.Tree;
33
+ export type SummaryObject = ISummaryTree | ISummaryBlob | ISummaryHandle | ISummaryAttachment;
34
+ ```
35
+
36
+ Each tree node in a summary tree is represented by the `ISummaryTree` interface above and contains the following:
37
+
38
+ - `type` - `SummaryType.Tree`
39
+ - `tree` - A list of children of the tree node. Each child node has the following format:
40
+
41
+ `<tree name>`: `<SummaryObject>` where `tree name` is the name given to the child node and `SummaryObject` is one of the following:
42
+
43
+ - `ISummaryTree` - A subtree which has the same structure as this node. For example, container runtime will have subtrees for its data store which in turn will have subtrees for its DDSes.
44
+
45
+ - `ISummaryBlob` - A blob that has some content for this node. For example, a DDS's node has a ".attributes" blob for its attributes such as type, snapshot versions, etc. It may have additional blobs for the actual user content in the DDS.
46
+
47
+ ```typescript
48
+ export interface ISummaryBlob {
49
+ type: SummaryType.Blob;
50
+ content: string | Uint8Array;
51
+ }
52
+ ```
53
+
54
+ - `ISummaryAttachment` - This is used for attachment blobs that are uploaded to and downloaded from storage directly. The contents of these blobs are not part of the summary. Storage returns an ID after the attachment has been uploaded and this ID is included in the summary attachment. For example, a DDS can upload some of its large content directly to storage and include its ID in the summary.
55
+
56
+ ```typescript
57
+ export interface ISummaryAttachment {
58
+ type: SummaryType.Attachment;
59
+ id: string;
60
+ }
61
+ ```
62
+
63
+ - `ISummaryHandle` - A summary handle is used for incremental summaries. If a node hasn't changed since the last successful summary, instead of sending it's entire contents, it can send a "handle" which is a path to its summary tree object in the last summary. For example, if a data store or DDS did not change since the last summary, the runtime will use a handle for the entire data store instead of re-sending the entire subtree. The same concept applies for a summary blob or a summary attachment and the "handleType" should be set according to the type of the node. An example of "handle" that a DDS sends would be something like: "/_dataStoreId_/_ddsId_".
64
+
65
+ ```typescript
66
+ export interface ISummaryHandle {
67
+ type: SummaryType.Handle;
68
+ handleType: SummaryTypeNoHandle;
69
+ handle: string;
70
+ }
71
+ export type SummaryTypeNoHandle =
72
+ | SummaryType.Tree
73
+ | SummaryType.Blob
74
+ | SummaryType.Attachment;
75
+ ```
76
+
77
+ ## Snapshot Format
78
+
79
+ Snapshot is downloaded from the storage (typically on document load) and is the container's state at a point in time. A snapshot is represented by an `ISnapshotTree` which is defined in [this file](../../../../../common/lib/protocol-definitions/src/storage.ts) and has the following basic structure (some optional properties are removed for simplicity):
80
+
81
+ ```typescript
82
+ export interface ISnapshotTree {
83
+ blobs: { [path: string]: string };
84
+ trees: { [path: string]: ISnapshotTree };
85
+ }
86
+ ```
87
+
88
+ Each node in a snapshot tree is represented by the above interface and contains the following:
89
+
90
+ - `blobs` - A list of blobs that have the contents for the node. For example, a DDS's node has a ".attributes" blob for its attributes such as type, snapshot versions, etc. It may have additional blobs for the actual user content in the DDS. Each blob in the list has the following format:
91
+
92
+ `<blob name>`: `<unique blob id>` where `blob name` is the name given to the blob by the node and `unique blob id` is the id that uniquely represents the blob's content in storage.
93
+
94
+ When a node needs the content of a blob, it fetches it from storage by calling `readBlob` and providing the `unique blob id`.
95
+
96
+ > Note: Summary attachments (described in summary format) are also part of this list.
97
+
98
+ - `trees` - A list of subtrees of the node. For example, container runtime will have subtrees for its data store which in turn will have subtrees for its DDSes. Each subtree in the list has the following format:
99
+
100
+ `<tree name>`: `<snapshot tree>` where `tree name` is the name given to the subtree by the node and `snapshot tree` is its content in `ISnapshotTree` format.
101
+
102
+ ## Summary / Snapshot Tree Visualization
103
+
104
+ This section shows what a typical summary or snapshot tree in a container looks like. Some key things to note:
105
+
106
+ - The diagrams in this section show some examples of existing blobs / trees that are added at each node and doesn't show an exhaustive list.
107
+ - The blue boxes represent tree nodes.
108
+ - The green boxes represent blobs.
109
+ - The purple boxes represent attachments.
110
+ - The orange boxes represent other nodes - either existing nodes that are not shown or new nodes that may be added in the future. A node can be a tree, blob or attachment.
111
+
112
+ A typical tree uploaded to or downloaded from storage looks like the following:
113
+ ![ProtocolAndAppTree](./images/protocolAndAppTree.png)
114
+
115
+ `Protocol tree` - This is the tree named `.protocol` and contains protocol level information for the container. These are used by the container to initialize.
116
+
117
+ `App tree` - This is the tree named `.app` and contains the container's state and data. The subtree under .app is what is generated by the container runtime.
118
+
119
+ ### Protocol tree
120
+
121
+ The contents of the protocol tree are:
122
+
123
+ - `attributes blob` - Attributes such as the sequence number the summary was taken at.
124
+ - `quorum members blob` - The members in the quorum at the time summary was taken.
125
+ - `quorum proposals blob` - The quorum proposals at the time summary was taken.
126
+ - `quorum values blob` - The quorum values at the time summary was taken.
127
+ - Other blobs and trees may be added at this level as needed.
128
+
129
+ ### App tree
130
+
131
+ This is what the ".app" tree looks like which is generated by the container runtime during summary upload. The same is passed to container runtime during snapshot download:
132
+ ![appTree](./images/appTree.png)
133
+
134
+ - `Container`: The root represents the container or container runtime node. Its contents are described below:
135
+
136
+ - `.metadata blob` - The container level metadata such as creation time, create version, etc.
137
+ - `.aliases blob` - The list of aliases for data stores and the corresponding internal id.
138
+ - `.idCompressor blob` - The data for the ID compressor.
139
+ - `.blobs tree` - The snapshot for the attachment blobs added by the blob manager. The individual attachment blobs are present as summary attachments (`ISummaryAttachment`).
140
+ - `gc tree` - The snapshot for garbage collection added by the garbage collector.
141
+ - `.channels tree` - The subtrees for all the data stores.
142
+ - There may be other blobs and trees added at this level as needed.
143
+
144
+ - `Data store`: Data store snapshot trees are under ".channels" subtree of container runtime's tree. Its contents are described below:
145
+
146
+ - `.component blob` - The attributes for a data store such as the package name, snapshot version, etc.
147
+ - `.channels tree` - The subtrees for all its DDSs.
148
+ - There may be other blobs and trees added at this level as needed.
149
+
150
+ - `DDS`: DDS snapshot trees are under ".channels" subtree of its parent data store's tree. Its contents are described below:
151
+ - `.attributes blob` - The attributes for a DDS such as the type, snapshot version, etc.
152
+ - `.header blob` - Added by some DDSs and may contains its data. Note that all DDSs may not add this.
153
+ - A DDS may add other blobs and / or trees to represent its data. Basically, a DDS can write its data in any form
154
+
155
+ ### Summary tree distinction
156
+
157
+ In the visualization above, a summary tree differs from a snapshot tree in the following way:
158
+ A summary tree supports incremental summaries via summary handles. Any node in the tree that has not changed since the previous successful summary can send a summary handle (`ISummaryHandle`) instead of sending its entire contents in a full summary. The following diagram shows this with an example where certain parts of the summary tree use a summary handle. It is a zoomed in version of the same app tree as above where nodes where summary handles are marked in red:
159
+
160
+ ![summaryTree](./images/summaryTree.png)