@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
|
@@ -10,7 +10,6 @@ import {
|
|
|
10
10
|
type AnchorNode,
|
|
11
11
|
CursorLocationType,
|
|
12
12
|
type FieldKey,
|
|
13
|
-
type ITreeCursorSynchronous,
|
|
14
13
|
type FieldKindIdentifier,
|
|
15
14
|
type ITreeSubscriptionCursor,
|
|
16
15
|
type TreeNavigationResult,
|
|
@@ -75,14 +74,14 @@ export class LazyTreeNode extends LazyEntity<Anchor> implements HydratedFlexTree
|
|
|
75
74
|
|
|
76
75
|
public constructor(
|
|
77
76
|
context: Context,
|
|
78
|
-
public readonly
|
|
77
|
+
public readonly type: TreeNodeSchemaIdentifier,
|
|
79
78
|
cursor: ITreeSubscriptionCursor,
|
|
80
79
|
public readonly anchorNode: AnchorNode,
|
|
81
80
|
anchor: Anchor,
|
|
82
81
|
) {
|
|
83
82
|
super(context, cursor, anchor);
|
|
84
83
|
this.storedSchema =
|
|
85
|
-
context.schema.nodeSchema.get(this.
|
|
84
|
+
context.schema.nodeSchema.get(this.type) ?? fail(0xb14 /* missing schema */);
|
|
86
85
|
assert(cursor.mode === CursorLocationType.Nodes, 0x783 /* must be in nodes mode */);
|
|
87
86
|
anchorNode.slots.set(flexTreeSlot, this);
|
|
88
87
|
this.#removeDeleteCallback = anchorNode.events.on("afterDestroy", cleanupTree);
|
|
@@ -92,10 +91,6 @@ export class LazyTreeNode extends LazyEntity<Anchor> implements HydratedFlexTree
|
|
|
92
91
|
return true;
|
|
93
92
|
}
|
|
94
93
|
|
|
95
|
-
public borrowCursor(): ITreeCursorSynchronous {
|
|
96
|
-
return this.cursor as ITreeCursorSynchronous;
|
|
97
|
-
}
|
|
98
|
-
|
|
99
94
|
protected override tryMoveCursorToAnchor(
|
|
100
95
|
cursor: ITreeSubscriptionCursor,
|
|
101
96
|
): TreeNavigationResult {
|
|
@@ -115,6 +110,20 @@ export class LazyTreeNode extends LazyEntity<Anchor> implements HydratedFlexTree
|
|
|
115
110
|
return this.cursor.value;
|
|
116
111
|
}
|
|
117
112
|
|
|
113
|
+
public readonly fields: Pick<Map<FieldKey, FlexTreeField>, typeof Symbol.iterator | "get"> =
|
|
114
|
+
{
|
|
115
|
+
get: (key: FieldKey): FlexTreeField | undefined => this.tryGetField(key),
|
|
116
|
+
[Symbol.iterator]: (): IterableIterator<[FieldKey, FlexTreeField]> =>
|
|
117
|
+
mapCursorFields(this.cursor, (cursor) => {
|
|
118
|
+
const key: FieldKey = cursor.getFieldKey();
|
|
119
|
+
const pair: [FieldKey, FlexTreeField] = [
|
|
120
|
+
key,
|
|
121
|
+
makeField(this.context, this.storedSchema.getFieldSchema(key).kind, cursor),
|
|
122
|
+
];
|
|
123
|
+
return pair;
|
|
124
|
+
}).values(),
|
|
125
|
+
};
|
|
126
|
+
|
|
118
127
|
public tryGetField(fieldKey: FieldKey): FlexTreeField | undefined {
|
|
119
128
|
const schema = this.storedSchema.getFieldSchema(fieldKey);
|
|
120
129
|
return inCursorField(this.cursor, fieldKey, (cursor) => {
|
|
@@ -132,7 +141,7 @@ export class LazyTreeNode extends LazyEntity<Anchor> implements HydratedFlexTree
|
|
|
132
141
|
});
|
|
133
142
|
}
|
|
134
143
|
|
|
135
|
-
public
|
|
144
|
+
public [Symbol.iterator](): IterableIterator<FlexTreeField> {
|
|
136
145
|
return mapCursorFields(this.cursor, (cursor) =>
|
|
137
146
|
makeField(
|
|
138
147
|
this.context,
|
|
@@ -8,6 +8,7 @@ import { assert } from "@fluidframework/core-utils/internal";
|
|
|
8
8
|
import type { IChannelStorageService } from "@fluidframework/datastore-definitions/internal";
|
|
9
9
|
import type { IIdCompressor } from "@fluidframework/id-compressor";
|
|
10
10
|
import type {
|
|
11
|
+
IExperimentalIncrementalSummaryContext,
|
|
11
12
|
ISummaryTreeWithStats,
|
|
12
13
|
ITelemetryContext,
|
|
13
14
|
} from "@fluidframework/runtime-definitions/internal";
|
|
@@ -95,22 +96,14 @@ export class ForestSummarizer implements Summarizable {
|
|
|
95
96
|
return stringify(encoded);
|
|
96
97
|
}
|
|
97
98
|
|
|
98
|
-
public
|
|
99
|
-
stringify: SummaryElementStringifier
|
|
100
|
-
fullTree?: boolean
|
|
101
|
-
trackState?: boolean
|
|
102
|
-
telemetryContext?: ITelemetryContext
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
public async summarize(
|
|
108
|
-
stringify: SummaryElementStringifier,
|
|
109
|
-
fullTree?: boolean,
|
|
110
|
-
trackState?: boolean,
|
|
111
|
-
telemetryContext?: ITelemetryContext,
|
|
112
|
-
): Promise<ISummaryTreeWithStats> {
|
|
113
|
-
return createSingleBlobSummary(treeBlobKey, this.getTreeString(stringify));
|
|
99
|
+
public summarize(props: {
|
|
100
|
+
stringify: SummaryElementStringifier;
|
|
101
|
+
fullTree?: boolean;
|
|
102
|
+
trackState?: boolean;
|
|
103
|
+
telemetryContext?: ITelemetryContext;
|
|
104
|
+
incrementalSummaryContext?: IExperimentalIncrementalSummaryContext;
|
|
105
|
+
}): ISummaryTreeWithStats {
|
|
106
|
+
return createSingleBlobSummary(treeBlobKey, this.getTreeString(props.stringify));
|
|
114
107
|
}
|
|
115
108
|
|
|
116
109
|
public async load(
|
|
@@ -20,6 +20,7 @@ export {
|
|
|
20
20
|
mapTreeWithField,
|
|
21
21
|
type MapTreeFieldViewGeneric,
|
|
22
22
|
type MapTreeNodeViewGeneric,
|
|
23
|
+
type MinimalFieldMap,
|
|
23
24
|
} from "./mapTreeCursor.js";
|
|
24
25
|
export { buildForest } from "./object-forest/index.js";
|
|
25
26
|
export {
|
|
@@ -157,7 +158,6 @@ export {
|
|
|
157
158
|
type FlexTreeOptionalField,
|
|
158
159
|
type FlexTreeRequiredField,
|
|
159
160
|
type FlexTreeSequenceField,
|
|
160
|
-
Skip,
|
|
161
161
|
type FlexTreeContext,
|
|
162
162
|
type FlexTreeHydratedContext,
|
|
163
163
|
type FlexTreeTypedField,
|
|
@@ -42,19 +42,28 @@ export interface MapTreeNodeViewGeneric<TNode> extends NodeData {
|
|
|
42
42
|
* This is the subset of map needed to view the tree.
|
|
43
43
|
* Theoretically `Symbol.iterator` and "keys" are redundant.
|
|
44
44
|
*/
|
|
45
|
-
readonly fields:
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
45
|
+
readonly fields: MinimalFieldMap<MapTreeFieldViewGeneric<TNode>>;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* A minimal map for the fields of a {@link MapTreeNodeViewGeneric}.
|
|
50
|
+
* @remarks
|
|
51
|
+
* Subset of map, so can be implemented by `Map<FieldKey, TField>`.
|
|
52
|
+
*/
|
|
53
|
+
export interface MinimalFieldMap<TField> {
|
|
54
|
+
[Symbol.iterator]: () => Iterator<[FieldKey, TField]>;
|
|
55
|
+
get: (key: FieldKey) => TField | undefined;
|
|
49
56
|
}
|
|
50
57
|
|
|
51
58
|
/**
|
|
52
59
|
* A field in {@link MapTreeNodeViewGeneric}.
|
|
60
|
+
* @remarks
|
|
61
|
+
* Subset of array, so can be implemented by `TNode[]`.
|
|
53
62
|
*/
|
|
54
|
-
export
|
|
55
|
-
readonly
|
|
56
|
-
|
|
57
|
-
|
|
63
|
+
export interface MapTreeFieldViewGeneric<TNode> {
|
|
64
|
+
readonly [Symbol.iterator]: () => Iterator<TNode>;
|
|
65
|
+
readonly length: number;
|
|
66
|
+
}
|
|
58
67
|
|
|
59
68
|
/**
|
|
60
69
|
* Like {@link MapTree} but with the minimal properties needed for reading.
|
|
@@ -154,6 +154,9 @@ export class ObjectForest implements IEditableForest, WithBreakable {
|
|
|
154
154
|
// Some detached fields may have multiple nodes, so we must treat them as sequences:
|
|
155
155
|
kind: FieldKinds.sequence.identifier,
|
|
156
156
|
types: new Set(documentRoot.map((node) => node.type)),
|
|
157
|
+
|
|
158
|
+
// Metadata is not used for schema checks
|
|
159
|
+
persistedMetadata: undefined,
|
|
157
160
|
};
|
|
158
161
|
const maybeError = isFieldInSchema(documentRoot, fieldSchema, {
|
|
159
162
|
schema,
|
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
makeVersionDispatchingCodec,
|
|
14
14
|
withSchemaValidation,
|
|
15
15
|
} from "../../codec/index.js";
|
|
16
|
-
import { makeSchemaCodec
|
|
16
|
+
import { makeSchemaCodec } from "../schema-index/index.js";
|
|
17
17
|
|
|
18
18
|
import { EncodedSchemaChange } from "./schemaChangeFormat.js";
|
|
19
19
|
import type { SchemaChange } from "./schemaChangeTypes.js";
|
|
@@ -25,7 +25,10 @@ import { SchemaVersion } from "../../core/index.js";
|
|
|
25
25
|
* @returns The composed codec family.
|
|
26
26
|
*/
|
|
27
27
|
export function makeSchemaChangeCodecs(options: ICodecOptions): ICodecFamily<SchemaChange> {
|
|
28
|
-
return makeCodecFamily([
|
|
28
|
+
return makeCodecFamily([
|
|
29
|
+
[SchemaVersion.v1, makeSchemaChangeCodecV1(options, SchemaVersion.v1)],
|
|
30
|
+
[SchemaVersion.v2, makeSchemaChangeCodecV1(options, SchemaVersion.v2)],
|
|
31
|
+
]);
|
|
29
32
|
}
|
|
30
33
|
|
|
31
34
|
/**
|
|
@@ -43,14 +46,16 @@ export function makeSchemaChangeCodec(
|
|
|
43
46
|
}
|
|
44
47
|
|
|
45
48
|
/**
|
|
46
|
-
* Compose the
|
|
49
|
+
* Compose the change codec using mostly v1 logic.
|
|
47
50
|
* @param options - The codec options.
|
|
51
|
+
* @param schemaWriteVersion - The schema write version.
|
|
48
52
|
* @returns The composed schema change codec.
|
|
49
53
|
*/
|
|
50
54
|
function makeSchemaChangeCodecV1(
|
|
51
55
|
options: ICodecOptions,
|
|
56
|
+
schemaWriteVersion: SchemaVersion,
|
|
52
57
|
): IJsonCodec<SchemaChange, EncodedSchemaChange> {
|
|
53
|
-
const schemaCodec = makeSchemaCodec(options,
|
|
58
|
+
const schemaCodec = makeSchemaCodec(options, schemaWriteVersion);
|
|
54
59
|
const schemaChangeCodec: IJsonCodec<SchemaChange, EncodedSchemaChange> = {
|
|
55
60
|
encode: (schemaChange) => {
|
|
56
61
|
assert(
|
|
@@ -58,8 +63,8 @@ function makeSchemaChangeCodecV1(
|
|
|
58
63
|
0x933 /* Inverse schema changes should never be transmitted */,
|
|
59
64
|
);
|
|
60
65
|
return {
|
|
61
|
-
new: schemaCodec.encode(schemaChange.schema.new)
|
|
62
|
-
old: schemaCodec.encode(schemaChange.schema.old)
|
|
66
|
+
new: schemaCodec.encode(schemaChange.schema.new),
|
|
67
|
+
old: schemaCodec.encode(schemaChange.schema.old),
|
|
63
68
|
};
|
|
64
69
|
},
|
|
65
70
|
decode: (encoded) => {
|
|
@@ -4,11 +4,11 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import { type Static, Type } from "@sinclair/typebox";
|
|
7
|
-
import {
|
|
7
|
+
import { JsonCompatibleReadOnlySchema } from "../../util/index.js";
|
|
8
8
|
|
|
9
9
|
export const EncodedSchemaChange = Type.Object({
|
|
10
|
-
new:
|
|
11
|
-
old:
|
|
10
|
+
new: JsonCompatibleReadOnlySchema,
|
|
11
|
+
old: JsonCompatibleReadOnlySchema,
|
|
12
12
|
});
|
|
13
13
|
|
|
14
14
|
export type EncodedSchemaChange = Static<typeof EncodedSchemaChange>;
|
|
@@ -20,13 +20,14 @@ import {
|
|
|
20
20
|
type TreeNodeStoredSchema,
|
|
21
21
|
type TreeStoredSchema,
|
|
22
22
|
decodeFieldSchema,
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
encodeFieldSchemaV1,
|
|
24
|
+
encodeFieldSchemaV2,
|
|
25
25
|
storedSchemaDecodeDispatcher,
|
|
26
26
|
} from "../../core/index.js";
|
|
27
27
|
import { brand, type JsonCompatible } from "../../util/index.js";
|
|
28
28
|
|
|
29
29
|
import { Format as FormatV1 } from "./formatV1.js";
|
|
30
|
+
import { Format as FormatV2 } from "./formatV2.js";
|
|
30
31
|
|
|
31
32
|
/**
|
|
32
33
|
* Convert a FluidClientVersion to a SchemaVersion.
|
|
@@ -62,7 +63,10 @@ export function makeSchemaCodec(
|
|
|
62
63
|
* @returns The composed codec family.
|
|
63
64
|
*/
|
|
64
65
|
export function makeSchemaCodecs(options: ICodecOptions): ICodecFamily<TreeStoredSchema> {
|
|
65
|
-
return makeCodecFamily([
|
|
66
|
+
return makeCodecFamily([
|
|
67
|
+
[SchemaVersion.v1, makeSchemaCodecV1(options)],
|
|
68
|
+
[SchemaVersion.v2, makeSchemaCodecV2(options)],
|
|
69
|
+
]);
|
|
66
70
|
}
|
|
67
71
|
|
|
68
72
|
/**
|
|
@@ -74,36 +78,79 @@ export function makeSchemaCodecs(options: ICodecOptions): ICodecFamily<TreeStore
|
|
|
74
78
|
export function encodeRepo(repo: TreeStoredSchema, version: SchemaVersion): JsonCompatible {
|
|
75
79
|
switch (version) {
|
|
76
80
|
case SchemaVersion.v1:
|
|
77
|
-
return encodeRepoV1(repo);
|
|
81
|
+
return encodeRepoV1(repo) as JsonCompatible;
|
|
82
|
+
case SchemaVersion.v2:
|
|
83
|
+
return encodeRepoV2(repo) as JsonCompatible;
|
|
78
84
|
default:
|
|
79
85
|
unreachableCase(version);
|
|
80
86
|
}
|
|
81
87
|
}
|
|
82
88
|
|
|
83
89
|
function encodeRepoV1(repo: TreeStoredSchema): FormatV1 {
|
|
84
|
-
const nodeSchema
|
|
85
|
-
|
|
86
|
-
|
|
90
|
+
const nodeSchema = encodeNodeSchema(repo, (schema) => schema.encodeV1());
|
|
91
|
+
const rootFieldSchema = encodeFieldSchemaV1(repo.rootFieldSchema);
|
|
92
|
+
return {
|
|
93
|
+
version: SchemaVersion.v1,
|
|
94
|
+
nodes: nodeSchema,
|
|
95
|
+
root: rootFieldSchema,
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
function encodeRepoV2(repo: TreeStoredSchema): FormatV2 {
|
|
100
|
+
const nodeSchema = encodeNodeSchema(repo, (schema) => schema.encodeV2());
|
|
101
|
+
const rootFieldSchema = encodeFieldSchemaV2(repo.rootFieldSchema);
|
|
102
|
+
return {
|
|
103
|
+
version: SchemaVersion.v2,
|
|
104
|
+
nodes: nodeSchema,
|
|
105
|
+
root: rootFieldSchema,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Shared logic for encoding node schemas.
|
|
111
|
+
* @param repo - The stored schema to encode.
|
|
112
|
+
* @param encodeValue - A function which encodes a single node schema.
|
|
113
|
+
* @returns The encoded node schema.
|
|
114
|
+
*/
|
|
115
|
+
function encodeNodeSchema<TFormat>(
|
|
116
|
+
repo: TreeStoredSchema,
|
|
117
|
+
encodeValue: (schema: TreeNodeStoredSchema) => TFormat,
|
|
118
|
+
): Record<string, TFormat> {
|
|
119
|
+
const nodeSchema: Record<string, TFormat> = Object.create(null);
|
|
87
120
|
for (const name of [...repo.nodeSchema.keys()].sort()) {
|
|
88
121
|
const schema = repo.nodeSchema.get(name) ?? fail(0xb28 /* missing schema */);
|
|
89
122
|
Object.defineProperty(nodeSchema, name, {
|
|
90
123
|
enumerable: true,
|
|
91
124
|
configurable: true,
|
|
92
125
|
writable: true,
|
|
93
|
-
value: schema
|
|
126
|
+
value: encodeValue(schema),
|
|
94
127
|
});
|
|
95
128
|
}
|
|
129
|
+
|
|
130
|
+
return nodeSchema;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
function decodeV1(f: FormatV1): TreeStoredSchema {
|
|
134
|
+
const nodeSchema: Map<TreeNodeSchemaIdentifier, TreeNodeStoredSchema> = new Map();
|
|
135
|
+
for (const [key, schema] of Object.entries(f.nodes)) {
|
|
136
|
+
const storedSchemaDecoder = storedSchemaDecodeDispatcher.dispatch(schema);
|
|
137
|
+
|
|
138
|
+
// No metadata in v1, so pass undefined
|
|
139
|
+
nodeSchema.set(brand(key), storedSchemaDecoder(undefined));
|
|
140
|
+
}
|
|
96
141
|
return {
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
root: rootFieldSchema,
|
|
142
|
+
rootFieldSchema: decodeFieldSchema(f.root),
|
|
143
|
+
nodeSchema,
|
|
100
144
|
};
|
|
101
145
|
}
|
|
102
146
|
|
|
103
|
-
function
|
|
147
|
+
function decodeV2(f: FormatV2): TreeStoredSchema {
|
|
104
148
|
const nodeSchema: Map<TreeNodeSchemaIdentifier, TreeNodeStoredSchema> = new Map();
|
|
105
149
|
for (const [key, schema] of Object.entries(f.nodes)) {
|
|
106
|
-
|
|
150
|
+
const storedSchemaDecoder = storedSchemaDecodeDispatcher.dispatch(schema.kind);
|
|
151
|
+
|
|
152
|
+
// Pass in the node metadata
|
|
153
|
+
nodeSchema.set(brand(key), storedSchemaDecoder(schema.metadata));
|
|
107
154
|
}
|
|
108
155
|
return {
|
|
109
156
|
rootFieldSchema: decodeFieldSchema(f.root),
|
|
@@ -119,6 +166,18 @@ function decode(f: FormatV1): TreeStoredSchema {
|
|
|
119
166
|
function makeSchemaCodecV1(options: ICodecOptions): IJsonCodec<TreeStoredSchema, FormatV1> {
|
|
120
167
|
return makeVersionedValidatedCodec(options, new Set([SchemaVersion.v1]), FormatV1, {
|
|
121
168
|
encode: (data: TreeStoredSchema) => encodeRepoV1(data),
|
|
122
|
-
decode: (data: FormatV1) =>
|
|
169
|
+
decode: (data: FormatV1) => decodeV1(data),
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
/**
|
|
174
|
+
* Creates a codec which performs synchronous monolithic encoding of schema content.
|
|
175
|
+
* @param options - Specifies common codec options, including which `validator` to use.
|
|
176
|
+
* @returns The codec.
|
|
177
|
+
*/
|
|
178
|
+
function makeSchemaCodecV2(options: ICodecOptions): IJsonCodec<TreeStoredSchema, FormatV2> {
|
|
179
|
+
return makeVersionedValidatedCodec(options, new Set([SchemaVersion.v2]), FormatV2, {
|
|
180
|
+
encode: (data: TreeStoredSchema) => encodeRepoV2(data),
|
|
181
|
+
decode: (data: FormatV2) => decodeV2(data),
|
|
123
182
|
});
|
|
124
183
|
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
|
+
* Licensed under the MIT License.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { type ObjectOptions, type Static, Type } from "@sinclair/typebox";
|
|
7
|
+
|
|
8
|
+
import { SchemaVersion, schemaFormatV2 } from "../../core/index.js";
|
|
9
|
+
|
|
10
|
+
const noAdditionalProps: ObjectOptions = { additionalProperties: false };
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Format for encoding as json.
|
|
14
|
+
*
|
|
15
|
+
* For consistency all lists are sorted and undefined values are omitted.
|
|
16
|
+
*
|
|
17
|
+
* This chooses to use lists of named objects instead of maps:
|
|
18
|
+
* this choice is somewhat arbitrary, but avoids user data being used as object keys,
|
|
19
|
+
* which can sometimes be an issue (for example handling that for "__proto__" can require care).
|
|
20
|
+
* It also makes it simpler to determinately sort by keys.
|
|
21
|
+
*/
|
|
22
|
+
export const Format = Type.Object(
|
|
23
|
+
{
|
|
24
|
+
version: Type.Literal(SchemaVersion.v2),
|
|
25
|
+
nodes: Type.Record(Type.String(), schemaFormatV2.TreeNodeSchemaDataFormat),
|
|
26
|
+
root: schemaFormatV2.FieldSchemaFormat,
|
|
27
|
+
},
|
|
28
|
+
noAdditionalProps,
|
|
29
|
+
);
|
|
30
|
+
export type Format = Static<typeof Format>;
|
|
@@ -51,15 +51,18 @@ export class SchemaSummarizer implements Summarizable {
|
|
|
51
51
|
});
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
-
public
|
|
55
|
-
stringify: SummaryElementStringifier
|
|
56
|
-
fullTree?: boolean
|
|
57
|
-
trackState?: boolean
|
|
58
|
-
telemetryContext?: ITelemetryContext
|
|
59
|
-
incrementalSummaryContext?: IExperimentalIncrementalSummaryContext
|
|
60
|
-
): ISummaryTreeWithStats {
|
|
54
|
+
public summarize(props: {
|
|
55
|
+
stringify: SummaryElementStringifier;
|
|
56
|
+
fullTree?: boolean;
|
|
57
|
+
trackState?: boolean;
|
|
58
|
+
telemetryContext?: ITelemetryContext;
|
|
59
|
+
incrementalSummaryContext?: IExperimentalIncrementalSummaryContext;
|
|
60
|
+
}): ISummaryTreeWithStats {
|
|
61
|
+
const incrementalSummaryContext = props.incrementalSummaryContext;
|
|
61
62
|
const builder = new SummaryTreeBuilder();
|
|
63
|
+
const fullTree = props.fullTree ?? false;
|
|
62
64
|
if (
|
|
65
|
+
!fullTree &&
|
|
63
66
|
incrementalSummaryContext !== undefined &&
|
|
64
67
|
this.schemaIndexLastChangedSeq !== undefined &&
|
|
65
68
|
incrementalSummaryContext.latestSummarySequenceNumber >= this.schemaIndexLastChangedSeq
|
|
@@ -67,7 +70,7 @@ export class SchemaSummarizer implements Summarizable {
|
|
|
67
70
|
builder.addHandle(
|
|
68
71
|
schemaStringKey,
|
|
69
72
|
SummaryType.Blob,
|
|
70
|
-
`${incrementalSummaryContext.summaryPath}
|
|
73
|
+
`${incrementalSummaryContext.summaryPath}/${schemaStringKey}`,
|
|
71
74
|
);
|
|
72
75
|
} else {
|
|
73
76
|
const dataString = JSON.stringify(this.codec.encode(this.schema));
|
|
@@ -76,16 +79,6 @@ export class SchemaSummarizer implements Summarizable {
|
|
|
76
79
|
return builder.getSummaryTree();
|
|
77
80
|
}
|
|
78
81
|
|
|
79
|
-
public async summarize(
|
|
80
|
-
stringify: SummaryElementStringifier,
|
|
81
|
-
fullTree?: boolean,
|
|
82
|
-
trackState?: boolean,
|
|
83
|
-
telemetryContext?: ITelemetryContext,
|
|
84
|
-
incrementalSummaryContext?: IExperimentalIncrementalSummaryContext | undefined,
|
|
85
|
-
): Promise<ISummaryTreeWithStats> {
|
|
86
|
-
throw new Error("Method not implemented.");
|
|
87
|
-
}
|
|
88
|
-
|
|
89
82
|
public async load(
|
|
90
83
|
services: IChannelStorageService,
|
|
91
84
|
parse: SummaryElementParser,
|
package/src/index.ts
CHANGED
|
@@ -113,6 +113,7 @@ export {
|
|
|
113
113
|
type TreeNodeSchemaClass,
|
|
114
114
|
type SchemaCompatibilityStatus,
|
|
115
115
|
type FieldProps,
|
|
116
|
+
type FieldPropsAlpha,
|
|
116
117
|
type InternalTreeNode,
|
|
117
118
|
type WithType,
|
|
118
119
|
type NodeChangedData,
|
|
@@ -157,6 +158,7 @@ export {
|
|
|
157
158
|
type ImplicitAnnotatedFieldSchema,
|
|
158
159
|
type AnnotatedAllowedType,
|
|
159
160
|
type AnnotatedAllowedTypes,
|
|
161
|
+
type NormalizedAnnotatedAllowedTypes,
|
|
160
162
|
type AllowedTypeMetadata,
|
|
161
163
|
type AllowedTypesMetadata,
|
|
162
164
|
type InsertableObjectFromAnnotatedSchemaRecord,
|
|
@@ -198,6 +200,7 @@ export {
|
|
|
198
200
|
type LazyItem,
|
|
199
201
|
type Unenforced,
|
|
200
202
|
type SimpleNodeSchemaBase,
|
|
203
|
+
type SimpleNodeSchemaBaseAlpha,
|
|
201
204
|
type SimpleTreeSchema,
|
|
202
205
|
type SimpleNodeSchema,
|
|
203
206
|
type SimpleFieldSchema,
|
|
@@ -215,6 +218,7 @@ export {
|
|
|
215
218
|
type TreeBranchEvents,
|
|
216
219
|
asTreeViewAlpha,
|
|
217
220
|
type NodeSchemaOptions,
|
|
221
|
+
type NodeSchemaOptionsAlpha,
|
|
218
222
|
type NodeSchemaMetadata,
|
|
219
223
|
type SchemaStatics,
|
|
220
224
|
type ITreeAlpha,
|
|
@@ -282,6 +286,8 @@ export type {
|
|
|
282
286
|
PopUnion,
|
|
283
287
|
JsonCompatible,
|
|
284
288
|
JsonCompatibleObject,
|
|
289
|
+
JsonCompatibleReadOnly,
|
|
290
|
+
JsonCompatibleReadOnlyObject,
|
|
285
291
|
} from "./util/index.js";
|
|
286
292
|
export { cloneWithReplacements } from "./util/index.js";
|
|
287
293
|
|
package/src/packageVersion.ts
CHANGED
|
@@ -22,12 +22,11 @@ import {
|
|
|
22
22
|
TreeStatus,
|
|
23
23
|
} from "../feature-libraries/index.js";
|
|
24
24
|
import {
|
|
25
|
-
type FieldSchema,
|
|
26
25
|
type ImplicitFieldSchema,
|
|
27
26
|
type SchemaCompatibilityStatus,
|
|
28
27
|
type TreeView,
|
|
29
28
|
type TreeViewEvents,
|
|
30
|
-
|
|
29
|
+
tryGetTreeNodeForField,
|
|
31
30
|
setField,
|
|
32
31
|
normalizeFieldSchema,
|
|
33
32
|
SchemaCompatibilityTester,
|
|
@@ -53,6 +52,7 @@ import {
|
|
|
53
52
|
areImplicitFieldSchemaEqual,
|
|
54
53
|
createUnknownOptionalFieldPolicy,
|
|
55
54
|
prepareForInsertionContextless,
|
|
55
|
+
type FieldSchema,
|
|
56
56
|
} from "../simple-tree/index.js";
|
|
57
57
|
import {
|
|
58
58
|
type Breakable,
|
|
@@ -353,7 +353,10 @@ export class SchematizingSimpleTreeView<
|
|
|
353
353
|
);
|
|
354
354
|
this.checkout.forest.anchors.slots.set(
|
|
355
355
|
SimpleContextSlot,
|
|
356
|
-
new HydratedContext(
|
|
356
|
+
new HydratedContext(
|
|
357
|
+
normalizeFieldSchema(this.rootFieldSchema).annotatedAllowedTypesNormalized,
|
|
358
|
+
view.context,
|
|
359
|
+
),
|
|
357
360
|
);
|
|
358
361
|
|
|
359
362
|
const unregister = this.checkout.storedSchema.events.on("afterSchemaChange", () => {
|
|
@@ -428,7 +431,7 @@ export class SchematizingSimpleTreeView<
|
|
|
428
431
|
);
|
|
429
432
|
}
|
|
430
433
|
const view = this.getView();
|
|
431
|
-
return
|
|
434
|
+
return tryGetTreeNodeForField(view.flexTree) as ReadableField<TRootSchema>;
|
|
432
435
|
}
|
|
433
436
|
|
|
434
437
|
public set root(newRoot: InsertableField<TRootSchema>) {
|
|
@@ -525,7 +528,7 @@ export function addConstraintsToTransaction(
|
|
|
525
528
|
`Attempted to add a "nodeInDocument" constraint${revertText}, but the node is not currently in the document. Node status: ${nodeStatus}`,
|
|
526
529
|
);
|
|
527
530
|
}
|
|
528
|
-
assert(node.isHydrated(),
|
|
531
|
+
assert(node.isHydrated(), 0xbc2 /* In document node must be hydrated. */);
|
|
529
532
|
if (constraintsOnRevert) {
|
|
530
533
|
checkout.editor.addNodeExistsConstraintOnRevert(node.anchorNode);
|
|
531
534
|
} else {
|