@fluidframework/tree 2.91.0 → 2.92.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/CHANGELOG.md +118 -0
- package/api-report/tree.alpha.api.md +60 -22
- package/dist/api.d.ts +6 -1
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js.map +1 -1
- package/dist/codec/codec.d.ts +28 -2
- package/dist/codec/codec.d.ts.map +1 -1
- package/dist/codec/codec.js +1 -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 -4
- package/dist/codec/index.js.map +1 -1
- package/dist/codec/versioned/codec.d.ts +18 -36
- package/dist/codec/versioned/codec.d.ts.map +1 -1
- package/dist/codec/versioned/codec.js +46 -59
- 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 -4
- package/dist/codec/versioned/index.js.map +1 -1
- package/dist/core/forest/forest.d.ts +5 -2
- package/dist/core/forest/forest.d.ts.map +1 -1
- package/dist/core/forest/forest.js.map +1 -1
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +6 -2
- package/dist/core/index.js.map +1 -1
- package/dist/core/rebase/changeRebaser.d.ts +8 -1
- package/dist/core/rebase/changeRebaser.d.ts.map +1 -1
- package/dist/core/rebase/changeRebaser.js.map +1 -1
- package/dist/core/rebase/revisionTagCodec.d.ts +4 -3
- package/dist/core/rebase/revisionTagCodec.d.ts.map +1 -1
- package/dist/core/rebase/revisionTagCodec.js +2 -0
- package/dist/core/rebase/revisionTagCodec.js.map +1 -1
- package/dist/core/rebase/utils.d.ts +2 -2
- package/dist/core/rebase/utils.d.ts.map +1 -1
- package/dist/core/rebase/utils.js +4 -4
- package/dist/core/rebase/utils.js.map +1 -1
- package/dist/core/schema-stored/formatV2.d.ts +1 -1
- package/dist/core/schema-stored/formatV2.js +1 -1
- package/dist/core/schema-stored/formatV2.js.map +1 -1
- package/dist/core/tree/anchorSet.d.ts +8 -0
- package/dist/core/tree/anchorSet.d.ts.map +1 -1
- package/dist/core/tree/anchorSet.js +42 -7
- package/dist/core/tree/anchorSet.js.map +1 -1
- package/dist/core/tree/cursor.d.ts +25 -1
- package/dist/core/tree/cursor.d.ts.map +1 -1
- package/dist/core/tree/cursor.js +45 -1
- package/dist/core/tree/cursor.js.map +1 -1
- package/dist/core/tree/deltaUtil.d.ts +13 -1
- package/dist/core/tree/deltaUtil.d.ts.map +1 -1
- package/dist/core/tree/deltaUtil.js +34 -1
- package/dist/core/tree/deltaUtil.js.map +1 -1
- package/dist/core/tree/detachedFieldIndexCodecs.d.ts +5 -5
- package/dist/core/tree/detachedFieldIndexCodecs.d.ts.map +1 -1
- package/dist/core/tree/detachedFieldIndexCodecs.js.map +1 -1
- package/dist/core/tree/index.d.ts +2 -2
- package/dist/core/tree/index.d.ts.map +1 -1
- package/dist/core/tree/index.js +6 -2
- package/dist/core/tree/index.js.map +1 -1
- package/dist/core/tree/visitDelta.d.ts +11 -0
- package/dist/core/tree/visitDelta.d.ts.map +1 -1
- package/dist/core/tree/visitDelta.js +1 -1
- package/dist/core/tree/visitDelta.js.map +1 -1
- package/dist/core/tree/visitorUtils.d.ts.map +1 -1
- package/dist/core/tree/visitorUtils.js +5 -0
- package/dist/core/tree/visitorUtils.js.map +1 -1
- package/dist/entrypoints/alpha.d.ts +1 -1
- package/dist/entrypoints/alpha.d.ts.map +1 -1
- package/dist/entrypoints/alpha.js +2 -3
- package/dist/entrypoints/alpha.js.map +1 -1
- package/dist/entrypoints/beta.js +1 -1
- package/dist/entrypoints/beta.js.map +1 -1
- package/dist/entrypoints/legacy.d.ts +1 -1
- package/dist/entrypoints/legacy.d.ts.map +1 -1
- package/dist/entrypoints/legacy.js +1 -1
- package/dist/entrypoints/legacy.js.map +1 -1
- package/dist/entrypoints/public.js +1 -1
- package/dist/entrypoints/public.js.map +1 -1
- package/dist/feature-libraries/changeAtomIdCodec.d.ts +4 -3
- package/dist/feature-libraries/changeAtomIdCodec.d.ts.map +1 -1
- package/dist/feature-libraries/changeAtomIdCodec.js +2 -0
- package/dist/feature-libraries/changeAtomIdCodec.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/chunkedForest.d.ts +2 -1
- package/dist/feature-libraries/chunked-forest/chunkedForest.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/chunkedForest.js +2 -2
- package/dist/feature-libraries/chunked-forest/chunkedForest.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts +4 -4
- package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.js +6 -6
- package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.d.ts +1 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.d.ts +1 -2
- package/dist/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/codecs.d.ts +4 -4
- package/dist/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/codecs.js +6 -6
- package/dist/feature-libraries/chunked-forest/codec/codecs.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/compressedEncode.d.ts +12 -12
- package/dist/feature-libraries/chunked-forest/codec/compressedEncode.d.ts.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/{formatGeneric.d.ts → format/formatGeneric.d.ts} +1 -1
- package/dist/feature-libraries/chunked-forest/codec/format/formatGeneric.d.ts.map +1 -0
- package/dist/feature-libraries/chunked-forest/codec/format/formatGeneric.js.map +1 -0
- package/dist/feature-libraries/chunked-forest/codec/format/formatV1.d.ts +187 -0
- package/dist/feature-libraries/chunked-forest/codec/format/formatV1.d.ts.map +1 -0
- package/dist/feature-libraries/chunked-forest/codec/format/formatV1.js +115 -0
- package/dist/feature-libraries/chunked-forest/codec/format/formatV1.js.map +1 -0
- package/dist/feature-libraries/chunked-forest/codec/format/formatV2.d.ts +33 -0
- package/dist/feature-libraries/chunked-forest/codec/format/formatV2.d.ts.map +1 -0
- package/dist/feature-libraries/chunked-forest/codec/format/formatV2.js +16 -0
- package/dist/feature-libraries/chunked-forest/codec/format/formatV2.js.map +1 -0
- package/dist/feature-libraries/chunked-forest/codec/format/index.d.ts +10 -0
- package/dist/feature-libraries/chunked-forest/codec/format/index.d.ts.map +1 -0
- package/dist/feature-libraries/chunked-forest/codec/format/index.js +18 -0
- package/dist/feature-libraries/chunked-forest/codec/format/index.js.map +1 -0
- package/dist/feature-libraries/chunked-forest/codec/format/versions.d.ts +93 -0
- package/dist/feature-libraries/chunked-forest/codec/format/versions.d.ts.map +1 -0
- package/dist/feature-libraries/chunked-forest/codec/format/versions.js +29 -0
- package/dist/feature-libraries/chunked-forest/codec/format/versions.js.map +1 -0
- package/dist/feature-libraries/chunked-forest/codec/index.d.ts +2 -2
- package/dist/feature-libraries/chunked-forest/codec/index.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/index.js +2 -2
- package/dist/feature-libraries/chunked-forest/codec/index.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/nodeEncoder.d.ts +7 -7
- package/dist/feature-libraries/chunked-forest/codec/nodeEncoder.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/nodeEncoder.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncode.d.ts +1 -1
- package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncode.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncode.js +6 -4
- package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncode.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/uncompressedEncode.d.ts +1 -1
- package/dist/feature-libraries/chunked-forest/codec/uncompressedEncode.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/uncompressedEncode.js +3 -3
- package/dist/feature-libraries/chunked-forest/codec/uncompressedEncode.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/index.d.ts +1 -1
- package/dist/feature-libraries/chunked-forest/index.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/index.js.map +1 -1
- package/dist/feature-libraries/cursorComparator.d.ts +23 -0
- package/dist/feature-libraries/cursorComparator.d.ts.map +1 -0
- package/dist/feature-libraries/cursorComparator.js +65 -0
- package/dist/feature-libraries/cursorComparator.js.map +1 -0
- package/dist/feature-libraries/forest-summary/codec.d.ts +1 -1
- package/dist/feature-libraries/forest-summary/incrementalSummaryBuilder.d.ts +3 -3
- package/dist/feature-libraries/forest-summary/incrementalSummaryBuilder.d.ts.map +1 -1
- package/dist/feature-libraries/forest-summary/incrementalSummaryBuilder.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 +5 -5
- package/dist/feature-libraries/index.js.map +1 -1
- package/dist/feature-libraries/indexing/anchorTreeIndex.d.ts +2 -0
- package/dist/feature-libraries/indexing/anchorTreeIndex.d.ts.map +1 -1
- package/dist/feature-libraries/indexing/anchorTreeIndex.js +12 -7
- 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 +2 -2
- package/dist/feature-libraries/mitigatedChangeFamily.js.map +1 -1
- 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 +0 -1
- package/dist/feature-libraries/modular-schema/genericFieldKind.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeCodecV1.d.ts +10 -10
- package/dist/feature-libraries/modular-schema/modularChangeCodecV1.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeCodecV1.js +2 -4
- package/dist/feature-libraries/modular-schema/modularChangeCodecV1.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeCodecV2.d.ts +3 -3
- package/dist/feature-libraries/modular-schema/modularChangeCodecV2.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeCodecV2.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeCodecs.d.ts +3 -3
- package/dist/feature-libraries/modular-schema/modularChangeCodecs.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFamily.js +4 -3
- package/dist/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
- package/dist/feature-libraries/object-forest/objectForest.d.ts +1 -1
- package/dist/feature-libraries/object-forest/objectForest.d.ts.map +1 -1
- package/dist/feature-libraries/object-forest/objectForest.js +2 -2
- package/dist/feature-libraries/object-forest/objectForest.js.map +1 -1
- package/dist/feature-libraries/optional-field/optionalFieldCodecV2.d.ts +4 -4
- package/dist/feature-libraries/optional-field/optionalFieldCodecV2.d.ts.map +1 -1
- package/dist/feature-libraries/optional-field/optionalFieldCodecV2.js.map +1 -1
- package/dist/feature-libraries/optional-field/optionalFieldCodecs.d.ts +3 -3
- package/dist/feature-libraries/optional-field/optionalFieldCodecs.d.ts.map +1 -1
- package/dist/feature-libraries/optional-field/optionalFieldCodecs.js.map +1 -1
- package/dist/feature-libraries/schema-edits/index.d.ts +1 -1
- package/dist/feature-libraries/schema-edits/index.d.ts.map +1 -1
- package/dist/feature-libraries/schema-edits/index.js +2 -3
- package/dist/feature-libraries/schema-edits/index.js.map +1 -1
- package/dist/feature-libraries/schema-edits/schemaChangeCodecs.d.ts +6 -15
- package/dist/feature-libraries/schema-edits/schemaChangeCodecs.d.ts.map +1 -1
- package/dist/feature-libraries/schema-edits/schemaChangeCodecs.js +8 -54
- package/dist/feature-libraries/schema-edits/schemaChangeCodecs.js.map +1 -1
- package/dist/feature-libraries/schema-index/codec.d.ts +3 -16
- package/dist/feature-libraries/schema-index/codec.d.ts.map +1 -1
- package/dist/feature-libraries/schema-index/codec.js +1 -21
- package/dist/feature-libraries/schema-index/codec.js.map +1 -1
- package/dist/feature-libraries/schema-index/formatV2.d.ts +1 -1
- package/dist/feature-libraries/schema-index/formatV2.js +1 -1
- package/dist/feature-libraries/schema-index/formatV2.js.map +1 -1
- package/dist/feature-libraries/schema-index/index.d.ts +1 -1
- package/dist/feature-libraries/schema-index/index.d.ts.map +1 -1
- package/dist/feature-libraries/schema-index/index.js +1 -2
- package/dist/feature-libraries/schema-index/index.js.map +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldCodecV2.d.ts +4 -4
- package/dist/feature-libraries/sequence-field/sequenceFieldCodecV2.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldCodecV2.js.map +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldCodecV3.d.ts +3 -3
- package/dist/feature-libraries/sequence-field/sequenceFieldCodecV3.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldCodecV3.js.map +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldCodecs.d.ts +3 -3
- package/dist/feature-libraries/sequence-field/sequenceFieldCodecs.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldCodecs.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -3
- 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/independentView.d.ts +1 -1
- package/dist/shared-tree/independentView.d.ts.map +1 -1
- package/dist/shared-tree/independentView.js +14 -21
- package/dist/shared-tree/independentView.js.map +1 -1
- package/dist/shared-tree/index.d.ts +2 -2
- package/dist/shared-tree/index.d.ts.map +1 -1
- package/dist/shared-tree/index.js +1 -2
- package/dist/shared-tree/index.js.map +1 -1
- package/dist/shared-tree/schematizingTreeView.d.ts +2 -36
- package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/dist/shared-tree/schematizingTreeView.js +15 -117
- package/dist/shared-tree/schematizingTreeView.js.map +1 -1
- package/dist/shared-tree/sharedTree.d.ts +3 -22
- package/dist/shared-tree/sharedTree.d.ts.map +1 -1
- package/dist/shared-tree/sharedTree.js +10 -27
- package/dist/shared-tree/sharedTree.js.map +1 -1
- package/dist/shared-tree/sharedTreeChangeCodecs.d.ts +3 -2
- package/dist/shared-tree/sharedTreeChangeCodecs.d.ts.map +1 -1
- package/dist/shared-tree/sharedTreeChangeCodecs.js +23 -16
- 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 +1 -1
- package/dist/shared-tree/sharedTreeChangeEnricher.js.map +1 -1
- package/dist/shared-tree/sharedTreeChangeFamily.d.ts +1 -1
- package/dist/shared-tree/sharedTreeChangeFamily.d.ts.map +1 -1
- package/dist/shared-tree/sharedTreeChangeFamily.js +2 -2
- package/dist/shared-tree/sharedTreeChangeFamily.js.map +1 -1
- package/dist/shared-tree/sharedTreeChangeFormat.d.ts +8 -7
- package/dist/shared-tree/sharedTreeChangeFormat.d.ts.map +1 -1
- package/dist/shared-tree/sharedTreeChangeFormat.js +13 -5
- package/dist/shared-tree/sharedTreeChangeFormat.js.map +1 -1
- package/dist/shared-tree/tree.d.ts.map +1 -1
- package/dist/shared-tree/tree.js +2 -1
- package/dist/shared-tree/tree.js.map +1 -1
- package/dist/shared-tree/treeAlpha.d.ts +13 -1
- package/dist/shared-tree/treeAlpha.d.ts.map +1 -1
- package/dist/shared-tree/treeAlpha.js +3 -0
- package/dist/shared-tree/treeAlpha.js.map +1 -1
- package/dist/shared-tree/treeCheckout.d.ts +34 -69
- package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
- package/dist/shared-tree/treeCheckout.js +885 -678
- package/dist/shared-tree/treeCheckout.js.map +1 -1
- package/dist/shared-tree/unhydratedTreeContext.js +3 -3
- package/dist/shared-tree/unhydratedTreeContext.js.map +1 -1
- package/dist/shared-tree-core/editManagerCodecs.d.ts +23 -12
- package/dist/shared-tree-core/editManagerCodecs.d.ts.map +1 -1
- package/dist/shared-tree-core/editManagerCodecs.js +40 -67
- package/dist/shared-tree-core/editManagerCodecs.js.map +1 -1
- package/dist/shared-tree-core/editManagerCodecsCommons.d.ts.map +1 -1
- package/dist/shared-tree-core/editManagerCodecsCommons.js +0 -1
- package/dist/shared-tree-core/editManagerCodecsCommons.js.map +1 -1
- package/dist/shared-tree-core/editManagerCodecsV1toV4.d.ts +10 -2
- package/dist/shared-tree-core/editManagerCodecsV1toV4.d.ts.map +1 -1
- package/dist/shared-tree-core/editManagerCodecsV1toV4.js +18 -13
- package/dist/shared-tree-core/editManagerCodecsV1toV4.js.map +1 -1
- package/dist/shared-tree-core/editManagerCodecsVSharedBranches.d.ts +2 -2
- package/dist/shared-tree-core/editManagerCodecsVSharedBranches.d.ts.map +1 -1
- package/dist/shared-tree-core/editManagerCodecsVSharedBranches.js +6 -9
- package/dist/shared-tree-core/editManagerCodecsVSharedBranches.js.map +1 -1
- package/dist/shared-tree-core/index.d.ts +3 -3
- package/dist/shared-tree-core/index.d.ts.map +1 -1
- package/dist/shared-tree-core/index.js +5 -8
- package/dist/shared-tree-core/index.js.map +1 -1
- package/dist/shared-tree-core/messageCodecV1ToV4.d.ts +2 -3
- package/dist/shared-tree-core/messageCodecV1ToV4.d.ts.map +1 -1
- package/dist/shared-tree-core/messageCodecV1ToV4.js +8 -8
- package/dist/shared-tree-core/messageCodecV1ToV4.js.map +1 -1
- package/dist/shared-tree-core/messageCodecVSharedBranches.d.ts +2 -3
- package/dist/shared-tree-core/messageCodecVSharedBranches.d.ts.map +1 -1
- package/dist/shared-tree-core/messageCodecVSharedBranches.js +5 -4
- package/dist/shared-tree-core/messageCodecVSharedBranches.js.map +1 -1
- package/dist/shared-tree-core/messageCodecs.d.ts +15 -14
- package/dist/shared-tree-core/messageCodecs.d.ts.map +1 -1
- package/dist/shared-tree-core/messageCodecs.js +38 -74
- package/dist/shared-tree-core/messageCodecs.js.map +1 -1
- package/dist/shared-tree-core/messageFormat.d.ts +0 -1
- package/dist/shared-tree-core/messageFormat.d.ts.map +1 -1
- package/dist/shared-tree-core/messageFormat.js +1 -2
- package/dist/shared-tree-core/messageFormat.js.map +1 -1
- package/dist/shared-tree-core/sharedTreeCore.d.ts +1 -3
- package/dist/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
- package/dist/shared-tree-core/sharedTreeCore.js +12 -2
- package/dist/shared-tree-core/sharedTreeCore.js.map +1 -1
- package/dist/sharedTreeAttributes.d.ts.map +1 -1
- package/dist/sharedTreeAttributes.js +3 -0
- package/dist/sharedTreeAttributes.js.map +1 -1
- package/dist/simple-tree/api/index.d.ts +1 -0
- 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.map +1 -1
- package/dist/simple-tree/api/schemaFactoryAlpha.d.ts +2 -2
- package/dist/simple-tree/api/schemaFactoryAlpha.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaFactoryAlpha.js.map +1 -1
- package/dist/simple-tree/api/storedSchema.d.ts.map +1 -1
- package/dist/simple-tree/api/storedSchema.js +6 -6
- package/dist/simple-tree/api/storedSchema.js.map +1 -1
- package/dist/simple-tree/api/tree.d.ts +7 -19
- package/dist/simple-tree/api/tree.d.ts.map +1 -1
- package/dist/simple-tree/api/tree.js.map +1 -1
- package/dist/simple-tree/api/treeAlpha.d.ts +69 -0
- package/dist/simple-tree/api/treeAlpha.d.ts.map +1 -0
- package/dist/simple-tree/api/treeAlpha.js +7 -0
- package/dist/simple-tree/api/treeAlpha.js.map +1 -0
- package/dist/simple-tree/api/treeBeta.d.ts +1 -1
- package/dist/simple-tree/api/treeBeta.js.map +1 -1
- package/dist/simple-tree/api/treeChangeEvents.d.ts +3 -0
- package/dist/simple-tree/api/treeChangeEvents.d.ts.map +1 -1
- package/dist/simple-tree/api/treeChangeEvents.js.map +1 -1
- package/dist/simple-tree/api/treeNodeApi.d.ts +49 -0
- package/dist/simple-tree/api/treeNodeApi.d.ts.map +1 -1
- package/dist/simple-tree/api/treeNodeApi.js +41 -2
- package/dist/simple-tree/api/treeNodeApi.js.map +1 -1
- package/dist/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
- package/dist/simple-tree/core/treeNodeKernel.js +45 -8
- 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 +5 -1
- package/dist/simple-tree/core/unhydratedFlexTree.js.map +1 -1
- package/dist/simple-tree/index.d.ts +2 -2
- package/dist/simple-tree/index.d.ts.map +1 -1
- package/dist/simple-tree/index.js.map +1 -1
- package/dist/simple-tree/node-kinds/array/arrayNode.d.ts +16 -0
- package/dist/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/array/arrayNode.js +23 -0
- package/dist/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
- package/dist/simple-tree/node-kinds/array/arrayNodeTypes.d.ts +10 -1
- package/dist/simple-tree/node-kinds/array/arrayNodeTypes.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/array/arrayNodeTypes.js.map +1 -1
- package/dist/simple-tree/node-kinds/array/index.d.ts +2 -2
- package/dist/simple-tree/node-kinds/array/index.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/array/index.js.map +1 -1
- package/dist/simple-tree/node-kinds/index.d.ts +1 -1
- package/dist/simple-tree/node-kinds/index.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/index.js.map +1 -1
- package/dist/text/textDomainFormatted.d.ts +319 -9
- package/dist/text/textDomainFormatted.d.ts.map +1 -1
- package/dist/text/textDomainFormatted.js +100 -25
- package/dist/text/textDomainFormatted.js.map +1 -1
- package/dist/treeFactory.d.ts.map +1 -1
- package/dist/treeFactory.js +5 -2
- package/dist/treeFactory.js.map +1 -1
- package/dist/util/referenceCounting.d.ts.map +1 -1
- package/dist/util/referenceCounting.js +0 -1
- package/dist/util/referenceCounting.js.map +1 -1
- package/legacy.d.ts +2 -3
- package/lib/api.d.ts +6 -1
- package/lib/api.d.ts.map +1 -1
- package/lib/api.js.map +1 -1
- package/lib/codec/codec.d.ts +28 -2
- package/lib/codec/codec.d.ts.map +1 -1
- package/lib/codec/codec.js +1 -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 +18 -36
- package/lib/codec/versioned/codec.d.ts.map +1 -1
- package/lib/codec/versioned/codec.js +45 -56
- 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/forest/forest.d.ts +5 -2
- package/lib/core/forest/forest.d.ts.map +1 -1
- package/lib/core/forest/forest.js.map +1 -1
- package/lib/core/index.d.ts +1 -1
- package/lib/core/index.d.ts.map +1 -1
- package/lib/core/index.js +1 -1
- package/lib/core/index.js.map +1 -1
- package/lib/core/rebase/changeRebaser.d.ts +8 -1
- package/lib/core/rebase/changeRebaser.d.ts.map +1 -1
- package/lib/core/rebase/changeRebaser.js.map +1 -1
- package/lib/core/rebase/revisionTagCodec.d.ts +4 -3
- package/lib/core/rebase/revisionTagCodec.d.ts.map +1 -1
- package/lib/core/rebase/revisionTagCodec.js +2 -0
- package/lib/core/rebase/revisionTagCodec.js.map +1 -1
- package/lib/core/rebase/utils.d.ts +2 -2
- package/lib/core/rebase/utils.d.ts.map +1 -1
- package/lib/core/rebase/utils.js +4 -4
- package/lib/core/rebase/utils.js.map +1 -1
- package/lib/core/schema-stored/formatV2.d.ts +1 -1
- package/lib/core/schema-stored/formatV2.js +1 -1
- package/lib/core/schema-stored/formatV2.js.map +1 -1
- package/lib/core/tree/anchorSet.d.ts +8 -0
- package/lib/core/tree/anchorSet.d.ts.map +1 -1
- package/lib/core/tree/anchorSet.js +42 -7
- package/lib/core/tree/anchorSet.js.map +1 -1
- package/lib/core/tree/cursor.d.ts +25 -1
- package/lib/core/tree/cursor.d.ts.map +1 -1
- package/lib/core/tree/cursor.js +43 -0
- package/lib/core/tree/cursor.js.map +1 -1
- package/lib/core/tree/deltaUtil.d.ts +13 -1
- package/lib/core/tree/deltaUtil.d.ts.map +1 -1
- package/lib/core/tree/deltaUtil.js +31 -0
- package/lib/core/tree/deltaUtil.js.map +1 -1
- package/lib/core/tree/detachedFieldIndexCodecs.d.ts +5 -5
- package/lib/core/tree/detachedFieldIndexCodecs.d.ts.map +1 -1
- package/lib/core/tree/detachedFieldIndexCodecs.js.map +1 -1
- package/lib/core/tree/index.d.ts +2 -2
- package/lib/core/tree/index.d.ts.map +1 -1
- package/lib/core/tree/index.js +2 -2
- package/lib/core/tree/index.js.map +1 -1
- package/lib/core/tree/visitDelta.d.ts +11 -0
- package/lib/core/tree/visitDelta.d.ts.map +1 -1
- package/lib/core/tree/visitDelta.js +1 -1
- package/lib/core/tree/visitDelta.js.map +1 -1
- package/lib/core/tree/visitorUtils.d.ts.map +1 -1
- package/lib/core/tree/visitorUtils.js +5 -0
- package/lib/core/tree/visitorUtils.js.map +1 -1
- package/lib/entrypoints/alpha.d.ts +1 -1
- package/lib/entrypoints/alpha.d.ts.map +1 -1
- package/lib/entrypoints/alpha.js +2 -2
- package/lib/entrypoints/alpha.js.map +1 -1
- package/lib/entrypoints/beta.js +1 -1
- package/lib/entrypoints/beta.js.map +1 -1
- package/lib/entrypoints/legacy.d.ts +1 -1
- package/lib/entrypoints/legacy.d.ts.map +1 -1
- package/lib/entrypoints/legacy.js +1 -1
- package/lib/entrypoints/legacy.js.map +1 -1
- package/lib/entrypoints/public.js +1 -1
- package/lib/entrypoints/public.js.map +1 -1
- package/lib/feature-libraries/changeAtomIdCodec.d.ts +4 -3
- package/lib/feature-libraries/changeAtomIdCodec.d.ts.map +1 -1
- package/lib/feature-libraries/changeAtomIdCodec.js +2 -0
- package/lib/feature-libraries/changeAtomIdCodec.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/chunkedForest.d.ts +2 -1
- package/lib/feature-libraries/chunked-forest/chunkedForest.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/chunkedForest.js +2 -2
- package/lib/feature-libraries/chunked-forest/chunkedForest.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts +4 -4
- package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.js +4 -4
- package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.d.ts +1 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.d.ts +1 -2
- package/lib/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/codecs.d.ts +4 -4
- package/lib/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/codecs.js +1 -1
- package/lib/feature-libraries/chunked-forest/codec/codecs.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/compressedEncode.d.ts +12 -12
- package/lib/feature-libraries/chunked-forest/codec/compressedEncode.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js +1 -1
- package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/{formatGeneric.d.ts → format/formatGeneric.d.ts} +1 -1
- package/lib/feature-libraries/chunked-forest/codec/format/formatGeneric.d.ts.map +1 -0
- package/lib/feature-libraries/chunked-forest/codec/format/formatGeneric.js.map +1 -0
- package/lib/feature-libraries/chunked-forest/codec/format/formatV1.d.ts +187 -0
- package/lib/feature-libraries/chunked-forest/codec/format/formatV1.d.ts.map +1 -0
- package/lib/feature-libraries/chunked-forest/codec/format/formatV1.js +112 -0
- package/lib/feature-libraries/chunked-forest/codec/format/formatV1.js.map +1 -0
- package/lib/feature-libraries/chunked-forest/codec/format/formatV2.d.ts +33 -0
- package/lib/feature-libraries/chunked-forest/codec/format/formatV2.d.ts.map +1 -0
- package/lib/feature-libraries/chunked-forest/codec/format/formatV2.js +13 -0
- package/lib/feature-libraries/chunked-forest/codec/format/formatV2.js.map +1 -0
- package/lib/feature-libraries/chunked-forest/codec/format/index.d.ts +10 -0
- package/lib/feature-libraries/chunked-forest/codec/format/index.d.ts.map +1 -0
- package/lib/feature-libraries/chunked-forest/codec/format/index.js +8 -0
- package/lib/feature-libraries/chunked-forest/codec/format/index.js.map +1 -0
- package/lib/feature-libraries/chunked-forest/codec/format/versions.d.ts +93 -0
- package/lib/feature-libraries/chunked-forest/codec/format/versions.d.ts.map +1 -0
- package/lib/feature-libraries/chunked-forest/codec/format/versions.js +26 -0
- package/lib/feature-libraries/chunked-forest/codec/format/versions.js.map +1 -0
- package/lib/feature-libraries/chunked-forest/codec/index.d.ts +2 -2
- package/lib/feature-libraries/chunked-forest/codec/index.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/index.js +1 -1
- package/lib/feature-libraries/chunked-forest/codec/index.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/nodeEncoder.d.ts +7 -7
- package/lib/feature-libraries/chunked-forest/codec/nodeEncoder.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/nodeEncoder.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncode.d.ts +1 -1
- package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncode.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncode.js +4 -2
- package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncode.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/uncompressedEncode.d.ts +1 -1
- package/lib/feature-libraries/chunked-forest/codec/uncompressedEncode.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/uncompressedEncode.js +1 -1
- package/lib/feature-libraries/chunked-forest/codec/uncompressedEncode.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/index.d.ts +1 -1
- package/lib/feature-libraries/chunked-forest/index.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/index.js.map +1 -1
- package/lib/feature-libraries/cursorComparator.d.ts +23 -0
- package/lib/feature-libraries/cursorComparator.d.ts.map +1 -0
- package/lib/feature-libraries/cursorComparator.js +61 -0
- package/lib/feature-libraries/cursorComparator.js.map +1 -0
- package/lib/feature-libraries/forest-summary/codec.d.ts +1 -1
- package/lib/feature-libraries/forest-summary/incrementalSummaryBuilder.d.ts +3 -3
- package/lib/feature-libraries/forest-summary/incrementalSummaryBuilder.d.ts.map +1 -1
- package/lib/feature-libraries/forest-summary/incrementalSummaryBuilder.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.d.ts +2 -0
- package/lib/feature-libraries/indexing/anchorTreeIndex.d.ts.map +1 -1
- package/lib/feature-libraries/indexing/anchorTreeIndex.js +12 -7
- 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 +2 -2
- package/lib/feature-libraries/mitigatedChangeFamily.js.map +1 -1
- 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 +0 -1
- package/lib/feature-libraries/modular-schema/genericFieldKind.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeCodecV1.d.ts +10 -10
- package/lib/feature-libraries/modular-schema/modularChangeCodecV1.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeCodecV1.js +2 -4
- package/lib/feature-libraries/modular-schema/modularChangeCodecV1.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeCodecV2.d.ts +3 -3
- package/lib/feature-libraries/modular-schema/modularChangeCodecV2.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeCodecV2.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeCodecs.d.ts +3 -3
- package/lib/feature-libraries/modular-schema/modularChangeCodecs.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFamily.js +4 -3
- package/lib/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
- package/lib/feature-libraries/object-forest/objectForest.d.ts +1 -1
- package/lib/feature-libraries/object-forest/objectForest.d.ts.map +1 -1
- package/lib/feature-libraries/object-forest/objectForest.js +2 -2
- package/lib/feature-libraries/object-forest/objectForest.js.map +1 -1
- package/lib/feature-libraries/optional-field/optionalFieldCodecV2.d.ts +4 -4
- package/lib/feature-libraries/optional-field/optionalFieldCodecV2.d.ts.map +1 -1
- package/lib/feature-libraries/optional-field/optionalFieldCodecV2.js +1 -1
- package/lib/feature-libraries/optional-field/optionalFieldCodecV2.js.map +1 -1
- package/lib/feature-libraries/optional-field/optionalFieldCodecs.d.ts +3 -3
- package/lib/feature-libraries/optional-field/optionalFieldCodecs.d.ts.map +1 -1
- package/lib/feature-libraries/optional-field/optionalFieldCodecs.js.map +1 -1
- package/lib/feature-libraries/schema-edits/index.d.ts +1 -1
- package/lib/feature-libraries/schema-edits/index.d.ts.map +1 -1
- package/lib/feature-libraries/schema-edits/index.js +1 -1
- package/lib/feature-libraries/schema-edits/index.js.map +1 -1
- package/lib/feature-libraries/schema-edits/schemaChangeCodecs.d.ts +6 -15
- package/lib/feature-libraries/schema-edits/schemaChangeCodecs.d.ts.map +1 -1
- package/lib/feature-libraries/schema-edits/schemaChangeCodecs.js +6 -50
- package/lib/feature-libraries/schema-edits/schemaChangeCodecs.js.map +1 -1
- package/lib/feature-libraries/schema-index/codec.d.ts +3 -16
- package/lib/feature-libraries/schema-index/codec.d.ts.map +1 -1
- package/lib/feature-libraries/schema-index/codec.js +0 -19
- package/lib/feature-libraries/schema-index/codec.js.map +1 -1
- package/lib/feature-libraries/schema-index/formatV2.d.ts +1 -1
- package/lib/feature-libraries/schema-index/formatV2.js +1 -1
- package/lib/feature-libraries/schema-index/formatV2.js.map +1 -1
- package/lib/feature-libraries/schema-index/index.d.ts +1 -1
- package/lib/feature-libraries/schema-index/index.d.ts.map +1 -1
- package/lib/feature-libraries/schema-index/index.js +1 -1
- package/lib/feature-libraries/schema-index/index.js.map +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldCodecV2.d.ts +4 -4
- package/lib/feature-libraries/sequence-field/sequenceFieldCodecV2.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldCodecV2.js.map +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldCodecV3.d.ts +3 -3
- package/lib/feature-libraries/sequence-field/sequenceFieldCodecV3.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldCodecV3.js +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldCodecV3.js.map +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldCodecs.d.ts +3 -3
- package/lib/feature-libraries/sequence-field/sequenceFieldCodecs.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldCodecs.js.map +1 -1
- package/lib/index.d.ts +2 -2
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +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/independentView.d.ts +1 -1
- package/lib/shared-tree/independentView.d.ts.map +1 -1
- package/lib/shared-tree/independentView.js +4 -11
- package/lib/shared-tree/independentView.js.map +1 -1
- package/lib/shared-tree/index.d.ts +2 -2
- package/lib/shared-tree/index.d.ts.map +1 -1
- package/lib/shared-tree/index.js +1 -1
- package/lib/shared-tree/index.js.map +1 -1
- package/lib/shared-tree/schematizingTreeView.d.ts +2 -36
- package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/lib/shared-tree/schematizingTreeView.js +17 -116
- package/lib/shared-tree/schematizingTreeView.js.map +1 -1
- package/lib/shared-tree/sharedTree.d.ts +3 -22
- package/lib/shared-tree/sharedTree.d.ts.map +1 -1
- package/lib/shared-tree/sharedTree.js +11 -27
- package/lib/shared-tree/sharedTree.js.map +1 -1
- package/lib/shared-tree/sharedTreeChangeCodecs.d.ts +3 -2
- package/lib/shared-tree/sharedTreeChangeCodecs.d.ts.map +1 -1
- package/lib/shared-tree/sharedTreeChangeCodecs.js +19 -12
- 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 +2 -2
- package/lib/shared-tree/sharedTreeChangeEnricher.js.map +1 -1
- package/lib/shared-tree/sharedTreeChangeFamily.d.ts +1 -1
- package/lib/shared-tree/sharedTreeChangeFamily.d.ts.map +1 -1
- package/lib/shared-tree/sharedTreeChangeFamily.js +2 -2
- package/lib/shared-tree/sharedTreeChangeFamily.js.map +1 -1
- package/lib/shared-tree/sharedTreeChangeFormat.d.ts +8 -7
- package/lib/shared-tree/sharedTreeChangeFormat.d.ts.map +1 -1
- package/lib/shared-tree/sharedTreeChangeFormat.js +11 -5
- package/lib/shared-tree/sharedTreeChangeFormat.js.map +1 -1
- package/lib/shared-tree/tree.d.ts.map +1 -1
- package/lib/shared-tree/tree.js +2 -1
- package/lib/shared-tree/tree.js.map +1 -1
- package/lib/shared-tree/treeAlpha.d.ts +13 -1
- package/lib/shared-tree/treeAlpha.d.ts.map +1 -1
- package/lib/shared-tree/treeAlpha.js +3 -0
- package/lib/shared-tree/treeAlpha.js.map +1 -1
- package/lib/shared-tree/treeCheckout.d.ts +34 -69
- package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
- package/lib/shared-tree/treeCheckout.js +889 -683
- package/lib/shared-tree/treeCheckout.js.map +1 -1
- package/lib/shared-tree/unhydratedTreeContext.js +1 -1
- package/lib/shared-tree/unhydratedTreeContext.js.map +1 -1
- package/lib/shared-tree-core/editManagerCodecs.d.ts +23 -12
- package/lib/shared-tree-core/editManagerCodecs.d.ts.map +1 -1
- package/lib/shared-tree-core/editManagerCodecs.js +41 -65
- package/lib/shared-tree-core/editManagerCodecs.js.map +1 -1
- package/lib/shared-tree-core/editManagerCodecsCommons.d.ts.map +1 -1
- package/lib/shared-tree-core/editManagerCodecsCommons.js +0 -1
- package/lib/shared-tree-core/editManagerCodecsCommons.js.map +1 -1
- package/lib/shared-tree-core/editManagerCodecsV1toV4.d.ts +10 -2
- package/lib/shared-tree-core/editManagerCodecsV1toV4.d.ts.map +1 -1
- package/lib/shared-tree-core/editManagerCodecsV1toV4.js +16 -11
- package/lib/shared-tree-core/editManagerCodecsV1toV4.js.map +1 -1
- package/lib/shared-tree-core/editManagerCodecsVSharedBranches.d.ts +2 -2
- package/lib/shared-tree-core/editManagerCodecsVSharedBranches.d.ts.map +1 -1
- package/lib/shared-tree-core/editManagerCodecsVSharedBranches.js +5 -8
- package/lib/shared-tree-core/editManagerCodecsVSharedBranches.js.map +1 -1
- package/lib/shared-tree-core/index.d.ts +3 -3
- package/lib/shared-tree-core/index.d.ts.map +1 -1
- package/lib/shared-tree-core/index.js +3 -3
- package/lib/shared-tree-core/index.js.map +1 -1
- package/lib/shared-tree-core/messageCodecV1ToV4.d.ts +2 -3
- package/lib/shared-tree-core/messageCodecV1ToV4.d.ts.map +1 -1
- package/lib/shared-tree-core/messageCodecV1ToV4.js +8 -8
- package/lib/shared-tree-core/messageCodecV1ToV4.js.map +1 -1
- package/lib/shared-tree-core/messageCodecVSharedBranches.d.ts +2 -3
- package/lib/shared-tree-core/messageCodecVSharedBranches.d.ts.map +1 -1
- package/lib/shared-tree-core/messageCodecVSharedBranches.js +5 -4
- package/lib/shared-tree-core/messageCodecVSharedBranches.js.map +1 -1
- package/lib/shared-tree-core/messageCodecs.d.ts +15 -14
- package/lib/shared-tree-core/messageCodecs.d.ts.map +1 -1
- package/lib/shared-tree-core/messageCodecs.js +38 -71
- package/lib/shared-tree-core/messageCodecs.js.map +1 -1
- package/lib/shared-tree-core/messageFormat.d.ts +0 -1
- package/lib/shared-tree-core/messageFormat.d.ts.map +1 -1
- package/lib/shared-tree-core/messageFormat.js +0 -1
- package/lib/shared-tree-core/messageFormat.js.map +1 -1
- package/lib/shared-tree-core/sharedTreeCore.d.ts +1 -3
- package/lib/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
- package/lib/shared-tree-core/sharedTreeCore.js +14 -4
- package/lib/shared-tree-core/sharedTreeCore.js.map +1 -1
- package/lib/sharedTreeAttributes.d.ts.map +1 -1
- package/lib/sharedTreeAttributes.js +3 -0
- package/lib/sharedTreeAttributes.js.map +1 -1
- package/lib/simple-tree/api/index.d.ts +1 -0
- 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.map +1 -1
- package/lib/simple-tree/api/schemaFactoryAlpha.d.ts +2 -2
- package/lib/simple-tree/api/schemaFactoryAlpha.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaFactoryAlpha.js.map +1 -1
- package/lib/simple-tree/api/storedSchema.d.ts.map +1 -1
- package/lib/simple-tree/api/storedSchema.js +7 -7
- package/lib/simple-tree/api/storedSchema.js.map +1 -1
- package/lib/simple-tree/api/tree.d.ts +7 -19
- package/lib/simple-tree/api/tree.d.ts.map +1 -1
- package/lib/simple-tree/api/tree.js.map +1 -1
- package/lib/simple-tree/api/treeAlpha.d.ts +69 -0
- package/lib/simple-tree/api/treeAlpha.d.ts.map +1 -0
- package/lib/simple-tree/api/treeAlpha.js +6 -0
- package/lib/simple-tree/api/treeAlpha.js.map +1 -0
- package/lib/simple-tree/api/treeBeta.d.ts +1 -1
- package/lib/simple-tree/api/treeBeta.js.map +1 -1
- package/lib/simple-tree/api/treeChangeEvents.d.ts +3 -0
- package/lib/simple-tree/api/treeChangeEvents.d.ts.map +1 -1
- package/lib/simple-tree/api/treeChangeEvents.js.map +1 -1
- package/lib/simple-tree/api/treeNodeApi.d.ts +49 -0
- package/lib/simple-tree/api/treeNodeApi.d.ts.map +1 -1
- package/lib/simple-tree/api/treeNodeApi.js +41 -2
- package/lib/simple-tree/api/treeNodeApi.js.map +1 -1
- package/lib/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
- package/lib/simple-tree/core/treeNodeKernel.js +45 -8
- 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 +5 -1
- package/lib/simple-tree/core/unhydratedFlexTree.js.map +1 -1
- package/lib/simple-tree/index.d.ts +2 -2
- package/lib/simple-tree/index.d.ts.map +1 -1
- package/lib/simple-tree/index.js.map +1 -1
- package/lib/simple-tree/node-kinds/array/arrayNode.d.ts +16 -0
- package/lib/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/array/arrayNode.js +23 -0
- package/lib/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
- package/lib/simple-tree/node-kinds/array/arrayNodeTypes.d.ts +10 -1
- package/lib/simple-tree/node-kinds/array/arrayNodeTypes.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/array/arrayNodeTypes.js.map +1 -1
- package/lib/simple-tree/node-kinds/array/index.d.ts +2 -2
- package/lib/simple-tree/node-kinds/array/index.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/array/index.js.map +1 -1
- package/lib/simple-tree/node-kinds/index.d.ts +1 -1
- package/lib/simple-tree/node-kinds/index.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/index.js.map +1 -1
- package/lib/text/textDomainFormatted.d.ts +319 -9
- package/lib/text/textDomainFormatted.d.ts.map +1 -1
- package/lib/text/textDomainFormatted.js +103 -28
- package/lib/text/textDomainFormatted.js.map +1 -1
- package/lib/treeFactory.d.ts.map +1 -1
- package/lib/treeFactory.js +6 -3
- package/lib/treeFactory.js.map +1 -1
- package/lib/util/referenceCounting.d.ts.map +1 -1
- package/lib/util/referenceCounting.js +0 -1
- package/lib/util/referenceCounting.js.map +1 -1
- package/package.json +27 -27
- package/scripts/generate-entrypoint-sources.sh +4 -2
- package/src/api.ts +11 -0
- package/src/codec/codec.ts +32 -2
- package/src/codec/index.ts +2 -3
- package/src/codec/versioned/codec.ts +99 -109
- package/src/codec/versioned/index.ts +1 -3
- package/src/core/forest/forest.ts +5 -2
- package/src/core/index.ts +4 -0
- package/src/core/rebase/changeRebaser.ts +8 -0
- package/src/core/rebase/revisionTagCodec.ts +4 -4
- package/src/core/rebase/utils.ts +9 -2
- package/src/core/schema-stored/formatV2.ts +1 -1
- package/src/core/tree/anchorSet.ts +67 -10
- package/src/core/tree/cursor.ts +52 -1
- package/src/core/tree/deltaUtil.ts +37 -1
- package/src/core/tree/detachedFieldIndexCodecs.ts +4 -4
- package/src/core/tree/index.ts +4 -0
- package/src/core/tree/visitDelta.ts +13 -1
- package/src/core/tree/visitorUtils.ts +5 -0
- package/src/entrypoints/alpha.ts +13 -6
- package/src/entrypoints/beta.ts +2 -2
- package/src/entrypoints/legacy.ts +11 -3
- package/src/entrypoints/public.ts +1 -1
- package/src/feature-libraries/changeAtomIdCodec.ts +8 -7
- package/src/feature-libraries/chunked-forest/chunkedForest.ts +3 -2
- package/src/feature-libraries/chunked-forest/codec/chunkDecoding.ts +18 -13
- package/src/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.ts +1 -1
- package/src/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.ts +1 -2
- package/src/feature-libraries/chunked-forest/codec/codecs.ts +16 -10
- package/src/feature-libraries/chunked-forest/codec/compressedEncode.ts +16 -14
- package/src/feature-libraries/chunked-forest/codec/{formatGeneric.ts → format/formatGeneric.ts} +1 -1
- package/src/feature-libraries/chunked-forest/codec/{format.ts → format/formatV1.ts} +41 -111
- package/src/feature-libraries/chunked-forest/codec/format/formatV2.ts +31 -0
- package/src/feature-libraries/chunked-forest/codec/format/index.ts +31 -0
- package/src/feature-libraries/chunked-forest/codec/format/versions.ts +81 -0
- package/src/feature-libraries/chunked-forest/codec/index.ts +6 -2
- package/src/feature-libraries/chunked-forest/codec/nodeEncoder.ts +19 -12
- package/src/feature-libraries/chunked-forest/codec/schemaBasedEncode.ts +6 -4
- package/src/feature-libraries/chunked-forest/codec/uncompressedEncode.ts +10 -10
- package/src/feature-libraries/chunked-forest/index.ts +2 -1
- package/src/feature-libraries/cursorComparator.ts +77 -0
- package/src/feature-libraries/forest-summary/incrementalSummaryBuilder.ts +5 -5
- package/src/feature-libraries/index.ts +5 -3
- package/src/feature-libraries/indexing/anchorTreeIndex.ts +20 -10
- package/src/feature-libraries/mitigatedChangeFamily.ts +4 -1
- package/src/feature-libraries/modular-schema/fieldChangeHandler.ts +4 -5
- package/src/feature-libraries/modular-schema/genericFieldKind.ts +0 -1
- package/src/feature-libraries/modular-schema/modularChangeCodecV1.ts +19 -26
- package/src/feature-libraries/modular-schema/modularChangeCodecV2.ts +4 -4
- package/src/feature-libraries/modular-schema/modularChangeCodecs.ts +4 -5
- package/src/feature-libraries/modular-schema/modularChangeFamily.ts +6 -2
- package/src/feature-libraries/object-forest/objectForest.ts +8 -2
- package/src/feature-libraries/optional-field/optionalFieldCodecV2.ts +11 -13
- package/src/feature-libraries/optional-field/optionalFieldCodecs.ts +4 -5
- package/src/feature-libraries/schema-edits/index.ts +1 -4
- package/src/feature-libraries/schema-edits/schemaChangeCodecs.ts +10 -78
- package/src/feature-libraries/schema-index/codec.ts +0 -25
- package/src/feature-libraries/schema-index/formatV2.ts +1 -1
- package/src/feature-libraries/schema-index/index.ts +1 -4
- package/src/feature-libraries/sequence-field/sequenceFieldCodecV2.ts +6 -6
- package/src/feature-libraries/sequence-field/sequenceFieldCodecV3.ts +8 -5
- package/src/feature-libraries/sequence-field/sequenceFieldCodecs.ts +4 -5
- package/src/index.ts +10 -3
- package/src/packageVersion.ts +1 -1
- package/src/shared-tree/independentView.ts +5 -18
- package/src/shared-tree/index.ts +0 -4
- package/src/shared-tree/schematizingTreeView.ts +19 -165
- package/src/shared-tree/sharedTree.ts +16 -59
- package/src/shared-tree/sharedTreeChangeCodecs.ts +23 -29
- package/src/shared-tree/sharedTreeChangeEnricher.ts +1 -2
- package/src/shared-tree/sharedTreeChangeFamily.ts +2 -0
- package/src/shared-tree/sharedTreeChangeFormat.ts +23 -8
- package/src/shared-tree/tree.ts +2 -5
- package/src/shared-tree/treeAlpha.ts +26 -0
- package/src/shared-tree/treeCheckout.ts +275 -99
- package/src/shared-tree/unhydratedTreeContext.ts +1 -1
- package/src/shared-tree-core/editManagerCodecs.ts +99 -124
- package/src/shared-tree-core/editManagerCodecsCommons.ts +0 -1
- package/src/shared-tree-core/editManagerCodecsV1toV4.ts +54 -59
- package/src/shared-tree-core/editManagerCodecsVSharedBranches.ts +72 -95
- package/src/shared-tree-core/index.ts +4 -8
- package/src/shared-tree-core/messageCodecV1ToV4.ts +56 -71
- package/src/shared-tree-core/messageCodecVSharedBranches.ts +76 -92
- package/src/shared-tree-core/messageCodecs.ts +88 -126
- package/src/shared-tree-core/messageFormat.ts +0 -3
- package/src/shared-tree-core/sharedTreeCore.ts +14 -21
- package/src/sharedTreeAttributes.ts +3 -0
- package/src/simple-tree/api/index.ts +10 -0
- package/src/simple-tree/api/schemaFactory.ts +0 -2
- package/src/simple-tree/api/schemaFactoryAlpha.ts +13 -2
- package/src/simple-tree/api/storedSchema.ts +8 -19
- package/src/simple-tree/api/tree.ts +7 -20
- package/src/simple-tree/api/treeAlpha.ts +90 -0
- package/src/simple-tree/api/treeBeta.ts +1 -1
- package/src/simple-tree/api/treeChangeEvents.ts +3 -0
- package/src/simple-tree/api/treeNodeApi.ts +95 -3
- package/src/simple-tree/core/treeNodeKernel.ts +53 -7
- package/src/simple-tree/core/unhydratedFlexTree.ts +5 -1
- package/src/simple-tree/index.ts +10 -0
- package/src/simple-tree/node-kinds/array/arrayNode.ts +64 -0
- package/src/simple-tree/node-kinds/array/arrayNodeTypes.ts +25 -1
- package/src/simple-tree/node-kinds/array/index.ts +2 -0
- package/src/simple-tree/node-kinds/index.ts +2 -0
- package/src/text/textDomainFormatted.ts +113 -11
- package/src/treeFactory.ts +10 -5
- package/src/util/referenceCounting.ts +0 -1
- package/dist/feature-libraries/chunked-forest/codec/format.d.ts +0 -383
- package/dist/feature-libraries/chunked-forest/codec/format.d.ts.map +0 -1
- package/dist/feature-libraries/chunked-forest/codec/format.js +0 -191
- package/dist/feature-libraries/chunked-forest/codec/format.js.map +0 -1
- package/dist/feature-libraries/chunked-forest/codec/formatGeneric.d.ts.map +0 -1
- package/dist/feature-libraries/chunked-forest/codec/formatGeneric.js.map +0 -1
- package/lib/feature-libraries/chunked-forest/codec/format.d.ts +0 -383
- package/lib/feature-libraries/chunked-forest/codec/format.d.ts.map +0 -1
- package/lib/feature-libraries/chunked-forest/codec/format.js +0 -188
- package/lib/feature-libraries/chunked-forest/codec/format.js.map +0 -1
- package/lib/feature-libraries/chunked-forest/codec/formatGeneric.d.ts.map +0 -1
- package/lib/feature-libraries/chunked-forest/codec/formatGeneric.js.map +0 -1
- /package/dist/feature-libraries/chunked-forest/codec/{formatGeneric.js → format/formatGeneric.js} +0 -0
- /package/lib/feature-libraries/chunked-forest/codec/{formatGeneric.js → format/formatGeneric.js} +0 -0
package/src/codec/codec.ts
CHANGED
|
@@ -202,6 +202,27 @@ export interface IJsonCodec<
|
|
|
202
202
|
encodedSchema?: TAnySchema;
|
|
203
203
|
}
|
|
204
204
|
|
|
205
|
+
/**
|
|
206
|
+
* Part of a codec.
|
|
207
|
+
* @remarks
|
|
208
|
+
* Encode and decode logic and schema for some chunk of data.
|
|
209
|
+
* Can be composed into larger codecs, and eventually versioned at the top level using
|
|
210
|
+
* {@link VersionDispatchingCodecBuilder}.
|
|
211
|
+
*
|
|
212
|
+
* This portion of a codec is not responsible for managing versioning or validation of the data against the schema.
|
|
213
|
+
*/
|
|
214
|
+
export interface JsonCodecPart<TDecoded, TEncodedSchema extends TAnySchema, TContext = void>
|
|
215
|
+
extends IEncoder<TDecoded, Static<TEncodedSchema>, TContext>,
|
|
216
|
+
IDecoder<TDecoded, Static<TEncodedSchema>, TContext> {
|
|
217
|
+
/**
|
|
218
|
+
* TypeBox schema which describes the encoded format for this chunk of data.
|
|
219
|
+
* @remarks
|
|
220
|
+
* The user of this codec can use this to build its own larger schema,
|
|
221
|
+
* until eventually it is provided to the {@link VersionDispatchingCodecBuilder}.
|
|
222
|
+
*/
|
|
223
|
+
encodedSchema: TEncodedSchema;
|
|
224
|
+
}
|
|
225
|
+
|
|
205
226
|
/**
|
|
206
227
|
* Type erase the more detailed encoded type from a codec.
|
|
207
228
|
*/
|
|
@@ -398,6 +419,7 @@ export function withSchemaValidation<
|
|
|
398
419
|
}
|
|
399
420
|
return codec.decode(encoded, context);
|
|
400
421
|
},
|
|
422
|
+
encodedSchema: schema,
|
|
401
423
|
};
|
|
402
424
|
}
|
|
403
425
|
|
|
@@ -529,9 +551,17 @@ export const FluidClientVersion = {
|
|
|
529
551
|
*/
|
|
530
552
|
export const currentVersion: MinimumVersionForCollab = runtimeUtilsCleanedPackageVersion;
|
|
531
553
|
|
|
532
|
-
|
|
554
|
+
/**
|
|
555
|
+
* TODO:
|
|
556
|
+
* This needs to be documented.
|
|
557
|
+
* Its documentation should cover at least the following:
|
|
558
|
+
* - Is this used for anything other than testing.
|
|
559
|
+
* - What should be included as children. For example should it include versioned codecs which dispatch base on the min version for collaboration? If so, what version of them should be used?
|
|
560
|
+
* - What risks does having this mitigate?
|
|
561
|
+
*/
|
|
562
|
+
export interface CodecTree<TFormatVersion extends FormatVersion = FormatVersion> {
|
|
533
563
|
readonly name: string;
|
|
534
|
-
readonly version:
|
|
564
|
+
readonly version: TFormatVersion;
|
|
535
565
|
readonly children?: readonly CodecTree[];
|
|
536
566
|
}
|
|
537
567
|
|
package/src/codec/index.ts
CHANGED
|
@@ -28,6 +28,7 @@ export {
|
|
|
28
28
|
extractJsonValidator,
|
|
29
29
|
type CodecName,
|
|
30
30
|
eraseEncodedType,
|
|
31
|
+
type JsonCodecPart,
|
|
31
32
|
} from "./codec.js";
|
|
32
33
|
export {
|
|
33
34
|
DiscriminatedUnionDispatcher,
|
|
@@ -36,9 +37,7 @@ export {
|
|
|
36
37
|
} from "./discriminatedUnions.js";
|
|
37
38
|
export {
|
|
38
39
|
Versioned,
|
|
39
|
-
|
|
40
|
-
makeVersionDispatchingCodec,
|
|
41
|
-
makeDiscontinuedCodecVersion,
|
|
40
|
+
makeDiscontinuedCodecAndSchema,
|
|
42
41
|
ClientVersionDispatchingCodecBuilder,
|
|
43
42
|
type CodecVersion,
|
|
44
43
|
type CodecAndSchema,
|
|
@@ -12,16 +12,16 @@ import {
|
|
|
12
12
|
type SemanticVersion,
|
|
13
13
|
} from "@fluidframework/runtime-utils/internal";
|
|
14
14
|
import { UsageError } from "@fluidframework/telemetry-utils/internal";
|
|
15
|
-
import {
|
|
15
|
+
import type { TSchema } from "@sinclair/typebox";
|
|
16
16
|
import { gt } from "semver-ts";
|
|
17
17
|
|
|
18
18
|
import { pkgVersion } from "../../packageVersion.js";
|
|
19
|
-
import
|
|
20
|
-
|
|
21
|
-
|
|
19
|
+
import {
|
|
20
|
+
JsonCompatibleReadOnlySchema,
|
|
21
|
+
type JsonCompatibleReadOnly,
|
|
22
|
+
type JsonCompatibleReadOnlyObject,
|
|
22
23
|
} from "../../util/index.js";
|
|
23
24
|
import {
|
|
24
|
-
type ICodecFamily,
|
|
25
25
|
type ICodecOptions,
|
|
26
26
|
type IJsonCodec,
|
|
27
27
|
withSchemaValidation,
|
|
@@ -90,10 +90,8 @@ The client which encoded this data likely specified an "minVersionForCollab" val
|
|
|
90
90
|
* @remarks
|
|
91
91
|
* The passed in codec should not perform its own schema validation.
|
|
92
92
|
* The schema validation gets added here.
|
|
93
|
-
*
|
|
94
|
-
* TODO: users of this should migrate to {@link ClientVersionDispatchingCodecBuilder}.
|
|
95
93
|
*/
|
|
96
|
-
|
|
94
|
+
function makeVersionedValidatedCodec<
|
|
97
95
|
EncodedSchema extends TSchema,
|
|
98
96
|
TDecoded,
|
|
99
97
|
TEncoded extends Versioned = VersionedJson,
|
|
@@ -104,77 +102,46 @@ export function makeVersionedValidatedCodec<
|
|
|
104
102
|
supportedVersions: Set<FormatVersion>,
|
|
105
103
|
schema: EncodedSchema,
|
|
106
104
|
codec: IJsonCodec<TDecoded, TEncoded, TValidate, TContext>,
|
|
107
|
-
): IJsonCodec<TDecoded, TEncoded, TValidate, TContext>
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
105
|
+
): IJsonCodec<TDecoded, TEncoded, TValidate, TContext> &
|
|
106
|
+
Pick<CodecAndSchema<TDecoded, TContext>, "schema"> {
|
|
107
|
+
return {
|
|
108
|
+
...makeVersionedCodec(
|
|
109
|
+
supportedVersions,
|
|
110
|
+
options,
|
|
111
|
+
withSchemaValidation(schema, codec, options.jsonValidator),
|
|
112
|
+
),
|
|
113
|
+
schema,
|
|
114
|
+
};
|
|
113
115
|
}
|
|
114
116
|
|
|
115
117
|
/**
|
|
116
|
-
* Creates a codec which always throws a UsageError when encoding or decoding, indicating that the format version is discontinued.
|
|
117
|
-
*
|
|
118
|
-
* TODO: {@link ClientVersionDispatchingCodecBuilder} should get support for extra decode only entries and/or unstable formats (codecs without a minVersionForCollab that will never be selected for write unless overridden).
|
|
119
|
-
* Once done, users of this should migrate to ClientVersionDispatchingCodecBuilder and this function can be simplified.
|
|
118
|
+
* Creates a codec version which always throws a UsageError when encoding or decoding, indicating that the format version is discontinued.
|
|
120
119
|
*/
|
|
121
|
-
export function
|
|
120
|
+
export function makeDiscontinuedCodecAndSchema<
|
|
122
121
|
TDecoded,
|
|
123
|
-
|
|
124
|
-
|
|
122
|
+
TContext,
|
|
123
|
+
TFormatVersion extends FormatVersion = FormatVersion,
|
|
125
124
|
>(
|
|
126
|
-
|
|
127
|
-
discontinuedVersion: FormatVersion,
|
|
125
|
+
discontinuedVersion: TFormatVersion,
|
|
128
126
|
discontinuedSince: SemanticVersion,
|
|
129
|
-
):
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
},
|
|
146
|
-
decode: (data: TEncoded): TDecoded => {
|
|
147
|
-
throw new UsageError(
|
|
148
|
-
`Cannot decode data to format ${data.version}. The codec was discontinued in Fluid Framework client version ${discontinuedSince}.`,
|
|
149
|
-
);
|
|
127
|
+
): CodecVersion<TDecoded, TContext, TFormatVersion> {
|
|
128
|
+
return {
|
|
129
|
+
minVersionForCollab: undefined,
|
|
130
|
+
formatVersion: discontinuedVersion,
|
|
131
|
+
codec: {
|
|
132
|
+
schema: JsonCompatibleReadOnlySchema,
|
|
133
|
+
encode: (_data: TDecoded) => {
|
|
134
|
+
throw new UsageError(
|
|
135
|
+
`Cannot encode data to format ${discontinuedVersion}. The codec was discontinued in Fluid Framework client version ${discontinuedSince}.`,
|
|
136
|
+
);
|
|
137
|
+
},
|
|
138
|
+
decode: (data: unknown) => {
|
|
139
|
+
throw new UsageError(
|
|
140
|
+
`Cannot decode data in format ${discontinuedVersion}. The codec was discontinued in Fluid Framework client version ${discontinuedSince}.`,
|
|
141
|
+
);
|
|
142
|
+
},
|
|
150
143
|
},
|
|
151
144
|
};
|
|
152
|
-
return makeVersionedValidatedCodec(options, new Set([discontinuedVersion]), schema, codec);
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
/**
|
|
156
|
-
* Creates a codec which dispatches to the appropriate member of a codec family based on the version of
|
|
157
|
-
* data it encounters.
|
|
158
|
-
* @remarks
|
|
159
|
-
* Each member of the codec family must write an explicit version number into the data it encodes (implementing {@link Versioned}).
|
|
160
|
-
*
|
|
161
|
-
* TODO: Users of this should migrate to {@link ClientVersionDispatchingCodecBuilder} so that the actual format version used can be encapsulated.
|
|
162
|
-
*/
|
|
163
|
-
export function makeVersionDispatchingCodec<TDecoded, TContext>(
|
|
164
|
-
family: ICodecFamily<TDecoded, TContext>,
|
|
165
|
-
options: ICodecOptions & { writeVersion: FormatVersion },
|
|
166
|
-
): IJsonCodec<TDecoded, JsonCompatibleReadOnly, JsonCompatibleReadOnly, TContext> {
|
|
167
|
-
const writeCodec = family.resolve(options.writeVersion);
|
|
168
|
-
const supportedVersions = new Set(family.getSupportedFormats());
|
|
169
|
-
return makeVersionedCodec(supportedVersions, options, {
|
|
170
|
-
encode(data, context): Versioned {
|
|
171
|
-
return writeCodec.encode(data, context) as Versioned;
|
|
172
|
-
},
|
|
173
|
-
decode(data: Versioned, context) {
|
|
174
|
-
const codec = family.resolve(data.version);
|
|
175
|
-
return codec.decode(data, context);
|
|
176
|
-
},
|
|
177
|
-
});
|
|
178
145
|
}
|
|
179
146
|
|
|
180
147
|
/**
|
|
@@ -218,7 +185,7 @@ export interface CodecVersion<
|
|
|
218
185
|
TDecoded,
|
|
219
186
|
TContext,
|
|
220
187
|
TFormatVersion extends FormatVersion,
|
|
221
|
-
TBuildOptions extends
|
|
188
|
+
TBuildOptions extends ICodecOptions = ICodecOptions,
|
|
222
189
|
> extends CodecVersionBase<
|
|
223
190
|
| CodecAndSchema<TDecoded, TContext>
|
|
224
191
|
| ((options: TBuildOptions) => CodecAndSchema<TDecoded, TContext>),
|
|
@@ -235,11 +202,9 @@ export interface NormalizedCodecVersion<
|
|
|
235
202
|
TDecoded,
|
|
236
203
|
TContext,
|
|
237
204
|
TFormatVersion extends FormatVersion,
|
|
238
|
-
TBuildOptions extends
|
|
205
|
+
TBuildOptions extends ICodecOptions,
|
|
239
206
|
> extends CodecVersionBase<
|
|
240
|
-
(
|
|
241
|
-
options: TBuildOptions,
|
|
242
|
-
) => IJsonCodec<TDecoded, VersionedJson, JsonCompatibleReadOnly, TContext>,
|
|
207
|
+
(options: TBuildOptions) => CodecAndSchema<TDecoded, TContext>,
|
|
243
208
|
TFormatVersion
|
|
244
209
|
> {}
|
|
245
210
|
|
|
@@ -249,10 +214,7 @@ export interface NormalizedCodecVersion<
|
|
|
249
214
|
* Produced by {@link ClientVersionDispatchingCodecBuilder.applyOptions}.
|
|
250
215
|
*/
|
|
251
216
|
interface EvaluatedCodecVersion<TDecoded, TContext, TFormatVersion extends FormatVersion>
|
|
252
|
-
extends CodecVersionBase<
|
|
253
|
-
IJsonCodec<TDecoded, VersionedJson, JsonCompatibleReadOnly, TContext>,
|
|
254
|
-
TFormatVersion
|
|
255
|
-
> {}
|
|
217
|
+
extends CodecVersionBase<CodecAndSchema<TDecoded, TContext>, TFormatVersion> {}
|
|
256
218
|
|
|
257
219
|
/**
|
|
258
220
|
* Normalize the codec to a single format.
|
|
@@ -263,7 +225,7 @@ function normalizeCodecVersion<
|
|
|
263
225
|
TDecoded,
|
|
264
226
|
TContext,
|
|
265
227
|
TFormatVersion extends FormatVersion,
|
|
266
|
-
TBuildOptions extends
|
|
228
|
+
TBuildOptions extends ICodecOptions,
|
|
267
229
|
>(
|
|
268
230
|
codecVersion: CodecVersion<TDecoded, TContext, TFormatVersion, TBuildOptions>,
|
|
269
231
|
): NormalizedCodecVersion<TDecoded, TContext, TFormatVersion, TBuildOptions> {
|
|
@@ -271,9 +233,7 @@ function normalizeCodecVersion<
|
|
|
271
233
|
typeof codecVersion.codec === "function"
|
|
272
234
|
? codecVersion.codec
|
|
273
235
|
: () => codecVersion.codec as CodecAndSchema<TDecoded, TContext>;
|
|
274
|
-
const codec = (
|
|
275
|
-
options: TBuildOptions,
|
|
276
|
-
): IJsonCodec<TDecoded, VersionedJson, JsonCompatibleReadOnly, TContext> => {
|
|
236
|
+
const codec = (options: TBuildOptions): CodecAndSchema<TDecoded, TContext> => {
|
|
277
237
|
const built = codecBuilder(options);
|
|
278
238
|
return makeVersionedValidatedCodec(
|
|
279
239
|
options,
|
|
@@ -297,11 +257,11 @@ function normalizeCodecVersion<
|
|
|
297
257
|
* This is a two stage builder so the first stage can encapsulate all codec specific details and the second can bring in configuration.
|
|
298
258
|
*/
|
|
299
259
|
export class ClientVersionDispatchingCodecBuilder<
|
|
300
|
-
|
|
301
|
-
TDecoded,
|
|
302
|
-
TContext,
|
|
303
|
-
TFormatVersion extends FormatVersion,
|
|
304
|
-
|
|
260
|
+
TBuildOptions extends ICodecOptions = ICodecOptions,
|
|
261
|
+
TDecoded = unknown,
|
|
262
|
+
TContext = unknown,
|
|
263
|
+
TFormatVersion extends FormatVersion = FormatVersion,
|
|
264
|
+
TName extends CodecName = string,
|
|
305
265
|
> {
|
|
306
266
|
public readonly registry: readonly NormalizedCodecVersion<
|
|
307
267
|
TDecoded,
|
|
@@ -322,7 +282,7 @@ export class ClientVersionDispatchingCodecBuilder<
|
|
|
322
282
|
/**
|
|
323
283
|
* See {@link CodecName}.
|
|
324
284
|
*/
|
|
325
|
-
public readonly name:
|
|
285
|
+
public readonly name: TName,
|
|
326
286
|
/**
|
|
327
287
|
* The registry of codecs which this builder can use to encode and decode data.
|
|
328
288
|
*/
|
|
@@ -391,7 +351,7 @@ export class ClientVersionDispatchingCodecBuilder<
|
|
|
391
351
|
/**
|
|
392
352
|
* Produce a single codec which can read any supported format, and writes a version selected based on the provided options.
|
|
393
353
|
*/
|
|
394
|
-
public build(options: TBuildOptions): IJsonCodec<
|
|
354
|
+
public build(options: TBuildOptions & CodecWriteOptions): IJsonCodec<
|
|
395
355
|
TDecoded,
|
|
396
356
|
JsonCompatibleReadOnly,
|
|
397
357
|
JsonCompatibleReadOnly,
|
|
@@ -404,32 +364,62 @@ export class ClientVersionDispatchingCodecBuilder<
|
|
|
404
364
|
*/
|
|
405
365
|
readonly writeVersion: TFormatVersion;
|
|
406
366
|
} {
|
|
407
|
-
const applied = this.
|
|
367
|
+
const [applied, decoder] = this.buildDecoderInternal(options);
|
|
408
368
|
const writeVersion = getWriteVersion(this.name, options, applied);
|
|
409
|
-
const fromFormatVersion = new Map<
|
|
410
|
-
FormatVersion,
|
|
411
|
-
EvaluatedCodecVersion<TDecoded, TContext, TFormatVersion>
|
|
412
|
-
>(applied.map((codec) => [codec.formatVersion, codec]));
|
|
413
369
|
return {
|
|
370
|
+
...decoder,
|
|
414
371
|
encode: (data: TDecoded, context: TContext): JsonCompatibleReadOnly => {
|
|
415
372
|
return writeVersion.codec.encode(data, context);
|
|
416
373
|
},
|
|
417
|
-
decode: (data: JsonCompatibleReadOnly, context: TContext): TDecoded => {
|
|
418
|
-
const versioned = data as Partial<Versioned>;
|
|
419
|
-
const codec = fromFormatVersion.get(versioned.version);
|
|
420
|
-
if (codec === undefined) {
|
|
421
|
-
throw new UsageError(
|
|
422
|
-
`Unsupported version ${versioned.version} encountered while decoding ${this.name} data. Supported versions for this data are: ${versionList(applied)}.
|
|
423
|
-
The client which encoded this data likely specified an "minVersionForCollab" value which corresponds to a version newer than the version of this client ("${pkgVersion}").`,
|
|
424
|
-
);
|
|
425
|
-
}
|
|
426
|
-
return codec.codec.decode(data, context);
|
|
427
|
-
},
|
|
428
374
|
writeVersion: writeVersion.formatVersion,
|
|
429
375
|
};
|
|
430
376
|
}
|
|
431
377
|
|
|
432
|
-
|
|
378
|
+
private buildDecoderInternal(
|
|
379
|
+
options: TBuildOptions,
|
|
380
|
+
): [
|
|
381
|
+
EvaluatedCodecVersion<TDecoded, TContext, TFormatVersion>[],
|
|
382
|
+
Pick<
|
|
383
|
+
IJsonCodec<TDecoded, JsonCompatibleReadOnly, JsonCompatibleReadOnly, TContext>,
|
|
384
|
+
"decode"
|
|
385
|
+
>,
|
|
386
|
+
] {
|
|
387
|
+
const applied = this.applyOptions(options);
|
|
388
|
+
const fromFormatVersion = new Map<
|
|
389
|
+
FormatVersion,
|
|
390
|
+
EvaluatedCodecVersion<TDecoded, TContext, TFormatVersion>
|
|
391
|
+
>(applied.map((codec) => [codec.formatVersion, codec]));
|
|
392
|
+
return [
|
|
393
|
+
applied,
|
|
394
|
+
{
|
|
395
|
+
decode: (data: JsonCompatibleReadOnly, context: TContext): TDecoded => {
|
|
396
|
+
const versioned = data as Partial<Versioned>;
|
|
397
|
+
const codec = fromFormatVersion.get(versioned.version);
|
|
398
|
+
if (codec === undefined) {
|
|
399
|
+
throw new UsageError(
|
|
400
|
+
`Unsupported version ${versioned.version} encountered while decoding ${this.name} data. Supported versions for this data are: ${versionList(applied)}.
|
|
401
|
+
The client which encoded this data likely specified an "minVersionForCollab" value which corresponds to a version newer than the version of this client ("${pkgVersion}").`,
|
|
402
|
+
);
|
|
403
|
+
}
|
|
404
|
+
return codec.codec.decode(data, context);
|
|
405
|
+
},
|
|
406
|
+
},
|
|
407
|
+
];
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
/**
|
|
411
|
+
* Produce a single codec which can read any supported format.
|
|
412
|
+
*/
|
|
413
|
+
public buildDecoder(
|
|
414
|
+
options: TBuildOptions,
|
|
415
|
+
): Pick<
|
|
416
|
+
IJsonCodec<TDecoded, JsonCompatibleReadOnly, JsonCompatibleReadOnly, TContext>,
|
|
417
|
+
"decode"
|
|
418
|
+
> {
|
|
419
|
+
return this.buildDecoderInternal(options)[1];
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
public getCodecTree(clientVersion: MinimumVersionForCollab): CodecTree<TFormatVersion> {
|
|
433
423
|
// TODO: add support for children codecs.
|
|
434
424
|
const selected = getWriteVersionNoOverrides(this.registry, clientVersion);
|
|
435
425
|
return {
|
|
@@ -470,11 +460,11 @@ The client which encoded this data likely specified an "minVersionForCollab" val
|
|
|
470
460
|
const input = inputRegistry as readonly unknown[] as readonly CodecFinal[];
|
|
471
461
|
|
|
472
462
|
const builder = new ClientVersionDispatchingCodecBuilder<
|
|
473
|
-
|
|
463
|
+
TBuildOptions2,
|
|
474
464
|
TDecoded2,
|
|
475
465
|
unknown extends TContext2 ? void : TContext2,
|
|
476
466
|
TFormatVersion2,
|
|
477
|
-
|
|
467
|
+
Name
|
|
478
468
|
>(name, input);
|
|
479
469
|
return builder;
|
|
480
470
|
}
|
|
@@ -5,9 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
export { Versioned, versionField } from "./format.js";
|
|
7
7
|
export {
|
|
8
|
-
|
|
9
|
-
makeVersionDispatchingCodec,
|
|
10
|
-
makeDiscontinuedCodecVersion,
|
|
8
|
+
makeDiscontinuedCodecAndSchema,
|
|
11
9
|
ClientVersionDispatchingCodecBuilder,
|
|
12
10
|
type CodecVersion,
|
|
13
11
|
type CodecAndSchema,
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
import type { Listenable } from "@fluidframework/core-interfaces/internal";
|
|
7
7
|
import { assert } from "@fluidframework/core-utils/internal";
|
|
8
8
|
|
|
9
|
+
import type { Breakable } from "../../util/index.js";
|
|
9
10
|
import type { FieldKey, TreeStoredSchemaSubscription } from "../schema-stored/index.js";
|
|
10
11
|
import {
|
|
11
12
|
type Anchor,
|
|
@@ -77,11 +78,13 @@ export interface IForestSubscription {
|
|
|
77
78
|
readonly anchors: AnchorSet;
|
|
78
79
|
|
|
79
80
|
/**
|
|
80
|
-
* Create an independent copy of this forest, that uses the provided schema
|
|
81
|
+
* Create an independent copy of this forest, that uses the provided schema.
|
|
81
82
|
*
|
|
82
83
|
* The new copy will not invalidate observers (dependents) of the old one.
|
|
84
|
+
* @param breaker - If provided, the cloned forest will use this breaker instead of inheriting the original's.
|
|
85
|
+
* This is useful when creating a fork that should have fault isolation from the original.
|
|
83
86
|
*/
|
|
84
|
-
clone(schema: TreeStoredSchemaSubscription,
|
|
87
|
+
clone(schema: TreeStoredSchemaSubscription, breaker?: Breakable): IEditableForest;
|
|
85
88
|
|
|
86
89
|
/**
|
|
87
90
|
* Generate a TreeChunk[] for the current field (and its children) of cursor.
|
package/src/core/index.ts
CHANGED
|
@@ -106,6 +106,10 @@ export {
|
|
|
106
106
|
type ChunkedCursor,
|
|
107
107
|
DetachedFieldIndexFormatVersion,
|
|
108
108
|
detachedFieldIndexCodecBuilder,
|
|
109
|
+
areDetachedNodeIdsEqual,
|
|
110
|
+
deltaFieldMapHasVisibleChanges,
|
|
111
|
+
deltaFieldChangesHaveVisibleChanges,
|
|
112
|
+
forEachNodeSubsequence,
|
|
109
113
|
} from "./tree/index.js";
|
|
110
114
|
|
|
111
115
|
export {
|
|
@@ -82,11 +82,19 @@ export interface ChangeRebaser<TChangeset> {
|
|
|
82
82
|
* `compose([rebase(a, c), rebase(b, compose([inverse(a), c, rebase(a, c)])])`.
|
|
83
83
|
* - `rebase(a, compose([]))` is equal to `a`.
|
|
84
84
|
* - `rebase(compose([]), a)` is equal to `compose([])`.
|
|
85
|
+
*
|
|
86
|
+
* @param ignoreNoChangeViolation - When true, no-change constraint violations are suppressed during rebase.
|
|
87
|
+
* This is a kludge to support undo/redo flows where an undo is rebased over newer commits that have no net
|
|
88
|
+
* effect on the document state (e.g. an edit plus its undo). We want the rebaser to treat no-change constraints
|
|
89
|
+
* as violated only if the sequence of changes rebased over leave the document in some meaningfully different state.
|
|
90
|
+
* Because implementing that rebasing logic in full is more complex, this flag is a hack to manually get
|
|
91
|
+
* that behavior in a special case.
|
|
85
92
|
*/
|
|
86
93
|
rebase(
|
|
87
94
|
change: TaggedChange<TChangeset>,
|
|
88
95
|
over: TaggedChange<TChangeset>,
|
|
89
96
|
revisionMetadata: RevisionMetadataSource,
|
|
97
|
+
ignoreNoChangeViolation?: boolean,
|
|
90
98
|
): TChangeset;
|
|
91
99
|
|
|
92
100
|
/**
|
|
@@ -6,16 +6,16 @@
|
|
|
6
6
|
import { assert } from "@fluidframework/core-utils/internal";
|
|
7
7
|
import type { IIdCompressor, SessionId } from "@fluidframework/id-compressor";
|
|
8
8
|
|
|
9
|
-
import type {
|
|
9
|
+
import type { JsonCodecPart } from "../../codec/index.js";
|
|
10
10
|
import type { ChangeEncodingContext } from "../change-family/index.js";
|
|
11
11
|
|
|
12
|
-
import type
|
|
12
|
+
import { RevisionTagSchema, type EncodedRevisionTag, type RevisionTag } from "./types.js";
|
|
13
13
|
|
|
14
14
|
export class RevisionTagCodec
|
|
15
|
-
implements
|
|
16
|
-
IJsonCodec<RevisionTag, EncodedRevisionTag, EncodedRevisionTag, ChangeEncodingContext>
|
|
15
|
+
implements JsonCodecPart<RevisionTag, typeof RevisionTagSchema, ChangeEncodingContext>
|
|
17
16
|
{
|
|
18
17
|
public localSessionId: SessionId;
|
|
18
|
+
public readonly encodedSchema = RevisionTagSchema;
|
|
19
19
|
|
|
20
20
|
public constructor(private readonly idCompressor: IIdCompressor) {
|
|
21
21
|
this.localSessionId = idCompressor.localSessionId;
|
package/src/core/rebase/utils.ts
CHANGED
|
@@ -347,6 +347,7 @@ export function rebaseChange<TChange>(
|
|
|
347
347
|
sourceHead: GraphCommit<TChange>,
|
|
348
348
|
targetHead: GraphCommit<TChange>,
|
|
349
349
|
mintRevisionTag: () => RevisionTag,
|
|
350
|
+
ignoreNoChangeViolation?: boolean,
|
|
350
351
|
): RebaseChangeResult<TChange> {
|
|
351
352
|
const sourcePath: GraphCommit<TChange>[] = [];
|
|
352
353
|
const targetPath: GraphCommit<TChange>[] = [];
|
|
@@ -367,7 +368,12 @@ export function rebaseChange<TChange>(
|
|
|
367
368
|
};
|
|
368
369
|
|
|
369
370
|
return {
|
|
370
|
-
change: rebaseChangeOverChanges(
|
|
371
|
+
change: rebaseChangeOverChanges(
|
|
372
|
+
changeRebaser,
|
|
373
|
+
change,
|
|
374
|
+
[...inverses, ...targetPath],
|
|
375
|
+
ignoreNoChangeViolation,
|
|
376
|
+
),
|
|
371
377
|
telemetryProperties,
|
|
372
378
|
};
|
|
373
379
|
}
|
|
@@ -398,6 +404,7 @@ export function rebaseChangeOverChanges<TChange>(
|
|
|
398
404
|
changeRebaser: ChangeRebaser<TChange>,
|
|
399
405
|
changeToRebase: TaggedChange<TChange>,
|
|
400
406
|
changesToRebaseOver: TaggedChange<TChange>[],
|
|
407
|
+
ignoreNoChangeViolation?: boolean,
|
|
401
408
|
): TChange {
|
|
402
409
|
const revisionMetadata = revisionMetadataSourceFromInfo(
|
|
403
410
|
getRevInfoFromTaggedChanges([...changesToRebaseOver, changeToRebase]),
|
|
@@ -407,7 +414,7 @@ export function rebaseChangeOverChanges<TChange>(
|
|
|
407
414
|
for (const b of changesToRebaseOver) {
|
|
408
415
|
result = mapTaggedChange(
|
|
409
416
|
changeToRebase,
|
|
410
|
-
changeRebaser.rebase(result, b, revisionMetadata),
|
|
417
|
+
changeRebaser.rebase(result, b, revisionMetadata, ignoreNoChangeViolation),
|
|
411
418
|
);
|
|
412
419
|
}
|
|
413
420
|
return result.change;
|
|
@@ -128,7 +128,17 @@ export interface AnchorEvents {
|
|
|
128
128
|
*
|
|
129
129
|
* Compare to {@link AnchorEvents.childrenChanged} which is emitted in the middle of the batch/delta-visit.
|
|
130
130
|
*/
|
|
131
|
-
childrenChangedAfterBatch(arg: {
|
|
131
|
+
childrenChangedAfterBatch(arg: {
|
|
132
|
+
changedFields: ReadonlySet<FieldKey>;
|
|
133
|
+
/**
|
|
134
|
+
* The sequential delta marks for each changed field, keyed by field key.
|
|
135
|
+
* @remarks
|
|
136
|
+
* A field is absent from this map when no mark data was captured for it
|
|
137
|
+
* (e.g. for unhydrated nodes, or when marks were invalidated by multiple
|
|
138
|
+
* sequential batches touching the same field before the buffer was flushed).
|
|
139
|
+
*/
|
|
140
|
+
fieldMarks: ReadonlyMap<FieldKey, readonly Delta.Mark[]>;
|
|
141
|
+
}): void;
|
|
132
142
|
|
|
133
143
|
/**
|
|
134
144
|
* Emitted in the middle of applying a batch of changes (i.e. during a delta a visit), if something in the subtree
|
|
@@ -726,6 +736,12 @@ export class AnchorSet implements AnchorLocator {
|
|
|
726
736
|
*/
|
|
727
737
|
bufferedEvents: [] as BufferedEvent[],
|
|
728
738
|
|
|
739
|
+
/**
|
|
740
|
+
* Field marks delivered via {@link DeltaVisitor.fieldMarks}, keyed by (PathNode, FieldKey).
|
|
741
|
+
* @remarks Populated during the first (detach) pass and consumed during "free" when emitting events.
|
|
742
|
+
*/
|
|
743
|
+
storedFieldMarks: new Map<PathNode, Map<FieldKey, readonly Delta.Mark[]>>(),
|
|
744
|
+
|
|
729
745
|
/**
|
|
730
746
|
* 'currentDepth' and 'depthThresholdForSubtreeChanged' serve to keep track of when do we need to emit
|
|
731
747
|
* subtreeChangedAfterBatch events.
|
|
@@ -764,15 +780,31 @@ export class AnchorSet implements AnchorLocator {
|
|
|
764
780
|
}
|
|
765
781
|
this.anchorSet.activeVisitor = undefined;
|
|
766
782
|
|
|
767
|
-
// Aggregate changedFields by node.
|
|
783
|
+
// Aggregate changedFields and fieldMarks by node.
|
|
768
784
|
const eventsByNode: Map<PathNode, Set<FieldKey>> = new Map();
|
|
769
|
-
|
|
785
|
+
const marksByNode: Map<PathNode, Map<FieldKey, readonly Delta.Mark[]>> = new Map();
|
|
786
|
+
for (const { node, event, changedField, fieldMarks } of this.bufferedEvents) {
|
|
770
787
|
if (event === "childrenChangedAfterBatch") {
|
|
771
|
-
const
|
|
772
|
-
keys.add(
|
|
788
|
+
const resolvedField: FieldKey =
|
|
773
789
|
changedField ??
|
|
774
|
-
|
|
775
|
-
);
|
|
790
|
+
fail(0xb57 /* childrenChangedAfterBatch events should have a changedField */);
|
|
791
|
+
const keys = getOrCreate(eventsByNode, node, () => new Set());
|
|
792
|
+
keys.add(resolvedField);
|
|
793
|
+
if (fieldMarks !== undefined) {
|
|
794
|
+
const nodeMarks = getOrCreate(marksByNode, node, () => new Map());
|
|
795
|
+
// First-wins is safe here because `fieldMarks` is called at most once per
|
|
796
|
+
// field per delta visit (the hook fires during the detach pass only).
|
|
797
|
+
// Within a single delta a field therefore produces at most one marks entry,
|
|
798
|
+
// so there is never a legitimate second entry to prefer over the first.
|
|
799
|
+
// If the same field is touched by two separate deltas before the buffer is
|
|
800
|
+
// flushed (e.g. because a schema change forced a second delta in the same
|
|
801
|
+
// batch), `KernelEventBuffer` detects the collision and removes the entry
|
|
802
|
+
// for that field entirely, so the consumer receives `undefined` rather than
|
|
803
|
+
// stale marks.
|
|
804
|
+
if (!nodeMarks.has(resolvedField)) {
|
|
805
|
+
nodeMarks.set(resolvedField, fieldMarks);
|
|
806
|
+
}
|
|
807
|
+
}
|
|
776
808
|
}
|
|
777
809
|
}
|
|
778
810
|
|
|
@@ -787,7 +819,9 @@ export class AnchorSet implements AnchorLocator {
|
|
|
787
819
|
const changedFields =
|
|
788
820
|
eventsByNode.get(node) ??
|
|
789
821
|
fail(0xaeb /* childrenChangedAfterBatch events should have changedFields */);
|
|
790
|
-
|
|
822
|
+
const fieldMarks: ReadonlyMap<FieldKey, readonly Delta.Mark[]> =
|
|
823
|
+
marksByNode.get(node) ?? new Map();
|
|
824
|
+
node.events.emit(event, { changedFields, fieldMarks });
|
|
791
825
|
} else {
|
|
792
826
|
node.events.emit(event);
|
|
793
827
|
}
|
|
@@ -800,17 +834,20 @@ export class AnchorSet implements AnchorLocator {
|
|
|
800
834
|
);
|
|
801
835
|
},
|
|
802
836
|
notifyChildrenChanged(): void {
|
|
837
|
+
const parentField = this.parentField;
|
|
803
838
|
this.maybeWithNode(
|
|
804
839
|
(p) => {
|
|
805
840
|
assert(
|
|
806
|
-
|
|
841
|
+
parentField !== undefined,
|
|
807
842
|
0xa24 /* Must be in a field to modify its contents */,
|
|
808
843
|
);
|
|
809
844
|
p.events.emit("childrenChanged", p);
|
|
845
|
+
const fieldMarks = this.storedFieldMarks.get(p)?.get(parentField);
|
|
810
846
|
this.bufferedEvents.push({
|
|
811
847
|
node: p,
|
|
812
848
|
event: "childrenChangedAfterBatch",
|
|
813
|
-
changedField:
|
|
849
|
+
changedField: parentField,
|
|
850
|
+
fieldMarks,
|
|
814
851
|
});
|
|
815
852
|
},
|
|
816
853
|
() => {},
|
|
@@ -934,6 +971,21 @@ export class AnchorSet implements AnchorLocator {
|
|
|
934
971
|
exitField(key: FieldKey): void {
|
|
935
972
|
this.parentField = undefined;
|
|
936
973
|
},
|
|
974
|
+
fieldMarks(marks: readonly Delta.Mark[]): void {
|
|
975
|
+
assert(
|
|
976
|
+
this.parentField !== undefined,
|
|
977
|
+
0xce4 /* fieldMarks called outside of a field */,
|
|
978
|
+
);
|
|
979
|
+
if (this.parent !== undefined) {
|
|
980
|
+
const interned = this.anchorSet.internalizePath(this.parent);
|
|
981
|
+
if (interned instanceof PathNode) {
|
|
982
|
+
getOrCreate(this.storedFieldMarks, interned, () => new Map()).set(
|
|
983
|
+
this.parentField,
|
|
984
|
+
marks,
|
|
985
|
+
);
|
|
986
|
+
}
|
|
987
|
+
}
|
|
988
|
+
},
|
|
937
989
|
};
|
|
938
990
|
this.#events.emit("treeChanging", this);
|
|
939
991
|
this.activeVisitor = visitor;
|
|
@@ -1241,4 +1293,9 @@ interface BufferedEvent {
|
|
|
1241
1293
|
* Some events, such as afterDestroy, do not involve a key, and thus leave this undefined.
|
|
1242
1294
|
*/
|
|
1243
1295
|
changedField?: FieldKey;
|
|
1296
|
+
/**
|
|
1297
|
+
* The sequential delta marks for the impacted field, if available.
|
|
1298
|
+
* Populated from {@link DeltaVisitor.fieldMarks} during the first (detach) pass.
|
|
1299
|
+
*/
|
|
1300
|
+
fieldMarks?: readonly Delta.Mark[];
|
|
1244
1301
|
}
|