@fluidframework/tree 2.42.0 → 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 +72 -25
- package/api-report/tree.beta.api.md +34 -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 +12 -6
- package/dist/beta.d.ts +6 -1
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +5 -2
- package/dist/core/index.js.map +1 -1
- package/dist/core/schema-stored/formatV2.d.ts +80 -0
- package/dist/core/schema-stored/formatV2.d.ts.map +1 -0
- package/dist/core/schema-stored/formatV2.js +55 -0
- package/dist/core/schema-stored/formatV2.js.map +1 -0
- package/dist/core/schema-stored/index.d.ts +3 -1
- package/dist/core/schema-stored/index.d.ts.map +1 -1
- package/dist/core/schema-stored/index.js +5 -2
- package/dist/core/schema-stored/index.js.map +1 -1
- package/dist/core/schema-stored/schema.d.ts +49 -17
- package/dist/core/schema-stored/schema.d.ts.map +1 -1
- package/dist/core/schema-stored/schema.js +65 -22
- package/dist/core/schema-stored/schema.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.d.ts +9 -7
- package/dist/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js +13 -9
- package/dist/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/compressedEncode.d.ts +3 -3
- package/dist/feature-libraries/chunked-forest/codec/compressedEncode.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js +6 -6
- package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/nodeShape.d.ts +1 -1
- package/dist/feature-libraries/chunked-forest/codec/nodeShape.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/nodeShape.js +3 -3
- package/dist/feature-libraries/chunked-forest/codec/nodeShape.js.map +1 -1
- package/dist/feature-libraries/detachedFieldIndexSummarizer.d.ts +8 -3
- package/dist/feature-libraries/detachedFieldIndexSummarizer.d.ts.map +1 -1
- package/dist/feature-libraries/detachedFieldIndexSummarizer.js +2 -5
- package/dist/feature-libraries/detachedFieldIndexSummarizer.js.map +1 -1
- package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts +24 -25
- package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
- package/dist/feature-libraries/flex-tree/index.d.ts +0 -1
- package/dist/feature-libraries/flex-tree/index.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/index.js +1 -7
- package/dist/feature-libraries/flex-tree/index.js.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyEntity.d.ts +2 -2
- package/dist/feature-libraries/flex-tree/lazyEntity.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyEntity.js +3 -0
- package/dist/feature-libraries/flex-tree/lazyEntity.js.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyField.d.ts +1 -2
- package/dist/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyField.js +2 -5
- package/dist/feature-libraries/flex-tree/lazyField.js.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyNode.d.ts +5 -5
- package/dist/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyNode.js +15 -7
- package/dist/feature-libraries/flex-tree/lazyNode.js.map +1 -1
- package/dist/feature-libraries/forest-summary/forestSummarizer.d.ts +8 -3
- package/dist/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
- package/dist/feature-libraries/forest-summary/forestSummarizer.js +2 -5
- package/dist/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
- package/dist/feature-libraries/index.d.ts +2 -2
- 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/feature-libraries/mapTreeCursor.d.ts +16 -2
- package/dist/feature-libraries/mapTreeCursor.d.ts.map +1 -1
- package/dist/feature-libraries/mapTreeCursor.js.map +1 -1
- package/dist/feature-libraries/modular-schema/fieldKindWithEditor.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/fieldKindWithEditor.js +2 -0
- package/dist/feature-libraries/modular-schema/fieldKindWithEditor.js.map +1 -1
- package/dist/feature-libraries/object-forest/objectForest.d.ts.map +1 -1
- package/dist/feature-libraries/object-forest/objectForest.js +2 -0
- package/dist/feature-libraries/object-forest/objectForest.js.map +1 -1
- package/dist/feature-libraries/schema-edits/schemaChangeCodecs.d.ts.map +1 -1
- package/dist/feature-libraries/schema-edits/schemaChangeCodecs.js +8 -4
- package/dist/feature-libraries/schema-edits/schemaChangeCodecs.js.map +1 -1
- package/dist/feature-libraries/schema-edits/schemaChangeFormat.d.ts +2 -36
- package/dist/feature-libraries/schema-edits/schemaChangeFormat.d.ts.map +1 -1
- package/dist/feature-libraries/schema-edits/schemaChangeFormat.js +3 -3
- package/dist/feature-libraries/schema-edits/schemaChangeFormat.js.map +1 -1
- package/dist/feature-libraries/schema-index/codec.d.ts.map +1 -1
- package/dist/feature-libraries/schema-index/codec.js +59 -9
- package/dist/feature-libraries/schema-index/codec.js.map +1 -1
- package/dist/feature-libraries/schema-index/formatV1.d.ts +1 -1
- package/dist/feature-libraries/schema-index/formatV2.d.ts +42 -0
- package/dist/feature-libraries/schema-index/formatV2.d.ts.map +1 -0
- package/dist/feature-libraries/schema-index/formatV2.js +26 -0
- package/dist/feature-libraries/schema-index/formatV2.js.map +1 -0
- package/dist/feature-libraries/schema-index/index.d.ts +2 -1
- package/dist/feature-libraries/schema-index/index.d.ts.map +1 -1
- package/dist/feature-libraries/schema-index/index.js +4 -2
- package/dist/feature-libraries/schema-index/index.js.map +1 -1
- package/dist/feature-libraries/schema-index/schemaSummarizer.d.ts +7 -2
- package/dist/feature-libraries/schema-index/schemaSummarizer.d.ts.map +1 -1
- package/dist/feature-libraries/schema-index/schemaSummarizer.js +6 -6
- package/dist/feature-libraries/schema-index/schemaSummarizer.js.map +1 -1
- package/dist/index.d.ts +2 -2
- 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.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/shared-tree/schematizeTree.d.ts.map +1 -1
- package/dist/shared-tree/schematizeTree.js +1 -0
- package/dist/shared-tree/schematizeTree.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/sharedTree.d.ts +5 -1
- package/dist/shared-tree/sharedTree.d.ts.map +1 -1
- package/dist/shared-tree/sharedTree.js +34 -5
- package/dist/shared-tree/sharedTree.js.map +1 -1
- package/dist/shared-tree/treeAlpha.d.ts +39 -1
- package/dist/shared-tree/treeAlpha.d.ts.map +1 -1
- package/dist/shared-tree/treeAlpha.js +117 -11
- package/dist/shared-tree/treeAlpha.js.map +1 -1
- package/dist/shared-tree-core/editManagerSummarizer.d.ts +8 -3
- package/dist/shared-tree-core/editManagerSummarizer.d.ts.map +1 -1
- package/dist/shared-tree-core/editManagerSummarizer.js +2 -5
- package/dist/shared-tree-core/editManagerSummarizer.js.map +1 -1
- package/dist/shared-tree-core/sharedTreeCore.d.ts +18 -7
- package/dist/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
- package/dist/shared-tree-core/sharedTreeCore.js +15 -2
- package/dist/shared-tree-core/sharedTreeCore.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/schemaCompatibilityTester.js +1 -1
- package/dist/simple-tree/api/schemaCompatibilityTester.js.map +1 -1
- package/dist/simple-tree/api/schemaCreationUtilities.d.ts +3 -3
- package/dist/simple-tree/api/schemaCreationUtilities.js +3 -3
- package/dist/simple-tree/api/schemaCreationUtilities.js.map +1 -1
- package/dist/simple-tree/api/schemaFactory.d.ts +15 -11
- package/dist/simple-tree/api/schemaFactory.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaFactory.js +4 -0
- package/dist/simple-tree/api/schemaFactory.js.map +1 -1
- package/dist/simple-tree/api/schemaFactoryAlpha.d.ts +41 -11
- package/dist/simple-tree/api/schemaFactoryAlpha.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaFactoryAlpha.js +31 -4
- package/dist/simple-tree/api/schemaFactoryAlpha.js.map +1 -1
- package/dist/simple-tree/api/storedSchema.js +2 -2
- package/dist/simple-tree/api/storedSchema.js.map +1 -1
- package/dist/simple-tree/api/treeChangeEvents.d.ts +8 -3
- package/dist/simple-tree/api/treeChangeEvents.d.ts.map +1 -1
- package/dist/simple-tree/api/treeChangeEvents.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/api/viewSchemaToSimpleSchema.d.ts.map +1 -1
- package/dist/simple-tree/api/viewSchemaToSimpleSchema.js +5 -0
- package/dist/simple-tree/api/viewSchemaToSimpleSchema.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 +2 -2
- 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/unhydratedFlexTree.d.ts +5 -9
- package/dist/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -1
- package/dist/simple-tree/core/unhydratedFlexTree.js +12 -31
- package/dist/simple-tree/core/unhydratedFlexTree.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 +6 -6
- 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 +4 -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 +3 -1
- package/dist/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/array/arrayNode.js +21 -16
- package/dist/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
- package/dist/simple-tree/node-kinds/map/mapNode.d.ts +3 -2
- package/dist/simple-tree/node-kinds/map/mapNode.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/map/mapNode.js +11 -5
- package/dist/simple-tree/node-kinds/map/mapNode.js.map +1 -1
- package/dist/simple-tree/node-kinds/object/objectNode.d.ts +3 -2
- package/dist/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/object/objectNode.js +12 -7
- package/dist/simple-tree/node-kinds/object/objectNode.js.map +1 -1
- package/dist/simple-tree/prepareForInsertion.d.ts.map +1 -1
- package/dist/simple-tree/prepareForInsertion.js +5 -1
- package/dist/simple-tree/prepareForInsertion.js.map +1 -1
- package/dist/simple-tree/schemaTypes.d.ts +63 -30
- package/dist/simple-tree/schemaTypes.d.ts.map +1 -1
- package/dist/simple-tree/schemaTypes.js +73 -40
- package/dist/simple-tree/schemaTypes.js.map +1 -1
- package/dist/simple-tree/simpleSchema.d.ts +22 -4
- package/dist/simple-tree/simpleSchema.d.ts.map +1 -1
- package/dist/simple-tree/simpleSchema.js.map +1 -1
- package/dist/simple-tree/toStoredSchema.d.ts +4 -0
- package/dist/simple-tree/toStoredSchema.d.ts.map +1 -1
- package/dist/simple-tree/toStoredSchema.js +15 -4
- 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/dist/tableSchema.d.ts +1 -1
- package/dist/util/typeUtils.d.ts +2 -2
- package/dist/util/typeUtils.js.map +1 -1
- package/dist/util/utils.d.ts +2 -0
- package/dist/util/utils.d.ts.map +1 -1
- package/dist/util/utils.js.map +1 -1
- package/lib/alpha.d.ts +12 -6
- package/lib/beta.d.ts +6 -1
- package/lib/core/index.d.ts +1 -1
- package/lib/core/index.d.ts.map +1 -1
- package/lib/core/index.js +1 -1
- package/lib/core/index.js.map +1 -1
- package/lib/core/schema-stored/formatV2.d.ts +80 -0
- package/lib/core/schema-stored/formatV2.d.ts.map +1 -0
- package/lib/core/schema-stored/formatV2.js +52 -0
- package/lib/core/schema-stored/formatV2.js.map +1 -0
- package/lib/core/schema-stored/index.d.ts +3 -1
- package/lib/core/schema-stored/index.d.ts.map +1 -1
- package/lib/core/schema-stored/index.js +3 -1
- package/lib/core/schema-stored/index.js.map +1 -1
- package/lib/core/schema-stored/schema.d.ts +49 -17
- package/lib/core/schema-stored/schema.d.ts.map +1 -1
- package/lib/core/schema-stored/schema.js +63 -21
- package/lib/core/schema-stored/schema.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.d.ts +9 -7
- package/lib/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js +11 -7
- package/lib/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/compressedEncode.d.ts +3 -3
- package/lib/feature-libraries/chunked-forest/codec/compressedEncode.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js +7 -7
- package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/nodeShape.d.ts +1 -1
- package/lib/feature-libraries/chunked-forest/codec/nodeShape.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/nodeShape.js +3 -3
- package/lib/feature-libraries/chunked-forest/codec/nodeShape.js.map +1 -1
- package/lib/feature-libraries/detachedFieldIndexSummarizer.d.ts +8 -3
- package/lib/feature-libraries/detachedFieldIndexSummarizer.d.ts.map +1 -1
- package/lib/feature-libraries/detachedFieldIndexSummarizer.js +2 -5
- package/lib/feature-libraries/detachedFieldIndexSummarizer.js.map +1 -1
- package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts +24 -25
- package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
- package/lib/feature-libraries/flex-tree/index.d.ts +0 -1
- package/lib/feature-libraries/flex-tree/index.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/index.js +0 -1
- package/lib/feature-libraries/flex-tree/index.js.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyEntity.d.ts +2 -2
- package/lib/feature-libraries/flex-tree/lazyEntity.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyEntity.js +3 -0
- package/lib/feature-libraries/flex-tree/lazyEntity.js.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyField.d.ts +1 -2
- package/lib/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyField.js +3 -6
- package/lib/feature-libraries/flex-tree/lazyField.js.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyNode.d.ts +5 -5
- package/lib/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyNode.js +15 -7
- package/lib/feature-libraries/flex-tree/lazyNode.js.map +1 -1
- package/lib/feature-libraries/forest-summary/forestSummarizer.d.ts +8 -3
- package/lib/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
- package/lib/feature-libraries/forest-summary/forestSummarizer.js +2 -5
- package/lib/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
- package/lib/feature-libraries/index.d.ts +2 -2
- 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/feature-libraries/mapTreeCursor.d.ts +16 -2
- package/lib/feature-libraries/mapTreeCursor.d.ts.map +1 -1
- package/lib/feature-libraries/mapTreeCursor.js.map +1 -1
- package/lib/feature-libraries/modular-schema/fieldKindWithEditor.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/fieldKindWithEditor.js +2 -0
- package/lib/feature-libraries/modular-schema/fieldKindWithEditor.js.map +1 -1
- package/lib/feature-libraries/object-forest/objectForest.d.ts.map +1 -1
- package/lib/feature-libraries/object-forest/objectForest.js +2 -0
- package/lib/feature-libraries/object-forest/objectForest.js.map +1 -1
- package/lib/feature-libraries/schema-edits/schemaChangeCodecs.d.ts.map +1 -1
- package/lib/feature-libraries/schema-edits/schemaChangeCodecs.js +8 -4
- package/lib/feature-libraries/schema-edits/schemaChangeCodecs.js.map +1 -1
- package/lib/feature-libraries/schema-edits/schemaChangeFormat.d.ts +2 -36
- package/lib/feature-libraries/schema-edits/schemaChangeFormat.d.ts.map +1 -1
- package/lib/feature-libraries/schema-edits/schemaChangeFormat.js +3 -3
- package/lib/feature-libraries/schema-edits/schemaChangeFormat.js.map +1 -1
- package/lib/feature-libraries/schema-index/codec.d.ts.map +1 -1
- package/lib/feature-libraries/schema-index/codec.js +60 -10
- package/lib/feature-libraries/schema-index/codec.js.map +1 -1
- package/lib/feature-libraries/schema-index/formatV1.d.ts +1 -1
- package/lib/feature-libraries/schema-index/formatV2.d.ts +42 -0
- package/lib/feature-libraries/schema-index/formatV2.d.ts.map +1 -0
- package/lib/feature-libraries/schema-index/formatV2.js +23 -0
- package/lib/feature-libraries/schema-index/formatV2.js.map +1 -0
- package/lib/feature-libraries/schema-index/index.d.ts +2 -1
- package/lib/feature-libraries/schema-index/index.d.ts.map +1 -1
- package/lib/feature-libraries/schema-index/index.js +2 -1
- package/lib/feature-libraries/schema-index/index.js.map +1 -1
- package/lib/feature-libraries/schema-index/schemaSummarizer.d.ts +7 -2
- package/lib/feature-libraries/schema-index/schemaSummarizer.d.ts.map +1 -1
- package/lib/feature-libraries/schema-index/schemaSummarizer.js +6 -6
- package/lib/feature-libraries/schema-index/schemaSummarizer.js.map +1 -1
- package/lib/index.d.ts +2 -2
- 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.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/shared-tree/schematizeTree.d.ts.map +1 -1
- package/lib/shared-tree/schematizeTree.js +1 -0
- package/lib/shared-tree/schematizeTree.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/sharedTree.d.ts +5 -1
- package/lib/shared-tree/sharedTree.d.ts.map +1 -1
- package/lib/shared-tree/sharedTree.js +34 -5
- package/lib/shared-tree/sharedTree.js.map +1 -1
- package/lib/shared-tree/treeAlpha.d.ts +39 -1
- package/lib/shared-tree/treeAlpha.d.ts.map +1 -1
- package/lib/shared-tree/treeAlpha.js +111 -5
- package/lib/shared-tree/treeAlpha.js.map +1 -1
- package/lib/shared-tree-core/editManagerSummarizer.d.ts +8 -3
- package/lib/shared-tree-core/editManagerSummarizer.d.ts.map +1 -1
- package/lib/shared-tree-core/editManagerSummarizer.js +2 -5
- package/lib/shared-tree-core/editManagerSummarizer.js.map +1 -1
- package/lib/shared-tree-core/sharedTreeCore.d.ts +18 -7
- package/lib/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
- package/lib/shared-tree-core/sharedTreeCore.js +15 -2
- package/lib/shared-tree-core/sharedTreeCore.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/schemaCompatibilityTester.js +1 -1
- package/lib/simple-tree/api/schemaCompatibilityTester.js.map +1 -1
- package/lib/simple-tree/api/schemaCreationUtilities.d.ts +3 -3
- package/lib/simple-tree/api/schemaCreationUtilities.js +3 -3
- package/lib/simple-tree/api/schemaCreationUtilities.js.map +1 -1
- package/lib/simple-tree/api/schemaFactory.d.ts +15 -11
- package/lib/simple-tree/api/schemaFactory.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaFactory.js +4 -0
- package/lib/simple-tree/api/schemaFactory.js.map +1 -1
- package/lib/simple-tree/api/schemaFactoryAlpha.d.ts +41 -11
- package/lib/simple-tree/api/schemaFactoryAlpha.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaFactoryAlpha.js +31 -4
- package/lib/simple-tree/api/schemaFactoryAlpha.js.map +1 -1
- package/lib/simple-tree/api/storedSchema.js +2 -2
- package/lib/simple-tree/api/storedSchema.js.map +1 -1
- package/lib/simple-tree/api/treeChangeEvents.d.ts +8 -3
- package/lib/simple-tree/api/treeChangeEvents.d.ts.map +1 -1
- package/lib/simple-tree/api/treeChangeEvents.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/api/viewSchemaToSimpleSchema.d.ts.map +1 -1
- package/lib/simple-tree/api/viewSchemaToSimpleSchema.js +5 -0
- package/lib/simple-tree/api/viewSchemaToSimpleSchema.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 +2 -2
- 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/unhydratedFlexTree.d.ts +5 -9
- package/lib/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -1
- package/lib/simple-tree/core/unhydratedFlexTree.js +15 -34
- package/lib/simple-tree/core/unhydratedFlexTree.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 +6 -6
- 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 +4 -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 +3 -1
- package/lib/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/array/arrayNode.js +13 -8
- package/lib/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
- package/lib/simple-tree/node-kinds/map/mapNode.d.ts +3 -2
- package/lib/simple-tree/node-kinds/map/mapNode.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/map/mapNode.js +14 -8
- package/lib/simple-tree/node-kinds/map/mapNode.js.map +1 -1
- package/lib/simple-tree/node-kinds/object/objectNode.d.ts +3 -2
- package/lib/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/object/objectNode.js +14 -9
- package/lib/simple-tree/node-kinds/object/objectNode.js.map +1 -1
- package/lib/simple-tree/prepareForInsertion.d.ts.map +1 -1
- package/lib/simple-tree/prepareForInsertion.js +5 -1
- package/lib/simple-tree/prepareForInsertion.js.map +1 -1
- package/lib/simple-tree/schemaTypes.d.ts +63 -30
- package/lib/simple-tree/schemaTypes.d.ts.map +1 -1
- package/lib/simple-tree/schemaTypes.js +70 -36
- package/lib/simple-tree/schemaTypes.js.map +1 -1
- package/lib/simple-tree/simpleSchema.d.ts +22 -4
- package/lib/simple-tree/simpleSchema.d.ts.map +1 -1
- package/lib/simple-tree/simpleSchema.js.map +1 -1
- package/lib/simple-tree/toStoredSchema.d.ts +4 -0
- package/lib/simple-tree/toStoredSchema.d.ts.map +1 -1
- package/lib/simple-tree/toStoredSchema.js +15 -4
- 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/lib/tableSchema.d.ts +1 -1
- package/lib/util/typeUtils.d.ts +2 -2
- package/lib/util/typeUtils.js.map +1 -1
- package/lib/util/utils.d.ts +2 -0
- package/lib/util/utils.d.ts.map +1 -1
- package/lib/util/utils.js.map +1 -1
- package/package.json +23 -23
- package/src/core/index.ts +3 -1
- package/src/core/schema-stored/formatV2.ts +78 -0
- package/src/core/schema-stored/index.ts +4 -1
- package/src/core/schema-stored/schema.ts +123 -33
- package/src/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.ts +16 -11
- package/src/feature-libraries/chunked-forest/codec/compressedEncode.ts +16 -7
- package/src/feature-libraries/chunked-forest/codec/nodeShape.ts +4 -4
- package/src/feature-libraries/detachedFieldIndexSummarizer.ts +9 -16
- package/src/feature-libraries/flex-tree/flexTreeTypes.ts +33 -30
- package/src/feature-libraries/flex-tree/index.ts +0 -8
- package/src/feature-libraries/flex-tree/lazyEntity.ts +5 -1
- package/src/feature-libraries/flex-tree/lazyField.ts +5 -8
- package/src/feature-libraries/flex-tree/lazyNode.ts +17 -8
- package/src/feature-libraries/forest-summary/forestSummarizer.ts +9 -16
- package/src/feature-libraries/index.ts +1 -1
- package/src/feature-libraries/mapTreeCursor.ts +17 -8
- package/src/feature-libraries/modular-schema/fieldKindWithEditor.ts +2 -0
- package/src/feature-libraries/object-forest/objectForest.ts +3 -0
- package/src/feature-libraries/schema-edits/schemaChangeCodecs.ts +11 -6
- package/src/feature-libraries/schema-edits/schemaChangeFormat.ts +3 -3
- package/src/feature-libraries/schema-index/codec.ts +73 -14
- package/src/feature-libraries/schema-index/formatV2.ts +30 -0
- package/src/feature-libraries/schema-index/index.ts +2 -1
- package/src/feature-libraries/schema-index/schemaSummarizer.ts +11 -18
- package/src/index.ts +6 -0
- package/src/packageVersion.ts +1 -1
- package/src/shared-tree/schematizeTree.ts +1 -0
- package/src/shared-tree/schematizingTreeView.ts +8 -5
- package/src/shared-tree/sharedTree.ts +42 -12
- package/src/shared-tree/treeAlpha.ts +196 -6
- package/src/shared-tree-core/editManagerSummarizer.ts +9 -16
- package/src/shared-tree-core/sharedTreeCore.ts +33 -24
- package/src/simple-tree/api/configuration.ts +59 -27
- package/src/simple-tree/api/index.ts +3 -3
- package/src/simple-tree/api/schemaCompatibilityTester.ts +1 -1
- package/src/simple-tree/api/schemaCreationUtilities.ts +3 -3
- package/src/simple-tree/api/schemaFactory.ts +16 -11
- package/src/simple-tree/api/schemaFactoryAlpha.ts +53 -8
- package/src/simple-tree/api/storedSchema.ts +4 -4
- package/src/simple-tree/api/treeChangeEvents.ts +8 -3
- package/src/simple-tree/api/treeNodeApi.ts +5 -2
- package/src/simple-tree/api/viewSchemaToSimpleSchema.ts +5 -0
- 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 +2 -2
- package/src/simple-tree/core/treeNodeSchema.ts +113 -1
- package/src/simple-tree/core/unhydratedFlexTree.ts +22 -44
- 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 +12 -5
- package/src/simple-tree/leafNodeSchema.ts +9 -1
- package/src/simple-tree/node-kinds/array/arrayNode.ts +20 -9
- package/src/simple-tree/node-kinds/map/mapNode.ts +21 -6
- package/src/simple-tree/node-kinds/object/objectNode.ts +29 -12
- package/src/simple-tree/prepareForInsertion.ts +5 -1
- package/src/simple-tree/schemaTypes.ts +151 -71
- package/src/simple-tree/simpleSchema.ts +27 -5
- package/src/simple-tree/toStoredSchema.ts +17 -4
- package/src/simple-tree/treeNodeValid.ts +1 -1
- package/src/simple-tree/walkFieldSchema.ts +5 -1
- package/src/util/typeUtils.ts +2 -2
- package/src/util/utils.ts +2 -0
- package/dist/feature-libraries/flex-tree/navigation.d.ts +0 -46
- package/dist/feature-libraries/flex-tree/navigation.d.ts.map +0 -1
- package/dist/feature-libraries/flex-tree/navigation.js +0 -104
- package/dist/feature-libraries/flex-tree/navigation.js.map +0 -1
- package/lib/feature-libraries/flex-tree/navigation.d.ts +0 -46
- package/lib/feature-libraries/flex-tree/navigation.d.ts.map +0 -1
- package/lib/feature-libraries/flex-tree/navigation.js +0 -97
- package/lib/feature-libraries/flex-tree/navigation.js.map +0 -1
- package/src/feature-libraries/flex-tree/navigation.ts +0 -121
|
@@ -32,7 +32,7 @@ import type { UnionToTuple } from "../../util/index.js";
|
|
|
32
32
|
* This is commonly used in unions when the only information needed is which kind of node the value is.
|
|
33
33
|
* Enums are a common example of this pattern.
|
|
34
34
|
* @see {@link adaptEnum}
|
|
35
|
-
* @
|
|
35
|
+
* @beta
|
|
36
36
|
*/
|
|
37
37
|
// Return type is intentionally derived.
|
|
38
38
|
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
|
|
@@ -107,7 +107,7 @@ export function singletonSchema<TScope extends string, TName extends string | nu
|
|
|
107
107
|
* @privateRemarks
|
|
108
108
|
* Maybe provide `SchemaFactory.nested` to ease creating nested scopes?
|
|
109
109
|
* @see {@link enumFromStrings} for a similar function that works on arrays of strings instead of an enum.
|
|
110
|
-
* @
|
|
110
|
+
* @beta
|
|
111
111
|
*/
|
|
112
112
|
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
|
|
113
113
|
export function adaptEnum<
|
|
@@ -186,7 +186,7 @@ export function adaptEnum<
|
|
|
186
186
|
* class Parent extends schemaFactory.object("Parent", { mode: Mode.schema }) {}
|
|
187
187
|
* ```
|
|
188
188
|
* @see {@link adaptEnum} for a similar function that works on enums instead of arrays of strings.
|
|
189
|
-
* @
|
|
189
|
+
* @beta
|
|
190
190
|
*/
|
|
191
191
|
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
|
|
192
192
|
export function enumFromStrings<
|
|
@@ -56,13 +56,14 @@ import {
|
|
|
56
56
|
createFieldSchema,
|
|
57
57
|
type DefaultProvider,
|
|
58
58
|
getDefaultProvider,
|
|
59
|
-
type NodeSchemaOptions,
|
|
60
59
|
markSchemaMostDerived,
|
|
61
60
|
type FieldSchemaAlpha,
|
|
62
61
|
type ImplicitAnnotatedAllowedTypes,
|
|
63
62
|
type UnannotateImplicitAllowedTypes,
|
|
64
63
|
type UnannotateSchemaRecord,
|
|
64
|
+
type NodeSchemaOptionsAlpha,
|
|
65
65
|
normalizeAllowedTypes,
|
|
66
|
+
type FieldPropsAlpha,
|
|
66
67
|
} from "../schemaTypes.js";
|
|
67
68
|
|
|
68
69
|
import { createFieldSchemaUnsafe } from "./schemaFactoryRecursive.js";
|
|
@@ -101,7 +102,7 @@ export function schemaFromValue(value: TreeValue): TreeNodeSchema {
|
|
|
101
102
|
* @alpha
|
|
102
103
|
*/
|
|
103
104
|
export interface SchemaFactoryObjectOptions<TCustomMetadata = unknown>
|
|
104
|
-
extends
|
|
105
|
+
extends NodeSchemaOptionsAlpha<TCustomMetadata> {
|
|
105
106
|
/**
|
|
106
107
|
* Allow nodes typed with this object node schema to contain optional fields that are not present in the schema declaration.
|
|
107
108
|
* Such nodes can come into existence either via import APIs (see remarks) or by way of collaboration with another client
|
|
@@ -147,8 +148,12 @@ export interface SchemaFactoryObjectOptions<TCustomMetadata = unknown>
|
|
|
147
148
|
allowUnknownOptionalFields?: boolean;
|
|
148
149
|
}
|
|
149
150
|
|
|
151
|
+
/**
|
|
152
|
+
* Default options for Object node schema creation.
|
|
153
|
+
* @remarks Omits parameters that are not relevant for common use cases.
|
|
154
|
+
*/
|
|
150
155
|
export const defaultSchemaFactoryObjectOptions: Required<
|
|
151
|
-
Omit<SchemaFactoryObjectOptions, "metadata">
|
|
156
|
+
Omit<SchemaFactoryObjectOptions, "metadata" | "persistedMetadata">
|
|
152
157
|
> = {
|
|
153
158
|
allowUnknownOptionalFields: false,
|
|
154
159
|
};
|
|
@@ -307,7 +312,7 @@ const defaultOptionalProvider: DefaultProvider = getDefaultProvider(() => []);
|
|
|
307
312
|
|
|
308
313
|
function optional<const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(
|
|
309
314
|
t: T,
|
|
310
|
-
props?: Omit<
|
|
315
|
+
props?: Omit<FieldPropsAlpha<TCustomMetadata>, "defaultProvider">,
|
|
311
316
|
): FieldSchemaAlpha<FieldKind.Optional, T, TCustomMetadata>;
|
|
312
317
|
|
|
313
318
|
function optional<
|
|
@@ -315,7 +320,7 @@ function optional<
|
|
|
315
320
|
const TCustomMetadata = unknown,
|
|
316
321
|
>(
|
|
317
322
|
t: T,
|
|
318
|
-
props?: Omit<
|
|
323
|
+
props?: Omit<FieldPropsAlpha<TCustomMetadata>, "defaultProvider">,
|
|
319
324
|
): FieldSchemaAlpha<FieldKind.Optional, UnannotateImplicitAllowedTypes<T>, TCustomMetadata>;
|
|
320
325
|
|
|
321
326
|
function optional<
|
|
@@ -323,7 +328,7 @@ function optional<
|
|
|
323
328
|
const TCustomMetadata = unknown,
|
|
324
329
|
>(
|
|
325
330
|
t: T,
|
|
326
|
-
props?: Omit<
|
|
331
|
+
props?: Omit<FieldPropsAlpha<TCustomMetadata>, "defaultProvider">,
|
|
327
332
|
): FieldSchemaAlpha<FieldKind.Optional, UnannotateImplicitAllowedTypes<T>, TCustomMetadata> {
|
|
328
333
|
return createFieldSchema(FieldKind.Optional, t, {
|
|
329
334
|
defaultProvider: defaultOptionalProvider,
|
|
@@ -333,7 +338,7 @@ function optional<
|
|
|
333
338
|
|
|
334
339
|
function required<const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(
|
|
335
340
|
t: T,
|
|
336
|
-
props?: Omit<
|
|
341
|
+
props?: Omit<FieldPropsAlpha<TCustomMetadata>, "defaultProvider">,
|
|
337
342
|
): FieldSchemaAlpha<FieldKind.Required, T, TCustomMetadata>;
|
|
338
343
|
|
|
339
344
|
function required<
|
|
@@ -341,7 +346,7 @@ function required<
|
|
|
341
346
|
const TCustomMetadata = unknown,
|
|
342
347
|
>(
|
|
343
348
|
t: T,
|
|
344
|
-
props?: Omit<
|
|
349
|
+
props?: Omit<FieldPropsAlpha<TCustomMetadata>, "defaultProvider">,
|
|
345
350
|
): FieldSchemaAlpha<FieldKind.Required, UnannotateImplicitAllowedTypes<T>, TCustomMetadata>;
|
|
346
351
|
|
|
347
352
|
function required<
|
|
@@ -349,7 +354,7 @@ function required<
|
|
|
349
354
|
const TCustomMetadata = unknown,
|
|
350
355
|
>(
|
|
351
356
|
t: T,
|
|
352
|
-
props?: Omit<
|
|
357
|
+
props?: Omit<FieldPropsAlpha<TCustomMetadata>, "defaultProvider">,
|
|
353
358
|
): FieldSchemaAlpha<FieldKind.Required, UnannotateImplicitAllowedTypes<T>, TCustomMetadata> {
|
|
354
359
|
return createFieldSchema(FieldKind.Required, t, props);
|
|
355
360
|
}
|
|
@@ -377,7 +382,7 @@ export const schemaStaticsBase = {
|
|
|
377
382
|
const TCustomMetadata = unknown,
|
|
378
383
|
>(
|
|
379
384
|
t: T,
|
|
380
|
-
props?: Omit<
|
|
385
|
+
props?: Omit<FieldPropsAlpha<TCustomMetadata>, "defaultProvider">,
|
|
381
386
|
): FieldSchemaAlphaUnsafe<FieldKind.Optional, T, TCustomMetadata> => {
|
|
382
387
|
return createFieldSchemaUnsafe(FieldKind.Optional, t, {
|
|
383
388
|
defaultProvider: defaultOptionalProvider,
|
|
@@ -390,7 +395,7 @@ export const schemaStaticsBase = {
|
|
|
390
395
|
const TCustomMetadata = unknown,
|
|
391
396
|
>(
|
|
392
397
|
t: T,
|
|
393
|
-
props?: Omit<
|
|
398
|
+
props?: Omit<FieldPropsAlpha<TCustomMetadata>, "defaultProvider">,
|
|
394
399
|
): FieldSchemaAlphaUnsafe<FieldKind.Required, T, TCustomMetadata> => {
|
|
395
400
|
return createFieldSchemaUnsafe(FieldKind.Required, t, props);
|
|
396
401
|
},
|
|
@@ -23,7 +23,7 @@ import type {
|
|
|
23
23
|
ImplicitAnnotatedAllowedTypes,
|
|
24
24
|
ImplicitAnnotatedFieldSchema,
|
|
25
25
|
ImplicitFieldSchema,
|
|
26
|
-
|
|
26
|
+
NodeSchemaOptionsAlpha,
|
|
27
27
|
} from "../schemaTypes.js";
|
|
28
28
|
import type { RestrictiveStringRecord } from "../../util/index.js";
|
|
29
29
|
import type { NodeKind, TreeNodeSchemaClass } from "../core/index.js";
|
|
@@ -88,6 +88,7 @@ export class SchemaFactoryAlpha<
|
|
|
88
88
|
options?.allowUnknownOptionalFields ??
|
|
89
89
|
defaultSchemaFactoryObjectOptions.allowUnknownOptionalFields,
|
|
90
90
|
options?.metadata,
|
|
91
|
+
options?.persistedMetadata,
|
|
91
92
|
);
|
|
92
93
|
}
|
|
93
94
|
|
|
@@ -148,7 +149,7 @@ export class SchemaFactoryAlpha<
|
|
|
148
149
|
}
|
|
149
150
|
|
|
150
151
|
/**
|
|
151
|
-
* {@inheritDoc SchemaStatics.
|
|
152
|
+
* {@inheritDoc SchemaStatics.leaves}
|
|
152
153
|
*/
|
|
153
154
|
public static override readonly leaves = schemaStatics.leaves;
|
|
154
155
|
|
|
@@ -167,11 +168,41 @@ export class SchemaFactoryAlpha<
|
|
|
167
168
|
*/
|
|
168
169
|
public static override readonly optionalRecursive = schemaStatics.optionalRecursive;
|
|
169
170
|
|
|
171
|
+
/**
|
|
172
|
+
* {@inheritDoc SchemaStatics.requiredRecursive}
|
|
173
|
+
*/
|
|
174
|
+
public static override readonly requiredRecursive = schemaStatics.requiredRecursive;
|
|
175
|
+
|
|
170
176
|
/**
|
|
171
177
|
* Like {@link SchemaFactory.identifier} but static and a factory function that can be provided {@link FieldProps}.
|
|
172
178
|
*/
|
|
173
179
|
public static readonly identifier = schemaStatics.identifier;
|
|
174
180
|
|
|
181
|
+
/**
|
|
182
|
+
* {@inheritDoc SchemaStatics.leaves}
|
|
183
|
+
*/
|
|
184
|
+
public override readonly leaves = schemaStatics.leaves;
|
|
185
|
+
|
|
186
|
+
/**
|
|
187
|
+
* {@inheritDoc SchemaStatics.optional}
|
|
188
|
+
*/
|
|
189
|
+
public override readonly optional = schemaStatics.optional;
|
|
190
|
+
|
|
191
|
+
/**
|
|
192
|
+
* {@inheritDoc SchemaStatics.required}
|
|
193
|
+
*/
|
|
194
|
+
public override readonly required = schemaStatics.required;
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* {@inheritDoc SchemaStatics.optionalRecursive}
|
|
198
|
+
*/
|
|
199
|
+
public override readonly optionalRecursive = schemaStatics.optionalRecursive;
|
|
200
|
+
|
|
201
|
+
/**
|
|
202
|
+
* {@inheritDoc SchemaStatics.requiredRecursive}
|
|
203
|
+
*/
|
|
204
|
+
public override readonly requiredRecursive = schemaStatics.requiredRecursive;
|
|
205
|
+
|
|
175
206
|
/**
|
|
176
207
|
* Define a {@link TreeNodeSchema} for a {@link TreeMapNode}.
|
|
177
208
|
*
|
|
@@ -193,9 +224,16 @@ export class SchemaFactoryAlpha<
|
|
|
193
224
|
>(
|
|
194
225
|
name: Name,
|
|
195
226
|
allowedTypes: T,
|
|
196
|
-
options?:
|
|
227
|
+
options?: NodeSchemaOptionsAlpha<TCustomMetadata>,
|
|
197
228
|
): MapNodeCustomizableSchema<ScopedSchemaName<TScope, Name>, T, true, TCustomMetadata> {
|
|
198
|
-
return mapSchema(
|
|
229
|
+
return mapSchema(
|
|
230
|
+
this.scoped2(name),
|
|
231
|
+
allowedTypes,
|
|
232
|
+
true,
|
|
233
|
+
true,
|
|
234
|
+
options?.metadata,
|
|
235
|
+
options?.persistedMetadata,
|
|
236
|
+
);
|
|
199
237
|
}
|
|
200
238
|
|
|
201
239
|
/**
|
|
@@ -206,7 +244,7 @@ export class SchemaFactoryAlpha<
|
|
|
206
244
|
Name extends TName,
|
|
207
245
|
const T extends System_Unsafe.ImplicitAllowedTypesUnsafe,
|
|
208
246
|
const TCustomMetadata = unknown,
|
|
209
|
-
>(name: Name, allowedTypes: T, options?:
|
|
247
|
+
>(name: Name, allowedTypes: T, options?: NodeSchemaOptionsAlpha<TCustomMetadata>) {
|
|
210
248
|
return this.mapAlpha(
|
|
211
249
|
name,
|
|
212
250
|
allowedTypes as T & ImplicitAllowedTypes,
|
|
@@ -237,9 +275,16 @@ export class SchemaFactoryAlpha<
|
|
|
237
275
|
>(
|
|
238
276
|
name: Name,
|
|
239
277
|
allowedTypes: T,
|
|
240
|
-
options?:
|
|
278
|
+
options?: NodeSchemaOptionsAlpha<TCustomMetadata>,
|
|
241
279
|
): ArrayNodeCustomizableSchema<ScopedSchemaName<TScope, Name>, T, true, TCustomMetadata> {
|
|
242
|
-
return arraySchema(
|
|
280
|
+
return arraySchema(
|
|
281
|
+
this.scoped2(name),
|
|
282
|
+
allowedTypes,
|
|
283
|
+
true,
|
|
284
|
+
true,
|
|
285
|
+
options?.metadata,
|
|
286
|
+
options?.persistedMetadata,
|
|
287
|
+
);
|
|
243
288
|
}
|
|
244
289
|
|
|
245
290
|
/**
|
|
@@ -250,7 +295,7 @@ export class SchemaFactoryAlpha<
|
|
|
250
295
|
const Name extends TName,
|
|
251
296
|
const T extends System_Unsafe.ImplicitAllowedTypesUnsafe,
|
|
252
297
|
const TCustomMetadata = unknown,
|
|
253
|
-
>(name: Name, allowedTypes: T, options?:
|
|
298
|
+
>(name: Name, allowedTypes: T, options?: NodeSchemaOptionsAlpha<TCustomMetadata>) {
|
|
254
299
|
return this.arrayAlpha(
|
|
255
300
|
name,
|
|
256
301
|
allowedTypes as T & ImplicitAllowedTypes,
|
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
} from "../../feature-libraries/index.js";
|
|
13
13
|
import {
|
|
14
14
|
clientVersionToSchemaVersion,
|
|
15
|
-
type
|
|
15
|
+
type FormatV1,
|
|
16
16
|
// eslint-disable-next-line import/no-internal-modules
|
|
17
17
|
} from "../../feature-libraries/schema-index/index.js";
|
|
18
18
|
import type { JsonCompatible } from "../../util/index.js";
|
|
@@ -58,8 +58,8 @@ export function extractPersistedSchema(
|
|
|
58
58
|
oldestCompatibleClient: FluidClientVersion,
|
|
59
59
|
): JsonCompatible {
|
|
60
60
|
const stored = simpleToStoredSchema(schema);
|
|
61
|
-
const
|
|
62
|
-
return encodeTreeSchema(stored,
|
|
61
|
+
const schemaWriteVersion = clientVersionToSchemaVersion(oldestCompatibleClient);
|
|
62
|
+
return encodeTreeSchema(stored, schemaWriteVersion);
|
|
63
63
|
}
|
|
64
64
|
|
|
65
65
|
/**
|
|
@@ -100,7 +100,7 @@ export function comparePersistedSchema(
|
|
|
100
100
|
// Any version can be passed down to makeSchemaCodec here.
|
|
101
101
|
// We only use the decode part, which always dispatches to the correct codec based on the version in the data, not the version passed to `makeSchemaCodec`.
|
|
102
102
|
const schemaCodec = makeSchemaCodec(options, SchemaVersion.v1);
|
|
103
|
-
const stored = schemaCodec.decode(persisted as
|
|
103
|
+
const stored = schemaCodec.decode(persisted as FormatV1);
|
|
104
104
|
const viewSchema = new SchemaCompatibilityTester(
|
|
105
105
|
defaultSchemaPolicy,
|
|
106
106
|
{},
|
|
@@ -26,7 +26,10 @@
|
|
|
26
26
|
*/
|
|
27
27
|
export interface TreeChangeEvents {
|
|
28
28
|
/**
|
|
29
|
-
* Emitted by a node
|
|
29
|
+
* Emitted by a node if any changes affected the node.
|
|
30
|
+
*
|
|
31
|
+
* This event is emitted after all the changes in a batch have been applied to the whole tree.
|
|
32
|
+
* This means that a handler for this event will be able to read the updated state of the tree.
|
|
30
33
|
*
|
|
31
34
|
* - Object nodes define a change as being when the value of one of its properties changes (i.e., the property's value is set, including when set to `undefined`).
|
|
32
35
|
*
|
|
@@ -65,8 +68,10 @@ export interface TreeChangeEvents {
|
|
|
65
68
|
nodeChanged(unstable?: unknown): void;
|
|
66
69
|
|
|
67
70
|
/**
|
|
68
|
-
* Emitted by a node
|
|
69
|
-
*
|
|
71
|
+
* Emitted by a node if something changed anywhere in the subtree rooted at it.
|
|
72
|
+
*
|
|
73
|
+
* This event is emitted after all the changes in a batch have been applied to the whole tree.
|
|
74
|
+
* This means that a handler for this event will be able to read the updated state of the tree.
|
|
70
75
|
*
|
|
71
76
|
* @remarks
|
|
72
77
|
* This event is not emitted when the node itself is moved to a different location in the tree or removed from the tree.
|
|
@@ -39,7 +39,7 @@ import {
|
|
|
39
39
|
} from "../core/index.js";
|
|
40
40
|
import type { TreeChangeEvents } from "./treeChangeEvents.js";
|
|
41
41
|
import { isObjectNodeSchema } from "../node-kinds/index.js";
|
|
42
|
-
import {
|
|
42
|
+
import { tryGetTreeNodeForField } from "../getTreeNodeForField.js";
|
|
43
43
|
|
|
44
44
|
/**
|
|
45
45
|
* Provides various functions for analyzing {@link TreeNode}s.
|
|
@@ -83,6 +83,9 @@ export interface TreeNodeApi {
|
|
|
83
83
|
* Return the node under which this node resides in the tree (or undefined if this is a root node of the tree).
|
|
84
84
|
*
|
|
85
85
|
* @throws A {@link @fluidframework/telemetry-utils#UsageError} if the node has been {@link TreeStatus.Deleted | deleted}.
|
|
86
|
+
*
|
|
87
|
+
* @see {@link (TreeAlpha:interface).child}
|
|
88
|
+
* @see {@link (TreeAlpha:interface).children}
|
|
86
89
|
*/
|
|
87
90
|
parent(node: TreeNode): TreeNode | undefined;
|
|
88
91
|
|
|
@@ -316,7 +319,7 @@ export function getIdentifierFromNode(
|
|
|
316
319
|
const key = identifierFieldKeys[0] ?? oob();
|
|
317
320
|
const identifierField = flexNode.tryGetField(key);
|
|
318
321
|
assert(identifierField !== undefined, 0xbb5 /* missing identifier field */);
|
|
319
|
-
const identifierValue =
|
|
322
|
+
const identifierValue = tryGetTreeNodeForField(identifierField);
|
|
320
323
|
assert(typeof identifierValue === "string", 0xbb6 /* identifier not a string */);
|
|
321
324
|
|
|
322
325
|
const context = flexNode.context;
|
|
@@ -63,6 +63,7 @@ export function toSimpleTreeSchema(
|
|
|
63
63
|
allowedTypesIdentifiers: normalizedSchema.allowedTypesIdentifiers,
|
|
64
64
|
kind: normalizedSchema.kind,
|
|
65
65
|
metadata: normalizedSchema.metadata,
|
|
66
|
+
persistedMetadata: normalizedSchema.persistedMetadata,
|
|
66
67
|
} satisfies SimpleFieldSchema)
|
|
67
68
|
: normalizedSchema,
|
|
68
69
|
definitions,
|
|
@@ -94,6 +95,7 @@ function copySimpleLeafSchema(schema: SimpleLeafNodeSchema): SimpleLeafNodeSchem
|
|
|
94
95
|
kind: NodeKind.Leaf,
|
|
95
96
|
leafKind: schema.leafKind,
|
|
96
97
|
metadata: schema.metadata,
|
|
98
|
+
persistedMetadata: schema.persistedMetadata,
|
|
97
99
|
};
|
|
98
100
|
}
|
|
99
101
|
|
|
@@ -104,6 +106,7 @@ function copySimpleMapOrArraySchema(
|
|
|
104
106
|
kind: schema.kind,
|
|
105
107
|
allowedTypesIdentifiers: schema.allowedTypesIdentifiers,
|
|
106
108
|
metadata: schema.metadata,
|
|
109
|
+
persistedMetadata: schema.persistedMetadata,
|
|
107
110
|
};
|
|
108
111
|
}
|
|
109
112
|
|
|
@@ -115,6 +118,7 @@ function copySimpleObjectSchema(schema: SimpleObjectNodeSchema): SimpleObjectNod
|
|
|
115
118
|
kind: field.kind,
|
|
116
119
|
allowedTypesIdentifiers: field.allowedTypesIdentifiers,
|
|
117
120
|
metadata: field.metadata,
|
|
121
|
+
persistedMetadata: field.persistedMetadata,
|
|
118
122
|
storedKey: field.storedKey,
|
|
119
123
|
});
|
|
120
124
|
}
|
|
@@ -123,5 +127,6 @@ function copySimpleObjectSchema(schema: SimpleObjectNodeSchema): SimpleObjectNod
|
|
|
123
127
|
kind: NodeKind.Object,
|
|
124
128
|
fields,
|
|
125
129
|
metadata: schema.metadata,
|
|
130
|
+
persistedMetadata: schema.persistedMetadata,
|
|
126
131
|
};
|
|
127
132
|
}
|
|
@@ -10,7 +10,7 @@ import type {
|
|
|
10
10
|
} from "../../feature-libraries/index.js";
|
|
11
11
|
import { brand } from "../../util/index.js";
|
|
12
12
|
|
|
13
|
-
import type { TreeNodeSchema } from "./treeNodeSchema.js";
|
|
13
|
+
import type { NormalizedAnnotatedAllowedTypes, TreeNodeSchema } from "./treeNodeSchema.js";
|
|
14
14
|
import { walkAllowedTypes } from "./walkSchema.js";
|
|
15
15
|
|
|
16
16
|
/**
|
|
@@ -52,7 +52,7 @@ export class Context {
|
|
|
52
52
|
* Since this walks the schema, it must not be invoked during schema declaration or schema forward references could fail to be resolved.
|
|
53
53
|
*/
|
|
54
54
|
public constructor(
|
|
55
|
-
rootSchema:
|
|
55
|
+
rootSchema: NormalizedAnnotatedAllowedTypes,
|
|
56
56
|
public readonly flexContext: FlexTreeContext,
|
|
57
57
|
) {
|
|
58
58
|
const schema: Map<TreeNodeSchemaIdentifier, TreeNodeSchema> = new Map();
|
|
@@ -71,7 +71,7 @@ export class Context {
|
|
|
71
71
|
*/
|
|
72
72
|
export class HydratedContext extends Context {
|
|
73
73
|
public constructor(
|
|
74
|
-
rootSchema:
|
|
74
|
+
rootSchema: NormalizedAnnotatedAllowedTypes,
|
|
75
75
|
public override readonly flexContext: FlexTreeHydratedContext,
|
|
76
76
|
) {
|
|
77
77
|
super(rootSchema, flexContext);
|
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import type { TreeValue } from "../../core/index.js";
|
|
7
|
+
import { isFlexTreeNode, type FlexTreeUnknownUnboxed } from "../../feature-libraries/index.js";
|
|
8
|
+
import type { TreeLeafValue } from "../schemaTypes.js";
|
|
7
9
|
|
|
8
10
|
import type { TreeNode } from "./treeNode.js";
|
|
9
11
|
import {
|
|
@@ -34,3 +36,15 @@ export function getOrCreateNodeFromInnerNode(flexNode: InnerNode): TreeNode | Tr
|
|
|
34
36
|
|
|
35
37
|
return createTreeNodeFromInner(flexNode);
|
|
36
38
|
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Returns the TreeNode or TreeValue for the provided {@link FlexTreeUnknownUnboxed}.
|
|
42
|
+
* This will allocate a new one if needed, and otherwise return one from cache.
|
|
43
|
+
* @remarks
|
|
44
|
+
* This supports both hydrated and unhydrated nodes.
|
|
45
|
+
*/
|
|
46
|
+
export function getOrCreateNodeFromInnerUnboxedNode(
|
|
47
|
+
flexTree: FlexTreeUnknownUnboxed,
|
|
48
|
+
): TreeNode | TreeLeafValue {
|
|
49
|
+
return isFlexTreeNode(flexTree) ? getOrCreateNodeFromInnerNode(flexTree) : flexTree;
|
|
50
|
+
}
|
|
@@ -31,10 +31,16 @@ export {
|
|
|
31
31
|
type TreeNodeSchemaNonClass,
|
|
32
32
|
type TreeNodeSchemaCore,
|
|
33
33
|
type TreeNodeSchemaBoth,
|
|
34
|
+
type AnnotatedAllowedType,
|
|
35
|
+
type NormalizedAnnotatedAllowedTypes,
|
|
36
|
+
isAnnotatedAllowedTypes,
|
|
34
37
|
} from "./treeNodeSchema.js";
|
|
35
38
|
export { walkAllowedTypes, type SchemaVisitor } from "./walkSchema.js";
|
|
36
39
|
export { Context, HydratedContext, SimpleContextSlot } from "./context.js";
|
|
37
|
-
export {
|
|
40
|
+
export {
|
|
41
|
+
getOrCreateNodeFromInnerNode,
|
|
42
|
+
getOrCreateNodeFromInnerUnboxedNode,
|
|
43
|
+
} from "./getOrCreateNode.js";
|
|
38
44
|
export {
|
|
39
45
|
UnhydratedFlexTreeNode,
|
|
40
46
|
UnhydratedSequenceField,
|
|
@@ -372,7 +372,7 @@ export function splitInnerNodeType(
|
|
|
372
372
|
): asserts innerNode is UnhydratedFlexTreeNode | HydratedFlexTreeNode {
|
|
373
373
|
assert(
|
|
374
374
|
innerNode instanceof UnhydratedFlexTreeNode || innerNode.isHydrated(),
|
|
375
|
-
|
|
375
|
+
0xbc8 /* Invalid inner node type */,
|
|
376
376
|
);
|
|
377
377
|
}
|
|
378
378
|
|
|
@@ -401,7 +401,7 @@ export function tryDisposeTreeNode(anchorNode: AnchorNode): void {
|
|
|
401
401
|
*/
|
|
402
402
|
export function getSimpleNodeSchemaFromInnerNode(innerNode: InnerNode): TreeNodeSchema {
|
|
403
403
|
const context: Context = getSimpleContextFromInnerNode(innerNode);
|
|
404
|
-
return context.schema.get(innerNode.
|
|
404
|
+
return context.schema.get(innerNode.type) ?? fail(0xb3f /* missing schema from context */);
|
|
405
405
|
}
|
|
406
406
|
|
|
407
407
|
/**
|
|
@@ -3,7 +3,15 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import
|
|
6
|
+
import { assert } from "@fluidframework/core-utils/internal";
|
|
7
|
+
import type { LazyItem } from "../flexList.js";
|
|
8
|
+
import type {
|
|
9
|
+
AllowedTypeMetadata,
|
|
10
|
+
AllowedTypesMetadata,
|
|
11
|
+
AnnotatedAllowedTypes,
|
|
12
|
+
ImplicitAnnotatedAllowedTypes,
|
|
13
|
+
TreeLeafValue,
|
|
14
|
+
} from "../schemaTypes.js";
|
|
7
15
|
import type { SimpleNodeSchemaBase } from "../simpleSchema.js";
|
|
8
16
|
|
|
9
17
|
import type { TreeNode } from "./treeNode.js";
|
|
@@ -62,6 +70,48 @@ export type TreeNodeSchema<
|
|
|
62
70
|
TCustomMetadata
|
|
63
71
|
>;
|
|
64
72
|
|
|
73
|
+
/**
|
|
74
|
+
* Stores annotations for an individual allowed type.
|
|
75
|
+
* @alpha
|
|
76
|
+
*/
|
|
77
|
+
export interface AnnotatedAllowedType<T = LazyItem<TreeNodeSchema>> {
|
|
78
|
+
/**
|
|
79
|
+
* Annotations for the allowed type.
|
|
80
|
+
*/
|
|
81
|
+
readonly metadata: AllowedTypeMetadata;
|
|
82
|
+
/**
|
|
83
|
+
* The allowed type the annotations apply to in a particular schema.
|
|
84
|
+
*/
|
|
85
|
+
readonly type: T;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Stores annotations for a set of evaluated annotated allowed types.
|
|
90
|
+
* @alpha
|
|
91
|
+
*/
|
|
92
|
+
export interface NormalizedAnnotatedAllowedTypes {
|
|
93
|
+
/**
|
|
94
|
+
* Annotations that apply to a set of allowed types.
|
|
95
|
+
*/
|
|
96
|
+
readonly metadata: AllowedTypesMetadata;
|
|
97
|
+
/**
|
|
98
|
+
* All the evaluated allowed types that the annotations apply to. The types themselves are also individually annotated.
|
|
99
|
+
*/
|
|
100
|
+
readonly types: readonly AnnotatedAllowedType<TreeNodeSchema>[];
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Checks if the input is an {@link AnnotatedAllowedTypes}.
|
|
105
|
+
*/
|
|
106
|
+
export function isAnnotatedAllowedTypes(
|
|
107
|
+
allowedTypes: ImplicitAnnotatedAllowedTypes,
|
|
108
|
+
): allowedTypes is AnnotatedAllowedTypes {
|
|
109
|
+
return (
|
|
110
|
+
// Class based schema, and lazy schema references report type "function": filtering them out with typeof makes narrowing based on members mostly safe
|
|
111
|
+
typeof allowedTypes === "object" && "metadata" in allowedTypes && "types" in allowedTypes
|
|
112
|
+
);
|
|
113
|
+
}
|
|
114
|
+
|
|
65
115
|
/**
|
|
66
116
|
* Schema which is not a class.
|
|
67
117
|
* @remarks
|
|
@@ -231,8 +281,13 @@ export type TreeNodeSchemaBoth<
|
|
|
231
281
|
|
|
232
282
|
/**
|
|
233
283
|
* Data common to all tree node schema.
|
|
284
|
+
*
|
|
234
285
|
* @remarks
|
|
235
286
|
* Implementation detail of {@link TreeNodeSchema} which should be accessed instead of referring to this type directly.
|
|
287
|
+
*
|
|
288
|
+
* @privateRemarks
|
|
289
|
+
* All implementations must implement {@link TreeNodeSchemaCorePrivate} as well.
|
|
290
|
+
*
|
|
236
291
|
* @sealed @public
|
|
237
292
|
*/
|
|
238
293
|
export interface TreeNodeSchemaCore<
|
|
@@ -316,6 +371,63 @@ export interface TreeNodeSchemaCore<
|
|
|
316
371
|
createFromInsertable(data: TInsertable): Unhydrated<TreeNode | TreeLeafValue>;
|
|
317
372
|
}
|
|
318
373
|
|
|
374
|
+
/**
|
|
375
|
+
* {@link TreeNodeSchemaCore} extended with some non-exported APIs.
|
|
376
|
+
*/
|
|
377
|
+
export interface TreeNodeSchemaCorePrivate<
|
|
378
|
+
Name extends string = string,
|
|
379
|
+
Kind extends NodeKind = NodeKind,
|
|
380
|
+
TInsertable = never,
|
|
381
|
+
ImplicitlyConstructable extends boolean = boolean,
|
|
382
|
+
Info = unknown,
|
|
383
|
+
TCustomMetadata = unknown,
|
|
384
|
+
> extends TreeNodeSchemaCore<
|
|
385
|
+
Name,
|
|
386
|
+
Kind,
|
|
387
|
+
ImplicitlyConstructable,
|
|
388
|
+
Info,
|
|
389
|
+
TInsertable,
|
|
390
|
+
TCustomMetadata
|
|
391
|
+
> {
|
|
392
|
+
/**
|
|
393
|
+
* All possible annotated allowed types that a field under a node with this schema could have.
|
|
394
|
+
* @remarks
|
|
395
|
+
* In this case "field" includes anything that is a field in the internal (flex-tree) abstraction layer.
|
|
396
|
+
* This includes the content field for arrays, and all the fields for map nodes.
|
|
397
|
+
* If this node does not have fields (and thus is a leaf), the array will be empty.
|
|
398
|
+
*
|
|
399
|
+
* This set cannot be used before the schema in it have been defined:
|
|
400
|
+
* more specifically, when using lazy schema references (for example to make foreword references to schema which have not yet been defined),
|
|
401
|
+
* users must wait until after the schema are defined to access this array.
|
|
402
|
+
*
|
|
403
|
+
* @privateRemarks
|
|
404
|
+
* If this is stabilized, it will live alongside the childTypes property on {@link TreeNodeSchemaCore}.
|
|
405
|
+
* @system
|
|
406
|
+
*/
|
|
407
|
+
readonly childAnnotatedAllowedTypes: readonly NormalizedAnnotatedAllowedTypes[];
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
/**
|
|
411
|
+
* Downcasts a {@link TreeNodeSchemaCore} to {@link TreeNodeSchemaCorePrivate} if it is one.
|
|
412
|
+
*
|
|
413
|
+
* @remarks
|
|
414
|
+
* This function should only be used internally. The result should not be exposed publicly
|
|
415
|
+
* in any exported types or API return values.
|
|
416
|
+
*/
|
|
417
|
+
export function asTreeNodeSchemaCorePrivate(
|
|
418
|
+
schema: TreeNodeSchemaCore<string, NodeKind, boolean>,
|
|
419
|
+
): TreeNodeSchemaCorePrivate {
|
|
420
|
+
assert(
|
|
421
|
+
"childAnnotatedAllowedTypes" in schema,
|
|
422
|
+
0xbc9 /* All implementations of TreeNodeSchemaCore must also implement TreeNodeSchemaCorePrivate */,
|
|
423
|
+
);
|
|
424
|
+
assert(
|
|
425
|
+
Array.isArray((schema as TreeNodeSchemaCorePrivate).childAnnotatedAllowedTypes),
|
|
426
|
+
0xbca /* All implementations of TreeNodeSchemaCore must also implement TreeNodeSchemaCorePrivate */,
|
|
427
|
+
);
|
|
428
|
+
return schema as TreeNodeSchemaCorePrivate;
|
|
429
|
+
}
|
|
430
|
+
|
|
319
431
|
/**
|
|
320
432
|
* Kind of tree node.
|
|
321
433
|
* @remarks
|