@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
|
@@ -32,6 +32,8 @@ import {
|
|
|
32
32
|
import { sequenceFieldChangeHandler } from "../sequence-field/index.js";
|
|
33
33
|
|
|
34
34
|
import { noChangeCodecFamily } from "./noChangeCodecs.js";
|
|
35
|
+
import type { CodecTree } from "../../codec/index.js";
|
|
36
|
+
import { brand, type Brand } from "../../util/index.js";
|
|
35
37
|
|
|
36
38
|
/**
|
|
37
39
|
* ChangeHandler that only handles no-op / identity changes.
|
|
@@ -205,9 +207,12 @@ export const forbidden = new FieldKindWithEditor(
|
|
|
205
207
|
new Set(),
|
|
206
208
|
);
|
|
207
209
|
|
|
208
|
-
export const fieldKindConfigurations: ReadonlyMap<
|
|
210
|
+
export const fieldKindConfigurations: ReadonlyMap<
|
|
211
|
+
ModularChangeFormatVersion,
|
|
212
|
+
FieldKindConfiguration
|
|
213
|
+
> = new Map([
|
|
209
214
|
[
|
|
210
|
-
1,
|
|
215
|
+
brand(1),
|
|
211
216
|
new Map<FieldKindIdentifier, FieldKindConfigurationEntry>([
|
|
212
217
|
[nodeKey.identifier, { kind: nodeKey, formatVersion: 1 }],
|
|
213
218
|
[required.identifier, { kind: required, formatVersion: 1 }],
|
|
@@ -218,7 +223,7 @@ export const fieldKindConfigurations: ReadonlyMap<number, FieldKindConfiguration
|
|
|
218
223
|
]),
|
|
219
224
|
],
|
|
220
225
|
[
|
|
221
|
-
2,
|
|
226
|
+
brand(2),
|
|
222
227
|
new Map<FieldKindIdentifier, FieldKindConfigurationEntry>([
|
|
223
228
|
[nodeKey.identifier, { kind: nodeKey, formatVersion: 1 }],
|
|
224
229
|
[required.identifier, { kind: required, formatVersion: 2 }],
|
|
@@ -229,7 +234,7 @@ export const fieldKindConfigurations: ReadonlyMap<number, FieldKindConfiguration
|
|
|
229
234
|
]),
|
|
230
235
|
],
|
|
231
236
|
[
|
|
232
|
-
3,
|
|
237
|
+
brand(3),
|
|
233
238
|
new Map<FieldKindIdentifier, FieldKindConfigurationEntry>([
|
|
234
239
|
[nodeKey.identifier, { kind: nodeKey, formatVersion: 1 }],
|
|
235
240
|
[required.identifier, { kind: required, formatVersion: 2 }],
|
|
@@ -240,7 +245,7 @@ export const fieldKindConfigurations: ReadonlyMap<number, FieldKindConfiguration
|
|
|
240
245
|
]),
|
|
241
246
|
],
|
|
242
247
|
[
|
|
243
|
-
4,
|
|
248
|
+
brand(4),
|
|
244
249
|
new Map<FieldKindIdentifier, FieldKindConfigurationEntry>([
|
|
245
250
|
[nodeKey.identifier, { kind: nodeKey, formatVersion: 1 }],
|
|
246
251
|
[required.identifier, { kind: required, formatVersion: 2 }],
|
|
@@ -252,6 +257,25 @@ export const fieldKindConfigurations: ReadonlyMap<number, FieldKindConfiguration
|
|
|
252
257
|
],
|
|
253
258
|
]);
|
|
254
259
|
|
|
260
|
+
export type ModularChangeFormatVersion = Brand<1 | 2 | 3 | 4, "ModularChangeFormatVersion">;
|
|
261
|
+
export function getCodecTreeForModularChangeFormat(
|
|
262
|
+
version: ModularChangeFormatVersion,
|
|
263
|
+
): CodecTree {
|
|
264
|
+
const dependencies =
|
|
265
|
+
fieldKindConfigurations.get(version) ?? fail("Unknown modular change format");
|
|
266
|
+
const children: CodecTree[] = Array.from(dependencies.entries()).map(
|
|
267
|
+
([key, { formatVersion }]) => ({
|
|
268
|
+
name: `FieldKind:${key}`,
|
|
269
|
+
version: formatVersion,
|
|
270
|
+
}),
|
|
271
|
+
);
|
|
272
|
+
return {
|
|
273
|
+
name: "ModularChange",
|
|
274
|
+
version,
|
|
275
|
+
children,
|
|
276
|
+
};
|
|
277
|
+
}
|
|
278
|
+
|
|
255
279
|
/**
|
|
256
280
|
* All supported field kinds.
|
|
257
281
|
*
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
import { assert, oob } from "@fluidframework/core-utils/internal";
|
|
7
7
|
|
|
8
8
|
import {
|
|
9
|
+
type CodecTree,
|
|
9
10
|
type ICodecOptions,
|
|
10
11
|
type IJsonCodec,
|
|
11
12
|
makeVersionedValidatedCodec,
|
|
@@ -14,6 +15,7 @@ import type { FieldKey, ITreeCursorSynchronous } from "../../core/index.js";
|
|
|
14
15
|
import type { FieldBatchCodec, FieldBatchEncodingContext } from "../chunked-forest/index.js";
|
|
15
16
|
|
|
16
17
|
import { Format } from "./format.js";
|
|
18
|
+
import type { Brand } from "../../util/index.js";
|
|
17
19
|
|
|
18
20
|
/**
|
|
19
21
|
* Uses field cursors
|
|
@@ -50,3 +52,8 @@ export function makeForestSummarizerCodec(
|
|
|
50
52
|
},
|
|
51
53
|
});
|
|
52
54
|
}
|
|
55
|
+
|
|
56
|
+
export type ForestFormatVersion = Brand<1, "ForestFormatVersion">;
|
|
57
|
+
export function getCodecTreeForForestFormat(version: ForestFormatVersion): CodecTree {
|
|
58
|
+
return { name: "Forest", version };
|
|
59
|
+
}
|
|
@@ -9,7 +9,11 @@ export {
|
|
|
9
9
|
} from "./editableTreeBinder.js";
|
|
10
10
|
export { allowsValue, assertAllowedValue, isTreeValue } from "./valueUtilities.js";
|
|
11
11
|
|
|
12
|
-
export {
|
|
12
|
+
export {
|
|
13
|
+
ForestSummarizer,
|
|
14
|
+
getCodecTreeForForestFormat,
|
|
15
|
+
type ForestFormatVersion,
|
|
16
|
+
} from "./forest-summary/index.js";
|
|
13
17
|
export {
|
|
14
18
|
cursorForMapTreeField,
|
|
15
19
|
cursorForMapTreeNode,
|
|
@@ -28,6 +32,7 @@ export {
|
|
|
28
32
|
encodeTreeSchema,
|
|
29
33
|
makeSchemaCodec,
|
|
30
34
|
makeSchemaCodecs,
|
|
35
|
+
getCodecTreeForSchemaFormat,
|
|
31
36
|
} from "./schema-index/index.js";
|
|
32
37
|
export {
|
|
33
38
|
stackTreeNodeCursor,
|
|
@@ -98,6 +103,8 @@ export {
|
|
|
98
103
|
defaultChunkPolicy,
|
|
99
104
|
type FieldBatch,
|
|
100
105
|
type FieldBatchCodec,
|
|
106
|
+
type FieldBatchFormatVersion,
|
|
107
|
+
getCodecTreeForFieldBatchFormat,
|
|
101
108
|
makeTreeChunker,
|
|
102
109
|
makeFieldBatchCodec,
|
|
103
110
|
fluidVersionToFieldBatchCodecWriteVersion,
|
|
@@ -139,6 +146,8 @@ export {
|
|
|
139
146
|
isNodeInSchema,
|
|
140
147
|
isFieldInSchema,
|
|
141
148
|
throwOutOfSchema,
|
|
149
|
+
getCodecTreeForModularChangeFormat,
|
|
150
|
+
type ModularChangeFormatVersion,
|
|
142
151
|
} from "./default-schema/index.js";
|
|
143
152
|
|
|
144
153
|
export {
|
|
@@ -190,6 +199,8 @@ export {
|
|
|
190
199
|
type SchemaChange,
|
|
191
200
|
makeSchemaChangeCodecs,
|
|
192
201
|
EncodedSchemaChange,
|
|
202
|
+
getCodecTreeForSchemaChangeFormat,
|
|
203
|
+
type SchemaChangeFormatVersion,
|
|
193
204
|
} from "./schema-edits/index.js";
|
|
194
205
|
|
|
195
206
|
export { makeMitigatedChangeFamily } from "./mitigatedChangeFamily.js";
|
|
@@ -3,6 +3,10 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
export {
|
|
6
|
+
export {
|
|
7
|
+
makeSchemaChangeCodecs,
|
|
8
|
+
getCodecTreeForSchemaChangeFormat,
|
|
9
|
+
type SchemaChangeFormatVersion,
|
|
10
|
+
} from "./schemaChangeCodecs.js";
|
|
7
11
|
export type { SchemaChange } from "./schemaChangeTypes.js";
|
|
8
12
|
export { EncodedSchemaChange } from "./schemaChangeFormat.js";
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
import { assert } from "@fluidframework/core-utils/internal";
|
|
7
7
|
|
|
8
8
|
import {
|
|
9
|
+
type CodecTree,
|
|
9
10
|
type ICodecFamily,
|
|
10
11
|
type ICodecOptions,
|
|
11
12
|
type IJsonCodec,
|
|
@@ -13,11 +14,12 @@ import {
|
|
|
13
14
|
makeVersionDispatchingCodec,
|
|
14
15
|
withSchemaValidation,
|
|
15
16
|
} from "../../codec/index.js";
|
|
16
|
-
import { makeSchemaCodec } from "../schema-index/index.js";
|
|
17
|
+
import { getCodecTreeForSchemaFormat, makeSchemaCodec } from "../schema-index/index.js";
|
|
17
18
|
|
|
18
19
|
import { EncodedSchemaChange } from "./schemaChangeFormat.js";
|
|
19
20
|
import type { SchemaChange } from "./schemaChangeTypes.js";
|
|
20
21
|
import { SchemaVersion } from "../../core/index.js";
|
|
22
|
+
import type { Brand } from "../../util/index.js";
|
|
21
23
|
|
|
22
24
|
/**
|
|
23
25
|
* Create a family of schema change codecs.
|
|
@@ -31,6 +33,20 @@ export function makeSchemaChangeCodecs(options: ICodecOptions): ICodecFamily<Sch
|
|
|
31
33
|
]);
|
|
32
34
|
}
|
|
33
35
|
|
|
36
|
+
export type SchemaChangeFormatVersion = Brand<
|
|
37
|
+
SchemaVersion.v1 | SchemaVersion.v2,
|
|
38
|
+
"SchemaChangeFormatVersion"
|
|
39
|
+
>;
|
|
40
|
+
export function getCodecTreeForSchemaChangeFormat(
|
|
41
|
+
version: SchemaChangeFormatVersion,
|
|
42
|
+
): CodecTree {
|
|
43
|
+
return {
|
|
44
|
+
name: "SchemaChange",
|
|
45
|
+
version,
|
|
46
|
+
children: [getCodecTreeForSchemaFormat(version)],
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
|
|
34
50
|
/**
|
|
35
51
|
* Create a schema change codec.
|
|
36
52
|
* @param options - Specifies common codec options, including which `validator` to use.
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
import { fail, unreachableCase } from "@fluidframework/core-utils/internal";
|
|
7
7
|
|
|
8
8
|
import {
|
|
9
|
+
type CodecTree,
|
|
9
10
|
type FluidClientVersion,
|
|
10
11
|
type ICodecFamily,
|
|
11
12
|
type ICodecOptions,
|
|
@@ -41,6 +42,10 @@ export function clientVersionToSchemaVersion(
|
|
|
41
42
|
return SchemaVersion.v1;
|
|
42
43
|
}
|
|
43
44
|
|
|
45
|
+
export function getCodecTreeForSchemaFormat(version: SchemaVersion): CodecTree {
|
|
46
|
+
return { name: "Schema", version };
|
|
47
|
+
}
|
|
48
|
+
|
|
44
49
|
/**
|
|
45
50
|
* Create a schema codec.
|
|
46
51
|
* @param options - Specifies common codec options, including which `validator` to use.
|
package/src/packageVersion.ts
CHANGED
|
@@ -7,13 +7,14 @@ import type { IFluidHandle } from "@fluidframework/core-interfaces";
|
|
|
7
7
|
|
|
8
8
|
import {
|
|
9
9
|
SchemaFactory,
|
|
10
|
+
SchemaFactoryAlpha,
|
|
10
11
|
type FixRecursiveArraySchema,
|
|
11
12
|
type TreeNodeFromImplicitAllowedTypes,
|
|
12
13
|
type ValidateRecursiveSchema,
|
|
13
14
|
} from "./simple-tree/index.js";
|
|
14
15
|
import type { JsonCompatible } from "./util/index.js";
|
|
15
16
|
|
|
16
|
-
const sf = new
|
|
17
|
+
const sf = new SchemaFactoryAlpha("com.fluidframework.serializable");
|
|
17
18
|
|
|
18
19
|
/**
|
|
19
20
|
* Utilities for storing {@link FluidSerializableAsTree.Data|Fluid Serializable data} in {@link TreeNode}s.
|
|
@@ -23,14 +24,14 @@ const sf = new SchemaFactory("com.fluidframework.serializable");
|
|
|
23
24
|
* Schema which replicate the Fluid Serializable data model with {@link TreeNode}s.
|
|
24
25
|
*
|
|
25
26
|
* Fluid Serializable data can be imported from the {@link FluidSerializableAsTree.Data|Fluid Serializable format} into this format using {@link (TreeAlpha:interface).importConcise} with the {@link FluidSerializableAsTree.(Tree:variable)} schema.
|
|
26
|
-
* @
|
|
27
|
+
* @alpha
|
|
27
28
|
*/
|
|
28
29
|
export namespace FluidSerializableAsTree {
|
|
29
30
|
/**
|
|
30
31
|
* Data which can be serialized by Fluid.
|
|
31
32
|
* @remarks
|
|
32
33
|
* Can be encoded as a {@link FluidSerializableAsTree.(Tree:type)} using {@link (TreeAlpha:interface).importConcise}.
|
|
33
|
-
* @
|
|
34
|
+
* @alpha
|
|
34
35
|
*/
|
|
35
36
|
export type Data = JsonCompatible<IFluidHandle>;
|
|
36
37
|
|
|
@@ -40,7 +41,7 @@ export namespace FluidSerializableAsTree {
|
|
|
40
41
|
* ```typescript
|
|
41
42
|
* const tree = TreeAlpha.importConcise(FluidSerializableAsTree.Tree, { example: { nested: true }, value: 5 });
|
|
42
43
|
* ```
|
|
43
|
-
* @
|
|
44
|
+
* @alpha
|
|
44
45
|
*/
|
|
45
46
|
export const Tree = [
|
|
46
47
|
() => FluidSerializableObject,
|
|
@@ -49,15 +50,15 @@ export namespace FluidSerializableAsTree {
|
|
|
49
50
|
] as const;
|
|
50
51
|
|
|
51
52
|
/**
|
|
52
|
-
* @
|
|
53
|
+
* @alpha
|
|
53
54
|
*/
|
|
54
55
|
export type Tree = TreeNodeFromImplicitAllowedTypes<typeof Tree>;
|
|
55
56
|
|
|
56
57
|
/**
|
|
57
58
|
* Do not use. Exists only as a workaround for {@link https://github.com/microsoft/TypeScript/issues/59550} and {@link https://github.com/microsoft/rushstack/issues/4429}.
|
|
58
|
-
* @system @
|
|
59
|
+
* @system @alpha
|
|
59
60
|
*/
|
|
60
|
-
export const _APIExtractorWorkaroundObjectBase = sf.
|
|
61
|
+
export const _APIExtractorWorkaroundObjectBase = sf.recordRecursive("object", Tree);
|
|
61
62
|
|
|
62
63
|
/**
|
|
63
64
|
* Arbitrary Fluid Serializable object as a {@link TreeNode}.
|
|
@@ -74,7 +75,7 @@ export namespace FluidSerializableAsTree {
|
|
|
74
75
|
* ```
|
|
75
76
|
* @privateRemarks
|
|
76
77
|
* Due to https://github.com/microsoft/TypeScript/issues/61270 this can't be named `Object`.
|
|
77
|
-
* @sealed @
|
|
78
|
+
* @sealed @alpha
|
|
78
79
|
*/
|
|
79
80
|
export class FluidSerializableObject extends _APIExtractorWorkaroundObjectBase {}
|
|
80
81
|
{
|
|
@@ -86,7 +87,7 @@ export namespace FluidSerializableAsTree {
|
|
|
86
87
|
* @privateRemarks
|
|
87
88
|
* In the past this this had to reference the base type (_APIExtractorWorkaroundArrayBase).
|
|
88
89
|
* Testing for this in examples/utils/import-testing now shows it has to reference FluidSerializableAsTree.Array instead.
|
|
89
|
-
* @system @
|
|
90
|
+
* @system @alpha
|
|
90
91
|
*/
|
|
91
92
|
export declare type _RecursiveArrayWorkaroundJsonArray = FixRecursiveArraySchema<
|
|
92
93
|
typeof Array
|
|
@@ -94,7 +95,7 @@ export namespace FluidSerializableAsTree {
|
|
|
94
95
|
|
|
95
96
|
/**
|
|
96
97
|
* Do not use. Exists only as a workaround for {@link https://github.com/microsoft/TypeScript/issues/59550} and {@link https://github.com/microsoft/rushstack/issues/4429}.
|
|
97
|
-
* @system @
|
|
98
|
+
* @system @alpha
|
|
98
99
|
*/
|
|
99
100
|
export const _APIExtractorWorkaroundArrayBase = sf.arrayRecursive("array", Tree);
|
|
100
101
|
|
|
@@ -113,7 +114,7 @@ export namespace FluidSerializableAsTree {
|
|
|
113
114
|
* assert(Tree.is(inner, FluidSerializableAsTree.Array));
|
|
114
115
|
* const leaf = inner[0];
|
|
115
116
|
* ```
|
|
116
|
-
* @sealed @
|
|
117
|
+
* @sealed @alpha
|
|
117
118
|
*/
|
|
118
119
|
export class Array extends _APIExtractorWorkaroundArrayBase {}
|
|
119
120
|
{
|
package/src/shared-tree/index.ts
CHANGED
|
@@ -24,6 +24,7 @@ export {
|
|
|
24
24
|
exportSimpleSchema,
|
|
25
25
|
type SharedTreeKernelView,
|
|
26
26
|
persistedToSimpleSchema,
|
|
27
|
+
getCodecTreeForSharedTreeFormat,
|
|
27
28
|
} from "./sharedTree.js";
|
|
28
29
|
|
|
29
30
|
export {
|
|
@@ -60,3 +61,8 @@ export {
|
|
|
60
61
|
} from "./independentView.js";
|
|
61
62
|
|
|
62
63
|
export type { SharedTreeChange } from "./sharedTreeChangeTypes.js";
|
|
64
|
+
|
|
65
|
+
export {
|
|
66
|
+
getCodecTreeForChangeFormat,
|
|
67
|
+
type SharedTreeChangeFormatVersion,
|
|
68
|
+
} from "./sharedTreeChangeCodecs.js";
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import type { ErasedType, IFluidLoadable } from "@fluidframework/core-interfaces/internal";
|
|
7
|
-
import { assert, fail } from "@fluidframework/core-utils/internal";
|
|
7
|
+
import { assert, fail, unreachableCase } from "@fluidframework/core-utils/internal";
|
|
8
8
|
import type { IChannelStorageService } from "@fluidframework/datastore-definitions/internal";
|
|
9
9
|
import type { IIdCompressor, StableId } from "@fluidframework/id-compressor";
|
|
10
10
|
import type {
|
|
@@ -18,12 +18,15 @@ import {
|
|
|
18
18
|
} from "@fluidframework/telemetry-utils/internal";
|
|
19
19
|
|
|
20
20
|
import {
|
|
21
|
+
type CodecTree,
|
|
21
22
|
type CodecWriteOptions,
|
|
23
|
+
DependentFormatVersion,
|
|
22
24
|
FluidClientVersion,
|
|
23
25
|
FormatValidatorNoOp,
|
|
24
26
|
type ICodecOptions,
|
|
25
27
|
} from "../codec/index.js";
|
|
26
28
|
import {
|
|
29
|
+
type DetachedFieldIndexFormatVersion,
|
|
27
30
|
type FieldKey,
|
|
28
31
|
type GraphCommit,
|
|
29
32
|
type IEditableForest,
|
|
@@ -32,6 +35,7 @@ import {
|
|
|
32
35
|
MapNodeStoredSchema,
|
|
33
36
|
ObjectNodeStoredSchema,
|
|
34
37
|
RevisionTagCodec,
|
|
38
|
+
type SchemaFormatVersion,
|
|
35
39
|
SchemaVersion,
|
|
36
40
|
type TreeFieldStoredSchema,
|
|
37
41
|
type TreeNodeSchemaIdentifier,
|
|
@@ -39,6 +43,7 @@ import {
|
|
|
39
43
|
type TreeStoredSchema,
|
|
40
44
|
TreeStoredSchemaRepository,
|
|
41
45
|
type TreeStoredSchemaSubscription,
|
|
46
|
+
getCodecTreeForDetachedFieldIndexFormat,
|
|
42
47
|
makeDetachedFieldIndex,
|
|
43
48
|
moveToDetachedField,
|
|
44
49
|
} from "../core/index.js";
|
|
@@ -51,11 +56,16 @@ import {
|
|
|
51
56
|
buildChunkedForest,
|
|
52
57
|
buildForest,
|
|
53
58
|
defaultSchemaPolicy,
|
|
59
|
+
getCodecTreeForFieldBatchFormat,
|
|
60
|
+
getCodecTreeForForestFormat,
|
|
61
|
+
getCodecTreeForSchemaFormat,
|
|
54
62
|
jsonableTreeFromFieldCursor,
|
|
55
63
|
makeFieldBatchCodec,
|
|
56
64
|
makeMitigatedChangeFamily,
|
|
57
65
|
makeSchemaCodec,
|
|
58
66
|
makeTreeChunker,
|
|
67
|
+
type FieldBatchFormatVersion,
|
|
68
|
+
type ForestFormatVersion,
|
|
59
69
|
type TreeCompressionStrategyPrivate,
|
|
60
70
|
} from "../feature-libraries/index.js";
|
|
61
71
|
// eslint-disable-next-line import/no-internal-modules
|
|
@@ -63,7 +73,11 @@ import type { FormatV1 } from "../feature-libraries/schema-index/index.js";
|
|
|
63
73
|
import {
|
|
64
74
|
type BranchId,
|
|
65
75
|
type ClonableSchemaAndPolicy,
|
|
76
|
+
type EditManagerFormatVersion,
|
|
66
77
|
type ExplicitCoreCodecVersions,
|
|
78
|
+
getCodecTreeForEditManagerFormatWithChange,
|
|
79
|
+
getCodecTreeForMessageFormatWithChange,
|
|
80
|
+
type MessageFormatVersion,
|
|
67
81
|
SharedTreeCore,
|
|
68
82
|
} from "../shared-tree-core/index.js";
|
|
69
83
|
import {
|
|
@@ -92,11 +106,16 @@ import type { SharedTreeChange } from "./sharedTreeChangeTypes.js";
|
|
|
92
106
|
import type { SharedTreeEditBuilder } from "./sharedTreeEditBuilder.js";
|
|
93
107
|
import { type TreeCheckout, type BranchableTree, createTreeCheckout } from "./treeCheckout.js";
|
|
94
108
|
import {
|
|
109
|
+
brand,
|
|
95
110
|
type Breakable,
|
|
96
111
|
breakingClass,
|
|
97
112
|
type JsonCompatible,
|
|
98
113
|
throwIfBroken,
|
|
99
114
|
} from "../util/index.js";
|
|
115
|
+
import {
|
|
116
|
+
getCodecTreeForChangeFormat,
|
|
117
|
+
type SharedTreeChangeFormatVersion,
|
|
118
|
+
} from "./sharedTreeChangeCodecs.js";
|
|
100
119
|
|
|
101
120
|
/**
|
|
102
121
|
* Copy of data from an {@link ITreePrivate} at some point in time.
|
|
@@ -161,36 +180,78 @@ export interface ITreePrivate extends ITreeInternal {
|
|
|
161
180
|
* TODO: Plumb these write versions into forest, schema, detached field index codec creation.
|
|
162
181
|
*/
|
|
163
182
|
interface ExplicitCodecVersions extends ExplicitCoreCodecVersions {
|
|
164
|
-
forest:
|
|
165
|
-
schema:
|
|
166
|
-
detachedFieldIndex:
|
|
167
|
-
fieldBatch:
|
|
183
|
+
forest: ForestFormatVersion;
|
|
184
|
+
schema: SchemaFormatVersion;
|
|
185
|
+
detachedFieldIndex: DetachedFieldIndexFormatVersion;
|
|
186
|
+
fieldBatch: FieldBatchFormatVersion;
|
|
168
187
|
}
|
|
169
188
|
|
|
170
189
|
const formatVersionToTopLevelCodecVersions = new Map<number, ExplicitCodecVersions>([
|
|
171
190
|
[
|
|
172
191
|
1,
|
|
173
|
-
{
|
|
192
|
+
{
|
|
193
|
+
forest: brand(1),
|
|
194
|
+
schema: brand(1),
|
|
195
|
+
detachedFieldIndex: brand(1),
|
|
196
|
+
editManager: brand(1),
|
|
197
|
+
message: brand(1),
|
|
198
|
+
fieldBatch: brand(1),
|
|
199
|
+
},
|
|
174
200
|
],
|
|
175
201
|
[
|
|
176
202
|
2,
|
|
177
|
-
{
|
|
203
|
+
{
|
|
204
|
+
forest: brand(1),
|
|
205
|
+
schema: brand(1),
|
|
206
|
+
detachedFieldIndex: brand(1),
|
|
207
|
+
editManager: brand(2),
|
|
208
|
+
message: brand(2),
|
|
209
|
+
fieldBatch: brand(1),
|
|
210
|
+
},
|
|
178
211
|
],
|
|
179
212
|
[
|
|
180
213
|
3,
|
|
181
|
-
{
|
|
214
|
+
{
|
|
215
|
+
forest: brand(1),
|
|
216
|
+
schema: brand(1),
|
|
217
|
+
detachedFieldIndex: brand(1),
|
|
218
|
+
editManager: brand(3),
|
|
219
|
+
message: brand(3),
|
|
220
|
+
fieldBatch: brand(1),
|
|
221
|
+
},
|
|
182
222
|
],
|
|
183
223
|
[
|
|
184
224
|
4,
|
|
185
|
-
{
|
|
225
|
+
{
|
|
226
|
+
forest: brand(1),
|
|
227
|
+
schema: brand(1),
|
|
228
|
+
detachedFieldIndex: brand(1),
|
|
229
|
+
editManager: brand(4),
|
|
230
|
+
message: brand(4),
|
|
231
|
+
fieldBatch: brand(1),
|
|
232
|
+
},
|
|
186
233
|
],
|
|
187
234
|
[
|
|
188
235
|
5,
|
|
189
|
-
{
|
|
236
|
+
{
|
|
237
|
+
forest: brand(1),
|
|
238
|
+
schema: brand(2),
|
|
239
|
+
detachedFieldIndex: brand(1),
|
|
240
|
+
editManager: brand(4),
|
|
241
|
+
message: brand(4),
|
|
242
|
+
fieldBatch: brand(1),
|
|
243
|
+
},
|
|
190
244
|
],
|
|
191
245
|
[
|
|
192
246
|
100, // SharedTreeFormatVersion.vSharedBranches
|
|
193
|
-
{
|
|
247
|
+
{
|
|
248
|
+
forest: brand(1),
|
|
249
|
+
schema: brand(2),
|
|
250
|
+
detachedFieldIndex: brand(1),
|
|
251
|
+
editManager: brand(5),
|
|
252
|
+
message: brand(5),
|
|
253
|
+
fieldBatch: brand(1),
|
|
254
|
+
},
|
|
194
255
|
],
|
|
195
256
|
]);
|
|
196
257
|
|
|
@@ -321,6 +382,8 @@ export class SharedTreeKernel
|
|
|
321
382
|
changeFamily,
|
|
322
383
|
options,
|
|
323
384
|
codecVersions,
|
|
385
|
+
changeFormatVersionForEditManager,
|
|
386
|
+
changeFormatVersionForMessage,
|
|
324
387
|
idCompressor,
|
|
325
388
|
schema,
|
|
326
389
|
defaultSchemaPolicy,
|
|
@@ -635,6 +698,83 @@ export const SharedTreeFormatVersion = {
|
|
|
635
698
|
*/
|
|
636
699
|
export type SharedTreeFormatVersion = typeof SharedTreeFormatVersion;
|
|
637
700
|
|
|
701
|
+
/**
|
|
702
|
+
* Defines for each EditManagerFormatVersion the SharedTreeChangeFormatVersion to use.
|
|
703
|
+
* This is an arbitrary mapping that is injected in the EditManger codec.
|
|
704
|
+
* Once an entry is defined and used in production, it cannot be changed.
|
|
705
|
+
* This is because the format for SharedTree changes are not explicitly versioned.
|
|
706
|
+
*/
|
|
707
|
+
export const changeFormatVersionForEditManager = DependentFormatVersion.fromPairs([
|
|
708
|
+
[brand<EditManagerFormatVersion>(1), brand<SharedTreeChangeFormatVersion>(1)],
|
|
709
|
+
[brand<EditManagerFormatVersion>(2), brand<SharedTreeChangeFormatVersion>(2)],
|
|
710
|
+
[brand<EditManagerFormatVersion>(3), brand<SharedTreeChangeFormatVersion>(3)],
|
|
711
|
+
[brand<EditManagerFormatVersion>(4), brand<SharedTreeChangeFormatVersion>(4)],
|
|
712
|
+
[brand<EditManagerFormatVersion>(5), brand<SharedTreeChangeFormatVersion>(4)],
|
|
713
|
+
]);
|
|
714
|
+
|
|
715
|
+
/**
|
|
716
|
+
* Defines for each MessageFormatVersion the SharedTreeChangeFormatVersion to use.
|
|
717
|
+
* This is an arbitrary mapping that is injected in the message codec.
|
|
718
|
+
* Once an entry is defined and used in production, it cannot be changed.
|
|
719
|
+
* This is because the format for SharedTree changes are not explicitly versioned.
|
|
720
|
+
*/
|
|
721
|
+
export const changeFormatVersionForMessage = DependentFormatVersion.fromPairs([
|
|
722
|
+
[brand<MessageFormatVersion>(undefined), brand<SharedTreeChangeFormatVersion>(1)],
|
|
723
|
+
[brand<MessageFormatVersion>(1), brand<SharedTreeChangeFormatVersion>(1)],
|
|
724
|
+
[brand<MessageFormatVersion>(2), brand<SharedTreeChangeFormatVersion>(2)],
|
|
725
|
+
[brand<MessageFormatVersion>(3), brand<SharedTreeChangeFormatVersion>(3)],
|
|
726
|
+
[brand<MessageFormatVersion>(4), brand<SharedTreeChangeFormatVersion>(4)],
|
|
727
|
+
[brand<MessageFormatVersion>(5), brand<SharedTreeChangeFormatVersion>(4)],
|
|
728
|
+
]);
|
|
729
|
+
|
|
730
|
+
function getCodecTreeForEditManagerFormat(version: EditManagerFormatVersion): CodecTree {
|
|
731
|
+
const change = changeFormatVersionForEditManager.lookup(version);
|
|
732
|
+
const changeCodecTree = getCodecTreeForChangeFormat(change);
|
|
733
|
+
return getCodecTreeForEditManagerFormatWithChange(version, changeCodecTree);
|
|
734
|
+
}
|
|
735
|
+
|
|
736
|
+
function getCodecTreeForMessageFormat(version: MessageFormatVersion): CodecTree {
|
|
737
|
+
const change = changeFormatVersionForMessage.lookup(version);
|
|
738
|
+
const changeCodecTree = getCodecTreeForChangeFormat(change);
|
|
739
|
+
return getCodecTreeForMessageFormatWithChange(version, changeCodecTree);
|
|
740
|
+
}
|
|
741
|
+
|
|
742
|
+
export function getCodecTreeForSharedTreeFormat(
|
|
743
|
+
version: SharedTreeFormatVersion[keyof SharedTreeFormatVersion],
|
|
744
|
+
): CodecTree {
|
|
745
|
+
const children: CodecTree[] = [];
|
|
746
|
+
const childCodecs = getCodecVersions(version);
|
|
747
|
+
for (const name of Object.keys(childCodecs) as (keyof ExplicitCodecVersions)[]) {
|
|
748
|
+
switch (name) {
|
|
749
|
+
case "editManager":
|
|
750
|
+
children.push(getCodecTreeForEditManagerFormat(childCodecs.editManager));
|
|
751
|
+
break;
|
|
752
|
+
case "message":
|
|
753
|
+
children.push(getCodecTreeForMessageFormat(childCodecs.message));
|
|
754
|
+
break;
|
|
755
|
+
case "forest":
|
|
756
|
+
children.push(getCodecTreeForForestFormat(childCodecs.forest));
|
|
757
|
+
break;
|
|
758
|
+
case "schema":
|
|
759
|
+
children.push(getCodecTreeForSchemaFormat(childCodecs.schema));
|
|
760
|
+
break;
|
|
761
|
+
case "detachedFieldIndex":
|
|
762
|
+
children.push(getCodecTreeForDetachedFieldIndexFormat(childCodecs.detachedFieldIndex));
|
|
763
|
+
break;
|
|
764
|
+
case "fieldBatch":
|
|
765
|
+
children.push(getCodecTreeForFieldBatchFormat(childCodecs.fieldBatch));
|
|
766
|
+
break;
|
|
767
|
+
default:
|
|
768
|
+
unreachableCase(name);
|
|
769
|
+
}
|
|
770
|
+
}
|
|
771
|
+
return {
|
|
772
|
+
name: "SharedTree",
|
|
773
|
+
version,
|
|
774
|
+
children,
|
|
775
|
+
};
|
|
776
|
+
}
|
|
777
|
+
|
|
638
778
|
/**
|
|
639
779
|
* Configuration options for SharedTree.
|
|
640
780
|
* @beta @input
|