@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
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,194 @@
|
|
|
1
1
|
# @fluidframework/tree
|
|
2
2
|
|
|
3
|
+
## 2.43.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- Tree's enum schema utility are now beta ([#24749](https://github.com/microsoft/FluidFramework/pull/24749)) [a23bc9e4d02](https://github.com/microsoft/FluidFramework/commit/a23bc9e4d025f0925d09daadc2952bf0bfacc06b)
|
|
8
|
+
|
|
9
|
+
The functions [singletonSchema](https://fluidframework.com/docs/api/tree/#singletonschema-function), [adaptEnum](https://fluidframework.com/docs/api/tree/#adaptenum-function) and [enumFromStrings](https://fluidframework.com/docs/api/tree/#enumfromstrings-function) are now `@beta` instead of `@alpha`.
|
|
10
|
+
|
|
11
|
+
- Add TreeAlpha.child and TreeAlpha.children APIs for generic tree traversal ([#24723](https://github.com/microsoft/FluidFramework/pull/24723)) [87941b7fa05](https://github.com/microsoft/FluidFramework/commit/87941b7fa0575e030344079a25f65d25d8457367)
|
|
12
|
+
|
|
13
|
+
#### TreeAlpha.child
|
|
14
|
+
|
|
15
|
+
Access a child node or value of a `TreeNode` by its property key.
|
|
16
|
+
|
|
17
|
+
```typescript
|
|
18
|
+
class MyObject extends schemaFactory.object("MyObject", {
|
|
19
|
+
foo: schemaFactory.string;
|
|
20
|
+
bar: schemaFactory.optional(schemaFactory.string);
|
|
21
|
+
}) {}
|
|
22
|
+
|
|
23
|
+
const myObject = new MyObject({
|
|
24
|
+
foo: "Hello world!"
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
const foo = TreeAlpha.child(myObject, "foo"); // "Hello world!"
|
|
28
|
+
const bar = TreeAlpha.child(myObject, "bar"); // undefined
|
|
29
|
+
const baz = TreeAlpha.child(myObject, "baz"); // undefined
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
```typescript
|
|
33
|
+
class MyArray extends schemaFactory.array("MyArray", schemaFactory.string) {}
|
|
34
|
+
|
|
35
|
+
const myArray = new MyArray("Hello", "World");
|
|
36
|
+
|
|
37
|
+
const child0 = TreeAlpha.child(myArray, 0); // "Hello"
|
|
38
|
+
const child1 = TreeAlpha.child(myArray, 1); // "World
|
|
39
|
+
const child2 = TreeAlpha.child(myArray, 2); // undefined
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
#### TreeAlpha.children
|
|
43
|
+
|
|
44
|
+
Get all child nodes / values of a `TreeNode`, keyed by their property keys.
|
|
45
|
+
|
|
46
|
+
```typescript
|
|
47
|
+
class MyObject extends schemaFactory.object("MyObject", {
|
|
48
|
+
foo: schemaFactory.string;
|
|
49
|
+
bar: schemaFactory.optional(schemaFactory.string);
|
|
50
|
+
baz: schemaFactory.optional(schemaFactory.number);
|
|
51
|
+
}) {}
|
|
52
|
+
|
|
53
|
+
const myObject = new MyObject({
|
|
54
|
+
foo: "Hello world!",
|
|
55
|
+
baz: 42,
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
const children = TreeAlpha.children(myObject); // [["foo", "Hello world!"], ["baz", 42]]
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
```typescript
|
|
62
|
+
class MyArray extends schemaFactory.array("MyArray", schemaFactory.string) {}
|
|
63
|
+
|
|
64
|
+
const myArray = new MyArray("Hello", "World");
|
|
65
|
+
|
|
66
|
+
const children = TreeAlpha.children(myObject); // [[0, "Hello"], [1, "World"]]
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
- Rename and change type of annotatedAllowedTypeSet on FieldSchemaAlpha to more closely align with allowedTypesSet ([#24820](https://github.com/microsoft/FluidFramework/pull/24820)) [f4e8dc8cd09](https://github.com/microsoft/FluidFramework/commit/f4e8dc8cd09f052f21e436e2c0584a1a34d2be77)
|
|
70
|
+
|
|
71
|
+
This changes the `annotatedAllowedTypeSet` property on [`FieldSchemaAlpha`](https://fluidframework.com/docs/api/fluid-framework/fieldschemaalpha-class).
|
|
72
|
+
It is now called `annotatedAllowedTypesNormalized` and stores evaluated schemas along with their annotations in a list of objects rather than as a mapping from the schemas to their annotations. This makes the API easier to use and better aligns with the current public APIs.
|
|
73
|
+
|
|
74
|
+
- Persisted metadata for Shared Tree schemas (Alpha) ([#24812](https://github.com/microsoft/FluidFramework/pull/24812)) [3f81ab52ff7](https://github.com/microsoft/FluidFramework/commit/3f81ab52ff7265a8533c0e192c8b77d298b70eea)
|
|
75
|
+
|
|
76
|
+
The persisted metadata feature for Shared Tree allows an application author to write document-persisted metadata along with the schema. This feature is supported for both node and field schemas.
|
|
77
|
+
|
|
78
|
+
#### Using the persisted metadata feature
|
|
79
|
+
|
|
80
|
+
As of now, persisted metadata support is available via the SchemaFactoryAlpha API:
|
|
81
|
+
|
|
82
|
+
```ts
|
|
83
|
+
// Construct a schema factory with alpha APIs
|
|
84
|
+
const schemaFactory = new SchemaFactoryAlpha("com.example");
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Persisted metadata can take the shape of any JSON-serializable object, e.g.:
|
|
88
|
+
|
|
89
|
+
```ts
|
|
90
|
+
const persistedMetadata = { a: 2 };
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
#### Feature flag
|
|
94
|
+
|
|
95
|
+
To enable persisted metadata, use `configuredSharedTree` to specify the format version. The tree that is returned can be substituted in place of the default `SharedTree` object exported by the Fluid Framework. For example:
|
|
96
|
+
|
|
97
|
+
```ts
|
|
98
|
+
const tree = configuredSharedTree({
|
|
99
|
+
formatVersion: SharedTreeFormatVersion.v5,
|
|
100
|
+
}).create(runtime);
|
|
101
|
+
|
|
102
|
+
export const MyContainerSchema = {
|
|
103
|
+
initialObjects: {
|
|
104
|
+
appData: tree,
|
|
105
|
+
},
|
|
106
|
+
} satisfies ContainerSchema;
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
#### Examples
|
|
110
|
+
|
|
111
|
+
##### Field schemas with persisted metadata
|
|
112
|
+
|
|
113
|
+
```ts
|
|
114
|
+
// Construct a schema factory with alpha APIs
|
|
115
|
+
const schemaFactory = new SchemaFactoryAlpha("com.example");
|
|
116
|
+
|
|
117
|
+
// Define metadata. This can take the shape of any JSON-serializable object.
|
|
118
|
+
const persistedMetadata = { a: 2 };
|
|
119
|
+
|
|
120
|
+
// Foo is an object type with metadata
|
|
121
|
+
class Foo extends schemaFactory.objectAlpha(
|
|
122
|
+
"Foo",
|
|
123
|
+
{
|
|
124
|
+
// Metadata for a required number field
|
|
125
|
+
bar: schemaFactory.required(schemaFactory.number, { persistedMetadata }),
|
|
126
|
+
|
|
127
|
+
// Metadata for an optional string field
|
|
128
|
+
baz: schemaFactory.optional(schemaFactory.string, { persistedMetadata }),
|
|
129
|
+
// Metadata for the object type Foo
|
|
130
|
+
},
|
|
131
|
+
{ persistedMetadata },
|
|
132
|
+
) {}
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
##### Recursive field schemas
|
|
136
|
+
|
|
137
|
+
```ts
|
|
138
|
+
// Construct a schema factory with alpha APIs
|
|
139
|
+
const schemaFactory = new SchemaFactoryAlpha("com.example");
|
|
140
|
+
|
|
141
|
+
// Define metadata. This can take the shape of any JSON-serializable object.
|
|
142
|
+
const persistedMetadata = { a: 2 };
|
|
143
|
+
|
|
144
|
+
// Recursive object schema with persisted metadata
|
|
145
|
+
class RecursiveObject extends schemaFactory.objectRecursive(
|
|
146
|
+
"RecursiveObject",
|
|
147
|
+
{
|
|
148
|
+
x: [() => RecursiveObject, schemaFactory.number],
|
|
149
|
+
},
|
|
150
|
+
{ persistedMetadata },
|
|
151
|
+
) {}
|
|
152
|
+
|
|
153
|
+
// Recursive field schema with metadata
|
|
154
|
+
const recursiveField = schemaFactory.optionalRecursive(
|
|
155
|
+
[() => RecursiveObject, schemaFactory.number],
|
|
156
|
+
{ persistedMetadata },
|
|
157
|
+
);
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
##### Recursive object schemas
|
|
161
|
+
|
|
162
|
+
```ts
|
|
163
|
+
// Construct a schema factory with alpha APIs
|
|
164
|
+
const schemaFactory = new SchemaFactoryAlpha("com.example");
|
|
165
|
+
|
|
166
|
+
// Define metadata. This can take the shape of any JSON-serializable object.
|
|
167
|
+
const persistedMetadata = { a: 2 };
|
|
168
|
+
|
|
169
|
+
// Recursive array schema
|
|
170
|
+
class Foos extends schemaFactory.arrayRecursive("FooList", [() => Foo], {
|
|
171
|
+
persistedMetadata,
|
|
172
|
+
}) {}
|
|
173
|
+
|
|
174
|
+
// Recursive object schema
|
|
175
|
+
class Foo extends schemaFactory.objectRecursive(
|
|
176
|
+
"Foo",
|
|
177
|
+
{ fooList: Foos },
|
|
178
|
+
{ persistedMetadata },
|
|
179
|
+
) {}
|
|
180
|
+
|
|
181
|
+
// Recursive map schema
|
|
182
|
+
class FooMap extends schemaFactory.mapRecursive("FooMap", [() => Foo], {
|
|
183
|
+
persistedMetadata,
|
|
184
|
+
}) {}
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
- Improved Schema Validation ([#24866](https://github.com/microsoft/FluidFramework/pull/24866)) [caae4ae15ed](https://github.com/microsoft/FluidFramework/commit/caae4ae15edeb8aeae33b0520b18dbb1993965f6)
|
|
188
|
+
|
|
189
|
+
When constructing a [`TreeViewConfiguration`](https://fluidframework.com/docs/api/fluid-framework/treeviewconfiguration-class), the same schema listed more than once in a given [`AllowedTypes`](https://fluidframework.com/docs/api/fluid-framework/allowedtypes-typealias) is now an error even when [`preventAmbiguity`](https://fluidframework.com/docs/api/fluid-framework/treeviewconfiguration-class#preventambiguity-property) is false.
|
|
190
|
+
Previously a bug resulted in this only being rejected when `preventAmbiguity` was true.
|
|
191
|
+
|
|
3
192
|
## 2.42.0
|
|
4
193
|
|
|
5
194
|
### Minor Changes
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
```ts
|
|
6
6
|
|
|
7
|
-
// @
|
|
7
|
+
// @beta
|
|
8
8
|
export function adaptEnum<TScope extends string, const TEnum extends Record<string, string | number>>(factory: SchemaFactory<TScope>, members: TEnum): (<TValue extends TEnum[keyof TEnum]>(value: TValue) => TValue extends unknown ? TreeNode & {
|
|
9
9
|
readonly value: TValue;
|
|
10
10
|
} : never) & { readonly [Property in keyof TEnum]: TreeNodeSchemaClass<ScopedSchemaName<TScope, TEnum[Property]>, NodeKind.Object, TreeNode & {
|
|
@@ -32,9 +32,9 @@ export interface AllowedTypesMetadata {
|
|
|
32
32
|
export function allowUnused<T>(t?: T): void;
|
|
33
33
|
|
|
34
34
|
// @alpha
|
|
35
|
-
export interface AnnotatedAllowedType<T
|
|
35
|
+
export interface AnnotatedAllowedType<T = LazyItem<TreeNodeSchema>> {
|
|
36
36
|
readonly metadata: AllowedTypeMetadata;
|
|
37
|
-
readonly type:
|
|
37
|
+
readonly type: T;
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
// @alpha
|
|
@@ -139,7 +139,7 @@ export function createSimpleTreeIndex<TFieldSchema extends ImplicitFieldSchema,
|
|
|
139
139
|
interface DefaultProvider extends ErasedType<"@fluidframework/tree.FieldProvider"> {
|
|
140
140
|
}
|
|
141
141
|
|
|
142
|
-
// @
|
|
142
|
+
// @beta
|
|
143
143
|
export function enumFromStrings<TScope extends string, const Members extends readonly string[]>(factory: SchemaFactory<TScope>, members: Members): (<TValue extends Members[number]>(value: TValue) => TValue extends unknown ? TreeNode & {
|
|
144
144
|
readonly value: TValue;
|
|
145
145
|
} : never) & { [Index in Extract<keyof Members, `${number}`> extends `${infer N extends number}` ? N : never as Members[Index]]: TreeNodeSchemaClass<ScopedSchemaName<TScope, Members[Index]>, NodeKind.Object, TreeNode & {
|
|
@@ -186,6 +186,11 @@ export interface FieldProps<TCustomMetadata = unknown> {
|
|
|
186
186
|
readonly metadata?: FieldSchemaMetadata<TCustomMetadata>;
|
|
187
187
|
}
|
|
188
188
|
|
|
189
|
+
// @alpha @input
|
|
190
|
+
export interface FieldPropsAlpha<TCustomMetadata = unknown> extends FieldProps<TCustomMetadata> {
|
|
191
|
+
readonly persistedMetadata?: JsonCompatibleReadOnlyObject | undefined;
|
|
192
|
+
}
|
|
193
|
+
|
|
189
194
|
// @public @sealed
|
|
190
195
|
export class FieldSchema<out Kind extends FieldKind = FieldKind, out Types extends ImplicitAllowedTypes = ImplicitAllowedTypes, out TCustomMetadata = unknown> {
|
|
191
196
|
protected constructor(
|
|
@@ -203,13 +208,14 @@ export class FieldSchema<out Kind extends FieldKind = FieldKind, out Types exten
|
|
|
203
208
|
|
|
204
209
|
// @alpha @sealed
|
|
205
210
|
export class FieldSchemaAlpha<Kind extends FieldKind = FieldKind, Types extends ImplicitAllowedTypes = ImplicitAllowedTypes, TCustomMetadata = unknown> extends FieldSchema<Kind, Types, TCustomMetadata> implements SimpleFieldSchema {
|
|
206
|
-
protected constructor(kind: Kind, types: Types, annotatedAllowedTypes: ImplicitAnnotatedAllowedTypes, props?:
|
|
211
|
+
protected constructor(kind: Kind, types: Types, annotatedAllowedTypes: ImplicitAnnotatedAllowedTypes, props?: FieldPropsAlpha<TCustomMetadata>);
|
|
207
212
|
// (undocumented)
|
|
208
213
|
get allowedTypesIdentifiers(): ReadonlySet<string>;
|
|
209
214
|
readonly allowedTypesMetadata: AllowedTypesMetadata;
|
|
210
215
|
// (undocumented)
|
|
211
216
|
readonly annotatedAllowedTypes: ImplicitAnnotatedAllowedTypes;
|
|
212
|
-
get
|
|
217
|
+
get annotatedAllowedTypesNormalized(): NormalizedAnnotatedAllowedTypes;
|
|
218
|
+
get persistedMetadata(): JsonCompatibleReadOnlyObject | undefined;
|
|
213
219
|
}
|
|
214
220
|
|
|
215
221
|
// @alpha @sealed @system
|
|
@@ -448,6 +454,14 @@ export type JsonCompatibleObject<TExtra = never> = {
|
|
|
448
454
|
[P in string]?: JsonCompatible<TExtra>;
|
|
449
455
|
};
|
|
450
456
|
|
|
457
|
+
// @alpha
|
|
458
|
+
export type JsonCompatibleReadOnly = string | number | boolean | null | readonly JsonCompatibleReadOnly[] | JsonCompatibleReadOnlyObject;
|
|
459
|
+
|
|
460
|
+
// @alpha
|
|
461
|
+
export type JsonCompatibleReadOnlyObject = {
|
|
462
|
+
readonly [P in string]?: JsonCompatibleReadOnly;
|
|
463
|
+
};
|
|
464
|
+
|
|
451
465
|
// @alpha @sealed
|
|
452
466
|
export type JsonFieldSchema = {
|
|
453
467
|
readonly description?: string | undefined;
|
|
@@ -596,9 +610,20 @@ export interface NodeSchemaOptions<out TCustomMetadata = unknown> {
|
|
|
596
610
|
readonly metadata?: NodeSchemaMetadata<TCustomMetadata> | undefined;
|
|
597
611
|
}
|
|
598
612
|
|
|
613
|
+
// @alpha
|
|
614
|
+
export interface NodeSchemaOptionsAlpha<out TCustomMetadata = unknown> extends NodeSchemaOptions<TCustomMetadata> {
|
|
615
|
+
readonly persistedMetadata?: JsonCompatibleReadOnlyObject | undefined;
|
|
616
|
+
}
|
|
617
|
+
|
|
599
618
|
// @alpha
|
|
600
619
|
export const noopValidator: JsonValidator;
|
|
601
620
|
|
|
621
|
+
// @alpha
|
|
622
|
+
export interface NormalizedAnnotatedAllowedTypes {
|
|
623
|
+
readonly metadata: AllowedTypesMetadata;
|
|
624
|
+
readonly types: readonly AnnotatedAllowedType<TreeNodeSchema>[];
|
|
625
|
+
}
|
|
626
|
+
|
|
602
627
|
// @public @system
|
|
603
628
|
export type ObjectFromSchemaRecord<T extends RestrictiveStringRecord<ImplicitFieldSchema>> = RestrictiveStringRecord<ImplicitFieldSchema> extends T ? {} : {
|
|
604
629
|
-readonly [Property in keyof T]: Property extends string ? TreeFieldFromImplicitField<T[Property]> : unknown;
|
|
@@ -620,7 +645,7 @@ export type Off = Off_2;
|
|
|
620
645
|
// @alpha
|
|
621
646
|
export function persistedToSimpleSchema(persisted: JsonCompatible, options: ICodecOptions): SimpleTreeSchema;
|
|
622
647
|
|
|
623
|
-
// @
|
|
648
|
+
// @beta @system
|
|
624
649
|
export type PopUnion<Union, AsOverloadedFunction = UnionToIntersection<Union extends unknown ? (f: Union) => void : never>> = AsOverloadedFunction extends (a: infer First) => void ? First : never;
|
|
625
650
|
|
|
626
651
|
// @alpha @system
|
|
@@ -761,30 +786,42 @@ export class SchemaFactory<out TScope extends string | undefined = string | unde
|
|
|
761
786
|
|
|
762
787
|
// @alpha
|
|
763
788
|
export class SchemaFactoryAlpha<out TScope extends string | undefined = string | undefined, TName extends number | string = string> extends SchemaFactory<TScope, TName> {
|
|
764
|
-
arrayAlpha<const Name extends TName, const T extends ImplicitAnnotatedAllowedTypes, const TCustomMetadata = unknown>(name: Name, allowedTypes: T, options?:
|
|
765
|
-
arrayRecursive<const Name extends TName, const T extends System_Unsafe.ImplicitAllowedTypesUnsafe, const TCustomMetadata = unknown>(name: Name, allowedTypes: T, options?:
|
|
789
|
+
arrayAlpha<const Name extends TName, const T extends ImplicitAnnotatedAllowedTypes, const TCustomMetadata = unknown>(name: Name, allowedTypes: T, options?: NodeSchemaOptionsAlpha<TCustomMetadata>): ArrayNodeCustomizableSchema<ScopedSchemaName<TScope, Name>, T, true, TCustomMetadata>;
|
|
790
|
+
arrayRecursive<const Name extends TName, const T extends System_Unsafe.ImplicitAllowedTypesUnsafe, const TCustomMetadata = unknown>(name: Name, allowedTypes: T, options?: NodeSchemaOptionsAlpha<TCustomMetadata>): ArrayNodeCustomizableSchemaUnsafe<ScopedSchemaName<TScope, Name>, T, TCustomMetadata>;
|
|
766
791
|
static readonly identifier: <const TCustomMetadata = unknown>(props?: Omit<FieldProps_2<TCustomMetadata>, "defaultProvider"> | undefined) => FieldSchemaAlpha_2<FieldKind_2.Identifier, LeafSchema_2<"string", string> & SimpleLeafNodeSchema_2, TCustomMetadata>;
|
|
767
792
|
static readonly leaves: readonly [LeafSchema_2<"string", string> & SimpleLeafNodeSchema_2, LeafSchema_2<"number", number> & SimpleLeafNodeSchema_2, LeafSchema_2<"boolean", boolean> & SimpleLeafNodeSchema_2, LeafSchema_2<"null", null> & SimpleLeafNodeSchema_2, LeafSchema_2<"handle", IFluidHandle<unknown>> & SimpleLeafNodeSchema_2];
|
|
768
|
-
|
|
769
|
-
|
|
793
|
+
readonly leaves: readonly [LeafSchema_2<"string", string> & SimpleLeafNodeSchema_2, LeafSchema_2<"number", number> & SimpleLeafNodeSchema_2, LeafSchema_2<"boolean", boolean> & SimpleLeafNodeSchema_2, LeafSchema_2<"null", null> & SimpleLeafNodeSchema_2, LeafSchema_2<"handle", IFluidHandle<unknown>> & SimpleLeafNodeSchema_2];
|
|
794
|
+
mapAlpha<Name extends TName, const T extends ImplicitAnnotatedAllowedTypes, const TCustomMetadata = unknown>(name: Name, allowedTypes: T, options?: NodeSchemaOptionsAlpha<TCustomMetadata>): MapNodeCustomizableSchema<ScopedSchemaName<TScope, Name>, T, true, TCustomMetadata>;
|
|
795
|
+
mapRecursive<Name extends TName, const T extends System_Unsafe.ImplicitAllowedTypesUnsafe, const TCustomMetadata = unknown>(name: Name, allowedTypes: T, options?: NodeSchemaOptionsAlpha<TCustomMetadata>): MapNodeCustomizableSchemaUnsafe<ScopedSchemaName<TScope, Name>, T, TCustomMetadata>;
|
|
770
796
|
objectAlpha<const Name extends TName, const T extends RestrictiveStringRecord<ImplicitAnnotatedFieldSchema>, const TCustomMetadata = unknown>(name: Name, fields: T, options?: SchemaFactoryObjectOptions<TCustomMetadata>): ObjectNodeSchema<ScopedSchemaName<TScope, Name>, T, true, TCustomMetadata> & {
|
|
771
797
|
readonly createFromInsertable: unknown;
|
|
772
798
|
};
|
|
773
799
|
objectRecursive<const Name extends TName, const T extends RestrictiveStringRecord<System_Unsafe.ImplicitFieldSchemaUnsafe>, const TCustomMetadata = unknown>(name: Name, t: T, options?: SchemaFactoryObjectOptions<TCustomMetadata>): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Object, System_Unsafe.TreeObjectNodeUnsafe<T, ScopedSchemaName<TScope, Name>>, object & System_Unsafe.InsertableObjectFromSchemaRecordUnsafe<T>, false, T, never, TCustomMetadata> & SimpleObjectNodeSchema<TCustomMetadata> & Pick<ObjectNodeSchema, "fields">;
|
|
774
800
|
static readonly optional: {
|
|
775
|
-
<const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<
|
|
776
|
-
<const T_1 extends ImplicitAnnotatedAllowedTypes, const TCustomMetadata_1 = unknown>(t: T_1, props?: Omit<
|
|
801
|
+
<const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldPropsAlpha_2<TCustomMetadata>, "defaultProvider"> | undefined): FieldSchemaAlpha_2<FieldKind_2.Optional, T, TCustomMetadata>;
|
|
802
|
+
<const T_1 extends ImplicitAnnotatedAllowedTypes, const TCustomMetadata_1 = unknown>(t: T_1, props?: Omit<FieldPropsAlpha_2<TCustomMetadata_1>, "defaultProvider"> | undefined): FieldSchemaAlpha_2<FieldKind_2.Optional, UnannotateImplicitAllowedTypes_2<T_1>, TCustomMetadata_1>;
|
|
803
|
+
};
|
|
804
|
+
readonly optional: {
|
|
805
|
+
<const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldPropsAlpha_2<TCustomMetadata>, "defaultProvider"> | undefined): FieldSchemaAlpha_2<FieldKind_2.Optional, T, TCustomMetadata>;
|
|
806
|
+
<const T_1 extends ImplicitAnnotatedAllowedTypes, const TCustomMetadata_1 = unknown>(t: T_1, props?: Omit<FieldPropsAlpha_2<TCustomMetadata_1>, "defaultProvider"> | undefined): FieldSchemaAlpha_2<FieldKind_2.Optional, UnannotateImplicitAllowedTypes_2<T_1>, TCustomMetadata_1>;
|
|
777
807
|
};
|
|
778
|
-
static readonly optionalRecursive: <const T extends System_Unsafe.ImplicitAllowedTypesUnsafe, const TCustomMetadata = unknown>(t: T, props?: Omit<
|
|
808
|
+
static readonly optionalRecursive: <const T extends System_Unsafe.ImplicitAllowedTypesUnsafe, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldPropsAlpha_2<TCustomMetadata>, "defaultProvider"> | undefined) => FieldSchemaAlphaUnsafe_2<FieldKind_2.Optional, T, TCustomMetadata>;
|
|
809
|
+
readonly optionalRecursive: <const T extends System_Unsafe.ImplicitAllowedTypesUnsafe, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldPropsAlpha_2<TCustomMetadata>, "defaultProvider"> | undefined) => FieldSchemaAlphaUnsafe_2<FieldKind_2.Optional, T, TCustomMetadata>;
|
|
779
810
|
static readonly required: {
|
|
780
|
-
<const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<
|
|
781
|
-
<const T_1 extends ImplicitAnnotatedAllowedTypes, const TCustomMetadata_1 = unknown>(t: T_1, props?: Omit<
|
|
811
|
+
<const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldPropsAlpha_2<TCustomMetadata>, "defaultProvider"> | undefined): FieldSchemaAlpha_2<FieldKind_2.Required, T, TCustomMetadata>;
|
|
812
|
+
<const T_1 extends ImplicitAnnotatedAllowedTypes, const TCustomMetadata_1 = unknown>(t: T_1, props?: Omit<FieldPropsAlpha_2<TCustomMetadata_1>, "defaultProvider"> | undefined): FieldSchemaAlpha_2<FieldKind_2.Required, UnannotateImplicitAllowedTypes_2<T_1>, TCustomMetadata_1>;
|
|
813
|
+
};
|
|
814
|
+
readonly required: {
|
|
815
|
+
<const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldPropsAlpha_2<TCustomMetadata>, "defaultProvider"> | undefined): FieldSchemaAlpha_2<FieldKind_2.Required, T, TCustomMetadata>;
|
|
816
|
+
<const T_1 extends ImplicitAnnotatedAllowedTypes, const TCustomMetadata_1 = unknown>(t: T_1, props?: Omit<FieldPropsAlpha_2<TCustomMetadata_1>, "defaultProvider"> | undefined): FieldSchemaAlpha_2<FieldKind_2.Required, UnannotateImplicitAllowedTypes_2<T_1>, TCustomMetadata_1>;
|
|
782
817
|
};
|
|
818
|
+
static readonly requiredRecursive: <const T extends System_Unsafe.ImplicitAllowedTypesUnsafe, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldPropsAlpha_2<TCustomMetadata>, "defaultProvider"> | undefined) => FieldSchemaAlphaUnsafe_2<FieldKind_2.Required, T, TCustomMetadata>;
|
|
819
|
+
readonly requiredRecursive: <const T extends System_Unsafe.ImplicitAllowedTypesUnsafe, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldPropsAlpha_2<TCustomMetadata>, "defaultProvider"> | undefined) => FieldSchemaAlphaUnsafe_2<FieldKind_2.Required, T, TCustomMetadata>;
|
|
783
820
|
scopedFactory<const T extends TName, TNameInner extends number | string = string>(name: T): SchemaFactoryAlpha<ScopedSchemaName<TScope, T>, TNameInner>;
|
|
784
821
|
}
|
|
785
822
|
|
|
786
823
|
// @alpha
|
|
787
|
-
export interface SchemaFactoryObjectOptions<TCustomMetadata = unknown> extends
|
|
824
|
+
export interface SchemaFactoryObjectOptions<TCustomMetadata = unknown> extends NodeSchemaOptionsAlpha<TCustomMetadata> {
|
|
788
825
|
allowUnknownOptionalFields?: boolean;
|
|
789
826
|
}
|
|
790
827
|
|
|
@@ -827,6 +864,7 @@ export const SharedTreeFormatVersion: {
|
|
|
827
864
|
readonly v1: 1;
|
|
828
865
|
readonly v2: 2;
|
|
829
866
|
readonly v3: 3;
|
|
867
|
+
readonly v5: 5;
|
|
830
868
|
};
|
|
831
869
|
|
|
832
870
|
// @alpha
|
|
@@ -836,7 +874,7 @@ export type SharedTreeFormatVersion = typeof SharedTreeFormatVersion;
|
|
|
836
874
|
export type SharedTreeOptions = Partial<CodecWriteOptions> & Partial<SharedTreeFormatOptions> & ForestOptions;
|
|
837
875
|
|
|
838
876
|
// @alpha @sealed
|
|
839
|
-
export interface SimpleArrayNodeSchema<out TCustomMetadata = unknown> extends
|
|
877
|
+
export interface SimpleArrayNodeSchema<out TCustomMetadata = unknown> extends SimpleNodeSchemaBaseAlpha<NodeKind.Array, TCustomMetadata> {
|
|
840
878
|
readonly allowedTypesIdentifiers: ReadonlySet<string>;
|
|
841
879
|
}
|
|
842
880
|
|
|
@@ -845,15 +883,16 @@ export interface SimpleFieldSchema {
|
|
|
845
883
|
readonly allowedTypesIdentifiers: ReadonlySet<string>;
|
|
846
884
|
readonly kind: FieldKind;
|
|
847
885
|
readonly metadata: FieldSchemaMetadata;
|
|
886
|
+
readonly persistedMetadata?: JsonCompatibleReadOnlyObject | undefined;
|
|
848
887
|
}
|
|
849
888
|
|
|
850
889
|
// @alpha @sealed
|
|
851
|
-
export interface SimpleLeafNodeSchema extends
|
|
890
|
+
export interface SimpleLeafNodeSchema extends SimpleNodeSchemaBaseAlpha<NodeKind.Leaf> {
|
|
852
891
|
readonly leafKind: ValueSchema;
|
|
853
892
|
}
|
|
854
893
|
|
|
855
894
|
// @alpha @sealed
|
|
856
|
-
export interface SimpleMapNodeSchema<out TCustomMetadata = unknown> extends
|
|
895
|
+
export interface SimpleMapNodeSchema<out TCustomMetadata = unknown> extends SimpleNodeSchemaBaseAlpha<NodeKind.Map, TCustomMetadata> {
|
|
857
896
|
readonly allowedTypesIdentifiers: ReadonlySet<string>;
|
|
858
897
|
}
|
|
859
898
|
|
|
@@ -866,13 +905,18 @@ export interface SimpleNodeSchemaBase<out TNodeKind extends NodeKind, out TCusto
|
|
|
866
905
|
readonly metadata: NodeSchemaMetadata<TCustomMetadata>;
|
|
867
906
|
}
|
|
868
907
|
|
|
908
|
+
// @alpha @sealed @system
|
|
909
|
+
export interface SimpleNodeSchemaBaseAlpha<out TNodeKind extends NodeKind, out TCustomMetadata = unknown> extends SimpleNodeSchemaBase<TNodeKind, TCustomMetadata> {
|
|
910
|
+
readonly persistedMetadata: JsonCompatibleReadOnlyObject | undefined;
|
|
911
|
+
}
|
|
912
|
+
|
|
869
913
|
// @alpha @sealed
|
|
870
914
|
export interface SimpleObjectFieldSchema extends SimpleFieldSchema {
|
|
871
915
|
readonly storedKey: string;
|
|
872
916
|
}
|
|
873
917
|
|
|
874
918
|
// @alpha @sealed
|
|
875
|
-
export interface SimpleObjectNodeSchema<out TCustomMetadata = unknown> extends
|
|
919
|
+
export interface SimpleObjectNodeSchema<out TCustomMetadata = unknown> extends SimpleNodeSchemaBaseAlpha<NodeKind.Object, TCustomMetadata> {
|
|
876
920
|
readonly fields: ReadonlyMap<string, SimpleObjectFieldSchema>;
|
|
877
921
|
}
|
|
878
922
|
|
|
@@ -885,7 +929,7 @@ export interface SimpleTreeSchema {
|
|
|
885
929
|
readonly root: SimpleFieldSchema;
|
|
886
930
|
}
|
|
887
931
|
|
|
888
|
-
// @
|
|
932
|
+
// @beta
|
|
889
933
|
export function singletonSchema<TScope extends string, TName extends string | number>(factory: SchemaFactory<TScope, TName>, name: TName): TreeNodeSchemaClass<ScopedSchemaName<TScope, TName>, NodeKind.Object, TreeNode & {
|
|
890
934
|
readonly value: TName;
|
|
891
935
|
}, Record<string, never>, true, Record<string, never>, undefined>;
|
|
@@ -920,7 +964,7 @@ export namespace System_TableSchema {
|
|
|
920
964
|
}), true, {
|
|
921
965
|
readonly props: TPropsSchema;
|
|
922
966
|
readonly id: FieldSchema_2<FieldKind_3.Identifier, LeafSchema_3<"string", string>, unknown>;
|
|
923
|
-
readonly cells:
|
|
967
|
+
readonly cells: FieldSchemaAlpha_3<FieldKind_3.Required, TreeNodeSchemaClass<ScopedSchemaName<ScopedSchemaName<TInputScope, "table">, "Row.cells">, NodeKind.Map, TreeMapNode_2<TCellSchema> & WithType<ScopedSchemaName<ScopedSchemaName<TInputScope, "table">, "Row.cells">, NodeKind.Map, unknown>, MapNodeInsertableData_2<TCellSchema>, true, TCellSchema, undefined>, unknown>;
|
|
924
968
|
}>;
|
|
925
969
|
// @system
|
|
926
970
|
export function createTableSchema<const TInputScope extends string | undefined, const TCellSchema extends ImplicitAllowedTypes, const TColumnSchema extends ColumnSchemaBase<TInputScope, TCellSchema>, const TRowSchema extends RowSchemaBase<TInputScope, TCellSchema>>(inputSchemaFactory: SchemaFactoryAlpha<TInputScope>, _cellSchema: TCellSchema, columnSchema: TColumnSchema, rowSchema: TRowSchema): TreeNodeSchemaCore_2<ScopedSchemaName<ScopedSchemaName<TInputScope, "table">, "Table">, NodeKind.Object, true, {
|
|
@@ -1178,6 +1222,8 @@ export const Tree: Tree;
|
|
|
1178
1222
|
// @alpha @sealed @system
|
|
1179
1223
|
export interface TreeAlpha {
|
|
1180
1224
|
branch(node: TreeNode): TreeBranch | undefined;
|
|
1225
|
+
child(node: TreeNode, key: string | number): TreeNode | TreeLeafValue | undefined;
|
|
1226
|
+
children(node: TreeNode): Iterable<[propertyKey: string | number, child: TreeNode | TreeLeafValue]>;
|
|
1181
1227
|
create<const TSchema extends ImplicitFieldSchema | UnsafeUnknownSchema>(schema: UnsafeUnknownSchema extends TSchema ? ImplicitFieldSchema : TSchema & ImplicitFieldSchema, data: InsertableField<TSchema>): Unhydrated<TSchema extends ImplicitFieldSchema ? TreeFieldFromImplicitField<TSchema> : TreeNode | TreeLeafValue | undefined>;
|
|
1182
1228
|
exportCompressed(tree: TreeNode | TreeLeafValue, options: {
|
|
1183
1229
|
idCompressor?: IIdCompressor;
|
|
@@ -1415,6 +1461,7 @@ export interface TreeViewAlpha<in out TSchema extends ImplicitFieldSchema | Unsa
|
|
|
1415
1461
|
// @public @sealed
|
|
1416
1462
|
export class TreeViewConfiguration<const TSchema extends ImplicitFieldSchema = ImplicitFieldSchema> implements Required<ITreeViewConfiguration<TSchema>> {
|
|
1417
1463
|
constructor(props: ITreeViewConfiguration<TSchema>);
|
|
1464
|
+
protected readonly definitionsInternal: ReadonlyMap<string, TreeNodeSchema>;
|
|
1418
1465
|
readonly enableSchemaValidation: boolean;
|
|
1419
1466
|
readonly preventAmbiguity: boolean;
|
|
1420
1467
|
readonly schema: TSchema;
|
|
@@ -1425,7 +1472,7 @@ export class TreeViewConfiguration<const TSchema extends ImplicitFieldSchema = I
|
|
|
1425
1472
|
// @alpha @sealed
|
|
1426
1473
|
export class TreeViewConfigurationAlpha<const TSchema extends ImplicitFieldSchema = ImplicitFieldSchema> extends TreeViewConfiguration<TSchema> implements TreeSchema {
|
|
1427
1474
|
constructor(props: ITreeViewConfiguration<TSchema>);
|
|
1428
|
-
|
|
1475
|
+
get definitions(): ReadonlyMap<string, SimpleNodeSchema & TreeNodeSchema>;
|
|
1429
1476
|
readonly root: FieldSchemaAlpha;
|
|
1430
1477
|
}
|
|
1431
1478
|
|
|
@@ -1479,7 +1526,7 @@ export type Unhydrated<T> = T;
|
|
|
1479
1526
|
// @public @system
|
|
1480
1527
|
export type UnionToIntersection<T> = (T extends T ? (k: T) => unknown : never) extends (k: infer U) => unknown ? U : never;
|
|
1481
1528
|
|
|
1482
|
-
// @
|
|
1529
|
+
// @beta @system
|
|
1483
1530
|
export type UnionToTuple<Union, A extends unknown[] = [], First = PopUnion<Union>> = IsUnion<Union> extends true ? UnionToTuple<Exclude<Union, First>, [First, ...A]> : [Union, ...A];
|
|
1484
1531
|
|
|
1485
1532
|
// @alpha
|
|
@@ -4,6 +4,17 @@
|
|
|
4
4
|
|
|
5
5
|
```ts
|
|
6
6
|
|
|
7
|
+
// @beta
|
|
8
|
+
export function adaptEnum<TScope extends string, const TEnum extends Record<string, string | number>>(factory: SchemaFactory<TScope>, members: TEnum): (<TValue extends TEnum[keyof TEnum]>(value: TValue) => TValue extends unknown ? TreeNode & {
|
|
9
|
+
readonly value: TValue;
|
|
10
|
+
} : never) & { readonly [Property in keyof TEnum]: TreeNodeSchemaClass<ScopedSchemaName<TScope, TEnum[Property]>, NodeKind.Object, TreeNode & {
|
|
11
|
+
readonly value: TEnum[Property];
|
|
12
|
+
}, Record<string, never>, true, Record<string, never>, undefined>; } & {
|
|
13
|
+
readonly schema: UnionToTuple<{ readonly [Property in keyof TEnum]: TreeNodeSchemaClass<ScopedSchemaName<TScope, TEnum[Property]>, NodeKind.Object, TreeNode & {
|
|
14
|
+
readonly value: TEnum[Property];
|
|
15
|
+
}, Record<string, never>, true, Record<string, never>, undefined>; }[keyof TEnum]>;
|
|
16
|
+
};
|
|
17
|
+
|
|
7
18
|
// @public @system
|
|
8
19
|
export type AllowedTypes = readonly LazyItem<TreeNodeSchema>[];
|
|
9
20
|
|
|
@@ -36,6 +47,17 @@ export interface CommitMetadata {
|
|
|
36
47
|
interface DefaultProvider extends ErasedType<"@fluidframework/tree.FieldProvider"> {
|
|
37
48
|
}
|
|
38
49
|
|
|
50
|
+
// @beta
|
|
51
|
+
export function enumFromStrings<TScope extends string, const Members extends readonly string[]>(factory: SchemaFactory<TScope>, members: Members): (<TValue extends Members[number]>(value: TValue) => TValue extends unknown ? TreeNode & {
|
|
52
|
+
readonly value: TValue;
|
|
53
|
+
} : never) & { [Index in Extract<keyof Members, `${number}`> extends `${infer N extends number}` ? N : never as Members[Index]]: TreeNodeSchemaClass<ScopedSchemaName<TScope, Members[Index]>, NodeKind.Object, TreeNode & {
|
|
54
|
+
readonly value: Members[Index];
|
|
55
|
+
}, Record<string, never>, true, Record<string, never>, undefined>; } & {
|
|
56
|
+
readonly schema: UnionToTuple<Members[number] extends unknown ? { [Index in Extract<keyof Members, `${number}`> extends `${infer N extends number}` ? N : never as Members[Index]]: TreeNodeSchemaClass<ScopedSchemaName<TScope, Members[Index]>, NodeKind.Object, TreeNode & {
|
|
57
|
+
readonly value: Members[Index];
|
|
58
|
+
}, Record<string, never>, true, Record<string, never>, undefined>; }[Members[number]] : never>;
|
|
59
|
+
};
|
|
60
|
+
|
|
39
61
|
// @public @system
|
|
40
62
|
type ExtractItemType<Item extends LazyItem> = Item extends () => infer Result ? Result : Item;
|
|
41
63
|
|
|
@@ -242,6 +264,9 @@ export type ObjectFromSchemaRecord<T extends RestrictiveStringRecord<ImplicitFie
|
|
|
242
264
|
// @public @deprecated
|
|
243
265
|
export type Off = Off_2;
|
|
244
266
|
|
|
267
|
+
// @beta @system
|
|
268
|
+
export type PopUnion<Union, AsOverloadedFunction = UnionToIntersection<Union extends unknown ? (f: Union) => void : never>> = AsOverloadedFunction extends (a: infer First) => void ? First : never;
|
|
269
|
+
|
|
245
270
|
// @public @sealed @system
|
|
246
271
|
export interface ReadonlyArrayNode<out T = TreeNode | TreeLeafValue> extends ReadonlyArray<T>, Awaited<TreeNode & WithType<string, NodeKind.Array>> {
|
|
247
272
|
}
|
|
@@ -377,6 +402,11 @@ export interface SimpleNodeSchemaBase<out TNodeKind extends NodeKind, out TCusto
|
|
|
377
402
|
readonly metadata: NodeSchemaMetadata<TCustomMetadata>;
|
|
378
403
|
}
|
|
379
404
|
|
|
405
|
+
// @beta
|
|
406
|
+
export function singletonSchema<TScope extends string, TName extends string | number>(factory: SchemaFactory<TScope, TName>, name: TName): TreeNodeSchemaClass<ScopedSchemaName<TScope, TName>, NodeKind.Object, TreeNode & {
|
|
407
|
+
readonly value: TName;
|
|
408
|
+
}, Record<string, never>, true, Record<string, never>, undefined>;
|
|
409
|
+
|
|
380
410
|
// @public @system
|
|
381
411
|
export namespace System_Unsafe {
|
|
382
412
|
// @system
|
|
@@ -612,6 +642,7 @@ export interface TreeView<in out TSchema extends ImplicitFieldSchema> extends ID
|
|
|
612
642
|
// @public @sealed
|
|
613
643
|
export class TreeViewConfiguration<const TSchema extends ImplicitFieldSchema = ImplicitFieldSchema> implements Required<ITreeViewConfiguration<TSchema>> {
|
|
614
644
|
constructor(props: ITreeViewConfiguration<TSchema>);
|
|
645
|
+
protected readonly definitionsInternal: ReadonlyMap<string, TreeNodeSchema>;
|
|
615
646
|
readonly enableSchemaValidation: boolean;
|
|
616
647
|
readonly preventAmbiguity: boolean;
|
|
617
648
|
readonly schema: TSchema;
|
|
@@ -641,6 +672,9 @@ export type Unhydrated<T> = T;
|
|
|
641
672
|
// @public @system
|
|
642
673
|
export type UnionToIntersection<T> = (T extends T ? (k: T) => unknown : never) extends (k: infer U) => unknown ? U : never;
|
|
643
674
|
|
|
675
|
+
// @beta @system
|
|
676
|
+
export type UnionToTuple<Union, A extends unknown[] = [], First = PopUnion<Union>> = IsUnion<Union> extends true ? UnionToTuple<Exclude<Union, First>, [First, ...A]> : [Union, ...A];
|
|
677
|
+
|
|
644
678
|
// @public
|
|
645
679
|
export type ValidateRecursiveSchema<T extends ValidateRecursiveSchemaTemplate<T>> = true;
|
|
646
680
|
|
|
@@ -602,6 +602,7 @@ export interface TreeView<in out TSchema extends ImplicitFieldSchema> extends ID
|
|
|
602
602
|
// @public @sealed
|
|
603
603
|
export class TreeViewConfiguration<const TSchema extends ImplicitFieldSchema = ImplicitFieldSchema> implements Required<ITreeViewConfiguration<TSchema>> {
|
|
604
604
|
constructor(props: ITreeViewConfiguration<TSchema>);
|
|
605
|
+
protected readonly definitionsInternal: ReadonlyMap<string, TreeNodeSchema>;
|
|
605
606
|
readonly enableSchemaValidation: boolean;
|
|
606
607
|
readonly preventAmbiguity: boolean;
|
|
607
608
|
readonly schema: TSchema;
|
|
@@ -593,6 +593,7 @@ export interface TreeView<in out TSchema extends ImplicitFieldSchema> extends ID
|
|
|
593
593
|
// @public @sealed
|
|
594
594
|
export class TreeViewConfiguration<const TSchema extends ImplicitFieldSchema = ImplicitFieldSchema> implements Required<ITreeViewConfiguration<TSchema>> {
|
|
595
595
|
constructor(props: ITreeViewConfiguration<TSchema>);
|
|
596
|
+
protected readonly definitionsInternal: ReadonlyMap<string, TreeNodeSchema>;
|
|
596
597
|
readonly enableSchemaValidation: boolean;
|
|
597
598
|
readonly preventAmbiguity: boolean;
|
|
598
599
|
readonly schema: TSchema;
|
|
@@ -593,6 +593,7 @@ export interface TreeView<in out TSchema extends ImplicitFieldSchema> extends ID
|
|
|
593
593
|
// @public @sealed
|
|
594
594
|
export class TreeViewConfiguration<const TSchema extends ImplicitFieldSchema = ImplicitFieldSchema> implements Required<ITreeViewConfiguration<TSchema>> {
|
|
595
595
|
constructor(props: ITreeViewConfiguration<TSchema>);
|
|
596
|
+
protected readonly definitionsInternal: ReadonlyMap<string, TreeNodeSchema>;
|
|
596
597
|
readonly enableSchemaValidation: boolean;
|
|
597
598
|
readonly preventAmbiguity: boolean;
|
|
598
599
|
readonly schema: TSchema;
|
package/dist/alpha.d.ts
CHANGED
|
@@ -90,8 +90,13 @@ export {
|
|
|
90
90
|
|
|
91
91
|
// @beta APIs
|
|
92
92
|
NodeChangedData,
|
|
93
|
+
PopUnion,
|
|
93
94
|
TreeBeta,
|
|
94
|
-
TreeChangeEventsBeta,
|
|
95
|
+
TreeChangeEventsBeta,
|
|
96
|
+
UnionToTuple,
|
|
97
|
+
adaptEnum,
|
|
98
|
+
enumFromStrings,
|
|
99
|
+
singletonSchema,
|
|
95
100
|
|
|
96
101
|
// @alpha APIs
|
|
97
102
|
AllowedTypeMetadata,
|
|
@@ -107,6 +112,7 @@ export {
|
|
|
107
112
|
ConciseTree,
|
|
108
113
|
FactoryContent,
|
|
109
114
|
FactoryContentObject,
|
|
115
|
+
FieldPropsAlpha,
|
|
110
116
|
FieldSchemaAlpha,
|
|
111
117
|
FieldSchemaAlphaUnsafe,
|
|
112
118
|
FixRecursiveArraySchema,
|
|
@@ -130,6 +136,8 @@ export {
|
|
|
130
136
|
JsonAsTree,
|
|
131
137
|
JsonCompatible,
|
|
132
138
|
JsonCompatibleObject,
|
|
139
|
+
JsonCompatibleReadOnly,
|
|
140
|
+
JsonCompatibleReadOnlyObject,
|
|
133
141
|
JsonFieldSchema,
|
|
134
142
|
JsonLeafNodeSchema,
|
|
135
143
|
JsonLeafSchemaType,
|
|
@@ -147,8 +155,9 @@ export {
|
|
|
147
155
|
MapNodeCustomizableSchemaUnsafe,
|
|
148
156
|
MapNodePojoEmulationSchema,
|
|
149
157
|
MapNodeSchema,
|
|
158
|
+
NodeSchemaOptionsAlpha,
|
|
159
|
+
NormalizedAnnotatedAllowedTypes,
|
|
150
160
|
ObjectNodeSchema,
|
|
151
|
-
PopUnion,
|
|
152
161
|
ReadSchema,
|
|
153
162
|
ReadableField,
|
|
154
163
|
RevertibleAlpha,
|
|
@@ -165,6 +174,7 @@ export {
|
|
|
165
174
|
SimpleLeafNodeSchema,
|
|
166
175
|
SimpleMapNodeSchema,
|
|
167
176
|
SimpleNodeSchema,
|
|
177
|
+
SimpleNodeSchemaBaseAlpha,
|
|
168
178
|
SimpleObjectFieldSchema,
|
|
169
179
|
SimpleObjectNodeSchema,
|
|
170
180
|
SimpleTreeIndex,
|
|
@@ -197,21 +207,18 @@ export {
|
|
|
197
207
|
UnannotateImplicitAllowedTypes,
|
|
198
208
|
UnannotateImplicitFieldSchema,
|
|
199
209
|
UnannotateSchemaRecord,
|
|
200
|
-
UnionToTuple,
|
|
201
210
|
UnsafeUnknownSchema,
|
|
202
211
|
ValueSchema,
|
|
203
212
|
VerboseTree,
|
|
204
213
|
VerboseTreeNode,
|
|
205
214
|
ViewContent,
|
|
206
215
|
VoidTransactionCallbackStatus,
|
|
207
|
-
adaptEnum,
|
|
208
216
|
allowUnused,
|
|
209
217
|
asTreeViewAlpha,
|
|
210
218
|
cloneWithReplacements,
|
|
211
219
|
comparePersistedSchema,
|
|
212
220
|
createIdentifierIndex,
|
|
213
221
|
createSimpleTreeIndex,
|
|
214
|
-
enumFromStrings,
|
|
215
222
|
evaluateLazySchema,
|
|
216
223
|
extractPersistedSchema,
|
|
217
224
|
generateSchemaFromSimpleSchema,
|
|
@@ -225,6 +232,5 @@ export {
|
|
|
225
232
|
replaceConciseTreeHandles,
|
|
226
233
|
replaceHandles,
|
|
227
234
|
replaceVerboseTreeHandles,
|
|
228
|
-
singletonSchema,
|
|
229
235
|
typeboxValidator
|
|
230
236
|
} from "./index.js";
|