@fluidframework/tree 2.82.0 → 2.90.0-378676
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +43 -0
- package/README.md +33 -5
- package/api-report/tree.alpha.api.md +26 -21
- package/api-report/tree.beta.api.md +14 -2
- package/api-report/tree.legacy.beta.api.md +14 -2
- package/api-report/tree.legacy.public.api.md +1 -1
- package/api-report/tree.public.api.md +1 -1
- package/dist/alpha.d.ts +3 -3
- package/dist/beta.d.ts +1 -0
- package/dist/codec/codec.d.ts +3 -39
- package/dist/codec/codec.d.ts.map +1 -1
- package/dist/codec/codec.js +5 -50
- package/dist/codec/codec.js.map +1 -1
- package/dist/codec/index.d.ts +1 -1
- package/dist/codec/index.d.ts.map +1 -1
- package/dist/codec/index.js +1 -2
- package/dist/codec/index.js.map +1 -1
- package/dist/codec/versioned/codec.d.ts +20 -7
- package/dist/codec/versioned/codec.d.ts.map +1 -1
- package/dist/codec/versioned/codec.js +56 -30
- package/dist/codec/versioned/codec.js.map +1 -1
- package/dist/core/change-family/changeFamily.d.ts +4 -1
- 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/index.d.ts +1 -1
- package/dist/core/change-family/index.d.ts.map +1 -1
- package/dist/core/change-family/index.js.map +1 -1
- package/dist/core/index.d.ts +3 -3
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +6 -4
- package/dist/core/index.js.map +1 -1
- package/dist/core/rebase/changeRebaser.d.ts +6 -1
- package/dist/core/rebase/changeRebaser.d.ts.map +1 -1
- package/dist/core/rebase/changeRebaser.js.map +1 -1
- package/dist/core/rebase/index.d.ts +1 -1
- package/dist/core/rebase/index.d.ts.map +1 -1
- package/dist/core/rebase/index.js +2 -1
- package/dist/core/rebase/index.js.map +1 -1
- package/dist/core/rebase/types.d.ts +1 -0
- package/dist/core/rebase/types.d.ts.map +1 -1
- package/dist/core/rebase/types.js +5 -1
- package/dist/core/rebase/types.js.map +1 -1
- package/dist/core/rebase/utils.d.ts.map +1 -1
- package/dist/core/rebase/utils.js +25 -7
- package/dist/core/rebase/utils.js.map +1 -1
- package/dist/core/tree/delta.d.ts +5 -0
- package/dist/core/tree/delta.d.ts.map +1 -1
- package/dist/core/tree/delta.js.map +1 -1
- package/dist/core/tree/detachedFieldIndex.d.ts +13 -1
- package/dist/core/tree/detachedFieldIndex.d.ts.map +1 -1
- package/dist/core/tree/detachedFieldIndex.js +14 -1
- package/dist/core/tree/detachedFieldIndex.js.map +1 -1
- package/dist/core/tree/detachedFieldIndexCodecs.d.ts.map +1 -1
- package/dist/core/tree/detachedFieldIndexCodecs.js +6 -4
- package/dist/core/tree/detachedFieldIndexCodecs.js.map +1 -1
- package/dist/core/tree/detachedFieldIndexTypes.d.ts +4 -0
- package/dist/core/tree/detachedFieldIndexTypes.d.ts.map +1 -1
- package/dist/core/tree/detachedFieldIndexTypes.js.map +1 -1
- package/dist/core/tree/index.d.ts +2 -2
- package/dist/core/tree/index.d.ts.map +1 -1
- package/dist/core/tree/index.js +4 -3
- package/dist/core/tree/index.js.map +1 -1
- package/dist/core/tree/pathTree.d.ts +11 -3
- package/dist/core/tree/pathTree.d.ts.map +1 -1
- package/dist/core/tree/pathTree.js +14 -2
- package/dist/core/tree/pathTree.js.map +1 -1
- package/dist/core/tree/visitDelta.d.ts.map +1 -1
- package/dist/core/tree/visitDelta.js +17 -13
- package/dist/core/tree/visitDelta.js.map +1 -1
- package/dist/extensibleUnionNode.d.ts +97 -0
- package/dist/extensibleUnionNode.d.ts.map +1 -0
- package/dist/{extensibleSchemaUnion.js → extensibleUnionNode.js} +28 -18
- package/dist/extensibleUnionNode.js.map +1 -0
- package/dist/feature-libraries/changeAtomIdBTree.d.ts +3 -2
- package/dist/feature-libraries/changeAtomIdBTree.d.ts.map +1 -1
- package/dist/feature-libraries/changeAtomIdBTree.js +15 -2
- package/dist/feature-libraries/changeAtomIdBTree.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/codecs.d.ts +1 -1
- package/dist/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/codecs.js +4 -4
- package/dist/feature-libraries/chunked-forest/codec/codecs.js.map +1 -1
- package/dist/feature-libraries/default-schema/defaultEditBuilder.d.ts +92 -44
- package/dist/feature-libraries/default-schema/defaultEditBuilder.d.ts.map +1 -1
- package/dist/feature-libraries/default-schema/defaultEditBuilder.js +220 -70
- package/dist/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
- package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
- package/dist/feature-libraries/default-schema/defaultFieldKinds.js +12 -2
- package/dist/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
- package/dist/feature-libraries/default-schema/index.d.ts +2 -1
- package/dist/feature-libraries/default-schema/index.d.ts.map +1 -1
- package/dist/feature-libraries/default-schema/index.js +4 -2
- package/dist/feature-libraries/default-schema/index.js.map +1 -1
- package/dist/feature-libraries/default-schema/locationBasedEditBuilder.d.ts +40 -0
- package/dist/feature-libraries/default-schema/locationBasedEditBuilder.d.ts.map +1 -0
- package/dist/feature-libraries/default-schema/locationBasedEditBuilder.js +153 -0
- package/dist/feature-libraries/default-schema/locationBasedEditBuilder.js.map +1 -0
- package/dist/feature-libraries/default-schema/mappedEditBuilder.d.ts +7 -6
- package/dist/feature-libraries/default-schema/mappedEditBuilder.d.ts.map +1 -1
- package/dist/feature-libraries/default-schema/mappedEditBuilder.js +15 -0
- package/dist/feature-libraries/default-schema/mappedEditBuilder.js.map +1 -1
- package/dist/feature-libraries/deltaUtils.d.ts +1 -0
- package/dist/feature-libraries/deltaUtils.d.ts.map +1 -1
- package/dist/feature-libraries/deltaUtils.js +6 -1
- package/dist/feature-libraries/deltaUtils.js.map +1 -1
- package/dist/feature-libraries/flex-tree/context.d.ts +9 -0
- package/dist/feature-libraries/flex-tree/context.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/context.js +6 -0
- package/dist/feature-libraries/flex-tree/context.js.map +1 -1
- package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts +6 -6
- 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/lazyField.d.ts +8 -7
- package/dist/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyField.js +39 -8
- package/dist/feature-libraries/flex-tree/lazyField.js.map +1 -1
- package/dist/feature-libraries/forest-summary/codec.d.ts.map +1 -1
- package/dist/feature-libraries/forest-summary/codec.js +7 -1
- package/dist/feature-libraries/forest-summary/codec.js.map +1 -1
- package/dist/feature-libraries/forest-summary/formatCommon.d.ts +3 -3
- package/dist/feature-libraries/forest-summary/formatCommon.d.ts.map +1 -1
- package/dist/feature-libraries/forest-summary/formatCommon.js.map +1 -1
- package/dist/feature-libraries/forest-summary/formatV1.d.ts +2 -3
- package/dist/feature-libraries/forest-summary/formatV1.d.ts.map +1 -1
- package/dist/feature-libraries/forest-summary/formatV1.js +1 -2
- package/dist/feature-libraries/forest-summary/formatV1.js.map +1 -1
- package/dist/feature-libraries/forest-summary/formatV2.d.ts +2 -3
- package/dist/feature-libraries/forest-summary/formatV2.d.ts.map +1 -1
- package/dist/feature-libraries/forest-summary/formatV2.js +1 -2
- package/dist/feature-libraries/forest-summary/formatV2.js.map +1 -1
- package/dist/feature-libraries/index.d.ts +3 -3
- package/dist/feature-libraries/index.d.ts.map +1 -1
- package/dist/feature-libraries/index.js +8 -4
- 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 +2 -2
- package/dist/feature-libraries/mitigatedChangeFamily.js.map +1 -1
- package/dist/feature-libraries/modular-schema/crossFieldQueries.d.ts +100 -24
- package/dist/feature-libraries/modular-schema/crossFieldQueries.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/crossFieldQueries.js +8 -12
- package/dist/feature-libraries/modular-schema/crossFieldQueries.js.map +1 -1
- package/dist/feature-libraries/modular-schema/fieldChangeHandler.d.ts +85 -51
- 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/genericFieldKind.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/genericFieldKind.js +4 -9
- package/dist/feature-libraries/modular-schema/genericFieldKind.js.map +1 -1
- package/dist/feature-libraries/modular-schema/index.d.ts +3 -3
- package/dist/feature-libraries/modular-schema/index.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/index.js +2 -3
- package/dist/feature-libraries/modular-schema/index.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeCodecV1.d.ts +20 -24
- package/dist/feature-libraries/modular-schema/modularChangeCodecV1.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeCodecV1.js +277 -159
- package/dist/feature-libraries/modular-schema/modularChangeCodecV1.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeCodecV2.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeCodecV2.js +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeCodecV2.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeCodecV3.d.ts +15 -0
- package/dist/feature-libraries/modular-schema/modularChangeCodecV3.d.ts.map +1 -0
- package/dist/feature-libraries/modular-schema/modularChangeCodecV3.js +296 -0
- package/dist/feature-libraries/modular-schema/modularChangeCodecV3.js.map +1 -0
- package/dist/feature-libraries/modular-schema/modularChangeCodecs.d.ts +1 -0
- package/dist/feature-libraries/modular-schema/modularChangeCodecs.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeCodecs.js +8 -0
- package/dist/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts +56 -22
- package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFamily.js +1390 -462
- package/dist/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFormatV1.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFormatV1.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFormatV2.d.ts +1 -2
- package/dist/feature-libraries/modular-schema/modularChangeFormatV2.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFormatV2.js +3 -3
- package/dist/feature-libraries/modular-schema/modularChangeFormatV2.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFormatV3.d.ts +74 -0
- package/dist/feature-libraries/modular-schema/modularChangeFormatV3.d.ts.map +1 -0
- package/dist/feature-libraries/modular-schema/modularChangeFormatV3.js +35 -0
- package/dist/feature-libraries/modular-schema/modularChangeFormatV3.js.map +1 -0
- package/dist/feature-libraries/modular-schema/modularChangeTypes.d.ts +49 -10
- package/dist/feature-libraries/modular-schema/modularChangeTypes.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeTypes.js +3 -3
- package/dist/feature-libraries/modular-schema/modularChangeTypes.js.map +1 -1
- package/dist/feature-libraries/optional-field/optionalField.d.ts +13 -32
- package/dist/feature-libraries/optional-field/optionalField.d.ts.map +1 -1
- package/dist/feature-libraries/optional-field/optionalField.js +257 -446
- package/dist/feature-libraries/optional-field/optionalField.js.map +1 -1
- package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV3.d.ts +23 -0
- package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV3.d.ts.map +1 -0
- package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV3.js +31 -0
- package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV3.js.map +1 -0
- package/dist/feature-libraries/optional-field/optionalFieldChangeTypes.d.ts +31 -31
- package/dist/feature-libraries/optional-field/optionalFieldChangeTypes.d.ts.map +1 -1
- package/dist/feature-libraries/optional-field/optionalFieldChangeTypes.js.map +1 -1
- package/dist/feature-libraries/optional-field/optionalFieldCodecV2.d.ts +1 -1
- package/dist/feature-libraries/optional-field/optionalFieldCodecV2.d.ts.map +1 -1
- package/dist/feature-libraries/optional-field/optionalFieldCodecV2.js +57 -28
- package/dist/feature-libraries/optional-field/optionalFieldCodecV2.js.map +1 -1
- package/dist/feature-libraries/optional-field/optionalFieldCodecV3.d.ts +12 -0
- package/dist/feature-libraries/optional-field/optionalFieldCodecV3.d.ts.map +1 -0
- package/dist/feature-libraries/optional-field/optionalFieldCodecV3.js +57 -0
- package/dist/feature-libraries/optional-field/optionalFieldCodecV3.js.map +1 -0
- package/dist/feature-libraries/optional-field/optionalFieldCodecs.d.ts.map +1 -1
- package/dist/feature-libraries/optional-field/optionalFieldCodecs.js +5 -1
- package/dist/feature-libraries/optional-field/optionalFieldCodecs.js.map +1 -1
- package/dist/feature-libraries/optional-field/requiredField.d.ts +3 -2
- package/dist/feature-libraries/optional-field/requiredField.d.ts.map +1 -1
- package/dist/feature-libraries/optional-field/requiredField.js +6 -1
- package/dist/feature-libraries/optional-field/requiredField.js.map +1 -1
- package/dist/feature-libraries/schema-index/codec.d.ts.map +1 -1
- package/dist/feature-libraries/schema-index/codec.js +6 -4
- package/dist/feature-libraries/schema-index/codec.js.map +1 -1
- package/dist/feature-libraries/sequence-field/compose.d.ts +6 -7
- package/dist/feature-libraries/sequence-field/compose.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/compose.js +81 -259
- package/dist/feature-libraries/sequence-field/compose.js.map +1 -1
- package/dist/feature-libraries/sequence-field/helperTypes.d.ts +14 -10
- package/dist/feature-libraries/sequence-field/helperTypes.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/helperTypes.js.map +1 -1
- package/dist/feature-libraries/sequence-field/invert.d.ts +3 -3
- package/dist/feature-libraries/sequence-field/invert.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/invert.js +65 -167
- package/dist/feature-libraries/sequence-field/invert.js.map +1 -1
- package/dist/feature-libraries/sequence-field/markQueue.d.ts +2 -2
- package/dist/feature-libraries/sequence-field/markQueue.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/markQueue.js.map +1 -1
- package/dist/feature-libraries/sequence-field/moveEffectTable.d.ts +4 -56
- package/dist/feature-libraries/sequence-field/moveEffectTable.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/moveEffectTable.js +7 -90
- package/dist/feature-libraries/sequence-field/moveEffectTable.js.map +1 -1
- package/dist/feature-libraries/sequence-field/rebase.d.ts +3 -3
- package/dist/feature-libraries/sequence-field/rebase.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/rebase.js +109 -116
- package/dist/feature-libraries/sequence-field/rebase.js.map +1 -1
- package/dist/feature-libraries/sequence-field/replaceRevisions.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/replaceRevisions.js +19 -32
- package/dist/feature-libraries/sequence-field/replaceRevisions.js.map +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldChangeHandler.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldChangeHandler.js +1 -2
- package/dist/feature-libraries/sequence-field/sequenceFieldChangeHandler.js.map +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldCodecV2.d.ts +22 -4
- package/dist/feature-libraries/sequence-field/sequenceFieldCodecV2.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldCodecV2.js +388 -187
- package/dist/feature-libraries/sequence-field/sequenceFieldCodecV2.js.map +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldCodecV3.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldCodecV3.js +20 -62
- package/dist/feature-libraries/sequence-field/sequenceFieldCodecV3.js.map +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldEditor.d.ts +2 -2
- package/dist/feature-libraries/sequence-field/sequenceFieldEditor.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldEditor.js +13 -13
- package/dist/feature-libraries/sequence-field/sequenceFieldEditor.js.map +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldToDelta.d.ts +3 -2
- package/dist/feature-libraries/sequence-field/sequenceFieldToDelta.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldToDelta.js +16 -111
- package/dist/feature-libraries/sequence-field/sequenceFieldToDelta.js.map +1 -1
- package/dist/feature-libraries/sequence-field/types.d.ts +37 -74
- package/dist/feature-libraries/sequence-field/types.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/types.js.map +1 -1
- package/dist/feature-libraries/sequence-field/utils.d.ts +20 -25
- package/dist/feature-libraries/sequence-field/utils.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/utils.js +159 -320
- package/dist/feature-libraries/sequence-field/utils.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/dist/legacy.d.ts +1 -0
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.d.ts.map +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/shared-tree/independentView.d.ts.map +1 -1
- package/dist/shared-tree/independentView.js +1 -1
- package/dist/shared-tree/independentView.js.map +1 -1
- package/dist/shared-tree/index.d.ts +1 -1
- package/dist/shared-tree/index.d.ts.map +1 -1
- package/dist/shared-tree/index.js.map +1 -1
- package/dist/shared-tree/schematizeTree.d.ts +4 -4
- package/dist/shared-tree/schematizeTree.d.ts.map +1 -1
- package/dist/shared-tree/schematizeTree.js +2 -1
- package/dist/shared-tree/schematizeTree.js.map +1 -1
- package/dist/shared-tree/schematizingTreeView.d.ts +1 -5
- package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/dist/shared-tree/schematizingTreeView.js +21 -35
- package/dist/shared-tree/schematizingTreeView.js.map +1 -1
- package/dist/shared-tree/sharedTree.d.ts +9 -3
- package/dist/shared-tree/sharedTree.d.ts.map +1 -1
- package/dist/shared-tree/sharedTree.js +4 -1
- package/dist/shared-tree/sharedTree.js.map +1 -1
- package/dist/shared-tree/sharedTreeChangeCodecs.d.ts +1 -0
- package/dist/shared-tree/sharedTreeChangeCodecs.d.ts.map +1 -1
- package/dist/shared-tree/sharedTreeChangeCodecs.js +9 -1
- package/dist/shared-tree/sharedTreeChangeCodecs.js.map +1 -1
- package/dist/shared-tree/sharedTreeChangeFamily.d.ts +4 -4
- package/dist/shared-tree/sharedTreeChangeFamily.d.ts.map +1 -1
- package/dist/shared-tree/sharedTreeChangeFamily.js +2 -2
- package/dist/shared-tree/sharedTreeChangeFamily.js.map +1 -1
- package/dist/shared-tree/sharedTreeEditBuilder.d.ts +16 -6
- package/dist/shared-tree/sharedTreeEditBuilder.d.ts.map +1 -1
- package/dist/shared-tree/sharedTreeEditBuilder.js +14 -7
- package/dist/shared-tree/sharedTreeEditBuilder.js.map +1 -1
- package/dist/shared-tree/tree.d.ts +1 -1
- package/dist/shared-tree/tree.js.map +1 -1
- package/dist/shared-tree/treeAlpha.d.ts +1 -1
- package/dist/shared-tree/treeAlpha.js.map +1 -1
- package/dist/shared-tree/treeCheckout.d.ts +13 -11
- package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
- package/dist/shared-tree/treeCheckout.js +58 -10
- package/dist/shared-tree/treeCheckout.js.map +1 -1
- package/dist/shared-tree-core/branch.d.ts +3 -2
- package/dist/shared-tree-core/branch.d.ts.map +1 -1
- package/dist/shared-tree-core/branch.js +4 -3
- package/dist/shared-tree-core/branch.js.map +1 -1
- package/dist/shared-tree-core/editManager.d.ts +2 -2
- package/dist/shared-tree-core/editManager.d.ts.map +1 -1
- package/dist/shared-tree-core/editManager.js +9 -9
- package/dist/shared-tree-core/editManager.js.map +1 -1
- package/dist/shared-tree-core/editManagerCodecs.d.ts +4 -0
- package/dist/shared-tree-core/editManagerCodecs.d.ts.map +1 -1
- package/dist/shared-tree-core/editManagerCodecs.js +10 -2
- package/dist/shared-tree-core/editManagerCodecs.js.map +1 -1
- package/dist/shared-tree-core/editManagerCodecsCommons.d.ts +3 -3
- package/dist/shared-tree-core/editManagerCodecsCommons.d.ts.map +1 -1
- package/dist/shared-tree-core/editManagerCodecsCommons.js +2 -2
- package/dist/shared-tree-core/editManagerCodecsCommons.js.map +1 -1
- package/dist/shared-tree-core/editManagerCodecsV1toV4.d.ts +2 -2
- package/dist/shared-tree-core/editManagerCodecsV1toV4.d.ts.map +1 -1
- package/dist/shared-tree-core/editManagerCodecsV1toV4.js +1 -1
- package/dist/shared-tree-core/editManagerCodecsV1toV4.js.map +1 -1
- package/dist/shared-tree-core/editManagerCodecsVSharedBranches.d.ts +2 -2
- package/dist/shared-tree-core/editManagerCodecsVSharedBranches.d.ts.map +1 -1
- package/dist/shared-tree-core/editManagerCodecsVSharedBranches.js +1 -1
- package/dist/shared-tree-core/editManagerCodecsVSharedBranches.js.map +1 -1
- package/dist/shared-tree-core/editManagerFormatCommons.d.ts +1 -0
- package/dist/shared-tree-core/editManagerFormatCommons.d.ts.map +1 -1
- package/dist/shared-tree-core/editManagerFormatCommons.js +6 -0
- package/dist/shared-tree-core/editManagerFormatCommons.js.map +1 -1
- package/dist/shared-tree-core/editManagerFormatV1toV4.d.ts +2 -2
- package/dist/shared-tree-core/editManagerFormatV1toV4.d.ts.map +1 -1
- package/dist/shared-tree-core/editManagerFormatV1toV4.js +1 -0
- package/dist/shared-tree-core/editManagerFormatV1toV4.js.map +1 -1
- package/dist/shared-tree-core/index.d.ts +2 -2
- package/dist/shared-tree-core/index.d.ts.map +1 -1
- package/dist/shared-tree-core/index.js +3 -1
- package/dist/shared-tree-core/index.js.map +1 -1
- package/dist/shared-tree-core/messageCodecV1ToV4.d.ts +1 -1
- package/dist/shared-tree-core/messageCodecV1ToV4.d.ts.map +1 -1
- package/dist/shared-tree-core/messageCodecV1ToV4.js.map +1 -1
- package/dist/shared-tree-core/messageCodecs.d.ts +4 -0
- package/dist/shared-tree-core/messageCodecs.d.ts.map +1 -1
- package/dist/shared-tree-core/messageCodecs.js +12 -4
- package/dist/shared-tree-core/messageCodecs.js.map +1 -1
- package/dist/shared-tree-core/messageFormat.d.ts +1 -0
- package/dist/shared-tree-core/messageFormat.d.ts.map +1 -1
- package/dist/shared-tree-core/messageFormat.js +6 -0
- package/dist/shared-tree-core/messageFormat.js.map +1 -1
- package/dist/shared-tree-core/messageFormatV1ToV4.d.ts +2 -2
- package/dist/shared-tree-core/messageFormatV1ToV4.d.ts.map +1 -1
- package/dist/shared-tree-core/messageFormatV1ToV4.js +1 -0
- package/dist/shared-tree-core/messageFormatV1ToV4.js.map +1 -1
- package/dist/shared-tree-core/sharedTreeCore.d.ts +1 -0
- package/dist/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
- package/dist/shared-tree-core/sharedTreeCore.js +1 -1
- package/dist/shared-tree-core/sharedTreeCore.js.map +1 -1
- package/dist/simple-tree/api/index.d.ts +1 -1
- package/dist/simple-tree/api/index.d.ts.map +1 -1
- package/dist/simple-tree/api/index.js +2 -2
- package/dist/simple-tree/api/index.js.map +1 -1
- package/dist/simple-tree/api/snapshotCompatibilityChecker.d.ts +148 -29
- package/dist/simple-tree/api/snapshotCompatibilityChecker.d.ts.map +1 -1
- package/dist/simple-tree/api/snapshotCompatibilityChecker.js +180 -99
- package/dist/simple-tree/api/snapshotCompatibilityChecker.js.map +1 -1
- package/dist/simple-tree/api/tree.d.ts +1 -1
- package/dist/simple-tree/api/tree.js.map +1 -1
- package/dist/simple-tree/api/treeBeta.d.ts +1 -1
- package/dist/simple-tree/api/treeBeta.js.map +1 -1
- package/dist/simple-tree/core/allowedTypes.d.ts +1 -1
- package/dist/simple-tree/core/allowedTypes.js.map +1 -1
- package/dist/simple-tree/core/unhydratedFlexTree.d.ts +17 -12
- package/dist/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -1
- package/dist/simple-tree/core/unhydratedFlexTree.js +88 -8
- package/dist/simple-tree/core/unhydratedFlexTree.js.map +1 -1
- package/dist/simple-tree/fieldSchema.d.ts +4 -4
- package/dist/simple-tree/fieldSchema.d.ts.map +1 -1
- package/dist/simple-tree/fieldSchema.js.map +1 -1
- package/dist/simple-tree/index.d.ts +3 -3
- package/dist/simple-tree/index.d.ts.map +1 -1
- package/dist/simple-tree/index.js +3 -3
- package/dist/simple-tree/index.js.map +1 -1
- package/dist/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/array/arrayNode.js +9 -16
- package/dist/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
- package/dist/simple-tree/node-kinds/common.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/common.js +1 -1
- package/dist/simple-tree/node-kinds/common.js.map +1 -1
- package/dist/simple-tree/node-kinds/map/mapNode.js +2 -2
- package/dist/simple-tree/node-kinds/map/mapNode.js.map +1 -1
- package/dist/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/object/objectNode.js +19 -19
- package/dist/simple-tree/node-kinds/object/objectNode.js.map +1 -1
- package/dist/simple-tree/node-kinds/record/recordNode.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/record/recordNode.js +4 -2
- package/dist/simple-tree/node-kinds/record/recordNode.js.map +1 -1
- package/dist/simple-tree/prepareForInsertion.d.ts +54 -47
- package/dist/simple-tree/prepareForInsertion.d.ts.map +1 -1
- package/dist/simple-tree/prepareForInsertion.js +183 -125
- package/dist/simple-tree/prepareForInsertion.js.map +1 -1
- package/dist/simple-tree/unhydratedFlexTreeFromInsertable.d.ts +8 -3
- package/dist/simple-tree/unhydratedFlexTreeFromInsertable.d.ts.map +1 -1
- package/dist/simple-tree/unhydratedFlexTreeFromInsertable.js +59 -19
- package/dist/simple-tree/unhydratedFlexTreeFromInsertable.js.map +1 -1
- package/dist/text/textDomainFormatted.d.ts +3 -3
- package/dist/text/textDomainFormatted.d.ts.map +1 -1
- package/dist/text/textDomainFormatted.js +48 -32
- package/dist/text/textDomainFormatted.js.map +1 -1
- package/dist/treeFactory.d.ts.map +1 -1
- package/dist/treeFactory.js +12 -2
- package/dist/treeFactory.js.map +1 -1
- package/dist/util/bTreeUtils.d.ts.map +1 -1
- package/dist/util/bTreeUtils.js +6 -6
- package/dist/util/bTreeUtils.js.map +1 -1
- package/dist/util/index.d.ts +1 -1
- package/dist/util/index.d.ts.map +1 -1
- package/dist/util/index.js +2 -1
- package/dist/util/index.js.map +1 -1
- package/dist/util/rangeMap.d.ts +23 -11
- package/dist/util/rangeMap.d.ts.map +1 -1
- package/dist/util/rangeMap.js +42 -10
- package/dist/util/rangeMap.js.map +1 -1
- package/lib/alpha.d.ts +3 -3
- package/lib/beta.d.ts +1 -0
- package/lib/codec/codec.d.ts +3 -39
- package/lib/codec/codec.d.ts.map +1 -1
- package/lib/codec/codec.js +4 -47
- package/lib/codec/codec.js.map +1 -1
- package/lib/codec/index.d.ts +1 -1
- package/lib/codec/index.d.ts.map +1 -1
- package/lib/codec/index.js +1 -1
- package/lib/codec/index.js.map +1 -1
- package/lib/codec/versioned/codec.d.ts +20 -7
- package/lib/codec/versioned/codec.d.ts.map +1 -1
- package/lib/codec/versioned/codec.js +59 -33
- package/lib/codec/versioned/codec.js.map +1 -1
- package/lib/core/change-family/changeFamily.d.ts +4 -1
- 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/index.d.ts +1 -1
- package/lib/core/change-family/index.d.ts.map +1 -1
- package/lib/core/change-family/index.js.map +1 -1
- package/lib/core/index.d.ts +3 -3
- package/lib/core/index.d.ts.map +1 -1
- package/lib/core/index.js +2 -2
- package/lib/core/index.js.map +1 -1
- package/lib/core/rebase/changeRebaser.d.ts +6 -1
- package/lib/core/rebase/changeRebaser.d.ts.map +1 -1
- package/lib/core/rebase/changeRebaser.js.map +1 -1
- package/lib/core/rebase/index.d.ts +1 -1
- package/lib/core/rebase/index.d.ts.map +1 -1
- package/lib/core/rebase/index.js +1 -1
- package/lib/core/rebase/index.js.map +1 -1
- package/lib/core/rebase/types.d.ts +1 -0
- package/lib/core/rebase/types.d.ts.map +1 -1
- package/lib/core/rebase/types.js +3 -0
- package/lib/core/rebase/types.js.map +1 -1
- package/lib/core/rebase/utils.d.ts.map +1 -1
- package/lib/core/rebase/utils.js +25 -7
- package/lib/core/rebase/utils.js.map +1 -1
- package/lib/core/tree/delta.d.ts +5 -0
- package/lib/core/tree/delta.d.ts.map +1 -1
- package/lib/core/tree/delta.js.map +1 -1
- package/lib/core/tree/detachedFieldIndex.d.ts +13 -1
- package/lib/core/tree/detachedFieldIndex.d.ts.map +1 -1
- package/lib/core/tree/detachedFieldIndex.js +15 -2
- package/lib/core/tree/detachedFieldIndex.js.map +1 -1
- package/lib/core/tree/detachedFieldIndexCodecs.d.ts.map +1 -1
- package/lib/core/tree/detachedFieldIndexCodecs.js +6 -4
- package/lib/core/tree/detachedFieldIndexCodecs.js.map +1 -1
- package/lib/core/tree/detachedFieldIndexTypes.d.ts +4 -0
- package/lib/core/tree/detachedFieldIndexTypes.d.ts.map +1 -1
- package/lib/core/tree/detachedFieldIndexTypes.js.map +1 -1
- package/lib/core/tree/index.d.ts +2 -2
- package/lib/core/tree/index.d.ts.map +1 -1
- package/lib/core/tree/index.js +1 -1
- package/lib/core/tree/index.js.map +1 -1
- package/lib/core/tree/pathTree.d.ts +11 -3
- package/lib/core/tree/pathTree.d.ts.map +1 -1
- package/lib/core/tree/pathTree.js +12 -1
- package/lib/core/tree/pathTree.js.map +1 -1
- package/lib/core/tree/visitDelta.d.ts.map +1 -1
- package/lib/core/tree/visitDelta.js +17 -13
- package/lib/core/tree/visitDelta.js.map +1 -1
- package/lib/extensibleUnionNode.d.ts +97 -0
- package/lib/extensibleUnionNode.d.ts.map +1 -0
- package/lib/{extensibleSchemaUnion.js → extensibleUnionNode.js} +28 -18
- package/lib/extensibleUnionNode.js.map +1 -0
- package/lib/feature-libraries/changeAtomIdBTree.d.ts +3 -2
- package/lib/feature-libraries/changeAtomIdBTree.d.ts.map +1 -1
- package/lib/feature-libraries/changeAtomIdBTree.js +15 -3
- package/lib/feature-libraries/changeAtomIdBTree.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/codecs.d.ts +1 -1
- package/lib/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/codecs.js +5 -5
- package/lib/feature-libraries/chunked-forest/codec/codecs.js.map +1 -1
- package/lib/feature-libraries/default-schema/defaultEditBuilder.d.ts +92 -44
- package/lib/feature-libraries/default-schema/defaultEditBuilder.d.ts.map +1 -1
- package/lib/feature-libraries/default-schema/defaultEditBuilder.js +217 -69
- package/lib/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
- package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
- package/lib/feature-libraries/default-schema/defaultFieldKinds.js +12 -2
- package/lib/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
- package/lib/feature-libraries/default-schema/index.d.ts +2 -1
- package/lib/feature-libraries/default-schema/index.d.ts.map +1 -1
- package/lib/feature-libraries/default-schema/index.js +2 -1
- package/lib/feature-libraries/default-schema/index.js.map +1 -1
- package/lib/feature-libraries/default-schema/locationBasedEditBuilder.d.ts +40 -0
- package/lib/feature-libraries/default-schema/locationBasedEditBuilder.d.ts.map +1 -0
- package/lib/feature-libraries/default-schema/locationBasedEditBuilder.js +149 -0
- package/lib/feature-libraries/default-schema/locationBasedEditBuilder.js.map +1 -0
- package/lib/feature-libraries/default-schema/mappedEditBuilder.d.ts +7 -6
- package/lib/feature-libraries/default-schema/mappedEditBuilder.d.ts.map +1 -1
- package/lib/feature-libraries/default-schema/mappedEditBuilder.js +15 -0
- package/lib/feature-libraries/default-schema/mappedEditBuilder.js.map +1 -1
- package/lib/feature-libraries/deltaUtils.d.ts +1 -0
- package/lib/feature-libraries/deltaUtils.d.ts.map +1 -1
- package/lib/feature-libraries/deltaUtils.js +5 -1
- package/lib/feature-libraries/deltaUtils.js.map +1 -1
- package/lib/feature-libraries/flex-tree/context.d.ts +9 -0
- package/lib/feature-libraries/flex-tree/context.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/context.js +6 -0
- package/lib/feature-libraries/flex-tree/context.js.map +1 -1
- package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts +6 -6
- 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/lazyField.d.ts +8 -7
- package/lib/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyField.js +40 -9
- package/lib/feature-libraries/flex-tree/lazyField.js.map +1 -1
- package/lib/feature-libraries/forest-summary/codec.d.ts.map +1 -1
- package/lib/feature-libraries/forest-summary/codec.js +8 -2
- package/lib/feature-libraries/forest-summary/codec.js.map +1 -1
- package/lib/feature-libraries/forest-summary/formatCommon.d.ts +3 -3
- package/lib/feature-libraries/forest-summary/formatCommon.d.ts.map +1 -1
- package/lib/feature-libraries/forest-summary/formatCommon.js.map +1 -1
- package/lib/feature-libraries/forest-summary/formatV1.d.ts +2 -3
- package/lib/feature-libraries/forest-summary/formatV1.d.ts.map +1 -1
- package/lib/feature-libraries/forest-summary/formatV1.js +1 -2
- package/lib/feature-libraries/forest-summary/formatV1.js.map +1 -1
- package/lib/feature-libraries/forest-summary/formatV2.d.ts +2 -3
- package/lib/feature-libraries/forest-summary/formatV2.d.ts.map +1 -1
- package/lib/feature-libraries/forest-summary/formatV2.js +1 -2
- package/lib/feature-libraries/forest-summary/formatV2.js.map +1 -1
- package/lib/feature-libraries/index.d.ts +3 -3
- package/lib/feature-libraries/index.d.ts.map +1 -1
- package/lib/feature-libraries/index.js +3 -3
- 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 +2 -2
- package/lib/feature-libraries/mitigatedChangeFamily.js.map +1 -1
- package/lib/feature-libraries/modular-schema/crossFieldQueries.d.ts +100 -24
- package/lib/feature-libraries/modular-schema/crossFieldQueries.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/crossFieldQueries.js +7 -10
- package/lib/feature-libraries/modular-schema/crossFieldQueries.js.map +1 -1
- package/lib/feature-libraries/modular-schema/fieldChangeHandler.d.ts +85 -51
- 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/genericFieldKind.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/genericFieldKind.js +4 -9
- package/lib/feature-libraries/modular-schema/genericFieldKind.js.map +1 -1
- package/lib/feature-libraries/modular-schema/index.d.ts +3 -3
- package/lib/feature-libraries/modular-schema/index.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/index.js +1 -1
- package/lib/feature-libraries/modular-schema/index.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeCodecV1.d.ts +20 -24
- package/lib/feature-libraries/modular-schema/modularChangeCodecV1.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeCodecV1.js +268 -145
- package/lib/feature-libraries/modular-schema/modularChangeCodecV1.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeCodecV2.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeCodecV2.js +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeCodecV2.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeCodecV3.d.ts +15 -0
- package/lib/feature-libraries/modular-schema/modularChangeCodecV3.d.ts.map +1 -0
- package/lib/feature-libraries/modular-schema/modularChangeCodecV3.js +292 -0
- package/lib/feature-libraries/modular-schema/modularChangeCodecV3.js.map +1 -0
- package/lib/feature-libraries/modular-schema/modularChangeCodecs.d.ts +1 -0
- package/lib/feature-libraries/modular-schema/modularChangeCodecs.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeCodecs.js +8 -0
- package/lib/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts +56 -22
- package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFamily.js +1387 -468
- package/lib/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFormatV1.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFormatV1.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFormatV2.d.ts +1 -2
- package/lib/feature-libraries/modular-schema/modularChangeFormatV2.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFormatV2.js +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFormatV2.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFormatV3.d.ts +74 -0
- package/lib/feature-libraries/modular-schema/modularChangeFormatV3.d.ts.map +1 -0
- package/lib/feature-libraries/modular-schema/modularChangeFormatV3.js +32 -0
- package/lib/feature-libraries/modular-schema/modularChangeFormatV3.js.map +1 -0
- package/lib/feature-libraries/modular-schema/modularChangeTypes.d.ts +49 -10
- package/lib/feature-libraries/modular-schema/modularChangeTypes.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeTypes.js +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeTypes.js.map +1 -1
- package/lib/feature-libraries/optional-field/optionalField.d.ts +13 -32
- package/lib/feature-libraries/optional-field/optionalField.d.ts.map +1 -1
- package/lib/feature-libraries/optional-field/optionalField.js +254 -442
- package/lib/feature-libraries/optional-field/optionalField.js.map +1 -1
- package/lib/feature-libraries/optional-field/optionalFieldChangeFormatV3.d.ts +23 -0
- package/lib/feature-libraries/optional-field/optionalFieldChangeFormatV3.d.ts.map +1 -0
- package/lib/feature-libraries/optional-field/optionalFieldChangeFormatV3.js +27 -0
- package/lib/feature-libraries/optional-field/optionalFieldChangeFormatV3.js.map +1 -0
- package/lib/feature-libraries/optional-field/optionalFieldChangeTypes.d.ts +31 -31
- package/lib/feature-libraries/optional-field/optionalFieldChangeTypes.d.ts.map +1 -1
- package/lib/feature-libraries/optional-field/optionalFieldChangeTypes.js.map +1 -1
- package/lib/feature-libraries/optional-field/optionalFieldCodecV2.d.ts +1 -1
- package/lib/feature-libraries/optional-field/optionalFieldCodecV2.d.ts.map +1 -1
- package/lib/feature-libraries/optional-field/optionalFieldCodecV2.js +55 -26
- package/lib/feature-libraries/optional-field/optionalFieldCodecV2.js.map +1 -1
- package/lib/feature-libraries/optional-field/optionalFieldCodecV3.d.ts +12 -0
- package/lib/feature-libraries/optional-field/optionalFieldCodecV3.d.ts.map +1 -0
- package/lib/feature-libraries/optional-field/optionalFieldCodecV3.js +53 -0
- package/lib/feature-libraries/optional-field/optionalFieldCodecV3.js.map +1 -0
- package/lib/feature-libraries/optional-field/optionalFieldCodecs.d.ts.map +1 -1
- package/lib/feature-libraries/optional-field/optionalFieldCodecs.js +5 -1
- package/lib/feature-libraries/optional-field/optionalFieldCodecs.js.map +1 -1
- package/lib/feature-libraries/optional-field/requiredField.d.ts +3 -2
- package/lib/feature-libraries/optional-field/requiredField.d.ts.map +1 -1
- package/lib/feature-libraries/optional-field/requiredField.js +5 -1
- package/lib/feature-libraries/optional-field/requiredField.js.map +1 -1
- package/lib/feature-libraries/schema-index/codec.d.ts.map +1 -1
- package/lib/feature-libraries/schema-index/codec.js +6 -4
- package/lib/feature-libraries/schema-index/codec.js.map +1 -1
- package/lib/feature-libraries/sequence-field/compose.d.ts +6 -7
- package/lib/feature-libraries/sequence-field/compose.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/compose.js +83 -261
- package/lib/feature-libraries/sequence-field/compose.js.map +1 -1
- package/lib/feature-libraries/sequence-field/helperTypes.d.ts +14 -10
- package/lib/feature-libraries/sequence-field/helperTypes.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/helperTypes.js.map +1 -1
- package/lib/feature-libraries/sequence-field/invert.d.ts +3 -3
- package/lib/feature-libraries/sequence-field/invert.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/invert.js +67 -169
- package/lib/feature-libraries/sequence-field/invert.js.map +1 -1
- package/lib/feature-libraries/sequence-field/markQueue.d.ts +2 -2
- package/lib/feature-libraries/sequence-field/markQueue.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/markQueue.js.map +1 -1
- package/lib/feature-libraries/sequence-field/moveEffectTable.d.ts +4 -56
- package/lib/feature-libraries/sequence-field/moveEffectTable.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/moveEffectTable.js +6 -84
- package/lib/feature-libraries/sequence-field/moveEffectTable.js.map +1 -1
- package/lib/feature-libraries/sequence-field/rebase.d.ts +3 -3
- package/lib/feature-libraries/sequence-field/rebase.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/rebase.js +111 -118
- package/lib/feature-libraries/sequence-field/rebase.js.map +1 -1
- package/lib/feature-libraries/sequence-field/replaceRevisions.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/replaceRevisions.js +19 -32
- package/lib/feature-libraries/sequence-field/replaceRevisions.js.map +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldChangeHandler.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldChangeHandler.js +2 -3
- package/lib/feature-libraries/sequence-field/sequenceFieldChangeHandler.js.map +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldCodecV2.d.ts +22 -4
- package/lib/feature-libraries/sequence-field/sequenceFieldCodecV2.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldCodecV2.js +379 -182
- package/lib/feature-libraries/sequence-field/sequenceFieldCodecV2.js.map +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldCodecV3.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldCodecV3.js +21 -63
- package/lib/feature-libraries/sequence-field/sequenceFieldCodecV3.js.map +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldEditor.d.ts +2 -2
- package/lib/feature-libraries/sequence-field/sequenceFieldEditor.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldEditor.js +13 -13
- package/lib/feature-libraries/sequence-field/sequenceFieldEditor.js.map +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldToDelta.d.ts +3 -2
- package/lib/feature-libraries/sequence-field/sequenceFieldToDelta.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldToDelta.js +16 -111
- package/lib/feature-libraries/sequence-field/sequenceFieldToDelta.js.map +1 -1
- package/lib/feature-libraries/sequence-field/types.d.ts +37 -74
- package/lib/feature-libraries/sequence-field/types.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/types.js.map +1 -1
- package/lib/feature-libraries/sequence-field/utils.d.ts +20 -25
- package/lib/feature-libraries/sequence-field/utils.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/utils.js +155 -313
- package/lib/feature-libraries/sequence-field/utils.js.map +1 -1
- package/lib/index.d.ts +2 -2
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +2 -2
- package/lib/index.js.map +1 -1
- package/lib/legacy.d.ts +1 -0
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.d.ts.map +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/shared-tree/independentView.d.ts.map +1 -1
- package/lib/shared-tree/independentView.js +1 -1
- package/lib/shared-tree/independentView.js.map +1 -1
- package/lib/shared-tree/index.d.ts +1 -1
- package/lib/shared-tree/index.d.ts.map +1 -1
- package/lib/shared-tree/index.js.map +1 -1
- package/lib/shared-tree/schematizeTree.d.ts +4 -4
- package/lib/shared-tree/schematizeTree.d.ts.map +1 -1
- package/lib/shared-tree/schematizeTree.js +3 -2
- package/lib/shared-tree/schematizeTree.js.map +1 -1
- package/lib/shared-tree/schematizingTreeView.d.ts +1 -5
- package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/lib/shared-tree/schematizingTreeView.js +24 -38
- package/lib/shared-tree/schematizingTreeView.js.map +1 -1
- package/lib/shared-tree/sharedTree.d.ts +9 -3
- package/lib/shared-tree/sharedTree.d.ts.map +1 -1
- package/lib/shared-tree/sharedTree.js +4 -1
- package/lib/shared-tree/sharedTree.js.map +1 -1
- package/lib/shared-tree/sharedTreeChangeCodecs.d.ts +1 -0
- package/lib/shared-tree/sharedTreeChangeCodecs.d.ts.map +1 -1
- package/lib/shared-tree/sharedTreeChangeCodecs.js +9 -1
- package/lib/shared-tree/sharedTreeChangeCodecs.js.map +1 -1
- package/lib/shared-tree/sharedTreeChangeFamily.d.ts +4 -4
- package/lib/shared-tree/sharedTreeChangeFamily.d.ts.map +1 -1
- package/lib/shared-tree/sharedTreeChangeFamily.js +3 -3
- package/lib/shared-tree/sharedTreeChangeFamily.js.map +1 -1
- package/lib/shared-tree/sharedTreeEditBuilder.d.ts +16 -6
- package/lib/shared-tree/sharedTreeEditBuilder.d.ts.map +1 -1
- package/lib/shared-tree/sharedTreeEditBuilder.js +12 -6
- package/lib/shared-tree/sharedTreeEditBuilder.js.map +1 -1
- package/lib/shared-tree/tree.d.ts +1 -1
- package/lib/shared-tree/tree.js.map +1 -1
- package/lib/shared-tree/treeAlpha.d.ts +1 -1
- package/lib/shared-tree/treeAlpha.js.map +1 -1
- package/lib/shared-tree/treeCheckout.d.ts +13 -11
- package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
- package/lib/shared-tree/treeCheckout.js +61 -13
- package/lib/shared-tree/treeCheckout.js.map +1 -1
- package/lib/shared-tree-core/branch.d.ts +3 -2
- package/lib/shared-tree-core/branch.d.ts.map +1 -1
- package/lib/shared-tree-core/branch.js +4 -3
- package/lib/shared-tree-core/branch.js.map +1 -1
- package/lib/shared-tree-core/editManager.d.ts +2 -2
- package/lib/shared-tree-core/editManager.d.ts.map +1 -1
- package/lib/shared-tree-core/editManager.js +9 -9
- package/lib/shared-tree-core/editManager.js.map +1 -1
- package/lib/shared-tree-core/editManagerCodecs.d.ts +4 -0
- package/lib/shared-tree-core/editManagerCodecs.d.ts.map +1 -1
- package/lib/shared-tree-core/editManagerCodecs.js +8 -1
- package/lib/shared-tree-core/editManagerCodecs.js.map +1 -1
- package/lib/shared-tree-core/editManagerCodecsCommons.d.ts +3 -3
- package/lib/shared-tree-core/editManagerCodecsCommons.d.ts.map +1 -1
- package/lib/shared-tree-core/editManagerCodecsCommons.js +2 -2
- package/lib/shared-tree-core/editManagerCodecsCommons.js.map +1 -1
- package/lib/shared-tree-core/editManagerCodecsV1toV4.d.ts +2 -2
- package/lib/shared-tree-core/editManagerCodecsV1toV4.d.ts.map +1 -1
- package/lib/shared-tree-core/editManagerCodecsV1toV4.js +2 -2
- package/lib/shared-tree-core/editManagerCodecsV1toV4.js.map +1 -1
- package/lib/shared-tree-core/editManagerCodecsVSharedBranches.d.ts +2 -2
- package/lib/shared-tree-core/editManagerCodecsVSharedBranches.d.ts.map +1 -1
- package/lib/shared-tree-core/editManagerCodecsVSharedBranches.js +2 -2
- package/lib/shared-tree-core/editManagerCodecsVSharedBranches.js.map +1 -1
- package/lib/shared-tree-core/editManagerFormatCommons.d.ts +1 -0
- package/lib/shared-tree-core/editManagerFormatCommons.d.ts.map +1 -1
- package/lib/shared-tree-core/editManagerFormatCommons.js +6 -0
- package/lib/shared-tree-core/editManagerFormatCommons.js.map +1 -1
- package/lib/shared-tree-core/editManagerFormatV1toV4.d.ts +2 -2
- package/lib/shared-tree-core/editManagerFormatV1toV4.d.ts.map +1 -1
- package/lib/shared-tree-core/editManagerFormatV1toV4.js +1 -0
- package/lib/shared-tree-core/editManagerFormatV1toV4.js.map +1 -1
- package/lib/shared-tree-core/index.d.ts +2 -2
- package/lib/shared-tree-core/index.d.ts.map +1 -1
- package/lib/shared-tree-core/index.js +2 -2
- package/lib/shared-tree-core/index.js.map +1 -1
- package/lib/shared-tree-core/messageCodecV1ToV4.d.ts +1 -1
- package/lib/shared-tree-core/messageCodecV1ToV4.d.ts.map +1 -1
- package/lib/shared-tree-core/messageCodecV1ToV4.js.map +1 -1
- package/lib/shared-tree-core/messageCodecs.d.ts +4 -0
- package/lib/shared-tree-core/messageCodecs.d.ts.map +1 -1
- package/lib/shared-tree-core/messageCodecs.js +10 -3
- package/lib/shared-tree-core/messageCodecs.js.map +1 -1
- package/lib/shared-tree-core/messageFormat.d.ts +1 -0
- package/lib/shared-tree-core/messageFormat.d.ts.map +1 -1
- package/lib/shared-tree-core/messageFormat.js +6 -0
- package/lib/shared-tree-core/messageFormat.js.map +1 -1
- package/lib/shared-tree-core/messageFormatV1ToV4.d.ts +2 -2
- package/lib/shared-tree-core/messageFormatV1ToV4.d.ts.map +1 -1
- package/lib/shared-tree-core/messageFormatV1ToV4.js +1 -0
- package/lib/shared-tree-core/messageFormatV1ToV4.js.map +1 -1
- package/lib/shared-tree-core/sharedTreeCore.d.ts +1 -0
- package/lib/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
- package/lib/shared-tree-core/sharedTreeCore.js +1 -1
- package/lib/shared-tree-core/sharedTreeCore.js.map +1 -1
- package/lib/simple-tree/api/index.d.ts +1 -1
- package/lib/simple-tree/api/index.d.ts.map +1 -1
- package/lib/simple-tree/api/index.js +1 -1
- package/lib/simple-tree/api/index.js.map +1 -1
- package/lib/simple-tree/api/snapshotCompatibilityChecker.d.ts +148 -29
- package/lib/simple-tree/api/snapshotCompatibilityChecker.d.ts.map +1 -1
- package/lib/simple-tree/api/snapshotCompatibilityChecker.js +179 -98
- package/lib/simple-tree/api/snapshotCompatibilityChecker.js.map +1 -1
- package/lib/simple-tree/api/tree.d.ts +1 -1
- package/lib/simple-tree/api/tree.js.map +1 -1
- package/lib/simple-tree/api/treeBeta.d.ts +1 -1
- package/lib/simple-tree/api/treeBeta.js.map +1 -1
- package/lib/simple-tree/core/allowedTypes.d.ts +1 -1
- package/lib/simple-tree/core/allowedTypes.js.map +1 -1
- package/lib/simple-tree/core/unhydratedFlexTree.d.ts +17 -12
- package/lib/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -1
- package/lib/simple-tree/core/unhydratedFlexTree.js +87 -8
- package/lib/simple-tree/core/unhydratedFlexTree.js.map +1 -1
- package/lib/simple-tree/fieldSchema.d.ts +4 -4
- package/lib/simple-tree/fieldSchema.d.ts.map +1 -1
- package/lib/simple-tree/fieldSchema.js.map +1 -1
- package/lib/simple-tree/index.d.ts +3 -3
- package/lib/simple-tree/index.d.ts.map +1 -1
- package/lib/simple-tree/index.js +2 -2
- package/lib/simple-tree/index.js.map +1 -1
- package/lib/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/array/arrayNode.js +11 -18
- package/lib/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
- package/lib/simple-tree/node-kinds/common.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/common.js +2 -2
- package/lib/simple-tree/node-kinds/common.js.map +1 -1
- package/lib/simple-tree/node-kinds/map/mapNode.js +2 -2
- package/lib/simple-tree/node-kinds/map/mapNode.js.map +1 -1
- package/lib/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/object/objectNode.js +20 -20
- package/lib/simple-tree/node-kinds/object/objectNode.js.map +1 -1
- package/lib/simple-tree/node-kinds/record/recordNode.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/record/recordNode.js +4 -2
- package/lib/simple-tree/node-kinds/record/recordNode.js.map +1 -1
- package/lib/simple-tree/prepareForInsertion.d.ts +54 -47
- package/lib/simple-tree/prepareForInsertion.d.ts.map +1 -1
- package/lib/simple-tree/prepareForInsertion.js +184 -125
- package/lib/simple-tree/prepareForInsertion.js.map +1 -1
- package/lib/simple-tree/unhydratedFlexTreeFromInsertable.d.ts +8 -3
- package/lib/simple-tree/unhydratedFlexTreeFromInsertable.d.ts.map +1 -1
- package/lib/simple-tree/unhydratedFlexTreeFromInsertable.js +56 -17
- package/lib/simple-tree/unhydratedFlexTreeFromInsertable.js.map +1 -1
- package/lib/text/textDomainFormatted.d.ts +3 -3
- package/lib/text/textDomainFormatted.d.ts.map +1 -1
- package/lib/text/textDomainFormatted.js +30 -14
- package/lib/text/textDomainFormatted.js.map +1 -1
- package/lib/treeFactory.d.ts.map +1 -1
- package/lib/treeFactory.js +13 -3
- package/lib/treeFactory.js.map +1 -1
- package/lib/util/bTreeUtils.d.ts.map +1 -1
- package/lib/util/bTreeUtils.js +6 -6
- package/lib/util/bTreeUtils.js.map +1 -1
- package/lib/util/index.d.ts +1 -1
- package/lib/util/index.d.ts.map +1 -1
- package/lib/util/index.js +1 -1
- package/lib/util/index.js.map +1 -1
- package/lib/util/rangeMap.d.ts +23 -11
- package/lib/util/rangeMap.d.ts.map +1 -1
- package/lib/util/rangeMap.js +40 -9
- package/lib/util/rangeMap.js.map +1 -1
- package/package.json +23 -23
- package/src/codec/codec.ts +10 -112
- package/src/codec/index.ts +0 -3
- package/src/codec/versioned/codec.ts +119 -83
- package/src/core/change-family/changeFamily.ts +5 -0
- package/src/core/change-family/index.ts +1 -0
- package/src/core/index.ts +4 -1
- package/src/core/rebase/changeRebaser.ts +6 -1
- package/src/core/rebase/index.ts +1 -0
- package/src/core/rebase/types.ts +4 -0
- package/src/core/rebase/utils.ts +31 -7
- package/src/core/tree/delta.ts +6 -0
- package/src/core/tree/detachedFieldIndex.ts +29 -1
- package/src/core/tree/detachedFieldIndexCodecs.ts +6 -4
- package/src/core/tree/detachedFieldIndexTypes.ts +5 -0
- package/src/core/tree/index.ts +13 -12
- package/src/core/tree/pathTree.ts +16 -4
- package/src/core/tree/visitDelta.ts +31 -11
- package/src/{extensibleSchemaUnion.ts → extensibleUnionNode.ts} +61 -19
- package/src/feature-libraries/changeAtomIdBTree.ts +28 -3
- package/src/feature-libraries/chunked-forest/codec/codecs.ts +5 -11
- package/src/feature-libraries/default-schema/defaultEditBuilder.ts +369 -127
- package/src/feature-libraries/default-schema/defaultFieldKinds.ts +13 -4
- package/src/feature-libraries/default-schema/index.ts +16 -5
- package/src/feature-libraries/default-schema/locationBasedEditBuilder.ts +231 -0
- package/src/feature-libraries/default-schema/mappedEditBuilder.ts +35 -9
- package/src/feature-libraries/deltaUtils.ts +6 -1
- package/src/feature-libraries/flex-tree/context.ts +17 -0
- package/src/feature-libraries/flex-tree/flexTreeTypes.ts +7 -8
- package/src/feature-libraries/flex-tree/lazyField.ts +65 -24
- package/src/feature-libraries/forest-summary/codec.ts +8 -7
- package/src/feature-libraries/forest-summary/formatCommon.ts +5 -3
- package/src/feature-libraries/forest-summary/formatV1.ts +1 -3
- package/src/feature-libraries/forest-summary/formatV2.ts +1 -3
- package/src/feature-libraries/index.ts +22 -9
- package/src/feature-libraries/mitigatedChangeFamily.ts +3 -1
- package/src/feature-libraries/modular-schema/crossFieldQueries.ts +144 -47
- package/src/feature-libraries/modular-schema/fieldChangeHandler.ts +113 -58
- package/src/feature-libraries/modular-schema/genericFieldKind.ts +7 -18
- package/src/feature-libraries/modular-schema/index.ts +16 -16
- package/src/feature-libraries/modular-schema/modularChangeCodecV1.ts +626 -352
- package/src/feature-libraries/modular-schema/modularChangeCodecV2.ts +1 -0
- package/src/feature-libraries/modular-schema/modularChangeCodecV3.ts +649 -0
- package/src/feature-libraries/modular-schema/modularChangeCodecs.ts +14 -0
- package/src/feature-libraries/modular-schema/modularChangeFamily.ts +2694 -748
- package/src/feature-libraries/modular-schema/modularChangeFormatV1.ts +1 -0
- package/src/feature-libraries/modular-schema/modularChangeFormatV2.ts +1 -1
- package/src/feature-libraries/modular-schema/modularChangeFormatV3.ts +67 -0
- package/src/feature-libraries/modular-schema/modularChangeTypes.ts +62 -10
- package/src/feature-libraries/optional-field/optionalField.ts +359 -568
- package/src/feature-libraries/optional-field/optionalFieldChangeFormatV3.ts +45 -0
- package/src/feature-libraries/optional-field/optionalFieldChangeTypes.ts +31 -35
- package/src/feature-libraries/optional-field/optionalFieldCodecV2.ts +89 -35
- package/src/feature-libraries/optional-field/optionalFieldCodecV3.ts +94 -0
- package/src/feature-libraries/optional-field/optionalFieldCodecs.ts +5 -1
- package/src/feature-libraries/optional-field/requiredField.ts +15 -2
- package/src/feature-libraries/schema-index/codec.ts +6 -4
- package/src/feature-libraries/sequence-field/compose.ts +137 -522
- package/src/feature-libraries/sequence-field/helperTypes.ts +34 -19
- package/src/feature-libraries/sequence-field/invert.ts +102 -228
- package/src/feature-libraries/sequence-field/markQueue.ts +2 -2
- package/src/feature-libraries/sequence-field/moveEffectTable.ts +8 -195
- package/src/feature-libraries/sequence-field/rebase.ts +171 -207
- package/src/feature-libraries/sequence-field/replaceRevisions.ts +26 -52
- package/src/feature-libraries/sequence-field/sequenceFieldChangeHandler.ts +8 -3
- package/src/feature-libraries/sequence-field/sequenceFieldCodecV2.ts +677 -229
- package/src/feature-libraries/sequence-field/sequenceFieldCodecV3.ts +56 -70
- package/src/feature-libraries/sequence-field/sequenceFieldEditor.ts +28 -30
- package/src/feature-libraries/sequence-field/sequenceFieldToDelta.ts +21 -131
- package/src/feature-libraries/sequence-field/types.ts +40 -79
- package/src/feature-libraries/sequence-field/utils.ts +211 -370
- package/src/index.ts +3 -3
- package/src/packageVersion.ts +1 -1
- package/src/shared-tree/independentView.ts +12 -6
- package/src/shared-tree/index.ts +3 -2
- package/src/shared-tree/schematizeTree.ts +21 -8
- package/src/shared-tree/schematizingTreeView.ts +38 -68
- package/src/shared-tree/sharedTree.ts +30 -15
- package/src/shared-tree/sharedTreeChangeCodecs.ts +10 -2
- package/src/shared-tree/sharedTreeChangeFamily.ts +7 -4
- package/src/shared-tree/sharedTreeEditBuilder.ts +43 -8
- package/src/shared-tree/tree.ts +1 -1
- package/src/shared-tree/treeAlpha.ts +1 -1
- package/src/shared-tree/treeCheckout.ts +95 -21
- package/src/shared-tree-core/branch.ts +8 -2
- package/src/shared-tree-core/editManager.ts +16 -2
- package/src/shared-tree-core/editManagerCodecs.ts +11 -1
- package/src/shared-tree-core/editManagerCodecsCommons.ts +7 -7
- package/src/shared-tree-core/editManagerCodecsV1toV4.ts +3 -10
- package/src/shared-tree-core/editManagerCodecsVSharedBranches.ts +3 -10
- package/src/shared-tree-core/editManagerFormatCommons.ts +6 -0
- package/src/shared-tree-core/editManagerFormatV1toV4.ts +3 -1
- package/src/shared-tree-core/index.ts +2 -0
- package/src/shared-tree-core/messageCodecV1ToV4.ts +2 -1
- package/src/shared-tree-core/messageCodecs.ts +13 -7
- package/src/shared-tree-core/messageFormat.ts +6 -0
- package/src/shared-tree-core/messageFormatV1ToV4.ts +3 -1
- package/src/shared-tree-core/sharedTreeCore.ts +4 -1
- package/src/simple-tree/api/index.ts +2 -2
- package/src/simple-tree/api/snapshotCompatibilityChecker.ts +344 -142
- package/src/simple-tree/api/tree.ts +1 -1
- package/src/simple-tree/api/treeBeta.ts +1 -1
- package/src/simple-tree/core/allowedTypes.ts +1 -1
- package/src/simple-tree/core/unhydratedFlexTree.ts +124 -35
- package/src/simple-tree/fieldSchema.ts +6 -4
- package/src/simple-tree/index.ts +4 -3
- package/src/simple-tree/node-kinds/array/arrayNode.ts +20 -24
- package/src/simple-tree/node-kinds/common.ts +2 -5
- package/src/simple-tree/node-kinds/map/mapNode.ts +4 -4
- package/src/simple-tree/node-kinds/object/objectNode.ts +26 -26
- package/src/simple-tree/node-kinds/record/recordNode.ts +10 -9
- package/src/simple-tree/prepareForInsertion.ts +342 -200
- package/src/simple-tree/unhydratedFlexTreeFromInsertable.ts +83 -22
- package/src/text/textDomainFormatted.ts +37 -17
- package/src/treeFactory.ts +16 -4
- package/src/util/bTreeUtils.ts +10 -6
- package/src/util/index.ts +3 -0
- package/src/util/rangeMap.ts +67 -22
- package/api-extractor-lint.json +0 -4
- package/dist/extensibleSchemaUnion.d.ts +0 -72
- package/dist/extensibleSchemaUnion.d.ts.map +0 -1
- package/dist/extensibleSchemaUnion.js.map +0 -1
- package/dist/feature-libraries/sequence-field/relevantRemovedRoots.d.ts +0 -9
- package/dist/feature-libraries/sequence-field/relevantRemovedRoots.d.ts.map +0 -1
- package/dist/feature-libraries/sequence-field/relevantRemovedRoots.js +0 -50
- package/dist/feature-libraries/sequence-field/relevantRemovedRoots.js.map +0 -1
- package/docs/main/sequence-field/move-composition.md +0 -46
- package/lib/extensibleSchemaUnion.d.ts +0 -72
- package/lib/extensibleSchemaUnion.d.ts.map +0 -1
- package/lib/extensibleSchemaUnion.js.map +0 -1
- package/lib/feature-libraries/sequence-field/relevantRemovedRoots.d.ts +0 -9
- package/lib/feature-libraries/sequence-field/relevantRemovedRoots.d.ts.map +0 -1
- package/lib/feature-libraries/sequence-field/relevantRemovedRoots.js +0 -46
- package/lib/feature-libraries/sequence-field/relevantRemovedRoots.js.map +0 -1
- package/src/feature-libraries/sequence-field/relevantRemovedRoots.ts +0 -57
|
@@ -13,9 +13,10 @@ import {
|
|
|
13
13
|
type ChangeFamily,
|
|
14
14
|
type ChangeFamilyEditor,
|
|
15
15
|
type ChangeRebaser,
|
|
16
|
+
type ChangesetLocalId,
|
|
16
17
|
type DeltaDetachedNodeId,
|
|
17
18
|
type DeltaRoot,
|
|
18
|
-
type
|
|
19
|
+
type EditorOptions,
|
|
19
20
|
type NormalizedFieldUpPath,
|
|
20
21
|
type NormalizedUpPath,
|
|
21
22
|
type RevisionTag,
|
|
@@ -25,18 +26,19 @@ import {
|
|
|
25
26
|
compareFieldUpPaths,
|
|
26
27
|
topDownPath,
|
|
27
28
|
} from "../../core/index.js";
|
|
28
|
-
import { brand } from "../../util/index.js";
|
|
29
|
+
import { brand, RangeMap } from "../../util/index.js";
|
|
29
30
|
import {
|
|
30
31
|
type EditDescription,
|
|
31
32
|
type FieldChangeset,
|
|
32
33
|
type FieldEditDescription,
|
|
34
|
+
type GlobalEditDescription,
|
|
33
35
|
ModularChangeFamily,
|
|
34
36
|
type ModularChangeset,
|
|
35
37
|
ModularEditBuilder,
|
|
36
38
|
intoDelta as intoModularDelta,
|
|
37
39
|
relevantRemovedRoots as relevantModularRemovedRoots,
|
|
38
40
|
} from "../modular-schema/index.js";
|
|
39
|
-
import { optional,
|
|
41
|
+
import { optional, required } from "../optional-field/index.js";
|
|
40
42
|
import { sequence, type CellId } from "../sequence-field/index.js";
|
|
41
43
|
|
|
42
44
|
import { fieldKinds } from "./defaultFieldKinds.js";
|
|
@@ -49,7 +51,7 @@ export type DefaultChangeset = ModularChangeset;
|
|
|
49
51
|
* @sealed
|
|
50
52
|
*/
|
|
51
53
|
export class DefaultChangeFamily
|
|
52
|
-
implements ChangeFamily<
|
|
54
|
+
implements ChangeFamily<IdBasedChangeFamilyDataEditor, DefaultChangeset>
|
|
53
55
|
{
|
|
54
56
|
private readonly modularFamily: ModularChangeFamily;
|
|
55
57
|
|
|
@@ -71,11 +73,13 @@ export class DefaultChangeFamily
|
|
|
71
73
|
public buildEditor(
|
|
72
74
|
mintRevisionTag: () => RevisionTag,
|
|
73
75
|
changeReceiver: (change: TaggedChange<DefaultChangeset>) => void,
|
|
74
|
-
|
|
75
|
-
|
|
76
|
+
options?: EditorOptions,
|
|
77
|
+
): IdBasedChangeFamilyDataEditor {
|
|
78
|
+
return new DefaultIdBasedDataEditor(
|
|
76
79
|
this,
|
|
77
80
|
mintRevisionTag,
|
|
78
81
|
changeReceiver,
|
|
82
|
+
options,
|
|
79
83
|
this.modularFamily.codecOptions,
|
|
80
84
|
);
|
|
81
85
|
}
|
|
@@ -106,8 +110,14 @@ export function relevantRemovedRoots(change: ModularChangeset): Iterable<DeltaDe
|
|
|
106
110
|
return relevantModularRemovedRoots(change, fieldKinds);
|
|
107
111
|
}
|
|
108
112
|
|
|
113
|
+
export type DetachedRootIds = readonly DetachedRootIdRange[];
|
|
114
|
+
export interface DetachedRootIdRange {
|
|
115
|
+
readonly first: ChangeAtomId;
|
|
116
|
+
readonly count: number;
|
|
117
|
+
}
|
|
118
|
+
|
|
109
119
|
/**
|
|
110
|
-
* Default editor for
|
|
120
|
+
* Default editor for tree data changes.
|
|
111
121
|
* @privateRemarks
|
|
112
122
|
* When taking into account not just the content of the tree,
|
|
113
123
|
* but also how the merge identities (and thus anchors, flex-tree and simple-tree nodes) of nodes before and after the edits correspond,
|
|
@@ -123,32 +133,7 @@ export function relevantRemovedRoots(change: ModularChangeset): Iterable<DeltaDe
|
|
|
123
133
|
* If/when such a mechanism becomes available, an evaluation should be done to determine if any existing editing operations should be changed to leverage it
|
|
124
134
|
* (Possibly by adding opt ins at the view schema layer).
|
|
125
135
|
*/
|
|
126
|
-
export interface
|
|
127
|
-
/**
|
|
128
|
-
* @param field - the value field which is being edited under the parent node
|
|
129
|
-
* @returns An object with methods to edit the given field of the given parent.
|
|
130
|
-
* The returned object can be used (i.e., have its methods called) multiple times but its lifetime
|
|
131
|
-
* is bounded by the lifetime of this edit builder.
|
|
132
|
-
*/
|
|
133
|
-
valueField(field: NormalizedFieldUpPath): ValueFieldEditBuilder<TContent>;
|
|
134
|
-
|
|
135
|
-
/**
|
|
136
|
-
* @param field - the optional field which is being edited under the parent node
|
|
137
|
-
* @returns An object with methods to edit the given field of the given parent.
|
|
138
|
-
* The returned object can be used (i.e., have its methods called) multiple times but its lifetime
|
|
139
|
-
* is bounded by the lifetime of this edit builder.
|
|
140
|
-
*/
|
|
141
|
-
optionalField(field: NormalizedFieldUpPath): OptionalFieldEditBuilder<TContent>;
|
|
142
|
-
|
|
143
|
-
/**
|
|
144
|
-
* @param field - the sequence field which is being edited under the parent node
|
|
145
|
-
*
|
|
146
|
-
* @returns An object with methods to edit the given field of the given parent.
|
|
147
|
-
* The returned object can be used (i.e., have its methods called) multiple times but its lifetime
|
|
148
|
-
* is bounded by the lifetime of this edit builder.
|
|
149
|
-
*/
|
|
150
|
-
sequenceField(field: NormalizedFieldUpPath): SequenceFieldEditBuilder<TContent>;
|
|
151
|
-
|
|
136
|
+
export interface DataEditor<TContent, TDetachedRoot, TDetachedRoots> {
|
|
152
137
|
/**
|
|
153
138
|
* Moves a subsequence from one sequence field to another sequence field.
|
|
154
139
|
*
|
|
@@ -184,19 +169,71 @@ export interface IDefaultEditBuilder<TContent = TreeChunk> {
|
|
|
184
169
|
* Add a constraint that, for the revert of this change to apply, the document must be in the same state immediately before the revert is applied as it was after this change was applied.
|
|
185
170
|
*/
|
|
186
171
|
addNoChangeConstraintOnRevert(): void;
|
|
172
|
+
|
|
173
|
+
/**
|
|
174
|
+
* Builds the detached roots for the given content.
|
|
175
|
+
* @param content - The content to be built into detached nodes.
|
|
176
|
+
*
|
|
177
|
+
* Requires SharedTreeFormatVersion.vDetachedRoots or later.
|
|
178
|
+
*/
|
|
179
|
+
buildRoots(content: TContent): TDetachedRoots;
|
|
180
|
+
|
|
181
|
+
/**
|
|
182
|
+
* @param field - the value field which is being edited under the parent node
|
|
183
|
+
* @returns An object with methods to edit the given field of the given parent.
|
|
184
|
+
* The returned object can be used (i.e., have its methods called) multiple times but its lifetime
|
|
185
|
+
* is bounded by the lifetime of this edit builder.
|
|
186
|
+
*/
|
|
187
|
+
valueField(field: NormalizedFieldUpPath): RequiredFieldEditor<TContent, TDetachedRoot>;
|
|
188
|
+
|
|
189
|
+
/**
|
|
190
|
+
* @param field - the optional field which is being edited under the parent node
|
|
191
|
+
* @returns An object with methods to edit the given field of the given parent.
|
|
192
|
+
* The returned object can be used (i.e., have its methods called) multiple times but its lifetime
|
|
193
|
+
* is bounded by the lifetime of this edit builder.
|
|
194
|
+
*/
|
|
195
|
+
optionalField(field: NormalizedFieldUpPath): OptionalFieldEditor<TContent, TDetachedRoot>;
|
|
196
|
+
|
|
197
|
+
/**
|
|
198
|
+
* @param field - the sequence field which is being edited under the parent node
|
|
199
|
+
*
|
|
200
|
+
* @returns An object with methods to edit the given field of the given parent.
|
|
201
|
+
* The returned object can be used (i.e., have its methods called) multiple times but its lifetime
|
|
202
|
+
* is bounded by the lifetime of this edit builder.
|
|
203
|
+
*/
|
|
204
|
+
sequenceField(field: NormalizedFieldUpPath): SequenceFieldEditor<TContent, TDetachedRoots>;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
export type IdBasedChangeFamilyDataEditor = ChangeFamilyEditor &
|
|
208
|
+
DataEditor<TreeChunk, ChangeAtomId, DetachedRootIds>;
|
|
209
|
+
|
|
210
|
+
export function offsetChangesetLocalId(
|
|
211
|
+
id: ChangesetLocalId,
|
|
212
|
+
offset: number,
|
|
213
|
+
): ChangesetLocalId {
|
|
214
|
+
return brand(id + offset);
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
export function subtractChangesetLocalId(a: ChangesetLocalId, b: ChangesetLocalId): number {
|
|
218
|
+
return a - b;
|
|
187
219
|
}
|
|
188
220
|
|
|
189
221
|
/**
|
|
190
|
-
* Implementation of {@link
|
|
222
|
+
* Implementation of {@link IdBasedChangeFamilyDataEditor} based on the default set of supported field kinds.
|
|
191
223
|
* @sealed
|
|
192
224
|
*/
|
|
193
|
-
export class
|
|
225
|
+
export class DefaultIdBasedDataEditor implements IdBasedChangeFamilyDataEditor {
|
|
194
226
|
private readonly modularBuilder: ModularEditBuilder;
|
|
227
|
+
private readonly nodesWithoutCells: RangeMap<ChangesetLocalId, true> = new RangeMap(
|
|
228
|
+
offsetChangesetLocalId,
|
|
229
|
+
subtractChangesetLocalId,
|
|
230
|
+
);
|
|
195
231
|
|
|
196
232
|
public constructor(
|
|
197
233
|
family: ChangeFamily<ChangeFamilyEditor, DefaultChangeset>,
|
|
198
234
|
private readonly mintRevisionTag: () => RevisionTag,
|
|
199
235
|
changeReceiver: (change: TaggedChange<DefaultChangeset>) => void,
|
|
236
|
+
private readonly options: EditorOptions = { enableDetachedRootEditing: false },
|
|
200
237
|
codecOptions: CodecWriteOptions,
|
|
201
238
|
) {
|
|
202
239
|
this.modularBuilder = new ModularEditBuilder(
|
|
@@ -204,21 +241,28 @@ export class DefaultEditBuilder implements ChangeFamilyEditor, IDefaultEditBuild
|
|
|
204
241
|
fieldKinds,
|
|
205
242
|
changeReceiver,
|
|
206
243
|
codecOptions,
|
|
244
|
+
options,
|
|
207
245
|
);
|
|
208
246
|
}
|
|
209
247
|
|
|
210
248
|
public enterTransaction(): void {
|
|
249
|
+
if (this.modularBuilder.isInTransaction() === false) {
|
|
250
|
+
this.nodesWithoutCells.clear();
|
|
251
|
+
}
|
|
211
252
|
this.modularBuilder.enterTransaction();
|
|
212
253
|
}
|
|
213
254
|
public exitTransaction(): void {
|
|
214
255
|
this.modularBuilder.exitTransaction();
|
|
256
|
+
if (this.modularBuilder.isInTransaction() === false) {
|
|
257
|
+
this.nodesWithoutCells.clear();
|
|
258
|
+
}
|
|
215
259
|
}
|
|
216
260
|
|
|
217
|
-
public addNodeExistsConstraint(path:
|
|
261
|
+
public addNodeExistsConstraint(path: NormalizedUpPath): void {
|
|
218
262
|
this.modularBuilder.addNodeExistsConstraint(path, this.mintRevisionTag());
|
|
219
263
|
}
|
|
220
264
|
|
|
221
|
-
public addNodeExistsConstraintOnRevert(path:
|
|
265
|
+
public addNodeExistsConstraintOnRevert(path: NormalizedUpPath): void {
|
|
222
266
|
this.modularBuilder.addNodeExistsConstraintOnRevert(path, this.mintRevisionTag());
|
|
223
267
|
}
|
|
224
268
|
|
|
@@ -230,61 +274,136 @@ export class DefaultEditBuilder implements ChangeFamilyEditor, IDefaultEditBuild
|
|
|
230
274
|
this.modularBuilder.addNoChangeConstraintOnRevert(this.mintRevisionTag());
|
|
231
275
|
}
|
|
232
276
|
|
|
233
|
-
public
|
|
277
|
+
public buildRoots(content: TreeChunk): DetachedRootIds {
|
|
278
|
+
const detachedRoots = [];
|
|
279
|
+
const count = content.topLevelLength;
|
|
280
|
+
if (count > 0) {
|
|
281
|
+
const buildRevision = this.mintRevisionTag();
|
|
282
|
+
const buildId = {
|
|
283
|
+
localId: this.modularBuilder.generateId(count),
|
|
284
|
+
revision: buildRevision,
|
|
285
|
+
};
|
|
286
|
+
const build = this.modularBuilder.buildTrees(buildId.localId, content, buildRevision);
|
|
287
|
+
this.modularBuilder.submitChanges([build], buildRevision);
|
|
288
|
+
detachedRoots.push({ first: buildId, count });
|
|
289
|
+
this.nodesWithoutCells.set(buildId.localId, count, true);
|
|
290
|
+
}
|
|
291
|
+
return detachedRoots;
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
public valueField(
|
|
295
|
+
field: NormalizedFieldUpPath,
|
|
296
|
+
): RequiredFieldEditor<TreeChunk, ChangeAtomId> {
|
|
297
|
+
const makeAttachEditDescription = (
|
|
298
|
+
fill: ChangeAtomId,
|
|
299
|
+
revision: RevisionTag,
|
|
300
|
+
): FieldEditDescription => {
|
|
301
|
+
const detachLocalId = this.modularBuilder.generateId();
|
|
302
|
+
const detach = { localId: detachLocalId, revision };
|
|
303
|
+
const change = required.changeHandler.editor.set({ fill, detach });
|
|
304
|
+
return {
|
|
305
|
+
type: "field",
|
|
306
|
+
field,
|
|
307
|
+
fieldKind: required.identifier,
|
|
308
|
+
change: brand(change),
|
|
309
|
+
revision,
|
|
310
|
+
};
|
|
311
|
+
};
|
|
234
312
|
return {
|
|
235
313
|
set: (newContent: TreeChunk): void => {
|
|
236
|
-
assert(
|
|
237
|
-
newContent.topLevelLength === 1,
|
|
238
|
-
0xc12 /* Value fields should have a single top level node */,
|
|
239
|
-
);
|
|
314
|
+
assert(newContent.topLevelLength === 1, "Expected exactly one node");
|
|
240
315
|
const revision = this.mintRevisionTag();
|
|
241
|
-
const
|
|
242
|
-
const
|
|
243
|
-
const build = this.modularBuilder.buildTrees(
|
|
244
|
-
const
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
detach,
|
|
248
|
-
}),
|
|
249
|
-
);
|
|
316
|
+
const buildLocalId = this.modularBuilder.generateId();
|
|
317
|
+
const buildId = { localId: buildLocalId, revision };
|
|
318
|
+
const build = this.modularBuilder.buildTrees(buildLocalId, newContent, revision);
|
|
319
|
+
const attach = makeAttachEditDescription(buildId, revision);
|
|
320
|
+
this.modularBuilder.submitChanges([build, attach], revision);
|
|
321
|
+
},
|
|
250
322
|
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
}
|
|
258
|
-
this.
|
|
323
|
+
attach: (newContent: ChangeAtomId): void => {
|
|
324
|
+
const isWithoutCell = this.nodesWithoutCells.delete(newContent.localId, 1) === 1;
|
|
325
|
+
if (!isWithoutCell) {
|
|
326
|
+
throw new UsageError(
|
|
327
|
+
"A hydrated node that has been attached before cannot be attached into an object's required field. Assign new content to the field instead.",
|
|
328
|
+
);
|
|
329
|
+
}
|
|
330
|
+
const revision = this.mintRevisionTag();
|
|
331
|
+
const attach = makeAttachEditDescription(newContent, revision);
|
|
332
|
+
this.modularBuilder.submitChanges([attach], revision);
|
|
259
333
|
},
|
|
260
334
|
};
|
|
261
335
|
}
|
|
262
336
|
|
|
263
|
-
public optionalField(
|
|
264
|
-
|
|
337
|
+
public optionalField(
|
|
338
|
+
field: NormalizedFieldUpPath,
|
|
339
|
+
): OptionalFieldEditor<TreeChunk, ChangeAtomId> {
|
|
340
|
+
const makeAttachEditDescription = (
|
|
341
|
+
fill: ChangeAtomId,
|
|
342
|
+
revision: RevisionTag,
|
|
343
|
+
wasEmpty: boolean,
|
|
344
|
+
): FieldEditDescription => {
|
|
345
|
+
const detachLocalId = this.modularBuilder.generateId();
|
|
346
|
+
const detach = { localId: detachLocalId, revision };
|
|
347
|
+
const change = optional.changeHandler.editor.set(wasEmpty, { fill, detach });
|
|
348
|
+
return {
|
|
349
|
+
type: "field",
|
|
350
|
+
field,
|
|
351
|
+
fieldKind: optional.identifier,
|
|
352
|
+
change: brand(change),
|
|
353
|
+
revision,
|
|
354
|
+
};
|
|
355
|
+
};
|
|
356
|
+
const editBuilder = {
|
|
265
357
|
set: (newContent: TreeChunk | undefined, wasEmpty: boolean): void => {
|
|
266
|
-
// The choice to ban empty chunks here instead of treating them as a clear is a subjective choice made to err of the side of more explicitness and stricter validation.
|
|
267
|
-
assert(
|
|
268
|
-
newContent === undefined || newContent.topLevelLength === 1,
|
|
269
|
-
0xc13 /* optional fields should have a single top level node, or undefined */,
|
|
270
|
-
);
|
|
271
|
-
const edits: EditDescription[] = [];
|
|
272
|
-
let optionalChange: OptionalChangeset;
|
|
273
|
-
const revision = this.mintRevisionTag();
|
|
274
|
-
const detach: ChangeAtomId = { localId: this.modularBuilder.generateId(), revision };
|
|
275
358
|
if (newContent === undefined) {
|
|
276
|
-
|
|
359
|
+
editBuilder.clear(wasEmpty);
|
|
360
|
+
return;
|
|
361
|
+
}
|
|
362
|
+
assert(newContent.topLevelLength === 1, "Expected exactly one node");
|
|
363
|
+
const revision = this.mintRevisionTag();
|
|
364
|
+
const buildLocalId = this.modularBuilder.generateId();
|
|
365
|
+
const buildId = { localId: buildLocalId, revision };
|
|
366
|
+
const build = this.modularBuilder.buildTrees(buildLocalId, newContent, revision);
|
|
367
|
+
const attach = makeAttachEditDescription(buildId, revision, wasEmpty);
|
|
368
|
+
this.modularBuilder.submitChanges([build, attach], revision);
|
|
369
|
+
},
|
|
370
|
+
attach: (content: ChangeAtomId | undefined, wasEmpty: boolean): void => {
|
|
371
|
+
if (content === undefined) {
|
|
372
|
+
editBuilder.clear(wasEmpty);
|
|
373
|
+
return;
|
|
374
|
+
}
|
|
375
|
+
const isWithoutCell = this.nodesWithoutCells.delete(content.localId, 1) === 1;
|
|
376
|
+
if (!isWithoutCell && this.options.enableDetachedRootEditing !== true) {
|
|
377
|
+
throw new UsageError(
|
|
378
|
+
`Attach edits require a minimum version for collaboration >= TBD.`,
|
|
379
|
+
);
|
|
380
|
+
}
|
|
381
|
+
const revision = this.mintRevisionTag();
|
|
382
|
+
const edits: EditDescription[] = [];
|
|
383
|
+
let stableSrcId: ChangeAtomId;
|
|
384
|
+
if (isWithoutCell) {
|
|
385
|
+
stableSrcId = content;
|
|
277
386
|
} else {
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
387
|
+
// If the node has an associated cell, then it may be concurrently moved to another location.
|
|
388
|
+
// We use a rename to ensure that the node will be moved to a specific grave before the attach.
|
|
389
|
+
stableSrcId = { localId: this.modularBuilder.generateId(), revision };
|
|
390
|
+
const rename: GlobalEditDescription = {
|
|
391
|
+
type: "global",
|
|
392
|
+
revision,
|
|
393
|
+
renames: [
|
|
394
|
+
{ count: 1, oldId: content, newId: stableSrcId, detachLocation: undefined },
|
|
395
|
+
],
|
|
396
|
+
};
|
|
397
|
+
edits.push(rename);
|
|
286
398
|
}
|
|
287
|
-
|
|
399
|
+
const attach = makeAttachEditDescription(stableSrcId, revision, wasEmpty);
|
|
400
|
+
edits.push(attach);
|
|
401
|
+
this.modularBuilder.submitChanges(edits, revision);
|
|
402
|
+
},
|
|
403
|
+
clear: (wasEmpty: boolean): void => {
|
|
404
|
+
const revision = this.mintRevisionTag();
|
|
405
|
+
const detach: ChangeAtomId = { localId: this.modularBuilder.generateId(), revision };
|
|
406
|
+
const optionalChange = optional.changeHandler.editor.clear(wasEmpty, detach);
|
|
288
407
|
const change: FieldChangeset = brand(optionalChange);
|
|
289
408
|
const edit: FieldEditDescription = {
|
|
290
409
|
type: "field",
|
|
@@ -293,18 +412,17 @@ export class DefaultEditBuilder implements ChangeFamilyEditor, IDefaultEditBuild
|
|
|
293
412
|
change,
|
|
294
413
|
revision,
|
|
295
414
|
};
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
this.modularBuilder.submitChanges(edits, revision);
|
|
415
|
+
this.modularBuilder.submitChanges([edit], revision);
|
|
299
416
|
},
|
|
300
417
|
};
|
|
418
|
+
return editBuilder;
|
|
301
419
|
}
|
|
302
420
|
|
|
303
421
|
public move(
|
|
304
|
-
sourceField:
|
|
422
|
+
sourceField: NormalizedFieldUpPath,
|
|
305
423
|
sourceIndex: number,
|
|
306
424
|
count: number,
|
|
307
|
-
destinationField:
|
|
425
|
+
destinationField: NormalizedFieldUpPath,
|
|
308
426
|
destIndex: number,
|
|
309
427
|
): void {
|
|
310
428
|
if (count === 0) {
|
|
@@ -335,13 +453,13 @@ export class DefaultEditBuilder implements ChangeFamilyEditor, IDefaultEditBuild
|
|
|
335
453
|
const attachPath = topDownPath(destinationField.parent);
|
|
336
454
|
const sharedDepth = getSharedPrefixLength(detachPath, attachPath);
|
|
337
455
|
let adjustedAttachField = destinationField;
|
|
338
|
-
//
|
|
339
|
-
// that both paths have in common.
|
|
456
|
+
// `sharedDepth` is the number of elements, starting from the root, that both paths have in common.
|
|
340
457
|
if (sharedDepth === detachPath.length) {
|
|
341
|
-
const
|
|
458
|
+
const lowestCommonAncestor: NormalizedUpPath | undefined = attachPath[sharedDepth];
|
|
459
|
+
const attachField = lowestCommonAncestor?.parentField ?? destinationField.field;
|
|
342
460
|
if (attachField === sourceField.field) {
|
|
343
461
|
// The detach occurs in an ancestor field of the field where the attach occurs.
|
|
344
|
-
|
|
462
|
+
const attachAncestorIndex = lowestCommonAncestor?.parentIndex ?? destIndex;
|
|
345
463
|
if (attachAncestorIndex < sourceIndex) {
|
|
346
464
|
// The attach path runs through a node located before the detached nodes.
|
|
347
465
|
// No need to adjust the attach path.
|
|
@@ -349,14 +467,19 @@ export class DefaultEditBuilder implements ChangeFamilyEditor, IDefaultEditBuild
|
|
|
349
467
|
// The attach path runs through a node located after the detached nodes.
|
|
350
468
|
// adjust the index for the node at that depth of the path, so that it is interpreted correctly
|
|
351
469
|
// in the composition performed by `submitChanges`.
|
|
352
|
-
attachAncestorIndex
|
|
353
|
-
let parent:
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
470
|
+
const adjustedAttachAncestorIndex = attachAncestorIndex - count;
|
|
471
|
+
let parent: NormalizedUpPath =
|
|
472
|
+
lowestCommonAncestor === undefined
|
|
473
|
+
? {
|
|
474
|
+
parent: undefined,
|
|
475
|
+
detachedNodeId: undefined,
|
|
476
|
+
parentIndex: adjustedAttachAncestorIndex,
|
|
477
|
+
parentField: destinationField.field,
|
|
478
|
+
}
|
|
479
|
+
: {
|
|
480
|
+
...lowestCommonAncestor,
|
|
481
|
+
parentIndex: adjustedAttachAncestorIndex,
|
|
482
|
+
};
|
|
360
483
|
for (let i = sharedDepth + 1; i < attachPath.length; i += 1) {
|
|
361
484
|
parent = {
|
|
362
485
|
...(attachPath[i] ?? oob()),
|
|
@@ -371,19 +494,20 @@ export class DefaultEditBuilder implements ChangeFamilyEditor, IDefaultEditBuild
|
|
|
371
494
|
}
|
|
372
495
|
}
|
|
373
496
|
}
|
|
374
|
-
const moveOut = sequence.changeHandler.editor.
|
|
497
|
+
const moveOut = sequence.changeHandler.editor.remove(
|
|
375
498
|
sourceIndex,
|
|
376
499
|
count,
|
|
377
500
|
detachCellId,
|
|
378
501
|
revision,
|
|
379
502
|
);
|
|
380
|
-
const moveIn = sequence.changeHandler.editor.
|
|
503
|
+
const moveIn = sequence.changeHandler.editor.insert(
|
|
381
504
|
destIndex,
|
|
382
505
|
count,
|
|
383
|
-
detachCellId,
|
|
384
506
|
attachCellId,
|
|
385
507
|
revision,
|
|
508
|
+
detachCellId,
|
|
386
509
|
);
|
|
510
|
+
|
|
387
511
|
this.modularBuilder.submitChanges(
|
|
388
512
|
[
|
|
389
513
|
{
|
|
@@ -406,30 +530,113 @@ export class DefaultEditBuilder implements ChangeFamilyEditor, IDefaultEditBuild
|
|
|
406
530
|
}
|
|
407
531
|
}
|
|
408
532
|
|
|
409
|
-
public sequenceField(
|
|
410
|
-
|
|
533
|
+
public sequenceField(
|
|
534
|
+
field: NormalizedFieldUpPath,
|
|
535
|
+
): SequenceFieldEditor<TreeChunk, DetachedRootIds> {
|
|
536
|
+
const makeAttachEditDescription = (
|
|
537
|
+
index: number,
|
|
538
|
+
{ first, count }: DetachedRootIdRange,
|
|
539
|
+
revision: RevisionTag,
|
|
540
|
+
areWithoutCells: boolean,
|
|
541
|
+
): EditDescription[] => {
|
|
542
|
+
const edits: EditDescription[] = [];
|
|
543
|
+
// If the nodes have never been attached in cell, then we must use a cell ID that matches the build ID.
|
|
544
|
+
// This ensures back-compatibility with the v1 ModularChangeFamily model which requires that every node be associated with cell
|
|
545
|
+
// by generating an insert whose destination cell is the cell associated with the build ID.
|
|
546
|
+
let stableSrcId: ChangeAtomId;
|
|
547
|
+
if (areWithoutCells) {
|
|
548
|
+
stableSrcId = first;
|
|
549
|
+
} else {
|
|
550
|
+
// If the node has an associated cell, then it may be concurrently moved to another location.
|
|
551
|
+
// We use a rename to ensure that the node will be moved to a specific grave before the attach.
|
|
552
|
+
stableSrcId = { localId: this.modularBuilder.generateId(count), revision };
|
|
553
|
+
const rename: GlobalEditDescription = {
|
|
554
|
+
type: "global",
|
|
555
|
+
revision,
|
|
556
|
+
renames: [
|
|
557
|
+
{
|
|
558
|
+
count,
|
|
559
|
+
oldId: first,
|
|
560
|
+
newId: stableSrcId,
|
|
561
|
+
detachLocation: undefined,
|
|
562
|
+
},
|
|
563
|
+
],
|
|
564
|
+
};
|
|
565
|
+
edits.push(rename);
|
|
566
|
+
}
|
|
567
|
+
assert(stableSrcId.revision !== undefined, "Detached nodes ID must have a revision");
|
|
568
|
+
const change = sequence.changeHandler.editor.insert(
|
|
569
|
+
index,
|
|
570
|
+
count,
|
|
571
|
+
stableSrcId,
|
|
572
|
+
stableSrcId.revision,
|
|
573
|
+
stableSrcId.localId,
|
|
574
|
+
);
|
|
575
|
+
const attach: FieldEditDescription = {
|
|
576
|
+
type: "field",
|
|
577
|
+
field,
|
|
578
|
+
fieldKind: sequence.identifier,
|
|
579
|
+
change: brand(change),
|
|
580
|
+
revision,
|
|
581
|
+
};
|
|
582
|
+
edits.push(attach);
|
|
583
|
+
return edits;
|
|
584
|
+
};
|
|
585
|
+
const editBuilder = {
|
|
411
586
|
insert: (index: number, content: TreeChunk): void => {
|
|
412
|
-
const
|
|
413
|
-
if (
|
|
587
|
+
const count = content.topLevelLength;
|
|
588
|
+
if (count === 0) {
|
|
414
589
|
return;
|
|
415
590
|
}
|
|
416
|
-
|
|
417
591
|
const revision = this.mintRevisionTag();
|
|
418
|
-
const
|
|
419
|
-
const build = this.modularBuilder.buildTrees(
|
|
420
|
-
const
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
const attach: FieldEditDescription = {
|
|
424
|
-
type: "field",
|
|
425
|
-
field,
|
|
426
|
-
fieldKind: sequence.identifier,
|
|
427
|
-
change,
|
|
428
|
-
revision,
|
|
592
|
+
const buildLocalId = this.modularBuilder.generateId();
|
|
593
|
+
const build = this.modularBuilder.buildTrees(buildLocalId, content, revision);
|
|
594
|
+
const roots: DetachedRootIdRange = {
|
|
595
|
+
first: { localId: buildLocalId, revision },
|
|
596
|
+
count,
|
|
429
597
|
};
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
this.modularBuilder.submitChanges([build, attach], revision);
|
|
598
|
+
|
|
599
|
+
const attach = makeAttachEditDescription(index, roots, revision, true);
|
|
600
|
+
this.modularBuilder.submitChanges([build, ...attach], revision);
|
|
601
|
+
},
|
|
602
|
+
attach: (index: number, newContent: DetachedRootIds): void => {
|
|
603
|
+
const attachRevision = this.mintRevisionTag();
|
|
604
|
+
let areAllWithoutCells = true;
|
|
605
|
+
let insertOffset = 0;
|
|
606
|
+
const edits: EditDescription[] = [];
|
|
607
|
+
for (const range of newContent) {
|
|
608
|
+
if (range.count === 0) {
|
|
609
|
+
continue;
|
|
610
|
+
}
|
|
611
|
+
const countWithoutCells = this.nodesWithoutCells.delete(
|
|
612
|
+
range.first.localId,
|
|
613
|
+
range.count,
|
|
614
|
+
);
|
|
615
|
+
assert(
|
|
616
|
+
countWithoutCells === 0 || countWithoutCells === range.count,
|
|
617
|
+
"All detached roots within the same ID range must either all have or all not have a cell",
|
|
618
|
+
);
|
|
619
|
+
const areWithoutCells = countWithoutCells === range.count;
|
|
620
|
+
if (!areWithoutCells) {
|
|
621
|
+
areAllWithoutCells = false;
|
|
622
|
+
}
|
|
623
|
+
const renameAndAttach = makeAttachEditDescription(
|
|
624
|
+
index + insertOffset,
|
|
625
|
+
range,
|
|
626
|
+
attachRevision,
|
|
627
|
+
areWithoutCells,
|
|
628
|
+
);
|
|
629
|
+
edits.push(...renameAndAttach);
|
|
630
|
+
insertOffset += range.count;
|
|
631
|
+
}
|
|
632
|
+
if (!areAllWithoutCells && this.options.enableDetachedRootEditing !== true) {
|
|
633
|
+
throw new UsageError(
|
|
634
|
+
`Attach edits require a minimum version for collaboration >= TBD.`,
|
|
635
|
+
);
|
|
636
|
+
}
|
|
637
|
+
if (edits.length > 0) {
|
|
638
|
+
this.modularBuilder.submitChanges(edits, attachRevision);
|
|
639
|
+
}
|
|
433
640
|
},
|
|
434
641
|
remove: (index: number, count: number): void => {
|
|
435
642
|
if (count === 0) {
|
|
@@ -443,34 +650,69 @@ export class DefaultEditBuilder implements ChangeFamilyEditor, IDefaultEditBuild
|
|
|
443
650
|
this.modularBuilder.submitChange(field, sequence.identifier, change, revision);
|
|
444
651
|
},
|
|
445
652
|
};
|
|
653
|
+
return editBuilder;
|
|
446
654
|
}
|
|
447
655
|
}
|
|
448
656
|
|
|
449
|
-
export interface
|
|
657
|
+
export interface RequiredFieldEditor<TContent, TDetachedRoot> {
|
|
450
658
|
/**
|
|
451
|
-
* Issues a change which replaces the
|
|
659
|
+
* Issues a change which replaces the content of the field with the given detached node.
|
|
660
|
+
* @param content - The content to be attached in the field in the given order.
|
|
661
|
+
* Must represent a single detached node.
|
|
662
|
+
* Must have been created in the same JS turn.
|
|
663
|
+
*
|
|
664
|
+
* Requires SharedTreeFormatVersion.vDetachedRoots or later.
|
|
665
|
+
*/
|
|
666
|
+
attach(content: TDetachedRoot): void;
|
|
667
|
+
|
|
668
|
+
/**
|
|
669
|
+
* Issues a change which replaces the content of the field with `newContent`.
|
|
452
670
|
* @param newContent - the new content for the field.
|
|
453
671
|
*/
|
|
454
672
|
set(newContent: TContent): void;
|
|
455
673
|
}
|
|
456
674
|
|
|
457
|
-
export interface
|
|
675
|
+
export interface OptionalFieldEditor<TContent, TDetachedRoots> {
|
|
676
|
+
/**
|
|
677
|
+
* Issues a change which replaces the content of the field with the given detached node.
|
|
678
|
+
* @param content - The content to be attached in the field in the given order.
|
|
679
|
+
* Must represent a single detached node.
|
|
680
|
+
*
|
|
681
|
+
* Requires SharedTreeFormatVersion.vDetachedRoots or later.
|
|
682
|
+
*/
|
|
683
|
+
attach(content: TDetachedRoots | undefined, wasEmpty: boolean): void;
|
|
684
|
+
|
|
685
|
+
/**
|
|
686
|
+
* Issues a change which clears content of the field.
|
|
687
|
+
* @param wasEmpty - whether the field is empty when creating this change
|
|
688
|
+
*/
|
|
689
|
+
clear(wasEmpty: boolean): void;
|
|
690
|
+
|
|
458
691
|
/**
|
|
459
|
-
* Issues a change which replaces the
|
|
692
|
+
* Issues a change which replaces the content of the field with `newContent`
|
|
460
693
|
* @param newContent - the new content for the field.
|
|
461
|
-
* @param wasEmpty - whether the field is empty when creating this change
|
|
694
|
+
* @param wasEmpty - whether the field is empty when creating this change
|
|
462
695
|
*/
|
|
463
696
|
set(newContent: TContent | undefined, wasEmpty: boolean): void;
|
|
464
697
|
}
|
|
465
698
|
|
|
466
699
|
/**
|
|
467
|
-
*
|
|
700
|
+
* Editor for the sequence field kind.
|
|
468
701
|
*/
|
|
469
|
-
export interface
|
|
702
|
+
export interface SequenceFieldEditor<TContent, TDetachedRoots, TRemoved = void> {
|
|
703
|
+
/**
|
|
704
|
+
* Issues a change which attaches a sequence of detached nodes at the given `index`.
|
|
705
|
+
* @param index - The index at which to attach the detached nodes.
|
|
706
|
+
* @param detachedContent - The content to be attached in the field in the given order. Each node must be detached.
|
|
707
|
+
*
|
|
708
|
+
* Requires SharedTreeFormatVersion.vDetachedRoots or later.
|
|
709
|
+
*/
|
|
710
|
+
attach(index: number, detachedContent: TDetachedRoots): void;
|
|
711
|
+
|
|
470
712
|
/**
|
|
471
713
|
* Issues a change which inserts the `newContent` at the given `index`.
|
|
472
714
|
* @param index - the index at which to insert the `newContent`.
|
|
473
|
-
* @param newContent - the new content to be inserted in the field.
|
|
715
|
+
* @param newContent - the new content to be inserted in the field.
|
|
474
716
|
*/
|
|
475
717
|
insert(index: number, newContent: TContent): void;
|
|
476
718
|
|