@fluidframework/tree 2.61.0 → 2.62.0
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/CHANGELOG.md +162 -0
- package/api-report/tree.alpha.api.md +26 -21
- package/api-report/tree.beta.api.md +15 -0
- package/api-report/tree.legacy.beta.api.md +18 -0
- package/dist/alpha.d.ts +8 -8
- package/dist/api.d.ts +17 -0
- package/dist/api.d.ts.map +1 -0
- package/dist/api.js +24 -0
- package/dist/api.js.map +1 -0
- package/dist/beta.d.ts +5 -0
- package/dist/codec/codec.d.ts +3 -5
- package/dist/codec/codec.d.ts.map +1 -1
- package/dist/codec/codec.js +9 -2
- package/dist/codec/codec.js.map +1 -1
- package/dist/codec/index.d.ts +0 -1
- package/dist/codec/index.d.ts.map +1 -1
- package/dist/codec/index.js +1 -3
- package/dist/codec/index.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 +2 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/rebase/index.d.ts +1 -1
- package/dist/core/rebase/index.d.ts.map +1 -1
- package/dist/core/rebase/index.js +2 -1
- package/dist/core/rebase/index.js.map +1 -1
- package/dist/core/rebase/utils.d.ts +10 -0
- package/dist/core/rebase/utils.d.ts.map +1 -1
- package/dist/core/rebase/utils.js +20 -1
- package/dist/core/rebase/utils.js.map +1 -1
- package/dist/core/tree/detachedFieldIndex.js +1 -1
- package/dist/core/tree/detachedFieldIndex.js.map +1 -1
- package/dist/external-utilities/index.d.ts +1 -1
- package/dist/external-utilities/index.d.ts.map +1 -1
- package/dist/external-utilities/index.js +1 -2
- package/dist/external-utilities/index.js.map +1 -1
- package/dist/external-utilities/typeboxValidator.d.ts +0 -13
- package/dist/external-utilities/typeboxValidator.d.ts.map +1 -1
- package/dist/external-utilities/typeboxValidator.js +3 -5
- package/dist/external-utilities/typeboxValidator.js.map +1 -1
- package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts +2 -0
- package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
- package/dist/feature-libraries/flex-tree/index.d.ts +1 -0
- package/dist/feature-libraries/flex-tree/index.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/index.js +4 -1
- package/dist/feature-libraries/flex-tree/index.js.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyNode.js +15 -8
- package/dist/feature-libraries/flex-tree/lazyNode.js.map +1 -1
- package/dist/feature-libraries/flex-tree/observer.d.ts +32 -0
- package/dist/feature-libraries/flex-tree/observer.d.ts.map +1 -0
- package/dist/feature-libraries/flex-tree/observer.js +33 -0
- package/dist/feature-libraries/flex-tree/observer.js.map +1 -0
- 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 +3 -1
- package/dist/feature-libraries/index.js.map +1 -1
- package/dist/index.d.ts +5 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -8
- package/dist/index.js.map +1 -1
- package/dist/legacy.d.ts +7 -1
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/shared-tree/index.d.ts +2 -2
- package/dist/shared-tree/index.d.ts.map +1 -1
- package/dist/shared-tree/index.js.map +1 -1
- package/dist/shared-tree/schematizingTreeView.js +2 -2
- package/dist/shared-tree/schematizingTreeView.js.map +1 -1
- package/dist/shared-tree/sharedTree.d.ts +21 -6
- package/dist/shared-tree/sharedTree.d.ts.map +1 -1
- package/dist/shared-tree/sharedTree.js +76 -37
- package/dist/shared-tree/sharedTree.js.map +1 -1
- package/dist/shared-tree/treeAlpha.d.ts +114 -1
- package/dist/shared-tree/treeAlpha.d.ts.map +1 -1
- package/dist/shared-tree/treeAlpha.js +140 -1
- package/dist/shared-tree/treeAlpha.js.map +1 -1
- package/dist/shared-tree/treeCheckout.d.ts +13 -7
- package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
- package/dist/shared-tree/treeCheckout.js +115 -85
- package/dist/shared-tree/treeCheckout.js.map +1 -1
- package/dist/shared-tree-core/branch.d.ts +3 -0
- package/dist/shared-tree-core/branch.d.ts.map +1 -1
- package/dist/shared-tree-core/branch.js.map +1 -1
- package/dist/shared-tree-core/branchIdCodec.d.ts +11 -0
- package/dist/shared-tree-core/branchIdCodec.d.ts.map +1 -0
- package/dist/shared-tree-core/branchIdCodec.js +18 -0
- package/dist/shared-tree-core/branchIdCodec.js.map +1 -0
- package/dist/shared-tree-core/editManager.d.ts +39 -64
- package/dist/shared-tree-core/editManager.d.ts.map +1 -1
- package/dist/shared-tree-core/editManager.js +455 -295
- package/dist/shared-tree-core/editManager.js.map +1 -1
- package/dist/shared-tree-core/editManagerCodecs.d.ts +1 -1
- package/dist/shared-tree-core/editManagerCodecs.d.ts.map +1 -1
- package/dist/shared-tree-core/editManagerCodecs.js +7 -96
- package/dist/shared-tree-core/editManagerCodecs.js.map +1 -1
- package/dist/shared-tree-core/editManagerCodecsCommons.d.ts +17 -0
- package/dist/shared-tree-core/editManagerCodecsCommons.d.ts.map +1 -0
- package/dist/shared-tree-core/editManagerCodecsCommons.js +139 -0
- package/dist/shared-tree-core/editManagerCodecsCommons.js.map +1 -0
- package/dist/shared-tree-core/editManagerCodecsV1toV4.d.ts +16 -0
- package/dist/shared-tree-core/editManagerCodecsV1toV4.d.ts.map +1 -0
- package/dist/shared-tree-core/editManagerCodecsV1toV4.js +39 -0
- package/dist/shared-tree-core/editManagerCodecsV1toV4.js.map +1 -0
- package/dist/shared-tree-core/editManagerCodecsV5.d.ts +16 -0
- package/dist/shared-tree-core/editManagerCodecsV5.d.ts.map +1 -0
- package/dist/shared-tree-core/editManagerCodecsV5.js +58 -0
- package/dist/shared-tree-core/editManagerCodecsV5.js.map +1 -0
- package/dist/shared-tree-core/{editManagerFormat.d.ts → editManagerFormatCommons.d.ts} +31 -7
- package/dist/shared-tree-core/editManagerFormatCommons.d.ts.map +1 -0
- package/dist/shared-tree-core/{editManagerFormat.js → editManagerFormatCommons.js} +13 -12
- package/dist/shared-tree-core/editManagerFormatCommons.js.map +1 -0
- package/dist/shared-tree-core/editManagerFormatV1toV4.d.ts +31 -0
- package/dist/shared-tree-core/editManagerFormatV1toV4.d.ts.map +1 -0
- package/dist/shared-tree-core/editManagerFormatV1toV4.js +24 -0
- package/dist/shared-tree-core/editManagerFormatV1toV4.js.map +1 -0
- package/dist/shared-tree-core/editManagerFormatV5.d.ts +62 -0
- package/dist/shared-tree-core/editManagerFormatV5.d.ts.map +1 -0
- package/dist/shared-tree-core/editManagerFormatV5.js +20 -0
- package/dist/shared-tree-core/editManagerFormatV5.js.map +1 -0
- package/dist/shared-tree-core/index.d.ts +3 -3
- package/dist/shared-tree-core/index.d.ts.map +1 -1
- package/dist/shared-tree-core/index.js.map +1 -1
- package/dist/shared-tree-core/messageCodecV1ToV4.d.ts +11 -0
- package/dist/shared-tree-core/messageCodecV1ToV4.d.ts.map +1 -0
- package/dist/shared-tree-core/messageCodecV1ToV4.js +59 -0
- package/dist/shared-tree-core/messageCodecV1ToV4.js.map +1 -0
- package/dist/shared-tree-core/messageCodecV5.d.ts +11 -0
- package/dist/shared-tree-core/messageCodecV5.d.ts.map +1 -0
- package/dist/shared-tree-core/messageCodecV5.js +78 -0
- package/dist/shared-tree-core/messageCodecV5.js.map +1 -0
- package/dist/shared-tree-core/messageCodecs.d.ts.map +1 -1
- package/dist/shared-tree-core/messageCodecs.js +16 -47
- package/dist/shared-tree-core/messageCodecs.js.map +1 -1
- package/dist/shared-tree-core/{messageFormat.d.ts → messageFormatV1ToV4.d.ts} +1 -1
- package/dist/shared-tree-core/messageFormatV1ToV4.d.ts.map +1 -0
- package/dist/shared-tree-core/{messageFormat.js → messageFormatV1ToV4.js} +1 -1
- package/dist/shared-tree-core/messageFormatV1ToV4.js.map +1 -0
- package/dist/shared-tree-core/messageFormatV5.d.ts +42 -0
- package/dist/shared-tree-core/messageFormatV5.d.ts.map +1 -0
- package/dist/shared-tree-core/messageFormatV5.js +20 -0
- package/dist/shared-tree-core/messageFormatV5.js.map +1 -0
- package/dist/shared-tree-core/messageTypes.d.ts +12 -2
- package/dist/shared-tree-core/messageTypes.d.ts.map +1 -1
- package/dist/shared-tree-core/messageTypes.js.map +1 -1
- package/dist/shared-tree-core/sequenceIdUtils.d.ts +1 -1
- package/dist/shared-tree-core/sequenceIdUtils.d.ts.map +1 -1
- package/dist/shared-tree-core/sequenceIdUtils.js.map +1 -1
- package/dist/shared-tree-core/sharedTreeCore.d.ts +19 -5
- package/dist/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
- package/dist/shared-tree-core/sharedTreeCore.js +182 -58
- package/dist/shared-tree-core/sharedTreeCore.js.map +1 -1
- package/dist/simple-tree/api/tree.d.ts +17 -0
- package/dist/simple-tree/api/tree.d.ts.map +1 -1
- package/dist/simple-tree/api/tree.js +2 -0
- package/dist/simple-tree/api/tree.js.map +1 -1
- package/dist/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -1
- package/dist/simple-tree/core/unhydratedFlexTree.js +7 -1
- package/dist/simple-tree/core/unhydratedFlexTree.js.map +1 -1
- package/dist/treeFactory.d.ts +38 -9
- package/dist/treeFactory.d.ts.map +1 -1
- package/dist/treeFactory.js +44 -9
- package/dist/treeFactory.js.map +1 -1
- package/lib/alpha.d.ts +8 -8
- package/lib/api.d.ts +17 -0
- package/lib/api.d.ts.map +1 -0
- package/lib/api.js +22 -0
- package/lib/api.js.map +1 -0
- package/lib/beta.d.ts +5 -0
- package/lib/codec/codec.d.ts +3 -5
- package/lib/codec/codec.d.ts.map +1 -1
- package/lib/codec/codec.js +8 -1
- package/lib/codec/codec.js.map +1 -1
- package/lib/codec/index.d.ts +0 -1
- package/lib/codec/index.d.ts.map +1 -1
- package/lib/codec/index.js +0 -1
- package/lib/codec/index.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/rebase/index.d.ts +1 -1
- package/lib/core/rebase/index.d.ts.map +1 -1
- package/lib/core/rebase/index.js +1 -1
- package/lib/core/rebase/index.js.map +1 -1
- package/lib/core/rebase/utils.d.ts +10 -0
- package/lib/core/rebase/utils.d.ts.map +1 -1
- package/lib/core/rebase/utils.js +18 -0
- package/lib/core/rebase/utils.js.map +1 -1
- package/lib/core/tree/detachedFieldIndex.js +2 -2
- package/lib/core/tree/detachedFieldIndex.js.map +1 -1
- package/lib/external-utilities/index.d.ts +1 -1
- package/lib/external-utilities/index.d.ts.map +1 -1
- package/lib/external-utilities/index.js +1 -1
- package/lib/external-utilities/index.js.map +1 -1
- package/lib/external-utilities/typeboxValidator.d.ts +0 -13
- package/lib/external-utilities/typeboxValidator.d.ts.map +1 -1
- package/lib/external-utilities/typeboxValidator.js +1 -3
- package/lib/external-utilities/typeboxValidator.js.map +1 -1
- package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts +2 -0
- package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
- package/lib/feature-libraries/flex-tree/index.d.ts +1 -0
- package/lib/feature-libraries/flex-tree/index.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/index.js +1 -0
- package/lib/feature-libraries/flex-tree/index.js.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyNode.js +15 -8
- package/lib/feature-libraries/flex-tree/lazyNode.js.map +1 -1
- package/lib/feature-libraries/flex-tree/observer.d.ts +32 -0
- package/lib/feature-libraries/flex-tree/observer.d.ts.map +1 -0
- package/lib/feature-libraries/flex-tree/observer.js +40 -0
- package/lib/feature-libraries/flex-tree/observer.js.map +1 -0
- 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/index.d.ts +5 -5
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +3 -3
- package/lib/index.js.map +1 -1
- package/lib/legacy.d.ts +7 -1
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/shared-tree/index.d.ts +2 -2
- package/lib/shared-tree/index.d.ts.map +1 -1
- package/lib/shared-tree/index.js.map +1 -1
- package/lib/shared-tree/schematizingTreeView.js +2 -2
- package/lib/shared-tree/schematizingTreeView.js.map +1 -1
- package/lib/shared-tree/sharedTree.d.ts +21 -6
- package/lib/shared-tree/sharedTree.d.ts.map +1 -1
- package/lib/shared-tree/sharedTree.js +78 -39
- package/lib/shared-tree/sharedTree.js.map +1 -1
- package/lib/shared-tree/treeAlpha.d.ts +114 -1
- package/lib/shared-tree/treeAlpha.d.ts.map +1 -1
- package/lib/shared-tree/treeAlpha.js +143 -4
- package/lib/shared-tree/treeAlpha.js.map +1 -1
- package/lib/shared-tree/treeCheckout.d.ts +13 -7
- package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
- package/lib/shared-tree/treeCheckout.js +117 -87
- package/lib/shared-tree/treeCheckout.js.map +1 -1
- package/lib/shared-tree-core/branch.d.ts +3 -0
- package/lib/shared-tree-core/branch.d.ts.map +1 -1
- package/lib/shared-tree-core/branch.js.map +1 -1
- package/lib/shared-tree-core/branchIdCodec.d.ts +11 -0
- package/lib/shared-tree-core/branchIdCodec.d.ts.map +1 -0
- package/lib/shared-tree-core/branchIdCodec.js +13 -0
- package/lib/shared-tree-core/branchIdCodec.js.map +1 -0
- package/lib/shared-tree-core/editManager.d.ts +39 -64
- package/lib/shared-tree-core/editManager.d.ts.map +1 -1
- package/lib/shared-tree-core/editManager.js +455 -295
- package/lib/shared-tree-core/editManager.js.map +1 -1
- package/lib/shared-tree-core/editManagerCodecs.d.ts +1 -1
- package/lib/shared-tree-core/editManagerCodecs.d.ts.map +1 -1
- package/lib/shared-tree-core/editManagerCodecs.js +4 -93
- package/lib/shared-tree-core/editManagerCodecs.js.map +1 -1
- package/lib/shared-tree-core/editManagerCodecsCommons.d.ts +17 -0
- package/lib/shared-tree-core/editManagerCodecsCommons.d.ts.map +1 -0
- package/lib/shared-tree-core/editManagerCodecsCommons.js +134 -0
- package/lib/shared-tree-core/editManagerCodecsCommons.js.map +1 -0
- package/lib/shared-tree-core/editManagerCodecsV1toV4.d.ts +16 -0
- package/lib/shared-tree-core/editManagerCodecsV1toV4.d.ts.map +1 -0
- package/lib/shared-tree-core/editManagerCodecsV1toV4.js +35 -0
- package/lib/shared-tree-core/editManagerCodecsV1toV4.js.map +1 -0
- package/lib/shared-tree-core/editManagerCodecsV5.d.ts +16 -0
- package/lib/shared-tree-core/editManagerCodecsV5.d.ts.map +1 -0
- package/lib/shared-tree-core/editManagerCodecsV5.js +54 -0
- package/lib/shared-tree-core/editManagerCodecsV5.js.map +1 -0
- package/lib/shared-tree-core/{editManagerFormat.d.ts → editManagerFormatCommons.d.ts} +31 -7
- package/lib/shared-tree-core/editManagerFormatCommons.d.ts.map +1 -0
- package/lib/shared-tree-core/{editManagerFormat.js → editManagerFormatCommons.js} +10 -11
- package/lib/shared-tree-core/editManagerFormatCommons.js.map +1 -0
- package/lib/shared-tree-core/editManagerFormatV1toV4.d.ts +31 -0
- package/lib/shared-tree-core/editManagerFormatV1toV4.d.ts.map +1 -0
- package/lib/shared-tree-core/editManagerFormatV1toV4.js +20 -0
- package/lib/shared-tree-core/editManagerFormatV1toV4.js.map +1 -0
- package/lib/shared-tree-core/editManagerFormatV5.d.ts +62 -0
- package/lib/shared-tree-core/editManagerFormatV5.d.ts.map +1 -0
- package/lib/shared-tree-core/editManagerFormatV5.js +16 -0
- package/lib/shared-tree-core/editManagerFormatV5.js.map +1 -0
- package/lib/shared-tree-core/index.d.ts +3 -3
- package/lib/shared-tree-core/index.d.ts.map +1 -1
- package/lib/shared-tree-core/index.js.map +1 -1
- package/lib/shared-tree-core/messageCodecV1ToV4.d.ts +11 -0
- package/lib/shared-tree-core/messageCodecV1ToV4.d.ts.map +1 -0
- package/lib/shared-tree-core/messageCodecV1ToV4.js +55 -0
- package/lib/shared-tree-core/messageCodecV1ToV4.js.map +1 -0
- package/lib/shared-tree-core/messageCodecV5.d.ts +11 -0
- package/lib/shared-tree-core/messageCodecV5.d.ts.map +1 -0
- package/lib/shared-tree-core/messageCodecV5.js +74 -0
- package/lib/shared-tree-core/messageCodecV5.js.map +1 -0
- package/lib/shared-tree-core/messageCodecs.d.ts.map +1 -1
- package/lib/shared-tree-core/messageCodecs.js +17 -48
- package/lib/shared-tree-core/messageCodecs.js.map +1 -1
- package/lib/shared-tree-core/{messageFormat.d.ts → messageFormatV1ToV4.d.ts} +1 -1
- package/lib/shared-tree-core/messageFormatV1ToV4.d.ts.map +1 -0
- package/lib/shared-tree-core/{messageFormat.js → messageFormatV1ToV4.js} +1 -1
- package/lib/shared-tree-core/messageFormatV1ToV4.js.map +1 -0
- package/lib/shared-tree-core/messageFormatV5.d.ts +42 -0
- package/lib/shared-tree-core/messageFormatV5.d.ts.map +1 -0
- package/lib/shared-tree-core/messageFormatV5.js +16 -0
- package/lib/shared-tree-core/messageFormatV5.js.map +1 -0
- package/lib/shared-tree-core/messageTypes.d.ts +12 -2
- package/lib/shared-tree-core/messageTypes.d.ts.map +1 -1
- package/lib/shared-tree-core/messageTypes.js.map +1 -1
- package/lib/shared-tree-core/sequenceIdUtils.d.ts +1 -1
- package/lib/shared-tree-core/sequenceIdUtils.d.ts.map +1 -1
- package/lib/shared-tree-core/sequenceIdUtils.js.map +1 -1
- package/lib/shared-tree-core/sharedTreeCore.d.ts +19 -5
- package/lib/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
- package/lib/shared-tree-core/sharedTreeCore.js +183 -59
- package/lib/shared-tree-core/sharedTreeCore.js.map +1 -1
- package/lib/simple-tree/api/tree.d.ts +17 -0
- package/lib/simple-tree/api/tree.d.ts.map +1 -1
- package/lib/simple-tree/api/tree.js +2 -0
- package/lib/simple-tree/api/tree.js.map +1 -1
- package/lib/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -1
- package/lib/simple-tree/core/unhydratedFlexTree.js +8 -2
- package/lib/simple-tree/core/unhydratedFlexTree.js.map +1 -1
- package/lib/treeFactory.d.ts +38 -9
- package/lib/treeFactory.d.ts.map +1 -1
- package/lib/treeFactory.js +41 -8
- package/lib/treeFactory.js.map +1 -1
- package/package.json +25 -25
- package/src/api.ts +30 -0
- package/src/codec/codec.ts +12 -6
- package/src/codec/index.ts +0 -1
- package/src/core/index.ts +1 -0
- package/src/core/rebase/index.ts +1 -0
- package/src/core/rebase/utils.ts +27 -0
- package/src/core/tree/detachedFieldIndex.ts +2 -2
- package/src/external-utilities/index.ts +1 -1
- package/src/external-utilities/typeboxValidator.ts +1 -3
- package/src/feature-libraries/flex-tree/flexTreeTypes.ts +2 -0
- package/src/feature-libraries/flex-tree/index.ts +2 -0
- package/src/feature-libraries/flex-tree/lazyNode.ts +13 -3
- package/src/feature-libraries/flex-tree/observer.ts +64 -0
- package/src/feature-libraries/index.ts +3 -0
- package/src/index.ts +6 -4
- package/src/packageVersion.ts +1 -1
- package/src/shared-tree/index.ts +2 -0
- package/src/shared-tree/schematizingTreeView.ts +2 -2
- package/src/shared-tree/sharedTree.ts +116 -52
- package/src/shared-tree/treeAlpha.ts +309 -4
- package/src/shared-tree/treeCheckout.ts +152 -100
- package/src/shared-tree-core/branch.ts +7 -0
- package/src/shared-tree-core/branchIdCodec.ts +28 -0
- package/src/shared-tree-core/editManager.ts +729 -430
- package/src/shared-tree-core/editManagerCodecs.ts +4 -164
- package/src/shared-tree-core/editManagerCodecsCommons.ts +245 -0
- package/src/shared-tree-core/editManagerCodecsV1toV4.ts +108 -0
- package/src/shared-tree-core/editManagerCodecsV5.ts +156 -0
- package/src/shared-tree-core/{editManagerFormat.ts → editManagerFormatCommons.ts} +17 -13
- package/src/shared-tree-core/editManagerFormatV1toV4.ts +42 -0
- package/src/shared-tree-core/editManagerFormatV5.ts +35 -0
- package/src/shared-tree-core/index.ts +3 -1
- package/src/shared-tree-core/messageCodecV1ToV4.ts +104 -0
- package/src/shared-tree-core/messageCodecV5.ts +131 -0
- package/src/shared-tree-core/messageCodecs.ts +16 -85
- package/src/shared-tree-core/messageFormatV5.ts +50 -0
- package/src/shared-tree-core/messageTypes.ts +15 -2
- package/src/shared-tree-core/sequenceIdUtils.ts +1 -1
- package/src/shared-tree-core/sharedTreeCore.ts +281 -85
- package/src/simple-tree/api/tree.ts +23 -0
- package/src/simple-tree/core/unhydratedFlexTree.ts +11 -2
- package/src/treeFactory.ts +48 -8
- package/dist/codec/noopValidator.d.ts +0 -13
- package/dist/codec/noopValidator.d.ts.map +0 -1
- package/dist/codec/noopValidator.js +0 -17
- package/dist/codec/noopValidator.js.map +0 -1
- package/dist/shared-tree-core/editManagerFormat.d.ts.map +0 -1
- package/dist/shared-tree-core/editManagerFormat.js.map +0 -1
- package/dist/shared-tree-core/messageFormat.d.ts.map +0 -1
- package/dist/shared-tree-core/messageFormat.js.map +0 -1
- package/docs/user-facing/schema-evolution.md +0 -309
- package/lib/codec/noopValidator.d.ts +0 -13
- package/lib/codec/noopValidator.d.ts.map +0 -1
- package/lib/codec/noopValidator.js +0 -14
- package/lib/codec/noopValidator.js.map +0 -1
- package/lib/shared-tree-core/editManagerFormat.d.ts.map +0 -1
- package/lib/shared-tree-core/editManagerFormat.js.map +0 -1
- package/lib/shared-tree-core/messageFormat.d.ts.map +0 -1
- package/lib/shared-tree-core/messageFormat.js.map +0 -1
- package/src/codec/noopValidator.ts +0 -18
- /package/src/shared-tree-core/{messageFormat.ts → messageFormatV1ToV4.ts} +0 -0
|
@@ -2,23 +2,23 @@
|
|
|
2
2
|
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
|
-
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
6
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
7
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
8
|
-
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
9
|
-
};
|
|
10
5
|
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
11
6
|
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
12
7
|
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
13
8
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
14
9
|
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
15
10
|
};
|
|
11
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
12
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
13
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
14
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
15
|
+
};
|
|
16
16
|
var _TreeCheckout_events, _TreeCheckout_transaction, _TreeCheckout_validatedCommits;
|
|
17
17
|
import { assert, unreachableCase, fail } from "@fluidframework/core-utils/internal";
|
|
18
18
|
import { createEmitter } from "@fluid-internal/client-utils";
|
|
19
19
|
import { UsageError, } from "@fluidframework/telemetry-utils/internal";
|
|
20
|
-
import { FluidClientVersion,
|
|
21
|
-
import { AnchorSet, CommitKind, RevertibleStatus, TreeStoredSchemaRepository, combineVisitors, makeDetachedFieldIndex, rebaseChange, rootFieldKey, tagChange, visitDelta, isAncestor, moveToDetachedField, LeafNodeStoredSchema, } from "../core/index.js";
|
|
20
|
+
import { FluidClientVersion, FormatValidatorNoOp } from "../codec/index.js";
|
|
21
|
+
import { AnchorSet, CommitKind, RevertibleStatus, TreeStoredSchemaRepository, combineVisitors, makeDetachedFieldIndex, rebaseChange, rootFieldKey, tagChange, visitDelta, isAncestor, moveToDetachedField, LeafNodeStoredSchema, diffHistories, } from "../core/index.js";
|
|
22
22
|
import { allowsRepoSuperset, buildForest, createNodeIdentifierManager, defaultSchemaPolicy, intoDelta, jsonableTreeFromCursor, makeFieldBatchCodec, } from "../feature-libraries/index.js";
|
|
23
23
|
import { SquashingTransactionStack, SharedTreeBranch, TransactionResult, onForkTransitive, } from "../shared-tree-core/index.js";
|
|
24
24
|
import { Breakable, disposeSymbol, getOrCreate } from "../util/index.js";
|
|
@@ -37,30 +37,32 @@ export function createTreeCheckout(idCompressor, mintRevisionTag, revisionTagCod
|
|
|
37
37
|
const schema = args?.schema ?? new TreeStoredSchemaRepository();
|
|
38
38
|
const forest = args?.forest ?? buildForest(breaker, schema);
|
|
39
39
|
const defaultCodecOptions = {
|
|
40
|
-
jsonValidator:
|
|
40
|
+
jsonValidator: FormatValidatorNoOp,
|
|
41
41
|
oldestCompatibleClient: FluidClientVersion.v2_0,
|
|
42
42
|
};
|
|
43
43
|
const defaultFieldBatchVersion = 1;
|
|
44
44
|
const changeFamily = args?.changeFamily ??
|
|
45
45
|
new SharedTreeChangeFamily(revisionTagCodec, args?.fieldBatchCodec ??
|
|
46
46
|
makeFieldBatchCodec(defaultCodecOptions, defaultFieldBatchVersion), defaultCodecOptions, args?.chunkCompressionStrategy, idCompressor);
|
|
47
|
+
// TODO: If a branch is passed in, is it supposed to be local main?
|
|
48
|
+
// Otherwise shouldn't we set `isSharedBranch` to false?
|
|
47
49
|
const branch = args?.branch ??
|
|
48
50
|
new SharedTreeBranch({
|
|
49
51
|
change: changeFamily.rebaser.compose([]),
|
|
50
52
|
revision: "root",
|
|
51
53
|
}, changeFamily, () => idCompressor.generateCompressedId());
|
|
52
|
-
return new TreeCheckout(branch,
|
|
54
|
+
return new TreeCheckout(branch, true, changeFamily, schema, forest, mintRevisionTag, revisionTagCodec, idCompressor, args?.removedRoots, args?.logger, breaker, args?.disposeForksAfterTransaction);
|
|
53
55
|
}
|
|
54
56
|
/**
|
|
55
57
|
* An implementation of {@link ITreeCheckoutFork}.
|
|
56
58
|
*/
|
|
57
59
|
export class TreeCheckout {
|
|
58
60
|
constructor(branch,
|
|
59
|
-
/** True if and only if this checkout is for a
|
|
60
|
-
|
|
61
|
+
/** True if and only if this checkout is for a branch which is persisted and shared with other clients. */
|
|
62
|
+
isSharedBranch, changeFamily, storedSchema, forest, mintRevisionTag, revisionTagCodec, idCompressor, removedRoots = makeDetachedFieldIndex("repair", revisionTagCodec, idCompressor),
|
|
61
63
|
/** Optional logger for telemetry. */
|
|
62
64
|
logger, breaker = new Breakable("TreeCheckout"), disposeForksAfterTransaction = true) {
|
|
63
|
-
this.
|
|
65
|
+
this.isSharedBranch = isSharedBranch;
|
|
64
66
|
this.changeFamily = changeFamily;
|
|
65
67
|
this.storedSchema = storedSchema;
|
|
66
68
|
this.forest = forest;
|
|
@@ -85,6 +87,39 @@ export class TreeCheckout {
|
|
|
85
87
|
this.revertibleCommitBranches = new Map();
|
|
86
88
|
_TreeCheckout_events.set(this, createEmitter());
|
|
87
89
|
this.events = __classPrivateFieldGet(this, _TreeCheckout_events, "f");
|
|
90
|
+
this.onAfterBranchChange = (event) => {
|
|
91
|
+
// The following logic allows revertibles to be generated for the change.
|
|
92
|
+
// Currently only appends (including merges and transaction commits) are supported.
|
|
93
|
+
if (event.type === "append") {
|
|
94
|
+
// TODO:#20949: When the SharedTree is detached, these commits will already have been garbage collected.
|
|
95
|
+
// Figure out a way to generate revertibles before the commits are garbage collected.
|
|
96
|
+
for (const commit of event.newCommits) {
|
|
97
|
+
const kind = event.type === "append" ? event.kind : CommitKind.Default;
|
|
98
|
+
const { change, revision } = commit;
|
|
99
|
+
const getRevertible = hasSchemaChange(change)
|
|
100
|
+
? undefined
|
|
101
|
+
: (onRevertibleDisposed) => {
|
|
102
|
+
if (!withinEventContext) {
|
|
103
|
+
throw new UsageError("Cannot get a revertible outside of the context of a changed event.");
|
|
104
|
+
}
|
|
105
|
+
if (this.revertibleCommitBranches.get(revision) !== undefined) {
|
|
106
|
+
throw new UsageError("Cannot generate the same revertible more than once. Note that this can happen when multiple changed event listeners are registered.");
|
|
107
|
+
}
|
|
108
|
+
const revertible = this.createRevertible(revision, kind, this, onRevertibleDisposed);
|
|
109
|
+
this.revertibleCommitBranches.set(revision, __classPrivateFieldGet(this, _TreeCheckout_transaction, "f").activeBranch.fork(commit));
|
|
110
|
+
this.revertibles.add(revertible);
|
|
111
|
+
return revertible;
|
|
112
|
+
};
|
|
113
|
+
let withinEventContext = true;
|
|
114
|
+
__classPrivateFieldGet(this, _TreeCheckout_events, "f").emit("changed", { isLocal: true, kind }, getRevertible);
|
|
115
|
+
withinEventContext = false;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
else if (this.isRemoteChangeEvent(event)) {
|
|
119
|
+
// TODO: figure out how to plumb through commit kind info for remote changes
|
|
120
|
+
__classPrivateFieldGet(this, _TreeCheckout_events, "f").emit("changed", { isLocal: false, kind: CommitKind.Default });
|
|
121
|
+
}
|
|
122
|
+
};
|
|
88
123
|
this.onAfterChange = (event) => {
|
|
89
124
|
this.editLock.lock();
|
|
90
125
|
__classPrivateFieldGet(this, _TreeCheckout_events, "f").emit("beforeBatch", event);
|
|
@@ -92,36 +127,7 @@ export class TreeCheckout {
|
|
|
92
127
|
const revision = event.type === "rebase"
|
|
93
128
|
? __classPrivateFieldGet(this, _TreeCheckout_transaction, "f").activeBranch.getHead().revision
|
|
94
129
|
: event.change.revision;
|
|
95
|
-
|
|
96
|
-
for (const change of event.change.change.changes) {
|
|
97
|
-
if (change.type === "data") {
|
|
98
|
-
const delta = intoDelta(tagChange(change.innerChange, revision));
|
|
99
|
-
this.withCombinedVisitor((visitor) => {
|
|
100
|
-
visitDelta(delta, visitor, this.removedRoots, revision);
|
|
101
|
-
});
|
|
102
|
-
}
|
|
103
|
-
else if (change.type === "schema") {
|
|
104
|
-
// Schema changes from a current to a new schema are expected to be backwards compatible.
|
|
105
|
-
// This guarantees that all data in the forest (which is valid before the schema change)
|
|
106
|
-
// is also valid under the new schema.
|
|
107
|
-
// Note however, that such schema changes may in some cases be rolled back:
|
|
108
|
-
// Case 1: A transaction with a schema change may be aborted.
|
|
109
|
-
// The transaction may have made some data changes that would render some trees invalid
|
|
110
|
-
// under the old schema, but these changes will also be rolled back, thereby putting the forest
|
|
111
|
-
// back in the state before the transaction, which is valid under the original (reinstated) schema.
|
|
112
|
-
// Case 2: A branch with a schema change may be rebased such that the schema change (because
|
|
113
|
-
// of a constraint) is no longer applied.
|
|
114
|
-
// Such a branch may contain data changes that would render some trees invalid under the
|
|
115
|
-
// original schema. These data changes may not necessarily be rolled back.
|
|
116
|
-
// They will however be rebased over the rollback of the schema change. This rebasing will
|
|
117
|
-
// ensure that these data changes are muted if they would render some trees invalid under the
|
|
118
|
-
// original (reinstated) schema.
|
|
119
|
-
this.storedSchema.apply(change.innerChange.schema.new);
|
|
120
|
-
}
|
|
121
|
-
else {
|
|
122
|
-
fail(0xad1 /* Unknown Shared Tree change type. */);
|
|
123
|
-
}
|
|
124
|
-
}
|
|
130
|
+
this.applyChange(event.change.change, revision);
|
|
125
131
|
}
|
|
126
132
|
__classPrivateFieldGet(this, _TreeCheckout_events, "f").emit("afterBatch");
|
|
127
133
|
this.editLock.unlock();
|
|
@@ -158,7 +164,22 @@ export class TreeCheckout {
|
|
|
158
164
|
// #region Commit Validation
|
|
159
165
|
/** Used to maintain the contract of {@link onCommitValid}(). */
|
|
160
166
|
_TreeCheckout_validatedCommits.set(this, new WeakMap());
|
|
161
|
-
__classPrivateFieldSet(this, _TreeCheckout_transaction,
|
|
167
|
+
__classPrivateFieldSet(this, _TreeCheckout_transaction, this.createTransactionStack(branch), "f");
|
|
168
|
+
this.editLock = new EditLock(__classPrivateFieldGet(this, _TreeCheckout_transaction, "f").activeBranchEditor);
|
|
169
|
+
this.registerForBranchEvents();
|
|
170
|
+
}
|
|
171
|
+
registerForBranchEvents() {
|
|
172
|
+
__classPrivateFieldGet(this, _TreeCheckout_transaction, "f").branch.events.on("afterChange", this.onAfterBranchChange);
|
|
173
|
+
__classPrivateFieldGet(this, _TreeCheckout_transaction, "f").activeBranchEvents.on("afterChange", this.onAfterChange);
|
|
174
|
+
__classPrivateFieldGet(this, _TreeCheckout_transaction, "f").activeBranchEvents.on("ancestryTrimmed", this.onAncestryTrimmed);
|
|
175
|
+
}
|
|
176
|
+
unregisterFromBranchEvents() {
|
|
177
|
+
__classPrivateFieldGet(this, _TreeCheckout_transaction, "f").branch.events.off("afterChange", this.onAfterBranchChange);
|
|
178
|
+
__classPrivateFieldGet(this, _TreeCheckout_transaction, "f").activeBranchEvents.off("afterChange", this.onAfterChange);
|
|
179
|
+
__classPrivateFieldGet(this, _TreeCheckout_transaction, "f").activeBranchEvents.off("ancestryTrimmed", this.onAncestryTrimmed);
|
|
180
|
+
}
|
|
181
|
+
createTransactionStack(branch) {
|
|
182
|
+
return new SquashingTransactionStack(branch, (commits) => {
|
|
162
183
|
const revision = this.mintRevisionTag();
|
|
163
184
|
for (const transactionStep of commits) {
|
|
164
185
|
this.removedRoots.updateMajor(transactionStep.revision, revision);
|
|
@@ -188,43 +209,7 @@ export class TreeCheckout {
|
|
|
188
209
|
}
|
|
189
210
|
disposeForks?.();
|
|
190
211
|
};
|
|
191
|
-
}), "f");
|
|
192
|
-
this.editLock = new EditLock(__classPrivateFieldGet(this, _TreeCheckout_transaction, "f").activeBranchEditor);
|
|
193
|
-
branch.events.on("afterChange", (event) => {
|
|
194
|
-
// The following logic allows revertibles to be generated for the change.
|
|
195
|
-
// Currently only appends (including merges and transaction commits) are supported.
|
|
196
|
-
if (event.type === "append") {
|
|
197
|
-
// TODO:#20949: When the SharedTree is detached, these commits will already have been garbage collected.
|
|
198
|
-
// Figure out a way to generate revertibles before the commits are garbage collected.
|
|
199
|
-
for (const commit of event.newCommits) {
|
|
200
|
-
const kind = event.type === "append" ? event.kind : CommitKind.Default;
|
|
201
|
-
const { change, revision } = commit;
|
|
202
|
-
const getRevertible = hasSchemaChange(change)
|
|
203
|
-
? undefined
|
|
204
|
-
: (onRevertibleDisposed) => {
|
|
205
|
-
if (!withinEventContext) {
|
|
206
|
-
throw new UsageError("Cannot get a revertible outside of the context of a changed event.");
|
|
207
|
-
}
|
|
208
|
-
if (this.revertibleCommitBranches.get(revision) !== undefined) {
|
|
209
|
-
throw new UsageError("Cannot generate the same revertible more than once. Note that this can happen when multiple changed event listeners are registered.");
|
|
210
|
-
}
|
|
211
|
-
const revertible = this.createRevertible(revision, kind, this, onRevertibleDisposed);
|
|
212
|
-
this.revertibleCommitBranches.set(revision, __classPrivateFieldGet(this, _TreeCheckout_transaction, "f").activeBranch.fork(commit));
|
|
213
|
-
this.revertibles.add(revertible);
|
|
214
|
-
return revertible;
|
|
215
|
-
};
|
|
216
|
-
let withinEventContext = true;
|
|
217
|
-
__classPrivateFieldGet(this, _TreeCheckout_events, "f").emit("changed", { isLocal: true, kind }, getRevertible);
|
|
218
|
-
withinEventContext = false;
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
else if (this.isRemoteChangeEvent(event)) {
|
|
222
|
-
// TODO: figure out how to plumb through commit kind info for remote changes
|
|
223
|
-
__classPrivateFieldGet(this, _TreeCheckout_events, "f").emit("changed", { isLocal: false, kind: CommitKind.Default });
|
|
224
|
-
}
|
|
225
212
|
});
|
|
226
|
-
__classPrivateFieldGet(this, _TreeCheckout_transaction, "f").activeBranchEvents.on("afterChange", this.onAfterChange);
|
|
227
|
-
__classPrivateFieldGet(this, _TreeCheckout_transaction, "f").activeBranchEvents.on("ancestryTrimmed", this.onAncestryTrimmed);
|
|
228
213
|
}
|
|
229
214
|
exportVerbose() {
|
|
230
215
|
const cursor = this.forest.allocateCursor("contentSnapshot");
|
|
@@ -246,6 +231,39 @@ export class TreeCheckout {
|
|
|
246
231
|
cursor.free();
|
|
247
232
|
}
|
|
248
233
|
}
|
|
234
|
+
// Revision is the revision of the commit, if any, which caused this change.
|
|
235
|
+
applyChange(change, revision) {
|
|
236
|
+
// Conflicts due to schema will be empty and thus are not applied.
|
|
237
|
+
for (const innerChange of change.changes) {
|
|
238
|
+
if (innerChange.type === "data") {
|
|
239
|
+
const delta = intoDelta(tagChange(innerChange.innerChange, revision));
|
|
240
|
+
this.withCombinedVisitor((visitor) => {
|
|
241
|
+
visitDelta(delta, visitor, this.removedRoots, revision);
|
|
242
|
+
});
|
|
243
|
+
}
|
|
244
|
+
else if (innerChange.type === "schema") {
|
|
245
|
+
// Schema changes from a current to a new schema are expected to be backwards compatible.
|
|
246
|
+
// This guarantees that all data in the forest (which is valid before the schema change)
|
|
247
|
+
// is also valid under the new schema.
|
|
248
|
+
// Note however, that such schema changes may in some cases be rolled back:
|
|
249
|
+
// Case 1: A transaction with a schema change may be aborted.
|
|
250
|
+
// The transaction may have made some data changes that would render some trees invalid
|
|
251
|
+
// under the old schema, but these changes will also be rolled back, thereby putting the forest
|
|
252
|
+
// back in the state before the transaction, which is valid under the original (reinstated) schema.
|
|
253
|
+
// Case 2: A branch with a schema change may be rebased such that the schema change (because
|
|
254
|
+
// of a constraint) is no longer applied.
|
|
255
|
+
// Such a branch may contain data changes that would render some trees invalid under the
|
|
256
|
+
// original schema. These data changes may not necessarily be rolled back.
|
|
257
|
+
// They will however be rebased over the rollback of the schema change. This rebasing will
|
|
258
|
+
// ensure that these data changes are muted if they would render some trees invalid under the
|
|
259
|
+
// original (reinstated) schema.
|
|
260
|
+
this.storedSchema.apply(innerChange.innerChange.schema.new);
|
|
261
|
+
}
|
|
262
|
+
else {
|
|
263
|
+
fail(0xad1 /* Unknown Shared Tree change type. */);
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
}
|
|
249
267
|
withCombinedVisitor(fn) {
|
|
250
268
|
const anchorVisitor = this.forest.anchors.acquireVisitor();
|
|
251
269
|
const combinedVisitor = combineVisitors([this.forest.acquireVisitor(), anchorVisitor]);
|
|
@@ -346,16 +364,28 @@ export class TreeCheckout {
|
|
|
346
364
|
const branch = __classPrivateFieldGet(this, _TreeCheckout_transaction, "f").activeBranch.fork();
|
|
347
365
|
const storedSchema = this.storedSchema.clone();
|
|
348
366
|
const forest = this.forest.clone(storedSchema, anchors);
|
|
349
|
-
const checkout = new TreeCheckout(branch,
|
|
367
|
+
const checkout = new TreeCheckout(branch, false, this.changeFamily, storedSchema, forest, this.mintRevisionTag, this.revisionTagCodec, this.idCompressor, this.removedRoots.clone(), this.logger, this.breaker, this.disposeForksAfterTransaction);
|
|
350
368
|
__classPrivateFieldGet(this, _TreeCheckout_events, "f").emit("fork", checkout);
|
|
351
369
|
return checkout;
|
|
352
370
|
}
|
|
371
|
+
switchBranch(branch) {
|
|
372
|
+
// TODO: Dispose old branch, if necessary
|
|
373
|
+
assert(!__classPrivateFieldGet(this, _TreeCheckout_transaction, "f").isInProgress(), 0xc55 /* Cannot switch branches during a transaction */);
|
|
374
|
+
const diff = diffHistories(this.changeFamily.rebaser, __classPrivateFieldGet(this, _TreeCheckout_transaction, "f").branch.getHead(), branch.getHead(), this.mintRevisionTag);
|
|
375
|
+
this.unregisterFromBranchEvents();
|
|
376
|
+
__classPrivateFieldSet(this, _TreeCheckout_transaction, this.createTransactionStack(branch), "f");
|
|
377
|
+
this.editLock = new EditLock(__classPrivateFieldGet(this, _TreeCheckout_transaction, "f").activeBranchEditor);
|
|
378
|
+
this.registerForBranchEvents();
|
|
379
|
+
// TODO: Rework eventing
|
|
380
|
+
this.applyChange(diff);
|
|
381
|
+
__classPrivateFieldGet(this, _TreeCheckout_events, "f").emit("afterBatch");
|
|
382
|
+
}
|
|
353
383
|
rebase(checkout) {
|
|
354
384
|
this.checkNotDisposed("The target of the branch rebase has been disposed and cannot be rebased.");
|
|
355
385
|
checkout.checkNotDisposed("The source of the branch rebase has been disposed and cannot be rebased.");
|
|
356
386
|
this.editLock.checkUnlocked("Rebasing");
|
|
357
387
|
assert(!checkout.transaction.isInProgress(), 0x9af /* A view cannot be rebased while it has a pending transaction */);
|
|
358
|
-
assert(checkout.
|
|
388
|
+
assert(!checkout.isSharedBranch, 0xa5d /* Shared branches cannot be rebased onto another branch. */);
|
|
359
389
|
__classPrivateFieldGet(checkout, _TreeCheckout_transaction, "f").activeBranch.rebaseOnto(__classPrivateFieldGet(this, _TreeCheckout_transaction, "f").activeBranch);
|
|
360
390
|
}
|
|
361
391
|
rebaseOnto(checkout) {
|
|
@@ -371,8 +401,8 @@ export class TreeCheckout {
|
|
|
371
401
|
checkout.transaction.commit();
|
|
372
402
|
}
|
|
373
403
|
__classPrivateFieldGet(this, _TreeCheckout_transaction, "f").activeBranch.merge(__classPrivateFieldGet(checkout, _TreeCheckout_transaction, "f").activeBranch);
|
|
374
|
-
if (disposeMerged && checkout.
|
|
375
|
-
// Dispose the merged checkout unless it is
|
|
404
|
+
if (disposeMerged && !checkout.isSharedBranch) {
|
|
405
|
+
// Dispose the merged checkout unless it is a shared branch.
|
|
376
406
|
checkout[disposeSymbol]();
|
|
377
407
|
}
|
|
378
408
|
}
|
|
@@ -485,10 +515,10 @@ export class TreeCheckout {
|
|
|
485
515
|
*/
|
|
486
516
|
isRemoteChangeEvent(event) {
|
|
487
517
|
return (
|
|
488
|
-
// Remote changes are only ever applied to
|
|
489
|
-
|
|
490
|
-
// Remote changes are applied to the
|
|
491
|
-
// No other rebases are allowed on
|
|
518
|
+
// Remote changes are only ever applied to shared branches
|
|
519
|
+
this.isSharedBranch &&
|
|
520
|
+
// Remote changes are applied to the branch by rebasing it onto the trunk.
|
|
521
|
+
// No other rebases are allowed on shared branches, so we can use this to detect remote changes.
|
|
492
522
|
event.type === "rebase");
|
|
493
523
|
}
|
|
494
524
|
/**
|