@fluidframework/tree 2.41.0-337492 → 2.41.0-338401
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/api-report/tree.alpha.api.md +165 -5
- package/dist/alpha.d.ts +2 -0
- package/dist/codec/codec.d.ts +42 -7
- package/dist/codec/codec.d.ts.map +1 -1
- package/dist/codec/codec.js +50 -8
- package/dist/codec/codec.js.map +1 -1
- package/dist/core/change-family/editBuilder.d.ts.map +1 -1
- package/dist/core/change-family/editBuilder.js.map +1 -1
- package/dist/core/forest/forest.d.ts.map +1 -1
- package/dist/core/forest/forest.js.map +1 -1
- package/dist/core/schema-stored/schema.d.ts.map +1 -1
- package/dist/core/schema-stored/schema.js.map +1 -1
- package/dist/core/schema-stored/storedSchemaRepository.d.ts +1 -1
- package/dist/core/schema-stored/storedSchemaRepository.d.ts.map +1 -1
- package/dist/core/schema-stored/storedSchemaRepository.js +1 -1
- package/dist/core/schema-stored/storedSchemaRepository.js.map +1 -1
- package/dist/core/tree/anchorSet.d.ts.map +1 -1
- package/dist/core/tree/anchorSet.js +2 -2
- package/dist/core/tree/anchorSet.js.map +1 -1
- package/dist/core/tree/chunk.d.ts.map +1 -1
- package/dist/core/tree/chunk.js.map +1 -1
- package/dist/core/tree/delta.d.ts.map +1 -1
- package/dist/core/tree/delta.js.map +1 -1
- package/dist/core/tree/deltaUtil.d.ts.map +1 -1
- package/dist/core/tree/deltaUtil.js.map +1 -1
- package/dist/core/tree/detachedFieldIndex.d.ts +1 -1
- package/dist/core/tree/detachedFieldIndex.d.ts.map +1 -1
- package/dist/core/tree/detachedFieldIndex.js.map +1 -1
- package/dist/core/tree/detachedFieldIndexCodec.d.ts +1 -1
- package/dist/core/tree/detachedFieldIndexCodec.d.ts.map +1 -1
- package/dist/core/tree/detachedFieldIndexCodec.js +1 -1
- package/dist/core/tree/detachedFieldIndexCodec.js.map +1 -1
- package/dist/core/tree/pathTree.d.ts.map +1 -1
- package/dist/core/tree/pathTree.js.map +1 -1
- package/dist/core/tree/treeTextFormat.d.ts.map +1 -1
- package/dist/core/tree/treeTextFormat.js.map +1 -1
- package/dist/core/tree/visitDelta.d.ts +1 -1
- package/dist/core/tree/visitDelta.d.ts.map +1 -1
- package/dist/core/tree/visitDelta.js.map +1 -1
- package/dist/core/tree/visitorUtils.d.ts +2 -2
- package/dist/core/tree/visitorUtils.d.ts.map +1 -1
- package/dist/core/tree/visitorUtils.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/chunkTree.d.ts +1 -1
- package/dist/feature-libraries/chunked-forest/chunkTree.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/chunkTree.js +1 -1
- package/dist/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/chunkedForest.d.ts +1 -1
- package/dist/feature-libraries/chunked-forest/chunkedForest.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/chunkedForest.js +1 -1
- package/dist/feature-libraries/chunked-forest/chunkedForest.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts +1 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.d.ts +2 -2
- package/dist/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/codecs.d.ts +8 -2
- package/dist/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/codecs.js +12 -1
- package/dist/feature-libraries/chunked-forest/codec/codecs.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/compressedEncode.d.ts +1 -1
- package/dist/feature-libraries/chunked-forest/codec/compressedEncode.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/index.d.ts +1 -1
- package/dist/feature-libraries/chunked-forest/codec/index.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/index.js +2 -1
- package/dist/feature-libraries/chunked-forest/codec/index.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/nodeShape.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/nodeShape.js +1 -1
- package/dist/feature-libraries/chunked-forest/codec/nodeShape.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncode.d.ts +1 -1
- package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncode.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncode.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/emptyChunk.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/emptyChunk.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/index.d.ts +1 -1
- package/dist/feature-libraries/chunked-forest/index.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/index.js +2 -1
- package/dist/feature-libraries/chunked-forest/index.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/sequenceChunk.d.ts +1 -1
- package/dist/feature-libraries/chunked-forest/sequenceChunk.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/sequenceChunk.js +4 -4
- package/dist/feature-libraries/chunked-forest/sequenceChunk.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/uniformChunk.d.ts +1 -1
- package/dist/feature-libraries/chunked-forest/uniformChunk.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/uniformChunk.js +1 -1
- package/dist/feature-libraries/chunked-forest/uniformChunk.js.map +1 -1
- package/dist/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
- package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
- package/dist/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
- package/dist/feature-libraries/default-schema/index.d.ts +1 -1
- package/dist/feature-libraries/default-schema/index.d.ts.map +1 -1
- package/dist/feature-libraries/default-schema/index.js +2 -1
- package/dist/feature-libraries/default-schema/index.js.map +1 -1
- package/dist/feature-libraries/default-schema/mappedEditBuilder.d.ts.map +1 -1
- package/dist/feature-libraries/default-schema/mappedEditBuilder.js.map +1 -1
- package/dist/feature-libraries/default-schema/schemaChecker.d.ts +4 -0
- package/dist/feature-libraries/default-schema/schemaChecker.d.ts.map +1 -1
- package/dist/feature-libraries/default-schema/schemaChecker.js +35 -26
- package/dist/feature-libraries/default-schema/schemaChecker.js.map +1 -1
- package/dist/feature-libraries/flex-tree/context.d.ts +16 -14
- package/dist/feature-libraries/flex-tree/context.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/context.js +12 -18
- package/dist/feature-libraries/flex-tree/context.js.map +1 -1
- package/dist/feature-libraries/flex-tree/index.d.ts +1 -1
- package/dist/feature-libraries/flex-tree/index.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/index.js +1 -2
- package/dist/feature-libraries/flex-tree/index.js.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyField.d.ts +1 -5
- package/dist/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyField.js +2 -16
- package/dist/feature-libraries/flex-tree/lazyField.js.map +1 -1
- package/dist/feature-libraries/flex-tree/utilities.d.ts +6 -6
- package/dist/feature-libraries/flex-tree/utilities.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/utilities.js +6 -7
- package/dist/feature-libraries/flex-tree/utilities.js.map +1 -1
- package/dist/feature-libraries/index.d.ts +3 -3
- package/dist/feature-libraries/index.d.ts.map +1 -1
- package/dist/feature-libraries/index.js +3 -2
- package/dist/feature-libraries/index.js.map +1 -1
- package/dist/feature-libraries/initializeForest.d.ts.map +1 -1
- package/dist/feature-libraries/initializeForest.js.map +1 -1
- package/dist/feature-libraries/treeCursorUtils.d.ts.map +1 -1
- package/dist/feature-libraries/treeCursorUtils.js +1 -1
- package/dist/feature-libraries/treeCursorUtils.js.map +1 -1
- package/dist/feature-libraries/valueUtilities.d.ts.map +1 -1
- package/dist/feature-libraries/valueUtilities.js +6 -6
- package/dist/feature-libraries/valueUtilities.js.map +1 -1
- package/dist/jsonDomainSchema.d.ts.map +1 -1
- package/dist/jsonDomainSchema.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/serializableDomainSchema.d.ts.map +1 -1
- package/dist/serializableDomainSchema.js.map +1 -1
- package/dist/shared-tree/checkoutFlexTreeView.d.ts +7 -3
- package/dist/shared-tree/checkoutFlexTreeView.d.ts.map +1 -1
- package/dist/shared-tree/checkoutFlexTreeView.js +11 -2
- package/dist/shared-tree/checkoutFlexTreeView.js.map +1 -1
- package/dist/shared-tree/schematizingTreeView.d.ts +3 -0
- package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/dist/shared-tree/schematizingTreeView.js +10 -5
- package/dist/shared-tree/schematizingTreeView.js.map +1 -1
- package/dist/shared-tree/treeAlpha.d.ts +9 -4
- package/dist/shared-tree/treeAlpha.d.ts.map +1 -1
- package/dist/shared-tree/treeAlpha.js +20 -8
- package/dist/shared-tree/treeAlpha.js.map +1 -1
- package/dist/sharedTreeAttributes.d.ts.map +1 -1
- package/dist/sharedTreeAttributes.js.map +1 -1
- package/dist/simple-tree/api/create.d.ts +5 -1
- package/dist/simple-tree/api/create.d.ts.map +1 -1
- package/dist/simple-tree/api/create.js +11 -12
- package/dist/simple-tree/api/create.js.map +1 -1
- package/dist/simple-tree/api/index.d.ts +3 -3
- package/dist/simple-tree/api/index.d.ts.map +1 -1
- package/dist/simple-tree/api/index.js +4 -2
- package/dist/simple-tree/api/index.js.map +1 -1
- package/dist/simple-tree/api/storedSchema.d.ts +1 -8
- package/dist/simple-tree/api/storedSchema.d.ts.map +1 -1
- package/dist/simple-tree/api/storedSchema.js +3 -14
- package/dist/simple-tree/api/storedSchema.js.map +1 -1
- package/dist/simple-tree/api/treeNodeApi.d.ts +8 -0
- package/dist/simple-tree/api/treeNodeApi.d.ts.map +1 -1
- package/dist/simple-tree/api/treeNodeApi.js +3 -1
- package/dist/simple-tree/api/treeNodeApi.js.map +1 -1
- package/dist/simple-tree/arrayNode.d.ts.map +1 -1
- package/dist/simple-tree/arrayNode.js +3 -9
- package/dist/simple-tree/arrayNode.js.map +1 -1
- package/dist/simple-tree/core/getOrCreateNode.js +1 -1
- package/dist/simple-tree/core/getOrCreateNode.js.map +1 -1
- package/dist/simple-tree/core/treeNodeKernel.d.ts +5 -17
- package/dist/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
- package/dist/simple-tree/core/treeNodeKernel.js +17 -48
- package/dist/simple-tree/core/treeNodeKernel.js.map +1 -1
- package/dist/simple-tree/core/unhydratedFlexTree.d.ts +4 -4
- package/dist/simple-tree/core/unhydratedFlexTree.js +4 -4
- package/dist/simple-tree/core/unhydratedFlexTree.js.map +1 -1
- package/dist/simple-tree/getTreeNodeForField.d.ts +12 -0
- package/dist/simple-tree/getTreeNodeForField.d.ts.map +1 -0
- package/dist/simple-tree/getTreeNodeForField.js +39 -0
- package/dist/simple-tree/getTreeNodeForField.js.map +1 -0
- package/dist/simple-tree/index.d.ts +3 -2
- package/dist/simple-tree/index.d.ts.map +1 -1
- package/dist/simple-tree/index.js +10 -6
- package/dist/simple-tree/index.js.map +1 -1
- package/dist/simple-tree/mapNode.d.ts.map +1 -1
- package/dist/simple-tree/mapNode.js +21 -24
- package/dist/simple-tree/mapNode.js.map +1 -1
- package/dist/simple-tree/objectNode.d.ts.map +1 -1
- package/dist/simple-tree/objectNode.js +5 -7
- package/dist/simple-tree/objectNode.js.map +1 -1
- package/dist/simple-tree/prepareForInsertion.d.ts +42 -0
- package/dist/simple-tree/prepareForInsertion.d.ts.map +1 -0
- package/dist/simple-tree/prepareForInsertion.js +166 -0
- package/dist/simple-tree/prepareForInsertion.js.map +1 -0
- package/dist/simple-tree/toMapTree.d.ts +4 -9
- package/dist/simple-tree/toMapTree.d.ts.map +1 -1
- package/dist/simple-tree/toMapTree.js +4 -23
- package/dist/simple-tree/toMapTree.js.map +1 -1
- package/dist/tableSchema.d.ts +201 -104
- package/dist/tableSchema.d.ts.map +1 -1
- package/dist/tableSchema.js +155 -58
- package/dist/tableSchema.js.map +1 -1
- package/dist/treeFactory.d.ts.map +1 -1
- package/dist/treeFactory.js +2 -2
- package/dist/treeFactory.js.map +1 -1
- package/lib/alpha.d.ts +2 -0
- package/lib/codec/codec.d.ts +42 -7
- package/lib/codec/codec.d.ts.map +1 -1
- package/lib/codec/codec.js +50 -8
- package/lib/codec/codec.js.map +1 -1
- package/lib/core/change-family/editBuilder.d.ts.map +1 -1
- package/lib/core/change-family/editBuilder.js.map +1 -1
- package/lib/core/forest/forest.d.ts.map +1 -1
- package/lib/core/forest/forest.js.map +1 -1
- package/lib/core/schema-stored/schema.d.ts.map +1 -1
- package/lib/core/schema-stored/schema.js.map +1 -1
- package/lib/core/schema-stored/storedSchemaRepository.d.ts +1 -1
- package/lib/core/schema-stored/storedSchemaRepository.d.ts.map +1 -1
- package/lib/core/schema-stored/storedSchemaRepository.js +1 -1
- package/lib/core/schema-stored/storedSchemaRepository.js.map +1 -1
- package/lib/core/tree/anchorSet.d.ts.map +1 -1
- package/lib/core/tree/anchorSet.js +2 -2
- package/lib/core/tree/anchorSet.js.map +1 -1
- package/lib/core/tree/chunk.d.ts.map +1 -1
- package/lib/core/tree/chunk.js.map +1 -1
- package/lib/core/tree/delta.d.ts.map +1 -1
- package/lib/core/tree/delta.js.map +1 -1
- package/lib/core/tree/deltaUtil.d.ts.map +1 -1
- package/lib/core/tree/deltaUtil.js.map +1 -1
- package/lib/core/tree/detachedFieldIndex.d.ts +1 -1
- package/lib/core/tree/detachedFieldIndex.d.ts.map +1 -1
- package/lib/core/tree/detachedFieldIndex.js.map +1 -1
- package/lib/core/tree/detachedFieldIndexCodec.d.ts +1 -1
- package/lib/core/tree/detachedFieldIndexCodec.d.ts.map +1 -1
- package/lib/core/tree/detachedFieldIndexCodec.js +1 -1
- package/lib/core/tree/detachedFieldIndexCodec.js.map +1 -1
- package/lib/core/tree/pathTree.d.ts.map +1 -1
- package/lib/core/tree/pathTree.js.map +1 -1
- package/lib/core/tree/treeTextFormat.d.ts.map +1 -1
- package/lib/core/tree/treeTextFormat.js.map +1 -1
- package/lib/core/tree/visitDelta.d.ts +1 -1
- package/lib/core/tree/visitDelta.d.ts.map +1 -1
- package/lib/core/tree/visitDelta.js.map +1 -1
- package/lib/core/tree/visitorUtils.d.ts +2 -2
- package/lib/core/tree/visitorUtils.d.ts.map +1 -1
- package/lib/core/tree/visitorUtils.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/chunkTree.d.ts +1 -1
- package/lib/feature-libraries/chunked-forest/chunkTree.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/chunkTree.js +1 -1
- package/lib/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/chunkedForest.d.ts +1 -1
- package/lib/feature-libraries/chunked-forest/chunkedForest.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/chunkedForest.js +1 -1
- package/lib/feature-libraries/chunked-forest/chunkedForest.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts +1 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.d.ts +2 -2
- package/lib/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/codecs.d.ts +8 -2
- package/lib/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/codecs.js +10 -0
- package/lib/feature-libraries/chunked-forest/codec/codecs.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/compressedEncode.d.ts +1 -1
- package/lib/feature-libraries/chunked-forest/codec/compressedEncode.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/index.d.ts +1 -1
- package/lib/feature-libraries/chunked-forest/codec/index.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/index.js +1 -1
- package/lib/feature-libraries/chunked-forest/codec/index.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/nodeShape.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/nodeShape.js +1 -1
- package/lib/feature-libraries/chunked-forest/codec/nodeShape.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncode.d.ts +1 -1
- package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncode.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncode.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/emptyChunk.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/emptyChunk.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/index.d.ts +1 -1
- package/lib/feature-libraries/chunked-forest/index.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/index.js +1 -1
- package/lib/feature-libraries/chunked-forest/index.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/sequenceChunk.d.ts +1 -1
- package/lib/feature-libraries/chunked-forest/sequenceChunk.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/sequenceChunk.js +1 -1
- package/lib/feature-libraries/chunked-forest/sequenceChunk.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/uniformChunk.d.ts +1 -1
- package/lib/feature-libraries/chunked-forest/uniformChunk.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/uniformChunk.js +1 -1
- package/lib/feature-libraries/chunked-forest/uniformChunk.js.map +1 -1
- package/lib/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
- package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
- package/lib/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
- package/lib/feature-libraries/default-schema/index.d.ts +1 -1
- package/lib/feature-libraries/default-schema/index.d.ts.map +1 -1
- package/lib/feature-libraries/default-schema/index.js +1 -1
- package/lib/feature-libraries/default-schema/index.js.map +1 -1
- package/lib/feature-libraries/default-schema/mappedEditBuilder.d.ts.map +1 -1
- package/lib/feature-libraries/default-schema/mappedEditBuilder.js.map +1 -1
- package/lib/feature-libraries/default-schema/schemaChecker.d.ts +4 -0
- package/lib/feature-libraries/default-schema/schemaChecker.d.ts.map +1 -1
- package/lib/feature-libraries/default-schema/schemaChecker.js +33 -25
- package/lib/feature-libraries/default-schema/schemaChecker.js.map +1 -1
- package/lib/feature-libraries/flex-tree/context.d.ts +16 -14
- package/lib/feature-libraries/flex-tree/context.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/context.js +11 -16
- package/lib/feature-libraries/flex-tree/context.js.map +1 -1
- package/lib/feature-libraries/flex-tree/index.d.ts +1 -1
- package/lib/feature-libraries/flex-tree/index.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/index.js +1 -1
- package/lib/feature-libraries/flex-tree/index.js.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyField.d.ts +1 -5
- package/lib/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyField.js +1 -14
- package/lib/feature-libraries/flex-tree/lazyField.js.map +1 -1
- package/lib/feature-libraries/flex-tree/utilities.d.ts +6 -6
- package/lib/feature-libraries/flex-tree/utilities.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/utilities.js +6 -7
- package/lib/feature-libraries/flex-tree/utilities.js.map +1 -1
- package/lib/feature-libraries/index.d.ts +3 -3
- package/lib/feature-libraries/index.d.ts.map +1 -1
- package/lib/feature-libraries/index.js +3 -3
- package/lib/feature-libraries/index.js.map +1 -1
- package/lib/feature-libraries/initializeForest.d.ts.map +1 -1
- package/lib/feature-libraries/initializeForest.js.map +1 -1
- package/lib/feature-libraries/treeCursorUtils.d.ts.map +1 -1
- package/lib/feature-libraries/treeCursorUtils.js +1 -1
- package/lib/feature-libraries/treeCursorUtils.js.map +1 -1
- package/lib/feature-libraries/valueUtilities.d.ts.map +1 -1
- package/lib/feature-libraries/valueUtilities.js +1 -1
- package/lib/feature-libraries/valueUtilities.js.map +1 -1
- package/lib/jsonDomainSchema.d.ts.map +1 -1
- package/lib/jsonDomainSchema.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/serializableDomainSchema.d.ts.map +1 -1
- package/lib/serializableDomainSchema.js.map +1 -1
- package/lib/shared-tree/checkoutFlexTreeView.d.ts +7 -3
- package/lib/shared-tree/checkoutFlexTreeView.d.ts.map +1 -1
- package/lib/shared-tree/checkoutFlexTreeView.js +12 -3
- package/lib/shared-tree/checkoutFlexTreeView.js.map +1 -1
- package/lib/shared-tree/schematizingTreeView.d.ts +3 -0
- package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/lib/shared-tree/schematizingTreeView.js +11 -6
- package/lib/shared-tree/schematizingTreeView.js.map +1 -1
- package/lib/shared-tree/treeAlpha.d.ts +9 -4
- package/lib/shared-tree/treeAlpha.d.ts.map +1 -1
- package/lib/shared-tree/treeAlpha.js +22 -10
- package/lib/shared-tree/treeAlpha.js.map +1 -1
- package/lib/sharedTreeAttributes.d.ts.map +1 -1
- package/lib/sharedTreeAttributes.js.map +1 -1
- package/lib/simple-tree/api/create.d.ts +5 -1
- package/lib/simple-tree/api/create.d.ts.map +1 -1
- package/lib/simple-tree/api/create.js +9 -11
- package/lib/simple-tree/api/create.js.map +1 -1
- package/lib/simple-tree/api/index.d.ts +3 -3
- package/lib/simple-tree/api/index.d.ts.map +1 -1
- package/lib/simple-tree/api/index.js +3 -3
- package/lib/simple-tree/api/index.js.map +1 -1
- package/lib/simple-tree/api/storedSchema.d.ts +1 -8
- package/lib/simple-tree/api/storedSchema.d.ts.map +1 -1
- package/lib/simple-tree/api/storedSchema.js +2 -12
- package/lib/simple-tree/api/storedSchema.js.map +1 -1
- package/lib/simple-tree/api/treeNodeApi.d.ts +8 -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/arrayNode.d.ts.map +1 -1
- package/lib/simple-tree/arrayNode.js +4 -10
- package/lib/simple-tree/arrayNode.js.map +1 -1
- package/lib/simple-tree/core/getOrCreateNode.js +2 -2
- package/lib/simple-tree/core/getOrCreateNode.js.map +1 -1
- package/lib/simple-tree/core/treeNodeKernel.d.ts +5 -17
- package/lib/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
- package/lib/simple-tree/core/treeNodeKernel.js +16 -47
- package/lib/simple-tree/core/treeNodeKernel.js.map +1 -1
- package/lib/simple-tree/core/unhydratedFlexTree.d.ts +4 -4
- package/lib/simple-tree/core/unhydratedFlexTree.js +4 -4
- package/lib/simple-tree/core/unhydratedFlexTree.js.map +1 -1
- package/lib/simple-tree/getTreeNodeForField.d.ts +12 -0
- package/lib/simple-tree/getTreeNodeForField.d.ts.map +1 -0
- package/lib/simple-tree/getTreeNodeForField.js +35 -0
- package/lib/simple-tree/getTreeNodeForField.js.map +1 -0
- package/lib/simple-tree/index.d.ts +3 -2
- package/lib/simple-tree/index.d.ts.map +1 -1
- package/lib/simple-tree/index.js +3 -2
- package/lib/simple-tree/index.js.map +1 -1
- package/lib/simple-tree/mapNode.d.ts.map +1 -1
- package/lib/simple-tree/mapNode.js +3 -6
- package/lib/simple-tree/mapNode.js.map +1 -1
- package/lib/simple-tree/objectNode.d.ts.map +1 -1
- package/lib/simple-tree/objectNode.js +4 -6
- package/lib/simple-tree/objectNode.js.map +1 -1
- package/lib/simple-tree/prepareForInsertion.d.ts +42 -0
- package/lib/simple-tree/prepareForInsertion.d.ts.map +1 -0
- package/lib/simple-tree/prepareForInsertion.js +160 -0
- package/lib/simple-tree/prepareForInsertion.js.map +1 -0
- package/lib/simple-tree/toMapTree.d.ts +4 -9
- package/lib/simple-tree/toMapTree.d.ts.map +1 -1
- package/lib/simple-tree/toMapTree.js +4 -22
- package/lib/simple-tree/toMapTree.js.map +1 -1
- package/lib/tableSchema.d.ts +201 -104
- package/lib/tableSchema.d.ts.map +1 -1
- package/lib/tableSchema.js +156 -59
- package/lib/tableSchema.js.map +1 -1
- package/lib/treeFactory.d.ts.map +1 -1
- package/lib/treeFactory.js +2 -2
- package/lib/treeFactory.js.map +1 -1
- package/lib/tsdoc-metadata.json +1 -1
- package/package.json +25 -25
- package/src/codec/codec.ts +54 -8
- package/src/core/change-family/editBuilder.ts +1 -0
- package/src/core/forest/forest.ts +1 -1
- package/src/core/schema-stored/schema.ts +2 -0
- package/src/core/schema-stored/storedSchemaRepository.ts +2 -2
- package/src/core/tree/anchorSet.ts +4 -4
- package/src/core/tree/chunk.ts +2 -1
- package/src/core/tree/delta.ts +1 -0
- package/src/core/tree/deltaUtil.ts +1 -1
- package/src/core/tree/detachedFieldIndex.ts +1 -1
- package/src/core/tree/detachedFieldIndexCodec.ts +2 -2
- package/src/core/tree/pathTree.ts +1 -1
- package/src/core/tree/treeTextFormat.ts +1 -0
- package/src/core/tree/visitDelta.ts +1 -1
- package/src/core/tree/visitorUtils.ts +3 -2
- package/src/feature-libraries/chunked-forest/chunkTree.ts +2 -2
- package/src/feature-libraries/chunked-forest/chunkedForest.ts +3 -3
- package/src/feature-libraries/chunked-forest/codec/chunkDecoding.ts +5 -5
- package/src/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.ts +2 -2
- package/src/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.ts +1 -0
- package/src/feature-libraries/chunked-forest/codec/codecs.ts +15 -1
- package/src/feature-libraries/chunked-forest/codec/compressedEncode.ts +1 -1
- package/src/feature-libraries/chunked-forest/codec/index.ts +1 -0
- package/src/feature-libraries/chunked-forest/codec/nodeShape.ts +1 -1
- package/src/feature-libraries/chunked-forest/codec/schemaBasedEncode.ts +1 -1
- package/src/feature-libraries/chunked-forest/emptyChunk.ts +1 -0
- package/src/feature-libraries/chunked-forest/index.ts +1 -0
- package/src/feature-libraries/chunked-forest/sequenceChunk.ts +1 -1
- package/src/feature-libraries/chunked-forest/uniformChunk.ts +2 -3
- package/src/feature-libraries/default-schema/defaultEditBuilder.ts +1 -1
- package/src/feature-libraries/default-schema/defaultFieldKinds.ts +1 -0
- package/src/feature-libraries/default-schema/index.ts +6 -1
- package/src/feature-libraries/default-schema/mappedEditBuilder.ts +1 -0
- package/src/feature-libraries/default-schema/schemaChecker.ts +37 -26
- package/src/feature-libraries/flex-tree/context.ts +18 -20
- package/src/feature-libraries/flex-tree/index.ts +0 -1
- package/src/feature-libraries/flex-tree/lazyField.ts +2 -14
- package/src/feature-libraries/flex-tree/utilities.ts +8 -8
- package/src/feature-libraries/index.ts +2 -1
- package/src/feature-libraries/initializeForest.ts +1 -1
- package/src/feature-libraries/treeCursorUtils.ts +1 -1
- package/src/feature-libraries/valueUtilities.ts +1 -1
- package/src/jsonDomainSchema.ts +0 -1
- package/src/packageVersion.ts +1 -1
- package/src/serializableDomainSchema.ts +1 -0
- package/src/shared-tree/checkoutFlexTreeView.ts +10 -6
- package/src/shared-tree/schematizingTreeView.ts +11 -12
- package/src/shared-tree/treeAlpha.ts +50 -13
- package/src/sharedTreeAttributes.ts +1 -0
- package/src/simple-tree/api/create.ts +17 -16
- package/src/simple-tree/api/index.ts +13 -3
- package/src/simple-tree/api/storedSchema.ts +2 -19
- package/src/simple-tree/api/treeNodeApi.ts +2 -2
- package/src/simple-tree/arrayNode.ts +9 -20
- package/src/simple-tree/core/getOrCreateNode.ts +2 -2
- package/src/simple-tree/core/treeNodeKernel.ts +22 -53
- package/src/simple-tree/core/unhydratedFlexTree.ts +4 -4
- package/src/simple-tree/getTreeNodeForField.ts +46 -0
- package/src/simple-tree/index.ts +8 -5
- package/src/simple-tree/mapNode.ts +8 -12
- package/src/simple-tree/objectNode.ts +3 -12
- package/src/simple-tree/prepareForInsertion.ts +276 -0
- package/src/simple-tree/toMapTree.ts +3 -27
- package/src/tableSchema.ts +351 -138
- package/src/treeFactory.ts +2 -4
- package/dist/simple-tree/proxies.d.ts +0 -23
- package/dist/simple-tree/proxies.d.ts.map +0 -1
- package/dist/simple-tree/proxies.js +0 -135
- package/dist/simple-tree/proxies.js.map +0 -1
- package/lib/simple-tree/proxies.d.ts +0 -23
- package/lib/simple-tree/proxies.d.ts.map +0 -1
- package/lib/simple-tree/proxies.js +0 -130
- package/lib/simple-tree/proxies.js.map +0 -1
- package/src/simple-tree/proxies.ts +0 -191
|
@@ -79,6 +79,9 @@ export const ContextSlot = anchorSlot<Context>();
|
|
|
79
79
|
* Implementation of `FlexTreeContext`.
|
|
80
80
|
*
|
|
81
81
|
* @remarks An editor is required to edit the FlexTree.
|
|
82
|
+
*
|
|
83
|
+
* A {@link FlexTreeContext} which is used to manage the cursors and anchors within the FlexTrees:
|
|
84
|
+
* This is necessary for supporting using this tree across edits to the forest, and not leaking memory.
|
|
82
85
|
*/
|
|
83
86
|
export class Context implements FlexTreeHydratedContext, IDisposable {
|
|
84
87
|
public readonly withCursors: Set<LazyEntity> = new Set();
|
|
@@ -88,13 +91,19 @@ export class Context implements FlexTreeHydratedContext, IDisposable {
|
|
|
88
91
|
private disposed = false;
|
|
89
92
|
|
|
90
93
|
/**
|
|
91
|
-
*
|
|
92
|
-
* @
|
|
93
|
-
*
|
|
94
|
+
* Stores the last accessed version of the root.
|
|
95
|
+
* @remarks
|
|
96
|
+
* Anything which can delete this field must clear it.
|
|
97
|
+
* Currently "clear" is the only case.
|
|
94
98
|
*/
|
|
99
|
+
private lazyRootCache: FlexTreeField | undefined;
|
|
100
|
+
|
|
95
101
|
public constructor(
|
|
96
102
|
public readonly schemaPolicy: SchemaPolicy,
|
|
97
103
|
public readonly checkout: ITreeCheckout,
|
|
104
|
+
/**
|
|
105
|
+
* An object which handles node key generation and conversion
|
|
106
|
+
*/
|
|
98
107
|
public readonly nodeKeyManager: NodeIdentifierManager,
|
|
99
108
|
) {
|
|
100
109
|
this.eventUnregister = [
|
|
@@ -158,16 +167,22 @@ export class Context implements FlexTreeHydratedContext, IDisposable {
|
|
|
158
167
|
for (const target of this.withAnchors) {
|
|
159
168
|
target[disposeSymbol]();
|
|
160
169
|
}
|
|
170
|
+
this.lazyRootCache = undefined;
|
|
161
171
|
assert(this.withCursors.size === 0, 0x774 /* free should remove all cursors */);
|
|
162
172
|
assert(this.withAnchors.size === 0, 0x775 /* free should remove all anchors */);
|
|
163
173
|
}
|
|
164
174
|
|
|
165
175
|
public get root(): FlexTreeField {
|
|
166
176
|
assert(this.disposed === false, 0x804 /* use after dispose */);
|
|
177
|
+
if (this.lazyRootCache !== undefined) {
|
|
178
|
+
return this.lazyRootCache;
|
|
179
|
+
}
|
|
180
|
+
|
|
167
181
|
const cursor = this.checkout.forest.allocateCursor("root");
|
|
168
182
|
moveToDetachedField(this.checkout.forest, cursor);
|
|
169
183
|
const field = makeField(this, this.schema.rootFieldSchema.kind, cursor);
|
|
170
184
|
cursor.free();
|
|
185
|
+
this.lazyRootCache = field;
|
|
171
186
|
return field;
|
|
172
187
|
}
|
|
173
188
|
|
|
@@ -175,20 +190,3 @@ export class Context implements FlexTreeHydratedContext, IDisposable {
|
|
|
175
190
|
return this.checkout.forest.events;
|
|
176
191
|
}
|
|
177
192
|
}
|
|
178
|
-
|
|
179
|
-
/**
|
|
180
|
-
* A simple API for a Forest to interact with the tree.
|
|
181
|
-
*
|
|
182
|
-
* @param forest - the Forest
|
|
183
|
-
* @param editor - an editor that makes changes to the forest.
|
|
184
|
-
* @param nodeKeyManager - an object which handles node key generation and conversion.
|
|
185
|
-
* @returns {@link FlexTreeContext} which is used to manage the cursors and anchors within the FlexTrees:
|
|
186
|
-
* This is necessary for supporting using this tree across edits to the forest, and not leaking memory.
|
|
187
|
-
*/
|
|
188
|
-
export function getTreeContext(
|
|
189
|
-
schema: SchemaPolicy,
|
|
190
|
-
checkout: ITreeCheckout,
|
|
191
|
-
nodeKeyManager: NodeIdentifierManager,
|
|
192
|
-
): Context {
|
|
193
|
-
return new Context(schema, checkout, nodeKeyManager);
|
|
194
|
-
}
|
|
@@ -278,20 +278,8 @@ export class LazySequence extends LazyField implements FlexTreeSequenceField {
|
|
|
278
278
|
}
|
|
279
279
|
}
|
|
280
280
|
|
|
281
|
-
export class
|
|
281
|
+
export class LazyValueField extends LazyField implements FlexTreeRequiredField {
|
|
282
282
|
public editor: ValueFieldEditBuilder<ExclusiveMapTree> = {
|
|
283
|
-
set: (newContent) => {
|
|
284
|
-
assert(false, 0xa0c /* Unexpected set of readonly field */);
|
|
285
|
-
},
|
|
286
|
-
};
|
|
287
|
-
|
|
288
|
-
public get content(): FlexTreeUnknownUnboxed {
|
|
289
|
-
return this.atIndex(0);
|
|
290
|
-
}
|
|
291
|
-
}
|
|
292
|
-
|
|
293
|
-
export class LazyValueField extends ReadonlyLazyValueField implements FlexTreeRequiredField {
|
|
294
|
-
public override editor: ValueFieldEditBuilder<ExclusiveMapTree> = {
|
|
295
283
|
set: (newContent) => {
|
|
296
284
|
this.valueFieldEditor().set(cursorForMapTreeField([newContent]));
|
|
297
285
|
},
|
|
@@ -303,7 +291,7 @@ export class LazyValueField extends ReadonlyLazyValueField implements FlexTreeRe
|
|
|
303
291
|
return fieldEditor;
|
|
304
292
|
}
|
|
305
293
|
|
|
306
|
-
public
|
|
294
|
+
public get content(): FlexTreeUnknownUnboxed {
|
|
307
295
|
return this.atIndex(0);
|
|
308
296
|
}
|
|
309
297
|
}
|
|
@@ -11,8 +11,9 @@ import {
|
|
|
11
11
|
rootField,
|
|
12
12
|
type SchemaAndPolicy,
|
|
13
13
|
} from "../../core/index.js";
|
|
14
|
+
import type { FlexTreeContext } from "./context.js";
|
|
14
15
|
|
|
15
|
-
import { TreeStatus
|
|
16
|
+
import { TreeStatus } from "./flexTreeTypes.js";
|
|
16
17
|
/**
|
|
17
18
|
* Checks the detached field and returns the TreeStatus based on whether or not the detached field is a root field.
|
|
18
19
|
* @param detachedField - the detached field you want to check.
|
|
@@ -75,15 +76,14 @@ export interface DetachedFieldCache {
|
|
|
75
76
|
}
|
|
76
77
|
|
|
77
78
|
/**
|
|
78
|
-
* Utility function to get a {@link SchemaAndPolicy} object from a {@link
|
|
79
|
-
* @
|
|
80
|
-
*
|
|
81
|
-
* For {@link Unhydrated} nodes this schema may only describe the types allowed subtree for this particular entity.
|
|
79
|
+
* Utility function to get a {@link SchemaAndPolicy} object from a {@link FlexTreeContext}.
|
|
80
|
+
* @returns A {@link SchemaAndPolicy} object with the stored schema and policy from the context provided.
|
|
81
|
+
* For {@link Unhydrated} contexts this schema may only describe the types allowed subtree for this particular entity.
|
|
82
82
|
*/
|
|
83
|
-
export function getSchemaAndPolicy(
|
|
83
|
+
export function getSchemaAndPolicy(context: FlexTreeContext): SchemaAndPolicy {
|
|
84
84
|
return {
|
|
85
|
-
schema:
|
|
86
|
-
policy:
|
|
85
|
+
schema: context.schema,
|
|
86
|
+
policy: context.schemaPolicy,
|
|
87
87
|
};
|
|
88
88
|
}
|
|
89
89
|
|
|
@@ -109,6 +109,7 @@ export {
|
|
|
109
109
|
type FieldBatchCodec,
|
|
110
110
|
makeTreeChunker,
|
|
111
111
|
makeFieldBatchCodec,
|
|
112
|
+
fluidVersionToFieldBatchCodecWriteVersion,
|
|
112
113
|
type FieldBatchEncodingContext,
|
|
113
114
|
} from "./chunked-forest/index.js";
|
|
114
115
|
|
|
@@ -145,6 +146,7 @@ export {
|
|
|
145
146
|
SchemaValidationErrors,
|
|
146
147
|
isNodeInSchema,
|
|
147
148
|
isFieldInSchema,
|
|
149
|
+
inSchemaOrThrow,
|
|
148
150
|
} from "./default-schema/index.js";
|
|
149
151
|
|
|
150
152
|
export {
|
|
@@ -158,7 +160,6 @@ export {
|
|
|
158
160
|
type FlexTreeEntity,
|
|
159
161
|
type FlexTreeField,
|
|
160
162
|
type FlexTreeNode,
|
|
161
|
-
getTreeContext,
|
|
162
163
|
TreeStatus,
|
|
163
164
|
Context,
|
|
164
165
|
type FlexTreeNodeEvents,
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import type { SessionSpaceCompressedId, IIdCompressor } from "@fluidframework/id-compressor";
|
|
7
6
|
import { assert } from "@fluidframework/core-utils/internal";
|
|
7
|
+
import type { SessionSpaceCompressedId, IIdCompressor } from "@fluidframework/id-compressor";
|
|
8
8
|
|
|
9
9
|
import {
|
|
10
10
|
type DeltaRoot,
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import { assert, oob, debugAssert, fail } from "@fluidframework/core-utils/internal";
|
|
7
|
+
import { UsageError } from "@fluidframework/telemetry-utils/internal";
|
|
7
8
|
|
|
8
9
|
import {
|
|
9
10
|
CursorLocationType,
|
|
@@ -19,7 +20,6 @@ import {
|
|
|
19
20
|
detachedFieldAsKey,
|
|
20
21
|
rootField,
|
|
21
22
|
} from "../core/index.js";
|
|
22
|
-
import { UsageError } from "@fluidframework/telemetry-utils/internal";
|
|
23
23
|
|
|
24
24
|
/**
|
|
25
25
|
* {@link ITreeCursorSynchronous} that can return the underlying node objects.
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { isFluidHandle } from "@fluidframework/runtime-utils/internal";
|
|
7
6
|
import type { IFluidHandle } from "@fluidframework/core-interfaces";
|
|
8
7
|
import { assert, unreachableCase } from "@fluidframework/core-utils/internal";
|
|
8
|
+
import { isFluidHandle } from "@fluidframework/runtime-utils/internal";
|
|
9
9
|
|
|
10
10
|
import { type TreeValue, type Value, ValueSchema } from "../core/index.js";
|
|
11
11
|
|
package/src/jsonDomainSchema.ts
CHANGED
package/src/packageVersion.ts
CHANGED
|
@@ -5,10 +5,9 @@
|
|
|
5
5
|
|
|
6
6
|
import { assert } from "@fluidframework/core-utils/internal";
|
|
7
7
|
import {
|
|
8
|
-
|
|
8
|
+
Context,
|
|
9
9
|
type FlexTreeField,
|
|
10
10
|
type NodeIdentifierManager,
|
|
11
|
-
getTreeContext,
|
|
12
11
|
type FlexTreeHydratedContext,
|
|
13
12
|
type FullSchemaPolicy,
|
|
14
13
|
} from "../feature-libraries/index.js";
|
|
@@ -19,6 +18,10 @@ import type { ITreeCheckout, ITreeCheckoutFork } from "./treeCheckout.js";
|
|
|
19
18
|
|
|
20
19
|
/**
|
|
21
20
|
* An editable view of a (version control style) branch of a shared tree.
|
|
21
|
+
* @remarks
|
|
22
|
+
* Does not depend on stored schema, and thus can live across schema changes.
|
|
23
|
+
* @privateRemarks
|
|
24
|
+
* This has no state beyond the context, so it likely should be replaced with just the context.
|
|
22
25
|
*/
|
|
23
26
|
export class CheckoutFlexTreeView<out TCheckout extends ITreeCheckout = ITreeCheckout> {
|
|
24
27
|
/**
|
|
@@ -30,9 +33,11 @@ export class CheckoutFlexTreeView<out TCheckout extends ITreeCheckout = ITreeChe
|
|
|
30
33
|
public readonly context: Context;
|
|
31
34
|
|
|
32
35
|
/**
|
|
33
|
-
* Get a
|
|
36
|
+
* Get a view of the tree content using the flex-tree API.
|
|
34
37
|
*/
|
|
35
|
-
public
|
|
38
|
+
public get flexTree(): FlexTreeField {
|
|
39
|
+
return this.context.root;
|
|
40
|
+
}
|
|
36
41
|
|
|
37
42
|
private disposed = false;
|
|
38
43
|
|
|
@@ -48,9 +53,8 @@ export class CheckoutFlexTreeView<out TCheckout extends ITreeCheckout = ITreeChe
|
|
|
48
53
|
public readonly nodeKeyManager: NodeIdentifierManager,
|
|
49
54
|
private readonly onDispose?: () => void,
|
|
50
55
|
) {
|
|
51
|
-
this.context =
|
|
56
|
+
this.context = new Context(schema, this.checkout, nodeKeyManager);
|
|
52
57
|
contextToTreeViewMap.set(this.context, this);
|
|
53
|
-
this.flexTree = this.context.root;
|
|
54
58
|
}
|
|
55
59
|
|
|
56
60
|
public [disposeSymbol](): void {
|
|
@@ -33,9 +33,6 @@ import {
|
|
|
33
33
|
SchemaCompatibilityTester,
|
|
34
34
|
type InsertableContent,
|
|
35
35
|
type TreeViewConfiguration,
|
|
36
|
-
mapTreeFromNodeData,
|
|
37
|
-
prepareContentForHydration,
|
|
38
|
-
comparePersistedSchemaInternal,
|
|
39
36
|
type TreeViewAlpha,
|
|
40
37
|
type InsertableField,
|
|
41
38
|
type ReadableField,
|
|
@@ -55,6 +52,7 @@ import {
|
|
|
55
52
|
SimpleContextSlot,
|
|
56
53
|
areImplicitFieldSchemaEqual,
|
|
57
54
|
createUnknownOptionalFieldPolicy,
|
|
55
|
+
prepareForInsertionContextless,
|
|
58
56
|
} from "../simple-tree/index.js";
|
|
59
57
|
import {
|
|
60
58
|
type Breakable,
|
|
@@ -99,6 +97,9 @@ export class SchematizingSimpleTreeView<
|
|
|
99
97
|
|
|
100
98
|
private readonly viewSchema: SchemaCompatibilityTester;
|
|
101
99
|
|
|
100
|
+
/**
|
|
101
|
+
* Events to unregister upon disposal.
|
|
102
|
+
*/
|
|
102
103
|
private readonly unregisterCallbacks = new Set<() => void>();
|
|
103
104
|
|
|
104
105
|
public disposed = false;
|
|
@@ -174,17 +175,16 @@ export class SchematizingSimpleTreeView<
|
|
|
174
175
|
|
|
175
176
|
this.runSchemaEdit(() => {
|
|
176
177
|
const schema = this.viewSchema.viewSchemaAsStored;
|
|
177
|
-
const mapTree =
|
|
178
|
+
const mapTree = prepareForInsertionContextless(
|
|
178
179
|
content as InsertableContent | undefined,
|
|
179
180
|
this.rootFieldSchema,
|
|
180
|
-
this.nodeKeyManager,
|
|
181
181
|
{
|
|
182
182
|
schema,
|
|
183
183
|
policy: this.schemaPolicy,
|
|
184
184
|
},
|
|
185
|
+
this,
|
|
185
186
|
);
|
|
186
187
|
|
|
187
|
-
prepareContentForHydration(mapTree, this.checkout.forest);
|
|
188
188
|
initialize(this.checkout, {
|
|
189
189
|
schema,
|
|
190
190
|
initialTree: mapTree === undefined ? undefined : cursorForMapTreeNode(mapTree),
|
|
@@ -324,15 +324,14 @@ export class SchematizingSimpleTreeView<
|
|
|
324
324
|
private update(): void {
|
|
325
325
|
this.disposeView();
|
|
326
326
|
|
|
327
|
-
const compatibility =
|
|
328
|
-
this.checkout.storedSchema,
|
|
329
|
-
this.viewSchema,
|
|
330
|
-
canInitialize(this.checkout),
|
|
331
|
-
);
|
|
327
|
+
const compatibility = this.viewSchema.checkCompatibility(this.checkout.storedSchema);
|
|
332
328
|
|
|
333
329
|
let lastRoot =
|
|
334
330
|
this.compatibility.canView && this.view !== undefined ? this.root : undefined;
|
|
335
|
-
this.currentCompatibility =
|
|
331
|
+
this.currentCompatibility = {
|
|
332
|
+
...compatibility,
|
|
333
|
+
canInitialize: canInitialize(this.checkout),
|
|
334
|
+
};
|
|
336
335
|
|
|
337
336
|
if (compatibility.canView) {
|
|
338
337
|
// Trigger "rootChanged" if the root changes in the future.
|
|
@@ -36,6 +36,10 @@ import {
|
|
|
36
36
|
extractPersistedSchema,
|
|
37
37
|
type TreeBranch,
|
|
38
38
|
TreeViewConfigurationAlpha,
|
|
39
|
+
getStoredKey,
|
|
40
|
+
getPropertyKeyFromStoredKey,
|
|
41
|
+
treeNodeApi,
|
|
42
|
+
mapTreeFromNodeData,
|
|
39
43
|
} from "../simple-tree/index.js";
|
|
40
44
|
import type { JsonCompatible } from "../util/index.js";
|
|
41
45
|
import { noopValidator, type FluidClientVersion, type ICodecOptions } from "../codec/index.js";
|
|
@@ -49,10 +53,12 @@ import {
|
|
|
49
53
|
TreeCompressionStrategy,
|
|
50
54
|
type FieldBatch,
|
|
51
55
|
type FieldBatchEncodingContext,
|
|
56
|
+
fluidVersionToFieldBatchCodecWriteVersion,
|
|
52
57
|
} from "../feature-libraries/index.js";
|
|
53
58
|
import { independentInitializedView, type ViewContent } from "./independentView.js";
|
|
54
59
|
import { SchematizingSimpleTreeView, ViewSlot } from "./schematizingTreeView.js";
|
|
55
60
|
import { currentVersion } from "../codec/index.js";
|
|
61
|
+
import { createFromMapTree } from "../simple-tree/index.js";
|
|
56
62
|
|
|
57
63
|
/**
|
|
58
64
|
* Extensions to {@link (Tree:interface)} and {@link (TreeBeta:interface)} which are not yet stable.
|
|
@@ -80,11 +86,8 @@ export interface TreeAlpha {
|
|
|
80
86
|
* When providing a {@link TreeNodeSchemaClass}, this is the same as invoking its constructor except that an unhydrated node can also be provided.
|
|
81
87
|
* This function exists as a generalization that can be used in other cases as well,
|
|
82
88
|
* such as when `undefined` might be allowed (for an optional field), or when the type should be inferred from the data when more than one type is possible.
|
|
83
|
-
*
|
|
84
|
-
* Like with {@link TreeNodeSchemaClass}'s constructor, it's an error to provide an existing node to this API.
|
|
85
|
-
* For that case, use {@link (TreeBeta:interface).clone}.
|
|
86
89
|
* @privateRemarks
|
|
87
|
-
* There should be a way to provide a source for defaulted identifiers,
|
|
90
|
+
* There should be a way to provide a source for defaulted identifiers, either via this API or some way to add them to its output later.
|
|
88
91
|
*/
|
|
89
92
|
create<const TSchema extends ImplicitFieldSchema | UnsafeUnknownSchema>(
|
|
90
93
|
schema: UnsafeUnknownSchema extends TSchema
|
|
@@ -208,6 +211,15 @@ export interface TreeAlpha {
|
|
|
208
211
|
compressedData: JsonCompatible<IFluidHandle>,
|
|
209
212
|
options: { idCompressor?: IIdCompressor } & ICodecOptions,
|
|
210
213
|
): Unhydrated<TreeFieldFromImplicitField<TSchema>>;
|
|
214
|
+
|
|
215
|
+
/**
|
|
216
|
+
* The key of the given node under its parent.
|
|
217
|
+
* @remarks
|
|
218
|
+
* If `node` is an element in a {@link (TreeArrayNode:interface)}, this returns the index of `node` in the array node (a `number`).
|
|
219
|
+
* If `node` is the root node, this returns undefined.
|
|
220
|
+
* Otherwise, this returns the key of the field that it is under (a `string`).
|
|
221
|
+
*/
|
|
222
|
+
key2(node: TreeNode): string | number | undefined;
|
|
211
223
|
}
|
|
212
224
|
|
|
213
225
|
/**
|
|
@@ -229,7 +241,24 @@ export const TreeAlpha: TreeAlpha = {
|
|
|
229
241
|
return view;
|
|
230
242
|
},
|
|
231
243
|
|
|
232
|
-
create
|
|
244
|
+
create<const TSchema extends ImplicitFieldSchema | UnsafeUnknownSchema>(
|
|
245
|
+
schema: UnsafeUnknownSchema extends TSchema
|
|
246
|
+
? ImplicitFieldSchema
|
|
247
|
+
: TSchema & ImplicitFieldSchema,
|
|
248
|
+
data: InsertableField<TSchema>,
|
|
249
|
+
): Unhydrated<
|
|
250
|
+
TSchema extends ImplicitFieldSchema
|
|
251
|
+
? TreeFieldFromImplicitField<TSchema>
|
|
252
|
+
: TreeNode | TreeLeafValue | undefined
|
|
253
|
+
> {
|
|
254
|
+
const mapTree = mapTreeFromNodeData(data as InsertableField<UnsafeUnknownSchema>, schema);
|
|
255
|
+
const result = mapTree === undefined ? undefined : createFromMapTree(schema, mapTree);
|
|
256
|
+
return result as Unhydrated<
|
|
257
|
+
TSchema extends ImplicitFieldSchema
|
|
258
|
+
? TreeFieldFromImplicitField<TSchema>
|
|
259
|
+
: TreeNode | TreeLeafValue | undefined
|
|
260
|
+
>;
|
|
261
|
+
},
|
|
233
262
|
|
|
234
263
|
importConcise<TSchema extends ImplicitFieldSchema | UnsafeUnknownSchema>(
|
|
235
264
|
schema: UnsafeUnknownSchema extends TSchema
|
|
@@ -291,7 +320,7 @@ export const TreeAlpha: TreeAlpha = {
|
|
|
291
320
|
},
|
|
292
321
|
): JsonCompatible<IFluidHandle> {
|
|
293
322
|
const schema = tryGetSchema(node) ?? fail(0xacf /* invalid input */);
|
|
294
|
-
const format =
|
|
323
|
+
const format = fluidVersionToFieldBatchCodecWriteVersion(options.oldestCompatibleClient);
|
|
295
324
|
const codec = makeFieldBatchCodec({ jsonValidator: noopValidator }, format);
|
|
296
325
|
const cursor = borrowFieldCursorFromTreeNodeOrValue(node);
|
|
297
326
|
const batch: FieldBatch = [cursor];
|
|
@@ -323,6 +352,21 @@ export const TreeAlpha: TreeAlpha = {
|
|
|
323
352
|
const view = independentInitializedView(config, options, content);
|
|
324
353
|
return TreeBeta.clone<TSchema>(view.root);
|
|
325
354
|
},
|
|
355
|
+
|
|
356
|
+
key2(node: TreeNode): string | number | undefined {
|
|
357
|
+
// If the parent is undefined, then this node is under the root field,
|
|
358
|
+
const parent = treeNodeApi.parent(node);
|
|
359
|
+
if (parent === undefined) {
|
|
360
|
+
return undefined;
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
// The flex-domain strictly operates in terms of "stored keys".
|
|
364
|
+
// To find the associated developer-facing "property key", we need to look up the field associated with
|
|
365
|
+
// the stored key from the flex-domain, and get property key its simple-domain counterpart was created with.
|
|
366
|
+
const storedKey = getStoredKey(node);
|
|
367
|
+
const parentSchema = treeNodeApi.schema(parent);
|
|
368
|
+
return getPropertyKeyFromStoredKey(parentSchema, storedKey);
|
|
369
|
+
},
|
|
326
370
|
};
|
|
327
371
|
|
|
328
372
|
function exportConcise(
|
|
@@ -374,10 +418,3 @@ function borrowFieldCursorFromTreeNodeOrValue(
|
|
|
374
418
|
const mapTree = mapTreeFromCursor(cursor);
|
|
375
419
|
return cursorForMapTreeField([mapTree]);
|
|
376
420
|
}
|
|
377
|
-
|
|
378
|
-
const versionToFormat = {
|
|
379
|
-
v2_0: 1,
|
|
380
|
-
v2_1: 1,
|
|
381
|
-
v2_2: 1,
|
|
382
|
-
v2_3: 1,
|
|
383
|
-
};
|
|
@@ -5,7 +5,11 @@
|
|
|
5
5
|
|
|
6
6
|
import { assert } from "@fluidframework/core-utils/internal";
|
|
7
7
|
|
|
8
|
-
import type {
|
|
8
|
+
import type {
|
|
9
|
+
ExclusiveMapTree,
|
|
10
|
+
ITreeCursorSynchronous,
|
|
11
|
+
SchemaAndPolicy,
|
|
12
|
+
} from "../../core/index.js";
|
|
9
13
|
import type {
|
|
10
14
|
ImplicitFieldSchema,
|
|
11
15
|
TreeFieldFromImplicitField,
|
|
@@ -24,13 +28,12 @@ import {
|
|
|
24
28
|
import {
|
|
25
29
|
cursorForMapTreeNode,
|
|
26
30
|
defaultSchemaPolicy,
|
|
27
|
-
|
|
31
|
+
inSchemaOrThrow,
|
|
28
32
|
mapTreeFromCursor,
|
|
29
33
|
type NodeIdentifierManager,
|
|
30
34
|
} from "../../feature-libraries/index.js";
|
|
31
35
|
import { isFieldInSchema } from "../../feature-libraries/index.js";
|
|
32
|
-
import {
|
|
33
|
-
import { inSchemaOrThrow, mapTreeFromNodeData } from "../toMapTree.js";
|
|
36
|
+
import { mapTreeFromNodeData } from "../toMapTree.js";
|
|
34
37
|
import { getUnhydratedContext } from "../createContext.js";
|
|
35
38
|
import { createUnknownOptionalFieldPolicy } from "../objectNode.js";
|
|
36
39
|
|
|
@@ -88,24 +91,12 @@ export function cursorFromInsertable<
|
|
|
88
91
|
):
|
|
89
92
|
| ITreeCursorSynchronous
|
|
90
93
|
| (TSchema extends FieldSchema<FieldKind.Optional> ? undefined : never) {
|
|
91
|
-
const storedSchema = toStoredSchema(schema);
|
|
92
|
-
const schemaValidationPolicy: SchemaAndPolicy = {
|
|
93
|
-
policy: defaultSchemaPolicy,
|
|
94
|
-
// TODO: optimize: This isn't the most efficient operation since its not cached, and has to convert all the schema.
|
|
95
|
-
schema: storedSchema,
|
|
96
|
-
};
|
|
97
|
-
|
|
98
94
|
const mapTree = mapTreeFromNodeData(
|
|
99
95
|
data as InsertableField<UnsafeUnknownSchema>,
|
|
100
96
|
schema,
|
|
101
97
|
context,
|
|
102
|
-
schemaValidationPolicy,
|
|
103
98
|
);
|
|
104
99
|
if (mapTree === undefined) {
|
|
105
|
-
assert(
|
|
106
|
-
storedSchema.rootFieldSchema.kind === FieldKinds.optional.identifier,
|
|
107
|
-
0xa10 /* missing non-optional field */,
|
|
108
|
-
);
|
|
109
100
|
return undefined as TSchema extends FieldSchema<FieldKind.Optional> ? undefined : never;
|
|
110
101
|
}
|
|
111
102
|
return cursorForMapTreeNode(mapTree);
|
|
@@ -144,6 +135,16 @@ export function createFromCursor<const TSchema extends ImplicitFieldSchema>(
|
|
|
144
135
|
// Length asserted above, so this is safe. This assert is done instead of checking for undefined after indexing to ensure a length greater than 1 also errors.
|
|
145
136
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
146
137
|
const mapTree = mapTrees[0]!;
|
|
138
|
+
return createFromMapTree(schema, mapTree);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* Creates an unhydrated simple-tree field from an ExclusiveMapTree.
|
|
143
|
+
*/
|
|
144
|
+
export function createFromMapTree<const TSchema extends ImplicitFieldSchema>(
|
|
145
|
+
schema: TSchema,
|
|
146
|
+
mapTree: ExclusiveMapTree,
|
|
147
|
+
): Unhydrated<TreeFieldFromImplicitField<TSchema>> {
|
|
147
148
|
const mapTreeNode = UnhydratedFlexTreeNode.getOrCreate(
|
|
148
149
|
getUnhydratedContext(schema),
|
|
149
150
|
mapTree,
|
|
@@ -44,8 +44,19 @@ export {
|
|
|
44
44
|
enumFromStrings,
|
|
45
45
|
singletonSchema,
|
|
46
46
|
} from "./schemaCreationUtilities.js";
|
|
47
|
-
export {
|
|
48
|
-
|
|
47
|
+
export {
|
|
48
|
+
treeNodeApi,
|
|
49
|
+
type TreeNodeApi,
|
|
50
|
+
tryGetSchema,
|
|
51
|
+
getStoredKey,
|
|
52
|
+
getPropertyKeyFromStoredKey,
|
|
53
|
+
} from "./treeNodeApi.js";
|
|
54
|
+
export {
|
|
55
|
+
createFromInsertable,
|
|
56
|
+
cursorFromInsertable,
|
|
57
|
+
createFromCursor,
|
|
58
|
+
createFromMapTree,
|
|
59
|
+
} from "./create.js";
|
|
49
60
|
export {
|
|
50
61
|
type JsonSchemaId,
|
|
51
62
|
type JsonSchemaType,
|
|
@@ -107,7 +118,6 @@ export {
|
|
|
107
118
|
|
|
108
119
|
export {
|
|
109
120
|
extractPersistedSchema,
|
|
110
|
-
comparePersistedSchemaInternal,
|
|
111
121
|
comparePersistedSchema,
|
|
112
122
|
} from "./storedSchema.js";
|
|
113
123
|
|
|
@@ -4,7 +4,6 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import type { FluidClientVersion, ICodecOptions } from "../../codec/index.js";
|
|
7
|
-
import type { TreeStoredSchema } from "../../core/index.js";
|
|
8
7
|
import {
|
|
9
8
|
defaultSchemaPolicy,
|
|
10
9
|
encodeTreeSchema,
|
|
@@ -96,8 +95,7 @@ export function comparePersistedSchema(
|
|
|
96
95
|
persisted: JsonCompatible,
|
|
97
96
|
view: ImplicitFieldSchema,
|
|
98
97
|
options: ICodecOptions,
|
|
99
|
-
|
|
100
|
-
): SchemaCompatibilityStatus {
|
|
98
|
+
): Omit<SchemaCompatibilityStatus, "canInitialize"> {
|
|
101
99
|
// Any version can be passed down to makeSchemaCodec here.
|
|
102
100
|
// We only use the decode part, which always dispatches to the correct codec based on the version in the data, not the version passed to `makeSchemaCodec`.
|
|
103
101
|
const schemaCodec = makeSchemaCodec(options, SchemaCodecVersion.v1);
|
|
@@ -107,20 +105,5 @@ export function comparePersistedSchema(
|
|
|
107
105
|
{},
|
|
108
106
|
normalizeFieldSchema(view),
|
|
109
107
|
);
|
|
110
|
-
return
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
/**
|
|
114
|
-
* Compute compatibility for viewing a document with `stored` schema using `viewSchema`.
|
|
115
|
-
* `canInitialize` is passed through to the return value unchanged and otherwise unused.
|
|
116
|
-
*/
|
|
117
|
-
export function comparePersistedSchemaInternal(
|
|
118
|
-
stored: TreeStoredSchema,
|
|
119
|
-
viewSchema: SchemaCompatibilityTester,
|
|
120
|
-
canInitialize: boolean,
|
|
121
|
-
): SchemaCompatibilityStatus {
|
|
122
|
-
return {
|
|
123
|
-
...viewSchema.checkCompatibility(stored),
|
|
124
|
-
canInitialize,
|
|
125
|
-
};
|
|
108
|
+
return viewSchema.checkCompatibility(stored);
|
|
126
109
|
}
|
|
@@ -288,7 +288,7 @@ export function tryGetSchema(value: unknown): undefined | TreeNodeSchema {
|
|
|
288
288
|
/**
|
|
289
289
|
* Gets the stored key with which the provided node is associated in the parent.
|
|
290
290
|
*/
|
|
291
|
-
function getStoredKey(node: TreeNode): string | number {
|
|
291
|
+
export function getStoredKey(node: TreeNode): string | number {
|
|
292
292
|
// Note: the flex domain strictly works with "stored keys", and knows nothing about the developer-facing
|
|
293
293
|
// "property keys".
|
|
294
294
|
const parentField = getOrCreateInnerNode(node).parentField;
|
|
@@ -309,7 +309,7 @@ function getStoredKey(node: TreeNode): string | number {
|
|
|
309
309
|
/**
|
|
310
310
|
* Given a node schema, gets the property key corresponding with the provided {@link FieldProps.key | stored key}.
|
|
311
311
|
*/
|
|
312
|
-
function getPropertyKeyFromStoredKey(
|
|
312
|
+
export function getPropertyKeyFromStoredKey(
|
|
313
313
|
schema: TreeNodeSchema,
|
|
314
314
|
storedKey: string | number,
|
|
315
315
|
): string | number {
|