@fluidframework/tree 2.3.1 → 2.4.0-297027
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/api-report/tree.alpha.api.md +77 -38
- package/api-report/tree.beta.api.md +50 -30
- package/api-report/tree.legacy.alpha.api.md +50 -30
- package/api-report/tree.legacy.public.api.md +50 -30
- package/api-report/tree.public.api.md +50 -30
- package/dist/alpha.d.ts +7 -0
- package/dist/beta.d.ts +4 -0
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +2 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/rebase/index.d.ts +1 -1
- package/dist/core/rebase/index.d.ts.map +1 -1
- package/dist/core/rebase/index.js +2 -1
- package/dist/core/rebase/index.js.map +1 -1
- package/dist/core/rebase/types.d.ts +1 -0
- package/dist/core/rebase/types.d.ts.map +1 -1
- package/dist/core/rebase/types.js +8 -1
- package/dist/core/rebase/types.js.map +1 -1
- package/dist/core/schema-stored/schema.d.ts +7 -0
- package/dist/core/schema-stored/schema.d.ts.map +1 -1
- package/dist/core/schema-stored/schema.js +9 -0
- package/dist/core/schema-stored/schema.js.map +1 -1
- package/dist/core/tree/anchorSet.d.ts +1 -2
- package/dist/core/tree/anchorSet.d.ts.map +1 -1
- package/dist/core/tree/anchorSet.js +2 -2
- package/dist/core/tree/anchorSet.js.map +1 -1
- package/dist/core/tree/detachedFieldIndex.d.ts.map +1 -1
- package/dist/core/tree/detachedFieldIndex.js +13 -2
- package/dist/core/tree/detachedFieldIndex.js.map +1 -1
- package/dist/core/tree/detachedFieldIndexTypes.d.ts +1 -1
- package/dist/core/tree/detachedFieldIndexTypes.js.map +1 -1
- package/dist/feature-libraries/editableTreeBinder.d.ts +3 -230
- package/dist/feature-libraries/editableTreeBinder.d.ts.map +1 -1
- package/dist/feature-libraries/editableTreeBinder.js +1 -539
- package/dist/feature-libraries/editableTreeBinder.js.map +1 -1
- package/dist/feature-libraries/flex-tree/context.d.ts +7 -14
- package/dist/feature-libraries/flex-tree/context.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/context.js +3 -3
- package/dist/feature-libraries/flex-tree/context.js.map +1 -1
- package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts +2 -16
- package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyEntity.d.ts +2 -3
- package/dist/feature-libraries/flex-tree/lazyEntity.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyEntity.js +1 -2
- package/dist/feature-libraries/flex-tree/lazyEntity.js.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyField.d.ts +10 -15
- package/dist/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyField.js +18 -20
- package/dist/feature-libraries/flex-tree/lazyField.js.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyNode.d.ts +4 -5
- package/dist/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyNode.js +13 -23
- package/dist/feature-libraries/flex-tree/lazyNode.js.map +1 -1
- package/dist/feature-libraries/flex-tree/utilities.js +1 -1
- package/dist/feature-libraries/flex-tree/utilities.js.map +1 -1
- package/dist/feature-libraries/index.d.ts +4 -7
- package/dist/feature-libraries/index.d.ts.map +1 -1
- package/dist/feature-libraries/index.js +5 -31
- package/dist/feature-libraries/index.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts +7 -0
- package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFamily.js +61 -17
- package/dist/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
- package/dist/feature-libraries/sequence-field/compose.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/compose.js +3 -0
- package/dist/feature-libraries/sequence-field/compose.js.map +1 -1
- package/dist/feature-libraries/sequence-field/formatV1.d.ts +18 -18
- package/dist/feature-libraries/sequence-field/formatV2.d.ts +18 -18
- package/dist/feature-libraries/sequence-field/formatV3.d.ts +27 -27
- package/dist/feature-libraries/sequence-field/utils.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/utils.js +1 -4
- package/dist/feature-libraries/sequence-field/utils.js.map +1 -1
- package/dist/feature-libraries/typed-schema/flexList.d.ts +1 -46
- package/dist/feature-libraries/typed-schema/flexList.d.ts.map +1 -1
- package/dist/feature-libraries/typed-schema/flexList.js +1 -13
- package/dist/feature-libraries/typed-schema/flexList.js.map +1 -1
- package/dist/feature-libraries/typed-schema/index.d.ts +2 -4
- package/dist/feature-libraries/typed-schema/index.d.ts.map +1 -1
- package/dist/feature-libraries/typed-schema/index.js +1 -19
- package/dist/feature-libraries/typed-schema/index.js.map +1 -1
- package/dist/feature-libraries/typed-schema/typedTreeSchema.d.ts +0 -212
- package/dist/feature-libraries/typed-schema/typedTreeSchema.d.ts.map +1 -1
- package/dist/feature-libraries/typed-schema/typedTreeSchema.js +0 -266
- package/dist/feature-libraries/typed-schema/typedTreeSchema.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/internalTypes.d.ts +1 -1
- package/dist/internalTypes.d.ts.map +1 -1
- package/dist/internalTypes.js.map +1 -1
- package/dist/legacy.d.ts +4 -0
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.d.ts.map +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/public.d.ts +4 -0
- package/dist/shared-tree/checkoutFlexTreeView.d.ts +3 -3
- package/dist/shared-tree/checkoutFlexTreeView.d.ts.map +1 -1
- package/dist/shared-tree/checkoutFlexTreeView.js +1 -1
- package/dist/shared-tree/checkoutFlexTreeView.js.map +1 -1
- package/dist/shared-tree/index.d.ts +3 -3
- package/dist/shared-tree/index.d.ts.map +1 -1
- package/dist/shared-tree/index.js +2 -3
- package/dist/shared-tree/index.js.map +1 -1
- package/dist/shared-tree/schematizeTree.d.ts +1 -40
- package/dist/shared-tree/schematizeTree.d.ts.map +1 -1
- package/dist/shared-tree/schematizeTree.js +2 -11
- package/dist/shared-tree/schematizeTree.js.map +1 -1
- package/dist/shared-tree/schematizingTreeView.d.ts +9 -7
- package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/dist/shared-tree/schematizingTreeView.js +19 -8
- package/dist/shared-tree/schematizingTreeView.js.map +1 -1
- package/dist/shared-tree/sharedTree.d.ts +19 -2
- package/dist/shared-tree/sharedTree.d.ts.map +1 -1
- package/dist/shared-tree/sharedTree.js +10 -2
- package/dist/shared-tree/sharedTree.js.map +1 -1
- package/dist/shared-tree/treeCheckout.d.ts +71 -41
- package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
- package/dist/shared-tree/treeCheckout.js +116 -84
- package/dist/shared-tree/treeCheckout.js.map +1 -1
- package/dist/shared-tree-core/branch.d.ts +8 -11
- package/dist/shared-tree-core/branch.d.ts.map +1 -1
- package/dist/shared-tree-core/branch.js +12 -15
- package/dist/shared-tree-core/branch.js.map +1 -1
- package/dist/simple-tree/api/create.d.ts +1 -1
- package/dist/simple-tree/api/create.d.ts.map +1 -1
- package/dist/simple-tree/api/create.js +11 -13
- package/dist/simple-tree/api/create.js.map +1 -1
- package/dist/simple-tree/api/getJsonSchema.d.ts +3 -3
- package/dist/simple-tree/api/getJsonSchema.d.ts.map +1 -1
- package/dist/simple-tree/api/getJsonSchema.js +1 -1
- package/dist/simple-tree/api/getJsonSchema.js.map +1 -1
- package/dist/simple-tree/api/getSimpleSchema.d.ts +2 -2
- package/dist/simple-tree/api/getSimpleSchema.d.ts.map +1 -1
- package/dist/simple-tree/api/getSimpleSchema.js.map +1 -1
- package/dist/simple-tree/api/index.d.ts +2 -1
- package/dist/simple-tree/api/index.d.ts.map +1 -1
- package/dist/simple-tree/api/index.js +3 -1
- package/dist/simple-tree/api/index.js.map +1 -1
- package/dist/simple-tree/api/jsonSchema.d.ts +13 -14
- package/dist/simple-tree/api/jsonSchema.d.ts.map +1 -1
- package/dist/simple-tree/api/jsonSchema.js.map +1 -1
- package/dist/simple-tree/api/schemaFactory.d.ts +14 -8
- package/dist/simple-tree/api/schemaFactory.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaFactory.js +21 -2
- package/dist/simple-tree/api/schemaFactory.js.map +1 -1
- package/dist/simple-tree/api/schemaFactoryRecursive.d.ts +3 -3
- package/dist/simple-tree/api/schemaFactoryRecursive.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaFactoryRecursive.js.map +1 -1
- package/dist/simple-tree/api/simpleSchema.d.ts +18 -10
- 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.d.ts.map +1 -1
- package/dist/simple-tree/api/simpleSchemaToJsonSchema.js +30 -17
- package/dist/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -1
- package/dist/simple-tree/api/tree.d.ts +16 -6
- package/dist/simple-tree/api/tree.d.ts.map +1 -1
- package/dist/simple-tree/api/tree.js +4 -4
- package/dist/simple-tree/api/tree.js.map +1 -1
- package/dist/simple-tree/api/treeNodeApi.d.ts.map +1 -1
- package/dist/simple-tree/api/treeNodeApi.js +8 -6
- package/dist/simple-tree/api/treeNodeApi.js.map +1 -1
- package/dist/simple-tree/api/verboseTree.d.ts.map +1 -1
- package/dist/simple-tree/api/verboseTree.js +6 -10
- package/dist/simple-tree/api/verboseTree.js.map +1 -1
- package/{lib/feature-libraries/typed-schema → dist/simple-tree/api}/view.d.ts +4 -11
- package/dist/simple-tree/api/view.d.ts.map +1 -0
- package/dist/{feature-libraries/typed-schema → simple-tree/api}/view.js +9 -9
- package/dist/simple-tree/api/view.js.map +1 -0
- package/dist/simple-tree/api/viewSchemaToSimpleSchema.d.ts +2 -2
- package/dist/simple-tree/api/viewSchemaToSimpleSchema.d.ts.map +1 -1
- package/dist/simple-tree/api/viewSchemaToSimpleSchema.js +11 -1
- package/dist/simple-tree/api/viewSchemaToSimpleSchema.js.map +1 -1
- package/dist/simple-tree/arrayNode.d.ts +147 -14
- package/dist/simple-tree/arrayNode.d.ts.map +1 -1
- package/dist/simple-tree/arrayNode.js +32 -20
- package/dist/simple-tree/arrayNode.js.map +1 -1
- package/dist/simple-tree/core/context.d.ts +55 -0
- package/dist/simple-tree/core/context.d.ts.map +1 -0
- package/dist/simple-tree/core/context.js +60 -0
- package/dist/simple-tree/core/context.js.map +1 -0
- package/dist/simple-tree/core/getOrCreateNode.d.ts +15 -0
- package/dist/simple-tree/core/getOrCreateNode.d.ts.map +1 -0
- package/dist/simple-tree/core/getOrCreateNode.js +36 -0
- package/dist/simple-tree/core/getOrCreateNode.js.map +1 -0
- package/dist/simple-tree/core/index.d.ts +7 -3
- package/dist/simple-tree/core/index.d.ts.map +1 -1
- package/dist/simple-tree/core/index.js +16 -7
- package/dist/simple-tree/core/index.js.map +1 -1
- package/dist/simple-tree/core/schemaCaching.d.ts +5 -13
- package/dist/simple-tree/core/schemaCaching.d.ts.map +1 -1
- package/dist/simple-tree/core/schemaCaching.js +16 -45
- package/dist/simple-tree/core/schemaCaching.js.map +1 -1
- package/dist/simple-tree/core/treeNodeKernel.d.ts +29 -7
- package/dist/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
- package/dist/simple-tree/core/treeNodeKernel.js +94 -58
- package/dist/simple-tree/core/treeNodeKernel.js.map +1 -1
- package/dist/simple-tree/core/treeNodeSchema.d.ts +24 -0
- package/dist/simple-tree/core/treeNodeSchema.d.ts.map +1 -1
- package/dist/simple-tree/core/treeNodeSchema.js.map +1 -1
- package/dist/simple-tree/core/types.d.ts +0 -5
- package/dist/simple-tree/core/types.d.ts.map +1 -1
- package/dist/simple-tree/core/types.js.map +1 -1
- package/dist/simple-tree/core/unhydratedFlexTree.d.ts +139 -0
- package/dist/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -0
- package/dist/{feature-libraries/flex-map-tree/mapTreeNode.js → simple-tree/core/unhydratedFlexTree.js} +112 -132
- package/dist/simple-tree/core/unhydratedFlexTree.js.map +1 -0
- package/dist/simple-tree/{walkSchema.d.ts → core/walkSchema.d.ts} +8 -4
- package/dist/simple-tree/core/walkSchema.d.ts.map +1 -0
- package/dist/simple-tree/core/walkSchema.js +34 -0
- package/dist/simple-tree/core/walkSchema.js.map +1 -0
- package/dist/simple-tree/createContext.d.ts +11 -0
- package/dist/simple-tree/createContext.d.ts.map +1 -0
- package/dist/simple-tree/createContext.js +25 -0
- package/dist/simple-tree/createContext.js.map +1 -0
- package/dist/simple-tree/index.d.ts +4 -5
- package/dist/simple-tree/index.d.ts.map +1 -1
- package/dist/simple-tree/index.js +7 -7
- package/dist/simple-tree/index.js.map +1 -1
- package/dist/simple-tree/leafNodeSchema.d.ts +1 -0
- package/dist/simple-tree/leafNodeSchema.d.ts.map +1 -1
- package/dist/simple-tree/leafNodeSchema.js +1 -2
- package/dist/simple-tree/leafNodeSchema.js.map +1 -1
- package/dist/simple-tree/mapNode.d.ts +4 -4
- package/dist/simple-tree/mapNode.d.ts.map +1 -1
- package/dist/simple-tree/mapNode.js +9 -5
- package/dist/simple-tree/mapNode.js.map +1 -1
- package/dist/simple-tree/objectNode.d.ts +8 -8
- package/dist/simple-tree/objectNode.d.ts.map +1 -1
- package/dist/simple-tree/objectNode.js +33 -14
- package/dist/simple-tree/objectNode.js.map +1 -1
- package/dist/simple-tree/objectNodeTypes.d.ts +7 -3
- package/dist/simple-tree/objectNodeTypes.d.ts.map +1 -1
- package/dist/simple-tree/objectNodeTypes.js.map +1 -1
- package/dist/simple-tree/proxies.d.ts +1 -2
- package/dist/simple-tree/proxies.d.ts.map +1 -1
- package/dist/simple-tree/proxies.js +6 -22
- package/dist/simple-tree/proxies.js.map +1 -1
- package/dist/simple-tree/schemaTypes.d.ts +44 -4
- package/dist/simple-tree/schemaTypes.d.ts.map +1 -1
- package/dist/simple-tree/schemaTypes.js +10 -0
- package/dist/simple-tree/schemaTypes.js.map +1 -1
- package/dist/simple-tree/toFlexSchema.d.ts +6 -36
- package/dist/simple-tree/toFlexSchema.d.ts.map +1 -1
- package/dist/simple-tree/toFlexSchema.js +58 -142
- package/dist/simple-tree/toFlexSchema.js.map +1 -1
- package/dist/simple-tree/toMapTree.d.ts.map +1 -1
- package/dist/simple-tree/toMapTree.js +2 -2
- package/dist/simple-tree/toMapTree.js.map +1 -1
- package/dist/simple-tree/treeNodeValid.d.ts +13 -5
- package/dist/simple-tree/treeNodeValid.d.ts.map +1 -1
- package/dist/simple-tree/treeNodeValid.js +19 -10
- package/dist/simple-tree/treeNodeValid.js.map +1 -1
- package/dist/simple-tree/typesUnsafe.d.ts +4 -4
- package/dist/simple-tree/typesUnsafe.d.ts.map +1 -1
- package/dist/simple-tree/typesUnsafe.js.map +1 -1
- package/dist/simple-tree/walkFieldSchema.d.ts +11 -0
- package/dist/simple-tree/walkFieldSchema.d.ts.map +1 -0
- package/dist/simple-tree/walkFieldSchema.js +17 -0
- package/dist/simple-tree/walkFieldSchema.js.map +1 -0
- package/dist/util/index.d.ts +1 -1
- package/dist/util/index.d.ts.map +1 -1
- package/dist/util/index.js.map +1 -1
- package/dist/util/typeUtils.d.ts +14 -45
- package/dist/util/typeUtils.d.ts.map +1 -1
- package/dist/util/typeUtils.js.map +1 -1
- package/lib/alpha.d.ts +7 -0
- package/lib/beta.d.ts +4 -0
- package/lib/core/index.d.ts +1 -1
- package/lib/core/index.d.ts.map +1 -1
- package/lib/core/index.js +1 -1
- package/lib/core/index.js.map +1 -1
- package/lib/core/rebase/index.d.ts +1 -1
- package/lib/core/rebase/index.d.ts.map +1 -1
- package/lib/core/rebase/index.js +1 -1
- package/lib/core/rebase/index.js.map +1 -1
- package/lib/core/rebase/types.d.ts +1 -0
- package/lib/core/rebase/types.d.ts.map +1 -1
- package/lib/core/rebase/types.js +6 -0
- package/lib/core/rebase/types.js.map +1 -1
- package/lib/core/schema-stored/schema.d.ts +7 -0
- package/lib/core/schema-stored/schema.d.ts.map +1 -1
- package/lib/core/schema-stored/schema.js +9 -0
- package/lib/core/schema-stored/schema.js.map +1 -1
- package/lib/core/tree/anchorSet.d.ts +1 -2
- package/lib/core/tree/anchorSet.d.ts.map +1 -1
- package/lib/core/tree/anchorSet.js +2 -2
- package/lib/core/tree/anchorSet.js.map +1 -1
- package/lib/core/tree/detachedFieldIndex.d.ts.map +1 -1
- package/lib/core/tree/detachedFieldIndex.js +13 -2
- package/lib/core/tree/detachedFieldIndex.js.map +1 -1
- package/lib/core/tree/detachedFieldIndexTypes.d.ts +1 -1
- package/lib/core/tree/detachedFieldIndexTypes.js.map +1 -1
- package/lib/feature-libraries/editableTreeBinder.d.ts +3 -230
- package/lib/feature-libraries/editableTreeBinder.d.ts.map +1 -1
- package/lib/feature-libraries/editableTreeBinder.js +1 -532
- package/lib/feature-libraries/editableTreeBinder.js.map +1 -1
- package/lib/feature-libraries/flex-tree/context.d.ts +7 -14
- package/lib/feature-libraries/flex-tree/context.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/context.js +3 -3
- package/lib/feature-libraries/flex-tree/context.js.map +1 -1
- package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts +2 -16
- package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyEntity.d.ts +2 -3
- package/lib/feature-libraries/flex-tree/lazyEntity.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyEntity.js +1 -2
- package/lib/feature-libraries/flex-tree/lazyEntity.js.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyField.d.ts +10 -15
- package/lib/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyField.js +18 -20
- package/lib/feature-libraries/flex-tree/lazyField.js.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyNode.d.ts +4 -5
- package/lib/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyNode.js +13 -23
- package/lib/feature-libraries/flex-tree/lazyNode.js.map +1 -1
- package/lib/feature-libraries/flex-tree/utilities.js +1 -1
- package/lib/feature-libraries/flex-tree/utilities.js.map +1 -1
- package/lib/feature-libraries/index.d.ts +4 -7
- package/lib/feature-libraries/index.d.ts.map +1 -1
- package/lib/feature-libraries/index.js +4 -6
- package/lib/feature-libraries/index.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts +7 -0
- package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFamily.js +62 -18
- package/lib/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
- package/lib/feature-libraries/sequence-field/compose.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/compose.js +3 -0
- package/lib/feature-libraries/sequence-field/compose.js.map +1 -1
- package/lib/feature-libraries/sequence-field/formatV1.d.ts +18 -18
- package/lib/feature-libraries/sequence-field/formatV2.d.ts +18 -18
- package/lib/feature-libraries/sequence-field/formatV3.d.ts +27 -27
- package/lib/feature-libraries/sequence-field/utils.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/utils.js +2 -5
- package/lib/feature-libraries/sequence-field/utils.js.map +1 -1
- package/lib/feature-libraries/typed-schema/flexList.d.ts +1 -46
- package/lib/feature-libraries/typed-schema/flexList.d.ts.map +1 -1
- package/lib/feature-libraries/typed-schema/flexList.js +0 -11
- package/lib/feature-libraries/typed-schema/flexList.js.map +1 -1
- package/lib/feature-libraries/typed-schema/index.d.ts +2 -4
- package/lib/feature-libraries/typed-schema/index.d.ts.map +1 -1
- package/lib/feature-libraries/typed-schema/index.js +0 -3
- package/lib/feature-libraries/typed-schema/index.js.map +1 -1
- package/lib/feature-libraries/typed-schema/typedTreeSchema.d.ts +0 -212
- package/lib/feature-libraries/typed-schema/typedTreeSchema.d.ts.map +1 -1
- package/lib/feature-libraries/typed-schema/typedTreeSchema.js +1 -253
- package/lib/feature-libraries/typed-schema/typedTreeSchema.js.map +1 -1
- package/lib/index.d.ts +3 -3
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/internalTypes.d.ts +1 -1
- package/lib/internalTypes.d.ts.map +1 -1
- package/lib/internalTypes.js.map +1 -1
- package/lib/legacy.d.ts +4 -0
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.d.ts.map +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/public.d.ts +4 -0
- package/lib/shared-tree/checkoutFlexTreeView.d.ts +3 -3
- package/lib/shared-tree/checkoutFlexTreeView.d.ts.map +1 -1
- package/lib/shared-tree/checkoutFlexTreeView.js +1 -1
- package/lib/shared-tree/checkoutFlexTreeView.js.map +1 -1
- package/lib/shared-tree/index.d.ts +3 -3
- package/lib/shared-tree/index.d.ts.map +1 -1
- package/lib/shared-tree/index.js +1 -2
- package/lib/shared-tree/index.js.map +1 -1
- package/lib/shared-tree/schematizeTree.d.ts +1 -40
- package/lib/shared-tree/schematizeTree.d.ts.map +1 -1
- package/lib/shared-tree/schematizeTree.js +1 -9
- package/lib/shared-tree/schematizeTree.js.map +1 -1
- package/lib/shared-tree/schematizingTreeView.d.ts +9 -7
- package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/lib/shared-tree/schematizingTreeView.js +22 -11
- package/lib/shared-tree/schematizingTreeView.js.map +1 -1
- package/lib/shared-tree/sharedTree.d.ts +19 -2
- package/lib/shared-tree/sharedTree.d.ts.map +1 -1
- package/lib/shared-tree/sharedTree.js +10 -3
- package/lib/shared-tree/sharedTree.js.map +1 -1
- package/lib/shared-tree/treeCheckout.d.ts +71 -41
- package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
- package/lib/shared-tree/treeCheckout.js +118 -86
- package/lib/shared-tree/treeCheckout.js.map +1 -1
- package/lib/shared-tree-core/branch.d.ts +8 -11
- package/lib/shared-tree-core/branch.d.ts.map +1 -1
- package/lib/shared-tree-core/branch.js +12 -15
- package/lib/shared-tree-core/branch.js.map +1 -1
- package/lib/simple-tree/api/create.d.ts +1 -1
- package/lib/simple-tree/api/create.d.ts.map +1 -1
- package/lib/simple-tree/api/create.js +14 -16
- package/lib/simple-tree/api/create.js.map +1 -1
- package/lib/simple-tree/api/getJsonSchema.d.ts +3 -3
- package/lib/simple-tree/api/getJsonSchema.d.ts.map +1 -1
- package/lib/simple-tree/api/getJsonSchema.js +1 -1
- package/lib/simple-tree/api/getJsonSchema.js.map +1 -1
- package/lib/simple-tree/api/getSimpleSchema.d.ts +2 -2
- package/lib/simple-tree/api/getSimpleSchema.d.ts.map +1 -1
- package/lib/simple-tree/api/getSimpleSchema.js.map +1 -1
- package/lib/simple-tree/api/index.d.ts +2 -1
- package/lib/simple-tree/api/index.d.ts.map +1 -1
- package/lib/simple-tree/api/index.js +1 -0
- package/lib/simple-tree/api/index.js.map +1 -1
- package/lib/simple-tree/api/jsonSchema.d.ts +13 -14
- package/lib/simple-tree/api/jsonSchema.d.ts.map +1 -1
- package/lib/simple-tree/api/jsonSchema.js.map +1 -1
- package/lib/simple-tree/api/schemaFactory.d.ts +14 -8
- package/lib/simple-tree/api/schemaFactory.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaFactory.js +21 -2
- package/lib/simple-tree/api/schemaFactory.js.map +1 -1
- package/lib/simple-tree/api/schemaFactoryRecursive.d.ts +3 -3
- package/lib/simple-tree/api/schemaFactoryRecursive.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaFactoryRecursive.js.map +1 -1
- package/lib/simple-tree/api/simpleSchema.d.ts +18 -10
- 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.d.ts.map +1 -1
- package/lib/simple-tree/api/simpleSchemaToJsonSchema.js +31 -18
- package/lib/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -1
- package/lib/simple-tree/api/tree.d.ts +16 -6
- package/lib/simple-tree/api/tree.d.ts.map +1 -1
- package/lib/simple-tree/api/tree.js +4 -4
- package/lib/simple-tree/api/tree.js.map +1 -1
- package/lib/simple-tree/api/treeNodeApi.d.ts.map +1 -1
- package/lib/simple-tree/api/treeNodeApi.js +10 -8
- package/lib/simple-tree/api/treeNodeApi.js.map +1 -1
- package/lib/simple-tree/api/verboseTree.d.ts.map +1 -1
- package/lib/simple-tree/api/verboseTree.js +6 -10
- package/lib/simple-tree/api/verboseTree.js.map +1 -1
- package/{dist/feature-libraries/typed-schema → lib/simple-tree/api}/view.d.ts +4 -11
- package/lib/simple-tree/api/view.d.ts.map +1 -0
- package/lib/{feature-libraries/typed-schema → simple-tree/api}/view.js +9 -9
- package/lib/simple-tree/api/view.js.map +1 -0
- package/lib/simple-tree/api/viewSchemaToSimpleSchema.d.ts +2 -2
- package/lib/simple-tree/api/viewSchemaToSimpleSchema.d.ts.map +1 -1
- package/lib/simple-tree/api/viewSchemaToSimpleSchema.js +11 -1
- package/lib/simple-tree/api/viewSchemaToSimpleSchema.js.map +1 -1
- package/lib/simple-tree/arrayNode.d.ts +147 -14
- package/lib/simple-tree/arrayNode.d.ts.map +1 -1
- package/lib/simple-tree/arrayNode.js +37 -25
- package/lib/simple-tree/arrayNode.js.map +1 -1
- package/lib/simple-tree/core/context.d.ts +55 -0
- package/lib/simple-tree/core/context.d.ts.map +1 -0
- package/lib/simple-tree/core/context.js +55 -0
- package/lib/simple-tree/core/context.js.map +1 -0
- package/lib/simple-tree/core/getOrCreateNode.d.ts +15 -0
- package/lib/simple-tree/core/getOrCreateNode.d.ts.map +1 -0
- package/lib/simple-tree/core/getOrCreateNode.js +32 -0
- package/lib/simple-tree/core/getOrCreateNode.js.map +1 -0
- package/lib/simple-tree/core/index.d.ts +7 -3
- package/lib/simple-tree/core/index.d.ts.map +1 -1
- package/lib/simple-tree/core/index.js +6 -2
- package/lib/simple-tree/core/index.js.map +1 -1
- package/lib/simple-tree/core/schemaCaching.d.ts +5 -13
- package/lib/simple-tree/core/schemaCaching.d.ts.map +1 -1
- package/lib/simple-tree/core/schemaCaching.js +13 -39
- package/lib/simple-tree/core/schemaCaching.js.map +1 -1
- package/lib/simple-tree/core/treeNodeKernel.d.ts +29 -7
- package/lib/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
- package/lib/simple-tree/core/treeNodeKernel.js +89 -54
- package/lib/simple-tree/core/treeNodeKernel.js.map +1 -1
- package/lib/simple-tree/core/treeNodeSchema.d.ts +24 -0
- package/lib/simple-tree/core/treeNodeSchema.d.ts.map +1 -1
- package/lib/simple-tree/core/treeNodeSchema.js.map +1 -1
- package/lib/simple-tree/core/types.d.ts +0 -5
- package/lib/simple-tree/core/types.d.ts.map +1 -1
- package/lib/simple-tree/core/types.js.map +1 -1
- package/lib/simple-tree/core/unhydratedFlexTree.d.ts +139 -0
- package/lib/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -0
- package/lib/{feature-libraries/flex-map-tree/mapTreeNode.js → simple-tree/core/unhydratedFlexTree.js} +110 -128
- package/lib/simple-tree/core/unhydratedFlexTree.js.map +1 -0
- package/lib/simple-tree/{walkSchema.d.ts → core/walkSchema.d.ts} +8 -4
- package/lib/simple-tree/core/walkSchema.d.ts.map +1 -0
- package/lib/simple-tree/core/walkSchema.js +29 -0
- package/lib/simple-tree/core/walkSchema.js.map +1 -0
- package/lib/simple-tree/createContext.d.ts +11 -0
- package/lib/simple-tree/createContext.d.ts.map +1 -0
- package/lib/simple-tree/createContext.js +21 -0
- package/lib/simple-tree/createContext.js.map +1 -0
- package/lib/simple-tree/index.d.ts +4 -5
- package/lib/simple-tree/index.d.ts.map +1 -1
- package/lib/simple-tree/index.js +3 -4
- package/lib/simple-tree/index.js.map +1 -1
- package/lib/simple-tree/leafNodeSchema.d.ts +1 -0
- package/lib/simple-tree/leafNodeSchema.d.ts.map +1 -1
- package/lib/simple-tree/leafNodeSchema.js +3 -4
- package/lib/simple-tree/leafNodeSchema.js.map +1 -1
- package/lib/simple-tree/mapNode.d.ts +4 -4
- package/lib/simple-tree/mapNode.d.ts.map +1 -1
- package/lib/simple-tree/mapNode.js +12 -8
- package/lib/simple-tree/mapNode.js.map +1 -1
- package/lib/simple-tree/objectNode.d.ts +8 -8
- package/lib/simple-tree/objectNode.d.ts.map +1 -1
- package/lib/simple-tree/objectNode.js +36 -17
- package/lib/simple-tree/objectNode.js.map +1 -1
- package/lib/simple-tree/objectNodeTypes.d.ts +7 -3
- package/lib/simple-tree/objectNodeTypes.d.ts.map +1 -1
- package/lib/simple-tree/objectNodeTypes.js.map +1 -1
- package/lib/simple-tree/proxies.d.ts +1 -2
- package/lib/simple-tree/proxies.d.ts.map +1 -1
- package/lib/simple-tree/proxies.js +7 -22
- package/lib/simple-tree/proxies.js.map +1 -1
- package/lib/simple-tree/schemaTypes.d.ts +44 -4
- package/lib/simple-tree/schemaTypes.d.ts.map +1 -1
- package/lib/simple-tree/schemaTypes.js +10 -0
- package/lib/simple-tree/schemaTypes.js.map +1 -1
- package/lib/simple-tree/toFlexSchema.d.ts +6 -36
- package/lib/simple-tree/toFlexSchema.d.ts.map +1 -1
- package/lib/simple-tree/toFlexSchema.js +61 -142
- package/lib/simple-tree/toFlexSchema.js.map +1 -1
- package/lib/simple-tree/toMapTree.d.ts.map +1 -1
- package/lib/simple-tree/toMapTree.js +4 -4
- package/lib/simple-tree/toMapTree.js.map +1 -1
- package/lib/simple-tree/treeNodeValid.d.ts +13 -5
- package/lib/simple-tree/treeNodeValid.d.ts.map +1 -1
- package/lib/simple-tree/treeNodeValid.js +21 -12
- package/lib/simple-tree/treeNodeValid.js.map +1 -1
- package/lib/simple-tree/typesUnsafe.d.ts +4 -4
- package/lib/simple-tree/typesUnsafe.d.ts.map +1 -1
- package/lib/simple-tree/typesUnsafe.js.map +1 -1
- package/lib/simple-tree/walkFieldSchema.d.ts +11 -0
- package/lib/simple-tree/walkFieldSchema.d.ts.map +1 -0
- package/lib/simple-tree/walkFieldSchema.js +13 -0
- package/lib/simple-tree/walkFieldSchema.js.map +1 -0
- package/lib/util/index.d.ts +1 -1
- package/lib/util/index.d.ts.map +1 -1
- package/lib/util/index.js.map +1 -1
- package/lib/util/typeUtils.d.ts +14 -45
- package/lib/util/typeUtils.d.ts.map +1 -1
- package/lib/util/typeUtils.js.map +1 -1
- package/package.json +41 -22
- package/src/core/index.ts +1 -0
- package/src/core/rebase/index.ts +1 -0
- package/src/core/rebase/types.ts +11 -0
- package/src/core/schema-stored/schema.ts +18 -0
- package/src/core/tree/anchorSet.ts +3 -4
- package/src/core/tree/detachedFieldIndex.ts +14 -3
- package/src/core/tree/detachedFieldIndexTypes.ts +1 -1
- package/src/feature-libraries/editableTreeBinder.ts +2 -915
- package/src/feature-libraries/flex-tree/context.ts +7 -20
- package/src/feature-libraries/flex-tree/flexTreeTypes.ts +2 -18
- package/src/feature-libraries/flex-tree/lazyEntity.ts +1 -4
- package/src/feature-libraries/flex-tree/lazyField.ts +22 -78
- package/src/feature-libraries/flex-tree/lazyNode.ts +24 -39
- package/src/feature-libraries/flex-tree/utilities.ts +1 -1
- package/src/feature-libraries/index.ts +3 -71
- package/src/feature-libraries/modular-schema/modularChangeFamily.ts +97 -10
- package/src/feature-libraries/sequence-field/compose.ts +3 -0
- package/src/feature-libraries/sequence-field/utils.ts +2 -4
- package/src/feature-libraries/typed-schema/flexList.ts +3 -84
- package/src/feature-libraries/typed-schema/index.ts +1 -33
- package/src/feature-libraries/typed-schema/typedTreeSchema.ts +0 -458
- package/src/index.ts +7 -0
- package/src/internalTypes.ts +0 -1
- package/src/packageVersion.ts +1 -1
- package/src/shared-tree/checkoutFlexTreeView.ts +3 -3
- package/src/shared-tree/index.ts +4 -8
- package/src/shared-tree/schematizeTree.ts +2 -56
- package/src/shared-tree/schematizingTreeView.ts +38 -15
- package/src/shared-tree/sharedTree.ts +36 -8
- package/src/shared-tree/treeCheckout.ts +225 -128
- package/src/shared-tree-core/branch.ts +15 -26
- package/src/simple-tree/api/create.ts +18 -20
- package/src/simple-tree/api/getJsonSchema.ts +3 -3
- package/src/simple-tree/api/getSimpleSchema.ts +2 -2
- package/src/simple-tree/api/index.ts +2 -0
- package/src/simple-tree/api/jsonSchema.ts +19 -17
- package/src/simple-tree/api/schemaFactory.ts +53 -18
- package/src/simple-tree/api/schemaFactoryRecursive.ts +3 -6
- package/src/simple-tree/api/simpleSchema.ts +20 -10
- package/src/simple-tree/api/simpleSchemaToJsonSchema.ts +40 -19
- package/src/simple-tree/api/tree.ts +20 -9
- package/src/simple-tree/api/treeNodeApi.ts +12 -10
- package/src/simple-tree/api/verboseTree.ts +6 -12
- package/src/{feature-libraries/typed-schema → simple-tree/api}/view.ts +9 -22
- package/src/simple-tree/api/viewSchemaToSimpleSchema.ts +18 -4
- package/src/simple-tree/arrayNode.ts +202 -53
- package/src/simple-tree/core/context.ts +78 -0
- package/src/simple-tree/core/getOrCreateNode.ts +38 -0
- package/src/simple-tree/core/index.ts +11 -7
- package/src/simple-tree/core/schemaCaching.ts +13 -50
- package/src/simple-tree/core/treeNodeKernel.ts +117 -78
- package/src/simple-tree/core/treeNodeSchema.ts +35 -1
- package/src/simple-tree/core/types.ts +0 -5
- package/src/{feature-libraries/flex-map-tree/mapTreeNode.ts → simple-tree/core/unhydratedFlexTree.ts} +167 -210
- package/src/simple-tree/{walkSchema.ts → core/walkSchema.ts} +12 -34
- package/src/simple-tree/createContext.ts +24 -0
- package/src/simple-tree/index.ts +6 -2
- package/src/simple-tree/leafNodeSchema.ts +3 -9
- package/src/simple-tree/mapNode.ts +20 -17
- package/src/simple-tree/objectNode.ts +63 -38
- package/src/simple-tree/objectNodeTypes.ts +8 -5
- package/src/simple-tree/proxies.ts +8 -26
- package/src/simple-tree/schemaTypes.ts +55 -5
- package/src/simple-tree/toFlexSchema.ts +71 -204
- package/src/simple-tree/toMapTree.ts +5 -5
- package/src/simple-tree/treeNodeValid.ts +28 -22
- package/src/simple-tree/typesUnsafe.ts +4 -4
- package/src/simple-tree/walkFieldSchema.ts +19 -0
- package/src/util/index.ts +1 -5
- package/src/util/typeUtils.ts +14 -56
- package/dist/feature-libraries/fieldGenerator.d.ts +0 -43
- package/dist/feature-libraries/fieldGenerator.d.ts.map +0 -1
- package/dist/feature-libraries/fieldGenerator.js +0 -13
- package/dist/feature-libraries/fieldGenerator.js.map +0 -1
- package/dist/feature-libraries/flex-map-tree/index.d.ts +0 -6
- package/dist/feature-libraries/flex-map-tree/index.d.ts.map +0 -1
- package/dist/feature-libraries/flex-map-tree/index.js +0 -14
- package/dist/feature-libraries/flex-map-tree/index.js.map +0 -1
- package/dist/feature-libraries/flex-map-tree/mapTreeNode.d.ts +0 -157
- package/dist/feature-libraries/flex-map-tree/mapTreeNode.d.ts.map +0 -1
- package/dist/feature-libraries/flex-map-tree/mapTreeNode.js.map +0 -1
- package/dist/feature-libraries/storedToViewSchema.d.ts +0 -17
- package/dist/feature-libraries/storedToViewSchema.d.ts.map +0 -1
- package/dist/feature-libraries/storedToViewSchema.js +0 -67
- package/dist/feature-libraries/storedToViewSchema.js.map +0 -1
- package/dist/feature-libraries/typed-schema/schemaCollection.d.ts +0 -58
- package/dist/feature-libraries/typed-schema/schemaCollection.d.ts.map +0 -1
- package/dist/feature-libraries/typed-schema/schemaCollection.js +0 -160
- package/dist/feature-libraries/typed-schema/schemaCollection.js.map +0 -1
- package/dist/feature-libraries/typed-schema/typeUtils.d.ts +0 -15
- package/dist/feature-libraries/typed-schema/typeUtils.d.ts.map +0 -1
- package/dist/feature-libraries/typed-schema/typeUtils.js +0 -14
- package/dist/feature-libraries/typed-schema/typeUtils.js.map +0 -1
- package/dist/feature-libraries/typed-schema/view.d.ts.map +0 -1
- package/dist/feature-libraries/typed-schema/view.js.map +0 -1
- package/dist/simple-tree/getSimpleFieldSchema.d.ts +0 -14
- package/dist/simple-tree/getSimpleFieldSchema.d.ts.map +0 -1
- package/dist/simple-tree/getSimpleFieldSchema.js +0 -29
- package/dist/simple-tree/getSimpleFieldSchema.js.map +0 -1
- package/dist/simple-tree/walkSchema.d.ts.map +0 -1
- package/dist/simple-tree/walkSchema.js +0 -49
- package/dist/simple-tree/walkSchema.js.map +0 -1
- package/lib/feature-libraries/fieldGenerator.d.ts +0 -43
- package/lib/feature-libraries/fieldGenerator.d.ts.map +0 -1
- package/lib/feature-libraries/fieldGenerator.js +0 -12
- package/lib/feature-libraries/fieldGenerator.js.map +0 -1
- package/lib/feature-libraries/flex-map-tree/index.d.ts +0 -6
- package/lib/feature-libraries/flex-map-tree/index.d.ts.map +0 -1
- package/lib/feature-libraries/flex-map-tree/index.js +0 -6
- package/lib/feature-libraries/flex-map-tree/index.js.map +0 -1
- package/lib/feature-libraries/flex-map-tree/mapTreeNode.d.ts +0 -157
- package/lib/feature-libraries/flex-map-tree/mapTreeNode.d.ts.map +0 -1
- package/lib/feature-libraries/flex-map-tree/mapTreeNode.js.map +0 -1
- package/lib/feature-libraries/storedToViewSchema.d.ts +0 -17
- package/lib/feature-libraries/storedToViewSchema.d.ts.map +0 -1
- package/lib/feature-libraries/storedToViewSchema.js +0 -62
- package/lib/feature-libraries/storedToViewSchema.js.map +0 -1
- package/lib/feature-libraries/typed-schema/schemaCollection.d.ts +0 -58
- package/lib/feature-libraries/typed-schema/schemaCollection.d.ts.map +0 -1
- package/lib/feature-libraries/typed-schema/schemaCollection.js +0 -153
- package/lib/feature-libraries/typed-schema/schemaCollection.js.map +0 -1
- package/lib/feature-libraries/typed-schema/typeUtils.d.ts +0 -15
- package/lib/feature-libraries/typed-schema/typeUtils.d.ts.map +0 -1
- package/lib/feature-libraries/typed-schema/typeUtils.js +0 -10
- package/lib/feature-libraries/typed-schema/typeUtils.js.map +0 -1
- package/lib/feature-libraries/typed-schema/view.d.ts.map +0 -1
- package/lib/feature-libraries/typed-schema/view.js.map +0 -1
- package/lib/simple-tree/getSimpleFieldSchema.d.ts +0 -14
- package/lib/simple-tree/getSimpleFieldSchema.d.ts.map +0 -1
- package/lib/simple-tree/getSimpleFieldSchema.js +0 -25
- package/lib/simple-tree/getSimpleFieldSchema.js.map +0 -1
- package/lib/simple-tree/walkSchema.d.ts.map +0 -1
- package/lib/simple-tree/walkSchema.js +0 -43
- package/lib/simple-tree/walkSchema.js.map +0 -1
- package/src/feature-libraries/fieldGenerator.ts +0 -47
- package/src/feature-libraries/flex-map-tree/index.ts +0 -14
- package/src/feature-libraries/storedToViewSchema.ts +0 -100
- package/src/feature-libraries/typed-schema/schemaCollection.ts +0 -254
- package/src/feature-libraries/typed-schema/typeUtils.ts +0 -29
- package/src/simple-tree/getSimpleFieldSchema.ts +0 -36
|
@@ -50,16 +50,25 @@ import {
|
|
|
50
50
|
type FieldBatchCodec,
|
|
51
51
|
type TreeCompressionStrategy,
|
|
52
52
|
buildForest,
|
|
53
|
+
createNodeKeyManager,
|
|
53
54
|
intoDelta,
|
|
54
55
|
jsonableTreeFromCursor,
|
|
55
56
|
makeFieldBatchCodec,
|
|
56
57
|
} from "../feature-libraries/index.js";
|
|
57
58
|
import { SharedTreeBranch, getChangeReplaceType } from "../shared-tree-core/index.js";
|
|
58
|
-
import {
|
|
59
|
+
import { Breakable, TransactionResult, disposeSymbol, fail } from "../util/index.js";
|
|
59
60
|
|
|
60
61
|
import { SharedTreeChangeFamily, hasSchemaChange } from "./sharedTreeChangeFamily.js";
|
|
61
62
|
import type { SharedTreeChange } from "./sharedTreeChangeTypes.js";
|
|
62
63
|
import type { ISharedTreeEditor, SharedTreeEditBuilder } from "./sharedTreeEditBuilder.js";
|
|
64
|
+
import type { IDisposable } from "@fluidframework/core-interfaces";
|
|
65
|
+
import type {
|
|
66
|
+
ImplicitFieldSchema,
|
|
67
|
+
TreeView,
|
|
68
|
+
TreeViewConfiguration,
|
|
69
|
+
ViewableTree,
|
|
70
|
+
} from "../simple-tree/index.js";
|
|
71
|
+
import { SchematizingSimpleTreeView } from "./schematizingTreeView.js";
|
|
63
72
|
|
|
64
73
|
/**
|
|
65
74
|
* Events for {@link ITreeCheckout}.
|
|
@@ -89,6 +98,57 @@ export interface CheckoutEvents {
|
|
|
89
98
|
commitApplied(data: CommitMetadata, getRevertible?: RevertibleFactory): void;
|
|
90
99
|
}
|
|
91
100
|
|
|
101
|
+
/**
|
|
102
|
+
* A "version control"-style branch of a SharedTree.
|
|
103
|
+
* @remarks Branches may be used to coordinate edits to a SharedTree, e.g. via merge and rebase operations.
|
|
104
|
+
* Changes applied to a branch of a branch only apply to that branch and are isolated from other branches.
|
|
105
|
+
* Changes may be synchronized across branches via merge and rebase operations provided on the branch object.
|
|
106
|
+
* @alpha @sealed
|
|
107
|
+
*/
|
|
108
|
+
export interface TreeBranch extends ViewableTree {
|
|
109
|
+
/**
|
|
110
|
+
* Spawn a new branch which is based off of the current state of this branch.
|
|
111
|
+
* Any mutations of the new branch will not apply to this branch until the new branch is merged back into this branch via `merge()`.
|
|
112
|
+
*/
|
|
113
|
+
branch(): TreeBranchFork;
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Apply all the new changes on the given branch to this branch.
|
|
117
|
+
* @param view - a branch which was created by a call to `branch()`.
|
|
118
|
+
* It is automatically disposed after the merge completes.
|
|
119
|
+
* @remarks All ongoing transactions (if any) in `branch` will be committed before the merge.
|
|
120
|
+
* A "commitApplied" event and a corresponding {@link Revertible} will be emitted on this branch for each new change merged from 'branch'.
|
|
121
|
+
*/
|
|
122
|
+
merge(branch: TreeBranchFork): void;
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Apply all the new changes on the given branch to this branch.
|
|
126
|
+
* @param branch - a branch which was created by a call to `branch()`.
|
|
127
|
+
* @param disposeMerged - whether or not to dispose `branch` after the merge completes.
|
|
128
|
+
* @remarks All ongoing transactions (if any) in `branch` will be committed before the merge.
|
|
129
|
+
*/
|
|
130
|
+
merge(branch: TreeBranchFork, disposeMerged: boolean): void;
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* Rebase the given branch onto this branch.
|
|
134
|
+
* @param branch - a branch which was created by a call to `branch()`. It is modified by this operation.
|
|
135
|
+
*/
|
|
136
|
+
rebase(branch: TreeBranchFork): void;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* A {@link TreeBranch | branch} of a SharedTree that has merged from another branch.
|
|
141
|
+
* @remarks This branch should be disposed when it is no longer needed in order to free resources.
|
|
142
|
+
* @alpha @sealed
|
|
143
|
+
*/
|
|
144
|
+
export interface TreeBranchFork extends TreeBranch, IDisposable {
|
|
145
|
+
/**
|
|
146
|
+
* Rebase the changes that have been applied to this branch over all the new changes in the given branch.
|
|
147
|
+
* @param branch - Either the root branch or a branch that was created by a call to `branch()`. It is not modified by this operation.
|
|
148
|
+
*/
|
|
149
|
+
rebaseOnto(branch: TreeBranch): void;
|
|
150
|
+
}
|
|
151
|
+
|
|
92
152
|
/**
|
|
93
153
|
* Provides a means for interacting with a SharedTree.
|
|
94
154
|
* This includes reading data from the tree and running transactions to mutate the tree.
|
|
@@ -97,7 +157,7 @@ export interface CheckoutEvents {
|
|
|
97
157
|
* API for interacting with a {@link SharedTreeBranch}.
|
|
98
158
|
* Implementations of this interface must implement the {@link branchKey} property.
|
|
99
159
|
*/
|
|
100
|
-
export interface ITreeCheckout extends AnchorLocator {
|
|
160
|
+
export interface ITreeCheckout extends AnchorLocator, ViewableTree {
|
|
101
161
|
/**
|
|
102
162
|
* Read and Write access for schema stored in the document.
|
|
103
163
|
*
|
|
@@ -133,33 +193,13 @@ export interface ITreeCheckout extends AnchorLocator {
|
|
|
133
193
|
*/
|
|
134
194
|
readonly transaction: ITransaction;
|
|
135
195
|
|
|
136
|
-
|
|
137
|
-
* Spawn a new view which is based off of the current state of this view.
|
|
138
|
-
* Any mutations of the new view will not apply to this view until the new view is merged back into this view via `merge()`.
|
|
139
|
-
*/
|
|
140
|
-
fork(): ITreeCheckoutFork;
|
|
196
|
+
branch(): ITreeCheckoutFork;
|
|
141
197
|
|
|
142
|
-
|
|
143
|
-
* Apply all the new changes on the given view to this view.
|
|
144
|
-
* @param view - a view which was created by a call to `fork()`.
|
|
145
|
-
* It is automatically disposed after the merge completes.
|
|
146
|
-
* @remarks All ongoing transactions (if any) in `view` will be committed before the merge.
|
|
147
|
-
*/
|
|
148
|
-
merge(view: ITreeCheckoutFork): void;
|
|
198
|
+
merge(checkout: ITreeCheckoutFork): void;
|
|
149
199
|
|
|
150
|
-
|
|
151
|
-
* Apply all the new changes on the given view to this view.
|
|
152
|
-
* @param view - a view which was created by a call to `fork()`.
|
|
153
|
-
* @param disposeView - whether or not to dispose `view` after the merge completes.
|
|
154
|
-
* @remarks All ongoing transactions (if any) in `view` will be committed before the merge.
|
|
155
|
-
*/
|
|
156
|
-
merge(view: ITreeCheckoutFork, disposeView: boolean): void;
|
|
200
|
+
merge(checkout: ITreeCheckoutFork, disposeMerged: boolean): void;
|
|
157
201
|
|
|
158
|
-
|
|
159
|
-
* Rebase the given view onto this view.
|
|
160
|
-
* @param view - a view which was created by a call to `fork()`. It is modified by this operation.
|
|
161
|
-
*/
|
|
162
|
-
rebase(view: ITreeCheckoutFork): void;
|
|
202
|
+
rebase(checkout: ITreeCheckoutFork): void;
|
|
163
203
|
|
|
164
204
|
/**
|
|
165
205
|
* Replaces all schema with the provided schema.
|
|
@@ -210,6 +250,7 @@ export function createTreeCheckout(
|
|
|
210
250
|
removedRoots?: DetachedFieldIndex;
|
|
211
251
|
chunkCompressionStrategy?: TreeCompressionStrategy;
|
|
212
252
|
logger?: ITelemetryLoggerExt;
|
|
253
|
+
breaker?: Breakable;
|
|
213
254
|
},
|
|
214
255
|
): TreeCheckout {
|
|
215
256
|
const forest = args?.forest ?? buildForest();
|
|
@@ -252,6 +293,7 @@ export function createTreeCheckout(
|
|
|
252
293
|
idCompressor,
|
|
253
294
|
args?.removedRoots,
|
|
254
295
|
args?.logger,
|
|
296
|
+
args?.breaker,
|
|
255
297
|
);
|
|
256
298
|
}
|
|
257
299
|
|
|
@@ -263,7 +305,7 @@ export function createTreeCheckout(
|
|
|
263
305
|
* Transactions may nest, meaning that a transaction may be started while a transaction is already ongoing.
|
|
264
306
|
*
|
|
265
307
|
* To avoid updating observers of the view state with intermediate results during a transaction,
|
|
266
|
-
* use {@link ITreeCheckout#
|
|
308
|
+
* use {@link ITreeCheckout#branch} and {@link ISharedTreeFork#merge}.
|
|
267
309
|
*/
|
|
268
310
|
export interface ITransaction {
|
|
269
311
|
/**
|
|
@@ -328,11 +370,7 @@ class Transaction implements ITransaction {
|
|
|
328
370
|
*
|
|
329
371
|
* {@link ITreeCheckout} that has forked off of the main trunk/branch.
|
|
330
372
|
*/
|
|
331
|
-
export interface ITreeCheckoutFork extends ITreeCheckout
|
|
332
|
-
/**
|
|
333
|
-
* Rebase the changes that have been applied to this view over all the new changes in the given view.
|
|
334
|
-
* @param view - Either the root view or a view that was created by a call to `fork()`. It is not modified by this operation.
|
|
335
|
-
*/
|
|
373
|
+
export interface ITreeCheckoutFork extends ITreeCheckout {
|
|
336
374
|
rebaseOnto(view: ITreeCheckout): void;
|
|
337
375
|
}
|
|
338
376
|
|
|
@@ -354,7 +392,9 @@ export interface RevertMetrics {
|
|
|
354
392
|
* An implementation of {@link ITreeCheckoutFork}.
|
|
355
393
|
*/
|
|
356
394
|
export class TreeCheckout implements ITreeCheckoutFork {
|
|
357
|
-
|
|
395
|
+
public disposed = false;
|
|
396
|
+
|
|
397
|
+
private readonly views = new Set<TreeView<ImplicitFieldSchema>>();
|
|
358
398
|
|
|
359
399
|
/**
|
|
360
400
|
* Set of revertibles maintained for automatic disposal
|
|
@@ -384,7 +424,7 @@ export class TreeCheckout implements ITreeCheckoutFork {
|
|
|
384
424
|
|
|
385
425
|
public constructor(
|
|
386
426
|
public readonly transaction: ITransaction,
|
|
387
|
-
private readonly
|
|
427
|
+
private readonly _branch: SharedTreeBranch<SharedTreeEditBuilder, SharedTreeChange>,
|
|
388
428
|
private readonly changeFamily: ChangeFamily<SharedTreeEditBuilder, SharedTreeChange>,
|
|
389
429
|
public readonly storedSchema: TreeStoredSchemaRepository,
|
|
390
430
|
public readonly forest: IEditableForest,
|
|
@@ -401,17 +441,18 @@ export class TreeCheckout implements ITreeCheckoutFork {
|
|
|
401
441
|
),
|
|
402
442
|
/** Optional logger for telemetry. */
|
|
403
443
|
private readonly logger?: ITelemetryLoggerExt,
|
|
444
|
+
private readonly breaker: Breakable = new Breakable("TreeCheckout"),
|
|
404
445
|
) {
|
|
405
446
|
// when a transaction is started, take a snapshot of the current state of removed roots
|
|
406
|
-
|
|
447
|
+
_branch.on("transactionStarted", () => {
|
|
407
448
|
this.removedRootsSnapshots.push(this.removedRoots.clone());
|
|
408
449
|
});
|
|
409
450
|
// when a transaction is committed, the latest snapshot of removed roots can be discarded
|
|
410
|
-
|
|
451
|
+
_branch.on("transactionCommitted", () => {
|
|
411
452
|
this.removedRootsSnapshots.pop();
|
|
412
453
|
});
|
|
413
454
|
// after a transaction is rolled back, revert removed roots back to the latest snapshot
|
|
414
|
-
|
|
455
|
+
_branch.on("transactionRolledBack", () => {
|
|
415
456
|
const snapshot = this.removedRootsSnapshots.pop();
|
|
416
457
|
assert(snapshot !== undefined, 0x9ae /* a snapshot for removed roots does not exist */);
|
|
417
458
|
this.removedRoots = snapshot;
|
|
@@ -421,7 +462,7 @@ export class TreeCheckout implements ITreeCheckoutFork {
|
|
|
421
462
|
// 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.
|
|
422
463
|
// In such a case we will crash here, preventing the change from being added to the commit graph, and preventing `afterChange` from firing.
|
|
423
464
|
// 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`.
|
|
424
|
-
|
|
465
|
+
_branch.on("beforeChange", (event) => {
|
|
425
466
|
if (event.change !== undefined) {
|
|
426
467
|
const revision =
|
|
427
468
|
event.type === "replace"
|
|
@@ -468,72 +509,83 @@ export class TreeCheckout implements ITreeCheckoutFork {
|
|
|
468
509
|
}
|
|
469
510
|
}
|
|
470
511
|
});
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
512
|
+
_branch.on("afterChange", (event) => {
|
|
513
|
+
// The following logic allows revertibles to be generated for the change.
|
|
514
|
+
// Currently only appends (including merges) and transaction commits are supported.
|
|
515
|
+
if (!_branch.isTransacting()) {
|
|
516
|
+
if (
|
|
517
|
+
event.type === "append" ||
|
|
518
|
+
(event.type === "replace" && getChangeReplaceType(event) === "transactionCommit")
|
|
519
|
+
) {
|
|
520
|
+
for (const commit of event.newCommits) {
|
|
521
|
+
const kind = event.type === "append" ? event.kind : CommitKind.Default;
|
|
522
|
+
const { change, revision } = commit;
|
|
523
|
+
|
|
524
|
+
const getRevertible = hasSchemaChange(change)
|
|
525
|
+
? undefined
|
|
526
|
+
: (onRevertibleDisposed?: (revertible: Revertible) => void) => {
|
|
527
|
+
if (!withinEventContext) {
|
|
528
|
+
throw new UsageError(
|
|
529
|
+
"Cannot get a revertible outside of the context of a commitApplied event.",
|
|
530
|
+
);
|
|
531
|
+
}
|
|
532
|
+
if (this.revertibleCommitBranches.get(revision) !== undefined) {
|
|
533
|
+
throw new UsageError(
|
|
534
|
+
"Cannot generate the same revertible more than once. Note that this can happen when multiple commitApplied event listeners are registered.",
|
|
535
|
+
);
|
|
536
|
+
}
|
|
537
|
+
const revertibleCommits = this.revertibleCommitBranches;
|
|
538
|
+
const revertible: DisposableRevertible = {
|
|
539
|
+
get status(): RevertibleStatus {
|
|
540
|
+
const revertibleCommit = revertibleCommits.get(revision);
|
|
541
|
+
return revertibleCommit === undefined
|
|
542
|
+
? RevertibleStatus.Disposed
|
|
543
|
+
: RevertibleStatus.Valid;
|
|
544
|
+
},
|
|
545
|
+
revert: (release: boolean = true) => {
|
|
546
|
+
if (revertible.status === RevertibleStatus.Disposed) {
|
|
547
|
+
throw new UsageError(
|
|
548
|
+
"Unable to revert a revertible that has been disposed.",
|
|
549
|
+
);
|
|
550
|
+
}
|
|
551
|
+
|
|
552
|
+
const revertMetrics = this.revertRevertible(revision, kind);
|
|
553
|
+
this.logger?.sendTelemetryEvent({
|
|
554
|
+
eventName: TreeCheckout.revertTelemetryEventName,
|
|
555
|
+
...revertMetrics,
|
|
556
|
+
});
|
|
557
|
+
|
|
558
|
+
if (release) {
|
|
559
|
+
revertible.dispose();
|
|
560
|
+
}
|
|
561
|
+
},
|
|
562
|
+
dispose: () => {
|
|
563
|
+
if (revertible.status === RevertibleStatus.Disposed) {
|
|
564
|
+
throw new UsageError(
|
|
565
|
+
"Unable to dispose a revertible that has already been disposed.",
|
|
566
|
+
);
|
|
567
|
+
}
|
|
568
|
+
this.disposeRevertible(revertible, revision);
|
|
569
|
+
onRevertibleDisposed?.(revertible);
|
|
570
|
+
},
|
|
571
|
+
};
|
|
572
|
+
|
|
573
|
+
this.revertibleCommitBranches.set(revision, _branch.fork(commit));
|
|
574
|
+
this.revertibles.add(revertible);
|
|
575
|
+
return revertible;
|
|
576
|
+
};
|
|
577
|
+
|
|
578
|
+
let withinEventContext = true;
|
|
579
|
+
this.events.emit("commitApplied", { isLocal: true, kind }, getRevertible);
|
|
580
|
+
withinEventContext = false;
|
|
581
|
+
}
|
|
582
|
+
}
|
|
583
|
+
}
|
|
532
584
|
});
|
|
533
585
|
|
|
534
586
|
// When the branch is trimmed, we can garbage collect any repair data whose latest relevant revision is one of the
|
|
535
587
|
// trimmed revisions.
|
|
536
|
-
|
|
588
|
+
_branch.on("ancestryTrimmed", (revisions) => {
|
|
537
589
|
this.withCombinedVisitor((visitor) => {
|
|
538
590
|
revisions.forEach((revision) => {
|
|
539
591
|
// get all the roots last created or used by the revision
|
|
@@ -560,8 +612,29 @@ export class TreeCheckout implements ITreeCheckoutFork {
|
|
|
560
612
|
combinedVisitor.free();
|
|
561
613
|
}
|
|
562
614
|
|
|
563
|
-
private checkNotDisposed(): void {
|
|
564
|
-
|
|
615
|
+
private checkNotDisposed(usageError?: string): void {
|
|
616
|
+
if (this.disposed) {
|
|
617
|
+
if (usageError !== undefined) {
|
|
618
|
+
throw new UsageError(usageError);
|
|
619
|
+
}
|
|
620
|
+
assert(false, 0x911 /* Invalid operation on a disposed TreeCheckout */);
|
|
621
|
+
}
|
|
622
|
+
}
|
|
623
|
+
|
|
624
|
+
public viewWith<TRoot extends ImplicitFieldSchema>(
|
|
625
|
+
config: TreeViewConfiguration<TRoot>,
|
|
626
|
+
): SchematizingSimpleTreeView<TRoot> {
|
|
627
|
+
const view = new SchematizingSimpleTreeView(
|
|
628
|
+
this,
|
|
629
|
+
config,
|
|
630
|
+
createNodeKeyManager(this.idCompressor),
|
|
631
|
+
this.breaker,
|
|
632
|
+
() => {
|
|
633
|
+
this.views.delete(view);
|
|
634
|
+
},
|
|
635
|
+
);
|
|
636
|
+
this.views.add(view);
|
|
637
|
+
return view;
|
|
565
638
|
}
|
|
566
639
|
|
|
567
640
|
public get rootEvents(): Listenable<AnchorSetRootEvents> {
|
|
@@ -570,7 +643,7 @@ export class TreeCheckout implements ITreeCheckoutFork {
|
|
|
570
643
|
|
|
571
644
|
public get editor(): ISharedTreeEditor {
|
|
572
645
|
this.checkNotDisposed();
|
|
573
|
-
return this.
|
|
646
|
+
return this._branch.editor;
|
|
574
647
|
}
|
|
575
648
|
|
|
576
649
|
public locate(anchor: Anchor): AnchorNode | undefined {
|
|
@@ -578,10 +651,12 @@ export class TreeCheckout implements ITreeCheckoutFork {
|
|
|
578
651
|
return this.forest.anchors.locate(anchor);
|
|
579
652
|
}
|
|
580
653
|
|
|
581
|
-
public
|
|
582
|
-
this.checkNotDisposed(
|
|
654
|
+
public branch(): TreeCheckout {
|
|
655
|
+
this.checkNotDisposed(
|
|
656
|
+
"The parent branch has already been disposed and can no longer create new branches.",
|
|
657
|
+
);
|
|
583
658
|
const anchors = new AnchorSet();
|
|
584
|
-
const branch = this.
|
|
659
|
+
const branch = this._branch.fork();
|
|
585
660
|
const storedSchema = this.storedSchema.clone();
|
|
586
661
|
const forest = this.forest.clone(storedSchema, anchors);
|
|
587
662
|
const transaction = new Transaction(branch);
|
|
@@ -597,37 +672,50 @@ export class TreeCheckout implements ITreeCheckoutFork {
|
|
|
597
672
|
this.idCompressor,
|
|
598
673
|
this.removedRoots.clone(),
|
|
599
674
|
this.logger,
|
|
675
|
+
this.breaker,
|
|
600
676
|
);
|
|
601
677
|
}
|
|
602
678
|
|
|
603
|
-
public rebase(
|
|
604
|
-
this.checkNotDisposed(
|
|
679
|
+
public rebase(checkout: TreeCheckout): void {
|
|
680
|
+
this.checkNotDisposed(
|
|
681
|
+
"The target of the branch rebase has been disposed and cannot be rebased.",
|
|
682
|
+
);
|
|
683
|
+
checkout.checkNotDisposed(
|
|
684
|
+
"The source of the branch rebase has been disposed and cannot be rebased.",
|
|
685
|
+
);
|
|
605
686
|
assert(
|
|
606
|
-
!
|
|
687
|
+
!checkout.transaction.inProgress(),
|
|
607
688
|
0x9af /* A view cannot be rebased while it has a pending transaction */,
|
|
608
689
|
);
|
|
609
|
-
|
|
690
|
+
checkout._branch.rebaseOnto(this._branch);
|
|
610
691
|
}
|
|
611
692
|
|
|
612
|
-
public rebaseOnto(
|
|
613
|
-
this.checkNotDisposed(
|
|
614
|
-
|
|
693
|
+
public rebaseOnto(checkout: ITreeCheckout): void {
|
|
694
|
+
this.checkNotDisposed(
|
|
695
|
+
"The target of the branch rebase has been disposed and cannot be rebased.",
|
|
696
|
+
);
|
|
697
|
+
checkout.rebase(this);
|
|
615
698
|
}
|
|
616
699
|
|
|
617
|
-
public merge(
|
|
618
|
-
public merge(
|
|
619
|
-
public merge(
|
|
620
|
-
this.checkNotDisposed(
|
|
700
|
+
public merge(checkout: TreeCheckout): void;
|
|
701
|
+
public merge(checkout: TreeCheckout, disposeMerged: boolean): void;
|
|
702
|
+
public merge(checkout: TreeCheckout, disposeMerged = true): void {
|
|
703
|
+
this.checkNotDisposed(
|
|
704
|
+
"The target of the branch merge has been disposed and cannot be merged.",
|
|
705
|
+
);
|
|
706
|
+
checkout.checkNotDisposed(
|
|
707
|
+
"The source of the branch merge has been disposed and cannot be merged.",
|
|
708
|
+
);
|
|
621
709
|
assert(
|
|
622
710
|
!this.transaction.inProgress(),
|
|
623
711
|
0x9b0 /* Views cannot be merged into a view while it has a pending transaction */,
|
|
624
712
|
);
|
|
625
|
-
while (
|
|
626
|
-
|
|
713
|
+
while (checkout.transaction.inProgress()) {
|
|
714
|
+
checkout.transaction.commit();
|
|
627
715
|
}
|
|
628
|
-
this.
|
|
629
|
-
if (
|
|
630
|
-
|
|
716
|
+
this._branch.merge(checkout._branch);
|
|
717
|
+
if (disposeMerged) {
|
|
718
|
+
checkout[disposeSymbol]();
|
|
631
719
|
}
|
|
632
720
|
}
|
|
633
721
|
|
|
@@ -636,11 +724,20 @@ export class TreeCheckout implements ITreeCheckoutFork {
|
|
|
636
724
|
this.editor.schema.setStoredSchema(this.storedSchema.clone(), newSchema);
|
|
637
725
|
}
|
|
638
726
|
|
|
727
|
+
public dispose(): void {
|
|
728
|
+
this[disposeSymbol]();
|
|
729
|
+
}
|
|
730
|
+
|
|
639
731
|
public [disposeSymbol](): void {
|
|
640
|
-
this.checkNotDisposed(
|
|
641
|
-
|
|
732
|
+
this.checkNotDisposed(
|
|
733
|
+
"The branch has already been disposed and cannot be disposed again.",
|
|
734
|
+
);
|
|
735
|
+
this.disposed = true;
|
|
642
736
|
this.purgeRevertibles();
|
|
643
|
-
this.
|
|
737
|
+
this._branch.dispose();
|
|
738
|
+
for (const view of this.views) {
|
|
739
|
+
view.dispose();
|
|
740
|
+
}
|
|
644
741
|
}
|
|
645
742
|
|
|
646
743
|
public getRemovedRoots(): [string | number | undefined, number, JsonableTree][] {
|
|
@@ -681,7 +778,7 @@ export class TreeCheckout implements ITreeCheckoutFork {
|
|
|
681
778
|
}
|
|
682
779
|
|
|
683
780
|
private revertRevertible(revision: RevisionTag, kind: CommitKind): RevertMetrics {
|
|
684
|
-
if (this.
|
|
781
|
+
if (this._branch.isTransacting()) {
|
|
685
782
|
throw new UsageError("Undo is not yet supported during transactions.");
|
|
686
783
|
}
|
|
687
784
|
|
|
@@ -693,7 +790,7 @@ export class TreeCheckout implements ITreeCheckoutFork {
|
|
|
693
790
|
this.changeFamily.rebaser.invert(tagChange(commitToRevert.change, revision), false),
|
|
694
791
|
);
|
|
695
792
|
|
|
696
|
-
const headCommit = this.
|
|
793
|
+
const headCommit = this._branch.getHead();
|
|
697
794
|
// Rebase the inverted change onto any commits that occurred after the undoable commits.
|
|
698
795
|
if (commitToRevert !== headCommit) {
|
|
699
796
|
change = makeAnonChange(
|
|
@@ -707,7 +804,7 @@ export class TreeCheckout implements ITreeCheckoutFork {
|
|
|
707
804
|
);
|
|
708
805
|
}
|
|
709
806
|
|
|
710
|
-
this.
|
|
807
|
+
this._branch.apply(
|
|
711
808
|
change.change,
|
|
712
809
|
this.mintRevisionTag(),
|
|
713
810
|
kind === CommitKind.Default || kind === CommitKind.Redo
|
|
@@ -11,7 +11,6 @@ import {
|
|
|
11
11
|
type ChangeFamily,
|
|
12
12
|
type ChangeFamilyEditor,
|
|
13
13
|
CommitKind,
|
|
14
|
-
type CommitMetadata,
|
|
15
14
|
type GraphCommit,
|
|
16
15
|
type RevisionTag,
|
|
17
16
|
type TaggedChange,
|
|
@@ -46,6 +45,7 @@ import { fail } from "../util/index.js";
|
|
|
46
45
|
export type SharedTreeBranchChange<TChange> =
|
|
47
46
|
| {
|
|
48
47
|
type: "append";
|
|
48
|
+
kind: CommitKind;
|
|
49
49
|
change: TaggedChange<TChange>;
|
|
50
50
|
newCommits: readonly GraphCommit<TChange>[];
|
|
51
51
|
}
|
|
@@ -116,11 +116,6 @@ export interface SharedTreeBranchEvents<TEditor extends ChangeFamilyEditor, TCha
|
|
|
116
116
|
*/
|
|
117
117
|
afterChange(change: SharedTreeBranchChange<TChange>): void;
|
|
118
118
|
|
|
119
|
-
/**
|
|
120
|
-
* {@inheritdoc TreeViewEvents.commitApplied}
|
|
121
|
-
*/
|
|
122
|
-
commitApplied(data: CommitMetadata): void;
|
|
123
|
-
|
|
124
119
|
/**
|
|
125
120
|
* Fired when this branch forks
|
|
126
121
|
* @param fork - the new branch that forked off of this branch
|
|
@@ -250,13 +245,13 @@ export class SharedTreeBranch<
|
|
|
250
245
|
* Apply a change to this branch.
|
|
251
246
|
* @param change - the change to apply
|
|
252
247
|
* @param revision - the revision of the new head commit of the branch that contains `change`
|
|
253
|
-
* @param
|
|
248
|
+
* @param kind - the kind of change to apply
|
|
254
249
|
* @returns the change that was applied and the new head commit of the branch
|
|
255
250
|
*/
|
|
256
251
|
public apply(
|
|
257
252
|
change: TChange,
|
|
258
253
|
revision: RevisionTag,
|
|
259
|
-
|
|
254
|
+
kind: CommitKind = CommitKind.Default,
|
|
260
255
|
): [change: TChange, newCommit: GraphCommit<TChange>] {
|
|
261
256
|
this.assertNotDisposed();
|
|
262
257
|
|
|
@@ -270,18 +265,13 @@ export class SharedTreeBranch<
|
|
|
270
265
|
|
|
271
266
|
const changeEvent = {
|
|
272
267
|
type: "append",
|
|
268
|
+
kind,
|
|
273
269
|
change: tagChange(changeWithRevision, revision),
|
|
274
270
|
newCommits: [newHead],
|
|
275
271
|
} as const;
|
|
276
272
|
|
|
277
273
|
this.emit("beforeChange", changeEvent);
|
|
278
274
|
this.head = newHead;
|
|
279
|
-
|
|
280
|
-
// If this is not part of a transaction, emit a commitApplied event
|
|
281
|
-
if (!this.isTransacting()) {
|
|
282
|
-
this.emit("commitApplied", { isLocal: true, kind: changeKind });
|
|
283
|
-
}
|
|
284
|
-
|
|
285
275
|
this.emit("afterChange", changeEvent);
|
|
286
276
|
return [changeWithRevision, newHead];
|
|
287
277
|
}
|
|
@@ -351,12 +341,6 @@ export class SharedTreeBranch<
|
|
|
351
341
|
|
|
352
342
|
this.emit("beforeChange", changeEvent);
|
|
353
343
|
this.head = newHead;
|
|
354
|
-
|
|
355
|
-
// If this transaction is not nested, emit a commitApplied event
|
|
356
|
-
if (!this.isTransacting()) {
|
|
357
|
-
this.emit("commitApplied", { isLocal: true, kind: CommitKind.Default });
|
|
358
|
-
}
|
|
359
|
-
|
|
360
344
|
this.emit("afterChange", changeEvent);
|
|
361
345
|
return [commits, newHead];
|
|
362
346
|
}
|
|
@@ -442,14 +426,14 @@ export class SharedTreeBranch<
|
|
|
442
426
|
|
|
443
427
|
/**
|
|
444
428
|
* Spawn a new branch that is based off of the current state of this branch.
|
|
445
|
-
*
|
|
446
|
-
*
|
|
447
|
-
*
|
|
429
|
+
* @param commit - The commit to base the new branch off of. Defaults to the head of this branch.
|
|
430
|
+
* @remarks Changes made to the new branch will not be applied to this branch until the new branch is {@link SharedTreeBranch.merge | merged} back in.
|
|
431
|
+
* Forks created during a transaction will be disposed when the transaction ends.
|
|
448
432
|
*/
|
|
449
|
-
public fork(): SharedTreeBranch<TEditor, TChange> {
|
|
433
|
+
public fork(commit: GraphCommit<TChange> = this.head): SharedTreeBranch<TEditor, TChange> {
|
|
450
434
|
this.assertNotDisposed();
|
|
451
435
|
const fork = new SharedTreeBranch(
|
|
452
|
-
|
|
436
|
+
commit,
|
|
453
437
|
this.changeFamily,
|
|
454
438
|
this.mintRevisionTag,
|
|
455
439
|
this.branchTrimmer,
|
|
@@ -501,9 +485,9 @@ export class SharedTreeBranch<
|
|
|
501
485
|
removedCommits: deletedSourceCommits,
|
|
502
486
|
newCommits,
|
|
503
487
|
} as const;
|
|
488
|
+
|
|
504
489
|
this.emit("beforeChange", changeEvent);
|
|
505
490
|
this.head = newSourceHead;
|
|
506
|
-
|
|
507
491
|
this.emit("afterChange", changeEvent);
|
|
508
492
|
return rebaseResult;
|
|
509
493
|
}
|
|
@@ -525,6 +509,10 @@ export class SharedTreeBranch<
|
|
|
525
509
|
0x597 /* Branch may not be merged while transaction is in progress */,
|
|
526
510
|
);
|
|
527
511
|
|
|
512
|
+
if (branch === this) {
|
|
513
|
+
return undefined;
|
|
514
|
+
}
|
|
515
|
+
|
|
528
516
|
// Rebase the given branch onto this branch
|
|
529
517
|
const rebaseResult = this.rebaseBranch(branch, this);
|
|
530
518
|
if (rebaseResult === undefined) {
|
|
@@ -537,6 +525,7 @@ export class SharedTreeBranch<
|
|
|
537
525
|
const taggedChange = makeAnonChange(change);
|
|
538
526
|
const changeEvent = {
|
|
539
527
|
type: "append",
|
|
528
|
+
kind: CommitKind.Default,
|
|
540
529
|
get change(): TaggedChange<TChange> {
|
|
541
530
|
return taggedChange;
|
|
542
531
|
},
|