@fluidframework/tree 2.31.0 → 2.32.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.vscode/settings.json +1 -1
- package/CHANGELOG.md +44 -0
- package/api-extractor/api-extractor.current.json +5 -1
- package/api-report/tree.alpha.api.md +44 -20
- package/dist/alpha.d.ts +6 -2
- package/dist/feature-libraries/flex-tree/context.d.ts +1 -1
- package/dist/feature-libraries/flex-tree/context.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/context.js +1 -2
- package/dist/feature-libraries/flex-tree/context.js.map +1 -1
- package/dist/feature-libraries/flex-tree/index.d.ts +1 -1
- package/dist/feature-libraries/flex-tree/index.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/index.js +1 -2
- package/dist/feature-libraries/flex-tree/index.js.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyEntity.d.ts +6 -15
- package/dist/feature-libraries/flex-tree/lazyEntity.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyEntity.js +9 -18
- package/dist/feature-libraries/flex-tree/lazyEntity.js.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyField.d.ts +3 -3
- package/dist/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyField.js +14 -14
- package/dist/feature-libraries/flex-tree/lazyField.js.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyNode.d.ts +4 -4
- package/dist/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyNode.js +12 -12
- package/dist/feature-libraries/flex-tree/lazyNode.js.map +1 -1
- package/dist/feature-libraries/index.d.ts +1 -1
- package/dist/feature-libraries/index.d.ts.map +1 -1
- package/dist/feature-libraries/index.js +1 -2
- package/dist/feature-libraries/index.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -2
- package/dist/index.js.map +1 -1
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/shared-tree/sharedTree.js +2 -2
- package/dist/shared-tree/sharedTree.js.map +1 -1
- package/dist/shared-tree/treeApiAlpha.d.ts +6 -6
- package/dist/shared-tree/treeApiAlpha.d.ts.map +1 -1
- package/dist/shared-tree/treeApiAlpha.js.map +1 -1
- package/dist/shared-tree-core/sharedTreeCore.d.ts +0 -6
- package/dist/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
- package/dist/shared-tree-core/sharedTreeCore.js +0 -17
- package/dist/shared-tree-core/sharedTreeCore.js.map +1 -1
- package/dist/simple-tree/api/conciseTree.d.ts +2 -2
- package/dist/simple-tree/api/conciseTree.d.ts.map +1 -1
- package/dist/simple-tree/api/conciseTree.js.map +1 -1
- package/dist/simple-tree/api/customTree.d.ts +14 -12
- package/dist/simple-tree/api/customTree.d.ts.map +1 -1
- package/dist/simple-tree/api/customTree.js.map +1 -1
- package/dist/simple-tree/api/getJsonSchema.d.ts +21 -7
- package/dist/simple-tree/api/getJsonSchema.d.ts.map +1 -1
- package/dist/simple-tree/api/getJsonSchema.js +8 -16
- package/dist/simple-tree/api/getJsonSchema.js.map +1 -1
- package/dist/simple-tree/api/getSimpleSchema.d.ts +3 -10
- package/dist/simple-tree/api/getSimpleSchema.d.ts.map +1 -1
- package/dist/simple-tree/api/getSimpleSchema.js +4 -16
- package/dist/simple-tree/api/getSimpleSchema.js.map +1 -1
- package/dist/simple-tree/api/index.d.ts +4 -3
- package/dist/simple-tree/api/index.d.ts.map +1 -1
- package/dist/simple-tree/api/index.js +2 -1
- package/dist/simple-tree/api/index.js.map +1 -1
- package/dist/simple-tree/api/schemaFactoryAlpha.d.ts +17 -1
- package/dist/simple-tree/api/schemaFactoryAlpha.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaFactoryAlpha.js +4 -0
- package/dist/simple-tree/api/schemaFactoryAlpha.js.map +1 -1
- package/dist/simple-tree/api/schemaFromSimple.d.ts +5 -2
- package/dist/simple-tree/api/schemaFromSimple.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaFromSimple.js +24 -8
- package/dist/simple-tree/api/schemaFromSimple.js.map +1 -1
- package/dist/simple-tree/api/simpleSchemaToJsonSchema.d.ts +11 -3
- package/dist/simple-tree/api/simpleSchemaToJsonSchema.d.ts.map +1 -1
- package/dist/simple-tree/api/simpleSchemaToJsonSchema.js +40 -28
- package/dist/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -1
- package/dist/simple-tree/api/tree.d.ts +32 -5
- package/dist/simple-tree/api/tree.d.ts.map +1 -1
- package/dist/simple-tree/api/tree.js +17 -1
- package/dist/simple-tree/api/tree.js.map +1 -1
- package/dist/simple-tree/api/verboseTree.d.ts +4 -28
- package/dist/simple-tree/api/verboseTree.d.ts.map +1 -1
- package/dist/simple-tree/api/verboseTree.js.map +1 -1
- package/dist/simple-tree/api/viewSchemaToSimpleSchema.d.ts.map +1 -1
- package/dist/simple-tree/api/viewSchemaToSimpleSchema.js +7 -3
- package/dist/simple-tree/api/viewSchemaToSimpleSchema.js.map +1 -1
- package/dist/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
- package/dist/simple-tree/core/treeNodeKernel.js +7 -6
- package/dist/simple-tree/core/treeNodeKernel.js.map +1 -1
- package/dist/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -1
- package/dist/simple-tree/core/unhydratedFlexTree.js +12 -1
- package/dist/simple-tree/core/unhydratedFlexTree.js.map +1 -1
- package/dist/simple-tree/index.d.ts +1 -1
- package/dist/simple-tree/index.d.ts.map +1 -1
- package/dist/simple-tree/index.js +3 -2
- package/dist/simple-tree/index.js.map +1 -1
- package/dist/simple-tree/simpleSchema.d.ts +4 -11
- package/dist/simple-tree/simpleSchema.d.ts.map +1 -1
- package/dist/simple-tree/simpleSchema.js.map +1 -1
- package/dist/tableSchema.d.ts +227 -0
- package/dist/tableSchema.d.ts.map +1 -0
- package/dist/tableSchema.js +234 -0
- package/dist/tableSchema.js.map +1 -0
- package/dist/treeFactory.d.ts +4 -4
- package/dist/treeFactory.d.ts.map +1 -1
- package/dist/treeFactory.js.map +1 -1
- package/dist/util/breakable.d.ts.map +1 -1
- package/dist/util/breakable.js +9 -7
- package/dist/util/breakable.js.map +1 -1
- package/lib/alpha.d.ts +6 -2
- package/lib/feature-libraries/flex-tree/context.d.ts +1 -1
- package/lib/feature-libraries/flex-tree/context.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/context.js +1 -2
- package/lib/feature-libraries/flex-tree/context.js.map +1 -1
- package/lib/feature-libraries/flex-tree/index.d.ts +1 -1
- package/lib/feature-libraries/flex-tree/index.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/index.js +1 -1
- package/lib/feature-libraries/flex-tree/index.js.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyEntity.d.ts +6 -15
- package/lib/feature-libraries/flex-tree/lazyEntity.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyEntity.js +8 -17
- package/lib/feature-libraries/flex-tree/lazyEntity.js.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyField.d.ts +3 -3
- package/lib/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyField.js +15 -15
- package/lib/feature-libraries/flex-tree/lazyField.js.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyNode.d.ts +4 -4
- package/lib/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyNode.js +13 -13
- package/lib/feature-libraries/flex-tree/lazyNode.js.map +1 -1
- package/lib/feature-libraries/index.d.ts +1 -1
- package/lib/feature-libraries/index.d.ts.map +1 -1
- package/lib/feature-libraries/index.js +1 -1
- package/lib/feature-libraries/index.js.map +1 -1
- package/lib/index.d.ts +2 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +2 -1
- package/lib/index.js.map +1 -1
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/shared-tree/sharedTree.js +2 -2
- package/lib/shared-tree/sharedTree.js.map +1 -1
- package/lib/shared-tree/treeApiAlpha.d.ts +6 -6
- package/lib/shared-tree/treeApiAlpha.d.ts.map +1 -1
- package/lib/shared-tree/treeApiAlpha.js.map +1 -1
- package/lib/shared-tree-core/sharedTreeCore.d.ts +0 -6
- package/lib/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
- package/lib/shared-tree-core/sharedTreeCore.js +0 -17
- package/lib/shared-tree-core/sharedTreeCore.js.map +1 -1
- package/lib/simple-tree/api/conciseTree.d.ts +2 -2
- package/lib/simple-tree/api/conciseTree.d.ts.map +1 -1
- package/lib/simple-tree/api/conciseTree.js.map +1 -1
- package/lib/simple-tree/api/customTree.d.ts +14 -12
- package/lib/simple-tree/api/customTree.d.ts.map +1 -1
- package/lib/simple-tree/api/customTree.js.map +1 -1
- package/lib/simple-tree/api/getJsonSchema.d.ts +21 -7
- package/lib/simple-tree/api/getJsonSchema.d.ts.map +1 -1
- package/lib/simple-tree/api/getJsonSchema.js +8 -16
- package/lib/simple-tree/api/getJsonSchema.js.map +1 -1
- package/lib/simple-tree/api/getSimpleSchema.d.ts +3 -10
- package/lib/simple-tree/api/getSimpleSchema.d.ts.map +1 -1
- package/lib/simple-tree/api/getSimpleSchema.js +4 -16
- package/lib/simple-tree/api/getSimpleSchema.js.map +1 -1
- package/lib/simple-tree/api/index.d.ts +4 -3
- package/lib/simple-tree/api/index.d.ts.map +1 -1
- package/lib/simple-tree/api/index.js +1 -1
- package/lib/simple-tree/api/index.js.map +1 -1
- package/lib/simple-tree/api/schemaFactoryAlpha.d.ts +17 -1
- package/lib/simple-tree/api/schemaFactoryAlpha.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaFactoryAlpha.js +4 -0
- package/lib/simple-tree/api/schemaFactoryAlpha.js.map +1 -1
- package/lib/simple-tree/api/schemaFromSimple.d.ts +5 -2
- package/lib/simple-tree/api/schemaFromSimple.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaFromSimple.js +24 -8
- package/lib/simple-tree/api/schemaFromSimple.js.map +1 -1
- package/lib/simple-tree/api/simpleSchemaToJsonSchema.d.ts +11 -3
- package/lib/simple-tree/api/simpleSchemaToJsonSchema.d.ts.map +1 -1
- package/lib/simple-tree/api/simpleSchemaToJsonSchema.js +41 -29
- package/lib/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -1
- package/lib/simple-tree/api/tree.d.ts +32 -5
- package/lib/simple-tree/api/tree.d.ts.map +1 -1
- package/lib/simple-tree/api/tree.js +16 -1
- package/lib/simple-tree/api/tree.js.map +1 -1
- package/lib/simple-tree/api/verboseTree.d.ts +4 -28
- package/lib/simple-tree/api/verboseTree.d.ts.map +1 -1
- package/lib/simple-tree/api/verboseTree.js.map +1 -1
- package/lib/simple-tree/api/viewSchemaToSimpleSchema.d.ts.map +1 -1
- package/lib/simple-tree/api/viewSchemaToSimpleSchema.js +7 -3
- package/lib/simple-tree/api/viewSchemaToSimpleSchema.js.map +1 -1
- package/lib/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
- package/lib/simple-tree/core/treeNodeKernel.js +8 -7
- package/lib/simple-tree/core/treeNodeKernel.js.map +1 -1
- package/lib/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -1
- package/lib/simple-tree/core/unhydratedFlexTree.js +12 -1
- package/lib/simple-tree/core/unhydratedFlexTree.js.map +1 -1
- package/lib/simple-tree/index.d.ts +1 -1
- package/lib/simple-tree/index.d.ts.map +1 -1
- package/lib/simple-tree/index.js +1 -1
- package/lib/simple-tree/index.js.map +1 -1
- package/lib/simple-tree/simpleSchema.d.ts +4 -11
- package/lib/simple-tree/simpleSchema.d.ts.map +1 -1
- package/lib/simple-tree/simpleSchema.js.map +1 -1
- package/lib/tableSchema.d.ts +227 -0
- package/lib/tableSchema.d.ts.map +1 -0
- package/lib/tableSchema.js +231 -0
- package/lib/tableSchema.js.map +1 -0
- package/lib/treeFactory.d.ts +4 -4
- package/lib/treeFactory.d.ts.map +1 -1
- package/lib/treeFactory.js.map +1 -1
- package/lib/util/breakable.d.ts.map +1 -1
- package/lib/util/breakable.js +9 -7
- package/lib/util/breakable.js.map +1 -1
- package/package.json +25 -37
- package/src/feature-libraries/flex-tree/context.ts +2 -2
- package/src/feature-libraries/flex-tree/index.ts +0 -1
- package/src/feature-libraries/flex-tree/lazyEntity.ts +11 -21
- package/src/feature-libraries/flex-tree/lazyField.ts +17 -26
- package/src/feature-libraries/flex-tree/lazyNode.ts +13 -19
- package/src/feature-libraries/index.ts +0 -1
- package/src/index.ts +6 -2
- package/src/packageVersion.ts +1 -1
- package/src/shared-tree/sharedTree.ts +2 -2
- package/src/shared-tree/treeApiAlpha.ts +17 -15
- package/src/shared-tree-core/sharedTreeCore.ts +0 -23
- package/src/simple-tree/api/conciseTree.ts +4 -4
- package/src/simple-tree/api/customTree.ts +16 -14
- package/src/simple-tree/api/getJsonSchema.ts +25 -16
- package/src/simple-tree/api/getSimpleSchema.ts +4 -18
- package/src/simple-tree/api/index.ts +4 -2
- package/src/simple-tree/api/schemaFactoryAlpha.ts +18 -1
- package/src/simple-tree/api/schemaFromSimple.ts +45 -16
- package/src/simple-tree/api/simpleSchemaToJsonSchema.ts +53 -34
- package/src/simple-tree/api/tree.ts +51 -4
- package/src/simple-tree/api/verboseTree.ts +7 -32
- package/src/simple-tree/api/viewSchemaToSimpleSchema.ts +8 -3
- package/src/simple-tree/core/treeNodeKernel.ts +11 -7
- package/src/simple-tree/core/unhydratedFlexTree.ts +17 -4
- package/src/simple-tree/index.ts +4 -2
- package/src/simple-tree/simpleSchema.ts +4 -12
- package/src/tableSchema.ts +609 -0
- package/src/treeFactory.ts +4 -3
- package/src/util/breakable.ts +9 -6
|
@@ -20,6 +20,7 @@ import type {
|
|
|
20
20
|
} from "../../shared-tree/index.js";
|
|
21
21
|
|
|
22
22
|
import {
|
|
23
|
+
type FieldSchemaAlpha,
|
|
23
24
|
type ImplicitFieldSchema,
|
|
24
25
|
type InsertableField,
|
|
25
26
|
type InsertableTreeFieldFromImplicitField,
|
|
@@ -29,6 +30,7 @@ import {
|
|
|
29
30
|
type UnsafeUnknownSchema,
|
|
30
31
|
FieldKind,
|
|
31
32
|
markSchemaMostDerived,
|
|
33
|
+
normalizeFieldSchema,
|
|
32
34
|
} from "../schemaTypes.js";
|
|
33
35
|
import { NodeKind, type TreeNodeSchema } from "../core/index.js";
|
|
34
36
|
import { toStoredSchema } from "../toStoredSchema.js";
|
|
@@ -38,7 +40,7 @@ import { getOrCreate } from "../../util/index.js";
|
|
|
38
40
|
import type { MakeNominal } from "../../util/index.js";
|
|
39
41
|
import { walkFieldSchema } from "../walkFieldSchema.js";
|
|
40
42
|
import type { VerboseTree } from "./verboseTree.js";
|
|
41
|
-
import type { SimpleTreeSchema } from "../simpleSchema.js";
|
|
43
|
+
import type { SimpleNodeSchema, SimpleTreeSchema } from "../simpleSchema.js";
|
|
42
44
|
import type {
|
|
43
45
|
RunTransactionParams,
|
|
44
46
|
TransactionCallbackStatus,
|
|
@@ -106,9 +108,7 @@ export interface ITree extends ViewableTree, IFluidLoadable {}
|
|
|
106
108
|
|
|
107
109
|
/**
|
|
108
110
|
* {@link ITree} extended with some alpha APIs.
|
|
109
|
-
* @
|
|
110
|
-
* TODO: Promote this to alpha.
|
|
111
|
-
* @internal
|
|
111
|
+
* @sealed @alpha
|
|
112
112
|
*/
|
|
113
113
|
export interface ITreeAlpha extends ITree {
|
|
114
114
|
/**
|
|
@@ -309,6 +309,53 @@ export class TreeViewConfiguration<
|
|
|
309
309
|
}
|
|
310
310
|
}
|
|
311
311
|
|
|
312
|
+
/**
|
|
313
|
+
* {@link TreeViewConfiguration} extended with some alpha APIs.
|
|
314
|
+
* @sealed @alpha
|
|
315
|
+
*/
|
|
316
|
+
export class TreeViewConfigurationAlpha<
|
|
317
|
+
const TSchema extends ImplicitFieldSchema = ImplicitFieldSchema,
|
|
318
|
+
>
|
|
319
|
+
extends TreeViewConfiguration<TSchema>
|
|
320
|
+
implements TreeSchema
|
|
321
|
+
{
|
|
322
|
+
/**
|
|
323
|
+
* {@inheritDoc TreeSchema.root}
|
|
324
|
+
*/
|
|
325
|
+
public readonly root: FieldSchemaAlpha;
|
|
326
|
+
/**
|
|
327
|
+
* {@inheritDoc TreeSchema.definitions}
|
|
328
|
+
*/
|
|
329
|
+
public readonly definitions: ReadonlyMap<string, SimpleNodeSchema & TreeNodeSchema>;
|
|
330
|
+
|
|
331
|
+
public constructor(props: ITreeViewConfiguration<TSchema>) {
|
|
332
|
+
super(props);
|
|
333
|
+
this.root = normalizeFieldSchema(props.schema);
|
|
334
|
+
const definitions = new Map<string, SimpleNodeSchema & TreeNodeSchema>();
|
|
335
|
+
walkFieldSchema(props.schema, {
|
|
336
|
+
node: (schema) =>
|
|
337
|
+
definitions.set(schema.identifier, schema as SimpleNodeSchema & TreeNodeSchema),
|
|
338
|
+
});
|
|
339
|
+
this.definitions = definitions;
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
/**
|
|
344
|
+
* {@link TreeViewConfigurationAlpha}
|
|
345
|
+
* @sealed @alpha
|
|
346
|
+
*/
|
|
347
|
+
export interface TreeSchema extends SimpleTreeSchema {
|
|
348
|
+
/**
|
|
349
|
+
* {@inheritDoc SimpleTreeSchema.root}
|
|
350
|
+
*/
|
|
351
|
+
readonly root: FieldSchemaAlpha;
|
|
352
|
+
|
|
353
|
+
/**
|
|
354
|
+
* {@inheritDoc SimpleTreeSchema.definitions}
|
|
355
|
+
*/
|
|
356
|
+
readonly definitions: ReadonlyMap<string, SimpleNodeSchema & TreeNodeSchema>;
|
|
357
|
+
}
|
|
358
|
+
|
|
312
359
|
/**
|
|
313
360
|
* Pretty print a set of types for use in error messages.
|
|
314
361
|
*/
|
|
@@ -41,8 +41,9 @@ import {
|
|
|
41
41
|
customFromCursor,
|
|
42
42
|
replaceHandles,
|
|
43
43
|
type CustomTreeNode,
|
|
44
|
-
type EncodeOptions,
|
|
45
44
|
type HandleConverter,
|
|
45
|
+
type SchemalessParseOptions,
|
|
46
|
+
type TreeEncodingOptions,
|
|
46
47
|
} from "./customTree.js";
|
|
47
48
|
import { getUnhydratedContext } from "../createContext.js";
|
|
48
49
|
|
|
@@ -110,40 +111,14 @@ export interface VerboseTreeNode<THandle = IFluidHandle> {
|
|
|
110
111
|
};
|
|
111
112
|
}
|
|
112
113
|
|
|
113
|
-
/**
|
|
114
|
-
* Options for how to interpret a `VerboseTree` when schema information is available.
|
|
115
|
-
* @alpha
|
|
116
|
-
*/
|
|
117
|
-
export interface ParseOptions {
|
|
118
|
-
/**
|
|
119
|
-
* If true, interpret the input keys of object nodes as stored keys.
|
|
120
|
-
* If false, interpret them as property keys.
|
|
121
|
-
* @defaultValue false.
|
|
122
|
-
*/
|
|
123
|
-
readonly useStoredKeys?: boolean;
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
/**
|
|
127
|
-
* Options for how to interpret a `VerboseTree` without relying on schema.
|
|
128
|
-
*/
|
|
129
|
-
export interface SchemalessParseOptions {
|
|
130
|
-
/**
|
|
131
|
-
* Converts stored keys into whatever key the tree is using in its encoding.
|
|
132
|
-
*/
|
|
133
|
-
keyConverter?: {
|
|
134
|
-
parse(type: string, inputKey: string): FieldKey;
|
|
135
|
-
encode(type: string, key: FieldKey): string;
|
|
136
|
-
};
|
|
137
|
-
}
|
|
138
|
-
|
|
139
114
|
/**
|
|
140
115
|
* Use info from `schema` to convert `options` to {@link SchemalessParseOptions}.
|
|
141
116
|
*/
|
|
142
117
|
export function applySchemaToParserOptions(
|
|
143
118
|
schema: ImplicitFieldSchema,
|
|
144
|
-
options:
|
|
119
|
+
options: TreeEncodingOptions,
|
|
145
120
|
): SchemalessParseOptions {
|
|
146
|
-
const config: Required<
|
|
121
|
+
const config: Required<TreeEncodingOptions> = {
|
|
147
122
|
useStoredKeys: false,
|
|
148
123
|
...options,
|
|
149
124
|
};
|
|
@@ -305,9 +280,9 @@ function verboseTreeAdapter(options: SchemalessParseOptions): CursorAdapter<Verb
|
|
|
305
280
|
export function verboseFromCursor(
|
|
306
281
|
reader: ITreeCursor,
|
|
307
282
|
rootSchema: ImplicitAllowedTypes,
|
|
308
|
-
options:
|
|
283
|
+
options: TreeEncodingOptions,
|
|
309
284
|
): VerboseTree {
|
|
310
|
-
const config: Required<
|
|
285
|
+
const config: Required<TreeEncodingOptions> = {
|
|
311
286
|
useStoredKeys: false,
|
|
312
287
|
...options,
|
|
313
288
|
};
|
|
@@ -319,7 +294,7 @@ export function verboseFromCursor(
|
|
|
319
294
|
|
|
320
295
|
function verboseFromCursorInner(
|
|
321
296
|
reader: ITreeCursor,
|
|
322
|
-
options: Required<
|
|
297
|
+
options: Required<TreeEncodingOptions>,
|
|
323
298
|
schema: ReadonlyMap<string, TreeNodeSchema>,
|
|
324
299
|
): VerboseTree {
|
|
325
300
|
const fields = customFromCursor(reader, options, schema, verboseFromCursorInner);
|
|
@@ -7,6 +7,7 @@ import { assert, unreachableCase } from "@fluidframework/core-utils/internal";
|
|
|
7
7
|
import { normalizeFieldSchema, type ImplicitFieldSchema } from "../schemaTypes.js";
|
|
8
8
|
import type {
|
|
9
9
|
SimpleArrayNodeSchema,
|
|
10
|
+
SimpleFieldSchema,
|
|
10
11
|
SimpleLeafNodeSchema,
|
|
11
12
|
SimpleMapNodeSchema,
|
|
12
13
|
SimpleNodeSchema,
|
|
@@ -59,10 +60,14 @@ export function toSimpleTreeSchema(
|
|
|
59
60
|
});
|
|
60
61
|
|
|
61
62
|
return {
|
|
62
|
-
|
|
63
|
-
|
|
63
|
+
root: copySchemaObjects
|
|
64
|
+
? ({
|
|
65
|
+
allowedTypesIdentifiers: normalizedSchema.allowedTypesIdentifiers,
|
|
66
|
+
kind: normalizedSchema.kind,
|
|
67
|
+
metadata: normalizedSchema.metadata,
|
|
68
|
+
} satisfies SimpleFieldSchema)
|
|
69
|
+
: normalizedSchema,
|
|
64
70
|
definitions,
|
|
65
|
-
metadata: normalizedSchema.metadata,
|
|
66
71
|
};
|
|
67
72
|
}
|
|
68
73
|
|
|
@@ -19,7 +19,6 @@ import {
|
|
|
19
19
|
assertFlexTreeEntityNotFreed,
|
|
20
20
|
ContextSlot,
|
|
21
21
|
flexTreeSlot,
|
|
22
|
-
isFreedSymbol,
|
|
23
22
|
LazyEntity,
|
|
24
23
|
TreeStatus,
|
|
25
24
|
treeStatusFromAnchorCache,
|
|
@@ -155,15 +154,20 @@ export class TreeNodeKernel {
|
|
|
155
154
|
changedFields,
|
|
156
155
|
});
|
|
157
156
|
|
|
158
|
-
let
|
|
159
|
-
while (
|
|
160
|
-
const treeNode = unhydratedFlexTreeNodeToTreeNodeInternal.get(
|
|
157
|
+
let unhydratedNode: UnhydratedFlexTreeNode | undefined = innerNode;
|
|
158
|
+
while (unhydratedNode !== undefined) {
|
|
159
|
+
const treeNode = unhydratedFlexTreeNodeToTreeNodeInternal.get(unhydratedNode);
|
|
161
160
|
if (treeNode !== undefined) {
|
|
162
161
|
const kernel = getKernel(treeNode);
|
|
163
162
|
kernel.#unhydratedEvents.value.emit("subtreeChangedAfterBatch");
|
|
164
163
|
}
|
|
165
|
-
|
|
166
|
-
|
|
164
|
+
const parentNode: FlexTreeNode | undefined =
|
|
165
|
+
unhydratedNode.parentField.parent.parent;
|
|
166
|
+
assert(
|
|
167
|
+
parentNode === undefined || parentNode instanceof UnhydratedFlexTreeNode,
|
|
168
|
+
0xb76 /* Unhydrated node's parent should be an unhydrated node */,
|
|
169
|
+
);
|
|
170
|
+
unhydratedNode = parentNode;
|
|
167
171
|
}
|
|
168
172
|
}),
|
|
169
173
|
};
|
|
@@ -243,7 +247,7 @@ export class TreeNodeKernel {
|
|
|
243
247
|
const flex = this.#hydrationState.anchorNode.slots.get(flexTreeSlot);
|
|
244
248
|
if (flex !== undefined) {
|
|
245
249
|
assert(flex instanceof LazyEntity, 0x9b4 /* Unexpected flex node implementation */);
|
|
246
|
-
if (flex
|
|
250
|
+
if (flex.isFreed()) {
|
|
247
251
|
return TreeStatus.Deleted;
|
|
248
252
|
}
|
|
249
253
|
}
|
|
@@ -150,11 +150,24 @@ export class UnhydratedFlexTreeNode implements UnhydratedFlexTreeNode {
|
|
|
150
150
|
public adoptBy(parent: UnhydratedFlexTreeField, index: number): void;
|
|
151
151
|
public adoptBy(parent: UnhydratedFlexTreeField | undefined, index?: number): void {
|
|
152
152
|
if (parent !== undefined) {
|
|
153
|
-
assert(
|
|
154
|
-
this.location === unparentedLocation,
|
|
155
|
-
0x98c /* Node may not be adopted if it already has a parent */,
|
|
156
|
-
);
|
|
157
153
|
assert(index !== undefined, 0xa08 /* Expected index */);
|
|
154
|
+
if (this.location !== unparentedLocation) {
|
|
155
|
+
throw new UsageError("A node may not be inserted if it's already in a tree");
|
|
156
|
+
}
|
|
157
|
+
let unhydratedNode: UnhydratedFlexTreeNode | undefined = parent.parent;
|
|
158
|
+
while (unhydratedNode !== undefined) {
|
|
159
|
+
if (unhydratedNode === this) {
|
|
160
|
+
throw new UsageError(
|
|
161
|
+
"A node may not be inserted into a location that is under itself",
|
|
162
|
+
);
|
|
163
|
+
}
|
|
164
|
+
const parentNode: FlexTreeNode | undefined = unhydratedNode.parentField.parent.parent;
|
|
165
|
+
assert(
|
|
166
|
+
parentNode === undefined || parentNode instanceof UnhydratedFlexTreeNode,
|
|
167
|
+
0xb77 /* Unhydrated node's parent should be an unhydrated node */,
|
|
168
|
+
);
|
|
169
|
+
unhydratedNode = parentNode;
|
|
170
|
+
}
|
|
158
171
|
this.location = { parent, index };
|
|
159
172
|
} else {
|
|
160
173
|
assert(
|
package/src/simple-tree/index.ts
CHANGED
|
@@ -31,6 +31,7 @@ export {
|
|
|
31
31
|
type ViewableTree,
|
|
32
32
|
type TreeViewEvents,
|
|
33
33
|
TreeViewConfiguration,
|
|
34
|
+
TreeViewConfigurationAlpha,
|
|
34
35
|
type ITreeViewConfiguration,
|
|
35
36
|
type SchemaCompatibilityStatus,
|
|
36
37
|
type ITreeConfigurationOptions,
|
|
@@ -70,11 +71,11 @@ export {
|
|
|
70
71
|
type JsonTreeSchema,
|
|
71
72
|
type JsonFieldSchema,
|
|
72
73
|
type JsonLeafSchemaType,
|
|
74
|
+
type TreeSchemaEncodingOptions,
|
|
73
75
|
getJsonSchema,
|
|
74
76
|
getSimpleSchema,
|
|
75
77
|
type VerboseTreeNode,
|
|
76
|
-
type
|
|
77
|
-
type ParseOptions,
|
|
78
|
+
type TreeEncodingOptions,
|
|
78
79
|
type VerboseTree,
|
|
79
80
|
extractPersistedSchema,
|
|
80
81
|
comparePersistedSchema,
|
|
@@ -138,6 +139,7 @@ export {
|
|
|
138
139
|
replaceVerboseTreeHandles,
|
|
139
140
|
type HandleConverter,
|
|
140
141
|
type FieldSchemaAlphaUnsafe,
|
|
142
|
+
type TreeSchema,
|
|
141
143
|
} from "./api/index.js";
|
|
142
144
|
export type {
|
|
143
145
|
SimpleTreeSchema,
|
|
@@ -180,22 +180,14 @@ export interface SimpleFieldSchema {
|
|
|
180
180
|
* @alpha
|
|
181
181
|
* @sealed
|
|
182
182
|
*/
|
|
183
|
-
export interface SimpleTreeSchema
|
|
183
|
+
export interface SimpleTreeSchema {
|
|
184
184
|
/**
|
|
185
|
-
* The
|
|
185
|
+
* The tree field representing the root of the tree.
|
|
186
186
|
*/
|
|
187
|
-
readonly
|
|
188
|
-
|
|
189
|
-
/**
|
|
190
|
-
* The types allowed under the tree root.
|
|
191
|
-
*
|
|
192
|
-
* @remarks Refers to the types by identifier.
|
|
193
|
-
* Can be resolved via {@link SimpleTreeSchema.definitions}.
|
|
194
|
-
*/
|
|
195
|
-
readonly allowedTypesIdentifiers: ReadonlySet<string>;
|
|
187
|
+
readonly root: SimpleFieldSchema;
|
|
196
188
|
|
|
197
189
|
/**
|
|
198
|
-
* The complete set of node schema definitions recursively referenced by the tree's {@link SimpleTreeSchema.
|
|
190
|
+
* The complete set of node schema definitions recursively referenced by the tree's {@link SimpleTreeSchema.root}.
|
|
199
191
|
*
|
|
200
192
|
* @remarks the keys are the schemas' {@link TreeNodeSchemaCore.identifier | identifiers}.
|
|
201
193
|
*/
|