@fluidframework/container-definitions 2.0.0-internal.2.1.1 → 2.0.0-internal.2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/loader.d.ts CHANGED
@@ -34,7 +34,7 @@ export interface IFluidModuleWithDetails {
34
34
  */
35
35
  export interface ICodeDetailsLoader extends Partial<IProvideFluidCodeDetailsComparer> {
36
36
  /**
37
- * Load the code module (package) that is capable to interact with the document.
37
+ * Load the code module (package) that can interact with the document.
38
38
  *
39
39
  * @param source - Code proposal that articulates the current schema the document is written in.
40
40
  * @returns - Code module entry point along with the code details associated with it.
@@ -42,7 +42,7 @@ export interface ICodeDetailsLoader extends Partial<IProvideFluidCodeDetailsComp
42
42
  load(source: IFluidCodeDetails): Promise<IFluidModuleWithDetails>;
43
43
  }
44
44
  /**
45
- * The interface returned from a IFluidCodeResolver which represents IFluidCodeDetails
45
+ * The interface returned from a IFluidCodeResolver which represents IFluidCodeDetails
46
46
  * that have been resolved and are ready to load
47
47
  */
48
48
  export interface IResolvedFluidCodeDetails extends IFluidCodeDetails {
@@ -78,22 +78,134 @@ export interface ICodeAllowList {
78
78
  testSource(source: IResolvedFluidCodeDetails): Promise<boolean>;
79
79
  }
80
80
  /**
81
- * Events emitted by the Container "upwards" to the Loader and Host
81
+ * Events emitted by the {@link IContainer} "upwards" to the Loader and Host.
82
82
  */
83
83
  export interface IContainerEvents extends IEvent {
84
+ /**
85
+ * Emitted when the readonly state of the container changes.
86
+ *
87
+ * @remarks Listener parameters:
88
+ *
89
+ * - `readonly`: Whether or not the container is now in a readonly state.
90
+ *
91
+ * @see {@link IContainer.readOnlyInfo}
92
+ */
84
93
  (event: "readonly", listener: (readonly: boolean) => void): void;
94
+ /**
95
+ * Emitted when the {@link IContainer} completes connecting to the Fluid service.
96
+ *
97
+ * @remarks Reflects connection state changes against the (delta) service acknowledging ops/edits.
98
+ *
99
+ * @see
100
+ *
101
+ * - {@link IContainer.connectionState}
102
+ *
103
+ * - {@link IContainer.connect}
104
+ */
85
105
  (event: "connected", listener: (clientId: string) => void): any;
106
+ /**
107
+ * Fires when new container code details have been proposed, prior to acceptance.
108
+ *
109
+ * @remarks Listener parameters:
110
+ *
111
+ * - `codeDetails`: The code details being proposed.
112
+ *
113
+ * - `proposal`: NOT RECOMMENDED FOR USE.
114
+ *
115
+ * @see {@link IContainer.proposeCodeDetails}
116
+ */
86
117
  (event: "codeDetailsProposed", listener: (codeDetails: IFluidCodeDetails, proposal: ISequencedProposal) => void): any;
118
+ /**
119
+ * @deprecated No replacement API recommended.
120
+ */
87
121
  (event: "contextChanged", listener: (codeDetails: IFluidCodeDetails) => void): any;
88
- (event: "disconnected" | "attached", listener: () => void): any;
122
+ /**
123
+ * Emitted when the {@link IContainer} becomes disconnected from the Fluid service.
124
+ *
125
+ * @remarks Reflects connection state changes against the (delta) service acknowledging ops/edits.
126
+ *
127
+ * @see
128
+ *
129
+ * - {@link IContainer.connectionState}
130
+ *
131
+ * - {@link IContainer.disconnect}
132
+ */
133
+ (event: "disconnected", listener: () => void): any;
134
+ /**
135
+ * Emitted when a {@link AttachState.Detached | detached} container is
136
+ * {@link AttachState.Attached | attached} to the Fluid service.
137
+ *
138
+ * @see
139
+ *
140
+ * - {@link IContainer.attachState}
141
+ *
142
+ * - {@link IContainer.attach}
143
+ */
144
+ (event: "attached", listener: () => void): any;
145
+ /**
146
+ * Emitted when the {@link IContainer} is closed, which permanently disables it.
147
+ *
148
+ * @remarks Listener parameters:
149
+ *
150
+ * - `error`: If the container was closed due to error, this will contain details about the error that caused it.
151
+ *
152
+ * @see {@link IContainer.close}
153
+ */
89
154
  (event: "closed", listener: (error?: ICriticalContainerError) => void): any;
155
+ /**
156
+ * Emitted when the container encounters a state which may lead to errors, which may be actionable by the consumer.
157
+ *
158
+ * @remarks
159
+ *
160
+ * Note: this event is not intended for general use.
161
+ * The longer-term intention is to surface warnings more directly on the APIs that produce them.
162
+ * For now, use of this should be avoided when possible.
163
+ *
164
+ * Listener parameters:
165
+ *
166
+ * - `error`: The warning describing the encountered state.
167
+ */
90
168
  (event: "warning", listener: (error: ContainerWarning) => void): any;
169
+ /**
170
+ * Emitted immediately after processing an incoming operation (op).
171
+ *
172
+ * @remarks
173
+ *
174
+ * Note: this event is not intended for general use.
175
+ * Prefer to listen to events on the appropriate ultimate recipients of the ops, rather than listening to the
176
+ * ops directly on the {@link IContainer}.
177
+ *
178
+ * Listener parameters:
179
+ *
180
+ * - `message`: The op that was processed.
181
+ */
91
182
  (event: "op", listener: (message: ISequencedDocumentMessage) => void): any;
92
- (event: "dirty" | "saved", listener: (dirty: boolean) => void): any;
183
+ /**
184
+ * Emitted upon the first local change while the Container is in the "saved" state.
185
+ * That is, when {@link IContainer.isDirty} transitions from `true` to `false`.
186
+ *
187
+ * @remarks Listener parameters:
188
+ *
189
+ * - `dirty`: DEPRECATED. This parameter will be removed in a future release.
190
+ *
191
+ * @see {@link IContainer.isDirty}
192
+ */
193
+ (event: "dirty", listener: (dirty: boolean) => void): any;
194
+ /**
195
+ * Emitted when all local changes/edits have been acknowledged by the service.
196
+ * I.e., when {@link IContainer.isDirty} transitions from `false` to `true`.
197
+ *
198
+ * @remarks Listener parameters:
199
+ *
200
+ * - `dirty`: DEPRECATED. This parameter will be removed in a future release.
201
+ *
202
+ * @see {@link IContainer.isDirty}
203
+ */
204
+ (event: "saved", listener: (dirty: boolean) => void): any;
93
205
  }
94
206
  /**
95
- * Namespace for the different connection states a container can be in
96
- * PLEASE NOTE: The sequence of the numerical values does no correspond to the typical connection state progression
207
+ * Namespace for the different connection states a container can be in.
208
+ * PLEASE NOTE: The sequence of the numerical values does no correspond to the typical connection state progression.
97
209
  */
98
210
  export declare namespace ConnectionState {
99
211
  /**
@@ -117,11 +229,11 @@ export declare namespace ConnectionState {
117
229
  type Connected = 2;
118
230
  }
119
231
  /**
120
- * Type defining the different states of connectivity a container can be in.
232
+ * Type defining the different states of connectivity a Container can be in.
121
233
  */
122
234
  export declare type ConnectionState = ConnectionState.Disconnected | ConnectionState.EstablishingConnection | ConnectionState.CatchingUp | ConnectionState.Connected;
123
235
  /**
124
- * The Host's view of the Container and its connection to storage
236
+ * The Host's view of a Container and its connection to storage
125
237
  */
126
238
  export interface IContainer extends IEventProvider<IContainerEvents>, IFluidRouter {
127
239
  /**
@@ -134,7 +246,7 @@ export interface IContainer extends IEventProvider<IContainerEvents>, IFluidRout
134
246
  */
135
247
  getQuorum(): IQuorumClients;
136
248
  /**
137
- * Represents the resolved url to the Container
249
+ * Represents the resolved url to the Container.
138
250
  * Will be undefined only when the container is in the {@link AttachState.Detached | detatched} state.
139
251
  */
140
252
  resolvedUrl: IResolvedUrl | undefined;
@@ -154,47 +266,50 @@ export interface IContainer extends IEventProvider<IContainerEvents>, IFluidRout
154
266
  */
155
267
  getLoadedCodeDetails(): IFluidCodeDetails | undefined;
156
268
  /**
157
- * Returns true if the container has been closed, otherwise false
269
+ * Returns true if the container has been closed, otherwise false.
158
270
  */
159
271
  readonly closed: boolean;
160
272
  /**
161
- * Returns true if the container is dirty, i.e. there are user changes that has not been saved
162
- * Closing container in this state results in data loss for user.
163
- * Container usually gets into this situation due to loss of connectivity.
273
+ * Whether or not there are any local changes that have not been saved.
164
274
  */
165
275
  readonly isDirty: boolean;
166
276
  /**
167
- * Closes the container
277
+ * Closes the container.
278
+ *
279
+ * @param error - If the container is being closed due to error, this provides details about the error that
280
+ * resulted in closing it.
168
281
  */
169
282
  close(error?: ICriticalContainerError): void;
170
283
  /**
171
284
  * Closes the container and returns serialized local state intended to be
172
- * given to a newly loaded container
285
+ * given to a newly loaded container.
173
286
  */
174
287
  closeAndGetPendingLocalState(): string;
175
288
  /**
176
- * Propose new code details that define the code to be loaded
177
- * for this container's runtime. The returned promise will
178
- * be true when the proposal is accepted, and false if
179
- * the proposal is rejected.
289
+ * Propose new code details that define the code to be loaded for this container's runtime.
290
+ *
291
+ * The returned promise will be true when the proposal is accepted, and false if the proposal is rejected.
180
292
  */
181
293
  proposeCodeDetails(codeDetails: IFluidCodeDetails): Promise<boolean>;
182
294
  /**
183
295
  * Attaches the Container to the Container specified by the given Request.
184
296
  *
185
- * TODO - in the case of failure options should give a retry policy. Or some continuation function
186
- * that allows attachment to a secondary document.
297
+ * @privateRemarks
298
+ *
299
+ * TODO - in the case of failure options should give a retry policy.
300
+ * Or some continuation function that allows attachment to a secondary document.
187
301
  */
188
302
  attach(request: IRequest): Promise<void>;
189
303
  /**
190
- * Extract the snapshot from the detached container.
304
+ * Extract a snapshot of the container as long as it is in detached state. Calling this on an attached container
305
+ * is an error.
191
306
  */
192
307
  serialize(): string;
193
308
  /**
194
- * Get an absolute url for a provided container-relative request url.
309
+ * Get an absolute URL for a provided container-relative request URL.
195
310
  * If the container is not attached, this will return undefined.
196
311
  *
197
- * @param relativeUrl - A container-relative request URL
312
+ * @param relativeUrl - A container-relative request URL.
198
313
  */
199
314
  getAbsoluteUrl(relativeUrl: string): Promise<string | undefined>;
200
315
  /**
@@ -203,29 +318,45 @@ export interface IContainer extends IEventProvider<IContainerEvents>, IFluidRout
203
318
  */
204
319
  request(request: IRequest): Promise<IResponse>;
205
320
  /**
206
- * Provides the current state of the container's connection to the ordering service
321
+ * Provides the current state of the container's connection to the ordering service.
322
+ *
323
+ * @remarks Consumers can listen for state changes via the "connected" and "disconnected" events.
207
324
  */
208
325
  readonly connectionState: ConnectionState;
209
326
  /**
210
- * Attempts to connect the container to the delta stream and process ops
327
+ * Attempts to connect the container to the delta stream and process ops.
328
+ *
329
+ * @remarks
330
+ *
331
+ * {@link IContainer.connectionState} will be set to {@link (ConnectionState:namespace).Connected}, and the
332
+ * "connected" event will be fired if/when connection succeeds.
211
333
  */
212
334
  connect(): void;
213
335
  /**
214
- * Disconnects the container from the delta stream and stops processing ops
336
+ * Disconnects the container from the delta stream and stops processing ops.
337
+ *
338
+ * @remarks
339
+ *
340
+ * {@link IContainer.connectionState} will be set to {@link (ConnectionState:namespace).Disconnected}, and the
341
+ * "disconnected" event will be fired when disconnection completes.
215
342
  */
216
343
  disconnect(): void;
217
344
  /**
218
- * The audience information for all clients currently associated with the document in the current session
345
+ * The audience information for all clients currently associated with the document in the current session.
219
346
  */
220
347
  readonly audience: IAudience;
221
348
  /**
222
349
  * The server provided ID of the client.
223
- * Set once this.connectionState === ConnectionState.Connected is true, otherwise undefined
224
- * @alpha
350
+ *
351
+ * Set once {@link IContainer.connectionState} is {@link (ConnectionState:namespace).Connected},
352
+ * otherwise will be `undefined`.
225
353
  */
226
354
  readonly clientId?: string | undefined;
227
355
  /**
228
356
  * Tells if container is in read-only mode.
357
+ *
358
+ * @remarks
359
+ *
229
360
  * Data stores should listen for "readonly" notifications and disallow user making changes to data stores.
230
361
  * Readonly state can be because of no storage write permission,
231
362
  * or due to host forcing readonly mode for container.
@@ -252,6 +383,8 @@ export interface ILoader extends IFluidRouter, Partial<IProvideLoader> {
252
383
  * Resolves the resource specified by the URL + headers contained in the request object
253
384
  * to the underlying container that will resolve the request.
254
385
  *
386
+ * @remarks
387
+ *
255
388
  * An analogy for this is resolve is a DNS resolve of a Fluid container. Request then executes
256
389
  * a request against the server found from the resolve step.
257
390
  */
@@ -276,25 +409,25 @@ export declare type ILoaderOptions = {
276
409
  [key in string | number]: any;
277
410
  } & {
278
411
  /**
279
- * Set caching behavior for the loader. If true, we will load a container from cache if one
412
+ * Set caching behavior for the loader. If true, we will load a container from cache if one
280
413
  * with the same id/version exists or create a new container and cache it if it does not. If
281
414
  * false, always load a new container and don't cache it. If the container has already been
282
- * closed, it will not be cached. A cache option in the LoaderHeader for an individual
415
+ * closed, it will not be cached. A cache option in the LoaderHeader for an individual
283
416
  * request will override the Loader's value.
284
417
  * Defaults to true.
285
418
  */
286
419
  cache?: boolean;
287
420
  /**
288
- * Provide the current Loader through the scope object when creating Containers. It is added
421
+ * Provide the current Loader through the scope object when creating Containers. It is added
289
422
  * as the `ILoader` property, and will overwrite an existing property of the same name on the
290
- * scope. Useful for when the host wants to provide the current Loader's functionality to
423
+ * scope. Useful for when the host wants to provide the current Loader's functionality to
291
424
  * individual Data Stores, which is typically expected when creating with a Loader.
292
425
  * Defaults to true.
293
426
  */
294
427
  provideScopeLoader?: boolean;
295
428
  /**
296
- * Max time(in ms) container will wait for a leave message of a disconnected client.
297
- */
429
+ * Max time (in ms) container will wait for a leave message of a disconnected client.
430
+ */
298
431
  maxClientLeaveWaitTime?: number;
299
432
  };
300
433
  /**
@@ -341,7 +474,7 @@ export interface IProvideLoader {
341
474
  /**
342
475
  * @deprecated 0.48, This API will be removed in 0.50
343
476
  * No replacement since it is not expected anyone will depend on this outside container-loader
344
- * See https://github.com/microsoft/FluidFramework/issues/9711 for context
477
+ * See {@link https://github.com/microsoft/FluidFramework/issues/9711} for context.
345
478
  */
346
479
  export interface IPendingLocalState {
347
480
  url: string;
@@ -349,8 +482,9 @@ export interface IPendingLocalState {
349
482
  }
350
483
  /**
351
484
  * This is used when we rehydrate a container from the snapshot. Here we put the blob contents
352
- * in separate property: blobContents. This is used as the ContainerContext's base snapshot
353
- * when attaching.
485
+ * in separate property: {@link ISnapshotTreeWithBlobContents.blobsContents}.
486
+ *
487
+ * @remarks This is used as the `ContainerContext`'s base snapshot when attaching.
354
488
  */
355
489
  export interface ISnapshotTreeWithBlobContents extends ISnapshotTree {
356
490
  blobsContents: {
@@ -1 +1 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"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"}
package/lib/loader.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAwWH;;GAEG;AACH,MAAM,CAAN,IAAY,YAsBX;AAtBD,WAAY,YAAY;IACpB;;OAEG;IACH,qCAAqB,CAAA;IAErB,sDAAsC,CAAA;IAEtC;;OAEG;IACH,qCAAqB,CAAA;IACrB,6CAA6B,CAAA;IAC7B,wDAAwC,CAAA;IAExC;;;;;OAKG;IACH,mCAAmB,CAAA;AACvB,CAAC,EAtBW,YAAY,KAAZ,YAAY,QAsBvB","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n IRequest,\n IResponse,\n IFluidRouter,\n} from \"@fluidframework/core-interfaces\";\nimport {\n IClientDetails,\n IDocumentMessage,\n IQuorumClients,\n ISequencedDocumentMessage,\n ISequencedProposal,\n ISnapshotTree,\n} from \"@fluidframework/protocol-definitions\";\nimport { IResolvedUrl } from \"@fluidframework/driver-definitions\";\nimport { IEvent, IEventProvider } from \"@fluidframework/common-definitions\";\nimport { IAudience } from \"./audience\";\nimport { IDeltaManager, ReadOnlyInfo } from \"./deltas\";\nimport { ICriticalContainerError, ContainerWarning } from \"./error\";\nimport { IFluidModule } from \"./fluidModule\";\nimport { AttachState } from \"./runtime\";\nimport {\n IFluidCodeDetails,\n IFluidPackage,\n IProvideFluidCodeDetailsComparer,\n} from \"./fluidPackage\";\n\n/**\n * Encapsulates a module entry point with corresponding code details.\n */\nexport interface IFluidModuleWithDetails {\n /**\n * Fluid code module that implements the runtime factory needed to instantiate the container runtime.\n */\n module: IFluidModule;\n\n /**\n * Code details associated with the module. Represents a document schema this module supports.\n * If the code loader implements the {@link @fluidframework/core-interfaces#(IFluidCodeDetailsComparer:interface)}\n * interface, it'll be called to determine whether the module code details satisfy the new code proposal in the\n * quorum.\n */\n details: IFluidCodeDetails;\n}\n\n/**\n * Fluid code loader resolves a code module matching the document schema, i.e. code details, such as\n * a package name and package version range.\n */\nexport interface ICodeDetailsLoader\n extends Partial<IProvideFluidCodeDetailsComparer> {\n /**\n * Load the code module (package) that is capable to interact with the document.\n *\n * @param source - Code proposal that articulates the current schema the document is written in.\n * @returns - Code module entry point along with the code details associated with it.\n */\n load(source: IFluidCodeDetails): Promise<IFluidModuleWithDetails>;\n}\n\n/**\n* The interface returned from a IFluidCodeResolver which represents IFluidCodeDetails\n * that have been resolved and are ready to load\n */\nexport interface IResolvedFluidCodeDetails extends IFluidCodeDetails {\n /**\n * A resolved version of the Fluid package. All Fluid browser file entries should be absolute urls.\n */\n readonly resolvedPackage: Readonly<IFluidPackage>;\n /**\n * If not undefined, this id will be used to cache the entry point for the code package\n */\n readonly resolvedPackageCacheId: string | undefined;\n}\n\n/**\n * Fluid code resolvers take a Fluid code details, and resolve the\n * full Fluid package including absolute urls for the browser file entries.\n * The Fluid code resolver is coupled to a specific cdn and knows how to resolve\n * the code detail for loading from that cdn. This include resolving to the most recent\n * version of package that supports the provided code details.\n */\nexport interface IFluidCodeResolver {\n /**\n * Resolves a Fluid code details into a form that can be loaded.\n * @param details - The Fluid code details to resolve.\n * @returns - A IResolvedFluidCodeDetails where the resolvedPackage's Fluid file entries are absolute urls, and\n * an optional resolvedPackageCacheId if the loaded package should be cached.\n */\n resolveCodeDetails(details: IFluidCodeDetails): Promise<IResolvedFluidCodeDetails>;\n}\n\n/**\n * Code AllowListing Interface\n */\nexport interface ICodeAllowList {\n testSource(source: IResolvedFluidCodeDetails): Promise<boolean>;\n}\n\n/**\n * Events emitted by the Container \"upwards\" to the Loader and Host\n */\nexport interface IContainerEvents extends IEvent {\n (event: \"readonly\", listener: (readonly: boolean) => void): void;\n (event: \"connected\", listener: (clientId: string) => void);\n (event: \"codeDetailsProposed\", listener: (codeDetails: IFluidCodeDetails, proposal: ISequencedProposal) => void);\n (event: \"contextChanged\", listener: (codeDetails: IFluidCodeDetails) => void);\n (event: \"disconnected\" | \"attached\", listener: () => void);\n (event: \"closed\", listener: (error?: ICriticalContainerError) => void);\n (event: \"warning\", listener: (error: ContainerWarning) => void);\n (event: \"op\", listener: (message: ISequencedDocumentMessage) => void);\n (event: \"dirty\" | \"saved\", listener: (dirty: boolean) => void);\n}\n\n/**\n * Namespace for the different connection states a container can be in\n * PLEASE NOTE: The sequence of the numerical values does no correspond to the typical connection state progression\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace ConnectionState {\n /**\n * The container is not connected to the delta server.\n * Note - When in this state the container may be about to reconnect,\n * or may remain disconnected until explicitly told to connect.\n */\n export type Disconnected = 0;\n\n /**\n * The container is disconnected but actively trying to establish a new connection.\n * PLEASE NOTE that this numerical value falls out of the order you may expect for this state.\n */\n export type EstablishingConnection = 3;\n\n /**\n * The container has an inbound connection only, and is catching up to the latest known state from the service.\n */\n export type CatchingUp = 1;\n\n /**\n * The container is fully connected and syncing.\n */\n export type Connected = 2;\n}\n\n/**\n * Type defining the different states of connectivity a container can be in.\n */\nexport type ConnectionState =\n | ConnectionState.Disconnected\n | ConnectionState.EstablishingConnection\n | ConnectionState.CatchingUp\n | ConnectionState.Connected;\n\n/**\n * The Host's view of the Container and its connection to storage\n */\nexport interface IContainer extends IEventProvider<IContainerEvents>, IFluidRouter {\n\n /**\n * The Delta Manager supporting the op stream for this Container\n */\n deltaManager: IDeltaManager<ISequencedDocumentMessage, IDocumentMessage>;\n\n /**\n * The collection of write clients which were connected as of the current sequence number.\n * Also contains a map of key-value pairs that must be agreed upon by all clients before being accepted.\n */\n getQuorum(): IQuorumClients;\n\n /**\n * Represents the resolved url to the Container\n * Will be undefined only when the container is in the {@link AttachState.Detached | detatched} state.\n */\n resolvedUrl: IResolvedUrl | undefined;\n\n /**\n * Indicates the attachment state of the container to a host service.\n */\n readonly attachState: AttachState;\n\n /**\n * Get the code details that are currently specified for the container.\n * @returns The current code details if any are specified, undefined if none are specified.\n */\n getSpecifiedCodeDetails(): IFluidCodeDetails | undefined;\n\n /**\n * Get the code details that were used to load the container.\n * @returns The code details that were used to load the container if it is loaded, undefined if it is not yet\n * loaded.\n */\n getLoadedCodeDetails(): IFluidCodeDetails | undefined;\n\n /**\n * Returns true if the container has been closed, otherwise false\n */\n readonly closed: boolean;\n\n /**\n * Returns true if the container is dirty, i.e. there are user changes that has not been saved\n * Closing container in this state results in data loss for user.\n * Container usually gets into this situation due to loss of connectivity.\n */\n readonly isDirty: boolean;\n\n /**\n * Closes the container\n */\n close(error?: ICriticalContainerError): void;\n\n /**\n * Closes the container and returns serialized local state intended to be\n * given to a newly loaded container\n */\n closeAndGetPendingLocalState(): string;\n\n /**\n * Propose new code details that define the code to be loaded\n * for this container's runtime. The returned promise will\n * be true when the proposal is accepted, and false if\n * the proposal is rejected.\n */\n proposeCodeDetails(codeDetails: IFluidCodeDetails): Promise<boolean>;\n\n /**\n * Attaches the Container to the Container specified by the given Request.\n *\n * TODO - in the case of failure options should give a retry policy. Or some continuation function\n * that allows attachment to a secondary document.\n */\n attach(request: IRequest): Promise<void>;\n\n /**\n * Extract the snapshot from the detached container.\n */\n serialize(): string;\n\n /**\n * Get an absolute url for a provided container-relative request url.\n * If the container is not attached, this will return undefined.\n *\n * @param relativeUrl - A container-relative request URL\n */\n getAbsoluteUrl(relativeUrl: string): Promise<string | undefined>;\n\n /**\n * Issue a request against the container for a resource.\n * @param request - The request to be issued against the container\n */\n request(request: IRequest): Promise<IResponse>;\n\n /**\n * Provides the current state of the container's connection to the ordering service\n */\n readonly connectionState: ConnectionState;\n\n /**\n * Attempts to connect the container to the delta stream and process ops\n */\n connect(): void;\n\n /**\n * Disconnects the container from the delta stream and stops processing ops\n */\n disconnect(): void;\n\n /**\n * The audience information for all clients currently associated with the document in the current session\n */\n readonly audience: IAudience;\n\n /**\n * The server provided ID of the client.\n * Set once this.connectionState === ConnectionState.Connected is true, otherwise undefined\n * @alpha\n */\n readonly clientId?: string | undefined;\n\n /**\n * Tells if container is in read-only mode.\n * Data stores should listen for \"readonly\" notifications and disallow user making changes to data stores.\n * Readonly state can be because of no storage write permission,\n * or due to host forcing readonly mode for container.\n *\n * We do not differentiate here between no write access to storage vs. host disallowing changes to container -\n * in all cases container runtime and data stores should respect readonly state and not allow local changes.\n *\n * It is undefined if we have not yet established websocket connection\n * and do not know if user has write access to a file.\n */\n readonly readOnlyInfo: ReadOnlyInfo;\n\n /**\n * Allows the host to have the container force to be in read-only mode\n * @param readonly - Boolean that toggles if read-only policies will be enforced\n * @alpha\n */\n forceReadonly?(readonly: boolean);\n}\n\n/**\n * The Runtime's view of the Loader, used for loading Containers\n */\nexport interface ILoader extends IFluidRouter, Partial<IProvideLoader> {\n /**\n * Resolves the resource specified by the URL + headers contained in the request object\n * to the underlying container that will resolve the request.\n *\n * An analogy for this is resolve is a DNS resolve of a Fluid container. Request then executes\n * a request against the server found from the resolve step.\n */\n resolve(request: IRequest, pendingLocalState?: string): Promise<IContainer>;\n}\n\n/**\n * The Host's view of the Loader, used for loading Containers\n */\nexport interface IHostLoader extends ILoader {\n /**\n * Creates a new container using the specified chaincode but in an unattached state. While unattached all\n * updates will only be local until the user explicitly attaches the container to a service provider.\n */\n createDetachedContainer(codeDetails: IFluidCodeDetails): Promise<IContainer>;\n\n /**\n * Creates a new container using the specified snapshot but in an unattached state. While unattached all\n * updates will only be local until the user explicitly attaches the container to a service provider.\n */\n rehydrateDetachedContainerFromSnapshot(snapshot: string): Promise<IContainer>;\n}\n\nexport type ILoaderOptions = {\n [key in string | number]: any;\n} & {\n /**\n * Set caching behavior for the loader. If true, we will load a container from cache if one\n * with the same id/version exists or create a new container and cache it if it does not. If\n * false, always load a new container and don't cache it. If the container has already been\n * closed, it will not be cached. A cache option in the LoaderHeader for an individual\n * request will override the Loader's value.\n * Defaults to true.\n */\n cache?: boolean;\n\n /**\n * Provide the current Loader through the scope object when creating Containers. It is added\n * as the `ILoader` property, and will overwrite an existing property of the same name on the\n * scope. Useful for when the host wants to provide the current Loader's functionality to\n * individual Data Stores, which is typically expected when creating with a Loader.\n * Defaults to true.\n */\n provideScopeLoader?: boolean;\n\n /**\n * Max time(in ms) container will wait for a leave message of a disconnected client.\n */\n maxClientLeaveWaitTime?: number;\n};\n\n/**\n * Accepted header keys for requests coming to the Loader\n */\nexport enum LoaderHeader {\n /**\n * Override the Loader's default caching behavior for this container.\n */\n cache = \"fluid-cache\",\n\n clientDetails = \"fluid-client-details\",\n\n /**\n * Start the container in a paused, unconnected state. Defaults to false\n */\n loadMode = \"loadMode\",\n reconnect = \"fluid-reconnect\",\n sequenceNumber = \"fluid-sequence-number\",\n\n /**\n * One of the following:\n * null or \"null\": use ops, no snapshots\n * undefined: fetch latest snapshot\n * otherwise, version sha to load snapshot\n */\n version = \"version\",\n}\n\nexport interface IContainerLoadMode {\n opsBeforeReturn?:\n /*\n * No trailing ops are applied before container is returned.\n * Default value.\n */\n | undefined\n /*\n * Only cached trailing ops are applied before returning container.\n * Caching is optional and could be implemented by the driver.\n * If driver does not implement any kind of local caching strategy, this is same as above.\n * Driver may cache a lot of ops, so care needs to be exercised (see below).\n */\n | \"cached\"\n /*\n * All trailing ops in storage are fetched and applied before container is returned\n * This mode might have significant impact on boot speed (depends on storage perf characteristics)\n * Also there might be a lot of trailing ops and applying them might take time, so hosts are\n * recommended to have some progress UX / cancellation built into loading flow when using this option.\n */\n | \"all\";\n deltaConnection?:\n /*\n * Connection to delta stream is made only when Container.connect() call is made. Op processing\n * is paused (when container is returned from Loader.resolve()) until Container.connect() call is made.\n */\n | \"none\"\n /*\n * Connection to delta stream is made only when Container.connect() call is made.\n * Op fetching from storage is performed and ops are applied as they come in.\n * This is useful option if connection to delta stream is expensive and thus it's beneficial to move it\n * out from critical boot sequence, but it's beneficial to allow catch up to happen as fast as possible.\n */\n | \"delayed\"\n /*\n * Connection to delta stream is made right away.\n * Ops processing is enabled and ops are flowing through the system.\n * Default value.\n */\n | undefined;\n}\n\n/**\n * Set of Request Headers that the Loader understands and may inspect or modify\n */\nexport interface ILoaderHeader {\n [LoaderHeader.cache]: boolean;\n [LoaderHeader.clientDetails]: IClientDetails;\n [LoaderHeader.loadMode]: IContainerLoadMode;\n [LoaderHeader.sequenceNumber]: number;\n [LoaderHeader.reconnect]: boolean;\n [LoaderHeader.version]: string | undefined;\n}\n\nexport interface IProvideLoader {\n readonly ILoader: ILoader;\n}\n\n/**\n * @deprecated 0.48, This API will be removed in 0.50\n * No replacement since it is not expected anyone will depend on this outside container-loader\n * See https://github.com/microsoft/FluidFramework/issues/9711 for context\n */\nexport interface IPendingLocalState {\n url: string;\n pendingRuntimeState: unknown;\n}\n\n/**\n * This is used when we rehydrate a container from the snapshot. Here we put the blob contents\n * in separate property: blobContents. This is used as the ContainerContext's base snapshot\n * when attaching.\n */\nexport interface ISnapshotTreeWithBlobContents extends ISnapshotTree {\n blobsContents: { [path: string]: ArrayBufferLike; };\n trees: { [path: string]: ISnapshotTreeWithBlobContents; };\n}\n"]}
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAyfH;;GAEG;AACH,MAAM,CAAN,IAAY,YAsBX;AAtBD,WAAY,YAAY;IACpB;;OAEG;IACH,qCAAqB,CAAA;IAErB,sDAAsC,CAAA;IAEtC;;OAEG;IACH,qCAAqB,CAAA;IACrB,6CAA6B,CAAA;IAC7B,wDAAwC,CAAA;IAExC;;;;;OAKG;IACH,mCAAmB,CAAA;AACvB,CAAC,EAtBW,YAAY,KAAZ,YAAY,QAsBvB","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n IRequest,\n IResponse,\n IFluidRouter,\n} from \"@fluidframework/core-interfaces\";\nimport {\n IClientDetails,\n IDocumentMessage,\n IQuorumClients,\n ISequencedDocumentMessage,\n ISequencedProposal,\n ISnapshotTree,\n} from \"@fluidframework/protocol-definitions\";\nimport { IResolvedUrl } from \"@fluidframework/driver-definitions\";\nimport { IEvent, IEventProvider } from \"@fluidframework/common-definitions\";\nimport { IAudience } from \"./audience\";\nimport { IDeltaManager, ReadOnlyInfo } from \"./deltas\";\nimport { ICriticalContainerError, ContainerWarning } from \"./error\";\nimport { IFluidModule } from \"./fluidModule\";\nimport { AttachState } from \"./runtime\";\nimport {\n IFluidCodeDetails,\n IFluidPackage,\n IProvideFluidCodeDetailsComparer,\n} from \"./fluidPackage\";\n\n/**\n * Encapsulates a module entry point with corresponding code details.\n */\nexport interface IFluidModuleWithDetails {\n /**\n * Fluid code module that implements the runtime factory needed to instantiate the container runtime.\n */\n module: IFluidModule;\n\n /**\n * Code details associated with the module. Represents a document schema this module supports.\n * If the code loader implements the {@link @fluidframework/core-interfaces#(IFluidCodeDetailsComparer:interface)}\n * interface, it'll be called to determine whether the module code details satisfy the new code proposal in the\n * quorum.\n */\n details: IFluidCodeDetails;\n}\n\n/**\n * Fluid code loader resolves a code module matching the document schema, i.e. code details, such as\n * a package name and package version range.\n */\nexport interface ICodeDetailsLoader\n extends Partial<IProvideFluidCodeDetailsComparer> {\n /**\n * Load the code module (package) that can interact with the document.\n *\n * @param source - Code proposal that articulates the current schema the document is written in.\n * @returns - Code module entry point along with the code details associated with it.\n */\n load(source: IFluidCodeDetails): Promise<IFluidModuleWithDetails>;\n}\n\n/**\n * The interface returned from a IFluidCodeResolver which represents IFluidCodeDetails\n * that have been resolved and are ready to load\n */\nexport interface IResolvedFluidCodeDetails extends IFluidCodeDetails {\n /**\n * A resolved version of the Fluid package. All Fluid browser file entries should be absolute urls.\n */\n readonly resolvedPackage: Readonly<IFluidPackage>;\n /**\n * If not undefined, this id will be used to cache the entry point for the code package\n */\n readonly resolvedPackageCacheId: string | undefined;\n}\n\n/**\n * Fluid code resolvers take a Fluid code details, and resolve the\n * full Fluid package including absolute urls for the browser file entries.\n * The Fluid code resolver is coupled to a specific cdn and knows how to resolve\n * the code detail for loading from that cdn. This include resolving to the most recent\n * version of package that supports the provided code details.\n */\nexport interface IFluidCodeResolver {\n /**\n * Resolves a Fluid code details into a form that can be loaded.\n * @param details - The Fluid code details to resolve.\n * @returns - A IResolvedFluidCodeDetails where the resolvedPackage's Fluid file entries are absolute urls, and\n * an optional resolvedPackageCacheId if the loaded package should be cached.\n */\n resolveCodeDetails(details: IFluidCodeDetails): Promise<IResolvedFluidCodeDetails>;\n}\n\n/**\n * Code AllowListing Interface\n */\nexport interface ICodeAllowList {\n testSource(source: IResolvedFluidCodeDetails): Promise<boolean>;\n}\n\n/**\n * Events emitted by the {@link IContainer} \"upwards\" to the Loader and Host.\n */\n/* eslint-disable @typescript-eslint/unified-signatures */\nexport interface IContainerEvents extends IEvent {\n /**\n * Emitted when the readonly state of the container changes.\n *\n * @remarks Listener parameters:\n *\n * - `readonly`: Whether or not the container is now in a readonly state.\n *\n * @see {@link IContainer.readOnlyInfo}\n */\n (event: \"readonly\", listener: (readonly: boolean) => void): void;\n\n /**\n * Emitted when the {@link IContainer} completes connecting to the Fluid service.\n *\n * @remarks Reflects connection state changes against the (delta) service acknowledging ops/edits.\n *\n * @see\n *\n * - {@link IContainer.connectionState}\n *\n * - {@link IContainer.connect}\n */\n (event: \"connected\", listener: (clientId: string) => void);\n\n /**\n * Fires when new container code details have been proposed, prior to acceptance.\n *\n * @remarks Listener parameters:\n *\n * - `codeDetails`: The code details being proposed.\n *\n * - `proposal`: NOT RECOMMENDED FOR USE.\n *\n * @see {@link IContainer.proposeCodeDetails}\n */\n (event: \"codeDetailsProposed\", listener: (codeDetails: IFluidCodeDetails, proposal: ISequencedProposal) => void);\n\n /**\n * @deprecated No replacement API recommended.\n */\n (event: \"contextChanged\", listener: (codeDetails: IFluidCodeDetails) => void);\n\n /**\n * Emitted when the {@link IContainer} becomes disconnected from the Fluid service.\n *\n * @remarks Reflects connection state changes against the (delta) service acknowledging ops/edits.\n *\n * @see\n *\n * - {@link IContainer.connectionState}\n *\n * - {@link IContainer.disconnect}\n */\n (event: \"disconnected\", listener: () => void);\n\n /**\n * Emitted when a {@link AttachState.Detached | detached} container is\n * {@link AttachState.Attached | attached} to the Fluid service.\n *\n * @see\n *\n * - {@link IContainer.attachState}\n *\n * - {@link IContainer.attach}\n */\n (event: \"attached\", listener: () => void);\n\n /**\n * Emitted when the {@link IContainer} is closed, which permanently disables it.\n *\n * @remarks Listener parameters:\n *\n * - `error`: If the container was closed due to error, this will contain details about the error that caused it.\n *\n * @see {@link IContainer.close}\n */\n (event: \"closed\", listener: (error?: ICriticalContainerError) => void);\n\n /**\n * Emitted when the container encounters a state which may lead to errors, which may be actionable by the consumer.\n *\n * @remarks\n *\n * Note: this event is not intended for general use.\n * The longer-term intention is to surface warnings more directly on the APIs that produce them.\n * For now, use of this should be avoided when possible.\n *\n * Listener parameters:\n *\n * - `error`: The warning describing the encountered state.\n */\n (event: \"warning\", listener: (error: ContainerWarning) => void);\n\n /**\n * Emitted immediately after processing an incoming operation (op).\n *\n * @remarks\n *\n * Note: this event is not intended for general use.\n * Prefer to listen to events on the appropriate ultimate recipients of the ops, rather than listening to the\n * ops directly on the {@link IContainer}.\n *\n * Listener parameters:\n *\n * - `message`: The op that was processed.\n */\n (event: \"op\", listener: (message: ISequencedDocumentMessage) => void);\n\n /**\n * Emitted upon the first local change while the Container is in the \"saved\" state.\n * That is, when {@link IContainer.isDirty} transitions from `true` to `false`.\n *\n * @remarks Listener parameters:\n *\n * - `dirty`: DEPRECATED. This parameter will be removed in a future release.\n *\n * @see {@link IContainer.isDirty}\n */\n (event: \"dirty\", listener: (dirty: boolean) => void);\n\n /**\n * Emitted when all local changes/edits have been acknowledged by the service.\n * I.e., when {@link IContainer.isDirty} transitions from `false` to `true`.\n *\n * @remarks Listener parameters:\n *\n * - `dirty`: DEPRECATED. This parameter will be removed in a future release.\n *\n * @see {@link IContainer.isDirty}\n */\n (event: \"saved\", listener: (dirty: boolean) => void);\n}\n/* eslint-enable @typescript-eslint/unified-signatures */\n\n/**\n * Namespace for the different connection states a container can be in.\n * PLEASE NOTE: The sequence of the numerical values does no correspond to the typical connection state progression.\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace ConnectionState {\n /**\n * The container is not connected to the delta server.\n * Note - When in this state the container may be about to reconnect,\n * or may remain disconnected until explicitly told to connect.\n */\n export type Disconnected = 0;\n\n /**\n * The container is disconnected but actively trying to establish a new connection.\n * PLEASE NOTE that this numerical value falls out of the order you may expect for this state.\n */\n export type EstablishingConnection = 3;\n\n /**\n * The container has an inbound connection only, and is catching up to the latest known state from the service.\n */\n export type CatchingUp = 1;\n\n /**\n * The container is fully connected and syncing.\n */\n export type Connected = 2;\n}\n\n/**\n * Type defining the different states of connectivity a Container can be in.\n */\nexport type ConnectionState =\n | ConnectionState.Disconnected\n | ConnectionState.EstablishingConnection\n | ConnectionState.CatchingUp\n | ConnectionState.Connected;\n\n/**\n * The Host's view of a Container and its connection to storage\n */\nexport interface IContainer extends IEventProvider<IContainerEvents>, IFluidRouter {\n\n /**\n * The Delta Manager supporting the op stream for this Container\n */\n deltaManager: IDeltaManager<ISequencedDocumentMessage, IDocumentMessage>;\n\n /**\n * The collection of write clients which were connected as of the current sequence number.\n * Also contains a map of key-value pairs that must be agreed upon by all clients before being accepted.\n */\n getQuorum(): IQuorumClients;\n\n /**\n * Represents the resolved url to the Container.\n * Will be undefined only when the container is in the {@link AttachState.Detached | detatched} state.\n */\n resolvedUrl: IResolvedUrl | undefined;\n\n /**\n * Indicates the attachment state of the container to a host service.\n */\n readonly attachState: AttachState;\n\n /**\n * Get the code details that are currently specified for the container.\n * @returns The current code details if any are specified, undefined if none are specified.\n */\n getSpecifiedCodeDetails(): IFluidCodeDetails | undefined;\n\n /**\n * Get the code details that were used to load the container.\n * @returns The code details that were used to load the container if it is loaded, undefined if it is not yet\n * loaded.\n */\n getLoadedCodeDetails(): IFluidCodeDetails | undefined;\n\n /**\n * Returns true if the container has been closed, otherwise false.\n */\n readonly closed: boolean;\n\n /**\n * Whether or not there are any local changes that have not been saved.\n */\n readonly isDirty: boolean;\n\n /**\n * Closes the container.\n *\n * @param error - If the container is being closed due to error, this provides details about the error that\n * resulted in closing it.\n */\n close(error?: ICriticalContainerError): void;\n\n /**\n * Closes the container and returns serialized local state intended to be\n * given to a newly loaded container.\n */\n closeAndGetPendingLocalState(): string;\n\n /**\n * Propose new code details that define the code to be loaded for this container's runtime.\n *\n * The returned promise will be true when the proposal is accepted, and false if the proposal is rejected.\n */\n proposeCodeDetails(codeDetails: IFluidCodeDetails): Promise<boolean>;\n\n /**\n * Attaches the Container to the Container specified by the given Request.\n *\n * @privateRemarks\n *\n * TODO - in the case of failure options should give a retry policy.\n * Or some continuation function that allows attachment to a secondary document.\n */\n attach(request: IRequest): Promise<void>;\n\n /**\n * Extract a snapshot of the container as long as it is in detached state. Calling this on an attached container\n * is an error.\n */\n serialize(): string;\n\n /**\n * Get an absolute URL for a provided container-relative request URL.\n * If the container is not attached, this will return undefined.\n *\n * @param relativeUrl - A container-relative request URL.\n */\n getAbsoluteUrl(relativeUrl: string): Promise<string | undefined>;\n\n /**\n * Issue a request against the container for a resource.\n * @param request - The request to be issued against the container\n */\n request(request: IRequest): Promise<IResponse>;\n\n /**\n * Provides the current state of the container's connection to the ordering service.\n *\n * @remarks Consumers can listen for state changes via the \"connected\" and \"disconnected\" events.\n */\n readonly connectionState: ConnectionState;\n\n /**\n * Attempts to connect the container to the delta stream and process ops.\n *\n * @remarks\n *\n * {@link IContainer.connectionState} will be set to {@link (ConnectionState:namespace).Connected}, and the\n * \"connected\" event will be fired if/when connection succeeds.\n */\n connect(): void;\n\n /**\n * Disconnects the container from the delta stream and stops processing ops.\n *\n * @remarks\n *\n * {@link IContainer.connectionState} will be set to {@link (ConnectionState:namespace).Disconnected}, and the\n * \"disconnected\" event will be fired when disconnection completes.\n */\n disconnect(): void;\n\n /**\n * The audience information for all clients currently associated with the document in the current session.\n */\n readonly audience: IAudience;\n\n /**\n * The server provided ID of the client.\n *\n * Set once {@link IContainer.connectionState} is {@link (ConnectionState:namespace).Connected},\n * otherwise will be `undefined`.\n */\n readonly clientId?: string | undefined;\n\n /**\n * Tells if container is in read-only mode.\n *\n * @remarks\n *\n * Data stores should listen for \"readonly\" notifications and disallow user making changes to data stores.\n * Readonly state can be because of no storage write permission,\n * or due to host forcing readonly mode for container.\n *\n * We do not differentiate here between no write access to storage vs. host disallowing changes to container -\n * in all cases container runtime and data stores should respect readonly state and not allow local changes.\n *\n * It is undefined if we have not yet established websocket connection\n * and do not know if user has write access to a file.\n */\n readonly readOnlyInfo: ReadOnlyInfo;\n\n /**\n * Allows the host to have the container force to be in read-only mode\n * @param readonly - Boolean that toggles if read-only policies will be enforced\n * @alpha\n */\n forceReadonly?(readonly: boolean);\n}\n\n/**\n * The Runtime's view of the Loader, used for loading Containers\n */\nexport interface ILoader extends IFluidRouter, Partial<IProvideLoader> {\n /**\n * Resolves the resource specified by the URL + headers contained in the request object\n * to the underlying container that will resolve the request.\n *\n * @remarks\n *\n * An analogy for this is resolve is a DNS resolve of a Fluid container. Request then executes\n * a request against the server found from the resolve step.\n */\n resolve(request: IRequest, pendingLocalState?: string): Promise<IContainer>;\n}\n\n/**\n * The Host's view of the Loader, used for loading Containers\n */\nexport interface IHostLoader extends ILoader {\n /**\n * Creates a new container using the specified chaincode but in an unattached state. While unattached all\n * updates will only be local until the user explicitly attaches the container to a service provider.\n */\n createDetachedContainer(codeDetails: IFluidCodeDetails): Promise<IContainer>;\n\n /**\n * Creates a new container using the specified snapshot but in an unattached state. While unattached all\n * updates will only be local until the user explicitly attaches the container to a service provider.\n */\n rehydrateDetachedContainerFromSnapshot(snapshot: string): Promise<IContainer>;\n}\n\nexport type ILoaderOptions = {\n [key in string | number]: any;\n} & {\n /**\n * Set caching behavior for the loader. If true, we will load a container from cache if one\n * with the same id/version exists or create a new container and cache it if it does not. If\n * false, always load a new container and don't cache it. If the container has already been\n * closed, it will not be cached. A cache option in the LoaderHeader for an individual\n * request will override the Loader's value.\n * Defaults to true.\n */\n cache?: boolean;\n\n /**\n * Provide the current Loader through the scope object when creating Containers. It is added\n * as the `ILoader` property, and will overwrite an existing property of the same name on the\n * scope. Useful for when the host wants to provide the current Loader's functionality to\n * individual Data Stores, which is typically expected when creating with a Loader.\n * Defaults to true.\n */\n provideScopeLoader?: boolean;\n\n /**\n * Max time (in ms) container will wait for a leave message of a disconnected client.\n */\n maxClientLeaveWaitTime?: number;\n};\n\n/**\n * Accepted header keys for requests coming to the Loader\n */\nexport enum LoaderHeader {\n /**\n * Override the Loader's default caching behavior for this container.\n */\n cache = \"fluid-cache\",\n\n clientDetails = \"fluid-client-details\",\n\n /**\n * Start the container in a paused, unconnected state. Defaults to false\n */\n loadMode = \"loadMode\",\n reconnect = \"fluid-reconnect\",\n sequenceNumber = \"fluid-sequence-number\",\n\n /**\n * One of the following:\n * null or \"null\": use ops, no snapshots\n * undefined: fetch latest snapshot\n * otherwise, version sha to load snapshot\n */\n version = \"version\",\n}\n\nexport interface IContainerLoadMode {\n opsBeforeReturn?:\n /*\n * No trailing ops are applied before container is returned.\n * Default value.\n */\n | undefined\n /*\n * Only cached trailing ops are applied before returning container.\n * Caching is optional and could be implemented by the driver.\n * If driver does not implement any kind of local caching strategy, this is same as above.\n * Driver may cache a lot of ops, so care needs to be exercised (see below).\n */\n | \"cached\"\n /*\n * All trailing ops in storage are fetched and applied before container is returned\n * This mode might have significant impact on boot speed (depends on storage perf characteristics)\n * Also there might be a lot of trailing ops and applying them might take time, so hosts are\n * recommended to have some progress UX / cancellation built into loading flow when using this option.\n */\n | \"all\";\n\n deltaConnection?:\n /*\n * Connection to delta stream is made only when Container.connect() call is made. Op processing\n * is paused (when container is returned from Loader.resolve()) until Container.connect() call is made.\n */\n | \"none\"\n /*\n * Connection to delta stream is made only when Container.connect() call is made.\n * Op fetching from storage is performed and ops are applied as they come in.\n * This is useful option if connection to delta stream is expensive and thus it's beneficial to move it\n * out from critical boot sequence, but it's beneficial to allow catch up to happen as fast as possible.\n */\n | \"delayed\"\n /*\n * Connection to delta stream is made right away.\n * Ops processing is enabled and ops are flowing through the system.\n * Default value.\n */\n | undefined;\n}\n\n/**\n * Set of Request Headers that the Loader understands and may inspect or modify\n */\nexport interface ILoaderHeader {\n [LoaderHeader.cache]: boolean;\n [LoaderHeader.clientDetails]: IClientDetails;\n [LoaderHeader.loadMode]: IContainerLoadMode;\n [LoaderHeader.sequenceNumber]: number;\n [LoaderHeader.reconnect]: boolean;\n [LoaderHeader.version]: string | undefined;\n}\n\nexport interface IProvideLoader {\n readonly ILoader: ILoader;\n}\n\n/**\n * @deprecated 0.48, This API will be removed in 0.50\n * No replacement since it is not expected anyone will depend on this outside container-loader\n * See {@link https://github.com/microsoft/FluidFramework/issues/9711} for context.\n */\nexport interface IPendingLocalState {\n url: string;\n pendingRuntimeState: unknown;\n}\n\n/**\n * This is used when we rehydrate a container from the snapshot. Here we put the blob contents\n * in separate property: {@link ISnapshotTreeWithBlobContents.blobsContents}.\n *\n * @remarks This is used as the `ContainerContext`'s base snapshot when attaching.\n */\nexport interface ISnapshotTreeWithBlobContents extends ISnapshotTree {\n blobsContents: { [path: string]: ArrayBufferLike; };\n trees: { [path: string]: ISnapshotTreeWithBlobContents; };\n}\n"]}
package/lib/runtime.d.ts CHANGED
@@ -79,8 +79,9 @@ export interface IRuntime extends IDisposable {
79
79
  * Payload type for IContainerContext.submitBatchFn()
80
80
  */
81
81
  export interface IBatchMessage {
82
- contents: string;
82
+ contents?: string;
83
83
  metadata: Record<string, unknown> | undefined;
84
+ compression?: string;
84
85
  }
85
86
  /**
86
87
  * The ContainerContext is a proxy standing between the Container and the Container's IRuntime.
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA2BH;;;GAGG;AACH,MAAM,CAAN,IAAY,WAiBX;AAjBD,WAAY,WAAW;IACnB;;;OAGG;IACH,oCAAqB,CAAA;IAErB;;OAEG;IACH,sCAAuB,CAAA;IAEvB;;;OAGG;IACH,oCAAqB,CAAA;AACzB,CAAC,EAjBW,WAAW,KAAX,WAAW,QAiBtB;AAqID,MAAM,CAAC,MAAM,eAAe,GAAiC,iBAAiB,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ITelemetryBaseLogger, IDisposable } from \"@fluidframework/common-definitions\";\nimport {\n FluidObject,\n IRequest,\n IResponse,\n} from \"@fluidframework/core-interfaces\";\nimport { IDocumentStorageService } from \"@fluidframework/driver-definitions\";\nimport {\n IClientConfiguration,\n IClientDetails,\n ISequencedDocumentMessage,\n ISnapshotTree,\n MessageType,\n ISummaryTree,\n IVersion,\n IDocumentMessage,\n IQuorumClients,\n ISummaryContent,\n} from \"@fluidframework/protocol-definitions\";\nimport { IAudience } from \"./audience\";\nimport { IDeltaManager } from \"./deltas\";\nimport { ICriticalContainerError } from \"./error\";\nimport { ILoader, ILoaderOptions, ISnapshotTreeWithBlobContents } from \"./loader\";\nimport { IFluidCodeDetails } from \"./fluidPackage\";\n\n/**\n * The attachment state of some Fluid data (e.g. a container or data store), denoting whether it is uploaded to the\n * service. The transition from detached to attached state is a one-way transition.\n */\nexport enum AttachState {\n /**\n * In detached state, the data is only present on the local client's machine. It has not yet been uploaded\n * to the service.\n */\n Detached = \"Detached\",\n\n /**\n * In attaching state, the data has started the upload to the service, but has not yet completed.\n */\n Attaching = \"Attaching\",\n\n /**\n * In attached state, the data has completed upload to the service. It can be accessed by other clients after\n * reaching attached state.\n */\n Attached = \"Attached\",\n}\n\n/**\n * The IRuntime represents an instantiation of a code package within a Container.\n * Primarily held by the ContainerContext to be able to interact with the running instance of the Container.\n */\nexport interface IRuntime extends IDisposable {\n\n /**\n * Executes a request against the runtime\n */\n request(request: IRequest): Promise<IResponse>;\n\n /**\n * Notifies the runtime of a change in the connection state\n */\n setConnectionState(connected: boolean, clientId?: string);\n\n /**\n * Processes the given op (message)\n */\n process(message: ISequencedDocumentMessage, local: boolean);\n\n /**\n * Processes the given signal\n */\n processSignal(message: any, local: boolean);\n\n /**\n * Create a summary. Used when attaching or serializing a detached container.\n *\n * @param blobRedirectTable - A table passed during the attach process. While detached, blob upload is supported\n * using IDs generated locally. After attach, these IDs cannot be used, so this table maps the old local IDs to the\n * new storage IDs so requests can be redirected.\n */\n createSummary(blobRedirectTable?: Map<string, string>): ISummaryTree;\n\n /**\n * Propagate the container state when container is attaching or attached.\n * @param attachState - State of the container.\n */\n setAttachState(attachState: AttachState.Attaching | AttachState.Attached): void;\n\n /**\n * Get pending local state in a serializable format to be given back to a newly loaded container\n */\n getPendingLocalState(): unknown;\n\n /**\n * Notify runtime that container is moving to \"Attaching\" state\n * @param snapshot - snapshot created at attach time\n */\n notifyAttaching(snapshot: ISnapshotTreeWithBlobContents): void;\n}\n\n/**\n * Payload type for IContainerContext.submitBatchFn()\n */\nexport interface IBatchMessage {\n contents: string;\n metadata: Record<string, unknown> | undefined;\n}\n\n/**\n * The ContainerContext is a proxy standing between the Container and the Container's IRuntime.\n * This allows the Container to terminate the connection to the IRuntime.\n *\n * Specifically, there is an event on Container, onContextChanged, which mean a new code proposal has been loaded,\n * so the old IRuntime is no longer valid, as its ContainerContext has been revoked,\n * and the Container has created a new ContainerContext.\n */\nexport interface IContainerContext extends IDisposable {\n /** @deprecated Please pass in existing directly in instantiateRuntime */\n readonly existing: boolean | undefined;\n readonly options: ILoaderOptions;\n readonly clientId: string | undefined;\n readonly clientDetails: IClientDetails;\n readonly storage: IDocumentStorageService;\n readonly connected: boolean;\n readonly baseSnapshot: ISnapshotTree | undefined;\n /** @deprecated Please use submitBatchFn & submitSummaryFn */\n readonly submitFn: (type: MessageType, contents: any, batch: boolean, appData?: any) => number;\n /** @returns clientSequenceNumber of last message in a batch */\n readonly submitBatchFn: (batch: IBatchMessage[]) => number;\n readonly submitSummaryFn: (summaryOp: ISummaryContent) => number;\n readonly submitSignalFn: (contents: any) => void;\n readonly closeFn: (error?: ICriticalContainerError) => void;\n readonly deltaManager: IDeltaManager<ISequencedDocumentMessage, IDocumentMessage>;\n readonly quorum: IQuorumClients;\n /**\n * @deprecated This method is provided as a migration tool for customers currently reading the code details\n * from within the Container by directly accessing the Quorum proposals. The code details should not be accessed\n * from within the Container as this requires coupling between the container contents and the code loader.\n * Direct access to Quorum proposals will be removed in an upcoming release, and in a further future release this\n * migration tool will be removed.\n */\n getSpecifiedCodeDetails?(): IFluidCodeDetails | undefined;\n readonly audience: IAudience | undefined;\n readonly loader: ILoader;\n // The logger implementation, which would support tagged events, should be provided by the loader.\n readonly taggedLogger: ITelemetryBaseLogger;\n readonly serviceConfiguration: IClientConfiguration | undefined;\n pendingLocalState?: unknown;\n\n /**\n * Ambient services provided with the context\n */\n readonly scope: FluidObject;\n\n /**\n * Get an absolute url for a provided container-relative request.\n * @param relativeUrl - A relative request within the container\n *\n * TODO: Optional for backwards compatibility. Make non-optional in version 0.19\n */\n getAbsoluteUrl?(relativeUrl: string): Promise<string | undefined>;\n\n /**\n * Indicates the attachment state of the container to a host service.\n */\n readonly attachState: AttachState;\n\n getLoadedFromVersion(): IVersion | undefined;\n\n updateDirtyContainerState(dirty: boolean): void;\n /**\n * WARNING: this id is meant for telemetry usages ONLY, not recommended for other consumption\n * This id is not supposed to be exposed anywhere else. It is dependant on usage or drivers\n * and scenarios which can change in the future.\n */\n readonly id: string;\n}\n\nexport const IRuntimeFactory: keyof IProvideRuntimeFactory = \"IRuntimeFactory\";\n\nexport interface IProvideRuntimeFactory {\n readonly IRuntimeFactory: IRuntimeFactory;\n}\n\n/**\n * Exported module definition\n *\n * Provides the entry point for the ContainerContext to load the proper IRuntime\n * to start up the running instance of the Container.\n */\nexport interface IRuntimeFactory extends IProvideRuntimeFactory {\n /**\n * Instantiates a new IRuntime for the given IContainerContext to proxy to\n * This is the main entry point to the Container's business logic\n *\n * @param context - container context to be supplied to the runtime\n * @param existing - whether to instantiate for the first time or from an existing context\n */\n instantiateRuntime(context: IContainerContext, existing?: boolean): Promise<IRuntime>;\n}\n"]}
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA2BH;;;GAGG;AACH,MAAM,CAAN,IAAY,WAiBX;AAjBD,WAAY,WAAW;IACnB;;;OAGG;IACH,oCAAqB,CAAA;IAErB;;OAEG;IACH,sCAAuB,CAAA;IAEvB;;;OAGG;IACH,oCAAqB,CAAA;AACzB,CAAC,EAjBW,WAAW,KAAX,WAAW,QAiBtB;AAsID,MAAM,CAAC,MAAM,eAAe,GAAiC,iBAAiB,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ITelemetryBaseLogger, IDisposable } from \"@fluidframework/common-definitions\";\nimport {\n FluidObject,\n IRequest,\n IResponse,\n} from \"@fluidframework/core-interfaces\";\nimport { IDocumentStorageService } from \"@fluidframework/driver-definitions\";\nimport {\n IClientConfiguration,\n IClientDetails,\n ISequencedDocumentMessage,\n ISnapshotTree,\n MessageType,\n ISummaryTree,\n IVersion,\n IDocumentMessage,\n IQuorumClients,\n ISummaryContent,\n} from \"@fluidframework/protocol-definitions\";\nimport { IAudience } from \"./audience\";\nimport { IDeltaManager } from \"./deltas\";\nimport { ICriticalContainerError } from \"./error\";\nimport { ILoader, ILoaderOptions, ISnapshotTreeWithBlobContents } from \"./loader\";\nimport { IFluidCodeDetails } from \"./fluidPackage\";\n\n/**\n * The attachment state of some Fluid data (e.g. a container or data store), denoting whether it is uploaded to the\n * service. The transition from detached to attached state is a one-way transition.\n */\nexport enum AttachState {\n /**\n * In detached state, the data is only present on the local client's machine. It has not yet been uploaded\n * to the service.\n */\n Detached = \"Detached\",\n\n /**\n * In attaching state, the data has started the upload to the service, but has not yet completed.\n */\n Attaching = \"Attaching\",\n\n /**\n * In attached state, the data has completed upload to the service. It can be accessed by other clients after\n * reaching attached state.\n */\n Attached = \"Attached\",\n}\n\n/**\n * The IRuntime represents an instantiation of a code package within a Container.\n * Primarily held by the ContainerContext to be able to interact with the running instance of the Container.\n */\nexport interface IRuntime extends IDisposable {\n\n /**\n * Executes a request against the runtime\n */\n request(request: IRequest): Promise<IResponse>;\n\n /**\n * Notifies the runtime of a change in the connection state\n */\n setConnectionState(connected: boolean, clientId?: string);\n\n /**\n * Processes the given op (message)\n */\n process(message: ISequencedDocumentMessage, local: boolean);\n\n /**\n * Processes the given signal\n */\n processSignal(message: any, local: boolean);\n\n /**\n * Create a summary. Used when attaching or serializing a detached container.\n *\n * @param blobRedirectTable - A table passed during the attach process. While detached, blob upload is supported\n * using IDs generated locally. After attach, these IDs cannot be used, so this table maps the old local IDs to the\n * new storage IDs so requests can be redirected.\n */\n createSummary(blobRedirectTable?: Map<string, string>): ISummaryTree;\n\n /**\n * Propagate the container state when container is attaching or attached.\n * @param attachState - State of the container.\n */\n setAttachState(attachState: AttachState.Attaching | AttachState.Attached): void;\n\n /**\n * Get pending local state in a serializable format to be given back to a newly loaded container\n */\n getPendingLocalState(): unknown;\n\n /**\n * Notify runtime that container is moving to \"Attaching\" state\n * @param snapshot - snapshot created at attach time\n */\n notifyAttaching(snapshot: ISnapshotTreeWithBlobContents): void;\n}\n\n/**\n * Payload type for IContainerContext.submitBatchFn()\n */\nexport interface IBatchMessage {\n contents?: string;\n metadata: Record<string, unknown> | undefined;\n compression?: string;\n}\n\n/**\n * The ContainerContext is a proxy standing between the Container and the Container's IRuntime.\n * This allows the Container to terminate the connection to the IRuntime.\n *\n * Specifically, there is an event on Container, onContextChanged, which mean a new code proposal has been loaded,\n * so the old IRuntime is no longer valid, as its ContainerContext has been revoked,\n * and the Container has created a new ContainerContext.\n */\nexport interface IContainerContext extends IDisposable {\n /** @deprecated Please pass in existing directly in instantiateRuntime */\n readonly existing: boolean | undefined;\n readonly options: ILoaderOptions;\n readonly clientId: string | undefined;\n readonly clientDetails: IClientDetails;\n readonly storage: IDocumentStorageService;\n readonly connected: boolean;\n readonly baseSnapshot: ISnapshotTree | undefined;\n /** @deprecated Please use submitBatchFn & submitSummaryFn */\n readonly submitFn: (type: MessageType, contents: any, batch: boolean, appData?: any) => number;\n /** @returns clientSequenceNumber of last message in a batch */\n readonly submitBatchFn: (batch: IBatchMessage[]) => number;\n readonly submitSummaryFn: (summaryOp: ISummaryContent) => number;\n readonly submitSignalFn: (contents: any) => void;\n readonly closeFn: (error?: ICriticalContainerError) => void;\n readonly deltaManager: IDeltaManager<ISequencedDocumentMessage, IDocumentMessage>;\n readonly quorum: IQuorumClients;\n /**\n * @deprecated This method is provided as a migration tool for customers currently reading the code details\n * from within the Container by directly accessing the Quorum proposals. The code details should not be accessed\n * from within the Container as this requires coupling between the container contents and the code loader.\n * Direct access to Quorum proposals will be removed in an upcoming release, and in a further future release this\n * migration tool will be removed.\n */\n getSpecifiedCodeDetails?(): IFluidCodeDetails | undefined;\n readonly audience: IAudience | undefined;\n readonly loader: ILoader;\n // The logger implementation, which would support tagged events, should be provided by the loader.\n readonly taggedLogger: ITelemetryBaseLogger;\n readonly serviceConfiguration: IClientConfiguration | undefined;\n pendingLocalState?: unknown;\n\n /**\n * Ambient services provided with the context\n */\n readonly scope: FluidObject;\n\n /**\n * Get an absolute url for a provided container-relative request.\n * @param relativeUrl - A relative request within the container\n *\n * TODO: Optional for backwards compatibility. Make non-optional in version 0.19\n */\n getAbsoluteUrl?(relativeUrl: string): Promise<string | undefined>;\n\n /**\n * Indicates the attachment state of the container to a host service.\n */\n readonly attachState: AttachState;\n\n getLoadedFromVersion(): IVersion | undefined;\n\n updateDirtyContainerState(dirty: boolean): void;\n /**\n * WARNING: this id is meant for telemetry usages ONLY, not recommended for other consumption\n * This id is not supposed to be exposed anywhere else. It is dependant on usage or drivers\n * and scenarios which can change in the future.\n */\n readonly id: string;\n}\n\nexport const IRuntimeFactory: keyof IProvideRuntimeFactory = \"IRuntimeFactory\";\n\nexport interface IProvideRuntimeFactory {\n readonly IRuntimeFactory: IRuntimeFactory;\n}\n\n/**\n * Exported module definition\n *\n * Provides the entry point for the ContainerContext to load the proper IRuntime\n * to start up the running instance of the Container.\n */\nexport interface IRuntimeFactory extends IProvideRuntimeFactory {\n /**\n * Instantiates a new IRuntime for the given IContainerContext to proxy to\n * This is the main entry point to the Container's business logic\n *\n * @param context - container context to be supplied to the runtime\n * @param existing - whether to instantiate for the first time or from an existing context\n */\n instantiateRuntime(context: IContainerContext, existing?: boolean): Promise<IRuntime>;\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluidframework/container-definitions",
3
- "version": "2.0.0-internal.2.1.1",
3
+ "version": "2.0.0-internal.2.2.0",
4
4
  "description": "Fluid container definitions",
