@fluidframework/container-definitions 2.0.0-internal.2.1.2 → 2.0.0-internal.2.2.1
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/.eslintrc.js +2 -1
- package/dist/deltas.d.ts +105 -13
- package/dist/deltas.d.ts.map +1 -1
- package/dist/deltas.js.map +1 -1
- package/dist/error.d.ts +2 -1
- package/dist/error.d.ts.map +1 -1
- package/dist/error.js.map +1 -1
- package/dist/loader.d.ts +174 -40
- package/dist/loader.d.ts.map +1 -1
- package/dist/loader.js.map +1 -1
- package/dist/runtime.d.ts +2 -1
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js.map +1 -1
- package/lib/deltas.d.ts +105 -13
- package/lib/deltas.d.ts.map +1 -1
- package/lib/deltas.js.map +1 -1
- package/lib/error.d.ts +2 -1
- package/lib/error.d.ts.map +1 -1
- package/lib/error.js.map +1 -1
- package/lib/loader.d.ts +174 -40
- package/lib/loader.d.ts.map +1 -1
- package/lib/loader.js.map +1 -1
- package/lib/runtime.d.ts +2 -1
- package/lib/runtime.d.ts.map +1 -1
- package/lib/runtime.js.map +1 -1
- package/package.json +11 -8
- package/prettier.config.cjs +8 -0
- package/src/deltas.ts +120 -13
- package/src/error.ts +2 -1
- package/src/loader.ts +187 -40
- package/src/runtime.ts +2 -1
package/src/deltas.ts
CHANGED
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
} from "@fluidframework/protocol-definitions";
|
|
17
17
|
|
|
18
18
|
/**
|
|
19
|
-
* Contract representing the result of a newly established connection to the server for syncing deltas
|
|
19
|
+
* Contract representing the result of a newly established connection to the server for syncing deltas.
|
|
20
20
|
*/
|
|
21
21
|
export interface IConnectionDetails {
|
|
22
22
|
clientId: string;
|
|
@@ -26,9 +26,13 @@ export interface IConnectionDetails {
|
|
|
26
26
|
version: string;
|
|
27
27
|
initialClients: ISignalClient[];
|
|
28
28
|
serviceConfiguration: IClientConfiguration;
|
|
29
|
+
|
|
29
30
|
/**
|
|
30
|
-
* Last known sequence number to ordering service at the time of connection
|
|
31
|
-
*
|
|
31
|
+
* Last known sequence number to ordering service at the time of connection.
|
|
32
|
+
*
|
|
33
|
+
* @remarks
|
|
34
|
+
*
|
|
35
|
+
* It may lap actual last sequence number (quite a bit, if container is very active).
|
|
32
36
|
* But it's the best information for client to figure out how far it is behind, at least
|
|
33
37
|
* for "read" connections. "write" connections may use own "join" op to similar information,
|
|
34
38
|
* that is likely to be more up-to-date.
|
|
@@ -61,21 +65,88 @@ export interface IDeltaSender {
|
|
|
61
65
|
flush(): void;
|
|
62
66
|
}
|
|
63
67
|
|
|
64
|
-
/**
|
|
68
|
+
/**
|
|
69
|
+
* Events emitted by {@link IDeltaManager}.
|
|
70
|
+
*/
|
|
71
|
+
/* eslint-disable @typescript-eslint/unified-signatures */
|
|
65
72
|
export interface IDeltaManagerEvents extends IEvent {
|
|
73
|
+
/**
|
|
74
|
+
* @deprecated No replacement API recommended.
|
|
75
|
+
*/
|
|
66
76
|
(event: "prepareSend", listener: (messageBuffer: any[]) => void);
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* @deprecated No replacement API recommended.
|
|
80
|
+
*/
|
|
67
81
|
(event: "submitOp", listener: (message: IDocumentMessage) => void);
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Emitted immediately after processing an incoming operation (op).
|
|
85
|
+
*
|
|
86
|
+
* @remarks
|
|
87
|
+
*
|
|
88
|
+
* Note: this event is not intended for general use.
|
|
89
|
+
* Prefer to listen to events on the appropriate ultimate recipients of the ops, rather than listening to the
|
|
90
|
+
* ops directly on the {@link IDeltaManager}.
|
|
91
|
+
*
|
|
92
|
+
* Listener parameters:
|
|
93
|
+
*
|
|
94
|
+
* - `message`: The op that was processed.
|
|
95
|
+
*
|
|
96
|
+
* - `processingTime`: The amount of time it took to process the inbound operation (op), expressed in milliseconds.
|
|
97
|
+
*/
|
|
68
98
|
(event: "op", listener: (message: ISequencedDocumentMessage, processingTime: number) => void);
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* @deprecated No replacement API recommended.
|
|
102
|
+
*/
|
|
69
103
|
(event: "allSentOpsAckd", listener: () => void);
|
|
70
|
-
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* @deprecated No replacement API recommended.
|
|
107
|
+
*/
|
|
108
|
+
(event: "pong", listener: (latency: number) => void);
|
|
109
|
+
|
|
71
110
|
/**
|
|
72
|
-
*
|
|
73
|
-
|
|
111
|
+
* @deprecated No replacement API recommended.
|
|
112
|
+
*/
|
|
113
|
+
(event: "processTime", listener: (latency: number) => void);
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Emitted when the {@link IDeltaManager} completes connecting to the Fluid service.
|
|
117
|
+
*
|
|
118
|
+
* @remarks
|
|
119
|
+
* This occurs once we've received the connect_document_success message from the server,
|
|
120
|
+
* and happens prior to the client's join message (if there is a join message).
|
|
121
|
+
*
|
|
122
|
+
* Listener parameters:
|
|
123
|
+
*
|
|
124
|
+
* - `details`: Connection metadata.
|
|
125
|
+
*
|
|
126
|
+
* - `opsBehind`: An estimate of far behind the client is relative to the service in terms of ops.
|
|
127
|
+
* Will not be specified if an estimate cannot be determined.
|
|
74
128
|
*/
|
|
75
129
|
(event: "connect", listener: (details: IConnectionDetails, opsBehind?: number) => void);
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* Emitted when the {@link IDeltaManager} becomes disconnected from the Fluid service.
|
|
133
|
+
*
|
|
134
|
+
* @remarks Listener parameters:
|
|
135
|
+
*
|
|
136
|
+
* - `reason`: Describes the reason for which the delta manager was disconnected.
|
|
137
|
+
*/
|
|
76
138
|
(event: "disconnect", listener: (reason: string) => void);
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Emitted when read/write permissions change.
|
|
142
|
+
*
|
|
143
|
+
* @remarks Listener parameters:
|
|
144
|
+
*
|
|
145
|
+
* - `readonly`: Whether or not the delta manager is now read-only.
|
|
146
|
+
*/
|
|
77
147
|
(event: "readonly", listener: (readonly: boolean) => void);
|
|
78
148
|
}
|
|
149
|
+
/* eslint-enable @typescript-eslint/unified-signatures */
|
|
79
150
|
|
|
80
151
|
/**
|
|
81
152
|
* Manages the transmission of ops between the runtime and storage.
|
|
@@ -132,15 +203,49 @@ export interface IDeltaManager<T, U> extends IEventProvider<IDeltaManagerEvents>
|
|
|
132
203
|
submitSignal(content: any): void;
|
|
133
204
|
}
|
|
134
205
|
|
|
135
|
-
/**
|
|
206
|
+
/**
|
|
207
|
+
* Events emitted by {@link IDeltaQueue}.
|
|
208
|
+
*/
|
|
209
|
+
/* eslint-disable @typescript-eslint/unified-signatures */
|
|
136
210
|
export interface IDeltaQueueEvents<T> extends IErrorEvent {
|
|
137
|
-
(event: "push" | "op", listener: (task: T) => void);
|
|
138
211
|
/**
|
|
139
|
-
*
|
|
140
|
-
*
|
|
212
|
+
* Emitted when a task is enqueued.
|
|
213
|
+
*
|
|
214
|
+
* @remarks Listener parameters:
|
|
215
|
+
*
|
|
216
|
+
* - `task`: The task being enqueued.
|
|
217
|
+
*/
|
|
218
|
+
(event: "push", listener: (task: T) => void);
|
|
219
|
+
|
|
220
|
+
/**
|
|
221
|
+
* Emitted immediately after processing an enqueued task and removing it from the queue.
|
|
222
|
+
*
|
|
223
|
+
* @remarks
|
|
224
|
+
*
|
|
225
|
+
* Note: this event is not intended for general use.
|
|
226
|
+
* Prefer to listen to events on the appropriate ultimate recipients of the ops, rather than listening to the
|
|
227
|
+
* ops directly on the {@link IDeltaQueue}.
|
|
228
|
+
*
|
|
229
|
+
* Listener parameters:
|
|
230
|
+
*
|
|
231
|
+
* - `task`: The task that was processed.
|
|
232
|
+
*/
|
|
233
|
+
(event: "op", listener: (task: T) => void);
|
|
234
|
+
|
|
235
|
+
/**
|
|
236
|
+
* Emitted when the queue of tasks to process is emptied.
|
|
237
|
+
*
|
|
238
|
+
* @remarks Listener parameters:
|
|
239
|
+
*
|
|
240
|
+
* - `count`: The number of events (`T`) processed before becoming idle.
|
|
241
|
+
*
|
|
242
|
+
* - `duration`: The amount of time it took to process elements (in milliseconds).
|
|
243
|
+
*
|
|
244
|
+
* @see {@link IDeltaQueue.idle}
|
|
141
245
|
*/
|
|
142
246
|
(event: "idle", listener: (count: number, duration: number) => void);
|
|
143
247
|
}
|
|
248
|
+
/* eslint-enable @typescript-eslint/unified-signatures */
|
|
144
249
|
|
|
145
250
|
/**
|
|
146
251
|
* Queue of ops to be sent to or processed from storage
|
|
@@ -157,12 +262,14 @@ export interface IDeltaQueue<T> extends IEventProvider<IDeltaQueueEvents<T>>, ID
|
|
|
157
262
|
length: number;
|
|
158
263
|
|
|
159
264
|
/**
|
|
160
|
-
* Flag indicating whether or not the queue is idle
|
|
265
|
+
* Flag indicating whether or not the queue is idle.
|
|
266
|
+
* I.e. there are no remaining messages to processes.
|
|
161
267
|
*/
|
|
162
268
|
idle: boolean;
|
|
163
269
|
|
|
164
270
|
/**
|
|
165
|
-
* Pauses processing on the queue
|
|
271
|
+
* Pauses processing on the queue.
|
|
272
|
+
*
|
|
166
273
|
* @returns A promise which resolves when processing has been paused.
|
|
167
274
|
*/
|
|
168
275
|
pause(): Promise<void>;
|
package/src/error.ts
CHANGED
|
@@ -76,7 +76,8 @@ export interface IErrorBase extends Partial<Error> {
|
|
|
76
76
|
export interface ContainerWarning extends IErrorBase {
|
|
77
77
|
/**
|
|
78
78
|
* Whether this error has already been logged. Used to avoid logging errors twice.
|
|
79
|
-
*
|
|
79
|
+
*
|
|
80
|
+
* @defaultValue `false`
|
|
80
81
|
*/
|
|
81
82
|
logged?: boolean;
|
|
82
83
|
}
|
package/src/loader.ts
CHANGED
|
@@ -54,7 +54,7 @@ export interface IFluidModuleWithDetails {
|
|
|
54
54
|
export interface ICodeDetailsLoader
|
|
55
55
|
extends Partial<IProvideFluidCodeDetailsComparer> {
|
|
56
56
|
/**
|
|
57
|
-
* Load the code module (package) that
|
|
57
|
+
* Load the code module (package) that can interact with the document.
|
|
58
58
|
*
|
|
59
59
|
* @param source - Code proposal that articulates the current schema the document is written in.
|
|
60
60
|
* @returns - Code module entry point along with the code details associated with it.
|
|
@@ -63,7 +63,7 @@ export interface ICodeDetailsLoader
|
|
|
63
63
|
}
|
|
64
64
|
|
|
65
65
|
/**
|
|
66
|
-
* The interface returned from a IFluidCodeResolver which represents IFluidCodeDetails
|
|
66
|
+
* The interface returned from a IFluidCodeResolver which represents IFluidCodeDetails
|
|
67
67
|
* that have been resolved and are ready to load
|
|
68
68
|
*/
|
|
69
69
|
export interface IResolvedFluidCodeDetails extends IFluidCodeDetails {
|
|
@@ -102,23 +102,147 @@ export interface ICodeAllowList {
|
|
|
102
102
|
}
|
|
103
103
|
|
|
104
104
|
/**
|
|
105
|
-
* Events emitted by the
|
|
105
|
+
* Events emitted by the {@link IContainer} "upwards" to the Loader and Host.
|
|
106
106
|
*/
|
|
107
|
+
/* eslint-disable @typescript-eslint/unified-signatures */
|
|
107
108
|
export interface IContainerEvents extends IEvent {
|
|
109
|
+
/**
|
|
110
|
+
* Emitted when the readonly state of the container changes.
|
|
111
|
+
*
|
|
112
|
+
* @remarks Listener parameters:
|
|
113
|
+
*
|
|
114
|
+
* - `readonly`: Whether or not the container is now in a readonly state.
|
|
115
|
+
*
|
|
116
|
+
* @see {@link IContainer.readOnlyInfo}
|
|
117
|
+
*/
|
|
108
118
|
(event: "readonly", listener: (readonly: boolean) => void): void;
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Emitted when the {@link IContainer} completes connecting to the Fluid service.
|
|
122
|
+
*
|
|
123
|
+
* @remarks Reflects connection state changes against the (delta) service acknowledging ops/edits.
|
|
124
|
+
*
|
|
125
|
+
* @see
|
|
126
|
+
*
|
|
127
|
+
* - {@link IContainer.connectionState}
|
|
128
|
+
*
|
|
129
|
+
* - {@link IContainer.connect}
|
|
130
|
+
*/
|
|
109
131
|
(event: "connected", listener: (clientId: string) => void);
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* Fires when new container code details have been proposed, prior to acceptance.
|
|
135
|
+
*
|
|
136
|
+
* @remarks Listener parameters:
|
|
137
|
+
*
|
|
138
|
+
* - `codeDetails`: The code details being proposed.
|
|
139
|
+
*
|
|
140
|
+
* - `proposal`: NOT RECOMMENDED FOR USE.
|
|
141
|
+
*
|
|
142
|
+
* @see {@link IContainer.proposeCodeDetails}
|
|
143
|
+
*/
|
|
110
144
|
(event: "codeDetailsProposed", listener: (codeDetails: IFluidCodeDetails, proposal: ISequencedProposal) => void);
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* @deprecated No replacement API recommended.
|
|
148
|
+
*/
|
|
111
149
|
(event: "contextChanged", listener: (codeDetails: IFluidCodeDetails) => void);
|
|
112
|
-
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Emitted when the {@link IContainer} becomes disconnected from the Fluid service.
|
|
153
|
+
*
|
|
154
|
+
* @remarks Reflects connection state changes against the (delta) service acknowledging ops/edits.
|
|
155
|
+
*
|
|
156
|
+
* @see
|
|
157
|
+
*
|
|
158
|
+
* - {@link IContainer.connectionState}
|
|
159
|
+
*
|
|
160
|
+
* - {@link IContainer.disconnect}
|
|
161
|
+
*/
|
|
162
|
+
(event: "disconnected", listener: () => void);
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* Emitted when a {@link AttachState.Detached | detached} container is
|
|
166
|
+
* {@link AttachState.Attached | attached} to the Fluid service.
|
|
167
|
+
*
|
|
168
|
+
* @see
|
|
169
|
+
*
|
|
170
|
+
* - {@link IContainer.attachState}
|
|
171
|
+
*
|
|
172
|
+
* - {@link IContainer.attach}
|
|
173
|
+
*/
|
|
174
|
+
(event: "attached", listener: () => void);
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* Emitted when the {@link IContainer} is closed, which permanently disables it.
|
|
178
|
+
*
|
|
179
|
+
* @remarks Listener parameters:
|
|
180
|
+
*
|
|
181
|
+
* - `error`: If the container was closed due to error, this will contain details about the error that caused it.
|
|
182
|
+
*
|
|
183
|
+
* @see {@link IContainer.close}
|
|
184
|
+
*/
|
|
113
185
|
(event: "closed", listener: (error?: ICriticalContainerError) => void);
|
|
186
|
+
|
|
187
|
+
/**
|
|
188
|
+
* Emitted when the container encounters a state which may lead to errors, which may be actionable by the consumer.
|
|
189
|
+
*
|
|
190
|
+
* @remarks
|
|
191
|
+
*
|
|
192
|
+
* Note: this event is not intended for general use.
|
|
193
|
+
* The longer-term intention is to surface warnings more directly on the APIs that produce them.
|
|
194
|
+
* For now, use of this should be avoided when possible.
|
|
195
|
+
*
|
|
196
|
+
* Listener parameters:
|
|
197
|
+
*
|
|
198
|
+
* - `error`: The warning describing the encountered state.
|
|
199
|
+
*/
|
|
114
200
|
(event: "warning", listener: (error: ContainerWarning) => void);
|
|
201
|
+
|
|
202
|
+
/**
|
|
203
|
+
* Emitted immediately after processing an incoming operation (op).
|
|
204
|
+
*
|
|
205
|
+
* @remarks
|
|
206
|
+
*
|
|
207
|
+
* Note: this event is not intended for general use.
|
|
208
|
+
* Prefer to listen to events on the appropriate ultimate recipients of the ops, rather than listening to the
|
|
209
|
+
* ops directly on the {@link IContainer}.
|
|
210
|
+
*
|
|
211
|
+
* Listener parameters:
|
|
212
|
+
*
|
|
213
|
+
* - `message`: The op that was processed.
|
|
214
|
+
*/
|
|
115
215
|
(event: "op", listener: (message: ISequencedDocumentMessage) => void);
|
|
116
|
-
|
|
216
|
+
|
|
217
|
+
/**
|
|
218
|
+
* Emitted upon the first local change while the Container is in the "saved" state.
|
|
219
|
+
* That is, when {@link IContainer.isDirty} transitions from `true` to `false`.
|
|
220
|
+
*
|
|
221
|
+
* @remarks Listener parameters:
|
|
222
|
+
*
|
|
223
|
+
* - `dirty`: DEPRECATED. This parameter will be removed in a future release.
|
|
224
|
+
*
|
|
225
|
+
* @see {@link IContainer.isDirty}
|
|
226
|
+
*/
|
|
227
|
+
(event: "dirty", listener: (dirty: boolean) => void);
|
|
228
|
+
|
|
229
|
+
/**
|
|
230
|
+
* Emitted when all local changes/edits have been acknowledged by the service.
|
|
231
|
+
* I.e., when {@link IContainer.isDirty} transitions from `false` to `true`.
|
|
232
|
+
*
|
|
233
|
+
* @remarks Listener parameters:
|
|
234
|
+
*
|
|
235
|
+
* - `dirty`: DEPRECATED. This parameter will be removed in a future release.
|
|
236
|
+
*
|
|
237
|
+
* @see {@link IContainer.isDirty}
|
|
238
|
+
*/
|
|
239
|
+
(event: "saved", listener: (dirty: boolean) => void);
|
|
117
240
|
}
|
|
241
|
+
/* eslint-enable @typescript-eslint/unified-signatures */
|
|
118
242
|
|
|
119
243
|
/**
|
|
120
|
-
* Namespace for the different connection states a container can be in
|
|
121
|
-
* PLEASE NOTE: The sequence of the numerical values does no correspond to the typical connection state progression
|
|
244
|
+
* Namespace for the different connection states a container can be in.
|
|
245
|
+
* PLEASE NOTE: The sequence of the numerical values does no correspond to the typical connection state progression.
|
|
122
246
|
*/
|
|
123
247
|
// eslint-disable-next-line @typescript-eslint/no-namespace
|
|
124
248
|
export namespace ConnectionState {
|
|
@@ -147,7 +271,7 @@ export namespace ConnectionState {
|
|
|
147
271
|
}
|
|
148
272
|
|
|
149
273
|
/**
|
|
150
|
-
* Type defining the different states of connectivity a
|
|
274
|
+
* Type defining the different states of connectivity a Container can be in.
|
|
151
275
|
*/
|
|
152
276
|
export type ConnectionState =
|
|
153
277
|
| ConnectionState.Disconnected
|
|
@@ -156,7 +280,7 @@ export type ConnectionState =
|
|
|
156
280
|
| ConnectionState.Connected;
|
|
157
281
|
|
|
158
282
|
/**
|
|
159
|
-
* The Host's view of
|
|
283
|
+
* The Host's view of a Container and its connection to storage
|
|
160
284
|
*/
|
|
161
285
|
export interface IContainer extends IEventProvider<IContainerEvents>, IFluidRouter {
|
|
162
286
|
|
|
@@ -172,7 +296,7 @@ export interface IContainer extends IEventProvider<IContainerEvents>, IFluidRout
|
|
|
172
296
|
getQuorum(): IQuorumClients;
|
|
173
297
|
|
|
174
298
|
/**
|
|
175
|
-
* Represents the resolved url to the Container
|
|
299
|
+
* Represents the resolved url to the Container.
|
|
176
300
|
* Will be undefined only when the container is in the {@link AttachState.Detached | detatched} state.
|
|
177
301
|
*/
|
|
178
302
|
resolvedUrl: IResolvedUrl | undefined;
|
|
@@ -196,54 +320,57 @@ export interface IContainer extends IEventProvider<IContainerEvents>, IFluidRout
|
|
|
196
320
|
getLoadedCodeDetails(): IFluidCodeDetails | undefined;
|
|
197
321
|
|
|
198
322
|
/**
|
|
199
|
-
* Returns true if the container has been closed, otherwise false
|
|
323
|
+
* Returns true if the container has been closed, otherwise false.
|
|
200
324
|
*/
|
|
201
325
|
readonly closed: boolean;
|
|
202
326
|
|
|
203
327
|
/**
|
|
204
|
-
*
|
|
205
|
-
* Closing container in this state results in data loss for user.
|
|
206
|
-
* Container usually gets into this situation due to loss of connectivity.
|
|
328
|
+
* Whether or not there are any local changes that have not been saved.
|
|
207
329
|
*/
|
|
208
330
|
readonly isDirty: boolean;
|
|
209
331
|
|
|
210
332
|
/**
|
|
211
|
-
* Closes the container
|
|
333
|
+
* Closes the container.
|
|
334
|
+
*
|
|
335
|
+
* @param error - If the container is being closed due to error, this provides details about the error that
|
|
336
|
+
* resulted in closing it.
|
|
212
337
|
*/
|
|
213
338
|
close(error?: ICriticalContainerError): void;
|
|
214
339
|
|
|
215
340
|
/**
|
|
216
341
|
* Closes the container and returns serialized local state intended to be
|
|
217
|
-
* given to a newly loaded container
|
|
342
|
+
* given to a newly loaded container.
|
|
218
343
|
*/
|
|
219
344
|
closeAndGetPendingLocalState(): string;
|
|
220
345
|
|
|
221
346
|
/**
|
|
222
|
-
* Propose new code details that define the code to be loaded
|
|
223
|
-
*
|
|
224
|
-
* be true when the proposal is accepted, and false if
|
|
225
|
-
* the proposal is rejected.
|
|
347
|
+
* Propose new code details that define the code to be loaded for this container's runtime.
|
|
348
|
+
*
|
|
349
|
+
* The returned promise will be true when the proposal is accepted, and false if the proposal is rejected.
|
|
226
350
|
*/
|
|
227
351
|
proposeCodeDetails(codeDetails: IFluidCodeDetails): Promise<boolean>;
|
|
228
352
|
|
|
229
353
|
/**
|
|
230
354
|
* Attaches the Container to the Container specified by the given Request.
|
|
231
355
|
*
|
|
232
|
-
*
|
|
233
|
-
*
|
|
356
|
+
* @privateRemarks
|
|
357
|
+
*
|
|
358
|
+
* TODO - in the case of failure options should give a retry policy.
|
|
359
|
+
* Or some continuation function that allows attachment to a secondary document.
|
|
234
360
|
*/
|
|
235
361
|
attach(request: IRequest): Promise<void>;
|
|
236
362
|
|
|
237
363
|
/**
|
|
238
|
-
* Extract
|
|
364
|
+
* Extract a snapshot of the container as long as it is in detached state. Calling this on an attached container
|
|
365
|
+
* is an error.
|
|
239
366
|
*/
|
|
240
367
|
serialize(): string;
|
|
241
368
|
|
|
242
369
|
/**
|
|
243
|
-
* Get an absolute
|
|
370
|
+
* Get an absolute URL for a provided container-relative request URL.
|
|
244
371
|
* If the container is not attached, this will return undefined.
|
|
245
372
|
*
|
|
246
|
-
* @param relativeUrl - A container-relative request URL
|
|
373
|
+
* @param relativeUrl - A container-relative request URL.
|
|
247
374
|
*/
|
|
248
375
|
getAbsoluteUrl(relativeUrl: string): Promise<string | undefined>;
|
|
249
376
|
|
|
@@ -254,34 +381,50 @@ export interface IContainer extends IEventProvider<IContainerEvents>, IFluidRout
|
|
|
254
381
|
request(request: IRequest): Promise<IResponse>;
|
|
255
382
|
|
|
256
383
|
/**
|
|
257
|
-
* Provides the current state of the container's connection to the ordering service
|
|
384
|
+
* Provides the current state of the container's connection to the ordering service.
|
|
385
|
+
*
|
|
386
|
+
* @remarks Consumers can listen for state changes via the "connected" and "disconnected" events.
|
|
258
387
|
*/
|
|
259
388
|
readonly connectionState: ConnectionState;
|
|
260
389
|
|
|
261
390
|
/**
|
|
262
|
-
* Attempts to connect the container to the delta stream and process ops
|
|
391
|
+
* Attempts to connect the container to the delta stream and process ops.
|
|
392
|
+
*
|
|
393
|
+
* @remarks
|
|
394
|
+
*
|
|
395
|
+
* {@link IContainer.connectionState} will be set to {@link (ConnectionState:namespace).Connected}, and the
|
|
396
|
+
* "connected" event will be fired if/when connection succeeds.
|
|
263
397
|
*/
|
|
264
398
|
connect(): void;
|
|
265
399
|
|
|
266
400
|
/**
|
|
267
|
-
* Disconnects the container from the delta stream and stops processing ops
|
|
401
|
+
* Disconnects the container from the delta stream and stops processing ops.
|
|
402
|
+
*
|
|
403
|
+
* @remarks
|
|
404
|
+
*
|
|
405
|
+
* {@link IContainer.connectionState} will be set to {@link (ConnectionState:namespace).Disconnected}, and the
|
|
406
|
+
* "disconnected" event will be fired when disconnection completes.
|
|
268
407
|
*/
|
|
269
408
|
disconnect(): void;
|
|
270
409
|
|
|
271
410
|
/**
|
|
272
|
-
* The audience information for all clients currently associated with the document in the current session
|
|
411
|
+
* The audience information for all clients currently associated with the document in the current session.
|
|
273
412
|
*/
|
|
274
413
|
readonly audience: IAudience;
|
|
275
414
|
|
|
276
415
|
/**
|
|
277
416
|
* The server provided ID of the client.
|
|
278
|
-
*
|
|
279
|
-
* @
|
|
417
|
+
*
|
|
418
|
+
* Set once {@link IContainer.connectionState} is {@link (ConnectionState:namespace).Connected},
|
|
419
|
+
* otherwise will be `undefined`.
|
|
280
420
|
*/
|
|
281
421
|
readonly clientId?: string | undefined;
|
|
282
422
|
|
|
283
423
|
/**
|
|
284
424
|
* Tells if container is in read-only mode.
|
|
425
|
+
*
|
|
426
|
+
* @remarks
|
|
427
|
+
*
|
|
285
428
|
* Data stores should listen for "readonly" notifications and disallow user making changes to data stores.
|
|
286
429
|
* Readonly state can be because of no storage write permission,
|
|
287
430
|
* or due to host forcing readonly mode for container.
|
|
@@ -310,6 +453,8 @@ export interface ILoader extends IFluidRouter, Partial<IProvideLoader> {
|
|
|
310
453
|
* Resolves the resource specified by the URL + headers contained in the request object
|
|
311
454
|
* to the underlying container that will resolve the request.
|
|
312
455
|
*
|
|
456
|
+
* @remarks
|
|
457
|
+
*
|
|
313
458
|
* An analogy for this is resolve is a DNS resolve of a Fluid container. Request then executes
|
|
314
459
|
* a request against the server found from the resolve step.
|
|
315
460
|
*/
|
|
@@ -337,27 +482,27 @@ export type ILoaderOptions = {
|
|
|
337
482
|
[key in string | number]: any;
|
|
338
483
|
} & {
|
|
339
484
|
/**
|
|
340
|
-
* Set caching behavior for the loader.
|
|
485
|
+
* Set caching behavior for the loader. If true, we will load a container from cache if one
|
|
341
486
|
* with the same id/version exists or create a new container and cache it if it does not. If
|
|
342
487
|
* false, always load a new container and don't cache it. If the container has already been
|
|
343
|
-
* closed, it will not be cached.
|
|
488
|
+
* closed, it will not be cached. A cache option in the LoaderHeader for an individual
|
|
344
489
|
* request will override the Loader's value.
|
|
345
490
|
* Defaults to true.
|
|
346
491
|
*/
|
|
347
492
|
cache?: boolean;
|
|
348
493
|
|
|
349
494
|
/**
|
|
350
|
-
* Provide the current Loader through the scope object when creating Containers.
|
|
495
|
+
* Provide the current Loader through the scope object when creating Containers. It is added
|
|
351
496
|
* as the `ILoader` property, and will overwrite an existing property of the same name on the
|
|
352
|
-
* scope.
|
|
497
|
+
* scope. Useful for when the host wants to provide the current Loader's functionality to
|
|
353
498
|
* individual Data Stores, which is typically expected when creating with a Loader.
|
|
354
499
|
* Defaults to true.
|
|
355
500
|
*/
|
|
356
501
|
provideScopeLoader?: boolean;
|
|
357
502
|
|
|
358
503
|
/**
|
|
359
|
-
* Max time(in ms) container will wait for a leave message of a disconnected client.
|
|
360
|
-
|
|
504
|
+
* Max time (in ms) container will wait for a leave message of a disconnected client.
|
|
505
|
+
*/
|
|
361
506
|
maxClientLeaveWaitTime?: number;
|
|
362
507
|
};
|
|
363
508
|
|
|
@@ -409,6 +554,7 @@ export interface IContainerLoadMode {
|
|
|
409
554
|
* recommended to have some progress UX / cancellation built into loading flow when using this option.
|
|
410
555
|
*/
|
|
411
556
|
| "all";
|
|
557
|
+
|
|
412
558
|
deltaConnection?:
|
|
413
559
|
/*
|
|
414
560
|
* Connection to delta stream is made only when Container.connect() call is made. Op processing
|
|
@@ -449,7 +595,7 @@ export interface IProvideLoader {
|
|
|
449
595
|
/**
|
|
450
596
|
* @deprecated 0.48, This API will be removed in 0.50
|
|
451
597
|
* No replacement since it is not expected anyone will depend on this outside container-loader
|
|
452
|
-
* See https://github.com/microsoft/FluidFramework/issues/9711 for context
|
|
598
|
+
* See {@link https://github.com/microsoft/FluidFramework/issues/9711} for context.
|
|
453
599
|
*/
|
|
454
600
|
export interface IPendingLocalState {
|
|
455
601
|
url: string;
|
|
@@ -458,8 +604,9 @@ export interface IPendingLocalState {
|
|
|
458
604
|
|
|
459
605
|
/**
|
|
460
606
|
* This is used when we rehydrate a container from the snapshot. Here we put the blob contents
|
|
461
|
-
* in separate property:
|
|
462
|
-
*
|
|
607
|
+
* in separate property: {@link ISnapshotTreeWithBlobContents.blobsContents}.
|
|
608
|
+
*
|
|
609
|
+
* @remarks This is used as the `ContainerContext`'s base snapshot when attaching.
|
|
463
610
|
*/
|
|
464
611
|
export interface ISnapshotTreeWithBlobContents extends ISnapshotTree {
|
|
465
612
|
blobsContents: { [path: string]: ArrayBufferLike; };
|
package/src/runtime.ts
CHANGED
|
@@ -108,8 +108,9 @@ export interface IRuntime extends IDisposable {
|
|
|
108
108
|
* Payload type for IContainerContext.submitBatchFn()
|
|
109
109
|
*/
|
|
110
110
|
export interface IBatchMessage {
|
|
111
|
-
contents
|
|
111
|
+
contents?: string;
|
|
112
112
|
metadata: Record<string, unknown> | undefined;
|
|
113
|
+
compression?: string;
|
|
113
114
|
}
|
|
114
115
|
|
|
115
116
|
/**
|