@fluidframework/tree 2.74.0 → 2.80.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.cjs +1 -16
- package/CHANGELOG.md +18 -0
- package/api-report/tree.alpha.api.md +20 -2
- package/dist/alpha.d.ts +4 -0
- package/dist/codec/codec.d.ts +31 -3
- package/dist/codec/codec.d.ts.map +1 -1
- package/dist/codec/codec.js +10 -0
- package/dist/codec/codec.js.map +1 -1
- package/dist/codec/index.d.ts +2 -2
- package/dist/codec/index.d.ts.map +1 -1
- package/dist/codec/index.js +2 -2
- package/dist/codec/index.js.map +1 -1
- package/dist/codec/versioned/codec.d.ts +80 -22
- package/dist/codec/versioned/codec.d.ts.map +1 -1
- package/dist/codec/versioned/codec.js +137 -15
- package/dist/codec/versioned/codec.js.map +1 -1
- package/dist/codec/versioned/index.d.ts +1 -1
- package/dist/codec/versioned/index.d.ts.map +1 -1
- package/dist/codec/versioned/index.js +2 -2
- package/dist/codec/versioned/index.js.map +1 -1
- package/dist/core/index.d.ts +2 -2
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +3 -4
- package/dist/core/index.js.map +1 -1
- package/dist/core/rebase/changeRebaser.d.ts +36 -2
- 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 +2 -2
- package/dist/core/rebase/index.d.ts.map +1 -1
- package/dist/core/rebase/index.js +1 -2
- package/dist/core/rebase/index.js.map +1 -1
- package/dist/core/rebase/types.d.ts +6 -2
- package/dist/core/rebase/types.d.ts.map +1 -1
- package/dist/core/rebase/types.js +1 -12
- package/dist/core/rebase/types.js.map +1 -1
- package/dist/core/rebase/utils.js +3 -3
- package/dist/core/rebase/utils.js.map +1 -1
- package/dist/core/schema-stored/schema.js +3 -3
- package/dist/core/schema-stored/schema.js.map +1 -1
- package/dist/core/tree/anchorSet.d.ts.map +1 -1
- package/dist/core/tree/anchorSet.js +3 -4
- package/dist/core/tree/anchorSet.js.map +1 -1
- package/dist/core/tree/detachedFieldIndex.d.ts +1 -2
- package/dist/core/tree/detachedFieldIndex.d.ts.map +1 -1
- package/dist/core/tree/detachedFieldIndex.js +12 -56
- package/dist/core/tree/detachedFieldIndex.js.map +1 -1
- package/dist/core/tree/detachedFieldIndexCodecCommon.d.ts +18 -10
- package/dist/core/tree/detachedFieldIndexCodecCommon.d.ts.map +1 -1
- package/dist/core/tree/detachedFieldIndexCodecCommon.js +6 -6
- package/dist/core/tree/detachedFieldIndexCodecCommon.js.map +1 -1
- package/dist/core/tree/detachedFieldIndexCodecV1.d.ts +2 -3
- package/dist/core/tree/detachedFieldIndexCodecV1.d.ts.map +1 -1
- package/dist/core/tree/detachedFieldIndexCodecV1.js +4 -5
- package/dist/core/tree/detachedFieldIndexCodecV1.js.map +1 -1
- package/dist/core/tree/detachedFieldIndexCodecV2.d.ts +2 -3
- package/dist/core/tree/detachedFieldIndexCodecV2.d.ts.map +1 -1
- package/dist/core/tree/detachedFieldIndexCodecV2.js +4 -6
- package/dist/core/tree/detachedFieldIndexCodecV2.js.map +1 -1
- package/dist/core/tree/detachedFieldIndexCodecs.d.ts +5 -6
- package/dist/core/tree/detachedFieldIndexCodecs.d.ts.map +1 -1
- package/dist/core/tree/detachedFieldIndexCodecs.js +11 -41
- package/dist/core/tree/detachedFieldIndexCodecs.js.map +1 -1
- package/dist/core/tree/index.d.ts +1 -1
- package/dist/core/tree/index.d.ts.map +1 -1
- package/dist/core/tree/index.js +2 -2
- package/dist/core/tree/index.js.map +1 -1
- package/dist/core/tree/mapTree.js +1 -1
- package/dist/core/tree/mapTree.js.map +1 -1
- package/dist/core/tree/sparseTree.d.ts.map +1 -1
- package/dist/core/tree/sparseTree.js +1 -0
- package/dist/core/tree/sparseTree.js.map +1 -1
- package/dist/core/tree/treeTextFormat.d.ts.map +1 -1
- package/dist/core/tree/treeTextFormat.js +5 -9
- package/dist/core/tree/treeTextFormat.js.map +1 -1
- package/dist/feature-libraries/changeAtomIdBTree.d.ts +10 -0
- package/dist/feature-libraries/changeAtomIdBTree.d.ts.map +1 -0
- package/dist/feature-libraries/changeAtomIdBTree.js +16 -0
- package/dist/feature-libraries/changeAtomIdBTree.js.map +1 -0
- package/dist/feature-libraries/chunked-forest/basicChunk.js +1 -1
- package/dist/feature-libraries/chunked-forest/basicChunk.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/chunkedForest.js +6 -6
- package/dist/feature-libraries/chunked-forest/chunkedForest.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.js +7 -4
- package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/codecs.js +19 -11
- package/dist/feature-libraries/chunked-forest/codec/codecs.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js +3 -3
- package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncode.js +9 -5
- package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncode.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/uniformChunk.js +1 -1
- package/dist/feature-libraries/chunked-forest/uniformChunk.js.map +1 -1
- package/dist/feature-libraries/default-schema/defaultEditBuilder.d.ts +15 -5
- package/dist/feature-libraries/default-schema/defaultEditBuilder.d.ts.map +1 -1
- package/dist/feature-libraries/default-schema/defaultEditBuilder.js +19 -14
- package/dist/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
- package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts +1 -1
- package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
- package/dist/feature-libraries/default-schema/defaultFieldKinds.js +11 -1
- package/dist/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
- package/dist/feature-libraries/default-schema/mappedEditBuilder.d.ts +2 -0
- package/dist/feature-libraries/default-schema/mappedEditBuilder.d.ts.map +1 -1
- package/dist/feature-libraries/default-schema/mappedEditBuilder.js +6 -0
- package/dist/feature-libraries/default-schema/mappedEditBuilder.js.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyField.js +11 -13
- package/dist/feature-libraries/flex-tree/lazyField.js.map +1 -1
- package/dist/feature-libraries/index.d.ts +3 -2
- package/dist/feature-libraries/index.d.ts.map +1 -1
- package/dist/feature-libraries/index.js +9 -7
- package/dist/feature-libraries/index.js.map +1 -1
- package/dist/feature-libraries/indexing/anchorTreeIndex.js +6 -6
- package/dist/feature-libraries/indexing/anchorTreeIndex.js.map +1 -1
- package/dist/feature-libraries/mitigatedChangeFamily.d.ts.map +1 -1
- package/dist/feature-libraries/mitigatedChangeFamily.js +10 -1
- package/dist/feature-libraries/mitigatedChangeFamily.js.map +1 -1
- package/dist/feature-libraries/modular-schema/comparison.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/comparison.js +12 -9
- package/dist/feature-libraries/modular-schema/comparison.js.map +1 -1
- package/dist/feature-libraries/modular-schema/defaultRevisionReplacer.d.ts +25 -0
- package/dist/feature-libraries/modular-schema/defaultRevisionReplacer.d.ts.map +1 -0
- package/dist/feature-libraries/modular-schema/defaultRevisionReplacer.js +59 -0
- package/dist/feature-libraries/modular-schema/defaultRevisionReplacer.js.map +1 -0
- package/dist/feature-libraries/modular-schema/fieldChangeHandler.d.ts +3 -3
- 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 -4
- package/dist/feature-libraries/modular-schema/genericFieldKind.js.map +1 -1
- package/dist/feature-libraries/modular-schema/genericFieldKindCodecs.js +2 -2
- package/dist/feature-libraries/modular-schema/genericFieldKindCodecs.js.map +1 -1
- package/dist/feature-libraries/modular-schema/index.d.ts +4 -2
- package/dist/feature-libraries/modular-schema/index.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/index.js +11 -7
- package/dist/feature-libraries/modular-schema/index.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeCodecV1.d.ts +49 -0
- package/dist/feature-libraries/modular-schema/modularChangeCodecV1.d.ts.map +1 -0
- package/dist/feature-libraries/modular-schema/modularChangeCodecV1.js +315 -0
- package/dist/feature-libraries/modular-schema/modularChangeCodecV1.js.map +1 -0
- package/dist/feature-libraries/modular-schema/modularChangeCodecV2.d.ts +15 -0
- package/dist/feature-libraries/modular-schema/modularChangeCodecV2.d.ts.map +1 -0
- package/dist/feature-libraries/modular-schema/modularChangeCodecV2.js +31 -0
- package/dist/feature-libraries/modular-schema/modularChangeCodecV2.js.map +1 -0
- package/dist/feature-libraries/modular-schema/modularChangeCodecs.d.ts +2 -2
- package/dist/feature-libraries/modular-schema/modularChangeCodecs.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeCodecs.js +25 -288
- package/dist/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts +14 -8
- package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFamily.js +225 -195
- package/dist/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
- package/dist/feature-libraries/modular-schema/{modularChangeFormat.d.ts → modularChangeFormatV1.d.ts} +5 -6
- package/dist/feature-libraries/modular-schema/modularChangeFormatV1.d.ts.map +1 -0
- package/dist/feature-libraries/modular-schema/{modularChangeFormat.js → modularChangeFormatV1.js} +7 -7
- package/dist/feature-libraries/modular-schema/modularChangeFormatV1.js.map +1 -0
- package/dist/feature-libraries/modular-schema/modularChangeFormatV2.d.ts +112 -0
- package/dist/feature-libraries/modular-schema/modularChangeFormatV2.d.ts.map +1 -0
- package/dist/feature-libraries/modular-schema/modularChangeFormatV2.js +21 -0
- package/dist/feature-libraries/modular-schema/modularChangeFormatV2.js.map +1 -0
- package/dist/feature-libraries/modular-schema/modularChangeTypes.d.ts +13 -3
- package/dist/feature-libraries/modular-schema/modularChangeTypes.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeTypes.js.map +1 -1
- package/dist/feature-libraries/node-identifier/mockNodeIdentifierManager.js +1 -1
- package/dist/feature-libraries/node-identifier/mockNodeIdentifierManager.js.map +1 -1
- package/dist/feature-libraries/object-forest/objectForest.js +4 -4
- package/dist/feature-libraries/object-forest/objectForest.js.map +1 -1
- package/dist/feature-libraries/optional-field/optionalField.d.ts.map +1 -1
- package/dist/feature-libraries/optional-field/optionalField.js +34 -39
- package/dist/feature-libraries/optional-field/optionalField.js.map +1 -1
- package/dist/feature-libraries/schema-edits/schemaChangeCodecs.d.ts.map +1 -1
- package/dist/feature-libraries/schema-edits/schemaChangeCodecs.js +14 -2
- package/dist/feature-libraries/schema-edits/schemaChangeCodecs.js.map +1 -1
- package/dist/feature-libraries/schema-index/codec.d.ts +7 -21
- package/dist/feature-libraries/schema-index/codec.d.ts.map +1 -1
- package/dist/feature-libraries/schema-index/codec.js +28 -70
- package/dist/feature-libraries/schema-index/codec.js.map +1 -1
- package/dist/feature-libraries/schema-index/index.d.ts +2 -2
- package/dist/feature-libraries/schema-index/index.d.ts.map +1 -1
- package/dist/feature-libraries/schema-index/index.js +2 -5
- package/dist/feature-libraries/schema-index/index.js.map +1 -1
- package/dist/feature-libraries/schema-index/schemaSummarizer.d.ts +1 -9
- package/dist/feature-libraries/schema-index/schemaSummarizer.d.ts.map +1 -1
- package/dist/feature-libraries/schema-index/schemaSummarizer.js +1 -12
- package/dist/feature-libraries/schema-index/schemaSummarizer.js.map +1 -1
- package/dist/feature-libraries/schemaChecker.d.ts.map +1 -1
- package/dist/feature-libraries/schemaChecker.js +11 -6
- package/dist/feature-libraries/schemaChecker.js.map +1 -1
- package/dist/feature-libraries/sequence-field/compose.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/compose.js +17 -13
- package/dist/feature-libraries/sequence-field/compose.js.map +1 -1
- package/dist/feature-libraries/sequence-field/invert.js +5 -4
- package/dist/feature-libraries/sequence-field/invert.js.map +1 -1
- package/dist/feature-libraries/sequence-field/moveEffectTable.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/moveEffectTable.js +15 -9
- package/dist/feature-libraries/sequence-field/moveEffectTable.js.map +1 -1
- package/dist/feature-libraries/sequence-field/rebase.js +26 -18
- package/dist/feature-libraries/sequence-field/rebase.js.map +1 -1
- package/dist/feature-libraries/sequence-field/replaceRevisions.d.ts +2 -2
- package/dist/feature-libraries/sequence-field/replaceRevisions.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/replaceRevisions.js +40 -35
- package/dist/feature-libraries/sequence-field/replaceRevisions.js.map +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldCodecV2.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldCodecV2.js +16 -8
- 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 +4 -2
- package/dist/feature-libraries/sequence-field/sequenceFieldCodecV3.js.map +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldToDelta.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldToDelta.js +6 -3
- package/dist/feature-libraries/sequence-field/sequenceFieldToDelta.js.map +1 -1
- package/dist/feature-libraries/sequence-field/utils.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/utils.js +46 -27
- package/dist/feature-libraries/sequence-field/utils.js.map +1 -1
- package/dist/feature-libraries/treeCursorUtils.js +7 -7
- package/dist/feature-libraries/treeCursorUtils.js.map +1 -1
- package/dist/feature-libraries/treeTextCursor.js +2 -2
- package/dist/feature-libraries/treeTextCursor.js.map +1 -1
- package/dist/feature-libraries/valueUtilities.d.ts.map +1 -1
- package/dist/feature-libraries/valueUtilities.js +16 -8
- package/dist/feature-libraries/valueUtilities.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/shared-tree/schematizingTreeView.d.ts +2 -3
- package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/dist/shared-tree/schematizingTreeView.js +20 -9
- package/dist/shared-tree/schematizingTreeView.js.map +1 -1
- package/dist/shared-tree/sharedTree.d.ts.map +1 -1
- package/dist/shared-tree/sharedTree.js +61 -44
- package/dist/shared-tree/sharedTree.js.map +1 -1
- package/dist/shared-tree/sharedTreeChangeCodecs.d.ts +1 -1
- package/dist/shared-tree/sharedTreeChangeCodecs.d.ts.map +1 -1
- package/dist/shared-tree/sharedTreeChangeCodecs.js +9 -8
- package/dist/shared-tree/sharedTreeChangeCodecs.js.map +1 -1
- package/dist/shared-tree/sharedTreeChangeEnricher.d.ts.map +1 -1
- package/dist/shared-tree/sharedTreeChangeEnricher.js +4 -2
- package/dist/shared-tree/sharedTreeChangeEnricher.js.map +1 -1
- package/dist/shared-tree/sharedTreeChangeFamily.d.ts +3 -2
- package/dist/shared-tree/sharedTreeChangeFamily.d.ts.map +1 -1
- package/dist/shared-tree/sharedTreeChangeFamily.js +19 -14
- package/dist/shared-tree/sharedTreeChangeFamily.js.map +1 -1
- package/dist/shared-tree/sharedTreeEditBuilder.d.ts.map +1 -1
- package/dist/shared-tree/sharedTreeEditBuilder.js +1 -1
- package/dist/shared-tree/sharedTreeEditBuilder.js.map +1 -1
- package/dist/shared-tree/treeAlpha.d.ts +35 -29
- package/dist/shared-tree/treeAlpha.d.ts.map +1 -1
- package/dist/shared-tree/treeAlpha.js +21 -23
- package/dist/shared-tree/treeAlpha.js.map +1 -1
- package/dist/shared-tree/treeCheckout.d.ts +2 -0
- package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
- package/dist/shared-tree/treeCheckout.js +31 -18
- package/dist/shared-tree/treeCheckout.js.map +1 -1
- package/dist/shared-tree-core/branch.d.ts +3 -1
- package/dist/shared-tree-core/branch.d.ts.map +1 -1
- package/dist/shared-tree-core/branch.js +5 -3
- package/dist/shared-tree-core/branch.js.map +1 -1
- package/dist/shared-tree-core/branchCommitEnricher.d.ts.map +1 -1
- package/dist/shared-tree-core/branchCommitEnricher.js +1 -1
- package/dist/shared-tree-core/branchCommitEnricher.js.map +1 -1
- package/dist/shared-tree-core/editManager.js +1 -1
- package/dist/shared-tree-core/editManager.js.map +1 -1
- package/dist/shared-tree-core/editManagerCodecs.d.ts.map +1 -1
- package/dist/shared-tree-core/editManagerCodecs.js +9 -4
- package/dist/shared-tree-core/editManagerCodecs.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/editManagerSummarizer.js +3 -3
- package/dist/shared-tree-core/editManagerSummarizer.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/messageCodecVSharedBranches.d.ts.map +1 -1
- package/dist/shared-tree-core/messageCodecVSharedBranches.js +2 -1
- package/dist/shared-tree-core/messageCodecVSharedBranches.js.map +1 -1
- package/dist/shared-tree-core/messageCodecs.d.ts.map +1 -1
- package/dist/shared-tree-core/messageCodecs.js +8 -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 +3 -2
- package/dist/shared-tree-core/messageFormatV1ToV4.d.ts.map +1 -1
- package/dist/shared-tree-core/messageFormatV1ToV4.js +8 -1
- package/dist/shared-tree-core/messageFormatV1ToV4.js.map +1 -1
- package/dist/shared-tree-core/sequenceIdUtils.d.ts.map +1 -1
- package/dist/shared-tree-core/sequenceIdUtils.js +4 -4
- package/dist/shared-tree-core/sequenceIdUtils.js.map +1 -1
- package/dist/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
- package/dist/shared-tree-core/sharedTreeCore.js +12 -8
- package/dist/shared-tree-core/sharedTreeCore.js.map +1 -1
- package/dist/shared-tree-core/transaction.d.ts +25 -8
- package/dist/shared-tree-core/transaction.d.ts.map +1 -1
- package/dist/shared-tree-core/transaction.js +65 -30
- package/dist/shared-tree-core/transaction.js.map +1 -1
- package/dist/shared-tree-core/transactionEnricher.d.ts +2 -2
- package/dist/shared-tree-core/transactionEnricher.d.ts.map +1 -1
- package/dist/shared-tree-core/transactionEnricher.js +3 -3
- package/dist/shared-tree-core/transactionEnricher.js.map +1 -1
- package/dist/simple-tree/api/configuration.js +1 -1
- package/dist/simple-tree/api/configuration.js.map +1 -1
- package/dist/simple-tree/api/customTree.d.ts.map +1 -1
- package/dist/simple-tree/api/customTree.js +13 -9
- package/dist/simple-tree/api/customTree.js.map +1 -1
- package/dist/simple-tree/api/discrepancies.d.ts.map +1 -1
- package/dist/simple-tree/api/discrepancies.js +21 -17
- package/dist/simple-tree/api/discrepancies.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.map +1 -1
- package/dist/simple-tree/api/schemaFactory.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaFactory.js +12 -8
- package/dist/simple-tree/api/schemaFactory.js.map +1 -1
- package/dist/simple-tree/api/schemaFromSimple.js +18 -9
- package/dist/simple-tree/api/schemaFromSimple.js.map +1 -1
- package/dist/simple-tree/api/simpleSchemaCodec.js +10 -5
- package/dist/simple-tree/api/simpleSchemaCodec.js.map +1 -1
- package/dist/simple-tree/api/simpleSchemaToJsonSchema.d.ts.map +1 -1
- package/dist/simple-tree/api/simpleSchemaToJsonSchema.js +15 -11
- package/dist/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -1
- package/dist/simple-tree/api/simpleTreeIndex.js +10 -10
- package/dist/simple-tree/api/simpleTreeIndex.js.map +1 -1
- package/dist/simple-tree/api/storedSchema.d.ts.map +1 -1
- package/dist/simple-tree/api/storedSchema.js +2 -3
- package/dist/simple-tree/api/storedSchema.js.map +1 -1
- package/dist/simple-tree/api/transactionTypes.d.ts +17 -4
- package/dist/simple-tree/api/transactionTypes.d.ts.map +1 -1
- package/dist/simple-tree/api/transactionTypes.js.map +1 -1
- package/dist/simple-tree/api/treeNodeApi.d.ts.map +1 -1
- package/dist/simple-tree/api/treeNodeApi.js +21 -13
- package/dist/simple-tree/api/treeNodeApi.js.map +1 -1
- package/dist/simple-tree/api/verboseTree.d.ts.map +1 -1
- package/dist/simple-tree/api/verboseTree.js +14 -9
- package/dist/simple-tree/api/verboseTree.js.map +1 -1
- package/dist/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
- package/dist/simple-tree/core/treeNodeKernel.js +6 -3
- package/dist/simple-tree/core/treeNodeKernel.js.map +1 -1
- package/dist/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -1
- package/dist/simple-tree/core/unhydratedFlexTree.js +20 -15
- package/dist/simple-tree/core/unhydratedFlexTree.js.map +1 -1
- package/dist/simple-tree/getTreeNodeForField.d.ts.map +1 -1
- package/dist/simple-tree/getTreeNodeForField.js +2 -1
- package/dist/simple-tree/getTreeNodeForField.js.map +1 -1
- package/dist/simple-tree/index.d.ts +1 -1
- package/dist/simple-tree/index.d.ts.map +1 -1
- package/dist/simple-tree/index.js.map +1 -1
- package/dist/simple-tree/leafNodeSchema.js +9 -6
- package/dist/simple-tree/leafNodeSchema.js.map +1 -1
- package/dist/simple-tree/node-kinds/array/arrayNode.js +15 -15
- package/dist/simple-tree/node-kinds/array/arrayNode.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 +4 -5
- 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 +2 -3
- package/dist/simple-tree/node-kinds/record/recordNode.js.map +1 -1
- package/dist/simple-tree/toStoredSchema.d.ts.map +1 -1
- package/dist/simple-tree/toStoredSchema.js +9 -5
- package/dist/simple-tree/toStoredSchema.js.map +1 -1
- package/dist/treeFactory.js +7 -3
- package/dist/treeFactory.js.map +1 -1
- package/dist/util/bTreeUtils.js +1 -1
- package/dist/util/bTreeUtils.js.map +1 -1
- package/dist/util/breakable.js +7 -9
- package/dist/util/breakable.js.map +1 -1
- package/dist/util/idAllocator.d.ts.map +1 -1
- package/dist/util/idAllocator.js +1 -2
- package/dist/util/idAllocator.js.map +1 -1
- package/dist/util/nestedMap.d.ts.map +1 -1
- package/dist/util/nestedMap.js +1 -1
- package/dist/util/nestedMap.js.map +1 -1
- package/dist/util/utils.d.ts.map +1 -1
- package/dist/util/utils.js +16 -15
- package/dist/util/utils.js.map +1 -1
- package/eslint.config.mts +1 -16
- package/lib/alpha.d.ts +4 -0
- package/lib/codec/codec.d.ts +31 -3
- package/lib/codec/codec.d.ts.map +1 -1
- package/lib/codec/codec.js +10 -0
- package/lib/codec/codec.js.map +1 -1
- package/lib/codec/index.d.ts +2 -2
- 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 +80 -22
- package/lib/codec/versioned/codec.d.ts.map +1 -1
- package/lib/codec/versioned/codec.js +138 -15
- package/lib/codec/versioned/codec.js.map +1 -1
- package/lib/codec/versioned/index.d.ts +1 -1
- package/lib/codec/versioned/index.d.ts.map +1 -1
- package/lib/codec/versioned/index.js +1 -1
- package/lib/codec/versioned/index.js.map +1 -1
- package/lib/core/index.d.ts +2 -2
- 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 +36 -2
- 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 +2 -2
- 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 +6 -2
- package/lib/core/rebase/types.d.ts.map +1 -1
- package/lib/core/rebase/types.js +0 -10
- package/lib/core/rebase/types.js.map +1 -1
- package/lib/core/rebase/utils.js +3 -3
- package/lib/core/rebase/utils.js.map +1 -1
- package/lib/core/schema-stored/schema.js +3 -3
- package/lib/core/schema-stored/schema.js.map +1 -1
- package/lib/core/tree/anchorSet.d.ts.map +1 -1
- package/lib/core/tree/anchorSet.js +3 -4
- package/lib/core/tree/anchorSet.js.map +1 -1
- package/lib/core/tree/detachedFieldIndex.d.ts +1 -2
- package/lib/core/tree/detachedFieldIndex.d.ts.map +1 -1
- package/lib/core/tree/detachedFieldIndex.js +13 -57
- package/lib/core/tree/detachedFieldIndex.js.map +1 -1
- package/lib/core/tree/detachedFieldIndexCodecCommon.d.ts +18 -10
- package/lib/core/tree/detachedFieldIndexCodecCommon.d.ts.map +1 -1
- package/lib/core/tree/detachedFieldIndexCodecCommon.js +4 -4
- package/lib/core/tree/detachedFieldIndexCodecCommon.js.map +1 -1
- package/lib/core/tree/detachedFieldIndexCodecV1.d.ts +2 -3
- package/lib/core/tree/detachedFieldIndexCodecV1.d.ts.map +1 -1
- package/lib/core/tree/detachedFieldIndexCodecV1.js +4 -5
- package/lib/core/tree/detachedFieldIndexCodecV1.js.map +1 -1
- package/lib/core/tree/detachedFieldIndexCodecV2.d.ts +2 -3
- package/lib/core/tree/detachedFieldIndexCodecV2.d.ts.map +1 -1
- package/lib/core/tree/detachedFieldIndexCodecV2.js +4 -6
- package/lib/core/tree/detachedFieldIndexCodecV2.js.map +1 -1
- package/lib/core/tree/detachedFieldIndexCodecs.d.ts +5 -6
- package/lib/core/tree/detachedFieldIndexCodecs.d.ts.map +1 -1
- package/lib/core/tree/detachedFieldIndexCodecs.js +12 -39
- package/lib/core/tree/detachedFieldIndexCodecs.js.map +1 -1
- package/lib/core/tree/index.d.ts +1 -1
- 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/mapTree.js +1 -1
- package/lib/core/tree/mapTree.js.map +1 -1
- package/lib/core/tree/sparseTree.d.ts.map +1 -1
- package/lib/core/tree/sparseTree.js +1 -0
- package/lib/core/tree/sparseTree.js.map +1 -1
- package/lib/core/tree/treeTextFormat.d.ts.map +1 -1
- package/lib/core/tree/treeTextFormat.js +5 -9
- package/lib/core/tree/treeTextFormat.js.map +1 -1
- package/lib/feature-libraries/changeAtomIdBTree.d.ts +10 -0
- package/lib/feature-libraries/changeAtomIdBTree.d.ts.map +1 -0
- package/lib/feature-libraries/changeAtomIdBTree.js +11 -0
- package/lib/feature-libraries/changeAtomIdBTree.js.map +1 -0
- package/lib/feature-libraries/chunked-forest/basicChunk.js +1 -1
- package/lib/feature-libraries/chunked-forest/basicChunk.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/chunkedForest.js +6 -6
- package/lib/feature-libraries/chunked-forest/chunkedForest.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.js +7 -4
- package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/codecs.js +19 -11
- package/lib/feature-libraries/chunked-forest/codec/codecs.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js +3 -3
- package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncode.js +9 -5
- package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncode.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/uniformChunk.js +1 -1
- package/lib/feature-libraries/chunked-forest/uniformChunk.js.map +1 -1
- package/lib/feature-libraries/default-schema/defaultEditBuilder.d.ts +15 -5
- package/lib/feature-libraries/default-schema/defaultEditBuilder.d.ts.map +1 -1
- package/lib/feature-libraries/default-schema/defaultEditBuilder.js +19 -14
- package/lib/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
- package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts +1 -1
- package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
- package/lib/feature-libraries/default-schema/defaultFieldKinds.js +11 -1
- package/lib/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
- package/lib/feature-libraries/default-schema/mappedEditBuilder.d.ts +2 -0
- package/lib/feature-libraries/default-schema/mappedEditBuilder.d.ts.map +1 -1
- package/lib/feature-libraries/default-schema/mappedEditBuilder.js +6 -0
- package/lib/feature-libraries/default-schema/mappedEditBuilder.js.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyField.js +11 -13
- package/lib/feature-libraries/flex-tree/lazyField.js.map +1 -1
- package/lib/feature-libraries/index.d.ts +3 -2
- package/lib/feature-libraries/index.d.ts.map +1 -1
- package/lib/feature-libraries/index.js +3 -2
- package/lib/feature-libraries/index.js.map +1 -1
- package/lib/feature-libraries/indexing/anchorTreeIndex.js +6 -6
- package/lib/feature-libraries/indexing/anchorTreeIndex.js.map +1 -1
- package/lib/feature-libraries/mitigatedChangeFamily.d.ts.map +1 -1
- package/lib/feature-libraries/mitigatedChangeFamily.js +10 -1
- package/lib/feature-libraries/mitigatedChangeFamily.js.map +1 -1
- package/lib/feature-libraries/modular-schema/comparison.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/comparison.js +12 -9
- package/lib/feature-libraries/modular-schema/comparison.js.map +1 -1
- package/lib/feature-libraries/modular-schema/defaultRevisionReplacer.d.ts +25 -0
- package/lib/feature-libraries/modular-schema/defaultRevisionReplacer.d.ts.map +1 -0
- package/lib/feature-libraries/modular-schema/defaultRevisionReplacer.js +55 -0
- package/lib/feature-libraries/modular-schema/defaultRevisionReplacer.js.map +1 -0
- package/lib/feature-libraries/modular-schema/fieldChangeHandler.d.ts +3 -3
- 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 +5 -5
- package/lib/feature-libraries/modular-schema/genericFieldKind.js.map +1 -1
- package/lib/feature-libraries/modular-schema/genericFieldKindCodecs.js +1 -1
- package/lib/feature-libraries/modular-schema/genericFieldKindCodecs.js.map +1 -1
- package/lib/feature-libraries/modular-schema/index.d.ts +4 -2
- package/lib/feature-libraries/modular-schema/index.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/index.js +3 -1
- package/lib/feature-libraries/modular-schema/index.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeCodecV1.d.ts +49 -0
- package/lib/feature-libraries/modular-schema/modularChangeCodecV1.d.ts.map +1 -0
- package/lib/feature-libraries/modular-schema/modularChangeCodecV1.js +298 -0
- package/lib/feature-libraries/modular-schema/modularChangeCodecV1.js.map +1 -0
- package/lib/feature-libraries/modular-schema/modularChangeCodecV2.d.ts +15 -0
- package/lib/feature-libraries/modular-schema/modularChangeCodecV2.d.ts.map +1 -0
- package/lib/feature-libraries/modular-schema/modularChangeCodecV2.js +27 -0
- package/lib/feature-libraries/modular-schema/modularChangeCodecV2.js.map +1 -0
- package/lib/feature-libraries/modular-schema/modularChangeCodecs.d.ts +2 -2
- package/lib/feature-libraries/modular-schema/modularChangeCodecs.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeCodecs.js +27 -290
- package/lib/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts +14 -8
- package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFamily.js +118 -88
- package/lib/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
- package/lib/feature-libraries/modular-schema/{modularChangeFormat.d.ts → modularChangeFormatV1.d.ts} +5 -6
- package/lib/feature-libraries/modular-schema/modularChangeFormatV1.d.ts.map +1 -0
- package/lib/feature-libraries/modular-schema/{modularChangeFormat.js → modularChangeFormatV1.js} +4 -4
- package/lib/feature-libraries/modular-schema/modularChangeFormatV1.js.map +1 -0
- package/lib/feature-libraries/modular-schema/modularChangeFormatV2.d.ts +112 -0
- package/lib/feature-libraries/modular-schema/modularChangeFormatV2.d.ts.map +1 -0
- package/lib/feature-libraries/modular-schema/modularChangeFormatV2.js +18 -0
- package/lib/feature-libraries/modular-schema/modularChangeFormatV2.js.map +1 -0
- package/lib/feature-libraries/modular-schema/modularChangeTypes.d.ts +13 -3
- package/lib/feature-libraries/modular-schema/modularChangeTypes.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeTypes.js.map +1 -1
- package/lib/feature-libraries/node-identifier/mockNodeIdentifierManager.js +1 -1
- package/lib/feature-libraries/node-identifier/mockNodeIdentifierManager.js.map +1 -1
- package/lib/feature-libraries/object-forest/objectForest.js +4 -4
- package/lib/feature-libraries/object-forest/objectForest.js.map +1 -1
- package/lib/feature-libraries/optional-field/optionalField.d.ts.map +1 -1
- package/lib/feature-libraries/optional-field/optionalField.js +35 -40
- package/lib/feature-libraries/optional-field/optionalField.js.map +1 -1
- package/lib/feature-libraries/schema-edits/schemaChangeCodecs.d.ts.map +1 -1
- package/lib/feature-libraries/schema-edits/schemaChangeCodecs.js +15 -3
- package/lib/feature-libraries/schema-edits/schemaChangeCodecs.js.map +1 -1
- package/lib/feature-libraries/schema-index/codec.d.ts +7 -21
- package/lib/feature-libraries/schema-index/codec.d.ts.map +1 -1
- package/lib/feature-libraries/schema-index/codec.js +30 -68
- package/lib/feature-libraries/schema-index/codec.js.map +1 -1
- package/lib/feature-libraries/schema-index/index.d.ts +2 -2
- package/lib/feature-libraries/schema-index/index.d.ts.map +1 -1
- package/lib/feature-libraries/schema-index/index.js +2 -2
- package/lib/feature-libraries/schema-index/index.js.map +1 -1
- package/lib/feature-libraries/schema-index/schemaSummarizer.d.ts +1 -9
- package/lib/feature-libraries/schema-index/schemaSummarizer.d.ts.map +1 -1
- package/lib/feature-libraries/schema-index/schemaSummarizer.js +0 -10
- package/lib/feature-libraries/schema-index/schemaSummarizer.js.map +1 -1
- package/lib/feature-libraries/schemaChecker.d.ts.map +1 -1
- package/lib/feature-libraries/schemaChecker.js +11 -6
- package/lib/feature-libraries/schemaChecker.js.map +1 -1
- package/lib/feature-libraries/sequence-field/compose.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/compose.js +17 -13
- package/lib/feature-libraries/sequence-field/compose.js.map +1 -1
- package/lib/feature-libraries/sequence-field/invert.js +5 -4
- package/lib/feature-libraries/sequence-field/invert.js.map +1 -1
- package/lib/feature-libraries/sequence-field/moveEffectTable.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/moveEffectTable.js +15 -9
- package/lib/feature-libraries/sequence-field/moveEffectTable.js.map +1 -1
- package/lib/feature-libraries/sequence-field/rebase.js +26 -18
- package/lib/feature-libraries/sequence-field/rebase.js.map +1 -1
- package/lib/feature-libraries/sequence-field/replaceRevisions.d.ts +2 -2
- package/lib/feature-libraries/sequence-field/replaceRevisions.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/replaceRevisions.js +41 -36
- package/lib/feature-libraries/sequence-field/replaceRevisions.js.map +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldCodecV2.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldCodecV2.js +16 -8
- 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 +4 -2
- package/lib/feature-libraries/sequence-field/sequenceFieldCodecV3.js.map +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldToDelta.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldToDelta.js +6 -3
- package/lib/feature-libraries/sequence-field/sequenceFieldToDelta.js.map +1 -1
- package/lib/feature-libraries/sequence-field/utils.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/utils.js +46 -27
- package/lib/feature-libraries/sequence-field/utils.js.map +1 -1
- package/lib/feature-libraries/treeCursorUtils.js +7 -7
- package/lib/feature-libraries/treeCursorUtils.js.map +1 -1
- package/lib/feature-libraries/treeTextCursor.js +2 -2
- package/lib/feature-libraries/treeTextCursor.js.map +1 -1
- package/lib/feature-libraries/valueUtilities.d.ts.map +1 -1
- package/lib/feature-libraries/valueUtilities.js +16 -8
- package/lib/feature-libraries/valueUtilities.js.map +1 -1
- package/lib/index.d.ts +2 -2
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js.map +1 -1
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/shared-tree/schematizingTreeView.d.ts +2 -3
- package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/lib/shared-tree/schematizingTreeView.js +20 -9
- package/lib/shared-tree/schematizingTreeView.js.map +1 -1
- package/lib/shared-tree/sharedTree.d.ts.map +1 -1
- package/lib/shared-tree/sharedTree.js +30 -13
- package/lib/shared-tree/sharedTree.js.map +1 -1
- package/lib/shared-tree/sharedTreeChangeCodecs.d.ts +1 -1
- package/lib/shared-tree/sharedTreeChangeCodecs.d.ts.map +1 -1
- package/lib/shared-tree/sharedTreeChangeCodecs.js +9 -8
- package/lib/shared-tree/sharedTreeChangeCodecs.js.map +1 -1
- package/lib/shared-tree/sharedTreeChangeEnricher.d.ts.map +1 -1
- package/lib/shared-tree/sharedTreeChangeEnricher.js +4 -2
- package/lib/shared-tree/sharedTreeChangeEnricher.js.map +1 -1
- package/lib/shared-tree/sharedTreeChangeFamily.d.ts +3 -2
- package/lib/shared-tree/sharedTreeChangeFamily.d.ts.map +1 -1
- package/lib/shared-tree/sharedTreeChangeFamily.js +19 -14
- package/lib/shared-tree/sharedTreeChangeFamily.js.map +1 -1
- package/lib/shared-tree/sharedTreeEditBuilder.d.ts.map +1 -1
- package/lib/shared-tree/sharedTreeEditBuilder.js +1 -1
- package/lib/shared-tree/sharedTreeEditBuilder.js.map +1 -1
- package/lib/shared-tree/treeAlpha.d.ts +35 -29
- package/lib/shared-tree/treeAlpha.d.ts.map +1 -1
- package/lib/shared-tree/treeAlpha.js +21 -23
- package/lib/shared-tree/treeAlpha.js.map +1 -1
- package/lib/shared-tree/treeCheckout.d.ts +2 -0
- package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
- package/lib/shared-tree/treeCheckout.js +32 -19
- package/lib/shared-tree/treeCheckout.js.map +1 -1
- package/lib/shared-tree-core/branch.d.ts +3 -1
- package/lib/shared-tree-core/branch.d.ts.map +1 -1
- package/lib/shared-tree-core/branch.js +5 -3
- package/lib/shared-tree-core/branch.js.map +1 -1
- package/lib/shared-tree-core/branchCommitEnricher.d.ts.map +1 -1
- package/lib/shared-tree-core/branchCommitEnricher.js +2 -2
- package/lib/shared-tree-core/branchCommitEnricher.js.map +1 -1
- package/lib/shared-tree-core/editManager.js +1 -1
- package/lib/shared-tree-core/editManager.js.map +1 -1
- package/lib/shared-tree-core/editManagerCodecs.d.ts.map +1 -1
- package/lib/shared-tree-core/editManagerCodecs.js +9 -4
- package/lib/shared-tree-core/editManagerCodecs.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/editManagerSummarizer.js +3 -3
- package/lib/shared-tree-core/editManagerSummarizer.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/messageCodecVSharedBranches.d.ts.map +1 -1
- package/lib/shared-tree-core/messageCodecVSharedBranches.js +2 -1
- package/lib/shared-tree-core/messageCodecVSharedBranches.js.map +1 -1
- package/lib/shared-tree-core/messageCodecs.d.ts.map +1 -1
- package/lib/shared-tree-core/messageCodecs.js +8 -4
- 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 +3 -2
- package/lib/shared-tree-core/messageFormatV1ToV4.d.ts.map +1 -1
- package/lib/shared-tree-core/messageFormatV1ToV4.js +8 -1
- package/lib/shared-tree-core/messageFormatV1ToV4.js.map +1 -1
- package/lib/shared-tree-core/sequenceIdUtils.d.ts.map +1 -1
- package/lib/shared-tree-core/sequenceIdUtils.js +4 -4
- package/lib/shared-tree-core/sequenceIdUtils.js.map +1 -1
- package/lib/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
- package/lib/shared-tree-core/sharedTreeCore.js +12 -8
- package/lib/shared-tree-core/sharedTreeCore.js.map +1 -1
- package/lib/shared-tree-core/transaction.d.ts +25 -8
- package/lib/shared-tree-core/transaction.d.ts.map +1 -1
- package/lib/shared-tree-core/transaction.js +67 -32
- package/lib/shared-tree-core/transaction.js.map +1 -1
- package/lib/shared-tree-core/transactionEnricher.d.ts +2 -2
- package/lib/shared-tree-core/transactionEnricher.d.ts.map +1 -1
- package/lib/shared-tree-core/transactionEnricher.js +3 -3
- package/lib/shared-tree-core/transactionEnricher.js.map +1 -1
- package/lib/simple-tree/api/configuration.js +1 -1
- package/lib/simple-tree/api/configuration.js.map +1 -1
- package/lib/simple-tree/api/customTree.d.ts.map +1 -1
- package/lib/simple-tree/api/customTree.js +13 -9
- package/lib/simple-tree/api/customTree.js.map +1 -1
- package/lib/simple-tree/api/discrepancies.d.ts.map +1 -1
- package/lib/simple-tree/api/discrepancies.js +21 -17
- package/lib/simple-tree/api/discrepancies.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.map +1 -1
- package/lib/simple-tree/api/schemaFactory.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaFactory.js +12 -8
- package/lib/simple-tree/api/schemaFactory.js.map +1 -1
- package/lib/simple-tree/api/schemaFromSimple.js +18 -9
- package/lib/simple-tree/api/schemaFromSimple.js.map +1 -1
- package/lib/simple-tree/api/simpleSchemaCodec.js +10 -5
- package/lib/simple-tree/api/simpleSchemaCodec.js.map +1 -1
- package/lib/simple-tree/api/simpleSchemaToJsonSchema.d.ts.map +1 -1
- package/lib/simple-tree/api/simpleSchemaToJsonSchema.js +15 -11
- package/lib/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -1
- package/lib/simple-tree/api/simpleTreeIndex.js +10 -10
- package/lib/simple-tree/api/simpleTreeIndex.js.map +1 -1
- package/lib/simple-tree/api/storedSchema.d.ts.map +1 -1
- package/lib/simple-tree/api/storedSchema.js +4 -7
- package/lib/simple-tree/api/storedSchema.js.map +1 -1
- package/lib/simple-tree/api/transactionTypes.d.ts +17 -4
- package/lib/simple-tree/api/transactionTypes.d.ts.map +1 -1
- package/lib/simple-tree/api/transactionTypes.js.map +1 -1
- package/lib/simple-tree/api/treeNodeApi.d.ts.map +1 -1
- package/lib/simple-tree/api/treeNodeApi.js +21 -13
- package/lib/simple-tree/api/treeNodeApi.js.map +1 -1
- package/lib/simple-tree/api/verboseTree.d.ts.map +1 -1
- package/lib/simple-tree/api/verboseTree.js +14 -9
- package/lib/simple-tree/api/verboseTree.js.map +1 -1
- package/lib/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
- package/lib/simple-tree/core/treeNodeKernel.js +6 -3
- package/lib/simple-tree/core/treeNodeKernel.js.map +1 -1
- package/lib/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -1
- package/lib/simple-tree/core/unhydratedFlexTree.js +20 -15
- package/lib/simple-tree/core/unhydratedFlexTree.js.map +1 -1
- package/lib/simple-tree/getTreeNodeForField.d.ts.map +1 -1
- package/lib/simple-tree/getTreeNodeForField.js +2 -1
- package/lib/simple-tree/getTreeNodeForField.js.map +1 -1
- package/lib/simple-tree/index.d.ts +1 -1
- package/lib/simple-tree/index.d.ts.map +1 -1
- package/lib/simple-tree/index.js.map +1 -1
- package/lib/simple-tree/leafNodeSchema.js +9 -6
- package/lib/simple-tree/leafNodeSchema.js.map +1 -1
- package/lib/simple-tree/node-kinds/array/arrayNode.js +15 -15
- package/lib/simple-tree/node-kinds/array/arrayNode.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 +4 -5
- 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 +2 -3
- package/lib/simple-tree/node-kinds/record/recordNode.js.map +1 -1
- package/lib/simple-tree/toStoredSchema.d.ts.map +1 -1
- package/lib/simple-tree/toStoredSchema.js +9 -5
- package/lib/simple-tree/toStoredSchema.js.map +1 -1
- package/lib/treeFactory.js +7 -3
- package/lib/treeFactory.js.map +1 -1
- package/lib/util/bTreeUtils.js +1 -1
- package/lib/util/bTreeUtils.js.map +1 -1
- package/lib/util/breakable.js +7 -9
- package/lib/util/breakable.js.map +1 -1
- package/lib/util/idAllocator.d.ts.map +1 -1
- package/lib/util/idAllocator.js +1 -2
- package/lib/util/idAllocator.js.map +1 -1
- package/lib/util/nestedMap.d.ts.map +1 -1
- package/lib/util/nestedMap.js +1 -1
- package/lib/util/nestedMap.js.map +1 -1
- package/lib/util/utils.d.ts.map +1 -1
- package/lib/util/utils.js +16 -15
- package/lib/util/utils.js.map +1 -1
- package/package.json +32 -32
- package/src/codec/codec.ts +48 -8
- package/src/codec/index.ts +4 -1
- package/src/codec/versioned/codec.ts +340 -22
- package/src/codec/versioned/index.ts +3 -1
- package/src/core/index.ts +2 -2
- package/src/core/rebase/changeRebaser.ts +40 -6
- package/src/core/rebase/index.ts +1 -1
- package/src/core/rebase/types.ts +6 -18
- package/src/core/rebase/utils.ts +3 -3
- package/src/core/schema-stored/schema.ts +3 -3
- package/src/core/tree/anchorSet.ts +3 -4
- package/src/core/tree/detachedFieldIndex.ts +13 -74
- package/src/core/tree/detachedFieldIndexCodecCommon.ts +4 -8
- package/src/core/tree/detachedFieldIndexCodecV1.ts +3 -7
- package/src/core/tree/detachedFieldIndexCodecV2.ts +5 -9
- package/src/core/tree/detachedFieldIndexCodecs.ts +21 -64
- package/src/core/tree/index.ts +1 -1
- package/src/core/tree/mapTree.ts +1 -1
- package/src/core/tree/sparseTree.ts +1 -0
- package/src/core/tree/treeTextFormat.ts +5 -9
- package/src/feature-libraries/changeAtomIdBTree.ts +24 -0
- package/src/feature-libraries/chunked-forest/basicChunk.ts +1 -1
- package/src/feature-libraries/chunked-forest/chunkedForest.ts +5 -5
- package/src/feature-libraries/chunked-forest/codec/chunkDecoding.ts +7 -4
- package/src/feature-libraries/chunked-forest/codec/codecs.ts +19 -11
- package/src/feature-libraries/chunked-forest/codec/compressedEncode.ts +3 -3
- package/src/feature-libraries/chunked-forest/codec/schemaBasedEncode.ts +9 -5
- package/src/feature-libraries/chunked-forest/uniformChunk.ts +1 -1
- package/src/feature-libraries/default-schema/defaultEditBuilder.ts +48 -17
- package/src/feature-libraries/default-schema/defaultFieldKinds.ts +12 -2
- package/src/feature-libraries/default-schema/mappedEditBuilder.ts +6 -0
- package/src/feature-libraries/flex-tree/lazyField.ts +13 -14
- package/src/feature-libraries/index.ts +10 -5
- package/src/feature-libraries/indexing/anchorTreeIndex.ts +5 -5
- package/src/feature-libraries/mitigatedChangeFamily.ts +11 -6
- package/src/feature-libraries/modular-schema/comparison.ts +12 -9
- package/src/feature-libraries/modular-schema/defaultRevisionReplacer.ts +70 -0
- package/src/feature-libraries/modular-schema/fieldChangeHandler.ts +3 -6
- package/src/feature-libraries/modular-schema/genericFieldKind.ts +5 -7
- package/src/feature-libraries/modular-schema/genericFieldKindCodecs.ts +1 -1
- package/src/feature-libraries/modular-schema/index.ts +5 -2
- package/src/feature-libraries/modular-schema/modularChangeCodecV1.ts +703 -0
- package/src/feature-libraries/modular-schema/modularChangeCodecV2.ts +89 -0
- package/src/feature-libraries/modular-schema/modularChangeCodecs.ts +39 -523
- package/src/feature-libraries/modular-schema/modularChangeFamily.ts +159 -125
- package/src/feature-libraries/modular-schema/{modularChangeFormat.ts → modularChangeFormatV1.ts} +4 -4
- package/src/feature-libraries/modular-schema/modularChangeFormatV2.ts +34 -0
- package/src/feature-libraries/modular-schema/modularChangeTypes.ts +13 -4
- package/src/feature-libraries/node-identifier/mockNodeIdentifierManager.ts +1 -1
- package/src/feature-libraries/object-forest/objectForest.ts +4 -4
- package/src/feature-libraries/optional-field/optionalField.ts +34 -46
- package/src/feature-libraries/schema-edits/schemaChangeCodecs.ts +18 -3
- package/src/feature-libraries/schema-index/codec.ts +30 -90
- package/src/feature-libraries/schema-index/index.ts +2 -4
- package/src/feature-libraries/schema-index/schemaSummarizer.ts +0 -17
- package/src/feature-libraries/schemaChecker.ts +11 -6
- package/src/feature-libraries/sequence-field/compose.ts +17 -13
- package/src/feature-libraries/sequence-field/invert.ts +5 -4
- package/src/feature-libraries/sequence-field/moveEffectTable.ts +15 -9
- package/src/feature-libraries/sequence-field/rebase.ts +26 -18
- package/src/feature-libraries/sequence-field/replaceRevisions.ts +52 -56
- package/src/feature-libraries/sequence-field/sequenceFieldCodecV2.ts +16 -8
- package/src/feature-libraries/sequence-field/sequenceFieldCodecV3.ts +4 -2
- package/src/feature-libraries/sequence-field/sequenceFieldToDelta.ts +6 -3
- package/src/feature-libraries/sequence-field/utils.ts +46 -27
- package/src/feature-libraries/treeCursorUtils.ts +7 -7
- package/src/feature-libraries/treeTextCursor.ts +2 -2
- package/src/feature-libraries/valueUtilities.ts +16 -8
- package/src/index.ts +4 -0
- package/src/packageVersion.ts +1 -1
- package/src/shared-tree/schematizingTreeView.ts +23 -13
- package/src/shared-tree/sharedTree.ts +30 -14
- package/src/shared-tree/sharedTreeChangeCodecs.ts +10 -9
- package/src/shared-tree/sharedTreeChangeEnricher.ts +4 -2
- package/src/shared-tree/sharedTreeChangeFamily.ts +29 -19
- package/src/shared-tree/sharedTreeEditBuilder.ts +9 -5
- package/src/shared-tree/treeAlpha.ts +60 -51
- package/src/shared-tree/treeCheckout.ts +66 -50
- package/src/shared-tree-core/branch.ts +8 -3
- package/src/shared-tree-core/branchCommitEnricher.ts +3 -8
- package/src/shared-tree-core/editManager.ts +1 -1
- package/src/shared-tree-core/editManagerCodecs.ts +9 -4
- package/src/shared-tree-core/editManagerFormatCommons.ts +6 -0
- package/src/shared-tree-core/editManagerFormatV1toV4.ts +3 -1
- package/src/shared-tree-core/editManagerSummarizer.ts +3 -3
- package/src/shared-tree-core/messageCodecV1ToV4.ts +2 -1
- package/src/shared-tree-core/messageCodecVSharedBranches.ts +2 -1
- package/src/shared-tree-core/messageCodecs.ts +8 -4
- package/src/shared-tree-core/messageFormat.ts +6 -1
- package/src/shared-tree-core/messageFormatV1ToV4.ts +16 -2
- package/src/shared-tree-core/sequenceIdUtils.ts +4 -4
- package/src/shared-tree-core/sharedTreeCore.ts +11 -7
- package/src/shared-tree-core/transaction.ts +115 -56
- package/src/shared-tree-core/transactionEnricher.ts +5 -6
- package/src/simple-tree/api/configuration.ts +1 -1
- package/src/simple-tree/api/customTree.ts +14 -10
- package/src/simple-tree/api/discrepancies.ts +23 -17
- package/src/simple-tree/api/index.ts +2 -0
- package/src/simple-tree/api/schemaFactory.ts +11 -7
- package/src/simple-tree/api/schemaFromSimple.ts +18 -9
- package/src/simple-tree/api/simpleSchemaCodec.ts +10 -5
- package/src/simple-tree/api/simpleSchemaToJsonSchema.ts +17 -13
- package/src/simple-tree/api/simpleTreeIndex.ts +8 -8
- package/src/simple-tree/api/storedSchema.ts +10 -7
- package/src/simple-tree/api/transactionTypes.ts +19 -4
- package/src/simple-tree/api/treeNodeApi.ts +21 -13
- package/src/simple-tree/api/verboseTree.ts +14 -9
- package/src/simple-tree/core/treeNodeKernel.ts +6 -3
- package/src/simple-tree/core/unhydratedFlexTree.ts +22 -17
- package/src/simple-tree/getTreeNodeForField.ts +2 -1
- package/src/simple-tree/index.ts +2 -0
- package/src/simple-tree/leafNodeSchema.ts +8 -5
- package/src/simple-tree/node-kinds/array/arrayNode.ts +23 -23
- package/src/simple-tree/node-kinds/object/objectNode.ts +4 -5
- package/src/simple-tree/node-kinds/record/recordNode.ts +2 -3
- package/src/simple-tree/toStoredSchema.ts +9 -5
- package/src/treeFactory.ts +10 -5
- package/src/util/bTreeUtils.ts +1 -1
- package/src/util/breakable.ts +9 -9
- package/src/util/idAllocator.ts +1 -2
- package/src/util/nestedMap.ts +1 -3
- package/src/util/utils.ts +14 -13
- package/dist/feature-libraries/modular-schema/modularChangeFormat.d.ts.map +0 -1
- package/dist/feature-libraries/modular-schema/modularChangeFormat.js.map +0 -1
- package/lib/feature-libraries/modular-schema/modularChangeFormat.d.ts.map +0 -1
- package/lib/feature-libraries/modular-schema/modularChangeFormat.js.map +0 -1
|
@@ -5,8 +5,13 @@
|
|
|
5
5
|
|
|
6
6
|
import { assert, fail } from "@fluidframework/core-utils/internal";
|
|
7
7
|
import { BTree } from "@tylerbu/sorted-btree-es6";
|
|
8
|
+
import { UsageError } from "@fluidframework/telemetry-utils/internal";
|
|
8
9
|
|
|
9
|
-
import
|
|
10
|
+
import {
|
|
11
|
+
FluidClientVersion,
|
|
12
|
+
type CodecWriteOptions,
|
|
13
|
+
type ICodecFamily,
|
|
14
|
+
} from "../../codec/index.js";
|
|
10
15
|
import {
|
|
11
16
|
type ChangeEncodingContext,
|
|
12
17
|
type ChangeFamily,
|
|
@@ -29,7 +34,6 @@ import {
|
|
|
29
34
|
type TaggedChange,
|
|
30
35
|
type UpPath,
|
|
31
36
|
makeDetachedNodeId,
|
|
32
|
-
replaceAtomRevisions,
|
|
33
37
|
revisionMetadataSourceFromInfo,
|
|
34
38
|
areEqualChangeAtomIds,
|
|
35
39
|
type ChangeAtomId,
|
|
@@ -40,6 +44,7 @@ import {
|
|
|
40
44
|
type DeltaDetachedNodeChanges,
|
|
41
45
|
type DeltaDetachedNodeRename,
|
|
42
46
|
mapTaggedChange,
|
|
47
|
+
type RevisionReplacer,
|
|
43
48
|
} from "../../core/index.js";
|
|
44
49
|
import {
|
|
45
50
|
type IdAllocationState,
|
|
@@ -73,7 +78,6 @@ import {
|
|
|
73
78
|
import { convertGenericChange, genericFieldKind } from "./genericFieldKind.js";
|
|
74
79
|
import type { GenericChangeset } from "./genericFieldKindTypes.js";
|
|
75
80
|
import {
|
|
76
|
-
type ChangeAtomIdBTree,
|
|
77
81
|
type CrossFieldKey,
|
|
78
82
|
type CrossFieldKeyRange,
|
|
79
83
|
type CrossFieldKeyTable,
|
|
@@ -83,10 +87,17 @@ import {
|
|
|
83
87
|
type FieldId,
|
|
84
88
|
type ModularChangeset,
|
|
85
89
|
newCrossFieldKeyTable,
|
|
90
|
+
type NoChangeConstraint,
|
|
86
91
|
type NodeChangeset,
|
|
87
92
|
type NodeId,
|
|
88
93
|
} from "./modularChangeTypes.js";
|
|
89
94
|
import type { FlexFieldKind } from "./fieldKind.js";
|
|
95
|
+
import {
|
|
96
|
+
getFromChangeAtomIdMap,
|
|
97
|
+
setInChangeAtomIdMap,
|
|
98
|
+
type ChangeAtomIdBTree,
|
|
99
|
+
} from "../changeAtomIdBTree.js";
|
|
100
|
+
import { lt } from "semver-ts";
|
|
90
101
|
|
|
91
102
|
/**
|
|
92
103
|
* Implementation of ChangeFamily which delegates work in a given field to the appropriate FieldKind
|
|
@@ -104,6 +115,7 @@ export class ModularChangeFamily
|
|
|
104
115
|
public constructor(
|
|
105
116
|
fieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind>,
|
|
106
117
|
public readonly codecs: ICodecFamily<ModularChangeset, ChangeEncodingContext>,
|
|
118
|
+
public readonly codecOptions: CodecWriteOptions,
|
|
107
119
|
) {
|
|
108
120
|
this.fieldKinds = fieldKinds;
|
|
109
121
|
}
|
|
@@ -130,9 +142,9 @@ export class ModularChangeFamily
|
|
|
130
142
|
} {
|
|
131
143
|
// TODO: Handle the case where changes have conflicting field kinds
|
|
132
144
|
const kind =
|
|
133
|
-
change1.fieldKind
|
|
134
|
-
?
|
|
135
|
-
:
|
|
145
|
+
change1.fieldKind === genericFieldKind.identifier
|
|
146
|
+
? change2.fieldKind
|
|
147
|
+
: change1.fieldKind;
|
|
136
148
|
|
|
137
149
|
if (kind === genericFieldKind.identifier) {
|
|
138
150
|
// Both changes are generic
|
|
@@ -199,6 +211,11 @@ export class ModularChangeFamily
|
|
|
199
211
|
change2,
|
|
200
212
|
);
|
|
201
213
|
|
|
214
|
+
// The composed changeset has a "no change" constraint if either change has one
|
|
215
|
+
const noChangeConstraint = change1.noChangeConstraint ?? change2.noChangeConstraint;
|
|
216
|
+
const noChangeConstraintOnRevert =
|
|
217
|
+
change1.noChangeConstraintOnRevert ?? change2.noChangeConstraintOnRevert;
|
|
218
|
+
|
|
202
219
|
return makeModularChangeset({
|
|
203
220
|
fieldChanges,
|
|
204
221
|
nodeChanges,
|
|
@@ -207,6 +224,8 @@ export class ModularChangeFamily
|
|
|
207
224
|
crossFieldKeys,
|
|
208
225
|
maxId: idState.maxId,
|
|
209
226
|
revisions: revInfos,
|
|
227
|
+
noChangeConstraint,
|
|
228
|
+
noChangeConstraintOnRevert,
|
|
210
229
|
builds: allBuilds,
|
|
211
230
|
destroys: allDestroys,
|
|
212
231
|
refreshers: allRefreshers,
|
|
@@ -489,16 +508,16 @@ export class ModularChangeFamily
|
|
|
489
508
|
const fieldId: FieldId = { nodeId: parentId, field };
|
|
490
509
|
const fieldChange2 = change2.get(field);
|
|
491
510
|
const composedField =
|
|
492
|
-
fieldChange2
|
|
493
|
-
?
|
|
511
|
+
fieldChange2 === undefined
|
|
512
|
+
? fieldChange1
|
|
513
|
+
: this.composeFieldChanges(
|
|
494
514
|
fieldId,
|
|
495
515
|
fieldChange1,
|
|
496
516
|
fieldChange2,
|
|
497
517
|
genId,
|
|
498
518
|
crossFieldTable,
|
|
499
519
|
revisionMetadata,
|
|
500
|
-
)
|
|
501
|
-
: fieldChange1;
|
|
520
|
+
);
|
|
502
521
|
|
|
503
522
|
composedFields.set(field, composedField);
|
|
504
523
|
}
|
|
@@ -660,8 +679,8 @@ export class ModularChangeFamily
|
|
|
660
679
|
/**
|
|
661
680
|
* @param change - The change to invert.
|
|
662
681
|
* @param isRollback - Whether the inverted change is meant to rollback a change on a branch as is the case when
|
|
663
|
-
* @param revisionForInvert - The revision for the invert changeset.
|
|
664
682
|
* performing a sandwich rebase.
|
|
683
|
+
* @param revisionForInvert - The revision for the invert changeset.
|
|
665
684
|
*/
|
|
666
685
|
public invert(
|
|
667
686
|
change: TaggedChange<ModularChangeset>,
|
|
@@ -681,6 +700,9 @@ export class ModularChangeFamily
|
|
|
681
700
|
? [{ revision: revisionForInvert, rollbackOf: change.revision }]
|
|
682
701
|
: [{ revision: revisionForInvert }];
|
|
683
702
|
|
|
703
|
+
const noChangeConstraint = change.change.noChangeConstraintOnRevert;
|
|
704
|
+
const noChangeConstraintOnRevert = change.change.noChangeConstraint;
|
|
705
|
+
|
|
684
706
|
if (hasConflicts(change.change)) {
|
|
685
707
|
return makeModularChangeset({
|
|
686
708
|
maxId: change.change.maxId as number,
|
|
@@ -764,6 +786,8 @@ export class ModularChangeFamily
|
|
|
764
786
|
revisions: revInfos,
|
|
765
787
|
constraintViolationCount: change.change.constraintViolationCountOnRevert,
|
|
766
788
|
constraintViolationCountOnRevert: change.change.constraintViolationCount,
|
|
789
|
+
noChangeConstraint,
|
|
790
|
+
noChangeConstraintOnRevert,
|
|
767
791
|
destroys,
|
|
768
792
|
});
|
|
769
793
|
}
|
|
@@ -911,6 +935,13 @@ export class ModularChangeFamily
|
|
|
911
935
|
const revertConstraintState = newConstraintState(
|
|
912
936
|
change.constraintViolationCountOnRevert ?? 0,
|
|
913
937
|
);
|
|
938
|
+
|
|
939
|
+
let noChangeConstraint = change.noChangeConstraint;
|
|
940
|
+
if (noChangeConstraint !== undefined && !noChangeConstraint.violated) {
|
|
941
|
+
noChangeConstraint = { violated: true };
|
|
942
|
+
constraintState.violationCount += 1;
|
|
943
|
+
}
|
|
944
|
+
|
|
914
945
|
this.updateConstraintsForFields(
|
|
915
946
|
rebasedFields,
|
|
916
947
|
NodeAttachState.Attached,
|
|
@@ -930,6 +961,8 @@ export class ModularChangeFamily
|
|
|
930
961
|
revisions: change.revisions,
|
|
931
962
|
constraintViolationCount: constraintState.violationCount,
|
|
932
963
|
constraintViolationCountOnRevert: revertConstraintState.violationCount,
|
|
964
|
+
noChangeConstraint,
|
|
965
|
+
noChangeConstraintOnRevert: change.noChangeConstraintOnRevert,
|
|
933
966
|
builds: change.builds,
|
|
934
967
|
destroys: change.destroys,
|
|
935
968
|
refreshers: change.refreshers,
|
|
@@ -985,9 +1018,9 @@ export class ModularChangeFamily
|
|
|
985
1018
|
const baseChange = crossFieldTable.baseChange;
|
|
986
1019
|
for (const [revision, localId, fieldKey] of crossFieldTable.affectedBaseFields.keys()) {
|
|
987
1020
|
const baseNodeId =
|
|
988
|
-
localId
|
|
989
|
-
?
|
|
990
|
-
:
|
|
1021
|
+
localId === undefined
|
|
1022
|
+
? undefined
|
|
1023
|
+
: normalizeNodeId({ revision, localId }, baseChange.nodeAliases);
|
|
991
1024
|
|
|
992
1025
|
const baseFieldChange = fieldMapFromNodeId(
|
|
993
1026
|
baseChange.fieldChanges,
|
|
@@ -1022,9 +1055,9 @@ export class ModularChangeFamily
|
|
|
1022
1055
|
};
|
|
1023
1056
|
|
|
1024
1057
|
const rebasedNodeId =
|
|
1025
|
-
baseNodeId
|
|
1026
|
-
?
|
|
1027
|
-
:
|
|
1058
|
+
baseNodeId === undefined
|
|
1059
|
+
? undefined
|
|
1060
|
+
: rebasedNodeIdFromBaseNodeId(crossFieldTable, baseNodeId);
|
|
1028
1061
|
|
|
1029
1062
|
const fieldId: FieldId = { nodeId: rebasedNodeId, field: fieldKey };
|
|
1030
1063
|
const rebasedField: unknown = handler.rebaser.rebase(
|
|
@@ -1478,9 +1511,9 @@ export class ModularChangeFamily
|
|
|
1478
1511
|
): NodeId | undefined {
|
|
1479
1512
|
const changeset = nodeChangeFromId(nodeMap, nodeId);
|
|
1480
1513
|
const prunedFields =
|
|
1481
|
-
changeset.fieldChanges
|
|
1482
|
-
?
|
|
1483
|
-
:
|
|
1514
|
+
changeset.fieldChanges === undefined
|
|
1515
|
+
? undefined
|
|
1516
|
+
: this.pruneFieldMap(changeset.fieldChanges, nodeMap);
|
|
1484
1517
|
|
|
1485
1518
|
const prunedChange = { ...changeset, fieldChanges: prunedFields };
|
|
1486
1519
|
if (prunedChange.fieldChanges === undefined) {
|
|
@@ -1496,42 +1529,29 @@ export class ModularChangeFamily
|
|
|
1496
1529
|
}
|
|
1497
1530
|
}
|
|
1498
1531
|
|
|
1532
|
+
public getRevisions(change: ModularChangeset): Set<RevisionTag | undefined> {
|
|
1533
|
+
const aggregated: Set<RevisionTag | undefined> = new Set();
|
|
1534
|
+
for (const revInfo of change.revisions ?? [{ revision: undefined }]) {
|
|
1535
|
+
aggregated.add(revInfo.revision);
|
|
1536
|
+
}
|
|
1537
|
+
return aggregated;
|
|
1538
|
+
}
|
|
1539
|
+
|
|
1499
1540
|
public changeRevision(
|
|
1500
1541
|
change: ModularChangeset,
|
|
1501
|
-
|
|
1502
|
-
rollbackOf?: RevisionTag,
|
|
1542
|
+
replacer: RevisionReplacer,
|
|
1503
1543
|
): ModularChangeset {
|
|
1504
|
-
const
|
|
1505
|
-
|
|
1506
|
-
|
|
1507
|
-
: change.revisions.map((revInfo) => revInfo.revision),
|
|
1544
|
+
const updatedFields = this.replaceFieldMapRevisions(change.fieldChanges, replacer);
|
|
1545
|
+
const updatedNodes = replaceIdMapRevisions(change.nodeChanges, replacer, (nodeChangeset) =>
|
|
1546
|
+
this.replaceNodeChangesetRevisions(nodeChangeset, replacer),
|
|
1508
1547
|
);
|
|
1509
|
-
const
|
|
1510
|
-
change.
|
|
1511
|
-
|
|
1512
|
-
|
|
1548
|
+
const updatedNodeToParent = replaceIdMapRevisions(
|
|
1549
|
+
change.nodeToParent,
|
|
1550
|
+
replacer,
|
|
1551
|
+
(fieldId) =>
|
|
1552
|
+
replaceFieldIdRevision(normalizeFieldId(fieldId, change.nodeAliases), replacer),
|
|
1513
1553
|
);
|
|
1514
1554
|
|
|
1515
|
-
const updatedNodes: ChangeAtomIdBTree<NodeChangeset> = newTupleBTree();
|
|
1516
|
-
for (const [[revision, id], nodeChangeset] of change.nodeChanges.entries()) {
|
|
1517
|
-
updatedNodes.set(
|
|
1518
|
-
[replaceRevision(revision, oldRevisions, newRevision), id],
|
|
1519
|
-
this.replaceNodeChangesetRevisions(nodeChangeset, oldRevisions, newRevision),
|
|
1520
|
-
);
|
|
1521
|
-
}
|
|
1522
|
-
|
|
1523
|
-
const updatedNodeToParent: ChangeAtomIdBTree<FieldId> = newTupleBTree();
|
|
1524
|
-
for (const [[revision, id], fieldId] of change.nodeToParent.entries()) {
|
|
1525
|
-
updatedNodeToParent.set(
|
|
1526
|
-
[replaceRevision(revision, oldRevisions, newRevision), id],
|
|
1527
|
-
replaceFieldIdRevision(
|
|
1528
|
-
normalizeFieldId(fieldId, change.nodeAliases),
|
|
1529
|
-
oldRevisions,
|
|
1530
|
-
newRevision,
|
|
1531
|
-
),
|
|
1532
|
-
);
|
|
1533
|
-
}
|
|
1534
|
-
|
|
1535
1555
|
const updated: Mutable<ModularChangeset> = {
|
|
1536
1556
|
...change,
|
|
1537
1557
|
fieldChanges: updatedFields,
|
|
@@ -1542,49 +1562,37 @@ export class ModularChangeFamily
|
|
|
1542
1562
|
nodeAliases: newTupleBTree(),
|
|
1543
1563
|
crossFieldKeys: replaceCrossFieldKeyTableRevisions(
|
|
1544
1564
|
change.crossFieldKeys,
|
|
1545
|
-
|
|
1546
|
-
newRevision,
|
|
1565
|
+
replacer,
|
|
1547
1566
|
change.nodeAliases,
|
|
1548
1567
|
),
|
|
1549
1568
|
};
|
|
1550
1569
|
|
|
1551
1570
|
if (change.builds !== undefined) {
|
|
1552
|
-
updated.builds = replaceIdMapRevisions(change.builds,
|
|
1571
|
+
updated.builds = replaceIdMapRevisions(change.builds, replacer);
|
|
1553
1572
|
}
|
|
1554
1573
|
|
|
1555
1574
|
if (change.destroys !== undefined) {
|
|
1556
|
-
updated.destroys = replaceIdMapRevisions(change.destroys,
|
|
1575
|
+
updated.destroys = replaceIdMapRevisions(change.destroys, replacer);
|
|
1557
1576
|
}
|
|
1558
1577
|
|
|
1559
1578
|
if (change.refreshers !== undefined) {
|
|
1560
|
-
updated.refreshers = replaceIdMapRevisions(change.refreshers,
|
|
1579
|
+
updated.refreshers = replaceIdMapRevisions(change.refreshers, replacer);
|
|
1561
1580
|
}
|
|
1562
1581
|
|
|
1563
|
-
|
|
1564
|
-
const revInfo: Mutable<RevisionInfo> = { revision: newRevision };
|
|
1565
|
-
if (rollbackOf !== undefined) {
|
|
1566
|
-
revInfo.rollbackOf = rollbackOf;
|
|
1567
|
-
}
|
|
1568
|
-
|
|
1569
|
-
updated.revisions = [revInfo];
|
|
1570
|
-
} else {
|
|
1571
|
-
delete updated.revisions;
|
|
1572
|
-
}
|
|
1582
|
+
updated.revisions = [{ revision: replacer.updatedRevision }];
|
|
1573
1583
|
|
|
1574
1584
|
return updated;
|
|
1575
1585
|
}
|
|
1576
1586
|
|
|
1577
1587
|
private replaceNodeChangesetRevisions(
|
|
1578
1588
|
nodeChangeset: NodeChangeset,
|
|
1579
|
-
|
|
1580
|
-
newRevision: RevisionTag | undefined,
|
|
1589
|
+
replacer: RevisionReplacer,
|
|
1581
1590
|
): NodeChangeset {
|
|
1582
1591
|
const updated = { ...nodeChangeset };
|
|
1583
1592
|
if (nodeChangeset.fieldChanges !== undefined) {
|
|
1584
1593
|
updated.fieldChanges = this.replaceFieldMapRevisions(
|
|
1585
1594
|
nodeChangeset.fieldChanges,
|
|
1586
|
-
|
|
1587
|
-
newRevision,
|
|
1595
|
+
replacer,
|
|
1588
1596
|
);
|
|
1589
1597
|
}
|
|
1590
1598
|
|
|
@@ -1593,15 +1601,14 @@ export class ModularChangeFamily
|
|
|
1593
1601
|
|
|
1594
1602
|
private replaceFieldMapRevisions(
|
|
1595
1603
|
fields: FieldChangeMap,
|
|
1596
|
-
|
|
1597
|
-
newRevision: RevisionTag | undefined,
|
|
1604
|
+
replacer: RevisionReplacer,
|
|
1598
1605
|
): FieldChangeMap {
|
|
1599
1606
|
const updatedFields: FieldChangeMap = new Map();
|
|
1600
1607
|
for (const [field, fieldChange] of fields) {
|
|
1601
1608
|
const updatedFieldChange = getChangeHandler(
|
|
1602
1609
|
this.fieldKinds,
|
|
1603
1610
|
fieldChange.fieldKind,
|
|
1604
|
-
).rebaser.replaceRevisions(fieldChange.change,
|
|
1611
|
+
).rebaser.replaceRevisions(fieldChange.change, replacer);
|
|
1605
1612
|
|
|
1606
1613
|
updatedFields.set(field, { ...fieldChange, change: brand(updatedFieldChange) });
|
|
1607
1614
|
}
|
|
@@ -1643,9 +1650,10 @@ export class ModularChangeFamily
|
|
|
1643
1650
|
}
|
|
1644
1651
|
|
|
1645
1652
|
public buildEditor(
|
|
1653
|
+
mintRevisionTag: () => RevisionTag,
|
|
1646
1654
|
changeReceiver: (change: TaggedChange<ModularChangeset>) => void,
|
|
1647
1655
|
): ModularEditBuilder {
|
|
1648
|
-
return new ModularEditBuilder(this, this.fieldKinds, changeReceiver);
|
|
1656
|
+
return new ModularEditBuilder(this, this.fieldKinds, changeReceiver, this.codecOptions);
|
|
1649
1657
|
}
|
|
1650
1658
|
|
|
1651
1659
|
private createEmptyFieldChange(fieldKind: FieldKindIdentifier): FieldChange {
|
|
@@ -1757,25 +1765,20 @@ export class ModularChangeFamily
|
|
|
1757
1765
|
|
|
1758
1766
|
function replaceCrossFieldKeyTableRevisions(
|
|
1759
1767
|
table: CrossFieldKeyTable,
|
|
1760
|
-
|
|
1761
|
-
newRevision: RevisionTag | undefined,
|
|
1768
|
+
replacer: RevisionReplacer,
|
|
1762
1769
|
nodeAliases: ChangeAtomIdBTree<NodeId>,
|
|
1763
1770
|
): CrossFieldKeyTable {
|
|
1764
1771
|
const updated: CrossFieldKeyTable = newCrossFieldKeyTable();
|
|
1765
1772
|
for (const entry of table.entries()) {
|
|
1766
1773
|
const key = entry.start;
|
|
1767
|
-
const updatedKey: CrossFieldKey =
|
|
1768
|
-
target: key.target,
|
|
1769
|
-
revision: replaceRevision(key.revision, oldRevisions, newRevision),
|
|
1770
|
-
localId: key.localId,
|
|
1771
|
-
};
|
|
1774
|
+
const updatedKey: CrossFieldKey = replacer.getUpdatedAtomId(key);
|
|
1772
1775
|
|
|
1773
1776
|
const field = entry.value;
|
|
1774
1777
|
const normalizedFieldId = normalizeFieldId(field, nodeAliases);
|
|
1775
1778
|
const updatedNodeId =
|
|
1776
|
-
normalizedFieldId.nodeId
|
|
1777
|
-
?
|
|
1778
|
-
:
|
|
1779
|
+
normalizedFieldId.nodeId === undefined
|
|
1780
|
+
? undefined
|
|
1781
|
+
: replacer.getUpdatedAtomId(normalizedFieldId.nodeId);
|
|
1779
1782
|
|
|
1780
1783
|
const updatedValue: FieldId = {
|
|
1781
1784
|
...normalizedFieldId,
|
|
@@ -1788,22 +1791,15 @@ function replaceCrossFieldKeyTableRevisions(
|
|
|
1788
1791
|
return updated;
|
|
1789
1792
|
}
|
|
1790
1793
|
|
|
1791
|
-
function replaceRevision(
|
|
1792
|
-
revision: RevisionTag | undefined,
|
|
1793
|
-
oldRevisions: Set<RevisionTag | undefined>,
|
|
1794
|
-
newRevision: RevisionTag | undefined,
|
|
1795
|
-
): RevisionTag | undefined {
|
|
1796
|
-
return oldRevisions.has(revision) ? newRevision : revision;
|
|
1797
|
-
}
|
|
1798
|
-
|
|
1799
1794
|
function replaceIdMapRevisions<T>(
|
|
1800
1795
|
map: ChangeAtomIdBTree<T>,
|
|
1801
|
-
|
|
1802
|
-
|
|
1796
|
+
replacer: RevisionReplacer,
|
|
1797
|
+
valueMapper: (value: T) => T = (value) => value,
|
|
1803
1798
|
): ChangeAtomIdBTree<T> {
|
|
1804
1799
|
const updated: ChangeAtomIdBTree<T> = newTupleBTree();
|
|
1805
|
-
for (const [[revision,
|
|
1806
|
-
|
|
1800
|
+
for (const [[revision, localId], value] of map.entries()) {
|
|
1801
|
+
const newAtom = replacer.getUpdatedAtomId({ revision, localId });
|
|
1802
|
+
updated.set([newAtom.revision, newAtom.localId], valueMapper(value));
|
|
1807
1803
|
}
|
|
1808
1804
|
|
|
1809
1805
|
return updated;
|
|
@@ -1990,6 +1986,9 @@ export function updateRefreshers(
|
|
|
1990
1986
|
const {
|
|
1991
1987
|
fieldChanges,
|
|
1992
1988
|
nodeChanges,
|
|
1989
|
+
nodeToParent,
|
|
1990
|
+
nodeAliases,
|
|
1991
|
+
crossFieldKeys,
|
|
1993
1992
|
maxId,
|
|
1994
1993
|
revisions,
|
|
1995
1994
|
constraintViolationCount,
|
|
@@ -2001,9 +2000,9 @@ export function updateRefreshers(
|
|
|
2001
2000
|
return makeModularChangeset({
|
|
2002
2001
|
fieldChanges,
|
|
2003
2002
|
nodeChanges,
|
|
2004
|
-
nodeToParent
|
|
2005
|
-
nodeAliases
|
|
2006
|
-
crossFieldKeys
|
|
2003
|
+
nodeToParent,
|
|
2004
|
+
nodeAliases,
|
|
2005
|
+
crossFieldKeys,
|
|
2007
2006
|
maxId: maxId as number,
|
|
2008
2007
|
revisions,
|
|
2009
2008
|
constraintViolationCount,
|
|
@@ -2620,6 +2619,8 @@ function makeModularChangeset(
|
|
|
2620
2619
|
revisions?: readonly RevisionInfo[];
|
|
2621
2620
|
constraintViolationCount?: number;
|
|
2622
2621
|
constraintViolationCountOnRevert?: number;
|
|
2622
|
+
noChangeConstraint?: NoChangeConstraint;
|
|
2623
|
+
noChangeConstraintOnRevert?: NoChangeConstraint;
|
|
2623
2624
|
builds?: ChangeAtomIdBTree<TreeChunk>;
|
|
2624
2625
|
destroys?: ChangeAtomIdBTree<number>;
|
|
2625
2626
|
refreshers?: ChangeAtomIdBTree<TreeChunk>;
|
|
@@ -2650,6 +2651,12 @@ function makeModularChangeset(
|
|
|
2650
2651
|
) {
|
|
2651
2652
|
changeset.constraintViolationCountOnRevert = props.constraintViolationCountOnRevert;
|
|
2652
2653
|
}
|
|
2654
|
+
if (props.noChangeConstraint !== undefined) {
|
|
2655
|
+
changeset.noChangeConstraint = props.noChangeConstraint;
|
|
2656
|
+
}
|
|
2657
|
+
if (props.noChangeConstraintOnRevert !== undefined) {
|
|
2658
|
+
changeset.noChangeConstraintOnRevert = props.noChangeConstraintOnRevert;
|
|
2659
|
+
}
|
|
2653
2660
|
if (props.builds !== undefined && props.builds.size > 0) {
|
|
2654
2661
|
changeset.builds = props.builds;
|
|
2655
2662
|
}
|
|
@@ -2665,14 +2672,17 @@ function makeModularChangeset(
|
|
|
2665
2672
|
export class ModularEditBuilder extends EditBuilder<ModularChangeset> {
|
|
2666
2673
|
private transactionDepth: number = 0;
|
|
2667
2674
|
private idAllocator: IdAllocator;
|
|
2675
|
+
private readonly codecOptions: CodecWriteOptions;
|
|
2668
2676
|
|
|
2669
2677
|
public constructor(
|
|
2670
2678
|
family: ChangeFamily<ChangeFamilyEditor, ModularChangeset>,
|
|
2671
2679
|
private readonly fieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind>,
|
|
2672
2680
|
changeReceiver: (change: TaggedChange<ModularChangeset>) => void,
|
|
2681
|
+
codecOptions: CodecWriteOptions,
|
|
2673
2682
|
) {
|
|
2674
2683
|
super(family, changeReceiver);
|
|
2675
2684
|
this.idAllocator = idAllocatorFromMaxId();
|
|
2685
|
+
this.codecOptions = codecOptions;
|
|
2676
2686
|
}
|
|
2677
2687
|
|
|
2678
2688
|
public override enterTransaction(): void {
|
|
@@ -2785,7 +2795,7 @@ export class ModularEditBuilder extends EditBuilder<ModularChangeset> {
|
|
|
2785
2795
|
}),
|
|
2786
2796
|
);
|
|
2787
2797
|
});
|
|
2788
|
-
const revInfo =
|
|
2798
|
+
const revInfo = [...revisions].map((revision) => ({ revision }));
|
|
2789
2799
|
const composedChange: Mutable<ModularChangeset> = {
|
|
2790
2800
|
...this.changeFamily.rebaser.compose(changeMaps),
|
|
2791
2801
|
revisions: revInfo,
|
|
@@ -2843,6 +2853,36 @@ export class ModularEditBuilder extends EditBuilder<ModularChangeset> {
|
|
|
2843
2853
|
),
|
|
2844
2854
|
);
|
|
2845
2855
|
}
|
|
2856
|
+
|
|
2857
|
+
public addNoChangeConstraint(revision: RevisionTag): void {
|
|
2858
|
+
if (lt(this.codecOptions.minVersionForCollab, FluidClientVersion.v2_80)) {
|
|
2859
|
+
throw new UsageError(
|
|
2860
|
+
`No change constraints require min client version of at least ${FluidClientVersion.v2_80}`,
|
|
2861
|
+
);
|
|
2862
|
+
}
|
|
2863
|
+
|
|
2864
|
+
const changeset = makeModularChangeset({
|
|
2865
|
+
maxId: -1,
|
|
2866
|
+
noChangeConstraint: { violated: false },
|
|
2867
|
+
});
|
|
2868
|
+
|
|
2869
|
+
this.applyChange(tagChange(changeset, revision));
|
|
2870
|
+
}
|
|
2871
|
+
|
|
2872
|
+
public addNoChangeConstraintOnRevert(revision: RevisionTag): void {
|
|
2873
|
+
if (lt(this.codecOptions.minVersionForCollab, FluidClientVersion.v2_80)) {
|
|
2874
|
+
throw new UsageError(
|
|
2875
|
+
`No change constraints require min client version of at least ${FluidClientVersion.v2_80}`,
|
|
2876
|
+
);
|
|
2877
|
+
}
|
|
2878
|
+
|
|
2879
|
+
const changeset = makeModularChangeset({
|
|
2880
|
+
maxId: -1,
|
|
2881
|
+
noChangeConstraintOnRevert: { violated: false },
|
|
2882
|
+
});
|
|
2883
|
+
|
|
2884
|
+
this.applyChange(tagChange(changeset, revision));
|
|
2885
|
+
}
|
|
2846
2886
|
}
|
|
2847
2887
|
|
|
2848
2888
|
function buildModularChangesetFromField(props: {
|
|
@@ -2932,9 +2972,13 @@ function buildModularChangesetFromNode(props: {
|
|
|
2932
2972
|
}): ModularChangeset {
|
|
2933
2973
|
const {
|
|
2934
2974
|
path,
|
|
2935
|
-
|
|
2975
|
+
idAllocator,
|
|
2976
|
+
revision,
|
|
2977
|
+
nodeChanges,
|
|
2978
|
+
nodeChange,
|
|
2979
|
+
nodeId = { localId: brand(idAllocator.allocate()), revision },
|
|
2936
2980
|
} = props;
|
|
2937
|
-
setInChangeAtomIdMap(
|
|
2981
|
+
setInChangeAtomIdMap(nodeChanges, nodeId, nodeChange);
|
|
2938
2982
|
const fieldChangeset = genericFieldKind.changeHandler.editor.buildChildChanges([
|
|
2939
2983
|
[path.parentIndex, nodeId],
|
|
2940
2984
|
]);
|
|
@@ -2975,16 +3019,21 @@ function getRevInfoFromTaggedChanges(changes: TaggedChange<ModularChangeset>[]):
|
|
|
2975
3019
|
} {
|
|
2976
3020
|
let maxId = -1;
|
|
2977
3021
|
const revInfos: RevisionInfo[] = [];
|
|
3022
|
+
const revisions = new Set<RevisionTag>();
|
|
2978
3023
|
for (const taggedChange of changes) {
|
|
2979
3024
|
const change = taggedChange.change;
|
|
2980
3025
|
maxId = Math.max(change.maxId ?? -1, maxId);
|
|
2981
|
-
|
|
3026
|
+
const infosToAdd = revisionInfoFromTaggedChange(taggedChange);
|
|
3027
|
+
for (const info of infosToAdd) {
|
|
3028
|
+
if (!revisions.has(info.revision)) {
|
|
3029
|
+
revisions.add(info.revision);
|
|
3030
|
+
revInfos.push(info);
|
|
3031
|
+
}
|
|
3032
|
+
}
|
|
2982
3033
|
}
|
|
2983
3034
|
|
|
2984
|
-
const revisions = new Set<RevisionTag>();
|
|
2985
3035
|
const rolledBackRevisions: RevisionTag[] = [];
|
|
2986
3036
|
for (const info of revInfos) {
|
|
2987
|
-
revisions.add(info.revision);
|
|
2988
3037
|
if (info.rollbackOf !== undefined) {
|
|
2989
3038
|
rolledBackRevisions.push(info.rollbackOf);
|
|
2990
3039
|
}
|
|
@@ -3058,7 +3107,7 @@ function nodeChangeFromId(nodes: ChangeAtomIdBTree<NodeChangeset>, id: NodeId):
|
|
|
3058
3107
|
}
|
|
3059
3108
|
|
|
3060
3109
|
function fieldIdFromFieldIdKey([revision, localId, field]: FieldIdKey): FieldId {
|
|
3061
|
-
const nodeId = localId
|
|
3110
|
+
const nodeId = localId === undefined ? undefined : { revision, localId };
|
|
3062
3111
|
return { nodeId, field };
|
|
3063
3112
|
}
|
|
3064
3113
|
|
|
@@ -3070,18 +3119,14 @@ function cloneNodeChangeset(nodeChangeset: NodeChangeset): NodeChangeset {
|
|
|
3070
3119
|
return { ...nodeChangeset };
|
|
3071
3120
|
}
|
|
3072
3121
|
|
|
3073
|
-
function replaceFieldIdRevision(
|
|
3074
|
-
fieldId: FieldId,
|
|
3075
|
-
oldRevisions: Set<RevisionTag | undefined>,
|
|
3076
|
-
newRevision: RevisionTag | undefined,
|
|
3077
|
-
): FieldId {
|
|
3122
|
+
function replaceFieldIdRevision(fieldId: FieldId, replacer: RevisionReplacer): FieldId {
|
|
3078
3123
|
if (fieldId.nodeId === undefined) {
|
|
3079
3124
|
return fieldId;
|
|
3080
3125
|
}
|
|
3081
3126
|
|
|
3082
3127
|
return {
|
|
3083
3128
|
...fieldId,
|
|
3084
|
-
nodeId:
|
|
3129
|
+
nodeId: replacer.getUpdatedAtomId(fieldId.nodeId),
|
|
3085
3130
|
};
|
|
3086
3131
|
}
|
|
3087
3132
|
|
|
@@ -3106,9 +3151,9 @@ export function normalizeFieldId(
|
|
|
3106
3151
|
fieldId: FieldId,
|
|
3107
3152
|
nodeAliases: ChangeAtomIdBTree<NodeId>,
|
|
3108
3153
|
): FieldId {
|
|
3109
|
-
return fieldId.nodeId
|
|
3110
|
-
?
|
|
3111
|
-
: fieldId;
|
|
3154
|
+
return fieldId.nodeId === undefined
|
|
3155
|
+
? fieldId
|
|
3156
|
+
: { ...fieldId, nodeId: normalizeNodeId(fieldId.nodeId, nodeAliases) };
|
|
3112
3157
|
}
|
|
3113
3158
|
|
|
3114
3159
|
/**
|
|
@@ -3140,17 +3185,6 @@ interface ModularChangesetContent {
|
|
|
3140
3185
|
crossFieldKeys: CrossFieldKeyTable;
|
|
3141
3186
|
}
|
|
3142
3187
|
|
|
3143
|
-
function getFromChangeAtomIdMap<T>(
|
|
3144
|
-
map: ChangeAtomIdBTree<T>,
|
|
3145
|
-
id: ChangeAtomId,
|
|
3146
|
-
): T | undefined {
|
|
3147
|
-
return map.get([id.revision, id.localId]);
|
|
3148
|
-
}
|
|
3149
|
-
|
|
3150
|
-
function setInChangeAtomIdMap<T>(map: ChangeAtomIdBTree<T>, id: ChangeAtomId, value: T): void {
|
|
3151
|
-
map.set([id.revision, id.localId], value);
|
|
3152
|
-
}
|
|
3153
|
-
|
|
3154
3188
|
function areEqualFieldIds(a: FieldId, b: FieldId): boolean {
|
|
3155
3189
|
return areEqualChangeAtomIdOpts(a.nodeId, b.nodeId) && a.field === b.field;
|
|
3156
3190
|
}
|
package/src/feature-libraries/modular-schema/{modularChangeFormat.ts → modularChangeFormatV1.ts}
RENAMED
|
@@ -25,7 +25,7 @@ export const EncodedChangeAtomId = Type.Union([
|
|
|
25
25
|
]);
|
|
26
26
|
export type EncodedChangeAtomId = Static<typeof EncodedChangeAtomId>;
|
|
27
27
|
|
|
28
|
-
const EncodedFieldChange = Type.Object(
|
|
28
|
+
export const EncodedFieldChange = Type.Object(
|
|
29
29
|
{
|
|
30
30
|
fieldKey: schemaFormatV1.FieldKeySchema,
|
|
31
31
|
fieldKind: schemaFormatV1.FieldKindIdentifierSchema,
|
|
@@ -44,7 +44,7 @@ export interface EncodedFieldChange extends Static<typeof EncodedFieldChange> {
|
|
|
44
44
|
change: JsonCompatibleReadOnly;
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
-
const EncodedFieldChangeMap = Type.Array(EncodedFieldChange);
|
|
47
|
+
export const EncodedFieldChangeMap = Type.Array(EncodedFieldChange);
|
|
48
48
|
|
|
49
49
|
/**
|
|
50
50
|
* Format for encoding as json.
|
|
@@ -125,7 +125,7 @@ export const EncodedBuilds = Type.Object(
|
|
|
125
125
|
|
|
126
126
|
export type EncodedBuilds = Static<typeof EncodedBuilds>;
|
|
127
127
|
|
|
128
|
-
export const
|
|
128
|
+
export const EncodedModularChangesetV1 = Type.Object(
|
|
129
129
|
{
|
|
130
130
|
maxId: Type.Optional(ChangesetLocalIdSchema),
|
|
131
131
|
changes: EncodedFieldChangeMap,
|
|
@@ -142,4 +142,4 @@ export const EncodedModularChangeset = Type.Object(
|
|
|
142
142
|
noAdditionalProps,
|
|
143
143
|
);
|
|
144
144
|
|
|
145
|
-
export type
|
|
145
|
+
export type EncodedModularChangesetV1 = Static<typeof EncodedModularChangesetV1>;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
|
+
* Licensed under the MIT License.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { type ObjectOptions, type Static, Type } from "@sinclair/typebox";
|
|
7
|
+
|
|
8
|
+
import { EncodedModularChangesetV1 } from "./modularChangeFormatV1.js";
|
|
9
|
+
|
|
10
|
+
const noAdditionalProps: ObjectOptions = { additionalProperties: false };
|
|
11
|
+
|
|
12
|
+
const EncodedNoChangeConstraint = Type.Object(
|
|
13
|
+
{
|
|
14
|
+
violated: Type.Boolean(),
|
|
15
|
+
},
|
|
16
|
+
noAdditionalProps,
|
|
17
|
+
);
|
|
18
|
+
export type EncodedNoChangeConstraint = Static<typeof EncodedNoChangeConstraint>;
|
|
19
|
+
|
|
20
|
+
export const EncodedModularChangesetV2 = Type.Composite(
|
|
21
|
+
[
|
|
22
|
+
EncodedModularChangesetV1,
|
|
23
|
+
Type.Object(
|
|
24
|
+
{
|
|
25
|
+
/** Global no change constraint that gets violated whenever the changeset is rebased */
|
|
26
|
+
noChangeConstraint: Type.Optional(EncodedNoChangeConstraint),
|
|
27
|
+
},
|
|
28
|
+
noAdditionalProps,
|
|
29
|
+
),
|
|
30
|
+
],
|
|
31
|
+
noAdditionalProps,
|
|
32
|
+
);
|
|
33
|
+
|
|
34
|
+
export type EncodedModularChangesetV2 = Static<typeof EncodedModularChangesetV2>;
|