@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
|
@@ -12,49 +12,145 @@ import {
|
|
|
12
12
|
type FieldKey,
|
|
13
13
|
type ITreeCursor,
|
|
14
14
|
type MapTree,
|
|
15
|
+
type NodeData,
|
|
15
16
|
aboveRootPlaceholder,
|
|
16
17
|
detachedFieldAsKey,
|
|
17
18
|
mapCursorField,
|
|
18
19
|
rootField,
|
|
20
|
+
rootFieldKey,
|
|
19
21
|
} from "../core/index.js";
|
|
20
22
|
|
|
21
23
|
import {
|
|
22
24
|
type CursorAdapter,
|
|
23
25
|
type CursorWithNode,
|
|
26
|
+
type Field,
|
|
24
27
|
stackTreeFieldCursor,
|
|
25
28
|
stackTreeNodeCursor,
|
|
26
29
|
} from "./treeCursorUtils.js";
|
|
30
|
+
import type { requireAssignableTo } from "../util/index.js";
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* A generic variant of {@link MapTree} that can be used to strongly type trees implementing a MapTree-like API.
|
|
34
|
+
* @remarks
|
|
35
|
+
* Due to how TypeScript handles recursive generic types, explicitly named extension interfaces work best for parameterizing this, and a default type parameter can't be provided.
|
|
36
|
+
* @see {@link MinimalMapTreeNodeView} for a minimal configuration of this interface.
|
|
37
|
+
*/
|
|
38
|
+
export interface MapTreeNodeViewGeneric<TNode> extends NodeData {
|
|
39
|
+
/**
|
|
40
|
+
* The non-empty fields on this node.
|
|
41
|
+
* @remarks
|
|
42
|
+
* This is the subset of map needed to view the tree.
|
|
43
|
+
* Theoretically `Symbol.iterator` and "keys" are redundant.
|
|
44
|
+
*/
|
|
45
|
+
readonly fields: MinimalFieldMap<MapTreeFieldViewGeneric<TNode>>;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* A minimal map for the fields of a {@link MapTreeNodeViewGeneric}.
|
|
50
|
+
* @remarks
|
|
51
|
+
* Subset of map, so can be implemented by `Map<FieldKey, TField>`.
|
|
52
|
+
*/
|
|
53
|
+
export interface MinimalFieldMap<TField> {
|
|
54
|
+
[Symbol.iterator]: () => Iterator<[FieldKey, TField]>;
|
|
55
|
+
get: (key: FieldKey) => TField | undefined;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* A field in {@link MapTreeNodeViewGeneric}.
|
|
60
|
+
* @remarks
|
|
61
|
+
* Subset of array, so can be implemented by `TNode[]`.
|
|
62
|
+
*/
|
|
63
|
+
export interface MapTreeFieldViewGeneric<TNode> {
|
|
64
|
+
readonly [Symbol.iterator]: () => Iterator<TNode>;
|
|
65
|
+
readonly length: number;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Like {@link MapTree} but with the minimal properties needed for reading.
|
|
70
|
+
*/
|
|
71
|
+
export interface MinimalMapTreeNodeView
|
|
72
|
+
extends MapTreeNodeViewGeneric<MinimalMapTreeNodeView> {}
|
|
73
|
+
|
|
74
|
+
{
|
|
75
|
+
// Check that these interfaces are subsets of MapTree as intended:
|
|
76
|
+
type _check1 = requireAssignableTo<MapTree, MinimalMapTreeNodeView>;
|
|
77
|
+
type _check2 = requireAssignableTo<MapTree, MapTreeNodeViewGeneric<MapTree>>;
|
|
78
|
+
}
|
|
27
79
|
|
|
28
80
|
/**
|
|
29
81
|
* Returns an {@link ITreeCursorSynchronous} in nodes mode for a single {@link MapTree}.
|
|
30
82
|
*/
|
|
31
|
-
export function cursorForMapTreeNode
|
|
32
|
-
|
|
83
|
+
export function cursorForMapTreeNode<T extends MapTreeNodeViewGeneric<T>>(
|
|
84
|
+
root: T,
|
|
85
|
+
): CursorWithNode<T> {
|
|
86
|
+
// There doesn't seem to be a clean way to get TypeScript to type check this without casting
|
|
87
|
+
// without declaring the adapter inside this generic function and needlessly recreating it on every call.
|
|
88
|
+
const adapterTyped = adapter as CursorAdapter<MapTreeNodeViewGeneric<T>> as CursorAdapter<T>;
|
|
89
|
+
return stackTreeNodeCursor(adapterTyped, root);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Creates an {@link ExclusiveMapTree} with a single field and no value.
|
|
94
|
+
* @remarks
|
|
95
|
+
* This handles ensuring the field is omitted if empty, and defaults to making the node above the root.
|
|
96
|
+
*/
|
|
97
|
+
export function mapTreeWithField(
|
|
98
|
+
children: ExclusiveMapTree[],
|
|
99
|
+
key = rootFieldKey,
|
|
100
|
+
type = aboveRootPlaceholder,
|
|
101
|
+
): ExclusiveMapTree {
|
|
102
|
+
return {
|
|
103
|
+
type,
|
|
104
|
+
fields: mapTreeFieldsWithField(children, key),
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Creates a Map suitable for use as {@link MapTree.fields} with a single field.
|
|
110
|
+
* @remarks
|
|
111
|
+
* This handles ensuring the field is omitted if empty.
|
|
112
|
+
*/
|
|
113
|
+
export function mapTreeFieldsWithField<T extends readonly unknown[]>(
|
|
114
|
+
children: T,
|
|
115
|
+
key: FieldKey,
|
|
116
|
+
): Map<FieldKey, T> {
|
|
117
|
+
return new Map(children.length === 0 ? [] : [[key, children]]);
|
|
33
118
|
}
|
|
34
119
|
|
|
35
120
|
/**
|
|
36
121
|
* Returns an {@link ITreeCursorSynchronous} in fields mode for a MapTree field.
|
|
37
122
|
*/
|
|
38
|
-
export function cursorForMapTreeField(
|
|
39
|
-
root: readonly
|
|
123
|
+
export function cursorForMapTreeField<T extends MapTreeNodeViewGeneric<T>>(
|
|
124
|
+
root: readonly T[],
|
|
40
125
|
detachedField: DetachedField = rootField,
|
|
41
|
-
): CursorWithNode<
|
|
126
|
+
): CursorWithNode<T> {
|
|
42
127
|
const key = detachedFieldAsKey(detachedField);
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
detachedField,
|
|
50
|
-
);
|
|
128
|
+
const adapterTyped = adapter as unknown as CursorAdapter<T>;
|
|
129
|
+
const dummyRoot: MapTreeNodeViewGeneric<T> = {
|
|
130
|
+
type: aboveRootPlaceholder,
|
|
131
|
+
fields: mapTreeFieldsWithField(root, key),
|
|
132
|
+
};
|
|
133
|
+
return stackTreeFieldCursor(adapterTyped, dummyRoot as T, detachedField);
|
|
51
134
|
}
|
|
52
135
|
|
|
53
|
-
const adapter: CursorAdapter<
|
|
136
|
+
const adapter: CursorAdapter<MinimalMapTreeNodeView> = {
|
|
54
137
|
value: (node) => node.value,
|
|
55
138
|
type: (node) => node.type,
|
|
56
|
-
keysFromNode: (node) =>
|
|
57
|
-
getFieldFromNode: (node, key) =>
|
|
139
|
+
keysFromNode: (node) => Array.from(node.fields, ([key, field]) => key),
|
|
140
|
+
getFieldFromNode: (node, key): Field<MinimalMapTreeNodeView> => {
|
|
141
|
+
const field = node.fields.get(key) as
|
|
142
|
+
| MinimalMapTreeNodeView[]
|
|
143
|
+
| Iterable<MinimalMapTreeNodeView>
|
|
144
|
+
| undefined;
|
|
145
|
+
if (field === undefined) {
|
|
146
|
+
return [];
|
|
147
|
+
}
|
|
148
|
+
if (Array.isArray(field)) {
|
|
149
|
+
return field as readonly MinimalMapTreeNodeView[];
|
|
150
|
+
}
|
|
151
|
+
// TODO: this copy could be avoided by using Array.at instead of indexing in `Field`, but that requires ES2022.
|
|
152
|
+
return [...field] as readonly MinimalMapTreeNodeView[];
|
|
153
|
+
},
|
|
58
154
|
};
|
|
59
155
|
|
|
60
156
|
/**
|
|
@@ -76,7 +76,7 @@ export function makeModularChangeCodecFamily(
|
|
|
76
76
|
ChangeEncodingContext
|
|
77
77
|
>,
|
|
78
78
|
fieldsCodec: FieldBatchCodec,
|
|
79
|
-
|
|
79
|
+
codecOptions: ICodecOptions,
|
|
80
80
|
chunkCompressionStrategy: TreeCompressionStrategy = TreeCompressionStrategy.Compressed,
|
|
81
81
|
): ICodecFamily<ModularChangeset, ChangeEncodingContext> {
|
|
82
82
|
return makeCodecFamily(
|
|
@@ -86,7 +86,7 @@ export function makeModularChangeCodecFamily(
|
|
|
86
86
|
fieldKinds,
|
|
87
87
|
revisionTagCodec,
|
|
88
88
|
fieldsCodec,
|
|
89
|
-
|
|
89
|
+
codecOptions,
|
|
90
90
|
chunkCompressionStrategy,
|
|
91
91
|
),
|
|
92
92
|
]),
|
|
@@ -116,7 +116,7 @@ function makeModularChangeCodec(
|
|
|
116
116
|
ChangeEncodingContext
|
|
117
117
|
>,
|
|
118
118
|
fieldsCodec: FieldBatchCodec,
|
|
119
|
-
|
|
119
|
+
codecOptions: ICodecOptions,
|
|
120
120
|
chunkCompressionStrategy: TreeCompressionStrategy = TreeCompressionStrategy.Compressed,
|
|
121
121
|
): ModularChangeCodec {
|
|
122
122
|
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
|
|
@@ -125,7 +125,7 @@ function makeModularChangeCodec(
|
|
|
125
125
|
return {
|
|
126
126
|
codec,
|
|
127
127
|
compiledSchema: codec.json.encodedSchema
|
|
128
|
-
?
|
|
128
|
+
? codecOptions.jsonValidator.compile(codec.json.encodedSchema)
|
|
129
129
|
: undefined,
|
|
130
130
|
};
|
|
131
131
|
};
|
|
@@ -519,7 +519,11 @@ function makeModularChangeCodec(
|
|
|
519
519
|
},
|
|
520
520
|
};
|
|
521
521
|
|
|
522
|
-
return withSchemaValidation(
|
|
522
|
+
return withSchemaValidation(
|
|
523
|
+
EncodedModularChangeset,
|
|
524
|
+
modularChangeCodec,
|
|
525
|
+
codecOptions.jsonValidator,
|
|
526
|
+
);
|
|
523
527
|
}
|
|
524
528
|
|
|
525
529
|
function getChangeHandler(
|
|
@@ -154,6 +154,9 @@ export class ObjectForest implements IEditableForest, WithBreakable {
|
|
|
154
154
|
// Some detached fields may have multiple nodes, so we must treat them as sequences:
|
|
155
155
|
kind: FieldKinds.sequence.identifier,
|
|
156
156
|
types: new Set(documentRoot.map((node) => node.type)),
|
|
157
|
+
|
|
158
|
+
// Metadata is not used for schema checks
|
|
159
|
+
persistedMetadata: undefined,
|
|
157
160
|
};
|
|
158
161
|
const maybeError = isFieldInSchema(documentRoot, fieldSchema, {
|
|
159
162
|
schema,
|
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
makeVersionDispatchingCodec,
|
|
14
14
|
withSchemaValidation,
|
|
15
15
|
} from "../../codec/index.js";
|
|
16
|
-
import { makeSchemaCodec
|
|
16
|
+
import { makeSchemaCodec } from "../schema-index/index.js";
|
|
17
17
|
|
|
18
18
|
import { EncodedSchemaChange } from "./schemaChangeFormat.js";
|
|
19
19
|
import type { SchemaChange } from "./schemaChangeTypes.js";
|
|
@@ -25,7 +25,10 @@ import { SchemaVersion } from "../../core/index.js";
|
|
|
25
25
|
* @returns The composed codec family.
|
|
26
26
|
*/
|
|
27
27
|
export function makeSchemaChangeCodecs(options: ICodecOptions): ICodecFamily<SchemaChange> {
|
|
28
|
-
return makeCodecFamily([
|
|
28
|
+
return makeCodecFamily([
|
|
29
|
+
[SchemaVersion.v1, makeSchemaChangeCodecV1(options, SchemaVersion.v1)],
|
|
30
|
+
[SchemaVersion.v2, makeSchemaChangeCodecV1(options, SchemaVersion.v2)],
|
|
31
|
+
]);
|
|
29
32
|
}
|
|
30
33
|
|
|
31
34
|
/**
|
|
@@ -43,14 +46,16 @@ export function makeSchemaChangeCodec(
|
|
|
43
46
|
}
|
|
44
47
|
|
|
45
48
|
/**
|
|
46
|
-
* Compose the
|
|
49
|
+
* Compose the change codec using mostly v1 logic.
|
|
47
50
|
* @param options - The codec options.
|
|
51
|
+
* @param schemaWriteVersion - The schema write version.
|
|
48
52
|
* @returns The composed schema change codec.
|
|
49
53
|
*/
|
|
50
54
|
function makeSchemaChangeCodecV1(
|
|
51
55
|
options: ICodecOptions,
|
|
56
|
+
schemaWriteVersion: SchemaVersion,
|
|
52
57
|
): IJsonCodec<SchemaChange, EncodedSchemaChange> {
|
|
53
|
-
const schemaCodec = makeSchemaCodec(options,
|
|
58
|
+
const schemaCodec = makeSchemaCodec(options, schemaWriteVersion);
|
|
54
59
|
const schemaChangeCodec: IJsonCodec<SchemaChange, EncodedSchemaChange> = {
|
|
55
60
|
encode: (schemaChange) => {
|
|
56
61
|
assert(
|
|
@@ -58,8 +63,8 @@ function makeSchemaChangeCodecV1(
|
|
|
58
63
|
0x933 /* Inverse schema changes should never be transmitted */,
|
|
59
64
|
);
|
|
60
65
|
return {
|
|
61
|
-
new: schemaCodec.encode(schemaChange.schema.new)
|
|
62
|
-
old: schemaCodec.encode(schemaChange.schema.old)
|
|
66
|
+
new: schemaCodec.encode(schemaChange.schema.new),
|
|
67
|
+
old: schemaCodec.encode(schemaChange.schema.old),
|
|
63
68
|
};
|
|
64
69
|
},
|
|
65
70
|
decode: (encoded) => {
|
|
@@ -4,11 +4,11 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import { type Static, Type } from "@sinclair/typebox";
|
|
7
|
-
import {
|
|
7
|
+
import { JsonCompatibleReadOnlySchema } from "../../util/index.js";
|
|
8
8
|
|
|
9
9
|
export const EncodedSchemaChange = Type.Object({
|
|
10
|
-
new:
|
|
11
|
-
old:
|
|
10
|
+
new: JsonCompatibleReadOnlySchema,
|
|
11
|
+
old: JsonCompatibleReadOnlySchema,
|
|
12
12
|
});
|
|
13
13
|
|
|
14
14
|
export type EncodedSchemaChange = Static<typeof EncodedSchemaChange>;
|
|
@@ -20,13 +20,14 @@ import {
|
|
|
20
20
|
type TreeNodeStoredSchema,
|
|
21
21
|
type TreeStoredSchema,
|
|
22
22
|
decodeFieldSchema,
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
encodeFieldSchemaV1,
|
|
24
|
+
encodeFieldSchemaV2,
|
|
25
25
|
storedSchemaDecodeDispatcher,
|
|
26
26
|
} from "../../core/index.js";
|
|
27
27
|
import { brand, type JsonCompatible } from "../../util/index.js";
|
|
28
28
|
|
|
29
29
|
import { Format as FormatV1 } from "./formatV1.js";
|
|
30
|
+
import { Format as FormatV2 } from "./formatV2.js";
|
|
30
31
|
|
|
31
32
|
/**
|
|
32
33
|
* Convert a FluidClientVersion to a SchemaVersion.
|
|
@@ -62,7 +63,10 @@ export function makeSchemaCodec(
|
|
|
62
63
|
* @returns The composed codec family.
|
|
63
64
|
*/
|
|
64
65
|
export function makeSchemaCodecs(options: ICodecOptions): ICodecFamily<TreeStoredSchema> {
|
|
65
|
-
return makeCodecFamily([
|
|
66
|
+
return makeCodecFamily([
|
|
67
|
+
[SchemaVersion.v1, makeSchemaCodecV1(options)],
|
|
68
|
+
[SchemaVersion.v2, makeSchemaCodecV2(options)],
|
|
69
|
+
]);
|
|
66
70
|
}
|
|
67
71
|
|
|
68
72
|
/**
|
|
@@ -74,36 +78,79 @@ export function makeSchemaCodecs(options: ICodecOptions): ICodecFamily<TreeStore
|
|
|
74
78
|
export function encodeRepo(repo: TreeStoredSchema, version: SchemaVersion): JsonCompatible {
|
|
75
79
|
switch (version) {
|
|
76
80
|
case SchemaVersion.v1:
|
|
77
|
-
return encodeRepoV1(repo);
|
|
81
|
+
return encodeRepoV1(repo) as JsonCompatible;
|
|
82
|
+
case SchemaVersion.v2:
|
|
83
|
+
return encodeRepoV2(repo) as JsonCompatible;
|
|
78
84
|
default:
|
|
79
85
|
unreachableCase(version);
|
|
80
86
|
}
|
|
81
87
|
}
|
|
82
88
|
|
|
83
89
|
function encodeRepoV1(repo: TreeStoredSchema): FormatV1 {
|
|
84
|
-
const nodeSchema
|
|
85
|
-
|
|
86
|
-
|
|
90
|
+
const nodeSchema = encodeNodeSchema(repo, (schema) => schema.encodeV1());
|
|
91
|
+
const rootFieldSchema = encodeFieldSchemaV1(repo.rootFieldSchema);
|
|
92
|
+
return {
|
|
93
|
+
version: SchemaVersion.v1,
|
|
94
|
+
nodes: nodeSchema,
|
|
95
|
+
root: rootFieldSchema,
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
function encodeRepoV2(repo: TreeStoredSchema): FormatV2 {
|
|
100
|
+
const nodeSchema = encodeNodeSchema(repo, (schema) => schema.encodeV2());
|
|
101
|
+
const rootFieldSchema = encodeFieldSchemaV2(repo.rootFieldSchema);
|
|
102
|
+
return {
|
|
103
|
+
version: SchemaVersion.v2,
|
|
104
|
+
nodes: nodeSchema,
|
|
105
|
+
root: rootFieldSchema,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Shared logic for encoding node schemas.
|
|
111
|
+
* @param repo - The stored schema to encode.
|
|
112
|
+
* @param encodeValue - A function which encodes a single node schema.
|
|
113
|
+
* @returns The encoded node schema.
|
|
114
|
+
*/
|
|
115
|
+
function encodeNodeSchema<TFormat>(
|
|
116
|
+
repo: TreeStoredSchema,
|
|
117
|
+
encodeValue: (schema: TreeNodeStoredSchema) => TFormat,
|
|
118
|
+
): Record<string, TFormat> {
|
|
119
|
+
const nodeSchema: Record<string, TFormat> = Object.create(null);
|
|
87
120
|
for (const name of [...repo.nodeSchema.keys()].sort()) {
|
|
88
121
|
const schema = repo.nodeSchema.get(name) ?? fail(0xb28 /* missing schema */);
|
|
89
122
|
Object.defineProperty(nodeSchema, name, {
|
|
90
123
|
enumerable: true,
|
|
91
124
|
configurable: true,
|
|
92
125
|
writable: true,
|
|
93
|
-
value: schema
|
|
126
|
+
value: encodeValue(schema),
|
|
94
127
|
});
|
|
95
128
|
}
|
|
129
|
+
|
|
130
|
+
return nodeSchema;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
function decodeV1(f: FormatV1): TreeStoredSchema {
|
|
134
|
+
const nodeSchema: Map<TreeNodeSchemaIdentifier, TreeNodeStoredSchema> = new Map();
|
|
135
|
+
for (const [key, schema] of Object.entries(f.nodes)) {
|
|
136
|
+
const storedSchemaDecoder = storedSchemaDecodeDispatcher.dispatch(schema);
|
|
137
|
+
|
|
138
|
+
// No metadata in v1, so pass undefined
|
|
139
|
+
nodeSchema.set(brand(key), storedSchemaDecoder(undefined));
|
|
140
|
+
}
|
|
96
141
|
return {
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
root: rootFieldSchema,
|
|
142
|
+
rootFieldSchema: decodeFieldSchema(f.root),
|
|
143
|
+
nodeSchema,
|
|
100
144
|
};
|
|
101
145
|
}
|
|
102
146
|
|
|
103
|
-
function
|
|
147
|
+
function decodeV2(f: FormatV2): TreeStoredSchema {
|
|
104
148
|
const nodeSchema: Map<TreeNodeSchemaIdentifier, TreeNodeStoredSchema> = new Map();
|
|
105
149
|
for (const [key, schema] of Object.entries(f.nodes)) {
|
|
106
|
-
|
|
150
|
+
const storedSchemaDecoder = storedSchemaDecodeDispatcher.dispatch(schema.kind);
|
|
151
|
+
|
|
152
|
+
// Pass in the node metadata
|
|
153
|
+
nodeSchema.set(brand(key), storedSchemaDecoder(schema.metadata));
|
|
107
154
|
}
|
|
108
155
|
return {
|
|
109
156
|
rootFieldSchema: decodeFieldSchema(f.root),
|
|
@@ -119,6 +166,18 @@ function decode(f: FormatV1): TreeStoredSchema {
|
|
|
119
166
|
function makeSchemaCodecV1(options: ICodecOptions): IJsonCodec<TreeStoredSchema, FormatV1> {
|
|
120
167
|
return makeVersionedValidatedCodec(options, new Set([SchemaVersion.v1]), FormatV1, {
|
|
121
168
|
encode: (data: TreeStoredSchema) => encodeRepoV1(data),
|
|
122
|
-
decode: (data: FormatV1) =>
|
|
169
|
+
decode: (data: FormatV1) => decodeV1(data),
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
/**
|
|
174
|
+
* Creates a codec which performs synchronous monolithic encoding of schema content.
|
|
175
|
+
* @param options - Specifies common codec options, including which `validator` to use.
|
|
176
|
+
* @returns The codec.
|
|
177
|
+
*/
|
|
178
|
+
function makeSchemaCodecV2(options: ICodecOptions): IJsonCodec<TreeStoredSchema, FormatV2> {
|
|
179
|
+
return makeVersionedValidatedCodec(options, new Set([SchemaVersion.v2]), FormatV2, {
|
|
180
|
+
encode: (data: TreeStoredSchema) => encodeRepoV2(data),
|
|
181
|
+
decode: (data: FormatV2) => decodeV2(data),
|
|
123
182
|
});
|
|
124
183
|
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
|
+
* Licensed under the MIT License.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { type ObjectOptions, type Static, Type } from "@sinclair/typebox";
|
|
7
|
+
|
|
8
|
+
import { SchemaVersion, schemaFormatV2 } from "../../core/index.js";
|
|
9
|
+
|
|
10
|
+
const noAdditionalProps: ObjectOptions = { additionalProperties: false };
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Format for encoding as json.
|
|
14
|
+
*
|
|
15
|
+
* For consistency all lists are sorted and undefined values are omitted.
|
|
16
|
+
*
|
|
17
|
+
* This chooses to use lists of named objects instead of maps:
|
|
18
|
+
* this choice is somewhat arbitrary, but avoids user data being used as object keys,
|
|
19
|
+
* which can sometimes be an issue (for example handling that for "__proto__" can require care).
|
|
20
|
+
* It also makes it simpler to determinately sort by keys.
|
|
21
|
+
*/
|
|
22
|
+
export const Format = Type.Object(
|
|
23
|
+
{
|
|
24
|
+
version: Type.Literal(SchemaVersion.v2),
|
|
25
|
+
nodes: Type.Record(Type.String(), schemaFormatV2.TreeNodeSchemaDataFormat),
|
|
26
|
+
root: schemaFormatV2.FieldSchemaFormat,
|
|
27
|
+
},
|
|
28
|
+
noAdditionalProps,
|
|
29
|
+
);
|
|
30
|
+
export type Format = Static<typeof Format>;
|
|
@@ -51,15 +51,18 @@ export class SchemaSummarizer implements Summarizable {
|
|
|
51
51
|
});
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
-
public
|
|
55
|
-
stringify: SummaryElementStringifier
|
|
56
|
-
fullTree?: boolean
|
|
57
|
-
trackState?: boolean
|
|
58
|
-
telemetryContext?: ITelemetryContext
|
|
59
|
-
incrementalSummaryContext?: IExperimentalIncrementalSummaryContext
|
|
60
|
-
): ISummaryTreeWithStats {
|
|
54
|
+
public summarize(props: {
|
|
55
|
+
stringify: SummaryElementStringifier;
|
|
56
|
+
fullTree?: boolean;
|
|
57
|
+
trackState?: boolean;
|
|
58
|
+
telemetryContext?: ITelemetryContext;
|
|
59
|
+
incrementalSummaryContext?: IExperimentalIncrementalSummaryContext;
|
|
60
|
+
}): ISummaryTreeWithStats {
|
|
61
|
+
const incrementalSummaryContext = props.incrementalSummaryContext;
|
|
61
62
|
const builder = new SummaryTreeBuilder();
|
|
63
|
+
const fullTree = props.fullTree ?? false;
|
|
62
64
|
if (
|
|
65
|
+
!fullTree &&
|
|
63
66
|
incrementalSummaryContext !== undefined &&
|
|
64
67
|
this.schemaIndexLastChangedSeq !== undefined &&
|
|
65
68
|
incrementalSummaryContext.latestSummarySequenceNumber >= this.schemaIndexLastChangedSeq
|
|
@@ -67,7 +70,7 @@ export class SchemaSummarizer implements Summarizable {
|
|
|
67
70
|
builder.addHandle(
|
|
68
71
|
schemaStringKey,
|
|
69
72
|
SummaryType.Blob,
|
|
70
|
-
`${incrementalSummaryContext.summaryPath}
|
|
73
|
+
`${incrementalSummaryContext.summaryPath}/${schemaStringKey}`,
|
|
71
74
|
);
|
|
72
75
|
} else {
|
|
73
76
|
const dataString = JSON.stringify(this.codec.encode(this.schema));
|
|
@@ -76,16 +79,6 @@ export class SchemaSummarizer implements Summarizable {
|
|
|
76
79
|
return builder.getSummaryTree();
|
|
77
80
|
}
|
|
78
81
|
|
|
79
|
-
public async summarize(
|
|
80
|
-
stringify: SummaryElementStringifier,
|
|
81
|
-
fullTree?: boolean,
|
|
82
|
-
trackState?: boolean,
|
|
83
|
-
telemetryContext?: ITelemetryContext,
|
|
84
|
-
incrementalSummaryContext?: IExperimentalIncrementalSummaryContext | undefined,
|
|
85
|
-
): Promise<ISummaryTreeWithStats> {
|
|
86
|
-
throw new Error("Method not implemented.");
|
|
87
|
-
}
|
|
88
|
-
|
|
89
82
|
public async load(
|
|
90
83
|
services: IChannelStorageService,
|
|
91
84
|
parse: SummaryElementParser,
|
|
@@ -72,6 +72,11 @@ export function stackTreeFieldCursor<TNode>(
|
|
|
72
72
|
return cursor;
|
|
73
73
|
}
|
|
74
74
|
|
|
75
|
+
/**
|
|
76
|
+
* The representation of a field used by {@link CursorAdapter}.
|
|
77
|
+
*/
|
|
78
|
+
export type Field<TNode> = Pick<readonly TNode[], typeof Symbol.iterator | "length" | number>;
|
|
79
|
+
|
|
75
80
|
/**
|
|
76
81
|
* Provides functionality to allow a {@link stackTreeNodeCursor} and {@link stackTreeFieldCursor} to implement cursors.
|
|
77
82
|
*/
|
|
@@ -91,10 +96,10 @@ export interface CursorAdapter<TNode> {
|
|
|
91
96
|
/**
|
|
92
97
|
* @returns the child nodes for the given node and key.
|
|
93
98
|
*/
|
|
94
|
-
getFieldFromNode(node: TNode, key: FieldKey):
|
|
99
|
+
getFieldFromNode(node: TNode, key: FieldKey): Field<TNode>;
|
|
95
100
|
}
|
|
96
101
|
|
|
97
|
-
type SiblingsOrKey<TNode> =
|
|
102
|
+
type SiblingsOrKey<TNode> = Field<TNode> | readonly FieldKey[];
|
|
98
103
|
|
|
99
104
|
/**
|
|
100
105
|
* A class that satisfies part of the ITreeCursorSynchronous implementation.
|
|
@@ -122,7 +127,7 @@ export abstract class SynchronousCursor {
|
|
|
122
127
|
* 2. Support for cursors which are field cursors at the root.
|
|
123
128
|
*/
|
|
124
129
|
class StackCursor<TNode> extends SynchronousCursor implements CursorWithNode<TNode> {
|
|
125
|
-
public readonly [CursorMarker] = true;
|
|
130
|
+
public override readonly [CursorMarker] = true;
|
|
126
131
|
/**
|
|
127
132
|
* Might start at special root where fields are detached sequences.
|
|
128
133
|
*
|
|
@@ -149,14 +154,18 @@ class StackCursor<TNode> extends SynchronousCursor implements CursorWithNode<TNo
|
|
|
149
154
|
debugAssert(() =>
|
|
150
155
|
this.mode === CursorLocationType.Fields ? true : "must be in fields mode",
|
|
151
156
|
);
|
|
152
|
-
|
|
157
|
+
// index is kept inbounds as an invariant of the class.
|
|
158
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
159
|
+
return (this.siblings as readonly FieldKey[])[this.index]!;
|
|
153
160
|
}
|
|
154
161
|
|
|
155
162
|
private getStackedFieldKey(height: number): FieldKey {
|
|
156
163
|
assert(height % 2 === 1, 0x3b8 /* must field height */);
|
|
157
164
|
const siblingStack = this.siblingStack[height] ?? oob();
|
|
158
165
|
const indexStack = this.indexStack[height] ?? oob();
|
|
159
|
-
|
|
166
|
+
// index is kept inbounds as an invariant of the class.
|
|
167
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
168
|
+
return (siblingStack as readonly FieldKey[])[indexStack]!;
|
|
160
169
|
}
|
|
161
170
|
|
|
162
171
|
private getStackedNodeIndex(height: number): number {
|
|
@@ -166,9 +175,10 @@ class StackCursor<TNode> extends SynchronousCursor implements CursorWithNode<TNo
|
|
|
166
175
|
|
|
167
176
|
private getStackedNode(height: number): TNode {
|
|
168
177
|
const index = this.getStackedNodeIndex(height);
|
|
169
|
-
//
|
|
178
|
+
// Can not use `?? oob()` since null and undefined are valid values.
|
|
179
|
+
// index is kept inbounds as an invariant of the class.
|
|
170
180
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
171
|
-
return (this.siblingStack[height] as
|
|
181
|
+
return (this.siblingStack[height] as Field<TNode>)[index]!;
|
|
172
182
|
}
|
|
173
183
|
|
|
174
184
|
public getFieldLength(): number {
|
|
@@ -358,12 +368,13 @@ class StackCursor<TNode> extends SynchronousCursor implements CursorWithNode<TNo
|
|
|
358
368
|
|
|
359
369
|
public getNode(): TNode {
|
|
360
370
|
// assert(this.mode === CursorLocationType.Nodes, "can only get node when in node");
|
|
361
|
-
//
|
|
371
|
+
// Can not use `?? oob()` since null and undefined are valid values.
|
|
372
|
+
// index is kept inbounds as an invariant of the class.
|
|
362
373
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
363
|
-
return (this.siblings as TNode
|
|
374
|
+
return (this.siblings as Field<TNode>)[this.index]!;
|
|
364
375
|
}
|
|
365
376
|
|
|
366
|
-
private getField():
|
|
377
|
+
private getField(): Field<TNode> {
|
|
367
378
|
// assert(this.mode === CursorLocationType.Fields, "can only get field when in fields");
|
|
368
379
|
const parent = this.getStackedNode(this.indexStack.length - 1);
|
|
369
380
|
const key: FieldKey = this.getFieldKey();
|
package/src/index.ts
CHANGED
|
@@ -113,6 +113,7 @@ export {
|
|
|
113
113
|
type TreeNodeSchemaClass,
|
|
114
114
|
type SchemaCompatibilityStatus,
|
|
115
115
|
type FieldProps,
|
|
116
|
+
type FieldPropsAlpha,
|
|
116
117
|
type InternalTreeNode,
|
|
117
118
|
type WithType,
|
|
118
119
|
type NodeChangedData,
|
|
@@ -198,6 +199,7 @@ export {
|
|
|
198
199
|
type LazyItem,
|
|
199
200
|
type Unenforced,
|
|
200
201
|
type SimpleNodeSchemaBase,
|
|
202
|
+
type SimpleNodeSchemaBaseAlpha,
|
|
201
203
|
type SimpleTreeSchema,
|
|
202
204
|
type SimpleNodeSchema,
|
|
203
205
|
type SimpleFieldSchema,
|
|
@@ -215,6 +217,7 @@ export {
|
|
|
215
217
|
type TreeBranchEvents,
|
|
216
218
|
asTreeViewAlpha,
|
|
217
219
|
type NodeSchemaOptions,
|
|
220
|
+
type NodeSchemaOptionsAlpha,
|
|
218
221
|
type NodeSchemaMetadata,
|
|
219
222
|
type SchemaStatics,
|
|
220
223
|
type ITreeAlpha,
|
|
@@ -255,6 +258,7 @@ export { persistedToSimpleSchema } from "./shared-tree/index.js";
|
|
|
255
258
|
|
|
256
259
|
export {
|
|
257
260
|
type ICodecOptions,
|
|
261
|
+
type CodecWriteOptions,
|
|
258
262
|
type JsonValidator,
|
|
259
263
|
type SchemaValidationFunction,
|
|
260
264
|
FluidClientVersion,
|
|
@@ -281,6 +285,8 @@ export type {
|
|
|
281
285
|
PopUnion,
|
|
282
286
|
JsonCompatible,
|
|
283
287
|
JsonCompatibleObject,
|
|
288
|
+
JsonCompatibleReadOnly,
|
|
289
|
+
JsonCompatibleReadOnlyObject,
|
|
284
290
|
} from "./util/index.js";
|
|
285
291
|
export { cloneWithReplacements } from "./util/index.js";
|
|
286
292
|
|
package/src/packageVersion.ts
CHANGED