fluid-framework 2.0.0-rc.3.0.0 → 2.0.0-rc.3.0.10
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/api-report/fluid-framework.api.md +1695 -4
- package/package.json +11 -11
- package/dist/public.d.ts +0 -109
- package/lib/public.d.ts +0 -109
|
@@ -6,8 +6,10 @@
|
|
|
6
6
|
|
|
7
7
|
import { Client } from '@fluidframework/merge-tree/internal';
|
|
8
8
|
import { Deferred } from '@fluidframework/core-utils/internal';
|
|
9
|
+
import type { ErasedType } from '@fluidframework/core-interfaces';
|
|
9
10
|
import { FieldSchemaUnsafe as FieldSchemaUnsafe_2 } from './typesUnsafe.js';
|
|
10
11
|
import { FluidObject } from '@fluidframework/core-interfaces';
|
|
12
|
+
import { Forbidden as Forbidden_2 } from '../default-schema/defaultFieldKinds.js';
|
|
11
13
|
import { IChannel } from '@fluidframework/datastore-definitions';
|
|
12
14
|
import { IChannelAttributes } from '@fluidframework/datastore-definitions';
|
|
13
15
|
import { IChannelFactory } from '@fluidframework/datastore-definitions';
|
|
@@ -27,6 +29,7 @@ import { IMergeTreeDeltaCallbackArgs } from '@fluidframework/merge-tree/internal
|
|
|
27
29
|
import { IMergeTreeDeltaOpArgs } from '@fluidframework/merge-tree/internal';
|
|
28
30
|
import { IMergeTreeGroupMsg } from '@fluidframework/merge-tree/internal';
|
|
29
31
|
import { IMergeTreeMaintenanceCallbackArgs } from '@fluidframework/merge-tree/internal';
|
|
32
|
+
import { InsertableObjectFromSchemaRecordUnsafe as InsertableObjectFromSchemaRecordUnsafe_2 } from './typesUnsafe.js';
|
|
30
33
|
import { IRelativePosition } from '@fluidframework/merge-tree/internal';
|
|
31
34
|
import { ISegment } from '@fluidframework/merge-tree/internal';
|
|
32
35
|
import { ISegmentAction } from '@fluidframework/merge-tree/internal';
|
|
@@ -36,6 +39,7 @@ import { ISharedObjectEvents } from '@fluidframework/shared-object-base';
|
|
|
36
39
|
import { ISharedObjectKind } from '@fluidframework/shared-object-base';
|
|
37
40
|
import { ISummaryTreeWithStats } from '@fluidframework/runtime-definitions';
|
|
38
41
|
import { ITelemetryContext } from '@fluidframework/runtime-definitions';
|
|
42
|
+
import { LeafNodeSchema as LeafNodeSchema_2 } from '../feature-libraries/index.js';
|
|
39
43
|
import { LocalReferencePosition } from '@fluidframework/merge-tree/internal';
|
|
40
44
|
import { Marker } from '@fluidframework/merge-tree/internal';
|
|
41
45
|
import { MergeTreeDeltaOperationType } from '@fluidframework/merge-tree/internal';
|
|
@@ -46,17 +50,161 @@ import { PropertiesManager } from '@fluidframework/merge-tree/internal';
|
|
|
46
50
|
import { PropertySet } from '@fluidframework/merge-tree/internal';
|
|
47
51
|
import { ReferencePosition } from '@fluidframework/merge-tree/internal';
|
|
48
52
|
import { ReferenceType } from '@fluidframework/merge-tree/internal';
|
|
53
|
+
import { SchemaLibrary as SchemaLibrary_2 } from '../feature-libraries/schemaBuilderBase.js';
|
|
54
|
+
import { SessionSpaceCompressedId } from '@fluidframework/id-compressor';
|
|
49
55
|
import { SharedObject } from '@fluidframework/shared-object-base/internal';
|
|
50
56
|
import { SlidingPreference } from '@fluidframework/merge-tree/internal';
|
|
57
|
+
import { StableId } from '@fluidframework/id-compressor';
|
|
58
|
+
import type { Static } from '@sinclair/typebox';
|
|
51
59
|
import { TextSegment } from '@fluidframework/merge-tree/internal';
|
|
60
|
+
import { TreeNodeSchema as TreeNodeSchema_2 } from './schemaTypes.js';
|
|
61
|
+
import { TreeNodeSchemaClass as TreeNodeSchemaClass_2 } from './schemaTypes.js';
|
|
62
|
+
import { TreeObjectNodeUnsafe as TreeObjectNodeUnsafe_2 } from './typesUnsafe.js';
|
|
63
|
+
import type { TSchema } from '@sinclair/typebox';
|
|
52
64
|
import { TypedEventEmitter } from '@fluid-internal/client-utils';
|
|
53
65
|
|
|
66
|
+
// @internal
|
|
67
|
+
export function adaptEnum<TScope extends string, const TEnum extends Record<string, string>>(factory: SchemaFactory<TScope>, members: TEnum): (<TValue extends TEnum[keyof TEnum]>(value: TValue) => object & TreeNode & ObjectFromSchemaRecord<EmptyObject> & {
|
|
68
|
+
readonly value: TValue;
|
|
69
|
+
}) & { readonly [Property in keyof TEnum]: TreeNodeSchemaClass<ScopedSchemaName<TScope, TEnum[Property]>, NodeKind.Object, object & TreeNode & ObjectFromSchemaRecord<EmptyObject> & {
|
|
70
|
+
readonly value: TEnum[Property];
|
|
71
|
+
}, object & InsertableObjectFromSchemaRecord<EmptyObject>, true, unknown> & (new () => object & TreeNode & ObjectFromSchemaRecord<EmptyObject> & {
|
|
72
|
+
readonly value: TEnum[Property];
|
|
73
|
+
}); };
|
|
74
|
+
|
|
75
|
+
// @internal
|
|
76
|
+
export interface Adapters {
|
|
77
|
+
// (undocumented)
|
|
78
|
+
readonly tree?: readonly TreeAdapter[];
|
|
79
|
+
}
|
|
80
|
+
|
|
54
81
|
// @public
|
|
55
82
|
export type AllowedTypes = readonly LazyItem<TreeNodeSchema>[];
|
|
56
83
|
|
|
84
|
+
// @internal
|
|
85
|
+
export type AllowedTypeSet = Any | ReadonlySet<FlexTreeNodeSchema>;
|
|
86
|
+
|
|
87
|
+
// @internal
|
|
88
|
+
export type AllowedTypesToFlexInsertableTree<T extends FlexAllowedTypes> = [
|
|
89
|
+
T extends readonly LazyItem<FlexTreeNodeSchema>[] ? InsertableFlexNode<Assume<FlexListToUnion<T>, FlexTreeNodeSchema>> : ContextuallyTypedNodeData
|
|
90
|
+
][_InlineTrick];
|
|
91
|
+
|
|
92
|
+
// @internal
|
|
93
|
+
export enum AllowedUpdateType {
|
|
94
|
+
Initialize = 1,
|
|
95
|
+
None = 0,
|
|
96
|
+
SchemaCompatible = 2
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
// @internal
|
|
100
|
+
export type AllowOptional<T> = [FlattenKeys<RequiredFields<T> & OptionalFields<T>>][_InlineTrick];
|
|
101
|
+
|
|
102
|
+
// @internal
|
|
103
|
+
export type AllowOptionalNotFlattened<T> = [RequiredFields<T> & OptionalFields<T>][_InlineTrick];
|
|
104
|
+
|
|
105
|
+
// @internal
|
|
106
|
+
export type Anchor = Brand<number, "rebaser.Anchor">;
|
|
107
|
+
|
|
108
|
+
// @internal
|
|
109
|
+
export interface AnchorEvents {
|
|
110
|
+
afterDestroy(anchor: AnchorNode): void;
|
|
111
|
+
childrenChanged(anchor: AnchorNode): void;
|
|
112
|
+
childrenChanging(anchor: AnchorNode): void;
|
|
113
|
+
subtreeChanged(anchor: AnchorNode): void;
|
|
114
|
+
subtreeChanging(anchor: AnchorNode): PathVisitor | void;
|
|
115
|
+
valueChanging(anchor: AnchorNode, value: Value): void;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
// @internal
|
|
119
|
+
export interface AnchorLocator {
|
|
120
|
+
locate(anchor: Anchor): AnchorNode | undefined;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
// @internal
|
|
124
|
+
export interface AnchorNode extends UpPath<AnchorNode>, ISubscribable<AnchorEvents> {
|
|
125
|
+
readonly anchorSet: AnchorSet;
|
|
126
|
+
child(key: FieldKey, index: number): UpPath<AnchorNode>;
|
|
127
|
+
getOrCreateChildRef(key: FieldKey, index: number): [Anchor, AnchorNode];
|
|
128
|
+
readonly slots: BrandedMapSubset<AnchorSlot<any>>;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
// @internal @sealed
|
|
132
|
+
export class AnchorSet implements ISubscribable<AnchorSetRootEvents>, AnchorLocator {
|
|
133
|
+
constructor();
|
|
134
|
+
acquireVisitor(): AnnouncedVisitor & DeltaVisitor;
|
|
135
|
+
// (undocumented)
|
|
136
|
+
forget(anchor: Anchor): void;
|
|
137
|
+
generationNumber: number;
|
|
138
|
+
internalizePath(originalPath: UpPath): UpPath;
|
|
139
|
+
isEmpty(): boolean;
|
|
140
|
+
// (undocumented)
|
|
141
|
+
locate(anchor: Anchor): AnchorNode | undefined;
|
|
142
|
+
// (undocumented)
|
|
143
|
+
on<K extends keyof AnchorSetRootEvents>(eventName: K, listener: AnchorSetRootEvents[K]): () => void;
|
|
144
|
+
get slots(): BrandedMapSubset<AnchorSlot<any>>;
|
|
145
|
+
track(path: UpPath | null): Anchor;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
// @internal
|
|
149
|
+
export interface AnchorSetRootEvents {
|
|
150
|
+
childrenChanging(anchors: AnchorSet): void;
|
|
151
|
+
treeChanging(anchors: AnchorSet): void;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
// @internal
|
|
155
|
+
export type AnchorSlot<TContent> = BrandedKey<Opaque<Brand<number, "AnchorSlot">>, TContent>;
|
|
156
|
+
|
|
157
|
+
// @internal
|
|
158
|
+
export function anchorSlot<TContent>(): AnchorSlot<TContent>;
|
|
159
|
+
|
|
160
|
+
// @internal
|
|
161
|
+
export interface AnnouncedVisitor extends DeltaVisitor {
|
|
162
|
+
// (undocumented)
|
|
163
|
+
afterAttach(source: FieldKey, destination: Range_2): void;
|
|
164
|
+
afterCreate(content: ProtoNodes, destination: FieldKey): void;
|
|
165
|
+
// (undocumented)
|
|
166
|
+
afterDetach(source: PlaceIndex, count: number, destination: FieldKey): void;
|
|
167
|
+
// (undocumented)
|
|
168
|
+
afterReplace(newContentSource: FieldKey, newContent: Range_2, oldContent: FieldKey): void;
|
|
169
|
+
// (undocumented)
|
|
170
|
+
beforeAttach(source: FieldKey, count: number, destination: PlaceIndex): void;
|
|
171
|
+
// (undocumented)
|
|
172
|
+
beforeDestroy(field: FieldKey, count: number): void;
|
|
173
|
+
// (undocumented)
|
|
174
|
+
beforeDetach(source: Range_2, destination: FieldKey): void;
|
|
175
|
+
// (undocumented)
|
|
176
|
+
beforeReplace(newContent: FieldKey, oldContent: Range_2, oldContentDestination: FieldKey): void;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
// @internal
|
|
180
|
+
export const Any: "Any";
|
|
181
|
+
|
|
182
|
+
// @internal
|
|
183
|
+
export type Any = typeof Any;
|
|
184
|
+
|
|
57
185
|
// @public
|
|
58
186
|
export type ApplyKind<T, Kind extends FieldKind> = Kind extends FieldKind.Required ? T : undefined | T;
|
|
59
187
|
|
|
188
|
+
// @internal
|
|
189
|
+
export type ApplyMultiplicity<TMultiplicity extends Multiplicity, TypedChild> = {
|
|
190
|
+
[Multiplicity.Forbidden]: undefined;
|
|
191
|
+
[Multiplicity.Optional]: undefined | TypedChild;
|
|
192
|
+
[Multiplicity.Sequence]: TypedChild[];
|
|
193
|
+
[Multiplicity.Single]: TypedChild;
|
|
194
|
+
}[TMultiplicity];
|
|
195
|
+
|
|
196
|
+
// @internal
|
|
197
|
+
export interface ArrayLikeMut<TGet, TSet extends TGet = TGet> extends ArrayLike<TGet> {
|
|
198
|
+
// (undocumented)
|
|
199
|
+
[n: number]: TSet;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
// @internal
|
|
203
|
+
export type AssignableFieldKinds = typeof FieldKinds.optional | typeof FieldKinds.required;
|
|
204
|
+
|
|
205
|
+
// @internal
|
|
206
|
+
export type Assume<TInput, TAssumeToBe> = [TInput] extends [TAssumeToBe] ? TInput : TAssumeToBe;
|
|
207
|
+
|
|
60
208
|
// @public
|
|
61
209
|
export enum AttachState {
|
|
62
210
|
Attached = "Attached",
|
|
@@ -64,6 +212,71 @@ export enum AttachState {
|
|
|
64
212
|
Detached = "Detached"
|
|
65
213
|
}
|
|
66
214
|
|
|
215
|
+
// @internal
|
|
216
|
+
export type Brand<ValueType, Name> = ValueType & BrandedType<ValueType, Name>;
|
|
217
|
+
|
|
218
|
+
// @internal
|
|
219
|
+
export function brand<T>(value: T extends BrandedType<infer ValueType, unknown> ? ValueType : never): T;
|
|
220
|
+
|
|
221
|
+
// @internal
|
|
222
|
+
export type BrandedKey<TKey, TContent> = TKey & Invariant<TContent>;
|
|
223
|
+
|
|
224
|
+
// @internal (undocumented)
|
|
225
|
+
export type BrandedKeyContent<TKey extends BrandedKey<unknown, any>> = TKey extends BrandedKey<unknown, infer TContent> ? TContent : never;
|
|
226
|
+
|
|
227
|
+
// @internal
|
|
228
|
+
export interface BrandedMapSubset<K extends BrandedKey<unknown, any>> {
|
|
229
|
+
// (undocumented)
|
|
230
|
+
delete(key: K): boolean;
|
|
231
|
+
// (undocumented)
|
|
232
|
+
get<K2 extends K>(key: K2): BrandedKeyContent<K2> | undefined;
|
|
233
|
+
// (undocumented)
|
|
234
|
+
has(key: K): boolean;
|
|
235
|
+
// (undocumented)
|
|
236
|
+
set<K2 extends K>(key: K2, value: BrandedKeyContent<K2>): this;
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
// @internal @sealed
|
|
240
|
+
export abstract class BrandedType<out ValueType, Name> {
|
|
241
|
+
static [Symbol.hasInstance](value: never): value is never;
|
|
242
|
+
protected abstract brand(dummy: never): Name;
|
|
243
|
+
// (undocumented)
|
|
244
|
+
protected _typeCheck?: Covariant<ValueType>;
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
// @internal
|
|
248
|
+
export function buildTreeConfiguration<T extends FlexFieldSchema>(config: InitializeAndSchematizeConfiguration<T>): InitializeAndSchematizeConfiguration<T>;
|
|
249
|
+
|
|
250
|
+
// @internal
|
|
251
|
+
export type ChangesetLocalId = Brand<number, "ChangesetLocalId">;
|
|
252
|
+
|
|
253
|
+
// @internal
|
|
254
|
+
export interface CheckoutEvents {
|
|
255
|
+
afterBatch(): void;
|
|
256
|
+
commitApplied(data: CommitMetadata, getRevertible?: RevertibleFactory): void;
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
// @internal
|
|
260
|
+
export type CheckTypesOverlap<T, TCheck> = [Extract<T, TCheck> extends never ? never : T][0];
|
|
261
|
+
|
|
262
|
+
// @internal
|
|
263
|
+
export type ChildCollection = FieldKey | RootField;
|
|
264
|
+
|
|
265
|
+
// @internal
|
|
266
|
+
export interface ChildLocation {
|
|
267
|
+
// (undocumented)
|
|
268
|
+
readonly container: ChildCollection;
|
|
269
|
+
// (undocumented)
|
|
270
|
+
readonly index: number;
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
// @internal
|
|
274
|
+
export type CollectOptions<TTypedFields, TValueSchema extends ValueSchema | undefined, TName> = TValueSchema extends undefined ? FlattenKeys<{
|
|
275
|
+
[typeNameSymbol]?: UnbrandedName<TName>;
|
|
276
|
+
} & (TValueSchema extends ValueSchema ? {
|
|
277
|
+
[valueSymbol]: TreeValue<TValueSchema>;
|
|
278
|
+
} : EmptyObject)> & TTypedFields : TValueSchema extends ValueSchema ? TreeValue<TValueSchema> : undefined;
|
|
279
|
+
|
|
67
280
|
// @public
|
|
68
281
|
export enum CommitKind {
|
|
69
282
|
Default = 0,
|
|
@@ -77,6 +290,12 @@ export interface CommitMetadata {
|
|
|
77
290
|
readonly kind: CommitKind;
|
|
78
291
|
}
|
|
79
292
|
|
|
293
|
+
// @internal
|
|
294
|
+
export function compareLocalNodeKeys(a: LocalNodeKey, b: LocalNodeKey): -1 | 0 | 1;
|
|
295
|
+
|
|
296
|
+
// @internal
|
|
297
|
+
export function configuredSharedTree(options: SharedTreeOptions): ISharedObjectKind<ITree>;
|
|
298
|
+
|
|
80
299
|
// @public
|
|
81
300
|
export enum ConnectionState {
|
|
82
301
|
CatchingUp = 1,
|
|
@@ -118,6 +337,68 @@ export interface ContainerSchema {
|
|
|
118
337
|
readonly initialObjects: LoadableObjectClassRecord;
|
|
119
338
|
}
|
|
120
339
|
|
|
340
|
+
// @internal
|
|
341
|
+
export type ContextuallyTypedFieldData = ContextuallyTypedNodeData | undefined;
|
|
342
|
+
|
|
343
|
+
// @internal
|
|
344
|
+
export type ContextuallyTypedNodeData = ContextuallyTypedNodeDataObject | number | string | boolean | null | readonly ContextuallyTypedNodeData[] | MarkedArrayLike<ContextuallyTypedNodeData>;
|
|
345
|
+
|
|
346
|
+
// @internal
|
|
347
|
+
export interface ContextuallyTypedNodeDataObject {
|
|
348
|
+
readonly [typeNameSymbol]?: string;
|
|
349
|
+
readonly [valueSymbol]?: Value;
|
|
350
|
+
[key: FieldKey]: ContextuallyTypedFieldData;
|
|
351
|
+
[key: string]: ContextuallyTypedFieldData;
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
// @internal
|
|
355
|
+
export interface Contravariant<in T> {
|
|
356
|
+
// (undocumented)
|
|
357
|
+
_removeCovariance?: (_: T) => void;
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
// @internal
|
|
361
|
+
export interface Covariant<out T> {
|
|
362
|
+
// (undocumented)
|
|
363
|
+
_removeContravariance?: T;
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
// @internal
|
|
367
|
+
export function createEmitter<E extends Events<E>>(noListeners?: NoListenersCallback<E>): ISubscribable<E> & IEmitter<E> & HasListeners<E>;
|
|
368
|
+
|
|
369
|
+
// @internal
|
|
370
|
+
export interface CursorAdapter<TNode> {
|
|
371
|
+
// (undocumented)
|
|
372
|
+
getFieldFromNode(node: TNode, key: FieldKey): readonly TNode[];
|
|
373
|
+
// (undocumented)
|
|
374
|
+
keysFromNode(node: TNode): readonly FieldKey[];
|
|
375
|
+
// (undocumented)
|
|
376
|
+
type(node: TNode): TreeType;
|
|
377
|
+
// (undocumented)
|
|
378
|
+
value(node: TNode): Value;
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
// @internal
|
|
382
|
+
export function cursorForJsonableTreeNode(root: JsonableTree): ITreeCursorSynchronous;
|
|
383
|
+
|
|
384
|
+
// @internal
|
|
385
|
+
export function cursorForTypedTreeData<T extends FlexTreeNodeSchema>(context: TreeDataContext, schema: T, data: InsertableFlexNode<T>): ITreeCursorSynchronous;
|
|
386
|
+
|
|
387
|
+
// @internal
|
|
388
|
+
export function cursorFromContextualData(context: TreeDataContext, typeSet: AllowedTypeSet, data: ContextuallyTypedNodeData): ITreeCursorSynchronous;
|
|
389
|
+
|
|
390
|
+
// @internal (undocumented)
|
|
391
|
+
export const enum CursorLocationType {
|
|
392
|
+
Fields = 1,
|
|
393
|
+
Nodes = 0
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
// @internal
|
|
397
|
+
export interface CursorWithNode<TNode> extends ITreeCursorSynchronous {
|
|
398
|
+
fork(): CursorWithNode<TNode>;
|
|
399
|
+
getNode(): TNode;
|
|
400
|
+
}
|
|
401
|
+
|
|
121
402
|
// @public
|
|
122
403
|
export type DataObjectClass<T extends IFluidLoadable = IFluidLoadable> = {
|
|
123
404
|
readonly factory: {
|
|
@@ -125,9 +406,107 @@ export type DataObjectClass<T extends IFluidLoadable = IFluidLoadable> = {
|
|
|
125
406
|
};
|
|
126
407
|
} & (new (...args: any[]) => T);
|
|
127
408
|
|
|
409
|
+
// @internal
|
|
410
|
+
export const defaultSchemaPolicy: FullSchemaPolicy;
|
|
411
|
+
|
|
412
|
+
// @internal
|
|
413
|
+
export interface DeltaDetachedNodeBuild<TTree = DeltaProtoNode> {
|
|
414
|
+
// (undocumented)
|
|
415
|
+
readonly id: DeltaDetachedNodeId;
|
|
416
|
+
// (undocumented)
|
|
417
|
+
readonly trees: readonly TTree[];
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
// @internal
|
|
421
|
+
export interface DeltaDetachedNodeChanges {
|
|
422
|
+
// (undocumented)
|
|
423
|
+
readonly fields: DeltaFieldMap;
|
|
424
|
+
// (undocumented)
|
|
425
|
+
readonly id: DeltaDetachedNodeId;
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
// @internal
|
|
429
|
+
export interface DeltaDetachedNodeDestruction {
|
|
430
|
+
// (undocumented)
|
|
431
|
+
readonly count: number;
|
|
432
|
+
// (undocumented)
|
|
433
|
+
readonly id: DeltaDetachedNodeId;
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
// @internal
|
|
437
|
+
export interface DeltaDetachedNodeId {
|
|
438
|
+
// (undocumented)
|
|
439
|
+
readonly major?: RevisionTag;
|
|
440
|
+
// (undocumented)
|
|
441
|
+
readonly minor: number;
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
// @internal
|
|
445
|
+
export interface DeltaDetachedNodeRename {
|
|
446
|
+
// (undocumented)
|
|
447
|
+
readonly count: number;
|
|
448
|
+
// (undocumented)
|
|
449
|
+
readonly newId: DeltaDetachedNodeId;
|
|
450
|
+
// (undocumented)
|
|
451
|
+
readonly oldId: DeltaDetachedNodeId;
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
// @internal
|
|
455
|
+
export interface DeltaFieldChanges {
|
|
456
|
+
readonly global?: readonly DeltaDetachedNodeChanges[];
|
|
457
|
+
readonly local?: readonly DeltaMark[];
|
|
458
|
+
readonly rename?: readonly DeltaDetachedNodeRename[];
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
// @internal (undocumented)
|
|
462
|
+
export type DeltaFieldMap = ReadonlyMap<FieldKey, DeltaFieldChanges>;
|
|
463
|
+
|
|
464
|
+
// @internal
|
|
465
|
+
export interface DeltaMark {
|
|
466
|
+
readonly attach?: DeltaDetachedNodeId;
|
|
467
|
+
readonly count: number;
|
|
468
|
+
readonly detach?: DeltaDetachedNodeId;
|
|
469
|
+
readonly fields?: DeltaFieldMap;
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
// @internal
|
|
473
|
+
export type DeltaProtoNode = ITreeCursorSynchronous;
|
|
474
|
+
|
|
475
|
+
// @internal
|
|
476
|
+
export interface DeltaRoot<TTree = DeltaProtoNode> {
|
|
477
|
+
readonly build?: readonly DeltaDetachedNodeBuild<TTree>[];
|
|
478
|
+
readonly destroy?: readonly DeltaDetachedNodeDestruction[];
|
|
479
|
+
readonly fields?: DeltaFieldMap;
|
|
480
|
+
readonly refreshers?: readonly DeltaDetachedNodeBuild<TTree>[];
|
|
481
|
+
}
|
|
482
|
+
|
|
483
|
+
// @internal
|
|
484
|
+
export interface DeltaVisitor {
|
|
485
|
+
attach(source: FieldKey, count: number, destination: PlaceIndex): void;
|
|
486
|
+
create(content: ProtoNodes, destination: FieldKey): void;
|
|
487
|
+
destroy(detachedField: FieldKey, count: number): void;
|
|
488
|
+
detach(source: Range_2, destination: FieldKey): void;
|
|
489
|
+
enterField(key: FieldKey): void;
|
|
490
|
+
enterNode(index: NodeIndex): void;
|
|
491
|
+
exitField(key: FieldKey): void;
|
|
492
|
+
exitNode(index: NodeIndex): void;
|
|
493
|
+
free(): void;
|
|
494
|
+
replace(newContentSource: FieldKey, range: Range_2, oldContentDestination: FieldKey): void;
|
|
495
|
+
}
|
|
496
|
+
|
|
128
497
|
// @alpha (undocumented)
|
|
129
498
|
export type DeserializeCallback = (properties: PropertySet) => void;
|
|
130
499
|
|
|
500
|
+
// @internal
|
|
501
|
+
export interface DetachedField extends Opaque<Brand<string, "tree.DetachedField">> {
|
|
502
|
+
}
|
|
503
|
+
|
|
504
|
+
// @internal
|
|
505
|
+
export type DetachedPlaceUpPath = Brand<Omit<PlaceUpPath, "parent">, "DetachedRangeUpPath">;
|
|
506
|
+
|
|
507
|
+
// @internal
|
|
508
|
+
export type DetachedRangeUpPath = Brand<Omit<RangeUpPath, "parent">, "DetachedRangeUpPath">;
|
|
509
|
+
|
|
131
510
|
// @alpha @sealed
|
|
132
511
|
export class DirectoryFactory implements IChannelFactory<ISharedDirectory> {
|
|
133
512
|
static readonly Attributes: IChannelAttributes;
|
|
@@ -166,21 +545,99 @@ export const DriverErrorTypes: {
|
|
|
166
545
|
// @public
|
|
167
546
|
export type DriverErrorTypes = (typeof DriverErrorTypes)[keyof typeof DriverErrorTypes];
|
|
168
547
|
|
|
548
|
+
// @internal
|
|
549
|
+
export const EmptyKey: FieldKey;
|
|
550
|
+
|
|
551
|
+
// @internal
|
|
552
|
+
export type EmptyObject = {};
|
|
553
|
+
|
|
554
|
+
// @internal
|
|
555
|
+
export function encodeTreeSchema(schema: TreeStoredSchema): JsonCompatible;
|
|
556
|
+
|
|
557
|
+
// @internal
|
|
558
|
+
export function enumFromStrings<TScope extends string, const Members extends string>(factory: SchemaFactory<TScope>, members: Members[]): (<TValue extends Members>(value: TValue) => object & TreeNode & ObjectFromSchemaRecord<EmptyObject> & {
|
|
559
|
+
readonly value: TValue;
|
|
560
|
+
}) & Record<Members, TreeNodeSchemaClass<ScopedSchemaName<TScope, Members>, NodeKind.Object, object & TreeNode & ObjectFromSchemaRecord<EmptyObject> & {
|
|
561
|
+
readonly value: Members;
|
|
562
|
+
}, object & InsertableObjectFromSchemaRecord<EmptyObject>, true, unknown> & (new () => object & TreeNode & ObjectFromSchemaRecord<EmptyObject> & {
|
|
563
|
+
readonly value: Members;
|
|
564
|
+
})>;
|
|
565
|
+
|
|
566
|
+
// @internal
|
|
567
|
+
export interface ErasedTreeNodeSchemaDataFormat extends ErasedType<"TreeNodeSchemaDataFormat"> {
|
|
568
|
+
}
|
|
569
|
+
|
|
169
570
|
// @public
|
|
170
571
|
export type Events<E> = {
|
|
171
572
|
[P in (string | symbol) & keyof E as IsEvent<E[P]> extends true ? P : never]: E[P];
|
|
172
573
|
};
|
|
173
574
|
|
|
575
|
+
// @internal
|
|
576
|
+
export type ExtractFromOpaque<TOpaque extends BrandedType<any, unknown>> = TOpaque extends BrandedType<infer ValueType, infer Name> ? isAny<ValueType> extends true ? unknown : Brand<ValueType, Name> : never;
|
|
577
|
+
|
|
578
|
+
// @internal
|
|
579
|
+
export function extractFromOpaque<TOpaque extends BrandedType<any, unknown>>(value: TOpaque): ExtractFromOpaque<TOpaque>;
|
|
580
|
+
|
|
174
581
|
// @public
|
|
175
582
|
export type ExtractItemType<Item extends LazyItem> = Item extends () => infer Result ? Result : Item;
|
|
176
583
|
|
|
584
|
+
// @internal (undocumented)
|
|
585
|
+
export function fail(message: string): never;
|
|
586
|
+
|
|
587
|
+
// @internal
|
|
588
|
+
export interface FieldAnchor {
|
|
589
|
+
// (undocumented)
|
|
590
|
+
fieldKey: FieldKey;
|
|
591
|
+
parent: Anchor | undefined;
|
|
592
|
+
}
|
|
593
|
+
|
|
594
|
+
// @internal
|
|
595
|
+
export type FieldGenerator = () => MapTree[];
|
|
596
|
+
|
|
597
|
+
// @internal
|
|
598
|
+
export type FieldKey = Brand<string, "tree.FieldKey">;
|
|
599
|
+
|
|
177
600
|
// @public
|
|
178
601
|
export enum FieldKind {
|
|
179
|
-
Identifier = 2,
|
|
180
602
|
Optional = 0,
|
|
181
603
|
Required = 1
|
|
182
604
|
}
|
|
183
605
|
|
|
606
|
+
// @internal
|
|
607
|
+
export interface FieldKindData {
|
|
608
|
+
// (undocumented)
|
|
609
|
+
readonly identifier: FieldKindIdentifier;
|
|
610
|
+
// (undocumented)
|
|
611
|
+
readonly multiplicity: Multiplicity;
|
|
612
|
+
}
|
|
613
|
+
|
|
614
|
+
// @internal
|
|
615
|
+
export type FieldKindIdentifier = Brand<string, "tree.FieldKindIdentifier">;
|
|
616
|
+
|
|
617
|
+
// @internal
|
|
618
|
+
export const FieldKinds: {
|
|
619
|
+
readonly required: Required_2;
|
|
620
|
+
readonly optional: Optional;
|
|
621
|
+
readonly sequence: Sequence;
|
|
622
|
+
readonly nodeKey: NodeKeyFieldKind;
|
|
623
|
+
readonly identifier: Identifier;
|
|
624
|
+
readonly forbidden: Forbidden;
|
|
625
|
+
};
|
|
626
|
+
|
|
627
|
+
// @internal
|
|
628
|
+
export interface FieldLocation {
|
|
629
|
+
// (undocumented)
|
|
630
|
+
readonly key: FieldKey;
|
|
631
|
+
// (undocumented)
|
|
632
|
+
readonly parent: ForestLocation;
|
|
633
|
+
}
|
|
634
|
+
|
|
635
|
+
// @internal
|
|
636
|
+
export interface FieldMapObject<TChild> {
|
|
637
|
+
// (undocumented)
|
|
638
|
+
[key: string]: TChild[];
|
|
639
|
+
}
|
|
640
|
+
|
|
184
641
|
// @public
|
|
185
642
|
export interface FieldProps {
|
|
186
643
|
readonly key?: string;
|
|
@@ -206,12 +663,397 @@ export interface FieldSchemaUnsafe<out Kind extends FieldKind, out Types extends
|
|
|
206
663
|
readonly kind: Kind;
|
|
207
664
|
}
|
|
208
665
|
|
|
666
|
+
// @internal
|
|
667
|
+
export interface FieldUpPath<TUpPath extends UpPath = UpPath> {
|
|
668
|
+
readonly field: FieldKey;
|
|
669
|
+
readonly parent: TUpPath | undefined;
|
|
670
|
+
}
|
|
671
|
+
|
|
672
|
+
// @internal
|
|
673
|
+
export type FlattenKeys<T> = [{
|
|
674
|
+
[Property in keyof T]: T[Property];
|
|
675
|
+
}][_InlineTrick];
|
|
676
|
+
|
|
677
|
+
// @internal
|
|
678
|
+
export type FlexAllowedTypes = readonly [Any] | readonly LazyItem<FlexTreeNodeSchema>[];
|
|
679
|
+
|
|
680
|
+
// @internal @sealed
|
|
681
|
+
export abstract class FlexFieldKind<TName extends string = string, TMultiplicity extends Multiplicity = Multiplicity> implements FieldKindData {
|
|
682
|
+
protected constructor(identifier: TName & FieldKindIdentifier, multiplicity: TMultiplicity);
|
|
683
|
+
// (undocumented)
|
|
684
|
+
readonly identifier: TName & FieldKindIdentifier;
|
|
685
|
+
// (undocumented)
|
|
686
|
+
readonly multiplicity: TMultiplicity;
|
|
687
|
+
}
|
|
688
|
+
|
|
689
|
+
// @internal
|
|
690
|
+
export class FlexFieldNodeSchema<Name extends string = string, Specification extends Unenforced<FlexFieldSchema> = FlexFieldSchema> extends TreeNodeSchemaBase<Name, Specification> {
|
|
691
|
+
// (undocumented)
|
|
692
|
+
static create<const Name extends string, const Specification extends FlexFieldSchema>(builder: Named<string>, name: TreeNodeSchemaIdentifier<Name>, specification: Specification): FlexFieldNodeSchema<Name, Specification>;
|
|
693
|
+
// (undocumented)
|
|
694
|
+
getFieldSchema(field?: FieldKey): FlexFieldSchema;
|
|
695
|
+
// (undocumented)
|
|
696
|
+
protected _typeCheck2?: MakeNominal;
|
|
697
|
+
}
|
|
698
|
+
|
|
699
|
+
// @internal @sealed
|
|
700
|
+
export class FlexFieldSchema<out TKind extends FlexFieldKind = FlexFieldKind, const out TTypes extends Unenforced<FlexAllowedTypes> = FlexAllowedTypes> {
|
|
701
|
+
// (undocumented)
|
|
702
|
+
readonly allowedTypes: TTypes;
|
|
703
|
+
get allowedTypeSet(): AllowedTypeSet;
|
|
704
|
+
static create<TKind extends FlexFieldKind, const Types extends FlexAllowedTypes>(kind: TKind, allowedTypes: Types): FlexFieldSchema<TKind, Types>;
|
|
705
|
+
static createUnsafe<TKind extends FlexFieldKind, const Types extends Unenforced<FlexAllowedTypes>>(kind: TKind, allowedTypes: Types): FlexFieldSchema<TKind, Types>;
|
|
706
|
+
static readonly empty: FlexFieldSchema<Forbidden_2, readonly []>;
|
|
707
|
+
equals(other: FlexFieldSchema): boolean;
|
|
708
|
+
// (undocumented)
|
|
709
|
+
readonly kind: TKind;
|
|
710
|
+
get monomorphicChildType(): FlexTreeNodeSchema | undefined;
|
|
711
|
+
// (undocumented)
|
|
712
|
+
readonly stored: TreeFieldStoredSchema;
|
|
713
|
+
// (undocumented)
|
|
714
|
+
protected _typeCheck?: MakeNominal;
|
|
715
|
+
get types(): TreeTypeSet;
|
|
716
|
+
}
|
|
717
|
+
|
|
718
|
+
// @internal
|
|
719
|
+
export type FlexibleFieldContent<TSchema extends FlexFieldSchema> = InsertableFlexField<TSchema> | ITreeCursorSynchronous;
|
|
720
|
+
|
|
721
|
+
// @internal
|
|
722
|
+
export type FlexibleNodeContent<TTypes extends FlexAllowedTypes> = AllowedTypesToFlexInsertableTree<TTypes> | ITreeCursorSynchronous;
|
|
723
|
+
|
|
724
|
+
// @internal
|
|
725
|
+
export type FlexibleNodeSubSequence<TTypes extends FlexAllowedTypes> = Iterable<AllowedTypesToFlexInsertableTree<TTypes>> | ITreeCursorSynchronous;
|
|
726
|
+
|
|
727
|
+
// @internal
|
|
728
|
+
export type FlexImplicitAllowedTypes = FlexAllowedTypes | FlexTreeNodeSchema | Any;
|
|
729
|
+
|
|
730
|
+
// @internal
|
|
731
|
+
export type FlexImplicitFieldSchema = FlexFieldSchema | FlexImplicitAllowedTypes;
|
|
732
|
+
|
|
209
733
|
// @public
|
|
210
734
|
export type FlexList<Item = unknown> = readonly LazyItem<Item>[];
|
|
211
735
|
|
|
212
736
|
// @public
|
|
213
737
|
export type FlexListToUnion<TList extends FlexList> = ExtractItemType<TList[number]>;
|
|
214
738
|
|
|
739
|
+
// @internal
|
|
740
|
+
export type FlexMapFieldSchema = FlexFieldSchema<typeof FieldKinds.optional | typeof FieldKinds.sequence>;
|
|
741
|
+
|
|
742
|
+
// @internal (undocumented)
|
|
743
|
+
export class FlexMapNodeSchema<const out Name extends string = string, const out Specification extends Unenforced<FlexMapFieldSchema> = FlexMapFieldSchema> extends TreeNodeSchemaBase<Name, Specification> {
|
|
744
|
+
// (undocumented)
|
|
745
|
+
static create<const Name extends string, const Specification extends FlexMapFieldSchema>(builder: Named<string>, name: TreeNodeSchemaIdentifier<Name>, specification: Specification): FlexMapNodeSchema<Name, Specification>;
|
|
746
|
+
// (undocumented)
|
|
747
|
+
getFieldSchema(field: FieldKey): FlexMapFieldSchema;
|
|
748
|
+
// (undocumented)
|
|
749
|
+
get mapFields(): FlexMapFieldSchema;
|
|
750
|
+
// (undocumented)
|
|
751
|
+
protected _typeCheck2?: MakeNominal;
|
|
752
|
+
}
|
|
753
|
+
|
|
754
|
+
// @internal (undocumented)
|
|
755
|
+
export interface FlexObjectNodeFields {
|
|
756
|
+
// (undocumented)
|
|
757
|
+
readonly [key: string]: FlexFieldSchema;
|
|
758
|
+
}
|
|
759
|
+
|
|
760
|
+
// @internal (undocumented)
|
|
761
|
+
export class FlexObjectNodeSchema<const out Name extends string = string, const out Specification extends Unenforced<FlexObjectNodeFields> = FlexObjectNodeFields> extends TreeNodeSchemaBase<Name, Specification> {
|
|
762
|
+
// (undocumented)
|
|
763
|
+
static create<const Name extends string, const Specification extends FlexObjectNodeFields>(builder: Named<string>, name: TreeNodeSchemaIdentifier<Name>, specification: Specification): FlexObjectNodeSchema<Name, Specification>;
|
|
764
|
+
// (undocumented)
|
|
765
|
+
getFieldSchema(field: FieldKey): FlexFieldSchema;
|
|
766
|
+
// (undocumented)
|
|
767
|
+
readonly objectNodeFields: ReadonlyMap<FieldKey, FlexFieldSchema>;
|
|
768
|
+
// (undocumented)
|
|
769
|
+
readonly objectNodeFieldsObject: NormalizeObjectNodeFields<Assume<Specification, FlexObjectNodeFields>>;
|
|
770
|
+
// (undocumented)
|
|
771
|
+
protected _typeCheck2?: MakeNominal;
|
|
772
|
+
}
|
|
773
|
+
|
|
774
|
+
// @internal
|
|
775
|
+
export interface FlexTreeContext extends ISubscribable<ForestEvents> {
|
|
776
|
+
readonly forest: IForestSubscription;
|
|
777
|
+
// (undocumented)
|
|
778
|
+
readonly nodeKeys: NodeKeys;
|
|
779
|
+
get root(): FlexTreeField;
|
|
780
|
+
readonly schema: FlexTreeSchema;
|
|
781
|
+
}
|
|
782
|
+
|
|
783
|
+
// @internal
|
|
784
|
+
export interface FlexTreeEntity<out TSchema = unknown> {
|
|
785
|
+
readonly [flexTreeMarker]: FlexTreeEntityKind;
|
|
786
|
+
boxedIterator(): IterableIterator<FlexTreeEntity>;
|
|
787
|
+
readonly context: FlexTreeContext;
|
|
788
|
+
readonly schema: TSchema;
|
|
789
|
+
treeStatus(): TreeStatus;
|
|
790
|
+
}
|
|
791
|
+
|
|
792
|
+
// @internal (undocumented)
|
|
793
|
+
export enum FlexTreeEntityKind {
|
|
794
|
+
// (undocumented)
|
|
795
|
+
Field = 1,
|
|
796
|
+
// (undocumented)
|
|
797
|
+
Node = 0
|
|
798
|
+
}
|
|
799
|
+
|
|
800
|
+
// @internal
|
|
801
|
+
export interface FlexTreeField extends FlexTreeEntity<FlexFieldSchema> {
|
|
802
|
+
// (undocumented)
|
|
803
|
+
readonly [flexTreeMarker]: FlexTreeEntityKind.Field;
|
|
804
|
+
boxedAt(index: number): FlexTreeNode | undefined;
|
|
805
|
+
// (undocumented)
|
|
806
|
+
boxedIterator(): IterableIterator<FlexTreeNode>;
|
|
807
|
+
is<TSchema extends FlexFieldSchema>(schema: TSchema): this is FlexTreeTypedField<TSchema>;
|
|
808
|
+
isSameAs(other: FlexTreeField): boolean;
|
|
809
|
+
readonly key: FieldKey;
|
|
810
|
+
readonly parent?: FlexTreeNode;
|
|
811
|
+
}
|
|
812
|
+
|
|
813
|
+
// @internal
|
|
814
|
+
export interface FlexTreeFieldNode<in out TSchema extends FlexFieldNodeSchema> extends FlexTreeNode {
|
|
815
|
+
readonly boxedContent: FlexTreeTypedField<TSchema["info"]>;
|
|
816
|
+
readonly content: FlexTreeUnboxField<TSchema["info"]>;
|
|
817
|
+
// (undocumented)
|
|
818
|
+
readonly schema: TSchema;
|
|
819
|
+
}
|
|
820
|
+
|
|
821
|
+
// @internal
|
|
822
|
+
export interface FlexTreeLeafNode<in out TSchema extends LeafNodeSchema> extends FlexTreeNode {
|
|
823
|
+
// (undocumented)
|
|
824
|
+
readonly schema: TSchema;
|
|
825
|
+
readonly value: TreeValue<TSchema["info"]>;
|
|
826
|
+
}
|
|
827
|
+
|
|
828
|
+
// @internal
|
|
829
|
+
export interface FlexTreeMapNode<in out TSchema extends FlexMapNodeSchema> extends FlexTreeNode {
|
|
830
|
+
// (undocumented)
|
|
831
|
+
[Symbol.iterator](): IterableIterator<[
|
|
832
|
+
FieldKey,
|
|
833
|
+
FlexTreeUnboxField<TSchema["info"], "notEmpty">
|
|
834
|
+
]>;
|
|
835
|
+
boxedIterator(): IterableIterator<FlexTreeTypedField<TSchema["info"]>>;
|
|
836
|
+
delete(key: string): void;
|
|
837
|
+
entries(): IterableIterator<[FieldKey, FlexTreeUnboxField<TSchema["info"], "notEmpty">]>;
|
|
838
|
+
forEach(callbackFn: (value: FlexTreeUnboxField<TSchema["info"], "notEmpty">, key: FieldKey, map: FlexTreeMapNode<TSchema>) => void, thisArg?: any): void;
|
|
839
|
+
get(key: string): FlexTreeUnboxField<TSchema["info"]>;
|
|
840
|
+
getBoxed(key: string): FlexTreeTypedField<TSchema["info"]>;
|
|
841
|
+
has(key: string): boolean;
|
|
842
|
+
keys(): IterableIterator<FieldKey>;
|
|
843
|
+
// (undocumented)
|
|
844
|
+
readonly schema: TSchema;
|
|
845
|
+
set(key: string, value: FlexibleFieldContent<TSchema["info"]>): void;
|
|
846
|
+
readonly size: number;
|
|
847
|
+
values(): IterableIterator<FlexTreeUnboxField<TSchema["info"], "notEmpty">>;
|
|
848
|
+
}
|
|
849
|
+
|
|
850
|
+
// @internal
|
|
851
|
+
export const flexTreeMarker: unique symbol;
|
|
852
|
+
|
|
853
|
+
// @internal
|
|
854
|
+
export interface FlexTreeNode extends FlexTreeEntity<FlexTreeNodeSchema> {
|
|
855
|
+
// (undocumented)
|
|
856
|
+
readonly [flexTreeMarker]: FlexTreeEntityKind.Node;
|
|
857
|
+
readonly anchorNode: AnchorNode;
|
|
858
|
+
// (undocumented)
|
|
859
|
+
boxedIterator(): IterableIterator<FlexTreeField>;
|
|
860
|
+
getBoxed(key: FieldKey): FlexTreeField;
|
|
861
|
+
is<TSchema extends FlexTreeNodeSchema>(schema: TSchema): this is FlexTreeTypedNode<TSchema>;
|
|
862
|
+
on<K extends keyof FlexTreeNodeEvents>(eventName: K, listener: FlexTreeNodeEvents[K]): () => void;
|
|
863
|
+
readonly parentField: {
|
|
864
|
+
readonly parent: FlexTreeField;
|
|
865
|
+
readonly index: number;
|
|
866
|
+
};
|
|
867
|
+
tryGetField(key: FieldKey): undefined | FlexTreeField;
|
|
868
|
+
readonly value?: TreeValue;
|
|
869
|
+
}
|
|
870
|
+
|
|
871
|
+
// @internal
|
|
872
|
+
export interface FlexTreeNodeEvents {
|
|
873
|
+
changing(upPath: UpPath): void;
|
|
874
|
+
subtreeChanging(upPath: UpPath): PathVisitor | void;
|
|
875
|
+
}
|
|
876
|
+
|
|
877
|
+
// @internal
|
|
878
|
+
export interface FlexTreeNodeKeyField extends FlexTreeField {
|
|
879
|
+
// (undocumented)
|
|
880
|
+
readonly localNodeKey: LocalNodeKey;
|
|
881
|
+
// (undocumented)
|
|
882
|
+
readonly stableNodeKey: StableNodeKey;
|
|
883
|
+
}
|
|
884
|
+
|
|
885
|
+
// @internal (undocumented)
|
|
886
|
+
export type FlexTreeNodeSchema = TreeNodeSchemaBase;
|
|
887
|
+
|
|
888
|
+
// @internal
|
|
889
|
+
export interface FlexTreeObjectNode extends FlexTreeNode {
|
|
890
|
+
readonly localNodeKey?: LocalNodeKey;
|
|
891
|
+
// (undocumented)
|
|
892
|
+
readonly schema: FlexObjectNodeSchema;
|
|
893
|
+
}
|
|
894
|
+
|
|
895
|
+
// @internal
|
|
896
|
+
export type FlexTreeObjectNodeFields<TFields extends FlexObjectNodeFields> = FlexTreeObjectNodeFieldsInner<FlattenKeys<{
|
|
897
|
+
[key in keyof TFields as key extends PropertyNameFromFieldKey<key & string> ? key : never]: TFields[key];
|
|
898
|
+
} & {
|
|
899
|
+
[key in keyof TFields as key extends PropertyNameFromFieldKey<key & string> ? never : PropertyNameFromFieldKey<key & string>]: TFields[key];
|
|
900
|
+
}>>;
|
|
901
|
+
|
|
902
|
+
// @internal
|
|
903
|
+
export type FlexTreeObjectNodeFieldsInner<TFields extends FlexObjectNodeFields> = FlattenKeys<{
|
|
904
|
+
readonly [key in keyof TFields as `boxed${Capitalize<key & string>}`]: FlexTreeTypedField<TFields[key]>;
|
|
905
|
+
} & {
|
|
906
|
+
readonly [key in keyof TFields as TFields[key]["kind"] extends AssignableFieldKinds ? never : key]: FlexTreeUnboxField<TFields[key]>;
|
|
907
|
+
} & {
|
|
908
|
+
-readonly [key in keyof TFields as TFields[key]["kind"] extends AssignableFieldKinds ? key : never]: FlexTreeUnboxField<TFields[key]>;
|
|
909
|
+
} & {
|
|
910
|
+
readonly [key in keyof TFields as TFields[key]["kind"] extends AssignableFieldKinds ? `set${Capitalize<key & string>}` : never]: (content: FlexibleFieldContent<TFields[key]>) => void;
|
|
911
|
+
}>;
|
|
912
|
+
|
|
913
|
+
// @internal
|
|
914
|
+
export type FlexTreeObjectNodeTyped<TSchema extends FlexObjectNodeSchema> = FlexObjectNodeSchema extends TSchema ? FlexTreeObjectNode : FlexTreeObjectNode & FlexTreeObjectNodeFields<TSchema["info"]>;
|
|
915
|
+
|
|
916
|
+
// @internal
|
|
917
|
+
export interface FlexTreeOptionalField<in out TTypes extends FlexAllowedTypes> extends FlexTreeField {
|
|
918
|
+
// (undocumented)
|
|
919
|
+
readonly boxedContent?: FlexTreeTypedNodeUnion<TTypes>;
|
|
920
|
+
// (undocumented)
|
|
921
|
+
get content(): FlexTreeUnboxNodeUnion<TTypes> | undefined;
|
|
922
|
+
set content(newContent: FlexibleNodeContent<TTypes> | undefined);
|
|
923
|
+
}
|
|
924
|
+
|
|
925
|
+
// @internal
|
|
926
|
+
export interface FlexTreeRequiredField<in out TTypes extends FlexAllowedTypes> extends FlexTreeField {
|
|
927
|
+
// (undocumented)
|
|
928
|
+
readonly boxedContent: FlexTreeTypedNodeUnion<TTypes>;
|
|
929
|
+
// (undocumented)
|
|
930
|
+
get content(): FlexTreeUnboxNodeUnion<TTypes>;
|
|
931
|
+
set content(content: FlexibleNodeContent<TTypes>);
|
|
932
|
+
}
|
|
933
|
+
|
|
934
|
+
// @internal
|
|
935
|
+
export interface FlexTreeSchema<out T extends FlexFieldSchema = FlexFieldSchema> extends SchemaCollection {
|
|
936
|
+
readonly adapters: Adapters;
|
|
937
|
+
readonly policy: FullSchemaPolicy;
|
|
938
|
+
readonly rootFieldSchema: T;
|
|
939
|
+
}
|
|
940
|
+
|
|
941
|
+
// @internal
|
|
942
|
+
export interface FlexTreeSequenceField<in out TTypes extends FlexAllowedTypes> extends FlexTreeField {
|
|
943
|
+
// (undocumented)
|
|
944
|
+
[Symbol.iterator](): IterableIterator<FlexTreeUnboxNodeUnion<TTypes>>;
|
|
945
|
+
at(index: number): FlexTreeUnboxNodeUnion<TTypes> | undefined;
|
|
946
|
+
boxedAt(index: number): FlexTreeTypedNodeUnion<TTypes> | undefined;
|
|
947
|
+
// (undocumented)
|
|
948
|
+
boxedIterator(): IterableIterator<FlexTreeTypedNodeUnion<TTypes>>;
|
|
949
|
+
insertAt(index: number, value: FlexibleNodeSubSequence<TTypes>): void;
|
|
950
|
+
insertAtEnd(value: FlexibleNodeSubSequence<TTypes>): void;
|
|
951
|
+
insertAtStart(value: FlexibleNodeSubSequence<TTypes>): void;
|
|
952
|
+
// (undocumented)
|
|
953
|
+
readonly length: number;
|
|
954
|
+
map<U>(callbackfn: (value: FlexTreeUnboxNodeUnion<TTypes>, index: number) => U): U[];
|
|
955
|
+
mapBoxed<U>(callbackfn: (value: FlexTreeTypedNodeUnion<TTypes>, index: number) => U): U[];
|
|
956
|
+
moveRangeToEnd(sourceStart: number, sourceEnd: number): void;
|
|
957
|
+
moveRangeToEnd(sourceStart: number, sourceEnd: number, source: FlexTreeSequenceField<FlexAllowedTypes>): void;
|
|
958
|
+
moveRangeToIndex(index: number, sourceStart: number, sourceEnd: number): void;
|
|
959
|
+
moveRangeToIndex(index: number, sourceStart: number, sourceEnd: number, source: FlexTreeSequenceField<FlexAllowedTypes>): void;
|
|
960
|
+
moveRangeToStart(sourceStart: number, sourceEnd: number): void;
|
|
961
|
+
moveRangeToStart(sourceStart: number, sourceEnd: number, source: FlexTreeSequenceField<FlexAllowedTypes>): void;
|
|
962
|
+
moveToEnd(sourceIndex: number): void;
|
|
963
|
+
moveToEnd(sourceIndex: number, source: FlexTreeSequenceField<FlexAllowedTypes>): void;
|
|
964
|
+
moveToIndex(index: number, sourceIndex: number): void;
|
|
965
|
+
moveToIndex(index: number, sourceIndex: number, source: FlexTreeSequenceField<FlexAllowedTypes>): void;
|
|
966
|
+
moveToStart(sourceIndex: number): void;
|
|
967
|
+
moveToStart(sourceIndex: number, source: FlexTreeSequenceField<FlexAllowedTypes>): void;
|
|
968
|
+
removeAt(index: number): void;
|
|
969
|
+
removeRange(start?: number, end?: number): void;
|
|
970
|
+
}
|
|
971
|
+
|
|
972
|
+
// @internal
|
|
973
|
+
export type FlexTreeTypedField<TSchema extends FlexFieldSchema> = FlexTreeTypedFieldInner<TSchema["kind"], TSchema["allowedTypes"]>;
|
|
974
|
+
|
|
975
|
+
// @internal
|
|
976
|
+
export type FlexTreeTypedFieldInner<Kind extends FlexFieldKind, Types extends FlexAllowedTypes> = Kind extends typeof FieldKinds.sequence ? FlexTreeSequenceField<Types> : Kind extends typeof FieldKinds.required ? FlexTreeRequiredField<Types> : Kind extends typeof FieldKinds.optional ? FlexTreeOptionalField<Types> : Kind extends typeof FieldKinds.nodeKey ? FlexTreeNodeKeyField : FlexTreeField;
|
|
977
|
+
|
|
978
|
+
// @internal
|
|
979
|
+
export type FlexTreeTypedNode<TSchema extends FlexTreeNodeSchema> = TSchema extends LeafNodeSchema ? FlexTreeLeafNode<TSchema> : TSchema extends FlexMapNodeSchema ? FlexTreeMapNode<TSchema> : TSchema extends FlexFieldNodeSchema ? FlexTreeFieldNode<TSchema> : TSchema extends FlexObjectNodeSchema ? FlexTreeObjectNodeTyped<TSchema> : FlexTreeNode;
|
|
980
|
+
|
|
981
|
+
// @internal
|
|
982
|
+
export type FlexTreeTypedNodeUnion<T extends FlexAllowedTypes> = T extends FlexList<FlexTreeNodeSchema> ? FlexTreeTypedNode<Assume<FlexListToUnion<T>, FlexTreeNodeSchema>> : FlexTreeNode;
|
|
983
|
+
|
|
984
|
+
// @internal
|
|
985
|
+
export type FlexTreeUnboxField<TSchema extends FlexFieldSchema, Emptiness extends "maybeEmpty" | "notEmpty" = "maybeEmpty"> = FlexTreeUnboxFieldInner<TSchema["kind"], TSchema["allowedTypes"], Emptiness>;
|
|
986
|
+
|
|
987
|
+
// @internal
|
|
988
|
+
export type FlexTreeUnboxFieldInner<Kind extends FlexFieldKind, TTypes extends FlexAllowedTypes, Emptiness extends "maybeEmpty" | "notEmpty"> = Kind extends typeof FieldKinds.sequence ? FlexTreeSequenceField<TTypes> : Kind extends typeof FieldKinds.required ? FlexTreeUnboxNodeUnion<TTypes> : Kind extends typeof FieldKinds.optional ? FlexTreeUnboxNodeUnion<TTypes> | (Emptiness extends "notEmpty" ? never : undefined) : Kind extends typeof FieldKinds.nodeKey ? FlexTreeNodeKeyField : unknown;
|
|
989
|
+
|
|
990
|
+
// @internal
|
|
991
|
+
export type FlexTreeUnboxNode<TSchema extends FlexTreeNodeSchema> = TSchema extends LeafNodeSchema ? TreeValue<TSchema["info"]> : TSchema extends FlexMapNodeSchema ? FlexTreeMapNode<TSchema> : TSchema extends FlexFieldNodeSchema ? FlexTreeFieldNode<TSchema> : TSchema extends FlexObjectNodeSchema ? FlexTreeObjectNodeTyped<TSchema> : FlexTreeUnknownUnboxed;
|
|
992
|
+
|
|
993
|
+
// @internal
|
|
994
|
+
export type FlexTreeUnboxNodeUnion<TTypes extends FlexAllowedTypes> = TTypes extends readonly [
|
|
995
|
+
LazyItem<infer InnerType>
|
|
996
|
+
] ? InnerType extends FlexTreeNodeSchema ? FlexTreeUnboxNode<InnerType> : InnerType extends Any ? FlexTreeNode : unknown : boolean extends IsArrayOfOne<TTypes> ? FlexTreeUnknownUnboxed : FlexTreeTypedNodeUnion<TTypes>;
|
|
997
|
+
|
|
998
|
+
// @internal
|
|
999
|
+
export type FlexTreeUnknownUnboxed = TreeValue | FlexTreeNode;
|
|
1000
|
+
|
|
1001
|
+
// @internal
|
|
1002
|
+
export interface FlexTreeView<in out TRoot extends FlexFieldSchema> extends IDisposable {
|
|
1003
|
+
readonly checkout: ITreeCheckout;
|
|
1004
|
+
readonly context: FlexTreeContext;
|
|
1005
|
+
readonly flexTree: FlexTreeTypedField<TRoot>;
|
|
1006
|
+
fork(): ITreeViewFork<TRoot>;
|
|
1007
|
+
}
|
|
1008
|
+
|
|
1009
|
+
// @internal (undocumented)
|
|
1010
|
+
export interface Forbidden extends FlexFieldKind<typeof forbiddenFieldKindIdentifier, Multiplicity.Forbidden> {
|
|
1011
|
+
}
|
|
1012
|
+
|
|
1013
|
+
// @internal
|
|
1014
|
+
export const forbiddenFieldKindIdentifier = "Forbidden";
|
|
1015
|
+
|
|
1016
|
+
// @internal
|
|
1017
|
+
export interface ForestEvents {
|
|
1018
|
+
afterChange(): void;
|
|
1019
|
+
afterRootFieldCreated(key: FieldKey): void;
|
|
1020
|
+
beforeChange(): void;
|
|
1021
|
+
}
|
|
1022
|
+
|
|
1023
|
+
// @internal
|
|
1024
|
+
export type ForestLocation = ITreeSubscriptionCursor | Anchor;
|
|
1025
|
+
|
|
1026
|
+
// @internal
|
|
1027
|
+
export enum ForestType {
|
|
1028
|
+
Optimized = 1,
|
|
1029
|
+
Reference = 0
|
|
1030
|
+
}
|
|
1031
|
+
|
|
1032
|
+
// @internal
|
|
1033
|
+
export interface FullSchemaPolicy extends SchemaPolicy {
|
|
1034
|
+
readonly fieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind>;
|
|
1035
|
+
}
|
|
1036
|
+
|
|
1037
|
+
// @internal
|
|
1038
|
+
export interface GenericFieldsNode<TChild> {
|
|
1039
|
+
// (undocumented)
|
|
1040
|
+
fields?: FieldMapObject<TChild>;
|
|
1041
|
+
}
|
|
1042
|
+
|
|
1043
|
+
// @internal
|
|
1044
|
+
export interface GenericTreeNode<TChild> extends GenericFieldsNode<TChild>, NodeData {
|
|
1045
|
+
}
|
|
1046
|
+
|
|
1047
|
+
// @internal (undocumented)
|
|
1048
|
+
export interface HasListeners<E extends Events<E>> {
|
|
1049
|
+
hasListeners(eventName?: keyof Events<E>): boolean;
|
|
1050
|
+
}
|
|
1051
|
+
|
|
1052
|
+
// @internal
|
|
1053
|
+
export interface ICodecOptions {
|
|
1054
|
+
readonly jsonValidator: JsonValidator;
|
|
1055
|
+
}
|
|
1056
|
+
|
|
215
1057
|
// @public
|
|
216
1058
|
export interface IConnection {
|
|
217
1059
|
readonly id: string;
|
|
@@ -221,6 +1063,30 @@ export interface IConnection {
|
|
|
221
1063
|
// @public
|
|
222
1064
|
export type ICriticalContainerError = IErrorBase;
|
|
223
1065
|
|
|
1066
|
+
// @internal
|
|
1067
|
+
export interface IdAllocator<TId = number> {
|
|
1068
|
+
allocate: (count?: number) => TId;
|
|
1069
|
+
// (undocumented)
|
|
1070
|
+
getMaxId: () => TId;
|
|
1071
|
+
}
|
|
1072
|
+
|
|
1073
|
+
// @internal
|
|
1074
|
+
export interface IDefaultEditBuilder {
|
|
1075
|
+
// (undocumented)
|
|
1076
|
+
addNodeExistsConstraint(path: UpPath): void;
|
|
1077
|
+
move(sourceField: FieldUpPath, sourceIndex: number, count: number, destinationField: FieldUpPath, destinationIndex: number): void;
|
|
1078
|
+
// (undocumented)
|
|
1079
|
+
optionalField(field: FieldUpPath): OptionalFieldEditBuilder;
|
|
1080
|
+
// (undocumented)
|
|
1081
|
+
sequenceField(field: FieldUpPath): SequenceFieldEditBuilder;
|
|
1082
|
+
// (undocumented)
|
|
1083
|
+
valueField(field: FieldUpPath): ValueFieldEditBuilder;
|
|
1084
|
+
}
|
|
1085
|
+
|
|
1086
|
+
// @internal (undocumented)
|
|
1087
|
+
export interface Identifier extends FlexFieldKind<"Identifier", Multiplicity.Single> {
|
|
1088
|
+
}
|
|
1089
|
+
|
|
224
1090
|
// @alpha
|
|
225
1091
|
export interface IDirectory extends Map<string, any>, IEventProvider<IDirectoryEvents>, Partial<IDisposable_2> {
|
|
226
1092
|
readonly absolutePath: string;
|
|
@@ -254,6 +1120,17 @@ export interface IDisposable {
|
|
|
254
1120
|
[disposeSymbol](): void;
|
|
255
1121
|
}
|
|
256
1122
|
|
|
1123
|
+
// @internal
|
|
1124
|
+
export interface IEditableForest extends IForestSubscription {
|
|
1125
|
+
acquireVisitor(): DeltaVisitor;
|
|
1126
|
+
}
|
|
1127
|
+
|
|
1128
|
+
// @internal
|
|
1129
|
+
export interface IEmitter<E extends Events<E>> {
|
|
1130
|
+
emit<K extends keyof Events<E>>(eventName: K, ...args: Parameters<E[K]>): void;
|
|
1131
|
+
emitAndCollect<K extends keyof Events<E>>(eventName: K, ...args: Parameters<E[K]>): ReturnType<E[K]>[];
|
|
1132
|
+
}
|
|
1133
|
+
|
|
257
1134
|
// @public @sealed
|
|
258
1135
|
export interface IFluidContainer<TContainerSchema extends ContainerSchema = ContainerSchema> extends IEventProvider<IFluidContainerEvents> {
|
|
259
1136
|
attach(props?: ContainerAttachProps): Promise<string>;
|
|
@@ -277,6 +1154,19 @@ export interface IFluidContainerEvents extends IEvent {
|
|
|
277
1154
|
(event: "disposed", listener: (error?: ICriticalContainerError) => void): any;
|
|
278
1155
|
}
|
|
279
1156
|
|
|
1157
|
+
// @internal
|
|
1158
|
+
export interface IForestSubscription extends ISubscribable<ForestEvents> {
|
|
1159
|
+
allocateCursor(): ITreeSubscriptionCursor;
|
|
1160
|
+
readonly anchors: AnchorSet;
|
|
1161
|
+
clone(schema: TreeStoredSchemaSubscription, anchors: AnchorSet): IEditableForest;
|
|
1162
|
+
forgetAnchor(anchor: Anchor): void;
|
|
1163
|
+
getCursorAboveDetachedFields(): ITreeCursorSynchronous;
|
|
1164
|
+
readonly isEmpty: boolean;
|
|
1165
|
+
moveCursorToPath(destination: UpPath, cursorToMove: ITreeSubscriptionCursor): void;
|
|
1166
|
+
tryMoveCursorToField(destination: FieldAnchor, cursorToMove: ITreeSubscriptionCursor): TreeNavigationResult;
|
|
1167
|
+
tryMoveCursorToNode(destination: Anchor, cursorToMove: ITreeSubscriptionCursor): TreeNavigationResult;
|
|
1168
|
+
}
|
|
1169
|
+
|
|
280
1170
|
// @alpha
|
|
281
1171
|
export interface IInterval {
|
|
282
1172
|
// (undocumented)
|
|
@@ -351,11 +1241,28 @@ export type ImplicitAllowedTypes = AllowedTypes | TreeNodeSchema;
|
|
|
351
1241
|
// @public
|
|
352
1242
|
export type ImplicitFieldSchema = FieldSchema | ImplicitAllowedTypes;
|
|
353
1243
|
|
|
1244
|
+
// @internal
|
|
1245
|
+
export interface InitializeAndSchematizeConfiguration<TRoot extends FlexFieldSchema = FlexFieldSchema> extends TreeContent<TRoot>, SchematizeConfiguration<TRoot> {
|
|
1246
|
+
}
|
|
1247
|
+
|
|
354
1248
|
// @public
|
|
355
1249
|
export type InitialObjects<T extends ContainerSchema> = {
|
|
356
1250
|
[K in keyof T["initialObjects"]]: T["initialObjects"][K] extends LoadableObjectClass<infer TChannel> ? TChannel : never;
|
|
357
1251
|
};
|
|
358
1252
|
|
|
1253
|
+
// @internal
|
|
1254
|
+
export type _InlineTrick = 0;
|
|
1255
|
+
|
|
1256
|
+
// @internal
|
|
1257
|
+
export type InsertableFlexField<TField extends FlexFieldSchema> = [
|
|
1258
|
+
ApplyMultiplicity<TField["kind"]["multiplicity"], AllowedTypesToFlexInsertableTree<TField["allowedTypes"]>>
|
|
1259
|
+
][_InlineTrick];
|
|
1260
|
+
|
|
1261
|
+
// @internal
|
|
1262
|
+
export type InsertableFlexNode<TSchema extends FlexTreeNodeSchema> = FlattenKeys<CollectOptions<TSchema extends FlexObjectNodeSchema<string, infer TFields extends FlexObjectNodeFields> ? TypedFields<TFields> : TSchema extends FlexFieldNodeSchema<string, infer TField extends FlexFieldSchema> ? InsertableFlexField<TField> : TSchema extends FlexMapNodeSchema<string, infer TField extends FlexFieldSchema> ? {
|
|
1263
|
+
readonly [P in string]: InsertableFlexField<TField>;
|
|
1264
|
+
} : EmptyObject, TSchema extends LeafNodeSchema<string, infer TValueSchema> ? TValueSchema : undefined, TSchema["name"]>>;
|
|
1265
|
+
|
|
359
1266
|
// @public
|
|
360
1267
|
export type InsertableObjectFromSchemaRecord<T extends RestrictiveReadonlyRecord<string, ImplicitFieldSchema>> = {
|
|
361
1268
|
readonly [Property in keyof T]: InsertableTreeFieldFromImplicitField<T[Property]>;
|
|
@@ -422,6 +1329,24 @@ export enum IntervalType {
|
|
|
422
1329
|
Transient = 4
|
|
423
1330
|
}
|
|
424
1331
|
|
|
1332
|
+
// @internal
|
|
1333
|
+
export interface Invariant<in out T> extends Contravariant<T>, Covariant<T> {
|
|
1334
|
+
}
|
|
1335
|
+
|
|
1336
|
+
// @internal
|
|
1337
|
+
export type isAny<T> = boolean extends (T extends never ? true : false) ? true : false;
|
|
1338
|
+
|
|
1339
|
+
// @internal
|
|
1340
|
+
export type IsArrayOfOne<T extends readonly unknown[]> = T["length"] extends 1 ? true : 1 extends T["length"] ? boolean : false;
|
|
1341
|
+
|
|
1342
|
+
// @internal
|
|
1343
|
+
export interface ISchemaEditor {
|
|
1344
|
+
setStoredSchema(oldSchema: TreeStoredSchema, newSchema: TreeStoredSchema): void;
|
|
1345
|
+
}
|
|
1346
|
+
|
|
1347
|
+
// @internal
|
|
1348
|
+
export function isContextuallyTypedNodeDataObject(data: ContextuallyTypedNodeData | undefined): data is ContextuallyTypedNodeDataObject;
|
|
1349
|
+
|
|
425
1350
|
// @alpha
|
|
426
1351
|
export interface ISequenceDeltaRange<TOperation extends MergeTreeDeltaOperationTypes = MergeTreeDeltaOperationTypes> {
|
|
427
1352
|
operation: TOperation;
|
|
@@ -526,6 +1451,20 @@ export interface ISharedString extends SharedSegmentSequence<SharedStringSegment
|
|
|
526
1451
|
posFromRelativePos(relativePos: IRelativePosition): number;
|
|
527
1452
|
}
|
|
528
1453
|
|
|
1454
|
+
// @internal
|
|
1455
|
+
export interface ISharedTree extends ISharedObject, ITree {
|
|
1456
|
+
contentSnapshot(): SharedTreeContentSnapshot;
|
|
1457
|
+
schematizeFlexTree<TRoot extends FlexFieldSchema>(config: InitializeAndSchematizeConfiguration<TRoot>, onDispose: () => void): FlexTreeView<TRoot> | undefined;
|
|
1458
|
+
}
|
|
1459
|
+
|
|
1460
|
+
// @internal
|
|
1461
|
+
export interface ISharedTreeEditor extends IDefaultEditBuilder {
|
|
1462
|
+
schema: ISchemaEditor;
|
|
1463
|
+
}
|
|
1464
|
+
|
|
1465
|
+
// @internal (undocumented)
|
|
1466
|
+
export function isNeverField(policy: FullSchemaPolicy, originalData: TreeStoredSchema, field: TreeFieldStoredSchema): boolean;
|
|
1467
|
+
|
|
529
1468
|
// @public
|
|
530
1469
|
export interface ISubscribable<E extends Events<E>> {
|
|
531
1470
|
on<K extends keyof Events<E>>(eventName: K, listener: E[K]): () => void;
|
|
@@ -536,26 +1475,178 @@ export class IterableTreeArrayContent<T> implements Iterable<T> {
|
|
|
536
1475
|
[Symbol.iterator](): Iterator<T>;
|
|
537
1476
|
}
|
|
538
1477
|
|
|
1478
|
+
// @internal
|
|
1479
|
+
export interface ITransaction {
|
|
1480
|
+
abort(): TransactionResult.Abort;
|
|
1481
|
+
commit(): TransactionResult.Commit;
|
|
1482
|
+
inProgress(): boolean;
|
|
1483
|
+
start(): void;
|
|
1484
|
+
}
|
|
1485
|
+
|
|
539
1486
|
// @public
|
|
540
1487
|
export interface ITree extends IChannel {
|
|
541
1488
|
schematize<TRoot extends ImplicitFieldSchema>(config: TreeConfiguration<TRoot>): TreeView<TRoot>;
|
|
542
1489
|
}
|
|
543
1490
|
|
|
1491
|
+
// @internal
|
|
1492
|
+
export interface ITreeCheckout extends AnchorLocator {
|
|
1493
|
+
readonly editor: ISharedTreeEditor;
|
|
1494
|
+
readonly events: ISubscribable<CheckoutEvents>;
|
|
1495
|
+
readonly forest: IForestSubscription;
|
|
1496
|
+
fork(): ITreeCheckoutFork;
|
|
1497
|
+
getRemovedRoots(): [string | number | undefined, number, JsonableTree][];
|
|
1498
|
+
merge(view: ITreeCheckoutFork): void;
|
|
1499
|
+
merge(view: ITreeCheckoutFork, disposeView: boolean): void;
|
|
1500
|
+
rebase(view: ITreeCheckoutFork): void;
|
|
1501
|
+
readonly rootEvents: ISubscribable<AnchorSetRootEvents>;
|
|
1502
|
+
readonly storedSchema: TreeStoredSchemaSubscription;
|
|
1503
|
+
readonly transaction: ITransaction;
|
|
1504
|
+
updateSchema(newSchema: TreeStoredSchema): void;
|
|
1505
|
+
}
|
|
1506
|
+
|
|
1507
|
+
// @internal
|
|
1508
|
+
export interface ITreeCheckoutFork extends ITreeCheckout, IDisposable {
|
|
1509
|
+
rebaseOnto(view: ITreeCheckout): void;
|
|
1510
|
+
}
|
|
1511
|
+
|
|
1512
|
+
// @internal
|
|
1513
|
+
export interface ITreeCursor {
|
|
1514
|
+
readonly [CursorMarker]: true;
|
|
1515
|
+
readonly chunkLength: number;
|
|
1516
|
+
readonly chunkStart: number;
|
|
1517
|
+
enterField(key: FieldKey): void;
|
|
1518
|
+
enterNode(childIndex: number): void;
|
|
1519
|
+
exitField(): void;
|
|
1520
|
+
exitNode(): void;
|
|
1521
|
+
readonly fieldIndex: number;
|
|
1522
|
+
firstField(): boolean;
|
|
1523
|
+
firstNode(): boolean;
|
|
1524
|
+
getFieldKey(): FieldKey;
|
|
1525
|
+
// (undocumented)
|
|
1526
|
+
getFieldLength(): number;
|
|
1527
|
+
getFieldPath(prefix?: PathRootPrefix): FieldUpPath;
|
|
1528
|
+
getPath(prefix?: PathRootPrefix): UpPath | undefined;
|
|
1529
|
+
readonly mode: CursorLocationType;
|
|
1530
|
+
nextField(): boolean;
|
|
1531
|
+
nextNode(): boolean;
|
|
1532
|
+
// (undocumented)
|
|
1533
|
+
readonly pending: boolean;
|
|
1534
|
+
seekNodes(offset: number): boolean;
|
|
1535
|
+
skipPendingFields(): boolean;
|
|
1536
|
+
readonly type: TreeType;
|
|
1537
|
+
readonly value: Value;
|
|
1538
|
+
}
|
|
1539
|
+
|
|
1540
|
+
// @internal
|
|
1541
|
+
export interface ITreeCursorSynchronous extends ITreeCursor {
|
|
1542
|
+
// (undocumented)
|
|
1543
|
+
readonly pending: false;
|
|
1544
|
+
}
|
|
1545
|
+
|
|
1546
|
+
// @internal
|
|
1547
|
+
export interface ITreeSubscriptionCursor extends ITreeCursor {
|
|
1548
|
+
buildAnchor(): Anchor;
|
|
1549
|
+
buildFieldAnchor(): FieldAnchor;
|
|
1550
|
+
clear(): void;
|
|
1551
|
+
// (undocumented)
|
|
1552
|
+
fork(): ITreeSubscriptionCursor;
|
|
1553
|
+
free(): void;
|
|
1554
|
+
readonly state: ITreeSubscriptionCursorState;
|
|
1555
|
+
}
|
|
1556
|
+
|
|
1557
|
+
// @internal (undocumented)
|
|
1558
|
+
export enum ITreeSubscriptionCursorState {
|
|
1559
|
+
Cleared = 1,
|
|
1560
|
+
Current = 0,
|
|
1561
|
+
Freed = 2
|
|
1562
|
+
}
|
|
1563
|
+
|
|
1564
|
+
// @internal
|
|
1565
|
+
export interface ITreeViewFork<in out TRoot extends FlexFieldSchema> extends FlexTreeView<TRoot> {
|
|
1566
|
+
// (undocumented)
|
|
1567
|
+
readonly checkout: ITreeCheckoutFork;
|
|
1568
|
+
}
|
|
1569
|
+
|
|
544
1570
|
// @alpha @sealed
|
|
545
1571
|
export interface IValueChanged {
|
|
546
1572
|
readonly key: string;
|
|
547
1573
|
readonly previousValue: any;
|
|
548
1574
|
}
|
|
549
1575
|
|
|
1576
|
+
// @internal
|
|
1577
|
+
export interface JsonableTree extends GenericTreeNode<JsonableTree> {
|
|
1578
|
+
}
|
|
1579
|
+
|
|
1580
|
+
// @internal
|
|
1581
|
+
export function jsonableTreeFromCursor(cursor: ITreeCursor): JsonableTree;
|
|
1582
|
+
|
|
1583
|
+
// @internal
|
|
1584
|
+
export type JsonCompatible = string | number | boolean | null | JsonCompatible[] | JsonCompatibleObject;
|
|
1585
|
+
|
|
1586
|
+
// @internal
|
|
1587
|
+
export type JsonCompatibleObject = {
|
|
1588
|
+
[P in string]?: JsonCompatible;
|
|
1589
|
+
};
|
|
1590
|
+
|
|
1591
|
+
// @internal
|
|
1592
|
+
export type JsonCompatibleReadOnly = string | number | boolean | null | readonly JsonCompatibleReadOnly[] | {
|
|
1593
|
+
readonly [P in string]?: JsonCompatibleReadOnly;
|
|
1594
|
+
};
|
|
1595
|
+
|
|
1596
|
+
// @internal
|
|
1597
|
+
export interface JsonValidator {
|
|
1598
|
+
compile<Schema extends TSchema>(schema: Schema): SchemaValidationFunction<Schema>;
|
|
1599
|
+
}
|
|
1600
|
+
|
|
550
1601
|
// @public
|
|
551
1602
|
export type LazyItem<Item = unknown> = Item | (() => Item);
|
|
552
1603
|
|
|
1604
|
+
// @internal
|
|
1605
|
+
export type LazyTreeNodeSchema = FlexTreeNodeSchema | (() => FlexTreeNodeSchema);
|
|
1606
|
+
|
|
1607
|
+
// @internal
|
|
1608
|
+
export const leaf: {
|
|
1609
|
+
number: LeafNodeSchema_2<"com.fluidframework.leaf.number", ValueSchema.Number>;
|
|
1610
|
+
boolean: LeafNodeSchema_2<"com.fluidframework.leaf.boolean", ValueSchema.Boolean>;
|
|
1611
|
+
string: LeafNodeSchema_2<"com.fluidframework.leaf.string", ValueSchema.String>;
|
|
1612
|
+
handle: LeafNodeSchema_2<"com.fluidframework.leaf.handle", ValueSchema.FluidHandle>;
|
|
1613
|
+
null: LeafNodeSchema_2<"com.fluidframework.leaf.null", ValueSchema.Null>;
|
|
1614
|
+
primitives: readonly [LeafNodeSchema_2<"com.fluidframework.leaf.number", ValueSchema.Number>, LeafNodeSchema_2<"com.fluidframework.leaf.boolean", ValueSchema.Boolean>, LeafNodeSchema_2<"com.fluidframework.leaf.string", ValueSchema.String>];
|
|
1615
|
+
all: readonly [LeafNodeSchema_2<"com.fluidframework.leaf.handle", ValueSchema.FluidHandle>, LeafNodeSchema_2<"com.fluidframework.leaf.null", ValueSchema.Null>, LeafNodeSchema_2<"com.fluidframework.leaf.number", ValueSchema.Number>, LeafNodeSchema_2<"com.fluidframework.leaf.boolean", ValueSchema.Boolean>, LeafNodeSchema_2<"com.fluidframework.leaf.string", ValueSchema.String>];
|
|
1616
|
+
library: SchemaLibrary_2;
|
|
1617
|
+
};
|
|
1618
|
+
|
|
1619
|
+
// @internal (undocumented)
|
|
1620
|
+
export class LeafNodeSchema<const out Name extends string = string, const out Specification extends Unenforced<ValueSchema> = ValueSchema> extends TreeNodeSchemaBase<Name, Specification> {
|
|
1621
|
+
// (undocumented)
|
|
1622
|
+
static create<const Name extends string, const Specification extends ValueSchema>(builder: Named<string>, name: TreeNodeSchemaIdentifier<Name>, specification: Specification): LeafNodeSchema<Name, Specification>;
|
|
1623
|
+
// (undocumented)
|
|
1624
|
+
getFieldSchema(field: FieldKey): FlexFieldSchema;
|
|
1625
|
+
// (undocumented)
|
|
1626
|
+
get leafValue(): ValueSchema;
|
|
1627
|
+
// (undocumented)
|
|
1628
|
+
protected _typeCheck2?: MakeNominal;
|
|
1629
|
+
}
|
|
1630
|
+
|
|
1631
|
+
// @internal (undocumented)
|
|
1632
|
+
export class LeafNodeStoredSchema extends TreeNodeStoredSchema {
|
|
1633
|
+
constructor(leafValue: ValueSchema);
|
|
1634
|
+
// (undocumented)
|
|
1635
|
+
encode(): ErasedTreeNodeSchemaDataFormat;
|
|
1636
|
+
// (undocumented)
|
|
1637
|
+
readonly leafValue: ValueSchema;
|
|
1638
|
+
}
|
|
1639
|
+
|
|
553
1640
|
// @public
|
|
554
1641
|
export type LoadableObjectClass<T extends IFluidLoadable = IFluidLoadable> = ISharedObjectKind<T> | DataObjectClass<T>;
|
|
555
1642
|
|
|
556
1643
|
// @public
|
|
557
1644
|
export type LoadableObjectClassRecord = Record<string, LoadableObjectClass>;
|
|
558
1645
|
|
|
1646
|
+
// @internal
|
|
1647
|
+
export interface LocalNodeKey extends Opaque<Brand<SessionSpaceCompressedId, "Local Node Key">> {
|
|
1648
|
+
}
|
|
1649
|
+
|
|
559
1650
|
// @public
|
|
560
1651
|
export interface MakeNominal {
|
|
561
1652
|
}
|
|
@@ -570,26 +1661,87 @@ export class MapFactory implements IChannelFactory<ISharedMap> {
|
|
|
570
1661
|
get type(): string;
|
|
571
1662
|
}
|
|
572
1663
|
|
|
1664
|
+
// @internal (undocumented)
|
|
1665
|
+
export class MapNodeStoredSchema extends TreeNodeStoredSchema {
|
|
1666
|
+
constructor(mapFields: TreeFieldStoredSchema);
|
|
1667
|
+
// (undocumented)
|
|
1668
|
+
encode(): ErasedTreeNodeSchemaDataFormat;
|
|
1669
|
+
// (undocumented)
|
|
1670
|
+
readonly mapFields: TreeFieldStoredSchema;
|
|
1671
|
+
}
|
|
1672
|
+
|
|
1673
|
+
// @internal
|
|
1674
|
+
export interface MapTree extends NodeData {
|
|
1675
|
+
// (undocumented)
|
|
1676
|
+
fields: Map<FieldKey, MapTree[]>;
|
|
1677
|
+
}
|
|
1678
|
+
|
|
1679
|
+
// @internal
|
|
1680
|
+
export interface MarkedArrayLike<TGet, TSet extends TGet = TGet> extends ArrayLikeMut<TGet, TSet> {
|
|
1681
|
+
// (undocumented)
|
|
1682
|
+
readonly [arrayLikeMarkerSymbol]: true;
|
|
1683
|
+
// (undocumented)
|
|
1684
|
+
[Symbol.iterator](): IterableIterator<TGet>;
|
|
1685
|
+
}
|
|
1686
|
+
|
|
573
1687
|
// @public
|
|
574
1688
|
export type MemberChangedListener<M extends IMember> = (clientId: string, member: M) => void;
|
|
575
1689
|
|
|
1690
|
+
// @internal
|
|
1691
|
+
export enum Multiplicity {
|
|
1692
|
+
Forbidden = 3,
|
|
1693
|
+
Optional = 1,
|
|
1694
|
+
Sequence = 2,
|
|
1695
|
+
Single = 0
|
|
1696
|
+
}
|
|
1697
|
+
|
|
576
1698
|
// @public
|
|
577
1699
|
export type Myself<M extends IMember = IMember> = M & {
|
|
578
1700
|
readonly currentConnection: string;
|
|
579
1701
|
};
|
|
580
1702
|
|
|
1703
|
+
// @internal
|
|
1704
|
+
export interface Named<TName> {
|
|
1705
|
+
// (undocumented)
|
|
1706
|
+
readonly name: TName;
|
|
1707
|
+
}
|
|
1708
|
+
|
|
1709
|
+
// @internal
|
|
1710
|
+
export type NameFromBranded<T extends BrandedType<unknown, unknown>> = T extends BrandedType<unknown, infer Name> ? Name : never;
|
|
1711
|
+
|
|
1712
|
+
// @internal
|
|
1713
|
+
export type NestedMap<Key1, Key2, Value> = Map<Key1, Map<Key2, Value>>;
|
|
1714
|
+
|
|
1715
|
+
// @internal
|
|
1716
|
+
export type NewFieldContent = ITreeCursorSynchronous | readonly ITreeCursorSynchronous[] | ContextuallyTypedFieldData;
|
|
1717
|
+
|
|
581
1718
|
// @public
|
|
582
1719
|
export type NodeBuilderData<T extends TreeNodeSchema> = T extends TreeNodeSchema<string, NodeKind, unknown, infer TBuild> ? TBuild : never;
|
|
583
1720
|
|
|
584
1721
|
// @public
|
|
585
1722
|
export type NodeBuilderDataUnsafe<T extends Unenforced<TreeNodeSchema>> = T extends TreeNodeSchema<string, NodeKind, unknown, infer TBuild> ? TBuild : never;
|
|
586
1723
|
|
|
1724
|
+
// @internal
|
|
1725
|
+
export interface NodeData {
|
|
1726
|
+
readonly type: TreeNodeSchemaIdentifier;
|
|
1727
|
+
value?: TreeValue;
|
|
1728
|
+
}
|
|
1729
|
+
|
|
1730
|
+
// @internal (undocumented)
|
|
1731
|
+
export interface NodeExistsConstraint {
|
|
1732
|
+
// (undocumented)
|
|
1733
|
+
violated: boolean;
|
|
1734
|
+
}
|
|
1735
|
+
|
|
587
1736
|
// @public
|
|
588
1737
|
export type NodeFromSchema<T extends TreeNodeSchema> = T extends TreeNodeSchema<string, NodeKind, infer TNode> ? TNode : never;
|
|
589
1738
|
|
|
590
1739
|
// @public
|
|
591
1740
|
export type NodeFromSchemaUnsafe<T extends Unenforced<TreeNodeSchema>> = T extends TreeNodeSchema<string, NodeKind, infer TNode> ? TNode : never;
|
|
592
1741
|
|
|
1742
|
+
// @internal
|
|
1743
|
+
export type NodeIndex = number;
|
|
1744
|
+
|
|
593
1745
|
// @public
|
|
594
1746
|
export interface NodeInDocumentConstraint {
|
|
595
1747
|
// (undocumented)
|
|
@@ -598,6 +1750,21 @@ export interface NodeInDocumentConstraint {
|
|
|
598
1750
|
type: "nodeInDocument";
|
|
599
1751
|
}
|
|
600
1752
|
|
|
1753
|
+
// @internal
|
|
1754
|
+
export const nodeKeyFieldKey = "__n_id__";
|
|
1755
|
+
|
|
1756
|
+
// @internal (undocumented)
|
|
1757
|
+
export interface NodeKeyFieldKind extends FlexFieldKind<"NodeKey", Multiplicity.Single> {
|
|
1758
|
+
}
|
|
1759
|
+
|
|
1760
|
+
// @internal
|
|
1761
|
+
export interface NodeKeys {
|
|
1762
|
+
generate(): LocalNodeKey;
|
|
1763
|
+
localize(key: StableNodeKey): LocalNodeKey;
|
|
1764
|
+
readonly map: ReadonlyMap<LocalNodeKey, FlexTreeObjectNode>;
|
|
1765
|
+
stabilize(key: LocalNodeKey): StableNodeKey;
|
|
1766
|
+
}
|
|
1767
|
+
|
|
601
1768
|
// @public
|
|
602
1769
|
export enum NodeKind {
|
|
603
1770
|
Array = 1,
|
|
@@ -606,6 +1773,26 @@ export enum NodeKind {
|
|
|
606
1773
|
Object = 2
|
|
607
1774
|
}
|
|
608
1775
|
|
|
1776
|
+
// @internal
|
|
1777
|
+
export type NoListenersCallback<E extends Events<E>> = (eventName: keyof Events<E>) => void;
|
|
1778
|
+
|
|
1779
|
+
// @internal
|
|
1780
|
+
export const noopValidator: JsonValidator;
|
|
1781
|
+
|
|
1782
|
+
// @internal
|
|
1783
|
+
export type NormalizeAllowedTypes<TSchema extends FlexImplicitAllowedTypes> = TSchema extends FlexTreeNodeSchema ? readonly [TSchema] : TSchema extends Any ? readonly [Any] : TSchema;
|
|
1784
|
+
|
|
1785
|
+
// @internal
|
|
1786
|
+
export type NormalizeField<TSchema extends FlexImplicitFieldSchema, TDefault extends FlexFieldKind> = TSchema extends FlexFieldSchema ? TSchema : FlexFieldSchema<TDefault, NormalizeAllowedTypes<Assume<TSchema, FlexImplicitAllowedTypes>>>;
|
|
1787
|
+
|
|
1788
|
+
// @internal
|
|
1789
|
+
export type NormalizeFieldSchema<T extends FlexFieldSchema | undefined> = T extends FlexFieldSchema ? T : FlexFieldSchema<typeof FieldKinds.forbidden, []>;
|
|
1790
|
+
|
|
1791
|
+
// @internal (undocumented)
|
|
1792
|
+
export type NormalizeObjectNodeFields<T extends FlexObjectNodeFields> = {
|
|
1793
|
+
readonly [Property in keyof T]: NormalizeFieldSchema<T[Property]>;
|
|
1794
|
+
};
|
|
1795
|
+
|
|
609
1796
|
// @public
|
|
610
1797
|
export type ObjectFromSchemaRecord<T extends RestrictiveReadonlyRecord<string, ImplicitFieldSchema>> = {
|
|
611
1798
|
-readonly [Property in keyof T]: TreeFieldFromImplicitField<T[Property]>;
|
|
@@ -616,6 +1803,124 @@ export type ObjectFromSchemaRecordUnsafe<T extends Unenforced<RestrictiveReadonl
|
|
|
616
1803
|
-readonly [Property in keyof T]: TreeFieldFromImplicitFieldUnsafe<T[Property]>;
|
|
617
1804
|
};
|
|
618
1805
|
|
|
1806
|
+
// @internal (undocumented)
|
|
1807
|
+
export class ObjectNodeStoredSchema extends TreeNodeStoredSchema {
|
|
1808
|
+
constructor(objectNodeFields: ReadonlyMap<FieldKey, TreeFieldStoredSchema>);
|
|
1809
|
+
// (undocumented)
|
|
1810
|
+
encode(): ErasedTreeNodeSchemaDataFormat;
|
|
1811
|
+
// (undocumented)
|
|
1812
|
+
readonly objectNodeFields: ReadonlyMap<FieldKey, TreeFieldStoredSchema>;
|
|
1813
|
+
}
|
|
1814
|
+
|
|
1815
|
+
// @internal
|
|
1816
|
+
export function oneFromSet<T>(set: ReadonlySet<T> | undefined): T | undefined;
|
|
1817
|
+
|
|
1818
|
+
// @internal
|
|
1819
|
+
export type Opaque<T extends Brand<any, unknown>> = T extends BrandedType<infer ValueType, infer Name> ? BrandedType<ValueType, Name> : never;
|
|
1820
|
+
|
|
1821
|
+
// @internal (undocumented)
|
|
1822
|
+
export interface Optional extends FlexFieldKind<"Optional", Multiplicity.Optional> {
|
|
1823
|
+
}
|
|
1824
|
+
|
|
1825
|
+
// @internal (undocumented)
|
|
1826
|
+
export interface OptionalFieldEditBuilder {
|
|
1827
|
+
set(newContent: ITreeCursorSynchronous | undefined, wasEmpty: boolean): void;
|
|
1828
|
+
}
|
|
1829
|
+
|
|
1830
|
+
// @internal
|
|
1831
|
+
export type OptionalFields<T> = [
|
|
1832
|
+
{
|
|
1833
|
+
[P in keyof T as undefined extends T[P] ? T[P] extends undefined ? never : P : never]?: T[P];
|
|
1834
|
+
}
|
|
1835
|
+
][_InlineTrick];
|
|
1836
|
+
|
|
1837
|
+
// @internal
|
|
1838
|
+
export interface PathRootPrefix {
|
|
1839
|
+
indexOffset?: number;
|
|
1840
|
+
parent?: UpPath | undefined;
|
|
1841
|
+
rootFieldOverride?: FieldKey;
|
|
1842
|
+
}
|
|
1843
|
+
|
|
1844
|
+
// @internal
|
|
1845
|
+
export interface PathVisitor {
|
|
1846
|
+
afterAttach(source: DetachedPlaceUpPath, destination: RangeUpPath): void;
|
|
1847
|
+
afterCreate(content: DetachedRangeUpPath): void;
|
|
1848
|
+
afterDetach(source: PlaceUpPath, destination: DetachedRangeUpPath): void;
|
|
1849
|
+
afterReplace(newContentSource: DetachedPlaceUpPath, newContent: RangeUpPath, oldContent: DetachedRangeUpPath): void;
|
|
1850
|
+
beforeAttach(source: DetachedRangeUpPath, destination: PlaceUpPath): void;
|
|
1851
|
+
beforeDestroy(content: DetachedRangeUpPath): void;
|
|
1852
|
+
beforeDetach(source: RangeUpPath, destination: DetachedPlaceUpPath): void;
|
|
1853
|
+
beforeReplace(newContent: DetachedRangeUpPath, oldContent: RangeUpPath, oldContentDestination: DetachedPlaceUpPath): void;
|
|
1854
|
+
// @deprecated (undocumented)
|
|
1855
|
+
onInsert(path: UpPath, content: ProtoNodes): void;
|
|
1856
|
+
// @deprecated
|
|
1857
|
+
onRemove(path: UpPath, count: number): void;
|
|
1858
|
+
}
|
|
1859
|
+
|
|
1860
|
+
// @internal
|
|
1861
|
+
export type PlaceIndex = number;
|
|
1862
|
+
|
|
1863
|
+
// @internal
|
|
1864
|
+
export interface PlaceUpPath<TUpPath extends UpPath = UpPath> extends FieldUpPath<TUpPath> {
|
|
1865
|
+
readonly index: PlaceIndex;
|
|
1866
|
+
}
|
|
1867
|
+
|
|
1868
|
+
// @internal
|
|
1869
|
+
export function prefixFieldPath(prefix: PathRootPrefix | undefined, path: FieldUpPath): FieldUpPath;
|
|
1870
|
+
|
|
1871
|
+
// @internal
|
|
1872
|
+
export function prefixPath(prefix: PathRootPrefix | undefined, path: UpPath | undefined): UpPath | undefined;
|
|
1873
|
+
|
|
1874
|
+
// @internal
|
|
1875
|
+
export type PropertyNameFromFieldKey<T extends string> = T extends ReservedObjectNodeFieldPropertyNames ? `field${Capitalize<T>}` : T extends `${ReservedObjectNodeFieldPropertyNamePrefixes}${Capitalize<string>}` ? `field${Capitalize<T>}` : T;
|
|
1876
|
+
|
|
1877
|
+
// @internal
|
|
1878
|
+
export type ProtoNodes = readonly DeltaProtoNode[];
|
|
1879
|
+
|
|
1880
|
+
// @internal
|
|
1881
|
+
interface Range_2 {
|
|
1882
|
+
readonly end: PlaceIndex;
|
|
1883
|
+
readonly start: PlaceIndex;
|
|
1884
|
+
}
|
|
1885
|
+
export { Range_2 as Range }
|
|
1886
|
+
|
|
1887
|
+
// @internal
|
|
1888
|
+
export interface RangeQueryResult<T> {
|
|
1889
|
+
length: number;
|
|
1890
|
+
value: T | undefined;
|
|
1891
|
+
}
|
|
1892
|
+
|
|
1893
|
+
// @internal
|
|
1894
|
+
export interface RangeUpPath<TUpPath extends UpPath = UpPath> extends FieldUpPath<TUpPath>, Range_2 {
|
|
1895
|
+
}
|
|
1896
|
+
|
|
1897
|
+
// @internal
|
|
1898
|
+
export type _RecursiveTrick = never;
|
|
1899
|
+
|
|
1900
|
+
// @internal (undocumented)
|
|
1901
|
+
interface Required_2 extends FlexFieldKind<"Value", Multiplicity.Single> {
|
|
1902
|
+
}
|
|
1903
|
+
export { Required_2 as Required }
|
|
1904
|
+
|
|
1905
|
+
// @internal
|
|
1906
|
+
export type RequiredFields<T> = [
|
|
1907
|
+
{
|
|
1908
|
+
[P in keyof T as undefined extends T[P] ? never : P]: T[P];
|
|
1909
|
+
}
|
|
1910
|
+
][_InlineTrick];
|
|
1911
|
+
|
|
1912
|
+
// @internal
|
|
1913
|
+
export type ReservedObjectNodeFieldPropertyNamePrefixes = (typeof reservedObjectNodeFieldPropertyNamePrefixes)[number];
|
|
1914
|
+
|
|
1915
|
+
// @internal
|
|
1916
|
+
export const reservedObjectNodeFieldPropertyNamePrefixes: readonly ["set", "boxed", "field", "Field"];
|
|
1917
|
+
|
|
1918
|
+
// @internal
|
|
1919
|
+
export type ReservedObjectNodeFieldPropertyNames = (typeof reservedObjectNodeFieldPropertyNames)[number];
|
|
1920
|
+
|
|
1921
|
+
// @internal
|
|
1922
|
+
export const reservedObjectNodeFieldPropertyNames: readonly ["anchorNode", "constructor", "context", "is", "on", "parentField", "schema", "treeStatus", "tryGetField", "type", "value", "localNodeKey", "boxedIterator", "iterator", "getBoxed"];
|
|
1923
|
+
|
|
619
1924
|
// @public
|
|
620
1925
|
export type RestrictiveReadonlyRecord<K extends symbol | string, T> = {
|
|
621
1926
|
readonly [P in symbol | string]: P extends K ? T : never;
|
|
@@ -638,6 +1943,72 @@ export enum RevertibleStatus {
|
|
|
638
1943
|
Valid = 0
|
|
639
1944
|
}
|
|
640
1945
|
|
|
1946
|
+
// @internal
|
|
1947
|
+
export type RevisionTag = SessionSpaceCompressedId | "root";
|
|
1948
|
+
|
|
1949
|
+
// @internal
|
|
1950
|
+
export interface RootField {
|
|
1951
|
+
// (undocumented)
|
|
1952
|
+
readonly key: DetachedField;
|
|
1953
|
+
}
|
|
1954
|
+
|
|
1955
|
+
// @internal (undocumented)
|
|
1956
|
+
export const rootField: DetachedField;
|
|
1957
|
+
|
|
1958
|
+
// @internal
|
|
1959
|
+
export const rootFieldKey: FieldKey;
|
|
1960
|
+
|
|
1961
|
+
// @internal
|
|
1962
|
+
export function runSynchronous(view: ITreeCheckout, transaction: (view: ITreeCheckout) => TransactionResult | void): TransactionResult;
|
|
1963
|
+
|
|
1964
|
+
// @internal
|
|
1965
|
+
export class SchemaBuilderBase<TScope extends string, TDefaultKind extends FlexFieldKind, TName extends number | string = string> {
|
|
1966
|
+
constructor(defaultKind: TDefaultKind, options: SchemaBuilderOptions<TScope>);
|
|
1967
|
+
// (undocumented)
|
|
1968
|
+
protected addNodeSchema<T extends FlexTreeNodeSchema>(schema: T): void;
|
|
1969
|
+
static field<Kind extends FlexFieldKind, T extends FlexImplicitAllowedTypes>(kind: Kind, allowedTypes: T): FlexFieldSchema<Kind, NormalizeAllowedTypes<T>>;
|
|
1970
|
+
fieldNode<Name extends TName, const T extends FlexImplicitFieldSchema>(name: Name, fieldSchema: T): FlexFieldNodeSchema<`${TScope}.${Name}`, NormalizeField<T, TDefaultKind>>;
|
|
1971
|
+
fieldNodeRecursive<Name extends TName, const T extends Unenforced<FlexImplicitFieldSchema>>(name: Name, t: T): FlexFieldNodeSchema<`${TScope}.${Name}`, T>;
|
|
1972
|
+
static fieldRecursive<Kind extends FlexFieldKind, T extends FlexList<Unenforced<FlexTreeNodeSchema>>>(kind: Kind, ...allowedTypes: T): FlexFieldSchema<Kind, T>;
|
|
1973
|
+
intoLibrary(): SchemaLibrary;
|
|
1974
|
+
intoSchema<const TSchema extends FlexImplicitFieldSchema>(root: TSchema): FlexTreeSchema<NormalizeField<TSchema, TDefaultKind>>;
|
|
1975
|
+
map<Name extends TName, const T extends FlexMapFieldSchema>(name: Name, fieldSchema: T): FlexMapNodeSchema<`${TScope}.${Name}`, T>;
|
|
1976
|
+
mapRecursive<Name extends TName, const T extends Unenforced<FlexMapFieldSchema>>(name: Name, t: T): FlexMapNodeSchema<`${TScope}.${Name}`, T>;
|
|
1977
|
+
readonly name: string;
|
|
1978
|
+
protected normalizeField<TSchema extends FlexImplicitFieldSchema>(schema: TSchema): NormalizeField<TSchema, TDefaultKind>;
|
|
1979
|
+
object<const Name extends TName, const T extends RestrictiveReadonlyRecord<string, FlexImplicitFieldSchema>>(name: Name, t: T): FlexObjectNodeSchema<`${TScope}.${Name}`, {
|
|
1980
|
+
[key in keyof T]: NormalizeField<T[key], TDefaultKind>;
|
|
1981
|
+
}>;
|
|
1982
|
+
objectRecursive<const Name extends TName, const T extends Unenforced<RestrictiveReadonlyRecord<string, FlexImplicitFieldSchema>>>(name: Name, t: T): FlexObjectNodeSchema<`${TScope}.${Name}`, T>;
|
|
1983
|
+
readonly scope: TScope;
|
|
1984
|
+
// (undocumented)
|
|
1985
|
+
protected scoped<Name extends TName>(name: Name): TreeNodeSchemaIdentifier<`${TScope}.${Name}`>;
|
|
1986
|
+
}
|
|
1987
|
+
|
|
1988
|
+
// @internal
|
|
1989
|
+
export interface SchemaBuilderOptions<TScope extends string = string> {
|
|
1990
|
+
libraries?: SchemaLibrary[];
|
|
1991
|
+
lint?: Partial<SchemaLintConfiguration>;
|
|
1992
|
+
name?: string;
|
|
1993
|
+
scope: TScope;
|
|
1994
|
+
}
|
|
1995
|
+
|
|
1996
|
+
// @internal
|
|
1997
|
+
export interface SchemaCollection {
|
|
1998
|
+
readonly nodeSchema: ReadonlyMap<TreeNodeSchemaIdentifier, FlexTreeNodeSchema>;
|
|
1999
|
+
}
|
|
2000
|
+
|
|
2001
|
+
// @internal
|
|
2002
|
+
export interface SchemaConfiguration<TRoot extends FlexFieldSchema = FlexFieldSchema> {
|
|
2003
|
+
readonly schema: FlexTreeSchema<TRoot>;
|
|
2004
|
+
}
|
|
2005
|
+
|
|
2006
|
+
// @internal
|
|
2007
|
+
export interface SchemaEvents {
|
|
2008
|
+
afterSchemaChange(newSchema: TreeStoredSchema): void;
|
|
2009
|
+
beforeSchemaChange(newSchema: TreeStoredSchema): void;
|
|
2010
|
+
}
|
|
2011
|
+
|
|
641
2012
|
// @public @sealed
|
|
642
2013
|
export class SchemaFactory<out TScope extends string | undefined = string | undefined, TName extends number | string = string> {
|
|
643
2014
|
constructor(scope: TScope);
|
|
@@ -648,7 +2019,6 @@ export class SchemaFactory<out TScope extends string | undefined = string | unde
|
|
|
648
2019
|
}, false, T>;
|
|
649
2020
|
readonly boolean: TreeNodeSchema<"com.fluidframework.leaf.boolean", NodeKind.Leaf, boolean, boolean>;
|
|
650
2021
|
readonly handle: TreeNodeSchema<"com.fluidframework.leaf.handle", NodeKind.Leaf, IFluidHandle<FluidObject & IFluidLoadable>, IFluidHandle<FluidObject & IFluidLoadable>>;
|
|
651
|
-
get identifier(): FieldSchema<FieldKind.Identifier>;
|
|
652
2022
|
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>;
|
|
653
2023
|
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>;
|
|
654
2024
|
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>>, {
|
|
@@ -674,9 +2044,62 @@ export interface SchemaIncompatible {
|
|
|
674
2044
|
readonly canUpgrade: boolean;
|
|
675
2045
|
}
|
|
676
2046
|
|
|
2047
|
+
// @internal
|
|
2048
|
+
export function schemaIsFieldNode(schema: FlexTreeNodeSchema): schema is FlexFieldNodeSchema;
|
|
2049
|
+
|
|
2050
|
+
// @internal
|
|
2051
|
+
export function schemaIsLeaf(schema: FlexTreeNodeSchema): schema is LeafNodeSchema;
|
|
2052
|
+
|
|
2053
|
+
// @internal
|
|
2054
|
+
export function schemaIsMap(schema: FlexTreeNodeSchema): schema is FlexMapNodeSchema;
|
|
2055
|
+
|
|
2056
|
+
// @internal
|
|
2057
|
+
export function schemaIsObjectNode(schema: FlexTreeNodeSchema): schema is FlexObjectNodeSchema;
|
|
2058
|
+
|
|
2059
|
+
// @internal
|
|
2060
|
+
export interface SchemaLibrary extends SchemaCollection {
|
|
2061
|
+
readonly libraries: ReadonlySet<SchemaLibraryData>;
|
|
2062
|
+
}
|
|
2063
|
+
|
|
2064
|
+
// @internal
|
|
2065
|
+
export interface SchemaLibraryData extends SchemaCollection {
|
|
2066
|
+
// (undocumented)
|
|
2067
|
+
readonly adapters: Adapters;
|
|
2068
|
+
// (undocumented)
|
|
2069
|
+
readonly name: string;
|
|
2070
|
+
}
|
|
2071
|
+
|
|
2072
|
+
// @internal
|
|
2073
|
+
export interface SchemaLintConfiguration {
|
|
2074
|
+
// (undocumented)
|
|
2075
|
+
readonly rejectEmpty: boolean;
|
|
2076
|
+
// (undocumented)
|
|
2077
|
+
readonly rejectForbidden: boolean;
|
|
2078
|
+
}
|
|
2079
|
+
|
|
2080
|
+
// @internal
|
|
2081
|
+
export interface SchemaPolicy {
|
|
2082
|
+
readonly fieldKinds: ReadonlyMap<FieldKindIdentifier, FieldKindData>;
|
|
2083
|
+
}
|
|
2084
|
+
|
|
2085
|
+
// @internal
|
|
2086
|
+
export interface SchematizeConfiguration<TRoot extends FlexFieldSchema = FlexFieldSchema> extends SchemaConfiguration<TRoot> {
|
|
2087
|
+
readonly allowedSchemaModifications: AllowedUpdateType;
|
|
2088
|
+
}
|
|
2089
|
+
|
|
2090
|
+
// @internal
|
|
2091
|
+
export interface SchemaValidationFunction<Schema extends TSchema> {
|
|
2092
|
+
// (undocumented)
|
|
2093
|
+
check(data: unknown): data is Static<Schema>;
|
|
2094
|
+
}
|
|
2095
|
+
|
|
677
2096
|
// @public
|
|
678
2097
|
export type ScopedSchemaName<TScope extends string | undefined, TName extends number | string> = TScope extends undefined ? `${TName}` : `${TScope}.${TName}`;
|
|
679
2098
|
|
|
2099
|
+
// @internal (undocumented)
|
|
2100
|
+
export interface Sequence extends FlexFieldKind<"Sequence", Multiplicity.Sequence> {
|
|
2101
|
+
}
|
|
2102
|
+
|
|
680
2103
|
// @alpha
|
|
681
2104
|
export class SequenceDeltaEvent extends SequenceEvent<MergeTreeDeltaOperationType> {
|
|
682
2105
|
constructor(opArgs: IMergeTreeDeltaOpArgs, deltaArgs: IMergeTreeDeltaCallbackArgs, mergeTreeClient: Client);
|
|
@@ -698,6 +2121,13 @@ export abstract class SequenceEvent<TOperation extends MergeTreeDeltaOperationTy
|
|
|
698
2121
|
get ranges(): readonly Readonly<ISequenceDeltaRange<TOperation>>[];
|
|
699
2122
|
}
|
|
700
2123
|
|
|
2124
|
+
// @internal (undocumented)
|
|
2125
|
+
export interface SequenceFieldEditBuilder {
|
|
2126
|
+
insert(index: number, newContent: ITreeCursorSynchronous): void;
|
|
2127
|
+
move(sourceIndex: number, count: number, destIndex: number): void;
|
|
2128
|
+
remove(index: number, count: number): void;
|
|
2129
|
+
}
|
|
2130
|
+
|
|
701
2131
|
// @alpha
|
|
702
2132
|
export class SequenceInterval implements ISerializableInterval {
|
|
703
2133
|
constructor(client: Client,
|
|
@@ -749,7 +2179,7 @@ export type SequencePlace = number | "start" | "end" | InteriorSequencePlace;
|
|
|
749
2179
|
// @alpha @sealed
|
|
750
2180
|
export const SharedDirectory: ISharedObjectKind<ISharedDirectory>;
|
|
751
2181
|
|
|
752
|
-
// @alpha
|
|
2182
|
+
// @alpha
|
|
753
2183
|
export type SharedDirectory = ISharedDirectory;
|
|
754
2184
|
|
|
755
2185
|
// @alpha
|
|
@@ -863,6 +2293,46 @@ export type SharedStringSegment = TextSegment | Marker;
|
|
|
863
2293
|
// @public
|
|
864
2294
|
export const SharedTree: ISharedObjectKind<ITree>;
|
|
865
2295
|
|
|
2296
|
+
// @internal
|
|
2297
|
+
export interface SharedTreeContentSnapshot {
|
|
2298
|
+
readonly removed: [string | number | undefined, number, JsonableTree][];
|
|
2299
|
+
readonly schema: TreeStoredSchema;
|
|
2300
|
+
readonly tree: JsonableTree[];
|
|
2301
|
+
}
|
|
2302
|
+
|
|
2303
|
+
// @internal
|
|
2304
|
+
export class SharedTreeFactory implements IChannelFactory<ISharedTree> {
|
|
2305
|
+
constructor(options?: SharedTreeOptions);
|
|
2306
|
+
// (undocumented)
|
|
2307
|
+
readonly attributes: IChannelAttributes;
|
|
2308
|
+
// (undocumented)
|
|
2309
|
+
create(runtime: IFluidDataStoreRuntime, id: string): ISharedTree;
|
|
2310
|
+
// (undocumented)
|
|
2311
|
+
load(runtime: IFluidDataStoreRuntime, id: string, services: IChannelServices, channelAttributes: Readonly<IChannelAttributes>): Promise<ISharedTree>;
|
|
2312
|
+
// (undocumented)
|
|
2313
|
+
readonly type: string;
|
|
2314
|
+
}
|
|
2315
|
+
|
|
2316
|
+
// @internal
|
|
2317
|
+
export interface SharedTreeFormatOptions {
|
|
2318
|
+
formatVersion: SharedTreeFormatVersion[keyof SharedTreeFormatVersion];
|
|
2319
|
+
treeEncodeType: TreeCompressionStrategy;
|
|
2320
|
+
}
|
|
2321
|
+
|
|
2322
|
+
// @internal
|
|
2323
|
+
export const SharedTreeFormatVersion: {
|
|
2324
|
+
readonly v1: 1;
|
|
2325
|
+
readonly v2: 2;
|
|
2326
|
+
};
|
|
2327
|
+
|
|
2328
|
+
// @internal
|
|
2329
|
+
export type SharedTreeFormatVersion = typeof SharedTreeFormatVersion;
|
|
2330
|
+
|
|
2331
|
+
// @internal (undocumented)
|
|
2332
|
+
export type SharedTreeOptions = Partial<ICodecOptions> & Partial<SharedTreeFormatOptions> & {
|
|
2333
|
+
forest?: ForestType;
|
|
2334
|
+
};
|
|
2335
|
+
|
|
866
2336
|
// @alpha
|
|
867
2337
|
export enum Side {
|
|
868
2338
|
// (undocumented)
|
|
@@ -871,12 +2341,75 @@ export enum Side {
|
|
|
871
2341
|
Before = 0
|
|
872
2342
|
}
|
|
873
2343
|
|
|
2344
|
+
// @internal
|
|
2345
|
+
export function singletonSchema<TScope extends string, TName extends string | number>(factory: SchemaFactory<TScope, TName>, name: TName): TreeNodeSchemaClass<ScopedSchemaName<TScope, TName>, NodeKind.Object, object & TreeNode & ObjectFromSchemaRecord<EmptyObject> & {
|
|
2346
|
+
readonly value: TName;
|
|
2347
|
+
}, object & InsertableObjectFromSchemaRecord<EmptyObject>, true, unknown> & (new () => object & TreeNode & ObjectFromSchemaRecord<EmptyObject> & {
|
|
2348
|
+
readonly value: TName;
|
|
2349
|
+
});
|
|
2350
|
+
|
|
2351
|
+
// @internal
|
|
2352
|
+
export type StableNodeKey = Brand<StableId, "Stable Node Key">;
|
|
2353
|
+
|
|
2354
|
+
// @internal
|
|
2355
|
+
export function stackTreeFieldCursor<TNode>(adapter: CursorAdapter<TNode>, root: TNode, detachedField?: DetachedField): CursorWithNode<TNode>;
|
|
2356
|
+
|
|
2357
|
+
// @internal
|
|
2358
|
+
export function stackTreeNodeCursor<TNode>(adapter: CursorAdapter<TNode>, root: TNode): CursorWithNode<TNode>;
|
|
2359
|
+
|
|
2360
|
+
// @internal
|
|
2361
|
+
export interface StoredSchemaCollection {
|
|
2362
|
+
readonly nodeSchema: ReadonlyMap<TreeNodeSchemaIdentifier, TreeNodeStoredSchema>;
|
|
2363
|
+
}
|
|
2364
|
+
|
|
2365
|
+
// @internal (undocumented)
|
|
2366
|
+
export class test_RecursiveObject extends test_RecursiveObject_base {
|
|
2367
|
+
}
|
|
2368
|
+
|
|
2369
|
+
// @internal
|
|
2370
|
+
export const test_RecursiveObject_base: TreeNodeSchemaClass_2<"Test Recursive Domain.testObject", NodeKind.Object, TreeObjectNodeUnsafe_2< {
|
|
2371
|
+
readonly recursive: FieldSchemaUnsafe_2<FieldKind.Optional, readonly [() => typeof test_RecursiveObject]>;
|
|
2372
|
+
readonly number: TreeNodeSchema_2<"com.fluidframework.leaf.number", NodeKind.Leaf, number, number>;
|
|
2373
|
+
}, "Test Recursive Domain.testObject">, object & InsertableObjectFromSchemaRecordUnsafe_2< {
|
|
2374
|
+
readonly recursive: FieldSchemaUnsafe_2<FieldKind.Optional, readonly [() => typeof test_RecursiveObject]>;
|
|
2375
|
+
readonly number: TreeNodeSchema_2<"com.fluidframework.leaf.number", NodeKind.Leaf, number, number>;
|
|
2376
|
+
}>, false, {
|
|
2377
|
+
readonly recursive: FieldSchemaUnsafe_2<FieldKind.Optional, readonly [() => typeof test_RecursiveObject]>;
|
|
2378
|
+
readonly number: TreeNodeSchema_2<"com.fluidframework.leaf.number", NodeKind.Leaf, number, number>;
|
|
2379
|
+
}>;
|
|
2380
|
+
|
|
2381
|
+
// @internal
|
|
2382
|
+
export const test_RecursiveObjectPojoMode: TreeNodeSchemaClass_2<"Test Recursive Domain.testPOJOObject", NodeKind.Object, TreeObjectNodeUnsafe_2< {
|
|
2383
|
+
readonly recursive: FieldSchemaUnsafe_2<FieldKind.Optional, readonly [() => TreeNodeSchemaClass_2<"Test Recursive Domain.testPOJOObject", NodeKind.Object, TreeObjectNodeUnsafe_2<any, "Test Recursive Domain.testPOJOObject">, object & InsertableObjectFromSchemaRecordUnsafe_2<any>, false, any>]>;
|
|
2384
|
+
readonly number: TreeNodeSchema_2<"com.fluidframework.leaf.number", NodeKind.Leaf, number, number>;
|
|
2385
|
+
}, "Test Recursive Domain.testPOJOObject">, object & InsertableObjectFromSchemaRecordUnsafe_2< {
|
|
2386
|
+
readonly recursive: FieldSchemaUnsafe_2<FieldKind.Optional, readonly [() => TreeNodeSchemaClass_2<"Test Recursive Domain.testPOJOObject", NodeKind.Object, TreeObjectNodeUnsafe_2<any, "Test Recursive Domain.testPOJOObject">, object & InsertableObjectFromSchemaRecordUnsafe_2<any>, false, any>]>;
|
|
2387
|
+
readonly number: TreeNodeSchema_2<"com.fluidframework.leaf.number", NodeKind.Leaf, number, number>;
|
|
2388
|
+
}>, false, {
|
|
2389
|
+
readonly recursive: FieldSchemaUnsafe_2<FieldKind.Optional, readonly [() => TreeNodeSchemaClass_2<"Test Recursive Domain.testPOJOObject", NodeKind.Object, TreeObjectNodeUnsafe_2<any, "Test Recursive Domain.testPOJOObject">, object & InsertableObjectFromSchemaRecordUnsafe_2<any>, false, any>]>;
|
|
2390
|
+
readonly number: TreeNodeSchema_2<"com.fluidframework.leaf.number", NodeKind.Leaf, number, number>;
|
|
2391
|
+
}>;
|
|
2392
|
+
|
|
874
2393
|
// @public
|
|
875
2394
|
export type TransactionConstraint = NodeInDocumentConstraint;
|
|
876
2395
|
|
|
2396
|
+
// @internal
|
|
2397
|
+
export enum TransactionResult {
|
|
2398
|
+
Abort = 0,
|
|
2399
|
+
Commit = 1
|
|
2400
|
+
}
|
|
2401
|
+
|
|
877
2402
|
// @public
|
|
878
2403
|
export const Tree: TreeApi;
|
|
879
2404
|
|
|
2405
|
+
// @internal (undocumented)
|
|
2406
|
+
export interface TreeAdapter {
|
|
2407
|
+
// (undocumented)
|
|
2408
|
+
readonly input: TreeNodeSchemaIdentifier;
|
|
2409
|
+
// (undocumented)
|
|
2410
|
+
readonly output: TreeNodeSchemaIdentifier;
|
|
2411
|
+
}
|
|
2412
|
+
|
|
880
2413
|
// @public
|
|
881
2414
|
export interface TreeApi extends TreeNodeApi {
|
|
882
2415
|
contains(node: TreeNode, other: TreeNode): boolean;
|
|
@@ -926,6 +2459,12 @@ export interface TreeChangeEvents {
|
|
|
926
2459
|
treeChanged(): void;
|
|
927
2460
|
}
|
|
928
2461
|
|
|
2462
|
+
// @internal
|
|
2463
|
+
export enum TreeCompressionStrategy {
|
|
2464
|
+
Compressed = 0,
|
|
2465
|
+
Uncompressed = 1
|
|
2466
|
+
}
|
|
2467
|
+
|
|
929
2468
|
// @public
|
|
930
2469
|
export class TreeConfiguration<TSchema extends ImplicitFieldSchema = ImplicitFieldSchema> {
|
|
931
2470
|
constructor(schema: TSchema, initialTree: () => InsertableTreeFieldFromImplicitField<TSchema>);
|
|
@@ -935,15 +2474,41 @@ export class TreeConfiguration<TSchema extends ImplicitFieldSchema = ImplicitFie
|
|
|
935
2474
|
readonly schema: TSchema;
|
|
936
2475
|
}
|
|
937
2476
|
|
|
2477
|
+
// @internal
|
|
2478
|
+
export interface TreeContent<TRoot extends FlexFieldSchema = FlexFieldSchema> extends SchemaConfiguration<TRoot> {
|
|
2479
|
+
readonly initialTree: InsertableFlexField<TRoot> | readonly ITreeCursorSynchronous[] | ITreeCursorSynchronous;
|
|
2480
|
+
}
|
|
2481
|
+
|
|
2482
|
+
// @internal
|
|
2483
|
+
export interface TreeDataContext {
|
|
2484
|
+
fieldSource?(key: FieldKey, schema: TreeFieldStoredSchema): undefined | FieldGenerator;
|
|
2485
|
+
readonly schema: FlexTreeSchema;
|
|
2486
|
+
}
|
|
2487
|
+
|
|
938
2488
|
// @public
|
|
939
2489
|
export type TreeFieldFromImplicitField<TSchema extends ImplicitFieldSchema = FieldSchema> = TSchema extends FieldSchema<infer Kind, infer Types> ? ApplyKind<TreeNodeFromImplicitAllowedTypes<Types>, Kind> : TSchema extends ImplicitAllowedTypes ? TreeNodeFromImplicitAllowedTypes<TSchema> : unknown;
|
|
940
2490
|
|
|
941
2491
|
// @public
|
|
942
2492
|
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
2493
|
|
|
2494
|
+
// @internal
|
|
2495
|
+
export interface TreeFieldStoredSchema {
|
|
2496
|
+
// (undocumented)
|
|
2497
|
+
readonly kind: FieldKindIdentifier;
|
|
2498
|
+
readonly types?: TreeTypeSet;
|
|
2499
|
+
}
|
|
2500
|
+
|
|
944
2501
|
// @public
|
|
945
2502
|
export type TreeLeafValue = number | string | boolean | IFluidHandle | null;
|
|
946
2503
|
|
|
2504
|
+
// @internal (undocumented)
|
|
2505
|
+
export interface TreeLocation {
|
|
2506
|
+
// (undocumented)
|
|
2507
|
+
readonly index: number;
|
|
2508
|
+
// (undocumented)
|
|
2509
|
+
readonly range: FieldLocation | DetachedField;
|
|
2510
|
+
}
|
|
2511
|
+
|
|
947
2512
|
// @public
|
|
948
2513
|
export interface TreeMapNode<T extends ImplicitAllowedTypes = ImplicitAllowedTypes> extends ReadonlyMap<string, TreeNodeFromImplicitAllowedTypes<T>>, TreeNode {
|
|
949
2514
|
delete(key: string): void;
|
|
@@ -956,6 +2521,13 @@ export interface TreeMapNodeUnsafe<T extends Unenforced<ImplicitAllowedTypes>> e
|
|
|
956
2521
|
set(key: string, value: InsertableTreeNodeFromImplicitAllowedTypesUnsafe<T> | undefined): void;
|
|
957
2522
|
}
|
|
958
2523
|
|
|
2524
|
+
// @internal (undocumented)
|
|
2525
|
+
export const enum TreeNavigationResult {
|
|
2526
|
+
NotFound = -1,
|
|
2527
|
+
Ok = 1,
|
|
2528
|
+
Pending = 0
|
|
2529
|
+
}
|
|
2530
|
+
|
|
959
2531
|
// @public
|
|
960
2532
|
export abstract class TreeNode implements WithType {
|
|
961
2533
|
abstract get [type](): string;
|
|
@@ -968,7 +2540,6 @@ export interface TreeNodeApi {
|
|
|
968
2540
|
on<K extends keyof TreeChangeEvents>(node: TreeNode, eventName: K, listener: TreeChangeEvents[K]): () => void;
|
|
969
2541
|
parent(node: TreeNode): TreeNode | undefined;
|
|
970
2542
|
schema<T extends TreeNode | TreeLeafValue>(node: T): TreeNodeSchema<string, NodeKind, unknown, T>;
|
|
971
|
-
shortId(node: TreeNode): number | undefined;
|
|
972
2543
|
readonly status: (node: TreeNode) => TreeStatus;
|
|
973
2544
|
}
|
|
974
2545
|
|
|
@@ -981,6 +2552,23 @@ export type TreeNodeFromImplicitAllowedTypesUnsafe<TSchema extends Unenforced<Im
|
|
|
981
2552
|
// @public
|
|
982
2553
|
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>;
|
|
983
2554
|
|
|
2555
|
+
// @internal
|
|
2556
|
+
export abstract class TreeNodeSchemaBase<const out Name extends string = string, const out Specification = unknown> {
|
|
2557
|
+
protected constructor(builder: Named<string>, name: TreeNodeSchemaIdentifier<Name>, info: Specification, stored: TreeNodeStoredSchema);
|
|
2558
|
+
// (undocumented)
|
|
2559
|
+
readonly builder: Named<string>;
|
|
2560
|
+
// (undocumented)
|
|
2561
|
+
abstract getFieldSchema(field: FieldKey): FlexFieldSchema;
|
|
2562
|
+
// (undocumented)
|
|
2563
|
+
readonly info: Specification;
|
|
2564
|
+
// (undocumented)
|
|
2565
|
+
readonly name: TreeNodeSchemaIdentifier<Name>;
|
|
2566
|
+
// (undocumented)
|
|
2567
|
+
readonly stored: TreeNodeStoredSchema;
|
|
2568
|
+
// (undocumented)
|
|
2569
|
+
protected _typeCheck?: MakeNominal;
|
|
2570
|
+
}
|
|
2571
|
+
|
|
984
2572
|
// @public
|
|
985
2573
|
export interface TreeNodeSchemaClass<out Name extends string = string, out Kind extends NodeKind = NodeKind, out TNode = unknown, in TInsertable = never, out ImplicitlyConstructable extends boolean = boolean, out Info = unknown> extends TreeNodeSchemaCore<Name, Kind, ImplicitlyConstructable, Info> {
|
|
986
2574
|
// @sealed
|
|
@@ -997,18 +2585,32 @@ export interface TreeNodeSchemaCore<out Name extends string, out Kind extends No
|
|
|
997
2585
|
readonly kind: Kind;
|
|
998
2586
|
}
|
|
999
2587
|
|
|
2588
|
+
// @internal
|
|
2589
|
+
export type TreeNodeSchemaIdentifier<TName extends string = string> = Brand<TName, "tree.TreeNodeSchemaIdentifier">;
|
|
2590
|
+
|
|
1000
2591
|
// @public
|
|
1001
2592
|
export interface TreeNodeSchemaNonClass<out Name extends string = string, out Kind extends NodeKind = NodeKind, out TNode = unknown, in TInsertable = never, out ImplicitlyConstructable extends boolean = boolean, out Info = unknown> extends TreeNodeSchemaCore<Name, Kind, ImplicitlyConstructable, Info> {
|
|
1002
2593
|
// (undocumented)
|
|
1003
2594
|
create(data: TInsertable): TNode;
|
|
1004
2595
|
}
|
|
1005
2596
|
|
|
2597
|
+
// @internal (undocumented)
|
|
2598
|
+
export abstract class TreeNodeStoredSchema {
|
|
2599
|
+
// (undocumented)
|
|
2600
|
+
abstract encode(): ErasedTreeNodeSchemaDataFormat;
|
|
2601
|
+
// (undocumented)
|
|
2602
|
+
protected _typeCheck: MakeNominal;
|
|
2603
|
+
}
|
|
2604
|
+
|
|
1006
2605
|
// @public
|
|
1007
2606
|
export type TreeObjectNode<T extends RestrictiveReadonlyRecord<string, ImplicitFieldSchema>, TypeName extends string = string> = TreeNode & ObjectFromSchemaRecord<T> & WithType<TypeName>;
|
|
1008
2607
|
|
|
1009
2608
|
// @public
|
|
1010
2609
|
export type TreeObjectNodeUnsafe<T extends Unenforced<RestrictiveReadonlyRecord<string, ImplicitFieldSchema>>, TypeName extends string = string> = TreeNode & ObjectFromSchemaRecordUnsafe<T> & WithType<TypeName>;
|
|
1011
2610
|
|
|
2611
|
+
// @internal
|
|
2612
|
+
export function treeSchemaFromStoredSchema(schema: TreeStoredSchema): FlexTreeSchema;
|
|
2613
|
+
|
|
1012
2614
|
// @public
|
|
1013
2615
|
export enum TreeStatus {
|
|
1014
2616
|
Deleted = 2,
|
|
@@ -1016,6 +2618,32 @@ export enum TreeStatus {
|
|
|
1016
2618
|
Removed = 1
|
|
1017
2619
|
}
|
|
1018
2620
|
|
|
2621
|
+
// @internal
|
|
2622
|
+
export interface TreeStoredSchema extends StoredSchemaCollection {
|
|
2623
|
+
readonly rootFieldSchema: TreeFieldStoredSchema;
|
|
2624
|
+
}
|
|
2625
|
+
|
|
2626
|
+
// @internal
|
|
2627
|
+
export interface TreeStoredSchemaSubscription extends ISubscribable<SchemaEvents>, TreeStoredSchema {
|
|
2628
|
+
}
|
|
2629
|
+
|
|
2630
|
+
// @internal (undocumented)
|
|
2631
|
+
export type TreeType = TreeNodeSchemaIdentifier;
|
|
2632
|
+
|
|
2633
|
+
// @internal
|
|
2634
|
+
export type TreeTypeSet = ReadonlySet<TreeNodeSchemaIdentifier> | undefined;
|
|
2635
|
+
|
|
2636
|
+
// @internal
|
|
2637
|
+
export type TreeValue<TSchema extends ValueSchema = ValueSchema> = [
|
|
2638
|
+
{
|
|
2639
|
+
[ValueSchema.Number]: number;
|
|
2640
|
+
[ValueSchema.String]: string;
|
|
2641
|
+
[ValueSchema.Boolean]: boolean;
|
|
2642
|
+
[ValueSchema.FluidHandle]: IFluidHandle;
|
|
2643
|
+
[ValueSchema.Null]: null;
|
|
2644
|
+
}[TSchema]
|
|
2645
|
+
][_InlineTrick];
|
|
2646
|
+
|
|
1019
2647
|
// @public
|
|
1020
2648
|
export interface TreeView<TSchema extends ImplicitFieldSchema> extends IDisposable {
|
|
1021
2649
|
readonly error?: SchemaIncompatible;
|
|
@@ -1035,12 +2663,47 @@ export interface TreeViewEvents {
|
|
|
1035
2663
|
// @public
|
|
1036
2664
|
export const type: unique symbol;
|
|
1037
2665
|
|
|
2666
|
+
// @internal
|
|
2667
|
+
export const typeboxValidator: JsonValidator;
|
|
2668
|
+
|
|
2669
|
+
// @internal
|
|
2670
|
+
export type TypedFields<TFields extends undefined | {
|
|
2671
|
+
readonly [key: string]: FlexFieldSchema;
|
|
2672
|
+
}> = [
|
|
2673
|
+
TFields extends {
|
|
2674
|
+
[key: string]: FlexFieldSchema;
|
|
2675
|
+
} ? {
|
|
2676
|
+
-readonly [key in keyof TFields]: InsertableFlexField<TFields[key]>;
|
|
2677
|
+
} : EmptyObject
|
|
2678
|
+
][_InlineTrick];
|
|
2679
|
+
|
|
2680
|
+
// @internal
|
|
2681
|
+
export function typedObjectValues<TKey extends string, TValues>(object: Record<TKey, TValues>): TValues[];
|
|
2682
|
+
|
|
2683
|
+
// @internal
|
|
2684
|
+
export const typeNameSymbol: unique symbol;
|
|
2685
|
+
|
|
2686
|
+
// @internal
|
|
2687
|
+
export type UnbrandedName<TName> = [
|
|
2688
|
+
TName extends TreeNodeSchemaIdentifier<infer S> ? S : string
|
|
2689
|
+
][_InlineTrick];
|
|
2690
|
+
|
|
1038
2691
|
// @public
|
|
1039
2692
|
export type Unenforced<_DesiredExtendsConstraint> = unknown;
|
|
1040
2693
|
|
|
1041
2694
|
// @public
|
|
1042
2695
|
export type Unhydrated<T> = T;
|
|
1043
2696
|
|
|
2697
|
+
// @internal
|
|
2698
|
+
export interface UpPath<TParent = UpPathDefault> {
|
|
2699
|
+
readonly parent: TParent | undefined;
|
|
2700
|
+
readonly parentField: FieldKey;
|
|
2701
|
+
readonly parentIndex: NodeIndex;
|
|
2702
|
+
}
|
|
2703
|
+
|
|
2704
|
+
// @internal
|
|
2705
|
+
export type UpPathDefault = UpPath;
|
|
2706
|
+
|
|
1044
2707
|
// @public
|
|
1045
2708
|
export type ValidateRecursiveSchema<T extends TreeNodeSchemaClass<string, NodeKind.Array | NodeKind.Map | NodeKind.Object, TreeNode & WithType<T["identifier"]>, {
|
|
1046
2709
|
[NodeKind.Object]: T["info"] extends RestrictiveReadonlyRecord<string, ImplicitFieldSchema> ? InsertableObjectFromSchemaRecord<T["info"]> : unknown;
|
|
@@ -1052,6 +2715,34 @@ export type ValidateRecursiveSchema<T extends TreeNodeSchemaClass<string, NodeKi
|
|
|
1052
2715
|
[NodeKind.Map]: ImplicitAllowedTypes;
|
|
1053
2716
|
}[T["kind"]]>> = true;
|
|
1054
2717
|
|
|
2718
|
+
// @internal
|
|
2719
|
+
export type Value = undefined | TreeValue;
|
|
2720
|
+
|
|
2721
|
+
// @internal (undocumented)
|
|
2722
|
+
export interface ValueFieldEditBuilder {
|
|
2723
|
+
set(newContent: ITreeCursorSynchronous): void;
|
|
2724
|
+
}
|
|
2725
|
+
|
|
2726
|
+
// @internal
|
|
2727
|
+
export type ValueFromBranded<T extends BrandedType<unknown, unknown>> = T extends BrandedType<infer ValueType, unknown> ? ValueType : never;
|
|
2728
|
+
|
|
2729
|
+
// @internal
|
|
2730
|
+
export enum ValueSchema {
|
|
2731
|
+
// (undocumented)
|
|
2732
|
+
Boolean = 2,
|
|
2733
|
+
// (undocumented)
|
|
2734
|
+
FluidHandle = 3,
|
|
2735
|
+
// (undocumented)
|
|
2736
|
+
Null = 4,
|
|
2737
|
+
// (undocumented)
|
|
2738
|
+
Number = 0,
|
|
2739
|
+
// (undocumented)
|
|
2740
|
+
String = 1
|
|
2741
|
+
}
|
|
2742
|
+
|
|
2743
|
+
// @internal
|
|
2744
|
+
export const valueSymbol: unique symbol;
|
|
2745
|
+
|
|
1055
2746
|
// @public
|
|
1056
2747
|
export interface WithType<TName extends string = string> {
|
|
1057
2748
|
get [type](): TName;
|