@fluidframework/tree 2.91.0 → 2.93.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 +158 -0
- package/README.md +1 -1
- package/api-report/tree.alpha.api.md +117 -51
- package/api-report/tree.beta.api.md +41 -12
- package/api-report/tree.legacy.beta.api.md +41 -12
- package/dist/api.d.ts +11 -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 +63 -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 +5 -6
- package/dist/entrypoints/alpha.js.map +1 -1
- package/dist/entrypoints/beta.d.ts +1 -1
- package/dist/entrypoints/beta.d.ts.map +1 -1
- package/dist/entrypoints/beta.js +4 -2
- 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 +4 -2
- 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/chunkTree.d.ts +2 -2
- package/dist/feature-libraries/chunked-forest/chunkTree.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/chunkTree.js +2 -1
- package/dist/feature-libraries/chunked-forest/chunkTree.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/chunked-forest/uniformChunk.d.ts +13 -5
- package/dist/feature-libraries/chunked-forest/uniformChunk.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/uniformChunk.js +22 -18
- package/dist/feature-libraries/chunked-forest/uniformChunk.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 +3 -0
- package/dist/feature-libraries/indexing/anchorTreeIndex.d.ts.map +1 -1
- package/dist/feature-libraries/indexing/anchorTreeIndex.js +15 -8
- package/dist/feature-libraries/indexing/anchorTreeIndex.js.map +1 -1
- package/dist/feature-libraries/indexing/types.d.ts +4 -3
- package/dist/feature-libraries/indexing/types.d.ts.map +1 -1
- package/dist/feature-libraries/indexing/types.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/serializableDomainSchema.d.ts +5 -5
- package/dist/serializableDomainSchema.d.ts.map +1 -1
- package/dist/serializableDomainSchema.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 +17 -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/discrepancies.js +4 -1
- package/dist/simple-tree/api/discrepancies.js.map +1 -1
- package/dist/simple-tree/api/identifierIndex.d.ts +2 -2
- package/dist/simple-tree/api/identifierIndex.js +1 -1
- package/dist/simple-tree/api/identifierIndex.js.map +1 -1
- package/dist/simple-tree/api/index.d.ts +2 -1
- package/dist/simple-tree/api/index.d.ts.map +1 -1
- package/dist/simple-tree/api/index.js +3 -2
- 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 +33 -4
- package/dist/simple-tree/api/schemaFactoryAlpha.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaFactoryAlpha.js +17 -1
- package/dist/simple-tree/api/schemaFactoryAlpha.js.map +1 -1
- package/dist/simple-tree/api/simpleTreeIndex.d.ts +5 -5
- package/dist/simple-tree/api/simpleTreeIndex.js +1 -1
- 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 +10 -7
- 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 +126 -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 +4 -1
- 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 +108 -0
- package/dist/simple-tree/api/treeNodeApi.d.ts.map +1 -1
- package/dist/simple-tree/api/treeNodeApi.js +104 -3
- package/dist/simple-tree/api/treeNodeApi.js.map +1 -1
- package/dist/simple-tree/core/toStored.d.ts +7 -0
- package/dist/simple-tree/core/toStored.d.ts.map +1 -1
- package/dist/simple-tree/core/toStored.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 +17 -3
- package/dist/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -1
- package/dist/simple-tree/core/unhydratedFlexTree.js +117 -11
- package/dist/simple-tree/core/unhydratedFlexTree.js.map +1 -1
- package/dist/simple-tree/fieldSchema.d.ts +6 -1
- package/dist/simple-tree/fieldSchema.d.ts.map +1 -1
- package/dist/simple-tree/fieldSchema.js +3 -0
- package/dist/simple-tree/fieldSchema.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 +4 -3
- 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 +2 -2
- 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/simple-tree/node-kinds/map/index.d.ts +1 -1
- package/dist/simple-tree/node-kinds/map/index.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/map/index.js.map +1 -1
- package/dist/simple-tree/node-kinds/map/mapNode.d.ts +13 -0
- package/dist/simple-tree/node-kinds/map/mapNode.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/map/mapNode.js +6 -1
- package/dist/simple-tree/node-kinds/map/mapNode.js.map +1 -1
- package/dist/simple-tree/node-kinds/map/mapNodeTypes.d.ts +6 -6
- package/dist/simple-tree/node-kinds/map/mapNodeTypes.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/map/mapNodeTypes.js.map +1 -1
- package/dist/simple-tree/simpleSchema.d.ts +17 -0
- package/dist/simple-tree/simpleSchema.d.ts.map +1 -1
- package/dist/simple-tree/simpleSchema.js.map +1 -1
- package/dist/simple-tree/toStoredSchema.d.ts.map +1 -1
- package/dist/simple-tree/toStoredSchema.js +23 -1
- package/dist/simple-tree/toStoredSchema.js.map +1 -1
- package/dist/tableSchema.d.ts +4 -5
- package/dist/tableSchema.d.ts.map +1 -1
- package/dist/tableSchema.js +12 -23
- package/dist/tableSchema.js.map +1 -1
- package/dist/text/textDomain.d.ts.map +1 -1
- package/dist/text/textDomain.js +27 -0
- package/dist/text/textDomain.js.map +1 -1
- package/dist/text/textDomainFormatted.d.ts +321 -11
- 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/index.d.ts +1 -1
- package/dist/util/index.d.ts.map +1 -1
- package/dist/util/index.js +2 -3
- package/dist/util/index.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/dist/util/utils.d.ts +0 -1
- package/dist/util/utils.d.ts.map +1 -1
- package/dist/util/utils.js +1 -6
- package/dist/util/utils.js.map +1 -1
- package/eslint.config.mts +1 -1
- package/legacy.d.ts +2 -3
- package/lib/api.d.ts +11 -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 +63 -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.d.ts +1 -1
- package/lib/entrypoints/beta.d.ts.map +1 -1
- package/lib/entrypoints/beta.js +2 -2
- 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 +2 -2
- 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/chunkTree.d.ts +2 -2
- package/lib/feature-libraries/chunked-forest/chunkTree.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/chunkTree.js +2 -1
- package/lib/feature-libraries/chunked-forest/chunkTree.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/chunked-forest/uniformChunk.d.ts +13 -5
- package/lib/feature-libraries/chunked-forest/uniformChunk.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/uniformChunk.js +22 -18
- package/lib/feature-libraries/chunked-forest/uniformChunk.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 +3 -0
- package/lib/feature-libraries/indexing/anchorTreeIndex.d.ts.map +1 -1
- package/lib/feature-libraries/indexing/anchorTreeIndex.js +15 -8
- package/lib/feature-libraries/indexing/anchorTreeIndex.js.map +1 -1
- package/lib/feature-libraries/indexing/types.d.ts +4 -3
- package/lib/feature-libraries/indexing/types.d.ts.map +1 -1
- package/lib/feature-libraries/indexing/types.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/serializableDomainSchema.d.ts +5 -5
- package/lib/serializableDomainSchema.d.ts.map +1 -1
- package/lib/serializableDomainSchema.js +4 -1
- package/lib/serializableDomainSchema.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 +17 -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/discrepancies.js +4 -1
- package/lib/simple-tree/api/discrepancies.js.map +1 -1
- package/lib/simple-tree/api/identifierIndex.d.ts +2 -2
- package/lib/simple-tree/api/identifierIndex.js +1 -1
- package/lib/simple-tree/api/identifierIndex.js.map +1 -1
- package/lib/simple-tree/api/index.d.ts +2 -1
- package/lib/simple-tree/api/index.d.ts.map +1 -1
- package/lib/simple-tree/api/index.js +1 -1
- package/lib/simple-tree/api/index.js.map +1 -1
- package/lib/simple-tree/api/schemaFactory.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaFactory.js.map +1 -1
- package/lib/simple-tree/api/schemaFactoryAlpha.d.ts +33 -4
- package/lib/simple-tree/api/schemaFactoryAlpha.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaFactoryAlpha.js +19 -3
- package/lib/simple-tree/api/schemaFactoryAlpha.js.map +1 -1
- package/lib/simple-tree/api/simpleTreeIndex.d.ts +5 -5
- package/lib/simple-tree/api/simpleTreeIndex.js +1 -1
- 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 +11 -8
- 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 +126 -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 +4 -1
- 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 +108 -0
- package/lib/simple-tree/api/treeNodeApi.d.ts.map +1 -1
- package/lib/simple-tree/api/treeNodeApi.js +101 -2
- package/lib/simple-tree/api/treeNodeApi.js.map +1 -1
- package/lib/simple-tree/core/toStored.d.ts +7 -0
- package/lib/simple-tree/core/toStored.d.ts.map +1 -1
- package/lib/simple-tree/core/toStored.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 +17 -3
- package/lib/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -1
- package/lib/simple-tree/core/unhydratedFlexTree.js +118 -12
- package/lib/simple-tree/core/unhydratedFlexTree.js.map +1 -1
- package/lib/simple-tree/fieldSchema.d.ts +6 -1
- package/lib/simple-tree/fieldSchema.d.ts.map +1 -1
- package/lib/simple-tree/fieldSchema.js +3 -0
- package/lib/simple-tree/fieldSchema.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 +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 +2 -2
- 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/simple-tree/node-kinds/map/index.d.ts +1 -1
- package/lib/simple-tree/node-kinds/map/index.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/map/index.js.map +1 -1
- package/lib/simple-tree/node-kinds/map/mapNode.d.ts +13 -0
- package/lib/simple-tree/node-kinds/map/mapNode.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/map/mapNode.js +6 -1
- package/lib/simple-tree/node-kinds/map/mapNode.js.map +1 -1
- package/lib/simple-tree/node-kinds/map/mapNodeTypes.d.ts +6 -6
- package/lib/simple-tree/node-kinds/map/mapNodeTypes.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/map/mapNodeTypes.js.map +1 -1
- package/lib/simple-tree/simpleSchema.d.ts +17 -0
- package/lib/simple-tree/simpleSchema.d.ts.map +1 -1
- package/lib/simple-tree/simpleSchema.js.map +1 -1
- package/lib/simple-tree/toStoredSchema.d.ts.map +1 -1
- package/lib/simple-tree/toStoredSchema.js +24 -2
- package/lib/simple-tree/toStoredSchema.js.map +1 -1
- package/lib/tableSchema.d.ts +4 -5
- package/lib/tableSchema.d.ts.map +1 -1
- package/lib/tableSchema.js +12 -23
- package/lib/tableSchema.js.map +1 -1
- package/lib/text/textDomain.d.ts.map +1 -1
- package/lib/text/textDomain.js +29 -0
- package/lib/text/textDomain.js.map +1 -1
- package/lib/text/textDomainFormatted.d.ts +321 -11
- 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/tsdoc-metadata.json +1 -1
- package/lib/util/index.d.ts +1 -1
- package/lib/util/index.d.ts.map +1 -1
- package/lib/util/index.js +1 -1
- package/lib/util/index.js.map +1 -1
- package/lib/util/referenceCounting.d.ts.map +1 -1
- package/lib/util/referenceCounting.js +0 -1
- package/lib/util/referenceCounting.js.map +1 -1
- package/lib/util/utils.d.ts +0 -1
- package/lib/util/utils.d.ts.map +1 -1
- package/lib/util/utils.js +0 -1
- package/lib/util/utils.js.map +1 -1
- package/package.json +35 -40
- package/scripts/generate-entrypoint-sources.sh +4 -2
- package/src/api.ts +21 -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 +92 -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 +21 -10
- package/src/entrypoints/beta.ts +7 -1
- package/src/entrypoints/legacy.ts +7 -1
- package/src/entrypoints/public.ts +1 -1
- package/src/feature-libraries/changeAtomIdCodec.ts +8 -7
- package/src/feature-libraries/chunked-forest/chunkTree.ts +3 -2
- 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/chunked-forest/uniformChunk.ts +42 -20
- 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 +21 -10
- package/src/feature-libraries/indexing/types.ts +5 -3
- 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 +14 -3
- package/src/packageVersion.ts +1 -1
- package/src/serializableDomainSchema.ts +6 -0
- 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 +30 -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/discrepancies.ts +6 -1
- package/src/simple-tree/api/identifierIndex.ts +2 -2
- package/src/simple-tree/api/index.ts +14 -0
- package/src/simple-tree/api/schemaFactory.ts +0 -2
- package/src/simple-tree/api/schemaFactoryAlpha.ts +80 -4
- package/src/simple-tree/api/simpleTreeIndex.ts +6 -6
- package/src/simple-tree/api/storedSchema.ts +12 -20
- package/src/simple-tree/api/tree.ts +7 -20
- package/src/simple-tree/api/treeAlpha.ts +153 -0
- package/src/simple-tree/api/treeBeta.ts +1 -1
- package/src/simple-tree/api/treeChangeEvents.ts +4 -1
- package/src/simple-tree/api/treeNodeApi.ts +189 -3
- package/src/simple-tree/core/toStored.ts +8 -0
- package/src/simple-tree/core/treeNodeKernel.ts +53 -7
- package/src/simple-tree/core/unhydratedFlexTree.ts +137 -9
- package/src/simple-tree/fieldSchema.ts +10 -0
- package/src/simple-tree/index.ts +15 -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 +3 -0
- package/src/simple-tree/node-kinds/map/index.ts +1 -0
- package/src/simple-tree/node-kinds/map/mapNode.ts +20 -3
- package/src/simple-tree/node-kinds/map/mapNodeTypes.ts +6 -6
- package/src/simple-tree/simpleSchema.ts +20 -0
- package/src/simple-tree/toStoredSchema.ts +28 -1
- package/src/tableSchema.ts +16 -28
- package/src/text/textDomain.ts +68 -1
- package/src/text/textDomainFormatted.ts +113 -11
- package/src/treeFactory.ts +10 -5
- package/src/util/index.ts +0 -1
- package/src/util/referenceCounting.ts +0 -1
- package/src/util/utils.ts +0 -2
- package/.mocharc.customBenchmarks.cjs +0 -25
- 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
|
@@ -8,7 +8,7 @@ import { assert, oob, fail, unreachableCase } from "@fluidframework/core-utils/i
|
|
|
8
8
|
import { isFluidHandle } from "@fluidframework/runtime-utils/internal";
|
|
9
9
|
import { UsageError } from "@fluidframework/telemetry-utils/internal";
|
|
10
10
|
|
|
11
|
-
import { EmptyKey, rootFieldKey } from "../../core/index.js";
|
|
11
|
+
import { EmptyKey, rootFieldKey, type DeltaMark } from "../../core/index.js";
|
|
12
12
|
import { type TreeStatus, isTreeValue, FieldKinds } from "../../feature-libraries/index.js";
|
|
13
13
|
import { extractFromOpaque } from "../../util/index.js";
|
|
14
14
|
import {
|
|
@@ -39,6 +39,86 @@ import { isArrayNodeSchema, isObjectNodeSchema } from "../node-kinds/index.js";
|
|
|
39
39
|
|
|
40
40
|
import type { TreeChangeEvents } from "./treeChangeEvents.js";
|
|
41
41
|
|
|
42
|
+
/**
|
|
43
|
+
* A `"retain"` op in an {@link ArrayNodeDeltaOp} sequence.
|
|
44
|
+
* Represents elements that were neither inserted into nor removed from the array.
|
|
45
|
+
* @sealed @alpha
|
|
46
|
+
*/
|
|
47
|
+
export interface ArrayNodeRetainOp {
|
|
48
|
+
readonly type: "retain";
|
|
49
|
+
readonly count: number;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* A `"retain"` op in an {@link ArrayNodeTreeChangedDeltaOp} sequence, used in
|
|
54
|
+
* {@link NodeChangedDataTreeDelta} payloads delivered to
|
|
55
|
+
* {@link TreeChangeEventsAlpha.treeChanged} on array nodes.
|
|
56
|
+
*
|
|
57
|
+
* Extends {@link ArrayNodeRetainOp} with a {@link ArrayNodeTreeChangedRetainOp.subtreeChanged}
|
|
58
|
+
* flag that indicates whether any descendant of the retained element changed.
|
|
59
|
+
* @sealed @alpha
|
|
60
|
+
*/
|
|
61
|
+
export interface ArrayNodeTreeChangedRetainOp extends ArrayNodeRetainOp {
|
|
62
|
+
/**
|
|
63
|
+
* Whether any descendant of this retained element changed.
|
|
64
|
+
* `true` if the element's subtree changed; `false` if nothing changed within it.
|
|
65
|
+
* @remarks
|
|
66
|
+
* Subscribe to `nodeChanged` or `treeChanged` on the element node itself for details.
|
|
67
|
+
*/
|
|
68
|
+
readonly subtreeChanged: boolean;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* A single operation in an array-node delta delivered by {@link TreeChangeEventsAlpha.treeChanged}.
|
|
73
|
+
* Extends {@link ArrayNodeDeltaOp}: retain ops carry a {@link ArrayNodeTreeChangedRetainOp.subtreeChanged}
|
|
74
|
+
* flag indicating whether any descendant of the retained element changed.
|
|
75
|
+
* @alpha
|
|
76
|
+
*/
|
|
77
|
+
export type ArrayNodeTreeChangedDeltaOp =
|
|
78
|
+
| ArrayNodeTreeChangedRetainOp
|
|
79
|
+
| ArrayNodeInsertOp
|
|
80
|
+
| ArrayNodeRemoveOp;
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* An `"insert"` op in an {@link ArrayNodeDeltaOp} sequence.
|
|
84
|
+
* Represents elements added to the array.
|
|
85
|
+
* Read the new element values from the current tree at the positions described by this op.
|
|
86
|
+
* @sealed @alpha
|
|
87
|
+
*/
|
|
88
|
+
export interface ArrayNodeInsertOp {
|
|
89
|
+
readonly type: "insert";
|
|
90
|
+
readonly count: number;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* A `"remove"` op in an {@link ArrayNodeDeltaOp} sequence.
|
|
95
|
+
* Represents elements removed from the array.
|
|
96
|
+
* @sealed @alpha
|
|
97
|
+
*/
|
|
98
|
+
export interface ArrayNodeRemoveOp {
|
|
99
|
+
readonly type: "remove";
|
|
100
|
+
readonly count: number;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* A single operation in an array node change delta. Used to efficiently sync an external
|
|
105
|
+
* representation of an array (e.g. a text editor or virtual list) with tree changes without
|
|
106
|
+
* needing to snapshot the old state or diff the entire array. Each op describes a contiguous run
|
|
107
|
+
* of positions in the array before the change. For inserts, read the new element values from the
|
|
108
|
+
* current tree at those positions.
|
|
109
|
+
*
|
|
110
|
+
* @remarks
|
|
111
|
+
* There is no dedicated `"move"` op. Moves are represented as `"remove"` + `"insert"`.
|
|
112
|
+
* When an element is moved within the same array it appears
|
|
113
|
+
* as a `"remove"` at the source position followed by an `"insert"` at the destination position.
|
|
114
|
+
* When an element is moved across two different arrays, the source array's delta contains a
|
|
115
|
+
* `"remove"` and the destination array's delta contains an `"insert"` — they cannot be
|
|
116
|
+
* correlated without additional bookkeeping on the caller's side.
|
|
117
|
+
*
|
|
118
|
+
* @sealed @alpha
|
|
119
|
+
*/
|
|
120
|
+
export type ArrayNodeDeltaOp = ArrayNodeRetainOp | ArrayNodeInsertOp | ArrayNodeRemoveOp;
|
|
121
|
+
|
|
42
122
|
/**
|
|
43
123
|
* Provides various functions for analyzing {@link TreeNode}s.
|
|
44
124
|
*
|
|
@@ -105,6 +185,9 @@ export interface TreeNodeApi {
|
|
|
105
185
|
* @param listener - The callback to trigger for the event. The tree can be read during the callback, but it is invalid to modify the tree during this callback.
|
|
106
186
|
* @returns A callback function which will deregister the event.
|
|
107
187
|
* This callback should be called only once.
|
|
188
|
+
* @remarks
|
|
189
|
+
* The returned unsubscribe function should be called any time the need for the `listener` callback ends before the node is {@link TreeStatus.Deleted | deleted} (Not just {@link TreeStatus.Removed | removed}).
|
|
190
|
+
* Doing so removes the overhead of tracking and triggering the event, and also avoids leaking any memory retained by the callback.
|
|
108
191
|
*/
|
|
109
192
|
on<K extends keyof TreeChangeEvents>(
|
|
110
193
|
node: TreeNode,
|
|
@@ -192,8 +275,29 @@ export const treeNodeApi: TreeNodeApi = {
|
|
|
192
275
|
listener({ changedProperties });
|
|
193
276
|
});
|
|
194
277
|
} else if (isArrayNodeSchema(nodeSchema)) {
|
|
195
|
-
return kernel.events.on("childrenChangedAfterBatch", () => {
|
|
196
|
-
|
|
278
|
+
return kernel.events.on("childrenChangedAfterBatch", ({ fieldMarks }) => {
|
|
279
|
+
const marks = fieldMarks.get(EmptyKey);
|
|
280
|
+
// nodeChanged fires only for shallow changes (insert, remove, move).
|
|
281
|
+
// Deep changes (e.g. a property of an element changed) are
|
|
282
|
+
// surfaced via TreeChangeEventsAlpha.treeChanged with a delta payload instead.
|
|
283
|
+
// When marks are undefined (marks could not be composed across multiple
|
|
284
|
+
// internal passes), we conservatively fire nodeChanged rather than silently
|
|
285
|
+
// dropping the event, even though the underlying change may have been
|
|
286
|
+
// purely deep. This is a known limitation of the current eventing stack.
|
|
287
|
+
const hasShallowChange =
|
|
288
|
+
marks === undefined ||
|
|
289
|
+
marks.some((m) => m.attach !== undefined || m.detach !== undefined);
|
|
290
|
+
if (!hasShallowChange) {
|
|
291
|
+
return;
|
|
292
|
+
}
|
|
293
|
+
// `marks` is undefined when the field was modified across multiple batches
|
|
294
|
+
// within a single flush (e.g. due to an interleaved schema change) and the
|
|
295
|
+
// marks could not be composed. Emit `undefined` so callers know the delta is
|
|
296
|
+
// unavailable rather than receiving stale marks from only the first batch.
|
|
297
|
+
// TODO: Once the eventing stack is rewritten to walk the composed delta at
|
|
298
|
+
// flush time, `marks` will always be defined. Remove the `undefined` fallback.
|
|
299
|
+
const delta = marks === undefined ? undefined : deltaMarksToArrayOps(marks);
|
|
300
|
+
listener({ delta });
|
|
197
301
|
});
|
|
198
302
|
} else {
|
|
199
303
|
return kernel.events.on("childrenChangedAfterBatch", ({ changedFields }) => {
|
|
@@ -202,6 +306,18 @@ export const treeNodeApi: TreeNodeApi = {
|
|
|
202
306
|
}
|
|
203
307
|
}
|
|
204
308
|
case "treeChanged": {
|
|
309
|
+
if (isArrayNodeSchema(kernel.schema)) {
|
|
310
|
+
// For array nodes, treeChanged fires via childrenChangedAfterBatch so that a
|
|
311
|
+
// delta payload can be provided. This covers both shallow changes
|
|
312
|
+
// (insert/remove/move) and deep element changes. Stable (non-alpha) listeners
|
|
313
|
+
// typed as () => void will silently ignore the extra argument at runtime.
|
|
314
|
+
return kernel.events.on("childrenChangedAfterBatch", ({ fieldMarks }) => {
|
|
315
|
+
const marks = fieldMarks.get(EmptyKey);
|
|
316
|
+
const delta =
|
|
317
|
+
marks === undefined ? undefined : deltaMarksToArrayOpsForTreeChanged(marks);
|
|
318
|
+
(listener as (data: { readonly delta: typeof delta }) => void)({ delta });
|
|
319
|
+
});
|
|
320
|
+
}
|
|
205
321
|
return kernel.events.on("subtreeChangedAfterBatch", () => listener({}));
|
|
206
322
|
}
|
|
207
323
|
default: {
|
|
@@ -234,6 +350,76 @@ export const treeNodeApi: TreeNodeApi = {
|
|
|
234
350
|
},
|
|
235
351
|
};
|
|
236
352
|
|
|
353
|
+
/**
|
|
354
|
+
* Converts an array of internal {@link DeltaMark}s for a sequence field into sequential
|
|
355
|
+
* array delta ops suitable for inclusion in {@link NodeChangedDataDelta.delta}.
|
|
356
|
+
*
|
|
357
|
+
* Each mark in the delta describes a contiguous run of positions in the original array:
|
|
358
|
+
* - A mark with only `count` (no attach/detach) → `"retain"` with no subtree information
|
|
359
|
+
* - A mark with only `attach` → `"insert"` (new elements added)
|
|
360
|
+
* - A mark with only `detach` → `"remove"` (elements removed)
|
|
361
|
+
* - A mark with both `attach` and `detach` → `"remove"` + `"insert"`
|
|
362
|
+
*
|
|
363
|
+
* @param marks - The low-level delta marks for the array's sequence field.
|
|
364
|
+
*
|
|
365
|
+
* @privateRemarks
|
|
366
|
+
* The case where both `attach` and `detach` are set is unreachable today: the sequence-field
|
|
367
|
+
* encoder never emits such marks for array (EmptyKey) fields. It is handled defensively.
|
|
368
|
+
*/
|
|
369
|
+
export function deltaMarksToArrayOps(marks: readonly DeltaMark[]): ArrayNodeDeltaOp[] {
|
|
370
|
+
const ops: ArrayNodeDeltaOp[] = [];
|
|
371
|
+
for (const mark of marks) {
|
|
372
|
+
if (mark.detach !== undefined) {
|
|
373
|
+
ops.push({ type: "remove", count: mark.count });
|
|
374
|
+
}
|
|
375
|
+
if (mark.attach !== undefined) {
|
|
376
|
+
ops.push({ type: "insert", count: mark.count });
|
|
377
|
+
} else if (mark.detach === undefined) {
|
|
378
|
+
// Retain: elements were not added or removed.
|
|
379
|
+
ops.push({ type: "retain", count: mark.count });
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
return ops;
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
/**
|
|
386
|
+
* Converts an array of internal {@link DeltaMark}s for a sequence field into sequential
|
|
387
|
+
* {@link ArrayNodeTreeChangedDeltaOp}s suitable for inclusion in
|
|
388
|
+
* {@link NodeChangedDataTreeDelta.delta} (delivered to {@link TreeChangeEventsAlpha.treeChanged}).
|
|
389
|
+
*
|
|
390
|
+
* Same conversion rules as {@link deltaMarksToArrayOps}, but retain ops additionally carry a
|
|
391
|
+
* {@link ArrayNodeTreeChangedRetainOp.subtreeChanged} flag derived from whether the mark has
|
|
392
|
+
* a `fields` property (indicating a descendant changed).
|
|
393
|
+
*
|
|
394
|
+
* @param marks - The low-level delta marks for the array's sequence field.
|
|
395
|
+
*
|
|
396
|
+
* @privateRemarks
|
|
397
|
+
* The case where both `attach` and `detach` are set is unreachable today: the sequence-field
|
|
398
|
+
* encoder never emits such marks for array (EmptyKey) fields. It is handled defensively.
|
|
399
|
+
*/
|
|
400
|
+
export function deltaMarksToArrayOpsForTreeChanged(
|
|
401
|
+
marks: readonly DeltaMark[],
|
|
402
|
+
): ArrayNodeTreeChangedDeltaOp[] {
|
|
403
|
+
const ops: ArrayNodeTreeChangedDeltaOp[] = [];
|
|
404
|
+
for (const mark of marks) {
|
|
405
|
+
if (mark.detach !== undefined) {
|
|
406
|
+
ops.push({ type: "remove", count: mark.count });
|
|
407
|
+
}
|
|
408
|
+
if (mark.attach !== undefined) {
|
|
409
|
+
ops.push({ type: "insert", count: mark.count });
|
|
410
|
+
} else if (mark.detach === undefined) {
|
|
411
|
+
// Retain: elements were not added or removed (but may have deep changes).
|
|
412
|
+
// When `fields` is set, `count` is guaranteed to be 1 (DeltaMark invariant).
|
|
413
|
+
ops.push({
|
|
414
|
+
type: "retain",
|
|
415
|
+
count: mark.count,
|
|
416
|
+
subtreeChanged: mark.fields !== undefined,
|
|
417
|
+
});
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
return ops;
|
|
421
|
+
}
|
|
422
|
+
|
|
237
423
|
/**
|
|
238
424
|
* Returns a schema for a value if the value is a {@link TreeNode} or a {@link TreeLeafValue}.
|
|
239
425
|
* Returns undefined for other values.
|
|
@@ -15,6 +15,14 @@ export interface StoredFromViewSchemaGenerationOptions {
|
|
|
15
15
|
* Due to caching, the behavior of this function must be pure.
|
|
16
16
|
*/
|
|
17
17
|
includeStaged(upgrade: SchemaUpgrade): boolean;
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Determines whether to treat a {@link SchemaFactoryAlpha.stagedOptional | staged optional} field as optional
|
|
21
|
+
* (rather than required) in the resulting stored schema.
|
|
22
|
+
* @remarks
|
|
23
|
+
* Due to caching, the behavior of this function must be pure.
|
|
24
|
+
*/
|
|
25
|
+
includeStagedOptional(upgrade: SchemaUpgrade): boolean;
|
|
18
26
|
}
|
|
19
27
|
|
|
20
28
|
/**
|
|
@@ -17,6 +17,7 @@ import {
|
|
|
17
17
|
anchorSlot,
|
|
18
18
|
type AnchorEvents,
|
|
19
19
|
type AnchorNode,
|
|
20
|
+
type DeltaMark,
|
|
20
21
|
type FieldKey,
|
|
21
22
|
type TreeValue,
|
|
22
23
|
} from "../../core/index.js";
|
|
@@ -362,6 +363,20 @@ class KernelEventBuffer implements Listenable<KernelEvents> {
|
|
|
362
363
|
*/
|
|
363
364
|
readonly #childrenChangedBuffer: Set<FieldKey> = new Set();
|
|
364
365
|
|
|
366
|
+
/**
|
|
367
|
+
* Buffer of field marks accumulated since events were paused.
|
|
368
|
+
* Emitted alongside the buffered changed-fields set when flushed.
|
|
369
|
+
*/
|
|
370
|
+
readonly #fieldMarksBuffer: Map<FieldKey, readonly DeltaMark[]> = new Map();
|
|
371
|
+
|
|
372
|
+
/**
|
|
373
|
+
* Fields whose marks have been permanently invalidated within the current buffer window due to
|
|
374
|
+
* two or more separate delta batches touching the same field.
|
|
375
|
+
* Once a key is in this set it must never be re-added to the marks buffer, even if
|
|
376
|
+
* a third (or later) batch arrives for that field.
|
|
377
|
+
*/
|
|
378
|
+
readonly #invalidatedFieldMarkKeys: Set<FieldKey> = new Set();
|
|
379
|
+
|
|
365
380
|
/**
|
|
366
381
|
* Whether or not the subtree has changed since events were paused.
|
|
367
382
|
* When events are flushed, a single {@link AnchorEvents.subTreeChanged} event will be emitted if and only
|
|
@@ -399,8 +414,10 @@ class KernelEventBuffer implements Listenable<KernelEvents> {
|
|
|
399
414
|
this.#eventSource = newSource;
|
|
400
415
|
|
|
401
416
|
if (this.#events.hasListeners("childrenChangedAfterBatch")) {
|
|
402
|
-
const off = this.#eventSource.on(
|
|
403
|
-
|
|
417
|
+
const off = this.#eventSource.on(
|
|
418
|
+
"childrenChangedAfterBatch",
|
|
419
|
+
({ changedFields, fieldMarks }) =>
|
|
420
|
+
this.#emit("childrenChangedAfterBatch", { changedFields, fieldMarks }),
|
|
404
421
|
);
|
|
405
422
|
this.#disposeSourceListeners.set("childrenChangedAfterBatch", off);
|
|
406
423
|
}
|
|
@@ -421,7 +438,10 @@ class KernelEventBuffer implements Listenable<KernelEvents> {
|
|
|
421
438
|
0xc4f /* Should not have a dispose function without listeners */,
|
|
422
439
|
);
|
|
423
440
|
|
|
424
|
-
const off =
|
|
441
|
+
const off: Off =
|
|
442
|
+
eventName === "childrenChangedAfterBatch"
|
|
443
|
+
? this.#eventSource.on(eventName, (args) => this.#emit(eventName, args))
|
|
444
|
+
: this.#eventSource.on(eventName, () => this.#emit(eventName));
|
|
425
445
|
this.#disposeSourceListeners.set(eventName, off);
|
|
426
446
|
}
|
|
427
447
|
|
|
@@ -444,13 +464,14 @@ class KernelEventBuffer implements Listenable<KernelEvents> {
|
|
|
444
464
|
eventName: keyof KernelEvents,
|
|
445
465
|
arg?: {
|
|
446
466
|
changedFields: ReadonlySet<FieldKey>;
|
|
467
|
+
fieldMarks: ReadonlyMap<FieldKey, readonly DeltaMark[]>;
|
|
447
468
|
},
|
|
448
469
|
): void {
|
|
449
470
|
this.#assertNotDisposed();
|
|
450
471
|
switch (eventName) {
|
|
451
472
|
case "childrenChangedAfterBatch": {
|
|
452
|
-
assert(arg !== undefined,
|
|
453
|
-
return this.#handleChildrenChangedAfterBatch(arg.changedFields);
|
|
473
|
+
assert(arg !== undefined, 0xcea /* childrenChangedAfterBatch requires arg */);
|
|
474
|
+
return this.#handleChildrenChangedAfterBatch(arg.changedFields, arg.fieldMarks);
|
|
454
475
|
}
|
|
455
476
|
case "subtreeChangedAfterBatch": {
|
|
456
477
|
return this.#handleSubtreeChangedAfterBatch();
|
|
@@ -461,13 +482,33 @@ class KernelEventBuffer implements Listenable<KernelEvents> {
|
|
|
461
482
|
}
|
|
462
483
|
}
|
|
463
484
|
|
|
464
|
-
#handleChildrenChangedAfterBatch(
|
|
485
|
+
#handleChildrenChangedAfterBatch(
|
|
486
|
+
changedFields: ReadonlySet<FieldKey>,
|
|
487
|
+
fieldMarks: ReadonlyMap<FieldKey, readonly DeltaMark[]>,
|
|
488
|
+
): void {
|
|
465
489
|
if (bufferTreeEvents) {
|
|
466
490
|
for (const fieldKey of changedFields) {
|
|
467
491
|
this.#childrenChangedBuffer.add(fieldKey);
|
|
468
492
|
}
|
|
493
|
+
for (const [key, marks] of fieldMarks) {
|
|
494
|
+
if (this.#invalidatedFieldMarkKeys.has(key)) {
|
|
495
|
+
// Already permanently invalidated by an earlier collision; ignore this batch too.
|
|
496
|
+
// TODO: Once the eventing stack is rewritten to walk the composed delta at flush
|
|
497
|
+
// time, this collision path will be unreachable and can be removed entirely.
|
|
498
|
+
continue;
|
|
499
|
+
}
|
|
500
|
+
if (this.#fieldMarksBuffer.has(key)) {
|
|
501
|
+
// A second batch of marks arrived for the same field before the buffer was flushed.
|
|
502
|
+
// We have no delta composition logic, so permanently invalidate this field so that
|
|
503
|
+
// any further batches are also discarded rather than incorrectly surfaced.
|
|
504
|
+
this.#fieldMarksBuffer.delete(key);
|
|
505
|
+
this.#invalidatedFieldMarkKeys.add(key);
|
|
506
|
+
} else {
|
|
507
|
+
this.#fieldMarksBuffer.set(key, marks);
|
|
508
|
+
}
|
|
509
|
+
}
|
|
469
510
|
} else {
|
|
470
|
-
this.#events.emit("childrenChangedAfterBatch", { changedFields });
|
|
511
|
+
this.#events.emit("childrenChangedAfterBatch", { changedFields, fieldMarks });
|
|
471
512
|
}
|
|
472
513
|
}
|
|
473
514
|
|
|
@@ -488,8 +529,11 @@ class KernelEventBuffer implements Listenable<KernelEvents> {
|
|
|
488
529
|
if (this.#childrenChangedBuffer.size > 0) {
|
|
489
530
|
this.#events.emit("childrenChangedAfterBatch", {
|
|
490
531
|
changedFields: this.#childrenChangedBuffer,
|
|
532
|
+
fieldMarks: this.#fieldMarksBuffer,
|
|
491
533
|
});
|
|
492
534
|
this.#childrenChangedBuffer.clear();
|
|
535
|
+
this.#fieldMarksBuffer.clear();
|
|
536
|
+
this.#invalidatedFieldMarkKeys.clear();
|
|
493
537
|
}
|
|
494
538
|
|
|
495
539
|
if (this.#subTreeChangedBuffer) {
|
|
@@ -519,6 +563,8 @@ class KernelEventBuffer implements Listenable<KernelEvents> {
|
|
|
519
563
|
this.#disposeSourceListeners.clear();
|
|
520
564
|
|
|
521
565
|
this.#childrenChangedBuffer.clear();
|
|
566
|
+
this.#fieldMarksBuffer.clear();
|
|
567
|
+
this.#invalidatedFieldMarkKeys.clear();
|
|
522
568
|
this.#subTreeChangedBuffer = false;
|
|
523
569
|
|
|
524
570
|
this.#disposed = true;
|
|
@@ -11,6 +11,9 @@ import { UsageError } from "@fluidframework/telemetry-utils/internal";
|
|
|
11
11
|
import {
|
|
12
12
|
type AnchorEvents,
|
|
13
13
|
dummyRoot,
|
|
14
|
+
EmptyKey,
|
|
15
|
+
type DeltaDetachedNodeId,
|
|
16
|
+
type DeltaMark,
|
|
14
17
|
type FieldKey,
|
|
15
18
|
type FieldKindIdentifier,
|
|
16
19
|
type ITreeCursorSynchronous,
|
|
@@ -84,6 +87,13 @@ type UnhydratedFlexTreeNodeEvents = Pick<
|
|
|
84
87
|
/** A node's parent field and its index in that field */
|
|
85
88
|
type LocationInField = FlexTreeNode["parentField"];
|
|
86
89
|
|
|
90
|
+
/**
|
|
91
|
+
* Placeholder `DeltaDetachedNodeId` used as the attach/detach id in synthetic delta marks produced
|
|
92
|
+
* by the unhydrated sequence-field editor. Only the *presence* of the id is checked by
|
|
93
|
+
* {@link deltaMarksToArrayOps}, so the value itself is arbitrary.
|
|
94
|
+
*/
|
|
95
|
+
const syntheticDetachedNodeId: DeltaDetachedNodeId = { minor: 0 };
|
|
96
|
+
|
|
87
97
|
/**
|
|
88
98
|
* The {@link Unhydrated} implementation of {@link FlexTreeNode}.
|
|
89
99
|
*/
|
|
@@ -270,20 +280,88 @@ export class UnhydratedFlexTreeNode
|
|
|
270
280
|
return this.data.value;
|
|
271
281
|
}
|
|
272
282
|
|
|
273
|
-
|
|
274
|
-
|
|
283
|
+
/**
|
|
284
|
+
* Emit a `childrenChangedAfterBatch` event for this node, then propagate deep-change
|
|
285
|
+
* signals to ancestor array nodes and subtree-changed signals up the entire ancestor chain.
|
|
286
|
+
* @param key - The field key that changed.
|
|
287
|
+
* @param marks - Optional delta marks describing the change to the field. When provided, they
|
|
288
|
+
* are included in the `fieldMarks` payload so that array-node listeners can build a delta.
|
|
289
|
+
* When omitted (e.g. for non-sequence fields), `fieldMarks` is empty.
|
|
290
|
+
*/
|
|
291
|
+
public emitChangedEvent(key: FieldKey, marks?: readonly DeltaMark[]): void {
|
|
292
|
+
this._events.emit("childrenChangedAfterBatch", {
|
|
293
|
+
changedFields: new Set([key]),
|
|
294
|
+
fieldMarks: marks === undefined ? new Map() : new Map([[key, marks]]),
|
|
295
|
+
});
|
|
275
296
|
|
|
276
|
-
//
|
|
297
|
+
// Emit subtree-changed events for this node and its non-array ancestors first,
|
|
298
|
+
// so that node.treeChanged fires before any ancestor array.treeChanged.
|
|
299
|
+
// Array ancestors and the nodes above them are handled by
|
|
300
|
+
// #emitDeepChangesToAncestorArrays, which propagates subtree events above
|
|
301
|
+
// each array boundary in the correct order.
|
|
277
302
|
this.#emitSubtreeChangedEvents();
|
|
303
|
+
|
|
304
|
+
// Mirrors the onlyDeepChanges block in anchorSet.ts for unhydrated nodes.
|
|
305
|
+
this.#emitDeepChangesToAncestorArrays();
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
/**
|
|
309
|
+
* Emit `childrenChangedAfterBatch` on each ancestor array node with synthetic
|
|
310
|
+
* marks indicating a deep change at this node's position within the array.
|
|
311
|
+
* After emitting on each array ancestor, propagates subtree-changed events
|
|
312
|
+
* upward from that array so that ancestor nodes above the array receive their
|
|
313
|
+
* `treeChanged` events after the array's own event.
|
|
314
|
+
*/
|
|
315
|
+
#emitDeepChangesToAncestorArrays(): void {
|
|
316
|
+
const location = this.parentField;
|
|
317
|
+
const parentField = location.parent;
|
|
318
|
+
const parentNode = parentField.parent;
|
|
319
|
+
|
|
320
|
+
if (parentNode === undefined || !(parentNode instanceof UnhydratedFlexTreeNode)) {
|
|
321
|
+
return;
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
// Only emit on array ancestors (EmptyKey); object/map ancestors don't carry delta payloads.
|
|
325
|
+
if (parentField.key === EmptyKey) {
|
|
326
|
+
const index = location.index;
|
|
327
|
+
const syntheticMarks: DeltaMark[] = [];
|
|
328
|
+
if (index > 0) {
|
|
329
|
+
syntheticMarks.push({ count: index });
|
|
330
|
+
}
|
|
331
|
+
// `fields` presence (not content) signals a deep change to deltaMarksToArrayOps.
|
|
332
|
+
syntheticMarks.push({ count: 1, fields: new Map([[EmptyKey, { marks: [] }]]) });
|
|
333
|
+
|
|
334
|
+
parentNode._events.emit("childrenChangedAfterBatch", {
|
|
335
|
+
changedFields: new Set([EmptyKey]),
|
|
336
|
+
fieldMarks: new Map([[EmptyKey, syntheticMarks]]),
|
|
337
|
+
});
|
|
338
|
+
|
|
339
|
+
// Propagate subtree-changed events from the array upward so that
|
|
340
|
+
// ancestors above this array receive treeChanged after the array itself.
|
|
341
|
+
parentNode.#emitSubtreeChangedEvents();
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
parentNode.#emitDeepChangesToAncestorArrays();
|
|
278
345
|
}
|
|
279
346
|
|
|
280
347
|
/**
|
|
281
|
-
* Emit
|
|
348
|
+
* Emit `subtreeChangedAfterBatch` on this node and propagate upward to
|
|
349
|
+
* ancestors, stopping before the first ancestor array node.
|
|
350
|
+
* Propagation stops at an array boundary because
|
|
351
|
+
* {@link UnhydratedFlexTreeNode.#emitDeepChangesToAncestorArrays} is
|
|
352
|
+
* responsible for emitting on array ancestors and the nodes above them
|
|
353
|
+
* in the correct order.
|
|
282
354
|
*/
|
|
283
355
|
#emitSubtreeChangedEvents(): void {
|
|
284
356
|
this._events.emit("subtreeChangedAfterBatch");
|
|
285
357
|
|
|
286
|
-
const
|
|
358
|
+
const parentField = this.parentField.parent;
|
|
359
|
+
if (parentField.key === EmptyKey) {
|
|
360
|
+
// This node is an array element; stop here so that array ancestor
|
|
361
|
+
// events fire in the correct order relative to this node's treeChanged.
|
|
362
|
+
return;
|
|
363
|
+
}
|
|
364
|
+
const parent = parentField.parent;
|
|
287
365
|
assert(
|
|
288
366
|
parent === undefined || parent instanceof UnhydratedFlexTreeNode,
|
|
289
367
|
0xb76 /* Unhydrated node's parent should be an unhydrated node */,
|
|
@@ -441,6 +519,12 @@ export class UnhydratedFlexTreeField
|
|
|
441
519
|
*/
|
|
442
520
|
protected edit(
|
|
443
521
|
edit: (mapTrees: UnhydratedFlexTreeNode[]) => void | UnhydratedFlexTreeNode[],
|
|
522
|
+
/**
|
|
523
|
+
* Delta marks describing this edit, forwarded to {@link UnhydratedFlexTreeNode.emitChangedEvent}.
|
|
524
|
+
* Sequence-field subclasses pass pre-computed marks so that array-node listeners receive a
|
|
525
|
+
* meaningful delta; other field kinds omit this parameter.
|
|
526
|
+
*/
|
|
527
|
+
marks?: readonly DeltaMark[],
|
|
444
528
|
): void {
|
|
445
529
|
// Clear parents for all old map trees.
|
|
446
530
|
for (const tree of this.children) {
|
|
@@ -454,7 +538,7 @@ export class UnhydratedFlexTreeField
|
|
|
454
538
|
tree.adoptBy(this, index);
|
|
455
539
|
}
|
|
456
540
|
|
|
457
|
-
this.parent?.emitChangedEvent(this.key);
|
|
541
|
+
this.parent?.emitChangedEvent(this.key, marks);
|
|
458
542
|
}
|
|
459
543
|
|
|
460
544
|
public getFieldPath(): NormalizedFieldUpPath {
|
|
@@ -537,6 +621,10 @@ export class UnhydratedSequenceField
|
|
|
537
621
|
assert(c instanceof UnhydratedFlexTreeNode, 0xbb8 /* Expected unhydrated node */);
|
|
538
622
|
}
|
|
539
623
|
const newContentChecked = newContent as readonly UnhydratedFlexTreeNode[];
|
|
624
|
+
const insertCount = newContentChecked.length;
|
|
625
|
+
const marks: DeltaMark[] = [];
|
|
626
|
+
if (index > 0) marks.push({ count: index });
|
|
627
|
+
marks.push({ count: insertCount, attach: syntheticDetachedNodeId });
|
|
540
628
|
this.edit((mapTrees) => {
|
|
541
629
|
if (newContent.length < 1000) {
|
|
542
630
|
// For "smallish arrays" (`1000` is not empirically derived), the `splice` function is appropriate...
|
|
@@ -545,23 +633,27 @@ export class UnhydratedSequenceField
|
|
|
545
633
|
// ...but we avoid using `splice` + spread for very large input arrays since there is a limit on how many elements can be spread (too many will overflow the stack).
|
|
546
634
|
return [...mapTrees.slice(0, index), ...newContentChecked, ...mapTrees.slice(index)];
|
|
547
635
|
}
|
|
548
|
-
});
|
|
636
|
+
}, marks);
|
|
549
637
|
},
|
|
550
638
|
remove: (index, count): UnhydratedFlexTreeNode[] => {
|
|
551
639
|
for (let i = index; i < index + count; i++) {
|
|
552
640
|
const c = this.children[i];
|
|
553
641
|
assert(c !== undefined, 0xa0b /* Unexpected sparse array */);
|
|
554
642
|
}
|
|
643
|
+
const marks: DeltaMark[] = [];
|
|
644
|
+
if (index > 0) marks.push({ count: index });
|
|
645
|
+
marks.push({ count, detach: syntheticDetachedNodeId });
|
|
555
646
|
let removed: UnhydratedFlexTreeNode[] | undefined;
|
|
556
647
|
this.edit((mapTrees) => {
|
|
557
648
|
removed = mapTrees.splice(index, count);
|
|
558
|
-
});
|
|
649
|
+
}, marks);
|
|
559
650
|
return removed ?? fail(0xb4a /* Expected removed to be set by edit */);
|
|
560
651
|
},
|
|
561
652
|
move: (sourceIndex, count, destIndex, source?): void => {
|
|
562
653
|
const sourceField = source ?? this;
|
|
563
654
|
if (sourceField === this) {
|
|
564
655
|
// Within-field move: do both operations in a single edit to emit only one event
|
|
656
|
+
const marks = buildUnhydratedMoveMarks(sourceIndex, count, destIndex);
|
|
565
657
|
this.edit((mapTrees) => {
|
|
566
658
|
const removed = mapTrees.splice(sourceIndex, count);
|
|
567
659
|
// Adjust destination index if it comes after the source
|
|
@@ -577,7 +669,7 @@ export class UnhydratedSequenceField
|
|
|
577
669
|
...mapTrees.slice(adjustedDest),
|
|
578
670
|
];
|
|
579
671
|
}
|
|
580
|
-
});
|
|
672
|
+
}, marks);
|
|
581
673
|
} else {
|
|
582
674
|
// Cross-field move: remove from source, insert into destination
|
|
583
675
|
// Each field emits one event (correct behavior for different fields)
|
|
@@ -601,6 +693,42 @@ export class UnhydratedSequenceField
|
|
|
601
693
|
|
|
602
694
|
// #endregion Fields
|
|
603
695
|
|
|
696
|
+
/**
|
|
697
|
+
* Builds {@link DeltaMark}s describing a within-field move for use in
|
|
698
|
+
* {@link UnhydratedFlexTreeNode.emitChangedEvent}.
|
|
699
|
+
*
|
|
700
|
+
* @remarks
|
|
701
|
+
* Forward move (`sourceIndex < destIndex`):
|
|
702
|
+
* `[retain(src), detach(n), retain(mid), attach(n)]`
|
|
703
|
+
*
|
|
704
|
+
* Backward move (`destIndex < sourceIndex`):
|
|
705
|
+
* `[retain(dst), attach(n), retain(mid), detach(n)]`
|
|
706
|
+
*
|
|
707
|
+
* A no-op move (`sourceIndex === destIndex`) returns an empty array; the event
|
|
708
|
+
* should not fire in that case, but the empty marks are harmless if it does.
|
|
709
|
+
*/
|
|
710
|
+
function buildUnhydratedMoveMarks(
|
|
711
|
+
sourceIndex: number,
|
|
712
|
+
count: number,
|
|
713
|
+
destIndex: number,
|
|
714
|
+
): readonly DeltaMark[] {
|
|
715
|
+
const marks: DeltaMark[] = [];
|
|
716
|
+
if (sourceIndex < destIndex) {
|
|
717
|
+
if (sourceIndex > 0) marks.push({ count: sourceIndex });
|
|
718
|
+
marks.push({ count, detach: syntheticDetachedNodeId });
|
|
719
|
+
const between = destIndex - sourceIndex - count;
|
|
720
|
+
if (between > 0) marks.push({ count: between });
|
|
721
|
+
marks.push({ count, attach: syntheticDetachedNodeId });
|
|
722
|
+
} else if (destIndex < sourceIndex) {
|
|
723
|
+
if (destIndex > 0) marks.push({ count: destIndex });
|
|
724
|
+
marks.push({ count, attach: syntheticDetachedNodeId });
|
|
725
|
+
const between = sourceIndex - destIndex;
|
|
726
|
+
if (between > 0) marks.push({ count: between });
|
|
727
|
+
marks.push({ count, detach: syntheticDetachedNodeId });
|
|
728
|
+
}
|
|
729
|
+
return marks;
|
|
730
|
+
}
|
|
731
|
+
|
|
604
732
|
/** Creates a field with the given attributes */
|
|
605
733
|
export function createField(
|
|
606
734
|
...args: ConstructorParameters<typeof UnhydratedFlexTreeField>
|
|
@@ -28,6 +28,7 @@ import type {
|
|
|
28
28
|
TreeLeafValue,
|
|
29
29
|
InsertableTreeNodeFromImplicitAllowedTypes,
|
|
30
30
|
AllowedTypesFull,
|
|
31
|
+
SchemaUpgrade,
|
|
31
32
|
} from "./core/index.js";
|
|
32
33
|
import { AnnotatedAllowedTypesInternal, normalizeAllowedTypes } from "./core/index.js";
|
|
33
34
|
import type {
|
|
@@ -182,6 +183,11 @@ export interface FieldPropsAlpha<TCustomMetadata = unknown>
|
|
|
182
183
|
* Sets {@link SimpleFieldSchema.persistedMetadata}.
|
|
183
184
|
*/
|
|
184
185
|
readonly persistedMetadata?: JsonCompatibleReadOnlyObject | undefined;
|
|
186
|
+
|
|
187
|
+
/**
|
|
188
|
+
* If defined, indicates that this field is a {@link SchemaStaticsAlpha.stagedOptional | staged optional} field.
|
|
189
|
+
*/
|
|
190
|
+
readonly stagedOptionalUpgrade?: SchemaUpgrade;
|
|
185
191
|
}
|
|
186
192
|
|
|
187
193
|
/**
|
|
@@ -412,6 +418,10 @@ export class FieldSchemaAlpha<
|
|
|
412
418
|
return this.propsAlpha?.persistedMetadata;
|
|
413
419
|
}
|
|
414
420
|
|
|
421
|
+
public get isStagedOptional(): false | SchemaUpgrade {
|
|
422
|
+
return this.propsAlpha?.stagedOptionalUpgrade ?? false;
|
|
423
|
+
}
|
|
424
|
+
|
|
415
425
|
static {
|
|
416
426
|
createFieldSchemaPrivate = <
|
|
417
427
|
Kind2 extends FieldKind,
|
package/src/simple-tree/index.ts
CHANGED
|
@@ -91,12 +91,24 @@ export {
|
|
|
91
91
|
singletonSchema,
|
|
92
92
|
treeNodeApi,
|
|
93
93
|
type TreeNodeApi,
|
|
94
|
+
type ArrayNodeDeltaOp,
|
|
95
|
+
type ArrayNodeInsertOp,
|
|
96
|
+
type ArrayNodeRemoveOp,
|
|
97
|
+
type ArrayNodeRetainOp,
|
|
98
|
+
type ArrayNodeTreeChangedDeltaOp,
|
|
99
|
+
type ArrayNodeTreeChangedRetainOp,
|
|
100
|
+
deltaMarksToArrayOps,
|
|
94
101
|
type NodeChangedData,
|
|
102
|
+
type NodeChangedDataAlpha,
|
|
103
|
+
type NodeChangedDataDelta,
|
|
104
|
+
type NodeChangedDataProperties,
|
|
105
|
+
type NodeChangedDataTreeDelta,
|
|
95
106
|
borrowCursorFromTreeNodeOrValue,
|
|
96
107
|
exportConcise,
|
|
97
108
|
importConcise,
|
|
98
109
|
TreeBeta,
|
|
99
110
|
type TreeChangeEventsBeta,
|
|
111
|
+
type TreeChangeEventsAlpha,
|
|
100
112
|
type IdentifierIndex,
|
|
101
113
|
createTreeIndex,
|
|
102
114
|
createIdentifierIndex,
|
|
@@ -248,6 +260,7 @@ export {
|
|
|
248
260
|
export { tryGetTreeNodeForField } from "./getTreeNodeForField.js";
|
|
249
261
|
export {
|
|
250
262
|
type ArrayNodeCustomizableSchema,
|
|
263
|
+
type ArrayNodeCustomizableSchemaAlpha,
|
|
251
264
|
type ArrayNodePojoEmulationSchema,
|
|
252
265
|
ArrayNodeSchema,
|
|
253
266
|
asIndex,
|
|
@@ -255,11 +268,13 @@ export {
|
|
|
255
268
|
IterableTreeArrayContent,
|
|
256
269
|
type ReadonlyArrayNode,
|
|
257
270
|
TreeArrayNode,
|
|
271
|
+
type TreeArrayNodeAlpha,
|
|
258
272
|
type MapNodeCustomizableSchema,
|
|
259
273
|
type MapNodePojoEmulationSchema,
|
|
260
274
|
MapNodeSchema,
|
|
261
275
|
isMapNodeSchema,
|
|
262
276
|
type TreeMapNode,
|
|
277
|
+
type TreeMapNodeAlpha,
|
|
263
278
|
type MapNodeInsertableData,
|
|
264
279
|
type FieldHasDefault,
|
|
265
280
|
type FieldHasDefaultAlpha,
|