@fluidframework/tree 2.41.0 → 2.43.0-343119
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/.vscode/settings.json +1 -0
- package/CHANGELOG.md +33 -0
- package/api-report/tree.alpha.api.md +70 -28
- package/api-report/tree.beta.api.md +33 -0
- package/dist/alpha.d.ts +12 -6
- package/dist/beta.d.ts +6 -1
- package/dist/codec/codec.d.ts +23 -3
- package/dist/codec/codec.d.ts.map +1 -1
- package/dist/codec/codec.js.map +1 -1
- package/dist/codec/index.d.ts +1 -1
- package/dist/codec/index.d.ts.map +1 -1
- package/dist/codec/index.js.map +1 -1
- package/dist/codec/versioned/codec.d.ts +35 -2
- package/dist/codec/versioned/codec.d.ts.map +1 -1
- package/dist/codec/versioned/codec.js +38 -3
- package/dist/codec/versioned/codec.js.map +1 -1
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +5 -2
- package/dist/core/index.js.map +1 -1
- package/dist/core/schema-stored/formatV2.d.ts +80 -0
- package/dist/core/schema-stored/formatV2.d.ts.map +1 -0
- package/dist/core/schema-stored/formatV2.js +55 -0
- package/dist/core/schema-stored/formatV2.js.map +1 -0
- package/dist/core/schema-stored/index.d.ts +3 -1
- package/dist/core/schema-stored/index.d.ts.map +1 -1
- package/dist/core/schema-stored/index.js +5 -2
- package/dist/core/schema-stored/index.js.map +1 -1
- package/dist/core/schema-stored/schema.d.ts +49 -17
- package/dist/core/schema-stored/schema.d.ts.map +1 -1
- package/dist/core/schema-stored/schema.js +65 -22
- package/dist/core/schema-stored/schema.js.map +1 -1
- package/dist/core/tree/detachedFieldIndex.d.ts +2 -2
- package/dist/core/tree/detachedFieldIndex.d.ts.map +1 -1
- package/dist/core/tree/detachedFieldIndex.js +5 -1
- package/dist/core/tree/detachedFieldIndex.js.map +1 -1
- package/dist/core/tree/mapTree.d.ts +2 -1
- package/dist/core/tree/mapTree.d.ts.map +1 -1
- package/dist/core/tree/mapTree.js +11 -5
- package/dist/core/tree/mapTree.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/codec/chunkEncodingGeneric.d.ts +9 -7
- package/dist/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js +13 -9
- package/dist/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/compressedEncode.d.ts +3 -3
- package/dist/feature-libraries/chunked-forest/codec/compressedEncode.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js +6 -6
- package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/nodeShape.d.ts +1 -1
- package/dist/feature-libraries/chunked-forest/codec/nodeShape.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/nodeShape.js +3 -3
- package/dist/feature-libraries/chunked-forest/codec/nodeShape.js.map +1 -1
- package/dist/feature-libraries/default-schema/defaultEditBuilder.d.ts +3 -2
- package/dist/feature-libraries/default-schema/defaultEditBuilder.d.ts.map +1 -1
- package/dist/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
- package/dist/feature-libraries/default-schema/schemaChecker.d.ts +4 -3
- package/dist/feature-libraries/default-schema/schemaChecker.d.ts.map +1 -1
- package/dist/feature-libraries/default-schema/schemaChecker.js +4 -3
- package/dist/feature-libraries/default-schema/schemaChecker.js.map +1 -1
- package/dist/feature-libraries/detachedFieldIndexSummarizer.d.ts +8 -3
- package/dist/feature-libraries/detachedFieldIndexSummarizer.d.ts.map +1 -1
- package/dist/feature-libraries/detachedFieldIndexSummarizer.js +2 -5
- package/dist/feature-libraries/detachedFieldIndexSummarizer.js.map +1 -1
- package/dist/feature-libraries/flex-tree/context.d.ts +14 -6
- package/dist/feature-libraries/flex-tree/context.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/context.js.map +1 -1
- package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts +48 -29
- package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/flexTreeTypes.js +4 -0
- package/dist/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
- package/dist/feature-libraries/flex-tree/index.d.ts +2 -3
- package/dist/feature-libraries/flex-tree/index.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/index.js +1 -7
- package/dist/feature-libraries/flex-tree/index.js.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyEntity.d.ts +2 -2
- package/dist/feature-libraries/flex-tree/lazyEntity.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyEntity.js +3 -0
- package/dist/feature-libraries/flex-tree/lazyEntity.js.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyField.d.ts +6 -7
- package/dist/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyField.js +2 -5
- package/dist/feature-libraries/flex-tree/lazyField.js.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyNode.d.ts +8 -7
- package/dist/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyNode.js +17 -6
- package/dist/feature-libraries/flex-tree/lazyNode.js.map +1 -1
- package/dist/feature-libraries/forest-summary/forestSummarizer.d.ts +10 -5
- package/dist/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
- package/dist/feature-libraries/forest-summary/forestSummarizer.js +9 -12
- package/dist/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
- package/dist/feature-libraries/index.d.ts +2 -2
- package/dist/feature-libraries/index.d.ts.map +1 -1
- package/dist/feature-libraries/index.js +4 -3
- package/dist/feature-libraries/index.js.map +1 -1
- package/dist/feature-libraries/mapTreeCursor.d.ts +53 -3
- package/dist/feature-libraries/mapTreeCursor.d.ts.map +1 -1
- package/dist/feature-libraries/mapTreeCursor.js +45 -7
- package/dist/feature-libraries/mapTreeCursor.js.map +1 -1
- package/dist/feature-libraries/modular-schema/fieldKindWithEditor.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/fieldKindWithEditor.js +2 -0
- package/dist/feature-libraries/modular-schema/fieldKindWithEditor.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeCodecs.d.ts +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeCodecs.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeCodecs.js +5 -5
- package/dist/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
- package/dist/feature-libraries/object-forest/objectForest.d.ts.map +1 -1
- package/dist/feature-libraries/object-forest/objectForest.js +2 -0
- package/dist/feature-libraries/object-forest/objectForest.js.map +1 -1
- package/dist/feature-libraries/schema-edits/schemaChangeCodecs.d.ts.map +1 -1
- package/dist/feature-libraries/schema-edits/schemaChangeCodecs.js +8 -4
- package/dist/feature-libraries/schema-edits/schemaChangeCodecs.js.map +1 -1
- package/dist/feature-libraries/schema-edits/schemaChangeFormat.d.ts +2 -36
- package/dist/feature-libraries/schema-edits/schemaChangeFormat.d.ts.map +1 -1
- package/dist/feature-libraries/schema-edits/schemaChangeFormat.js +3 -3
- package/dist/feature-libraries/schema-edits/schemaChangeFormat.js.map +1 -1
- package/dist/feature-libraries/schema-index/codec.d.ts.map +1 -1
- package/dist/feature-libraries/schema-index/codec.js +59 -9
- package/dist/feature-libraries/schema-index/codec.js.map +1 -1
- package/dist/feature-libraries/schema-index/formatV1.d.ts +1 -1
- package/dist/feature-libraries/schema-index/formatV2.d.ts +42 -0
- package/dist/feature-libraries/schema-index/formatV2.d.ts.map +1 -0
- package/dist/feature-libraries/schema-index/formatV2.js +26 -0
- package/dist/feature-libraries/schema-index/formatV2.js.map +1 -0
- package/dist/feature-libraries/schema-index/index.d.ts +2 -1
- package/dist/feature-libraries/schema-index/index.d.ts.map +1 -1
- package/dist/feature-libraries/schema-index/index.js +4 -2
- package/dist/feature-libraries/schema-index/index.js.map +1 -1
- package/dist/feature-libraries/schema-index/schemaSummarizer.d.ts +7 -2
- package/dist/feature-libraries/schema-index/schemaSummarizer.d.ts.map +1 -1
- package/dist/feature-libraries/schema-index/schemaSummarizer.js +6 -6
- package/dist/feature-libraries/schema-index/schemaSummarizer.js.map +1 -1
- package/dist/feature-libraries/treeCursorUtils.d.ts +5 -1
- package/dist/feature-libraries/treeCursorUtils.d.ts.map +1 -1
- package/dist/feature-libraries/treeCursorUtils.js +8 -2
- package/dist/feature-libraries/treeCursorUtils.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.d.ts.map +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/shared-tree/schematizeTree.d.ts.map +1 -1
- package/dist/shared-tree/schematizeTree.js +1 -0
- package/dist/shared-tree/schematizeTree.js.map +1 -1
- package/dist/shared-tree/schematizingTreeView.d.ts +11 -1
- package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/dist/shared-tree/schematizingTreeView.js +36 -22
- package/dist/shared-tree/schematizingTreeView.js.map +1 -1
- package/dist/shared-tree/sharedTree.d.ts +8 -4
- package/dist/shared-tree/sharedTree.d.ts.map +1 -1
- package/dist/shared-tree/sharedTree.js +35 -5
- package/dist/shared-tree/sharedTree.js.map +1 -1
- package/dist/shared-tree/tree.d.ts.map +1 -1
- package/dist/shared-tree/tree.js +8 -24
- package/dist/shared-tree/tree.js.map +1 -1
- package/dist/shared-tree/treeAlpha.d.ts +2 -3
- package/dist/shared-tree/treeAlpha.d.ts.map +1 -1
- package/dist/shared-tree/treeAlpha.js +4 -5
- package/dist/shared-tree/treeAlpha.js.map +1 -1
- package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
- package/dist/shared-tree/treeCheckout.js +5 -2
- package/dist/shared-tree/treeCheckout.js.map +1 -1
- package/dist/shared-tree-core/editManagerSummarizer.d.ts +8 -3
- package/dist/shared-tree-core/editManagerSummarizer.d.ts.map +1 -1
- package/dist/shared-tree-core/editManagerSummarizer.js +2 -5
- package/dist/shared-tree-core/editManagerSummarizer.js.map +1 -1
- package/dist/shared-tree-core/sharedTreeCore.d.ts +18 -7
- package/dist/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
- package/dist/shared-tree-core/sharedTreeCore.js +15 -2
- package/dist/shared-tree-core/sharedTreeCore.js.map +1 -1
- package/dist/simple-tree/api/configuration.d.ts +2 -2
- package/dist/simple-tree/api/configuration.js +1 -1
- package/dist/simple-tree/api/configuration.js.map +1 -1
- package/dist/simple-tree/api/create.d.ts +9 -4
- package/dist/simple-tree/api/create.d.ts.map +1 -1
- package/dist/simple-tree/api/create.js +29 -16
- package/dist/simple-tree/api/create.js.map +1 -1
- package/dist/simple-tree/api/customTree.d.ts +4 -0
- package/dist/simple-tree/api/customTree.d.ts.map +1 -1
- package/dist/simple-tree/api/customTree.js +9 -1
- package/dist/simple-tree/api/customTree.js.map +1 -1
- package/dist/simple-tree/api/index.d.ts +1 -1
- package/dist/simple-tree/api/index.d.ts.map +1 -1
- package/dist/simple-tree/api/index.js +1 -2
- package/dist/simple-tree/api/index.js.map +1 -1
- package/dist/simple-tree/api/schemaCompatibilityTester.js +1 -1
- package/dist/simple-tree/api/schemaCompatibilityTester.js.map +1 -1
- package/dist/simple-tree/api/schemaCreationUtilities.d.ts +3 -3
- package/dist/simple-tree/api/schemaCreationUtilities.js +3 -3
- package/dist/simple-tree/api/schemaCreationUtilities.js.map +1 -1
- package/dist/simple-tree/api/schemaFactory.d.ts +25 -13
- package/dist/simple-tree/api/schemaFactory.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaFactory.js +42 -9
- package/dist/simple-tree/api/schemaFactory.js.map +1 -1
- package/dist/simple-tree/api/schemaFactoryAlpha.d.ts +41 -11
- package/dist/simple-tree/api/schemaFactoryAlpha.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaFactoryAlpha.js +31 -4
- package/dist/simple-tree/api/schemaFactoryAlpha.js.map +1 -1
- package/dist/simple-tree/api/storedSchema.js +2 -2
- package/dist/simple-tree/api/storedSchema.js.map +1 -1
- package/dist/simple-tree/api/treeChangeEvents.d.ts +8 -3
- package/dist/simple-tree/api/treeChangeEvents.d.ts.map +1 -1
- package/dist/simple-tree/api/treeChangeEvents.js.map +1 -1
- package/dist/simple-tree/api/treeNodeApi.d.ts +14 -3
- package/dist/simple-tree/api/treeNodeApi.d.ts.map +1 -1
- package/dist/simple-tree/api/treeNodeApi.js +32 -17
- package/dist/simple-tree/api/treeNodeApi.js.map +1 -1
- package/dist/simple-tree/api/verboseTree.d.ts.map +1 -1
- package/dist/simple-tree/api/verboseTree.js +12 -9
- package/dist/simple-tree/api/verboseTree.js.map +1 -1
- package/dist/simple-tree/api/viewSchemaToSimpleSchema.d.ts.map +1 -1
- package/dist/simple-tree/api/viewSchemaToSimpleSchema.js +5 -0
- package/dist/simple-tree/api/viewSchemaToSimpleSchema.js.map +1 -1
- package/dist/simple-tree/core/getOrCreateNode.d.ts.map +1 -1
- package/dist/simple-tree/core/getOrCreateNode.js +2 -1
- package/dist/simple-tree/core/getOrCreateNode.js.map +1 -1
- package/dist/simple-tree/core/index.d.ts +2 -2
- package/dist/simple-tree/core/index.d.ts.map +1 -1
- package/dist/simple-tree/core/index.js +3 -4
- package/dist/simple-tree/core/index.js.map +1 -1
- package/dist/simple-tree/core/treeNodeKernel.d.ts +15 -25
- package/dist/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
- package/dist/simple-tree/core/treeNodeKernel.js +27 -34
- package/dist/simple-tree/core/treeNodeKernel.js.map +1 -1
- package/dist/simple-tree/core/unhydratedFlexTree.d.ts +129 -64
- package/dist/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -1
- package/dist/simple-tree/core/unhydratedFlexTree.js +175 -207
- package/dist/simple-tree/core/unhydratedFlexTree.js.map +1 -1
- package/dist/simple-tree/index.d.ts +5 -5
- package/dist/simple-tree/index.d.ts.map +1 -1
- package/dist/simple-tree/index.js +5 -5
- package/dist/simple-tree/index.js.map +1 -1
- package/dist/simple-tree/leafNodeSchema.d.ts +2 -0
- package/dist/simple-tree/leafNodeSchema.d.ts.map +1 -1
- package/dist/simple-tree/leafNodeSchema.js.map +1 -1
- package/dist/simple-tree/node-kinds/array/arrayNode.d.ts +3 -1
- package/dist/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/array/arrayNode.js +8 -7
- package/dist/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
- package/dist/simple-tree/node-kinds/index.d.ts +1 -1
- package/dist/simple-tree/node-kinds/index.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/index.js +1 -2
- package/dist/simple-tree/node-kinds/index.js.map +1 -1
- package/dist/simple-tree/node-kinds/map/mapNode.d.ts +3 -2
- package/dist/simple-tree/node-kinds/map/mapNode.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/map/mapNode.js +6 -4
- package/dist/simple-tree/node-kinds/map/mapNode.js.map +1 -1
- package/dist/simple-tree/node-kinds/object/index.d.ts +1 -1
- package/dist/simple-tree/node-kinds/object/index.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/object/index.js +1 -2
- package/dist/simple-tree/node-kinds/object/index.js.map +1 -1
- package/dist/simple-tree/node-kinds/object/objectNode.d.ts +5 -15
- package/dist/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/object/objectNode.js +15 -44
- package/dist/simple-tree/node-kinds/object/objectNode.js.map +1 -1
- package/dist/simple-tree/prepareForInsertion.d.ts +20 -6
- package/dist/simple-tree/prepareForInsertion.d.ts.map +1 -1
- package/dist/simple-tree/prepareForInsertion.js +31 -20
- package/dist/simple-tree/prepareForInsertion.js.map +1 -1
- package/dist/simple-tree/schemaTypes.d.ts +56 -9
- package/dist/simple-tree/schemaTypes.d.ts.map +1 -1
- package/dist/simple-tree/schemaTypes.js +28 -1
- package/dist/simple-tree/schemaTypes.js.map +1 -1
- package/dist/simple-tree/simpleSchema.d.ts +22 -4
- package/dist/simple-tree/simpleSchema.d.ts.map +1 -1
- package/dist/simple-tree/simpleSchema.js.map +1 -1
- package/dist/simple-tree/toStoredSchema.d.ts +8 -1
- package/dist/simple-tree/toStoredSchema.d.ts.map +1 -1
- package/dist/simple-tree/toStoredSchema.js +19 -7
- package/dist/simple-tree/toStoredSchema.js.map +1 -1
- package/{lib/simple-tree/toMapTree.d.ts → dist/simple-tree/unhydratedFlexTreeFromInsertable.d.ts} +12 -23
- package/dist/simple-tree/unhydratedFlexTreeFromInsertable.d.ts.map +1 -0
- package/dist/simple-tree/{toMapTree.js → unhydratedFlexTreeFromInsertable.js} +103 -185
- package/dist/simple-tree/unhydratedFlexTreeFromInsertable.js.map +1 -0
- package/dist/tableSchema.d.ts +1 -1
- package/dist/treeFactory.d.ts.map +1 -1
- package/dist/treeFactory.js +6 -1
- package/dist/treeFactory.js.map +1 -1
- package/dist/util/index.d.ts +1 -1
- package/dist/util/index.d.ts.map +1 -1
- package/dist/util/index.js +2 -1
- package/dist/util/index.js.map +1 -1
- package/dist/util/typeUtils.d.ts +2 -2
- package/dist/util/typeUtils.js.map +1 -1
- package/dist/util/utils.d.ts +6 -0
- package/dist/util/utils.d.ts.map +1 -1
- package/dist/util/utils.js +8 -1
- package/dist/util/utils.js.map +1 -1
- package/docs/user-facing/schema-evolution.md +1 -1
- package/lib/alpha.d.ts +12 -6
- package/lib/beta.d.ts +6 -1
- package/lib/codec/codec.d.ts +23 -3
- package/lib/codec/codec.d.ts.map +1 -1
- package/lib/codec/codec.js.map +1 -1
- package/lib/codec/index.d.ts +1 -1
- package/lib/codec/index.d.ts.map +1 -1
- package/lib/codec/index.js.map +1 -1
- package/lib/codec/versioned/codec.d.ts +35 -2
- package/lib/codec/versioned/codec.d.ts.map +1 -1
- package/lib/codec/versioned/codec.js +36 -2
- package/lib/codec/versioned/codec.js.map +1 -1
- package/lib/core/index.d.ts +1 -1
- package/lib/core/index.d.ts.map +1 -1
- package/lib/core/index.js +1 -1
- package/lib/core/index.js.map +1 -1
- package/lib/core/schema-stored/formatV2.d.ts +80 -0
- package/lib/core/schema-stored/formatV2.d.ts.map +1 -0
- package/lib/core/schema-stored/formatV2.js +52 -0
- package/lib/core/schema-stored/formatV2.js.map +1 -0
- package/lib/core/schema-stored/index.d.ts +3 -1
- package/lib/core/schema-stored/index.d.ts.map +1 -1
- package/lib/core/schema-stored/index.js +3 -1
- package/lib/core/schema-stored/index.js.map +1 -1
- package/lib/core/schema-stored/schema.d.ts +49 -17
- package/lib/core/schema-stored/schema.d.ts.map +1 -1
- package/lib/core/schema-stored/schema.js +63 -21
- package/lib/core/schema-stored/schema.js.map +1 -1
- package/lib/core/tree/detachedFieldIndex.d.ts +2 -2
- package/lib/core/tree/detachedFieldIndex.d.ts.map +1 -1
- package/lib/core/tree/detachedFieldIndex.js +6 -2
- package/lib/core/tree/detachedFieldIndex.js.map +1 -1
- package/lib/core/tree/mapTree.d.ts +2 -1
- package/lib/core/tree/mapTree.d.ts.map +1 -1
- package/lib/core/tree/mapTree.js +11 -5
- package/lib/core/tree/mapTree.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/codec/chunkEncodingGeneric.d.ts +9 -7
- package/lib/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js +11 -7
- package/lib/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/compressedEncode.d.ts +3 -3
- package/lib/feature-libraries/chunked-forest/codec/compressedEncode.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js +7 -7
- package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/nodeShape.d.ts +1 -1
- package/lib/feature-libraries/chunked-forest/codec/nodeShape.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/nodeShape.js +3 -3
- package/lib/feature-libraries/chunked-forest/codec/nodeShape.js.map +1 -1
- package/lib/feature-libraries/default-schema/defaultEditBuilder.d.ts +3 -2
- package/lib/feature-libraries/default-schema/defaultEditBuilder.d.ts.map +1 -1
- package/lib/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
- package/lib/feature-libraries/default-schema/schemaChecker.d.ts +4 -3
- package/lib/feature-libraries/default-schema/schemaChecker.d.ts.map +1 -1
- package/lib/feature-libraries/default-schema/schemaChecker.js +4 -3
- package/lib/feature-libraries/default-schema/schemaChecker.js.map +1 -1
- package/lib/feature-libraries/detachedFieldIndexSummarizer.d.ts +8 -3
- package/lib/feature-libraries/detachedFieldIndexSummarizer.d.ts.map +1 -1
- package/lib/feature-libraries/detachedFieldIndexSummarizer.js +2 -5
- package/lib/feature-libraries/detachedFieldIndexSummarizer.js.map +1 -1
- package/lib/feature-libraries/flex-tree/context.d.ts +14 -6
- package/lib/feature-libraries/flex-tree/context.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/context.js.map +1 -1
- package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts +48 -29
- package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/flexTreeTypes.js +4 -0
- package/lib/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
- package/lib/feature-libraries/flex-tree/index.d.ts +2 -3
- package/lib/feature-libraries/flex-tree/index.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/index.js +0 -1
- package/lib/feature-libraries/flex-tree/index.js.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyEntity.d.ts +2 -2
- package/lib/feature-libraries/flex-tree/lazyEntity.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyEntity.js +3 -0
- package/lib/feature-libraries/flex-tree/lazyEntity.js.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyField.d.ts +6 -7
- package/lib/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyField.js +3 -6
- package/lib/feature-libraries/flex-tree/lazyField.js.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyNode.d.ts +8 -7
- package/lib/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyNode.js +17 -6
- package/lib/feature-libraries/flex-tree/lazyNode.js.map +1 -1
- package/lib/feature-libraries/forest-summary/forestSummarizer.d.ts +10 -5
- package/lib/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
- package/lib/feature-libraries/forest-summary/forestSummarizer.js +4 -7
- package/lib/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
- package/lib/feature-libraries/index.d.ts +2 -2
- package/lib/feature-libraries/index.d.ts.map +1 -1
- package/lib/feature-libraries/index.js +2 -2
- package/lib/feature-libraries/index.js.map +1 -1
- package/lib/feature-libraries/mapTreeCursor.d.ts +53 -3
- package/lib/feature-libraries/mapTreeCursor.d.ts.map +1 -1
- package/lib/feature-libraries/mapTreeCursor.js +43 -7
- package/lib/feature-libraries/mapTreeCursor.js.map +1 -1
- package/lib/feature-libraries/modular-schema/fieldKindWithEditor.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/fieldKindWithEditor.js +2 -0
- package/lib/feature-libraries/modular-schema/fieldKindWithEditor.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeCodecs.d.ts +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeCodecs.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeCodecs.js +5 -5
- package/lib/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
- package/lib/feature-libraries/object-forest/objectForest.d.ts.map +1 -1
- package/lib/feature-libraries/object-forest/objectForest.js +2 -0
- package/lib/feature-libraries/object-forest/objectForest.js.map +1 -1
- package/lib/feature-libraries/schema-edits/schemaChangeCodecs.d.ts.map +1 -1
- package/lib/feature-libraries/schema-edits/schemaChangeCodecs.js +8 -4
- package/lib/feature-libraries/schema-edits/schemaChangeCodecs.js.map +1 -1
- package/lib/feature-libraries/schema-edits/schemaChangeFormat.d.ts +2 -36
- package/lib/feature-libraries/schema-edits/schemaChangeFormat.d.ts.map +1 -1
- package/lib/feature-libraries/schema-edits/schemaChangeFormat.js +3 -3
- package/lib/feature-libraries/schema-edits/schemaChangeFormat.js.map +1 -1
- package/lib/feature-libraries/schema-index/codec.d.ts.map +1 -1
- package/lib/feature-libraries/schema-index/codec.js +60 -10
- package/lib/feature-libraries/schema-index/codec.js.map +1 -1
- package/lib/feature-libraries/schema-index/formatV1.d.ts +1 -1
- package/lib/feature-libraries/schema-index/formatV2.d.ts +42 -0
- package/lib/feature-libraries/schema-index/formatV2.d.ts.map +1 -0
- package/lib/feature-libraries/schema-index/formatV2.js +23 -0
- package/lib/feature-libraries/schema-index/formatV2.js.map +1 -0
- package/lib/feature-libraries/schema-index/index.d.ts +2 -1
- package/lib/feature-libraries/schema-index/index.d.ts.map +1 -1
- package/lib/feature-libraries/schema-index/index.js +2 -1
- package/lib/feature-libraries/schema-index/index.js.map +1 -1
- package/lib/feature-libraries/schema-index/schemaSummarizer.d.ts +7 -2
- package/lib/feature-libraries/schema-index/schemaSummarizer.d.ts.map +1 -1
- package/lib/feature-libraries/schema-index/schemaSummarizer.js +6 -6
- package/lib/feature-libraries/schema-index/schemaSummarizer.js.map +1 -1
- package/lib/feature-libraries/treeCursorUtils.d.ts +5 -1
- package/lib/feature-libraries/treeCursorUtils.d.ts.map +1 -1
- package/lib/feature-libraries/treeCursorUtils.js +8 -2
- package/lib/feature-libraries/treeCursorUtils.js.map +1 -1
- package/lib/index.d.ts +3 -3
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js.map +1 -1
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.d.ts.map +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/shared-tree/schematizeTree.d.ts.map +1 -1
- package/lib/shared-tree/schematizeTree.js +1 -0
- package/lib/shared-tree/schematizeTree.js.map +1 -1
- package/lib/shared-tree/schematizingTreeView.d.ts +11 -1
- package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/lib/shared-tree/schematizingTreeView.js +34 -21
- package/lib/shared-tree/schematizingTreeView.js.map +1 -1
- package/lib/shared-tree/sharedTree.d.ts +8 -4
- package/lib/shared-tree/sharedTree.d.ts.map +1 -1
- package/lib/shared-tree/sharedTree.js +36 -6
- package/lib/shared-tree/sharedTree.js.map +1 -1
- package/lib/shared-tree/tree.d.ts.map +1 -1
- package/lib/shared-tree/tree.js +2 -18
- package/lib/shared-tree/tree.js.map +1 -1
- package/lib/shared-tree/treeAlpha.d.ts +2 -3
- package/lib/shared-tree/treeAlpha.d.ts.map +1 -1
- package/lib/shared-tree/treeAlpha.js +6 -7
- package/lib/shared-tree/treeAlpha.js.map +1 -1
- package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
- package/lib/shared-tree/treeCheckout.js +6 -3
- package/lib/shared-tree/treeCheckout.js.map +1 -1
- package/lib/shared-tree-core/editManagerSummarizer.d.ts +8 -3
- package/lib/shared-tree-core/editManagerSummarizer.d.ts.map +1 -1
- package/lib/shared-tree-core/editManagerSummarizer.js +2 -5
- package/lib/shared-tree-core/editManagerSummarizer.js.map +1 -1
- package/lib/shared-tree-core/sharedTreeCore.d.ts +18 -7
- package/lib/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
- package/lib/shared-tree-core/sharedTreeCore.js +15 -2
- package/lib/shared-tree-core/sharedTreeCore.js.map +1 -1
- package/lib/simple-tree/api/configuration.d.ts +2 -2
- package/lib/simple-tree/api/configuration.js +1 -1
- package/lib/simple-tree/api/configuration.js.map +1 -1
- package/lib/simple-tree/api/create.d.ts +9 -4
- package/lib/simple-tree/api/create.d.ts.map +1 -1
- package/lib/simple-tree/api/create.js +22 -9
- package/lib/simple-tree/api/create.js.map +1 -1
- package/lib/simple-tree/api/customTree.d.ts +4 -0
- package/lib/simple-tree/api/customTree.d.ts.map +1 -1
- package/lib/simple-tree/api/customTree.js +7 -0
- package/lib/simple-tree/api/customTree.js.map +1 -1
- package/lib/simple-tree/api/index.d.ts +1 -1
- package/lib/simple-tree/api/index.d.ts.map +1 -1
- package/lib/simple-tree/api/index.js +1 -1
- package/lib/simple-tree/api/index.js.map +1 -1
- package/lib/simple-tree/api/schemaCompatibilityTester.js +1 -1
- package/lib/simple-tree/api/schemaCompatibilityTester.js.map +1 -1
- package/lib/simple-tree/api/schemaCreationUtilities.d.ts +3 -3
- package/lib/simple-tree/api/schemaCreationUtilities.js +3 -3
- package/lib/simple-tree/api/schemaCreationUtilities.js.map +1 -1
- package/lib/simple-tree/api/schemaFactory.d.ts +25 -13
- package/lib/simple-tree/api/schemaFactory.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaFactory.js +44 -11
- package/lib/simple-tree/api/schemaFactory.js.map +1 -1
- package/lib/simple-tree/api/schemaFactoryAlpha.d.ts +41 -11
- package/lib/simple-tree/api/schemaFactoryAlpha.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaFactoryAlpha.js +31 -4
- package/lib/simple-tree/api/schemaFactoryAlpha.js.map +1 -1
- package/lib/simple-tree/api/storedSchema.js +2 -2
- package/lib/simple-tree/api/storedSchema.js.map +1 -1
- package/lib/simple-tree/api/treeChangeEvents.d.ts +8 -3
- package/lib/simple-tree/api/treeChangeEvents.d.ts.map +1 -1
- package/lib/simple-tree/api/treeChangeEvents.js.map +1 -1
- package/lib/simple-tree/api/treeNodeApi.d.ts +14 -3
- package/lib/simple-tree/api/treeNodeApi.d.ts.map +1 -1
- package/lib/simple-tree/api/treeNodeApi.js +35 -20
- package/lib/simple-tree/api/treeNodeApi.js.map +1 -1
- package/lib/simple-tree/api/verboseTree.d.ts.map +1 -1
- package/lib/simple-tree/api/verboseTree.js +13 -10
- package/lib/simple-tree/api/verboseTree.js.map +1 -1
- package/lib/simple-tree/api/viewSchemaToSimpleSchema.d.ts.map +1 -1
- package/lib/simple-tree/api/viewSchemaToSimpleSchema.js +5 -0
- package/lib/simple-tree/api/viewSchemaToSimpleSchema.js.map +1 -1
- package/lib/simple-tree/core/getOrCreateNode.d.ts.map +1 -1
- package/lib/simple-tree/core/getOrCreateNode.js +3 -2
- package/lib/simple-tree/core/getOrCreateNode.js.map +1 -1
- package/lib/simple-tree/core/index.d.ts +2 -2
- package/lib/simple-tree/core/index.d.ts.map +1 -1
- package/lib/simple-tree/core/index.js +2 -2
- package/lib/simple-tree/core/index.js.map +1 -1
- package/lib/simple-tree/core/treeNodeKernel.d.ts +15 -25
- package/lib/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
- package/lib/simple-tree/core/treeNodeKernel.js +25 -33
- package/lib/simple-tree/core/treeNodeKernel.js.map +1 -1
- package/lib/simple-tree/core/unhydratedFlexTree.d.ts +129 -64
- package/lib/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -1
- package/lib/simple-tree/core/unhydratedFlexTree.js +174 -208
- package/lib/simple-tree/core/unhydratedFlexTree.js.map +1 -1
- package/lib/simple-tree/index.d.ts +5 -5
- package/lib/simple-tree/index.d.ts.map +1 -1
- package/lib/simple-tree/index.js +3 -3
- package/lib/simple-tree/index.js.map +1 -1
- package/lib/simple-tree/leafNodeSchema.d.ts +2 -0
- package/lib/simple-tree/leafNodeSchema.d.ts.map +1 -1
- package/lib/simple-tree/leafNodeSchema.js.map +1 -1
- package/lib/simple-tree/node-kinds/array/arrayNode.d.ts +3 -1
- package/lib/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/array/arrayNode.js +7 -6
- package/lib/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
- package/lib/simple-tree/node-kinds/index.d.ts +1 -1
- package/lib/simple-tree/node-kinds/index.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/index.js +1 -1
- package/lib/simple-tree/node-kinds/index.js.map +1 -1
- package/lib/simple-tree/node-kinds/map/mapNode.d.ts +3 -2
- package/lib/simple-tree/node-kinds/map/mapNode.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/map/mapNode.js +8 -6
- package/lib/simple-tree/node-kinds/map/mapNode.js.map +1 -1
- package/lib/simple-tree/node-kinds/object/index.d.ts +1 -1
- package/lib/simple-tree/node-kinds/object/index.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/object/index.js +1 -1
- package/lib/simple-tree/node-kinds/object/index.js.map +1 -1
- package/lib/simple-tree/node-kinds/object/objectNode.d.ts +5 -15
- package/lib/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/object/objectNode.js +6 -34
- package/lib/simple-tree/node-kinds/object/objectNode.js.map +1 -1
- package/lib/simple-tree/prepareForInsertion.d.ts +20 -6
- package/lib/simple-tree/prepareForInsertion.d.ts.map +1 -1
- package/lib/simple-tree/prepareForInsertion.js +30 -20
- package/lib/simple-tree/prepareForInsertion.js.map +1 -1
- package/lib/simple-tree/schemaTypes.d.ts +56 -9
- package/lib/simple-tree/schemaTypes.d.ts.map +1 -1
- package/lib/simple-tree/schemaTypes.js +28 -1
- package/lib/simple-tree/schemaTypes.js.map +1 -1
- package/lib/simple-tree/simpleSchema.d.ts +22 -4
- package/lib/simple-tree/simpleSchema.d.ts.map +1 -1
- package/lib/simple-tree/simpleSchema.js.map +1 -1
- package/lib/simple-tree/toStoredSchema.d.ts +8 -1
- package/lib/simple-tree/toStoredSchema.d.ts.map +1 -1
- package/lib/simple-tree/toStoredSchema.js +17 -5
- package/lib/simple-tree/toStoredSchema.js.map +1 -1
- package/{dist/simple-tree/toMapTree.d.ts → lib/simple-tree/unhydratedFlexTreeFromInsertable.d.ts} +12 -23
- package/lib/simple-tree/unhydratedFlexTreeFromInsertable.d.ts.map +1 -0
- package/lib/simple-tree/{toMapTree.js → unhydratedFlexTreeFromInsertable.js} +105 -186
- package/lib/simple-tree/unhydratedFlexTreeFromInsertable.js.map +1 -0
- package/lib/tableSchema.d.ts +1 -1
- package/lib/treeFactory.d.ts.map +1 -1
- package/lib/treeFactory.js +6 -1
- package/lib/treeFactory.js.map +1 -1
- package/lib/util/index.d.ts +1 -1
- package/lib/util/index.d.ts.map +1 -1
- package/lib/util/index.js +1 -1
- package/lib/util/index.js.map +1 -1
- package/lib/util/typeUtils.d.ts +2 -2
- package/lib/util/typeUtils.js.map +1 -1
- package/lib/util/utils.d.ts +6 -0
- package/lib/util/utils.d.ts.map +1 -1
- package/lib/util/utils.js +6 -0
- package/lib/util/utils.js.map +1 -1
- package/package.json +21 -21
- package/src/codec/codec.ts +24 -3
- package/src/codec/index.ts +1 -0
- package/src/codec/versioned/codec.ts +42 -5
- package/src/core/index.ts +3 -1
- package/src/core/schema-stored/formatV2.ts +78 -0
- package/src/core/schema-stored/index.ts +4 -1
- package/src/core/schema-stored/schema.ts +123 -33
- package/src/core/tree/detachedFieldIndex.ts +13 -4
- package/src/core/tree/mapTree.ts +22 -7
- package/src/core/tree/visitorUtils.ts +2 -2
- package/src/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.ts +16 -11
- package/src/feature-libraries/chunked-forest/codec/compressedEncode.ts +16 -7
- package/src/feature-libraries/chunked-forest/codec/nodeShape.ts +4 -4
- package/src/feature-libraries/default-schema/defaultEditBuilder.ts +3 -2
- package/src/feature-libraries/default-schema/schemaChecker.ts +7 -6
- package/src/feature-libraries/detachedFieldIndexSummarizer.ts +9 -16
- package/src/feature-libraries/flex-tree/context.ts +17 -7
- package/src/feature-libraries/flex-tree/flexTreeTypes.ts +57 -33
- package/src/feature-libraries/flex-tree/index.ts +4 -8
- package/src/feature-libraries/flex-tree/lazyEntity.ts +5 -1
- package/src/feature-libraries/flex-tree/lazyField.ts +12 -13
- package/src/feature-libraries/flex-tree/lazyNode.ts +21 -8
- package/src/feature-libraries/forest-summary/forestSummarizer.ts +12 -18
- package/src/feature-libraries/index.ts +10 -1
- package/src/feature-libraries/mapTreeCursor.ts +112 -16
- package/src/feature-libraries/modular-schema/fieldKindWithEditor.ts +2 -0
- package/src/feature-libraries/modular-schema/modularChangeCodecs.ts +9 -5
- package/src/feature-libraries/object-forest/objectForest.ts +3 -0
- package/src/feature-libraries/schema-edits/schemaChangeCodecs.ts +11 -6
- package/src/feature-libraries/schema-edits/schemaChangeFormat.ts +3 -3
- package/src/feature-libraries/schema-index/codec.ts +73 -14
- package/src/feature-libraries/schema-index/formatV2.ts +30 -0
- package/src/feature-libraries/schema-index/index.ts +2 -1
- package/src/feature-libraries/schema-index/schemaSummarizer.ts +11 -18
- package/src/feature-libraries/treeCursorUtils.ts +21 -10
- package/src/index.ts +6 -0
- package/src/packageVersion.ts +1 -1
- package/src/shared-tree/schematizeTree.ts +1 -0
- package/src/shared-tree/schematizingTreeView.ts +40 -22
- package/src/shared-tree/sharedTree.ts +51 -15
- package/src/shared-tree/tree.ts +5 -20
- package/src/shared-tree/treeAlpha.ts +23 -12
- package/src/shared-tree/treeCheckout.ts +6 -3
- package/src/shared-tree-core/editManagerSummarizer.ts +9 -16
- package/src/shared-tree-core/sharedTreeCore.ts +33 -24
- package/src/simple-tree/api/configuration.ts +3 -3
- package/src/simple-tree/api/create.ts +49 -19
- package/src/simple-tree/api/customTree.ts +10 -0
- package/src/simple-tree/api/index.ts +1 -4
- package/src/simple-tree/api/schemaCompatibilityTester.ts +1 -1
- package/src/simple-tree/api/schemaCreationUtilities.ts +3 -3
- package/src/simple-tree/api/schemaFactory.ts +78 -24
- package/src/simple-tree/api/schemaFactoryAlpha.ts +53 -8
- package/src/simple-tree/api/storedSchema.ts +4 -4
- package/src/simple-tree/api/treeChangeEvents.ts +8 -3
- package/src/simple-tree/api/treeNodeApi.ts +48 -27
- package/src/simple-tree/api/verboseTree.ts +15 -12
- package/src/simple-tree/api/viewSchemaToSimpleSchema.ts +5 -0
- package/src/simple-tree/core/getOrCreateNode.ts +4 -2
- package/src/simple-tree/core/index.ts +2 -3
- package/src/simple-tree/core/treeNodeKernel.ts +38 -55
- package/src/simple-tree/core/unhydratedFlexTree.ts +231 -292
- package/src/simple-tree/index.ts +6 -3
- package/src/simple-tree/leafNodeSchema.ts +2 -0
- package/src/simple-tree/node-kinds/array/arrayNode.ts +17 -13
- package/src/simple-tree/node-kinds/index.ts +0 -1
- package/src/simple-tree/node-kinds/map/mapNode.ts +17 -11
- package/src/simple-tree/node-kinds/object/index.ts +0 -1
- package/src/simple-tree/node-kinds/object/objectNode.ts +15 -49
- package/src/simple-tree/prepareForInsertion.ts +54 -43
- package/src/simple-tree/schemaTypes.ts +103 -13
- package/src/simple-tree/simpleSchema.ts +27 -5
- package/src/simple-tree/toStoredSchema.ts +22 -5
- package/src/simple-tree/{toMapTree.ts → unhydratedFlexTreeFromInsertable.ts} +134 -226
- package/src/treeFactory.ts +6 -1
- package/src/util/index.ts +1 -0
- package/src/util/typeUtils.ts +2 -2
- package/src/util/utils.ts +9 -0
- package/dist/feature-libraries/flex-tree/navigation.d.ts +0 -46
- package/dist/feature-libraries/flex-tree/navigation.d.ts.map +0 -1
- package/dist/feature-libraries/flex-tree/navigation.js +0 -104
- package/dist/feature-libraries/flex-tree/navigation.js.map +0 -1
- package/dist/simple-tree/toMapTree.d.ts.map +0 -1
- package/dist/simple-tree/toMapTree.js.map +0 -1
- package/lib/feature-libraries/flex-tree/navigation.d.ts +0 -46
- package/lib/feature-libraries/flex-tree/navigation.d.ts.map +0 -1
- package/lib/feature-libraries/flex-tree/navigation.js +0 -97
- package/lib/feature-libraries/flex-tree/navigation.js.map +0 -1
- package/lib/simple-tree/toMapTree.d.ts.map +0 -1
- package/lib/simple-tree/toMapTree.js.map +0 -1
- package/src/feature-libraries/flex-tree/navigation.ts +0 -121
package/src/simple-tree/index.ts
CHANGED
|
@@ -22,6 +22,7 @@ export {
|
|
|
22
22
|
HydratedContext,
|
|
23
23
|
SimpleContextSlot,
|
|
24
24
|
getOrCreateInnerNode,
|
|
25
|
+
getOrCreateNodeFromInnerNode,
|
|
25
26
|
getKernel,
|
|
26
27
|
} from "./core/index.js";
|
|
27
28
|
export {
|
|
@@ -120,7 +121,6 @@ export {
|
|
|
120
121
|
type FixRecursiveRecursionLimit,
|
|
121
122
|
schemaStatics,
|
|
122
123
|
type TreeChangeEvents,
|
|
123
|
-
createFromMapTree,
|
|
124
124
|
} from "./api/index.js";
|
|
125
125
|
export type {
|
|
126
126
|
SimpleTreeSchema,
|
|
@@ -131,6 +131,7 @@ export type {
|
|
|
131
131
|
SimpleArrayNodeSchema,
|
|
132
132
|
SimpleObjectNodeSchema,
|
|
133
133
|
SimpleNodeSchemaBase,
|
|
134
|
+
SimpleNodeSchemaBaseAlpha,
|
|
134
135
|
SimpleObjectFieldSchema,
|
|
135
136
|
} from "./simpleSchema.js";
|
|
136
137
|
export {
|
|
@@ -164,6 +165,7 @@ export {
|
|
|
164
165
|
type NodeBuilderData,
|
|
165
166
|
type DefaultProvider,
|
|
166
167
|
type FieldProps,
|
|
168
|
+
type FieldPropsAlpha,
|
|
167
169
|
normalizeFieldSchema,
|
|
168
170
|
areFieldSchemaEqual,
|
|
169
171
|
areImplicitFieldSchemaEqual,
|
|
@@ -179,6 +181,7 @@ export {
|
|
|
179
181
|
type ReadableField,
|
|
180
182
|
type ReadSchema,
|
|
181
183
|
type NodeSchemaOptions,
|
|
184
|
+
type NodeSchemaOptionsAlpha,
|
|
182
185
|
type NodeSchemaMetadata,
|
|
183
186
|
evaluateLazySchema,
|
|
184
187
|
} from "./schemaTypes.js";
|
|
@@ -207,11 +210,11 @@ export {
|
|
|
207
210
|
createUnknownOptionalFieldPolicy,
|
|
208
211
|
} from "./node-kinds/index.js";
|
|
209
212
|
export {
|
|
210
|
-
|
|
213
|
+
unhydratedFlexTreeFromInsertable,
|
|
211
214
|
type InsertableContent,
|
|
212
215
|
type FactoryContent,
|
|
213
216
|
type FactoryContentObject,
|
|
214
|
-
} from "./
|
|
217
|
+
} from "./unhydratedFlexTreeFromInsertable.js";
|
|
215
218
|
export {
|
|
216
219
|
prepareForInsertion,
|
|
217
220
|
prepareForInsertionContextless,
|
|
@@ -15,6 +15,7 @@ import {
|
|
|
15
15
|
import { NodeKind, type TreeNodeSchema, type TreeNodeSchemaNonClass } from "./core/index.js";
|
|
16
16
|
import type { NodeSchemaMetadata, TreeLeafValue } from "./schemaTypes.js";
|
|
17
17
|
import type { SimpleLeafNodeSchema } from "./simpleSchema.js";
|
|
18
|
+
import type { JsonCompatibleReadOnlyObject } from "../util/index.js";
|
|
18
19
|
|
|
19
20
|
/**
|
|
20
21
|
* Instances of this class are schema for leaf nodes.
|
|
@@ -50,6 +51,7 @@ export class LeafNodeSchema<Name extends string, const T extends ValueSchema>
|
|
|
50
51
|
public readonly leafKind: ValueSchema;
|
|
51
52
|
|
|
52
53
|
public readonly metadata: NodeSchemaMetadata = {};
|
|
54
|
+
public readonly persistedMetadata: JsonCompatibleReadOnlyObject | undefined;
|
|
53
55
|
|
|
54
56
|
public constructor(name: Name, t: T) {
|
|
55
57
|
this.identifier = name;
|
|
@@ -6,8 +6,9 @@
|
|
|
6
6
|
import { Lazy, oob, fail } from "@fluidframework/core-utils/internal";
|
|
7
7
|
import { UsageError } from "@fluidframework/telemetry-utils/internal";
|
|
8
8
|
|
|
9
|
-
import { EmptyKey
|
|
9
|
+
import { EmptyKey } from "../../../core/index.js";
|
|
10
10
|
import {
|
|
11
|
+
type FlexibleFieldContent,
|
|
11
12
|
type FlexTreeNode,
|
|
12
13
|
type FlexTreeSequenceField,
|
|
13
14
|
isFlexTreeNode,
|
|
@@ -37,14 +38,15 @@ import {
|
|
|
37
38
|
getSimpleNodeSchemaFromInnerNode,
|
|
38
39
|
getOrCreateInnerNode,
|
|
39
40
|
type TreeNodeSchemaClass,
|
|
40
|
-
} from "../../core/index.js";
|
|
41
|
-
import { type InsertableContent, mapTreeFromNodeData } from "../../toMapTree.js";
|
|
42
|
-
import { prepareArrayContentForInsertion } from "../../prepareForInsertion.js";
|
|
43
|
-
import {
|
|
44
41
|
getKernel,
|
|
45
|
-
UnhydratedFlexTreeNode,
|
|
46
|
-
|
|
42
|
+
type UnhydratedFlexTreeNode,
|
|
43
|
+
UnhydratedSequenceField,
|
|
47
44
|
} from "../../core/index.js";
|
|
45
|
+
import {
|
|
46
|
+
type InsertableContent,
|
|
47
|
+
unhydratedFlexTreeFromInsertable,
|
|
48
|
+
} from "../../unhydratedFlexTreeFromInsertable.js";
|
|
49
|
+
import { prepareArrayContentForInsertion } from "../../prepareForInsertion.js";
|
|
48
50
|
import { TreeNodeValid, type MostDerivedData } from "../../treeNodeValid.js";
|
|
49
51
|
import { getUnhydratedContext } from "../../createContext.js";
|
|
50
52
|
import type { System_Unsafe } from "../../api/index.js";
|
|
@@ -52,6 +54,7 @@ import type {
|
|
|
52
54
|
ArrayNodeCustomizableSchema,
|
|
53
55
|
ArrayNodePojoEmulationSchema,
|
|
54
56
|
} from "./arrayNodeTypes.js";
|
|
57
|
+
import type { JsonCompatibleReadOnlyObject } from "../../../util/index.js";
|
|
55
58
|
|
|
56
59
|
/**
|
|
57
60
|
* A covariant base type for {@link (TreeArrayNode:interface)}.
|
|
@@ -852,7 +855,7 @@ abstract class CustomArrayNodeBase<const T extends ImplicitAllowedTypes>
|
|
|
852
855
|
super(input ?? []);
|
|
853
856
|
}
|
|
854
857
|
|
|
855
|
-
#mapTreesFromFieldData(value: Insertable<T>):
|
|
858
|
+
#mapTreesFromFieldData(value: Insertable<T>): FlexibleFieldContent {
|
|
856
859
|
const sequenceField = getSequenceField(this);
|
|
857
860
|
const content = value as readonly (
|
|
858
861
|
| InsertableContent
|
|
@@ -1014,7 +1017,7 @@ abstract class CustomArrayNodeBase<const T extends ImplicitAllowedTypes>
|
|
|
1014
1017
|
|
|
1015
1018
|
const movedCount = sourceEnd - sourceStart;
|
|
1016
1019
|
if (!destinationField.context.isHydrated()) {
|
|
1017
|
-
if (!(sourceField instanceof
|
|
1020
|
+
if (!(sourceField instanceof UnhydratedSequenceField)) {
|
|
1018
1021
|
throw new UsageError(
|
|
1019
1022
|
"Cannot move elements from a hydrated array to an unhydrated array.",
|
|
1020
1023
|
);
|
|
@@ -1080,6 +1083,7 @@ abstract class CustomArrayNodeBase<const T extends ImplicitAllowedTypes>
|
|
|
1080
1083
|
* Define a {@link TreeNodeSchema} for a {@link (TreeArrayNode:interface)}.
|
|
1081
1084
|
*
|
|
1082
1085
|
* @param name - Unique identifier for this schema including the factory's scope.
|
|
1086
|
+
* @param persistedMetadata - Optional persisted metadata for the object node schema.
|
|
1083
1087
|
*/
|
|
1084
1088
|
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
|
|
1085
1089
|
export function arraySchema<
|
|
@@ -1093,6 +1097,7 @@ export function arraySchema<
|
|
|
1093
1097
|
implicitlyConstructable: ImplicitlyConstructable,
|
|
1094
1098
|
customizable: boolean,
|
|
1095
1099
|
metadata?: NodeSchemaMetadata<TCustomMetadata>,
|
|
1100
|
+
persistedMetadata?: JsonCompatibleReadOnlyObject | undefined,
|
|
1096
1101
|
) {
|
|
1097
1102
|
type Output = ArrayNodeCustomizableSchema<
|
|
1098
1103
|
TName,
|
|
@@ -1139,10 +1144,7 @@ export function arraySchema<
|
|
|
1139
1144
|
instance: TreeNodeValid<T2>,
|
|
1140
1145
|
input: T2,
|
|
1141
1146
|
): UnhydratedFlexTreeNode {
|
|
1142
|
-
return
|
|
1143
|
-
unhydratedContext,
|
|
1144
|
-
mapTreeFromNodeData(input as object, this as unknown as ImplicitAllowedTypes),
|
|
1145
|
-
);
|
|
1147
|
+
return unhydratedFlexTreeFromInsertable(input as object, this as typeof Schema);
|
|
1146
1148
|
}
|
|
1147
1149
|
|
|
1148
1150
|
public static get allowedTypesIdentifiers(): ReadonlySet<string> {
|
|
@@ -1191,6 +1193,8 @@ export function arraySchema<
|
|
|
1191
1193
|
return lazyChildTypes.value;
|
|
1192
1194
|
}
|
|
1193
1195
|
public static readonly metadata: NodeSchemaMetadata<TCustomMetadata> = metadata ?? {};
|
|
1196
|
+
public static readonly persistedMetadata: JsonCompatibleReadOnlyObject | undefined =
|
|
1197
|
+
persistedMetadata;
|
|
1194
1198
|
|
|
1195
1199
|
// eslint-disable-next-line import/no-deprecated
|
|
1196
1200
|
public get [typeNameSymbol](): TName {
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
import { Lazy } from "@fluidframework/core-utils/internal";
|
|
7
7
|
import type {
|
|
8
|
+
FlexibleNodeContent,
|
|
8
9
|
FlexTreeNode,
|
|
9
10
|
FlexTreeOptionalField,
|
|
10
11
|
OptionalFieldEditBuilder,
|
|
@@ -32,19 +33,23 @@ import {
|
|
|
32
33
|
type TreeNode,
|
|
33
34
|
typeSchemaSymbol,
|
|
34
35
|
type Context,
|
|
35
|
-
UnhydratedFlexTreeNode,
|
|
36
36
|
getOrCreateInnerNode,
|
|
37
37
|
type InternalTreeNode,
|
|
38
|
+
type UnhydratedFlexTreeNode,
|
|
38
39
|
} from "../../core/index.js";
|
|
39
40
|
import {
|
|
40
|
-
|
|
41
|
+
unhydratedFlexTreeFromInsertable,
|
|
41
42
|
type FactoryContent,
|
|
42
43
|
type InsertableContent,
|
|
43
|
-
} from "../../
|
|
44
|
+
} from "../../unhydratedFlexTreeFromInsertable.js";
|
|
44
45
|
import { prepareForInsertion } from "../../prepareForInsertion.js";
|
|
45
|
-
import {
|
|
46
|
+
import {
|
|
47
|
+
brand,
|
|
48
|
+
count,
|
|
49
|
+
type JsonCompatibleReadOnlyObject,
|
|
50
|
+
type RestrictiveStringRecord,
|
|
51
|
+
} from "../../../util/index.js";
|
|
46
52
|
import { TreeNodeValid, type MostDerivedData } from "../../treeNodeValid.js";
|
|
47
|
-
import type { ExclusiveMapTree } from "../../../core/index.js";
|
|
48
53
|
import { getUnhydratedContext } from "../../createContext.js";
|
|
49
54
|
import type { MapNodeCustomizableSchema, MapNodePojoEmulationSchema } from "./mapNodeTypes.js";
|
|
50
55
|
|
|
@@ -158,7 +163,7 @@ abstract class CustomMapNodeBase<const T extends ImplicitAllowedTypes> extends T
|
|
|
158
163
|
return getOrCreateInnerNode(this);
|
|
159
164
|
}
|
|
160
165
|
|
|
161
|
-
private editor(key: string): OptionalFieldEditBuilder<
|
|
166
|
+
private editor(key: string): OptionalFieldEditBuilder<FlexibleNodeContent> {
|
|
162
167
|
const field = this.innerNode.getBoxed(brand(key)) as FlexTreeOptionalField;
|
|
163
168
|
return field.editor;
|
|
164
169
|
}
|
|
@@ -215,7 +220,7 @@ abstract class CustomMapNodeBase<const T extends ImplicitAllowedTypes> extends T
|
|
|
215
220
|
callbackFn: (value: TreeNodeFromImplicitAllowedTypes<T>, key: string, map: TThis) => void,
|
|
216
221
|
thisArg?: unknown,
|
|
217
222
|
): void {
|
|
218
|
-
for (const field of getOrCreateInnerNode(this)
|
|
223
|
+
for (const field of getOrCreateInnerNode(this)) {
|
|
219
224
|
const node = getTreeNodeForField(field) as TreeNodeFromImplicitAllowedTypes<T>;
|
|
220
225
|
callbackFn.call(thisArg, node, field.key, this);
|
|
221
226
|
}
|
|
@@ -228,6 +233,7 @@ abstract class CustomMapNodeBase<const T extends ImplicitAllowedTypes> extends T
|
|
|
228
233
|
*
|
|
229
234
|
* @param base - base schema type to extend.
|
|
230
235
|
* @param useMapPrototype - should this type emulate a ES6 Map object (by faking its prototype with a proxy).
|
|
236
|
+
* @param persistedMetadata - Optional persisted metadata for the object node schema.
|
|
231
237
|
*/
|
|
232
238
|
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
|
|
233
239
|
export function mapSchema<
|
|
@@ -241,6 +247,7 @@ export function mapSchema<
|
|
|
241
247
|
implicitlyConstructable: ImplicitlyConstructable,
|
|
242
248
|
useMapPrototype: boolean,
|
|
243
249
|
metadata?: NodeSchemaMetadata<TCustomMetadata>,
|
|
250
|
+
persistedMetadata?: JsonCompatibleReadOnlyObject | undefined,
|
|
244
251
|
) {
|
|
245
252
|
const lazyChildTypes = new Lazy(() =>
|
|
246
253
|
normalizeAllowedTypes(unannotateImplicitAllowedTypes(info)),
|
|
@@ -271,10 +278,7 @@ export function mapSchema<
|
|
|
271
278
|
instance: TreeNodeValid<T2>,
|
|
272
279
|
input: T2,
|
|
273
280
|
): UnhydratedFlexTreeNode {
|
|
274
|
-
return
|
|
275
|
-
unhydratedContext,
|
|
276
|
-
mapTreeFromNodeData(input as FactoryContent, this as unknown as ImplicitAllowedTypes),
|
|
277
|
-
);
|
|
281
|
+
return unhydratedFlexTreeFromInsertable(input as FactoryContent, this as typeof Schema);
|
|
278
282
|
}
|
|
279
283
|
|
|
280
284
|
public static get allowedTypesIdentifiers(): ReadonlySet<string> {
|
|
@@ -297,6 +301,8 @@ export function mapSchema<
|
|
|
297
301
|
return lazyChildTypes.value;
|
|
298
302
|
}
|
|
299
303
|
public static readonly metadata: NodeSchemaMetadata<TCustomMetadata> = metadata ?? {};
|
|
304
|
+
public static readonly persistedMetadata: JsonCompatibleReadOnlyObject | undefined =
|
|
305
|
+
persistedMetadata;
|
|
300
306
|
|
|
301
307
|
// eslint-disable-next-line import/no-deprecated
|
|
302
308
|
public get [typeNameSymbol](): TName {
|
|
@@ -5,8 +5,6 @@
|
|
|
5
5
|
|
|
6
6
|
import { assert, Lazy, fail, debugAssert } from "@fluidframework/core-utils/internal";
|
|
7
7
|
import { UsageError } from "@fluidframework/telemetry-utils/internal";
|
|
8
|
-
import type { IIdCompressor } from "@fluidframework/id-compressor";
|
|
9
|
-
import { createIdCompressor } from "@fluidframework/id-compressor/internal";
|
|
10
8
|
|
|
11
9
|
import type { FieldKey, SchemaPolicy } from "../../../core/index.js";
|
|
12
10
|
import {
|
|
@@ -16,7 +14,11 @@ import {
|
|
|
16
14
|
type FlexTreeOptionalField,
|
|
17
15
|
type FlexTreeRequiredField,
|
|
18
16
|
} from "../../../feature-libraries/index.js";
|
|
19
|
-
import
|
|
17
|
+
import type {
|
|
18
|
+
RestrictiveStringRecord,
|
|
19
|
+
FlattenKeys,
|
|
20
|
+
JsonCompatibleReadOnlyObject,
|
|
21
|
+
} from "../../../util/index.js";
|
|
20
22
|
|
|
21
23
|
import {
|
|
22
24
|
type TreeNodeSchema,
|
|
@@ -28,7 +30,7 @@ import {
|
|
|
28
30
|
type InternalTreeNode,
|
|
29
31
|
type TreeNode,
|
|
30
32
|
type Context,
|
|
31
|
-
UnhydratedFlexTreeNode,
|
|
33
|
+
type UnhydratedFlexTreeNode,
|
|
32
34
|
getOrCreateInnerNode,
|
|
33
35
|
} from "../../core/index.js";
|
|
34
36
|
import { getUnhydratedContext } from "../../createContext.js";
|
|
@@ -47,7 +49,6 @@ import {
|
|
|
47
49
|
type InsertableTreeFieldFromImplicitField,
|
|
48
50
|
type FieldSchema,
|
|
49
51
|
normalizeFieldSchema,
|
|
50
|
-
type ImplicitAllowedTypes,
|
|
51
52
|
FieldKind,
|
|
52
53
|
type NodeSchemaMetadata,
|
|
53
54
|
type FieldSchemaAlpha,
|
|
@@ -57,9 +58,11 @@ import {
|
|
|
57
58
|
type UnannotateSchemaRecord,
|
|
58
59
|
} from "../../schemaTypes.js";
|
|
59
60
|
import type { SimpleObjectFieldSchema } from "../../simpleSchema.js";
|
|
60
|
-
import {
|
|
61
|
+
import {
|
|
62
|
+
unhydratedFlexTreeFromInsertable,
|
|
63
|
+
type InsertableContent,
|
|
64
|
+
} from "../../unhydratedFlexTreeFromInsertable.js";
|
|
61
65
|
import { TreeNodeValid, type MostDerivedData } from "../../treeNodeValid.js";
|
|
62
|
-
import { stringSchema } from "../../leafNodeSchema.js";
|
|
63
66
|
|
|
64
67
|
/**
|
|
65
68
|
* Generates the properties for an ObjectNode from its field schema object.
|
|
@@ -201,37 +204,6 @@ function createFlexKeyMapping(fields: Record<string, ImplicitFieldSchema>): Simp
|
|
|
201
204
|
return keyMap;
|
|
202
205
|
}
|
|
203
206
|
|
|
204
|
-
const globalIdentifierAllocator: IIdCompressor = createIdCompressor();
|
|
205
|
-
|
|
206
|
-
/**
|
|
207
|
-
* Modify `flexNode` to add a newly generated identifier under the given `storedKey`.
|
|
208
|
-
* @remarks
|
|
209
|
-
* This is used after checking if the user is trying to read an identifier field of an unhydrated node, but the identifier is not present.
|
|
210
|
-
* This means the identifier is an "auto-generated identifier", because otherwise it would have been supplied by the user at construction time and would have been successfully read just above.
|
|
211
|
-
* In this case, it is categorically impossible to provide an identifier (auto-generated identifiers can't be created until hydration/insertion time), so we emit an error.
|
|
212
|
-
* @privateRemarks
|
|
213
|
-
* TODO: this special case logic should move to the inner node (who's schema claims it has an identifier), rather than here, after we already read undefined out of a required field.
|
|
214
|
-
* TODO: unify this with a more general defaults mechanism.
|
|
215
|
-
*/
|
|
216
|
-
export function lazilyAllocateIdentifier(
|
|
217
|
-
flexNode: UnhydratedFlexTreeNode,
|
|
218
|
-
storedKey: FieldKey,
|
|
219
|
-
): string {
|
|
220
|
-
debugAssert(() => !flexNode.mapTree.fields.has(storedKey) || "Identifier field already set");
|
|
221
|
-
const value = globalIdentifierAllocator.decompress(
|
|
222
|
-
globalIdentifierAllocator.generateCompressedId(),
|
|
223
|
-
);
|
|
224
|
-
flexNode.mapTree.fields.set(storedKey, [
|
|
225
|
-
{
|
|
226
|
-
type: brand(stringSchema.identifier),
|
|
227
|
-
value,
|
|
228
|
-
fields: new Map(),
|
|
229
|
-
},
|
|
230
|
-
]);
|
|
231
|
-
|
|
232
|
-
return value;
|
|
233
|
-
}
|
|
234
|
-
|
|
235
207
|
/**
|
|
236
208
|
* Creates a proxy handler for the given schema.
|
|
237
209
|
*
|
|
@@ -265,13 +237,6 @@ function createProxyHandler(
|
|
|
265
237
|
return getTreeNodeForField(field);
|
|
266
238
|
}
|
|
267
239
|
|
|
268
|
-
if (
|
|
269
|
-
fieldInfo.schema.kind === FieldKind.Identifier &&
|
|
270
|
-
flexNode instanceof UnhydratedFlexTreeNode
|
|
271
|
-
) {
|
|
272
|
-
return lazilyAllocateIdentifier(flexNode, fieldInfo.storedKey);
|
|
273
|
-
}
|
|
274
|
-
|
|
275
240
|
return undefined;
|
|
276
241
|
}
|
|
277
242
|
|
|
@@ -388,6 +353,7 @@ abstract class CustomObjectNodeBase<
|
|
|
388
353
|
*
|
|
389
354
|
* @param name - Unique identifier for this schema within this factory's scope.
|
|
390
355
|
* @param fields - Schema for fields of the object node's schema. Defines what children can be placed under each key.
|
|
356
|
+
* @param persistedMetadata - Optional persisted metadata for the object node schema.
|
|
391
357
|
*/
|
|
392
358
|
export function objectSchema<
|
|
393
359
|
TName extends string,
|
|
@@ -400,6 +366,7 @@ export function objectSchema<
|
|
|
400
366
|
implicitlyConstructable: ImplicitlyConstructable,
|
|
401
367
|
allowUnknownOptionalFields: boolean,
|
|
402
368
|
metadata?: NodeSchemaMetadata<TCustomMetadata>,
|
|
369
|
+
persistedMetadata?: JsonCompatibleReadOnlyObject | undefined,
|
|
403
370
|
): ObjectNodeSchema<TName, T, ImplicitlyConstructable, TCustomMetadata> &
|
|
404
371
|
ObjectNodeSchemaInternalData {
|
|
405
372
|
// Field set can't be modified after this since derived data is stored in maps.
|
|
@@ -495,10 +462,7 @@ export function objectSchema<
|
|
|
495
462
|
instance: TreeNodeValid<T2>,
|
|
496
463
|
input: T2,
|
|
497
464
|
): UnhydratedFlexTreeNode {
|
|
498
|
-
return
|
|
499
|
-
unhydratedContext,
|
|
500
|
-
mapTreeFromNodeData(input as object, this as unknown as ImplicitAllowedTypes),
|
|
501
|
-
);
|
|
465
|
+
return unhydratedFlexTreeFromInsertable(input as object, this as Output);
|
|
502
466
|
}
|
|
503
467
|
|
|
504
468
|
protected static override constructorCached: MostDerivedData | undefined = undefined;
|
|
@@ -546,6 +510,8 @@ export function objectSchema<
|
|
|
546
510
|
return lazyChildTypes.value;
|
|
547
511
|
}
|
|
548
512
|
public static readonly metadata: NodeSchemaMetadata<TCustomMetadata> = metadata ?? {};
|
|
513
|
+
public static readonly persistedMetadata: JsonCompatibleReadOnlyObject | undefined =
|
|
514
|
+
persistedMetadata;
|
|
549
515
|
|
|
550
516
|
// eslint-disable-next-line import/no-deprecated
|
|
551
517
|
public get [typeNameSymbol](): TName {
|
|
@@ -4,10 +4,8 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import type {
|
|
7
|
-
ExclusiveMapTree,
|
|
8
7
|
SchemaAndPolicy,
|
|
9
8
|
IForestSubscription,
|
|
10
|
-
MapTree,
|
|
11
9
|
UpPath,
|
|
12
10
|
NodeIndex,
|
|
13
11
|
FieldKey,
|
|
@@ -17,23 +15,23 @@ import type {
|
|
|
17
15
|
import {
|
|
18
16
|
type FlexTreeContext,
|
|
19
17
|
getSchemaAndPolicy,
|
|
20
|
-
type
|
|
18
|
+
type FlexTreeHydratedContextMinimal,
|
|
21
19
|
FieldKinds,
|
|
20
|
+
type FlexibleFieldContent,
|
|
21
|
+
type FlexibleNodeContent,
|
|
22
22
|
} from "../feature-libraries/index.js";
|
|
23
23
|
import {
|
|
24
24
|
normalizeFieldSchema,
|
|
25
25
|
type ImplicitAllowedTypes,
|
|
26
26
|
type ImplicitFieldSchema,
|
|
27
27
|
} from "./schemaTypes.js";
|
|
28
|
-
import {
|
|
28
|
+
import {
|
|
29
|
+
type InsertableContent,
|
|
30
|
+
unhydratedFlexTreeFromInsertable,
|
|
31
|
+
} from "./unhydratedFlexTreeFromInsertable.js";
|
|
29
32
|
import { UsageError } from "@fluidframework/telemetry-utils/internal";
|
|
30
33
|
import { brand } from "../util/index.js";
|
|
31
|
-
import {
|
|
32
|
-
getKernel,
|
|
33
|
-
type TreeNode,
|
|
34
|
-
tryUnhydratedFlexTreeNode,
|
|
35
|
-
unhydratedFlexTreeNodeToTreeNode,
|
|
36
|
-
} from "./core/index.js";
|
|
34
|
+
import { getKernel, type TreeNode, type UnhydratedFlexTreeNode } from "./core/index.js";
|
|
37
35
|
import { debugAssert, oob } from "@fluidframework/core-utils/internal";
|
|
38
36
|
import { inSchemaOrThrow, isFieldInSchema } from "../feature-libraries/index.js";
|
|
39
37
|
import { convertField } from "./toStoredSchema.js";
|
|
@@ -50,7 +48,7 @@ export function prepareForInsertion<TIn extends InsertableContent | undefined>(
|
|
|
50
48
|
data: TIn,
|
|
51
49
|
schema: ImplicitFieldSchema,
|
|
52
50
|
destinationContext: FlexTreeContext,
|
|
53
|
-
): TIn extends undefined ? undefined :
|
|
51
|
+
): TIn extends undefined ? undefined : FlexibleNodeContent {
|
|
54
52
|
return prepareForInsertionContextless(
|
|
55
53
|
data,
|
|
56
54
|
schema,
|
|
@@ -76,13 +74,9 @@ export function prepareArrayContentForInsertion(
|
|
|
76
74
|
data: readonly InsertableContent[],
|
|
77
75
|
schema: ImplicitAllowedTypes,
|
|
78
76
|
destinationContext: FlexTreeContext,
|
|
79
|
-
):
|
|
80
|
-
const mapTrees:
|
|
81
|
-
|
|
82
|
-
item,
|
|
83
|
-
schema,
|
|
84
|
-
destinationContext.isHydrated() ? destinationContext.nodeKeyManager : undefined,
|
|
85
|
-
),
|
|
77
|
+
): FlexibleFieldContent {
|
|
78
|
+
const mapTrees: UnhydratedFlexTreeNode[] = data.map((item) =>
|
|
79
|
+
unhydratedFlexTreeFromInsertable(item, schema),
|
|
86
80
|
);
|
|
87
81
|
|
|
88
82
|
const fieldSchema = convertField(normalizeFieldSchema(schema));
|
|
@@ -90,7 +84,11 @@ export function prepareArrayContentForInsertion(
|
|
|
90
84
|
validateAndPrepare(
|
|
91
85
|
getSchemaAndPolicy(destinationContext),
|
|
92
86
|
destinationContext.isHydrated() ? destinationContext : undefined,
|
|
93
|
-
{
|
|
87
|
+
{
|
|
88
|
+
kind: FieldKinds.sequence.identifier,
|
|
89
|
+
types: fieldSchema.types,
|
|
90
|
+
persistedMetadata: undefined,
|
|
91
|
+
},
|
|
94
92
|
mapTrees,
|
|
95
93
|
);
|
|
96
94
|
|
|
@@ -110,9 +108,9 @@ export function prepareForInsertionContextless<TIn extends InsertableContent | u
|
|
|
110
108
|
data: TIn,
|
|
111
109
|
schema: ImplicitFieldSchema,
|
|
112
110
|
schemaAndPolicy: SchemaAndPolicy,
|
|
113
|
-
hydratedData:
|
|
114
|
-
): TIn extends undefined ? undefined :
|
|
115
|
-
const mapTree =
|
|
111
|
+
hydratedData: FlexTreeHydratedContextMinimal | undefined,
|
|
112
|
+
): TIn extends undefined ? undefined : FlexibleNodeContent {
|
|
113
|
+
const mapTree = unhydratedFlexTreeFromInsertable(data, schema);
|
|
116
114
|
|
|
117
115
|
const contentArray = mapTree === undefined ? [] : [mapTree];
|
|
118
116
|
const fieldSchema = convertField(normalizeFieldSchema(schema));
|
|
@@ -129,16 +127,19 @@ export function prepareForInsertionContextless<TIn extends InsertableContent | u
|
|
|
129
127
|
*/
|
|
130
128
|
function validateAndPrepare(
|
|
131
129
|
schemaAndPolicy: SchemaAndPolicy,
|
|
132
|
-
hydratedData:
|
|
130
|
+
hydratedData: FlexTreeHydratedContextMinimal | undefined,
|
|
133
131
|
fieldSchema: TreeFieldStoredSchema,
|
|
134
|
-
mapTrees:
|
|
132
|
+
mapTrees: readonly UnhydratedFlexTreeNode[],
|
|
135
133
|
): void {
|
|
136
134
|
if (hydratedData !== undefined) {
|
|
135
|
+
// Run `prepareContentForHydration` before walking the tree in `isFieldInSchema`.
|
|
136
|
+
// This ensures that when `isFieldInSchema` requests identifiers (or any other contextual defaults),
|
|
137
|
+
// they were already creating used the more specific context we have access to from `hydratedData`.
|
|
138
|
+
prepareContentForHydration(mapTrees, hydratedData.checkout.forest, hydratedData);
|
|
137
139
|
if (schemaAndPolicy.policy.validateSchema === true) {
|
|
138
140
|
const maybeError = isFieldInSchema(mapTrees, fieldSchema, schemaAndPolicy);
|
|
139
141
|
inSchemaOrThrow(maybeError);
|
|
140
142
|
}
|
|
141
|
-
prepareContentForHydration(mapTrees, hydratedData.checkout.forest);
|
|
142
143
|
}
|
|
143
144
|
}
|
|
144
145
|
|
|
@@ -176,17 +177,21 @@ interface LocatedNodesBatch {
|
|
|
176
177
|
const placeholderKey: DetachedField & FieldKey = brand("placeholder" as const);
|
|
177
178
|
|
|
178
179
|
/**
|
|
179
|
-
* Records any
|
|
180
|
-
*
|
|
180
|
+
* Records any {@link TreeNode}s in the given `content` tree and does the necessary bookkeeping to ensure they are synchronized with subsequent reads of the tree.
|
|
181
|
+
* Additionally populates any {@link UnhydratedFlexTreeField.pendingDefault}s using the provided `context`.
|
|
182
|
+
*
|
|
183
|
+
* @remarks If the content tree contains has any associated {@link TreeNode}s, this function must be called just prior to inserting the content into the tree.
|
|
181
184
|
* Specifically, no other content may be inserted into the tree between the invocation of this function and the insertion of `content`.
|
|
182
185
|
* The insertion of `content` must occur or else this function will cause memory leaks.
|
|
186
|
+
*
|
|
187
|
+
* Exported for testing purposes: otherwise should not be used outside this module.
|
|
183
188
|
* @param content - the content subsequence to be inserted, of which might deeply contain {@link TreeNode}s which need to be hydrated.
|
|
184
189
|
* @param forest - the forest the content is being inserted into.
|
|
185
|
-
* See {@link extractFactoryContent} for more details.
|
|
186
190
|
*/
|
|
187
|
-
function prepareContentForHydration(
|
|
188
|
-
content: readonly
|
|
191
|
+
export function prepareContentForHydration(
|
|
192
|
+
content: readonly UnhydratedFlexTreeNode[],
|
|
189
193
|
forest: IForestSubscription,
|
|
194
|
+
context: FlexTreeHydratedContextMinimal,
|
|
190
195
|
): void {
|
|
191
196
|
const batches: LocatedNodesBatch[] = [];
|
|
192
197
|
for (const item of content) {
|
|
@@ -199,39 +204,45 @@ function prepareContentForHydration(
|
|
|
199
204
|
paths: [],
|
|
200
205
|
};
|
|
201
206
|
batches.push(batch);
|
|
202
|
-
walkMapTree(
|
|
203
|
-
|
|
204
|
-
|
|
207
|
+
walkMapTree(
|
|
208
|
+
item,
|
|
209
|
+
batch.rootPath,
|
|
210
|
+
(p, node) => {
|
|
211
|
+
batch.paths.push({ path: p, node });
|
|
212
|
+
},
|
|
213
|
+
context,
|
|
214
|
+
);
|
|
205
215
|
}
|
|
206
216
|
|
|
207
217
|
scheduleHydration(batches, forest);
|
|
208
218
|
}
|
|
209
219
|
|
|
210
220
|
function walkMapTree(
|
|
211
|
-
|
|
221
|
+
root: UnhydratedFlexTreeNode,
|
|
212
222
|
path: UpPath,
|
|
213
223
|
onVisitTreeNode: (path: UpPath, treeNode: TreeNode) => void,
|
|
224
|
+
context: FlexTreeHydratedContextMinimal,
|
|
214
225
|
): void {
|
|
215
|
-
if (
|
|
226
|
+
if (root.parentField.parent.parent !== undefined) {
|
|
216
227
|
throw new UsageError(
|
|
217
228
|
"Attempted to insert a node which is already under a parent. If this is desired, remove the node from its parent before inserting it elsewhere.",
|
|
218
229
|
);
|
|
219
230
|
}
|
|
220
231
|
|
|
221
|
-
type Next = [path: UpPath, tree:
|
|
232
|
+
type Next = [path: UpPath, tree: UnhydratedFlexTreeNode];
|
|
222
233
|
const nexts: Next[] = [];
|
|
223
|
-
for (let next: Next | undefined = [path,
|
|
224
|
-
const [p,
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
const treeNode = unhydratedFlexTreeNodeToTreeNode.get(mapTreeNode);
|
|
234
|
+
for (let next: Next | undefined = [path, root]; next !== undefined; next = nexts.pop()) {
|
|
235
|
+
const [p, node] = next;
|
|
236
|
+
if (node !== undefined) {
|
|
237
|
+
const treeNode = node.treeNode;
|
|
228
238
|
if (treeNode !== undefined) {
|
|
229
239
|
onVisitTreeNode(p, treeNode);
|
|
230
240
|
}
|
|
231
241
|
}
|
|
232
242
|
|
|
233
|
-
for (const [key, field] of
|
|
234
|
-
|
|
243
|
+
for (const [key, field] of node.allFieldsLazy) {
|
|
244
|
+
field.fillPendingDefaults(context);
|
|
245
|
+
for (const [i, child] of field.children.entries()) {
|
|
235
246
|
nexts.push([
|
|
236
247
|
{
|
|
237
248
|
parent: p,
|