@fluidframework/tree 2.10.0 → 2.11.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 +25 -0
- package/api-report/tree.alpha.api.md +47 -16
- package/api-report/tree.beta.api.md +5 -14
- package/api-report/tree.legacy.alpha.api.md +5 -14
- package/api-report/tree.legacy.public.api.md +5 -14
- package/api-report/tree.public.api.md +5 -14
- package/dist/alpha.d.ts +9 -0
- package/dist/core/forest/forest.d.ts +10 -2
- package/dist/core/forest/forest.d.ts.map +1 -1
- package/dist/core/forest/forest.js.map +1 -1
- package/dist/core/index.d.ts +2 -2
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +3 -2
- package/dist/core/index.js.map +1 -1
- package/dist/core/rebase/utils.d.ts +1 -1
- package/dist/core/rebase/utils.d.ts.map +1 -1
- package/dist/core/rebase/utils.js +11 -8
- package/dist/core/rebase/utils.js.map +1 -1
- package/dist/core/revertible.d.ts +30 -1
- package/dist/core/revertible.d.ts.map +1 -1
- package/dist/core/revertible.js.map +1 -1
- package/dist/core/schema-stored/storedSchemaRepository.d.ts +2 -2
- package/dist/core/schema-stored/storedSchemaRepository.d.ts.map +1 -1
- package/dist/core/schema-stored/storedSchemaRepository.js +5 -5
- package/dist/core/schema-stored/storedSchemaRepository.js.map +1 -1
- package/dist/core/tree/anchorSet.d.ts +2 -2
- package/dist/core/tree/anchorSet.d.ts.map +1 -1
- package/dist/core/tree/anchorSet.js +21 -21
- package/dist/core/tree/anchorSet.js.map +1 -1
- package/dist/core/tree/detachedFieldIndexCodec.d.ts.map +1 -1
- package/dist/core/tree/detachedFieldIndexCodec.js +3 -2
- package/dist/core/tree/detachedFieldIndexCodec.js.map +1 -1
- package/dist/core/tree/index.d.ts +1 -1
- package/dist/core/tree/index.d.ts.map +1 -1
- package/dist/core/tree/index.js +2 -1
- package/dist/core/tree/index.js.map +1 -1
- package/dist/core/tree/visitorUtils.d.ts +25 -1
- package/dist/core/tree/visitorUtils.d.ts.map +1 -1
- package/dist/core/tree/visitorUtils.js +29 -1
- package/dist/core/tree/visitorUtils.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/chunkedForest.d.ts +5 -2
- package/dist/feature-libraries/chunked-forest/chunkedForest.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/chunkedForest.js +24 -14
- package/dist/feature-libraries/chunked-forest/chunkedForest.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/uniformChunk.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/uniformChunk.js +2 -2
- package/dist/feature-libraries/chunked-forest/uniformChunk.js.map +1 -1
- package/dist/feature-libraries/flex-tree/context.d.ts +1 -1
- package/dist/feature-libraries/flex-tree/context.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/context.js.map +1 -1
- package/dist/feature-libraries/index.d.ts +1 -0
- package/dist/feature-libraries/index.d.ts.map +1 -1
- package/dist/feature-libraries/index.js +4 -1
- package/dist/feature-libraries/index.js.map +1 -1
- package/dist/feature-libraries/indexing/anchorTreeIndex.d.ts +132 -0
- package/dist/feature-libraries/indexing/anchorTreeIndex.d.ts.map +1 -0
- package/dist/feature-libraries/indexing/anchorTreeIndex.js +361 -0
- package/dist/feature-libraries/indexing/anchorTreeIndex.js.map +1 -0
- package/dist/feature-libraries/indexing/index.d.ts +7 -0
- package/dist/feature-libraries/indexing/index.d.ts.map +1 -0
- package/dist/feature-libraries/indexing/index.js +11 -0
- package/dist/feature-libraries/indexing/index.js.map +1 -0
- package/dist/feature-libraries/indexing/types.d.ts +32 -0
- package/dist/feature-libraries/indexing/types.d.ts.map +1 -0
- package/dist/{events/interop.js → feature-libraries/indexing/types.js} +1 -1
- package/dist/feature-libraries/indexing/types.js.map +1 -0
- package/dist/feature-libraries/object-forest/objectForest.d.ts +5 -2
- package/dist/feature-libraries/object-forest/objectForest.d.ts.map +1 -1
- package/dist/feature-libraries/object-forest/objectForest.js +21 -11
- package/dist/feature-libraries/object-forest/objectForest.js.map +1 -1
- package/dist/feature-libraries/sequence-field/invert.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/invert.js +2 -2
- package/dist/feature-libraries/sequence-field/invert.js.map +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldToDelta.js +3 -2
- package/dist/feature-libraries/sequence-field/sequenceFieldToDelta.js.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- 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/shared-tree/index.d.ts +1 -1
- package/dist/shared-tree/index.d.ts.map +1 -1
- package/dist/shared-tree/index.js +1 -2
- package/dist/shared-tree/index.js.map +1 -1
- package/dist/shared-tree/schematizingTreeView.d.ts +7 -1
- package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/dist/shared-tree/schematizingTreeView.js +31 -30
- package/dist/shared-tree/schematizingTreeView.js.map +1 -1
- package/dist/shared-tree/sharedTree.d.ts +3 -0
- package/dist/shared-tree/sharedTree.d.ts.map +1 -1
- package/dist/shared-tree/sharedTree.js +56 -20
- package/dist/shared-tree/sharedTree.js.map +1 -1
- package/dist/shared-tree/sharedTreeChangeFamily.d.ts.map +1 -1
- package/dist/shared-tree/sharedTreeChangeFamily.js +3 -3
- package/dist/shared-tree/sharedTreeChangeFamily.js.map +1 -1
- package/dist/shared-tree/treeCheckout.d.ts +28 -64
- package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
- package/dist/shared-tree/treeCheckout.js +152 -129
- package/dist/shared-tree/treeCheckout.js.map +1 -1
- package/dist/shared-tree-core/branch.d.ts +25 -81
- package/dist/shared-tree-core/branch.d.ts.map +1 -1
- package/dist/shared-tree-core/branch.js +72 -151
- package/dist/shared-tree-core/branch.js.map +1 -1
- package/dist/shared-tree-core/branchCommitEnricher.d.ts +19 -33
- package/dist/shared-tree-core/branchCommitEnricher.d.ts.map +1 -1
- package/dist/shared-tree-core/branchCommitEnricher.js +73 -54
- package/dist/shared-tree-core/branchCommitEnricher.js.map +1 -1
- package/dist/shared-tree-core/defaultResubmitMachine.d.ts.map +1 -1
- package/dist/shared-tree-core/defaultResubmitMachine.js +2 -1
- package/dist/shared-tree-core/defaultResubmitMachine.js.map +1 -1
- package/dist/shared-tree-core/editManager.d.ts.map +1 -1
- package/dist/shared-tree-core/editManager.js +2 -2
- package/dist/shared-tree-core/editManager.js.map +1 -1
- package/dist/shared-tree-core/index.d.ts +1 -1
- package/dist/shared-tree-core/index.d.ts.map +1 -1
- package/dist/shared-tree-core/index.js +4 -3
- package/dist/shared-tree-core/index.js.map +1 -1
- package/dist/shared-tree-core/sharedTreeCore.d.ts +2 -2
- package/dist/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
- package/dist/shared-tree-core/sharedTreeCore.js +11 -52
- package/dist/shared-tree-core/sharedTreeCore.js.map +1 -1
- package/dist/shared-tree-core/transaction.d.ts +108 -0
- package/dist/shared-tree-core/transaction.d.ts.map +1 -0
- package/dist/shared-tree-core/transaction.js +99 -0
- package/dist/shared-tree-core/transaction.js.map +1 -0
- package/dist/shared-tree-core/transactionEnricher.d.ts +8 -13
- package/dist/shared-tree-core/transactionEnricher.d.ts.map +1 -1
- package/dist/shared-tree-core/transactionEnricher.js +41 -21
- package/dist/shared-tree-core/transactionEnricher.js.map +1 -1
- package/dist/simple-tree/api/identifierIndex.d.ts +21 -0
- package/dist/simple-tree/api/identifierIndex.d.ts.map +1 -0
- package/dist/simple-tree/api/identifierIndex.js +45 -0
- package/dist/simple-tree/api/identifierIndex.js.map +1 -0
- package/dist/simple-tree/api/index.d.ts +2 -0
- package/dist/simple-tree/api/index.d.ts.map +1 -1
- package/dist/simple-tree/api/index.js +5 -1
- package/dist/simple-tree/api/index.js.map +1 -1
- package/dist/simple-tree/api/simpleSchemaToJsonSchema.js +9 -7
- package/dist/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -1
- package/dist/simple-tree/api/simpleTreeIndex.d.ts +65 -0
- package/dist/simple-tree/api/simpleTreeIndex.d.ts.map +1 -0
- package/dist/simple-tree/api/simpleTreeIndex.js +91 -0
- package/dist/simple-tree/api/simpleTreeIndex.js.map +1 -0
- package/dist/simple-tree/api/tree.d.ts +4 -5
- package/dist/simple-tree/api/tree.d.ts.map +1 -1
- package/dist/simple-tree/api/tree.js.map +1 -1
- package/dist/simple-tree/api/treeNodeApi.js.map +1 -1
- package/dist/simple-tree/core/index.d.ts +1 -1
- package/dist/simple-tree/core/index.d.ts.map +1 -1
- package/dist/simple-tree/core/index.js +2 -1
- package/dist/simple-tree/core/index.js.map +1 -1
- package/dist/simple-tree/core/treeNodeKernel.d.ts +6 -2
- package/dist/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
- package/dist/simple-tree/core/treeNodeKernel.js +53 -22
- package/dist/simple-tree/core/treeNodeKernel.js.map +1 -1
- package/dist/simple-tree/core/unhydratedFlexTree.d.ts +1 -1
- package/dist/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -1
- package/dist/simple-tree/core/unhydratedFlexTree.js +2 -2
- package/dist/simple-tree/core/unhydratedFlexTree.js.map +1 -1
- package/dist/simple-tree/index.d.ts +1 -1
- package/dist/simple-tree/index.d.ts.map +1 -1
- package/dist/simple-tree/index.js +4 -2
- package/dist/simple-tree/index.js.map +1 -1
- package/dist/simple-tree/objectNode.d.ts +7 -2
- package/dist/simple-tree/objectNode.d.ts.map +1 -1
- package/dist/simple-tree/objectNode.js.map +1 -1
- package/dist/simple-tree/toMapTree.js +3 -3
- package/dist/simple-tree/toMapTree.js.map +1 -1
- package/dist/util/index.d.ts +1 -2
- package/dist/util/index.d.ts.map +1 -1
- package/dist/util/index.js +5 -4
- package/dist/util/index.js.map +1 -1
- package/dist/util/typeCheck.d.ts +6 -1
- package/dist/util/typeCheck.d.ts.map +1 -1
- package/dist/util/typeCheck.js.map +1 -1
- package/dist/util/typeCheckTests.d.ts +14 -2
- package/dist/util/typeCheckTests.d.ts.map +1 -1
- package/dist/util/typeCheckTests.js.map +1 -1
- package/dist/util/utils.d.ts +29 -0
- package/dist/util/utils.d.ts.map +1 -1
- package/dist/util/utils.js +13 -1
- package/dist/util/utils.js.map +1 -1
- package/lib/alpha.d.ts +9 -0
- package/lib/core/forest/forest.d.ts +10 -2
- package/lib/core/forest/forest.d.ts.map +1 -1
- package/lib/core/forest/forest.js.map +1 -1
- package/lib/core/index.d.ts +2 -2
- package/lib/core/index.d.ts.map +1 -1
- package/lib/core/index.js +2 -2
- package/lib/core/index.js.map +1 -1
- package/lib/core/rebase/utils.d.ts +1 -1
- package/lib/core/rebase/utils.d.ts.map +1 -1
- package/lib/core/rebase/utils.js +11 -8
- package/lib/core/rebase/utils.js.map +1 -1
- package/lib/core/revertible.d.ts +30 -1
- package/lib/core/revertible.d.ts.map +1 -1
- package/lib/core/revertible.js.map +1 -1
- package/lib/core/schema-stored/storedSchemaRepository.d.ts +2 -2
- package/lib/core/schema-stored/storedSchemaRepository.d.ts.map +1 -1
- package/lib/core/schema-stored/storedSchemaRepository.js +1 -1
- package/lib/core/schema-stored/storedSchemaRepository.js.map +1 -1
- package/lib/core/tree/anchorSet.d.ts +2 -2
- package/lib/core/tree/anchorSet.d.ts.map +1 -1
- package/lib/core/tree/anchorSet.js +1 -1
- package/lib/core/tree/anchorSet.js.map +1 -1
- package/lib/core/tree/detachedFieldIndexCodec.d.ts.map +1 -1
- package/lib/core/tree/detachedFieldIndexCodec.js +4 -3
- package/lib/core/tree/detachedFieldIndexCodec.js.map +1 -1
- package/lib/core/tree/index.d.ts +1 -1
- package/lib/core/tree/index.d.ts.map +1 -1
- package/lib/core/tree/index.js +1 -1
- package/lib/core/tree/index.js.map +1 -1
- package/lib/core/tree/visitorUtils.d.ts +25 -1
- package/lib/core/tree/visitorUtils.d.ts.map +1 -1
- package/lib/core/tree/visitorUtils.js +27 -0
- package/lib/core/tree/visitorUtils.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/chunkedForest.d.ts +5 -2
- package/lib/feature-libraries/chunked-forest/chunkedForest.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/chunkedForest.js +18 -8
- package/lib/feature-libraries/chunked-forest/chunkedForest.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/uniformChunk.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/uniformChunk.js +3 -3
- package/lib/feature-libraries/chunked-forest/uniformChunk.js.map +1 -1
- package/lib/feature-libraries/flex-tree/context.d.ts +1 -1
- package/lib/feature-libraries/flex-tree/context.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/context.js.map +1 -1
- package/lib/feature-libraries/index.d.ts +1 -0
- package/lib/feature-libraries/index.d.ts.map +1 -1
- package/lib/feature-libraries/index.js +1 -0
- package/lib/feature-libraries/index.js.map +1 -1
- package/lib/feature-libraries/indexing/anchorTreeIndex.d.ts +132 -0
- package/lib/feature-libraries/indexing/anchorTreeIndex.d.ts.map +1 -0
- package/lib/feature-libraries/indexing/anchorTreeIndex.js +356 -0
- package/lib/feature-libraries/indexing/anchorTreeIndex.js.map +1 -0
- package/lib/feature-libraries/indexing/index.d.ts +7 -0
- package/lib/feature-libraries/indexing/index.d.ts.map +1 -0
- package/lib/{events → feature-libraries/indexing}/index.js +1 -1
- package/lib/feature-libraries/indexing/index.js.map +1 -0
- package/lib/feature-libraries/indexing/types.d.ts +32 -0
- package/lib/feature-libraries/indexing/types.d.ts.map +1 -0
- package/lib/{events/interop.js → feature-libraries/indexing/types.js} +1 -1
- package/lib/feature-libraries/indexing/types.js.map +1 -0
- package/lib/feature-libraries/object-forest/objectForest.d.ts +5 -2
- package/lib/feature-libraries/object-forest/objectForest.d.ts.map +1 -1
- package/lib/feature-libraries/object-forest/objectForest.js +15 -5
- package/lib/feature-libraries/object-forest/objectForest.js.map +1 -1
- package/lib/feature-libraries/sequence-field/invert.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/invert.js +4 -4
- package/lib/feature-libraries/sequence-field/invert.js.map +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldToDelta.js +4 -3
- package/lib/feature-libraries/sequence-field/sequenceFieldToDelta.js.map +1 -1
- package/lib/index.d.ts +4 -4
- 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/shared-tree/index.d.ts +1 -1
- package/lib/shared-tree/index.d.ts.map +1 -1
- package/lib/shared-tree/index.js +1 -1
- package/lib/shared-tree/index.js.map +1 -1
- package/lib/shared-tree/schematizingTreeView.d.ts +7 -1
- package/lib/shared-tree/schematizingTreeView.d.ts.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 +3 -0
- package/lib/shared-tree/sharedTree.d.ts.map +1 -1
- package/lib/shared-tree/sharedTree.js +37 -1
- package/lib/shared-tree/sharedTree.js.map +1 -1
- package/lib/shared-tree/sharedTreeChangeFamily.d.ts.map +1 -1
- package/lib/shared-tree/sharedTreeChangeFamily.js +5 -5
- package/lib/shared-tree/sharedTreeChangeFamily.js.map +1 -1
- package/lib/shared-tree/treeCheckout.d.ts +28 -64
- package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
- package/lib/shared-tree/treeCheckout.js +140 -116
- package/lib/shared-tree/treeCheckout.js.map +1 -1
- package/lib/shared-tree-core/branch.d.ts +25 -81
- package/lib/shared-tree-core/branch.d.ts.map +1 -1
- package/lib/shared-tree-core/branch.js +72 -151
- package/lib/shared-tree-core/branch.js.map +1 -1
- package/lib/shared-tree-core/branchCommitEnricher.d.ts +19 -33
- package/lib/shared-tree-core/branchCommitEnricher.d.ts.map +1 -1
- package/lib/shared-tree-core/branchCommitEnricher.js +74 -55
- package/lib/shared-tree-core/branchCommitEnricher.js.map +1 -1
- package/lib/shared-tree-core/defaultResubmitMachine.d.ts.map +1 -1
- package/lib/shared-tree-core/defaultResubmitMachine.js +3 -2
- package/lib/shared-tree-core/defaultResubmitMachine.js.map +1 -1
- package/lib/shared-tree-core/editManager.d.ts.map +1 -1
- package/lib/shared-tree-core/editManager.js +1 -1
- package/lib/shared-tree-core/editManager.js.map +1 -1
- package/lib/shared-tree-core/index.d.ts +1 -1
- package/lib/shared-tree-core/index.d.ts.map +1 -1
- package/lib/shared-tree-core/index.js +1 -1
- package/lib/shared-tree-core/index.js.map +1 -1
- package/lib/shared-tree-core/sharedTreeCore.d.ts +2 -2
- package/lib/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
- package/lib/shared-tree-core/sharedTreeCore.js +12 -53
- package/lib/shared-tree-core/sharedTreeCore.js.map +1 -1
- package/lib/shared-tree-core/transaction.d.ts +108 -0
- package/lib/shared-tree-core/transaction.d.ts.map +1 -0
- package/lib/shared-tree-core/transaction.js +95 -0
- package/lib/shared-tree-core/transaction.js.map +1 -0
- package/lib/shared-tree-core/transactionEnricher.d.ts +8 -13
- package/lib/shared-tree-core/transactionEnricher.d.ts.map +1 -1
- package/lib/shared-tree-core/transactionEnricher.js +41 -21
- package/lib/shared-tree-core/transactionEnricher.js.map +1 -1
- package/lib/simple-tree/api/identifierIndex.d.ts +21 -0
- package/lib/simple-tree/api/identifierIndex.d.ts.map +1 -0
- package/lib/simple-tree/api/identifierIndex.js +41 -0
- package/lib/simple-tree/api/identifierIndex.js.map +1 -0
- package/lib/simple-tree/api/index.d.ts +2 -0
- package/lib/simple-tree/api/index.d.ts.map +1 -1
- package/lib/simple-tree/api/index.js +2 -0
- package/lib/simple-tree/api/index.js.map +1 -1
- package/lib/simple-tree/api/simpleSchemaToJsonSchema.js +11 -9
- package/lib/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -1
- package/lib/simple-tree/api/simpleTreeIndex.d.ts +65 -0
- package/lib/simple-tree/api/simpleTreeIndex.d.ts.map +1 -0
- package/lib/simple-tree/api/simpleTreeIndex.js +87 -0
- package/lib/simple-tree/api/simpleTreeIndex.js.map +1 -0
- package/lib/simple-tree/api/tree.d.ts +4 -5
- package/lib/simple-tree/api/tree.d.ts.map +1 -1
- package/lib/simple-tree/api/tree.js.map +1 -1
- package/lib/simple-tree/api/treeNodeApi.js.map +1 -1
- package/lib/simple-tree/core/index.d.ts +1 -1
- package/lib/simple-tree/core/index.d.ts.map +1 -1
- package/lib/simple-tree/core/index.js +1 -1
- package/lib/simple-tree/core/index.js.map +1 -1
- package/lib/simple-tree/core/treeNodeKernel.d.ts +6 -2
- package/lib/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
- package/lib/simple-tree/core/treeNodeKernel.js +31 -1
- package/lib/simple-tree/core/treeNodeKernel.js.map +1 -1
- package/lib/simple-tree/core/unhydratedFlexTree.d.ts +1 -1
- package/lib/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -1
- package/lib/simple-tree/core/unhydratedFlexTree.js +1 -1
- package/lib/simple-tree/core/unhydratedFlexTree.js.map +1 -1
- package/lib/simple-tree/index.d.ts +1 -1
- package/lib/simple-tree/index.d.ts.map +1 -1
- package/lib/simple-tree/index.js +1 -1
- package/lib/simple-tree/index.js.map +1 -1
- package/lib/simple-tree/objectNode.d.ts +7 -2
- package/lib/simple-tree/objectNode.d.ts.map +1 -1
- package/lib/simple-tree/objectNode.js.map +1 -1
- package/lib/simple-tree/toMapTree.js +5 -5
- package/lib/simple-tree/toMapTree.js.map +1 -1
- package/lib/util/index.d.ts +1 -2
- package/lib/util/index.d.ts.map +1 -1
- package/lib/util/index.js +1 -2
- package/lib/util/index.js.map +1 -1
- package/lib/util/typeCheck.d.ts +6 -1
- package/lib/util/typeCheck.d.ts.map +1 -1
- package/lib/util/typeCheck.js.map +1 -1
- package/lib/util/typeCheckTests.d.ts +14 -2
- package/lib/util/typeCheckTests.d.ts.map +1 -1
- package/lib/util/typeCheckTests.js.map +1 -1
- package/lib/util/utils.d.ts +29 -0
- package/lib/util/utils.d.ts.map +1 -1
- package/lib/util/utils.js +9 -0
- package/lib/util/utils.js.map +1 -1
- package/package.json +22 -22
- package/src/core/forest/forest.ts +12 -1
- package/src/core/index.ts +8 -1
- package/src/core/rebase/utils.ts +12 -10
- package/src/core/revertible.ts +35 -1
- package/src/core/schema-stored/storedSchemaRepository.ts +2 -1
- package/src/core/tree/anchorSet.ts +2 -1
- package/src/core/tree/detachedFieldIndexCodec.ts +4 -3
- package/src/core/tree/index.ts +1 -0
- package/src/core/tree/visitorUtils.ts +56 -1
- package/src/feature-libraries/chunked-forest/chunkedForest.ts +33 -7
- package/src/feature-libraries/chunked-forest/uniformChunk.ts +3 -3
- package/src/feature-libraries/flex-tree/context.ts +1 -1
- package/src/feature-libraries/index.ts +9 -0
- package/src/feature-libraries/indexing/anchorTreeIndex.ts +453 -0
- package/src/feature-libraries/indexing/index.ts +11 -0
- package/src/feature-libraries/indexing/types.ts +37 -0
- package/src/feature-libraries/object-forest/objectForest.ts +22 -4
- package/src/feature-libraries/sequence-field/invert.ts +4 -4
- package/src/feature-libraries/sequence-field/sequenceFieldToDelta.ts +4 -4
- package/src/index.ts +16 -6
- package/src/packageVersion.ts +1 -1
- package/src/shared-tree/index.ts +0 -2
- package/src/shared-tree/schematizingTreeView.ts +7 -7
- package/src/shared-tree/sharedTree.ts +60 -6
- package/src/shared-tree/sharedTreeChangeFamily.ts +5 -4
- package/src/shared-tree/treeCheckout.ts +186 -193
- package/src/shared-tree-core/branch.ts +93 -220
- package/src/shared-tree-core/branchCommitEnricher.ts +69 -64
- package/src/shared-tree-core/defaultResubmitMachine.ts +3 -2
- package/src/shared-tree-core/editManager.ts +1 -1
- package/src/shared-tree-core/index.ts +9 -2
- package/src/shared-tree-core/sharedTreeCore.ts +17 -62
- package/src/shared-tree-core/transaction.ts +165 -0
- package/src/shared-tree-core/transactionEnricher.ts +30 -24
- package/src/simple-tree/api/identifierIndex.ts +64 -0
- package/src/simple-tree/api/index.ts +5 -0
- package/src/simple-tree/api/simpleSchemaToJsonSchema.ts +17 -18
- package/src/simple-tree/api/simpleTreeIndex.ts +231 -0
- package/src/simple-tree/api/tree.ts +8 -5
- package/src/simple-tree/api/treeNodeApi.ts +1 -1
- package/src/simple-tree/core/index.ts +1 -0
- package/src/simple-tree/core/treeNodeKernel.ts +37 -2
- package/src/simple-tree/core/unhydratedFlexTree.ts +2 -1
- package/src/simple-tree/index.ts +4 -0
- package/src/simple-tree/objectNode.ts +19 -12
- package/src/simple-tree/toMapTree.ts +5 -5
- package/src/util/index.ts +3 -1
- package/src/util/typeCheck.ts +6 -1
- package/src/util/typeCheckTests.ts +11 -1
- package/src/util/utils.ts +38 -0
- package/dist/events/emitter.d.ts +0 -139
- package/dist/events/emitter.d.ts.map +0 -1
- package/dist/events/emitter.js +0 -165
- package/dist/events/emitter.js.map +0 -1
- package/dist/events/index.d.ts +0 -7
- package/dist/events/index.d.ts.map +0 -1
- package/dist/events/index.js +0 -11
- package/dist/events/index.js.map +0 -1
- package/dist/events/interop.d.ts +0 -30
- package/dist/events/interop.d.ts.map +0 -1
- package/dist/events/interop.js.map +0 -1
- package/dist/events/listeners.d.ts +0 -76
- package/dist/events/listeners.d.ts.map +0 -1
- package/dist/events/listeners.js +0 -7
- package/dist/events/listeners.js.map +0 -1
- package/dist/shared-tree-core/transactionStack.d.ts +0 -29
- package/dist/shared-tree-core/transactionStack.d.ts.map +0 -1
- package/dist/shared-tree-core/transactionStack.js +0 -41
- package/dist/shared-tree-core/transactionStack.js.map +0 -1
- package/dist/util/transactionResult.d.ts +0 -19
- package/dist/util/transactionResult.d.ts.map +0 -1
- package/dist/util/transactionResult.js +0 -23
- package/dist/util/transactionResult.js.map +0 -1
- package/lib/events/emitter.d.ts +0 -139
- package/lib/events/emitter.d.ts.map +0 -1
- package/lib/events/emitter.js +0 -160
- package/lib/events/emitter.js.map +0 -1
- package/lib/events/index.d.ts +0 -7
- package/lib/events/index.d.ts.map +0 -1
- package/lib/events/index.js.map +0 -1
- package/lib/events/interop.d.ts +0 -30
- package/lib/events/interop.d.ts.map +0 -1
- package/lib/events/interop.js.map +0 -1
- package/lib/events/listeners.d.ts +0 -76
- package/lib/events/listeners.d.ts.map +0 -1
- package/lib/events/listeners.js +0 -6
- package/lib/events/listeners.js.map +0 -1
- package/lib/shared-tree-core/transactionStack.d.ts +0 -29
- package/lib/shared-tree-core/transactionStack.d.ts.map +0 -1
- package/lib/shared-tree-core/transactionStack.js +0 -37
- package/lib/shared-tree-core/transactionStack.js.map +0 -1
- package/lib/util/transactionResult.d.ts +0 -19
- package/lib/util/transactionResult.d.ts.map +0 -1
- package/lib/util/transactionResult.js +0 -20
- package/lib/util/transactionResult.js.map +0 -1
- package/src/events/README.md +0 -3
- package/src/events/emitter.ts +0 -256
- package/src/events/index.ts +0 -19
- package/src/events/interop.ts +0 -38
- package/src/events/listeners.ts +0 -80
- package/src/shared-tree-core/transactionStack.ts +0 -45
- package/src/util/transactionResult.ts +0 -19
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"treeCheckout.d.ts","sourceRoot":"","sources":["../../src/shared-tree/treeCheckout.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAEN,KAAK,mBAAmB,EACxB,MAAM,0CAA0C,CAAC;AAElD,OAAO,EACN,KAAK,MAAM,EACX,KAAK,aAAa,EAClB,KAAK,UAAU,EAEf,KAAK,mBAAmB,EACxB,KAAK,YAAY,EAEjB,KAAK,cAAc,EAEnB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,YAAY,
|
|
1
|
+
{"version":3,"file":"treeCheckout.d.ts","sourceRoot":"","sources":["../../src/shared-tree/treeCheckout.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,16 +3,22 @@
|
|
|
3
3
|
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
4
4
|
* Licensed under the MIT License.
|
|
5
5
|
*/
|
|
6
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
7
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
8
|
+
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");
|
|
9
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
10
|
+
};
|
|
11
|
+
var _TreeCheckout_transaction;
|
|
6
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.
|
|
13
|
+
exports.TreeCheckout = exports.createTreeCheckout = void 0;
|
|
8
14
|
const internal_1 = require("@fluidframework/core-utils/internal");
|
|
15
|
+
const client_utils_1 = require("@fluid-internal/client-utils");
|
|
9
16
|
const internal_2 = require("@fluidframework/telemetry-utils/internal");
|
|
10
17
|
const index_js_1 = require("../codec/index.js");
|
|
11
18
|
const index_js_2 = require("../core/index.js");
|
|
12
|
-
const index_js_3 = require("../
|
|
13
|
-
const index_js_4 = require("../
|
|
14
|
-
const index_js_5 = require("../
|
|
15
|
-
const index_js_6 = require("../util/index.js");
|
|
19
|
+
const index_js_3 = require("../feature-libraries/index.js");
|
|
20
|
+
const index_js_4 = require("../shared-tree-core/index.js");
|
|
21
|
+
const index_js_5 = require("../util/index.js");
|
|
16
22
|
const sharedTreeChangeFamily_js_1 = require("./sharedTreeChangeFamily.js");
|
|
17
23
|
const schematizingTreeView_js_1 = require("./schematizingTreeView.js");
|
|
18
24
|
/**
|
|
@@ -23,55 +29,31 @@ const schematizingTreeView_js_1 = require("./schematizingTreeView.js");
|
|
|
23
29
|
* and functionality required to implement {@link ITreeCheckout}.
|
|
24
30
|
*/
|
|
25
31
|
function createTreeCheckout(idCompressor, mintRevisionTag, revisionTagCodec, args) {
|
|
26
|
-
const forest = args?.forest ?? (0,
|
|
32
|
+
const forest = args?.forest ?? (0, index_js_3.buildForest)();
|
|
27
33
|
const schema = args?.schema ?? new index_js_2.TreeStoredSchemaRepository();
|
|
28
34
|
const defaultCodecOptions = { jsonValidator: index_js_1.noopValidator };
|
|
29
35
|
const defaultFieldBatchVersion = 1;
|
|
30
36
|
const changeFamily = args?.changeFamily ??
|
|
31
37
|
new sharedTreeChangeFamily_js_1.SharedTreeChangeFamily(revisionTagCodec, args?.fieldBatchCodec ??
|
|
32
|
-
(0,
|
|
38
|
+
(0, index_js_3.makeFieldBatchCodec)(defaultCodecOptions, defaultFieldBatchVersion), { jsonValidator: index_js_1.noopValidator }, args?.chunkCompressionStrategy, idCompressor);
|
|
33
39
|
const branch = args?.branch ??
|
|
34
|
-
new
|
|
40
|
+
new index_js_4.SharedTreeBranch({
|
|
35
41
|
change: changeFamily.rebaser.compose([]),
|
|
36
42
|
revision: "root",
|
|
37
43
|
}, changeFamily, () => idCompressor.generateCompressedId());
|
|
38
|
-
const events = args?.events ?? (0,
|
|
39
|
-
|
|
40
|
-
return new TreeCheckout(transaction, branch, false, changeFamily, schema, forest, events, mintRevisionTag, revisionTagCodec, idCompressor, args?.removedRoots, args?.logger, args?.breaker);
|
|
44
|
+
const events = args?.events ?? (0, client_utils_1.createEmitter)();
|
|
45
|
+
return new TreeCheckout(branch, false, changeFamily, schema, forest, events, mintRevisionTag, revisionTagCodec, idCompressor, args?.removedRoots, args?.logger, args?.breaker);
|
|
41
46
|
}
|
|
42
47
|
exports.createTreeCheckout = createTreeCheckout;
|
|
43
|
-
class Transaction {
|
|
44
|
-
constructor(branch) {
|
|
45
|
-
this.branch = branch;
|
|
46
|
-
}
|
|
47
|
-
start() {
|
|
48
|
-
this.branch.startTransaction();
|
|
49
|
-
this.branch.editor.enterTransaction();
|
|
50
|
-
}
|
|
51
|
-
commit() {
|
|
52
|
-
this.branch.commitTransaction();
|
|
53
|
-
this.branch.editor.exitTransaction();
|
|
54
|
-
return index_js_6.TransactionResult.Commit;
|
|
55
|
-
}
|
|
56
|
-
abort() {
|
|
57
|
-
this.branch.abortTransaction();
|
|
58
|
-
this.branch.editor.exitTransaction();
|
|
59
|
-
return index_js_6.TransactionResult.Abort;
|
|
60
|
-
}
|
|
61
|
-
inProgress() {
|
|
62
|
-
return this.branch.isTransacting();
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
48
|
/**
|
|
66
49
|
* An implementation of {@link ITreeCheckoutFork}.
|
|
67
50
|
*/
|
|
68
51
|
class TreeCheckout {
|
|
69
|
-
constructor(
|
|
52
|
+
constructor(_branch,
|
|
70
53
|
/** True if and only if this checkout is for a forked branch and not the "main branch" of the tree. */
|
|
71
54
|
isBranch, changeFamily, storedSchema, forest, events, mintRevisionTag, revisionTagCodec, idCompressor, removedRoots = (0, index_js_2.makeDetachedFieldIndex)("repair", revisionTagCodec, idCompressor),
|
|
72
55
|
/** Optional logger for telemetry. */
|
|
73
|
-
logger, breaker = new
|
|
74
|
-
this.transaction = transaction;
|
|
56
|
+
logger, breaker = new index_js_5.Breakable("TreeCheckout")) {
|
|
75
57
|
this._branch = _branch;
|
|
76
58
|
this.isBranch = isBranch;
|
|
77
59
|
this.changeFamily = changeFamily;
|
|
@@ -97,38 +79,72 @@ class TreeCheckout {
|
|
|
97
79
|
*/
|
|
98
80
|
this.revertibleCommitBranches = new Map();
|
|
99
81
|
/**
|
|
100
|
-
*
|
|
82
|
+
* The {@link Transactor} for this checkout.
|
|
83
|
+
* @remarks In the context of a checkout, transactions allow edits to be batched into atomic units.
|
|
84
|
+
* Edits made during a transaction will update the local state of the tree immediately, but will be squashed into a single edit when the transaction is committed.
|
|
85
|
+
* If the transaction is aborted, the local state will be reset to what it was before the transaction began.
|
|
86
|
+
* Transactions may nest, meaning that a transaction may be started while a transaction is already ongoing.
|
|
87
|
+
*
|
|
88
|
+
* To avoid updating observers of the view state with intermediate results during a transaction,
|
|
89
|
+
* use {@link ITreeCheckout#branch} and {@link ISharedTreeFork#merge}.
|
|
101
90
|
*/
|
|
102
|
-
this.
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
this.
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
91
|
+
_TreeCheckout_transaction.set(this, new index_js_4.TransactionStack(() => {
|
|
92
|
+
// Keep track of the commit that each transaction was on when it started
|
|
93
|
+
// TODO:#8603: This may need to be computed differently if we allow rebasing during a transaction.
|
|
94
|
+
const startCommit = this._branch.getHead();
|
|
95
|
+
// Keep track of all the forks created during the transaction so that we can dispose them when the transaction ends.
|
|
96
|
+
// This is a policy decision that we think is useful for the user, but it is not necessary for correctness.
|
|
97
|
+
const forks = new Set();
|
|
98
|
+
const onDisposeUnSubscribes = [];
|
|
99
|
+
const onForkUnSubscribe = (0, index_js_4.onForkTransitive)(this, (fork) => {
|
|
100
|
+
forks.add(fork);
|
|
101
|
+
onDisposeUnSubscribes.push(fork.events.on("dispose", () => forks.delete(fork)));
|
|
102
|
+
});
|
|
103
|
+
// When each transaction is started, take a snapshot of the current state of removed roots
|
|
104
|
+
const removedRoots = this.removedRoots.clone();
|
|
105
|
+
this._branch.editor.enterTransaction();
|
|
106
|
+
return (result) => {
|
|
107
|
+
this._branch.editor.exitTransaction();
|
|
108
|
+
switch (result) {
|
|
109
|
+
case index_js_4.TransactionResult.Abort:
|
|
110
|
+
this._branch.removeAfter(startCommit);
|
|
111
|
+
// If a transaction is rolled back, revert removed roots back to the latest snapshot
|
|
112
|
+
this.removedRoots = removedRoots;
|
|
113
|
+
break;
|
|
114
|
+
case index_js_4.TransactionResult.Commit: {
|
|
115
|
+
const removedCommits = this._branch.squashAfter(startCommit);
|
|
116
|
+
const transactionRevision = this._branch.getHead().revision;
|
|
117
|
+
for (const transactionStep of removedCommits) {
|
|
118
|
+
this.removedRoots.updateMajor(transactionStep.revision, transactionRevision);
|
|
119
|
+
}
|
|
120
|
+
break;
|
|
121
|
+
}
|
|
122
|
+
default:
|
|
123
|
+
(0, internal_1.unreachableCase)(result);
|
|
124
|
+
}
|
|
125
|
+
forks.forEach((fork) => fork.dispose());
|
|
126
|
+
onDisposeUnSubscribes.forEach((unsubscribe) => unsubscribe());
|
|
127
|
+
onForkUnSubscribe();
|
|
128
|
+
};
|
|
129
|
+
}));
|
|
117
130
|
// We subscribe to `beforeChange` rather than `afterChange` here because it's possible that the change is invalid WRT our forest.
|
|
118
131
|
// For example, a bug in the editor might produce a malformed change object and thus applying the change to the forest will throw an error.
|
|
119
132
|
// In such a case we will crash here, preventing the change from being added to the commit graph, and preventing `afterChange` from firing.
|
|
120
133
|
// One important consequence of this is that we will not submit the op containing the invalid change, since op submissions happens in response to `afterChange`.
|
|
121
134
|
_branch.events.on("beforeChange", (event) => {
|
|
122
135
|
if (event.change !== undefined) {
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
136
|
+
let revision;
|
|
137
|
+
if (event.type === "replace") {
|
|
138
|
+
(0, internal_1.assert)((0, index_js_5.hasSome)(event.newCommits), 0xa81 /* Expected new commit for non no-op change event */);
|
|
139
|
+
revision = (0, index_js_5.getLast)(event.newCommits).revision;
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
revision = event.change.revision;
|
|
143
|
+
}
|
|
128
144
|
// Conflicts due to schema will be empty and thus are not applied.
|
|
129
145
|
for (const change of event.change.change.changes) {
|
|
130
146
|
if (change.type === "data") {
|
|
131
|
-
const delta = (0,
|
|
147
|
+
const delta = (0, index_js_3.intoDelta)((0, index_js_2.tagChange)(change.innerChange, revision));
|
|
132
148
|
this.withCombinedVisitor((visitor) => {
|
|
133
149
|
(0, index_js_2.visitDelta)(delta, visitor, this.removedRoots, revision);
|
|
134
150
|
});
|
|
@@ -152,25 +168,18 @@ class TreeCheckout {
|
|
|
152
168
|
storedSchema.apply(change.innerChange.schema.new);
|
|
153
169
|
}
|
|
154
170
|
else {
|
|
155
|
-
(0,
|
|
171
|
+
(0, index_js_5.fail)("Unknown Shared Tree change type.");
|
|
156
172
|
}
|
|
157
173
|
}
|
|
158
174
|
this.events.emit("afterBatch");
|
|
159
175
|
}
|
|
160
|
-
if (event.type === "replace" && (0, index_js_5.getChangeReplaceType)(event) === "transactionCommit") {
|
|
161
|
-
const firstCommit = event.newCommits[0] ?? (0, internal_1.oob)();
|
|
162
|
-
const transactionRevision = firstCommit.revision;
|
|
163
|
-
for (const transactionStep of event.removedCommits) {
|
|
164
|
-
this.removedRoots.updateMajor(transactionStep.revision, transactionRevision);
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
176
|
});
|
|
168
177
|
_branch.events.on("afterChange", (event) => {
|
|
169
178
|
// The following logic allows revertibles to be generated for the change.
|
|
170
179
|
// Currently only appends (including merges) and transaction commits are supported.
|
|
171
|
-
if (!
|
|
180
|
+
if (!this.transaction.isInProgress()) {
|
|
172
181
|
if (event.type === "append" ||
|
|
173
|
-
(event.type === "replace" && (0,
|
|
182
|
+
(event.type === "replace" && (0, index_js_4.getChangeReplaceType)(event) === "transactionCommit")) {
|
|
174
183
|
// TODO:#20949: When the SharedTree is detached, these commits will already have been garbage collected.
|
|
175
184
|
// Figure out a way to generate revertibles before the commits are garbage collected.
|
|
176
185
|
for (const commit of event.newCommits) {
|
|
@@ -185,35 +194,7 @@ class TreeCheckout {
|
|
|
185
194
|
if (this.revertibleCommitBranches.get(revision) !== undefined) {
|
|
186
195
|
throw new internal_2.UsageError("Cannot generate the same revertible more than once. Note that this can happen when multiple changed event listeners are registered.");
|
|
187
196
|
}
|
|
188
|
-
const
|
|
189
|
-
const revertible = {
|
|
190
|
-
get status() {
|
|
191
|
-
const revertibleCommit = revertibleCommits.get(revision);
|
|
192
|
-
return revertibleCommit === undefined
|
|
193
|
-
? index_js_2.RevertibleStatus.Disposed
|
|
194
|
-
: index_js_2.RevertibleStatus.Valid;
|
|
195
|
-
},
|
|
196
|
-
revert: (release = true) => {
|
|
197
|
-
if (revertible.status === index_js_2.RevertibleStatus.Disposed) {
|
|
198
|
-
throw new internal_2.UsageError("Unable to revert a revertible that has been disposed.");
|
|
199
|
-
}
|
|
200
|
-
const revertMetrics = this.revertRevertible(revision, kind);
|
|
201
|
-
this.logger?.sendTelemetryEvent({
|
|
202
|
-
eventName: TreeCheckout.revertTelemetryEventName,
|
|
203
|
-
...revertMetrics,
|
|
204
|
-
});
|
|
205
|
-
if (release) {
|
|
206
|
-
revertible.dispose();
|
|
207
|
-
}
|
|
208
|
-
},
|
|
209
|
-
dispose: () => {
|
|
210
|
-
if (revertible.status === index_js_2.RevertibleStatus.Disposed) {
|
|
211
|
-
throw new internal_2.UsageError("Unable to dispose a revertible that has already been disposed.");
|
|
212
|
-
}
|
|
213
|
-
this.disposeRevertible(revertible, revision);
|
|
214
|
-
onRevertibleDisposed?.(revertible);
|
|
215
|
-
},
|
|
216
|
-
};
|
|
197
|
+
const revertible = this.createRevertible(revision, kind, this, onRevertibleDisposed);
|
|
217
198
|
this.revertibleCommitBranches.set(revision, _branch.fork(commit));
|
|
218
199
|
this.revertibles.add(revertible);
|
|
219
200
|
return revertible;
|
|
@@ -259,8 +240,61 @@ class TreeCheckout {
|
|
|
259
240
|
(0, internal_1.assert)(false, 0x911 /* Invalid operation on a disposed TreeCheckout */);
|
|
260
241
|
}
|
|
261
242
|
}
|
|
243
|
+
/**
|
|
244
|
+
* Creates a {@link RevertibleAlpha} object that can undo a specific change in the tree's history.
|
|
245
|
+
* Revision must exist in the given {@link TreeCheckout}'s branch.
|
|
246
|
+
*
|
|
247
|
+
* @param revision - The revision tag identifying the change to be made revertible.
|
|
248
|
+
* @param kind - The {@link CommitKind} that produced this revertible (e.g., Default, Undo, Redo).
|
|
249
|
+
* @param checkout - The {@link TreeCheckout} instance this revertible belongs to.
|
|
250
|
+
* @param onRevertibleDisposed - Callback function that will be called when the revertible is disposed.
|
|
251
|
+
* @returns - {@link RevertibleAlpha}
|
|
252
|
+
*/
|
|
253
|
+
createRevertible(revision, kind, checkout, onRevertibleDisposed) {
|
|
254
|
+
const commitBranches = checkout.revertibleCommitBranches;
|
|
255
|
+
const revertible = {
|
|
256
|
+
get status() {
|
|
257
|
+
const revertibleCommit = commitBranches.get(revision);
|
|
258
|
+
return revertibleCommit === undefined
|
|
259
|
+
? index_js_2.RevertibleStatus.Disposed
|
|
260
|
+
: index_js_2.RevertibleStatus.Valid;
|
|
261
|
+
},
|
|
262
|
+
revert: (release = true) => {
|
|
263
|
+
if (revertible.status === index_js_2.RevertibleStatus.Disposed) {
|
|
264
|
+
throw new internal_2.UsageError("Unable to revert a revertible that has been disposed.");
|
|
265
|
+
}
|
|
266
|
+
const revertMetrics = checkout.revertRevertible(revision, kind);
|
|
267
|
+
checkout.logger?.sendTelemetryEvent({
|
|
268
|
+
eventName: TreeCheckout.revertTelemetryEventName,
|
|
269
|
+
...revertMetrics,
|
|
270
|
+
});
|
|
271
|
+
if (release) {
|
|
272
|
+
revertible.dispose();
|
|
273
|
+
}
|
|
274
|
+
},
|
|
275
|
+
clone: (forkedBranch) => {
|
|
276
|
+
if (forkedBranch === undefined) {
|
|
277
|
+
return this.createRevertible(revision, kind, checkout, onRevertibleDisposed);
|
|
278
|
+
}
|
|
279
|
+
// TODO:#23442: When a revertible is cloned for a forked branch, optimize to create a fork of a revertible branch once per revision NOT once per revision per checkout.
|
|
280
|
+
const forkedCheckout = (0, schematizingTreeView_js_1.getCheckout)(forkedBranch);
|
|
281
|
+
const revertibleBranch = this.revertibleCommitBranches.get(revision);
|
|
282
|
+
(0, internal_1.assert)(revertibleBranch !== undefined, 0xa82 /* change to revert does not exist on the given forked branch */);
|
|
283
|
+
forkedCheckout.revertibleCommitBranches.set(revision, revertibleBranch.fork());
|
|
284
|
+
return this.createRevertible(revision, kind, forkedCheckout, onRevertibleDisposed);
|
|
285
|
+
},
|
|
286
|
+
dispose: () => {
|
|
287
|
+
if (revertible.status === index_js_2.RevertibleStatus.Disposed) {
|
|
288
|
+
throw new internal_2.UsageError("Unable to dispose a revertible that has already been disposed.");
|
|
289
|
+
}
|
|
290
|
+
checkout.disposeRevertible(revertible, revision);
|
|
291
|
+
onRevertibleDisposed?.(revertible);
|
|
292
|
+
},
|
|
293
|
+
};
|
|
294
|
+
return revertible;
|
|
295
|
+
}
|
|
262
296
|
viewWith(config) {
|
|
263
|
-
const view = new schematizingTreeView_js_1.SchematizingSimpleTreeView(this, config, (0,
|
|
297
|
+
const view = new schematizingTreeView_js_1.SchematizingSimpleTreeView(this, config, (0, index_js_3.createNodeKeyManager)(this.idCompressor), this.breaker, () => {
|
|
264
298
|
this.views.delete(view);
|
|
265
299
|
});
|
|
266
300
|
this.views.add(view);
|
|
@@ -277,19 +311,23 @@ class TreeCheckout {
|
|
|
277
311
|
this.checkNotDisposed();
|
|
278
312
|
return this.forest.anchors.locate(anchor);
|
|
279
313
|
}
|
|
314
|
+
get transaction() {
|
|
315
|
+
return __classPrivateFieldGet(this, _TreeCheckout_transaction, "f");
|
|
316
|
+
}
|
|
280
317
|
branch() {
|
|
281
318
|
this.checkNotDisposed("The parent branch has already been disposed and can no longer create new branches.");
|
|
282
319
|
const anchors = new index_js_2.AnchorSet();
|
|
283
320
|
const branch = this._branch.fork();
|
|
284
321
|
const storedSchema = this.storedSchema.clone();
|
|
285
322
|
const forest = this.forest.clone(storedSchema, anchors);
|
|
286
|
-
const
|
|
287
|
-
|
|
323
|
+
const checkout = new TreeCheckout(branch, true, this.changeFamily, storedSchema, forest, (0, client_utils_1.createEmitter)(), this.mintRevisionTag, this.revisionTagCodec, this.idCompressor, this.removedRoots.clone(), this.logger, this.breaker);
|
|
324
|
+
this.events.emit("fork", checkout);
|
|
325
|
+
return checkout;
|
|
288
326
|
}
|
|
289
327
|
rebase(checkout) {
|
|
290
328
|
this.checkNotDisposed("The target of the branch rebase has been disposed and cannot be rebased.");
|
|
291
329
|
checkout.checkNotDisposed("The source of the branch rebase has been disposed and cannot be rebased.");
|
|
292
|
-
(0, internal_1.assert)(!checkout.transaction.
|
|
330
|
+
(0, internal_1.assert)(!checkout.transaction.isInProgress(), 0x9af /* A view cannot be rebased while it has a pending transaction */);
|
|
293
331
|
(0, internal_1.assert)(checkout.isBranch, 0xa5d /* The main branch cannot be rebased onto another branch. */);
|
|
294
332
|
checkout._branch.rebaseOnto(this._branch);
|
|
295
333
|
}
|
|
@@ -300,14 +338,14 @@ class TreeCheckout {
|
|
|
300
338
|
merge(checkout, disposeMerged = true) {
|
|
301
339
|
this.checkNotDisposed("The target of the branch merge has been disposed and cannot be merged.");
|
|
302
340
|
checkout.checkNotDisposed("The source of the branch merge has been disposed and cannot be merged.");
|
|
303
|
-
(0, internal_1.assert)(!this.transaction.
|
|
304
|
-
while (checkout.transaction.
|
|
341
|
+
(0, internal_1.assert)(!this.transaction.isInProgress(), 0x9b0 /* Views cannot be merged into a view while it has a pending transaction */);
|
|
342
|
+
while (checkout.transaction.isInProgress()) {
|
|
305
343
|
checkout.transaction.commit();
|
|
306
344
|
}
|
|
307
345
|
this._branch.merge(checkout._branch);
|
|
308
346
|
if (disposeMerged && checkout.isBranch) {
|
|
309
347
|
// Dispose the merged checkout unless it is the main branch.
|
|
310
|
-
checkout[
|
|
348
|
+
checkout[index_js_5.disposeSymbol]();
|
|
311
349
|
}
|
|
312
350
|
}
|
|
313
351
|
updateSchema(newSchema) {
|
|
@@ -315,16 +353,18 @@ class TreeCheckout {
|
|
|
315
353
|
this.editor.schema.setStoredSchema(this.storedSchema.clone(), newSchema);
|
|
316
354
|
}
|
|
317
355
|
dispose() {
|
|
318
|
-
this[
|
|
356
|
+
this[index_js_5.disposeSymbol]();
|
|
319
357
|
}
|
|
320
|
-
[
|
|
358
|
+
[(_TreeCheckout_transaction = new WeakMap(), index_js_5.disposeSymbol)]() {
|
|
321
359
|
this.checkNotDisposed("The branch has already been disposed and cannot be disposed again.");
|
|
322
360
|
this.disposed = true;
|
|
361
|
+
__classPrivateFieldGet(this, _TreeCheckout_transaction, "f").dispose();
|
|
323
362
|
this.purgeRevertibles();
|
|
324
363
|
this._branch.dispose();
|
|
325
364
|
for (const view of this.views) {
|
|
326
365
|
view.dispose();
|
|
327
366
|
}
|
|
367
|
+
this.events.emit("dispose");
|
|
328
368
|
}
|
|
329
369
|
getRemovedRoots() {
|
|
330
370
|
this.assertNoUntrackedRoots();
|
|
@@ -333,7 +373,7 @@ class TreeCheckout {
|
|
|
333
373
|
for (const { id, root } of this.removedRoots.entries()) {
|
|
334
374
|
const parentField = this.removedRoots.toFieldKey(root);
|
|
335
375
|
this.forest.moveCursorToPath({ parent: undefined, parentField, parentIndex: 0 }, cursor);
|
|
336
|
-
const tree = (0,
|
|
376
|
+
const tree = (0, index_js_3.jsonableTreeFromCursor)(cursor);
|
|
337
377
|
// This method is used for tree consistency comparison.
|
|
338
378
|
const { major, minor } = id;
|
|
339
379
|
const finalizedMajor = major !== undefined ? this.revisionTagCodec.encode(major) : major;
|
|
@@ -360,7 +400,7 @@ class TreeCheckout {
|
|
|
360
400
|
this.revertibles.delete(revertible);
|
|
361
401
|
}
|
|
362
402
|
revertRevertible(revision, kind) {
|
|
363
|
-
if (this.
|
|
403
|
+
if (this.transaction.isInProgress()) {
|
|
364
404
|
throw new internal_2.UsageError("Undo is not yet supported during transactions.");
|
|
365
405
|
}
|
|
366
406
|
const revertibleBranch = this.revertibleCommitBranches.get(revision);
|
|
@@ -407,13 +447,12 @@ class TreeCheckout {
|
|
|
407
447
|
*/
|
|
408
448
|
isRemoteChangeEvent(event) {
|
|
409
449
|
return (
|
|
410
|
-
//
|
|
450
|
+
// Remote changes are only ever applied to the main branch
|
|
411
451
|
!this.isBranch &&
|
|
412
|
-
//
|
|
413
|
-
//
|
|
414
|
-
// transaction commits are remote changes
|
|
452
|
+
// Remote changes are applied to the main branch by rebasing it onto the trunk.
|
|
453
|
+
// No other rebases are allowed on the main branch, so we can use this to detect remote changes.
|
|
415
454
|
event.type === "replace" &&
|
|
416
|
-
(0,
|
|
455
|
+
(0, index_js_4.getChangeReplaceType)(event) === "rebase");
|
|
417
456
|
}
|
|
418
457
|
}
|
|
419
458
|
exports.TreeCheckout = TreeCheckout;
|
|
@@ -422,20 +461,4 @@ exports.TreeCheckout = TreeCheckout;
|
|
|
422
461
|
* @privateRemarks Exposed for testing purposes.
|
|
423
462
|
*/
|
|
424
463
|
TreeCheckout.revertTelemetryEventName = "RevertRevertible";
|
|
425
|
-
/**
|
|
426
|
-
* Run a synchronous transaction on the given shared tree view.
|
|
427
|
-
* This is a convenience helper around the {@link SharedTreeFork#transaction} APIs.
|
|
428
|
-
* @param view - the view on which to run the transaction
|
|
429
|
-
* @param transaction - the transaction function. This will be executed immediately. It is passed `view` as an argument for convenience.
|
|
430
|
-
* If this function returns an `Abort` result then the transaction will be aborted. Otherwise, it will be committed.
|
|
431
|
-
* @returns whether or not the transaction was committed or aborted
|
|
432
|
-
*/
|
|
433
|
-
function runSynchronous(view, transaction) {
|
|
434
|
-
view.transaction.start();
|
|
435
|
-
const result = transaction(view);
|
|
436
|
-
return result === index_js_6.TransactionResult.Abort
|
|
437
|
-
? view.transaction.abort()
|
|
438
|
-
: view.transaction.commit();
|
|
439
|
-
}
|
|
440
|
-
exports.runSynchronous = runSynchronous;
|
|
441
464
|
//# sourceMappingURL=treeCheckout.js.map
|