@fluidframework/tree 2.4.0-294316 → 2.4.0-297385
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 +58 -28
- package/api-report/tree.beta.api.md +38 -27
- package/api-report/tree.legacy.alpha.api.md +38 -27
- package/api-report/tree.legacy.public.api.md +38 -27
- package/api-report/tree.public.api.md +38 -27
- package/dist/alpha.d.ts +6 -0
- package/dist/beta.d.ts +3 -0
- package/dist/core/change-family/changeFamily.d.ts +2 -2
- package/dist/core/change-family/changeFamily.d.ts.map +1 -1
- package/dist/core/change-family/changeFamily.js.map +1 -1
- package/dist/core/change-family/editBuilder.d.ts +3 -2
- package/dist/core/change-family/editBuilder.d.ts.map +1 -1
- package/dist/core/change-family/editBuilder.js.map +1 -1
- package/dist/core/rebase/changeRebaser.d.ts +2 -1
- package/dist/core/rebase/changeRebaser.d.ts.map +1 -1
- package/dist/core/rebase/changeRebaser.js.map +1 -1
- package/dist/core/rebase/utils.js +1 -1
- package/dist/core/rebase/utils.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/default-schema/defaultEditBuilder.d.ts +4 -3
- package/dist/feature-libraries/default-schema/defaultEditBuilder.d.ts.map +1 -1
- package/dist/feature-libraries/default-schema/defaultEditBuilder.js +41 -30
- package/dist/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
- package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts +4 -6
- package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
- package/dist/feature-libraries/default-schema/defaultFieldKinds.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/mitigatedChangeFamily.d.ts.map +1 -1
- package/dist/feature-libraries/mitigatedChangeFamily.js +4 -4
- package/dist/feature-libraries/mitigatedChangeFamily.js.map +1 -1
- package/dist/feature-libraries/modular-schema/fieldChangeHandler.d.ts +1 -1
- package/dist/feature-libraries/modular-schema/fieldChangeHandler.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/fieldChangeHandler.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts +12 -8
- package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFamily.js +179 -60
- package/dist/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
- package/dist/feature-libraries/optional-field/optionalField.d.ts +10 -9
- package/dist/feature-libraries/optional-field/optionalField.d.ts.map +1 -1
- package/dist/feature-libraries/optional-field/optionalField.js +9 -7
- package/dist/feature-libraries/optional-field/optionalField.js.map +1 -1
- package/dist/feature-libraries/schema-index/schemaSummarizer.d.ts +3 -10
- package/dist/feature-libraries/schema-index/schemaSummarizer.d.ts.map +1 -1
- package/dist/feature-libraries/schema-index/schemaSummarizer.js +1 -8
- package/dist/feature-libraries/schema-index/schemaSummarizer.js.map +1 -1
- package/dist/feature-libraries/sequence-field/compose.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/compose.js +32 -20
- 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/invert.d.ts +6 -1
- package/dist/feature-libraries/sequence-field/invert.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/invert.js +25 -9
- package/dist/feature-libraries/sequence-field/invert.js.map +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldEditor.d.ts +17 -16
- package/dist/feature-libraries/sequence-field/sequenceFieldEditor.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldEditor.js +19 -11
- package/dist/feature-libraries/sequence-field/sequenceFieldEditor.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 +3 -0
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/public.d.ts +3 -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 +8 -7
- package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/dist/shared-tree/schematizingTreeView.js +16 -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 +11 -3
- package/dist/shared-tree/sharedTree.js.map +1 -1
- package/dist/shared-tree/sharedTreeChangeFamily.d.ts +2 -2
- package/dist/shared-tree/sharedTreeChangeFamily.d.ts.map +1 -1
- package/dist/shared-tree/sharedTreeChangeFamily.js +4 -4
- package/dist/shared-tree/sharedTreeChangeFamily.js.map +1 -1
- package/dist/shared-tree/sharedTreeEditBuilder.d.ts +2 -2
- package/dist/shared-tree/sharedTreeEditBuilder.d.ts.map +1 -1
- package/dist/shared-tree/sharedTreeEditBuilder.js +15 -11
- package/dist/shared-tree/sharedTreeEditBuilder.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 +119 -86
- package/dist/shared-tree/treeCheckout.js.map +1 -1
- package/dist/shared-tree-core/branch.d.ts +9 -13
- package/dist/shared-tree-core/branch.d.ts.map +1 -1
- package/dist/shared-tree-core/branch.js +21 -25
- package/dist/shared-tree-core/branch.js.map +1 -1
- package/dist/shared-tree-core/defaultResubmitMachine.d.ts +5 -5
- package/dist/shared-tree-core/defaultResubmitMachine.d.ts.map +1 -1
- package/dist/shared-tree-core/defaultResubmitMachine.js +4 -4
- 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 +1 -1
- package/dist/shared-tree-core/editManager.js.map +1 -1
- package/dist/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
- package/dist/shared-tree-core/sharedTreeCore.js +2 -2
- package/dist/shared-tree-core/sharedTreeCore.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/schemaFactory.d.ts +6 -6
- package/dist/simple-tree/api/schemaFactory.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaFactory.js +15 -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 +14 -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/tree.d.ts +12 -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 +7 -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 +3 -4
- 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 +2 -2
- package/dist/simple-tree/schemaTypes.d.ts.map +1 -1
- 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 +6 -0
- package/lib/beta.d.ts +3 -0
- package/lib/core/change-family/changeFamily.d.ts +2 -2
- package/lib/core/change-family/changeFamily.d.ts.map +1 -1
- package/lib/core/change-family/changeFamily.js.map +1 -1
- package/lib/core/change-family/editBuilder.d.ts +3 -2
- package/lib/core/change-family/editBuilder.d.ts.map +1 -1
- package/lib/core/change-family/editBuilder.js.map +1 -1
- package/lib/core/rebase/changeRebaser.d.ts +2 -1
- package/lib/core/rebase/changeRebaser.d.ts.map +1 -1
- package/lib/core/rebase/changeRebaser.js.map +1 -1
- package/lib/core/rebase/utils.js +1 -1
- package/lib/core/rebase/utils.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/default-schema/defaultEditBuilder.d.ts +4 -3
- package/lib/feature-libraries/default-schema/defaultEditBuilder.d.ts.map +1 -1
- package/lib/feature-libraries/default-schema/defaultEditBuilder.js +41 -30
- package/lib/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
- package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts +4 -6
- package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
- package/lib/feature-libraries/default-schema/defaultFieldKinds.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/mitigatedChangeFamily.d.ts.map +1 -1
- package/lib/feature-libraries/mitigatedChangeFamily.js +4 -4
- package/lib/feature-libraries/mitigatedChangeFamily.js.map +1 -1
- package/lib/feature-libraries/modular-schema/fieldChangeHandler.d.ts +1 -1
- package/lib/feature-libraries/modular-schema/fieldChangeHandler.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/fieldChangeHandler.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts +12 -8
- package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFamily.js +180 -61
- package/lib/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
- package/lib/feature-libraries/optional-field/optionalField.d.ts +10 -9
- package/lib/feature-libraries/optional-field/optionalField.d.ts.map +1 -1
- package/lib/feature-libraries/optional-field/optionalField.js +9 -7
- package/lib/feature-libraries/optional-field/optionalField.js.map +1 -1
- package/lib/feature-libraries/schema-index/schemaSummarizer.d.ts +3 -10
- package/lib/feature-libraries/schema-index/schemaSummarizer.d.ts.map +1 -1
- package/lib/feature-libraries/schema-index/schemaSummarizer.js +1 -8
- package/lib/feature-libraries/schema-index/schemaSummarizer.js.map +1 -1
- package/lib/feature-libraries/sequence-field/compose.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/compose.js +32 -20
- 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/invert.d.ts +6 -1
- package/lib/feature-libraries/sequence-field/invert.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/invert.js +25 -9
- package/lib/feature-libraries/sequence-field/invert.js.map +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldEditor.d.ts +17 -16
- package/lib/feature-libraries/sequence-field/sequenceFieldEditor.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldEditor.js +19 -11
- package/lib/feature-libraries/sequence-field/sequenceFieldEditor.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 +3 -0
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/public.d.ts +3 -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 +8 -7
- package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/lib/shared-tree/schematizingTreeView.js +19 -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 +11 -4
- package/lib/shared-tree/sharedTree.js.map +1 -1
- package/lib/shared-tree/sharedTreeChangeFamily.d.ts +2 -2
- package/lib/shared-tree/sharedTreeChangeFamily.d.ts.map +1 -1
- package/lib/shared-tree/sharedTreeChangeFamily.js +4 -4
- package/lib/shared-tree/sharedTreeChangeFamily.js.map +1 -1
- package/lib/shared-tree/sharedTreeEditBuilder.d.ts +2 -2
- package/lib/shared-tree/sharedTreeEditBuilder.d.ts.map +1 -1
- package/lib/shared-tree/sharedTreeEditBuilder.js +15 -11
- package/lib/shared-tree/sharedTreeEditBuilder.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 +122 -89
- package/lib/shared-tree/treeCheckout.js.map +1 -1
- package/lib/shared-tree-core/branch.d.ts +9 -13
- package/lib/shared-tree-core/branch.d.ts.map +1 -1
- package/lib/shared-tree-core/branch.js +22 -26
- package/lib/shared-tree-core/branch.js.map +1 -1
- package/lib/shared-tree-core/defaultResubmitMachine.d.ts +5 -5
- package/lib/shared-tree-core/defaultResubmitMachine.d.ts.map +1 -1
- package/lib/shared-tree-core/defaultResubmitMachine.js +4 -4
- 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 +2 -2
- package/lib/shared-tree-core/editManager.js.map +1 -1
- package/lib/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
- package/lib/shared-tree-core/sharedTreeCore.js +2 -2
- package/lib/shared-tree-core/sharedTreeCore.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/schemaFactory.d.ts +6 -6
- package/lib/simple-tree/api/schemaFactory.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaFactory.js +15 -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 +14 -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/tree.d.ts +12 -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 +7 -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 +3 -4
- 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 +2 -2
- package/lib/simple-tree/schemaTypes.d.ts.map +1 -1
- 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 +32 -23
- package/src/core/change-family/changeFamily.ts +5 -2
- package/src/core/change-family/editBuilder.ts +3 -2
- package/src/core/rebase/changeRebaser.ts +6 -1
- package/src/core/rebase/utils.ts +1 -1
- package/src/core/schema-stored/schema.ts +17 -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/default-schema/defaultEditBuilder.ts +92 -47
- package/src/feature-libraries/default-schema/defaultFieldKinds.ts +7 -7
- 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/mitigatedChangeFamily.ts +11 -4
- package/src/feature-libraries/modular-schema/fieldChangeHandler.ts +1 -0
- package/src/feature-libraries/modular-schema/modularChangeFamily.ts +218 -175
- package/src/feature-libraries/optional-field/optionalField.ts +21 -17
- package/src/feature-libraries/schema-index/schemaSummarizer.ts +2 -10
- package/src/feature-libraries/sequence-field/compose.ts +67 -58
- package/src/feature-libraries/sequence-field/invert.ts +30 -6
- package/src/feature-libraries/sequence-field/sequenceFieldEditor.ts +65 -19
- 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 +6 -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 +34 -15
- package/src/shared-tree/sharedTree.ts +39 -9
- package/src/shared-tree/sharedTreeChangeFamily.ts +5 -1
- package/src/shared-tree/sharedTreeEditBuilder.ts +23 -12
- package/src/shared-tree/treeCheckout.ts +232 -134
- package/src/shared-tree-core/branch.ts +26 -40
- package/src/shared-tree-core/defaultResubmitMachine.ts +4 -4
- package/src/shared-tree-core/editManager.ts +2 -1
- package/src/shared-tree-core/sharedTreeCore.ts +4 -2
- 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/schemaFactory.ts +41 -12
- package/src/simple-tree/api/schemaFactoryRecursive.ts +3 -6
- package/src/simple-tree/api/simpleSchema.ts +15 -10
- package/src/simple-tree/api/tree.ts +15 -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 +11 -2
- 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 +5 -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 +2 -2
- 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
|
@@ -11,23 +11,27 @@ const index_js_1 = require("../feature-libraries/index.js");
|
|
|
11
11
|
* @sealed
|
|
12
12
|
*/
|
|
13
13
|
class SharedTreeEditBuilder extends index_js_1.DefaultEditBuilder {
|
|
14
|
-
constructor(modularChangeFamily, changeReceiver, idCompressor) {
|
|
15
|
-
super(modularChangeFamily, (
|
|
16
|
-
|
|
14
|
+
constructor(modularChangeFamily, mintRevisionTag, changeReceiver, idCompressor) {
|
|
15
|
+
super(modularChangeFamily, mintRevisionTag, (taggedChange) => changeReceiver({
|
|
16
|
+
...taggedChange,
|
|
17
|
+
change: { changes: [{ type: "data", innerChange: taggedChange.change }] },
|
|
17
18
|
}), idCompressor);
|
|
18
19
|
this.changeReceiver = changeReceiver;
|
|
19
20
|
this.schema = {
|
|
20
21
|
setStoredSchema: (oldSchema, newSchema) => {
|
|
21
22
|
this.changeReceiver({
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
23
|
+
revision: mintRevisionTag(),
|
|
24
|
+
change: {
|
|
25
|
+
changes: [
|
|
26
|
+
{
|
|
27
|
+
type: "schema",
|
|
28
|
+
innerChange: {
|
|
29
|
+
schema: { new: newSchema, old: oldSchema },
|
|
30
|
+
isInverse: false,
|
|
31
|
+
},
|
|
28
32
|
},
|
|
29
|
-
|
|
30
|
-
|
|
33
|
+
],
|
|
34
|
+
},
|
|
31
35
|
});
|
|
32
36
|
},
|
|
33
37
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sharedTreeEditBuilder.js","sourceRoot":"","sources":["../../src/shared-tree/sharedTreeEditBuilder.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;
|
|
1
|
+
{"version":3,"file":"sharedTreeEditBuilder.js","sourceRoot":"","sources":["../../src/shared-tree/sharedTreeEditBuilder.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AASH,4DAIuC;AA2BvC;;;GAGG;AACH,MAAa,qBACZ,SAAQ,6BAAkB;IAK1B,YACC,mBAAwC,EACxC,eAAkC,EACjB,cAAgE,EACjF,YAA4B;QAE5B,KAAK,CACJ,mBAAmB,EACnB,eAAe,EACf,CAAC,YAAY,EAAE,EAAE,CAChB,cAAc,CAAC;YACd,GAAG,YAAY;YACf,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE;SACzE,CAAC,EACH,YAAY,CACZ,CAAC;QAZe,mBAAc,GAAd,cAAc,CAAkD;QAcjF,IAAI,CAAC,MAAM,GAAG;YACb,eAAe,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE;gBACzC,IAAI,CAAC,cAAc,CAAC;oBACnB,QAAQ,EAAE,eAAe,EAAE;oBAC3B,MAAM,EAAE;wBACP,OAAO,EAAE;4BACR;gCACC,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE;oCACZ,MAAM,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE;oCAC1C,SAAS,EAAE,KAAK;iCAChB;6BACD;yBACD;qBACD;iBACD,CAAC,CAAC;YACJ,CAAC;SACD,CAAC;IACH,CAAC;CACD;AA1CD,sDA0CC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport type { IIdCompressor } from \"@fluidframework/id-compressor\";\nimport type {\n\tChangeFamilyEditor,\n\tRevisionTag,\n\tTaggedChange,\n\tTreeStoredSchema,\n} from \"../core/index.js\";\nimport {\n\tDefaultEditBuilder,\n\ttype IDefaultEditBuilder,\n\ttype ModularChangeFamily,\n} from \"../feature-libraries/index.js\";\n\nimport type { SharedTreeChange } from \"./sharedTreeChangeTypes.js\";\n\n/**\n * Editor for schema changes.\n * The only currently supported operation is to replace the stored schema.\n */\nexport interface ISchemaEditor {\n\t/**\n\t * Updates the stored schema.\n\t * @param oldSchema - The schema being overwritten.\n\t * @param newSchema - The new schema to apply.\n\t */\n\tsetStoredSchema(oldSchema: TreeStoredSchema, newSchema: TreeStoredSchema): void;\n}\n\n/**\n * SharedTree editor for transactional tree data and schema changes.\n */\nexport interface ISharedTreeEditor extends IDefaultEditBuilder {\n\t/**\n\t * Editor for schema changes.\n\t */\n\tschema: ISchemaEditor;\n}\n\n/**\n * Implementation of {@link IDefaultEditBuilder} based on the default set of supported field kinds.\n * @sealed\n */\nexport class SharedTreeEditBuilder\n\textends DefaultEditBuilder\n\timplements ChangeFamilyEditor, ISharedTreeEditor\n{\n\tpublic readonly schema: ISchemaEditor;\n\n\tpublic constructor(\n\t\tmodularChangeFamily: ModularChangeFamily,\n\t\tmintRevisionTag: () => RevisionTag,\n\t\tprivate readonly changeReceiver: (change: TaggedChange<SharedTreeChange>) => void,\n\t\tidCompressor?: IIdCompressor,\n\t) {\n\t\tsuper(\n\t\t\tmodularChangeFamily,\n\t\t\tmintRevisionTag,\n\t\t\t(taggedChange) =>\n\t\t\t\tchangeReceiver({\n\t\t\t\t\t...taggedChange,\n\t\t\t\t\tchange: { changes: [{ type: \"data\", innerChange: taggedChange.change }] },\n\t\t\t\t}),\n\t\t\tidCompressor,\n\t\t);\n\n\t\tthis.schema = {\n\t\t\tsetStoredSchema: (oldSchema, newSchema) => {\n\t\t\t\tthis.changeReceiver({\n\t\t\t\t\trevision: mintRevisionTag(),\n\t\t\t\t\tchange: {\n\t\t\t\t\t\tchanges: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"schema\",\n\t\t\t\t\t\t\t\tinnerChange: {\n\t\t\t\t\t\t\t\t\tschema: { new: newSchema, old: oldSchema },\n\t\t\t\t\t\t\t\t\tisInverse: false,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t},\n\t\t};\n\t}\n}\n"]}
|
|
@@ -8,9 +8,12 @@ import { type Anchor, type AnchorLocator, type AnchorNode, type AnchorSetRootEve
|
|
|
8
8
|
import { type HasListeners, type IEmitter, type Listenable } from "../events/index.js";
|
|
9
9
|
import { type FieldBatchCodec, type TreeCompressionStrategy } from "../feature-libraries/index.js";
|
|
10
10
|
import { SharedTreeBranch } from "../shared-tree-core/index.js";
|
|
11
|
-
import {
|
|
11
|
+
import { Breakable, TransactionResult, disposeSymbol } from "../util/index.js";
|
|
12
12
|
import type { SharedTreeChange } from "./sharedTreeChangeTypes.js";
|
|
13
13
|
import type { ISharedTreeEditor, SharedTreeEditBuilder } from "./sharedTreeEditBuilder.js";
|
|
14
|
+
import type { IDisposable } from "@fluidframework/core-interfaces";
|
|
15
|
+
import type { ImplicitFieldSchema, TreeViewConfiguration, ViewableTree } from "../simple-tree/index.js";
|
|
16
|
+
import { SchematizingSimpleTreeView } from "./schematizingTreeView.js";
|
|
14
17
|
/**
|
|
15
18
|
* Events for {@link ITreeCheckout}.
|
|
16
19
|
*/
|
|
@@ -36,6 +39,52 @@ export interface CheckoutEvents {
|
|
|
36
39
|
*/
|
|
37
40
|
commitApplied(data: CommitMetadata, getRevertible?: RevertibleFactory): void;
|
|
38
41
|
}
|
|
42
|
+
/**
|
|
43
|
+
* A "version control"-style branch of a SharedTree.
|
|
44
|
+
* @remarks Branches may be used to coordinate edits to a SharedTree, e.g. via merge and rebase operations.
|
|
45
|
+
* Changes applied to a branch of a branch only apply to that branch and are isolated from other branches.
|
|
46
|
+
* Changes may be synchronized across branches via merge and rebase operations provided on the branch object.
|
|
47
|
+
* @alpha @sealed
|
|
48
|
+
*/
|
|
49
|
+
export interface TreeBranch extends ViewableTree {
|
|
50
|
+
/**
|
|
51
|
+
* Spawn a new branch which is based off of the current state of this branch.
|
|
52
|
+
* Any mutations of the new branch will not apply to this branch until the new branch is merged back into this branch via `merge()`.
|
|
53
|
+
*/
|
|
54
|
+
branch(): TreeBranchFork;
|
|
55
|
+
/**
|
|
56
|
+
* Apply all the new changes on the given branch to this branch.
|
|
57
|
+
* @param view - a branch which was created by a call to `branch()`.
|
|
58
|
+
* It is automatically disposed after the merge completes.
|
|
59
|
+
* @remarks All ongoing transactions (if any) in `branch` will be committed before the merge.
|
|
60
|
+
* A "commitApplied" event and a corresponding {@link Revertible} will be emitted on this branch for each new change merged from 'branch'.
|
|
61
|
+
*/
|
|
62
|
+
merge(branch: TreeBranchFork): void;
|
|
63
|
+
/**
|
|
64
|
+
* Apply all the new changes on the given branch to this branch.
|
|
65
|
+
* @param branch - a branch which was created by a call to `branch()`.
|
|
66
|
+
* @param disposeMerged - whether or not to dispose `branch` after the merge completes.
|
|
67
|
+
* @remarks All ongoing transactions (if any) in `branch` will be committed before the merge.
|
|
68
|
+
*/
|
|
69
|
+
merge(branch: TreeBranchFork, disposeMerged: boolean): void;
|
|
70
|
+
/**
|
|
71
|
+
* Rebase the given branch onto this branch.
|
|
72
|
+
* @param branch - a branch which was created by a call to `branch()`. It is modified by this operation.
|
|
73
|
+
*/
|
|
74
|
+
rebase(branch: TreeBranchFork): void;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* A {@link TreeBranch | branch} of a SharedTree that has merged from another branch.
|
|
78
|
+
* @remarks This branch should be disposed when it is no longer needed in order to free resources.
|
|
79
|
+
* @alpha @sealed
|
|
80
|
+
*/
|
|
81
|
+
export interface TreeBranchFork extends TreeBranch, IDisposable {
|
|
82
|
+
/**
|
|
83
|
+
* Rebase the changes that have been applied to this branch over all the new changes in the given branch.
|
|
84
|
+
* @param branch - Either the root branch or a branch that was created by a call to `branch()`. It is not modified by this operation.
|
|
85
|
+
*/
|
|
86
|
+
rebaseOnto(branch: TreeBranch): void;
|
|
87
|
+
}
|
|
39
88
|
/**
|
|
40
89
|
* Provides a means for interacting with a SharedTree.
|
|
41
90
|
* This includes reading data from the tree and running transactions to mutate the tree.
|
|
@@ -44,7 +93,7 @@ export interface CheckoutEvents {
|
|
|
44
93
|
* API for interacting with a {@link SharedTreeBranch}.
|
|
45
94
|
* Implementations of this interface must implement the {@link branchKey} property.
|
|
46
95
|
*/
|
|
47
|
-
export interface ITreeCheckout extends AnchorLocator {
|
|
96
|
+
export interface ITreeCheckout extends AnchorLocator, ViewableTree {
|
|
48
97
|
/**
|
|
49
98
|
* Read and Write access for schema stored in the document.
|
|
50
99
|
*
|
|
@@ -77,30 +126,10 @@ export interface ITreeCheckout extends AnchorLocator {
|
|
|
77
126
|
* A collection of functions for managing transactions.
|
|
78
127
|
*/
|
|
79
128
|
readonly transaction: ITransaction;
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
fork(): ITreeCheckoutFork;
|
|
85
|
-
/**
|
|
86
|
-
* Apply all the new changes on the given view to this view.
|
|
87
|
-
* @param view - a view which was created by a call to `fork()`.
|
|
88
|
-
* It is automatically disposed after the merge completes.
|
|
89
|
-
* @remarks All ongoing transactions (if any) in `view` will be committed before the merge.
|
|
90
|
-
*/
|
|
91
|
-
merge(view: ITreeCheckoutFork): void;
|
|
92
|
-
/**
|
|
93
|
-
* Apply all the new changes on the given view to this view.
|
|
94
|
-
* @param view - a view which was created by a call to `fork()`.
|
|
95
|
-
* @param disposeView - whether or not to dispose `view` after the merge completes.
|
|
96
|
-
* @remarks All ongoing transactions (if any) in `view` will be committed before the merge.
|
|
97
|
-
*/
|
|
98
|
-
merge(view: ITreeCheckoutFork, disposeView: boolean): void;
|
|
99
|
-
/**
|
|
100
|
-
* Rebase the given view onto this view.
|
|
101
|
-
* @param view - a view which was created by a call to `fork()`. It is modified by this operation.
|
|
102
|
-
*/
|
|
103
|
-
rebase(view: ITreeCheckoutFork): void;
|
|
129
|
+
branch(): ITreeCheckoutFork;
|
|
130
|
+
merge(checkout: ITreeCheckoutFork): void;
|
|
131
|
+
merge(checkout: ITreeCheckoutFork, disposeMerged: boolean): void;
|
|
132
|
+
rebase(checkout: ITreeCheckoutFork): void;
|
|
104
133
|
/**
|
|
105
134
|
* Replaces all schema with the provided schema.
|
|
106
135
|
* Can over-write preexisting schema, and removes unmentioned schema.
|
|
@@ -140,6 +169,7 @@ export declare function createTreeCheckout(idCompressor: IIdCompressor, mintRevi
|
|
|
140
169
|
removedRoots?: DetachedFieldIndex;
|
|
141
170
|
chunkCompressionStrategy?: TreeCompressionStrategy;
|
|
142
171
|
logger?: ITelemetryLoggerExt;
|
|
172
|
+
breaker?: Breakable;
|
|
143
173
|
}): TreeCheckout;
|
|
144
174
|
/**
|
|
145
175
|
* A collection of functions for managing transactions.
|
|
@@ -149,7 +179,7 @@ export declare function createTreeCheckout(idCompressor: IIdCompressor, mintRevi
|
|
|
149
179
|
* Transactions may nest, meaning that a transaction may be started while a transaction is already ongoing.
|
|
150
180
|
*
|
|
151
181
|
* To avoid updating observers of the view state with intermediate results during a transaction,
|
|
152
|
-
* use {@link ITreeCheckout#
|
|
182
|
+
* use {@link ITreeCheckout#branch} and {@link ISharedTreeFork#merge}.
|
|
153
183
|
*/
|
|
154
184
|
export interface ITransaction {
|
|
155
185
|
/**
|
|
@@ -189,11 +219,7 @@ export interface ITransaction {
|
|
|
189
219
|
*
|
|
190
220
|
* {@link ITreeCheckout} that has forked off of the main trunk/branch.
|
|
191
221
|
*/
|
|
192
|
-
export interface ITreeCheckoutFork extends ITreeCheckout
|
|
193
|
-
/**
|
|
194
|
-
* Rebase the changes that have been applied to this view over all the new changes in the given view.
|
|
195
|
-
* @param view - Either the root view or a view that was created by a call to `fork()`. It is not modified by this operation.
|
|
196
|
-
*/
|
|
222
|
+
export interface ITreeCheckoutFork extends ITreeCheckout {
|
|
197
223
|
rebaseOnto(view: ITreeCheckout): void;
|
|
198
224
|
}
|
|
199
225
|
/**
|
|
@@ -212,7 +238,7 @@ export interface RevertMetrics {
|
|
|
212
238
|
*/
|
|
213
239
|
export declare class TreeCheckout implements ITreeCheckoutFork {
|
|
214
240
|
readonly transaction: ITransaction;
|
|
215
|
-
private readonly
|
|
241
|
+
private readonly _branch;
|
|
216
242
|
private readonly changeFamily;
|
|
217
243
|
readonly storedSchema: TreeStoredSchemaRepository;
|
|
218
244
|
readonly forest: IEditableForest;
|
|
@@ -223,7 +249,9 @@ export declare class TreeCheckout implements ITreeCheckoutFork {
|
|
|
223
249
|
private removedRoots;
|
|
224
250
|
/** Optional logger for telemetry. */
|
|
225
251
|
private readonly logger?;
|
|
226
|
-
private
|
|
252
|
+
private readonly breaker;
|
|
253
|
+
disposed: boolean;
|
|
254
|
+
private readonly views;
|
|
227
255
|
/**
|
|
228
256
|
* Set of revertibles maintained for automatic disposal
|
|
229
257
|
*/
|
|
@@ -243,20 +271,22 @@ export declare class TreeCheckout implements ITreeCheckoutFork {
|
|
|
243
271
|
* @privateRemarks Exposed for testing purposes.
|
|
244
272
|
*/
|
|
245
273
|
static readonly revertTelemetryEventName = "RevertRevertible";
|
|
246
|
-
constructor(transaction: ITransaction,
|
|
274
|
+
constructor(transaction: ITransaction, _branch: SharedTreeBranch<SharedTreeEditBuilder, SharedTreeChange>, changeFamily: ChangeFamily<SharedTreeEditBuilder, SharedTreeChange>, storedSchema: TreeStoredSchemaRepository, forest: IEditableForest, events: Listenable<CheckoutEvents> & IEmitter<CheckoutEvents> & HasListeners<CheckoutEvents>, mintRevisionTag: () => RevisionTag, revisionTagCodec: RevisionTagCodec, idCompressor: IIdCompressor, removedRoots?: DetachedFieldIndex,
|
|
247
275
|
/** Optional logger for telemetry. */
|
|
248
|
-
logger?: ITelemetryLoggerExt | undefined);
|
|
276
|
+
logger?: ITelemetryLoggerExt | undefined, breaker?: Breakable);
|
|
249
277
|
private withCombinedVisitor;
|
|
250
278
|
private checkNotDisposed;
|
|
279
|
+
viewWith<TRoot extends ImplicitFieldSchema>(config: TreeViewConfiguration<TRoot>): SchematizingSimpleTreeView<TRoot>;
|
|
251
280
|
get rootEvents(): Listenable<AnchorSetRootEvents>;
|
|
252
281
|
get editor(): ISharedTreeEditor;
|
|
253
282
|
locate(anchor: Anchor): AnchorNode | undefined;
|
|
254
|
-
|
|
255
|
-
rebase(
|
|
256
|
-
rebaseOnto(
|
|
257
|
-
merge(
|
|
258
|
-
merge(
|
|
283
|
+
branch(): TreeCheckout;
|
|
284
|
+
rebase(checkout: TreeCheckout): void;
|
|
285
|
+
rebaseOnto(checkout: ITreeCheckout): void;
|
|
286
|
+
merge(checkout: TreeCheckout): void;
|
|
287
|
+
merge(checkout: TreeCheckout, disposeMerged: boolean): void;
|
|
259
288
|
updateSchema(newSchema: TreeStoredSchema): void;
|
|
289
|
+
dispose(): void;
|
|
260
290
|
[disposeSymbol](): void;
|
|
261
291
|
getRemovedRoots(): [string | number | undefined, number, JsonableTree][];
|
|
262
292
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"treeCheckout.d.ts","sourceRoot":"","sources":["../../src/shared-tree/treeCheckout.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAEN,KAAK,mBAAmB,EACxB,MAAM,0CAA0C,CAAC;AAElD,OAAO,EACN,KAAK,MAAM,EACX,KAAK,aAAa,EAClB,KAAK,UAAU,EAEf,KAAK,mBAAmB,EACxB,KAAK,YAAY,EAEjB,KAAK,cAAc,EAEnB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,YAAY,EAGjB,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,0BAA0B,EAC1B,KAAK,4BAA4B,
|
|
1
|
+
{"version":3,"file":"treeCheckout.d.ts","sourceRoot":"","sources":["../../src/shared-tree/treeCheckout.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,6 +14,7 @@ const index_js_4 = require("../feature-libraries/index.js");
|
|
|
14
14
|
const index_js_5 = require("../shared-tree-core/index.js");
|
|
15
15
|
const index_js_6 = require("../util/index.js");
|
|
16
16
|
const sharedTreeChangeFamily_js_1 = require("./sharedTreeChangeFamily.js");
|
|
17
|
+
const schematizingTreeView_js_1 = require("./schematizingTreeView.js");
|
|
17
18
|
/**
|
|
18
19
|
* Creates a {@link TreeCheckout}.
|
|
19
20
|
* @param args - an object containing optional components that will be used to build the view.
|
|
@@ -36,7 +37,7 @@ function createTreeCheckout(idCompressor, mintRevisionTag, revisionTagCodec, arg
|
|
|
36
37
|
}, changeFamily, () => idCompressor.generateCompressedId());
|
|
37
38
|
const events = args?.events ?? (0, index_js_3.createEmitter)();
|
|
38
39
|
const transaction = new Transaction(branch);
|
|
39
|
-
return new TreeCheckout(transaction, branch, changeFamily, schema, forest, events, mintRevisionTag, revisionTagCodec, idCompressor, args?.removedRoots, args?.logger);
|
|
40
|
+
return new TreeCheckout(transaction, branch, changeFamily, schema, forest, events, mintRevisionTag, revisionTagCodec, idCompressor, args?.removedRoots, args?.logger, args?.breaker);
|
|
40
41
|
}
|
|
41
42
|
exports.createTreeCheckout = createTreeCheckout;
|
|
42
43
|
class Transaction {
|
|
@@ -65,11 +66,11 @@ class Transaction {
|
|
|
65
66
|
* An implementation of {@link ITreeCheckoutFork}.
|
|
66
67
|
*/
|
|
67
68
|
class TreeCheckout {
|
|
68
|
-
constructor(transaction,
|
|
69
|
+
constructor(transaction, _branch, changeFamily, storedSchema, forest, events, mintRevisionTag, revisionTagCodec, idCompressor, removedRoots = (0, index_js_2.makeDetachedFieldIndex)("repair", revisionTagCodec, idCompressor),
|
|
69
70
|
/** Optional logger for telemetry. */
|
|
70
|
-
logger) {
|
|
71
|
+
logger, breaker = new index_js_6.Breakable("TreeCheckout")) {
|
|
71
72
|
this.transaction = transaction;
|
|
72
|
-
this.
|
|
73
|
+
this._branch = _branch;
|
|
73
74
|
this.changeFamily = changeFamily;
|
|
74
75
|
this.storedSchema = storedSchema;
|
|
75
76
|
this.forest = forest;
|
|
@@ -79,7 +80,9 @@ class TreeCheckout {
|
|
|
79
80
|
this.idCompressor = idCompressor;
|
|
80
81
|
this.removedRoots = removedRoots;
|
|
81
82
|
this.logger = logger;
|
|
82
|
-
this.
|
|
83
|
+
this.breaker = breaker;
|
|
84
|
+
this.disposed = false;
|
|
85
|
+
this.views = new Set();
|
|
83
86
|
/**
|
|
84
87
|
* Set of revertibles maintained for automatic disposal
|
|
85
88
|
*/
|
|
@@ -95,15 +98,15 @@ class TreeCheckout {
|
|
|
95
98
|
*/
|
|
96
99
|
this.removedRootsSnapshots = [];
|
|
97
100
|
// when a transaction is started, take a snapshot of the current state of removed roots
|
|
98
|
-
|
|
101
|
+
_branch.on("transactionStarted", () => {
|
|
99
102
|
this.removedRootsSnapshots.push(this.removedRoots.clone());
|
|
100
103
|
});
|
|
101
104
|
// when a transaction is committed, the latest snapshot of removed roots can be discarded
|
|
102
|
-
|
|
105
|
+
_branch.on("transactionCommitted", () => {
|
|
103
106
|
this.removedRootsSnapshots.pop();
|
|
104
107
|
});
|
|
105
108
|
// after a transaction is rolled back, revert removed roots back to the latest snapshot
|
|
106
|
-
|
|
109
|
+
_branch.on("transactionRolledBack", () => {
|
|
107
110
|
const snapshot = this.removedRootsSnapshots.pop();
|
|
108
111
|
(0, internal_1.assert)(snapshot !== undefined, 0x9ae /* a snapshot for removed roots does not exist */);
|
|
109
112
|
this.removedRoots = snapshot;
|
|
@@ -112,7 +115,7 @@ class TreeCheckout {
|
|
|
112
115
|
// 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.
|
|
113
116
|
// In such a case we will crash here, preventing the change from being added to the commit graph, and preventing `afterChange` from firing.
|
|
114
117
|
// 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`.
|
|
115
|
-
|
|
118
|
+
_branch.on("beforeChange", (event) => {
|
|
116
119
|
if (event.change !== undefined) {
|
|
117
120
|
const revision = event.type === "replace"
|
|
118
121
|
? // Change events will always contain new commits
|
|
@@ -159,58 +162,67 @@ class TreeCheckout {
|
|
|
159
162
|
}
|
|
160
163
|
}
|
|
161
164
|
});
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
165
|
+
_branch.on("afterChange", (event) => {
|
|
166
|
+
// The following logic allows revertibles to be generated for the change.
|
|
167
|
+
// Currently only appends (including merges) and transaction commits are supported.
|
|
168
|
+
if (!_branch.isTransacting()) {
|
|
169
|
+
if (event.type === "append" ||
|
|
170
|
+
(event.type === "replace" && (0, index_js_5.getChangeReplaceType)(event) === "transactionCommit")) {
|
|
171
|
+
for (const commit of event.newCommits) {
|
|
172
|
+
const kind = event.type === "append" ? event.kind : index_js_2.CommitKind.Default;
|
|
173
|
+
const { change, revision } = commit;
|
|
174
|
+
const getRevertible = (0, sharedTreeChangeFamily_js_1.hasSchemaChange)(change)
|
|
175
|
+
? undefined
|
|
176
|
+
: (onRevertibleDisposed) => {
|
|
177
|
+
if (!withinEventContext) {
|
|
178
|
+
throw new internal_2.UsageError("Cannot get a revertible outside of the context of a commitApplied event.");
|
|
179
|
+
}
|
|
180
|
+
if (this.revertibleCommitBranches.get(revision) !== undefined) {
|
|
181
|
+
throw new internal_2.UsageError("Cannot generate the same revertible more than once. Note that this can happen when multiple commitApplied event listeners are registered.");
|
|
182
|
+
}
|
|
183
|
+
const revertibleCommits = this.revertibleCommitBranches;
|
|
184
|
+
const revertible = {
|
|
185
|
+
get status() {
|
|
186
|
+
const revertibleCommit = revertibleCommits.get(revision);
|
|
187
|
+
return revertibleCommit === undefined
|
|
188
|
+
? index_js_2.RevertibleStatus.Disposed
|
|
189
|
+
: index_js_2.RevertibleStatus.Valid;
|
|
190
|
+
},
|
|
191
|
+
revert: (release = true) => {
|
|
192
|
+
if (revertible.status === index_js_2.RevertibleStatus.Disposed) {
|
|
193
|
+
throw new internal_2.UsageError("Unable to revert a revertible that has been disposed.");
|
|
194
|
+
}
|
|
195
|
+
const revertMetrics = this.revertRevertible(revision, kind);
|
|
196
|
+
this.logger?.sendTelemetryEvent({
|
|
197
|
+
eventName: TreeCheckout.revertTelemetryEventName,
|
|
198
|
+
...revertMetrics,
|
|
199
|
+
});
|
|
200
|
+
if (release) {
|
|
201
|
+
revertible.dispose();
|
|
202
|
+
}
|
|
203
|
+
},
|
|
204
|
+
dispose: () => {
|
|
205
|
+
if (revertible.status === index_js_2.RevertibleStatus.Disposed) {
|
|
206
|
+
throw new internal_2.UsageError("Unable to dispose a revertible that has already been disposed.");
|
|
207
|
+
}
|
|
208
|
+
this.disposeRevertible(revertible, revision);
|
|
209
|
+
onRevertibleDisposed?.(revertible);
|
|
210
|
+
},
|
|
211
|
+
};
|
|
212
|
+
this.revertibleCommitBranches.set(revision, _branch.fork(commit));
|
|
213
|
+
this.revertibles.add(revertible);
|
|
214
|
+
return revertible;
|
|
215
|
+
};
|
|
216
|
+
let withinEventContext = true;
|
|
217
|
+
this.events.emit("commitApplied", { isLocal: true, kind }, getRevertible);
|
|
218
|
+
withinEventContext = false;
|
|
174
219
|
}
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
get status() {
|
|
178
|
-
const revertibleCommit = revertibleCommits.get(revision);
|
|
179
|
-
return revertibleCommit === undefined
|
|
180
|
-
? index_js_2.RevertibleStatus.Disposed
|
|
181
|
-
: index_js_2.RevertibleStatus.Valid;
|
|
182
|
-
},
|
|
183
|
-
revert: (release = true) => {
|
|
184
|
-
if (revertible.status === index_js_2.RevertibleStatus.Disposed) {
|
|
185
|
-
throw new internal_2.UsageError("Unable to revert a revertible that has been disposed.");
|
|
186
|
-
}
|
|
187
|
-
const revertMetrics = this.revertRevertible(revision, data.kind);
|
|
188
|
-
this.logger?.sendTelemetryEvent({
|
|
189
|
-
eventName: TreeCheckout.revertTelemetryEventName,
|
|
190
|
-
...revertMetrics,
|
|
191
|
-
});
|
|
192
|
-
if (release) {
|
|
193
|
-
revertible.dispose();
|
|
194
|
-
}
|
|
195
|
-
},
|
|
196
|
-
dispose: () => {
|
|
197
|
-
if (revertible.status === index_js_2.RevertibleStatus.Disposed) {
|
|
198
|
-
throw new internal_2.UsageError("Unable to dispose a revertible that has already been disposed.");
|
|
199
|
-
}
|
|
200
|
-
this.disposeRevertible(revertible, revision);
|
|
201
|
-
onRevertibleDisposed?.(revertible);
|
|
202
|
-
},
|
|
203
|
-
};
|
|
204
|
-
this.revertibleCommitBranches.set(revision, branch.fork());
|
|
205
|
-
this.revertibles.add(revertible);
|
|
206
|
-
return revertible;
|
|
207
|
-
};
|
|
208
|
-
this.events.emit("commitApplied", data, getRevertible);
|
|
209
|
-
withinEventContext = false;
|
|
220
|
+
}
|
|
221
|
+
}
|
|
210
222
|
});
|
|
211
223
|
// When the branch is trimmed, we can garbage collect any repair data whose latest relevant revision is one of the
|
|
212
224
|
// trimmed revisions.
|
|
213
|
-
|
|
225
|
+
_branch.on("ancestryTrimmed", (revisions) => {
|
|
214
226
|
this.withCombinedVisitor((visitor) => {
|
|
215
227
|
revisions.forEach((revision) => {
|
|
216
228
|
// get all the roots last created or used by the revision
|
|
@@ -230,58 +242,78 @@ class TreeCheckout {
|
|
|
230
242
|
fn(combinedVisitor);
|
|
231
243
|
combinedVisitor.free();
|
|
232
244
|
}
|
|
233
|
-
checkNotDisposed() {
|
|
234
|
-
|
|
245
|
+
checkNotDisposed(usageError) {
|
|
246
|
+
if (this.disposed) {
|
|
247
|
+
if (usageError !== undefined) {
|
|
248
|
+
throw new internal_2.UsageError(usageError);
|
|
249
|
+
}
|
|
250
|
+
(0, internal_1.assert)(false, 0x911 /* Invalid operation on a disposed TreeCheckout */);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
viewWith(config) {
|
|
254
|
+
const view = new schematizingTreeView_js_1.SchematizingSimpleTreeView(this, config, (0, index_js_4.createNodeKeyManager)(this.idCompressor), this.breaker, () => {
|
|
255
|
+
this.views.delete(view);
|
|
256
|
+
});
|
|
257
|
+
this.views.add(view);
|
|
258
|
+
return view;
|
|
235
259
|
}
|
|
236
260
|
get rootEvents() {
|
|
237
261
|
return this.forest.anchors;
|
|
238
262
|
}
|
|
239
263
|
get editor() {
|
|
240
264
|
this.checkNotDisposed();
|
|
241
|
-
return this.
|
|
265
|
+
return this._branch.editor;
|
|
242
266
|
}
|
|
243
267
|
locate(anchor) {
|
|
244
268
|
this.checkNotDisposed();
|
|
245
269
|
return this.forest.anchors.locate(anchor);
|
|
246
270
|
}
|
|
247
|
-
|
|
248
|
-
this.checkNotDisposed();
|
|
271
|
+
branch() {
|
|
272
|
+
this.checkNotDisposed("The parent branch has already been disposed and can no longer create new branches.");
|
|
249
273
|
const anchors = new index_js_2.AnchorSet();
|
|
250
|
-
const branch = this.
|
|
274
|
+
const branch = this._branch.fork();
|
|
251
275
|
const storedSchema = this.storedSchema.clone();
|
|
252
276
|
const forest = this.forest.clone(storedSchema, anchors);
|
|
253
277
|
const transaction = new Transaction(branch);
|
|
254
|
-
return new TreeCheckout(transaction, branch, this.changeFamily, storedSchema, forest, (0, index_js_3.createEmitter)(), this.mintRevisionTag, this.revisionTagCodec, this.idCompressor, this.removedRoots.clone(), this.logger);
|
|
278
|
+
return new TreeCheckout(transaction, branch, this.changeFamily, storedSchema, forest, (0, index_js_3.createEmitter)(), this.mintRevisionTag, this.revisionTagCodec, this.idCompressor, this.removedRoots.clone(), this.logger, this.breaker);
|
|
255
279
|
}
|
|
256
|
-
rebase(
|
|
257
|
-
this.checkNotDisposed();
|
|
258
|
-
|
|
259
|
-
|
|
280
|
+
rebase(checkout) {
|
|
281
|
+
this.checkNotDisposed("The target of the branch rebase has been disposed and cannot be rebased.");
|
|
282
|
+
checkout.checkNotDisposed("The source of the branch rebase has been disposed and cannot be rebased.");
|
|
283
|
+
(0, internal_1.assert)(!checkout.transaction.inProgress(), 0x9af /* A view cannot be rebased while it has a pending transaction */);
|
|
284
|
+
checkout._branch.rebaseOnto(this._branch);
|
|
260
285
|
}
|
|
261
|
-
rebaseOnto(
|
|
262
|
-
this.checkNotDisposed();
|
|
263
|
-
|
|
286
|
+
rebaseOnto(checkout) {
|
|
287
|
+
this.checkNotDisposed("The target of the branch rebase has been disposed and cannot be rebased.");
|
|
288
|
+
checkout.rebase(this);
|
|
264
289
|
}
|
|
265
|
-
merge(
|
|
266
|
-
this.checkNotDisposed();
|
|
290
|
+
merge(checkout, disposeMerged = true) {
|
|
291
|
+
this.checkNotDisposed("The target of the branch merge has been disposed and cannot be merged.");
|
|
292
|
+
checkout.checkNotDisposed("The source of the branch merge has been disposed and cannot be merged.");
|
|
267
293
|
(0, internal_1.assert)(!this.transaction.inProgress(), 0x9b0 /* Views cannot be merged into a view while it has a pending transaction */);
|
|
268
|
-
while (
|
|
269
|
-
|
|
294
|
+
while (checkout.transaction.inProgress()) {
|
|
295
|
+
checkout.transaction.commit();
|
|
270
296
|
}
|
|
271
|
-
this.
|
|
272
|
-
if (
|
|
273
|
-
|
|
297
|
+
this._branch.merge(checkout._branch);
|
|
298
|
+
if (disposeMerged) {
|
|
299
|
+
checkout[index_js_6.disposeSymbol]();
|
|
274
300
|
}
|
|
275
301
|
}
|
|
276
302
|
updateSchema(newSchema) {
|
|
277
303
|
this.checkNotDisposed();
|
|
278
304
|
this.editor.schema.setStoredSchema(this.storedSchema.clone(), newSchema);
|
|
279
305
|
}
|
|
306
|
+
dispose() {
|
|
307
|
+
this[index_js_6.disposeSymbol]();
|
|
308
|
+
}
|
|
280
309
|
[index_js_6.disposeSymbol]() {
|
|
281
|
-
this.checkNotDisposed();
|
|
282
|
-
this.
|
|
310
|
+
this.checkNotDisposed("The branch has already been disposed and cannot be disposed again.");
|
|
311
|
+
this.disposed = true;
|
|
283
312
|
this.purgeRevertibles();
|
|
284
|
-
this.
|
|
313
|
+
this._branch.dispose();
|
|
314
|
+
for (const view of this.views) {
|
|
315
|
+
view.dispose();
|
|
316
|
+
}
|
|
285
317
|
}
|
|
286
318
|
getRemovedRoots() {
|
|
287
319
|
this.assertNoUntrackedRoots();
|
|
@@ -317,19 +349,20 @@ class TreeCheckout {
|
|
|
317
349
|
this.revertibles.delete(revertible);
|
|
318
350
|
}
|
|
319
351
|
revertRevertible(revision, kind) {
|
|
320
|
-
if (this.
|
|
352
|
+
if (this._branch.isTransacting()) {
|
|
321
353
|
throw new internal_2.UsageError("Undo is not yet supported during transactions.");
|
|
322
354
|
}
|
|
323
355
|
const revertibleBranch = this.revertibleCommitBranches.get(revision);
|
|
324
356
|
(0, internal_1.assert)(revertibleBranch !== undefined, 0x7cc /* expected to find a revertible commit */);
|
|
325
357
|
const commitToRevert = revertibleBranch.getHead();
|
|
326
|
-
|
|
327
|
-
|
|
358
|
+
const revisionForInvert = this.mintRevisionTag();
|
|
359
|
+
let change = (0, index_js_2.tagChange)(this.changeFamily.rebaser.invert(commitToRevert, false, revisionForInvert), revisionForInvert);
|
|
360
|
+
const headCommit = this._branch.getHead();
|
|
328
361
|
// Rebase the inverted change onto any commits that occurred after the undoable commits.
|
|
329
362
|
if (commitToRevert !== headCommit) {
|
|
330
|
-
change = (0, index_js_2.
|
|
363
|
+
change = (0, index_js_2.tagChange)((0, index_js_2.rebaseChange)(this.changeFamily.rebaser, change, commitToRevert, headCommit, this.mintRevisionTag).change, revisionForInvert);
|
|
331
364
|
}
|
|
332
|
-
this.
|
|
365
|
+
this._branch.apply(change, kind === index_js_2.CommitKind.Default || kind === index_js_2.CommitKind.Redo
|
|
333
366
|
? index_js_2.CommitKind.Undo
|
|
334
367
|
: index_js_2.CommitKind.Redo);
|
|
335
368
|
// Derive some stats about the reversion to return to the caller.
|