@fluidframework/tree 2.0.0-dev-rc.5.0.0.271262 → 2.0.0-dev-rc.5.0.0.272251
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/api-extractor/api-extractor-lint-beta.cjs.json +5 -0
- package/api-extractor/api-extractor-lint-beta.esm.json +5 -0
- package/api-extractor/api-extractor-lint-bundle.json +5 -0
- package/api-extractor/api-extractor-lint-public.cjs.json +5 -0
- package/api-extractor/api-extractor-lint-public.esm.json +5 -0
- package/api-report/tree.alpha.api.md +2 -13
- package/api-report/tree.beta.api.md +2 -13
- package/api-report/tree.public.api.md +2 -13
- package/dist/beta.d.ts +0 -1
- package/dist/codec/codec.js +0 -1
- package/dist/codec/codec.js.map +1 -1
- package/dist/codec/discriminatedUnions.js +0 -1
- package/dist/codec/discriminatedUnions.js.map +1 -1
- package/dist/core/change-family/editBuilder.js +0 -2
- package/dist/core/change-family/editBuilder.js.map +1 -1
- package/dist/core/rebase/revisionTagCodec.js +0 -2
- package/dist/core/rebase/revisionTagCodec.js.map +1 -1
- package/dist/core/schema-stored/schema.js +0 -4
- package/dist/core/schema-stored/schema.js.map +1 -1
- package/dist/core/schema-stored/storedSchemaRepository.js +1 -3
- package/dist/core/schema-stored/storedSchemaRepository.js.map +1 -1
- package/dist/core/schema-view/view.js +0 -2
- package/dist/core/schema-view/view.js.map +1 -1
- package/dist/core/tree/anchorSet.js +46 -51
- package/dist/core/tree/anchorSet.js.map +1 -1
- package/dist/core/tree/detachedFieldIndex.js +2 -8
- package/dist/core/tree/detachedFieldIndex.js.map +1 -1
- package/dist/core/tree/detachedFieldIndexCodec.js +0 -3
- package/dist/core/tree/detachedFieldIndexCodec.js.map +1 -1
- package/dist/core/tree/sparseTree.js +11 -15
- package/dist/core/tree/sparseTree.js.map +1 -1
- package/dist/domains/schemaBuilder.js +70 -70
- package/dist/domains/schemaBuilder.js.map +1 -1
- package/dist/events/events.js +1 -2
- package/dist/events/events.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/basicChunk.js +1 -14
- package/dist/feature-libraries/chunked-forest/basicChunk.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/chunkTree.js +6 -13
- package/dist/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/chunkedForest.js +2 -9
- package/dist/feature-libraries/chunked-forest/chunkedForest.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkCodecUtilities.js +3 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkCodecUtilities.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts +13 -3
- package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.js +6 -11
- package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.d.ts +3 -3
- package/dist/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.js +2 -5
- package/dist/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js +0 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/codecs.d.ts +2 -1
- package/dist/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/codecs.js +4 -1
- package/dist/feature-libraries/chunked-forest/codec/codecs.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js +13 -25
- package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/nodeShape.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/nodeShape.js +5 -8
- package/dist/feature-libraries/chunked-forest/codec/nodeShape.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/sequenceChunk.js +0 -1
- package/dist/feature-libraries/chunked-forest/sequenceChunk.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/uniformChunk.js +5 -40
- package/dist/feature-libraries/chunked-forest/uniformChunk.js.map +1 -1
- package/dist/feature-libraries/default-schema/defaultEditBuilder.js +0 -2
- package/dist/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
- package/dist/feature-libraries/detachedFieldIndexSummarizer.js +1 -2
- package/dist/feature-libraries/detachedFieldIndexSummarizer.js.map +1 -1
- package/dist/feature-libraries/editableTreeBinder.js +12 -13
- package/dist/feature-libraries/editableTreeBinder.js.map +1 -1
- package/dist/feature-libraries/flex-map-tree/mapTreeNode.js +11 -12
- package/dist/feature-libraries/flex-map-tree/mapTreeNode.js.map +1 -1
- package/dist/feature-libraries/flex-tree/context.js +3 -7
- package/dist/feature-libraries/flex-tree/context.js.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyEntity.js +22 -13
- package/dist/feature-libraries/flex-tree/lazyEntity.js.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyField.js +0 -6
- package/dist/feature-libraries/flex-tree/lazyField.js.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyNode.js +17 -10
- package/dist/feature-libraries/flex-tree/lazyNode.js.map +1 -1
- package/dist/feature-libraries/forest-summary/forestSummarizer.js +1 -6
- package/dist/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
- package/dist/feature-libraries/index.d.ts +1 -1
- package/dist/feature-libraries/index.d.ts.map +1 -1
- package/dist/feature-libraries/index.js +2 -3
- package/dist/feature-libraries/index.js.map +1 -1
- package/dist/feature-libraries/modular-schema/fieldChangeHandler.d.ts +7 -7
- package/dist/feature-libraries/modular-schema/fieldChangeHandler.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/fieldChangeHandler.js +6 -6
- package/dist/feature-libraries/modular-schema/fieldChangeHandler.js.map +1 -1
- package/dist/feature-libraries/modular-schema/fieldKind.js +0 -2
- package/dist/feature-libraries/modular-schema/fieldKind.js.map +1 -1
- package/dist/feature-libraries/modular-schema/fieldKindWithEditor.js +0 -3
- package/dist/feature-libraries/modular-schema/fieldKindWithEditor.js.map +1 -1
- package/dist/feature-libraries/modular-schema/index.d.ts +1 -1
- package/dist/feature-libraries/modular-schema/index.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/index.js +2 -2
- package/dist/feature-libraries/modular-schema/index.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeCodecs.js +2 -0
- package/dist/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts +2 -0
- package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFamily.js +39 -24
- package/dist/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
- package/dist/feature-libraries/node-key/mockNodeKeyManager.js +4 -2
- package/dist/feature-libraries/node-key/mockNodeKeyManager.js.map +1 -1
- package/dist/feature-libraries/node-key/nodeKeyIndex.js +0 -3
- package/dist/feature-libraries/node-key/nodeKeyIndex.js.map +1 -1
- package/dist/feature-libraries/object-forest/objectForest.js +28 -23
- package/dist/feature-libraries/object-forest/objectForest.js.map +1 -1
- package/dist/feature-libraries/optional-field/optionalField.js +5 -3
- package/dist/feature-libraries/optional-field/optionalField.js.map +1 -1
- package/dist/feature-libraries/schema-index/schemaSummarizer.js +1 -5
- package/dist/feature-libraries/schema-index/schemaSummarizer.js.map +1 -1
- package/dist/feature-libraries/schemaBuilderBase.js +3 -14
- package/dist/feature-libraries/schemaBuilderBase.js.map +1 -1
- package/dist/feature-libraries/sequence-field/compose.js +0 -6
- package/dist/feature-libraries/sequence-field/compose.js.map +1 -1
- package/dist/feature-libraries/sequence-field/markListFactory.js +4 -3
- package/dist/feature-libraries/sequence-field/markListFactory.js.map +1 -1
- package/dist/feature-libraries/sequence-field/markQueue.js +2 -4
- package/dist/feature-libraries/sequence-field/markQueue.js.map +1 -1
- package/dist/feature-libraries/sequence-field/rebase.d.ts +2 -2
- package/dist/feature-libraries/sequence-field/rebase.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/rebase.js +20 -20
- package/dist/feature-libraries/sequence-field/rebase.js.map +1 -1
- package/dist/feature-libraries/treeCursorUtils.js +9 -13
- package/dist/feature-libraries/treeCursorUtils.js.map +1 -1
- package/dist/feature-libraries/typed-schema/typedTreeSchema.js +4 -23
- package/dist/feature-libraries/typed-schema/typedTreeSchema.js.map +1 -1
- package/dist/feature-libraries/typed-schema/view.js +0 -7
- package/dist/feature-libraries/typed-schema/view.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -2
- package/dist/index.js.map +1 -1
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/public.d.ts +0 -1
- package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/dist/shared-tree/schematizingTreeView.js +10 -27
- package/dist/shared-tree/schematizingTreeView.js.map +1 -1
- package/dist/shared-tree/sharedTree.d.ts +4 -0
- package/dist/shared-tree/sharedTree.d.ts.map +1 -1
- package/dist/shared-tree/sharedTree.js +13 -10
- package/dist/shared-tree/sharedTree.js.map +1 -1
- package/dist/shared-tree/sharedTreeChangeEnricher.js +11 -14
- package/dist/shared-tree/sharedTreeChangeEnricher.js.map +1 -1
- package/dist/shared-tree/sharedTreeChangeFamily.js +3 -5
- package/dist/shared-tree/sharedTreeChangeFamily.js.map +1 -1
- package/dist/shared-tree/sharedTreeEditBuilder.js +0 -2
- package/dist/shared-tree/sharedTreeEditBuilder.js.map +1 -1
- package/dist/shared-tree/treeCheckout.js +11 -22
- package/dist/shared-tree/treeCheckout.js.map +1 -1
- package/dist/shared-tree/treeView.js +0 -6
- package/dist/shared-tree/treeView.js.map +1 -1
- package/dist/shared-tree-core/branch.d.ts +18 -0
- package/dist/shared-tree-core/branch.d.ts.map +1 -1
- package/dist/shared-tree-core/branch.js +28 -31
- package/dist/shared-tree-core/branch.js.map +1 -1
- package/dist/shared-tree-core/branchCommitEnricher.d.ts +4 -2
- package/dist/shared-tree-core/branchCommitEnricher.d.ts.map +1 -1
- package/dist/shared-tree-core/branchCommitEnricher.js +19 -15
- package/dist/shared-tree-core/branchCommitEnricher.js.map +1 -1
- package/dist/shared-tree-core/defaultResubmitMachine.js +19 -21
- package/dist/shared-tree-core/defaultResubmitMachine.js.map +1 -1
- package/dist/shared-tree-core/editManager.js +37 -53
- package/dist/shared-tree-core/editManager.js.map +1 -1
- package/dist/shared-tree-core/editManagerSummarizer.js +1 -5
- package/dist/shared-tree-core/editManagerSummarizer.js.map +1 -1
- package/dist/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
- package/dist/shared-tree-core/sharedTreeCore.js +16 -24
- package/dist/shared-tree-core/sharedTreeCore.js.map +1 -1
- package/dist/shared-tree-core/transactionEnricher.d.ts +11 -1
- package/dist/shared-tree-core/transactionEnricher.d.ts.map +1 -1
- package/dist/shared-tree-core/transactionEnricher.js +25 -4
- package/dist/shared-tree-core/transactionEnricher.js.map +1 -1
- package/dist/shared-tree-core/transactionStack.js +3 -1
- package/dist/shared-tree-core/transactionStack.js.map +1 -1
- package/dist/simple-tree/arrayNode.js +34 -26
- package/dist/simple-tree/arrayNode.js.map +1 -1
- package/dist/simple-tree/leafNodeSchema.js +2 -4
- package/dist/simple-tree/leafNodeSchema.js.map +1 -1
- package/dist/simple-tree/mapNode.js +5 -5
- package/dist/simple-tree/mapNode.js.map +1 -1
- package/dist/simple-tree/objectNode.js +6 -6
- package/dist/simple-tree/objectNode.js.map +1 -1
- package/dist/simple-tree/schemaFactory.d.ts +18 -5
- package/dist/simple-tree/schemaFactory.d.ts.map +1 -1
- package/dist/simple-tree/schemaFactory.js +65 -53
- package/dist/simple-tree/schemaFactory.js.map +1 -1
- package/dist/simple-tree/schemaTypes.js +3 -12
- package/dist/simple-tree/schemaTypes.js.map +1 -1
- package/dist/simple-tree/tree.d.ts +1 -22
- package/dist/simple-tree/tree.d.ts.map +1 -1
- package/dist/simple-tree/tree.js +0 -21
- package/dist/simple-tree/tree.js.map +1 -1
- package/dist/simple-tree/treeNodeApi.d.ts +13 -4
- package/dist/simple-tree/treeNodeApi.d.ts.map +1 -1
- package/dist/simple-tree/treeNodeApi.js +8 -3
- package/dist/simple-tree/treeNodeApi.js.map +1 -1
- package/dist/simple-tree/types.d.ts +26 -6
- package/dist/simple-tree/types.d.ts.map +1 -1
- package/dist/simple-tree/types.js +79 -54
- package/dist/simple-tree/types.js.map +1 -1
- package/dist/treeFactory.js +10 -9
- package/dist/treeFactory.js.map +1 -1
- package/dist/util/brand.js +0 -1
- package/dist/util/brand.js.map +1 -1
- package/dist/util/nestedMap.js +4 -2
- package/dist/util/nestedMap.js.map +1 -1
- package/dist/util/offsetList.js +4 -2
- package/dist/util/offsetList.js.map +1 -1
- package/dist/util/referenceCounting.js +0 -1
- package/dist/util/referenceCounting.js.map +1 -1
- package/dist/util/stackyIterator.js +2 -3
- package/dist/util/stackyIterator.js.map +1 -1
- package/lib/beta.d.ts +0 -1
- package/lib/codec/codec.js +0 -1
- package/lib/codec/codec.js.map +1 -1
- package/lib/codec/discriminatedUnions.js +0 -1
- package/lib/codec/discriminatedUnions.js.map +1 -1
- package/lib/core/change-family/editBuilder.js +0 -2
- package/lib/core/change-family/editBuilder.js.map +1 -1
- package/lib/core/rebase/revisionTagCodec.js +0 -2
- package/lib/core/rebase/revisionTagCodec.js.map +1 -1
- package/lib/core/schema-stored/schema.js +0 -4
- package/lib/core/schema-stored/schema.js.map +1 -1
- package/lib/core/schema-stored/storedSchemaRepository.js +1 -3
- package/lib/core/schema-stored/storedSchemaRepository.js.map +1 -1
- package/lib/core/schema-view/view.js +0 -2
- package/lib/core/schema-view/view.js.map +1 -1
- package/lib/core/tree/anchorSet.js +46 -51
- package/lib/core/tree/anchorSet.js.map +1 -1
- package/lib/core/tree/detachedFieldIndex.js +2 -8
- package/lib/core/tree/detachedFieldIndex.js.map +1 -1
- package/lib/core/tree/detachedFieldIndexCodec.js +0 -3
- package/lib/core/tree/detachedFieldIndexCodec.js.map +1 -1
- package/lib/core/tree/sparseTree.js +11 -15
- package/lib/core/tree/sparseTree.js.map +1 -1
- package/lib/domains/schemaBuilder.js +70 -70
- package/lib/domains/schemaBuilder.js.map +1 -1
- package/lib/events/events.js +1 -2
- package/lib/events/events.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/basicChunk.js +1 -14
- package/lib/feature-libraries/chunked-forest/basicChunk.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/chunkTree.js +6 -13
- package/lib/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/chunkedForest.js +2 -9
- package/lib/feature-libraries/chunked-forest/chunkedForest.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkCodecUtilities.js +3 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkCodecUtilities.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts +13 -3
- package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.js +6 -11
- package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.d.ts +3 -3
- package/lib/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.js +2 -5
- package/lib/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js +0 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/codecs.d.ts +2 -1
- package/lib/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/codecs.js +4 -1
- package/lib/feature-libraries/chunked-forest/codec/codecs.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js +13 -25
- package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/nodeShape.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/nodeShape.js +5 -8
- package/lib/feature-libraries/chunked-forest/codec/nodeShape.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/sequenceChunk.js +0 -1
- package/lib/feature-libraries/chunked-forest/sequenceChunk.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/uniformChunk.js +5 -40
- package/lib/feature-libraries/chunked-forest/uniformChunk.js.map +1 -1
- package/lib/feature-libraries/default-schema/defaultEditBuilder.js +0 -2
- package/lib/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
- package/lib/feature-libraries/detachedFieldIndexSummarizer.js +1 -2
- package/lib/feature-libraries/detachedFieldIndexSummarizer.js.map +1 -1
- package/lib/feature-libraries/editableTreeBinder.js +12 -13
- package/lib/feature-libraries/editableTreeBinder.js.map +1 -1
- package/lib/feature-libraries/flex-map-tree/mapTreeNode.js +11 -12
- package/lib/feature-libraries/flex-map-tree/mapTreeNode.js.map +1 -1
- package/lib/feature-libraries/flex-tree/context.js +3 -7
- package/lib/feature-libraries/flex-tree/context.js.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyEntity.js +22 -13
- package/lib/feature-libraries/flex-tree/lazyEntity.js.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyField.js +0 -6
- package/lib/feature-libraries/flex-tree/lazyField.js.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyNode.js +17 -10
- package/lib/feature-libraries/flex-tree/lazyNode.js.map +1 -1
- package/lib/feature-libraries/forest-summary/forestSummarizer.js +1 -6
- package/lib/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
- package/lib/feature-libraries/index.d.ts +1 -1
- package/lib/feature-libraries/index.d.ts.map +1 -1
- package/lib/feature-libraries/index.js +1 -1
- package/lib/feature-libraries/index.js.map +1 -1
- package/lib/feature-libraries/modular-schema/fieldChangeHandler.d.ts +7 -7
- package/lib/feature-libraries/modular-schema/fieldChangeHandler.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/fieldChangeHandler.js +5 -5
- package/lib/feature-libraries/modular-schema/fieldChangeHandler.js.map +1 -1
- package/lib/feature-libraries/modular-schema/fieldKind.js +0 -2
- package/lib/feature-libraries/modular-schema/fieldKind.js.map +1 -1
- package/lib/feature-libraries/modular-schema/fieldKindWithEditor.js +0 -3
- package/lib/feature-libraries/modular-schema/fieldKindWithEditor.js.map +1 -1
- package/lib/feature-libraries/modular-schema/index.d.ts +1 -1
- package/lib/feature-libraries/modular-schema/index.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/index.js +1 -1
- package/lib/feature-libraries/modular-schema/index.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeCodecs.js +2 -0
- package/lib/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts +2 -0
- package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFamily.js +40 -25
- package/lib/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
- package/lib/feature-libraries/node-key/mockNodeKeyManager.js +4 -2
- package/lib/feature-libraries/node-key/mockNodeKeyManager.js.map +1 -1
- package/lib/feature-libraries/node-key/nodeKeyIndex.js +0 -3
- package/lib/feature-libraries/node-key/nodeKeyIndex.js.map +1 -1
- package/lib/feature-libraries/object-forest/objectForest.js +28 -23
- package/lib/feature-libraries/object-forest/objectForest.js.map +1 -1
- package/lib/feature-libraries/optional-field/optionalField.js +6 -4
- package/lib/feature-libraries/optional-field/optionalField.js.map +1 -1
- package/lib/feature-libraries/schema-index/schemaSummarizer.js +1 -5
- package/lib/feature-libraries/schema-index/schemaSummarizer.js.map +1 -1
- package/lib/feature-libraries/schemaBuilderBase.js +3 -14
- package/lib/feature-libraries/schemaBuilderBase.js.map +1 -1
- package/lib/feature-libraries/sequence-field/compose.js +0 -6
- package/lib/feature-libraries/sequence-field/compose.js.map +1 -1
- package/lib/feature-libraries/sequence-field/markListFactory.js +4 -3
- package/lib/feature-libraries/sequence-field/markListFactory.js.map +1 -1
- package/lib/feature-libraries/sequence-field/markQueue.js +2 -4
- package/lib/feature-libraries/sequence-field/markQueue.js.map +1 -1
- package/lib/feature-libraries/sequence-field/rebase.d.ts +2 -2
- package/lib/feature-libraries/sequence-field/rebase.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/rebase.js +21 -21
- package/lib/feature-libraries/sequence-field/rebase.js.map +1 -1
- package/lib/feature-libraries/treeCursorUtils.js +9 -13
- package/lib/feature-libraries/treeCursorUtils.js.map +1 -1
- package/lib/feature-libraries/typed-schema/typedTreeSchema.js +4 -23
- package/lib/feature-libraries/typed-schema/typedTreeSchema.js.map +1 -1
- package/lib/feature-libraries/typed-schema/view.js +0 -7
- package/lib/feature-libraries/typed-schema/view.js.map +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/public.d.ts +0 -1
- package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/lib/shared-tree/schematizingTreeView.js +10 -27
- package/lib/shared-tree/schematizingTreeView.js.map +1 -1
- package/lib/shared-tree/sharedTree.d.ts +4 -0
- package/lib/shared-tree/sharedTree.d.ts.map +1 -1
- package/lib/shared-tree/sharedTree.js +13 -10
- package/lib/shared-tree/sharedTree.js.map +1 -1
- package/lib/shared-tree/sharedTreeChangeEnricher.js +11 -14
- package/lib/shared-tree/sharedTreeChangeEnricher.js.map +1 -1
- package/lib/shared-tree/sharedTreeChangeFamily.js +3 -5
- package/lib/shared-tree/sharedTreeChangeFamily.js.map +1 -1
- package/lib/shared-tree/sharedTreeEditBuilder.js +0 -2
- package/lib/shared-tree/sharedTreeEditBuilder.js.map +1 -1
- package/lib/shared-tree/treeCheckout.js +11 -22
- package/lib/shared-tree/treeCheckout.js.map +1 -1
- package/lib/shared-tree/treeView.js +0 -6
- package/lib/shared-tree/treeView.js.map +1 -1
- package/lib/shared-tree-core/branch.d.ts +18 -0
- package/lib/shared-tree-core/branch.d.ts.map +1 -1
- package/lib/shared-tree-core/branch.js +28 -31
- package/lib/shared-tree-core/branch.js.map +1 -1
- package/lib/shared-tree-core/branchCommitEnricher.d.ts +4 -2
- package/lib/shared-tree-core/branchCommitEnricher.d.ts.map +1 -1
- package/lib/shared-tree-core/branchCommitEnricher.js +19 -15
- package/lib/shared-tree-core/branchCommitEnricher.js.map +1 -1
- package/lib/shared-tree-core/defaultResubmitMachine.js +19 -21
- package/lib/shared-tree-core/defaultResubmitMachine.js.map +1 -1
- package/lib/shared-tree-core/editManager.js +37 -53
- package/lib/shared-tree-core/editManager.js.map +1 -1
- package/lib/shared-tree-core/editManagerSummarizer.js +1 -5
- package/lib/shared-tree-core/editManagerSummarizer.js.map +1 -1
- package/lib/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
- package/lib/shared-tree-core/sharedTreeCore.js +16 -24
- package/lib/shared-tree-core/sharedTreeCore.js.map +1 -1
- package/lib/shared-tree-core/transactionEnricher.d.ts +11 -1
- package/lib/shared-tree-core/transactionEnricher.d.ts.map +1 -1
- package/lib/shared-tree-core/transactionEnricher.js +25 -4
- package/lib/shared-tree-core/transactionEnricher.js.map +1 -1
- package/lib/shared-tree-core/transactionStack.js +3 -1
- package/lib/shared-tree-core/transactionStack.js.map +1 -1
- package/lib/simple-tree/arrayNode.js +34 -26
- package/lib/simple-tree/arrayNode.js.map +1 -1
- package/lib/simple-tree/leafNodeSchema.js +2 -4
- package/lib/simple-tree/leafNodeSchema.js.map +1 -1
- package/lib/simple-tree/mapNode.js +5 -5
- package/lib/simple-tree/mapNode.js.map +1 -1
- package/lib/simple-tree/objectNode.js +6 -6
- package/lib/simple-tree/objectNode.js.map +1 -1
- package/lib/simple-tree/schemaFactory.d.ts +18 -5
- package/lib/simple-tree/schemaFactory.d.ts.map +1 -1
- package/lib/simple-tree/schemaFactory.js +65 -53
- package/lib/simple-tree/schemaFactory.js.map +1 -1
- package/lib/simple-tree/schemaTypes.js +3 -12
- package/lib/simple-tree/schemaTypes.js.map +1 -1
- package/lib/simple-tree/tree.d.ts +1 -22
- package/lib/simple-tree/tree.d.ts.map +1 -1
- package/lib/simple-tree/tree.js +0 -21
- package/lib/simple-tree/tree.js.map +1 -1
- package/lib/simple-tree/treeNodeApi.d.ts +13 -4
- package/lib/simple-tree/treeNodeApi.d.ts.map +1 -1
- package/lib/simple-tree/treeNodeApi.js +8 -3
- package/lib/simple-tree/treeNodeApi.js.map +1 -1
- package/lib/simple-tree/types.d.ts +26 -6
- package/lib/simple-tree/types.d.ts.map +1 -1
- package/lib/simple-tree/types.js +78 -54
- package/lib/simple-tree/types.js.map +1 -1
- package/lib/treeFactory.js +10 -9
- package/lib/treeFactory.js.map +1 -1
- package/lib/util/brand.js +0 -1
- package/lib/util/brand.js.map +1 -1
- package/lib/util/nestedMap.js +4 -2
- package/lib/util/nestedMap.js.map +1 -1
- package/lib/util/offsetList.js +4 -2
- package/lib/util/offsetList.js.map +1 -1
- package/lib/util/referenceCounting.js +0 -1
- package/lib/util/referenceCounting.js.map +1 -1
- package/lib/util/stackyIterator.js +2 -3
- package/lib/util/stackyIterator.js.map +1 -1
- package/package.json +27 -24
- package/src/feature-libraries/chunked-forest/codec/chunkDecoding.ts +22 -6
- package/src/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.ts +2 -2
- package/src/feature-libraries/chunked-forest/codec/codecs.ts +6 -2
- package/src/feature-libraries/chunked-forest/codec/nodeShape.ts +8 -3
- package/src/feature-libraries/index.ts +0 -1
- package/src/feature-libraries/modular-schema/fieldChangeHandler.ts +6 -7
- package/src/feature-libraries/modular-schema/index.ts +1 -1
- package/src/feature-libraries/modular-schema/modularChangeCodecs.ts +2 -0
- package/src/feature-libraries/modular-schema/modularChangeFamily.ts +55 -23
- package/src/feature-libraries/optional-field/optionalField.ts +3 -3
- package/src/feature-libraries/sequence-field/rebase.ts +15 -33
- package/src/index.ts +0 -1
- package/src/packageVersion.ts +1 -1
- package/src/shared-tree/schematizingTreeView.ts +0 -2
- package/src/shared-tree/sharedTree.ts +8 -1
- package/src/shared-tree-core/branch.ts +24 -0
- package/src/shared-tree-core/branchCommitEnricher.ts +15 -6
- package/src/shared-tree-core/sharedTreeCore.ts +9 -0
- package/src/shared-tree-core/transactionEnricher.ts +27 -1
- package/src/simple-tree/arrayNode.ts +17 -17
- package/src/simple-tree/schemaFactory.ts +18 -5
- package/src/simple-tree/tree.ts +1 -26
- package/src/simple-tree/treeNodeApi.ts +25 -7
- package/src/simple-tree/types.ts +57 -9
- package/tsdoc.json +4 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fluidframework/tree",
|
|
3
|
-
"version": "2.0.0-dev-rc.5.0.0.
|
|
3
|
+
"version": "2.0.0-dev-rc.5.0.0.272251",
|
|
4
4
|
"description": "Distributed tree",
|
|
5
5
|
"homepage": "https://fluidframework.com",
|
|
6
6
|
"repository": {
|
|
@@ -67,17 +67,17 @@
|
|
|
67
67
|
"temp-directory": "nyc/.nyc_output"
|
|
68
68
|
},
|
|
69
69
|
"dependencies": {
|
|
70
|
-
"@fluid-internal/client-utils": "2.0.0-dev-rc.5.0.0.
|
|
71
|
-
"@fluidframework/container-runtime": "2.0.0-dev-rc.5.0.0.
|
|
72
|
-
"@fluidframework/core-interfaces": "2.0.0-dev-rc.5.0.0.
|
|
73
|
-
"@fluidframework/core-utils": "2.0.0-dev-rc.5.0.0.
|
|
74
|
-
"@fluidframework/datastore-definitions": "2.0.0-dev-rc.5.0.0.
|
|
75
|
-
"@fluidframework/driver-definitions": "2.0.0-dev-rc.5.0.0.
|
|
76
|
-
"@fluidframework/id-compressor": "2.0.0-dev-rc.5.0.0.
|
|
77
|
-
"@fluidframework/runtime-definitions": "2.0.0-dev-rc.5.0.0.
|
|
78
|
-
"@fluidframework/runtime-utils": "2.0.0-dev-rc.5.0.0.
|
|
79
|
-
"@fluidframework/shared-object-base": "2.0.0-dev-rc.5.0.0.
|
|
80
|
-
"@fluidframework/telemetry-utils": "2.0.0-dev-rc.5.0.0.
|
|
70
|
+
"@fluid-internal/client-utils": "2.0.0-dev-rc.5.0.0.272251",
|
|
71
|
+
"@fluidframework/container-runtime": "2.0.0-dev-rc.5.0.0.272251",
|
|
72
|
+
"@fluidframework/core-interfaces": "2.0.0-dev-rc.5.0.0.272251",
|
|
73
|
+
"@fluidframework/core-utils": "2.0.0-dev-rc.5.0.0.272251",
|
|
74
|
+
"@fluidframework/datastore-definitions": "2.0.0-dev-rc.5.0.0.272251",
|
|
75
|
+
"@fluidframework/driver-definitions": "2.0.0-dev-rc.5.0.0.272251",
|
|
76
|
+
"@fluidframework/id-compressor": "2.0.0-dev-rc.5.0.0.272251",
|
|
77
|
+
"@fluidframework/runtime-definitions": "2.0.0-dev-rc.5.0.0.272251",
|
|
78
|
+
"@fluidframework/runtime-utils": "2.0.0-dev-rc.5.0.0.272251",
|
|
79
|
+
"@fluidframework/shared-object-base": "2.0.0-dev-rc.5.0.0.272251",
|
|
80
|
+
"@fluidframework/telemetry-utils": "2.0.0-dev-rc.5.0.0.272251",
|
|
81
81
|
"@sinclair/typebox": "^0.32.29",
|
|
82
82
|
"@tylerbu/sorted-btree-es6": "^1.8.0",
|
|
83
83
|
"@ungap/structured-clone": "^1.2.0",
|
|
@@ -86,19 +86,19 @@
|
|
|
86
86
|
"devDependencies": {
|
|
87
87
|
"@arethetypeswrong/cli": "^0.15.2",
|
|
88
88
|
"@biomejs/biome": "^1.7.3",
|
|
89
|
-
"@fluid-internal/mocha-test-setup": "2.0.0-dev-rc.5.0.0.
|
|
90
|
-
"@fluid-private/stochastic-test-utils": "2.0.0-dev-rc.5.0.0.
|
|
91
|
-
"@fluid-private/test-dds-utils": "2.0.0-dev-rc.5.0.0.
|
|
92
|
-
"@fluid-private/test-drivers": "2.0.0-dev-rc.5.0.0.
|
|
89
|
+
"@fluid-internal/mocha-test-setup": "2.0.0-dev-rc.5.0.0.272251",
|
|
90
|
+
"@fluid-private/stochastic-test-utils": "2.0.0-dev-rc.5.0.0.272251",
|
|
91
|
+
"@fluid-private/test-dds-utils": "2.0.0-dev-rc.5.0.0.272251",
|
|
92
|
+
"@fluid-private/test-drivers": "2.0.0-dev-rc.5.0.0.272251",
|
|
93
93
|
"@fluid-tools/benchmark": "^0.48.0",
|
|
94
94
|
"@fluid-tools/build-cli": "^0.39.0",
|
|
95
95
|
"@fluidframework/build-common": "^2.0.3",
|
|
96
96
|
"@fluidframework/build-tools": "^0.39.0",
|
|
97
|
-
"@fluidframework/container-definitions": "2.0.0-dev-rc.5.0.0.
|
|
98
|
-
"@fluidframework/container-loader": "2.0.0-dev-rc.5.0.0.
|
|
97
|
+
"@fluidframework/container-definitions": "2.0.0-dev-rc.5.0.0.272251",
|
|
98
|
+
"@fluidframework/container-loader": "2.0.0-dev-rc.5.0.0.272251",
|
|
99
99
|
"@fluidframework/eslint-config-fluid": "^5.3.0",
|
|
100
|
-
"@fluidframework/test-runtime-utils": "2.0.0-dev-rc.5.0.0.
|
|
101
|
-
"@fluidframework/test-utils": "2.0.0-dev-rc.5.0.0.
|
|
100
|
+
"@fluidframework/test-runtime-utils": "2.0.0-dev-rc.5.0.0.272251",
|
|
101
|
+
"@fluidframework/test-utils": "2.0.0-dev-rc.5.0.0.272251",
|
|
102
102
|
"@microsoft/api-extractor": "^7.45.1",
|
|
103
103
|
"@types/diff": "^3.5.1",
|
|
104
104
|
"@types/easy-table": "^0.0.32",
|
|
@@ -109,6 +109,7 @@
|
|
|
109
109
|
"ajv": "^8.12.0",
|
|
110
110
|
"ajv-formats": "^3.0.1",
|
|
111
111
|
"c8": "^8.0.1",
|
|
112
|
+
"concurrently": "^8.2.1",
|
|
112
113
|
"copyfiles": "^2.4.1",
|
|
113
114
|
"cross-env": "^7.0.3",
|
|
114
115
|
"dependency-cruiser": "^14.1.0",
|
|
@@ -134,9 +135,6 @@
|
|
|
134
135
|
"...",
|
|
135
136
|
"@fluidframework/id-compressor#build:test:esm"
|
|
136
137
|
],
|
|
137
|
-
"check:release-tags": [
|
|
138
|
-
"build:esnext"
|
|
139
|
-
],
|
|
140
138
|
"ci:build:docs": [
|
|
141
139
|
"build:esnext"
|
|
142
140
|
]
|
|
@@ -163,9 +161,14 @@
|
|
|
163
161
|
"build:test:esm": "tsc --project ./src/test/tsconfig.json",
|
|
164
162
|
"check:are-the-types-wrong": "attw --pack .",
|
|
165
163
|
"check:biome": "biome check . --formatter-enabled=true",
|
|
164
|
+
"check:exports": "concurrently \"npm:check:exports:*\"",
|
|
165
|
+
"check:exports:bundle-release-tags": "api-extractor run --config api-extractor/api-extractor-lint-bundle.json",
|
|
166
|
+
"check:exports:cjs:beta": "api-extractor run --config api-extractor/api-extractor-lint-beta.cjs.json",
|
|
167
|
+
"check:exports:cjs:public": "api-extractor run --config api-extractor/api-extractor-lint-public.cjs.json",
|
|
168
|
+
"check:exports:esm:beta": "api-extractor run --config api-extractor/api-extractor-lint-beta.esm.json",
|
|
169
|
+
"check:exports:esm:public": "api-extractor run --config api-extractor/api-extractor-lint-public.esm.json",
|
|
166
170
|
"check:format": "npm run check:prettier",
|
|
167
171
|
"check:prettier": "prettier --check . --cache --ignore-path ../../../.prettierignore",
|
|
168
|
-
"check:release-tags": "api-extractor run --local --config ./api-extractor-lint.json",
|
|
169
172
|
"ci:build:docs": "api-extractor run",
|
|
170
173
|
"clean": "rimraf --glob dist lib \"*.d.ts\" \"**/*.tsbuildinfo\" \"**/*.build.log\" _api-extractor-temp nyc",
|
|
171
174
|
"depcruise": "depcruise src/ --ignore-known",
|
|
@@ -38,15 +38,25 @@ import {
|
|
|
38
38
|
type EncodedValueShape,
|
|
39
39
|
SpecialField,
|
|
40
40
|
} from "./format.js";
|
|
41
|
-
import type { IIdCompressor,
|
|
41
|
+
import type { IIdCompressor, OpSpaceCompressedId, SessionId } from "@fluidframework/id-compressor";
|
|
42
42
|
|
|
43
|
+
export interface IdDecodingContext {
|
|
44
|
+
idCompressor: IIdCompressor;
|
|
45
|
+
/**
|
|
46
|
+
* The creator of any local Ids to be decoded.
|
|
47
|
+
*/
|
|
48
|
+
originatorId: SessionId;
|
|
49
|
+
}
|
|
43
50
|
/**
|
|
44
51
|
* Decode `chunk` into a TreeChunk.
|
|
45
52
|
*/
|
|
46
|
-
export function decode(
|
|
53
|
+
export function decode(
|
|
54
|
+
chunk: EncodedFieldBatch,
|
|
55
|
+
idDecodingContext: { idCompressor: IIdCompressor; originatorId: SessionId },
|
|
56
|
+
): TreeChunk[] {
|
|
47
57
|
return genericDecode(
|
|
48
58
|
decoderLibrary,
|
|
49
|
-
new DecoderContext(chunk.identifiers, chunk.shapes,
|
|
59
|
+
new DecoderContext(chunk.identifiers, chunk.shapes, idDecodingContext),
|
|
50
60
|
chunk,
|
|
51
61
|
anyDecoder,
|
|
52
62
|
);
|
|
@@ -77,7 +87,7 @@ const decoderLibrary = new DiscriminatedUnionDispatcher<
|
|
|
77
87
|
export function readValue(
|
|
78
88
|
stream: StreamCursor,
|
|
79
89
|
shape: EncodedValueShape,
|
|
80
|
-
|
|
90
|
+
idDecodingContext: IdDecodingContext,
|
|
81
91
|
): Value {
|
|
82
92
|
if (shape === undefined) {
|
|
83
93
|
return readStreamBoolean(stream) ? readStreamValue(stream) : undefined;
|
|
@@ -96,8 +106,14 @@ export function readValue(
|
|
|
96
106
|
typeof streamValue === "number" || typeof streamValue === "string",
|
|
97
107
|
"identifier must be string or number.",
|
|
98
108
|
);
|
|
109
|
+
const idCompressor = idDecodingContext.idCompressor;
|
|
99
110
|
return typeof streamValue === "number"
|
|
100
|
-
? idCompressor.decompress(
|
|
111
|
+
? idCompressor.decompress(
|
|
112
|
+
idCompressor.normalizeToSessionSpace(
|
|
113
|
+
streamValue as OpSpaceCompressedId,
|
|
114
|
+
idDecodingContext.originatorId,
|
|
115
|
+
),
|
|
116
|
+
)
|
|
101
117
|
: streamValue;
|
|
102
118
|
} else {
|
|
103
119
|
// EncodedCounter case:
|
|
@@ -259,7 +275,7 @@ export class TreeDecoder implements ChunkDecoder {
|
|
|
259
275
|
this.type ?? readStreamIdentifier(stream, this.cache);
|
|
260
276
|
// TODO: Consider typechecking against stored schema in here somewhere.
|
|
261
277
|
|
|
262
|
-
const value = readValue(stream, this.shape.value, this.cache.
|
|
278
|
+
const value = readValue(stream, this.shape.value, this.cache.idDecodingContext);
|
|
263
279
|
const fields: Map<FieldKey, TreeChunk[]> = new Map();
|
|
264
280
|
|
|
265
281
|
// Helper to add fields, but with unneeded array chunks removed.
|
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
readStream,
|
|
17
17
|
} from "./chunkCodecUtilities.js";
|
|
18
18
|
import type { EncodedFieldBatchGeneric, IdentifierOrIndex } from "./formatGeneric.js";
|
|
19
|
-
import type {
|
|
19
|
+
import type { IdDecodingContext } from "./chunkDecoding.js";
|
|
20
20
|
|
|
21
21
|
/**
|
|
22
22
|
* General purpose shape based tree decoder which gets its support for specific shapes from the caller.
|
|
@@ -52,7 +52,7 @@ export class DecoderContext<TEncodedShape = unknown> {
|
|
|
52
52
|
public constructor(
|
|
53
53
|
public readonly identifiers: readonly string[],
|
|
54
54
|
public readonly shapes: readonly TEncodedShape[],
|
|
55
|
-
public readonly
|
|
55
|
+
public readonly idDecodingContext: IdDecodingContext,
|
|
56
56
|
) {}
|
|
57
57
|
|
|
58
58
|
public identifier<T extends string & BrandedType<string, string>>(
|
|
@@ -19,11 +19,12 @@ import type { FieldBatch } from "./fieldBatch.js";
|
|
|
19
19
|
import { EncodedFieldBatch, validVersions } from "./format.js";
|
|
20
20
|
import { schemaCompressedEncode } from "./schemaBasedEncoding.js";
|
|
21
21
|
import { uncompressedEncode } from "./uncompressedEncode.js";
|
|
22
|
-
import type { IIdCompressor } from "@fluidframework/id-compressor";
|
|
22
|
+
import type { IIdCompressor, SessionId } from "@fluidframework/id-compressor";
|
|
23
23
|
|
|
24
24
|
export interface FieldBatchEncodingContext {
|
|
25
25
|
readonly encodeType: TreeCompressionStrategy;
|
|
26
26
|
readonly idCompressor: IIdCompressor;
|
|
27
|
+
readonly originatorId: SessionId;
|
|
27
28
|
readonly schema?: SchemaAndPolicy;
|
|
28
29
|
}
|
|
29
30
|
/**
|
|
@@ -81,7 +82,10 @@ export function makeFieldBatchCodec(options: ICodecOptions, writeVersion: number
|
|
|
81
82
|
},
|
|
82
83
|
decode: (data: EncodedFieldBatch, context: FieldBatchEncodingContext): FieldBatch => {
|
|
83
84
|
// TODO: consider checking data is in schema.
|
|
84
|
-
return decode(data,
|
|
85
|
+
return decode(data, {
|
|
86
|
+
idCompressor: context.idCompressor,
|
|
87
|
+
originatorId: context.originatorId,
|
|
88
|
+
}).map((chunk) => chunk.cursor());
|
|
85
89
|
},
|
|
86
90
|
});
|
|
87
91
|
}
|
|
@@ -51,9 +51,14 @@ export class NodeShape extends Shape<EncodedChunkShape> implements NodeEncoder {
|
|
|
51
51
|
}
|
|
52
52
|
|
|
53
53
|
if (this.value === 0) {
|
|
54
|
-
const
|
|
55
|
-
|
|
56
|
-
|
|
54
|
+
const sessionSpaceCompressedId = cache.idCompressor.tryRecompress(
|
|
55
|
+
cursor.value as StableId,
|
|
56
|
+
);
|
|
57
|
+
const opSpaceCompressedId =
|
|
58
|
+
sessionSpaceCompressedId !== undefined
|
|
59
|
+
? cache.idCompressor.normalizeToOpSpace(sessionSpaceCompressedId)
|
|
60
|
+
: cursor.value;
|
|
61
|
+
encodeValue(opSpaceCompressedId, this.value, outputBuffer);
|
|
57
62
|
} else {
|
|
58
63
|
encodeValue(cursor.value, this.value, outputBuffer);
|
|
59
64
|
}
|
|
@@ -124,7 +124,6 @@ export interface FieldChangeRebaser<TChangeset> {
|
|
|
124
124
|
genId: IdAllocator,
|
|
125
125
|
crossFieldManager: CrossFieldManager,
|
|
126
126
|
revisionMetadata: RebaseRevisionMetadata,
|
|
127
|
-
existenceState?: NodeExistenceState,
|
|
128
127
|
): TChangeset;
|
|
129
128
|
|
|
130
129
|
/**
|
|
@@ -189,9 +188,9 @@ export type NodeChangeInverter = (change: NodeId) => NodeId;
|
|
|
189
188
|
/**
|
|
190
189
|
* @internal
|
|
191
190
|
*/
|
|
192
|
-
export enum
|
|
193
|
-
|
|
194
|
-
|
|
191
|
+
export enum NodeAttachState {
|
|
192
|
+
Attached,
|
|
193
|
+
Detached,
|
|
195
194
|
}
|
|
196
195
|
|
|
197
196
|
/**
|
|
@@ -201,10 +200,10 @@ export type NodeChangeRebaser = (
|
|
|
201
200
|
change: NodeId | undefined,
|
|
202
201
|
baseChange: NodeId | undefined,
|
|
203
202
|
/**
|
|
204
|
-
* Whether
|
|
205
|
-
* Defaults to
|
|
203
|
+
* Whether the node is attached to this field in the output context of the base change.
|
|
204
|
+
* Defaults to attached if undefined.
|
|
206
205
|
*/
|
|
207
|
-
state?:
|
|
206
|
+
state?: NodeAttachState,
|
|
208
207
|
) => NodeId | undefined;
|
|
209
208
|
|
|
210
209
|
/**
|
|
@@ -326,6 +326,7 @@ function makeModularChangeCodec(
|
|
|
326
326
|
trees: fieldsCodec.encode(treesToEncode, {
|
|
327
327
|
encodeType: chunkCompressionStrategy,
|
|
328
328
|
schema: context.schema,
|
|
329
|
+
originatorId: context.originatorId,
|
|
329
330
|
idCompressor: context.idCompressor,
|
|
330
331
|
}),
|
|
331
332
|
};
|
|
@@ -341,6 +342,7 @@ function makeModularChangeCodec(
|
|
|
341
342
|
|
|
342
343
|
const chunks = fieldsCodec.decode(encoded.trees, {
|
|
343
344
|
encodeType: chunkCompressionStrategy,
|
|
345
|
+
originatorId: context.originatorId,
|
|
344
346
|
idCompressor: context.idCompressor,
|
|
345
347
|
});
|
|
346
348
|
const getChunk = (index: number): TreeChunk => {
|
|
@@ -77,7 +77,7 @@ import {
|
|
|
77
77
|
} from "./crossFieldQueries.js";
|
|
78
78
|
import {
|
|
79
79
|
type FieldChangeHandler,
|
|
80
|
-
|
|
80
|
+
NodeAttachState,
|
|
81
81
|
type RebaseRevisionMetadata,
|
|
82
82
|
} from "./fieldChangeHandler.js";
|
|
83
83
|
import { type FieldKindWithEditor, withEditor } from "./fieldKindWithEditor.js";
|
|
@@ -639,7 +639,7 @@ export class ModularChangeFamily
|
|
|
639
639
|
);
|
|
640
640
|
|
|
641
641
|
const rebasedNodes: ChangeAtomIdMap<NodeChangeset> = new Map();
|
|
642
|
-
for (const [newId, baseId
|
|
642
|
+
for (const [newId, baseId] of crossFieldTable.nodeIdPairs) {
|
|
643
643
|
const newNodeChange =
|
|
644
644
|
newId !== undefined
|
|
645
645
|
? tryGetFromNestedMap(change.nodeChanges, newId.revision, newId.localId)
|
|
@@ -660,8 +660,6 @@ export class ModularChangeFamily
|
|
|
660
660
|
genId,
|
|
661
661
|
crossFieldTable,
|
|
662
662
|
rebaseMetadata,
|
|
663
|
-
constraintState,
|
|
664
|
-
existenceState,
|
|
665
663
|
);
|
|
666
664
|
|
|
667
665
|
if (rebasedNode !== undefined) {
|
|
@@ -700,6 +698,13 @@ export class ModularChangeFamily
|
|
|
700
698
|
}
|
|
701
699
|
}
|
|
702
700
|
|
|
701
|
+
this.updateConstraintsForFields(
|
|
702
|
+
rebasedFields,
|
|
703
|
+
NodeAttachState.Attached,
|
|
704
|
+
constraintState,
|
|
705
|
+
rebasedNodes,
|
|
706
|
+
);
|
|
707
|
+
|
|
703
708
|
return makeModularChangeset(
|
|
704
709
|
this.pruneFieldMap(rebasedFields, rebasedNodes),
|
|
705
710
|
rebasedNodes,
|
|
@@ -718,7 +723,6 @@ export class ModularChangeFamily
|
|
|
718
723
|
genId: IdAllocator,
|
|
719
724
|
crossFieldTable: RebaseTable,
|
|
720
725
|
revisionMetadata: RebaseRevisionMetadata,
|
|
721
|
-
existenceState: NodeExistenceState = NodeExistenceState.Alive,
|
|
722
726
|
): FieldChangeMap {
|
|
723
727
|
const rebasedFields: FieldChangeMap = new Map();
|
|
724
728
|
|
|
@@ -739,9 +743,9 @@ export class ModularChangeFamily
|
|
|
739
743
|
const rebaseChild = (
|
|
740
744
|
child: NodeId | undefined,
|
|
741
745
|
baseChild: NodeId | undefined,
|
|
742
|
-
|
|
746
|
+
_attachState: NodeAttachState | undefined,
|
|
743
747
|
): ChangeAtomId => {
|
|
744
|
-
crossFieldTable.nodeIdPairs.push([child, baseChild
|
|
748
|
+
crossFieldTable.nodeIdPairs.push([child, baseChild]);
|
|
745
749
|
return (
|
|
746
750
|
child ??
|
|
747
751
|
// The fact `child` is undefined means that the changeset to rebase does not include changes for
|
|
@@ -801,13 +805,13 @@ export class ModularChangeFamily
|
|
|
801
805
|
0x5b6 /* This field should not have any base changes */,
|
|
802
806
|
);
|
|
803
807
|
|
|
804
|
-
crossFieldTable.nodeIdPairs.push([child, undefined
|
|
808
|
+
crossFieldTable.nodeIdPairs.push([child, undefined]);
|
|
809
|
+
|
|
805
810
|
return child;
|
|
806
811
|
},
|
|
807
812
|
genId,
|
|
808
813
|
manager,
|
|
809
814
|
revisionMetadata,
|
|
810
|
-
existenceState,
|
|
811
815
|
);
|
|
812
816
|
const rebasedFieldChange: FieldChange = {
|
|
813
817
|
fieldKind: fieldKind.identifier,
|
|
@@ -826,8 +830,6 @@ export class ModularChangeFamily
|
|
|
826
830
|
genId: IdAllocator,
|
|
827
831
|
crossFieldTable: RebaseTable,
|
|
828
832
|
revisionMetadata: RebaseRevisionMetadata,
|
|
829
|
-
constraintState: ConstraintState,
|
|
830
|
-
existenceState: NodeExistenceState = NodeExistenceState.Alive,
|
|
831
833
|
): NodeChangeset | undefined {
|
|
832
834
|
const key = change ?? over;
|
|
833
835
|
if (key === undefined) {
|
|
@@ -842,7 +844,6 @@ export class ModularChangeFamily
|
|
|
842
844
|
genId,
|
|
843
845
|
crossFieldTable,
|
|
844
846
|
revisionMetadata,
|
|
845
|
-
existenceState,
|
|
846
847
|
);
|
|
847
848
|
|
|
848
849
|
const rebasedChange: NodeChangeset = {};
|
|
@@ -855,21 +856,52 @@ export class ModularChangeFamily
|
|
|
855
856
|
rebasedChange.nodeExistsConstraint = change.nodeExistsConstraint;
|
|
856
857
|
}
|
|
857
858
|
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
859
|
+
crossFieldTable.rebasedNodeCache.set(key, rebasedChange);
|
|
860
|
+
return rebasedChange;
|
|
861
|
+
}
|
|
862
|
+
|
|
863
|
+
private updateConstraintsForFields(
|
|
864
|
+
fields: FieldChangeMap,
|
|
865
|
+
parentAttachState: NodeAttachState,
|
|
866
|
+
constraintState: ConstraintState,
|
|
867
|
+
nodes: ChangeAtomIdMap<NodeChangeset>,
|
|
868
|
+
): void {
|
|
869
|
+
for (const field of fields.values()) {
|
|
870
|
+
const handler = getChangeHandler(this.fieldKinds, field.fieldKind);
|
|
871
|
+
for (const [nodeId, index] of handler.getNestedChanges(field.change)) {
|
|
872
|
+
const isDetached = index === undefined;
|
|
873
|
+
const attachState =
|
|
874
|
+
parentAttachState === NodeAttachState.Detached || isDetached
|
|
875
|
+
? NodeAttachState.Detached
|
|
876
|
+
: NodeAttachState.Attached;
|
|
877
|
+
this.updateConstraintsForNode(nodeId, attachState, constraintState, nodes);
|
|
878
|
+
}
|
|
879
|
+
}
|
|
880
|
+
}
|
|
861
881
|
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
882
|
+
private updateConstraintsForNode(
|
|
883
|
+
nodeId: NodeId,
|
|
884
|
+
attachState: NodeAttachState,
|
|
885
|
+
constraintState: ConstraintState,
|
|
886
|
+
nodes: ChangeAtomIdMap<NodeChangeset>,
|
|
887
|
+
): void {
|
|
888
|
+
const node =
|
|
889
|
+
tryGetFromNestedMap(nodes, nodeId.revision, nodeId.localId) ?? fail("Unknown node ID");
|
|
890
|
+
|
|
891
|
+
if (node.nodeExistsConstraint !== undefined) {
|
|
892
|
+
const isNowViolated = attachState === NodeAttachState.Detached;
|
|
893
|
+
if (node.nodeExistsConstraint.violated !== isNowViolated) {
|
|
894
|
+
node.nodeExistsConstraint = {
|
|
895
|
+
...node.nodeExistsConstraint,
|
|
896
|
+
violated: isNowViolated,
|
|
866
897
|
};
|
|
867
|
-
constraintState.violationCount +=
|
|
898
|
+
constraintState.violationCount += isNowViolated ? 1 : -1;
|
|
868
899
|
}
|
|
869
900
|
}
|
|
870
901
|
|
|
871
|
-
|
|
872
|
-
|
|
902
|
+
if (node.fieldChanges !== undefined) {
|
|
903
|
+
this.updateConstraintsForFields(node.fieldChanges, attachState, constraintState, nodes);
|
|
904
|
+
}
|
|
873
905
|
}
|
|
874
906
|
|
|
875
907
|
private pruneFieldMap(
|
|
@@ -1475,7 +1507,7 @@ interface RebaseTable extends CrossFieldTable<FieldChange> {
|
|
|
1475
1507
|
/**
|
|
1476
1508
|
* List of (newId, baseId) pairs encountered so far.
|
|
1477
1509
|
*/
|
|
1478
|
-
nodeIdPairs: [NodeId | undefined, NodeId | undefined
|
|
1510
|
+
nodeIdPairs: [NodeId | undefined, NodeId | undefined][];
|
|
1479
1511
|
}
|
|
1480
1512
|
|
|
1481
1513
|
interface RebaseFieldContext {
|
|
@@ -35,7 +35,7 @@ import {
|
|
|
35
35
|
type NodeChangeComposer,
|
|
36
36
|
type NodeChangePruner,
|
|
37
37
|
type NodeChangeRebaser,
|
|
38
|
-
|
|
38
|
+
NodeAttachState,
|
|
39
39
|
type NodeId,
|
|
40
40
|
type RelevantRemovedRootsFromChild,
|
|
41
41
|
type ToDelta,
|
|
@@ -373,7 +373,7 @@ export const optionalChangeRebaser: FieldChangeRebaser<OptionalChangeset> = {
|
|
|
373
373
|
const rebasedChildChange = rebaseChild(
|
|
374
374
|
childChange,
|
|
375
375
|
overChildChange,
|
|
376
|
-
rebasedId === "self" ?
|
|
376
|
+
rebasedId === "self" ? NodeAttachState.Attached : NodeAttachState.Detached,
|
|
377
377
|
);
|
|
378
378
|
if (rebasedChildChange !== undefined) {
|
|
379
379
|
rebasedChildChanges.push([rebasedId, rebasedChildChange]);
|
|
@@ -385,7 +385,7 @@ export const optionalChangeRebaser: FieldChangeRebaser<OptionalChangeset> = {
|
|
|
385
385
|
const rebasedChildChange = rebaseChild(
|
|
386
386
|
undefined,
|
|
387
387
|
overChildChange,
|
|
388
|
-
rebasedId === "self" ?
|
|
388
|
+
rebasedId === "self" ? NodeAttachState.Attached : NodeAttachState.Detached,
|
|
389
389
|
);
|
|
390
390
|
if (rebasedChildChange !== undefined) {
|
|
391
391
|
rebasedChildChanges.push([rebasedId, rebasedChildChange]);
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
type CrossFieldManager,
|
|
12
12
|
CrossFieldTarget,
|
|
13
13
|
type NodeChangeRebaser,
|
|
14
|
-
|
|
14
|
+
NodeAttachState,
|
|
15
15
|
type NodeId,
|
|
16
16
|
type RebaseRevisionMetadata,
|
|
17
17
|
} from "../modular-schema/index.js";
|
|
@@ -74,7 +74,6 @@ export function rebase(
|
|
|
74
74
|
genId: IdAllocator,
|
|
75
75
|
manager: CrossFieldManager,
|
|
76
76
|
revisionMetadata: RebaseRevisionMetadata,
|
|
77
|
-
nodeExistenceState: NodeExistenceState = NodeExistenceState.Alive,
|
|
78
77
|
): Changeset {
|
|
79
78
|
return rebaseMarkList(
|
|
80
79
|
change,
|
|
@@ -83,7 +82,6 @@ export function rebase(
|
|
|
83
82
|
rebaseChild,
|
|
84
83
|
genId,
|
|
85
84
|
manager as MoveEffectTable,
|
|
86
|
-
nodeExistenceState,
|
|
87
85
|
);
|
|
88
86
|
}
|
|
89
87
|
|
|
@@ -94,20 +92,13 @@ function rebaseMarkList(
|
|
|
94
92
|
rebaseChild: NodeChangeRebaser,
|
|
95
93
|
genId: IdAllocator,
|
|
96
94
|
moveEffects: CrossFieldManager<MoveEffect>,
|
|
97
|
-
nodeExistenceState: NodeExistenceState,
|
|
98
95
|
): MarkList {
|
|
99
96
|
const factory = new MarkListFactory();
|
|
100
97
|
const queue = new RebaseQueue(baseMarkList, currMarkList, metadata, moveEffects);
|
|
101
98
|
|
|
102
99
|
while (!queue.isEmpty()) {
|
|
103
100
|
const { baseMark, newMark: currMark } = queue.pop();
|
|
104
|
-
const rebasedMark = rebaseMark(
|
|
105
|
-
currMark,
|
|
106
|
-
baseMark,
|
|
107
|
-
rebaseChild,
|
|
108
|
-
moveEffects,
|
|
109
|
-
nodeExistenceState,
|
|
110
|
-
);
|
|
101
|
+
const rebasedMark = rebaseMark(currMark, baseMark, rebaseChild, moveEffects);
|
|
111
102
|
factory.push(rebasedMark);
|
|
112
103
|
}
|
|
113
104
|
|
|
@@ -272,7 +263,6 @@ function rebaseMark(
|
|
|
272
263
|
baseMark: Mark,
|
|
273
264
|
rebaseChild: NodeChangeRebaser,
|
|
274
265
|
moveEffects: MoveEffectTable,
|
|
275
|
-
nodeExistenceState: NodeExistenceState,
|
|
276
266
|
): Mark {
|
|
277
267
|
const rebasedMark = rebaseNodeChange(cloneMark(currMark), baseMark, rebaseChild);
|
|
278
268
|
const movedNodeChanges = getMovedChangesFromBaseMark(moveEffects, baseMark);
|
|
@@ -284,15 +274,10 @@ function rebaseMark(
|
|
|
284
274
|
rebasedMark.changes = movedNodeChanges;
|
|
285
275
|
}
|
|
286
276
|
|
|
287
|
-
return rebaseMarkIgnoreChild(rebasedMark, baseMark, moveEffects
|
|
277
|
+
return rebaseMarkIgnoreChild(rebasedMark, baseMark, moveEffects);
|
|
288
278
|
}
|
|
289
279
|
|
|
290
|
-
function rebaseMarkIgnoreChild(
|
|
291
|
-
currMark: Mark,
|
|
292
|
-
baseMark: Mark,
|
|
293
|
-
moveEffects: MoveEffectTable,
|
|
294
|
-
nodeExistenceState: NodeExistenceState,
|
|
295
|
-
): Mark {
|
|
280
|
+
function rebaseMarkIgnoreChild(currMark: Mark, baseMark: Mark, moveEffects: MoveEffectTable): Mark {
|
|
296
281
|
let rebasedMark: Mark;
|
|
297
282
|
if (isDetach(baseMark)) {
|
|
298
283
|
if (baseMark.cellId !== undefined) {
|
|
@@ -341,13 +326,11 @@ function rebaseMarkIgnoreChild(
|
|
|
341
326
|
currMark,
|
|
342
327
|
{ ...baseMark.attach, cellId: cloneCellId(baseMark.cellId), count: baseMark.count },
|
|
343
328
|
moveEffects,
|
|
344
|
-
nodeExistenceState,
|
|
345
329
|
);
|
|
346
330
|
rebasedMark = rebaseMarkIgnoreChild(
|
|
347
331
|
halfRebasedMark,
|
|
348
332
|
{ ...baseMark.detach, count: baseMark.count },
|
|
349
333
|
moveEffects,
|
|
350
|
-
nodeExistenceState,
|
|
351
334
|
);
|
|
352
335
|
} else {
|
|
353
336
|
rebasedMark = currMark;
|
|
@@ -465,19 +448,18 @@ function rebaseNodeChange(currMark: Mark, baseMark: Mark, nodeRebaser: NodeChang
|
|
|
465
448
|
return currMark;
|
|
466
449
|
}
|
|
467
450
|
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
nodeRebaser(currChange, baseChange, NodeExistenceState.Dead),
|
|
472
|
-
);
|
|
473
|
-
} else if (markFillsCells(baseMark) && !isMoveMark(baseMark)) {
|
|
474
|
-
return withNodeChange(
|
|
475
|
-
currMark,
|
|
476
|
-
nodeRebaser(currChange, baseChange, NodeExistenceState.Alive),
|
|
477
|
-
);
|
|
478
|
-
}
|
|
451
|
+
const nodeState = nodeStateAfterMark(baseMark);
|
|
452
|
+
return withNodeChange(currMark, nodeRebaser(currChange, baseChange, nodeState));
|
|
453
|
+
}
|
|
479
454
|
|
|
480
|
-
|
|
455
|
+
function nodeStateAfterMark(mark: Mark): NodeAttachState {
|
|
456
|
+
if (markEmptiesCells(mark)) {
|
|
457
|
+
return NodeAttachState.Detached;
|
|
458
|
+
} else if (markFillsCells(mark)) {
|
|
459
|
+
return NodeAttachState.Attached;
|
|
460
|
+
} else {
|
|
461
|
+
return mark.cellId === undefined ? NodeAttachState.Attached : NodeAttachState.Detached;
|
|
462
|
+
}
|
|
481
463
|
}
|
|
482
464
|
|
|
483
465
|
function makeDetachedMark(mark: Mark, cellId: ChangeAtomId): Mark {
|
package/src/index.ts
CHANGED
package/src/packageVersion.ts
CHANGED
|
@@ -142,6 +142,7 @@ interface ExplicitCodecVersions extends ExplicitCoreCodecVersions {
|
|
|
142
142
|
const formatVersionToTopLevelCodecVersions = new Map<number, ExplicitCodecVersions>([
|
|
143
143
|
[1, { forest: 1, schema: 1, detachedFieldIndex: 1, editManager: 1, message: 1, fieldBatch: 1 }],
|
|
144
144
|
[2, { forest: 1, schema: 1, detachedFieldIndex: 1, editManager: 2, message: 2, fieldBatch: 1 }],
|
|
145
|
+
[3, { forest: 1, schema: 1, detachedFieldIndex: 1, editManager: 3, message: 3, fieldBatch: 1 }],
|
|
145
146
|
]);
|
|
146
147
|
|
|
147
148
|
function getCodecVersions(formatVersion: number): ExplicitCodecVersions {
|
|
@@ -203,6 +204,7 @@ export class SharedTree
|
|
|
203
204
|
policy: defaultSchemaPolicy,
|
|
204
205
|
},
|
|
205
206
|
encodeType: options.treeEncodeType,
|
|
207
|
+
originatorId: runtime.idCompressor.localSessionId,
|
|
206
208
|
idCompressor: runtime.idCompressor,
|
|
207
209
|
};
|
|
208
210
|
const forestSummarizer = new ForestSummarizer(
|
|
@@ -361,6 +363,11 @@ export const SharedTreeFormatVersion = {
|
|
|
361
363
|
* Requires \@fluidframework/tree \>= 2.0.0.
|
|
362
364
|
*/
|
|
363
365
|
v2: 2,
|
|
366
|
+
|
|
367
|
+
/**
|
|
368
|
+
* Requires \@fluidframework/tree \>= 2.0.0.
|
|
369
|
+
*/
|
|
370
|
+
v3: 3,
|
|
364
371
|
} as const;
|
|
365
372
|
|
|
366
373
|
/**
|
|
@@ -427,7 +434,7 @@ export const defaultSharedTreeOptions: Required<SharedTreeOptions> = {
|
|
|
427
434
|
jsonValidator: noopValidator,
|
|
428
435
|
forest: ForestType.Reference,
|
|
429
436
|
treeEncodeType: TreeCompressionStrategy.Compressed,
|
|
430
|
-
formatVersion: SharedTreeFormatVersion.
|
|
437
|
+
formatVersion: SharedTreeFormatVersion.v3,
|
|
431
438
|
};
|
|
432
439
|
|
|
433
440
|
/**
|