@fluidframework/tree 2.81.1 → 2.83.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 +168 -0
- package/README.md +33 -5
- package/api-report/tree.alpha.api.md +75 -39
- package/api-report/tree.beta.api.md +164 -3
- package/api-report/tree.legacy.beta.api.md +164 -3
- package/api-report/tree.legacy.public.api.md +2 -1
- package/api-report/tree.public.api.md +2 -1
- package/dist/alpha.d.ts +10 -4
- package/dist/beta.d.ts +4 -0
- package/dist/codec/codec.d.ts +18 -45
- package/dist/codec/codec.d.ts.map +1 -1
- package/dist/codec/codec.js +12 -50
- package/dist/codec/codec.js.map +1 -1
- package/dist/codec/index.d.ts +1 -1
- package/dist/codec/index.d.ts.map +1 -1
- package/dist/codec/index.js +2 -2
- package/dist/codec/index.js.map +1 -1
- package/dist/codec/versioned/codec.d.ts +20 -7
- package/dist/codec/versioned/codec.d.ts.map +1 -1
- package/dist/codec/versioned/codec.js +56 -30
- package/dist/codec/versioned/codec.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 +4 -2
- package/dist/core/index.js.map +1 -1
- package/dist/core/rebase/changeRebaser.d.ts +3 -2
- package/dist/core/rebase/changeRebaser.d.ts.map +1 -1
- package/dist/core/rebase/changeRebaser.js.map +1 -1
- package/dist/core/rebase/index.d.ts +1 -1
- package/dist/core/rebase/index.d.ts.map +1 -1
- package/dist/core/rebase/index.js +4 -2
- package/dist/core/rebase/index.js.map +1 -1
- package/dist/core/rebase/types.d.ts +23 -3
- package/dist/core/rebase/types.d.ts.map +1 -1
- package/dist/core/rebase/types.js +30 -16
- package/dist/core/rebase/types.js.map +1 -1
- package/dist/core/schema-stored/formatV1.d.ts +2 -2
- package/dist/core/schema-stored/formatV1.d.ts.map +1 -1
- package/dist/core/schema-stored/formatV1.js +0 -5
- package/dist/core/schema-stored/formatV1.js.map +1 -1
- package/dist/core/schema-stored/formatV2.d.ts +11 -10
- package/dist/core/schema-stored/formatV2.d.ts.map +1 -1
- package/dist/core/schema-stored/formatV2.js +1 -6
- package/dist/core/schema-stored/formatV2.js.map +1 -1
- package/dist/core/schema-stored/index.d.ts.map +1 -1
- package/dist/core/schema-stored/index.js.map +1 -1
- package/dist/core/schema-stored/schema.d.ts.map +1 -1
- package/dist/core/schema-stored/schema.js.map +1 -1
- package/dist/core/tree/anchorSet.d.ts.map +1 -1
- package/dist/core/tree/anchorSet.js.map +1 -1
- package/dist/core/tree/delta.d.ts +9 -7
- package/dist/core/tree/delta.d.ts.map +1 -1
- package/dist/core/tree/delta.js.map +1 -1
- package/dist/core/tree/deltaUtil.js +1 -1
- package/dist/core/tree/deltaUtil.js.map +1 -1
- package/dist/core/tree/detachedFieldIndexCodecs.d.ts.map +1 -1
- package/dist/core/tree/detachedFieldIndexCodecs.js +6 -4
- package/dist/core/tree/detachedFieldIndexCodecs.js.map +1 -1
- package/dist/core/tree/visitDelta.js +2 -2
- package/dist/core/tree/visitDelta.js.map +1 -1
- package/dist/extensibleUnionNode.d.ts +97 -0
- package/dist/extensibleUnionNode.d.ts.map +1 -0
- package/dist/extensibleUnionNode.js +89 -0
- package/dist/extensibleUnionNode.js.map +1 -0
- package/dist/feature-libraries/changeAtomIdBTree.d.ts +4 -2
- package/dist/feature-libraries/changeAtomIdBTree.d.ts.map +1 -1
- package/dist/feature-libraries/changeAtomIdBTree.js +9 -1
- package/dist/feature-libraries/changeAtomIdBTree.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/codecs.d.ts +1 -1
- package/dist/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/codecs.js +4 -4
- package/dist/feature-libraries/chunked-forest/codec/codecs.js.map +1 -1
- package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts +1 -3
- package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
- package/dist/feature-libraries/default-schema/defaultFieldKinds.js +20 -21
- package/dist/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
- package/dist/feature-libraries/default-schema/index.d.ts +1 -1
- package/dist/feature-libraries/default-schema/index.d.ts.map +1 -1
- package/dist/feature-libraries/default-schema/index.js.map +1 -1
- package/dist/feature-libraries/forest-summary/codec.d.ts +2 -1
- package/dist/feature-libraries/forest-summary/codec.d.ts.map +1 -1
- package/dist/feature-libraries/forest-summary/codec.js +7 -1
- package/dist/feature-libraries/forest-summary/codec.js.map +1 -1
- package/dist/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
- package/dist/feature-libraries/forest-summary/forestSummarizer.js +5 -2
- package/dist/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
- package/dist/feature-libraries/forest-summary/formatCommon.d.ts +4 -42
- package/dist/feature-libraries/forest-summary/formatCommon.d.ts.map +1 -1
- package/dist/feature-libraries/forest-summary/formatCommon.js +1 -2
- package/dist/feature-libraries/forest-summary/formatCommon.js.map +1 -1
- package/dist/feature-libraries/forest-summary/formatV1.d.ts +2 -41
- package/dist/feature-libraries/forest-summary/formatV1.d.ts.map +1 -1
- package/dist/feature-libraries/forest-summary/formatV1.js +1 -2
- package/dist/feature-libraries/forest-summary/formatV1.js.map +1 -1
- package/dist/feature-libraries/forest-summary/formatV2.d.ts +2 -41
- package/dist/feature-libraries/forest-summary/formatV2.d.ts.map +1 -1
- package/dist/feature-libraries/forest-summary/formatV2.js +1 -2
- package/dist/feature-libraries/forest-summary/formatV2.js.map +1 -1
- package/dist/feature-libraries/forest-summary/incrementalSummaryBuilder.d.ts +1 -1
- package/dist/feature-libraries/forest-summary/incrementalSummaryBuilder.d.ts.map +1 -1
- package/dist/feature-libraries/forest-summary/incrementalSummaryBuilder.js +1 -1
- package/dist/feature-libraries/forest-summary/incrementalSummaryBuilder.js.map +1 -1
- package/dist/feature-libraries/index.d.ts +3 -3
- package/dist/feature-libraries/index.d.ts.map +1 -1
- package/dist/feature-libraries/index.js +4 -3
- package/dist/feature-libraries/index.js.map +1 -1
- package/dist/feature-libraries/modular-schema/defaultRevisionReplacer.d.ts +2 -2
- package/dist/feature-libraries/modular-schema/defaultRevisionReplacer.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/defaultRevisionReplacer.js +42 -22
- package/dist/feature-libraries/modular-schema/defaultRevisionReplacer.js.map +1 -1
- package/dist/feature-libraries/modular-schema/genericFieldKind.js +1 -1
- package/dist/feature-libraries/modular-schema/genericFieldKind.js.map +1 -1
- package/dist/feature-libraries/modular-schema/index.d.ts +1 -1
- package/dist/feature-libraries/modular-schema/index.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/index.js +2 -1
- package/dist/feature-libraries/modular-schema/index.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeCodecV1.d.ts +3 -3
- package/dist/feature-libraries/modular-schema/modularChangeCodecV1.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeCodecV1.js +13 -9
- package/dist/feature-libraries/modular-schema/modularChangeCodecV1.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeCodecs.d.ts +11 -1
- package/dist/feature-libraries/modular-schema/modularChangeCodecs.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeCodecs.js +30 -7
- package/dist/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFamily.js +38 -27
- package/dist/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFormatV1.d.ts +10 -127
- package/dist/feature-libraries/modular-schema/modularChangeFormatV1.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFormatV1.js +2 -4
- package/dist/feature-libraries/modular-schema/modularChangeFormatV1.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFormatV2.d.ts +3 -79
- package/dist/feature-libraries/modular-schema/modularChangeFormatV2.d.ts.map +1 -1
- package/dist/feature-libraries/optional-field/optionalField.js +1 -1
- package/dist/feature-libraries/optional-field/optionalField.js.map +1 -1
- package/dist/feature-libraries/optional-field/requiredField.d.ts.map +1 -1
- package/dist/feature-libraries/optional-field/requiredField.js.map +1 -1
- package/dist/feature-libraries/schema-edits/schemaChangeFormat.d.ts +2 -2
- package/dist/feature-libraries/schema-index/codec.d.ts.map +1 -1
- package/dist/feature-libraries/schema-index/codec.js +6 -4
- package/dist/feature-libraries/schema-index/codec.js.map +1 -1
- package/dist/feature-libraries/schema-index/formatV2.d.ts +4 -4
- package/dist/feature-libraries/schema-index/schemaSummarizer.js +1 -1
- package/dist/feature-libraries/schema-index/schemaSummarizer.js.map +1 -1
- package/dist/feature-libraries/sequence-field/invert.js +2 -2
- package/dist/feature-libraries/sequence-field/invert.js.map +1 -1
- package/dist/feature-libraries/sequence-field/replaceRevisions.js +16 -16
- package/dist/feature-libraries/sequence-field/replaceRevisions.js.map +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldToDelta.js +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldToDelta.js.map +1 -1
- package/dist/index.d.ts +5 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -2
- package/dist/index.js.map +1 -1
- package/dist/legacy.d.ts +4 -0
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/shared-tree/independentView.d.ts +36 -13
- package/dist/shared-tree/independentView.d.ts.map +1 -1
- package/dist/shared-tree/independentView.js +1 -0
- package/dist/shared-tree/independentView.js.map +1 -1
- package/dist/shared-tree/index.d.ts +1 -1
- package/dist/shared-tree/index.d.ts.map +1 -1
- package/dist/shared-tree/index.js.map +1 -1
- package/dist/shared-tree/schematizingTreeView.d.ts +10 -0
- package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/dist/shared-tree/schematizingTreeView.js +25 -9
- package/dist/shared-tree/schematizingTreeView.js.map +1 -1
- package/dist/shared-tree/sharedTree.d.ts +3 -3
- package/dist/shared-tree/sharedTree.d.ts.map +1 -1
- package/dist/shared-tree/sharedTree.js +8 -32
- package/dist/shared-tree/sharedTree.js.map +1 -1
- package/dist/shared-tree/sharedTreeChangeCodecs.d.ts +11 -3
- package/dist/shared-tree/sharedTreeChangeCodecs.d.ts.map +1 -1
- package/dist/shared-tree/sharedTreeChangeCodecs.js +39 -5
- package/dist/shared-tree/sharedTreeChangeCodecs.js.map +1 -1
- package/dist/shared-tree/sharedTreeChangeFormat.d.ts +4 -4
- package/dist/shared-tree/tree.d.ts +1 -1
- package/dist/shared-tree/tree.js +1 -1
- package/dist/shared-tree/tree.js.map +1 -1
- package/dist/shared-tree/treeAlpha.d.ts +1 -1
- package/dist/shared-tree/treeAlpha.js.map +1 -1
- package/dist/shared-tree/treeCheckout.d.ts +20 -0
- package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
- package/dist/shared-tree/treeCheckout.js +41 -7
- package/dist/shared-tree/treeCheckout.js.map +1 -1
- package/dist/shared-tree-core/editManagerCodecsCommons.d.ts +3 -3
- package/dist/shared-tree-core/editManagerCodecsCommons.d.ts.map +1 -1
- package/dist/shared-tree-core/editManagerCodecsCommons.js +2 -2
- package/dist/shared-tree-core/editManagerCodecsCommons.js.map +1 -1
- package/dist/shared-tree-core/editManagerCodecsV1toV4.d.ts +2 -2
- package/dist/shared-tree-core/editManagerCodecsV1toV4.d.ts.map +1 -1
- package/dist/shared-tree-core/editManagerCodecsV1toV4.js +1 -1
- 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 +1 -1
- package/dist/shared-tree-core/editManagerCodecsVSharedBranches.js.map +1 -1
- package/dist/shared-tree-core/editManagerSummarizer.js +1 -1
- package/dist/shared-tree-core/editManagerSummarizer.js.map +1 -1
- package/dist/shared-tree-core/messageCodecV1ToV4.d.ts.map +1 -1
- package/dist/shared-tree-core/messageCodecV1ToV4.js +2 -2
- package/dist/shared-tree-core/messageCodecV1ToV4.js.map +1 -1
- package/dist/shared-tree-core/messageCodecs.d.ts.map +1 -1
- package/dist/shared-tree-core/messageCodecs.js +2 -2
- package/dist/shared-tree-core/messageCodecs.js.map +1 -1
- package/dist/shared-tree-core/transaction.d.ts +14 -3
- package/dist/shared-tree-core/transaction.d.ts.map +1 -1
- package/dist/shared-tree-core/transaction.js +59 -16
- package/dist/shared-tree-core/transaction.js.map +1 -1
- package/dist/shared-tree-core/versionedSummarizer.d.ts.map +1 -1
- package/dist/shared-tree-core/versionedSummarizer.js +1 -1
- package/dist/shared-tree-core/versionedSummarizer.js.map +1 -1
- package/dist/simple-tree/api/index.d.ts +2 -2
- package/dist/simple-tree/api/index.d.ts.map +1 -1
- package/dist/simple-tree/api/index.js +4 -3
- package/dist/simple-tree/api/index.js.map +1 -1
- package/dist/simple-tree/api/schemaCreationUtilities.d.ts +9 -0
- package/dist/simple-tree/api/schemaCreationUtilities.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaCreationUtilities.js +16 -1
- package/dist/simple-tree/api/schemaCreationUtilities.js.map +1 -1
- package/dist/simple-tree/api/simpleTreeIndex.js.map +1 -1
- package/dist/simple-tree/api/snapshotCompatibilityChecker.d.ts +148 -29
- package/dist/simple-tree/api/snapshotCompatibilityChecker.d.ts.map +1 -1
- package/dist/simple-tree/api/snapshotCompatibilityChecker.js +180 -99
- package/dist/simple-tree/api/snapshotCompatibilityChecker.js.map +1 -1
- package/dist/simple-tree/api/transactionTypes.d.ts +10 -0
- package/dist/simple-tree/api/transactionTypes.d.ts.map +1 -1
- package/dist/simple-tree/api/transactionTypes.js.map +1 -1
- package/dist/simple-tree/api/tree.d.ts +82 -7
- 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/treeBeta.d.ts +1 -1
- package/dist/simple-tree/api/treeBeta.js.map +1 -1
- package/dist/simple-tree/core/allowedTypes.d.ts +1 -1
- package/dist/simple-tree/core/allowedTypes.js.map +1 -1
- package/dist/simple-tree/core/treeNodeSchema.d.ts.map +1 -1
- package/dist/simple-tree/core/treeNodeSchema.js.map +1 -1
- package/dist/simple-tree/core/unhydratedFlexTree.d.ts +1 -0
- package/dist/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -1
- package/dist/simple-tree/core/unhydratedFlexTree.js +29 -0
- package/dist/simple-tree/core/unhydratedFlexTree.js.map +1 -1
- package/dist/simple-tree/index.d.ts +2 -2
- package/dist/simple-tree/index.d.ts.map +1 -1
- package/dist/simple-tree/index.js +5 -3
- package/dist/simple-tree/index.js.map +1 -1
- package/dist/simple-tree/leafNodeSchema.d.ts.map +1 -1
- package/dist/simple-tree/leafNodeSchema.js.map +1 -1
- package/dist/simple-tree/node-kinds/array/arrayNode.d.ts +63 -0
- package/dist/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/array/arrayNode.js +47 -14
- package/dist/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
- package/dist/simple-tree/node-kinds/array/index.d.ts +1 -1
- package/dist/simple-tree/node-kinds/array/index.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/array/index.js +2 -1
- package/dist/simple-tree/node-kinds/array/index.js.map +1 -1
- package/dist/simple-tree/node-kinds/index.d.ts +1 -1
- package/dist/simple-tree/node-kinds/index.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/index.js +2 -1
- package/dist/simple-tree/node-kinds/index.js.map +1 -1
- package/dist/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/object/objectNode.js.map +1 -1
- package/dist/simple-tree/unhydratedFlexTreeFromInsertable.d.ts.map +1 -1
- package/dist/simple-tree/unhydratedFlexTreeFromInsertable.js +33 -7
- package/dist/simple-tree/unhydratedFlexTreeFromInsertable.js.map +1 -1
- package/dist/tableSchema.d.ts +71 -48
- package/dist/tableSchema.d.ts.map +1 -1
- package/dist/tableSchema.js +200 -98
- package/dist/tableSchema.js.map +1 -1
- package/dist/text/textDomainFormatted.d.ts +3 -3
- package/dist/text/textDomainFormatted.d.ts.map +1 -1
- package/dist/text/textDomainFormatted.js +48 -32
- package/dist/text/textDomainFormatted.js.map +1 -1
- package/dist/util/bTreeUtils.d.ts +30 -4
- package/dist/util/bTreeUtils.d.ts.map +1 -1
- package/dist/util/bTreeUtils.js +35 -23
- package/dist/util/bTreeUtils.js.map +1 -1
- package/dist/util/brand.d.ts.map +1 -1
- package/dist/util/brand.js.map +1 -1
- package/dist/util/brandedMap.d.ts.map +1 -1
- package/dist/util/brandedMap.js.map +1 -1
- package/dist/util/breakable.d.ts.map +1 -1
- package/dist/util/breakable.js +2 -1
- package/dist/util/breakable.js.map +1 -1
- package/dist/util/index.d.ts +2 -2
- package/dist/util/index.d.ts.map +1 -1
- package/dist/util/index.js +6 -3
- package/dist/util/index.js.map +1 -1
- package/dist/util/opaque.d.ts.map +1 -1
- package/dist/util/opaque.js.map +1 -1
- package/dist/util/rangeMap.d.ts +3 -2
- package/dist/util/rangeMap.d.ts.map +1 -1
- package/dist/util/rangeMap.js +12 -7
- package/dist/util/rangeMap.js.map +1 -1
- package/dist/util/readSnapshotBlob.d.ts +1 -1
- package/dist/util/readSnapshotBlob.d.ts.map +1 -1
- package/dist/util/readSnapshotBlob.js.map +1 -1
- package/dist/util/typeCheck.d.ts.map +1 -1
- package/dist/util/typeCheck.js.map +1 -1
- package/dist/util/utils.d.ts +20 -16
- package/dist/util/utils.d.ts.map +1 -1
- package/dist/util/utils.js +49 -17
- package/dist/util/utils.js.map +1 -1
- package/eslint.config.mts +0 -9
- package/lib/alpha.d.ts +10 -4
- package/lib/beta.d.ts +4 -0
- package/lib/codec/codec.d.ts +18 -45
- package/lib/codec/codec.d.ts.map +1 -1
- package/lib/codec/codec.js +10 -47
- package/lib/codec/codec.js.map +1 -1
- package/lib/codec/index.d.ts +1 -1
- 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 +20 -7
- package/lib/codec/versioned/codec.d.ts.map +1 -1
- package/lib/codec/versioned/codec.js +59 -33
- package/lib/codec/versioned/codec.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 +3 -2
- package/lib/core/rebase/changeRebaser.d.ts.map +1 -1
- package/lib/core/rebase/changeRebaser.js.map +1 -1
- package/lib/core/rebase/index.d.ts +1 -1
- package/lib/core/rebase/index.d.ts.map +1 -1
- package/lib/core/rebase/index.js +1 -1
- package/lib/core/rebase/index.js.map +1 -1
- package/lib/core/rebase/types.d.ts +23 -3
- package/lib/core/rebase/types.d.ts.map +1 -1
- package/lib/core/rebase/types.js +27 -15
- package/lib/core/rebase/types.js.map +1 -1
- package/lib/core/schema-stored/formatV1.d.ts +2 -2
- package/lib/core/schema-stored/formatV1.d.ts.map +1 -1
- package/lib/core/schema-stored/formatV1.js +0 -5
- package/lib/core/schema-stored/formatV1.js.map +1 -1
- package/lib/core/schema-stored/formatV2.d.ts +11 -10
- package/lib/core/schema-stored/formatV2.d.ts.map +1 -1
- package/lib/core/schema-stored/formatV2.js +1 -6
- package/lib/core/schema-stored/formatV2.js.map +1 -1
- package/lib/core/schema-stored/index.d.ts.map +1 -1
- package/lib/core/schema-stored/index.js +2 -0
- package/lib/core/schema-stored/index.js.map +1 -1
- package/lib/core/schema-stored/schema.d.ts.map +1 -1
- package/lib/core/schema-stored/schema.js.map +1 -1
- package/lib/core/tree/anchorSet.d.ts.map +1 -1
- package/lib/core/tree/anchorSet.js.map +1 -1
- package/lib/core/tree/delta.d.ts +9 -7
- package/lib/core/tree/delta.d.ts.map +1 -1
- package/lib/core/tree/delta.js.map +1 -1
- package/lib/core/tree/deltaUtil.js +1 -1
- package/lib/core/tree/deltaUtil.js.map +1 -1
- package/lib/core/tree/detachedFieldIndexCodecs.d.ts.map +1 -1
- package/lib/core/tree/detachedFieldIndexCodecs.js +6 -4
- package/lib/core/tree/detachedFieldIndexCodecs.js.map +1 -1
- package/lib/core/tree/visitDelta.js +2 -2
- package/lib/core/tree/visitDelta.js.map +1 -1
- package/lib/extensibleUnionNode.d.ts +97 -0
- package/lib/extensibleUnionNode.d.ts.map +1 -0
- package/lib/extensibleUnionNode.js +86 -0
- package/lib/extensibleUnionNode.js.map +1 -0
- package/lib/feature-libraries/changeAtomIdBTree.d.ts +4 -2
- package/lib/feature-libraries/changeAtomIdBTree.d.ts.map +1 -1
- package/lib/feature-libraries/changeAtomIdBTree.js +7 -0
- package/lib/feature-libraries/changeAtomIdBTree.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/codecs.d.ts +1 -1
- package/lib/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/codecs.js +5 -5
- package/lib/feature-libraries/chunked-forest/codec/codecs.js.map +1 -1
- package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts +1 -3
- package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
- package/lib/feature-libraries/default-schema/defaultFieldKinds.js +4 -5
- package/lib/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
- package/lib/feature-libraries/default-schema/index.d.ts +1 -1
- package/lib/feature-libraries/default-schema/index.d.ts.map +1 -1
- package/lib/feature-libraries/default-schema/index.js.map +1 -1
- package/lib/feature-libraries/forest-summary/codec.d.ts +2 -1
- package/lib/feature-libraries/forest-summary/codec.d.ts.map +1 -1
- package/lib/feature-libraries/forest-summary/codec.js +8 -2
- package/lib/feature-libraries/forest-summary/codec.js.map +1 -1
- package/lib/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
- package/lib/feature-libraries/forest-summary/forestSummarizer.js +6 -3
- package/lib/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
- package/lib/feature-libraries/forest-summary/formatCommon.d.ts +4 -42
- package/lib/feature-libraries/forest-summary/formatCommon.d.ts.map +1 -1
- package/lib/feature-libraries/forest-summary/formatCommon.js +2 -3
- package/lib/feature-libraries/forest-summary/formatCommon.js.map +1 -1
- package/lib/feature-libraries/forest-summary/formatV1.d.ts +2 -41
- package/lib/feature-libraries/forest-summary/formatV1.d.ts.map +1 -1
- package/lib/feature-libraries/forest-summary/formatV1.js +1 -2
- package/lib/feature-libraries/forest-summary/formatV1.js.map +1 -1
- package/lib/feature-libraries/forest-summary/formatV2.d.ts +2 -41
- package/lib/feature-libraries/forest-summary/formatV2.d.ts.map +1 -1
- package/lib/feature-libraries/forest-summary/formatV2.js +1 -2
- package/lib/feature-libraries/forest-summary/formatV2.js.map +1 -1
- package/lib/feature-libraries/forest-summary/incrementalSummaryBuilder.d.ts +1 -1
- package/lib/feature-libraries/forest-summary/incrementalSummaryBuilder.d.ts.map +1 -1
- package/lib/feature-libraries/forest-summary/incrementalSummaryBuilder.js +1 -1
- package/lib/feature-libraries/forest-summary/incrementalSummaryBuilder.js.map +1 -1
- package/lib/feature-libraries/index.d.ts +3 -3
- package/lib/feature-libraries/index.d.ts.map +1 -1
- package/lib/feature-libraries/index.js +3 -3
- package/lib/feature-libraries/index.js.map +1 -1
- package/lib/feature-libraries/modular-schema/defaultRevisionReplacer.d.ts +2 -2
- package/lib/feature-libraries/modular-schema/defaultRevisionReplacer.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/defaultRevisionReplacer.js +41 -21
- package/lib/feature-libraries/modular-schema/defaultRevisionReplacer.js.map +1 -1
- package/lib/feature-libraries/modular-schema/genericFieldKind.js +1 -1
- package/lib/feature-libraries/modular-schema/genericFieldKind.js.map +1 -1
- package/lib/feature-libraries/modular-schema/index.d.ts +1 -1
- package/lib/feature-libraries/modular-schema/index.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/index.js +1 -1
- package/lib/feature-libraries/modular-schema/index.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeCodecV1.d.ts +3 -3
- package/lib/feature-libraries/modular-schema/modularChangeCodecV1.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeCodecV1.js +14 -10
- package/lib/feature-libraries/modular-schema/modularChangeCodecV1.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeCodecs.d.ts +11 -1
- package/lib/feature-libraries/modular-schema/modularChangeCodecs.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeCodecs.js +29 -6
- package/lib/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFamily.js +41 -30
- package/lib/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFormatV1.d.ts +10 -127
- package/lib/feature-libraries/modular-schema/modularChangeFormatV1.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFormatV1.js +2 -4
- package/lib/feature-libraries/modular-schema/modularChangeFormatV1.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFormatV2.d.ts +3 -79
- package/lib/feature-libraries/modular-schema/modularChangeFormatV2.d.ts.map +1 -1
- package/lib/feature-libraries/optional-field/optionalField.js +1 -1
- package/lib/feature-libraries/optional-field/optionalField.js.map +1 -1
- package/lib/feature-libraries/optional-field/requiredField.d.ts.map +1 -1
- package/lib/feature-libraries/optional-field/requiredField.js.map +1 -1
- package/lib/feature-libraries/schema-edits/schemaChangeFormat.d.ts +2 -2
- package/lib/feature-libraries/schema-index/codec.d.ts.map +1 -1
- package/lib/feature-libraries/schema-index/codec.js +6 -4
- package/lib/feature-libraries/schema-index/codec.js.map +1 -1
- package/lib/feature-libraries/schema-index/formatV2.d.ts +4 -4
- package/lib/feature-libraries/schema-index/schemaSummarizer.js +1 -1
- package/lib/feature-libraries/schema-index/schemaSummarizer.js.map +1 -1
- package/lib/feature-libraries/sequence-field/invert.js +2 -2
- package/lib/feature-libraries/sequence-field/invert.js.map +1 -1
- package/lib/feature-libraries/sequence-field/replaceRevisions.js +16 -16
- package/lib/feature-libraries/sequence-field/replaceRevisions.js.map +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldToDelta.js +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldToDelta.js.map +1 -1
- package/lib/index.d.ts +5 -5
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +4 -3
- package/lib/index.js.map +1 -1
- package/lib/legacy.d.ts +4 -0
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/shared-tree/independentView.d.ts +36 -13
- package/lib/shared-tree/independentView.d.ts.map +1 -1
- package/lib/shared-tree/independentView.js +1 -0
- package/lib/shared-tree/independentView.js.map +1 -1
- package/lib/shared-tree/index.d.ts +1 -1
- package/lib/shared-tree/index.d.ts.map +1 -1
- package/lib/shared-tree/index.js.map +1 -1
- package/lib/shared-tree/schematizingTreeView.d.ts +10 -0
- package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/lib/shared-tree/schematizingTreeView.js +25 -9
- package/lib/shared-tree/schematizingTreeView.js.map +1 -1
- package/lib/shared-tree/sharedTree.d.ts +3 -3
- package/lib/shared-tree/sharedTree.d.ts.map +1 -1
- package/lib/shared-tree/sharedTree.js +10 -34
- package/lib/shared-tree/sharedTree.js.map +1 -1
- package/lib/shared-tree/sharedTreeChangeCodecs.d.ts +11 -3
- package/lib/shared-tree/sharedTreeChangeCodecs.d.ts.map +1 -1
- package/lib/shared-tree/sharedTreeChangeCodecs.js +40 -6
- package/lib/shared-tree/sharedTreeChangeCodecs.js.map +1 -1
- package/lib/shared-tree/sharedTreeChangeFormat.d.ts +4 -4
- package/lib/shared-tree/tree.d.ts +1 -1
- package/lib/shared-tree/tree.js +1 -1
- package/lib/shared-tree/tree.js.map +1 -1
- package/lib/shared-tree/treeAlpha.d.ts +1 -1
- package/lib/shared-tree/treeAlpha.js.map +1 -1
- package/lib/shared-tree/treeCheckout.d.ts +20 -0
- package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
- package/lib/shared-tree/treeCheckout.js +41 -7
- package/lib/shared-tree/treeCheckout.js.map +1 -1
- package/lib/shared-tree-core/editManagerCodecsCommons.d.ts +3 -3
- package/lib/shared-tree-core/editManagerCodecsCommons.d.ts.map +1 -1
- package/lib/shared-tree-core/editManagerCodecsCommons.js +2 -2
- package/lib/shared-tree-core/editManagerCodecsCommons.js.map +1 -1
- package/lib/shared-tree-core/editManagerCodecsV1toV4.d.ts +2 -2
- package/lib/shared-tree-core/editManagerCodecsV1toV4.d.ts.map +1 -1
- package/lib/shared-tree-core/editManagerCodecsV1toV4.js +2 -2
- 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 +2 -2
- package/lib/shared-tree-core/editManagerCodecsVSharedBranches.js.map +1 -1
- package/lib/shared-tree-core/editManagerSummarizer.js +1 -1
- package/lib/shared-tree-core/editManagerSummarizer.js.map +1 -1
- package/lib/shared-tree-core/messageCodecV1ToV4.d.ts.map +1 -1
- package/lib/shared-tree-core/messageCodecV1ToV4.js +2 -2
- package/lib/shared-tree-core/messageCodecV1ToV4.js.map +1 -1
- package/lib/shared-tree-core/messageCodecs.d.ts.map +1 -1
- package/lib/shared-tree-core/messageCodecs.js +2 -2
- package/lib/shared-tree-core/messageCodecs.js.map +1 -1
- package/lib/shared-tree-core/transaction.d.ts +14 -3
- package/lib/shared-tree-core/transaction.d.ts.map +1 -1
- package/lib/shared-tree-core/transaction.js +61 -18
- package/lib/shared-tree-core/transaction.js.map +1 -1
- package/lib/shared-tree-core/versionedSummarizer.d.ts.map +1 -1
- package/lib/shared-tree-core/versionedSummarizer.js +1 -1
- package/lib/shared-tree-core/versionedSummarizer.js.map +1 -1
- package/lib/simple-tree/api/index.d.ts +2 -2
- package/lib/simple-tree/api/index.d.ts.map +1 -1
- package/lib/simple-tree/api/index.js +2 -2
- package/lib/simple-tree/api/index.js.map +1 -1
- package/lib/simple-tree/api/schemaCreationUtilities.d.ts +9 -0
- package/lib/simple-tree/api/schemaCreationUtilities.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaCreationUtilities.js +14 -0
- package/lib/simple-tree/api/schemaCreationUtilities.js.map +1 -1
- package/lib/simple-tree/api/simpleTreeIndex.js.map +1 -1
- package/lib/simple-tree/api/snapshotCompatibilityChecker.d.ts +148 -29
- package/lib/simple-tree/api/snapshotCompatibilityChecker.d.ts.map +1 -1
- package/lib/simple-tree/api/snapshotCompatibilityChecker.js +179 -98
- package/lib/simple-tree/api/snapshotCompatibilityChecker.js.map +1 -1
- package/lib/simple-tree/api/transactionTypes.d.ts +10 -0
- package/lib/simple-tree/api/transactionTypes.d.ts.map +1 -1
- package/lib/simple-tree/api/transactionTypes.js.map +1 -1
- package/lib/simple-tree/api/tree.d.ts +82 -7
- 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/treeBeta.d.ts +1 -1
- package/lib/simple-tree/api/treeBeta.js.map +1 -1
- package/lib/simple-tree/core/allowedTypes.d.ts +1 -1
- package/lib/simple-tree/core/allowedTypes.js.map +1 -1
- package/lib/simple-tree/core/treeNodeSchema.d.ts.map +1 -1
- package/lib/simple-tree/core/treeNodeSchema.js.map +1 -1
- package/lib/simple-tree/core/unhydratedFlexTree.d.ts +1 -0
- package/lib/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -1
- package/lib/simple-tree/core/unhydratedFlexTree.js +29 -0
- package/lib/simple-tree/core/unhydratedFlexTree.js.map +1 -1
- package/lib/simple-tree/index.d.ts +2 -2
- package/lib/simple-tree/index.d.ts.map +1 -1
- package/lib/simple-tree/index.js +2 -2
- package/lib/simple-tree/index.js.map +1 -1
- package/lib/simple-tree/leafNodeSchema.d.ts.map +1 -1
- package/lib/simple-tree/leafNodeSchema.js.map +1 -1
- package/lib/simple-tree/node-kinds/array/arrayNode.d.ts +63 -0
- package/lib/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/array/arrayNode.js +46 -14
- package/lib/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
- package/lib/simple-tree/node-kinds/array/index.d.ts +1 -1
- package/lib/simple-tree/node-kinds/array/index.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/array/index.js +1 -1
- package/lib/simple-tree/node-kinds/array/index.js.map +1 -1
- package/lib/simple-tree/node-kinds/index.d.ts +1 -1
- package/lib/simple-tree/node-kinds/index.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/index.js +1 -1
- package/lib/simple-tree/node-kinds/index.js.map +1 -1
- package/lib/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/object/objectNode.js.map +1 -1
- package/lib/simple-tree/unhydratedFlexTreeFromInsertable.d.ts.map +1 -1
- package/lib/simple-tree/unhydratedFlexTreeFromInsertable.js +34 -8
- package/lib/simple-tree/unhydratedFlexTreeFromInsertable.js.map +1 -1
- package/lib/tableSchema.d.ts +71 -48
- package/lib/tableSchema.d.ts.map +1 -1
- package/lib/tableSchema.js +201 -99
- package/lib/tableSchema.js.map +1 -1
- package/lib/text/textDomainFormatted.d.ts +3 -3
- package/lib/text/textDomainFormatted.d.ts.map +1 -1
- package/lib/text/textDomainFormatted.js +30 -14
- package/lib/text/textDomainFormatted.js.map +1 -1
- package/lib/util/bTreeUtils.d.ts +30 -4
- package/lib/util/bTreeUtils.d.ts.map +1 -1
- package/lib/util/bTreeUtils.js +33 -22
- package/lib/util/bTreeUtils.js.map +1 -1
- package/lib/util/brand.d.ts.map +1 -1
- package/lib/util/brand.js.map +1 -1
- package/lib/util/brandedMap.d.ts.map +1 -1
- package/lib/util/brandedMap.js.map +1 -1
- package/lib/util/breakable.d.ts.map +1 -1
- package/lib/util/breakable.js +2 -1
- package/lib/util/breakable.js.map +1 -1
- package/lib/util/index.d.ts +2 -2
- package/lib/util/index.d.ts.map +1 -1
- package/lib/util/index.js +2 -2
- package/lib/util/index.js.map +1 -1
- package/lib/util/opaque.d.ts.map +1 -1
- package/lib/util/opaque.js.map +1 -1
- package/lib/util/rangeMap.d.ts +3 -2
- package/lib/util/rangeMap.d.ts.map +1 -1
- package/lib/util/rangeMap.js +12 -7
- package/lib/util/rangeMap.js.map +1 -1
- package/lib/util/readSnapshotBlob.d.ts +1 -1
- package/lib/util/readSnapshotBlob.d.ts.map +1 -1
- package/lib/util/readSnapshotBlob.js.map +1 -1
- package/lib/util/typeCheck.d.ts.map +1 -1
- package/lib/util/typeCheck.js.map +1 -1
- package/lib/util/utils.d.ts +20 -16
- package/lib/util/utils.d.ts.map +1 -1
- package/lib/util/utils.js +44 -15
- package/lib/util/utils.js.map +1 -1
- package/package.json +24 -24
- package/src/codec/codec.ts +33 -116
- package/src/codec/index.ts +2 -3
- package/src/codec/versioned/codec.ts +127 -95
- package/src/core/index.ts +3 -1
- package/src/core/rebase/changeRebaser.ts +3 -2
- package/src/core/rebase/index.ts +3 -1
- package/src/core/rebase/types.ts +51 -13
- package/src/core/schema-stored/formatV1.ts +2 -4
- package/src/core/schema-stored/formatV2.ts +9 -7
- package/src/core/schema-stored/index.ts +2 -0
- package/src/core/schema-stored/schema.ts +4 -1
- package/src/core/tree/anchorSet.ts +1 -3
- package/src/core/tree/delta.ts +9 -7
- package/src/core/tree/deltaUtil.ts +1 -1
- package/src/core/tree/detachedFieldIndexCodecs.ts +6 -4
- package/src/core/tree/visitDelta.ts +2 -2
- package/src/extensibleUnionNode.ts +177 -0
- package/src/feature-libraries/changeAtomIdBTree.ts +17 -2
- package/src/feature-libraries/chunked-forest/codec/codecs.ts +5 -11
- package/src/feature-libraries/default-schema/defaultFieldKinds.ts +5 -6
- package/src/feature-libraries/default-schema/index.ts +0 -1
- package/src/feature-libraries/forest-summary/codec.ts +15 -9
- package/src/feature-libraries/forest-summary/forestSummarizer.ts +15 -3
- package/src/feature-libraries/forest-summary/formatCommon.ts +7 -6
- package/src/feature-libraries/forest-summary/formatV1.ts +1 -3
- package/src/feature-libraries/forest-summary/formatV2.ts +1 -3
- package/src/feature-libraries/forest-summary/incrementalSummaryBuilder.ts +4 -5
- package/src/feature-libraries/index.ts +3 -2
- package/src/feature-libraries/modular-schema/defaultRevisionReplacer.ts +57 -31
- package/src/feature-libraries/modular-schema/genericFieldKind.ts +1 -1
- package/src/feature-libraries/modular-schema/index.ts +4 -1
- package/src/feature-libraries/modular-schema/modularChangeCodecV1.ts +12 -12
- package/src/feature-libraries/modular-schema/modularChangeCodecs.ts +32 -7
- package/src/feature-libraries/modular-schema/modularChangeFamily.ts +54 -33
- package/src/feature-libraries/modular-schema/modularChangeFormatV1.ts +2 -4
- package/src/feature-libraries/optional-field/optionalField.ts +1 -1
- package/src/feature-libraries/optional-field/requiredField.ts +2 -4
- package/src/feature-libraries/schema-index/codec.ts +7 -5
- package/src/feature-libraries/schema-index/schemaSummarizer.ts +1 -1
- package/src/feature-libraries/sequence-field/invert.ts +2 -2
- package/src/feature-libraries/sequence-field/replaceRevisions.ts +17 -10
- package/src/feature-libraries/sequence-field/sequenceFieldToDelta.ts +1 -1
- package/src/index.ts +14 -9
- package/src/packageVersion.ts +1 -1
- package/src/shared-tree/independentView.ts +42 -6
- package/src/shared-tree/index.ts +2 -0
- package/src/shared-tree/schematizingTreeView.ts +63 -18
- package/src/shared-tree/sharedTree.ts +19 -37
- package/src/shared-tree/sharedTreeChangeCodecs.ts +45 -11
- package/src/shared-tree/tree.ts +2 -2
- package/src/shared-tree/treeAlpha.ts +1 -1
- package/src/shared-tree/treeCheckout.ts +52 -7
- package/src/shared-tree-core/editManagerCodecsCommons.ts +7 -7
- package/src/shared-tree-core/editManagerCodecsV1toV4.ts +3 -10
- package/src/shared-tree-core/editManagerCodecsVSharedBranches.ts +3 -10
- package/src/shared-tree-core/editManagerSummarizer.ts +1 -1
- package/src/shared-tree-core/messageCodecV1ToV4.ts +4 -3
- package/src/shared-tree-core/messageCodecs.ts +2 -6
- package/src/shared-tree-core/transaction.ts +125 -23
- package/src/shared-tree-core/versionedSummarizer.ts +3 -2
- package/src/simple-tree/api/index.ts +3 -2
- package/src/simple-tree/api/schemaCreationUtilities.ts +35 -5
- package/src/simple-tree/api/simpleTreeIndex.ts +1 -1
- package/src/simple-tree/api/snapshotCompatibilityChecker.ts +344 -142
- package/src/simple-tree/api/transactionTypes.ts +10 -0
- package/src/simple-tree/api/tree.ts +89 -7
- package/src/simple-tree/api/treeBeta.ts +1 -1
- package/src/simple-tree/core/allowedTypes.ts +1 -1
- package/src/simple-tree/core/treeNodeSchema.ts +5 -8
- package/src/simple-tree/core/unhydratedFlexTree.ts +43 -1
- package/src/simple-tree/index.ts +5 -2
- package/src/simple-tree/leafNodeSchema.ts +3 -2
- package/src/simple-tree/node-kinds/array/arrayNode.ts +99 -19
- package/src/simple-tree/node-kinds/array/index.ts +2 -0
- package/src/simple-tree/node-kinds/index.ts +2 -0
- package/src/simple-tree/node-kinds/object/objectNode.ts +19 -18
- package/src/simple-tree/unhydratedFlexTreeFromInsertable.ts +51 -10
- package/src/tableSchema.ts +280 -140
- package/src/text/textDomainFormatted.ts +37 -17
- package/src/util/bTreeUtils.ts +55 -32
- package/src/util/brand.ts +4 -12
- package/src/util/brandedMap.ts +2 -6
- package/src/util/breakable.ts +3 -2
- package/src/util/index.ts +9 -3
- package/src/util/opaque.ts +2 -6
- package/src/util/rangeMap.ts +20 -11
- package/src/util/readSnapshotBlob.ts +3 -3
- package/src/util/typeCheck.ts +11 -9
- package/src/util/utils.ts +57 -28
- package/api-extractor-lint.json +0 -4
- package/biome.jsonc +0 -4
|
@@ -3,28 +3,38 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
6
|
+
import { assert, fail } from "@fluidframework/core-utils/internal";
|
|
7
|
+
|
|
8
|
+
import {
|
|
9
|
+
newChangeAtomIdRangeMap,
|
|
10
|
+
offsetChangeAtomId,
|
|
11
|
+
type ChangeAtomId,
|
|
12
|
+
type ChangeAtomIdRangeMap,
|
|
13
|
+
type ChangesetLocalId,
|
|
14
|
+
type RevisionReplacer,
|
|
15
|
+
type RevisionTag,
|
|
11
16
|
} from "../../core/index.js";
|
|
12
|
-
import { brand, brandConst, newTupleBTree, type Mutable } from "../../util/index.js";
|
|
13
17
|
import {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
+
brand,
|
|
19
|
+
brandConst,
|
|
20
|
+
newIntegerRangeMap,
|
|
21
|
+
type RangeMap,
|
|
22
|
+
type Mutable,
|
|
23
|
+
} from "../../util/index.js";
|
|
24
|
+
|
|
25
|
+
const offsetChangesetLocalId = (value: ChangesetLocalId, offset: number): ChangesetLocalId =>
|
|
26
|
+
brand(value + offset);
|
|
18
27
|
|
|
19
28
|
export class DefaultRevisionReplacer implements RevisionReplacer {
|
|
20
29
|
/**
|
|
21
30
|
* Mapping from (obsolete revision tag, original local id) to the updated local id.
|
|
22
31
|
*/
|
|
23
|
-
private readonly updatedLocalIds:
|
|
32
|
+
private readonly updatedLocalIds: ChangeAtomIdRangeMap<ChangesetLocalId> =
|
|
33
|
+
newChangeAtomIdRangeMap(offsetChangesetLocalId);
|
|
24
34
|
/**
|
|
25
35
|
* The set of local IDs already used in the scope of the updated revision.
|
|
26
36
|
*/
|
|
27
|
-
private readonly localIds:
|
|
37
|
+
private readonly localIds: RangeMap<ChangesetLocalId, true> = newIntegerRangeMap();
|
|
28
38
|
/**
|
|
29
39
|
* The maximum local ID seen so far in the scope of the updated revision.
|
|
30
40
|
*/
|
|
@@ -39,29 +49,45 @@ export class DefaultRevisionReplacer implements RevisionReplacer {
|
|
|
39
49
|
return this.obsoleteRevisions.has(revision);
|
|
40
50
|
}
|
|
41
51
|
|
|
42
|
-
public getUpdatedAtomId<T extends ChangeAtomId>(id: T): T {
|
|
52
|
+
public getUpdatedAtomId<T extends ChangeAtomId>(id: T, count: number = 1): T {
|
|
53
|
+
assert(count >= 1, 0xcc9 /* Count must be at least 1 */);
|
|
43
54
|
if (this.isObsolete(id.revision)) {
|
|
44
55
|
const updated: Mutable<T> = { ...id, revision: this.updatedRevision };
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
)
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
56
|
+
let continuingOutputId: ChangesetLocalId | undefined;
|
|
57
|
+
let remainderCount = count;
|
|
58
|
+
let remainderStart = id;
|
|
59
|
+
while (remainderCount > 0) {
|
|
60
|
+
const prior = this.updatedLocalIds.getFirst(remainderStart, remainderCount);
|
|
61
|
+
if (prior.value === undefined) {
|
|
62
|
+
const defaultOutputId = continuingOutputId ?? remainderStart.localId;
|
|
63
|
+
const newLocalId =
|
|
64
|
+
this.localIds.getAll(defaultOutputId, prior.length).length > 0
|
|
65
|
+
? // Some of the IDs in this range have already been used in the scope of the updated revision.
|
|
66
|
+
// We need to allocate new local IDs.
|
|
67
|
+
brand<ChangesetLocalId>(this.maxSeen + 1)
|
|
68
|
+
: // This change atom ID uses a local ID that has not yet been used in the scope of the updated revision.
|
|
69
|
+
// We reuse it as is to minimize the number of IDs that need to be updated.
|
|
70
|
+
defaultOutputId;
|
|
71
|
+
|
|
72
|
+
this.maxSeen = brand(Math.max(this.maxSeen, newLocalId + prior.length - 1));
|
|
73
|
+
this.localIds.set(newLocalId, prior.length, true);
|
|
74
|
+
this.updatedLocalIds.set(remainderStart, prior.length, newLocalId);
|
|
75
|
+
if (continuingOutputId === undefined) {
|
|
76
|
+
updated.localId = newLocalId;
|
|
77
|
+
} else if (newLocalId !== continuingOutputId) {
|
|
78
|
+
fail(0xcca /* TODO: Handle non-contiguous ranges */);
|
|
79
|
+
}
|
|
80
|
+
continuingOutputId = offsetChangesetLocalId(newLocalId, prior.length);
|
|
54
81
|
} else {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
82
|
+
if (continuingOutputId === undefined) {
|
|
83
|
+
updated.localId = prior.value;
|
|
84
|
+
} else if (prior.value !== continuingOutputId) {
|
|
85
|
+
fail(0xccb /* TODO: Handle non-contiguous ranges */);
|
|
86
|
+
}
|
|
87
|
+
continuingOutputId = offsetChangesetLocalId(prior.value, prior.length);
|
|
60
88
|
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
} else {
|
|
64
|
-
updated.localId = prior;
|
|
89
|
+
remainderStart = offsetChangeAtomId(remainderStart, prior.length);
|
|
90
|
+
remainderCount -= prior.length;
|
|
65
91
|
}
|
|
66
92
|
return updated;
|
|
67
93
|
}
|
|
@@ -60,7 +60,7 @@ export const genericChangeHandler: FieldChangeHandler<GenericChangeset> = {
|
|
|
60
60
|
markList.push({ count: 1, fields: deltaFromChild(nodeChange) });
|
|
61
61
|
nodeIndex += 1;
|
|
62
62
|
}
|
|
63
|
-
return { local: markList };
|
|
63
|
+
return { local: { marks: markList } };
|
|
64
64
|
},
|
|
65
65
|
relevantRemovedRoots,
|
|
66
66
|
isEmpty: (change: GenericChangeset): boolean => change.length === 0,
|
|
@@ -74,7 +74,10 @@ export {
|
|
|
74
74
|
relevantRemovedRoots,
|
|
75
75
|
updateRefreshers,
|
|
76
76
|
} from "./modularChangeFamily.js";
|
|
77
|
-
export {
|
|
77
|
+
export {
|
|
78
|
+
ModularChangeFormatVersion,
|
|
79
|
+
makeModularChangeCodecFamily,
|
|
80
|
+
} from "./modularChangeCodecs.js";
|
|
78
81
|
export type {
|
|
79
82
|
FieldKindConfiguration,
|
|
80
83
|
FieldKindConfigurationEntry,
|
|
@@ -9,7 +9,6 @@ import type { TAnySchema } from "@sinclair/typebox";
|
|
|
9
9
|
import {
|
|
10
10
|
type ICodecOptions,
|
|
11
11
|
type IJsonCodec,
|
|
12
|
-
type IMultiFormatCodec,
|
|
13
12
|
type SchemaValidationFunction,
|
|
14
13
|
extractJsonValidator,
|
|
15
14
|
withSchemaValidation,
|
|
@@ -30,9 +29,8 @@ import {
|
|
|
30
29
|
type Mutable,
|
|
31
30
|
brand,
|
|
32
31
|
idAllocatorFromMaxId,
|
|
33
|
-
newTupleBTree,
|
|
34
32
|
} from "../../util/index.js";
|
|
35
|
-
import type
|
|
33
|
+
import { newChangeAtomIdBTree, type ChangeAtomIdBTree } from "../changeAtomIdBTree.js";
|
|
36
34
|
import {
|
|
37
35
|
type FieldBatchCodec,
|
|
38
36
|
type TreeChunk,
|
|
@@ -73,7 +71,7 @@ type ModularChangeCodec = IJsonCodec<
|
|
|
73
71
|
ChangeEncodingContext
|
|
74
72
|
>;
|
|
75
73
|
|
|
76
|
-
type FieldCodec =
|
|
74
|
+
type FieldCodec = IJsonCodec<
|
|
77
75
|
FieldChangeset,
|
|
78
76
|
JsonCompatibleReadOnly,
|
|
79
77
|
JsonCompatibleReadOnly,
|
|
@@ -133,7 +131,7 @@ export function encodeFieldChangesForJsonI(
|
|
|
133
131
|
fieldChange.fieldKind,
|
|
134
132
|
fieldChangesetCodecs,
|
|
135
133
|
);
|
|
136
|
-
const encodedChange = codec.
|
|
134
|
+
const encodedChange = codec.encode(fieldChange.change, context);
|
|
137
135
|
if (compiledSchema !== undefined && !compiledSchema.check(encodedChange)) {
|
|
138
136
|
fail(0xb1f /* Encoded change didn't pass schema validation. */);
|
|
139
137
|
}
|
|
@@ -226,7 +224,7 @@ export function decodeFieldChangesFromJson(
|
|
|
226
224
|
},
|
|
227
225
|
};
|
|
228
226
|
|
|
229
|
-
const fieldChangeset = codec.
|
|
227
|
+
const fieldChangeset = codec.decode(field.change, fieldContext);
|
|
230
228
|
|
|
231
229
|
const crossFieldKeys = getChangeHandler(fieldKinds, field.fieldKind).getCrossFieldKeys(
|
|
232
230
|
fieldChangeset,
|
|
@@ -364,7 +362,7 @@ export function decodeDetachedNodes(
|
|
|
364
362
|
});
|
|
365
363
|
};
|
|
366
364
|
|
|
367
|
-
const map: ModularChangeset["builds"] =
|
|
365
|
+
const map: ModularChangeset["builds"] = newChangeAtomIdBTree();
|
|
368
366
|
// eslint-disable-next-line unicorn/no-array-for-each -- Codec internals: minimizing changes to serialization logic
|
|
369
367
|
encoded.builds.forEach((build) => {
|
|
370
368
|
// EncodedRevisionTag cannot be an array so this ensures that we can isolate the tuple
|
|
@@ -396,7 +394,9 @@ export function encodeRevisionInfos(
|
|
|
396
394
|
): EncodedRevisionInfo[] | undefined {
|
|
397
395
|
if (context.revision !== undefined) {
|
|
398
396
|
assert(
|
|
397
|
+
// eslint-disable-next-line @typescript-eslint/prefer-optional-chain -- Using optional chaining here would change behavior: `revisions[0]?.rollbackOf === undefined` is true when revisions[0] is undefined, but this check requires revisions[0] to be defined. As currently written, such a change would be safe because context.revision is included in the check and from a couple lines above is confirmed not undefined. But this more verbose form is clearer.
|
|
399
398
|
revisions.length === 1 &&
|
|
399
|
+
// eslint-disable-next-line @typescript-eslint/prefer-optional-chain
|
|
400
400
|
revisions[0] !== undefined &&
|
|
401
401
|
revisions[0].revision === context.revision &&
|
|
402
402
|
revisions[0].rollbackOf === undefined,
|
|
@@ -525,9 +525,9 @@ export function decodeChange(
|
|
|
525
525
|
): Mutable<ModularChangeset> {
|
|
526
526
|
const decoded: Mutable<ModularChangeset> = {
|
|
527
527
|
fieldChanges: new Map(),
|
|
528
|
-
nodeChanges:
|
|
529
|
-
nodeToParent:
|
|
530
|
-
nodeAliases:
|
|
528
|
+
nodeChanges: newChangeAtomIdBTree(),
|
|
529
|
+
nodeToParent: newChangeAtomIdBTree(),
|
|
530
|
+
nodeAliases: newChangeAtomIdBTree(),
|
|
531
531
|
crossFieldKeys: newCrossFieldKeyTable(),
|
|
532
532
|
};
|
|
533
533
|
|
|
@@ -596,8 +596,8 @@ export function getFieldChangesetCodecs(
|
|
|
596
596
|
const codec = kind.changeHandler.codecsFactory(revisionTagCodec).resolve(formatVersion);
|
|
597
597
|
return {
|
|
598
598
|
codec,
|
|
599
|
-
compiledSchema: codec.
|
|
600
|
-
? extractJsonValidator(codecOptions.jsonValidator).compile(codec.
|
|
599
|
+
compiledSchema: codec.encodedSchema
|
|
600
|
+
? extractJsonValidator(codecOptions.jsonValidator).compile(codec.encodedSchema)
|
|
601
601
|
: undefined,
|
|
602
602
|
};
|
|
603
603
|
};
|
|
@@ -16,6 +16,7 @@ import type {
|
|
|
16
16
|
EncodedRevisionTag,
|
|
17
17
|
RevisionTag,
|
|
18
18
|
} from "../../core/index.js";
|
|
19
|
+
import { strictEnum, type Values } from "../../util/index.js";
|
|
19
20
|
import type { FieldBatchCodec } from "../chunked-forest/index.js";
|
|
20
21
|
import { TreeCompressionStrategy } from "../treeCompressionUtils.js";
|
|
21
22
|
|
|
@@ -25,7 +26,7 @@ import { makeModularChangeCodecV2 } from "./modularChangeCodecV2.js";
|
|
|
25
26
|
import type { ModularChangeset } from "./modularChangeTypes.js";
|
|
26
27
|
|
|
27
28
|
export function makeModularChangeCodecFamily(
|
|
28
|
-
fieldKindConfigurations: ReadonlyMap<
|
|
29
|
+
fieldKindConfigurations: ReadonlyMap<ModularChangeFormatVersion, FieldKindConfiguration>,
|
|
29
30
|
revisionTagCodec: IJsonCodec<
|
|
30
31
|
RevisionTag,
|
|
31
32
|
EncodedRevisionTag,
|
|
@@ -39,11 +40,8 @@ export function makeModularChangeCodecFamily(
|
|
|
39
40
|
return makeCodecFamily(
|
|
40
41
|
Array.from(fieldKindConfigurations.entries(), ([version, fieldKinds]) => {
|
|
41
42
|
switch (version) {
|
|
42
|
-
case
|
|
43
|
-
case
|
|
44
|
-
case 3:
|
|
45
|
-
case 4:
|
|
46
|
-
case 6: {
|
|
43
|
+
case ModularChangeFormatVersion.v3:
|
|
44
|
+
case ModularChangeFormatVersion.v4: {
|
|
47
45
|
return [
|
|
48
46
|
version,
|
|
49
47
|
makeModularChangeCodecV1(
|
|
@@ -55,7 +53,7 @@ export function makeModularChangeCodecFamily(
|
|
|
55
53
|
),
|
|
56
54
|
];
|
|
57
55
|
}
|
|
58
|
-
case
|
|
56
|
+
case ModularChangeFormatVersion.v5: {
|
|
59
57
|
return [
|
|
60
58
|
version,
|
|
61
59
|
makeModularChangeCodecV2(
|
|
@@ -74,3 +72,30 @@ export function makeModularChangeCodecFamily(
|
|
|
74
72
|
}),
|
|
75
73
|
);
|
|
76
74
|
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* The format version for `ModularChangeset`.
|
|
78
|
+
*/
|
|
79
|
+
export const ModularChangeFormatVersion = strictEnum("ModularChangeFormatVersion", {
|
|
80
|
+
/**
|
|
81
|
+
* Introduced prior to 2.0 and used beyond.
|
|
82
|
+
* Reading capability must be maintained for backwards compatibility.
|
|
83
|
+
* Writing capability needs to be maintained so long as {@link lowestMinVersionForCollab} is less than 2.2.0.
|
|
84
|
+
*/
|
|
85
|
+
v3: 3,
|
|
86
|
+
/**
|
|
87
|
+
* Introduced in 2.2.0.
|
|
88
|
+
* Was inadvertently made usable for writing in 2.43.0 (through configuredSharedTree) and remains available.
|
|
89
|
+
* Reading capability must be maintained for backwards compatibility.
|
|
90
|
+
* Writing capability could be dropped in favor of {@link ModularChangeFormatVersion.v3},
|
|
91
|
+
* but doing so would make the pattern of writable versions more complex and gain little
|
|
92
|
+
* because the logic for this format is shared with {@link ModularChangeFormatVersion.v3}.
|
|
93
|
+
*/
|
|
94
|
+
v4: 4,
|
|
95
|
+
/**
|
|
96
|
+
* Introduced and made available for writing in 2.80.0
|
|
97
|
+
* Adds support for "no change" constraints.
|
|
98
|
+
*/
|
|
99
|
+
v5: 5,
|
|
100
|
+
});
|
|
101
|
+
export type ModularChangeFormatVersion = Values<typeof ModularChangeFormatVersion>;
|
|
@@ -46,6 +46,8 @@ import {
|
|
|
46
46
|
type DeltaDetachedNodeRename,
|
|
47
47
|
mapTaggedChange,
|
|
48
48
|
type RevisionReplacer,
|
|
49
|
+
comparePartialRevisions,
|
|
50
|
+
comparePartialChangesetLocalIds,
|
|
49
51
|
} from "../../core/index.js";
|
|
50
52
|
import {
|
|
51
53
|
type IdAllocationState,
|
|
@@ -56,14 +58,17 @@ import {
|
|
|
56
58
|
idAllocatorFromState,
|
|
57
59
|
type RangeQueryResult,
|
|
58
60
|
getOrCreate,
|
|
59
|
-
newTupleBTree,
|
|
60
61
|
mergeTupleBTrees,
|
|
61
62
|
type TupleBTree,
|
|
62
63
|
RangeMap,
|
|
63
64
|
balancedReduce,
|
|
65
|
+
newTupleBTree,
|
|
66
|
+
compareStrings,
|
|
67
|
+
createTupleComparator,
|
|
64
68
|
} from "../../util/index.js";
|
|
65
69
|
import {
|
|
66
70
|
getFromChangeAtomIdMap,
|
|
71
|
+
newChangeAtomIdBTree,
|
|
67
72
|
setInChangeAtomIdMap,
|
|
68
73
|
type ChangeAtomIdBTree,
|
|
69
74
|
} from "../changeAtomIdBTree.js";
|
|
@@ -732,7 +737,7 @@ export class ModularChangeFamily
|
|
|
732
737
|
revisionForInvert,
|
|
733
738
|
);
|
|
734
739
|
|
|
735
|
-
const invertedNodes
|
|
740
|
+
const invertedNodes = newChangeAtomIdBTree<NodeChangeset>();
|
|
736
741
|
change.change.nodeChanges.forEachPair(([revision, localId], nodeChangeset) => {
|
|
737
742
|
invertedNodes.set(
|
|
738
743
|
[revision, localId],
|
|
@@ -897,12 +902,12 @@ export class ModularChangeFamily
|
|
|
897
902
|
newChange: change,
|
|
898
903
|
baseChange: over.change,
|
|
899
904
|
baseFieldToContext: new Map(),
|
|
900
|
-
baseToRebasedNodeId:
|
|
905
|
+
baseToRebasedNodeId: newChangeAtomIdBTree(),
|
|
901
906
|
rebasedFields: new Set(),
|
|
902
907
|
rebasedNodeToParent: brand(change.nodeToParent.clone()),
|
|
903
908
|
rebasedCrossFieldKeys: change.crossFieldKeys.clone(),
|
|
904
909
|
nodeIdPairs: [],
|
|
905
|
-
affectedBaseFields:
|
|
910
|
+
affectedBaseFields: newFieldIdKeyBTree(),
|
|
906
911
|
fieldsWithUnattachedChild: new Set(),
|
|
907
912
|
};
|
|
908
913
|
|
|
@@ -1365,7 +1370,7 @@ export class ModularChangeFamily
|
|
|
1365
1370
|
const change = nodeChangeFromId(crossFieldTable.newChange.nodeChanges, newId);
|
|
1366
1371
|
const over = nodeChangeFromId(crossFieldTable.baseChange.nodeChanges, baseId);
|
|
1367
1372
|
|
|
1368
|
-
const baseMap: FieldChangeMap = over?.fieldChanges ?? new Map();
|
|
1373
|
+
const baseMap: FieldChangeMap = over?.fieldChanges ?? new Map<FieldKey, FieldChange>();
|
|
1369
1374
|
|
|
1370
1375
|
const fieldChanges =
|
|
1371
1376
|
change.fieldChanges !== undefined && over.fieldChanges !== undefined
|
|
@@ -1522,8 +1527,11 @@ export class ModularChangeFamily
|
|
|
1522
1527
|
}
|
|
1523
1528
|
|
|
1524
1529
|
public getRevisions(change: ModularChangeset): Set<RevisionTag | undefined> {
|
|
1530
|
+
if (change.revisions === undefined || change.revisions.length === 0) {
|
|
1531
|
+
return new Set([undefined]);
|
|
1532
|
+
}
|
|
1525
1533
|
const aggregated: Set<RevisionTag | undefined> = new Set();
|
|
1526
|
-
for (const revInfo of change.revisions
|
|
1534
|
+
for (const revInfo of change.revisions) {
|
|
1527
1535
|
aggregated.add(revInfo.revision);
|
|
1528
1536
|
}
|
|
1529
1537
|
return aggregated;
|
|
@@ -1551,7 +1559,7 @@ export class ModularChangeFamily
|
|
|
1551
1559
|
nodeToParent: updatedNodeToParent,
|
|
1552
1560
|
|
|
1553
1561
|
// We've updated all references to old node IDs, so we no longer need an alias table.
|
|
1554
|
-
nodeAliases:
|
|
1562
|
+
nodeAliases: newChangeAtomIdBTree(),
|
|
1555
1563
|
crossFieldKeys: replaceCrossFieldKeyTableRevisions(
|
|
1556
1564
|
change.crossFieldKeys,
|
|
1557
1565
|
replacer,
|
|
@@ -1763,7 +1771,7 @@ function replaceCrossFieldKeyTableRevisions(
|
|
|
1763
1771
|
const updated: CrossFieldKeyTable = newCrossFieldKeyTable();
|
|
1764
1772
|
for (const entry of table.entries()) {
|
|
1765
1773
|
const key = entry.start;
|
|
1766
|
-
const updatedKey: CrossFieldKey = replacer.getUpdatedAtomId(key);
|
|
1774
|
+
const updatedKey: CrossFieldKey = replacer.getUpdatedAtomId(key, entry.length);
|
|
1767
1775
|
|
|
1768
1776
|
const field = entry.value;
|
|
1769
1777
|
const normalizedFieldId = normalizeFieldId(field, nodeAliases);
|
|
@@ -1788,7 +1796,7 @@ function replaceIdMapRevisions<T>(
|
|
|
1788
1796
|
replacer: RevisionReplacer,
|
|
1789
1797
|
valueMapper: (value: T) => T = (value) => value,
|
|
1790
1798
|
): ChangeAtomIdBTree<T> {
|
|
1791
|
-
const updated
|
|
1799
|
+
const updated = newChangeAtomIdBTree<T>();
|
|
1792
1800
|
for (const [[revision, localId], value] of map.entries()) {
|
|
1793
1801
|
const newAtom = replacer.getUpdatedAtomId({ revision, localId });
|
|
1794
1802
|
updated.set([newAtom.revision, newAtom.localId], valueMapper(value));
|
|
@@ -1819,20 +1827,23 @@ function composeBuildsDestroysAndRefreshers(
|
|
|
1819
1827
|
// care to support at this time.
|
|
1820
1828
|
const allBuilds: ChangeAtomIdBTree<TreeChunk> = brand(
|
|
1821
1829
|
mergeTupleBTrees(
|
|
1822
|
-
change1.builds ??
|
|
1823
|
-
change2.builds ??
|
|
1830
|
+
change1.builds ?? newChangeAtomIdBTree(),
|
|
1831
|
+
change2.builds ?? newChangeAtomIdBTree(),
|
|
1824
1832
|
true,
|
|
1825
1833
|
),
|
|
1826
1834
|
);
|
|
1827
1835
|
|
|
1828
1836
|
const allDestroys: ChangeAtomIdBTree<number> = brand(
|
|
1829
|
-
mergeTupleBTrees(
|
|
1837
|
+
mergeTupleBTrees(
|
|
1838
|
+
change1.destroys ?? newChangeAtomIdBTree(),
|
|
1839
|
+
change2.destroys ?? newChangeAtomIdBTree(),
|
|
1840
|
+
),
|
|
1830
1841
|
);
|
|
1831
1842
|
|
|
1832
1843
|
const allRefreshers: ChangeAtomIdBTree<TreeChunk> = brand(
|
|
1833
1844
|
mergeTupleBTrees(
|
|
1834
|
-
change1.refreshers ??
|
|
1835
|
-
change2.refreshers ??
|
|
1845
|
+
change1.refreshers ?? newChangeAtomIdBTree(),
|
|
1846
|
+
change2.refreshers ?? newChangeAtomIdBTree(),
|
|
1836
1847
|
true,
|
|
1837
1848
|
),
|
|
1838
1849
|
);
|
|
@@ -1942,7 +1953,7 @@ export function updateRefreshers(
|
|
|
1942
1953
|
removedRoots: Iterable<DeltaDetachedNodeId>,
|
|
1943
1954
|
requireRefreshers: boolean = true,
|
|
1944
1955
|
): ModularChangeset {
|
|
1945
|
-
const refreshers
|
|
1956
|
+
const refreshers = newChangeAtomIdBTree<TreeChunk>();
|
|
1946
1957
|
const chunkLengths: Map<RevisionTag | undefined, BTree<number, number>> = new Map();
|
|
1947
1958
|
|
|
1948
1959
|
if (change.builds !== undefined) {
|
|
@@ -2103,7 +2114,7 @@ function intoDeltaImpl(
|
|
|
2103
2114
|
return deltaFromNodeChange(nodeChange, nodeChanges, fieldKinds, global, rename);
|
|
2104
2115
|
},
|
|
2105
2116
|
);
|
|
2106
|
-
if (fieldChanges !== undefined && fieldChanges.length > 0) {
|
|
2117
|
+
if (fieldChanges !== undefined && fieldChanges.marks.length > 0) {
|
|
2107
2118
|
delta.set(field, fieldChanges);
|
|
2108
2119
|
}
|
|
2109
2120
|
for (const c of fieldGlobal ?? []) {
|
|
@@ -2235,7 +2246,7 @@ interface RebaseTable extends CrossFieldTable<FieldChange> {
|
|
|
2235
2246
|
readonly fieldsWithUnattachedChild: Set<FieldChange>;
|
|
2236
2247
|
}
|
|
2237
2248
|
|
|
2238
|
-
type FieldIdKey = [RevisionTag | undefined, ChangesetLocalId | undefined, FieldKey];
|
|
2249
|
+
type FieldIdKey = readonly [RevisionTag | undefined, ChangesetLocalId | undefined, FieldKey];
|
|
2239
2250
|
|
|
2240
2251
|
interface RebaseFieldContext {
|
|
2241
2252
|
baseChange: FieldChange;
|
|
@@ -2261,13 +2272,13 @@ function newComposeTable(
|
|
|
2261
2272
|
newChange,
|
|
2262
2273
|
fieldToContext: new Map(),
|
|
2263
2274
|
newFieldToBaseField: new Map(),
|
|
2264
|
-
newToBaseNodeId:
|
|
2275
|
+
newToBaseNodeId: newChangeAtomIdBTree(),
|
|
2265
2276
|
composedNodes: new Set(),
|
|
2266
2277
|
composedNodeToParent,
|
|
2267
2278
|
pendingCompositions: {
|
|
2268
2279
|
nodeIdsToCompose: [],
|
|
2269
|
-
affectedBaseFields:
|
|
2270
|
-
affectedNewFields:
|
|
2280
|
+
affectedBaseFields: newFieldIdKeyBTree(),
|
|
2281
|
+
affectedNewFields: newFieldIdKeyBTree(),
|
|
2271
2282
|
},
|
|
2272
2283
|
};
|
|
2273
2284
|
}
|
|
@@ -2625,10 +2636,10 @@ function makeModularChangeset(props?: {
|
|
|
2625
2636
|
}): ModularChangeset {
|
|
2626
2637
|
const p = props ?? { maxId: -1 };
|
|
2627
2638
|
const changeset: Mutable<ModularChangeset> = {
|
|
2628
|
-
fieldChanges: p.fieldChanges ?? new Map(),
|
|
2629
|
-
nodeChanges: p.nodeChanges ??
|
|
2630
|
-
nodeToParent: p.nodeToParent ??
|
|
2631
|
-
nodeAliases: p.nodeAliases ??
|
|
2639
|
+
fieldChanges: p.fieldChanges ?? new Map<FieldKey, FieldChange>(),
|
|
2640
|
+
nodeChanges: p.nodeChanges ?? newChangeAtomIdBTree(),
|
|
2641
|
+
nodeToParent: p.nodeToParent ?? newChangeAtomIdBTree(),
|
|
2642
|
+
nodeAliases: p.nodeAliases ?? newChangeAtomIdBTree(),
|
|
2632
2643
|
crossFieldKeys: p.crossFieldKeys ?? newCrossFieldKeyTable(),
|
|
2633
2644
|
};
|
|
2634
2645
|
|
|
@@ -2717,7 +2728,7 @@ export class ModularEditBuilder extends EditBuilder<ModularChangeset> {
|
|
|
2717
2728
|
// This content will be added to a GlobalEditDescription whose lifetime exceeds the scope of this function.
|
|
2718
2729
|
content.referenceAdded();
|
|
2719
2730
|
|
|
2720
|
-
const builds
|
|
2731
|
+
const builds = newChangeAtomIdBTree<TreeChunk>();
|
|
2721
2732
|
builds.set([revision, firstId], content);
|
|
2722
2733
|
|
|
2723
2734
|
return {
|
|
@@ -2747,8 +2758,8 @@ export class ModularEditBuilder extends EditBuilder<ModularChangeset> {
|
|
|
2747
2758
|
const modularChange = buildModularChangesetFromField({
|
|
2748
2759
|
path: field,
|
|
2749
2760
|
fieldChange: { fieldKind, change },
|
|
2750
|
-
nodeChanges:
|
|
2751
|
-
nodeToParent:
|
|
2761
|
+
nodeChanges: newChangeAtomIdBTree(),
|
|
2762
|
+
nodeToParent: newChangeAtomIdBTree(),
|
|
2752
2763
|
crossFieldKeys: newCrossFieldKeyTable(),
|
|
2753
2764
|
idAllocator: this.idAllocator,
|
|
2754
2765
|
localCrossFieldKeys,
|
|
@@ -2779,8 +2790,8 @@ export class ModularEditBuilder extends EditBuilder<ModularChangeset> {
|
|
|
2779
2790
|
fieldKind: change.fieldKind,
|
|
2780
2791
|
change: change.change,
|
|
2781
2792
|
},
|
|
2782
|
-
nodeChanges:
|
|
2783
|
-
nodeToParent:
|
|
2793
|
+
nodeChanges: newChangeAtomIdBTree(),
|
|
2794
|
+
nodeToParent: newChangeAtomIdBTree(),
|
|
2784
2795
|
crossFieldKeys: newCrossFieldKeyTable(),
|
|
2785
2796
|
idAllocator: this.idAllocator,
|
|
2786
2797
|
localCrossFieldKeys: getChangeHandler(
|
|
@@ -2818,8 +2829,8 @@ export class ModularEditBuilder extends EditBuilder<ModularChangeset> {
|
|
|
2818
2829
|
buildModularChangesetFromNode({
|
|
2819
2830
|
path,
|
|
2820
2831
|
nodeChange,
|
|
2821
|
-
nodeChanges:
|
|
2822
|
-
nodeToParent:
|
|
2832
|
+
nodeChanges: newChangeAtomIdBTree(),
|
|
2833
|
+
nodeToParent: newChangeAtomIdBTree(),
|
|
2823
2834
|
crossFieldKeys: newCrossFieldKeyTable(),
|
|
2824
2835
|
idAllocator: this.idAllocator,
|
|
2825
2836
|
revision,
|
|
@@ -2839,8 +2850,8 @@ export class ModularEditBuilder extends EditBuilder<ModularChangeset> {
|
|
|
2839
2850
|
buildModularChangesetFromNode({
|
|
2840
2851
|
path,
|
|
2841
2852
|
nodeChange,
|
|
2842
|
-
nodeChanges:
|
|
2843
|
-
nodeToParent:
|
|
2853
|
+
nodeChanges: newChangeAtomIdBTree(),
|
|
2854
|
+
nodeToParent: newChangeAtomIdBTree(),
|
|
2844
2855
|
crossFieldKeys: newCrossFieldKeyTable(),
|
|
2845
2856
|
idAllocator: this.idAllocator,
|
|
2846
2857
|
revision,
|
|
@@ -3197,3 +3208,13 @@ interface ModularChangesetContent {
|
|
|
3197
3208
|
function areEqualFieldIds(a: FieldId, b: FieldId): boolean {
|
|
3198
3209
|
return areEqualChangeAtomIdOpts(a.nodeId, b.nodeId) && a.field === b.field;
|
|
3199
3210
|
}
|
|
3211
|
+
|
|
3212
|
+
function newFieldIdKeyBTree<V>(): TupleBTree<FieldIdKey, V> {
|
|
3213
|
+
return newTupleBTree(compareFieldIdKeys);
|
|
3214
|
+
}
|
|
3215
|
+
|
|
3216
|
+
const compareFieldIdKeys = createTupleComparator([
|
|
3217
|
+
comparePartialRevisions,
|
|
3218
|
+
comparePartialChangesetLocalIds,
|
|
3219
|
+
compareStrings<FieldKey>,
|
|
3220
|
+
]);
|
|
@@ -11,7 +11,6 @@ import {
|
|
|
11
11
|
JsonCompatibleReadOnlySchema,
|
|
12
12
|
brandedNumberType,
|
|
13
13
|
} from "../../util/index.js";
|
|
14
|
-
import { EncodedFieldBatch } from "../chunked-forest/index.js";
|
|
15
14
|
|
|
16
15
|
const noAdditionalProps: ObjectOptions = { additionalProperties: false };
|
|
17
16
|
|
|
@@ -115,10 +114,9 @@ export const EncodedBuilds = Type.Object(
|
|
|
115
114
|
{
|
|
116
115
|
builds: EncodedBuildsArray,
|
|
117
116
|
/**
|
|
118
|
-
*
|
|
119
|
-
* TODO: Strongly typing this here may result in redundant schema validation of this data.
|
|
117
|
+
* FieldBatch codec encoded data indexed by the EncodedTreeIndexes above.
|
|
120
118
|
*/
|
|
121
|
-
trees:
|
|
119
|
+
trees: JsonCompatibleReadOnlySchema,
|
|
122
120
|
},
|
|
123
121
|
noAdditionalProps,
|
|
124
122
|
);
|
|
@@ -36,10 +36,8 @@ export interface RequiredFieldEditor extends FieldEditor<OptionalChangeset> {
|
|
|
36
36
|
|
|
37
37
|
export const requiredFieldEditor: RequiredFieldEditor = {
|
|
38
38
|
...optionalFieldEditor,
|
|
39
|
-
set: (ids: {
|
|
40
|
-
|
|
41
|
-
detach: ChangeAtomId;
|
|
42
|
-
}): OptionalChangeset => optionalFieldEditor.set(false, ids),
|
|
39
|
+
set: (ids: { fill: ChangeAtomId; detach: ChangeAtomId }): OptionalChangeset =>
|
|
40
|
+
optionalFieldEditor.set(false, ids),
|
|
43
41
|
};
|
|
44
42
|
|
|
45
43
|
export const requiredFieldChangeHandler: FieldChangeHandler<
|
|
@@ -80,7 +80,7 @@ function encodeNodeSchema<TFormat>(
|
|
|
80
80
|
repo: TreeStoredSchema,
|
|
81
81
|
encodeValue: (schema: TreeNodeStoredSchema) => TFormat,
|
|
82
82
|
): Record<string, TFormat> {
|
|
83
|
-
const nodeSchema: Record<string, TFormat> = Object.create(null)
|
|
83
|
+
const nodeSchema: Record<string, TFormat> = Object.create(null) as Record<string, TFormat>;
|
|
84
84
|
for (const name of [...repo.nodeSchema.keys()].sort()) {
|
|
85
85
|
const schema = repo.nodeSchema.get(name) ?? fail(0xb28 /* missing schema */);
|
|
86
86
|
Object.defineProperty(nodeSchema, name, {
|
|
@@ -125,8 +125,9 @@ function decodeV2(f: FormatV2): TreeStoredSchema {
|
|
|
125
125
|
/**
|
|
126
126
|
* Creates a codec which performs synchronous monolithic encoding of schema content.
|
|
127
127
|
*/
|
|
128
|
-
export const schemaCodecBuilder = ClientVersionDispatchingCodecBuilder.build("Schema",
|
|
129
|
-
|
|
128
|
+
export const schemaCodecBuilder = ClientVersionDispatchingCodecBuilder.build("Schema", [
|
|
129
|
+
{
|
|
130
|
+
minVersionForCollab: lowestMinVersionForCollab,
|
|
130
131
|
formatVersion: SchemaFormatVersion.v1,
|
|
131
132
|
codec: {
|
|
132
133
|
encode: (data: TreeStoredSchema) => encodeRepoV1(data),
|
|
@@ -134,7 +135,8 @@ export const schemaCodecBuilder = ClientVersionDispatchingCodecBuilder.build("Sc
|
|
|
134
135
|
schema: FormatV1,
|
|
135
136
|
},
|
|
136
137
|
},
|
|
137
|
-
|
|
138
|
+
{
|
|
139
|
+
minVersionForCollab: FluidClientVersion.v2_43,
|
|
138
140
|
formatVersion: SchemaFormatVersion.v2,
|
|
139
141
|
codec: {
|
|
140
142
|
encode: (data: TreeStoredSchema) => encodeRepoV2(data),
|
|
@@ -142,4 +144,4 @@ export const schemaCodecBuilder = ClientVersionDispatchingCodecBuilder.build("Sc
|
|
|
142
144
|
schema: FormatV2,
|
|
143
145
|
},
|
|
144
146
|
},
|
|
145
|
-
|
|
147
|
+
]);
|
|
@@ -130,7 +130,7 @@ export class SchemaSummarizer
|
|
|
130
130
|
0x3da /* there should not already be stored schema when loading stored schema */,
|
|
131
131
|
);
|
|
132
132
|
|
|
133
|
-
const schemaString = bufferToString(schemaBuffer, "
|
|
133
|
+
const schemaString = bufferToString(schemaBuffer, "utf8");
|
|
134
134
|
// Currently no Fluid handles are used, so just use JSON.parse.
|
|
135
135
|
const decoded = this.codec.decode(JSON.parse(schemaString));
|
|
136
136
|
this.schema.apply(decoded);
|
|
@@ -189,7 +189,7 @@ function invertMark(
|
|
|
189
189
|
if (mark.finalEndpoint !== undefined) {
|
|
190
190
|
moveIn.finalEndpoint = {
|
|
191
191
|
localId: mark.finalEndpoint.localId,
|
|
192
|
-
revision
|
|
192
|
+
revision,
|
|
193
193
|
};
|
|
194
194
|
}
|
|
195
195
|
let effect: MarkEffect = moveIn;
|
|
@@ -228,7 +228,7 @@ function invertMark(
|
|
|
228
228
|
if (mark.finalEndpoint) {
|
|
229
229
|
invertedMark.finalEndpoint = {
|
|
230
230
|
localId: mark.finalEndpoint.localId,
|
|
231
|
-
revision
|
|
231
|
+
revision,
|
|
232
232
|
};
|
|
233
233
|
}
|
|
234
234
|
return applyMovedChanges(invertedMark, mark.revision, crossFieldManager);
|