5
5
  "homepage": "https://fluidframework.com",
6
6
  "repository": {
@@ -32,33 +32,43 @@
32
32
  "eslint:fix": "eslint --format stylish src --fix --fix-type problem,suggestion,layout",
33
33
  "lint": "npm run eslint",
34
34
  "lint:fix": "npm run eslint:fix",
35
+ "prettier": "prettier --check . --ignore-path ../../../.prettierignore",
36
+ "prettier:fix": "prettier --write . --ignore-path ../../../.prettierignore",
35
37
  "tsc": "tsc",
36
38
  "tsc:watch": "tsc --watch",
37
- "typetests:gen": "fluid-type-validator -g -d ."
39
+ "typetests:gen": "flub generate typetests --generate --dir .",
40
+ "typetests:prepare": "flub generate typetests --prepare --dir . --pin"
38
41
  },
39
42
  "dependencies": {
40
43
  "@fluidframework/common-definitions": "^0.20.1",
41
- "@fluidframework/core-interfaces": ">=2.0.0-internal.2.1.1 <2.0.0-internal.3.0.0",
42
- "@fluidframework/driver-definitions": ">=2.0.0-internal.2.1.1 <2.0.0-internal.3.0.0",
44
+ "@fluidframework/core-interfaces": ">=2.0.0-internal.2.2.0 <2.0.0-internal.3.0.0",
45
+ "@fluidframework/driver-definitions": ">=2.0.0-internal.2.2.0 <2.0.0-internal.3.0.0",
43
46
  "@fluidframework/protocol-definitions": "^1.1.0"
44
47
  },
