@fluidframework/tree 2.43.0-343119 → 2.43.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +189 -0
- package/api-report/tree.alpha.api.md +13 -4
- package/api-report/tree.beta.api.md +1 -0
- package/api-report/tree.legacy.alpha.api.md +1 -0
- package/api-report/tree.legacy.public.api.md +1 -0
- package/api-report/tree.public.api.md +1 -0
- package/dist/alpha.d.ts +1 -0
- package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts +1 -1
- package/dist/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.d.ts.map +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/dist/shared-tree/schematizingTreeView.js +3 -3
- package/dist/shared-tree/schematizingTreeView.js.map +1 -1
- package/dist/shared-tree/treeAlpha.d.ts +38 -0
- package/dist/shared-tree/treeAlpha.d.ts.map +1 -1
- package/dist/shared-tree/treeAlpha.js +114 -9
- package/dist/shared-tree/treeAlpha.js.map +1 -1
- package/dist/simple-tree/api/configuration.d.ts +15 -3
- package/dist/simple-tree/api/configuration.d.ts.map +1 -1
- package/dist/simple-tree/api/configuration.js +40 -22
- package/dist/simple-tree/api/configuration.js.map +1 -1
- package/dist/simple-tree/api/index.d.ts +1 -1
- package/dist/simple-tree/api/index.d.ts.map +1 -1
- package/dist/simple-tree/api/index.js +4 -4
- package/dist/simple-tree/api/index.js.map +1 -1
- package/dist/simple-tree/api/treeNodeApi.d.ts +3 -0
- package/dist/simple-tree/api/treeNodeApi.d.ts.map +1 -1
- package/dist/simple-tree/api/treeNodeApi.js +1 -1
- package/dist/simple-tree/api/treeNodeApi.js.map +1 -1
- package/dist/simple-tree/core/context.d.ts +3 -3
- package/dist/simple-tree/core/context.d.ts.map +1 -1
- package/dist/simple-tree/core/context.js.map +1 -1
- package/dist/simple-tree/core/getOrCreateNode.d.ts +9 -0
- package/dist/simple-tree/core/getOrCreateNode.d.ts.map +1 -1
- package/dist/simple-tree/core/getOrCreateNode.js +12 -1
- package/dist/simple-tree/core/getOrCreateNode.js.map +1 -1
- package/dist/simple-tree/core/index.d.ts +2 -2
- package/dist/simple-tree/core/index.d.ts.map +1 -1
- package/dist/simple-tree/core/index.js +3 -1
- package/dist/simple-tree/core/index.js.map +1 -1
- package/dist/simple-tree/core/treeNodeKernel.js +1 -1
- package/dist/simple-tree/core/treeNodeKernel.js.map +1 -1
- package/dist/simple-tree/core/treeNodeSchema.d.ts +68 -1
- package/dist/simple-tree/core/treeNodeSchema.d.ts.map +1 -1
- package/dist/simple-tree/core/treeNodeSchema.js +24 -1
- package/dist/simple-tree/core/treeNodeSchema.js.map +1 -1
- package/dist/simple-tree/core/walkSchema.d.ts +3 -3
- package/dist/simple-tree/core/walkSchema.d.ts.map +1 -1
- package/dist/simple-tree/core/walkSchema.js +9 -5
- package/dist/simple-tree/core/walkSchema.js.map +1 -1
- package/dist/simple-tree/createContext.js +1 -1
- package/dist/simple-tree/createContext.js.map +1 -1
- package/dist/simple-tree/getTreeNodeForField.d.ts +1 -1
- package/dist/simple-tree/getTreeNodeForField.d.ts.map +1 -1
- package/dist/simple-tree/getTreeNodeForField.js +3 -3
- package/dist/simple-tree/getTreeNodeForField.js.map +1 -1
- package/dist/simple-tree/index.d.ts +5 -5
- package/dist/simple-tree/index.d.ts.map +1 -1
- package/dist/simple-tree/index.js +8 -5
- package/dist/simple-tree/index.js.map +1 -1
- package/dist/simple-tree/leafNodeSchema.d.ts +2 -1
- package/dist/simple-tree/leafNodeSchema.d.ts.map +1 -1
- package/dist/simple-tree/leafNodeSchema.js +1 -0
- package/dist/simple-tree/leafNodeSchema.js.map +1 -1
- package/dist/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/array/arrayNode.js +18 -15
- package/dist/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
- package/dist/simple-tree/node-kinds/map/mapNode.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/map/mapNode.js +7 -3
- package/dist/simple-tree/node-kinds/map/mapNode.js.map +1 -1
- package/dist/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/object/objectNode.js +9 -6
- package/dist/simple-tree/node-kinds/object/objectNode.js.map +1 -1
- package/dist/simple-tree/schemaTypes.d.ts +13 -27
- package/dist/simple-tree/schemaTypes.d.ts.map +1 -1
- package/dist/simple-tree/schemaTypes.js +45 -39
- package/dist/simple-tree/schemaTypes.js.map +1 -1
- package/dist/simple-tree/toStoredSchema.d.ts +2 -0
- package/dist/simple-tree/toStoredSchema.d.ts.map +1 -1
- package/dist/simple-tree/toStoredSchema.js +2 -0
- package/dist/simple-tree/toStoredSchema.js.map +1 -1
- package/dist/simple-tree/treeNodeValid.d.ts.map +1 -1
- package/dist/simple-tree/treeNodeValid.js +1 -2
- package/dist/simple-tree/treeNodeValid.js.map +1 -1
- package/dist/simple-tree/walkFieldSchema.d.ts.map +1 -1
- package/dist/simple-tree/walkFieldSchema.js +1 -1
- package/dist/simple-tree/walkFieldSchema.js.map +1 -1
- package/lib/alpha.d.ts +1 -0
- package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts +1 -1
- package/lib/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js.map +1 -1
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.d.ts.map +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/lib/shared-tree/schematizingTreeView.js +4 -4
- package/lib/shared-tree/schematizingTreeView.js.map +1 -1
- package/lib/shared-tree/treeAlpha.d.ts +38 -0
- package/lib/shared-tree/treeAlpha.d.ts.map +1 -1
- package/lib/shared-tree/treeAlpha.js +108 -3
- package/lib/shared-tree/treeAlpha.js.map +1 -1
- package/lib/simple-tree/api/configuration.d.ts +15 -3
- package/lib/simple-tree/api/configuration.d.ts.map +1 -1
- package/lib/simple-tree/api/configuration.js +42 -24
- package/lib/simple-tree/api/configuration.js.map +1 -1
- package/lib/simple-tree/api/index.d.ts +1 -1
- 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/treeNodeApi.d.ts +3 -0
- package/lib/simple-tree/api/treeNodeApi.d.ts.map +1 -1
- package/lib/simple-tree/api/treeNodeApi.js +2 -2
- package/lib/simple-tree/api/treeNodeApi.js.map +1 -1
- package/lib/simple-tree/core/context.d.ts +3 -3
- package/lib/simple-tree/core/context.d.ts.map +1 -1
- package/lib/simple-tree/core/context.js.map +1 -1
- package/lib/simple-tree/core/getOrCreateNode.d.ts +9 -0
- package/lib/simple-tree/core/getOrCreateNode.d.ts.map +1 -1
- package/lib/simple-tree/core/getOrCreateNode.js +10 -0
- package/lib/simple-tree/core/getOrCreateNode.js.map +1 -1
- package/lib/simple-tree/core/index.d.ts +2 -2
- package/lib/simple-tree/core/index.d.ts.map +1 -1
- package/lib/simple-tree/core/index.js +2 -2
- package/lib/simple-tree/core/index.js.map +1 -1
- package/lib/simple-tree/core/treeNodeKernel.js +1 -1
- package/lib/simple-tree/core/treeNodeKernel.js.map +1 -1
- package/lib/simple-tree/core/treeNodeSchema.d.ts +68 -1
- package/lib/simple-tree/core/treeNodeSchema.d.ts.map +1 -1
- package/lib/simple-tree/core/treeNodeSchema.js +21 -0
- package/lib/simple-tree/core/treeNodeSchema.js.map +1 -1
- package/lib/simple-tree/core/walkSchema.d.ts +3 -3
- package/lib/simple-tree/core/walkSchema.d.ts.map +1 -1
- package/lib/simple-tree/core/walkSchema.js +9 -5
- package/lib/simple-tree/core/walkSchema.js.map +1 -1
- package/lib/simple-tree/createContext.js +1 -1
- package/lib/simple-tree/createContext.js.map +1 -1
- package/lib/simple-tree/getTreeNodeForField.d.ts +1 -1
- package/lib/simple-tree/getTreeNodeForField.d.ts.map +1 -1
- package/lib/simple-tree/getTreeNodeForField.js +1 -1
- package/lib/simple-tree/getTreeNodeForField.js.map +1 -1
- package/lib/simple-tree/index.d.ts +5 -5
- package/lib/simple-tree/index.d.ts.map +1 -1
- package/lib/simple-tree/index.js +4 -4
- package/lib/simple-tree/index.js.map +1 -1
- package/lib/simple-tree/leafNodeSchema.d.ts +2 -1
- package/lib/simple-tree/leafNodeSchema.d.ts.map +1 -1
- package/lib/simple-tree/leafNodeSchema.js +2 -1
- package/lib/simple-tree/leafNodeSchema.js.map +1 -1
- package/lib/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/array/arrayNode.js +10 -7
- package/lib/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
- package/lib/simple-tree/node-kinds/map/mapNode.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/map/mapNode.js +9 -5
- package/lib/simple-tree/node-kinds/map/mapNode.js.map +1 -1
- package/lib/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/object/objectNode.js +11 -8
- package/lib/simple-tree/node-kinds/object/objectNode.js.map +1 -1
- package/lib/simple-tree/schemaTypes.d.ts +13 -27
- package/lib/simple-tree/schemaTypes.d.ts.map +1 -1
- package/lib/simple-tree/schemaTypes.js +42 -35
- package/lib/simple-tree/schemaTypes.js.map +1 -1
- package/lib/simple-tree/toStoredSchema.d.ts +2 -0
- package/lib/simple-tree/toStoredSchema.d.ts.map +1 -1
- package/lib/simple-tree/toStoredSchema.js +2 -0
- package/lib/simple-tree/toStoredSchema.js.map +1 -1
- package/lib/simple-tree/treeNodeValid.d.ts.map +1 -1
- package/lib/simple-tree/treeNodeValid.js +1 -2
- package/lib/simple-tree/treeNodeValid.js.map +1 -1
- package/lib/simple-tree/walkFieldSchema.d.ts.map +1 -1
- package/lib/simple-tree/walkFieldSchema.js +1 -1
- package/lib/simple-tree/walkFieldSchema.js.map +1 -1
- package/package.json +22 -22
- package/src/feature-libraries/flex-tree/flexTreeTypes.ts +1 -1
- package/src/index.ts +1 -0
- package/src/packageVersion.ts +1 -1
- package/src/shared-tree/schematizingTreeView.ts +8 -5
- package/src/shared-tree/treeAlpha.ts +188 -3
- package/src/simple-tree/api/configuration.ts +59 -27
- package/src/simple-tree/api/index.ts +3 -3
- package/src/simple-tree/api/treeNodeApi.ts +5 -2
- package/src/simple-tree/core/context.ts +3 -3
- package/src/simple-tree/core/getOrCreateNode.ts +14 -0
- package/src/simple-tree/core/index.ts +7 -1
- package/src/simple-tree/core/treeNodeKernel.ts +1 -1
- package/src/simple-tree/core/treeNodeSchema.ts +113 -1
- package/src/simple-tree/core/walkSchema.ts +16 -7
- package/src/simple-tree/createContext.ts +1 -1
- package/src/simple-tree/getTreeNodeForField.ts +3 -1
- package/src/simple-tree/index.ts +9 -5
- package/src/simple-tree/leafNodeSchema.ts +7 -1
- package/src/simple-tree/node-kinds/array/arrayNode.ts +15 -9
- package/src/simple-tree/node-kinds/map/mapNode.ts +10 -4
- package/src/simple-tree/node-kinds/object/objectNode.ts +20 -11
- package/src/simple-tree/schemaTypes.ts +55 -64
- package/src/simple-tree/toStoredSchema.ts +2 -0
- package/src/simple-tree/treeNodeValid.ts +1 -1
- package/src/simple-tree/walkFieldSchema.ts +5 -1
|
@@ -32,8 +32,10 @@ import type {
|
|
|
32
32
|
TreeNodeSchemaCore,
|
|
33
33
|
TreeNodeSchemaNonClass,
|
|
34
34
|
UnhydratedFlexTreeNode,
|
|
35
|
+
AnnotatedAllowedType,
|
|
36
|
+
NormalizedAnnotatedAllowedTypes,
|
|
35
37
|
} from "./core/index.js";
|
|
36
|
-
import { inPrototypeChain } from "./core/index.js";
|
|
38
|
+
import { inPrototypeChain, isAnnotatedAllowedTypes } from "./core/index.js";
|
|
37
39
|
import { isLazy, type FlexListToUnion, type LazyItem } from "./flexList.js";
|
|
38
40
|
import { LeafNodeSchema } from "./leafNodeSchema.js";
|
|
39
41
|
import type { SimpleFieldSchema, SimpleObjectFieldSchema } from "./simpleSchema.js";
|
|
@@ -106,17 +108,6 @@ export interface AnnotatedAllowedTypes {
|
|
|
106
108
|
readonly types: readonly (AnnotatedAllowedType | LazyItem<TreeNodeSchema>)[];
|
|
107
109
|
}
|
|
108
110
|
|
|
109
|
-
/**
|
|
110
|
-
* Checks if the input is an {@link AnnotatedAllowedTypes}.
|
|
111
|
-
*/
|
|
112
|
-
export function isAnnotatedAllowedTypes(
|
|
113
|
-
allowedTypes: ImplicitAnnotatedAllowedTypes,
|
|
114
|
-
): allowedTypes is AnnotatedAllowedTypes {
|
|
115
|
-
return (
|
|
116
|
-
typeof allowedTypes === "object" && "metadata" in allowedTypes && "types" in allowedTypes
|
|
117
|
-
);
|
|
118
|
-
}
|
|
119
|
-
|
|
120
111
|
/**
|
|
121
112
|
* Annotations that apply to a set of allowed types.
|
|
122
113
|
* @remarks
|
|
@@ -130,21 +121,6 @@ export interface AllowedTypesMetadata {
|
|
|
130
121
|
readonly custom?: unknown;
|
|
131
122
|
}
|
|
132
123
|
|
|
133
|
-
/**
|
|
134
|
-
* Stores annotations for an individual allowed type.
|
|
135
|
-
* @alpha
|
|
136
|
-
*/
|
|
137
|
-
export interface AnnotatedAllowedType<T extends TreeNodeSchema = TreeNodeSchema> {
|
|
138
|
-
/**
|
|
139
|
-
* Annotations for the allowed type.
|
|
140
|
-
*/
|
|
141
|
-
readonly metadata: AllowedTypeMetadata;
|
|
142
|
-
/**
|
|
143
|
-
* The allowed type the annotations apply to in a particular schema.
|
|
144
|
-
*/
|
|
145
|
-
readonly type: LazyItem<T>;
|
|
146
|
-
}
|
|
147
|
-
|
|
148
124
|
/**
|
|
149
125
|
* Checks if the given allowed type is annotated with {@link AllowedTypeMetadata}.
|
|
150
126
|
*/
|
|
@@ -207,7 +183,10 @@ export enum FieldKind {
|
|
|
207
183
|
* If an explicit stored key was specified in the schema, it will be used.
|
|
208
184
|
* Otherwise, the stored key is the same as the property key.
|
|
209
185
|
*/
|
|
210
|
-
export function getStoredKey(
|
|
186
|
+
export function getStoredKey(
|
|
187
|
+
propertyKey: string,
|
|
188
|
+
fieldSchema: ImplicitAnnotatedFieldSchema,
|
|
189
|
+
): FieldKey {
|
|
211
190
|
return brand(getExplicitStoredKey(fieldSchema) ?? propertyKey);
|
|
212
191
|
}
|
|
213
192
|
|
|
@@ -215,7 +194,9 @@ export function getStoredKey(propertyKey: string, fieldSchema: ImplicitFieldSche
|
|
|
215
194
|
* Gets the {@link FieldProps.key | stored key} specified by the schema, if one was explicitly specified.
|
|
216
195
|
* Otherwise, returns undefined.
|
|
217
196
|
*/
|
|
218
|
-
export function getExplicitStoredKey(
|
|
197
|
+
export function getExplicitStoredKey(
|
|
198
|
+
fieldSchema: ImplicitAnnotatedFieldSchema,
|
|
199
|
+
): string | undefined {
|
|
219
200
|
return fieldSchema instanceof FieldSchema ? fieldSchema.props?.key : undefined;
|
|
220
201
|
}
|
|
221
202
|
|
|
@@ -541,7 +522,7 @@ export class FieldSchemaAlpha<
|
|
|
541
522
|
implements SimpleFieldSchema
|
|
542
523
|
{
|
|
543
524
|
private readonly lazyIdentifiers: Lazy<ReadonlySet<string>>;
|
|
544
|
-
private readonly lazyAnnotatedTypes: Lazy<
|
|
525
|
+
private readonly lazyAnnotatedTypes: Lazy<NormalizedAnnotatedAllowedTypes>;
|
|
545
526
|
private readonly propsAlpha: FieldPropsAlpha<TCustomMetadata> | undefined;
|
|
546
527
|
|
|
547
528
|
/**
|
|
@@ -586,7 +567,7 @@ export class FieldSchemaAlpha<
|
|
|
586
567
|
? annotatedAllowedTypes.metadata
|
|
587
568
|
: {};
|
|
588
569
|
this.lazyAnnotatedTypes = new Lazy(() =>
|
|
589
|
-
|
|
570
|
+
normalizeAnnotatedAllowedTypes(annotatedAllowedTypes),
|
|
590
571
|
);
|
|
591
572
|
this.lazyIdentifiers = new Lazy(
|
|
592
573
|
() => new Set([...this.allowedTypeSet].map((t) => t.identifier)),
|
|
@@ -602,7 +583,7 @@ export class FieldSchemaAlpha<
|
|
|
602
583
|
* What types of tree nodes are allowed in this field and their annotations.
|
|
603
584
|
* @remarks Counterpart to {@link FieldSchemaAlpha.annotatedAllowedTypes}, with any lazy definitions evaluated.
|
|
604
585
|
*/
|
|
605
|
-
public get
|
|
586
|
+
public get annotatedAllowedTypesNormalized(): NormalizedAnnotatedAllowedTypes {
|
|
606
587
|
return this.lazyAnnotatedTypes.value;
|
|
607
588
|
}
|
|
608
589
|
}
|
|
@@ -671,8 +652,8 @@ export function normalizeAllowedTypes(
|
|
|
671
652
|
* Normalizes an allowed type to an {@link AnnotatedAllowedType}, by adding empty annotations if they don't already exist.
|
|
672
653
|
*/
|
|
673
654
|
export function normalizeToAnnotatedAllowedType<T extends TreeNodeSchema>(
|
|
674
|
-
type: T | AnnotatedAllowedType<T
|
|
675
|
-
): AnnotatedAllowedType<T> {
|
|
655
|
+
type: T | AnnotatedAllowedType<T> | AnnotatedAllowedType<LazyItem<T>>,
|
|
656
|
+
): AnnotatedAllowedType<T> | AnnotatedAllowedType<LazyItem<T>> {
|
|
676
657
|
return isAnnotatedAllowedType(type)
|
|
677
658
|
? type
|
|
678
659
|
: {
|
|
@@ -681,6 +662,46 @@ export function normalizeToAnnotatedAllowedType<T extends TreeNodeSchema>(
|
|
|
681
662
|
};
|
|
682
663
|
}
|
|
683
664
|
|
|
665
|
+
/**
|
|
666
|
+
* Normalizes a {@link ImplicitAnnotatedAllowedTypes} to a set of {@link AnnotatedAllowedSchema}s, by eagerly evaluating any
|
|
667
|
+
* lazy schema declarations and adding empty metadata if it doesn't already exist.
|
|
668
|
+
*
|
|
669
|
+
* @remarks Note: this must only be called after all required schemas have been declared, otherwise evaluation of
|
|
670
|
+
* recursive schemas may fail.
|
|
671
|
+
*/
|
|
672
|
+
export function normalizeAnnotatedAllowedTypes(
|
|
673
|
+
types: ImplicitAnnotatedAllowedTypes,
|
|
674
|
+
): NormalizedAnnotatedAllowedTypes {
|
|
675
|
+
const typesWithoutAnnotation = isAnnotatedAllowedTypes(types) ? types.types : types;
|
|
676
|
+
const annotatedTypes: AnnotatedAllowedType<TreeNodeSchema>[] = [];
|
|
677
|
+
if (isReadonlyArray(typesWithoutAnnotation)) {
|
|
678
|
+
for (const annotatedType of typesWithoutAnnotation) {
|
|
679
|
+
if (isAnnotatedAllowedType(annotatedType)) {
|
|
680
|
+
annotatedTypes.push({
|
|
681
|
+
type: evaluateLazySchema(annotatedType.type),
|
|
682
|
+
metadata: annotatedType.metadata,
|
|
683
|
+
});
|
|
684
|
+
} else {
|
|
685
|
+
annotatedTypes.push({ type: evaluateLazySchema(annotatedType), metadata: {} });
|
|
686
|
+
}
|
|
687
|
+
}
|
|
688
|
+
} else {
|
|
689
|
+
if (isAnnotatedAllowedType(typesWithoutAnnotation)) {
|
|
690
|
+
annotatedTypes.push({
|
|
691
|
+
type: evaluateLazySchema(typesWithoutAnnotation.type),
|
|
692
|
+
metadata: typesWithoutAnnotation.metadata,
|
|
693
|
+
});
|
|
694
|
+
} else {
|
|
695
|
+
annotatedTypes.push({ type: evaluateLazySchema(typesWithoutAnnotation), metadata: {} });
|
|
696
|
+
}
|
|
697
|
+
}
|
|
698
|
+
|
|
699
|
+
return {
|
|
700
|
+
metadata: isAnnotatedAllowedTypes(types) ? types.metadata : {},
|
|
701
|
+
types: annotatedTypes,
|
|
702
|
+
};
|
|
703
|
+
}
|
|
704
|
+
|
|
684
705
|
/**
|
|
685
706
|
* Converts an {@link ImplicitAnnotatedAllowedTypes} to an {@link ImplicitAllowedTypes}s, by removing
|
|
686
707
|
* any annotations.
|
|
@@ -719,36 +740,6 @@ export function unannotateSchemaRecord<
|
|
|
719
740
|
) as UnannotateSchemaRecord<Schema>;
|
|
720
741
|
}
|
|
721
742
|
|
|
722
|
-
/**
|
|
723
|
-
* Converts annotated allowed types into a mapping between the type schema and their associated annotations.
|
|
724
|
-
*/
|
|
725
|
-
export function extractAnnotationsFromAllowedTypes(
|
|
726
|
-
types: ImplicitAnnotatedAllowedTypes,
|
|
727
|
-
): ReadonlyMap<TreeNodeSchema, AllowedTypeMetadata> {
|
|
728
|
-
const typesWithoutAnnotation = isAnnotatedAllowedTypes(types) ? types.types : types;
|
|
729
|
-
const annotations = new Map<TreeNodeSchema, AllowedTypeMetadata>();
|
|
730
|
-
if (isReadonlyArray(typesWithoutAnnotation)) {
|
|
731
|
-
for (const annotatedType of typesWithoutAnnotation) {
|
|
732
|
-
if (isAnnotatedAllowedType(annotatedType)) {
|
|
733
|
-
annotations.set(evaluateLazySchema(annotatedType.type), annotatedType.metadata);
|
|
734
|
-
} else {
|
|
735
|
-
annotations.set(evaluateLazySchema(annotatedType), {});
|
|
736
|
-
}
|
|
737
|
-
}
|
|
738
|
-
} else {
|
|
739
|
-
if (isAnnotatedAllowedType(typesWithoutAnnotation)) {
|
|
740
|
-
annotations.set(
|
|
741
|
-
evaluateLazySchema(typesWithoutAnnotation.type),
|
|
742
|
-
typesWithoutAnnotation.metadata,
|
|
743
|
-
);
|
|
744
|
-
} else {
|
|
745
|
-
annotations.set(evaluateLazySchema(typesWithoutAnnotation), {});
|
|
746
|
-
}
|
|
747
|
-
}
|
|
748
|
-
|
|
749
|
-
return annotations;
|
|
750
|
-
}
|
|
751
|
-
|
|
752
743
|
/**
|
|
753
744
|
* Returns true if the given {@link ImplicitFieldSchema} are equivalent, otherwise false.
|
|
754
745
|
* @remarks Two ImplicitFieldSchema are considered equivalent if all of the following are true:
|
|
@@ -37,6 +37,8 @@ const viewToStoredCache = new WeakMap<ImplicitFieldSchema, TreeStoredSchema>();
|
|
|
37
37
|
|
|
38
38
|
/**
|
|
39
39
|
* Converts a {@link ImplicitFieldSchema} into a {@link TreeStoredSchema}.
|
|
40
|
+
* @throws
|
|
41
|
+
* Throws a `UsageError` if multiple schemas are encountered with the same identifier.
|
|
40
42
|
*/
|
|
41
43
|
export function toStoredSchema(root: ImplicitFieldSchema): TreeStoredSchema {
|
|
42
44
|
return getOrCreate(viewToStoredCache, root, () => {
|
|
@@ -20,8 +20,8 @@ import {
|
|
|
20
20
|
type InnerNode,
|
|
21
21
|
type Context,
|
|
22
22
|
type UnhydratedFlexTreeNode,
|
|
23
|
+
getSimpleNodeSchemaFromInnerNode,
|
|
23
24
|
} from "./core/index.js";
|
|
24
|
-
import { getSimpleNodeSchemaFromInnerNode } from "./core/index.js";
|
|
25
25
|
import { markEager } from "./flexList.js";
|
|
26
26
|
|
|
27
27
|
/**
|
|
@@ -14,5 +14,9 @@ export function walkFieldSchema(
|
|
|
14
14
|
visitor: SchemaVisitor,
|
|
15
15
|
visitedSet: Set<TreeNodeSchema> = new Set(),
|
|
16
16
|
): void {
|
|
17
|
-
walkAllowedTypes(
|
|
17
|
+
walkAllowedTypes(
|
|
18
|
+
normalizeFieldSchema(schema).annotatedAllowedTypesNormalized,
|
|
19
|
+
visitor,
|
|
20
|
+
visitedSet,
|
|
21
|
+
);
|
|
18
22
|
}
|