@fluidframework/tree 2.62.0 → 2.63.0-359286
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.cjs +4 -0
- package/api-report/tree.alpha.api.md +31 -5
- package/api-report/tree.beta.api.md +26 -0
- package/api-report/tree.legacy.beta.api.md +26 -0
- package/dist/alpha.d.ts +4 -3
- package/dist/beta.d.ts +3 -0
- package/dist/codec/codec.d.ts +32 -0
- package/dist/codec/codec.d.ts.map +1 -1
- package/dist/codec/codec.js +32 -1
- 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 +3 -1
- package/dist/codec/index.js.map +1 -1
- package/dist/core/index.d.ts +2 -2
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +4 -3
- package/dist/core/index.js.map +1 -1
- package/dist/core/schema-stored/index.d.ts +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 +5 -7
- package/dist/core/schema-stored/schema.d.ts.map +1 -1
- package/dist/core/schema-stored/schema.js +3 -6
- package/dist/core/schema-stored/schema.js.map +1 -1
- package/dist/core/tree/detachedFieldIndexCodecs.d.ts +4 -1
- package/dist/core/tree/detachedFieldIndexCodecs.d.ts.map +1 -1
- package/dist/core/tree/detachedFieldIndexCodecs.js +5 -1
- package/dist/core/tree/detachedFieldIndexCodecs.js.map +1 -1
- package/dist/core/tree/index.d.ts +1 -0
- package/dist/core/tree/index.d.ts.map +1 -1
- package/dist/core/tree/index.js +3 -1
- package/dist/core/tree/index.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/codecs.d.ts +3 -2
- package/dist/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/codecs.js +5 -1
- package/dist/feature-libraries/chunked-forest/codec/codecs.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/format.d.ts +2 -0
- package/dist/feature-libraries/chunked-forest/codec/format.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/format.js.map +1 -1
- 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 -1
- package/dist/feature-libraries/chunked-forest/codec/index.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 +2 -1
- package/dist/feature-libraries/chunked-forest/index.js.map +1 -1
- package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts +5 -1
- package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
- package/dist/feature-libraries/default-schema/defaultFieldKinds.js +19 -5
- 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 +2 -1
- package/dist/feature-libraries/default-schema/index.js.map +1 -1
- package/dist/feature-libraries/forest-summary/codec.d.ts +4 -1
- package/dist/feature-libraries/forest-summary/codec.d.ts.map +1 -1
- package/dist/feature-libraries/forest-summary/codec.js +5 -1
- package/dist/feature-libraries/forest-summary/codec.js.map +1 -1
- package/dist/feature-libraries/forest-summary/index.d.ts +1 -0
- package/dist/feature-libraries/forest-summary/index.d.ts.map +1 -1
- package/dist/feature-libraries/forest-summary/index.js +3 -1
- package/dist/feature-libraries/forest-summary/index.js.map +1 -1
- package/dist/feature-libraries/index.d.ts +5 -5
- package/dist/feature-libraries/index.d.ts.map +1 -1
- package/dist/feature-libraries/index.js +7 -2
- package/dist/feature-libraries/index.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFamily.js +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFamily.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 -1
- package/dist/feature-libraries/schema-edits/index.js.map +1 -1
- package/dist/feature-libraries/schema-edits/schemaChangeCodecs.d.ts +4 -1
- package/dist/feature-libraries/schema-edits/schemaChangeCodecs.d.ts.map +1 -1
- package/dist/feature-libraries/schema-edits/schemaChangeCodecs.js +9 -1
- package/dist/feature-libraries/schema-edits/schemaChangeCodecs.js.map +1 -1
- package/dist/feature-libraries/schema-index/codec.d.ts +2 -1
- package/dist/feature-libraries/schema-index/codec.d.ts.map +1 -1
- package/dist/feature-libraries/schema-index/codec.js +5 -1
- package/dist/feature-libraries/schema-index/codec.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 +2 -1
- package/dist/feature-libraries/schema-index/index.js.map +1 -1
- package/dist/legacy.d.ts +3 -0
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.d.ts.map +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/serializableDomainSchema.d.ts +12 -16
- package/dist/serializableDomainSchema.d.ts.map +1 -1
- package/dist/serializableDomainSchema.js +8 -8
- package/dist/serializableDomainSchema.js.map +1 -1
- package/dist/shared-tree/index.d.ts +2 -1
- package/dist/shared-tree/index.d.ts.map +1 -1
- package/dist/shared-tree/index.js +4 -1
- package/dist/shared-tree/index.js.map +1 -1
- package/dist/shared-tree/sharedTree.d.ts +18 -2
- package/dist/shared-tree/sharedTree.d.ts.map +1 -1
- package/dist/shared-tree/sharedTree.js +122 -8
- package/dist/shared-tree/sharedTree.js.map +1 -1
- package/dist/shared-tree/sharedTreeChangeCodecs.d.ts +17 -2
- package/dist/shared-tree/sharedTreeChangeCodecs.d.ts.map +1 -1
- package/dist/shared-tree/sharedTreeChangeCodecs.js +31 -18
- package/dist/shared-tree/sharedTreeChangeCodecs.js.map +1 -1
- package/dist/shared-tree/treeCheckout.js.map +1 -1
- package/dist/shared-tree-core/defaultResubmitMachine.d.ts +7 -12
- package/dist/shared-tree-core/defaultResubmitMachine.d.ts.map +1 -1
- package/dist/shared-tree-core/defaultResubmitMachine.js +53 -73
- package/dist/shared-tree-core/defaultResubmitMachine.js.map +1 -1
- package/dist/shared-tree-core/editManager.js +8 -4
- package/dist/shared-tree-core/editManager.js.map +1 -1
- package/dist/shared-tree-core/editManagerCodecs.d.ts +7 -4
- package/dist/shared-tree-core/editManagerCodecs.d.ts.map +1 -1
- package/dist/shared-tree-core/editManagerCodecs.js +42 -11
- package/dist/shared-tree-core/editManagerCodecs.js.map +1 -1
- package/dist/shared-tree-core/index.d.ts +2 -1
- package/dist/shared-tree-core/index.d.ts.map +1 -1
- package/dist/shared-tree-core/index.js +6 -1
- package/dist/shared-tree-core/index.js.map +1 -1
- package/dist/shared-tree-core/messageCodecs.d.ts +7 -4
- package/dist/shared-tree-core/messageCodecs.d.ts.map +1 -1
- package/dist/shared-tree-core/messageCodecs.js +44 -23
- package/dist/shared-tree-core/messageCodecs.js.map +1 -1
- package/dist/shared-tree-core/resubmitMachine.d.ts +9 -18
- package/dist/shared-tree-core/resubmitMachine.d.ts.map +1 -1
- package/dist/shared-tree-core/resubmitMachine.js.map +1 -1
- package/dist/shared-tree-core/sharedTreeCore.d.ts +6 -4
- package/dist/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
- package/dist/shared-tree-core/sharedTreeCore.js +12 -13
- package/dist/shared-tree-core/sharedTreeCore.js.map +1 -1
- package/dist/simple-tree/api/schemaFactoryAlpha.d.ts +7 -166
- package/dist/simple-tree/api/schemaFactoryAlpha.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaFactoryAlpha.js +11 -44
- package/dist/simple-tree/api/schemaFactoryAlpha.js.map +1 -1
- package/dist/simple-tree/api/schemaFactoryBeta.d.ts +90 -1
- package/dist/simple-tree/api/schemaFactoryBeta.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaFactoryBeta.js +55 -0
- package/dist/simple-tree/api/schemaFactoryBeta.js.map +1 -1
- package/dist/simple-tree/api/treeBeta.d.ts +12 -2
- package/dist/simple-tree/api/treeBeta.d.ts.map +1 -1
- package/dist/simple-tree/api/treeBeta.js +6 -0
- package/dist/simple-tree/api/treeBeta.js.map +1 -1
- package/dist/simple-tree/api/typesUnsafe.d.ts +1 -1
- package/dist/simple-tree/api/typesUnsafe.js.map +1 -1
- package/dist/simple-tree/core/treeNode.d.ts +3 -2
- package/dist/simple-tree/core/treeNode.d.ts.map +1 -1
- package/dist/simple-tree/core/treeNode.js +3 -2
- package/dist/simple-tree/core/treeNode.js.map +1 -1
- package/dist/simple-tree/core/treeNodeKernel.js.map +1 -1
- package/dist/simple-tree/node-kinds/record/recordNodeTypes.d.ts +2 -2
- package/dist/simple-tree/node-kinds/record/recordNodeTypes.js.map +1 -1
- package/dist/util/brand.d.ts +1 -1
- package/dist/util/brand.js.map +1 -1
- package/docs/main/compatibility.md +8 -0
- package/lib/alpha.d.ts +4 -3
- package/lib/beta.d.ts +3 -0
- package/lib/codec/codec.d.ts +32 -0
- package/lib/codec/codec.d.ts.map +1 -1
- package/lib/codec/codec.js +28 -0
- 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/core/index.d.ts +2 -2
- 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/schema-stored/index.d.ts +1 -1
- package/lib/core/schema-stored/index.d.ts.map +1 -1
- package/lib/core/schema-stored/index.js.map +1 -1
- package/lib/core/schema-stored/schema.d.ts +5 -7
- package/lib/core/schema-stored/schema.d.ts.map +1 -1
- package/lib/core/schema-stored/schema.js +3 -6
- package/lib/core/schema-stored/schema.js.map +1 -1
- package/lib/core/tree/detachedFieldIndexCodecs.d.ts +4 -1
- package/lib/core/tree/detachedFieldIndexCodecs.d.ts.map +1 -1
- package/lib/core/tree/detachedFieldIndexCodecs.js +3 -0
- package/lib/core/tree/detachedFieldIndexCodecs.js.map +1 -1
- package/lib/core/tree/index.d.ts +1 -0
- package/lib/core/tree/index.d.ts.map +1 -1
- package/lib/core/tree/index.js +1 -0
- package/lib/core/tree/index.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/codecs.d.ts +3 -2
- package/lib/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/codecs.js +3 -0
- package/lib/feature-libraries/chunked-forest/codec/codecs.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/format.d.ts +2 -0
- package/lib/feature-libraries/chunked-forest/codec/format.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/format.js.map +1 -1
- 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/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 +1 -1
- package/lib/feature-libraries/chunked-forest/index.js.map +1 -1
- package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts +5 -1
- package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
- package/lib/feature-libraries/default-schema/defaultFieldKinds.js +17 -4
- 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 +1 -1
- package/lib/feature-libraries/default-schema/index.js.map +1 -1
- package/lib/feature-libraries/forest-summary/codec.d.ts +4 -1
- package/lib/feature-libraries/forest-summary/codec.d.ts.map +1 -1
- package/lib/feature-libraries/forest-summary/codec.js +3 -0
- package/lib/feature-libraries/forest-summary/codec.js.map +1 -1
- package/lib/feature-libraries/forest-summary/index.d.ts +1 -0
- package/lib/feature-libraries/forest-summary/index.d.ts.map +1 -1
- package/lib/feature-libraries/forest-summary/index.js +1 -0
- package/lib/feature-libraries/forest-summary/index.js.map +1 -1
- package/lib/feature-libraries/index.d.ts +5 -5
- package/lib/feature-libraries/index.d.ts.map +1 -1
- package/lib/feature-libraries/index.js +5 -5
- package/lib/feature-libraries/index.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFamily.js +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFamily.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 +4 -1
- package/lib/feature-libraries/schema-edits/schemaChangeCodecs.d.ts.map +1 -1
- package/lib/feature-libraries/schema-edits/schemaChangeCodecs.js +8 -1
- package/lib/feature-libraries/schema-edits/schemaChangeCodecs.js.map +1 -1
- package/lib/feature-libraries/schema-index/codec.d.ts +2 -1
- package/lib/feature-libraries/schema-index/codec.d.ts.map +1 -1
- package/lib/feature-libraries/schema-index/codec.js +3 -0
- package/lib/feature-libraries/schema-index/codec.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/legacy.d.ts +3 -0
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.d.ts.map +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/serializableDomainSchema.d.ts +12 -16
- package/lib/serializableDomainSchema.d.ts.map +1 -1
- package/lib/serializableDomainSchema.js +9 -9
- package/lib/serializableDomainSchema.js.map +1 -1
- package/lib/shared-tree/index.d.ts +2 -1
- package/lib/shared-tree/index.d.ts.map +1 -1
- package/lib/shared-tree/index.js +2 -1
- package/lib/shared-tree/index.js.map +1 -1
- package/lib/shared-tree/sharedTree.d.ts +18 -2
- package/lib/shared-tree/sharedTree.d.ts.map +1 -1
- package/lib/shared-tree/sharedTree.js +126 -13
- package/lib/shared-tree/sharedTree.js.map +1 -1
- package/lib/shared-tree/sharedTreeChangeCodecs.d.ts +17 -2
- package/lib/shared-tree/sharedTreeChangeCodecs.d.ts.map +1 -1
- package/lib/shared-tree/sharedTreeChangeCodecs.js +30 -18
- package/lib/shared-tree/sharedTreeChangeCodecs.js.map +1 -1
- package/lib/shared-tree/treeCheckout.js.map +1 -1
- package/lib/shared-tree-core/defaultResubmitMachine.d.ts +7 -12
- package/lib/shared-tree-core/defaultResubmitMachine.d.ts.map +1 -1
- package/lib/shared-tree-core/defaultResubmitMachine.js +55 -75
- package/lib/shared-tree-core/defaultResubmitMachine.js.map +1 -1
- package/lib/shared-tree-core/editManager.js +8 -4
- package/lib/shared-tree-core/editManager.js.map +1 -1
- package/lib/shared-tree-core/editManagerCodecs.d.ts +7 -4
- package/lib/shared-tree-core/editManagerCodecs.d.ts.map +1 -1
- package/lib/shared-tree-core/editManagerCodecs.js +40 -10
- package/lib/shared-tree-core/editManagerCodecs.js.map +1 -1
- package/lib/shared-tree-core/index.d.ts +2 -1
- package/lib/shared-tree-core/index.d.ts.map +1 -1
- package/lib/shared-tree-core/index.js +2 -1
- package/lib/shared-tree-core/index.js.map +1 -1
- package/lib/shared-tree-core/messageCodecs.d.ts +7 -4
- package/lib/shared-tree-core/messageCodecs.d.ts.map +1 -1
- package/lib/shared-tree-core/messageCodecs.js +42 -22
- package/lib/shared-tree-core/messageCodecs.js.map +1 -1
- package/lib/shared-tree-core/resubmitMachine.d.ts +9 -18
- package/lib/shared-tree-core/resubmitMachine.d.ts.map +1 -1
- package/lib/shared-tree-core/resubmitMachine.js.map +1 -1
- package/lib/shared-tree-core/sharedTreeCore.d.ts +6 -4
- package/lib/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
- package/lib/shared-tree-core/sharedTreeCore.js +13 -14
- package/lib/shared-tree-core/sharedTreeCore.js.map +1 -1
- package/lib/simple-tree/api/schemaFactoryAlpha.d.ts +7 -166
- package/lib/simple-tree/api/schemaFactoryAlpha.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaFactoryAlpha.js +12 -45
- package/lib/simple-tree/api/schemaFactoryAlpha.js.map +1 -1
- package/lib/simple-tree/api/schemaFactoryBeta.d.ts +90 -1
- package/lib/simple-tree/api/schemaFactoryBeta.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaFactoryBeta.js +56 -1
- package/lib/simple-tree/api/schemaFactoryBeta.js.map +1 -1
- package/lib/simple-tree/api/treeBeta.d.ts +12 -2
- package/lib/simple-tree/api/treeBeta.d.ts.map +1 -1
- package/lib/simple-tree/api/treeBeta.js +7 -1
- package/lib/simple-tree/api/treeBeta.js.map +1 -1
- package/lib/simple-tree/api/typesUnsafe.d.ts +1 -1
- package/lib/simple-tree/api/typesUnsafe.js.map +1 -1
- package/lib/simple-tree/core/treeNode.d.ts +3 -2
- package/lib/simple-tree/core/treeNode.d.ts.map +1 -1
- package/lib/simple-tree/core/treeNode.js +3 -2
- package/lib/simple-tree/core/treeNode.js.map +1 -1
- package/lib/simple-tree/core/treeNodeKernel.js.map +1 -1
- package/lib/simple-tree/node-kinds/record/recordNodeTypes.d.ts +2 -2
- package/lib/simple-tree/node-kinds/record/recordNodeTypes.js.map +1 -1
- package/lib/util/brand.d.ts +1 -1
- package/lib/util/brand.js.map +1 -1
- package/package.json +21 -21
- package/src/codec/codec.ts +60 -0
- package/src/codec/index.ts +3 -0
- package/src/core/index.ts +3 -0
- package/src/core/schema-stored/index.ts +1 -0
- package/src/core/schema-stored/schema.ts +5 -6
- package/src/core/tree/detachedFieldIndexCodecs.ts +9 -0
- package/src/core/tree/index.ts +6 -0
- package/src/feature-libraries/chunked-forest/codec/codecs.ts +6 -1
- package/src/feature-libraries/chunked-forest/codec/format.ts +2 -0
- package/src/feature-libraries/chunked-forest/codec/index.ts +2 -1
- package/src/feature-libraries/chunked-forest/index.ts +2 -0
- package/src/feature-libraries/default-schema/defaultFieldKinds.ts +29 -5
- package/src/feature-libraries/default-schema/index.ts +2 -0
- package/src/feature-libraries/forest-summary/codec.ts +7 -0
- package/src/feature-libraries/forest-summary/index.ts +1 -0
- package/src/feature-libraries/index.ts +12 -1
- package/src/feature-libraries/modular-schema/modularChangeFamily.ts +1 -1
- package/src/feature-libraries/schema-edits/index.ts +5 -1
- package/src/feature-libraries/schema-edits/schemaChangeCodecs.ts +17 -1
- package/src/feature-libraries/schema-index/codec.ts +5 -0
- package/src/feature-libraries/schema-index/index.ts +1 -0
- package/src/packageVersion.ts +1 -1
- package/src/serializableDomainSchema.ts +12 -11
- package/src/shared-tree/index.ts +6 -0
- package/src/shared-tree/sharedTree.ts +151 -11
- package/src/shared-tree/sharedTreeChangeCodecs.ts +68 -30
- package/src/shared-tree/treeCheckout.ts +1 -1
- package/src/shared-tree-core/defaultResubmitMachine.ts +77 -120
- package/src/shared-tree-core/editManager.ts +10 -4
- package/src/shared-tree-core/editManagerCodecs.ts +62 -9
- package/src/shared-tree-core/index.ts +12 -1
- package/src/shared-tree-core/messageCodecs.ts +70 -27
- package/src/shared-tree-core/resubmitMachine.ts +12 -20
- package/src/shared-tree-core/sharedTreeCore.ts +26 -18
- package/src/simple-tree/api/schemaFactoryAlpha.ts +16 -296
- package/src/simple-tree/api/schemaFactoryBeta.ts +269 -1
- package/src/simple-tree/api/treeBeta.ts +36 -1
- package/src/simple-tree/api/typesUnsafe.ts +1 -1
- package/src/simple-tree/core/treeNode.ts +3 -2
- package/src/simple-tree/core/treeNodeKernel.ts +1 -1
- package/src/simple-tree/node-kinds/record/recordNodeTypes.ts +2 -2
- package/src/util/brand.ts +1 -1
|
@@ -3,7 +3,11 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
+
import { unreachableCase } from "@fluidframework/core-utils/internal";
|
|
6
7
|
import {
|
|
8
|
+
type CodecTree,
|
|
9
|
+
type DependentFormatVersion,
|
|
10
|
+
type FormatVersion,
|
|
7
11
|
type ICodecFamily,
|
|
8
12
|
type ICodecOptions,
|
|
9
13
|
type IJsonCodec,
|
|
@@ -16,7 +20,7 @@ import type {
|
|
|
16
20
|
RevisionTag,
|
|
17
21
|
SchemaAndPolicy,
|
|
18
22
|
} from "../core/index.js";
|
|
19
|
-
import type
|
|
23
|
+
import { brand, type Brand, type JsonCompatibleReadOnly } from "../util/index.js";
|
|
20
24
|
|
|
21
25
|
import type { DecodedMessage } from "./messageTypes.js";
|
|
22
26
|
import type { IIdCompressor } from "@fluidframework/id-compressor";
|
|
@@ -30,6 +34,7 @@ export interface MessageEncodingContext {
|
|
|
30
34
|
|
|
31
35
|
export function makeMessageCodec<TChangeset>(
|
|
32
36
|
changeCodecs: ICodecFamily<TChangeset, ChangeEncodingContext>,
|
|
37
|
+
dependentChangeFormatVersion: DependentFormatVersion<MessageFormatVersion>,
|
|
33
38
|
revisionTagCodec: IJsonCodec<
|
|
34
39
|
RevisionTag,
|
|
35
40
|
EncodedRevisionTag,
|
|
@@ -37,14 +42,19 @@ export function makeMessageCodec<TChangeset>(
|
|
|
37
42
|
ChangeEncodingContext
|
|
38
43
|
>,
|
|
39
44
|
options: ICodecOptions,
|
|
40
|
-
writeVersion:
|
|
45
|
+
writeVersion: MessageFormatVersion = brand(1),
|
|
41
46
|
): IJsonCodec<
|
|
42
47
|
DecodedMessage<TChangeset>,
|
|
43
48
|
JsonCompatibleReadOnly,
|
|
44
49
|
JsonCompatibleReadOnly,
|
|
45
50
|
MessageEncodingContext
|
|
46
51
|
> {
|
|
47
|
-
const family = makeMessageCodecs(
|
|
52
|
+
const family = makeMessageCodecs(
|
|
53
|
+
changeCodecs,
|
|
54
|
+
dependentChangeFormatVersion,
|
|
55
|
+
revisionTagCodec,
|
|
56
|
+
options,
|
|
57
|
+
);
|
|
48
58
|
return makeVersionDispatchingCodec(family, { ...options, writeVersion });
|
|
49
59
|
}
|
|
50
60
|
|
|
@@ -53,6 +63,7 @@ export function makeMessageCodec<TChangeset>(
|
|
|
53
63
|
*/
|
|
54
64
|
export function makeMessageCodecs<TChangeset>(
|
|
55
65
|
changeCodecs: ICodecFamily<TChangeset, ChangeEncodingContext>,
|
|
66
|
+
dependentChangeFormatVersion: DependentFormatVersion<MessageFormatVersion>,
|
|
56
67
|
revisionTagCodec: IJsonCodec<
|
|
57
68
|
RevisionTag,
|
|
58
69
|
EncodedRevisionTag,
|
|
@@ -61,28 +72,60 @@ export function makeMessageCodecs<TChangeset>(
|
|
|
61
72
|
>,
|
|
62
73
|
options: ICodecOptions,
|
|
63
74
|
): ICodecFamily<DecodedMessage<TChangeset>, MessageEncodingContext> {
|
|
64
|
-
const
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
75
|
+
const registry: [
|
|
76
|
+
FormatVersion,
|
|
77
|
+
IJsonCodec<
|
|
78
|
+
DecodedMessage<TChangeset>,
|
|
79
|
+
JsonCompatibleReadOnly,
|
|
80
|
+
JsonCompatibleReadOnly,
|
|
81
|
+
MessageEncodingContext
|
|
82
|
+
>,
|
|
83
|
+
][] = Array.from(messageFormatVersions).map((version) => {
|
|
84
|
+
const changeCodec = changeCodecs.resolve(
|
|
85
|
+
dependentChangeFormatVersion.lookup(version),
|
|
86
|
+
).json;
|
|
87
|
+
switch (version) {
|
|
88
|
+
case undefined:
|
|
89
|
+
case 1:
|
|
90
|
+
case 2:
|
|
91
|
+
case 3:
|
|
92
|
+
case 4:
|
|
93
|
+
return [
|
|
94
|
+
version,
|
|
95
|
+
makeV1ToV4CodecWithVersion(changeCodec, revisionTagCodec, options, version ?? 1),
|
|
96
|
+
];
|
|
97
|
+
case 5:
|
|
98
|
+
return [
|
|
99
|
+
version,
|
|
100
|
+
makeV5CodecWithVersion(changeCodec, revisionTagCodec, options, version),
|
|
101
|
+
];
|
|
102
|
+
default:
|
|
103
|
+
unreachableCase(version);
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
return makeCodecFamily(registry);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
export type MessageFormatVersion = Brand<
|
|
110
|
+
undefined | 1 | 2 | 3 | 4 | 5,
|
|
111
|
+
"MessageFormatVersion"
|
|
112
|
+
>;
|
|
113
|
+
export const messageFormatVersions: ReadonlySet<MessageFormatVersion> = new Set([
|
|
114
|
+
brand(undefined),
|
|
115
|
+
brand(1),
|
|
116
|
+
brand(2),
|
|
117
|
+
brand(3),
|
|
118
|
+
brand(4),
|
|
119
|
+
brand(5),
|
|
120
|
+
]);
|
|
121
|
+
|
|
122
|
+
export function getCodecTreeForMessageFormatWithChange(
|
|
123
|
+
version: MessageFormatVersion,
|
|
124
|
+
changeFormat: CodecTree,
|
|
125
|
+
): CodecTree {
|
|
126
|
+
return {
|
|
127
|
+
name: "Message",
|
|
128
|
+
version,
|
|
129
|
+
children: [changeFormat],
|
|
130
|
+
};
|
|
88
131
|
}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import type { GraphCommit } from "../core/index.js";
|
|
6
|
+
import type { GraphCommit, RevisionTag } from "../core/index.js";
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* Encapsulates a state machine that can be used by a {@link SharedTreeCore} manage resubmit phases,
|
|
@@ -11,25 +11,16 @@ import type { GraphCommit } from "../core/index.js";
|
|
|
11
11
|
*/
|
|
12
12
|
export interface ResubmitMachine<TChange> {
|
|
13
13
|
/**
|
|
14
|
-
*
|
|
15
|
-
* @param
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
14
|
+
* @param revision - the revision of the commit that should be enriched
|
|
15
|
+
* @param getLocalCommitsSince - the local commits on this branch from oldest to newest, starting with the `revision`.
|
|
16
|
+
* @returns a version of the commit with updated enrichment, or undefined if this revision does not need to be resubmitted.
|
|
17
|
+
* A revision does not need to be resubmitted if it has already been sequenced, which can happen if it was also submitted by another client.
|
|
18
|
+
* Two clients can submit the same revision by both merging from the same shared branch.
|
|
19
19
|
*/
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
*
|
|
25
|
-
* Throws when invoked outside of a resubmit phase.
|
|
26
|
-
*/
|
|
27
|
-
peekNextCommit(): GraphCommit<TChange>;
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* Is true iff the commit enricher is currently in a resubmit phase.
|
|
31
|
-
*/
|
|
32
|
-
readonly isInResubmitPhase: boolean;
|
|
20
|
+
getEnrichedCommit(
|
|
21
|
+
revision: RevisionTag,
|
|
22
|
+
getLocalCommitsSince: () => readonly GraphCommit<TChange>[],
|
|
23
|
+
): GraphCommit<TChange> | undefined;
|
|
33
24
|
|
|
34
25
|
/**
|
|
35
26
|
* Must be when a commit is submitted or resubmitted.
|
|
@@ -48,7 +39,8 @@ export interface ResubmitMachine<TChange> {
|
|
|
48
39
|
* Must be called after a sequenced commit is applied.
|
|
49
40
|
* Note that this may be called multiples times in a row after a number of sequenced commits have been applied
|
|
50
41
|
* (as opposed to always being called before the next sequenced commit is applied).
|
|
42
|
+
* @param revision - the revision of the sequenced commit.
|
|
51
43
|
* @param isLocal - whether the sequenced commit was generated by the local session.
|
|
52
44
|
*/
|
|
53
|
-
onSequencedCommitApplied(isLocal: boolean): void;
|
|
45
|
+
onSequencedCommitApplied(revision: RevisionTag, isLocal: boolean): void;
|
|
54
46
|
}
|
|
@@ -25,7 +25,7 @@ import type {
|
|
|
25
25
|
} from "@fluidframework/shared-object-base/internal";
|
|
26
26
|
import { createChildLogger } from "@fluidframework/telemetry-utils/internal";
|
|
27
27
|
|
|
28
|
-
import type { ICodecOptions, IJsonCodec } from "../codec/index.js";
|
|
28
|
+
import type { DependentFormatVersion, ICodecOptions, IJsonCodec } from "../codec/index.js";
|
|
29
29
|
import {
|
|
30
30
|
type ChangeFamily,
|
|
31
31
|
type ChangeFamilyEditor,
|
|
@@ -51,10 +51,14 @@ import { BranchCommitEnricher } from "./branchCommitEnricher.js";
|
|
|
51
51
|
import { type ChangeEnricherReadonlyCheckout, NoOpChangeEnricher } from "./changeEnricher.js";
|
|
52
52
|
import { DefaultResubmitMachine } from "./defaultResubmitMachine.js";
|
|
53
53
|
import { EditManager, minimumPossibleSequenceNumber } from "./editManager.js";
|
|
54
|
-
import { makeEditManagerCodec } from "./editManagerCodecs.js";
|
|
54
|
+
import { makeEditManagerCodec, type EditManagerFormatVersion } from "./editManagerCodecs.js";
|
|
55
55
|
import type { SeqNumber } from "./editManagerFormatCommons.js";
|
|
56
56
|
import { EditManagerSummarizer } from "./editManagerSummarizer.js";
|
|
57
|
-
import {
|
|
57
|
+
import {
|
|
58
|
+
type MessageEncodingContext,
|
|
59
|
+
type MessageFormatVersion,
|
|
60
|
+
makeMessageCodec,
|
|
61
|
+
} from "./messageCodecs.js";
|
|
58
62
|
import type { DecodedMessage } from "./messageTypes.js";
|
|
59
63
|
import type { ResubmitMachine } from "./resubmitMachine.js";
|
|
60
64
|
|
|
@@ -62,8 +66,8 @@ import type { ResubmitMachine } from "./resubmitMachine.js";
|
|
|
62
66
|
const summarizablesTreeKey = "indexes";
|
|
63
67
|
|
|
64
68
|
export interface ExplicitCoreCodecVersions {
|
|
65
|
-
editManager:
|
|
66
|
-
message:
|
|
69
|
+
editManager: EditManagerFormatVersion;
|
|
70
|
+
message: MessageFormatVersion;
|
|
67
71
|
}
|
|
68
72
|
|
|
69
73
|
export interface ClonableSchemaAndPolicy extends SchemaAndPolicy {
|
|
@@ -126,6 +130,8 @@ export class SharedTreeCore<TEditor extends ChangeFamilyEditor, TChange>
|
|
|
126
130
|
protected readonly changeFamily: ChangeFamily<TEditor, TChange>,
|
|
127
131
|
options: ICodecOptions,
|
|
128
132
|
formatOptions: ExplicitCoreCodecVersions,
|
|
133
|
+
changeFormatVersionForEditManager: DependentFormatVersion<EditManagerFormatVersion>,
|
|
134
|
+
changeFormatVersionForMessage: DependentFormatVersion<MessageFormatVersion>,
|
|
129
135
|
protected readonly idCompressor: IIdCompressor,
|
|
130
136
|
schema: TreeStoredSchemaRepository,
|
|
131
137
|
schemaPolicy: SchemaPolicy,
|
|
@@ -163,6 +169,7 @@ export class SharedTreeCore<TEditor extends ChangeFamilyEditor, TChange>
|
|
|
163
169
|
const revisionTagCodec = new RevisionTagCodec(idCompressor);
|
|
164
170
|
const editManagerCodec = makeEditManagerCodec(
|
|
165
171
|
this.editManager.changeFamily.codecs,
|
|
172
|
+
changeFormatVersionForEditManager,
|
|
166
173
|
revisionTagCodec,
|
|
167
174
|
options,
|
|
168
175
|
formatOptions.editManager,
|
|
@@ -183,6 +190,7 @@ export class SharedTreeCore<TEditor extends ChangeFamilyEditor, TChange>
|
|
|
183
190
|
|
|
184
191
|
this.messageCodec = makeMessageCodec(
|
|
185
192
|
changeFamily.codecs,
|
|
193
|
+
changeFormatVersionForMessage,
|
|
186
194
|
new RevisionTagCodec(idCompressor),
|
|
187
195
|
options,
|
|
188
196
|
formatOptions.message,
|
|
@@ -451,8 +459,8 @@ export class SharedTreeCore<TEditor extends ChangeFamilyEditor, TChange>
|
|
|
451
459
|
);
|
|
452
460
|
|
|
453
461
|
// Update the resubmit machine for each commit applied.
|
|
454
|
-
for (const
|
|
455
|
-
this.tryGetResubmitMachine(branchId)?.onSequencedCommitApplied(isLocal);
|
|
462
|
+
for (const commit of commits) {
|
|
463
|
+
this.tryGetResubmitMachine(branchId)?.onSequencedCommitApplied(commit.revision, isLocal);
|
|
456
464
|
}
|
|
457
465
|
}
|
|
458
466
|
|
|
@@ -500,24 +508,24 @@ export class SharedTreeCore<TEditor extends ChangeFamilyEditor, TChange>
|
|
|
500
508
|
} = message;
|
|
501
509
|
|
|
502
510
|
const resubmitMachine = this.getResubmitMachine(branchId);
|
|
503
|
-
|
|
504
|
-
|
|
511
|
+
|
|
512
|
+
const getLocalCommits = (): GraphCommit<TChange>[] => {
|
|
505
513
|
const localCommits = this.editManager.getLocalCommits(branchId);
|
|
506
514
|
const revisionIndex = localCommits.findIndex((c) => c.revision === revision);
|
|
507
515
|
assert(revisionIndex >= 0, 0xbdb /* revision must exist in local commits */);
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
516
|
+
return localCommits.slice(revisionIndex);
|
|
517
|
+
};
|
|
518
|
+
|
|
511
519
|
assert(
|
|
512
520
|
isClonableSchemaPolicy(localOpMetadata),
|
|
513
521
|
0x95e /* Local metadata must contain schema and policy. */,
|
|
514
522
|
);
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
523
|
+
|
|
524
|
+
const enrichedCommit = resubmitMachine.getEnrichedCommit(revision, getLocalCommits);
|
|
525
|
+
if (enrichedCommit !== undefined) {
|
|
526
|
+
this.submitCommit(branchId, enrichedCommit, localOpMetadata, true);
|
|
527
|
+
}
|
|
528
|
+
|
|
521
529
|
break;
|
|
522
530
|
}
|
|
523
531
|
case "branch": {
|