@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
|
@@ -10,9 +10,9 @@ import {
|
|
|
10
10
|
type FieldKey,
|
|
11
11
|
type FieldKindIdentifier,
|
|
12
12
|
type RevisionInfo,
|
|
13
|
-
type RevisionTag,
|
|
14
13
|
} from "../../core/index.js";
|
|
15
|
-
import { brand, RangeMap, type Brand
|
|
14
|
+
import { brand, RangeMap, type Brand } from "../../util/index.js";
|
|
15
|
+
import type { ChangeAtomIdBTree } from "../changeAtomIdBTree.js";
|
|
16
16
|
import type { TreeChunk } from "../chunked-forest/index.js";
|
|
17
17
|
|
|
18
18
|
import type { CrossFieldTarget } from "./crossFieldQueries.js";
|
|
@@ -60,6 +60,10 @@ export interface ModularChangeset extends HasFieldChanges {
|
|
|
60
60
|
* If this count is greater than 0, it will prevent the changeset from being applied.
|
|
61
61
|
*/
|
|
62
62
|
readonly constraintViolationCount?: number;
|
|
63
|
+
/** Constraint that the document must be in the same state before this change is applied as it was before this change was authored */
|
|
64
|
+
readonly noChangeConstraint?: NoChangeConstraint;
|
|
65
|
+
/** Constraint that the document must be in the same state before the revert of this change is applied as it was after this change was applied */
|
|
66
|
+
readonly noChangeConstraintOnRevert?: NoChangeConstraint;
|
|
63
67
|
/**
|
|
64
68
|
* The number of constraint violations that apply to the revert of the changeset. If this count is greater than 0, it will
|
|
65
69
|
* prevent the changeset from being reverted or undone.
|
|
@@ -70,8 +74,6 @@ export interface ModularChangeset extends HasFieldChanges {
|
|
|
70
74
|
readonly refreshers?: ChangeAtomIdBTree<TreeChunk>;
|
|
71
75
|
}
|
|
72
76
|
|
|
73
|
-
export type ChangeAtomIdBTree<V> = TupleBTree<[RevisionTag | undefined, ChangesetLocalId], V>;
|
|
74
|
-
|
|
75
77
|
export type CrossFieldKeyTable = RangeMap<CrossFieldKey, FieldId>;
|
|
76
78
|
|
|
77
79
|
export function newCrossFieldKeyTable(): CrossFieldKeyTable {
|
|
@@ -112,6 +114,13 @@ export interface NodeExistsConstraint {
|
|
|
112
114
|
violated: boolean;
|
|
113
115
|
}
|
|
114
116
|
|
|
117
|
+
/**
|
|
118
|
+
* A constraint that is violated whenever the state of the document is different from when the change was authored.
|
|
119
|
+
*/
|
|
120
|
+
export interface NoChangeConstraint {
|
|
121
|
+
violated: boolean;
|
|
122
|
+
}
|
|
123
|
+
|
|
115
124
|
/**
|
|
116
125
|
* Changeset for a subtree rooted at a specific node.
|
|
117
126
|
*/
|
|
@@ -46,7 +46,7 @@ export class MockNodeIdentifierManager implements NodeIdentifierManager {
|
|
|
46
46
|
if (!isStableNodeIdentifier(key) || !key.startsWith("a110ca7e-add1-4000-8000-")) {
|
|
47
47
|
return undefined;
|
|
48
48
|
}
|
|
49
|
-
const localNodeIdentifier = Number.parseInt(key.
|
|
49
|
+
const localNodeIdentifier = Number.parseInt(key.slice(24), 16);
|
|
50
50
|
return localNodeIdentifier < this.count
|
|
51
51
|
? brand(localNodeIdentifier as SessionSpaceCompressedId)
|
|
52
52
|
: undefined;
|
|
@@ -104,12 +104,12 @@ export class ObjectForest implements IEditableForest, WithBreakable {
|
|
|
104
104
|
roots?: MapTree,
|
|
105
105
|
) {
|
|
106
106
|
this.#roots =
|
|
107
|
-
roots
|
|
108
|
-
?
|
|
109
|
-
: {
|
|
107
|
+
roots === undefined
|
|
108
|
+
? {
|
|
110
109
|
type: aboveRootPlaceholder,
|
|
111
110
|
fields: new Map(),
|
|
112
|
-
}
|
|
111
|
+
}
|
|
112
|
+
: deepCopyMapTree(roots);
|
|
113
113
|
|
|
114
114
|
if (additionalAsserts) {
|
|
115
115
|
this.checkSchema();
|
|
@@ -12,10 +12,10 @@ import {
|
|
|
12
12
|
type DeltaDetachedNodeChanges,
|
|
13
13
|
type DeltaDetachedNodeId,
|
|
14
14
|
type DeltaMark,
|
|
15
|
+
type RevisionReplacer,
|
|
15
16
|
type RevisionTag,
|
|
16
17
|
areEqualChangeAtomIds,
|
|
17
18
|
makeChangeAtomId,
|
|
18
|
-
replaceAtomRevisions,
|
|
19
19
|
taggedAtomId,
|
|
20
20
|
} from "../../core/index.js";
|
|
21
21
|
import {
|
|
@@ -178,10 +178,10 @@ export const optionalChangeRebaser: FieldChangeRebaser<OptionalChangeset> = {
|
|
|
178
178
|
const childChanges2ByOriginalId = new RegisterMap<NodeId>();
|
|
179
179
|
for (const [id, change] of change2.childChanges) {
|
|
180
180
|
if (id === "self") {
|
|
181
|
-
if (change1FieldSrc
|
|
182
|
-
childChanges2ByOriginalId.set(change1FieldSrc, change);
|
|
183
|
-
} else {
|
|
181
|
+
if (change1FieldSrc === undefined) {
|
|
184
182
|
childChanges2ByOriginalId.set("self", change);
|
|
183
|
+
} else {
|
|
184
|
+
childChanges2ByOriginalId.set(change1FieldSrc, change);
|
|
185
185
|
}
|
|
186
186
|
} else {
|
|
187
187
|
if (change1FieldDst !== undefined && areEqualChangeAtomIds(change1FieldDst, id)) {
|
|
@@ -269,7 +269,7 @@ export const optionalChangeRebaser: FieldChangeRebaser<OptionalChangeset> = {
|
|
|
269
269
|
genId: IdAllocator<ChangesetLocalId>,
|
|
270
270
|
revision: RevisionTag | undefined,
|
|
271
271
|
): OptionalChangeset => {
|
|
272
|
-
const { moves, childChanges } = change;
|
|
272
|
+
const { moves, childChanges, valueReplace } = change;
|
|
273
273
|
|
|
274
274
|
const invertIdMap = new RegisterMap<RegisterId>();
|
|
275
275
|
const invertedMoves: Move[] = [];
|
|
@@ -277,13 +277,13 @@ export const optionalChangeRebaser: FieldChangeRebaser<OptionalChangeset> = {
|
|
|
277
277
|
invertIdMap.set(src, dst);
|
|
278
278
|
invertedMoves.push([dst, src]);
|
|
279
279
|
}
|
|
280
|
-
if (
|
|
281
|
-
const effectfulDst = getEffectfulDst(
|
|
280
|
+
if (valueReplace !== undefined) {
|
|
281
|
+
const effectfulDst = getEffectfulDst(valueReplace);
|
|
282
282
|
if (effectfulDst !== undefined) {
|
|
283
|
-
invertIdMap.set("self",
|
|
283
|
+
invertIdMap.set("self", valueReplace.dst);
|
|
284
284
|
}
|
|
285
|
-
if (
|
|
286
|
-
invertIdMap.set(
|
|
285
|
+
if (valueReplace.src !== undefined) {
|
|
286
|
+
invertIdMap.set(valueReplace.src, "self");
|
|
287
287
|
}
|
|
288
288
|
}
|
|
289
289
|
|
|
@@ -294,10 +294,10 @@ export const optionalChangeRebaser: FieldChangeRebaser<OptionalChangeset> = {
|
|
|
294
294
|
}),
|
|
295
295
|
};
|
|
296
296
|
|
|
297
|
-
if (
|
|
298
|
-
if (isReplaceEffectful(
|
|
297
|
+
if (valueReplace !== undefined) {
|
|
298
|
+
if (isReplaceEffectful(valueReplace)) {
|
|
299
299
|
const replace: Mutable<Replace> =
|
|
300
|
-
|
|
300
|
+
valueReplace.src === undefined
|
|
301
301
|
? {
|
|
302
302
|
isEmpty: true,
|
|
303
303
|
dst: makeChangeAtomId(genId.allocate(), revision),
|
|
@@ -305,14 +305,14 @@ export const optionalChangeRebaser: FieldChangeRebaser<OptionalChangeset> = {
|
|
|
305
305
|
: {
|
|
306
306
|
isEmpty: false,
|
|
307
307
|
dst: isRollback
|
|
308
|
-
?
|
|
308
|
+
? valueReplace.src
|
|
309
309
|
: makeChangeAtomId(genId.allocate(), revision),
|
|
310
310
|
};
|
|
311
|
-
if (
|
|
312
|
-
replace.src =
|
|
311
|
+
if (valueReplace.isEmpty === false) {
|
|
312
|
+
replace.src = valueReplace.dst;
|
|
313
313
|
}
|
|
314
314
|
inverted.valueReplace = replace;
|
|
315
|
-
} else if (!isRollback &&
|
|
315
|
+
} else if (!isRollback && valueReplace.src === "self") {
|
|
316
316
|
inverted.valueReplace = {
|
|
317
317
|
isEmpty: false,
|
|
318
318
|
src: "self",
|
|
@@ -433,29 +433,21 @@ export const optionalChangeRebaser: FieldChangeRebaser<OptionalChangeset> = {
|
|
|
433
433
|
|
|
434
434
|
replaceRevisions: (
|
|
435
435
|
change: OptionalChangeset,
|
|
436
|
-
|
|
437
|
-
newRevision: RevisionTag | undefined,
|
|
436
|
+
replacer: RevisionReplacer,
|
|
438
437
|
): OptionalChangeset => {
|
|
439
|
-
const valueReplace = replaceReplaceRevisions(
|
|
440
|
-
change.valueReplace,
|
|
441
|
-
oldRevisions,
|
|
442
|
-
newRevision,
|
|
443
|
-
);
|
|
438
|
+
const valueReplace = replaceReplaceRevisions(change.valueReplace, replacer);
|
|
444
439
|
|
|
445
440
|
const childChanges: ChildChange[] = [];
|
|
446
441
|
for (const [id, childChange] of change.childChanges) {
|
|
447
442
|
childChanges.push([
|
|
448
|
-
replaceRegisterRevisions(id,
|
|
449
|
-
|
|
443
|
+
replaceRegisterRevisions(id, replacer),
|
|
444
|
+
replacer.getUpdatedAtomId(childChange),
|
|
450
445
|
]);
|
|
451
446
|
}
|
|
452
447
|
|
|
453
448
|
const moves: Move[] = [];
|
|
454
449
|
for (const [src, dst] of change.moves) {
|
|
455
|
-
moves.push([
|
|
456
|
-
replaceAtomRevisions(src, oldRevisions, newRevision),
|
|
457
|
-
replaceAtomRevisions(dst, oldRevisions, newRevision),
|
|
458
|
-
]);
|
|
450
|
+
moves.push([replacer.getUpdatedAtomId(src), replacer.getUpdatedAtomId(dst)]);
|
|
459
451
|
}
|
|
460
452
|
|
|
461
453
|
const updated: Mutable<OptionalChangeset> = { childChanges, moves };
|
|
@@ -473,8 +465,7 @@ export const optionalChangeRebaser: FieldChangeRebaser<OptionalChangeset> = {
|
|
|
473
465
|
|
|
474
466
|
function replaceReplaceRevisions(
|
|
475
467
|
replace: Replace | undefined,
|
|
476
|
-
|
|
477
|
-
newRevision: RevisionTag | undefined,
|
|
468
|
+
replacer: RevisionReplacer,
|
|
478
469
|
): Replace | undefined {
|
|
479
470
|
if (replace === undefined) {
|
|
480
471
|
return undefined;
|
|
@@ -482,11 +473,11 @@ function replaceReplaceRevisions(
|
|
|
482
473
|
|
|
483
474
|
const updated: Mutable<Replace> = {
|
|
484
475
|
...replace,
|
|
485
|
-
dst:
|
|
476
|
+
dst: replacer.getUpdatedAtomId(replace.dst),
|
|
486
477
|
};
|
|
487
478
|
|
|
488
479
|
if (replace.src !== undefined) {
|
|
489
|
-
updated.src = replaceRegisterRevisions(replace.src,
|
|
480
|
+
updated.src = replaceRegisterRevisions(replace.src, replacer);
|
|
490
481
|
}
|
|
491
482
|
|
|
492
483
|
return updated;
|
|
@@ -494,12 +485,9 @@ function replaceReplaceRevisions(
|
|
|
494
485
|
|
|
495
486
|
function replaceRegisterRevisions(
|
|
496
487
|
register: RegisterId,
|
|
497
|
-
|
|
498
|
-
newRevision: RevisionTag | undefined,
|
|
488
|
+
replacer: RevisionReplacer,
|
|
499
489
|
): RegisterId {
|
|
500
|
-
return register === "self"
|
|
501
|
-
? register
|
|
502
|
-
: replaceAtomRevisions(register, oldRevisions, newRevision);
|
|
490
|
+
return register === "self" ? register : replacer.getUpdatedAtomId(register);
|
|
503
491
|
}
|
|
504
492
|
|
|
505
493
|
function getComposedReplaceDst(
|
|
@@ -696,15 +684,15 @@ export function optionalFieldIntoDelta(
|
|
|
696
684
|
const globals: DeltaDetachedNodeChanges[] = [];
|
|
697
685
|
for (const [id, childChange] of change.childChanges) {
|
|
698
686
|
const childDelta = deltaFromChild(childChange);
|
|
699
|
-
if (id
|
|
687
|
+
if (id === "self") {
|
|
688
|
+
mark.fields = childDelta;
|
|
689
|
+
markIsANoop = false;
|
|
690
|
+
} else {
|
|
700
691
|
const fields = childDelta;
|
|
701
692
|
globals.push({
|
|
702
693
|
id: { major: id.revision, minor: id.localId },
|
|
703
694
|
fields,
|
|
704
695
|
});
|
|
705
|
-
} else {
|
|
706
|
-
mark.fields = childDelta;
|
|
707
|
-
markIsANoop = false;
|
|
708
696
|
}
|
|
709
697
|
}
|
|
710
698
|
|
|
@@ -760,9 +748,9 @@ function getNestedChanges(change: OptionalChangeset): NestedChangesIndices {
|
|
|
760
748
|
? undefined
|
|
761
749
|
: 0
|
|
762
750
|
: // If the node starts out as removed, then it remains removed in the output context iff it is not the node that is moved into the field
|
|
763
|
-
|
|
764
|
-
?
|
|
765
|
-
:
|
|
751
|
+
areEqualRegisterIdsOpt(register, nodeMovedIntoField)
|
|
752
|
+
? 0
|
|
753
|
+
: undefined;
|
|
766
754
|
return [nodeId, inputIndex, outputIndex];
|
|
767
755
|
});
|
|
768
756
|
}
|
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
makeVersionDispatchingCodec,
|
|
16
16
|
withSchemaValidation,
|
|
17
17
|
} from "../../codec/index.js";
|
|
18
|
-
import {
|
|
18
|
+
import { makeSchemaCodec, schemaCodecBuilder } from "../schema-index/index.js";
|
|
19
19
|
|
|
20
20
|
import { EncodedSchemaChange } from "./schemaChangeFormat.js";
|
|
21
21
|
import type { SchemaChange } from "./schemaChangeTypes.js";
|
|
@@ -31,7 +31,22 @@ export function makeSchemaChangeCodecs(
|
|
|
31
31
|
): ICodecFamily<SchemaChange> {
|
|
32
32
|
return makeCodecFamily([
|
|
33
33
|
[SchemaFormatVersion.v1, makeSchemaChangeCodecV1(options, SchemaFormatVersion.v1)],
|
|
34
|
-
|
|
34
|
+
// This code (makeSchemaChangeCodecs) is constructing a SchemaFormatVersion.v2 codec, regardless of the requested write version.
|
|
35
|
+
// It then trusts the user of the produced makeCodecFamily to only select if when it is valid to do so.
|
|
36
|
+
// This trust is manifests in having to use `allowPossiblyIncompatibleWriteVersionOverrides`
|
|
37
|
+
// here as it needs to build the v2 codec regardless of if its valid to use.
|
|
38
|
+
// TODO: There should not be two separate places selecting the write version for this codec. Such cases should instead adopt one of the following patterns:
|
|
39
|
+
// 1. The outer coded should let the inner one do its own version selection instead of forcing it.
|
|
40
|
+
// 2. The outer codec should fully handle version selection and embed the inner content directly (referencing its format not codec) and not involve the codec at all.
|
|
41
|
+
// TODO: fix this up when migrating SchemaChangeCodec to use ClientVersionDispatchingCodecBuilder.
|
|
42
|
+
// This should probably use pattern 1 above, which will result in this codec having two identical versions.
|
|
43
|
+
[
|
|
44
|
+
SchemaFormatVersion.v2,
|
|
45
|
+
makeSchemaChangeCodecV1(
|
|
46
|
+
{ ...options, allowPossiblyIncompatibleWriteVersionOverrides: true },
|
|
47
|
+
SchemaFormatVersion.v2,
|
|
48
|
+
),
|
|
49
|
+
],
|
|
35
50
|
]);
|
|
36
51
|
}
|
|
37
52
|
|
|
@@ -42,7 +57,7 @@ export function getCodecTreeForSchemaChangeFormat(
|
|
|
42
57
|
return {
|
|
43
58
|
name: "SchemaChange",
|
|
44
59
|
version,
|
|
45
|
-
children: [
|
|
60
|
+
children: [schemaCodecBuilder.getCodecTree(clientVersion)],
|
|
46
61
|
};
|
|
47
62
|
}
|
|
48
63
|
|
|
@@ -3,22 +3,14 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { fail
|
|
7
|
-
import {
|
|
8
|
-
getConfigForMinVersionForCollab,
|
|
9
|
-
lowestMinVersionForCollab,
|
|
10
|
-
} from "@fluidframework/runtime-utils/internal";
|
|
6
|
+
import { fail } from "@fluidframework/core-utils/internal";
|
|
7
|
+
import { lowestMinVersionForCollab } from "@fluidframework/runtime-utils/internal";
|
|
11
8
|
|
|
12
9
|
import {
|
|
13
|
-
|
|
10
|
+
ClientVersionDispatchingCodecBuilder,
|
|
14
11
|
type CodecWriteOptions,
|
|
15
12
|
FluidClientVersion,
|
|
16
|
-
type ICodecFamily,
|
|
17
|
-
type ICodecOptions,
|
|
18
13
|
type IJsonCodec,
|
|
19
|
-
makeCodecFamily,
|
|
20
|
-
makeVersionDispatchingCodec,
|
|
21
|
-
makeVersionedValidatedCodec,
|
|
22
14
|
} from "../../codec/index.js";
|
|
23
15
|
import {
|
|
24
16
|
SchemaFormatVersion,
|
|
@@ -30,82 +22,32 @@ import {
|
|
|
30
22
|
encodeFieldSchemaV2,
|
|
31
23
|
storedSchemaDecodeDispatcher,
|
|
32
24
|
} from "../../core/index.js";
|
|
33
|
-
import { brand
|
|
25
|
+
import { brand } from "../../util/index.js";
|
|
34
26
|
|
|
35
27
|
import { Format as FormatV1 } from "./formatV1.js";
|
|
36
28
|
import { Format as FormatV2 } from "./formatV2.js";
|
|
37
|
-
import type { MinimumVersionForCollab } from "@fluidframework/runtime-definitions/internal";
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* Convert a MinimumVersionForCollab to a SchemaFormatVersion.
|
|
41
|
-
* @param clientVersion - The MinimumVersionForCollab to convert.
|
|
42
|
-
* @returns The SchemaFormatVersion that corresponds to the provided MinimumVersionForCollab.
|
|
43
|
-
*/
|
|
44
|
-
export function clientVersionToSchemaVersion(
|
|
45
|
-
clientVersion: MinimumVersionForCollab,
|
|
46
|
-
): SchemaFormatVersion {
|
|
47
|
-
return getConfigForMinVersionForCollab(clientVersion, {
|
|
48
|
-
[lowestMinVersionForCollab]: SchemaFormatVersion.v1,
|
|
49
|
-
[FluidClientVersion.v2_43]: SchemaFormatVersion.v2,
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
export function getCodecTreeForSchemaFormat(
|
|
54
|
-
clientVersion: MinimumVersionForCollab,
|
|
55
|
-
): CodecTree {
|
|
56
|
-
return { name: "Schema", version: clientVersionToSchemaVersion(clientVersion) };
|
|
57
|
-
}
|
|
58
29
|
|
|
59
30
|
/**
|
|
60
31
|
* Create a schema codec.
|
|
61
32
|
* @param options - Specifies common codec options, including `minVersionForCollab` and which `validator` to use.
|
|
62
33
|
* @param writeVersionOverride - The schema version to write. If not provided, the version will be derived from `minVersionForCollab`.
|
|
34
|
+
* TODO: Currently this parameter is provided when it probably should not be. Users of it should probably allow the automatic selection to occur and this parameter can be removed.
|
|
35
|
+
* Any case where an override is actually required can use `options` to do so.
|
|
63
36
|
* @returns The composed codec.
|
|
64
37
|
*
|
|
65
38
|
* @privateRemarks We should consider using the Shared Tree format version instead as it may be more valuable for application authors than the schema version.
|
|
39
|
+
*
|
|
40
|
+
* TODO: replace use of this with schemaCodecBuilder.build(...).
|
|
66
41
|
*/
|
|
67
42
|
export function makeSchemaCodec(
|
|
68
43
|
options: CodecWriteOptions,
|
|
69
44
|
writeVersionOverride?: SchemaFormatVersion,
|
|
70
45
|
): IJsonCodec<TreeStoredSchema> {
|
|
71
|
-
const
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
writeVersion:
|
|
75
|
-
writeVersionOverride ?? clientVersionToSchemaVersion(options.minVersionForCollab),
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
/**
|
|
80
|
-
* Create a family of schema codecs.
|
|
81
|
-
* @param options - Specifies common codec options, including which `validator` to use.
|
|
82
|
-
* @returns The composed codec family.
|
|
83
|
-
*/
|
|
84
|
-
export function makeSchemaCodecs(options: ICodecOptions): ICodecFamily<TreeStoredSchema> {
|
|
85
|
-
return makeCodecFamily([
|
|
86
|
-
[SchemaFormatVersion.v1, makeSchemaCodecV1(options)],
|
|
87
|
-
[SchemaFormatVersion.v2, makeSchemaCodecV2(options)],
|
|
88
|
-
]);
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
/**
|
|
92
|
-
* Encode an in-memory TreeStoredSchema into the specified format version.
|
|
93
|
-
* @param repo - The in-memory schema.
|
|
94
|
-
* @param version - The schema write version.
|
|
95
|
-
* @returns The encoded schema.
|
|
96
|
-
*/
|
|
97
|
-
export function encodeRepo(
|
|
98
|
-
repo: TreeStoredSchema,
|
|
99
|
-
version: SchemaFormatVersion,
|
|
100
|
-
): JsonCompatible {
|
|
101
|
-
switch (version) {
|
|
102
|
-
case unbrand(SchemaFormatVersion.v1):
|
|
103
|
-
return encodeRepoV1(repo) as JsonCompatible;
|
|
104
|
-
case unbrand(SchemaFormatVersion.v2):
|
|
105
|
-
return encodeRepoV2(repo) as JsonCompatible;
|
|
106
|
-
default:
|
|
107
|
-
unreachableCase(version);
|
|
46
|
+
const overrides = new Map(options.writeVersionOverrides ?? []);
|
|
47
|
+
if (writeVersionOverride !== undefined) {
|
|
48
|
+
overrides.set(schemaCodecBuilder.name, writeVersionOverride);
|
|
108
49
|
}
|
|
50
|
+
return schemaCodecBuilder.build({ ...options, writeVersionOverrides: overrides });
|
|
109
51
|
}
|
|
110
52
|
|
|
111
53
|
function encodeRepoV1(repo: TreeStoredSchema): FormatV1 {
|
|
@@ -182,24 +124,22 @@ function decodeV2(f: FormatV2): TreeStoredSchema {
|
|
|
182
124
|
|
|
183
125
|
/**
|
|
184
126
|
* Creates a codec which performs synchronous monolithic encoding of schema content.
|
|
185
|
-
* @param options - Specifies common codec options, including which `validator` to use.
|
|
186
|
-
* @returns The codec.
|
|
187
127
|
*/
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
}
|
|
205
|
-
}
|
|
128
|
+
export const schemaCodecBuilder = ClientVersionDispatchingCodecBuilder.build("Schema", {
|
|
129
|
+
[lowestMinVersionForCollab]: {
|
|
130
|
+
formatVersion: SchemaFormatVersion.v1,
|
|
131
|
+
codec: {
|
|
132
|
+
encode: (data: TreeStoredSchema) => encodeRepoV1(data),
|
|
133
|
+
decode: (data: FormatV1) => decodeV1(data),
|
|
134
|
+
schema: FormatV1,
|
|
135
|
+
},
|
|
136
|
+
},
|
|
137
|
+
[FluidClientVersion.v2_43]: {
|
|
138
|
+
formatVersion: SchemaFormatVersion.v2,
|
|
139
|
+
codec: {
|
|
140
|
+
encode: (data: TreeStoredSchema) => encodeRepoV2(data),
|
|
141
|
+
decode: (data: FormatV2) => decodeV2(data),
|
|
142
|
+
schema: FormatV2,
|
|
143
|
+
},
|
|
144
|
+
},
|
|
145
|
+
});
|
|
@@ -3,12 +3,10 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
export { SchemaSummarizer
|
|
6
|
+
export { SchemaSummarizer } from "./schemaSummarizer.js";
|
|
7
7
|
export {
|
|
8
8
|
makeSchemaCodec,
|
|
9
|
-
|
|
10
|
-
clientVersionToSchemaVersion,
|
|
11
|
-
getCodecTreeForSchemaFormat,
|
|
9
|
+
schemaCodecBuilder,
|
|
12
10
|
} from "./codec.js";
|
|
13
11
|
export { Format as FormatV1 } from "./formatV1.js";
|
|
14
12
|
export { Format as FormatV2 } from "./formatV2.js";
|
|
@@ -17,7 +17,6 @@ import type { SummaryTreeBuilder } from "@fluidframework/runtime-utils/internal"
|
|
|
17
17
|
import type { IJsonCodec } from "../../codec/index.js";
|
|
18
18
|
import {
|
|
19
19
|
type MutableTreeStoredSchema,
|
|
20
|
-
type SchemaFormatVersion,
|
|
21
20
|
type TreeStoredSchema,
|
|
22
21
|
schemaDataIsEmpty,
|
|
23
22
|
} from "../../core/index.js";
|
|
@@ -27,11 +26,8 @@ import {
|
|
|
27
26
|
type SummaryElementParser,
|
|
28
27
|
type SummaryElementStringifier,
|
|
29
28
|
} from "../../shared-tree-core/index.js";
|
|
30
|
-
import type { JsonCompatible } from "../../util/index.js";
|
|
31
29
|
import type { CollabWindow } from "../incrementalSummarizationUtils.js";
|
|
32
30
|
|
|
33
|
-
import { encodeRepo } from "./codec.js";
|
|
34
|
-
|
|
35
31
|
export const schemaStringKey = "SchemaString";
|
|
36
32
|
|
|
37
33
|
/**
|
|
@@ -141,16 +137,3 @@ export class SchemaSummarizer
|
|
|
141
137
|
this.schemaIndexLastChangedSeq = 0;
|
|
142
138
|
}
|
|
143
139
|
}
|
|
144
|
-
|
|
145
|
-
/**
|
|
146
|
-
* Dumps schema into a deterministic JSON compatible semi-human readable format.
|
|
147
|
-
*
|
|
148
|
-
* @remarks
|
|
149
|
-
* This can be used to help inspect schema for debugging, and to save a snapshot of schema to help detect and review changes to an applications schema.
|
|
150
|
-
*/
|
|
151
|
-
export function encodeTreeSchema(
|
|
152
|
-
schema: TreeStoredSchema,
|
|
153
|
-
writeVersion: SchemaFormatVersion,
|
|
154
|
-
): JsonCompatible {
|
|
155
|
-
return encodeRepo(schema, writeVersion);
|
|
156
|
-
}
|
|
@@ -93,7 +93,7 @@ export function isNodeInSchema<T extends NotUndefined>(
|
|
|
93
93
|
// Since this is testing compatibility with a stored schema (not view schema), "allowUnknownOptionalFields" does not exist at this layer.
|
|
94
94
|
// Code using this with a stored schema derived from a view schema rather than the document can be problematic because it may be missing unknown fields that the actual document has.
|
|
95
95
|
// Other schema evolution features like "staged" allowed types will likely cause similar issues elsewhere in this checker.
|
|
96
|
-
if (uncheckedFieldsFromNode.size
|
|
96
|
+
if (uncheckedFieldsFromNode.size > 0) {
|
|
97
97
|
return onError(SchemaValidationError.ObjectNode_FieldNotInSchema);
|
|
98
98
|
}
|
|
99
99
|
} else if (schema instanceof MapNodeStoredSchema) {
|
|
@@ -170,7 +170,7 @@ export function compliesWithMultiplicity(
|
|
|
170
170
|
multiplicity: Multiplicity,
|
|
171
171
|
): SchemaValidationError | undefined {
|
|
172
172
|
switch (multiplicity) {
|
|
173
|
-
case Multiplicity.Single:
|
|
173
|
+
case Multiplicity.Single: {
|
|
174
174
|
if (numberOfItems < 1) {
|
|
175
175
|
return SchemaValidationError.Field_MissingRequiredChild;
|
|
176
176
|
} else if (numberOfItems > 1) {
|
|
@@ -178,17 +178,22 @@ export function compliesWithMultiplicity(
|
|
|
178
178
|
} else {
|
|
179
179
|
return undefined;
|
|
180
180
|
}
|
|
181
|
-
|
|
181
|
+
}
|
|
182
|
+
case Multiplicity.Optional: {
|
|
182
183
|
return numberOfItems > 1
|
|
183
184
|
? SchemaValidationError.Field_MultipleChildrenNotAllowed
|
|
184
185
|
: undefined;
|
|
185
|
-
|
|
186
|
+
}
|
|
187
|
+
case Multiplicity.Sequence: {
|
|
186
188
|
return undefined;
|
|
187
|
-
|
|
189
|
+
}
|
|
190
|
+
case Multiplicity.Forbidden: {
|
|
188
191
|
return numberOfItems === 0
|
|
189
192
|
? undefined
|
|
190
193
|
: SchemaValidationError.Field_ChildInForbiddenField;
|
|
191
|
-
|
|
194
|
+
}
|
|
195
|
+
default: {
|
|
192
196
|
unreachableCase(multiplicity);
|
|
197
|
+
}
|
|
193
198
|
}
|
|
194
199
|
}
|
|
@@ -502,7 +502,7 @@ function composeMark<TMark extends Mark>(
|
|
|
502
502
|
moveEffects: MoveEffectTable,
|
|
503
503
|
composeChild: (node: NodeId) => NodeId | undefined,
|
|
504
504
|
): TMark {
|
|
505
|
-
const nodeChanges = mark.changes
|
|
505
|
+
const nodeChanges = mark.changes === undefined ? undefined : composeChild(mark.changes);
|
|
506
506
|
const updatedMark = withUpdatedEndpoint(mark, mark.count, moveEffects);
|
|
507
507
|
return withNodeChange(updatedMark, nodeChanges);
|
|
508
508
|
}
|
|
@@ -564,14 +564,18 @@ export class ComposeQueue {
|
|
|
564
564
|
this.revisionMetadata,
|
|
565
565
|
);
|
|
566
566
|
switch (comparison) {
|
|
567
|
-
case CellOrder.SameCell:
|
|
567
|
+
case CellOrder.SameCell: {
|
|
568
568
|
return this.dequeueBoth();
|
|
569
|
-
|
|
569
|
+
}
|
|
570
|
+
case CellOrder.OldThenNew: {
|
|
570
571
|
return this.dequeueBase();
|
|
571
|
-
|
|
572
|
+
}
|
|
573
|
+
case CellOrder.NewThenOld: {
|
|
572
574
|
return this.dequeueNew();
|
|
573
|
-
|
|
575
|
+
}
|
|
576
|
+
default: {
|
|
574
577
|
unreachableCase(comparison);
|
|
578
|
+
}
|
|
575
579
|
}
|
|
576
580
|
} else if (areOutputCellsEmpty(baseMark)) {
|
|
577
581
|
return this.dequeueBase();
|
|
@@ -680,7 +684,7 @@ function setModifyAfter(
|
|
|
680
684
|
const count = 1;
|
|
681
685
|
const effect = getMoveEffect(moveEffects, target, revision, id, count, false);
|
|
682
686
|
const newEffect: MoveEffect =
|
|
683
|
-
effect.value
|
|
687
|
+
effect.value === undefined ? { modifyAfter } : { ...effect.value, modifyAfter };
|
|
684
688
|
setMoveEffect(moveEffects, target, revision, id, count, newEffect);
|
|
685
689
|
}
|
|
686
690
|
|
|
@@ -692,7 +696,7 @@ function setEndpoint(
|
|
|
692
696
|
endpoint: ChangeAtomId,
|
|
693
697
|
): void {
|
|
694
698
|
const effect = getMoveEffect(moveEffects, target, id.revision, id.localId, count, false);
|
|
695
|
-
const newEffect = effect.value
|
|
699
|
+
const newEffect = effect.value === undefined ? { endpoint } : { ...effect.value, endpoint };
|
|
696
700
|
setMoveEffect(moveEffects, target, id.revision, id.localId, effect.length, newEffect);
|
|
697
701
|
|
|
698
702
|
const remainingCount = count - effect.length;
|
|
@@ -716,9 +720,9 @@ function setTruncatedEndpoint(
|
|
|
716
720
|
): void {
|
|
717
721
|
const effect = getMoveEffect(moveEffects, target, id.revision, id.localId, count);
|
|
718
722
|
const newEffect =
|
|
719
|
-
effect.value
|
|
720
|
-
? {
|
|
721
|
-
: { truncatedEndpoint };
|
|
723
|
+
effect.value === undefined
|
|
724
|
+
? { truncatedEndpoint }
|
|
725
|
+
: { ...effect.value, truncatedEndpoint };
|
|
722
726
|
|
|
723
727
|
setMoveEffect(moveEffects, target, id.revision, id.localId, effect.length, newEffect);
|
|
724
728
|
|
|
@@ -743,9 +747,9 @@ function setTruncatedEndpointForInner(
|
|
|
743
747
|
): void {
|
|
744
748
|
const effect = getMoveEffect(moveEffects, target, id.revision, id.localId, count);
|
|
745
749
|
const newEffect =
|
|
746
|
-
effect.value
|
|
747
|
-
? {
|
|
748
|
-
: { truncatedEndpointForInner };
|
|
750
|
+
effect.value === undefined
|
|
751
|
+
? { truncatedEndpointForInner }
|
|
752
|
+
: { ...effect.value, truncatedEndpointForInner };
|
|
749
753
|
setMoveEffect(moveEffects, target, id.revision, id.localId, effect.length, newEffect);
|
|
750
754
|
|
|
751
755
|
const remainingCount = count - effect.length;
|
|
@@ -303,8 +303,9 @@ function invertMark(
|
|
|
303
303
|
|
|
304
304
|
return inverses;
|
|
305
305
|
}
|
|
306
|
-
default:
|
|
306
|
+
default: {
|
|
307
307
|
unreachableCase(type);
|
|
308
|
+
}
|
|
308
309
|
}
|
|
309
310
|
}
|
|
310
311
|
|
|
@@ -319,9 +320,9 @@ function applyMovedChanges(
|
|
|
319
320
|
if (entry.length < mark.count) {
|
|
320
321
|
const [mark1, mark2] = splitMark(mark, entry.length);
|
|
321
322
|
const mark1WithChanges =
|
|
322
|
-
entry.value
|
|
323
|
-
?
|
|
324
|
-
: mark1;
|
|
323
|
+
entry.value === undefined
|
|
324
|
+
? mark1
|
|
325
|
+
: withNodeChange<CellMark<MoveOut>, MoveOut>(mark1, entry.value);
|
|
325
326
|
|
|
326
327
|
return [mark1WithChanges, ...applyMovedChanges(mark2, revision, manager)];
|
|
327
328
|
}
|