45
48
  "devDependencies": {
46
- "@fluid-tools/build-cli": "^0.5.0",
49
+ "@fluid-tools/build-cli": "^0.7.0",
47
50
  "@fluidframework/build-common": "^1.1.0",
48
- "@fluidframework/build-tools": "^0.5.0",
49
- "@fluidframework/container-definitions-previous": "npm:@fluidframework/container-definitions@2.0.0-internal.2.0.0",
50
- "@fluidframework/eslint-config-fluid": "^1.1.0",
51
+ "@fluidframework/build-tools": "^0.7.0",
52
+ "@fluidframework/container-definitions-previous": "npm:@fluidframework/container-definitions@2.0.0-internal.2.1.0",
53
+ "@fluidframework/eslint-config-fluid": "^1.2.0",
51
54
  "@microsoft/api-extractor": "^7.22.2",
52
55
  "@rushstack/eslint-config": "^2.5.1",
53
56
  "@types/node": "^14.18.0",
54
57
  "concurrently": "^6.2.0",
55
58
  "copyfiles": "^2.4.1",
56
59
  "eslint": "~8.6.0",
60
+ "prettier": "~2.6.2",
57
61
  "rimraf": "^2.6.2",
58
62
  "typescript": "~4.5.5"
59
63
  },
60
64
  "typeValidation": {
61
- "version": "2.0.0-internal.2.1.0",
62
- "broken": {}
65
+ "version": "2.0.0-internal.2.2.0",
66
+ "baselineRange": ">=2.0.0-internal.2.1.0 <2.0.0-internal.2.2.0",
67
+ "baselineVersion": "2.0.0-internal.2.1.0",
68
+ "broken": {
69
+ "InterfaceDeclaration_IBatchMessage": {
70
+ "backCompat": false
71
+ }
72
+ }
63
73
  }
64
74
  }
@@ -0,0 +1,8 @@
1
+ /*!
2
+ * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+
6
+ module.exports = {
7
+ ...require("@fluidframework/build-common/prettier.config.cjs"),
8
+ };