fluid-framework 2.0.0-rc.2.0.2 → 2.0.0-rc.3.0.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/CHANGELOG.md +59 -0
- package/api-report/fluid-framework.api.md +612 -53
- package/dist/index.d.ts +7 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -4
- package/dist/index.js.map +1 -1
- package/dist/legacy.d.ts +148 -0
- package/dist/public.d.ts +109 -0
- package/legacy.d.ts +11 -0
- package/lib/index.d.ts +7 -4
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +6 -2
- package/lib/index.js.map +1 -1
- package/lib/legacy.d.ts +148 -0
- package/lib/public.d.ts +109 -0
- package/package.json +30 -57
- package/src/index.ts +54 -5
- package/api-extractor-cjs.json +0 -9
- package/dist/fluid-framework-alpha.d.ts +0 -2072
- package/dist/fluid-framework-beta.d.ts +0 -2051
- package/dist/fluid-framework-public.d.ts +0 -2051
- package/dist/fluid-framework-untrimmed.d.ts +0 -2072
- package/lib/fluid-framework-alpha.d.ts +0 -2072
- package/lib/fluid-framework-beta.d.ts +0 -2051
- package/lib/fluid-framework-public.d.ts +0 -2051
- package/lib/fluid-framework-untrimmed.d.ts +0 -2072
- /package/{dist → lib}/tsdoc-metadata.json +0 -0
|
@@ -4,18 +4,52 @@
|
|
|
4
4
|
|
|
5
5
|
```ts
|
|
6
6
|
|
|
7
|
+
import { Client } from '@fluidframework/merge-tree/internal';
|
|
8
|
+
import { Deferred } from '@fluidframework/core-utils/internal';
|
|
9
|
+
import { FieldSchemaUnsafe as FieldSchemaUnsafe_2 } from './typesUnsafe.js';
|
|
7
10
|
import { FluidObject } from '@fluidframework/core-interfaces';
|
|
8
11
|
import { IChannel } from '@fluidframework/datastore-definitions';
|
|
12
|
+
import { IChannelAttributes } from '@fluidframework/datastore-definitions';
|
|
9
13
|
import { IChannelFactory } from '@fluidframework/datastore-definitions';
|
|
14
|
+
import { IChannelServices } from '@fluidframework/datastore-definitions';
|
|
15
|
+
import { IChannelStorageService } from '@fluidframework/datastore-definitions';
|
|
16
|
+
import { IDisposable as IDisposable_2 } from '@fluidframework/core-interfaces';
|
|
10
17
|
import type { IErrorBase } from '@fluidframework/core-interfaces';
|
|
11
18
|
import { IEvent } from '@fluidframework/core-interfaces';
|
|
12
19
|
import { IEventProvider } from '@fluidframework/core-interfaces';
|
|
13
20
|
import { IEventThisPlaceHolder } from '@fluidframework/core-interfaces';
|
|
14
|
-
import
|
|
21
|
+
import { IFluidDataStoreRuntime } from '@fluidframework/datastore-definitions';
|
|
15
22
|
import { IFluidHandle } from '@fluidframework/core-interfaces';
|
|
16
23
|
import { IFluidLoadable } from '@fluidframework/core-interfaces';
|
|
24
|
+
import { IFluidSerializer } from '@fluidframework/shared-object-base';
|
|
25
|
+
import { IJSONSegment } from '@fluidframework/merge-tree/internal';
|
|
26
|
+
import { IMergeTreeDeltaCallbackArgs } from '@fluidframework/merge-tree/internal';
|
|
27
|
+
import { IMergeTreeDeltaOpArgs } from '@fluidframework/merge-tree/internal';
|
|
28
|
+
import { IMergeTreeGroupMsg } from '@fluidframework/merge-tree/internal';
|
|
29
|
+
import { IMergeTreeMaintenanceCallbackArgs } from '@fluidframework/merge-tree/internal';
|
|
30
|
+
import { IRelativePosition } from '@fluidframework/merge-tree/internal';
|
|
31
|
+
import { ISegment } from '@fluidframework/merge-tree/internal';
|
|
32
|
+
import { ISegmentAction } from '@fluidframework/merge-tree/internal';
|
|
33
|
+
import { ISequencedDocumentMessage } from '@fluidframework/protocol-definitions';
|
|
17
34
|
import { ISharedObject } from '@fluidframework/shared-object-base';
|
|
18
35
|
import { ISharedObjectEvents } from '@fluidframework/shared-object-base';
|
|
36
|
+
import { ISharedObjectKind } from '@fluidframework/shared-object-base';
|
|
37
|
+
import { ISummaryTreeWithStats } from '@fluidframework/runtime-definitions';
|
|
38
|
+
import { ITelemetryContext } from '@fluidframework/runtime-definitions';
|
|
39
|
+
import { LocalReferencePosition } from '@fluidframework/merge-tree/internal';
|
|
40
|
+
import { Marker } from '@fluidframework/merge-tree/internal';
|
|
41
|
+
import { MergeTreeDeltaOperationType } from '@fluidframework/merge-tree/internal';
|
|
42
|
+
import { MergeTreeDeltaOperationTypes } from '@fluidframework/merge-tree/internal';
|
|
43
|
+
import { MergeTreeMaintenanceType } from '@fluidframework/merge-tree/internal';
|
|
44
|
+
import { MergeTreeRevertibleDriver } from '@fluidframework/merge-tree/internal';
|
|
45
|
+
import { PropertiesManager } from '@fluidframework/merge-tree/internal';
|
|
46
|
+
import { PropertySet } from '@fluidframework/merge-tree/internal';
|
|
47
|
+
import { ReferencePosition } from '@fluidframework/merge-tree/internal';
|
|
48
|
+
import { ReferenceType } from '@fluidframework/merge-tree/internal';
|
|
49
|
+
import { SharedObject } from '@fluidframework/shared-object-base/internal';
|
|
50
|
+
import { SlidingPreference } from '@fluidframework/merge-tree/internal';
|
|
51
|
+
import { TextSegment } from '@fluidframework/merge-tree/internal';
|
|
52
|
+
import { TypedEventEmitter } from '@fluid-internal/client-utils';
|
|
19
53
|
|
|
20
54
|
// @public
|
|
21
55
|
export type AllowedTypes = readonly LazyItem<TreeNodeSchema>[];
|
|
@@ -23,9 +57,6 @@ export type AllowedTypes = readonly LazyItem<TreeNodeSchema>[];
|
|
|
23
57
|
// @public
|
|
24
58
|
export type ApplyKind<T, Kind extends FieldKind> = Kind extends FieldKind.Required ? T : undefined | T;
|
|
25
59
|
|
|
26
|
-
// @public
|
|
27
|
-
export type ArrayToUnion<T extends readonly unknown[]> = T[number];
|
|
28
|
-
|
|
29
60
|
// @public
|
|
30
61
|
export enum AttachState {
|
|
31
62
|
Attached = "Attached",
|
|
@@ -33,6 +64,19 @@ export enum AttachState {
|
|
|
33
64
|
Detached = "Detached"
|
|
34
65
|
}
|
|
35
66
|
|
|
67
|
+
// @public
|
|
68
|
+
export enum CommitKind {
|
|
69
|
+
Default = 0,
|
|
70
|
+
Redo = 2,
|
|
71
|
+
Undo = 1
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// @public
|
|
75
|
+
export interface CommitMetadata {
|
|
76
|
+
readonly isLocal: boolean;
|
|
77
|
+
readonly kind: CommitKind;
|
|
78
|
+
}
|
|
79
|
+
|
|
36
80
|
// @public
|
|
37
81
|
export enum ConnectionState {
|
|
38
82
|
CatchingUp = 1,
|
|
@@ -75,11 +119,24 @@ export interface ContainerSchema {
|
|
|
75
119
|
}
|
|
76
120
|
|
|
77
121
|
// @public
|
|
78
|
-
export type DataObjectClass<T extends IFluidLoadable> = {
|
|
122
|
+
export type DataObjectClass<T extends IFluidLoadable = IFluidLoadable> = {
|
|
79
123
|
readonly factory: {
|
|
80
|
-
IFluidDataStoreFactory: DataObjectClass<T>["factory"];
|
|
124
|
+
readonly IFluidDataStoreFactory: DataObjectClass<T>["factory"];
|
|
81
125
|
};
|
|
82
|
-
} &
|
|
126
|
+
} & (new (...args: any[]) => T);
|
|
127
|
+
|
|
128
|
+
// @alpha (undocumented)
|
|
129
|
+
export type DeserializeCallback = (properties: PropertySet) => void;
|
|
130
|
+
|
|
131
|
+
// @alpha @sealed
|
|
132
|
+
export class DirectoryFactory implements IChannelFactory<ISharedDirectory> {
|
|
133
|
+
static readonly Attributes: IChannelAttributes;
|
|
134
|
+
get attributes(): IChannelAttributes;
|
|
135
|
+
create(runtime: IFluidDataStoreRuntime, id: string): ISharedDirectory;
|
|
136
|
+
load(runtime: IFluidDataStoreRuntime, id: string, services: IChannelServices, attributes: IChannelAttributes): Promise<ISharedDirectory>;
|
|
137
|
+
static readonly Type = "https://graph.microsoft.com/types/directory";
|
|
138
|
+
get type(): string;
|
|
139
|
+
}
|
|
83
140
|
|
|
84
141
|
// @public
|
|
85
142
|
export const disposeSymbol: unique symbol;
|
|
@@ -119,35 +176,79 @@ export type ExtractItemType<Item extends LazyItem> = Item extends () => infer Re
|
|
|
119
176
|
|
|
120
177
|
// @public
|
|
121
178
|
export enum FieldKind {
|
|
179
|
+
Identifier = 2,
|
|
122
180
|
Optional = 0,
|
|
123
181
|
Required = 1
|
|
124
182
|
}
|
|
125
183
|
|
|
184
|
+
// @public
|
|
185
|
+
export interface FieldProps {
|
|
186
|
+
readonly key?: string;
|
|
187
|
+
}
|
|
188
|
+
|
|
126
189
|
// @public @sealed
|
|
127
190
|
export class FieldSchema<out Kind extends FieldKind = FieldKind, out Types extends ImplicitAllowedTypes = ImplicitAllowedTypes> {
|
|
128
|
-
constructor(
|
|
129
|
-
|
|
191
|
+
constructor(
|
|
192
|
+
kind: Kind,
|
|
193
|
+
allowedTypes: Types,
|
|
194
|
+
props?: FieldProps | undefined);
|
|
130
195
|
readonly allowedTypes: Types;
|
|
131
|
-
|
|
196
|
+
get allowedTypeSet(): ReadonlySet<TreeNodeSchema>;
|
|
132
197
|
readonly kind: Kind;
|
|
198
|
+
readonly props?: FieldProps | undefined;
|
|
133
199
|
protected _typeCheck?: MakeNominal;
|
|
134
200
|
}
|
|
135
201
|
|
|
202
|
+
// @public
|
|
203
|
+
export interface FieldSchemaUnsafe<out Kind extends FieldKind, out Types extends Unenforced<ImplicitAllowedTypes>> extends FieldSchema<Kind, any> {
|
|
204
|
+
readonly allowedTypes: Types;
|
|
205
|
+
readonly allowedTypeSet: ReadonlySet<TreeNodeSchema>;
|
|
206
|
+
readonly kind: Kind;
|
|
207
|
+
}
|
|
208
|
+
|
|
136
209
|
// @public
|
|
137
210
|
export type FlexList<Item = unknown> = readonly LazyItem<Item>[];
|
|
138
211
|
|
|
139
212
|
// @public
|
|
140
|
-
export type FlexListToUnion<TList extends FlexList> = ExtractItemType<
|
|
213
|
+
export type FlexListToUnion<TList extends FlexList> = ExtractItemType<TList[number]>;
|
|
141
214
|
|
|
142
215
|
// @public
|
|
143
216
|
export interface IConnection {
|
|
144
|
-
id: string;
|
|
145
|
-
mode: "write" | "read";
|
|
217
|
+
readonly id: string;
|
|
218
|
+
readonly mode: "write" | "read";
|
|
146
219
|
}
|
|
147
220
|
|
|
148
221
|
// @public
|
|
149
222
|
export type ICriticalContainerError = IErrorBase;
|
|
150
223
|
|
|
224
|
+
// @alpha
|
|
225
|
+
export interface IDirectory extends Map<string, any>, IEventProvider<IDirectoryEvents>, Partial<IDisposable_2> {
|
|
226
|
+
readonly absolutePath: string;
|
|
227
|
+
countSubDirectory?(): number;
|
|
228
|
+
createSubDirectory(subdirName: string): IDirectory;
|
|
229
|
+
deleteSubDirectory(subdirName: string): boolean;
|
|
230
|
+
get<T = any>(key: string): T | undefined;
|
|
231
|
+
getSubDirectory(subdirName: string): IDirectory | undefined;
|
|
232
|
+
getWorkingDirectory(relativePath: string): IDirectory | undefined;
|
|
233
|
+
hasSubDirectory(subdirName: string): boolean;
|
|
234
|
+
set<T = unknown>(key: string, value: T): this;
|
|
235
|
+
subdirectories(): IterableIterator<[string, IDirectory]>;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
// @alpha
|
|
239
|
+
export interface IDirectoryEvents extends IEvent {
|
|
240
|
+
(event: "containedValueChanged", listener: (changed: IValueChanged, local: boolean, target: IEventThisPlaceHolder) => void): any;
|
|
241
|
+
(event: "subDirectoryCreated", listener: (path: string, local: boolean, target: IEventThisPlaceHolder) => void): any;
|
|
242
|
+
(event: "subDirectoryDeleted", listener: (path: string, local: boolean, target: IEventThisPlaceHolder) => void): any;
|
|
243
|
+
(event: "disposed", listener: (target: IEventThisPlaceHolder) => void): any;
|
|
244
|
+
(event: "undisposed", listener: (target: IEventThisPlaceHolder) => void): any;
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
// @alpha
|
|
248
|
+
export interface IDirectoryValueChanged extends IValueChanged {
|
|
249
|
+
path: string;
|
|
250
|
+
}
|
|
251
|
+
|
|
151
252
|
// @public
|
|
152
253
|
export interface IDisposable {
|
|
153
254
|
[disposeSymbol](): void;
|
|
@@ -176,10 +277,72 @@ export interface IFluidContainerEvents extends IEvent {
|
|
|
176
277
|
(event: "disposed", listener: (error?: ICriticalContainerError) => void): any;
|
|
177
278
|
}
|
|
178
279
|
|
|
280
|
+
// @alpha
|
|
281
|
+
export interface IInterval {
|
|
282
|
+
// (undocumented)
|
|
283
|
+
clone(): IInterval;
|
|
284
|
+
compare(b: IInterval): number;
|
|
285
|
+
compareEnd(b: IInterval): number;
|
|
286
|
+
compareStart(b: IInterval): number;
|
|
287
|
+
modify(label: string, start: SequencePlace | undefined, end: SequencePlace | undefined, op?: ISequencedDocumentMessage, localSeq?: number, useNewSlidingBehavior?: boolean): IInterval | undefined;
|
|
288
|
+
// (undocumented)
|
|
289
|
+
overlaps(b: IInterval): boolean;
|
|
290
|
+
union(b: IInterval): IInterval;
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
// @alpha
|
|
294
|
+
export interface IIntervalCollection<TInterval extends ISerializableInterval> extends TypedEventEmitter<IIntervalCollectionEvent<TInterval>> {
|
|
295
|
+
// (undocumented)
|
|
296
|
+
[Symbol.iterator](): Iterator<TInterval>;
|
|
297
|
+
add({ start, end, props, }: {
|
|
298
|
+
start: SequencePlace;
|
|
299
|
+
end: SequencePlace;
|
|
300
|
+
props?: PropertySet;
|
|
301
|
+
}): TInterval;
|
|
302
|
+
// (undocumented)
|
|
303
|
+
attachDeserializer(onDeserialize: DeserializeCallback): void;
|
|
304
|
+
// (undocumented)
|
|
305
|
+
readonly attached: boolean;
|
|
306
|
+
attachIndex(index: IntervalIndex<TInterval>): void;
|
|
307
|
+
change(id: string, { start, end, props }: {
|
|
308
|
+
start?: SequencePlace;
|
|
309
|
+
end?: SequencePlace;
|
|
310
|
+
props?: PropertySet;
|
|
311
|
+
}): TInterval | undefined;
|
|
312
|
+
// (undocumented)
|
|
313
|
+
CreateBackwardIteratorWithEndPosition(endPosition: number): Iterator<TInterval>;
|
|
314
|
+
// (undocumented)
|
|
315
|
+
CreateBackwardIteratorWithStartPosition(startPosition: number): Iterator<TInterval>;
|
|
316
|
+
// (undocumented)
|
|
317
|
+
CreateForwardIteratorWithEndPosition(endPosition: number): Iterator<TInterval>;
|
|
318
|
+
// (undocumented)
|
|
319
|
+
CreateForwardIteratorWithStartPosition(startPosition: number): Iterator<TInterval>;
|
|
320
|
+
detachIndex(index: IntervalIndex<TInterval>): boolean;
|
|
321
|
+
// @deprecated (undocumented)
|
|
322
|
+
findOverlappingIntervals(startPosition: number, endPosition: number): TInterval[];
|
|
323
|
+
gatherIterationResults(results: TInterval[], iteratesForward: boolean, start?: number, end?: number): void;
|
|
324
|
+
// (undocumented)
|
|
325
|
+
getIntervalById(id: string): TInterval | undefined;
|
|
326
|
+
map(fn: (interval: TInterval) => void): void;
|
|
327
|
+
// @deprecated (undocumented)
|
|
328
|
+
nextInterval(pos: number): TInterval | undefined;
|
|
329
|
+
// @deprecated (undocumented)
|
|
330
|
+
previousInterval(pos: number): TInterval | undefined;
|
|
331
|
+
removeIntervalById(id: string): TInterval | undefined;
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
// @alpha
|
|
335
|
+
export interface IIntervalCollectionEvent<TInterval extends ISerializableInterval> extends IEvent {
|
|
336
|
+
(event: "changeInterval", listener: (interval: TInterval, previousInterval: TInterval, local: boolean, op: ISequencedDocumentMessage | undefined, slide: boolean) => void): void;
|
|
337
|
+
(event: "addInterval" | "deleteInterval", listener: (interval: TInterval, local: boolean, op: ISequencedDocumentMessage | undefined) => void): void;
|
|
338
|
+
(event: "propertyChanged", listener: (interval: TInterval, propertyDeltas: PropertySet, local: boolean, op: ISequencedDocumentMessage | undefined) => void): void;
|
|
339
|
+
(event: "changed", listener: (interval: TInterval, propertyDeltas: PropertySet, previousInterval: TInterval | undefined, local: boolean, slide: boolean) => void): void;
|
|
340
|
+
}
|
|
341
|
+
|
|
179
342
|
// @public
|
|
180
343
|
export interface IMember {
|
|
181
|
-
connections: IConnection[];
|
|
182
|
-
userId: string;
|
|
344
|
+
readonly connections: IConnection[];
|
|
345
|
+
readonly userId: string;
|
|
183
346
|
}
|
|
184
347
|
|
|
185
348
|
// @public
|
|
@@ -198,20 +361,104 @@ export type InsertableObjectFromSchemaRecord<T extends RestrictiveReadonlyRecord
|
|
|
198
361
|
readonly [Property in keyof T]: InsertableTreeFieldFromImplicitField<T[Property]>;
|
|
199
362
|
};
|
|
200
363
|
|
|
364
|
+
// @public
|
|
365
|
+
export type InsertableObjectFromSchemaRecordUnsafe<T extends Unenforced<RestrictiveReadonlyRecord<string, ImplicitFieldSchema>>> = {
|
|
366
|
+
readonly [Property in keyof T]: InsertableTreeFieldFromImplicitFieldUnsafe<T[Property]>;
|
|
367
|
+
};
|
|
368
|
+
|
|
201
369
|
// @public
|
|
202
370
|
export type InsertableTreeFieldFromImplicitField<TSchema extends ImplicitFieldSchema = FieldSchema> = TSchema extends FieldSchema<infer Kind, infer Types> ? ApplyKind<InsertableTreeNodeFromImplicitAllowedTypes<Types>, Kind> : TSchema extends ImplicitAllowedTypes ? InsertableTreeNodeFromImplicitAllowedTypes<TSchema> : unknown;
|
|
203
371
|
|
|
372
|
+
// @public
|
|
373
|
+
export type InsertableTreeFieldFromImplicitFieldUnsafe<TSchema extends Unenforced<ImplicitFieldSchema>> = TSchema extends FieldSchemaUnsafe<infer Kind, infer Types> ? ApplyKind<InsertableTreeNodeFromImplicitAllowedTypesUnsafe<Types>, Kind> : InsertableTreeNodeFromImplicitAllowedTypesUnsafe<TSchema>;
|
|
374
|
+
|
|
204
375
|
// @public
|
|
205
376
|
export type InsertableTreeNodeFromImplicitAllowedTypes<TSchema extends ImplicitAllowedTypes = TreeNodeSchema> = TSchema extends TreeNodeSchema ? InsertableTypedNode<TSchema> : TSchema extends AllowedTypes ? InsertableTypedNode<FlexListToUnion<TSchema>> : never;
|
|
206
377
|
|
|
378
|
+
// @public
|
|
379
|
+
export type InsertableTreeNodeFromImplicitAllowedTypesUnsafe<TSchema extends Unenforced<ImplicitAllowedTypes>> = TSchema extends AllowedTypes ? InsertableTypedNodeUnsafe<FlexListToUnion<TSchema>> : InsertableTypedNodeUnsafe<TSchema>;
|
|
380
|
+
|
|
207
381
|
// @public
|
|
208
382
|
export type InsertableTypedNode<T extends TreeNodeSchema> = (T extends {
|
|
209
383
|
implicitlyConstructable: true;
|
|
210
384
|
} ? NodeBuilderData<T> : never) | Unhydrated<NodeFromSchema<T>>;
|
|
211
385
|
|
|
386
|
+
// @public
|
|
387
|
+
export type InsertableTypedNodeUnsafe<T extends Unenforced<TreeNodeSchema>> = Unhydrated<NodeFromSchemaUnsafe<T>> | (T extends {
|
|
388
|
+
implicitlyConstructable: true;
|
|
389
|
+
} ? NodeBuilderDataUnsafe<T> : never);
|
|
390
|
+
|
|
391
|
+
// @alpha
|
|
392
|
+
export interface InteriorSequencePlace {
|
|
393
|
+
// (undocumented)
|
|
394
|
+
pos: number;
|
|
395
|
+
// (undocumented)
|
|
396
|
+
side: Side;
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
// @alpha
|
|
400
|
+
export interface IntervalIndex<TInterval extends ISerializableInterval> {
|
|
401
|
+
add(interval: TInterval): void;
|
|
402
|
+
remove(interval: TInterval): void;
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
// @alpha
|
|
406
|
+
export const IntervalStickiness: {
|
|
407
|
+
readonly NONE: 0;
|
|
408
|
+
readonly START: 1;
|
|
409
|
+
readonly END: 2;
|
|
410
|
+
readonly FULL: 3;
|
|
411
|
+
};
|
|
412
|
+
|
|
413
|
+
// @alpha
|
|
414
|
+
export type IntervalStickiness = (typeof IntervalStickiness)[keyof typeof IntervalStickiness];
|
|
415
|
+
|
|
416
|
+
// @alpha (undocumented)
|
|
417
|
+
export enum IntervalType {
|
|
418
|
+
// (undocumented)
|
|
419
|
+
Simple = 0,
|
|
420
|
+
SlideOnRemove = 2,
|
|
421
|
+
// @internal
|
|
422
|
+
Transient = 4
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
// @alpha
|
|
426
|
+
export interface ISequenceDeltaRange<TOperation extends MergeTreeDeltaOperationTypes = MergeTreeDeltaOperationTypes> {
|
|
427
|
+
operation: TOperation;
|
|
428
|
+
position: number;
|
|
429
|
+
propertyDeltas: PropertySet;
|
|
430
|
+
segment: ISegment;
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
// @alpha (undocumented)
|
|
434
|
+
export interface ISerializableInterval extends IInterval {
|
|
435
|
+
// (undocumented)
|
|
436
|
+
addProperties(props: PropertySet, collaborating?: boolean, seq?: number): PropertySet | undefined;
|
|
437
|
+
getIntervalId(): string | undefined;
|
|
438
|
+
properties: PropertySet;
|
|
439
|
+
// (undocumented)
|
|
440
|
+
propertyManager: PropertiesManager;
|
|
441
|
+
// (undocumented)
|
|
442
|
+
serialize(): ISerializedInterval;
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
// @alpha
|
|
446
|
+
export interface ISerializedInterval {
|
|
447
|
+
end: number | "start" | "end";
|
|
448
|
+
// (undocumented)
|
|
449
|
+
endSide?: Side;
|
|
450
|
+
intervalType: IntervalType;
|
|
451
|
+
properties?: PropertySet;
|
|
452
|
+
sequenceNumber: number;
|
|
453
|
+
start: number | "start" | "end";
|
|
454
|
+
// (undocumented)
|
|
455
|
+
startSide?: Side;
|
|
456
|
+
stickiness?: IntervalStickiness;
|
|
457
|
+
}
|
|
458
|
+
|
|
212
459
|
// @public
|
|
213
460
|
export interface IServiceAudience<M extends IMember> extends IEventProvider<IServiceAudienceEvents<M>> {
|
|
214
|
-
getMembers():
|
|
461
|
+
getMembers(): ReadonlyMap<string, M>;
|
|
215
462
|
getMyself(): Myself<M> | undefined;
|
|
216
463
|
}
|
|
217
464
|
|
|
@@ -228,18 +475,57 @@ export interface IServiceAudienceEvents<M extends IMember> extends IEvent {
|
|
|
228
475
|
// @public
|
|
229
476
|
export type IsEvent<Event> = Event extends (...args: any[]) => any ? true : false;
|
|
230
477
|
|
|
231
|
-
// @
|
|
478
|
+
// @alpha
|
|
479
|
+
export interface ISharedDirectory extends ISharedObject<ISharedDirectoryEvents & IDirectoryEvents>, Omit<IDirectory, "on" | "once" | "off"> {
|
|
480
|
+
// (undocumented)
|
|
481
|
+
[Symbol.iterator](): IterableIterator<[string, any]>;
|
|
482
|
+
// (undocumented)
|
|
483
|
+
readonly [Symbol.toStringTag]: string;
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
// @alpha
|
|
487
|
+
export interface ISharedDirectoryEvents extends ISharedObjectEvents {
|
|
488
|
+
(event: "valueChanged", listener: (changed: IDirectoryValueChanged, local: boolean, target: IEventThisPlaceHolder) => void): any;
|
|
489
|
+
(event: "clear", listener: (local: boolean, target: IEventThisPlaceHolder) => void): any;
|
|
490
|
+
(event: "subDirectoryCreated", listener: (path: string, local: boolean, target: IEventThisPlaceHolder) => void): any;
|
|
491
|
+
(event: "subDirectoryDeleted", listener: (path: string, local: boolean, target: IEventThisPlaceHolder) => void): any;
|
|
492
|
+
}
|
|
493
|
+
|
|
494
|
+
// @alpha (undocumented)
|
|
495
|
+
export interface ISharedIntervalCollection<TInterval extends ISerializableInterval> {
|
|
496
|
+
// (undocumented)
|
|
497
|
+
getIntervalCollection(label: string): IIntervalCollection<TInterval>;
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
// @alpha @sealed
|
|
232
501
|
export interface ISharedMap extends ISharedObject<ISharedMapEvents>, Map<string, any> {
|
|
233
502
|
get<T = any>(key: string): T | undefined;
|
|
234
503
|
set<T = unknown>(key: string, value: T): this;
|
|
235
504
|
}
|
|
236
505
|
|
|
237
|
-
// @
|
|
506
|
+
// @alpha @sealed
|
|
238
507
|
export interface ISharedMapEvents extends ISharedObjectEvents {
|
|
239
508
|
(event: "valueChanged", listener: (changed: IValueChanged, local: boolean, target: IEventThisPlaceHolder) => void): any;
|
|
240
509
|
(event: "clear", listener: (local: boolean, target: IEventThisPlaceHolder) => void): any;
|
|
241
510
|
}
|
|
242
511
|
|
|
512
|
+
// @alpha
|
|
513
|
+
export interface ISharedSegmentSequenceEvents extends ISharedObjectEvents {
|
|
514
|
+
// (undocumented)
|
|
515
|
+
(event: "createIntervalCollection", listener: (label: string, local: boolean, target: IEventThisPlaceHolder) => void): void;
|
|
516
|
+
// (undocumented)
|
|
517
|
+
(event: "sequenceDelta", listener: (event: SequenceDeltaEvent, target: IEventThisPlaceHolder) => void): void;
|
|
518
|
+
// (undocumented)
|
|
519
|
+
(event: "maintenance", listener: (event: SequenceMaintenanceEvent, target: IEventThisPlaceHolder) => void): void;
|
|
520
|
+
}
|
|
521
|
+
|
|
522
|
+
// @alpha
|
|
523
|
+
export interface ISharedString extends SharedSegmentSequence<SharedStringSegment> {
|
|
524
|
+
insertMarker(pos: number, refType: ReferenceType, props?: PropertySet): void;
|
|
525
|
+
insertText(pos: number, text: string, props?: PropertySet): void;
|
|
526
|
+
posFromRelativePos(relativePos: IRelativePosition): number;
|
|
527
|
+
}
|
|
528
|
+
|
|
243
529
|
// @public
|
|
244
530
|
export interface ISubscribable<E extends Events<E>> {
|
|
245
531
|
on<K extends keyof Events<E>>(eventName: K, listener: E[K]): () => void;
|
|
@@ -252,45 +538,66 @@ export class IterableTreeArrayContent<T> implements Iterable<T> {
|
|
|
252
538
|
|
|
253
539
|
// @public
|
|
254
540
|
export interface ITree extends IChannel {
|
|
255
|
-
schematize<TRoot extends ImplicitFieldSchema>(config: TreeConfiguration<TRoot>): TreeView<
|
|
541
|
+
schematize<TRoot extends ImplicitFieldSchema>(config: TreeConfiguration<TRoot>): TreeView<TRoot>;
|
|
256
542
|
}
|
|
257
543
|
|
|
258
|
-
// @
|
|
544
|
+
// @alpha @sealed
|
|
259
545
|
export interface IValueChanged {
|
|
260
|
-
key: string;
|
|
261
|
-
previousValue: any;
|
|
546
|
+
readonly key: string;
|
|
547
|
+
readonly previousValue: any;
|
|
262
548
|
}
|
|
263
549
|
|
|
264
550
|
// @public
|
|
265
551
|
export type LazyItem<Item = unknown> = Item | (() => Item);
|
|
266
552
|
|
|
267
553
|
// @public
|
|
268
|
-
export type LoadableObjectClass<T extends IFluidLoadable = IFluidLoadable> =
|
|
554
|
+
export type LoadableObjectClass<T extends IFluidLoadable = IFluidLoadable> = ISharedObjectKind<T> | DataObjectClass<T>;
|
|
269
555
|
|
|
270
556
|
// @public
|
|
271
557
|
export type LoadableObjectClassRecord = Record<string, LoadableObjectClass>;
|
|
272
558
|
|
|
273
|
-
// @public
|
|
274
|
-
export type LoadableObjectCtor<T extends IFluidLoadable> = new (...args: any[]) => T;
|
|
275
|
-
|
|
276
559
|
// @public
|
|
277
560
|
export interface MakeNominal {
|
|
278
561
|
}
|
|
279
562
|
|
|
563
|
+
// @alpha @sealed
|
|
564
|
+
export class MapFactory implements IChannelFactory<ISharedMap> {
|
|
565
|
+
static readonly Attributes: IChannelAttributes;
|
|
566
|
+
get attributes(): IChannelAttributes;
|
|
567
|
+
create(runtime: IFluidDataStoreRuntime, id: string): ISharedMap;
|
|
568
|
+
load(runtime: IFluidDataStoreRuntime, id: string, services: IChannelServices, attributes: IChannelAttributes): Promise<ISharedMap>;
|
|
569
|
+
static readonly Type = "https://graph.microsoft.com/types/map";
|
|
570
|
+
get type(): string;
|
|
571
|
+
}
|
|
572
|
+
|
|
280
573
|
// @public
|
|
281
574
|
export type MemberChangedListener<M extends IMember> = (clientId: string, member: M) => void;
|
|
282
575
|
|
|
283
576
|
// @public
|
|
284
577
|
export type Myself<M extends IMember = IMember> = M & {
|
|
285
|
-
currentConnection: string;
|
|
578
|
+
readonly currentConnection: string;
|
|
286
579
|
};
|
|
287
580
|
|
|
288
581
|
// @public
|
|
289
582
|
export type NodeBuilderData<T extends TreeNodeSchema> = T extends TreeNodeSchema<string, NodeKind, unknown, infer TBuild> ? TBuild : never;
|
|
290
583
|
|
|
584
|
+
// @public
|
|
585
|
+
export type NodeBuilderDataUnsafe<T extends Unenforced<TreeNodeSchema>> = T extends TreeNodeSchema<string, NodeKind, unknown, infer TBuild> ? TBuild : never;
|
|
586
|
+
|
|
291
587
|
// @public
|
|
292
588
|
export type NodeFromSchema<T extends TreeNodeSchema> = T extends TreeNodeSchema<string, NodeKind, infer TNode> ? TNode : never;
|
|
293
589
|
|
|
590
|
+
// @public
|
|
591
|
+
export type NodeFromSchemaUnsafe<T extends Unenforced<TreeNodeSchema>> = T extends TreeNodeSchema<string, NodeKind, infer TNode> ? TNode : never;
|
|
592
|
+
|
|
593
|
+
// @public
|
|
594
|
+
export interface NodeInDocumentConstraint {
|
|
595
|
+
// (undocumented)
|
|
596
|
+
node: TreeNode;
|
|
597
|
+
// (undocumented)
|
|
598
|
+
type: "nodeInDocument";
|
|
599
|
+
}
|
|
600
|
+
|
|
294
601
|
// @public
|
|
295
602
|
export enum NodeKind {
|
|
296
603
|
Array = 1,
|
|
@@ -304,28 +611,59 @@ export type ObjectFromSchemaRecord<T extends RestrictiveReadonlyRecord<string, I
|
|
|
304
611
|
-readonly [Property in keyof T]: TreeFieldFromImplicitField<T[Property]>;
|
|
305
612
|
};
|
|
306
613
|
|
|
614
|
+
// @public
|
|
615
|
+
export type ObjectFromSchemaRecordUnsafe<T extends Unenforced<RestrictiveReadonlyRecord<string, ImplicitFieldSchema>>> = {
|
|
616
|
+
-readonly [Property in keyof T]: TreeFieldFromImplicitFieldUnsafe<T[Property]>;
|
|
617
|
+
};
|
|
618
|
+
|
|
307
619
|
// @public
|
|
308
620
|
export type RestrictiveReadonlyRecord<K extends symbol | string, T> = {
|
|
309
621
|
readonly [P in symbol | string]: P extends K ? T : never;
|
|
310
622
|
};
|
|
311
623
|
|
|
624
|
+
// @public
|
|
625
|
+
export interface Revertible {
|
|
626
|
+
[disposeSymbol](): void;
|
|
627
|
+
revert(): void;
|
|
628
|
+
revert(dispose: boolean): void;
|
|
629
|
+
readonly status: RevertibleStatus;
|
|
630
|
+
}
|
|
631
|
+
|
|
632
|
+
// @public
|
|
633
|
+
export type RevertibleFactory = (onRevertibleDisposed?: (revertible: Revertible) => void) => Revertible;
|
|
634
|
+
|
|
635
|
+
// @public
|
|
636
|
+
export enum RevertibleStatus {
|
|
637
|
+
Disposed = 1,
|
|
638
|
+
Valid = 0
|
|
639
|
+
}
|
|
640
|
+
|
|
312
641
|
// @public @sealed
|
|
313
642
|
export class SchemaFactory<out TScope extends string | undefined = string | undefined, TName extends number | string = string> {
|
|
314
643
|
constructor(scope: TScope);
|
|
315
644
|
array<const T extends TreeNodeSchema | readonly TreeNodeSchema[]>(allowedTypes: T): TreeNodeSchema<ScopedSchemaName<TScope, `Array<${string}>`>, NodeKind.Array, TreeArrayNode<T> & WithType<ScopedSchemaName<TScope, `Array<${string}>`>>, Iterable<InsertableTreeNodeFromImplicitAllowedTypes<T>>, true, T>;
|
|
316
645
|
array<const Name extends TName, const T extends ImplicitAllowedTypes>(name: Name, allowedTypes: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Array, TreeArrayNode<T> & WithType<ScopedSchemaName<TScope, Name>>, Iterable<InsertableTreeNodeFromImplicitAllowedTypes<T>>, true, T>;
|
|
646
|
+
arrayRecursive<const Name extends TName, const T extends Unenforced<ImplicitAllowedTypes>>(name: Name, allowedTypes: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Array, TreeArrayNodeUnsafe<T> & WithType<ScopedSchemaName<TScope, Name>>, {
|
|
647
|
+
[Symbol.iterator](): Iterator<InsertableTreeNodeFromImplicitAllowedTypesUnsafe<T>>;
|
|
648
|
+
}, false, T>;
|
|
317
649
|
readonly boolean: TreeNodeSchema<"com.fluidframework.leaf.boolean", NodeKind.Leaf, boolean, boolean>;
|
|
318
|
-
// @deprecated
|
|
319
|
-
fixRecursiveReference<T extends AllowedTypes>(...types: T): void;
|
|
320
650
|
readonly handle: TreeNodeSchema<"com.fluidframework.leaf.handle", NodeKind.Leaf, IFluidHandle<FluidObject & IFluidLoadable>, IFluidHandle<FluidObject & IFluidLoadable>>;
|
|
651
|
+
get identifier(): FieldSchema<FieldKind.Identifier>;
|
|
321
652
|
map<const T extends TreeNodeSchema | readonly TreeNodeSchema[]>(allowedTypes: T): TreeNodeSchema<ScopedSchemaName<TScope, `Map<${string}>`>, NodeKind.Map, TreeMapNode<T> & WithType<ScopedSchemaName<TScope, `Map<${string}>`>>, Iterable<[string, InsertableTreeNodeFromImplicitAllowedTypes<T>]>, true, T>;
|
|
322
653
|
map<Name extends TName, const T extends ImplicitAllowedTypes>(name: Name, allowedTypes: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Map, TreeMapNode<T> & WithType<ScopedSchemaName<TScope, Name>>, Iterable<[string, InsertableTreeNodeFromImplicitAllowedTypes<T>]>, true, T>;
|
|
323
|
-
|
|
324
|
-
|
|
654
|
+
mapRecursive<Name extends TName, const T extends Unenforced<ImplicitAllowedTypes>>(name: Name, allowedTypes: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Map, TreeMapNodeUnsafe<T> & WithType<ScopedSchemaName<TScope, Name>>, {
|
|
655
|
+
[Symbol.iterator](): Iterator<[
|
|
656
|
+
string,
|
|
657
|
+
InsertableTreeNodeFromImplicitAllowedTypesUnsafe<T>
|
|
658
|
+
]>;
|
|
659
|
+
}, false, T>;
|
|
325
660
|
readonly null: TreeNodeSchema<"com.fluidframework.leaf.null", NodeKind.Leaf, null, null>;
|
|
326
661
|
readonly number: TreeNodeSchema<"com.fluidframework.leaf.number", NodeKind.Leaf, number, number>;
|
|
327
|
-
object<const Name extends TName, const T extends RestrictiveReadonlyRecord<string, ImplicitFieldSchema>>(name: Name,
|
|
328
|
-
|
|
662
|
+
object<const Name extends TName, const T extends RestrictiveReadonlyRecord<string, ImplicitFieldSchema>>(name: Name, fields: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Object, TreeObjectNode<T, ScopedSchemaName<TScope, Name>>, object & InsertableObjectFromSchemaRecord<T>, true, T>;
|
|
663
|
+
objectRecursive<const Name extends TName, const T extends Unenforced<RestrictiveReadonlyRecord<string, ImplicitFieldSchema>>>(name: Name, t: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Object, TreeObjectNodeUnsafe<T, ScopedSchemaName<TScope, Name>>, object & InsertableObjectFromSchemaRecordUnsafe<T>, false, T>;
|
|
664
|
+
optional<const T extends ImplicitAllowedTypes>(t: T, props?: FieldProps): FieldSchema<FieldKind.Optional, T>;
|
|
665
|
+
optionalRecursive<const T extends Unenforced<readonly (() => TreeNodeSchema)[]>>(t: T): FieldSchemaUnsafe_2<FieldKind.Optional, T>;
|
|
666
|
+
required<const T extends ImplicitAllowedTypes>(t: T, props?: FieldProps): FieldSchema<FieldKind.Required, T>;
|
|
329
667
|
// (undocumented)
|
|
330
668
|
readonly scope: TScope;
|
|
331
669
|
readonly string: TreeNodeSchema<"com.fluidframework.leaf.string", NodeKind.Leaf, string, string>;
|
|
@@ -339,36 +677,217 @@ export interface SchemaIncompatible {
|
|
|
339
677
|
// @public
|
|
340
678
|
export type ScopedSchemaName<TScope extends string | undefined, TName extends number | string> = TScope extends undefined ? `${TName}` : `${TScope}.${TName}`;
|
|
341
679
|
|
|
342
|
-
// @
|
|
343
|
-
export
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
680
|
+
// @alpha
|
|
681
|
+
export class SequenceDeltaEvent extends SequenceEvent<MergeTreeDeltaOperationType> {
|
|
682
|
+
constructor(opArgs: IMergeTreeDeltaOpArgs, deltaArgs: IMergeTreeDeltaCallbackArgs, mergeTreeClient: Client);
|
|
683
|
+
readonly isLocal: boolean;
|
|
684
|
+
// (undocumented)
|
|
685
|
+
readonly opArgs: IMergeTreeDeltaOpArgs;
|
|
686
|
+
}
|
|
347
687
|
|
|
348
|
-
// @
|
|
688
|
+
// @alpha
|
|
689
|
+
export abstract class SequenceEvent<TOperation extends MergeTreeDeltaOperationTypes = MergeTreeDeltaOperationTypes> {
|
|
690
|
+
constructor(deltaArgs: IMergeTreeDeltaCallbackArgs<TOperation>, mergeTreeClient: Client);
|
|
691
|
+
get clientId(): string | undefined;
|
|
692
|
+
// (undocumented)
|
|
693
|
+
readonly deltaArgs: IMergeTreeDeltaCallbackArgs<TOperation>;
|
|
694
|
+
// (undocumented)
|
|
695
|
+
readonly deltaOperation: TOperation;
|
|
696
|
+
get first(): Readonly<ISequenceDeltaRange<TOperation>>;
|
|
697
|
+
get last(): Readonly<ISequenceDeltaRange<TOperation>>;
|
|
698
|
+
get ranges(): readonly Readonly<ISequenceDeltaRange<TOperation>>[];
|
|
699
|
+
}
|
|
700
|
+
|
|
701
|
+
// @alpha
|
|
702
|
+
export class SequenceInterval implements ISerializableInterval {
|
|
703
|
+
constructor(client: Client,
|
|
704
|
+
start: LocalReferencePosition,
|
|
705
|
+
end: LocalReferencePosition, intervalType: IntervalType, props?: PropertySet, startSide?: Side, endSide?: Side);
|
|
706
|
+
addPositionChangeListeners(beforePositionChange: () => void, afterPositionChange: () => void): void;
|
|
707
|
+
// (undocumented)
|
|
708
|
+
addProperties(newProps: PropertySet, collab?: boolean, seq?: number): PropertySet | undefined;
|
|
709
|
+
// (undocumented)
|
|
710
|
+
clone(): SequenceInterval;
|
|
711
|
+
compare(b: SequenceInterval): number;
|
|
712
|
+
compareEnd(b: SequenceInterval): number;
|
|
713
|
+
compareStart(b: SequenceInterval): number;
|
|
714
|
+
end: LocalReferencePosition;
|
|
715
|
+
// (undocumented)
|
|
716
|
+
readonly endSide: Side;
|
|
717
|
+
getIntervalId(): string;
|
|
718
|
+
// (undocumented)
|
|
719
|
+
intervalType: IntervalType;
|
|
720
|
+
modify(label: string, start: SequencePlace | undefined, end: SequencePlace | undefined, op?: ISequencedDocumentMessage, localSeq?: number, useNewSlidingBehavior?: boolean): SequenceInterval;
|
|
721
|
+
// (undocumented)
|
|
722
|
+
overlaps(b: SequenceInterval): boolean;
|
|
723
|
+
// (undocumented)
|
|
724
|
+
overlapsPos(bstart: number, bend: number): boolean;
|
|
725
|
+
properties: PropertySet;
|
|
726
|
+
// (undocumented)
|
|
727
|
+
propertyManager: PropertiesManager;
|
|
728
|
+
removePositionChangeListeners(): void;
|
|
729
|
+
// (undocumented)
|
|
730
|
+
serialize(): ISerializedInterval;
|
|
731
|
+
start: LocalReferencePosition;
|
|
732
|
+
// (undocumented)
|
|
733
|
+
readonly startSide: Side;
|
|
734
|
+
// (undocumented)
|
|
735
|
+
get stickiness(): IntervalStickiness;
|
|
736
|
+
union(b: SequenceInterval): SequenceInterval;
|
|
737
|
+
}
|
|
738
|
+
|
|
739
|
+
// @alpha
|
|
740
|
+
export class SequenceMaintenanceEvent extends SequenceEvent<MergeTreeMaintenanceType> {
|
|
741
|
+
constructor(opArgs: IMergeTreeDeltaOpArgs | undefined, deltaArgs: IMergeTreeMaintenanceCallbackArgs, mergeTreeClient: Client);
|
|
742
|
+
// (undocumented)
|
|
743
|
+
readonly opArgs: IMergeTreeDeltaOpArgs | undefined;
|
|
744
|
+
}
|
|
745
|
+
|
|
746
|
+
// @alpha
|
|
747
|
+
export type SequencePlace = number | "start" | "end" | InteriorSequencePlace;
|
|
748
|
+
|
|
749
|
+
// @alpha @sealed
|
|
750
|
+
export const SharedDirectory: ISharedObjectKind<ISharedDirectory>;
|
|
751
|
+
|
|
752
|
+
// @alpha @deprecated
|
|
753
|
+
export type SharedDirectory = ISharedDirectory;
|
|
754
|
+
|
|
755
|
+
// @alpha
|
|
756
|
+
export const SharedMap: ISharedObjectKind<ISharedMap>;
|
|
757
|
+
|
|
758
|
+
// @alpha
|
|
349
759
|
export type SharedMap = ISharedMap;
|
|
350
760
|
|
|
761
|
+
// @alpha (undocumented)
|
|
762
|
+
export abstract class SharedSegmentSequence<T extends ISegment> extends SharedObject<ISharedSegmentSequenceEvents> implements ISharedIntervalCollection<SequenceInterval>, MergeTreeRevertibleDriver {
|
|
763
|
+
constructor(dataStoreRuntime: IFluidDataStoreRuntime, id: string, attributes: IChannelAttributes, segmentFromSpec: (spec: IJSONSegment) => ISegment);
|
|
764
|
+
annotateRange(start: number, end: number, props: PropertySet): void;
|
|
765
|
+
protected applyStashedOp(content: any): void;
|
|
766
|
+
// (undocumented)
|
|
767
|
+
protected client: Client;
|
|
768
|
+
createLocalReferencePosition(segment: T, offset: number, refType: ReferenceType, properties: PropertySet | undefined, slidingPreference?: SlidingPreference, canSlideToEndpoint?: boolean): LocalReferencePosition;
|
|
769
|
+
protected didAttach(): void;
|
|
770
|
+
getContainingSegment(pos: number): {
|
|
771
|
+
segment: T | undefined;
|
|
772
|
+
offset: number | undefined;
|
|
773
|
+
};
|
|
774
|
+
// (undocumented)
|
|
775
|
+
getCurrentSeq(): number;
|
|
776
|
+
getIntervalCollection(label: string): IIntervalCollection<SequenceInterval>;
|
|
777
|
+
// (undocumented)
|
|
778
|
+
getIntervalCollectionLabels(): IterableIterator<string>;
|
|
779
|
+
getLength(): number;
|
|
780
|
+
getPosition(segment: ISegment): number;
|
|
781
|
+
// (undocumented)
|
|
782
|
+
getPropertiesAtPosition(pos: number): PropertySet | undefined;
|
|
783
|
+
// (undocumented)
|
|
784
|
+
getRangeExtentsOfPosition(pos: number): {
|
|
785
|
+
posStart: number | undefined;
|
|
786
|
+
posAfterEnd: number | undefined;
|
|
787
|
+
};
|
|
788
|
+
// @deprecated (undocumented)
|
|
789
|
+
groupOperation(groupOp: IMergeTreeGroupMsg): void;
|
|
790
|
+
protected guardReentrancy: <TRet>(callback: () => TRet) => TRet;
|
|
791
|
+
// (undocumented)
|
|
792
|
+
id: string;
|
|
793
|
+
protected initializeLocalCore(): void;
|
|
794
|
+
insertAtReferencePosition(pos: ReferencePosition, segment: T): void;
|
|
795
|
+
insertFromSpec(pos: number, spec: IJSONSegment): void;
|
|
796
|
+
protected loadCore(storage: IChannelStorageService): Promise<void>;
|
|
797
|
+
// (undocumented)
|
|
798
|
+
get loaded(): Promise<void>;
|
|
799
|
+
protected loadedDeferred: Deferred<void>;
|
|
800
|
+
localReferencePositionToPosition(lref: ReferencePosition): number;
|
|
801
|
+
obliterateRange(start: number, end: number): void;
|
|
802
|
+
protected onConnect(): void;
|
|
803
|
+
protected onDisconnect(): void;
|
|
804
|
+
posFromRelativePos(relativePos: IRelativePosition): number;
|
|
805
|
+
protected processCore(message: ISequencedDocumentMessage, local: boolean, localOpMetadata: unknown): void;
|
|
806
|
+
protected processGCDataCore(serializer: IFluidSerializer): void;
|
|
807
|
+
removeLocalReferencePosition(lref: LocalReferencePosition): LocalReferencePosition | undefined;
|
|
808
|
+
// (undocumented)
|
|
809
|
+
removeRange(start: number, end: number): void;
|
|
810
|
+
protected replaceRange(start: number, end: number, segment: ISegment): void;
|
|
811
|
+
resolveRemoteClientPosition(remoteClientPosition: number, remoteClientRefSeq: number, remoteClientId: string): number | undefined;
|
|
812
|
+
protected reSubmitCore(content: any, localOpMetadata: unknown): void;
|
|
813
|
+
// (undocumented)
|
|
814
|
+
readonly segmentFromSpec: (spec: IJSONSegment) => ISegment;
|
|
815
|
+
protected summarizeCore(serializer: IFluidSerializer, telemetryContext?: ITelemetryContext): ISummaryTreeWithStats;
|
|
816
|
+
walkSegments<TClientData>(handler: ISegmentAction<TClientData>, start?: number, end?: number, accum?: TClientData, splitRange?: boolean): void;
|
|
817
|
+
}
|
|
818
|
+
|
|
819
|
+
// @alpha
|
|
820
|
+
export class SharedString extends SharedSegmentSequence<SharedStringSegment> implements ISharedString {
|
|
821
|
+
constructor(document: IFluidDataStoreRuntime, id: string, attributes: IChannelAttributes);
|
|
822
|
+
annotateMarker(marker: Marker, props: PropertySet): void;
|
|
823
|
+
static create(runtime: IFluidDataStoreRuntime, id?: string): SharedString;
|
|
824
|
+
static getFactory(): SharedStringFactory;
|
|
825
|
+
getMarkerFromId(id: string): ISegment | undefined;
|
|
826
|
+
getText(start?: number, end?: number): string;
|
|
827
|
+
// (undocumented)
|
|
828
|
+
getTextRangeWithMarkers(start: number, end: number): string;
|
|
829
|
+
getTextWithPlaceholders(start?: number, end?: number): string;
|
|
830
|
+
// (undocumented)
|
|
831
|
+
id: string;
|
|
832
|
+
insertMarker(pos: number, refType: ReferenceType, props?: PropertySet): void;
|
|
833
|
+
insertMarkerRelative(relativePos1: IRelativePosition, refType: ReferenceType, props?: PropertySet): void;
|
|
834
|
+
insertText(pos: number, text: string, props?: PropertySet): void;
|
|
835
|
+
insertTextRelative(relativePos1: IRelativePosition, text: string, props?: PropertySet): void;
|
|
836
|
+
// (undocumented)
|
|
837
|
+
get ISharedString(): ISharedString;
|
|
838
|
+
removeText(start: number, end: number): void;
|
|
839
|
+
replaceText(start: number, end: number, text: string, props?: PropertySet): void;
|
|
840
|
+
protected rollback(content: any, localOpMetadata: unknown): void;
|
|
841
|
+
searchForMarker(startPos: number, markerLabel: string, forwards?: boolean): Marker | undefined;
|
|
842
|
+
}
|
|
843
|
+
|
|
844
|
+
// @alpha (undocumented)
|
|
845
|
+
export class SharedStringFactory implements IChannelFactory {
|
|
846
|
+
// (undocumented)
|
|
847
|
+
static readonly Attributes: IChannelAttributes;
|
|
848
|
+
// (undocumented)
|
|
849
|
+
get attributes(): IChannelAttributes;
|
|
850
|
+
create(document: IFluidDataStoreRuntime, id: string): SharedString;
|
|
851
|
+
load(runtime: IFluidDataStoreRuntime, id: string, services: IChannelServices, attributes: IChannelAttributes): Promise<SharedString>;
|
|
852
|
+
// (undocumented)
|
|
853
|
+
static segmentFromSpec(spec: any): SharedStringSegment;
|
|
854
|
+
// (undocumented)
|
|
855
|
+
static Type: string;
|
|
856
|
+
// (undocumented)
|
|
857
|
+
get type(): string;
|
|
858
|
+
}
|
|
859
|
+
|
|
860
|
+
// @alpha (undocumented)
|
|
861
|
+
export type SharedStringSegment = TextSegment | Marker;
|
|
862
|
+
|
|
351
863
|
// @public
|
|
352
|
-
export
|
|
353
|
-
|
|
864
|
+
export const SharedTree: ISharedObjectKind<ITree>;
|
|
865
|
+
|
|
866
|
+
// @alpha
|
|
867
|
+
export enum Side {
|
|
868
|
+
// (undocumented)
|
|
869
|
+
After = 1,
|
|
870
|
+
// (undocumented)
|
|
871
|
+
Before = 0
|
|
354
872
|
}
|
|
355
873
|
|
|
356
874
|
// @public
|
|
357
|
-
export
|
|
358
|
-
getFactory(): IChannelFactory<ITree>;
|
|
359
|
-
};
|
|
875
|
+
export type TransactionConstraint = NodeInDocumentConstraint;
|
|
360
876
|
|
|
361
877
|
// @public
|
|
362
878
|
export const Tree: TreeApi;
|
|
363
879
|
|
|
364
880
|
// @public
|
|
365
881
|
export interface TreeApi extends TreeNodeApi {
|
|
882
|
+
contains(node: TreeNode, other: TreeNode): boolean;
|
|
366
883
|
runTransaction<TNode extends TreeNode>(node: TNode, transaction: (node: TNode) => void | "rollback"): void;
|
|
367
|
-
runTransaction<
|
|
884
|
+
runTransaction<TNode extends TreeNode>(node: TNode, transaction: (node: TNode) => void | "rollback", preconditions?: TransactionConstraint[]): void;
|
|
885
|
+
runTransaction<TView extends TreeView<ImplicitFieldSchema>>(tree: TView, transaction: (root: TView["root"]) => void | "rollback"): void;
|
|
886
|
+
runTransaction<TView extends TreeView<ImplicitFieldSchema>>(tree: TView, transaction: (root: TView["root"]) => void | "rollback", preconditions?: TransactionConstraint[]): void;
|
|
368
887
|
}
|
|
369
888
|
|
|
370
889
|
// @public
|
|
371
|
-
export interface TreeArrayNode<TAllowedTypes extends ImplicitAllowedTypes = ImplicitAllowedTypes> extends
|
|
890
|
+
export interface TreeArrayNode<TAllowedTypes extends ImplicitAllowedTypes = ImplicitAllowedTypes> extends TreeArrayNodeBase<TreeNodeFromImplicitAllowedTypes<TAllowedTypes>, InsertableTreeNodeFromImplicitAllowedTypes<TAllowedTypes>, TreeArrayNode> {
|
|
372
891
|
}
|
|
373
892
|
|
|
374
893
|
// @public
|
|
@@ -397,6 +916,16 @@ export interface TreeArrayNodeBase<out T, in TNew, in TMoveFrom> extends Readonl
|
|
|
397
916
|
removeRange(start?: number, end?: number): void;
|
|
398
917
|
}
|
|
399
918
|
|
|
919
|
+
// @public
|
|
920
|
+
export interface TreeArrayNodeUnsafe<TAllowedTypes extends Unenforced<ImplicitAllowedTypes>> extends TreeArrayNodeBase<TreeNodeFromImplicitAllowedTypesUnsafe<TAllowedTypes>, InsertableTreeNodeFromImplicitAllowedTypesUnsafe<TAllowedTypes>, TreeArrayNode> {
|
|
921
|
+
}
|
|
922
|
+
|
|
923
|
+
// @public
|
|
924
|
+
export interface TreeChangeEvents {
|
|
925
|
+
nodeChanged(): void;
|
|
926
|
+
treeChanged(): void;
|
|
927
|
+
}
|
|
928
|
+
|
|
400
929
|
// @public
|
|
401
930
|
export class TreeConfiguration<TSchema extends ImplicitFieldSchema = ImplicitFieldSchema> {
|
|
402
931
|
constructor(schema: TSchema, initialTree: () => InsertableTreeFieldFromImplicitField<TSchema>);
|
|
@@ -409,6 +938,9 @@ export class TreeConfiguration<TSchema extends ImplicitFieldSchema = ImplicitFie
|
|
|
409
938
|
// @public
|
|
410
939
|
export type TreeFieldFromImplicitField<TSchema extends ImplicitFieldSchema = FieldSchema> = TSchema extends FieldSchema<infer Kind, infer Types> ? ApplyKind<TreeNodeFromImplicitAllowedTypes<Types>, Kind> : TSchema extends ImplicitAllowedTypes ? TreeNodeFromImplicitAllowedTypes<TSchema> : unknown;
|
|
411
940
|
|
|
941
|
+
// @public
|
|
942
|
+
export type TreeFieldFromImplicitFieldUnsafe<TSchema extends Unenforced<ImplicitFieldSchema>> = TSchema extends FieldSchemaUnsafe<infer Kind, infer Types> ? ApplyKind<TreeNodeFromImplicitAllowedTypesUnsafe<Types>, Kind> : TSchema extends ImplicitAllowedTypes ? TreeNodeFromImplicitAllowedTypesUnsafe<TSchema> : unknown;
|
|
943
|
+
|
|
412
944
|
// @public
|
|
413
945
|
export type TreeLeafValue = number | string | boolean | IFluidHandle | null;
|
|
414
946
|
|
|
@@ -418,6 +950,12 @@ export interface TreeMapNode<T extends ImplicitAllowedTypes = ImplicitAllowedTyp
|
|
|
418
950
|
set(key: string, value: InsertableTreeNodeFromImplicitAllowedTypes<T> | undefined): void;
|
|
419
951
|
}
|
|
420
952
|
|
|
953
|
+
// @public
|
|
954
|
+
export interface TreeMapNodeUnsafe<T extends Unenforced<ImplicitAllowedTypes>> extends ReadonlyMap<string, TreeNodeFromImplicitAllowedTypesUnsafe<T>>, TreeNode {
|
|
955
|
+
delete(key: string): void;
|
|
956
|
+
set(key: string, value: InsertableTreeNodeFromImplicitAllowedTypesUnsafe<T> | undefined): void;
|
|
957
|
+
}
|
|
958
|
+
|
|
421
959
|
// @public
|
|
422
960
|
export abstract class TreeNode implements WithType {
|
|
423
961
|
abstract get [type](): string;
|
|
@@ -427,19 +965,18 @@ export abstract class TreeNode implements WithType {
|
|
|
427
965
|
export interface TreeNodeApi {
|
|
428
966
|
is<TSchema extends TreeNodeSchema>(value: unknown, schema: TSchema): value is NodeFromSchema<TSchema>;
|
|
429
967
|
key(node: TreeNode): string | number;
|
|
430
|
-
on<K extends keyof
|
|
968
|
+
on<K extends keyof TreeChangeEvents>(node: TreeNode, eventName: K, listener: TreeChangeEvents[K]): () => void;
|
|
431
969
|
parent(node: TreeNode): TreeNode | undefined;
|
|
432
970
|
schema<T extends TreeNode | TreeLeafValue>(node: T): TreeNodeSchema<string, NodeKind, unknown, T>;
|
|
971
|
+
shortId(node: TreeNode): number | undefined;
|
|
433
972
|
readonly status: (node: TreeNode) => TreeStatus;
|
|
434
973
|
}
|
|
435
974
|
|
|
436
975
|
// @public
|
|
437
|
-
export
|
|
438
|
-
afterChange(): void;
|
|
439
|
-
}
|
|
976
|
+
export type TreeNodeFromImplicitAllowedTypes<TSchema extends ImplicitAllowedTypes = TreeNodeSchema> = TSchema extends TreeNodeSchema ? NodeFromSchema<TSchema> : TSchema extends AllowedTypes ? NodeFromSchema<FlexListToUnion<TSchema>> : unknown;
|
|
440
977
|
|
|
441
978
|
// @public
|
|
442
|
-
export type
|
|
979
|
+
export type TreeNodeFromImplicitAllowedTypesUnsafe<TSchema extends Unenforced<ImplicitAllowedTypes>> = TSchema extends ImplicitAllowedTypes ? TreeNodeFromImplicitAllowedTypes<TSchema> : TSchema extends TreeNodeSchema ? NodeFromSchema<TSchema> : TSchema extends AllowedTypes ? NodeFromSchema<FlexListToUnion<TSchema>> : unknown;
|
|
443
980
|
|
|
444
981
|
// @public
|
|
445
982
|
export type TreeNodeSchema<Name extends string = string, Kind extends NodeKind = NodeKind, TNode = unknown, TBuild = never, ImplicitlyConstructable extends boolean = boolean, Info = unknown> = TreeNodeSchemaClass<Name, Kind, TNode, TBuild, ImplicitlyConstructable, Info> | TreeNodeSchemaNonClass<Name, Kind, TNode, TBuild, ImplicitlyConstructable, Info>;
|
|
@@ -466,6 +1003,12 @@ export interface TreeNodeSchemaNonClass<out Name extends string = string, out Ki
|
|
|
466
1003
|
create(data: TInsertable): TNode;
|
|
467
1004
|
}
|
|
468
1005
|
|
|
1006
|
+
// @public
|
|
1007
|
+
export type TreeObjectNode<T extends RestrictiveReadonlyRecord<string, ImplicitFieldSchema>, TypeName extends string = string> = TreeNode & ObjectFromSchemaRecord<T> & WithType<TypeName>;
|
|
1008
|
+
|
|
1009
|
+
// @public
|
|
1010
|
+
export type TreeObjectNodeUnsafe<T extends Unenforced<RestrictiveReadonlyRecord<string, ImplicitFieldSchema>>, TypeName extends string = string> = TreeNode & ObjectFromSchemaRecordUnsafe<T> & WithType<TypeName>;
|
|
1011
|
+
|
|
469
1012
|
// @public
|
|
470
1013
|
export enum TreeStatus {
|
|
471
1014
|
Deleted = 2,
|
|
@@ -474,25 +1017,41 @@ export enum TreeStatus {
|
|
|
474
1017
|
}
|
|
475
1018
|
|
|
476
1019
|
// @public
|
|
477
|
-
export interface TreeView<
|
|
1020
|
+
export interface TreeView<TSchema extends ImplicitFieldSchema> extends IDisposable {
|
|
478
1021
|
readonly error?: SchemaIncompatible;
|
|
479
1022
|
readonly events: ISubscribable<TreeViewEvents>;
|
|
480
|
-
|
|
1023
|
+
get root(): TreeFieldFromImplicitField<TSchema>;
|
|
1024
|
+
set root(newRoot: InsertableTreeFieldFromImplicitField<TSchema>);
|
|
481
1025
|
upgradeSchema(): void;
|
|
482
1026
|
}
|
|
483
1027
|
|
|
484
1028
|
// @public
|
|
485
1029
|
export interface TreeViewEvents {
|
|
486
1030
|
afterBatch(): void;
|
|
1031
|
+
commitApplied(data: CommitMetadata, getRevertible?: RevertibleFactory): void;
|
|
487
1032
|
rootChanged(): void;
|
|
488
1033
|
}
|
|
489
1034
|
|
|
490
1035
|
// @public
|
|
491
1036
|
export const type: unique symbol;
|
|
492
1037
|
|
|
1038
|
+
// @public
|
|
1039
|
+
export type Unenforced<_DesiredExtendsConstraint> = unknown;
|
|
1040
|
+
|
|
493
1041
|
// @public
|
|
494
1042
|
export type Unhydrated<T> = T;
|
|
495
1043
|
|
|
1044
|
+
// @public
|
|
1045
|
+
export type ValidateRecursiveSchema<T extends TreeNodeSchemaClass<string, NodeKind.Array | NodeKind.Map | NodeKind.Object, TreeNode & WithType<T["identifier"]>, {
|
|
1046
|
+
[NodeKind.Object]: T["info"] extends RestrictiveReadonlyRecord<string, ImplicitFieldSchema> ? InsertableObjectFromSchemaRecord<T["info"]> : unknown;
|
|
1047
|
+
[NodeKind.Array]: T["info"] extends ImplicitAllowedTypes ? Iterable<InsertableTreeNodeFromImplicitAllowedTypes<T["info"]>> : unknown;
|
|
1048
|
+
[NodeKind.Map]: T["info"] extends ImplicitAllowedTypes ? Iterable<[string, InsertableTreeNodeFromImplicitAllowedTypes<T["info"]>]> : unknown;
|
|
1049
|
+
}[T["kind"]], false, {
|
|
1050
|
+
[NodeKind.Object]: RestrictiveReadonlyRecord<string, ImplicitFieldSchema>;
|
|
1051
|
+
[NodeKind.Array]: ImplicitAllowedTypes;
|
|
1052
|
+
[NodeKind.Map]: ImplicitAllowedTypes;
|
|
1053
|
+
}[T["kind"]]>> = true;
|
|
1054
|
+
|
|
496
1055
|
// @public
|
|
497
1056
|
export interface WithType<TName extends string = string> {
|
|
498
1057
|
get [type](): TName;
|