@fluidframework/tree 2.4.0-297027 → 2.4.0-299374
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/.dependency-cruiser-known-violations.json +0 -14
- package/.vscode/settings.json +9 -1
- package/api-report/tree.alpha.api.md +178 -21
- package/api-report/tree.beta.api.md +46 -21
- package/api-report/tree.legacy.alpha.api.md +46 -21
- package/api-report/tree.legacy.public.api.md +46 -21
- package/api-report/tree.public.api.md +46 -21
- package/dist/alpha.d.ts +29 -1
- package/dist/beta.d.ts +2 -0
- package/dist/codec/codec.d.ts +4 -4
- package/dist/codec/codec.js.map +1 -1
- package/dist/codec/noopValidator.d.ts +1 -1
- package/dist/codec/noopValidator.js +1 -1
- package/dist/codec/noopValidator.js.map +1 -1
- 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/tree/anchorSet.d.ts +159 -2
- package/dist/core/tree/anchorSet.d.ts.map +1 -1
- package/dist/core/tree/anchorSet.js +54 -12
- package/dist/core/tree/anchorSet.js.map +1 -1
- package/dist/external-utilities/typeboxValidator.d.ts +1 -1
- package/dist/external-utilities/typeboxValidator.js +1 -1
- package/dist/external-utilities/typeboxValidator.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/flex-tree/lazyField.d.ts +4 -0
- package/dist/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyField.js +38 -6
- package/dist/feature-libraries/flex-tree/lazyField.js.map +1 -1
- package/dist/feature-libraries/index.d.ts +0 -1
- package/dist/feature-libraries/index.d.ts.map +1 -1
- package/dist/feature-libraries/index.js +46 -49
- 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/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/treeCompressionUtils.d.ts +1 -1
- package/dist/feature-libraries/treeCompressionUtils.js +1 -1
- package/dist/feature-libraries/treeCompressionUtils.js.map +1 -1
- package/dist/index.d.ts +6 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/internalTypes.d.ts +2 -2
- package/dist/internalTypes.d.ts.map +1 -1
- package/dist/internalTypes.js.map +1 -1
- package/dist/legacy.d.ts +2 -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 +2 -0
- package/dist/shared-tree/index.d.ts +2 -1
- package/dist/shared-tree/index.d.ts.map +1 -1
- package/dist/shared-tree/index.js +5 -1
- package/dist/shared-tree/index.js.map +1 -1
- package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/dist/shared-tree/schematizingTreeView.js +1 -14
- package/dist/shared-tree/schematizingTreeView.js.map +1 -1
- package/dist/shared-tree/sharedTree.d.ts +24 -9
- package/dist/shared-tree/sharedTree.d.ts.map +1 -1
- package/dist/shared-tree/sharedTree.js +21 -9
- 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/treeApi.d.ts +6 -6
- package/dist/shared-tree/treeApi.d.ts.map +1 -1
- package/dist/shared-tree/treeApi.js.map +1 -1
- package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
- package/dist/shared-tree/treeCheckout.js +4 -3
- package/dist/shared-tree/treeCheckout.js.map +1 -1
- package/dist/shared-tree-core/branch.d.ts +2 -3
- package/dist/shared-tree-core/branch.d.ts.map +1 -1
- package/dist/shared-tree-core/branch.js +10 -11
- 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/conciseTree.d.ts +29 -0
- package/dist/simple-tree/api/conciseTree.d.ts.map +1 -0
- package/dist/simple-tree/api/conciseTree.js +25 -0
- package/dist/simple-tree/api/conciseTree.js.map +1 -0
- package/dist/simple-tree/api/customTree.d.ts +44 -0
- package/dist/simple-tree/api/customTree.d.ts.map +1 -0
- package/dist/simple-tree/api/customTree.js +63 -0
- package/dist/simple-tree/api/customTree.js.map +1 -0
- package/dist/simple-tree/api/index.d.ts +7 -2
- package/dist/simple-tree/api/index.d.ts.map +1 -1
- package/dist/simple-tree/api/index.js +5 -1
- package/dist/simple-tree/api/index.js.map +1 -1
- package/dist/simple-tree/api/schemaCreationUtilities.d.ts +41 -26
- package/dist/simple-tree/api/schemaCreationUtilities.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaCreationUtilities.js +43 -15
- package/dist/simple-tree/api/schemaCreationUtilities.js.map +1 -1
- package/dist/simple-tree/api/schemaFactory.d.ts +1 -2
- package/dist/simple-tree/api/schemaFactory.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaFactory.js +8 -8
- package/dist/simple-tree/api/schemaFactory.js.map +1 -1
- package/dist/simple-tree/api/schemaFactoryRecursive.d.ts +1 -2
- 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/storedSchema.d.ts +78 -0
- package/dist/simple-tree/api/storedSchema.d.ts.map +1 -0
- package/dist/simple-tree/api/storedSchema.js +107 -0
- package/dist/simple-tree/api/storedSchema.js.map +1 -0
- package/dist/simple-tree/api/testRecursiveDomain.d.ts +10 -10
- package/dist/simple-tree/api/tree.d.ts +12 -3
- package/dist/simple-tree/api/tree.d.ts.map +1 -1
- package/dist/simple-tree/api/tree.js.map +1 -1
- package/dist/simple-tree/api/treeNodeApi.d.ts.map +1 -1
- package/dist/simple-tree/api/treeNodeApi.js +5 -5
- package/dist/simple-tree/api/treeNodeApi.js.map +1 -1
- package/dist/simple-tree/{typesUnsafe.d.ts → api/typesUnsafe.d.ts} +58 -10
- package/dist/simple-tree/api/typesUnsafe.d.ts.map +1 -0
- package/dist/simple-tree/api/typesUnsafe.js.map +1 -0
- package/dist/simple-tree/api/verboseTree.d.ts +6 -20
- package/dist/simple-tree/api/verboseTree.d.ts.map +1 -1
- package/dist/simple-tree/api/verboseTree.js +10 -48
- package/dist/simple-tree/api/verboseTree.js.map +1 -1
- package/dist/simple-tree/arrayNode.d.ts +14 -3
- package/dist/simple-tree/arrayNode.d.ts.map +1 -1
- package/dist/simple-tree/arrayNode.js +1 -2
- package/dist/simple-tree/arrayNode.js.map +1 -1
- package/dist/simple-tree/core/index.d.ts +1 -1
- package/dist/simple-tree/core/index.d.ts.map +1 -1
- package/dist/simple-tree/core/index.js +2 -1
- package/dist/simple-tree/core/index.js.map +1 -1
- package/dist/simple-tree/core/treeNodeKernel.d.ts +9 -0
- package/dist/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
- package/dist/simple-tree/core/treeNodeKernel.js +14 -1
- package/dist/simple-tree/core/treeNodeKernel.js.map +1 -1
- package/dist/simple-tree/core/treeNodeSchema.d.ts +6 -5
- 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/unhydratedFlexTree.d.ts.map +1 -1
- package/dist/simple-tree/core/unhydratedFlexTree.js +3 -1
- package/dist/simple-tree/core/unhydratedFlexTree.js.map +1 -1
- package/dist/simple-tree/core/withType.d.ts +3 -1
- package/dist/simple-tree/core/withType.d.ts.map +1 -1
- package/dist/simple-tree/core/withType.js.map +1 -1
- package/dist/simple-tree/flexList.d.ts.map +1 -0
- package/dist/simple-tree/flexList.js.map +1 -0
- package/dist/simple-tree/index.d.ts +6 -7
- package/dist/simple-tree/index.d.ts.map +1 -1
- package/dist/simple-tree/index.js +5 -3
- package/dist/simple-tree/index.js.map +1 -1
- package/dist/simple-tree/mapNode.d.ts.map +1 -1
- package/dist/simple-tree/mapNode.js +2 -3
- package/dist/simple-tree/mapNode.js.map +1 -1
- package/dist/simple-tree/objectNode.d.ts.map +1 -1
- package/dist/simple-tree/objectNode.js +3 -4
- package/dist/simple-tree/objectNode.js.map +1 -1
- package/dist/simple-tree/schemaTypes.d.ts +60 -7
- package/dist/simple-tree/schemaTypes.d.ts.map +1 -1
- package/dist/simple-tree/schemaTypes.js +11 -6
- package/dist/simple-tree/schemaTypes.js.map +1 -1
- package/dist/simple-tree/toFlexSchema.d.ts.map +1 -1
- package/dist/simple-tree/toFlexSchema.js +13 -15
- package/dist/simple-tree/toFlexSchema.js.map +1 -1
- package/dist/simple-tree/toMapTree.d.ts +4 -2
- package/dist/simple-tree/toMapTree.d.ts.map +1 -1
- package/dist/simple-tree/toMapTree.js +3 -3
- package/dist/simple-tree/toMapTree.js.map +1 -1
- package/dist/simple-tree/treeNodeValid.d.ts.map +1 -1
- package/dist/simple-tree/treeNodeValid.js +2 -1
- package/dist/simple-tree/treeNodeValid.js.map +1 -1
- package/dist/treeFactory.d.ts +1 -0
- package/dist/treeFactory.d.ts.map +1 -1
- package/dist/treeFactory.js +1 -0
- package/dist/treeFactory.js.map +1 -1
- package/dist/util/utils.d.ts +10 -8
- package/dist/util/utils.d.ts.map +1 -1
- package/dist/util/utils.js.map +1 -1
- package/docs/main/detached-trees.md +8 -8
- package/lib/alpha.d.ts +29 -1
- package/lib/beta.d.ts +2 -0
- package/lib/codec/codec.d.ts +4 -4
- package/lib/codec/codec.js.map +1 -1
- package/lib/codec/noopValidator.d.ts +1 -1
- package/lib/codec/noopValidator.js +1 -1
- package/lib/codec/noopValidator.js.map +1 -1
- 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/tree/anchorSet.d.ts +159 -2
- package/lib/core/tree/anchorSet.d.ts.map +1 -1
- package/lib/core/tree/anchorSet.js +54 -12
- package/lib/core/tree/anchorSet.js.map +1 -1
- package/lib/external-utilities/typeboxValidator.d.ts +1 -1
- package/lib/external-utilities/typeboxValidator.js +1 -1
- package/lib/external-utilities/typeboxValidator.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/flex-tree/lazyField.d.ts +4 -0
- package/lib/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyField.js +36 -5
- package/lib/feature-libraries/flex-tree/lazyField.js.map +1 -1
- package/lib/feature-libraries/index.d.ts +0 -1
- package/lib/feature-libraries/index.d.ts.map +1 -1
- package/lib/feature-libraries/index.js +0 -1
- 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/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/treeCompressionUtils.d.ts +1 -1
- package/lib/feature-libraries/treeCompressionUtils.js +1 -1
- package/lib/feature-libraries/treeCompressionUtils.js.map +1 -1
- package/lib/index.d.ts +6 -5
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +3 -3
- package/lib/index.js.map +1 -1
- package/lib/internalTypes.d.ts +2 -2
- package/lib/internalTypes.d.ts.map +1 -1
- package/lib/internalTypes.js.map +1 -1
- package/lib/legacy.d.ts +2 -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 +2 -0
- package/lib/shared-tree/index.d.ts +2 -1
- package/lib/shared-tree/index.d.ts.map +1 -1
- package/lib/shared-tree/index.js +2 -1
- package/lib/shared-tree/index.js.map +1 -1
- package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/lib/shared-tree/schematizingTreeView.js +2 -15
- package/lib/shared-tree/schematizingTreeView.js.map +1 -1
- package/lib/shared-tree/sharedTree.d.ts +24 -9
- package/lib/shared-tree/sharedTree.d.ts.map +1 -1
- package/lib/shared-tree/sharedTree.js +20 -9
- 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/treeApi.d.ts +6 -6
- package/lib/shared-tree/treeApi.d.ts.map +1 -1
- package/lib/shared-tree/treeApi.js.map +1 -1
- package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
- package/lib/shared-tree/treeCheckout.js +5 -4
- package/lib/shared-tree/treeCheckout.js.map +1 -1
- package/lib/shared-tree-core/branch.d.ts +2 -3
- package/lib/shared-tree-core/branch.d.ts.map +1 -1
- package/lib/shared-tree-core/branch.js +11 -12
- 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/conciseTree.d.ts +29 -0
- package/lib/simple-tree/api/conciseTree.d.ts.map +1 -0
- package/lib/simple-tree/api/conciseTree.js +21 -0
- package/lib/simple-tree/api/conciseTree.js.map +1 -0
- package/lib/simple-tree/api/customTree.d.ts +44 -0
- package/lib/simple-tree/api/customTree.d.ts.map +1 -0
- package/lib/simple-tree/api/customTree.js +59 -0
- package/lib/simple-tree/api/customTree.js.map +1 -0
- package/lib/simple-tree/api/index.d.ts +7 -2
- 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/schemaCreationUtilities.d.ts +41 -26
- package/lib/simple-tree/api/schemaCreationUtilities.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaCreationUtilities.js +43 -15
- package/lib/simple-tree/api/schemaCreationUtilities.js.map +1 -1
- package/lib/simple-tree/api/schemaFactory.d.ts +1 -2
- package/lib/simple-tree/api/schemaFactory.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaFactory.js +1 -1
- package/lib/simple-tree/api/schemaFactory.js.map +1 -1
- package/lib/simple-tree/api/schemaFactoryRecursive.d.ts +1 -2
- 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/storedSchema.d.ts +78 -0
- package/lib/simple-tree/api/storedSchema.d.ts.map +1 -0
- package/lib/simple-tree/api/storedSchema.js +101 -0
- package/lib/simple-tree/api/storedSchema.js.map +1 -0
- package/lib/simple-tree/api/testRecursiveDomain.d.ts +10 -10
- package/lib/simple-tree/api/tree.d.ts +12 -3
- package/lib/simple-tree/api/tree.d.ts.map +1 -1
- package/lib/simple-tree/api/tree.js.map +1 -1
- package/lib/simple-tree/api/treeNodeApi.d.ts.map +1 -1
- package/lib/simple-tree/api/treeNodeApi.js +3 -3
- package/lib/simple-tree/api/treeNodeApi.js.map +1 -1
- package/lib/simple-tree/{typesUnsafe.d.ts → api/typesUnsafe.d.ts} +58 -10
- package/lib/simple-tree/api/typesUnsafe.d.ts.map +1 -0
- package/lib/simple-tree/api/typesUnsafe.js.map +1 -0
- package/lib/simple-tree/api/verboseTree.d.ts +6 -20
- package/lib/simple-tree/api/verboseTree.d.ts.map +1 -1
- package/lib/simple-tree/api/verboseTree.js +11 -49
- package/lib/simple-tree/api/verboseTree.js.map +1 -1
- package/lib/simple-tree/arrayNode.d.ts +14 -3
- package/lib/simple-tree/arrayNode.d.ts.map +1 -1
- package/lib/simple-tree/arrayNode.js +1 -2
- package/lib/simple-tree/arrayNode.js.map +1 -1
- package/lib/simple-tree/core/index.d.ts +1 -1
- package/lib/simple-tree/core/index.d.ts.map +1 -1
- package/lib/simple-tree/core/index.js +1 -1
- package/lib/simple-tree/core/index.js.map +1 -1
- package/lib/simple-tree/core/treeNodeKernel.d.ts +9 -0
- package/lib/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
- package/lib/simple-tree/core/treeNodeKernel.js +12 -0
- package/lib/simple-tree/core/treeNodeKernel.js.map +1 -1
- package/lib/simple-tree/core/treeNodeSchema.d.ts +6 -5
- 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/unhydratedFlexTree.d.ts.map +1 -1
- package/lib/simple-tree/core/unhydratedFlexTree.js +3 -1
- package/lib/simple-tree/core/unhydratedFlexTree.js.map +1 -1
- package/lib/simple-tree/core/withType.d.ts +3 -1
- package/lib/simple-tree/core/withType.d.ts.map +1 -1
- package/lib/simple-tree/core/withType.js.map +1 -1
- package/lib/simple-tree/flexList.d.ts.map +1 -0
- package/lib/simple-tree/flexList.js.map +1 -0
- package/lib/simple-tree/index.d.ts +6 -7
- 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/mapNode.d.ts.map +1 -1
- package/lib/simple-tree/mapNode.js +1 -2
- package/lib/simple-tree/mapNode.js.map +1 -1
- package/lib/simple-tree/objectNode.d.ts.map +1 -1
- package/lib/simple-tree/objectNode.js +1 -2
- package/lib/simple-tree/objectNode.js.map +1 -1
- package/lib/simple-tree/schemaTypes.d.ts +60 -7
- package/lib/simple-tree/schemaTypes.d.ts.map +1 -1
- package/lib/simple-tree/schemaTypes.js +6 -1
- package/lib/simple-tree/schemaTypes.js.map +1 -1
- package/lib/simple-tree/toFlexSchema.d.ts.map +1 -1
- package/lib/simple-tree/toFlexSchema.js +1 -3
- package/lib/simple-tree/toFlexSchema.js.map +1 -1
- package/lib/simple-tree/toMapTree.d.ts +4 -2
- package/lib/simple-tree/toMapTree.d.ts.map +1 -1
- package/lib/simple-tree/toMapTree.js +3 -3
- package/lib/simple-tree/toMapTree.js.map +1 -1
- package/lib/simple-tree/treeNodeValid.d.ts.map +1 -1
- package/lib/simple-tree/treeNodeValid.js +2 -1
- package/lib/simple-tree/treeNodeValid.js.map +1 -1
- package/lib/treeFactory.d.ts +1 -0
- package/lib/treeFactory.d.ts.map +1 -1
- package/lib/treeFactory.js +1 -0
- package/lib/treeFactory.js.map +1 -1
- package/lib/util/utils.d.ts +10 -8
- package/lib/util/utils.d.ts.map +1 -1
- package/lib/util/utils.js.map +1 -1
- package/package.json +44 -27
- package/src/codec/codec.ts +4 -4
- package/src/codec/noopValidator.ts +1 -1
- 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/tree/anchorSet.ts +63 -13
- package/src/external-utilities/typeboxValidator.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/flex-tree/lazyField.ts +44 -7
- package/src/feature-libraries/index.ts +0 -10
- 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/treeCompressionUtils.ts +1 -1
- package/src/index.ts +26 -6
- package/src/internalTypes.ts +4 -1
- package/src/packageVersion.ts +1 -1
- package/src/shared-tree/index.ts +5 -0
- package/src/shared-tree/schematizingTreeView.ts +7 -16
- package/src/shared-tree/sharedTree.ts +55 -23
- package/src/shared-tree/sharedTreeChangeFamily.ts +5 -1
- package/src/shared-tree/sharedTreeEditBuilder.ts +23 -12
- package/src/shared-tree/treeApi.ts +19 -9
- package/src/shared-tree/treeCheckout.ts +7 -6
- package/src/shared-tree-core/branch.ts +11 -14
- 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/conciseTree.ts +58 -0
- package/src/simple-tree/api/customTree.ts +119 -0
- package/src/simple-tree/api/index.ts +39 -1
- package/src/simple-tree/api/schemaCreationUtilities.ts +55 -36
- package/src/simple-tree/api/schemaFactory.ts +4 -6
- package/src/simple-tree/api/schemaFactoryRecursive.ts +1 -2
- package/src/simple-tree/api/storedSchema.ts +126 -0
- package/src/simple-tree/api/tree.ts +24 -2
- package/src/simple-tree/api/treeNodeApi.ts +3 -8
- package/src/simple-tree/{typesUnsafe.ts → api/typesUnsafe.ts} +95 -21
- package/src/simple-tree/api/verboseTree.ts +21 -76
- package/src/simple-tree/arrayNode.ts +35 -15
- package/src/simple-tree/core/index.ts +1 -0
- package/src/simple-tree/core/treeNodeKernel.ts +13 -0
- package/src/simple-tree/core/treeNodeSchema.ts +7 -5
- package/src/simple-tree/core/unhydratedFlexTree.ts +6 -1
- package/src/simple-tree/core/withType.ts +10 -1
- package/src/simple-tree/index.ts +41 -21
- package/src/simple-tree/mapNode.ts +1 -1
- package/src/simple-tree/objectNode.ts +1 -1
- package/src/simple-tree/schemaTypes.ts +70 -11
- package/src/simple-tree/toFlexSchema.ts +1 -3
- package/src/simple-tree/toMapTree.ts +7 -4
- package/src/simple-tree/treeNodeValid.ts +2 -1
- package/src/treeFactory.ts +1 -0
- package/src/util/utils.ts +10 -8
- package/dist/feature-libraries/flex-tree/unboxed.d.ts +0 -12
- package/dist/feature-libraries/flex-tree/unboxed.d.ts.map +0 -1
- package/dist/feature-libraries/flex-tree/unboxed.js +0 -20
- package/dist/feature-libraries/flex-tree/unboxed.js.map +0 -1
- package/dist/feature-libraries/typed-schema/flexList.d.ts.map +0 -1
- package/dist/feature-libraries/typed-schema/flexList.js.map +0 -1
- package/dist/feature-libraries/typed-schema/index.d.ts +0 -7
- package/dist/feature-libraries/typed-schema/index.d.ts.map +0 -1
- package/dist/feature-libraries/typed-schema/index.js +0 -12
- package/dist/feature-libraries/typed-schema/index.js.map +0 -1
- package/dist/feature-libraries/typed-schema/typedTreeSchema.d.ts +0 -14
- package/dist/feature-libraries/typed-schema/typedTreeSchema.d.ts.map +0 -1
- package/dist/feature-libraries/typed-schema/typedTreeSchema.js +0 -7
- package/dist/feature-libraries/typed-schema/typedTreeSchema.js.map +0 -1
- package/dist/simple-tree/proxyBinding.d.ts +0 -15
- package/dist/simple-tree/proxyBinding.d.ts.map +0 -1
- package/dist/simple-tree/proxyBinding.js +0 -22
- package/dist/simple-tree/proxyBinding.js.map +0 -1
- package/dist/simple-tree/typesUnsafe.d.ts.map +0 -1
- package/dist/simple-tree/typesUnsafe.js.map +0 -1
- package/lib/feature-libraries/flex-tree/unboxed.d.ts +0 -12
- package/lib/feature-libraries/flex-tree/unboxed.d.ts.map +0 -1
- package/lib/feature-libraries/flex-tree/unboxed.js +0 -16
- package/lib/feature-libraries/flex-tree/unboxed.js.map +0 -1
- package/lib/feature-libraries/typed-schema/flexList.d.ts.map +0 -1
- package/lib/feature-libraries/typed-schema/flexList.js.map +0 -1
- package/lib/feature-libraries/typed-schema/index.d.ts +0 -7
- package/lib/feature-libraries/typed-schema/index.d.ts.map +0 -1
- package/lib/feature-libraries/typed-schema/index.js +0 -6
- package/lib/feature-libraries/typed-schema/index.js.map +0 -1
- package/lib/feature-libraries/typed-schema/typedTreeSchema.d.ts +0 -14
- package/lib/feature-libraries/typed-schema/typedTreeSchema.d.ts.map +0 -1
- package/lib/feature-libraries/typed-schema/typedTreeSchema.js +0 -6
- package/lib/feature-libraries/typed-schema/typedTreeSchema.js.map +0 -1
- package/lib/simple-tree/proxyBinding.d.ts +0 -15
- package/lib/simple-tree/proxyBinding.d.ts.map +0 -1
- package/lib/simple-tree/proxyBinding.js +0 -18
- package/lib/simple-tree/proxyBinding.js.map +0 -1
- package/lib/simple-tree/typesUnsafe.d.ts.map +0 -1
- package/lib/simple-tree/typesUnsafe.js.map +0 -1
- package/src/feature-libraries/flex-tree/unboxed.ts +0 -24
- package/src/feature-libraries/typed-schema/README.md +0 -6
- package/src/feature-libraries/typed-schema/index.ts +0 -16
- package/src/feature-libraries/typed-schema/typedTreeSchema.ts +0 -14
- package/src/simple-tree/proxyBinding.ts +0 -20
- /package/dist/simple-tree/{typesUnsafe.js → api/typesUnsafe.js} +0 -0
- /package/dist/{feature-libraries/typed-schema → simple-tree}/flexList.d.ts +0 -0
- /package/dist/{feature-libraries/typed-schema → simple-tree}/flexList.js +0 -0
- /package/lib/simple-tree/{typesUnsafe.js → api/typesUnsafe.js} +0 -0
- /package/lib/{feature-libraries/typed-schema → simple-tree}/flexList.d.ts +0 -0
- /package/lib/{feature-libraries/typed-schema → simple-tree}/flexList.js +0 -0
- /package/src/simple-tree/{ProxyBinding.md → core/TreeNodeBinding.md} +0 -0
- /package/src/{feature-libraries/typed-schema → simple-tree}/flexList.ts +0 -0
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { assert } from "@fluidframework/core-utils/internal";
|
|
6
6
|
import { BTree } from "@tylerbu/sorted-btree-es6";
|
|
7
|
-
import { EditBuilder, isEmptyFieldChanges,
|
|
7
|
+
import { EditBuilder, isEmptyFieldChanges, makeDetachedNodeId, mapCursorField, replaceAtomRevisions, revisionMetadataSourceFromInfo, areEqualChangeAtomIds, areEqualChangeAtomIdOpts, tagChange, makeAnonChange, } from "../../core/index.js";
|
|
8
8
|
import { brand, fail, idAllocatorFromMaxId, idAllocatorFromState, getOrAddInMapLazy, } from "../../util/index.js";
|
|
9
9
|
import { chunkFieldSingle, chunkTree, defaultChunkPolicy, } from "../chunked-forest/index.js";
|
|
10
10
|
import { cursorForMapTreeNode, mapTreeFromCursor } from "../mapTreeCursor.js";
|
|
@@ -82,7 +82,18 @@ export class ModularChangeFamily {
|
|
|
82
82
|
composePair(change1, change2, revInfos, idState) {
|
|
83
83
|
const { fieldChanges, nodeChanges, nodeToParent, nodeAliases, crossFieldKeys } = this.composeAllFields(change1, change2, revInfos, idState);
|
|
84
84
|
const { allBuilds, allDestroys, allRefreshers } = composeBuildsDestroysAndRefreshers(change1, change2);
|
|
85
|
-
return makeModularChangeset(
|
|
85
|
+
return makeModularChangeset({
|
|
86
|
+
fieldChanges,
|
|
87
|
+
nodeChanges,
|
|
88
|
+
nodeToParent,
|
|
89
|
+
nodeAliases,
|
|
90
|
+
crossFieldKeys,
|
|
91
|
+
maxId: idState.maxId,
|
|
92
|
+
revisions: revInfos,
|
|
93
|
+
builds: allBuilds,
|
|
94
|
+
destroys: allDestroys,
|
|
95
|
+
refreshers: allRefreshers,
|
|
96
|
+
});
|
|
86
97
|
}
|
|
87
98
|
composeAllFields(change1, change2, revInfos, idState) {
|
|
88
99
|
if (hasConflicts(change1) && hasConflicts(change2)) {
|
|
@@ -303,15 +314,23 @@ export class ModularChangeFamily {
|
|
|
303
314
|
/**
|
|
304
315
|
* @param change - The change to invert.
|
|
305
316
|
* @param isRollback - Whether the inverted change is meant to rollback a change on a branch as is the case when
|
|
317
|
+
* @param revisionForInvert - The revision for the invert changeset.
|
|
306
318
|
* performing a sandwich rebase.
|
|
307
319
|
*/
|
|
308
|
-
invert(change, isRollback) {
|
|
320
|
+
invert(change, isRollback, revisionForInvert) {
|
|
309
321
|
// Rollback changesets destroy the nodes created by the change being rolled back.
|
|
310
322
|
const destroys = isRollback ? invertBuilds(change.change.builds) : undefined;
|
|
311
323
|
// Destroys only occur in rollback changesets, which are never inverted.
|
|
312
324
|
assert(change.change.destroys === undefined, 0x89a /* Unexpected destroys in change to invert */);
|
|
325
|
+
const revInfos = isRollback
|
|
326
|
+
? [{ revision: revisionForInvert, rollbackOf: change.revision }]
|
|
327
|
+
: [{ revision: revisionForInvert }];
|
|
313
328
|
if (hasConflicts(change.change)) {
|
|
314
|
-
return makeModularChangeset(
|
|
329
|
+
return makeModularChangeset({
|
|
330
|
+
maxId: change.change.maxId,
|
|
331
|
+
revisions: revInfos,
|
|
332
|
+
destroys,
|
|
333
|
+
});
|
|
315
334
|
}
|
|
316
335
|
const genId = idAllocatorFromMaxId(change.change.maxId ?? -1);
|
|
317
336
|
const crossFieldTable = {
|
|
@@ -319,12 +338,12 @@ export class ModularChangeFamily {
|
|
|
319
338
|
originalFieldToContext: new Map(),
|
|
320
339
|
invertedNodeToParent: brand(change.change.nodeToParent.clone()),
|
|
321
340
|
};
|
|
322
|
-
const { revInfos } = getRevInfoFromTaggedChanges([change]);
|
|
323
|
-
const revisionMetadata = revisionMetadataSourceFromInfo(
|
|
324
|
-
const invertedFields = this.invertFieldMap(change.change.fieldChanges, undefined, isRollback, genId, crossFieldTable, revisionMetadata);
|
|
341
|
+
const { revInfos: oldRevInfos } = getRevInfoFromTaggedChanges([change]);
|
|
342
|
+
const revisionMetadata = revisionMetadataSourceFromInfo(oldRevInfos);
|
|
343
|
+
const invertedFields = this.invertFieldMap(change.change.fieldChanges, undefined, isRollback, genId, crossFieldTable, revisionMetadata, revisionForInvert);
|
|
325
344
|
const invertedNodes = newTupleBTree();
|
|
326
345
|
change.change.nodeChanges.forEachPair(([revision, localId], nodeChangeset) => {
|
|
327
|
-
invertedNodes.set([revision, localId], this.invertNodeChange(nodeChangeset, { revision, localId }, isRollback, genId, crossFieldTable, revisionMetadata));
|
|
346
|
+
invertedNodes.set([revision, localId], this.invertNodeChange(nodeChangeset, { revision, localId }, isRollback, genId, crossFieldTable, revisionMetadata, revisionForInvert));
|
|
328
347
|
});
|
|
329
348
|
if (crossFieldTable.invalidatedFields.size > 0) {
|
|
330
349
|
const fieldsToUpdate = crossFieldTable.invalidatedFields;
|
|
@@ -334,19 +353,29 @@ export class ModularChangeFamily {
|
|
|
334
353
|
const context = crossFieldTable.originalFieldToContext.get(fieldChange);
|
|
335
354
|
assert(context !== undefined, 0x851 /* Should have context for every invalidated field */);
|
|
336
355
|
const { invertedField, fieldId } = context;
|
|
337
|
-
const amendedChange = getChangeHandler(this.fieldKinds, fieldChange.fieldKind).rebaser.invert(originalFieldChange, isRollback, genId, new InvertManager(crossFieldTable, fieldChange, fieldId), revisionMetadata);
|
|
356
|
+
const amendedChange = getChangeHandler(this.fieldKinds, fieldChange.fieldKind).rebaser.invert(originalFieldChange, isRollback, genId, revisionForInvert, new InvertManager(crossFieldTable, fieldChange, fieldId), revisionMetadata);
|
|
338
357
|
invertedField.change = brand(amendedChange);
|
|
339
358
|
}
|
|
340
359
|
}
|
|
341
360
|
const crossFieldKeys = this.makeCrossFieldKeyTable(invertedFields, invertedNodes);
|
|
342
|
-
return makeModularChangeset(
|
|
361
|
+
return makeModularChangeset({
|
|
362
|
+
fieldChanges: invertedFields,
|
|
363
|
+
nodeChanges: invertedNodes,
|
|
364
|
+
nodeToParent: crossFieldTable.invertedNodeToParent,
|
|
365
|
+
nodeAliases: change.change.nodeAliases,
|
|
366
|
+
crossFieldKeys,
|
|
367
|
+
maxId: genId.getMaxId(),
|
|
368
|
+
revisions: revInfos,
|
|
369
|
+
constraintViolationCount: change.change.constraintViolationCount,
|
|
370
|
+
destroys,
|
|
371
|
+
});
|
|
343
372
|
}
|
|
344
|
-
invertFieldMap(changes, parentId, isRollback, genId, crossFieldTable, revisionMetadata) {
|
|
373
|
+
invertFieldMap(changes, parentId, isRollback, genId, crossFieldTable, revisionMetadata, revisionForInvert) {
|
|
345
374
|
const invertedFields = new Map();
|
|
346
375
|
for (const [field, fieldChange] of changes) {
|
|
347
376
|
const fieldId = { nodeId: parentId, field };
|
|
348
377
|
const manager = new InvertManager(crossFieldTable, fieldChange, fieldId);
|
|
349
|
-
const invertedChange = getChangeHandler(this.fieldKinds, fieldChange.fieldKind).rebaser.invert(fieldChange.change, isRollback, genId, manager, revisionMetadata);
|
|
378
|
+
const invertedChange = getChangeHandler(this.fieldKinds, fieldChange.fieldKind).rebaser.invert(fieldChange.change, isRollback, genId, revisionForInvert, manager, revisionMetadata);
|
|
350
379
|
const invertedFieldChange = {
|
|
351
380
|
...fieldChange,
|
|
352
381
|
change: brand(invertedChange),
|
|
@@ -359,10 +388,10 @@ export class ModularChangeFamily {
|
|
|
359
388
|
}
|
|
360
389
|
return invertedFields;
|
|
361
390
|
}
|
|
362
|
-
invertNodeChange(change, id, isRollback, genId, crossFieldTable, revisionMetadata) {
|
|
391
|
+
invertNodeChange(change, id, isRollback, genId, crossFieldTable, revisionMetadata, revisionForInvert) {
|
|
363
392
|
const inverse = {};
|
|
364
393
|
if (change.fieldChanges !== undefined) {
|
|
365
|
-
inverse.fieldChanges = this.invertFieldMap(change.fieldChanges, id, isRollback, genId, crossFieldTable, revisionMetadata);
|
|
394
|
+
inverse.fieldChanges = this.invertFieldMap(change.fieldChanges, id, isRollback, genId, crossFieldTable, revisionMetadata, revisionForInvert);
|
|
366
395
|
}
|
|
367
396
|
return inverse;
|
|
368
397
|
}
|
|
@@ -398,7 +427,19 @@ export class ModularChangeFamily {
|
|
|
398
427
|
const rebasedFields = this.rebaseIntersectingFields(crossFieldTable, rebasedNodes, genId, constraintState, rebaseMetadata);
|
|
399
428
|
this.rebaseInvalidatedElements(rebasedFields, rebasedNodes, crossFieldTable, rebaseMetadata, genId);
|
|
400
429
|
this.updateConstraintsForFields(rebasedFields, NodeAttachState.Attached, constraintState, rebasedNodes);
|
|
401
|
-
const rebased = makeModularChangeset(
|
|
430
|
+
const rebased = makeModularChangeset({
|
|
431
|
+
fieldChanges: this.pruneFieldMap(rebasedFields, rebasedNodes),
|
|
432
|
+
nodeChanges: rebasedNodes,
|
|
433
|
+
nodeToParent: crossFieldTable.rebasedNodeToParent,
|
|
434
|
+
nodeAliases: change.nodeAliases,
|
|
435
|
+
crossFieldKeys: crossFieldTable.rebasedCrossFieldKeys,
|
|
436
|
+
maxId: idState.maxId,
|
|
437
|
+
revisions: change.revisions,
|
|
438
|
+
constraintViolationCount: constraintState.violationCount,
|
|
439
|
+
builds: change.builds,
|
|
440
|
+
destroys: change.destroys,
|
|
441
|
+
refreshers: change.refreshers,
|
|
442
|
+
});
|
|
402
443
|
return rebased;
|
|
403
444
|
}
|
|
404
445
|
// This performs a first pass on all fields which have both new and base changes.
|
|
@@ -663,7 +704,7 @@ export class ModularChangeFamily {
|
|
|
663
704
|
}
|
|
664
705
|
}
|
|
665
706
|
changeRevision(change, newRevision, rollbackOf) {
|
|
666
|
-
const oldRevisions = new Set(change.revisions === undefined
|
|
707
|
+
const oldRevisions = new Set(change.revisions === undefined || change.revisions.length === 0
|
|
667
708
|
? [undefined]
|
|
668
709
|
: change.revisions.map((revInfo) => revInfo.revision));
|
|
669
710
|
const updatedFields = this.replaceFieldMapRevisions(change.fieldChanges, oldRevisions, newRevision);
|
|
@@ -933,7 +974,19 @@ export function updateRefreshers(change, getDetachedNode, removedRoots, requireR
|
|
|
933
974
|
}
|
|
934
975
|
}
|
|
935
976
|
const { fieldChanges, nodeChanges, maxId, revisions, constraintViolationCount, builds, destroys, } = change;
|
|
936
|
-
return makeModularChangeset(
|
|
977
|
+
return makeModularChangeset({
|
|
978
|
+
fieldChanges,
|
|
979
|
+
nodeChanges,
|
|
980
|
+
nodeToParent: change.nodeToParent,
|
|
981
|
+
nodeAliases: change.nodeAliases,
|
|
982
|
+
crossFieldKeys: change.crossFieldKeys,
|
|
983
|
+
maxId: maxId,
|
|
984
|
+
revisions,
|
|
985
|
+
constraintViolationCount,
|
|
986
|
+
builds,
|
|
987
|
+
destroys,
|
|
988
|
+
refreshers,
|
|
989
|
+
});
|
|
937
990
|
}
|
|
938
991
|
/**
|
|
939
992
|
* @param change - The change to convert into a delta.
|
|
@@ -1212,31 +1265,33 @@ class ComposeManager extends CrossFieldManagerI {
|
|
|
1212
1265
|
return this.crossFieldTable;
|
|
1213
1266
|
}
|
|
1214
1267
|
}
|
|
1215
|
-
function makeModularChangeset(
|
|
1268
|
+
function makeModularChangeset(props = {
|
|
1269
|
+
maxId: -1,
|
|
1270
|
+
}) {
|
|
1216
1271
|
const changeset = {
|
|
1217
|
-
fieldChanges: fieldChanges ?? new Map(),
|
|
1218
|
-
nodeChanges: nodeChanges ?? newTupleBTree(),
|
|
1219
|
-
nodeToParent: nodeToParent ?? newTupleBTree(),
|
|
1220
|
-
nodeAliases: nodeAliases ?? newTupleBTree(),
|
|
1221
|
-
crossFieldKeys: crossFieldKeys ?? newCrossFieldKeyTable(),
|
|
1272
|
+
fieldChanges: props.fieldChanges ?? new Map(),
|
|
1273
|
+
nodeChanges: props.nodeChanges ?? newTupleBTree(),
|
|
1274
|
+
nodeToParent: props.nodeToParent ?? newTupleBTree(),
|
|
1275
|
+
nodeAliases: props.nodeAliases ?? newTupleBTree(),
|
|
1276
|
+
crossFieldKeys: props.crossFieldKeys ?? newCrossFieldKeyTable(),
|
|
1222
1277
|
};
|
|
1223
|
-
if (revisions !== undefined && revisions.length > 0) {
|
|
1224
|
-
changeset.revisions = revisions;
|
|
1278
|
+
if (props.revisions !== undefined && props.revisions.length > 0) {
|
|
1279
|
+
changeset.revisions = props.revisions;
|
|
1225
1280
|
}
|
|
1226
|
-
if (maxId >= 0) {
|
|
1227
|
-
changeset.maxId = brand(maxId);
|
|
1281
|
+
if (props.maxId >= 0) {
|
|
1282
|
+
changeset.maxId = brand(props.maxId);
|
|
1228
1283
|
}
|
|
1229
|
-
if (constraintViolationCount !== undefined && constraintViolationCount > 0) {
|
|
1230
|
-
changeset.constraintViolationCount = constraintViolationCount;
|
|
1284
|
+
if (props.constraintViolationCount !== undefined && props.constraintViolationCount > 0) {
|
|
1285
|
+
changeset.constraintViolationCount = props.constraintViolationCount;
|
|
1231
1286
|
}
|
|
1232
|
-
if (builds !== undefined && builds.size > 0) {
|
|
1233
|
-
changeset.builds = builds;
|
|
1287
|
+
if (props.builds !== undefined && props.builds.size > 0) {
|
|
1288
|
+
changeset.builds = props.builds;
|
|
1234
1289
|
}
|
|
1235
|
-
if (destroys !== undefined && destroys.size > 0) {
|
|
1236
|
-
changeset.destroys = destroys;
|
|
1290
|
+
if (props.destroys !== undefined && props.destroys.size > 0) {
|
|
1291
|
+
changeset.destroys = props.destroys;
|
|
1237
1292
|
}
|
|
1238
|
-
if (refreshers !== undefined && refreshers.size > 0) {
|
|
1239
|
-
changeset.refreshers = refreshers;
|
|
1293
|
+
if (props.refreshers !== undefined && props.refreshers.size > 0) {
|
|
1294
|
+
changeset.refreshers = props.refreshers;
|
|
1240
1295
|
}
|
|
1241
1296
|
return changeset;
|
|
1242
1297
|
}
|
|
@@ -1263,11 +1318,12 @@ export class ModularEditBuilder extends EditBuilder {
|
|
|
1263
1318
|
/**
|
|
1264
1319
|
* @param firstId - The ID to associate with the first node
|
|
1265
1320
|
* @param content - The node(s) to build. Can be in either Field or Node mode.
|
|
1321
|
+
* @param revision - The revision to use for the build.
|
|
1266
1322
|
* @returns A description of the edit that can be passed to `submitChanges`.
|
|
1267
1323
|
*/
|
|
1268
|
-
buildTrees(firstId, content, idCompressor) {
|
|
1324
|
+
buildTrees(firstId, content, revision, idCompressor) {
|
|
1269
1325
|
if (content.mode === 1 /* CursorLocationType.Fields */ && content.getFieldLength() === 0) {
|
|
1270
|
-
return { type: "global" };
|
|
1326
|
+
return { type: "global", revision };
|
|
1271
1327
|
}
|
|
1272
1328
|
const builds = newTupleBTree();
|
|
1273
1329
|
const chunkCompressor = {
|
|
@@ -1277,10 +1333,11 @@ export class ModularEditBuilder extends EditBuilder {
|
|
|
1277
1333
|
const chunk = content.mode === 1 /* CursorLocationType.Fields */
|
|
1278
1334
|
? chunkFieldSingle(content, chunkCompressor)
|
|
1279
1335
|
: chunkTree(content, chunkCompressor);
|
|
1280
|
-
builds.set([
|
|
1336
|
+
builds.set([revision, firstId], chunk);
|
|
1281
1337
|
return {
|
|
1282
1338
|
type: "global",
|
|
1283
1339
|
builds,
|
|
1340
|
+
revision,
|
|
1284
1341
|
};
|
|
1285
1342
|
}
|
|
1286
1343
|
/**
|
|
@@ -1288,25 +1345,55 @@ export class ModularEditBuilder extends EditBuilder {
|
|
|
1288
1345
|
* @param field - the field which is being edited
|
|
1289
1346
|
* @param fieldKind - the kind of the field
|
|
1290
1347
|
* @param change - the change to the field
|
|
1291
|
-
* @param
|
|
1348
|
+
* @param revision - the revision of the change
|
|
1292
1349
|
*/
|
|
1293
|
-
submitChange(field, fieldKind, change) {
|
|
1294
|
-
const
|
|
1295
|
-
const modularChange = buildModularChangesetFromField(
|
|
1296
|
-
|
|
1350
|
+
submitChange(field, fieldKind, change, revision) {
|
|
1351
|
+
const localCrossFieldKeys = getChangeHandler(this.fieldKinds, fieldKind).getCrossFieldKeys(change);
|
|
1352
|
+
const modularChange = buildModularChangesetFromField({
|
|
1353
|
+
path: field,
|
|
1354
|
+
fieldChange: { fieldKind, change },
|
|
1355
|
+
nodeChanges: newTupleBTree(),
|
|
1356
|
+
nodeToParent: newTupleBTree(),
|
|
1357
|
+
crossFieldKeys: newCrossFieldKeyTable(),
|
|
1358
|
+
idAllocator: this.idAllocator,
|
|
1359
|
+
localCrossFieldKeys,
|
|
1360
|
+
revision,
|
|
1361
|
+
});
|
|
1362
|
+
this.applyChange(tagChange(modularChange, revision));
|
|
1297
1363
|
}
|
|
1298
|
-
submitChanges(changes) {
|
|
1364
|
+
submitChanges(changes, revision) {
|
|
1299
1365
|
const modularChange = this.buildChanges(changes);
|
|
1300
|
-
this.applyChange(modularChange);
|
|
1366
|
+
this.applyChange(tagChange(modularChange, revision));
|
|
1301
1367
|
}
|
|
1302
1368
|
buildChanges(changes) {
|
|
1303
|
-
const
|
|
1304
|
-
|
|
1305
|
-
|
|
1306
|
-
|
|
1307
|
-
|
|
1308
|
-
|
|
1309
|
-
|
|
1369
|
+
const revisions = new Set();
|
|
1370
|
+
const changeMaps = changes.map((change) => {
|
|
1371
|
+
revisions.add(change.revision);
|
|
1372
|
+
return makeAnonChange(change.type === "global"
|
|
1373
|
+
? makeModularChangeset({
|
|
1374
|
+
maxId: this.idAllocator.getMaxId(),
|
|
1375
|
+
builds: change.builds,
|
|
1376
|
+
revisions: [{ revision: change.revision }],
|
|
1377
|
+
})
|
|
1378
|
+
: buildModularChangesetFromField({
|
|
1379
|
+
path: change.field,
|
|
1380
|
+
fieldChange: {
|
|
1381
|
+
fieldKind: change.fieldKind,
|
|
1382
|
+
change: change.change,
|
|
1383
|
+
},
|
|
1384
|
+
nodeChanges: newTupleBTree(),
|
|
1385
|
+
nodeToParent: newTupleBTree(),
|
|
1386
|
+
crossFieldKeys: newCrossFieldKeyTable(),
|
|
1387
|
+
idAllocator: this.idAllocator,
|
|
1388
|
+
localCrossFieldKeys: getChangeHandler(this.fieldKinds, change.fieldKind).getCrossFieldKeys(change.change),
|
|
1389
|
+
revision: change.revision,
|
|
1390
|
+
}));
|
|
1391
|
+
});
|
|
1392
|
+
const revInfo = Array.from(revisions).map((revision) => ({ revision }));
|
|
1393
|
+
const composedChange = {
|
|
1394
|
+
...this.changeFamily.rebaser.compose(changeMaps),
|
|
1395
|
+
revisions: revInfo,
|
|
1396
|
+
};
|
|
1310
1397
|
const maxId = brand(this.idAllocator.getMaxId());
|
|
1311
1398
|
if (maxId >= 0) {
|
|
1312
1399
|
composedChange.maxId = maxId;
|
|
@@ -1316,14 +1403,23 @@ export class ModularEditBuilder extends EditBuilder {
|
|
|
1316
1403
|
generateId(count) {
|
|
1317
1404
|
return brand(this.idAllocator.allocate(count));
|
|
1318
1405
|
}
|
|
1319
|
-
addNodeExistsConstraint(path) {
|
|
1406
|
+
addNodeExistsConstraint(path, revision) {
|
|
1320
1407
|
const nodeChange = {
|
|
1321
1408
|
nodeExistsConstraint: { violated: false },
|
|
1322
1409
|
};
|
|
1323
|
-
this.applyChange(buildModularChangesetFromNode(
|
|
1410
|
+
this.applyChange(tagChange(buildModularChangesetFromNode({
|
|
1411
|
+
path,
|
|
1412
|
+
nodeChange,
|
|
1413
|
+
nodeChanges: newTupleBTree(),
|
|
1414
|
+
nodeToParent: newTupleBTree(),
|
|
1415
|
+
crossFieldKeys: newCrossFieldKeyTable(),
|
|
1416
|
+
idAllocator: this.idAllocator,
|
|
1417
|
+
revision,
|
|
1418
|
+
}), revision));
|
|
1324
1419
|
}
|
|
1325
1420
|
}
|
|
1326
|
-
function buildModularChangesetFromField(
|
|
1421
|
+
function buildModularChangesetFromField(props) {
|
|
1422
|
+
const { path, fieldChange, nodeChanges, nodeToParent, crossFieldKeys, idAllocator = idAllocatorFromMaxId(), localCrossFieldKeys = [], childId, revision, } = props;
|
|
1327
1423
|
const fieldChanges = new Map([[path.field, fieldChange]]);
|
|
1328
1424
|
if (path.parent === undefined) {
|
|
1329
1425
|
for (const key of localCrossFieldKeys) {
|
|
@@ -1335,12 +1431,19 @@ function buildModularChangesetFromField(path, fieldChange, nodeChanges, nodeToPa
|
|
|
1335
1431
|
field: path.field,
|
|
1336
1432
|
});
|
|
1337
1433
|
}
|
|
1338
|
-
return makeModularChangeset(
|
|
1434
|
+
return makeModularChangeset({
|
|
1435
|
+
fieldChanges,
|
|
1436
|
+
nodeChanges,
|
|
1437
|
+
nodeToParent,
|
|
1438
|
+
crossFieldKeys,
|
|
1439
|
+
maxId: idAllocator.getMaxId(),
|
|
1440
|
+
revisions: [{ revision }],
|
|
1441
|
+
});
|
|
1339
1442
|
}
|
|
1340
1443
|
const nodeChangeset = {
|
|
1341
1444
|
fieldChanges,
|
|
1342
1445
|
};
|
|
1343
|
-
const parentId = { localId: brand(idAllocator.allocate()) };
|
|
1446
|
+
const parentId = { localId: brand(idAllocator.allocate()), revision };
|
|
1344
1447
|
for (const key of localCrossFieldKeys) {
|
|
1345
1448
|
crossFieldKeys.set(key, { nodeId: parentId, field: path.field });
|
|
1346
1449
|
}
|
|
@@ -1350,16 +1453,32 @@ function buildModularChangesetFromField(path, fieldChange, nodeChanges, nodeToPa
|
|
|
1350
1453
|
field: path.field,
|
|
1351
1454
|
});
|
|
1352
1455
|
}
|
|
1353
|
-
return buildModularChangesetFromNode(
|
|
1456
|
+
return buildModularChangesetFromNode({
|
|
1457
|
+
path: path.parent,
|
|
1458
|
+
nodeChange: nodeChangeset,
|
|
1459
|
+
nodeChanges,
|
|
1460
|
+
nodeToParent,
|
|
1461
|
+
crossFieldKeys,
|
|
1462
|
+
idAllocator,
|
|
1463
|
+
revision,
|
|
1464
|
+
nodeId: parentId,
|
|
1465
|
+
});
|
|
1354
1466
|
}
|
|
1355
|
-
function buildModularChangesetFromNode(
|
|
1356
|
-
|
|
1467
|
+
function buildModularChangesetFromNode(props) {
|
|
1468
|
+
const { path, nodeId = { localId: brand(props.idAllocator.allocate()), revision: props.revision }, } = props;
|
|
1469
|
+
setInChangeAtomIdMap(props.nodeChanges, nodeId, props.nodeChange);
|
|
1357
1470
|
const fieldChangeset = genericFieldKind.changeHandler.editor.buildChildChange(path.parentIndex, nodeId);
|
|
1358
1471
|
const fieldChange = {
|
|
1359
1472
|
fieldKind: genericFieldKind.identifier,
|
|
1360
1473
|
change: fieldChangeset,
|
|
1361
1474
|
};
|
|
1362
|
-
return buildModularChangesetFromField({
|
|
1475
|
+
return buildModularChangesetFromField({
|
|
1476
|
+
...props,
|
|
1477
|
+
path: { parent: path.parent, field: path.parentField },
|
|
1478
|
+
fieldChange,
|
|
1479
|
+
localCrossFieldKeys: [],
|
|
1480
|
+
childId: nodeId,
|
|
1481
|
+
});
|
|
1363
1482
|
}
|
|
1364
1483
|
function getRevInfoFromTaggedChanges(changes) {
|
|
1365
1484
|
let maxId = -1;
|