@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
|
@@ -10,10 +10,8 @@ import { EmptyKey, type ExclusiveMapTree } from "../core/index.js";
|
|
|
10
10
|
import {
|
|
11
11
|
type FlexTreeNode,
|
|
12
12
|
type FlexTreeSequenceField,
|
|
13
|
-
getSchemaAndPolicy,
|
|
14
13
|
isFlexTreeNode,
|
|
15
14
|
} from "../feature-libraries/index.js";
|
|
16
|
-
import { prepareContentForHydration } from "./proxies.js";
|
|
17
15
|
import {
|
|
18
16
|
normalizeAllowedTypes,
|
|
19
17
|
unannotateImplicitAllowedTypes,
|
|
@@ -41,6 +39,7 @@ import {
|
|
|
41
39
|
type TreeNodeSchemaClass,
|
|
42
40
|
} from "./core/index.js";
|
|
43
41
|
import { type InsertableContent, mapTreeFromNodeData } from "./toMapTree.js";
|
|
42
|
+
import { prepareArrayContentForInsertion } from "./prepareForInsertion.js";
|
|
44
43
|
import {
|
|
45
44
|
getKernel,
|
|
46
45
|
UnhydratedFlexTreeNode,
|
|
@@ -860,24 +859,14 @@ abstract class CustomArrayNodeBase<const T extends ImplicitAllowedTypes>
|
|
|
860
859
|
| IterableTreeArrayContent<InsertableContent>
|
|
861
860
|
)[];
|
|
862
861
|
|
|
863
|
-
const
|
|
864
|
-
.
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
sequenceField.context.isHydrated()
|
|
872
|
-
? sequenceField.context.nodeKeyManager
|
|
873
|
-
: undefined,
|
|
874
|
-
getSchemaAndPolicy(sequenceField),
|
|
875
|
-
),
|
|
876
|
-
);
|
|
877
|
-
|
|
878
|
-
if (sequenceField.context.isHydrated()) {
|
|
879
|
-
prepareContentForHydration(mapTrees, sequenceField.context.checkout.forest);
|
|
880
|
-
}
|
|
862
|
+
const contentArray = content.flatMap((c): InsertableContent[] =>
|
|
863
|
+
c instanceof IterableTreeArrayContent ? Array.from(c) : [c],
|
|
864
|
+
);
|
|
865
|
+
const mapTrees = prepareArrayContentForInsertion(
|
|
866
|
+
contentArray,
|
|
867
|
+
this.simpleSchema,
|
|
868
|
+
sequenceField.context,
|
|
869
|
+
);
|
|
881
870
|
|
|
882
871
|
return mapTrees;
|
|
883
872
|
}
|
|
@@ -7,7 +7,7 @@ import type { TreeValue } from "../../core/index.js";
|
|
|
7
7
|
import {
|
|
8
8
|
type InnerNode,
|
|
9
9
|
unhydratedFlexTreeNodeToTreeNode,
|
|
10
|
-
|
|
10
|
+
simpleTreeNodeSlot,
|
|
11
11
|
createTreeNodeFromInner,
|
|
12
12
|
} from "./treeNodeKernel.js";
|
|
13
13
|
import type { TreeNode } from "./treeNode.js";
|
|
@@ -23,7 +23,7 @@ export function getOrCreateNodeFromInnerNode(flexNode: InnerNode): TreeNode | Tr
|
|
|
23
23
|
const cached =
|
|
24
24
|
flexNode instanceof UnhydratedFlexTreeNode
|
|
25
25
|
? unhydratedFlexTreeNodeToTreeNode.get(flexNode)
|
|
26
|
-
: flexNode.anchorNode.slots.get(
|
|
26
|
+
: flexNode.anchorNode.slots.get(simpleTreeNodeSlot);
|
|
27
27
|
|
|
28
28
|
if (cached !== undefined) {
|
|
29
29
|
return cached;
|
|
@@ -175,12 +175,7 @@ export class TreeNodeKernel {
|
|
|
175
175
|
};
|
|
176
176
|
} else {
|
|
177
177
|
// Hydrated case
|
|
178
|
-
|
|
179
|
-
assert(
|
|
180
|
-
!anchorNode.slots.has(proxySlot),
|
|
181
|
-
0x7f5 /* Cannot associate an flex node with multiple simple-tree nodes */,
|
|
182
|
-
);
|
|
183
|
-
this.#hydrationState = this.createHydratedState(anchorNode);
|
|
178
|
+
this.#hydrationState = this.createHydratedState(innerNode.anchorNode);
|
|
184
179
|
}
|
|
185
180
|
}
|
|
186
181
|
|
|
@@ -197,16 +192,22 @@ export class TreeNodeKernel {
|
|
|
197
192
|
|
|
198
193
|
/**
|
|
199
194
|
* Transition from {@link Unhydrated} to hydrated.
|
|
200
|
-
* Bi-directionally associates the given hydrated TreeNode to the
|
|
195
|
+
* Bi-directionally associates the given hydrated TreeNode to the anchor node at the provided path.
|
|
201
196
|
* @remarks
|
|
202
197
|
* Happens at most once for any given node.
|
|
203
|
-
* Cleans up mappings to {@link UnhydratedFlexTreeNode} - it is assumed that they are no longer needed once
|
|
198
|
+
* Cleans up mappings to {@link UnhydratedFlexTreeNode} - it is assumed that they are no longer needed once this node has an anchor node.
|
|
204
199
|
*/
|
|
205
|
-
|
|
200
|
+
public hydrate(anchors: AnchorSet, path: UpPath): void {
|
|
206
201
|
assert(!this.disposed, 0xa2a /* cannot hydrate a disposed node */);
|
|
207
202
|
assert(!isHydrated(this.#hydrationState), 0xa2b /* hydration should only happen once */);
|
|
208
203
|
unhydratedFlexTreeNodeToTreeNodeInternal.delete(this.#hydrationState.innerNode);
|
|
204
|
+
|
|
205
|
+
const anchor = anchors.track(path);
|
|
206
|
+
const anchorNode =
|
|
207
|
+
anchors.locate(anchor) ?? fail(0xb42 /* Expected anchor node to be present */);
|
|
208
|
+
|
|
209
209
|
this.#hydrationState = this.createHydratedState(anchorNode);
|
|
210
|
+
this.#hydrationState.offAnchorNode.add(() => anchors.forget(anchor));
|
|
210
211
|
|
|
211
212
|
// If needed, register forwarding emitters for events from before hydration
|
|
212
213
|
if (this.#unhydratedEvents.evaluated) {
|
|
@@ -224,7 +225,11 @@ export class TreeNodeKernel {
|
|
|
224
225
|
}
|
|
225
226
|
|
|
226
227
|
private createHydratedState(anchorNode: AnchorNode): HydratedState {
|
|
227
|
-
|
|
228
|
+
assert(
|
|
229
|
+
!anchorNode.slots.has(simpleTreeNodeSlot),
|
|
230
|
+
0x7f5 /* Cannot associate an flex node with multiple simple-tree nodes */,
|
|
231
|
+
);
|
|
232
|
+
anchorNode.slots.set(simpleTreeNodeSlot, this.node);
|
|
228
233
|
return {
|
|
229
234
|
anchorNode,
|
|
230
235
|
offAnchorNode: new Set([
|
|
@@ -265,6 +270,7 @@ export class TreeNodeKernel {
|
|
|
265
270
|
}
|
|
266
271
|
|
|
267
272
|
public dispose(): void {
|
|
273
|
+
debugAssert(() => !this.disposed || "Cannot dispose a disposed node");
|
|
268
274
|
this.disposed = true;
|
|
269
275
|
if (isHydrated(this.#hydrationState)) {
|
|
270
276
|
for (const off of this.#hydrationState.offAnchorNode) {
|
|
@@ -305,7 +311,7 @@ export class TreeNodeKernel {
|
|
|
305
311
|
if (this.#hydrationState.innerNode === undefined) {
|
|
306
312
|
// Marinated case -> cooked
|
|
307
313
|
const anchorNode = this.#hydrationState.anchorNode;
|
|
308
|
-
//
|
|
314
|
+
// This TreeNode is bound to an anchor node, but it may or may not have an actual flex node yet
|
|
309
315
|
const flexNode = anchorNode.slots.get(flexTreeSlot);
|
|
310
316
|
if (flexNode !== undefined) {
|
|
311
317
|
// If the flex node already exists, use it...
|
|
@@ -318,8 +324,6 @@ export class TreeNodeKernel {
|
|
|
318
324
|
context.checkout.forest.moveCursorToPath(anchorNode, cursor);
|
|
319
325
|
this.#hydrationState.innerNode = makeTree(context, cursor);
|
|
320
326
|
cursor.free();
|
|
321
|
-
// Calling this is a performance improvement, however, do this only after demand to avoid momentarily having no anchors to anchorNode
|
|
322
|
-
anchorForgetters?.get(this.node)?.();
|
|
323
327
|
if (!allowDeleted) {
|
|
324
328
|
assertFlexTreeEntityNotFreed(this.#hydrationState.innerNode);
|
|
325
329
|
}
|
|
@@ -335,35 +339,6 @@ export class TreeNodeKernel {
|
|
|
335
339
|
return this.#hydrationState.innerNode;
|
|
336
340
|
}
|
|
337
341
|
|
|
338
|
-
/**
|
|
339
|
-
* Creates an anchor node and associates it with the given proxy.
|
|
340
|
-
* @privateRemarks
|
|
341
|
-
* Use `forgetters` to cleanup the anchor allocated by this function once the anchor is no longer needed.
|
|
342
|
-
* In practice, this happens when either the anchor node is destroyed, or another anchor to the same node is created by a new flex node.
|
|
343
|
-
*
|
|
344
|
-
* The FlexTreeNode holds a reference to the same anchor, and has a lifetime at least as long as the simple-tree,
|
|
345
|
-
* so this would be unnecessary except for the case of "marinated" nodes, which have an anchor,
|
|
346
|
-
* but might not have a FlexTreeNode.
|
|
347
|
-
* Handling this case is an optimization assuming that this extra anchor reference is cheaper than eagerly creating FlexTreeNodes.
|
|
348
|
-
*/
|
|
349
|
-
public anchorProxy(anchors: AnchorSet, path: UpPath): AnchorNode {
|
|
350
|
-
assert(!anchorForgetters.has(this.node), 0x91c /* Proxy anchor should not be set twice */);
|
|
351
|
-
const anchor = anchors.track(path);
|
|
352
|
-
const anchorNode =
|
|
353
|
-
anchors.locate(anchor) ?? fail(0xb42 /* Expected anchor node to be present */);
|
|
354
|
-
this.hydrate(anchorNode);
|
|
355
|
-
const forget = (): void => {
|
|
356
|
-
if (anchors.locate(anchor)) {
|
|
357
|
-
anchors.forget(anchor);
|
|
358
|
-
}
|
|
359
|
-
anchorForgetters.delete(this.node);
|
|
360
|
-
off();
|
|
361
|
-
};
|
|
362
|
-
anchorForgetters.set(this.node, forget);
|
|
363
|
-
const off = anchorNode.events.on("afterDestroy", forget);
|
|
364
|
-
return anchorNode;
|
|
365
|
-
}
|
|
366
|
-
|
|
367
342
|
/**
|
|
368
343
|
* Retrieves the InnerNode associated with the given target via {@link setInnerNode}, if any.
|
|
369
344
|
* @remarks
|
|
@@ -383,11 +358,6 @@ export class TreeNodeKernel {
|
|
|
383
358
|
}
|
|
384
359
|
}
|
|
385
360
|
|
|
386
|
-
/**
|
|
387
|
-
* Used by {@link anchorProxy} as an optimization to ensure that only one anchor is remembered at a time for a given anchor node
|
|
388
|
-
*/
|
|
389
|
-
const anchorForgetters = new WeakMap<TreeNode, () => void>();
|
|
390
|
-
|
|
391
361
|
const kernelEvents = ["childrenChangedAfterBatch", "subtreeChangedAfterBatch"] as const;
|
|
392
362
|
|
|
393
363
|
type KernelEvents = Pick<AnchorEvents, (typeof kernelEvents)[number]>;
|
|
@@ -423,22 +393,22 @@ export const unhydratedFlexTreeNodeToTreeNode =
|
|
|
423
393
|
>;
|
|
424
394
|
|
|
425
395
|
/**
|
|
426
|
-
* An anchor slot which associates an anchor with its corresponding TreeNode, if there is one.
|
|
396
|
+
* An anchor slot which associates an anchor with its corresponding {@link TreeNode}, if there is one.
|
|
427
397
|
* @remarks
|
|
428
398
|
* For this to work, we have to require that there is at most a single view using a given AnchorSet.
|
|
429
399
|
* FlexTree already has this assumption, and we also assume there is a single simple-tree per FlexTree, so this is valid.
|
|
430
400
|
*/
|
|
431
|
-
export const
|
|
401
|
+
export const simpleTreeNodeSlot = anchorSlot<TreeNode>();
|
|
432
402
|
|
|
433
403
|
/**
|
|
434
404
|
* Dispose a TreeNode (if any) for an existing anchor without disposing the anchor.
|
|
435
405
|
*/
|
|
436
406
|
export function tryDisposeTreeNode(anchorNode: AnchorNode): void {
|
|
437
|
-
const treeNode = anchorNode.slots.get(
|
|
407
|
+
const treeNode = anchorNode.slots.get(simpleTreeNodeSlot);
|
|
438
408
|
if (treeNode !== undefined) {
|
|
439
409
|
const kernel = getKernel(treeNode);
|
|
440
410
|
kernel.dispose();
|
|
441
|
-
anchorNode.slots.delete(
|
|
411
|
+
anchorNode.slots.delete(simpleTreeNodeSlot);
|
|
442
412
|
}
|
|
443
413
|
}
|
|
444
414
|
|
|
@@ -483,7 +453,6 @@ export function getOrCreateInnerNode(treeNode: TreeNode, allowDeleted = false):
|
|
|
483
453
|
* Gets a flex node from an anchor node
|
|
484
454
|
*/
|
|
485
455
|
function flexNodeFromAnchor(anchorNode: AnchorNode): FlexTreeNode {
|
|
486
|
-
// the proxy is bound to an anchor node, but it may or may not have an actual flex node yet
|
|
487
456
|
const flexNode = anchorNode.slots.get(flexTreeSlot);
|
|
488
457
|
if (flexNode !== undefined) {
|
|
489
458
|
return flexNode; // If it does have a flex node, return it...
|
|
@@ -501,7 +470,7 @@ function flexNodeFromAnchor(anchorNode: AnchorNode): FlexTreeNode {
|
|
|
501
470
|
* Gets a tree node from an anchor node
|
|
502
471
|
*/
|
|
503
472
|
export function treeNodeFromAnchor(anchorNode: AnchorNode): TreeNode | TreeValue {
|
|
504
|
-
const cached = anchorNode.slots.get(
|
|
473
|
+
const cached = anchorNode.slots.get(simpleTreeNodeSlot);
|
|
505
474
|
if (cached !== undefined) {
|
|
506
475
|
return cached;
|
|
507
476
|
}
|
|
@@ -69,7 +69,7 @@ interface LocationInField {
|
|
|
69
69
|
* An unhydrated implementation of {@link FlexTreeNode} which wraps a {@link MapTree}.
|
|
70
70
|
* @remarks
|
|
71
71
|
* MapTreeNodes are unconditionally cached -
|
|
72
|
-
* when retrieved via {@link
|
|
72
|
+
* when retrieved via {@link getOrCreateNodeFromInnerNode}, the same {@link MapTree} object will always produce the same `UnhydratedFlexTreeNode` object.
|
|
73
73
|
*
|
|
74
74
|
* Create a `UnhydratedFlexTreeNode` by calling {@link getOrCreate}.
|
|
75
75
|
*/
|
|
@@ -112,9 +112,9 @@ export class UnhydratedFlexTreeNode implements FlexTreeNode {
|
|
|
112
112
|
* Create a new UnhydratedFlexTreeNode.
|
|
113
113
|
* @param location - the parentage of this node, if it is being created underneath an existing node and field, or undefined if not
|
|
114
114
|
* @remarks This class (and its subclasses) should not be directly constructed outside of this module.
|
|
115
|
-
* Instead, use {@link
|
|
115
|
+
* Instead, use {@link getOrCreateNodeFromInnerNode} to create a UnhydratedFlexTreeNode from a {@link MapTree}.
|
|
116
116
|
* A `UnhydratedFlexTreeNode` may never be constructed more than once for the same {@link MapTree} object.
|
|
117
|
-
* Instead, it should always be acquired via {@link
|
|
117
|
+
* Instead, it should always be acquired via {@link getOrCreateNodeFromInnerNode}.
|
|
118
118
|
*/
|
|
119
119
|
public constructor(
|
|
120
120
|
public readonly simpleContext: Context,
|
|
@@ -548,7 +548,7 @@ function getFieldKeyCache(
|
|
|
548
548
|
|
|
549
549
|
/**
|
|
550
550
|
* If there exists a {@link UnhydratedFlexTreeNode} for the given {@link MapTree}, returns it, otherwise returns `undefined`.
|
|
551
|
-
* @remarks {@link UnhydratedFlexTreeNode | UnhydratedFlexTreeNodes} are created via {@link
|
|
551
|
+
* @remarks {@link UnhydratedFlexTreeNode | UnhydratedFlexTreeNodes} are created via {@link getOrCreateNodeFromInnerNode}.
|
|
552
552
|
*/
|
|
553
553
|
export function tryUnhydratedFlexTreeNode(
|
|
554
554
|
mapTree: MapTree,
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
|
+
* Licensed under the MIT License.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { fail } from "@fluidframework/core-utils/internal";
|
|
7
|
+
import type { TreeValue } from "../core/index.js";
|
|
8
|
+
import {
|
|
9
|
+
FieldKinds,
|
|
10
|
+
type FlexTreeField,
|
|
11
|
+
isFlexTreeNode,
|
|
12
|
+
type FlexTreeRequiredField,
|
|
13
|
+
type FlexTreeOptionalField,
|
|
14
|
+
} from "../feature-libraries/index.js";
|
|
15
|
+
import { type TreeNode, getOrCreateNodeFromInnerNode } from "./core/index.js";
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Retrieve the associated {@link TreeNode} for the given field's content.
|
|
19
|
+
*/
|
|
20
|
+
export function getTreeNodeForField(field: FlexTreeField): TreeNode | TreeValue | undefined {
|
|
21
|
+
function tryToUnboxLeaves(
|
|
22
|
+
flexField: FlexTreeOptionalField | FlexTreeRequiredField,
|
|
23
|
+
): TreeNode | TreeValue | undefined {
|
|
24
|
+
const maybeContent = flexField.content;
|
|
25
|
+
return isFlexTreeNode(maybeContent)
|
|
26
|
+
? getOrCreateNodeFromInnerNode(maybeContent)
|
|
27
|
+
: maybeContent;
|
|
28
|
+
}
|
|
29
|
+
switch (field.schema) {
|
|
30
|
+
case FieldKinds.required.identifier: {
|
|
31
|
+
const typedField = field as FlexTreeRequiredField;
|
|
32
|
+
return tryToUnboxLeaves(typedField);
|
|
33
|
+
}
|
|
34
|
+
case FieldKinds.optional.identifier: {
|
|
35
|
+
const typedField = field as FlexTreeOptionalField;
|
|
36
|
+
return tryToUnboxLeaves(typedField);
|
|
37
|
+
}
|
|
38
|
+
case FieldKinds.identifier.identifier: {
|
|
39
|
+
// Identifier fields are just value fields that hold strings
|
|
40
|
+
return (field as FlexTreeRequiredField).content as string;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
default:
|
|
44
|
+
fail(0xadf /* invalid field kind */);
|
|
45
|
+
}
|
|
46
|
+
}
|
package/src/simple-tree/index.ts
CHANGED
|
@@ -79,7 +79,6 @@ export {
|
|
|
79
79
|
extractPersistedSchema,
|
|
80
80
|
comparePersistedSchema,
|
|
81
81
|
type ConciseTree,
|
|
82
|
-
comparePersistedSchemaInternal,
|
|
83
82
|
SchemaCompatibilityTester,
|
|
84
83
|
type Unenforced,
|
|
85
84
|
type System_Unsafe,
|
|
@@ -89,6 +88,8 @@ export {
|
|
|
89
88
|
type TreeBranch,
|
|
90
89
|
type TreeBranchEvents,
|
|
91
90
|
tryGetSchema,
|
|
91
|
+
getStoredKey,
|
|
92
|
+
getPropertyKeyFromStoredKey,
|
|
92
93
|
applySchemaToParserOptions,
|
|
93
94
|
cursorFromVerbose,
|
|
94
95
|
verboseFromCursor,
|
|
@@ -123,6 +124,7 @@ export {
|
|
|
123
124
|
type FixRecursiveRecursionLimit,
|
|
124
125
|
schemaStatics,
|
|
125
126
|
type TreeChangeEvents,
|
|
127
|
+
createFromMapTree,
|
|
126
128
|
} from "./api/index.js";
|
|
127
129
|
export type {
|
|
128
130
|
SimpleTreeSchema,
|
|
@@ -184,10 +186,7 @@ export {
|
|
|
184
186
|
type NodeSchemaMetadata,
|
|
185
187
|
evaluateLazySchema,
|
|
186
188
|
} from "./schemaTypes.js";
|
|
187
|
-
export {
|
|
188
|
-
getTreeNodeForField,
|
|
189
|
-
prepareContentForHydration,
|
|
190
|
-
} from "./proxies.js";
|
|
189
|
+
export { getTreeNodeForField } from "./getTreeNodeForField.js";
|
|
191
190
|
export {
|
|
192
191
|
TreeArrayNode,
|
|
193
192
|
IterableTreeArrayContent,
|
|
@@ -220,6 +219,10 @@ export {
|
|
|
220
219
|
type FactoryContent,
|
|
221
220
|
type FactoryContentObject,
|
|
222
221
|
} from "./toMapTree.js";
|
|
222
|
+
export {
|
|
223
|
+
prepareForInsertion,
|
|
224
|
+
prepareForInsertionContextless,
|
|
225
|
+
} from "./prepareForInsertion.js";
|
|
223
226
|
export { toStoredSchema, getStoredSchema } from "./toStoredSchema.js";
|
|
224
227
|
export {
|
|
225
228
|
numberSchema,
|
|
@@ -4,13 +4,12 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import { Lazy } from "@fluidframework/core-utils/internal";
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
getSchemaAndPolicy,
|
|
7
|
+
import type {
|
|
8
|
+
FlexTreeNode,
|
|
9
|
+
FlexTreeOptionalField,
|
|
10
|
+
OptionalFieldEditBuilder,
|
|
12
11
|
} from "../feature-libraries/index.js";
|
|
13
|
-
import { getTreeNodeForField
|
|
12
|
+
import { getTreeNodeForField } from "./getTreeNodeForField.js";
|
|
14
13
|
import {
|
|
15
14
|
createFieldSchema,
|
|
16
15
|
FieldKind,
|
|
@@ -42,6 +41,7 @@ import {
|
|
|
42
41
|
type FactoryContent,
|
|
43
42
|
type InsertableContent,
|
|
44
43
|
} from "./toMapTree.js";
|
|
44
|
+
import { prepareForInsertion } from "./prepareForInsertion.js";
|
|
45
45
|
import { brand, count, type RestrictiveStringRecord } from "../util/index.js";
|
|
46
46
|
import { TreeNodeValid, type MostDerivedData } from "./treeNodeValid.js";
|
|
47
47
|
import type { ExclusiveMapTree } from "../core/index.js";
|
|
@@ -191,17 +191,13 @@ abstract class CustomMapNodeBase<const T extends ImplicitAllowedTypes> extends T
|
|
|
191
191
|
public set(key: string, value: InsertableTreeNodeFromImplicitAllowedTypes<T>): this {
|
|
192
192
|
const kernel = getKernel(this);
|
|
193
193
|
const node = this.innerNode;
|
|
194
|
-
const mapTree =
|
|
194
|
+
const mapTree = prepareForInsertion(
|
|
195
195
|
value as InsertableContent | undefined,
|
|
196
196
|
createFieldSchema(FieldKind.Optional, kernel.schema.info as ImplicitAllowedTypes),
|
|
197
|
-
node.context
|
|
198
|
-
getSchemaAndPolicy(node),
|
|
197
|
+
node.context,
|
|
199
198
|
);
|
|
200
199
|
|
|
201
200
|
const field = node.getBoxed(brand(key));
|
|
202
|
-
if (node.context.isHydrated()) {
|
|
203
|
-
prepareContentForHydration(mapTree, node.context.checkout.forest);
|
|
204
|
-
}
|
|
205
201
|
|
|
206
202
|
this.editor(key).set(mapTree, field.length === 0);
|
|
207
203
|
return this;
|
|
@@ -13,9 +13,8 @@ import {
|
|
|
13
13
|
type FlexTreeNode,
|
|
14
14
|
type FlexTreeOptionalField,
|
|
15
15
|
type FlexTreeRequiredField,
|
|
16
|
-
getSchemaAndPolicy,
|
|
17
16
|
} from "../feature-libraries/index.js";
|
|
18
|
-
import { getTreeNodeForField
|
|
17
|
+
import { getTreeNodeForField } from "./getTreeNodeForField.js";
|
|
19
18
|
import {
|
|
20
19
|
type ImplicitFieldSchema,
|
|
21
20
|
getStoredKey,
|
|
@@ -47,6 +46,7 @@ import {
|
|
|
47
46
|
getOrCreateInnerNode,
|
|
48
47
|
} from "./core/index.js";
|
|
49
48
|
import { mapTreeFromNodeData, type InsertableContent } from "./toMapTree.js";
|
|
49
|
+
import { prepareForInsertion } from "./prepareForInsertion.js";
|
|
50
50
|
import type { RestrictiveStringRecord, FlattenKeys } from "../util/index.js";
|
|
51
51
|
import {
|
|
52
52
|
isObjectNodeSchema,
|
|
@@ -328,16 +328,7 @@ export function setField(
|
|
|
328
328
|
simpleFieldSchema: FieldSchema,
|
|
329
329
|
value: InsertableContent | undefined,
|
|
330
330
|
): void {
|
|
331
|
-
const mapTree =
|
|
332
|
-
value,
|
|
333
|
-
simpleFieldSchema,
|
|
334
|
-
field.context.isHydrated() ? field.context.nodeKeyManager : undefined,
|
|
335
|
-
getSchemaAndPolicy(field),
|
|
336
|
-
);
|
|
337
|
-
|
|
338
|
-
if (field.context.isHydrated()) {
|
|
339
|
-
prepareContentForHydration(mapTree, field.context.checkout.forest);
|
|
340
|
-
}
|
|
331
|
+
const mapTree = prepareForInsertion(value, simpleFieldSchema, field.context);
|
|
341
332
|
|
|
342
333
|
switch (field.schema) {
|
|
343
334
|
case FieldKinds.required.identifier: {
|