@fluidframework/tree 2.10.0 → 2.12.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 +29 -0
- package/api-report/tree.alpha.api.md +49 -18
- package/api-report/tree.beta.api.md +6 -15
- package/api-report/tree.legacy.alpha.api.md +6 -15
- package/api-report/tree.legacy.public.api.md +6 -15
- package/api-report/tree.public.api.md +6 -15
- 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 +3 -3
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +6 -3
- 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 +13 -17
- 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/format.d.ts +0 -3
- package/dist/core/schema-stored/format.d.ts.map +1 -1
- package/dist/core/schema-stored/format.js.map +1 -1
- package/dist/core/schema-stored/schema.d.ts +12 -10
- package/dist/core/schema-stored/schema.d.ts.map +1 -1
- package/dist/core/schema-stored/schema.js +3 -5
- package/dist/core/schema-stored/schema.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/schema-view/index.d.ts +1 -1
- package/dist/core/schema-view/index.d.ts.map +1 -1
- package/dist/core/schema-view/index.js +1 -2
- package/dist/core/schema-view/index.js.map +1 -1
- package/dist/core/schema-view/view.d.ts +0 -7
- package/dist/core/schema-view/view.d.ts.map +1 -1
- package/dist/core/schema-view/view.js +1 -12
- package/dist/core/schema-view/view.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/{lib/feature-libraries/chunked-forest → dist/core/tree}/chunk.d.ts +2 -1
- package/dist/core/tree/chunk.d.ts.map +1 -0
- package/dist/{feature-libraries/chunked-forest → core/tree}/chunk.js +2 -2
- package/dist/core/tree/chunk.js.map +1 -0
- 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 +2 -1
- package/dist/core/tree/index.d.ts.map +1 -1
- package/dist/core/tree/index.js +6 -1
- package/dist/core/tree/index.js.map +1 -1
- package/dist/core/tree/treeTextFormat.d.ts +0 -5
- package/dist/core/tree/treeTextFormat.d.ts.map +1 -1
- package/dist/core/tree/treeTextFormat.js.map +1 -1
- package/dist/core/tree/types.d.ts +0 -5
- package/dist/core/tree/types.d.ts.map +1 -1
- package/dist/core/tree/types.js +0 -1
- package/dist/core/tree/types.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/basicChunk.d.ts +1 -2
- package/dist/feature-libraries/chunked-forest/basicChunk.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/basicChunk.js +14 -14
- package/dist/feature-libraries/chunked-forest/basicChunk.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/chunkTree.d.ts +1 -2
- package/dist/feature-libraries/chunked-forest/chunkTree.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/chunkTree.js +2 -3
- package/dist/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/chunkedForest.d.ts +5 -3
- 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/codec/chunkCodecUtilities.d.ts +1 -2
- package/dist/feature-libraries/chunked-forest/codec/chunkCodecUtilities.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkCodecUtilities.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts +1 -2
- package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.d.ts +1 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/emptyChunk.d.ts +1 -1
- package/dist/feature-libraries/chunked-forest/emptyChunk.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/emptyChunk.js +2 -3
- package/dist/feature-libraries/chunked-forest/emptyChunk.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/index.d.ts +1 -1
- package/dist/feature-libraries/chunked-forest/index.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/index.js +5 -5
- package/dist/feature-libraries/chunked-forest/index.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/sequenceChunk.d.ts +1 -1
- package/dist/feature-libraries/chunked-forest/sequenceChunk.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/sequenceChunk.js +2 -2
- package/dist/feature-libraries/chunked-forest/sequenceChunk.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/uniformChunk.d.ts +1 -2
- package/dist/feature-libraries/chunked-forest/uniformChunk.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/uniformChunk.js +14 -14
- package/dist/feature-libraries/chunked-forest/uniformChunk.js.map +1 -1
- package/dist/feature-libraries/default-schema/defaultSchema.d.ts.map +1 -1
- package/dist/feature-libraries/default-schema/defaultSchema.js +1 -0
- package/dist/feature-libraries/default-schema/defaultSchema.js.map +1 -1
- package/dist/feature-libraries/default-schema/schemaChecker.d.ts.map +1 -1
- package/dist/feature-libraries/default-schema/schemaChecker.js +2 -1
- package/dist/feature-libraries/default-schema/schemaChecker.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 +2 -1
- package/dist/feature-libraries/index.d.ts.map +1 -1
- package/dist/feature-libraries/index.js +9 -2
- package/dist/feature-libraries/index.js.map +1 -1
- package/dist/feature-libraries/indexing/anchorTreeIndex.d.ts +139 -0
- package/dist/feature-libraries/indexing/anchorTreeIndex.d.ts.map +1 -0
- package/dist/feature-libraries/indexing/anchorTreeIndex.js +387 -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/modular-schema/discrepancies.d.ts +84 -24
- package/dist/feature-libraries/modular-schema/discrepancies.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/discrepancies.js +32 -33
- package/dist/feature-libraries/modular-schema/discrepancies.js.map +1 -1
- package/dist/feature-libraries/modular-schema/index.d.ts +1 -1
- package/dist/feature-libraries/modular-schema/index.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/index.js +5 -1
- package/dist/feature-libraries/modular-schema/index.js.map +1 -1
- package/dist/feature-libraries/modular-schema/isNeverTree.d.ts +0 -1
- package/dist/feature-libraries/modular-schema/isNeverTree.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/isNeverTree.js +0 -1
- package/dist/feature-libraries/modular-schema/isNeverTree.js.map +1 -1
- 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/optional-field/optionalFieldChangeFormatV1.d.ts +6 -6
- package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV1.d.ts.map +1 -1
- package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV2.d.ts +7 -7
- package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV2.d.ts.map +1 -1
- package/dist/feature-libraries/schema-edits/schemaChangeFormat.d.ts +12 -12
- package/dist/feature-libraries/sequence-field/formatV1.d.ts +99 -99
- package/dist/feature-libraries/sequence-field/formatV1.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/formatV2.d.ts +76 -76
- package/dist/feature-libraries/sequence-field/formatV2.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/formatV3.d.ts +54 -54
- 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/feature-libraries/sequence-field/types.d.ts +0 -1
- package/dist/feature-libraries/sequence-field/types.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/types.js.map +1 -1
- package/dist/index.d.ts +6 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -13
- 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 +2 -2
- 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/schematizeTree.d.ts +1 -1
- package/dist/shared-tree/schematizeTree.d.ts.map +1 -1
- package/dist/shared-tree/schematizeTree.js +6 -6
- package/dist/shared-tree/schematizeTree.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 +35 -38
- package/dist/shared-tree/schematizingTreeView.js.map +1 -1
- package/dist/shared-tree/sharedTree.d.ts +27 -6
- package/dist/shared-tree/sharedTree.d.ts.map +1 -1
- package/dist/shared-tree/sharedTree.js +146 -21
- 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 +59 -72
- package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
- package/dist/shared-tree/treeCheckout.js +243 -188
- package/dist/shared-tree/treeCheckout.js.map +1 -1
- package/dist/shared-tree-core/branch.d.ts +29 -107
- package/dist/shared-tree-core/branch.d.ts.map +1 -1
- package/dist/shared-tree-core/branch.js +51 -195
- package/dist/shared-tree-core/branch.js.map +1 -1
- package/dist/shared-tree-core/branchCommitEnricher.d.ts +24 -32
- package/dist/shared-tree-core/branchCommitEnricher.d.ts.map +1 -1
- package/dist/shared-tree-core/branchCommitEnricher.js +70 -53
- 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 +4 -4
- package/dist/shared-tree-core/editManager.js.map +1 -1
- 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 +5 -4
- package/dist/shared-tree-core/index.js.map +1 -1
- package/dist/shared-tree-core/sharedTreeCore.d.ts +3 -10
- package/dist/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
- package/dist/shared-tree-core/sharedTreeCore.js +14 -67
- package/dist/shared-tree-core/sharedTreeCore.js.map +1 -1
- package/dist/shared-tree-core/transaction.d.ts +146 -0
- package/dist/shared-tree-core/transaction.d.ts.map +1 -0
- package/dist/shared-tree-core/transaction.js +211 -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/conciseTree.d.ts.map +1 -1
- package/dist/simple-tree/api/conciseTree.js +1 -1
- package/dist/simple-tree/api/conciseTree.js.map +1 -1
- package/dist/simple-tree/api/create.d.ts.map +1 -1
- package/dist/simple-tree/api/create.js +5 -1
- package/dist/simple-tree/api/create.js.map +1 -1
- package/dist/simple-tree/api/customTree.d.ts +14 -2
- package/dist/simple-tree/api/customTree.d.ts.map +1 -1
- package/dist/simple-tree/api/customTree.js +53 -3
- package/dist/simple-tree/api/customTree.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 +4 -2
- package/dist/simple-tree/api/index.d.ts.map +1 -1
- package/dist/simple-tree/api/index.js +8 -1
- package/dist/simple-tree/api/index.js.map +1 -1
- package/dist/simple-tree/api/schemaFactory.d.ts +48 -0
- package/dist/simple-tree/api/schemaFactory.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaFactory.js +5 -2
- package/dist/simple-tree/api/schemaFactory.js.map +1 -1
- package/dist/simple-tree/api/simpleSchema.d.ts +3 -1
- package/dist/simple-tree/api/simpleSchema.d.ts.map +1 -1
- package/dist/simple-tree/api/simpleSchema.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 +93 -0
- package/dist/simple-tree/api/simpleTreeIndex.js.map +1 -0
- package/dist/simple-tree/api/storedSchema.d.ts +4 -4
- package/dist/simple-tree/api/storedSchema.d.ts.map +1 -1
- package/dist/simple-tree/api/storedSchema.js +8 -21
- package/dist/simple-tree/api/storedSchema.js.map +1 -1
- package/dist/simple-tree/api/tree.d.ts +5 -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/api/verboseTree.js +1 -1
- package/dist/simple-tree/api/verboseTree.js.map +1 -1
- package/dist/simple-tree/api/view.d.ts +14 -9
- package/dist/simple-tree/api/view.d.ts.map +1 -1
- package/dist/simple-tree/api/view.js +129 -40
- package/dist/simple-tree/api/view.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 +2 -2
- package/dist/simple-tree/index.d.ts.map +1 -1
- package/dist/simple-tree/index.js +7 -2
- package/dist/simple-tree/index.js.map +1 -1
- package/dist/simple-tree/leafNodeSchema.d.ts +0 -15
- package/dist/simple-tree/leafNodeSchema.d.ts.map +1 -1
- package/dist/simple-tree/leafNodeSchema.js +0 -15
- package/dist/simple-tree/leafNodeSchema.js.map +1 -1
- package/dist/simple-tree/objectNode.d.ts +15 -5
- package/dist/simple-tree/objectNode.d.ts.map +1 -1
- package/dist/simple-tree/objectNode.js +18 -2
- package/dist/simple-tree/objectNode.js.map +1 -1
- package/dist/simple-tree/objectNodeTypes.d.ts +4 -0
- package/dist/simple-tree/objectNodeTypes.d.ts.map +1 -1
- package/dist/simple-tree/objectNodeTypes.js.map +1 -1
- package/dist/simple-tree/schemaTypes.d.ts +4 -2
- package/dist/simple-tree/schemaTypes.d.ts.map +1 -1
- package/dist/simple-tree/schemaTypes.js.map +1 -1
- package/dist/simple-tree/toMapTree.js +3 -3
- package/dist/simple-tree/toMapTree.js.map +1 -1
- package/dist/simple-tree/toStoredSchema.d.ts.map +1 -1
- package/dist/simple-tree/toStoredSchema.js +18 -13
- package/dist/simple-tree/toStoredSchema.js.map +1 -1
- package/dist/util/brand.d.ts +0 -2
- package/dist/util/brand.d.ts.map +1 -1
- package/dist/util/brand.js +0 -1
- package/dist/util/brand.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 +6 -4
- package/dist/util/index.js.map +1 -1
- package/dist/util/typeCheck.d.ts +6 -3
- 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 +42 -0
- package/dist/util/utils.d.ts.map +1 -1
- package/dist/util/utils.js +35 -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 +3 -3
- package/lib/core/index.d.ts.map +1 -1
- package/lib/core/index.js +3 -3
- 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 +13 -17
- 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/format.d.ts +0 -3
- package/lib/core/schema-stored/format.d.ts.map +1 -1
- package/lib/core/schema-stored/format.js.map +1 -1
- package/lib/core/schema-stored/schema.d.ts +12 -10
- package/lib/core/schema-stored/schema.d.ts.map +1 -1
- package/lib/core/schema-stored/schema.js +3 -5
- package/lib/core/schema-stored/schema.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/schema-view/index.d.ts +1 -1
- package/lib/core/schema-view/index.d.ts.map +1 -1
- package/lib/core/schema-view/index.js +1 -1
- package/lib/core/schema-view/index.js.map +1 -1
- package/lib/core/schema-view/view.d.ts +0 -7
- package/lib/core/schema-view/view.d.ts.map +1 -1
- package/lib/core/schema-view/view.js +0 -11
- package/lib/core/schema-view/view.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/{dist/feature-libraries/chunked-forest → lib/core/tree}/chunk.d.ts +2 -1
- package/lib/core/tree/chunk.d.ts.map +1 -0
- package/lib/{feature-libraries/chunked-forest → core/tree}/chunk.js +1 -1
- package/lib/core/tree/chunk.js.map +1 -0
- 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 +2 -1
- package/lib/core/tree/index.d.ts.map +1 -1
- package/lib/core/tree/index.js +2 -1
- package/lib/core/tree/index.js.map +1 -1
- package/lib/core/tree/treeTextFormat.d.ts +0 -5
- package/lib/core/tree/treeTextFormat.d.ts.map +1 -1
- package/lib/core/tree/treeTextFormat.js.map +1 -1
- package/lib/core/tree/types.d.ts +0 -5
- package/lib/core/tree/types.d.ts.map +1 -1
- package/lib/core/tree/types.js +0 -1
- package/lib/core/tree/types.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/basicChunk.d.ts +1 -2
- package/lib/feature-libraries/chunked-forest/basicChunk.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/basicChunk.js +1 -1
- package/lib/feature-libraries/chunked-forest/basicChunk.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/chunkTree.d.ts +1 -2
- package/lib/feature-libraries/chunked-forest/chunkTree.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/chunkTree.js +1 -2
- package/lib/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/chunkedForest.d.ts +5 -3
- 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/codec/chunkCodecUtilities.d.ts +1 -2
- package/lib/feature-libraries/chunked-forest/codec/chunkCodecUtilities.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkCodecUtilities.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts +1 -2
- package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.d.ts +1 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/emptyChunk.d.ts +1 -1
- package/lib/feature-libraries/chunked-forest/emptyChunk.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/emptyChunk.js +1 -2
- package/lib/feature-libraries/chunked-forest/emptyChunk.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/index.d.ts +1 -1
- package/lib/feature-libraries/chunked-forest/index.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/index.js +1 -1
- package/lib/feature-libraries/chunked-forest/index.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/sequenceChunk.d.ts +1 -1
- package/lib/feature-libraries/chunked-forest/sequenceChunk.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/sequenceChunk.js +1 -1
- package/lib/feature-libraries/chunked-forest/sequenceChunk.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/uniformChunk.d.ts +1 -2
- package/lib/feature-libraries/chunked-forest/uniformChunk.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/uniformChunk.js +4 -4
- package/lib/feature-libraries/chunked-forest/uniformChunk.js.map +1 -1
- package/lib/feature-libraries/default-schema/defaultSchema.d.ts.map +1 -1
- package/lib/feature-libraries/default-schema/defaultSchema.js +1 -0
- package/lib/feature-libraries/default-schema/defaultSchema.js.map +1 -1
- package/lib/feature-libraries/default-schema/schemaChecker.d.ts.map +1 -1
- package/lib/feature-libraries/default-schema/schemaChecker.js +2 -1
- package/lib/feature-libraries/default-schema/schemaChecker.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 +2 -1
- package/lib/feature-libraries/index.d.ts.map +1 -1
- package/lib/feature-libraries/index.js +2 -1
- package/lib/feature-libraries/index.js.map +1 -1
- package/lib/feature-libraries/indexing/anchorTreeIndex.d.ts +139 -0
- package/lib/feature-libraries/indexing/anchorTreeIndex.d.ts.map +1 -0
- package/lib/feature-libraries/indexing/anchorTreeIndex.js +382 -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/modular-schema/discrepancies.d.ts +84 -24
- package/lib/feature-libraries/modular-schema/discrepancies.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/discrepancies.js +25 -28
- package/lib/feature-libraries/modular-schema/discrepancies.js.map +1 -1
- package/lib/feature-libraries/modular-schema/index.d.ts +1 -1
- package/lib/feature-libraries/modular-schema/index.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/index.js +1 -1
- package/lib/feature-libraries/modular-schema/index.js.map +1 -1
- package/lib/feature-libraries/modular-schema/isNeverTree.d.ts +0 -1
- package/lib/feature-libraries/modular-schema/isNeverTree.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/isNeverTree.js +0 -1
- package/lib/feature-libraries/modular-schema/isNeverTree.js.map +1 -1
- 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/optional-field/optionalFieldChangeFormatV1.d.ts +6 -6
- package/lib/feature-libraries/optional-field/optionalFieldChangeFormatV1.d.ts.map +1 -1
- package/lib/feature-libraries/optional-field/optionalFieldChangeFormatV2.d.ts +7 -7
- package/lib/feature-libraries/optional-field/optionalFieldChangeFormatV2.d.ts.map +1 -1
- package/lib/feature-libraries/schema-edits/schemaChangeFormat.d.ts +12 -12
- package/lib/feature-libraries/sequence-field/formatV1.d.ts +99 -99
- package/lib/feature-libraries/sequence-field/formatV1.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/formatV2.d.ts +76 -76
- package/lib/feature-libraries/sequence-field/formatV2.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/formatV3.d.ts +54 -54
- 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/feature-libraries/sequence-field/types.d.ts +0 -1
- package/lib/feature-libraries/sequence-field/types.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/types.js.map +1 -1
- package/lib/index.d.ts +6 -7
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +3 -4
- 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 +2 -2
- 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/schematizeTree.d.ts +1 -1
- package/lib/shared-tree/schematizeTree.d.ts.map +1 -1
- package/lib/shared-tree/schematizeTree.js +7 -7
- package/lib/shared-tree/schematizeTree.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 +12 -16
- package/lib/shared-tree/schematizingTreeView.js.map +1 -1
- package/lib/shared-tree/sharedTree.d.ts +27 -6
- package/lib/shared-tree/sharedTree.d.ts.map +1 -1
- package/lib/shared-tree/sharedTree.js +135 -10
- 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 +59 -72
- package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
- package/lib/shared-tree/treeCheckout.js +233 -177
- package/lib/shared-tree/treeCheckout.js.map +1 -1
- package/lib/shared-tree-core/branch.d.ts +29 -107
- package/lib/shared-tree-core/branch.d.ts.map +1 -1
- package/lib/shared-tree-core/branch.js +50 -193
- package/lib/shared-tree-core/branch.js.map +1 -1
- package/lib/shared-tree-core/branchCommitEnricher.d.ts +24 -32
- package/lib/shared-tree-core/branchCommitEnricher.d.ts.map +1 -1
- package/lib/shared-tree-core/branchCommitEnricher.js +71 -54
- 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 +4 -4
- package/lib/shared-tree-core/editManager.js.map +1 -1
- 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 +2 -2
- package/lib/shared-tree-core/index.js.map +1 -1
- package/lib/shared-tree-core/sharedTreeCore.d.ts +3 -10
- package/lib/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
- package/lib/shared-tree-core/sharedTreeCore.js +15 -68
- package/lib/shared-tree-core/sharedTreeCore.js.map +1 -1
- package/lib/shared-tree-core/transaction.d.ts +146 -0
- package/lib/shared-tree-core/transaction.d.ts.map +1 -0
- package/lib/shared-tree-core/transaction.js +206 -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/conciseTree.d.ts.map +1 -1
- package/lib/simple-tree/api/conciseTree.js +2 -2
- package/lib/simple-tree/api/conciseTree.js.map +1 -1
- package/lib/simple-tree/api/create.d.ts.map +1 -1
- package/lib/simple-tree/api/create.js +5 -1
- package/lib/simple-tree/api/create.js.map +1 -1
- package/lib/simple-tree/api/customTree.d.ts +14 -2
- package/lib/simple-tree/api/customTree.d.ts.map +1 -1
- package/lib/simple-tree/api/customTree.js +50 -2
- package/lib/simple-tree/api/customTree.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 +4 -2
- package/lib/simple-tree/api/index.d.ts.map +1 -1
- package/lib/simple-tree/api/index.js +4 -1
- package/lib/simple-tree/api/index.js.map +1 -1
- package/lib/simple-tree/api/schemaFactory.d.ts +48 -0
- package/lib/simple-tree/api/schemaFactory.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaFactory.js +4 -1
- package/lib/simple-tree/api/schemaFactory.js.map +1 -1
- package/lib/simple-tree/api/simpleSchema.d.ts +3 -1
- package/lib/simple-tree/api/simpleSchema.d.ts.map +1 -1
- package/lib/simple-tree/api/simpleSchema.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 +89 -0
- package/lib/simple-tree/api/simpleTreeIndex.js.map +1 -0
- package/lib/simple-tree/api/storedSchema.d.ts +4 -4
- package/lib/simple-tree/api/storedSchema.d.ts.map +1 -1
- package/lib/simple-tree/api/storedSchema.js +5 -18
- package/lib/simple-tree/api/storedSchema.js.map +1 -1
- package/lib/simple-tree/api/tree.d.ts +5 -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/api/verboseTree.js +2 -2
- package/lib/simple-tree/api/verboseTree.js.map +1 -1
- package/lib/simple-tree/api/view.d.ts +14 -9
- package/lib/simple-tree/api/view.d.ts.map +1 -1
- package/lib/simple-tree/api/view.js +131 -42
- package/lib/simple-tree/api/view.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 +2 -2
- package/lib/simple-tree/index.d.ts.map +1 -1
- package/lib/simple-tree/index.js +2 -2
- package/lib/simple-tree/index.js.map +1 -1
- package/lib/simple-tree/leafNodeSchema.d.ts +0 -15
- package/lib/simple-tree/leafNodeSchema.d.ts.map +1 -1
- package/lib/simple-tree/leafNodeSchema.js +0 -15
- package/lib/simple-tree/leafNodeSchema.js.map +1 -1
- package/lib/simple-tree/objectNode.d.ts +15 -5
- package/lib/simple-tree/objectNode.d.ts.map +1 -1
- package/lib/simple-tree/objectNode.js +16 -1
- package/lib/simple-tree/objectNode.js.map +1 -1
- package/lib/simple-tree/objectNodeTypes.d.ts +4 -0
- package/lib/simple-tree/objectNodeTypes.d.ts.map +1 -1
- package/lib/simple-tree/objectNodeTypes.js.map +1 -1
- package/lib/simple-tree/schemaTypes.d.ts +4 -2
- package/lib/simple-tree/schemaTypes.d.ts.map +1 -1
- package/lib/simple-tree/schemaTypes.js.map +1 -1
- package/lib/simple-tree/toMapTree.js +5 -5
- package/lib/simple-tree/toMapTree.js.map +1 -1
- package/lib/simple-tree/toStoredSchema.d.ts.map +1 -1
- package/lib/simple-tree/toStoredSchema.js +19 -14
- package/lib/simple-tree/toStoredSchema.js.map +1 -1
- package/lib/util/brand.d.ts +0 -2
- package/lib/util/brand.d.ts.map +1 -1
- package/lib/util/brand.js +0 -1
- package/lib/util/brand.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 -3
- 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 +42 -0
- package/lib/util/utils.d.ts.map +1 -1
- package/lib/util/utils.js +30 -0
- package/lib/util/utils.js.map +1 -1
- package/package.json +23 -23
- package/src/core/forest/forest.ts +12 -1
- package/src/core/index.ts +13 -2
- package/src/core/rebase/utils.ts +28 -29
- package/src/core/revertible.ts +35 -1
- package/src/core/schema-stored/format.ts +0 -3
- package/src/core/schema-stored/schema.ts +13 -10
- package/src/core/schema-stored/storedSchemaRepository.ts +2 -1
- package/src/core/schema-view/index.ts +0 -1
- package/src/core/schema-view/view.ts +0 -11
- package/src/core/tree/anchorSet.ts +2 -1
- package/src/{feature-libraries/chunked-forest → core/tree}/chunk.ts +4 -4
- package/src/core/tree/detachedFieldIndexCodec.ts +4 -3
- package/src/core/tree/index.ts +9 -0
- package/src/core/tree/treeTextFormat.ts +0 -5
- package/src/core/tree/types.ts +0 -5
- package/src/core/tree/visitorUtils.ts +56 -1
- package/src/feature-libraries/chunked-forest/basicChunk.ts +4 -2
- package/src/feature-libraries/chunked-forest/chunkTree.ts +2 -1
- package/src/feature-libraries/chunked-forest/chunkedForest.ts +35 -8
- package/src/feature-libraries/chunked-forest/codec/chunkCodecUtilities.ts +1 -2
- package/src/feature-libraries/chunked-forest/codec/chunkDecoding.ts +6 -2
- package/src/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.ts +1 -1
- package/src/feature-libraries/chunked-forest/emptyChunk.ts +4 -2
- package/src/feature-libraries/chunked-forest/index.ts +1 -1
- package/src/feature-libraries/chunked-forest/sequenceChunk.ts +1 -1
- package/src/feature-libraries/chunked-forest/uniformChunk.ts +7 -4
- package/src/feature-libraries/default-schema/defaultSchema.ts +1 -0
- package/src/feature-libraries/default-schema/schemaChecker.ts +4 -1
- package/src/feature-libraries/flex-tree/context.ts +1 -1
- package/src/feature-libraries/index.ts +22 -0
- package/src/feature-libraries/indexing/anchorTreeIndex.ts +482 -0
- package/src/feature-libraries/indexing/index.ts +11 -0
- package/src/feature-libraries/indexing/types.ts +37 -0
- package/src/feature-libraries/modular-schema/discrepancies.ts +76 -38
- package/src/feature-libraries/modular-schema/index.ts +13 -0
- package/src/feature-libraries/modular-schema/isNeverTree.ts +0 -2
- 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/feature-libraries/sequence-field/types.ts +0 -1
- package/src/index.ts +17 -35
- package/src/packageVersion.ts +1 -1
- package/src/shared-tree/index.ts +1 -2
- package/src/shared-tree/schematizeTree.ts +6 -10
- package/src/shared-tree/schematizingTreeView.ts +18 -28
- package/src/shared-tree/sharedTree.ts +216 -30
- package/src/shared-tree/sharedTreeChangeFamily.ts +5 -4
- package/src/shared-tree/treeCheckout.ts +341 -299
- package/src/shared-tree-core/branch.ts +80 -300
- package/src/shared-tree-core/branchCommitEnricher.ts +66 -62
- package/src/shared-tree-core/defaultResubmitMachine.ts +3 -2
- package/src/shared-tree-core/editManager.ts +4 -9
- package/src/shared-tree-core/index.ts +11 -3
- package/src/shared-tree-core/sharedTreeCore.ts +23 -79
- package/src/shared-tree-core/transaction.ts +310 -0
- package/src/shared-tree-core/transactionEnricher.ts +30 -24
- package/src/simple-tree/api/conciseTree.ts +2 -2
- package/src/simple-tree/api/create.ts +5 -1
- package/src/simple-tree/api/customTree.ts +69 -1
- package/src/simple-tree/api/identifierIndex.ts +64 -0
- package/src/simple-tree/api/index.ts +17 -2
- package/src/simple-tree/api/schemaFactory.ts +62 -1
- package/src/simple-tree/api/simpleSchema.ts +3 -1
- package/src/simple-tree/api/simpleSchemaToJsonSchema.ts +17 -18
- package/src/simple-tree/api/simpleTreeIndex.ts +233 -0
- package/src/simple-tree/api/storedSchema.ts +7 -22
- package/src/simple-tree/api/tree.ts +14 -5
- package/src/simple-tree/api/treeNodeApi.ts +1 -1
- package/src/simple-tree/api/verboseTree.ts +2 -2
- package/src/simple-tree/api/view.ts +197 -51
- 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 +10 -0
- package/src/simple-tree/leafNodeSchema.ts +0 -19
- package/src/simple-tree/objectNode.ts +45 -14
- package/src/simple-tree/objectNodeTypes.ts +5 -0
- package/src/simple-tree/schemaTypes.ts +7 -2
- package/src/simple-tree/toMapTree.ts +5 -5
- package/src/simple-tree/toStoredSchema.ts +25 -19
- package/src/util/brand.ts +0 -2
- package/src/util/index.ts +4 -1
- package/src/util/typeCheck.ts +6 -3
- package/src/util/typeCheckTests.ts +11 -1
- package/src/util/utils.ts +64 -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/feature-libraries/chunked-forest/chunk.d.ts.map +0 -1
- package/dist/feature-libraries/chunked-forest/chunk.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/feature-libraries/chunked-forest/chunk.d.ts.map +0 -1
- package/lib/feature-libraries/chunked-forest/chunk.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
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { assert
|
|
6
|
+
import { assert } from "@fluidframework/core-utils/internal";
|
|
7
7
|
import { type TelemetryEventBatcher, measure } from "@fluidframework/telemetry-utils/internal";
|
|
8
8
|
|
|
9
9
|
import {
|
|
@@ -21,83 +21,37 @@ import {
|
|
|
21
21
|
tagRollbackInverse,
|
|
22
22
|
type RebaseStatsWithDuration,
|
|
23
23
|
} from "../core/index.js";
|
|
24
|
-
import {
|
|
24
|
+
import type { Listenable } from "@fluidframework/core-interfaces";
|
|
25
|
+
import { createEmitter } from "@fluid-internal/client-utils";
|
|
25
26
|
|
|
26
|
-
import {
|
|
27
|
-
import { fail } from "../util/index.js";
|
|
27
|
+
import { hasSome, defineLazyCachedProperty } from "../util/index.js";
|
|
28
28
|
|
|
29
29
|
/**
|
|
30
|
-
* Describes a change to a `SharedTreeBranch`.
|
|
31
|
-
* this change format describes each in terms of the "removed commits" (all commits which were present
|
|
32
|
-
* on the branch before the operation but are no longer present after) and the "new commits" (all
|
|
33
|
-
* commits which are present on the branch after the operation that were not present before). Each of
|
|
34
|
-
* the following event types also provides a `change` which contains the net change to the branch
|
|
35
|
-
* (or is undefined if there was no net change):
|
|
30
|
+
* Describes a change to a `SharedTreeBranch`. Each of the following event types provides a `change` which contains the net change to the branch (or is undefined if there was no net change):
|
|
36
31
|
* * Append - when one or more commits are appended to the head of the branch, for example via
|
|
37
32
|
* a change applied by the branch's editor, or as a result of merging another branch into this one
|
|
38
|
-
* * Remove - when one or more commits are removed from the head of the branch.
|
|
39
|
-
* when a
|
|
40
|
-
* * Replace - when an operation simultaneously removes and appends commits. For example, when this
|
|
41
|
-
* branch is rebased and some commits are removed and replaced with rebased versions, or when a
|
|
42
|
-
* transaction completes and all pending commits are replaced with a single squash commit.
|
|
33
|
+
* * Remove - when one or more commits are removed from the head of the branch.
|
|
34
|
+
* * Rebase - when a rebase operation adds commits from another branch and replaces existing commits with their rebased versions.
|
|
43
35
|
*/
|
|
44
36
|
export type SharedTreeBranchChange<TChange> =
|
|
45
37
|
| {
|
|
46
38
|
type: "append";
|
|
47
39
|
kind: CommitKind;
|
|
48
40
|
change: TaggedChange<TChange>;
|
|
49
|
-
|
|
41
|
+
/** The commits appended to the head of the branch by this operation */
|
|
42
|
+
newCommits: readonly [GraphCommit<TChange>, ...GraphCommit<TChange>[]];
|
|
50
43
|
}
|
|
51
44
|
| {
|
|
52
45
|
type: "remove";
|
|
53
|
-
change: TaggedChange<TChange
|
|
54
|
-
|
|
46
|
+
change: TaggedChange<TChange>;
|
|
47
|
+
/** The commits removed from the head of the branch by this operation */
|
|
48
|
+
removedCommits: readonly [GraphCommit<TChange>, ...GraphCommit<TChange>[]];
|
|
55
49
|
}
|
|
56
50
|
| {
|
|
57
|
-
type: "
|
|
51
|
+
type: "rebase";
|
|
58
52
|
change: TaggedChange<TChange> | undefined;
|
|
59
|
-
removedCommits: readonly GraphCommit<TChange>[];
|
|
60
|
-
newCommits: readonly GraphCommit<TChange>[];
|
|
61
53
|
};
|
|
62
54
|
|
|
63
|
-
/**
|
|
64
|
-
* Returns the operation that caused the given {@link SharedTreeBranchChange}.
|
|
65
|
-
*/
|
|
66
|
-
export function getChangeReplaceType(
|
|
67
|
-
change: SharedTreeBranchChange<unknown> & { type: "replace" },
|
|
68
|
-
): "transactionCommit" | "rebase" {
|
|
69
|
-
// The "replace" variant of the change event is emitted by two operations: committing a transaction and doing a rebase.
|
|
70
|
-
// Committing a transaction will always remove one or more commits (the commits that were squashed),
|
|
71
|
-
// and will add exactly one new commit (the squash commit).
|
|
72
|
-
if (change.removedCommits.length === 0 || change.newCommits.length !== 1) {
|
|
73
|
-
return "rebase";
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
// There is only one case in which a rebase both removes commits and adds exactly one new commit.
|
|
77
|
-
// This occurs when there is exactly one divergent, but equivalent, commit on each branch:
|
|
78
|
-
//
|
|
79
|
-
// A ─ B (branch X) -- rebase Y onto X --> A ─ B (branch X)
|
|
80
|
-
// └─ B' (branch Y) └─ (branch Y)
|
|
81
|
-
//
|
|
82
|
-
// B' is removed and replaced by B because both have the same revision.
|
|
83
|
-
assert(
|
|
84
|
-
change.removedCommits[0] !== undefined,
|
|
85
|
-
0x9e4 /* This wont run due to the length check above */,
|
|
86
|
-
);
|
|
87
|
-
assert(
|
|
88
|
-
change.newCommits[0] !== undefined,
|
|
89
|
-
0x9e5 /* This wont run because a replace operation always has new commits */,
|
|
90
|
-
);
|
|
91
|
-
if (
|
|
92
|
-
change.removedCommits.length === 1 &&
|
|
93
|
-
change.removedCommits[0].revision === change.newCommits[0].revision
|
|
94
|
-
) {
|
|
95
|
-
return "rebase";
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
return "transactionCommit";
|
|
99
|
-
}
|
|
100
|
-
|
|
101
55
|
/**
|
|
102
56
|
* The events emitted by a `SharedTreeBranch`
|
|
103
57
|
*/
|
|
@@ -125,34 +79,6 @@ export interface SharedTreeBranchEvents<TEditor extends ChangeFamilyEditor, TCha
|
|
|
125
79
|
* Fired after this branch is disposed
|
|
126
80
|
*/
|
|
127
81
|
dispose(): void;
|
|
128
|
-
|
|
129
|
-
/**
|
|
130
|
-
* Fired after a new transaction is started.
|
|
131
|
-
* @param isOuterTransaction - true iff the transaction being started is the outermost transaction
|
|
132
|
-
* as opposed to a nested transaction.
|
|
133
|
-
*/
|
|
134
|
-
transactionStarted(isOuterTransaction: boolean): void;
|
|
135
|
-
|
|
136
|
-
/**
|
|
137
|
-
* Fired after the current transaction is aborted.
|
|
138
|
-
* @param isOuterTransaction - true iff the transaction being aborted is the outermost transaction
|
|
139
|
-
* as opposed to a nested transaction.
|
|
140
|
-
*/
|
|
141
|
-
transactionAborted(isOuterTransaction: boolean): void;
|
|
142
|
-
|
|
143
|
-
/**
|
|
144
|
-
* Fired after the current transaction is completely rolled back.
|
|
145
|
-
* @param isOuterTransaction - true iff the transaction being aborted is the outermost transaction
|
|
146
|
-
* as opposed to a nested transaction.
|
|
147
|
-
*/
|
|
148
|
-
transactionRolledBack(isOuterTransaction: boolean): void;
|
|
149
|
-
|
|
150
|
-
/**
|
|
151
|
-
* Fired after the current transaction is committed.
|
|
152
|
-
* @param isOuterTransaction - true iff the transaction being committed is the outermost transaction
|
|
153
|
-
* as opposed to a nested transaction.
|
|
154
|
-
*/
|
|
155
|
-
transactionCommitted(isOuterTransaction: boolean): void;
|
|
156
82
|
}
|
|
157
83
|
|
|
158
84
|
/**
|
|
@@ -179,30 +105,6 @@ export class SharedTreeBranch<TEditor extends ChangeFamilyEditor, TChange> {
|
|
|
179
105
|
readonly #events = createEmitter<SharedTreeBranchEvents<TEditor, TChange>>();
|
|
180
106
|
public readonly events: Listenable<SharedTreeBranchEvents<TEditor, TChange>> = this.#events;
|
|
181
107
|
public readonly editor: TEditor;
|
|
182
|
-
private readonly transactions = new TransactionStack();
|
|
183
|
-
/**
|
|
184
|
-
* After pushing a starting revision to the transaction stack, this branch might be rebased
|
|
185
|
-
* over commits which are children of that starting revision. When the transaction is committed,
|
|
186
|
-
* those rebased-over commits should not be included in the transaction's squash commit, even though
|
|
187
|
-
* they exist between the starting revision and the final commit within the transaction.
|
|
188
|
-
*
|
|
189
|
-
* Whenever `rebaseOnto` is called during a transaction, this map is augmented with an entry from the
|
|
190
|
-
* original merge-base to the new merge-base.
|
|
191
|
-
*
|
|
192
|
-
* This state need only be retained for the lifetime of the transaction.
|
|
193
|
-
*
|
|
194
|
-
* TODO: This strategy might need to be revisited when adding better support for async transactions.
|
|
195
|
-
* Since:
|
|
196
|
-
*
|
|
197
|
-
* 1. Transactionality is guaranteed primarily by squashing at commit time
|
|
198
|
-
* 2. Branches may be rebased with an ongoing transaction
|
|
199
|
-
*
|
|
200
|
-
* a rebase operation might invalidate only a portion of a transaction's commits, thus defeating the
|
|
201
|
-
* purpose of transactionality.
|
|
202
|
-
*
|
|
203
|
-
* AB#6483 and children items track this work.
|
|
204
|
-
*/
|
|
205
|
-
private readonly initialTransactionRevToRebasedRev = new Map<RevisionTag, RevisionTag>();
|
|
206
108
|
private disposed = false;
|
|
207
109
|
private readonly unsubscribeBranchTrimmer?: () => void;
|
|
208
110
|
/**
|
|
@@ -230,45 +132,42 @@ export class SharedTreeBranch<TEditor extends ChangeFamilyEditor, TChange> {
|
|
|
230
132
|
}
|
|
231
133
|
|
|
232
134
|
/**
|
|
233
|
-
* Sets the head of this branch.
|
|
135
|
+
* Sets the head of this branch.
|
|
136
|
+
* @remarks This is a "manual override" of sorts, for when the branch needs to be set to a certain state without going through the usual flow of edits.
|
|
137
|
+
* This might be necessary as a performance optimization, or to prevent parts of the system updating incorrectly (this method emits no change events!).
|
|
234
138
|
*/
|
|
235
139
|
public setHead(head: GraphCommit<TChange>): void {
|
|
236
140
|
this.assertNotDisposed();
|
|
237
|
-
assert(!this.isTransacting(), 0x685 /* Cannot set head during a transaction */);
|
|
238
141
|
this.head = head;
|
|
239
142
|
}
|
|
240
143
|
|
|
241
144
|
/**
|
|
242
145
|
* Apply a change to this branch.
|
|
243
|
-
* @param
|
|
146
|
+
* @param change - the change to apply
|
|
244
147
|
* @param kind - the kind of change to apply
|
|
245
148
|
* @returns the change that was applied and the new head commit of the branch
|
|
246
149
|
*/
|
|
247
|
-
public apply(
|
|
248
|
-
taggedChange: TaggedChange<TChange>,
|
|
249
|
-
kind: CommitKind = CommitKind.Default,
|
|
250
|
-
): [change: TChange, newCommit: GraphCommit<TChange>] {
|
|
150
|
+
public apply(change: TaggedChange<TChange>, kind: CommitKind = CommitKind.Default): void {
|
|
251
151
|
this.assertNotDisposed();
|
|
252
152
|
|
|
253
|
-
const revisionTag =
|
|
153
|
+
const revisionTag = change.revision;
|
|
254
154
|
assert(revisionTag !== undefined, 0xa49 /* Revision tag must be provided */);
|
|
255
155
|
|
|
256
156
|
const newHead = mintCommit(this.head, {
|
|
257
157
|
revision: revisionTag,
|
|
258
|
-
change:
|
|
158
|
+
change: change.change,
|
|
259
159
|
});
|
|
260
160
|
|
|
261
161
|
const changeEvent = {
|
|
262
162
|
type: "append",
|
|
263
163
|
kind,
|
|
264
|
-
change
|
|
164
|
+
change,
|
|
265
165
|
newCommits: [newHead],
|
|
266
166
|
} as const;
|
|
267
167
|
|
|
268
168
|
this.#events.emit("beforeChange", changeEvent);
|
|
269
169
|
this.head = newHead;
|
|
270
170
|
this.#events.emit("afterChange", changeEvent);
|
|
271
|
-
return [taggedChange.change, newHead];
|
|
272
171
|
}
|
|
273
172
|
|
|
274
173
|
/**
|
|
@@ -278,147 +177,6 @@ export class SharedTreeBranch<TEditor extends ChangeFamilyEditor, TChange> {
|
|
|
278
177
|
return this.head;
|
|
279
178
|
}
|
|
280
179
|
|
|
281
|
-
/**
|
|
282
|
-
* Begin a transaction on this branch. If the transaction is committed via {@link commitTransaction},
|
|
283
|
-
* all commits made since this call will be squashed into a single head commit.
|
|
284
|
-
*/
|
|
285
|
-
public startTransaction(): void {
|
|
286
|
-
this.assertNotDisposed();
|
|
287
|
-
const forks = new Set<SharedTreeBranch<TEditor, TChange>>();
|
|
288
|
-
const onDisposeUnSubscribes: (() => void)[] = [];
|
|
289
|
-
const onForkUnSubscribe = onForkTransitive(this, (fork) => {
|
|
290
|
-
forks.add(fork);
|
|
291
|
-
onDisposeUnSubscribes.push(fork.events.on("dispose", () => forks.delete(fork)));
|
|
292
|
-
});
|
|
293
|
-
this.transactions.push(this.head.revision, () => {
|
|
294
|
-
forks.forEach((fork) => fork.dispose());
|
|
295
|
-
onDisposeUnSubscribes.forEach((unsubscribe) => unsubscribe());
|
|
296
|
-
onForkUnSubscribe();
|
|
297
|
-
});
|
|
298
|
-
this.editor.enterTransaction();
|
|
299
|
-
this.#events.emit("transactionStarted", this.transactions.size === 1);
|
|
300
|
-
}
|
|
301
|
-
|
|
302
|
-
/**
|
|
303
|
-
* Commit the current transaction. There must be a transaction in progress that was begun via {@link startTransaction}.
|
|
304
|
-
* If there are commits in the current transaction, they will be squashed into a new single head commit.
|
|
305
|
-
* @returns the commits that were squashed and the new squash commit if a squash occurred, otherwise `undefined`.
|
|
306
|
-
* @remarks If the transaction had no changes applied during its lifetime, then no squash occurs (i.e. this method is a no-op).
|
|
307
|
-
* Even if the transaction contained only one change, it will still be replaced with an (equivalent) squash change.
|
|
308
|
-
*/
|
|
309
|
-
public commitTransaction():
|
|
310
|
-
| [squashedCommits: GraphCommit<TChange>[], newCommit: GraphCommit<TChange>]
|
|
311
|
-
| undefined {
|
|
312
|
-
this.assertNotDisposed();
|
|
313
|
-
const [startCommit, commits] = this.popTransaction();
|
|
314
|
-
this.editor.exitTransaction();
|
|
315
|
-
|
|
316
|
-
this.#events.emit("transactionCommitted", this.transactions.size === 0);
|
|
317
|
-
if (commits.length === 0) {
|
|
318
|
-
return undefined;
|
|
319
|
-
}
|
|
320
|
-
|
|
321
|
-
// Squash the changes and make the squash commit the new head of this branch
|
|
322
|
-
const squashedChange = this.changeFamily.rebaser.compose(commits);
|
|
323
|
-
const revision = this.mintRevisionTag();
|
|
324
|
-
|
|
325
|
-
const newHead = mintCommit(startCommit, {
|
|
326
|
-
revision,
|
|
327
|
-
change: this.changeFamily.rebaser.changeRevision(squashedChange, revision),
|
|
328
|
-
});
|
|
329
|
-
|
|
330
|
-
const changeEvent = {
|
|
331
|
-
type: "replace",
|
|
332
|
-
change: undefined,
|
|
333
|
-
removedCommits: commits,
|
|
334
|
-
newCommits: [newHead],
|
|
335
|
-
} as const;
|
|
336
|
-
|
|
337
|
-
this.#events.emit("beforeChange", changeEvent);
|
|
338
|
-
this.head = newHead;
|
|
339
|
-
this.#events.emit("afterChange", changeEvent);
|
|
340
|
-
return [commits, newHead];
|
|
341
|
-
}
|
|
342
|
-
|
|
343
|
-
/**
|
|
344
|
-
* Cancel the current transaction. There must be a transaction in progress that was begun via
|
|
345
|
-
* {@link startTransaction}. All commits made during the transaction will be removed.
|
|
346
|
-
* @returns the change to this branch resulting in the removal of the commits, and a list of the
|
|
347
|
-
* commits that were removed.
|
|
348
|
-
*/
|
|
349
|
-
public abortTransaction(): [
|
|
350
|
-
change: TChange | undefined,
|
|
351
|
-
abortedCommits: GraphCommit<TChange>[],
|
|
352
|
-
] {
|
|
353
|
-
this.assertNotDisposed();
|
|
354
|
-
const [startCommit, commits] = this.popTransaction();
|
|
355
|
-
this.editor.exitTransaction();
|
|
356
|
-
|
|
357
|
-
this.#events.emit("transactionAborted", this.transactions.size === 0);
|
|
358
|
-
if (commits.length === 0) {
|
|
359
|
-
this.#events.emit("transactionRolledBack", this.transactions.size === 0);
|
|
360
|
-
return [undefined, []];
|
|
361
|
-
}
|
|
362
|
-
|
|
363
|
-
const inverses: TaggedChange<TChange>[] = [];
|
|
364
|
-
for (let i = commits.length - 1; i >= 0; i--) {
|
|
365
|
-
const revision = this.mintRevisionTag();
|
|
366
|
-
const commit =
|
|
367
|
-
commits[i] ?? fail("This wont run because we are iterating through commits");
|
|
368
|
-
const inverse = this.changeFamily.rebaser.changeRevision(
|
|
369
|
-
this.changeFamily.rebaser.invert(commit, true, revision),
|
|
370
|
-
revision,
|
|
371
|
-
commit.revision,
|
|
372
|
-
);
|
|
373
|
-
|
|
374
|
-
inverses.push(tagRollbackInverse(inverse, revision, commit.revision));
|
|
375
|
-
}
|
|
376
|
-
const change =
|
|
377
|
-
inverses.length > 0 ? this.changeFamily.rebaser.compose(inverses) : undefined;
|
|
378
|
-
|
|
379
|
-
const changeEvent = {
|
|
380
|
-
type: "remove",
|
|
381
|
-
change: change === undefined ? undefined : makeAnonChange(change),
|
|
382
|
-
removedCommits: commits,
|
|
383
|
-
} as const;
|
|
384
|
-
|
|
385
|
-
this.#events.emit("beforeChange", changeEvent);
|
|
386
|
-
this.head = startCommit;
|
|
387
|
-
this.#events.emit("afterChange", changeEvent);
|
|
388
|
-
this.#events.emit("transactionRolledBack", this.transactions.size === 0);
|
|
389
|
-
return [change, commits];
|
|
390
|
-
}
|
|
391
|
-
|
|
392
|
-
/**
|
|
393
|
-
* True iff this branch is in the middle of a transaction that was begin via {@link startTransaction}
|
|
394
|
-
*/
|
|
395
|
-
public isTransacting(): boolean {
|
|
396
|
-
return this.transactions.size !== 0;
|
|
397
|
-
}
|
|
398
|
-
|
|
399
|
-
private popTransaction(): [GraphCommit<TChange>, GraphCommit<TChange>[]] {
|
|
400
|
-
const { startRevision: startRevisionOriginal } = this.transactions.pop();
|
|
401
|
-
let startRevision = startRevisionOriginal;
|
|
402
|
-
while (this.initialTransactionRevToRebasedRev.has(startRevision)) {
|
|
403
|
-
startRevision = this.initialTransactionRevToRebasedRev.get(startRevision) ?? oob();
|
|
404
|
-
}
|
|
405
|
-
|
|
406
|
-
if (!this.isTransacting()) {
|
|
407
|
-
this.initialTransactionRevToRebasedRev.clear();
|
|
408
|
-
}
|
|
409
|
-
|
|
410
|
-
const commits: GraphCommit<TChange>[] = [];
|
|
411
|
-
const startCommit = findAncestor(
|
|
412
|
-
[this.head, commits],
|
|
413
|
-
(c) => c.revision === startRevision,
|
|
414
|
-
);
|
|
415
|
-
assert(
|
|
416
|
-
startCommit !== undefined,
|
|
417
|
-
0x593 /* Expected branch to be ahead of transaction start revision */,
|
|
418
|
-
);
|
|
419
|
-
return [startCommit, commits];
|
|
420
|
-
}
|
|
421
|
-
|
|
422
180
|
/**
|
|
423
181
|
* Spawn a new branch that is based off of the current state of this branch.
|
|
424
182
|
* @param commit - The commit to base the new branch off of. Defaults to the head of this branch.
|
|
@@ -448,31 +206,23 @@ export class SharedTreeBranch<TEditor extends ChangeFamilyEditor, TChange> {
|
|
|
448
206
|
public rebaseOnto(
|
|
449
207
|
branch: SharedTreeBranch<TEditor, TChange>,
|
|
450
208
|
upTo = branch.getHead(),
|
|
451
|
-
):
|
|
209
|
+
): void {
|
|
452
210
|
this.assertNotDisposed();
|
|
453
211
|
|
|
454
212
|
// Rebase this branch onto the given branch
|
|
455
213
|
const rebaseResult = this.rebaseBranch(this, branch, upTo);
|
|
456
214
|
if (rebaseResult === undefined) {
|
|
457
|
-
return
|
|
215
|
+
return;
|
|
458
216
|
}
|
|
459
217
|
|
|
460
218
|
// The net change to this branch is provided by the `rebaseBranch` API
|
|
461
219
|
const { newSourceHead, commits } = rebaseResult;
|
|
462
220
|
const { deletedSourceCommits, targetCommits, sourceCommits } = commits;
|
|
221
|
+
assert(hasSome(targetCommits), 0xa83 /* Expected commit(s) for a non no-op rebase */);
|
|
463
222
|
|
|
464
223
|
const newCommits = targetCommits.concat(sourceCommits);
|
|
465
|
-
if (this.isTransacting()) {
|
|
466
|
-
const firstCommit = targetCommits[0] ?? oob();
|
|
467
|
-
const lastCommit = targetCommits[targetCommits.length - 1] ?? oob();
|
|
468
|
-
const src = firstCommit.parent?.revision;
|
|
469
|
-
const dst = lastCommit.revision;
|
|
470
|
-
if (src !== undefined && dst !== undefined) {
|
|
471
|
-
this.initialTransactionRevToRebasedRev.set(src, dst);
|
|
472
|
-
}
|
|
473
|
-
}
|
|
474
224
|
const changeEvent = {
|
|
475
|
-
type: "
|
|
225
|
+
type: "rebase",
|
|
476
226
|
get change() {
|
|
477
227
|
const change = rebaseResult.sourceChange;
|
|
478
228
|
return change === undefined ? undefined : makeAnonChange(change);
|
|
@@ -484,7 +234,48 @@ export class SharedTreeBranch<TEditor extends ChangeFamilyEditor, TChange> {
|
|
|
484
234
|
this.#events.emit("beforeChange", changeEvent);
|
|
485
235
|
this.head = newSourceHead;
|
|
486
236
|
this.#events.emit("afterChange", changeEvent);
|
|
487
|
-
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
/**
|
|
240
|
+
* Remove a range of commits from this branch.
|
|
241
|
+
* @param commit - All commits after (but not including) this commit will be removed.
|
|
242
|
+
* @returns The net change to this branch and the commits that were removed from this branch.
|
|
243
|
+
*/
|
|
244
|
+
public removeAfter(commit: GraphCommit<TChange>): void {
|
|
245
|
+
if (commit === this.head) {
|
|
246
|
+
return;
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
const removedCommits: GraphCommit<TChange>[] = [];
|
|
250
|
+
const inverses: TaggedChange<TChange>[] = [];
|
|
251
|
+
findAncestor([this.head, removedCommits], (c) => {
|
|
252
|
+
// TODO: Pull this side effect out if/when more diverse ancestry walking helpers are available
|
|
253
|
+
if (c !== commit) {
|
|
254
|
+
const revision = this.mintRevisionTag();
|
|
255
|
+
const inverse = this.changeFamily.rebaser.changeRevision(
|
|
256
|
+
this.changeFamily.rebaser.invert(c, true, revision),
|
|
257
|
+
revision,
|
|
258
|
+
c.revision,
|
|
259
|
+
);
|
|
260
|
+
|
|
261
|
+
inverses.push(tagRollbackInverse(inverse, revision, c.revision));
|
|
262
|
+
return false;
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
return true;
|
|
266
|
+
});
|
|
267
|
+
assert(hasSome(removedCommits), 0xa84 /* Commit must be in the branch's ancestry */);
|
|
268
|
+
|
|
269
|
+
const change = makeAnonChange(this.changeFamily.rebaser.compose(inverses));
|
|
270
|
+
const changeEvent = {
|
|
271
|
+
type: "remove",
|
|
272
|
+
change,
|
|
273
|
+
removedCommits,
|
|
274
|
+
} as const;
|
|
275
|
+
|
|
276
|
+
this.#events.emit("beforeChange", changeEvent);
|
|
277
|
+
this.head = commit;
|
|
278
|
+
this.#events.emit("afterChange", changeEvent);
|
|
488
279
|
}
|
|
489
280
|
|
|
490
281
|
/**
|
|
@@ -494,15 +285,9 @@ export class SharedTreeBranch<TEditor extends ChangeFamilyEditor, TChange> {
|
|
|
494
285
|
* @returns the net change to this branch and the commits that were added to this branch by the merge,
|
|
495
286
|
* or undefined if nothing changed
|
|
496
287
|
*/
|
|
497
|
-
public merge(
|
|
498
|
-
branch: SharedTreeBranch<TEditor, TChange>,
|
|
499
|
-
): [change: TChange, newCommits: GraphCommit<TChange>[]] | undefined {
|
|
288
|
+
public merge(branch: SharedTreeBranch<TEditor, TChange>): void {
|
|
500
289
|
this.assertNotDisposed();
|
|
501
290
|
branch.assertNotDisposed();
|
|
502
|
-
assert(
|
|
503
|
-
!branch.isTransacting(),
|
|
504
|
-
0x597 /* Branch may not be merged while transaction is in progress */,
|
|
505
|
-
);
|
|
506
291
|
|
|
507
292
|
if (branch === this) {
|
|
508
293
|
return undefined;
|
|
@@ -516,21 +301,21 @@ export class SharedTreeBranch<TEditor extends ChangeFamilyEditor, TChange> {
|
|
|
516
301
|
|
|
517
302
|
// Compute the net change to this branch
|
|
518
303
|
const sourceCommits = rebaseResult.commits.sourceCommits;
|
|
519
|
-
|
|
520
|
-
const
|
|
521
|
-
const changeEvent =
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
},
|
|
527
|
-
|
|
528
|
-
|
|
304
|
+
assert(hasSome(sourceCommits), 0xa86 /* Expected source commits in non no-op merge */);
|
|
305
|
+
const { rebaser } = this.changeFamily;
|
|
306
|
+
const changeEvent = defineLazyCachedProperty(
|
|
307
|
+
{
|
|
308
|
+
type: "append",
|
|
309
|
+
kind: CommitKind.Default,
|
|
310
|
+
newCommits: sourceCommits,
|
|
311
|
+
} as const,
|
|
312
|
+
"change",
|
|
313
|
+
() => makeAnonChange(rebaser.compose(sourceCommits)),
|
|
314
|
+
);
|
|
529
315
|
|
|
530
316
|
this.#events.emit("beforeChange", changeEvent);
|
|
531
317
|
this.head = rebaseResult.newSourceHead;
|
|
532
318
|
this.#events.emit("afterChange", changeEvent);
|
|
533
|
-
return [change, sourceCommits];
|
|
534
319
|
}
|
|
535
320
|
|
|
536
321
|
/** Rebase `branchHead` onto `onto`, but return undefined if nothing changed */
|
|
@@ -576,10 +361,6 @@ export class SharedTreeBranch<TEditor extends ChangeFamilyEditor, TChange> {
|
|
|
576
361
|
return;
|
|
577
362
|
}
|
|
578
363
|
|
|
579
|
-
while (this.isTransacting()) {
|
|
580
|
-
this.abortTransaction();
|
|
581
|
-
}
|
|
582
|
-
|
|
583
364
|
this.unsubscribeBranchTrimmer?.();
|
|
584
365
|
|
|
585
366
|
this.disposed = true;
|
|
@@ -600,8 +381,7 @@ export class SharedTreeBranch<TEditor extends ChangeFamilyEditor, TChange> {
|
|
|
600
381
|
* The deregister function has undefined behavior if called more than once.
|
|
601
382
|
*/
|
|
602
383
|
// Branches are invariant over TChange
|
|
603
|
-
|
|
604
|
-
export function onForkTransitive<T extends SharedTreeBranch<ChangeFamilyEditor, any>>(
|
|
384
|
+
export function onForkTransitive<T extends { events: Listenable<{ fork(t: T): void }> }>(
|
|
605
385
|
branch: T,
|
|
606
386
|
onFork: (fork: T) => void,
|
|
607
387
|
): () => void {
|