@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
|
@@ -6,74 +6,94 @@ var _a, _b;
|
|
|
6
6
|
import { createEmitter } from "@fluid-internal/client-utils";
|
|
7
7
|
import { assert, oob, fail } from "@fluidframework/core-utils/internal";
|
|
8
8
|
import { UsageError } from "@fluidframework/telemetry-utils/internal";
|
|
9
|
-
import {
|
|
10
|
-
import { FlexTreeEntityKind, flexTreeMarker, indexForAt, FieldKinds, cursorForMapTreeNode, } from "../../feature-libraries/index.js";
|
|
11
|
-
import { brand, getOrCreate, mapIterable } from "../../util/index.js";
|
|
9
|
+
import { dummyRoot, } from "../../core/index.js";
|
|
10
|
+
import { FlexTreeEntityKind, flexTreeMarker, indexForAt, FieldKinds, cursorForMapTreeNode, cursorForMapTreeField, } from "../../feature-libraries/index.js";
|
|
11
|
+
import { brand, filterIterable, getOrCreate, mapIterable } from "../../util/index.js";
|
|
12
12
|
/**
|
|
13
|
-
*
|
|
14
|
-
* @remarks
|
|
15
|
-
* MapTreeNodes are unconditionally cached -
|
|
16
|
-
* when retrieved via {@link getOrCreateNodeFromInnerNode}, the same {@link MapTree} object will always produce the same `UnhydratedFlexTreeNode` object.
|
|
17
|
-
*
|
|
18
|
-
* Create a `UnhydratedFlexTreeNode` by calling {@link getOrCreate}.
|
|
13
|
+
* The {@link Unhydrated} implementation of {@link FlexTreeNode}.
|
|
19
14
|
*/
|
|
20
15
|
export class UnhydratedFlexTreeNode {
|
|
21
|
-
|
|
22
|
-
return
|
|
16
|
+
isHydrated() {
|
|
17
|
+
return false;
|
|
23
18
|
}
|
|
24
19
|
get storedSchema() {
|
|
25
|
-
return (this.context.schema.nodeSchema.get(this.
|
|
20
|
+
return (this.context.schema.nodeSchema.get(this.data.type) ?? fail(0xb46 /* missing schema */));
|
|
26
21
|
}
|
|
27
22
|
get events() {
|
|
28
23
|
return this._events;
|
|
29
24
|
}
|
|
30
|
-
/**
|
|
31
|
-
* Create a {@link UnhydratedFlexTreeNode} that wraps the given {@link MapTree}, or get the node that already exists for that {@link MapTree} if there is one.
|
|
32
|
-
* @param nodeSchema - the {@link FlexTreeNodeSchema | schema} that the node conforms to
|
|
33
|
-
* @param mapTree - the {@link MapTree} containing the data for this node.
|
|
34
|
-
* @remarks It must conform to the `nodeSchema`.
|
|
35
|
-
*/
|
|
36
|
-
static getOrCreate(context, mapTree) {
|
|
37
|
-
return nodeCache.get(mapTree) ?? new UnhydratedFlexTreeNode(context, mapTree, undefined);
|
|
38
|
-
}
|
|
39
25
|
get context() {
|
|
40
26
|
return this.simpleContext.flexContext;
|
|
41
27
|
}
|
|
42
28
|
/**
|
|
43
29
|
* Create a new UnhydratedFlexTreeNode.
|
|
44
|
-
* @param location - the parentage of this node, if it is being created underneath an existing node and field, or undefined if not
|
|
45
|
-
* @remarks This class (and its subclasses) should not be directly constructed outside of this module.
|
|
46
|
-
* Instead, use {@link getOrCreateNodeFromInnerNode} to create a UnhydratedFlexTreeNode from a {@link MapTree}.
|
|
47
|
-
* A `UnhydratedFlexTreeNode` may never be constructed more than once for the same {@link MapTree} object.
|
|
48
|
-
* Instead, it should always be acquired via {@link getOrCreateNodeFromInnerNode}.
|
|
49
30
|
*/
|
|
50
|
-
constructor(
|
|
51
|
-
/**
|
|
52
|
-
|
|
31
|
+
constructor(
|
|
32
|
+
/**
|
|
33
|
+
* The {@link NodeData} for this node.
|
|
34
|
+
*/
|
|
35
|
+
data,
|
|
36
|
+
/**
|
|
37
|
+
* All {@link UnhydratedFlexTreeField} for this node that have been created so far.
|
|
38
|
+
* @remarks
|
|
39
|
+
* This includes all non-empty fields, but also any empty fields which have been previously requested.
|
|
40
|
+
*/
|
|
41
|
+
fieldsAll,
|
|
42
|
+
/**
|
|
43
|
+
* The {@link Context} for this node.
|
|
44
|
+
* @remarks
|
|
45
|
+
* Provides access to all schema reachable from this node.
|
|
46
|
+
* See {@link getUnhydratedContext}.
|
|
47
|
+
*/
|
|
48
|
+
simpleContext) {
|
|
49
|
+
this.data = data;
|
|
50
|
+
this.fieldsAll = fieldsAll;
|
|
53
51
|
this.simpleContext = simpleContext;
|
|
54
|
-
this.
|
|
55
|
-
this.location = location;
|
|
52
|
+
this.location = unparentedLocation;
|
|
56
53
|
this[_a] = FlexTreeEntityKind.Node;
|
|
57
54
|
this._events = createEmitter();
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
55
|
+
/**
|
|
56
|
+
* The non-empty fields on this node.
|
|
57
|
+
* @remarks
|
|
58
|
+
* This is needed to implement {@link MapTreeNodeViewGeneric.fields}, which must omit empty fields.
|
|
59
|
+
* Due to having to detect if a field is empty, this forces the evaluation of any pending defaults in the fields.
|
|
60
|
+
* Use {@link allFieldsLazy} to avoid evaluating pending defaults.
|
|
61
|
+
*/
|
|
62
|
+
this.fields = {
|
|
63
|
+
get: (key) => this.tryGetField(key),
|
|
64
|
+
[Symbol.iterator]: () => filterIterable(this.fieldsAll, ([, field]) => field.length > 0),
|
|
65
|
+
};
|
|
66
|
+
for (const [_key, field] of this.fieldsAll) {
|
|
67
|
+
field.parent = this;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
[(_a = flexTreeMarker, Symbol.iterator)]() {
|
|
71
|
+
return mapIterable(this.fields, ([, field]) => field)[Symbol.iterator]();
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Gets all fields, without filtering out empty ones.
|
|
75
|
+
* @remarks
|
|
76
|
+
* This avoids forcing the evaluating of pending defaults in the fields, and also saves a copy on access.
|
|
77
|
+
*/
|
|
78
|
+
get allFieldsLazy() {
|
|
79
|
+
return this.fieldsAll;
|
|
68
80
|
}
|
|
69
81
|
get type() {
|
|
70
|
-
return this.
|
|
82
|
+
return this.data.type;
|
|
83
|
+
}
|
|
84
|
+
getOrCreateField(key) {
|
|
85
|
+
return getOrCreate(this.fieldsAll, key, () => {
|
|
86
|
+
const stored = this.storedSchema.getFieldSchema(key).kind;
|
|
87
|
+
const field = createField(this.context, stored, key, []);
|
|
88
|
+
field.parent = this;
|
|
89
|
+
return field;
|
|
90
|
+
});
|
|
71
91
|
}
|
|
72
92
|
adoptBy(parent, index) {
|
|
73
93
|
if (parent !== undefined) {
|
|
74
94
|
assert(index !== undefined, 0xa08 /* Expected index */);
|
|
75
95
|
if (this.location !== unparentedLocation) {
|
|
76
|
-
throw new UsageError("A node may not be
|
|
96
|
+
throw new UsageError("A node may not be in more than one place in the tree");
|
|
77
97
|
}
|
|
78
98
|
let unhydratedNode = parent.parent;
|
|
79
99
|
while (unhydratedNode !== undefined) {
|
|
@@ -99,55 +119,29 @@ export class UnhydratedFlexTreeNode {
|
|
|
99
119
|
return this.location;
|
|
100
120
|
}
|
|
101
121
|
borrowCursor() {
|
|
102
|
-
return cursorForMapTreeNode(this
|
|
122
|
+
return cursorForMapTreeNode(this);
|
|
103
123
|
}
|
|
104
124
|
tryGetField(key) {
|
|
105
|
-
const field = this.
|
|
125
|
+
const field = this.fieldsAll.get(key);
|
|
106
126
|
// Only return the field if it is not empty, in order to fulfill the contract of `tryGetField`.
|
|
107
127
|
if (field !== undefined && field.length > 0) {
|
|
108
|
-
return
|
|
128
|
+
return field;
|
|
109
129
|
}
|
|
110
130
|
}
|
|
111
131
|
getBoxed(key) {
|
|
112
132
|
const fieldKey = brand(key);
|
|
113
|
-
return
|
|
114
|
-
}
|
|
115
|
-
boxedIterator() {
|
|
116
|
-
return mapIterable(this.mapTree.fields.entries(), ([key]) => getOrCreateField(this, key, this.storedSchema.getFieldSchema(key).kind, () => this.emitChangedEvent(key)));
|
|
133
|
+
return this.getOrCreateField(fieldKey);
|
|
117
134
|
}
|
|
118
135
|
keys() {
|
|
119
|
-
|
|
120
|
-
return this.mapTree.fields.keys();
|
|
136
|
+
return Array.from(this.fields, ([key]) => key)[Symbol.iterator]();
|
|
121
137
|
}
|
|
122
138
|
get value() {
|
|
123
|
-
return this.
|
|
124
|
-
}
|
|
125
|
-
get anchorNode() {
|
|
126
|
-
// This API is relevant to `LazyTreeNode`s, but not `UnhydratedFlexTreeNode`s.
|
|
127
|
-
// TODO: Refactor the FlexTreeNode interface so that stubbing this out isn't necessary.
|
|
128
|
-
return fail(0xb47 /* UnhydratedFlexTreeNode does not implement anchorNode */);
|
|
129
|
-
}
|
|
130
|
-
walkTree() {
|
|
131
|
-
for (const [key, mapTrees] of this.mapTree.fields) {
|
|
132
|
-
const field = getOrCreateField(this, key, this.storedSchema.getFieldSchema(key).kind, () => this.emitChangedEvent(key));
|
|
133
|
-
for (let index = 0; index < field.length; index++) {
|
|
134
|
-
const child = getOrCreateChild(this.simpleContext, mapTrees[index] ?? oob(), {
|
|
135
|
-
parent: field,
|
|
136
|
-
index,
|
|
137
|
-
});
|
|
138
|
-
// These next asserts detect the case where `getOrCreateChild` gets a cache hit of a different node than the one we're trying to create
|
|
139
|
-
assert(child.location !== undefined, 0x98d /* Expected node to have parent */);
|
|
140
|
-
assert(child.location.parent.parent === this, 0x98e /* Node may not be multi-parented */);
|
|
141
|
-
assert(child.location.index === index, 0x98f /* Node may not be multi-parented */);
|
|
142
|
-
child.walkTree();
|
|
143
|
-
}
|
|
144
|
-
}
|
|
139
|
+
return this.data.value;
|
|
145
140
|
}
|
|
146
141
|
emitChangedEvent(key) {
|
|
147
142
|
this._events.emit("childrenChangedAfterBatch", { changedFields: new Set([key]) });
|
|
148
143
|
}
|
|
149
144
|
}
|
|
150
|
-
_a = flexTreeMarker;
|
|
151
145
|
/**
|
|
152
146
|
* Implementation of `FlexTreeContext`.
|
|
153
147
|
*
|
|
@@ -176,87 +170,93 @@ export class UnhydratedContext {
|
|
|
176
170
|
* However, this field cannot be used in any practical way because it is empty, i.e. it does not actually contain the children that claim to be parented under it.
|
|
177
171
|
* It has the "empty" schema and it will always contain zero children if queried.
|
|
178
172
|
* Any nodes with this location will have a dummy parent index of `-1`.
|
|
173
|
+
*
|
|
174
|
+
* TODO: make this make sense.
|
|
179
175
|
*/
|
|
180
176
|
const unparentedLocation = {
|
|
181
177
|
parent: {
|
|
182
|
-
|
|
183
|
-
length: 0,
|
|
184
|
-
key: EmptyKey,
|
|
178
|
+
key: dummyRoot,
|
|
185
179
|
parent: undefined,
|
|
186
|
-
|
|
187
|
-
return this.schema === kind.identifier;
|
|
188
|
-
},
|
|
189
|
-
boxedIterator() {
|
|
190
|
-
return [].values();
|
|
191
|
-
},
|
|
192
|
-
boxedAt(index) {
|
|
193
|
-
return undefined;
|
|
194
|
-
},
|
|
195
|
-
schema: brand(forbiddenFieldKindIdentifier),
|
|
196
|
-
get context() {
|
|
197
|
-
return fail(0xb48 /* unsupported */);
|
|
198
|
-
},
|
|
199
|
-
getFieldPath() {
|
|
200
|
-
fail(0xb49 /* unsupported */);
|
|
201
|
-
},
|
|
180
|
+
schema: brand(FieldKinds.optional.identifier),
|
|
202
181
|
},
|
|
203
|
-
index:
|
|
182
|
+
index: 0,
|
|
204
183
|
};
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
constructor(
|
|
210
|
-
|
|
184
|
+
/**
|
|
185
|
+
* The {@link Unhydrated} implementation of {@link FlexTreeField}.
|
|
186
|
+
*/
|
|
187
|
+
export class UnhydratedFlexTreeField {
|
|
188
|
+
constructor(context, schema, key,
|
|
189
|
+
/**
|
|
190
|
+
* The children of this field.
|
|
191
|
+
* @remarks
|
|
192
|
+
* This is either an array of {@link UnhydratedFlexTreeNode}s or a {@link ContextualFieldProvider} that will be used to populate the children lazily (after which it will become an array).
|
|
193
|
+
* See {@link fillPendingDefaults}.
|
|
194
|
+
* Note that any fields using a {@link ConstantFieldProvider} should be evaluated before constructing the UnhydratedFlexTreeField.
|
|
195
|
+
*/
|
|
196
|
+
lazyChildren) {
|
|
197
|
+
this.context = context;
|
|
211
198
|
this.schema = schema;
|
|
212
199
|
this.key = key;
|
|
213
|
-
this.
|
|
214
|
-
this.onEdit = onEdit;
|
|
200
|
+
this.lazyChildren = lazyChildren;
|
|
215
201
|
this[_b] = FlexTreeEntityKind.Field;
|
|
216
|
-
|
|
217
|
-
assert(!fieldKeyCache.has(key), 0x990 /* A field already exists for the given MapTrees */);
|
|
218
|
-
fieldKeyCache.set(key, this);
|
|
202
|
+
this.parent = undefined;
|
|
219
203
|
// When this field is created (which only happens one time, because it is cached), all the children become parented for the first time.
|
|
220
204
|
// "Adopt" each child by updating its parent information to point to this field.
|
|
221
|
-
|
|
222
|
-
const
|
|
223
|
-
|
|
224
|
-
if (mapTreeNodeChild.parentField !== unparentedLocation) {
|
|
225
|
-
throw new UsageError("A node may not be in more than one place in the tree");
|
|
226
|
-
}
|
|
227
|
-
mapTreeNodeChild.adoptBy(this, i);
|
|
205
|
+
if (Array.isArray(lazyChildren)) {
|
|
206
|
+
for (const [i, child] of lazyChildren.entries()) {
|
|
207
|
+
child.adoptBy(this, i);
|
|
228
208
|
}
|
|
229
209
|
}
|
|
230
210
|
}
|
|
231
|
-
|
|
232
|
-
return
|
|
211
|
+
borrowCursor() {
|
|
212
|
+
return cursorForMapTreeField(this.children);
|
|
213
|
+
}
|
|
214
|
+
getPendingDefault() {
|
|
215
|
+
return !Array.isArray(this.lazyChildren) ? this.lazyChildren : undefined;
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Populate pending default (if present) using the provided context.
|
|
219
|
+
* @remarks
|
|
220
|
+
* This apply to just this field: caller will likely want to recursively walk the tree.
|
|
221
|
+
* @see {@link pendingDefault}.
|
|
222
|
+
*/
|
|
223
|
+
fillPendingDefaults(context) {
|
|
224
|
+
const provider = this.getPendingDefault();
|
|
225
|
+
if (provider) {
|
|
226
|
+
const content = provider(context);
|
|
227
|
+
this.lazyChildren = content;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Returns true if this field has a pending default due to defined defined using a {@link ContextualFieldProvider}.
|
|
232
|
+
*/
|
|
233
|
+
get pendingDefault() {
|
|
234
|
+
return this.getPendingDefault() !== undefined;
|
|
235
|
+
}
|
|
236
|
+
get children() {
|
|
237
|
+
const provider = this.getPendingDefault();
|
|
238
|
+
if (provider) {
|
|
239
|
+
const content = provider("UseGlobalContext");
|
|
240
|
+
this.lazyChildren = content;
|
|
241
|
+
}
|
|
242
|
+
return this.lazyChildren;
|
|
233
243
|
}
|
|
234
244
|
get length() {
|
|
235
|
-
return this.
|
|
245
|
+
return this.children.length;
|
|
236
246
|
}
|
|
237
247
|
is(kind) {
|
|
238
248
|
return this.schema === kind.identifier;
|
|
239
249
|
}
|
|
240
|
-
boxedIterator() {
|
|
241
|
-
return this.mapTrees
|
|
242
|
-
.map((m, index) => getOrCreateChild(this.simpleContext, m, {
|
|
243
|
-
parent: this,
|
|
244
|
-
index,
|
|
245
|
-
}))
|
|
246
|
-
.values();
|
|
247
|
-
}
|
|
248
250
|
boxedAt(index) {
|
|
249
251
|
const i = indexForAt(index, this.length);
|
|
250
252
|
if (i === undefined) {
|
|
251
253
|
return undefined;
|
|
252
254
|
}
|
|
253
|
-
const m = this.
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
});
|
|
259
|
-
}
|
|
255
|
+
const m = this.children[i];
|
|
256
|
+
return m;
|
|
257
|
+
}
|
|
258
|
+
[(_b = flexTreeMarker, Symbol.iterator)]() {
|
|
259
|
+
return this.children[Symbol.iterator]();
|
|
260
260
|
}
|
|
261
261
|
/**
|
|
262
262
|
* Mutate this field.
|
|
@@ -267,43 +267,40 @@ class UnhydratedFlexTreeField {
|
|
|
267
267
|
* This function ensures that the parent MapTree has no empty fields (which is an invariant of `MapTree`) after the mutation.
|
|
268
268
|
*/
|
|
269
269
|
edit(edit) {
|
|
270
|
-
|
|
271
|
-
const
|
|
272
|
-
|
|
273
|
-
this.parent.mapTree.fields.set(this.key, newMapTrees);
|
|
270
|
+
// Clear parents for all old map trees.
|
|
271
|
+
for (const tree of this.children) {
|
|
272
|
+
tree.adoptBy(undefined);
|
|
274
273
|
}
|
|
275
|
-
|
|
276
|
-
|
|
274
|
+
this.lazyChildren = edit(this.children) ?? this.children;
|
|
275
|
+
// Set parents for all new map trees.
|
|
276
|
+
for (const [index, tree] of this.children.entries()) {
|
|
277
|
+
tree.adoptBy(this, index);
|
|
277
278
|
}
|
|
278
|
-
this.
|
|
279
|
+
this.parent?.emitChangedEvent(this.key);
|
|
279
280
|
}
|
|
280
281
|
getFieldPath() {
|
|
281
282
|
throw unsupportedUsageError("Editing an array");
|
|
282
283
|
}
|
|
283
284
|
/** Unboxes leaf nodes to their values */
|
|
284
285
|
unboxed(index) {
|
|
285
|
-
const
|
|
286
|
-
const value =
|
|
286
|
+
const child = this.children[index] ?? oob();
|
|
287
|
+
const value = child.value;
|
|
287
288
|
if (value !== undefined) {
|
|
288
289
|
return value;
|
|
289
290
|
}
|
|
290
|
-
return
|
|
291
|
+
return child;
|
|
291
292
|
}
|
|
292
293
|
}
|
|
293
|
-
|
|
294
|
-
|
|
294
|
+
/**
|
|
295
|
+
* The {@link Unhydrated} implementation of {@link FlexTreeOptionalField}.
|
|
296
|
+
*/
|
|
297
|
+
export class UnhydratedOptionalField extends UnhydratedFlexTreeField {
|
|
295
298
|
constructor() {
|
|
296
299
|
super(...arguments);
|
|
297
300
|
this.editor = {
|
|
298
301
|
set: (newContent) => {
|
|
299
|
-
// If the new content is a UnhydratedFlexTreeNode, it needs to have its parent pointer updated
|
|
300
302
|
if (newContent !== undefined) {
|
|
301
|
-
|
|
302
|
-
}
|
|
303
|
-
// If the old content is a UnhydratedFlexTreeNode, it needs to have its parent pointer unset
|
|
304
|
-
const oldContent = this.mapTrees[0];
|
|
305
|
-
if (oldContent !== undefined) {
|
|
306
|
-
nodeCache.get(oldContent)?.adoptBy(undefined);
|
|
303
|
+
assert(newContent instanceof UnhydratedFlexTreeNode, 0xbb7 /* Expected unhydrated node */);
|
|
307
304
|
}
|
|
308
305
|
this.edit((mapTrees) => {
|
|
309
306
|
if (newContent !== undefined) {
|
|
@@ -317,46 +314,48 @@ class EagerMapTreeOptionalField extends UnhydratedFlexTreeField {
|
|
|
317
314
|
};
|
|
318
315
|
}
|
|
319
316
|
get content() {
|
|
320
|
-
const value = this.
|
|
317
|
+
const value = this.children[0];
|
|
321
318
|
if (value !== undefined) {
|
|
322
319
|
return this.unboxed(0);
|
|
323
320
|
}
|
|
324
321
|
return undefined;
|
|
325
322
|
}
|
|
326
323
|
}
|
|
327
|
-
class
|
|
324
|
+
class UnhydratedRequiredField extends UnhydratedOptionalField {
|
|
328
325
|
get content() {
|
|
329
326
|
// This cannot use ?? since null is a legal value here.
|
|
330
327
|
assert(super.content !== undefined, 0xa57 /* Expected EagerMapTree required field to have a value */);
|
|
331
328
|
return super.content;
|
|
332
329
|
}
|
|
333
330
|
}
|
|
334
|
-
|
|
331
|
+
/**
|
|
332
|
+
* The {@link Unhydrated} implementation of {@link FlexTreeSequenceField}.
|
|
333
|
+
*/
|
|
334
|
+
export class UnhydratedSequenceField extends UnhydratedFlexTreeField {
|
|
335
335
|
constructor() {
|
|
336
336
|
super(...arguments);
|
|
337
337
|
this.editor = {
|
|
338
338
|
insert: (index, newContent) => {
|
|
339
|
-
for (
|
|
340
|
-
const c = newContent[i];
|
|
339
|
+
for (const c of newContent) {
|
|
341
340
|
assert(c !== undefined, 0xa0a /* Unexpected sparse array content */);
|
|
342
|
-
|
|
341
|
+
assert(c instanceof UnhydratedFlexTreeNode, 0xbb8 /* Expected unhydrated node */);
|
|
343
342
|
}
|
|
343
|
+
const newContentChecked = newContent;
|
|
344
344
|
this.edit((mapTrees) => {
|
|
345
345
|
if (newContent.length < 1000) {
|
|
346
346
|
// For "smallish arrays" (`1000` is not empirically derived), the `splice` function is appropriate...
|
|
347
|
-
mapTrees.splice(index, 0, ...
|
|
347
|
+
mapTrees.splice(index, 0, ...newContentChecked);
|
|
348
348
|
}
|
|
349
349
|
else {
|
|
350
350
|
// ...but we avoid using `splice` + spread for very large input arrays since there is a limit on how many elements can be spread (too many will overflow the stack).
|
|
351
|
-
return mapTrees.slice(0, index).concat(
|
|
351
|
+
return mapTrees.slice(0, index).concat(newContentChecked, mapTrees.slice(index));
|
|
352
352
|
}
|
|
353
353
|
});
|
|
354
354
|
},
|
|
355
355
|
remove: (index, count) => {
|
|
356
356
|
for (let i = index; i < index + count; i++) {
|
|
357
|
-
const c = this.
|
|
357
|
+
const c = this.children[i];
|
|
358
358
|
assert(c !== undefined, 0xa0b /* Unexpected sparse array */);
|
|
359
|
-
nodeCache.get(c)?.adoptBy(undefined);
|
|
360
359
|
}
|
|
361
360
|
let removed;
|
|
362
361
|
this.edit((mapTrees) => {
|
|
@@ -376,58 +375,25 @@ export class UnhydratedTreeSequenceField extends UnhydratedFlexTreeField {
|
|
|
376
375
|
map(callbackfn) {
|
|
377
376
|
return Array.from(this, callbackfn);
|
|
378
377
|
}
|
|
379
|
-
*[Symbol.iterator]() {
|
|
380
|
-
for (const [i] of this.mapTrees.entries()) {
|
|
381
|
-
yield this.unboxed(i);
|
|
382
|
-
}
|
|
383
|
-
}
|
|
384
378
|
}
|
|
385
379
|
// #endregion Fields
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
function getOrCreateChild(context, mapTree, parent) {
|
|
402
|
-
const cached = nodeCache.get(mapTree);
|
|
403
|
-
if (cached !== undefined) {
|
|
404
|
-
return cached;
|
|
405
|
-
}
|
|
406
|
-
return new UnhydratedFlexTreeNode(context, mapTree, parent);
|
|
407
|
-
}
|
|
408
|
-
/** Creates a field with the given attributes, or returns a cached field if there is one */
|
|
409
|
-
function getOrCreateField(parent, key, schema, onEdit) {
|
|
410
|
-
const cached = getFieldKeyCache(parent).get(key);
|
|
411
|
-
if (cached !== undefined) {
|
|
412
|
-
return cached;
|
|
413
|
-
}
|
|
414
|
-
if (schema === FieldKinds.required.identifier ||
|
|
415
|
-
schema === FieldKinds.identifier.identifier) {
|
|
416
|
-
return new EagerMapTreeRequiredField(parent.simpleContext, schema, key, parent, onEdit);
|
|
417
|
-
}
|
|
418
|
-
if (schema === FieldKinds.optional.identifier) {
|
|
419
|
-
return new EagerMapTreeOptionalField(parent.simpleContext, schema, key, parent, onEdit);
|
|
420
|
-
}
|
|
421
|
-
if (schema === FieldKinds.sequence.identifier) {
|
|
422
|
-
return new UnhydratedTreeSequenceField(parent.simpleContext, schema, key, parent, onEdit);
|
|
423
|
-
}
|
|
424
|
-
// TODO: this seems to used by unknown optional fields. They should probably use "optional" not "Forbidden" schema.
|
|
425
|
-
if (schema === FieldKinds.forbidden.identifier) {
|
|
426
|
-
return new UnhydratedFlexTreeField(parent.simpleContext, schema, key, parent, onEdit);
|
|
380
|
+
/** Creates a field with the given attributes */
|
|
381
|
+
export function createField(...args) {
|
|
382
|
+
switch (args[1]) {
|
|
383
|
+
case FieldKinds.required.identifier:
|
|
384
|
+
case FieldKinds.identifier.identifier:
|
|
385
|
+
return new UnhydratedRequiredField(...args);
|
|
386
|
+
case FieldKinds.optional.identifier:
|
|
387
|
+
return new UnhydratedOptionalField(...args);
|
|
388
|
+
case FieldKinds.sequence.identifier:
|
|
389
|
+
return new UnhydratedSequenceField(...args);
|
|
390
|
+
case FieldKinds.forbidden.identifier:
|
|
391
|
+
// TODO: this seems to used by unknown optional fields. They should probably use "optional" not "Forbidden" schema.
|
|
392
|
+
return new UnhydratedFlexTreeField(...args);
|
|
393
|
+
default:
|
|
394
|
+
return fail(0xb9d /* unsupported field kind */);
|
|
427
395
|
}
|
|
428
|
-
return fail(0xb9d /* unsupported field kind */);
|
|
429
396
|
}
|
|
430
|
-
// #endregion Caching and unboxing utilities
|
|
431
397
|
export function unsupportedUsageError(message) {
|
|
432
398
|
return new UsageError(`${message ?? "Operation"} is not supported for content that has not yet been inserted into the tree`);
|
|
433
399
|
}
|