@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
|
@@ -177,12 +177,15 @@ export function deaggregateChunks(chunk: TreeChunk): TreeChunk[] {
|
|
|
177
177
|
export function aggregateChunks(input: TreeChunk[]): TreeChunk {
|
|
178
178
|
const chunks = input.flatMap(deaggregateChunks);
|
|
179
179
|
switch (chunks.length) {
|
|
180
|
-
case 0:
|
|
180
|
+
case 0: {
|
|
181
181
|
return emptyChunk;
|
|
182
|
-
|
|
182
|
+
}
|
|
183
|
+
case 1: {
|
|
183
184
|
return chunks[0] ?? oob();
|
|
184
|
-
|
|
185
|
+
}
|
|
186
|
+
default: {
|
|
185
187
|
return new SequenceChunk(chunks);
|
|
188
|
+
}
|
|
186
189
|
}
|
|
187
190
|
}
|
|
188
191
|
|
|
@@ -336,7 +339,7 @@ export class NodeDecoder implements ChunkDecoder {
|
|
|
336
339
|
// consider keeping array chunks here if they are longer than some threshold.
|
|
337
340
|
const chunks = deaggregateChunks(data);
|
|
338
341
|
|
|
339
|
-
if (chunks.length
|
|
342
|
+
if (chunks.length > 0) {
|
|
340
343
|
fields.set(key, chunks);
|
|
341
344
|
}
|
|
342
345
|
}
|
|
@@ -159,18 +159,21 @@ export function makeFieldBatchCodec(options: CodecWriteOptions): FieldBatchCodec
|
|
|
159
159
|
| typeof schemaCompressedEncodeV2;
|
|
160
160
|
let encodedFieldBatchType: typeof EncodedFieldBatchV1 | typeof EncodedFieldBatchV2;
|
|
161
161
|
switch (writeVersion) {
|
|
162
|
-
case unbrand(FieldBatchFormatVersion.v1):
|
|
162
|
+
case unbrand(FieldBatchFormatVersion.v1): {
|
|
163
163
|
uncompressedEncodeFn = uncompressedEncodeV1;
|
|
164
164
|
schemaCompressedEncodeFn = schemaCompressedEncodeV1;
|
|
165
165
|
encodedFieldBatchType = EncodedFieldBatchV1;
|
|
166
166
|
break;
|
|
167
|
-
|
|
167
|
+
}
|
|
168
|
+
case unbrand(FieldBatchFormatVersion.v2): {
|
|
168
169
|
uncompressedEncodeFn = uncompressedEncodeV2;
|
|
169
170
|
schemaCompressedEncodeFn = schemaCompressedEncodeV2;
|
|
170
171
|
encodedFieldBatchType = EncodedFieldBatchV2;
|
|
171
172
|
break;
|
|
172
|
-
|
|
173
|
+
}
|
|
174
|
+
default: {
|
|
173
175
|
unreachableCase(writeVersion);
|
|
176
|
+
}
|
|
174
177
|
}
|
|
175
178
|
|
|
176
179
|
return makeVersionedValidatedCodec(options, validVersions, encodedFieldBatchType, {
|
|
@@ -184,19 +187,25 @@ export function makeFieldBatchCodec(options: CodecWriteOptions): FieldBatchCodec
|
|
|
184
187
|
let encoded: EncodedFieldBatch;
|
|
185
188
|
let incrementalEncoder: IncrementalEncoder | undefined;
|
|
186
189
|
switch (context.encodeType) {
|
|
187
|
-
case TreeCompressionStrategy.Uncompressed:
|
|
190
|
+
case TreeCompressionStrategy.Uncompressed: {
|
|
188
191
|
encoded = uncompressedEncodeFn(data);
|
|
189
192
|
break;
|
|
190
|
-
|
|
193
|
+
}
|
|
194
|
+
case TreeCompressionStrategy.CompressedIncremental: {
|
|
191
195
|
assert(
|
|
192
196
|
writeVersion >= FieldBatchFormatVersion.v2,
|
|
193
197
|
0xca0 /* Unsupported FieldBatchFormatVersion for incremental encoding; must be v2 or higher */,
|
|
194
198
|
);
|
|
195
199
|
// Incremental encoding is only supported for CompressedIncremental.
|
|
196
200
|
incrementalEncoder = context.incrementalEncoderDecoder;
|
|
197
|
-
|
|
201
|
+
}
|
|
202
|
+
// fallthrough
|
|
203
|
+
case TreeCompressionStrategy.Compressed: {
|
|
198
204
|
// eslint-disable-next-line unicorn/prefer-ternary
|
|
199
|
-
if (context.schema
|
|
205
|
+
if (context.schema === undefined) {
|
|
206
|
+
// TODO: consider enabling a somewhat compressed but not schema accelerated encode.
|
|
207
|
+
encoded = uncompressedEncodeFn(data);
|
|
208
|
+
} else {
|
|
200
209
|
encoded = schemaCompressedEncodeFn(
|
|
201
210
|
context.schema.schema,
|
|
202
211
|
context.schema.policy,
|
|
@@ -204,14 +213,13 @@ export function makeFieldBatchCodec(options: CodecWriteOptions): FieldBatchCodec
|
|
|
204
213
|
context.idCompressor,
|
|
205
214
|
incrementalEncoder,
|
|
206
215
|
);
|
|
207
|
-
} else {
|
|
208
|
-
// TODO: consider enabling a somewhat compressed but not schema accelerated encode.
|
|
209
|
-
encoded = uncompressedEncodeFn(data);
|
|
210
216
|
}
|
|
211
217
|
|
|
212
218
|
break;
|
|
213
|
-
|
|
219
|
+
}
|
|
220
|
+
default: {
|
|
214
221
|
unreachableCase(context.encodeType);
|
|
222
|
+
}
|
|
215
223
|
}
|
|
216
224
|
|
|
217
225
|
// TODO: consider checking input data was in schema.
|
|
@@ -484,10 +484,10 @@ export function encodeValue(
|
|
|
484
484
|
outputBuffer: BufferFormat,
|
|
485
485
|
): void {
|
|
486
486
|
if (shape === undefined) {
|
|
487
|
-
if (value
|
|
488
|
-
outputBuffer.push(true, value);
|
|
489
|
-
} else {
|
|
487
|
+
if (value === undefined) {
|
|
490
488
|
outputBuffer.push(false);
|
|
489
|
+
} else {
|
|
490
|
+
outputBuffer.push(true, value);
|
|
491
491
|
}
|
|
492
492
|
} else {
|
|
493
493
|
if (shape === true) {
|
|
@@ -143,7 +143,7 @@ export function getFieldEncoder(
|
|
|
143
143
|
const kind = context.fieldShapes.get(field.kind) ?? fail(0xb52 /* missing FieldKind */);
|
|
144
144
|
const type = oneFromIterable(field.types);
|
|
145
145
|
const nodeEncoder =
|
|
146
|
-
type
|
|
146
|
+
type === undefined ? anyNodeEncoder : nodeBuilder.nodeEncoderFromSchema(type);
|
|
147
147
|
if (kind.multiplicity === Multiplicity.Single) {
|
|
148
148
|
if (field.kind === identifierFieldKindIdentifier) {
|
|
149
149
|
assert(type !== undefined, 0x999 /* field type must be defined in identifier field */);
|
|
@@ -227,16 +227,20 @@ export function getNodeEncoder(
|
|
|
227
227
|
|
|
228
228
|
function valueShapeFromSchema(schema: ValueSchema | undefined): undefined | EncodedValueShape {
|
|
229
229
|
switch (schema) {
|
|
230
|
-
case undefined:
|
|
230
|
+
case undefined: {
|
|
231
231
|
return false;
|
|
232
|
+
}
|
|
232
233
|
case ValueSchema.Number:
|
|
233
234
|
case ValueSchema.String:
|
|
234
235
|
case ValueSchema.Boolean:
|
|
235
|
-
case ValueSchema.FluidHandle:
|
|
236
|
+
case ValueSchema.FluidHandle: {
|
|
236
237
|
return true;
|
|
237
|
-
|
|
238
|
+
}
|
|
239
|
+
case ValueSchema.Null: {
|
|
238
240
|
return [null];
|
|
239
|
-
|
|
241
|
+
}
|
|
242
|
+
default: {
|
|
240
243
|
unreachableCase(schema);
|
|
244
|
+
}
|
|
241
245
|
}
|
|
242
246
|
}
|
|
@@ -66,7 +66,7 @@ export class UniformChunk extends ReferenceCountedBase implements TreeChunk {
|
|
|
66
66
|
}
|
|
67
67
|
|
|
68
68
|
public clone(): UniformChunk {
|
|
69
|
-
return new UniformChunk(this.shape, this.values
|
|
69
|
+
return new UniformChunk(this.shape, [...this.values]);
|
|
70
70
|
}
|
|
71
71
|
|
|
72
72
|
public cursor(): Cursor {
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import { assert, oob } from "@fluidframework/core-utils/internal";
|
|
7
7
|
import { UsageError } from "@fluidframework/telemetry-utils/internal";
|
|
8
8
|
|
|
9
|
-
import type { ICodecFamily } from "../../codec/index.js";
|
|
9
|
+
import type { CodecWriteOptions, ICodecFamily } from "../../codec/index.js";
|
|
10
10
|
import {
|
|
11
11
|
type ChangeAtomId,
|
|
12
12
|
type ChangeEncodingContext,
|
|
@@ -58,8 +58,11 @@ export class DefaultChangeFamily
|
|
|
58
58
|
{
|
|
59
59
|
private readonly modularFamily: ModularChangeFamily;
|
|
60
60
|
|
|
61
|
-
public constructor(
|
|
62
|
-
|
|
61
|
+
public constructor(
|
|
62
|
+
codecs: ICodecFamily<ModularChangeset, ChangeEncodingContext>,
|
|
63
|
+
codecOptions: CodecWriteOptions,
|
|
64
|
+
) {
|
|
65
|
+
this.modularFamily = new ModularChangeFamily(fieldKinds, codecs, codecOptions);
|
|
63
66
|
}
|
|
64
67
|
|
|
65
68
|
public get rebaser(): ChangeRebaser<DefaultChangeset> {
|
|
@@ -74,7 +77,12 @@ export class DefaultChangeFamily
|
|
|
74
77
|
mintRevisionTag: () => RevisionTag,
|
|
75
78
|
changeReceiver: (change: TaggedChange<DefaultChangeset>) => void,
|
|
76
79
|
): DefaultEditBuilder {
|
|
77
|
-
return new DefaultEditBuilder(
|
|
80
|
+
return new DefaultEditBuilder(
|
|
81
|
+
this,
|
|
82
|
+
mintRevisionTag,
|
|
83
|
+
changeReceiver,
|
|
84
|
+
this.modularFamily.codecOptions,
|
|
85
|
+
);
|
|
78
86
|
}
|
|
79
87
|
}
|
|
80
88
|
|
|
@@ -161,16 +169,26 @@ export interface IDefaultEditBuilder<TContent = TreeChunk> {
|
|
|
161
169
|
): void;
|
|
162
170
|
|
|
163
171
|
/**
|
|
164
|
-
* Add a constraint that the node at the given path must exist.
|
|
172
|
+
* Add a constraint that, for this change to apply, the node at the given path must exist immediately before the change is applied.
|
|
165
173
|
* @param path - The path to the node that must exist.
|
|
166
174
|
*/
|
|
167
175
|
addNodeExistsConstraint(path: NormalizedUpPath): void;
|
|
168
176
|
|
|
169
177
|
/**
|
|
170
|
-
* Add a constraint that the node at the given path must exist
|
|
178
|
+
* Add a constraint that, for the revert of this change to apply, the node at the given path must exist immediately before the revert is applied.
|
|
171
179
|
* @param path - The path to the node that must exist when reverting a change.
|
|
172
180
|
*/
|
|
173
181
|
addNodeExistsConstraintOnRevert(path: NormalizedUpPath): void;
|
|
182
|
+
|
|
183
|
+
/**
|
|
184
|
+
* Add a constraint that, for this change to apply, the document must be in the same state immediately before this change is applied as it was before this change was authored.
|
|
185
|
+
*/
|
|
186
|
+
addNoChangeConstraint(): void;
|
|
187
|
+
|
|
188
|
+
/**
|
|
189
|
+
* Add a constraint that, for the revert of this change to apply, the document must be in the same state immediately before the revert is applied as it was after this change was applied.
|
|
190
|
+
*/
|
|
191
|
+
addNoChangeConstraintOnRevert(): void;
|
|
174
192
|
}
|
|
175
193
|
|
|
176
194
|
/**
|
|
@@ -184,8 +202,14 @@ export class DefaultEditBuilder implements ChangeFamilyEditor, IDefaultEditBuild
|
|
|
184
202
|
family: ChangeFamily<ChangeFamilyEditor, DefaultChangeset>,
|
|
185
203
|
private readonly mintRevisionTag: () => RevisionTag,
|
|
186
204
|
changeReceiver: (change: TaggedChange<DefaultChangeset>) => void,
|
|
205
|
+
codecOptions: CodecWriteOptions,
|
|
187
206
|
) {
|
|
188
|
-
this.modularBuilder = new ModularEditBuilder(
|
|
207
|
+
this.modularBuilder = new ModularEditBuilder(
|
|
208
|
+
family,
|
|
209
|
+
fieldKinds,
|
|
210
|
+
changeReceiver,
|
|
211
|
+
codecOptions,
|
|
212
|
+
);
|
|
189
213
|
}
|
|
190
214
|
|
|
191
215
|
public enterTransaction(): void {
|
|
@@ -203,6 +227,14 @@ export class DefaultEditBuilder implements ChangeFamilyEditor, IDefaultEditBuild
|
|
|
203
227
|
this.modularBuilder.addNodeExistsConstraintOnRevert(path, this.mintRevisionTag());
|
|
204
228
|
}
|
|
205
229
|
|
|
230
|
+
public addNoChangeConstraint(): void {
|
|
231
|
+
this.modularBuilder.addNoChangeConstraint(this.mintRevisionTag());
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
public addNoChangeConstraintOnRevert(): void {
|
|
235
|
+
this.modularBuilder.addNoChangeConstraintOnRevert(this.mintRevisionTag());
|
|
236
|
+
}
|
|
237
|
+
|
|
206
238
|
public valueField(field: FieldUpPath): ValueFieldEditBuilder<TreeChunk> {
|
|
207
239
|
return {
|
|
208
240
|
set: (newContent: TreeChunk): void => {
|
|
@@ -245,7 +277,9 @@ export class DefaultEditBuilder implements ChangeFamilyEditor, IDefaultEditBuild
|
|
|
245
277
|
let optionalChange: OptionalChangeset;
|
|
246
278
|
const revision = this.mintRevisionTag();
|
|
247
279
|
const detach: ChangeAtomId = { localId: this.modularBuilder.generateId(), revision };
|
|
248
|
-
if (newContent
|
|
280
|
+
if (newContent === undefined) {
|
|
281
|
+
optionalChange = optional.changeHandler.editor.clear(wasEmpty, detach);
|
|
282
|
+
} else {
|
|
249
283
|
const fill: ChangeAtomId = { localId: this.modularBuilder.generateId(), revision };
|
|
250
284
|
const build = this.modularBuilder.buildTrees(fill.localId, newContent, revision);
|
|
251
285
|
edits.push(build);
|
|
@@ -254,8 +288,6 @@ export class DefaultEditBuilder implements ChangeFamilyEditor, IDefaultEditBuild
|
|
|
254
288
|
fill,
|
|
255
289
|
detach,
|
|
256
290
|
});
|
|
257
|
-
} else {
|
|
258
|
-
optionalChange = optional.changeHandler.editor.clear(wasEmpty, detach);
|
|
259
291
|
}
|
|
260
292
|
|
|
261
293
|
const change: FieldChangeset = brand(optionalChange);
|
|
@@ -464,13 +496,12 @@ function getSharedPrefixLength(pathA: readonly UpPath[], pathB: readonly UpPath[
|
|
|
464
496
|
while (sharedDepth < minDepth) {
|
|
465
497
|
const detachStep = pathA[sharedDepth] ?? oob();
|
|
466
498
|
const attachStep = pathB[sharedDepth] ?? oob();
|
|
467
|
-
if (
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
detachStep.parentIndex !== attachStep.parentIndex
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
}
|
|
499
|
+
if (
|
|
500
|
+
detachStep !== attachStep &&
|
|
501
|
+
(detachStep.parentField !== attachStep.parentField ||
|
|
502
|
+
detachStep.parentIndex !== attachStep.parentIndex)
|
|
503
|
+
) {
|
|
504
|
+
break;
|
|
474
505
|
}
|
|
475
506
|
sharedDepth += 1;
|
|
476
507
|
}
|
|
@@ -202,15 +202,25 @@ export const fieldKindConfigurations: ReadonlyMap<
|
|
|
202
202
|
[identifier.identifier, { kind: identifier, formatVersion: 1 }],
|
|
203
203
|
]),
|
|
204
204
|
],
|
|
205
|
+
[
|
|
206
|
+
brand(5),
|
|
207
|
+
new Map<FieldKindIdentifier, FieldKindConfigurationEntry>([
|
|
208
|
+
[required.identifier, { kind: required, formatVersion: 2 }],
|
|
209
|
+
[optional.identifier, { kind: optional, formatVersion: 2 }],
|
|
210
|
+
[sequence.identifier, { kind: sequence, formatVersion: 3 }],
|
|
211
|
+
[forbidden.identifier, { kind: forbidden, formatVersion: 1 }],
|
|
212
|
+
[identifier.identifier, { kind: identifier, formatVersion: 1 }],
|
|
213
|
+
]),
|
|
214
|
+
],
|
|
205
215
|
]);
|
|
206
216
|
|
|
207
|
-
export type ModularChangeFormatVersion = Brand<3 | 4, "ModularChangeFormatVersion">;
|
|
217
|
+
export type ModularChangeFormatVersion = Brand<3 | 4 | 5, "ModularChangeFormatVersion">;
|
|
208
218
|
export function getCodecTreeForModularChangeFormat(
|
|
209
219
|
version: ModularChangeFormatVersion,
|
|
210
220
|
): CodecTree {
|
|
211
221
|
const dependencies =
|
|
212
222
|
fieldKindConfigurations.get(version) ?? fail(0xc7c /* Unknown modular change format */);
|
|
213
|
-
const children: CodecTree[] =
|
|
223
|
+
const children: CodecTree[] = [...dependencies.entries()].map(
|
|
214
224
|
([key, { formatVersion }]) => ({
|
|
215
225
|
name: `FieldKind:${key}`,
|
|
216
226
|
version: formatVersion,
|
|
@@ -66,4 +66,10 @@ export class MappedEditBuilder<TBase, TAdapted> implements IDefaultEditBuilder<T
|
|
|
66
66
|
public addNodeExistsConstraintOnRevert(path: NormalizedUpPath): void {
|
|
67
67
|
this.baseBuilder.addNodeExistsConstraintOnRevert(path);
|
|
68
68
|
}
|
|
69
|
+
public addNoChangeConstraint(): void {
|
|
70
|
+
this.baseBuilder.addNoChangeConstraint();
|
|
71
|
+
}
|
|
72
|
+
public addNoChangeConstraintOnRevert(): void {
|
|
73
|
+
this.baseBuilder.addNoChangeConstraintOnRevert();
|
|
74
|
+
}
|
|
69
75
|
}
|
|
@@ -230,16 +230,15 @@ export abstract class LazyField extends LazyEntity<FieldAnchor> implements FlexT
|
|
|
230
230
|
* This path is not valid to hold onto across edits: this must be recalled for each edit.
|
|
231
231
|
*/
|
|
232
232
|
public getFieldPathForEditing(): NormalizedFieldUpPath {
|
|
233
|
-
if (
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
233
|
+
if (
|
|
234
|
+
!this.isFreed() &&
|
|
235
|
+
// Only allow editing if we are the root document field...
|
|
236
|
+
((this.parent === undefined && this.anchor.fieldKey === rootFieldKey) ||
|
|
237
237
|
// ...or are under a node in the document
|
|
238
238
|
(this.parent !== undefined &&
|
|
239
|
-
treeStatusFromAnchorCache(this.parent.anchorNode) === TreeStatus.InDocument)
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
}
|
|
239
|
+
treeStatusFromAnchorCache(this.parent.anchorNode) === TreeStatus.InDocument))
|
|
240
|
+
) {
|
|
241
|
+
return this.getFieldPath();
|
|
243
242
|
}
|
|
244
243
|
|
|
245
244
|
throw new UsageError("Editing only allowed on fields with TreeStatus.InDocument status");
|
|
@@ -305,7 +304,7 @@ export class LazyOptionalField extends LazyField implements FlexTreeOptionalFiel
|
|
|
305
304
|
public editor: OptionalFieldEditBuilder<ExclusiveMapTree> = {
|
|
306
305
|
set: (newContent, wasEmpty) => {
|
|
307
306
|
this.optionalEditor().set(
|
|
308
|
-
newContent
|
|
307
|
+
newContent === undefined ? newContent : cursorForMapTreeField([newContent]),
|
|
309
308
|
wasEmpty,
|
|
310
309
|
);
|
|
311
310
|
},
|
|
@@ -359,16 +358,16 @@ export function unboxedFlexNode(
|
|
|
359
358
|
// This avoids O(depth) related costs from getOrCreateHydratedFlexTreeNode in the cached case.
|
|
360
359
|
const anchor = fieldAnchor.parent;
|
|
361
360
|
let child: AnchorNode | undefined;
|
|
362
|
-
if (anchor
|
|
363
|
-
const anchorNode = context.checkout.forest.anchors.locate(anchor);
|
|
364
|
-
assert(anchorNode !== undefined, 0xa4c /* missing anchor */);
|
|
365
|
-
child = anchorNode.childIfAnchored(fieldAnchor.fieldKey, cursor.fieldIndex);
|
|
366
|
-
} else {
|
|
361
|
+
if (anchor === undefined) {
|
|
367
362
|
child = context.checkout.forest.anchors.find({
|
|
368
363
|
parent: undefined,
|
|
369
364
|
parentField: fieldAnchor.fieldKey,
|
|
370
365
|
parentIndex: cursor.fieldIndex,
|
|
371
366
|
});
|
|
367
|
+
} else {
|
|
368
|
+
const anchorNode = context.checkout.forest.anchors.locate(anchor);
|
|
369
|
+
assert(anchorNode !== undefined, 0xa4c /* missing anchor */);
|
|
370
|
+
child = anchorNode.childIfAnchored(fieldAnchor.fieldKey, cursor.fieldIndex);
|
|
372
371
|
}
|
|
373
372
|
|
|
374
373
|
if (child !== undefined) {
|
|
@@ -29,11 +29,8 @@ export {
|
|
|
29
29
|
export { buildForest } from "./object-forest/index.js";
|
|
30
30
|
export {
|
|
31
31
|
SchemaSummarizer,
|
|
32
|
-
encodeTreeSchema,
|
|
33
32
|
makeSchemaCodec,
|
|
34
|
-
|
|
35
|
-
getCodecTreeForSchemaFormat,
|
|
36
|
-
clientVersionToSchemaVersion,
|
|
33
|
+
schemaCodecBuilder,
|
|
37
34
|
} from "./schema-index/index.js";
|
|
38
35
|
export {
|
|
39
36
|
stackTreeNodeCursor,
|
|
@@ -83,13 +80,15 @@ export {
|
|
|
83
80
|
type NodeExistsConstraint,
|
|
84
81
|
ModularChangeFamily,
|
|
85
82
|
type RelevantRemovedRootsFromChild,
|
|
86
|
-
|
|
83
|
+
EncodedModularChangesetV1,
|
|
84
|
+
EncodedModularChangesetV2,
|
|
87
85
|
updateRefreshers,
|
|
88
86
|
type NodeId,
|
|
89
87
|
type FieldChangeEncodingContext,
|
|
90
88
|
type FieldKindConfiguration,
|
|
91
89
|
type FieldKindConfigurationEntry,
|
|
92
90
|
isNeverTree,
|
|
91
|
+
DefaultRevisionReplacer,
|
|
93
92
|
} from "./modular-schema/index.js";
|
|
94
93
|
|
|
95
94
|
export { mapRootChanges } from "./deltaUtils.js";
|
|
@@ -213,3 +212,9 @@ export {
|
|
|
213
212
|
type TreeIndexKey,
|
|
214
213
|
type TreeIndexNodes,
|
|
215
214
|
} from "./indexing/index.js";
|
|
215
|
+
|
|
216
|
+
export {
|
|
217
|
+
type ChangeAtomIdBTree,
|
|
218
|
+
getFromChangeAtomIdMap,
|
|
219
|
+
setInChangeAtomIdMap,
|
|
220
|
+
} from "./changeAtomIdBTree.js";
|
|
@@ -394,12 +394,12 @@ export class AnchorTreeIndex<TKey extends TreeIndexKey, TValue>
|
|
|
394
394
|
* Given a cursor in field mode, indexes all nodes under the field and then indexes all nodes up the spine.
|
|
395
395
|
*/
|
|
396
396
|
private indexSpine(cursor: ITreeSubscriptionCursor): void {
|
|
397
|
-
if (keyAsDetachedField(cursor.getFieldKey())
|
|
398
|
-
cursor.exitField();
|
|
399
|
-
cursor.exitNode();
|
|
400
|
-
} else {
|
|
397
|
+
if (keyAsDetachedField(cursor.getFieldKey()) === rootField) {
|
|
401
398
|
// return early if we're already at the root field
|
|
402
399
|
return;
|
|
400
|
+
} else {
|
|
401
|
+
cursor.exitField();
|
|
402
|
+
cursor.exitNode();
|
|
403
403
|
}
|
|
404
404
|
|
|
405
405
|
// walk up the spine and index nodes until we reach the root
|
|
@@ -470,5 +470,5 @@ function filterNodes(
|
|
|
470
470
|
* Checks that an array is of the type {@link TreeIndexNodes} and has at least one element.
|
|
471
471
|
*/
|
|
472
472
|
export function hasElement<T>(array: readonly T[]): array is TreeIndexNodes<T> {
|
|
473
|
-
return array.length
|
|
473
|
+
return array.length > 0;
|
|
474
474
|
}
|
|
@@ -8,6 +8,7 @@ import type {
|
|
|
8
8
|
ChangeFamilyEditor,
|
|
9
9
|
ChangeRebaser,
|
|
10
10
|
RevisionMetadataSource,
|
|
11
|
+
RevisionReplacer,
|
|
11
12
|
RevisionTag,
|
|
12
13
|
TaggedChange,
|
|
13
14
|
} from "../core/index.js";
|
|
@@ -75,11 +76,15 @@ export function makeMitigatedRebaser<TChange>(
|
|
|
75
76
|
): TChange => {
|
|
76
77
|
return withFallback(() => unmitigatedRebaser.rebase(change, over, revisionMetadata));
|
|
77
78
|
},
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
79
|
+
getRevisions: (change: TChange): Set<RevisionTag | undefined> => {
|
|
80
|
+
try {
|
|
81
|
+
return unmitigatedRebaser.getRevisions(change);
|
|
82
|
+
} catch (error: unknown) {
|
|
83
|
+
onError(error);
|
|
84
|
+
return new Set();
|
|
85
|
+
}
|
|
86
|
+
},
|
|
87
|
+
changeRevision: (change: TChange, replacer: RevisionReplacer): TChange =>
|
|
88
|
+
withFallback(() => unmitigatedRebaser.changeRevision(change, replacer)),
|
|
84
89
|
};
|
|
85
90
|
}
|
|
@@ -144,10 +144,8 @@ export function allowsFieldSuperset(
|
|
|
144
144
|
superset: TreeFieldStoredSchema,
|
|
145
145
|
monotonicOnly: boolean = true,
|
|
146
146
|
): boolean {
|
|
147
|
-
if (!monotonicOnly) {
|
|
148
|
-
|
|
149
|
-
return true;
|
|
150
|
-
}
|
|
147
|
+
if (!monotonicOnly && isNeverField(policy, originalData, original)) {
|
|
148
|
+
return true;
|
|
151
149
|
}
|
|
152
150
|
|
|
153
151
|
if (!allowsTreeSchemaIdentifierSuperset(original.types, superset.types)) {
|
|
@@ -239,15 +237,20 @@ export function allowsMultiplicitySuperset(
|
|
|
239
237
|
}
|
|
240
238
|
|
|
241
239
|
switch (superset) {
|
|
242
|
-
case Multiplicity.Forbidden:
|
|
240
|
+
case Multiplicity.Forbidden: {
|
|
243
241
|
return false;
|
|
244
|
-
|
|
242
|
+
}
|
|
243
|
+
case Multiplicity.Optional: {
|
|
245
244
|
return original === Multiplicity.Single || original === Multiplicity.Forbidden;
|
|
246
|
-
|
|
245
|
+
}
|
|
246
|
+
case Multiplicity.Single: {
|
|
247
247
|
return false;
|
|
248
|
-
|
|
248
|
+
}
|
|
249
|
+
case Multiplicity.Sequence: {
|
|
249
250
|
return true;
|
|
250
|
-
|
|
251
|
+
}
|
|
252
|
+
default: {
|
|
251
253
|
return unreachableCase(superset);
|
|
254
|
+
}
|
|
252
255
|
}
|
|
253
256
|
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
|
+
* Licensed under the MIT License.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import type {
|
|
7
|
+
ChangeAtomId,
|
|
8
|
+
ChangesetLocalId,
|
|
9
|
+
RevisionReplacer,
|
|
10
|
+
RevisionTag,
|
|
11
|
+
} from "../../core/index.js";
|
|
12
|
+
import { brand, brandConst, newTupleBTree, type Mutable } from "../../util/index.js";
|
|
13
|
+
import {
|
|
14
|
+
getFromChangeAtomIdMap,
|
|
15
|
+
setInChangeAtomIdMap,
|
|
16
|
+
type ChangeAtomIdBTree,
|
|
17
|
+
} from "../changeAtomIdBTree.js";
|
|
18
|
+
|
|
19
|
+
export class DefaultRevisionReplacer implements RevisionReplacer {
|
|
20
|
+
/**
|
|
21
|
+
* Mapping from (obsolete revision tag, original local id) to the updated local id.
|
|
22
|
+
*/
|
|
23
|
+
private readonly updatedLocalIds: ChangeAtomIdBTree<ChangesetLocalId> = newTupleBTree();
|
|
24
|
+
/**
|
|
25
|
+
* The set of local IDs already used in the scope of the updated revision.
|
|
26
|
+
*/
|
|
27
|
+
private readonly localIds: Set<ChangesetLocalId> = new Set();
|
|
28
|
+
/**
|
|
29
|
+
* The maximum local ID seen so far in the scope of the updated revision.
|
|
30
|
+
*/
|
|
31
|
+
private maxSeen: ChangesetLocalId = brandConst(-1)();
|
|
32
|
+
|
|
33
|
+
public constructor(
|
|
34
|
+
public readonly updatedRevision: RevisionTag,
|
|
35
|
+
private readonly obsoleteRevisions: Set<RevisionTag | undefined>,
|
|
36
|
+
) {}
|
|
37
|
+
|
|
38
|
+
public isObsolete(revision: RevisionTag | undefined): boolean {
|
|
39
|
+
return this.obsoleteRevisions.has(revision);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
public getUpdatedAtomId<T extends ChangeAtomId>(id: T): T {
|
|
43
|
+
if (this.isObsolete(id.revision)) {
|
|
44
|
+
const updated: Mutable<T> = { ...id, revision: this.updatedRevision };
|
|
45
|
+
const prior: ChangesetLocalId | undefined = getFromChangeAtomIdMap(
|
|
46
|
+
this.updatedLocalIds,
|
|
47
|
+
id,
|
|
48
|
+
);
|
|
49
|
+
if (prior === undefined) {
|
|
50
|
+
let localId: ChangesetLocalId;
|
|
51
|
+
if (this.localIds.has(id.localId)) {
|
|
52
|
+
this.maxSeen = brand(this.maxSeen + 1);
|
|
53
|
+
localId = this.maxSeen;
|
|
54
|
+
} else {
|
|
55
|
+
// This change atom ID uses a local ID that has not yet been used in the scope of the updated revision.
|
|
56
|
+
// We reuse it as is to minimize the number of IDs that need to be updated.
|
|
57
|
+
localId = id.localId;
|
|
58
|
+
this.maxSeen = brand(Math.max(this.maxSeen, localId));
|
|
59
|
+
this.localIds.add(id.localId);
|
|
60
|
+
}
|
|
61
|
+
setInChangeAtomIdMap(this.updatedLocalIds, id, localId);
|
|
62
|
+
updated.localId = localId;
|
|
63
|
+
} else {
|
|
64
|
+
updated.localId = prior;
|
|
65
|
+
}
|
|
66
|
+
return updated;
|
|
67
|
+
}
|
|
68
|
+
return id;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
@@ -13,12 +13,13 @@ import type {
|
|
|
13
13
|
DeltaFieldMap,
|
|
14
14
|
EncodedRevisionTag,
|
|
15
15
|
RevisionMetadataSource,
|
|
16
|
+
RevisionReplacer,
|
|
16
17
|
RevisionTag,
|
|
17
18
|
} from "../../core/index.js";
|
|
18
19
|
import type { IdAllocator, Invariant } from "../../util/index.js";
|
|
19
20
|
|
|
20
21
|
import type { CrossFieldManager } from "./crossFieldQueries.js";
|
|
21
|
-
import type { EncodedNodeChangeset } from "./
|
|
22
|
+
import type { EncodedNodeChangeset } from "./modularChangeFormatV1.js";
|
|
22
23
|
import type { CrossFieldKeyRange, NodeId } from "./modularChangeTypes.js";
|
|
23
24
|
|
|
24
25
|
export type NestedChangesIndices = [
|
|
@@ -164,11 +165,7 @@ export interface FieldChangeRebaser<TChangeset> {
|
|
|
164
165
|
*/
|
|
165
166
|
prune(change: TChangeset, pruneChild: NodeChangePruner): TChangeset;
|
|
166
167
|
|
|
167
|
-
replaceRevisions(
|
|
168
|
-
change: TChangeset,
|
|
169
|
-
oldRevisions: Set<RevisionTag | undefined>,
|
|
170
|
-
newRevisions: RevisionTag | undefined,
|
|
171
|
-
): TChangeset;
|
|
168
|
+
replaceRevisions(change: TChangeset, replacer: RevisionReplacer): TChangeset;
|
|
172
169
|
|
|
173
170
|
/**
|
|
174
171
|
* Returns a copy of the given changeset with the same declarations (e.g., new cells) but no actual changes.
|
|
@@ -11,8 +11,7 @@ import {
|
|
|
11
11
|
type DeltaMark,
|
|
12
12
|
type FieldKindIdentifier,
|
|
13
13
|
Multiplicity,
|
|
14
|
-
type
|
|
15
|
-
replaceAtomRevisions,
|
|
14
|
+
type RevisionReplacer,
|
|
16
15
|
} from "../../core/index.js";
|
|
17
16
|
|
|
18
17
|
import type {
|
|
@@ -46,7 +45,7 @@ export const genericChangeHandler: FieldChangeHandler<GenericChangeset> = {
|
|
|
46
45
|
codecsFactory: makeGenericChangeCodec,
|
|
47
46
|
editor: {
|
|
48
47
|
buildChildChanges(changes: Iterable<[number, NodeId]>): GenericChangeset {
|
|
49
|
-
return newGenericChangeset(
|
|
48
|
+
return newGenericChangeset([...changes]);
|
|
50
49
|
},
|
|
51
50
|
},
|
|
52
51
|
intoDelta: (change: GenericChangeset, deltaFromChild: ToDelta): FieldChangeDelta => {
|
|
@@ -78,7 +77,7 @@ function compose(
|
|
|
78
77
|
const composed = change1.clone();
|
|
79
78
|
for (const [index, id2] of change2.entries()) {
|
|
80
79
|
const id1 = composed.get(index);
|
|
81
|
-
const idComposed = id1
|
|
80
|
+
const idComposed = id1 === undefined ? id2 : composeChildren(id1, id2);
|
|
82
81
|
composed.set(index, idComposed);
|
|
83
82
|
}
|
|
84
83
|
|
|
@@ -157,10 +156,9 @@ function pruneGenericChange(
|
|
|
157
156
|
|
|
158
157
|
function replaceRevisions(
|
|
159
158
|
changeset: GenericChangeset,
|
|
160
|
-
|
|
161
|
-
newRevision: RevisionTag | undefined,
|
|
159
|
+
replacer: RevisionReplacer,
|
|
162
160
|
): GenericChangeset {
|
|
163
|
-
return changeset.mapValues((node) =>
|
|
161
|
+
return changeset.mapValues((node) => replacer.getUpdatedAtomId(node));
|
|
164
162
|
}
|
|
165
163
|
|
|
166
164
|
/**
|
|
@@ -8,7 +8,7 @@ import { type ICodecFamily, type IJsonCodec, makeCodecFamily } from "../../codec
|
|
|
8
8
|
import type { FieldChangeEncodingContext } from "./fieldChangeHandler.js";
|
|
9
9
|
import { EncodedGenericChangeset } from "./genericFieldKindFormat.js";
|
|
10
10
|
import { newGenericChangeset, type GenericChangeset } from "./genericFieldKindTypes.js";
|
|
11
|
-
import { EncodedNodeChangeset } from "./
|
|
11
|
+
import { EncodedNodeChangeset } from "./modularChangeFormatV1.js";
|
|
12
12
|
|
|
13
13
|
export function makeGenericChangeCodec(): ICodecFamily<
|
|
14
14
|
GenericChangeset,
|