@fluidframework/tree 2.72.0 → 2.73.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 +99 -0
- package/api-report/tree.alpha.api.md +17 -30
- package/dist/alpha.d.ts +3 -1
- package/dist/api.d.ts +6 -2
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +2 -11
- package/dist/api.js.map +1 -1
- package/dist/codec/codec.d.ts +9 -2
- package/dist/codec/codec.d.ts.map +1 -1
- package/dist/codec/codec.js +9 -2
- 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 -1
- package/dist/codec/index.js.map +1 -1
- package/dist/codec/versioned/codec.d.ts +7 -2
- package/dist/codec/versioned/codec.d.ts.map +1 -1
- package/dist/codec/versioned/codec.js +24 -1
- package/dist/codec/versioned/codec.js.map +1 -1
- package/dist/codec/versioned/index.d.ts +1 -1
- package/dist/codec/versioned/index.d.ts.map +1 -1
- package/dist/codec/versioned/index.js +2 -1
- package/dist/codec/versioned/index.js.map +1 -1
- package/dist/core/schema-stored/schema.d.ts +12 -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/detachedFieldIndexCodecs.d.ts.map +1 -1
- package/dist/core/tree/detachedFieldIndexCodecs.js +5 -3
- package/dist/core/tree/detachedFieldIndexCodecs.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/chunkTree.d.ts +4 -5
- package/dist/feature-libraries/chunked-forest/chunkTree.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.js +1 -0
- package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.d.ts +2 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/codecs.d.ts +1 -1
- package/dist/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/codecs.js +31 -17
- package/dist/feature-libraries/chunked-forest/codec/codecs.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/compressedEncode.d.ts +6 -6
- package/dist/feature-libraries/chunked-forest/codec/compressedEncode.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js +4 -2
- package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/format.d.ts +156 -4
- package/dist/feature-libraries/chunked-forest/codec/format.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/format.js +7 -3
- package/dist/feature-libraries/chunked-forest/codec/format.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/formatGeneric.d.ts +8 -3
- package/dist/feature-libraries/chunked-forest/codec/formatGeneric.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/formatGeneric.js +4 -1
- package/dist/feature-libraries/chunked-forest/codec/formatGeneric.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/index.d.ts +1 -1
- 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/codec/schemaBasedEncode.d.ts +13 -13
- package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncode.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncode.js +23 -6
- package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncode.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/uncompressedEncode.d.ts +9 -8
- package/dist/feature-libraries/chunked-forest/codec/uncompressedEncode.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/uncompressedEncode.js +20 -4
- package/dist/feature-libraries/chunked-forest/codec/uncompressedEncode.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/index.d.ts +1 -1
- package/dist/feature-libraries/chunked-forest/index.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/index.js +2 -1
- package/dist/feature-libraries/chunked-forest/index.js.map +1 -1
- package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts +35 -17
- package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
- package/dist/feature-libraries/default-schema/defaultFieldKinds.js +53 -55
- package/dist/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
- package/dist/feature-libraries/default-schema/index.d.ts +1 -3
- package/dist/feature-libraries/default-schema/index.d.ts.map +1 -1
- package/dist/feature-libraries/default-schema/index.js +2 -8
- package/dist/feature-libraries/default-schema/index.js.map +1 -1
- package/dist/feature-libraries/forest-summary/format.d.ts +2 -2
- package/dist/feature-libraries/forest-summary/format.d.ts.map +1 -1
- package/dist/feature-libraries/forest-summary/format.js +4 -2
- package/dist/feature-libraries/forest-summary/format.js.map +1 -1
- package/dist/feature-libraries/index.d.ts +4 -3
- package/dist/feature-libraries/index.d.ts.map +1 -1
- package/dist/feature-libraries/index.js +8 -7
- package/dist/feature-libraries/index.js.map +1 -1
- package/dist/feature-libraries/modular-schema/comparison.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/comparison.js +1 -2
- package/dist/feature-libraries/modular-schema/comparison.js.map +1 -1
- package/dist/feature-libraries/modular-schema/fieldKind.d.ts +38 -12
- package/dist/feature-libraries/modular-schema/fieldKind.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/fieldKind.js +29 -11
- package/dist/feature-libraries/modular-schema/fieldKind.js.map +1 -1
- package/dist/feature-libraries/modular-schema/fieldKindConfiguration.d.ts +2 -2
- package/dist/feature-libraries/modular-schema/fieldKindConfiguration.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/fieldKindConfiguration.js.map +1 -1
- package/dist/feature-libraries/modular-schema/genericFieldKind.d.ts +2 -2
- package/dist/feature-libraries/modular-schema/genericFieldKind.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/genericFieldKind.js +3 -2
- package/dist/feature-libraries/modular-schema/genericFieldKind.js.map +1 -1
- package/dist/feature-libraries/modular-schema/index.d.ts +0 -1
- package/dist/feature-libraries/modular-schema/index.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/index.js +1 -3
- package/dist/feature-libraries/modular-schema/index.js.map +1 -1
- package/dist/feature-libraries/modular-schema/isNeverTree.d.ts +5 -6
- package/dist/feature-libraries/modular-schema/isNeverTree.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/isNeverTree.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts +8 -8
- package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFamily.js +1 -2
- package/dist/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFormat.d.ts +66 -9
- package/dist/feature-libraries/modular-schema/modularChangeFormat.d.ts.map +1 -1
- package/dist/feature-libraries/object-forest/objectForest.d.ts.map +1 -1
- package/dist/feature-libraries/object-forest/objectForest.js +3 -2
- package/dist/feature-libraries/object-forest/objectForest.js.map +1 -1
- package/dist/feature-libraries/optional-field/index.d.ts +1 -1
- package/dist/feature-libraries/optional-field/index.d.ts.map +1 -1
- package/dist/feature-libraries/optional-field/index.js.map +1 -1
- package/dist/feature-libraries/optional-field/optionalFieldCodecs.d.ts.map +1 -1
- package/dist/feature-libraries/optional-field/optionalFieldCodecs.js +1 -5
- package/dist/feature-libraries/optional-field/optionalFieldCodecs.js.map +1 -1
- package/dist/feature-libraries/schema-index/codec.d.ts.map +1 -1
- package/dist/feature-libraries/schema-index/codec.js +5 -3
- package/dist/feature-libraries/schema-index/codec.js.map +1 -1
- package/dist/feature-libraries/{default-schema/schemaChecker.d.ts → schemaChecker.d.ts} +2 -2
- package/dist/feature-libraries/schemaChecker.d.ts.map +1 -0
- package/dist/feature-libraries/{default-schema/schemaChecker.js → schemaChecker.js} +3 -3
- package/dist/feature-libraries/schemaChecker.js.map +1 -0
- package/dist/feature-libraries/sequence-field/sequenceFieldCodecs.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldCodecs.js +0 -2
- package/dist/feature-libraries/sequence-field/sequenceFieldCodecs.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -3
- package/dist/index.js.map +1 -1
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/shared-tree/index.d.ts +1 -1
- package/dist/shared-tree/index.d.ts.map +1 -1
- package/dist/shared-tree/index.js +1 -2
- package/dist/shared-tree/index.js.map +1 -1
- package/dist/shared-tree/sharedTree.d.ts +0 -44
- package/dist/shared-tree/sharedTree.d.ts.map +1 -1
- package/dist/shared-tree/sharedTree.js +1 -52
- package/dist/shared-tree/sharedTree.js.map +1 -1
- package/dist/shared-tree/sharedTreeChangeCodecs.d.ts +1 -1
- package/dist/shared-tree/sharedTreeChangeCodecs.d.ts.map +1 -1
- package/dist/shared-tree/sharedTreeChangeCodecs.js +0 -2
- package/dist/shared-tree/sharedTreeChangeCodecs.js.map +1 -1
- package/dist/shared-tree-core/editManagerCodecs.d.ts.map +1 -1
- package/dist/shared-tree-core/editManagerCodecs.js +12 -6
- package/dist/shared-tree-core/editManagerCodecs.js.map +1 -1
- package/dist/shared-tree-core/editManagerFormatCommons.d.ts +3 -4
- package/dist/shared-tree-core/editManagerFormatCommons.d.ts.map +1 -1
- package/dist/shared-tree-core/editManagerFormatCommons.js +5 -8
- package/dist/shared-tree-core/editManagerFormatCommons.js.map +1 -1
- package/dist/shared-tree-core/index.d.ts +2 -2
- package/dist/shared-tree-core/index.d.ts.map +1 -1
- package/dist/shared-tree-core/index.js +3 -2
- package/dist/shared-tree-core/index.js.map +1 -1
- package/dist/shared-tree-core/messageCodecs.d.ts.map +1 -1
- package/dist/shared-tree-core/messageCodecs.js +20 -9
- package/dist/shared-tree-core/messageCodecs.js.map +1 -1
- package/dist/shared-tree-core/messageFormat.d.ts +4 -6
- package/dist/shared-tree-core/messageFormat.d.ts.map +1 -1
- package/dist/shared-tree-core/messageFormat.js +9 -7
- package/dist/shared-tree-core/messageFormat.js.map +1 -1
- package/dist/simple-tree/api/configuration.d.ts +2 -0
- package/dist/simple-tree/api/configuration.d.ts.map +1 -1
- package/dist/simple-tree/api/configuration.js +10 -0
- package/dist/simple-tree/api/configuration.js.map +1 -1
- package/dist/simple-tree/api/index.d.ts +1 -0
- package/dist/simple-tree/api/index.d.ts.map +1 -1
- package/dist/simple-tree/api/index.js +5 -1
- package/dist/simple-tree/api/index.js.map +1 -1
- package/dist/simple-tree/api/schemaFromSimple.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaFromSimple.js +7 -1
- package/dist/simple-tree/api/schemaFromSimple.js.map +1 -1
- package/dist/simple-tree/api/simpleSchemaCodec.js +4 -6
- package/dist/simple-tree/api/simpleSchemaCodec.js.map +1 -1
- package/dist/simple-tree/api/snapshotCompatibilityChecker.d.ts +103 -0
- package/dist/simple-tree/api/snapshotCompatibilityChecker.d.ts.map +1 -0
- package/dist/simple-tree/api/snapshotCompatibilityChecker.js +128 -0
- package/dist/simple-tree/api/snapshotCompatibilityChecker.js.map +1 -0
- package/dist/simple-tree/api/tree.d.ts +1 -1
- package/dist/simple-tree/api/tree.js +1 -1
- package/dist/simple-tree/api/tree.js.map +1 -1
- package/dist/simple-tree/core/allowedTypes.js +1 -1
- package/dist/simple-tree/core/allowedTypes.js.map +1 -1
- package/dist/simple-tree/core/index.d.ts +3 -3
- package/dist/simple-tree/core/index.d.ts.map +1 -1
- package/dist/simple-tree/core/index.js +3 -1
- package/dist/simple-tree/core/index.js.map +1 -1
- package/dist/simple-tree/core/toStored.d.ts +12 -5
- package/dist/simple-tree/core/toStored.d.ts.map +1 -1
- package/dist/simple-tree/core/toStored.js +26 -10
- package/dist/simple-tree/core/toStored.js.map +1 -1
- package/dist/simple-tree/core/treeNodeSchema.d.ts +1 -6
- 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/treeNodeValid.d.ts +1 -1
- package/dist/simple-tree/core/treeNodeValid.d.ts.map +1 -1
- package/dist/simple-tree/core/treeNodeValid.js +1 -2
- package/dist/simple-tree/core/treeNodeValid.js.map +1 -1
- package/dist/simple-tree/fieldSchema.d.ts.map +1 -1
- package/dist/simple-tree/fieldSchema.js +1 -8
- package/dist/simple-tree/fieldSchema.js.map +1 -1
- package/dist/simple-tree/index.d.ts +2 -2
- package/dist/simple-tree/index.d.ts.map +1 -1
- package/dist/simple-tree/index.js +9 -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 +0 -1
- package/dist/simple-tree/leafNodeSchema.js.map +1 -1
- package/dist/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/array/arrayNode.js +13 -49
- package/dist/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
- package/dist/simple-tree/node-kinds/map/mapNode.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/map/mapNode.js +1 -5
- package/dist/simple-tree/node-kinds/map/mapNode.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 +2 -10
- package/dist/simple-tree/node-kinds/object/objectNode.js.map +1 -1
- package/dist/simple-tree/node-kinds/record/recordNode.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/record/recordNode.js +1 -5
- package/dist/simple-tree/node-kinds/record/recordNode.js.map +1 -1
- package/dist/simple-tree/simpleSchema.d.ts +15 -3
- package/dist/simple-tree/simpleSchema.d.ts.map +1 -1
- package/dist/simple-tree/simpleSchema.js.map +1 -1
- package/dist/simple-tree/toStoredSchema.d.ts +20 -8
- package/dist/simple-tree/toStoredSchema.d.ts.map +1 -1
- package/dist/simple-tree/toStoredSchema.js +27 -22
- package/dist/simple-tree/toStoredSchema.js.map +1 -1
- package/dist/simple-tree/unhydratedFlexTreeFromInsertable.d.ts.map +1 -1
- package/dist/simple-tree/unhydratedFlexTreeFromInsertable.js +18 -15
- package/dist/simple-tree/unhydratedFlexTreeFromInsertable.js.map +1 -1
- package/dist/tableSchema.d.ts +22 -52
- package/dist/tableSchema.d.ts.map +1 -1
- package/dist/tableSchema.js +141 -277
- package/dist/tableSchema.js.map +1 -1
- package/dist/util/arrayUtilities.d.ts +45 -0
- package/dist/util/arrayUtilities.d.ts.map +1 -0
- package/dist/util/arrayUtilities.js +76 -0
- package/dist/util/arrayUtilities.js.map +1 -0
- package/dist/util/index.d.ts +1 -0
- package/dist/util/index.d.ts.map +1 -1
- package/dist/util/index.js +7 -2
- package/dist/util/index.js.map +1 -1
- package/lib/alpha.d.ts +3 -1
- package/lib/api.d.ts +6 -2
- package/lib/api.d.ts.map +1 -1
- package/lib/api.js +2 -13
- package/lib/api.js.map +1 -1
- package/lib/codec/codec.d.ts +9 -2
- package/lib/codec/codec.d.ts.map +1 -1
- package/lib/codec/codec.js +9 -2
- 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 +7 -2
- package/lib/codec/versioned/codec.d.ts.map +1 -1
- package/lib/codec/versioned/codec.js +22 -0
- package/lib/codec/versioned/codec.js.map +1 -1
- package/lib/codec/versioned/index.d.ts +1 -1
- package/lib/codec/versioned/index.d.ts.map +1 -1
- package/lib/codec/versioned/index.js +1 -1
- package/lib/codec/versioned/index.js.map +1 -1
- package/lib/core/schema-stored/schema.d.ts +12 -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/detachedFieldIndexCodecs.d.ts.map +1 -1
- package/lib/core/tree/detachedFieldIndexCodecs.js +5 -3
- package/lib/core/tree/detachedFieldIndexCodecs.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/chunkTree.d.ts +4 -5
- package/lib/feature-libraries/chunked-forest/chunkTree.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.js +2 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.d.ts +2 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/codecs.d.ts +1 -1
- package/lib/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/codecs.js +34 -20
- package/lib/feature-libraries/chunked-forest/codec/codecs.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/compressedEncode.d.ts +6 -6
- package/lib/feature-libraries/chunked-forest/codec/compressedEncode.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js +4 -2
- package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/format.d.ts +156 -4
- package/lib/feature-libraries/chunked-forest/codec/format.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/format.js +6 -2
- package/lib/feature-libraries/chunked-forest/codec/format.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/formatGeneric.d.ts +8 -3
- package/lib/feature-libraries/chunked-forest/codec/formatGeneric.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/formatGeneric.js +4 -1
- package/lib/feature-libraries/chunked-forest/codec/formatGeneric.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/index.d.ts +1 -1
- package/lib/feature-libraries/chunked-forest/codec/index.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/index.js +1 -1
- package/lib/feature-libraries/chunked-forest/codec/index.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncode.d.ts +13 -13
- package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncode.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncode.js +22 -6
- package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncode.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/uncompressedEncode.d.ts +9 -8
- package/lib/feature-libraries/chunked-forest/codec/uncompressedEncode.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/uncompressedEncode.js +17 -2
- package/lib/feature-libraries/chunked-forest/codec/uncompressedEncode.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/index.d.ts +1 -1
- package/lib/feature-libraries/chunked-forest/index.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/index.js +1 -1
- package/lib/feature-libraries/chunked-forest/index.js.map +1 -1
- package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts +35 -17
- package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
- package/lib/feature-libraries/default-schema/defaultFieldKinds.js +55 -57
- package/lib/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
- package/lib/feature-libraries/default-schema/index.d.ts +1 -3
- package/lib/feature-libraries/default-schema/index.d.ts.map +1 -1
- package/lib/feature-libraries/default-schema/index.js +1 -3
- package/lib/feature-libraries/default-schema/index.js.map +1 -1
- package/lib/feature-libraries/forest-summary/format.d.ts +2 -2
- package/lib/feature-libraries/forest-summary/format.d.ts.map +1 -1
- package/lib/feature-libraries/forest-summary/format.js +4 -2
- package/lib/feature-libraries/forest-summary/format.js.map +1 -1
- package/lib/feature-libraries/index.d.ts +4 -3
- package/lib/feature-libraries/index.d.ts.map +1 -1
- package/lib/feature-libraries/index.js +4 -3
- package/lib/feature-libraries/index.js.map +1 -1
- package/lib/feature-libraries/modular-schema/comparison.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/comparison.js +1 -2
- package/lib/feature-libraries/modular-schema/comparison.js.map +1 -1
- package/lib/feature-libraries/modular-schema/fieldKind.d.ts +38 -12
- package/lib/feature-libraries/modular-schema/fieldKind.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/fieldKind.js +29 -11
- package/lib/feature-libraries/modular-schema/fieldKind.js.map +1 -1
- package/lib/feature-libraries/modular-schema/fieldKindConfiguration.d.ts +2 -2
- package/lib/feature-libraries/modular-schema/fieldKindConfiguration.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/fieldKindConfiguration.js.map +1 -1
- package/lib/feature-libraries/modular-schema/genericFieldKind.d.ts +2 -2
- package/lib/feature-libraries/modular-schema/genericFieldKind.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/genericFieldKind.js +3 -2
- package/lib/feature-libraries/modular-schema/genericFieldKind.js.map +1 -1
- package/lib/feature-libraries/modular-schema/index.d.ts +0 -1
- package/lib/feature-libraries/modular-schema/index.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/index.js +0 -1
- package/lib/feature-libraries/modular-schema/index.js.map +1 -1
- package/lib/feature-libraries/modular-schema/isNeverTree.d.ts +5 -6
- package/lib/feature-libraries/modular-schema/isNeverTree.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/isNeverTree.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts +8 -8
- package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFamily.js +1 -2
- package/lib/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFormat.d.ts +66 -9
- package/lib/feature-libraries/modular-schema/modularChangeFormat.d.ts.map +1 -1
- package/lib/feature-libraries/object-forest/objectForest.d.ts.map +1 -1
- package/lib/feature-libraries/object-forest/objectForest.js +2 -1
- package/lib/feature-libraries/object-forest/objectForest.js.map +1 -1
- package/lib/feature-libraries/optional-field/index.d.ts +1 -1
- package/lib/feature-libraries/optional-field/index.d.ts.map +1 -1
- package/lib/feature-libraries/optional-field/index.js.map +1 -1
- package/lib/feature-libraries/optional-field/optionalFieldCodecs.d.ts.map +1 -1
- package/lib/feature-libraries/optional-field/optionalFieldCodecs.js +1 -5
- package/lib/feature-libraries/optional-field/optionalFieldCodecs.js.map +1 -1
- package/lib/feature-libraries/schema-index/codec.d.ts.map +1 -1
- package/lib/feature-libraries/schema-index/codec.js +5 -3
- package/lib/feature-libraries/schema-index/codec.js.map +1 -1
- package/lib/feature-libraries/{default-schema/schemaChecker.d.ts → schemaChecker.d.ts} +2 -2
- package/lib/feature-libraries/schemaChecker.d.ts.map +1 -0
- package/lib/feature-libraries/{default-schema/schemaChecker.js → schemaChecker.js} +3 -3
- package/lib/feature-libraries/schemaChecker.js.map +1 -0
- package/lib/feature-libraries/sequence-field/sequenceFieldCodecs.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldCodecs.js +0 -2
- package/lib/feature-libraries/sequence-field/sequenceFieldCodecs.js.map +1 -1
- package/lib/index.d.ts +2 -2
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +2 -2
- package/lib/index.js.map +1 -1
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/shared-tree/index.d.ts +1 -1
- package/lib/shared-tree/index.d.ts.map +1 -1
- package/lib/shared-tree/index.js +1 -1
- package/lib/shared-tree/index.js.map +1 -1
- package/lib/shared-tree/sharedTree.d.ts +0 -44
- package/lib/shared-tree/sharedTree.d.ts.map +1 -1
- package/lib/shared-tree/sharedTree.js +0 -51
- package/lib/shared-tree/sharedTree.js.map +1 -1
- package/lib/shared-tree/sharedTreeChangeCodecs.d.ts +1 -1
- package/lib/shared-tree/sharedTreeChangeCodecs.d.ts.map +1 -1
- package/lib/shared-tree/sharedTreeChangeCodecs.js +0 -2
- package/lib/shared-tree/sharedTreeChangeCodecs.js.map +1 -1
- package/lib/shared-tree-core/editManagerCodecs.d.ts.map +1 -1
- package/lib/shared-tree-core/editManagerCodecs.js +13 -7
- package/lib/shared-tree-core/editManagerCodecs.js.map +1 -1
- package/lib/shared-tree-core/editManagerFormatCommons.d.ts +3 -4
- package/lib/shared-tree-core/editManagerFormatCommons.d.ts.map +1 -1
- package/lib/shared-tree-core/editManagerFormatCommons.js +4 -7
- package/lib/shared-tree-core/editManagerFormatCommons.js.map +1 -1
- package/lib/shared-tree-core/index.d.ts +2 -2
- package/lib/shared-tree-core/index.d.ts.map +1 -1
- package/lib/shared-tree-core/index.js +2 -2
- package/lib/shared-tree-core/index.js.map +1 -1
- package/lib/shared-tree-core/messageCodecs.d.ts.map +1 -1
- package/lib/shared-tree-core/messageCodecs.js +21 -10
- package/lib/shared-tree-core/messageCodecs.js.map +1 -1
- package/lib/shared-tree-core/messageFormat.d.ts +4 -6
- package/lib/shared-tree-core/messageFormat.d.ts.map +1 -1
- package/lib/shared-tree-core/messageFormat.js +8 -6
- package/lib/shared-tree-core/messageFormat.js.map +1 -1
- package/lib/simple-tree/api/configuration.d.ts +2 -0
- package/lib/simple-tree/api/configuration.d.ts.map +1 -1
- package/lib/simple-tree/api/configuration.js +10 -0
- package/lib/simple-tree/api/configuration.js.map +1 -1
- package/lib/simple-tree/api/index.d.ts +1 -0
- package/lib/simple-tree/api/index.d.ts.map +1 -1
- package/lib/simple-tree/api/index.js +1 -0
- package/lib/simple-tree/api/index.js.map +1 -1
- package/lib/simple-tree/api/schemaFromSimple.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaFromSimple.js +8 -2
- package/lib/simple-tree/api/schemaFromSimple.js.map +1 -1
- package/lib/simple-tree/api/simpleSchemaCodec.js +5 -7
- package/lib/simple-tree/api/simpleSchemaCodec.js.map +1 -1
- package/lib/simple-tree/api/snapshotCompatibilityChecker.d.ts +103 -0
- package/lib/simple-tree/api/snapshotCompatibilityChecker.d.ts.map +1 -0
- package/lib/simple-tree/api/snapshotCompatibilityChecker.js +122 -0
- package/lib/simple-tree/api/snapshotCompatibilityChecker.js.map +1 -0
- package/lib/simple-tree/api/tree.d.ts +1 -1
- package/lib/simple-tree/api/tree.js +1 -1
- package/lib/simple-tree/api/tree.js.map +1 -1
- package/lib/simple-tree/core/allowedTypes.js +1 -1
- package/lib/simple-tree/core/allowedTypes.js.map +1 -1
- package/lib/simple-tree/core/index.d.ts +3 -3
- package/lib/simple-tree/core/index.d.ts.map +1 -1
- package/lib/simple-tree/core/index.js +2 -2
- package/lib/simple-tree/core/index.js.map +1 -1
- package/lib/simple-tree/core/toStored.d.ts +12 -5
- package/lib/simple-tree/core/toStored.d.ts.map +1 -1
- package/lib/simple-tree/core/toStored.js +25 -9
- package/lib/simple-tree/core/toStored.js.map +1 -1
- package/lib/simple-tree/core/treeNodeSchema.d.ts +1 -6
- 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/treeNodeValid.d.ts +1 -1
- package/lib/simple-tree/core/treeNodeValid.d.ts.map +1 -1
- package/lib/simple-tree/core/treeNodeValid.js +1 -2
- package/lib/simple-tree/core/treeNodeValid.js.map +1 -1
- package/lib/simple-tree/fieldSchema.d.ts.map +1 -1
- package/lib/simple-tree/fieldSchema.js +2 -9
- package/lib/simple-tree/fieldSchema.js.map +1 -1
- package/lib/simple-tree/index.d.ts +2 -2
- package/lib/simple-tree/index.d.ts.map +1 -1
- package/lib/simple-tree/index.js +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 +1 -2
- package/lib/simple-tree/leafNodeSchema.js.map +1 -1
- package/lib/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/array/arrayNode.js +15 -51
- package/lib/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
- package/lib/simple-tree/node-kinds/map/mapNode.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/map/mapNode.js +3 -7
- package/lib/simple-tree/node-kinds/map/mapNode.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 +3 -11
- package/lib/simple-tree/node-kinds/object/objectNode.js.map +1 -1
- package/lib/simple-tree/node-kinds/record/recordNode.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/record/recordNode.js +3 -7
- package/lib/simple-tree/node-kinds/record/recordNode.js.map +1 -1
- package/lib/simple-tree/simpleSchema.d.ts +15 -3
- package/lib/simple-tree/simpleSchema.d.ts.map +1 -1
- package/lib/simple-tree/simpleSchema.js.map +1 -1
- package/lib/simple-tree/toStoredSchema.d.ts +20 -8
- package/lib/simple-tree/toStoredSchema.d.ts.map +1 -1
- package/lib/simple-tree/toStoredSchema.js +28 -24
- package/lib/simple-tree/toStoredSchema.js.map +1 -1
- package/lib/simple-tree/unhydratedFlexTreeFromInsertable.d.ts.map +1 -1
- package/lib/simple-tree/unhydratedFlexTreeFromInsertable.js +20 -17
- package/lib/simple-tree/unhydratedFlexTreeFromInsertable.js.map +1 -1
- package/lib/tableSchema.d.ts +22 -52
- package/lib/tableSchema.d.ts.map +1 -1
- package/lib/tableSchema.js +143 -279
- package/lib/tableSchema.js.map +1 -1
- package/lib/util/arrayUtilities.d.ts +45 -0
- package/lib/util/arrayUtilities.d.ts.map +1 -0
- package/lib/util/arrayUtilities.js +69 -0
- package/lib/util/arrayUtilities.js.map +1 -0
- package/lib/util/index.d.ts +1 -0
- package/lib/util/index.d.ts.map +1 -1
- package/lib/util/index.js +1 -0
- package/lib/util/index.js.map +1 -1
- package/package.json +21 -21
- package/src/api.ts +22 -11
- package/src/codec/codec.ts +10 -2
- package/src/codec/index.ts +1 -0
- package/src/codec/versioned/codec.ts +40 -2
- package/src/codec/versioned/index.ts +1 -0
- package/src/core/schema-stored/schema.ts +12 -1
- package/src/core/tree/detachedFieldIndexCodecs.ts +10 -3
- package/src/feature-libraries/README.md +1 -1
- package/src/feature-libraries/chunked-forest/chunkTree.ts +3 -3
- package/src/feature-libraries/chunked-forest/codec/chunkDecoding.ts +5 -0
- package/src/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.ts +2 -1
- package/src/feature-libraries/chunked-forest/codec/codecs.ts +52 -19
- package/src/feature-libraries/chunked-forest/codec/compressedEncode.ts +8 -3
- package/src/feature-libraries/chunked-forest/codec/format.ts +14 -4
- package/src/feature-libraries/chunked-forest/codec/formatGeneric.ts +7 -2
- package/src/feature-libraries/chunked-forest/codec/index.ts +1 -4
- package/src/feature-libraries/chunked-forest/codec/schemaBasedEncode.ts +62 -9
- package/src/feature-libraries/chunked-forest/codec/uncompressedEncode.ts +24 -2
- package/src/feature-libraries/chunked-forest/index.ts +1 -1
- package/src/feature-libraries/default-schema/defaultFieldKinds.ts +86 -74
- package/src/feature-libraries/default-schema/index.ts +1 -9
- package/src/feature-libraries/forest-summary/format.ts +15 -9
- package/src/feature-libraries/index.ts +7 -5
- package/src/feature-libraries/modular-schema/comparison.ts +2 -3
- package/src/feature-libraries/modular-schema/fieldKind.ts +90 -13
- package/src/feature-libraries/modular-schema/fieldKindConfiguration.ts +2 -3
- package/src/feature-libraries/modular-schema/genericFieldKind.ts +6 -6
- package/src/feature-libraries/modular-schema/index.ts +0 -1
- package/src/feature-libraries/modular-schema/isNeverTree.ts +7 -8
- package/src/feature-libraries/modular-schema/modularChangeFamily.ts +13 -13
- package/src/feature-libraries/object-forest/objectForest.ts +2 -6
- package/src/feature-libraries/optional-field/index.ts +1 -0
- package/src/feature-libraries/optional-field/optionalFieldCodecs.ts +1 -5
- package/src/feature-libraries/schema-index/codec.ts +10 -3
- package/src/feature-libraries/{default-schema/schemaChecker.ts → schemaChecker.ts} +4 -4
- package/src/feature-libraries/sequence-field/sequenceFieldCodecs.ts +0 -2
- package/src/index.ts +3 -1
- package/src/packageVersion.ts +1 -1
- package/src/shared-tree/index.ts +0 -1
- package/src/shared-tree/sharedTree.ts +0 -70
- package/src/shared-tree/sharedTreeChangeCodecs.ts +1 -6
- package/src/shared-tree-core/editManagerCodecs.ts +19 -7
- package/src/shared-tree-core/editManagerFormatCommons.ts +11 -12
- package/src/shared-tree-core/index.ts +6 -2
- package/src/shared-tree-core/messageCodecs.ts +32 -17
- package/src/shared-tree-core/messageFormat.ts +8 -6
- package/src/simple-tree/api/configuration.ts +17 -4
- package/src/simple-tree/api/index.ts +5 -0
- package/src/simple-tree/api/schemaFromSimple.ts +14 -6
- package/src/simple-tree/api/simpleSchemaCodec.ts +10 -9
- package/src/simple-tree/api/snapshotCompatibilityChecker.ts +135 -0
- package/src/simple-tree/api/tree.ts +1 -1
- package/src/simple-tree/core/allowedTypes.ts +1 -1
- package/src/simple-tree/core/index.ts +3 -1
- package/src/simple-tree/core/toStored.ts +42 -18
- package/src/simple-tree/core/treeNodeSchema.ts +1 -7
- package/src/simple-tree/core/treeNodeValid.ts +0 -2
- package/src/simple-tree/fieldSchema.ts +2 -11
- package/src/simple-tree/index.ts +6 -1
- package/src/simple-tree/leafNodeSchema.ts +1 -2
- package/src/simple-tree/node-kinds/array/arrayNode.ts +26 -75
- package/src/simple-tree/node-kinds/map/mapNode.ts +1 -15
- package/src/simple-tree/node-kinds/object/objectNode.ts +2 -17
- package/src/simple-tree/node-kinds/record/recordNode.ts +1 -15
- package/src/simple-tree/simpleSchema.ts +16 -3
- package/src/simple-tree/toStoredSchema.ts +54 -38
- package/src/simple-tree/unhydratedFlexTreeFromInsertable.ts +22 -17
- package/src/tableSchema.ts +110 -334
- package/src/util/arrayUtilities.ts +88 -0
- package/src/util/index.ts +6 -0
- package/dist/feature-libraries/default-schema/defaultSchema.d.ts +0 -10
- package/dist/feature-libraries/default-schema/defaultSchema.d.ts.map +0 -1
- package/dist/feature-libraries/default-schema/defaultSchema.js +0 -15
- package/dist/feature-libraries/default-schema/defaultSchema.js.map +0 -1
- package/dist/feature-libraries/default-schema/schemaChecker.d.ts.map +0 -1
- package/dist/feature-libraries/default-schema/schemaChecker.js.map +0 -1
- package/dist/feature-libraries/modular-schema/fieldKindWithEditor.d.ts +0 -50
- package/dist/feature-libraries/modular-schema/fieldKindWithEditor.d.ts.map +0 -1
- package/dist/feature-libraries/modular-schema/fieldKindWithEditor.js +0 -76
- package/dist/feature-libraries/modular-schema/fieldKindWithEditor.js.map +0 -1
- package/dist/feature-libraries/optional-field/optionalFieldCodecV1.d.ts +0 -12
- package/dist/feature-libraries/optional-field/optionalFieldCodecV1.d.ts.map +0 -1
- package/dist/feature-libraries/optional-field/optionalFieldCodecV1.js +0 -158
- package/dist/feature-libraries/optional-field/optionalFieldCodecV1.js.map +0 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldCodecV1.d.ts +0 -11
- package/dist/feature-libraries/sequence-field/sequenceFieldCodecV1.d.ts.map +0 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldCodecV1.js +0 -245
- package/dist/feature-libraries/sequence-field/sequenceFieldCodecV1.js.map +0 -1
- package/lib/feature-libraries/default-schema/defaultSchema.d.ts +0 -10
- package/lib/feature-libraries/default-schema/defaultSchema.d.ts.map +0 -1
- package/lib/feature-libraries/default-schema/defaultSchema.js +0 -12
- package/lib/feature-libraries/default-schema/defaultSchema.js.map +0 -1
- package/lib/feature-libraries/default-schema/schemaChecker.d.ts.map +0 -1
- package/lib/feature-libraries/default-schema/schemaChecker.js.map +0 -1
- package/lib/feature-libraries/modular-schema/fieldKindWithEditor.d.ts +0 -50
- package/lib/feature-libraries/modular-schema/fieldKindWithEditor.d.ts.map +0 -1
- package/lib/feature-libraries/modular-schema/fieldKindWithEditor.js +0 -71
- package/lib/feature-libraries/modular-schema/fieldKindWithEditor.js.map +0 -1
- package/lib/feature-libraries/optional-field/optionalFieldCodecV1.d.ts +0 -12
- package/lib/feature-libraries/optional-field/optionalFieldCodecV1.d.ts.map +0 -1
- package/lib/feature-libraries/optional-field/optionalFieldCodecV1.js +0 -154
- package/lib/feature-libraries/optional-field/optionalFieldCodecV1.js.map +0 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldCodecV1.d.ts +0 -11
- package/lib/feature-libraries/sequence-field/sequenceFieldCodecV1.d.ts.map +0 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldCodecV1.js +0 -241
- package/lib/feature-libraries/sequence-field/sequenceFieldCodecV1.js.map +0 -1
- package/src/feature-libraries/default-schema/defaultSchema.ts +0 -15
- package/src/feature-libraries/modular-schema/fieldKindWithEditor.ts +0 -108
- package/src/feature-libraries/optional-field/optionalFieldCodecV1.ts +0 -208
- package/src/feature-libraries/sequence-field/sequenceFieldCodecV1.ts +0 -344
|
@@ -8,7 +8,14 @@ import type {
|
|
|
8
8
|
FieldKindData,
|
|
9
9
|
Multiplicity,
|
|
10
10
|
SchemaPolicy,
|
|
11
|
+
TreeFieldStoredSchema,
|
|
12
|
+
TreeStoredSchema,
|
|
13
|
+
TreeTypeSet,
|
|
11
14
|
} from "../../core/index.js";
|
|
15
|
+
import type { MakeNominal } from "../../util/index.js";
|
|
16
|
+
|
|
17
|
+
import type { FieldChangeHandler, FieldEditor } from "./fieldChangeHandler.js";
|
|
18
|
+
import { isNeverField } from "./isNeverTree.js";
|
|
12
19
|
|
|
13
20
|
/**
|
|
14
21
|
* Functionality for FieldKinds that is stable,
|
|
@@ -22,26 +29,96 @@ import type {
|
|
|
22
29
|
*
|
|
23
30
|
* These policies include the data encoding, change encoding, change rebase and change application.
|
|
24
31
|
*
|
|
25
|
-
* @
|
|
26
|
-
*
|
|
27
|
-
* This package itself may provide implementations.
|
|
28
|
-
* This pattern was picked instead of an interface since we do not have a convention for how to mark interfaces as only allowed to be implemented by the package declaring them,
|
|
29
|
-
* and using a class also gets stronger (nominal) typing for objects which will be down cast.
|
|
32
|
+
* @privateRemarks
|
|
33
|
+
* Using a class gets stronger (nominal) typing for objects which will be down cast.
|
|
30
34
|
*/
|
|
31
|
-
export
|
|
32
|
-
|
|
35
|
+
export class FlexFieldKind<
|
|
36
|
+
// TODO: stronger typing
|
|
37
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
38
|
+
TEditor extends FieldEditor<any> = FieldEditor<any>,
|
|
39
|
+
TName extends FieldKindIdentifier = FieldKindIdentifier,
|
|
33
40
|
TMultiplicity extends Multiplicity = Multiplicity,
|
|
34
41
|
> implements FieldKindData
|
|
35
42
|
{
|
|
43
|
+
protected _typeCheck!: MakeNominal;
|
|
44
|
+
|
|
36
45
|
/**
|
|
37
|
-
*
|
|
38
|
-
* @param multiplicity - bound on the number of children that fields of this kind may have.
|
|
39
|
-
* TODO: consider replacing with numeric upper and lower bounds.
|
|
46
|
+
* Change handling policy.
|
|
40
47
|
*/
|
|
41
|
-
|
|
42
|
-
|
|
48
|
+
// TODO: stronger typing
|
|
49
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
50
|
+
public readonly changeHandler: FieldChangeHandler<any, TEditor>;
|
|
51
|
+
|
|
52
|
+
public constructor(
|
|
53
|
+
public readonly identifier: TName,
|
|
43
54
|
public readonly multiplicity: TMultiplicity,
|
|
44
|
-
|
|
55
|
+
// TODO: stronger typing
|
|
56
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
57
|
+
private readonly options: FieldKindOptions<FieldChangeHandler<any, TEditor>>,
|
|
58
|
+
) {
|
|
59
|
+
this.changeHandler = options.changeHandler;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Returns true if and only if `superset` permits a (non-strict) superset of the subtrees
|
|
64
|
+
* allowed by field made from `this` and `originalTypes`.
|
|
65
|
+
*
|
|
66
|
+
* TODO: clarify the relationship between this and FieldKindData, and issues with cyclic schema upgrades.
|
|
67
|
+
*/
|
|
68
|
+
public allowsFieldSuperset(
|
|
69
|
+
policy: SchemaPolicy,
|
|
70
|
+
originalData: TreeStoredSchema,
|
|
71
|
+
originalTypes: TreeTypeSet,
|
|
72
|
+
superset: TreeFieldStoredSchema,
|
|
73
|
+
): boolean {
|
|
74
|
+
if (
|
|
75
|
+
isNeverField(policy, originalData, {
|
|
76
|
+
kind: this.identifier,
|
|
77
|
+
types: originalTypes,
|
|
78
|
+
// Metadata is not used for this check.
|
|
79
|
+
persistedMetadata: undefined,
|
|
80
|
+
})
|
|
81
|
+
) {
|
|
82
|
+
return true;
|
|
83
|
+
}
|
|
84
|
+
if (isNeverField(policy, originalData, superset)) {
|
|
85
|
+
return false;
|
|
86
|
+
}
|
|
87
|
+
return this.options.allowsTreeSupersetOf(originalTypes, superset);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Additional options for {@link FlexFieldKind}.
|
|
93
|
+
*
|
|
94
|
+
* @remarks
|
|
95
|
+
* Puts the more confusing parameters into this object so they get explicit names to help with clarity.
|
|
96
|
+
*/
|
|
97
|
+
export interface FieldKindOptions<TFieldChangeHandler> {
|
|
98
|
+
/**
|
|
99
|
+
* Change handling policy.
|
|
100
|
+
*/
|
|
101
|
+
readonly changeHandler: TFieldChangeHandler;
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Returns true if and only if `superset` permits a (non-strict) superset of the subtrees
|
|
105
|
+
* allowed by field made from `this` and `originalTypes`.
|
|
106
|
+
* @remarks
|
|
107
|
+
* Used by {@link FlexFieldKind.allowsFieldSuperset}, which handles the `never` cases before calling this.
|
|
108
|
+
*/
|
|
109
|
+
readonly allowsTreeSupersetOf: (
|
|
110
|
+
originalTypes: TreeTypeSet,
|
|
111
|
+
superset: TreeFieldStoredSchema,
|
|
112
|
+
) => boolean;
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Kinds (in addition to this) whose edits can be processed by changeHandler.
|
|
116
|
+
* If the kind of a field changes, and edits are rebased across that kind change,
|
|
117
|
+
* listing the other old kind here can prevent those edits from being conflicted and
|
|
118
|
+
* provide a chance to handle them.
|
|
119
|
+
*/
|
|
120
|
+
// TODO: provide this and use it for improved support for rebasing changes across schema upgrades.
|
|
121
|
+
// readonly handlesEditsFrom: ReadonlySet<FieldKindIdentifier>;
|
|
45
122
|
}
|
|
46
123
|
|
|
47
124
|
/**
|
|
@@ -4,14 +4,13 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import type { FieldKindIdentifier } from "../../core/index.js";
|
|
7
|
-
|
|
8
|
-
import type { FieldKindWithEditor } from "./fieldKindWithEditor.js";
|
|
7
|
+
import type { FlexFieldKind } from "./fieldKind.js";
|
|
9
8
|
|
|
10
9
|
/**
|
|
11
10
|
* Configuration for a single field kind.
|
|
12
11
|
*/
|
|
13
12
|
export interface FieldKindConfigurationEntry {
|
|
14
|
-
readonly kind:
|
|
13
|
+
readonly kind: FlexFieldKind;
|
|
15
14
|
/**
|
|
16
15
|
* The format to be used for encoding changesets for this field kind.
|
|
17
16
|
*/
|
|
@@ -9,6 +9,7 @@ import { BTree } from "@tylerbu/sorted-btree-es6";
|
|
|
9
9
|
import {
|
|
10
10
|
type DeltaDetachedNodeId,
|
|
11
11
|
type DeltaMark,
|
|
12
|
+
type FieldKindIdentifier,
|
|
12
13
|
Multiplicity,
|
|
13
14
|
type RevisionTag,
|
|
14
15
|
replaceAtomRevisions,
|
|
@@ -24,10 +25,11 @@ import type {
|
|
|
24
25
|
RelevantRemovedRootsFromChild,
|
|
25
26
|
ToDelta,
|
|
26
27
|
} from "./fieldChangeHandler.js";
|
|
27
|
-
import { FieldKindWithEditor } from "./fieldKindWithEditor.js";
|
|
28
28
|
import { makeGenericChangeCodec } from "./genericFieldKindCodecs.js";
|
|
29
29
|
import { newGenericChangeset, type GenericChangeset } from "./genericFieldKindTypes.js";
|
|
30
30
|
import type { NodeId } from "./modularChangeTypes.js";
|
|
31
|
+
import { FlexFieldKind } from "./fieldKind.js";
|
|
32
|
+
import { brandConst } from "../../util/index.js";
|
|
31
33
|
|
|
32
34
|
/**
|
|
33
35
|
* {@link FieldChangeHandler} implementation for {@link GenericChangeset}.
|
|
@@ -164,12 +166,10 @@ function replaceRevisions(
|
|
|
164
166
|
/**
|
|
165
167
|
* {@link FieldKind} used to represent changes to elements of a field in a field-kind-agnostic format.
|
|
166
168
|
*/
|
|
167
|
-
export const genericFieldKind:
|
|
168
|
-
"ModularEditBuilder.Generic",
|
|
169
|
+
export const genericFieldKind: FlexFieldKind = new FlexFieldKind(
|
|
170
|
+
brandConst("ModularEditBuilder.Generic")<FieldKindIdentifier>(),
|
|
169
171
|
Multiplicity.Sequence,
|
|
170
|
-
genericChangeHandler,
|
|
171
|
-
(types, other) => false,
|
|
172
|
-
new Set(),
|
|
172
|
+
{ changeHandler: genericChangeHandler, allowsTreeSupersetOf: (types, other) => false },
|
|
173
173
|
);
|
|
174
174
|
|
|
175
175
|
/**
|
|
@@ -26,7 +26,6 @@ export {
|
|
|
26
26
|
EncodedNodeChangeset,
|
|
27
27
|
} from "./modularChangeFormat.js";
|
|
28
28
|
export { FlexFieldKind, type FullSchemaPolicy } from "./fieldKind.js";
|
|
29
|
-
export { FieldKindWithEditor } from "./fieldKindWithEditor.js";
|
|
30
29
|
export {
|
|
31
30
|
type FieldChangeHandler,
|
|
32
31
|
type FieldChangeDelta,
|
|
@@ -13,12 +13,11 @@ import {
|
|
|
13
13
|
type TreeNodeStoredSchema,
|
|
14
14
|
type TreeStoredSchema,
|
|
15
15
|
Multiplicity,
|
|
16
|
+
type SchemaPolicy,
|
|
16
17
|
} from "../../core/index.js";
|
|
17
18
|
|
|
18
|
-
import type { FullSchemaPolicy } from "./fieldKind.js";
|
|
19
|
-
|
|
20
19
|
export function isNeverField(
|
|
21
|
-
policy:
|
|
20
|
+
policy: SchemaPolicy,
|
|
22
21
|
originalData: TreeStoredSchema,
|
|
23
22
|
field: TreeFieldStoredSchema,
|
|
24
23
|
): boolean {
|
|
@@ -26,7 +25,7 @@ export function isNeverField(
|
|
|
26
25
|
}
|
|
27
26
|
|
|
28
27
|
export function isNeverFieldRecursive(
|
|
29
|
-
policy:
|
|
28
|
+
policy: SchemaPolicy,
|
|
30
29
|
originalData: TreeStoredSchema,
|
|
31
30
|
field: TreeFieldStoredSchema,
|
|
32
31
|
parentTypeStack: Set<TreeNodeStoredSchema>,
|
|
@@ -54,29 +53,29 @@ export function isNeverFieldRecursive(
|
|
|
54
53
|
}
|
|
55
54
|
return false;
|
|
56
55
|
}
|
|
56
|
+
|
|
57
57
|
/**
|
|
58
58
|
* Returns true iff there are no possible trees that could meet this schema.
|
|
59
59
|
* Trees which are infinite (like endless linked lists) are considered impossible.
|
|
60
60
|
*
|
|
61
61
|
* `undefined` means the schema is not present and thus a NeverTree.
|
|
62
62
|
*/
|
|
63
|
-
|
|
64
63
|
export function isNeverTree(
|
|
65
|
-
policy:
|
|
64
|
+
policy: SchemaPolicy,
|
|
66
65
|
originalData: TreeStoredSchema,
|
|
67
66
|
treeNode: TreeNodeStoredSchema | undefined,
|
|
68
67
|
): boolean {
|
|
69
68
|
return isNeverTreeRecursive(policy, originalData, treeNode, new Set());
|
|
70
69
|
}
|
|
70
|
+
|
|
71
71
|
/**
|
|
72
72
|
* Returns true iff there are no possible trees that could meet this schema.
|
|
73
73
|
* Trees which are infinite (like endless linked lists) are considered impossible.
|
|
74
74
|
*
|
|
75
75
|
* `undefined` means the schema is not present and thus a NeverTree.
|
|
76
76
|
*/
|
|
77
|
-
|
|
78
77
|
export function isNeverTreeRecursive(
|
|
79
|
-
policy:
|
|
78
|
+
policy: SchemaPolicy,
|
|
80
79
|
originalData: TreeStoredSchema,
|
|
81
80
|
treeNode: TreeNodeStoredSchema | undefined,
|
|
82
81
|
parentTypeStack: Set<TreeNodeStoredSchema>,
|
|
@@ -70,7 +70,6 @@ import {
|
|
|
70
70
|
NodeAttachState,
|
|
71
71
|
type RebaseRevisionMetadata,
|
|
72
72
|
} from "./fieldChangeHandler.js";
|
|
73
|
-
import { type FieldKindWithEditor, withEditor } from "./fieldKindWithEditor.js";
|
|
74
73
|
import { convertGenericChange, genericFieldKind } from "./genericFieldKind.js";
|
|
75
74
|
import type { GenericChangeset } from "./genericFieldKindTypes.js";
|
|
76
75
|
import {
|
|
@@ -87,6 +86,7 @@ import {
|
|
|
87
86
|
type NodeChangeset,
|
|
88
87
|
type NodeId,
|
|
89
88
|
} from "./modularChangeTypes.js";
|
|
89
|
+
import type { FlexFieldKind } from "./fieldKind.js";
|
|
90
90
|
|
|
91
91
|
/**
|
|
92
92
|
* Implementation of ChangeFamily which delegates work in a given field to the appropriate FieldKind
|
|
@@ -99,10 +99,10 @@ export class ModularChangeFamily
|
|
|
99
99
|
{
|
|
100
100
|
public static readonly emptyChange: ModularChangeset = makeModularChangeset();
|
|
101
101
|
|
|
102
|
-
public readonly fieldKinds: ReadonlyMap<FieldKindIdentifier,
|
|
102
|
+
public readonly fieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind>;
|
|
103
103
|
|
|
104
104
|
public constructor(
|
|
105
|
-
fieldKinds: ReadonlyMap<FieldKindIdentifier,
|
|
105
|
+
fieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind>,
|
|
106
106
|
public readonly codecs: ICodecFamily<ModularChangeset, ChangeEncodingContext>,
|
|
107
107
|
) {
|
|
108
108
|
this.fieldKinds = fieldKinds;
|
|
@@ -1908,7 +1908,7 @@ function invertBuilds(
|
|
|
1908
1908
|
*/
|
|
1909
1909
|
export function* relevantRemovedRoots(
|
|
1910
1910
|
change: ModularChangeset,
|
|
1911
|
-
fieldKinds: ReadonlyMap<FieldKindIdentifier,
|
|
1911
|
+
fieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind>,
|
|
1912
1912
|
): Iterable<DeltaDetachedNodeId> {
|
|
1913
1913
|
yield* relevantRemovedRootsFromFields(change.fieldChanges, change.nodeChanges, fieldKinds);
|
|
1914
1914
|
}
|
|
@@ -1916,7 +1916,7 @@ export function* relevantRemovedRoots(
|
|
|
1916
1916
|
function* relevantRemovedRootsFromFields(
|
|
1917
1917
|
change: FieldChangeMap,
|
|
1918
1918
|
nodeChanges: ChangeAtomIdBTree<NodeChangeset>,
|
|
1919
|
-
fieldKinds: ReadonlyMap<FieldKindIdentifier,
|
|
1919
|
+
fieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind>,
|
|
1920
1920
|
): Iterable<DeltaDetachedNodeId> {
|
|
1921
1921
|
for (const [_, fieldChange] of change) {
|
|
1922
1922
|
const handler = getChangeHandler(fieldKinds, fieldChange.fieldKind);
|
|
@@ -2022,7 +2022,7 @@ export function updateRefreshers(
|
|
|
2022
2022
|
*/
|
|
2023
2023
|
export function intoDelta(
|
|
2024
2024
|
taggedChange: TaggedChange<ModularChangeset>,
|
|
2025
|
-
fieldKinds: ReadonlyMap<FieldKindIdentifier,
|
|
2025
|
+
fieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind>,
|
|
2026
2026
|
): DeltaRoot {
|
|
2027
2027
|
const change = taggedChange.change;
|
|
2028
2028
|
const rootDelta: Mutable<DeltaRoot> = {};
|
|
@@ -2091,7 +2091,7 @@ function copyDetachedNodes(
|
|
|
2091
2091
|
function intoDeltaImpl(
|
|
2092
2092
|
change: FieldChangeMap,
|
|
2093
2093
|
nodeChanges: ChangeAtomIdBTree<NodeChangeset>,
|
|
2094
|
-
fieldKinds: ReadonlyMap<FieldKindIdentifier,
|
|
2094
|
+
fieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind>,
|
|
2095
2095
|
global: DeltaDetachedNodeChanges[],
|
|
2096
2096
|
rename: DeltaDetachedNodeRename[],
|
|
2097
2097
|
): Map<FieldKey, DeltaFieldChanges> {
|
|
@@ -2121,7 +2121,7 @@ function intoDeltaImpl(
|
|
|
2121
2121
|
function deltaFromNodeChange(
|
|
2122
2122
|
change: NodeChangeset,
|
|
2123
2123
|
nodeChanges: ChangeAtomIdBTree<NodeChangeset>,
|
|
2124
|
-
fieldKinds: ReadonlyMap<FieldKindIdentifier,
|
|
2124
|
+
fieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind>,
|
|
2125
2125
|
global: DeltaDetachedNodeChanges[],
|
|
2126
2126
|
rename: DeltaDetachedNodeRename[],
|
|
2127
2127
|
): DeltaFieldMap {
|
|
@@ -2173,19 +2173,19 @@ function isEmptyNodeChangeset(change: NodeChangeset): boolean {
|
|
|
2173
2173
|
}
|
|
2174
2174
|
|
|
2175
2175
|
export function getFieldKind(
|
|
2176
|
-
fieldKinds: ReadonlyMap<FieldKindIdentifier,
|
|
2176
|
+
fieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind>,
|
|
2177
2177
|
kind: FieldKindIdentifier,
|
|
2178
|
-
):
|
|
2178
|
+
): FlexFieldKind {
|
|
2179
2179
|
if (kind === genericFieldKind.identifier) {
|
|
2180
2180
|
return genericFieldKind;
|
|
2181
2181
|
}
|
|
2182
2182
|
const fieldKind = fieldKinds.get(kind);
|
|
2183
2183
|
assert(fieldKind !== undefined, 0x3ad /* Unknown field kind */);
|
|
2184
|
-
return
|
|
2184
|
+
return fieldKind;
|
|
2185
2185
|
}
|
|
2186
2186
|
|
|
2187
2187
|
export function getChangeHandler(
|
|
2188
|
-
fieldKinds: ReadonlyMap<FieldKindIdentifier,
|
|
2188
|
+
fieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind>,
|
|
2189
2189
|
kind: FieldKindIdentifier,
|
|
2190
2190
|
): FieldChangeHandler<unknown> {
|
|
2191
2191
|
return getFieldKind(fieldKinds, kind).changeHandler;
|
|
@@ -2668,7 +2668,7 @@ export class ModularEditBuilder extends EditBuilder<ModularChangeset> {
|
|
|
2668
2668
|
|
|
2669
2669
|
public constructor(
|
|
2670
2670
|
family: ChangeFamily<ChangeFamilyEditor, ModularChangeset>,
|
|
2671
|
-
private readonly fieldKinds: ReadonlyMap<FieldKindIdentifier,
|
|
2671
|
+
private readonly fieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind>,
|
|
2672
2672
|
changeReceiver: (change: TaggedChange<ModularChangeset>) => void,
|
|
2673
2673
|
) {
|
|
2674
2674
|
super(family, changeReceiver);
|
|
@@ -52,12 +52,8 @@ import {
|
|
|
52
52
|
import { chunkField, defaultChunkPolicy } from "../chunked-forest/index.js";
|
|
53
53
|
import { cursorForMapTreeNode, mapTreeFromCursor } from "../mapTreeCursor.js";
|
|
54
54
|
import { type CursorWithNode, SynchronousCursor } from "../treeCursorUtils.js";
|
|
55
|
-
import {
|
|
56
|
-
|
|
57
|
-
FieldKinds,
|
|
58
|
-
isFieldInSchema,
|
|
59
|
-
throwOutOfSchema,
|
|
60
|
-
} from "../default-schema/index.js";
|
|
55
|
+
import { defaultSchemaPolicy, FieldKinds } from "../default-schema/index.js";
|
|
56
|
+
import { isFieldInSchema, throwOutOfSchema } from "../schemaChecker.js";
|
|
61
57
|
|
|
62
58
|
/** A `MapTree` with mutable fields */
|
|
63
59
|
interface MutableMapTree extends MapTree {
|
|
@@ -12,7 +12,6 @@ import type {
|
|
|
12
12
|
import type { FieldChangeEncodingContext } from "../modular-schema/index.js";
|
|
13
13
|
|
|
14
14
|
import type { OptionalChangeset } from "./optionalFieldChangeTypes.js";
|
|
15
|
-
import { makeOptionalFieldCodec as makeV1Codec } from "./optionalFieldCodecV1.js";
|
|
16
15
|
import { makeOptionalFieldCodec as makeV2Codec } from "./optionalFieldCodecV2.js";
|
|
17
16
|
|
|
18
17
|
export const makeOptionalFieldCodecFamily = (
|
|
@@ -23,7 +22,4 @@ export const makeOptionalFieldCodecFamily = (
|
|
|
23
22
|
ChangeEncodingContext
|
|
24
23
|
>,
|
|
25
24
|
): ICodecFamily<OptionalChangeset, FieldChangeEncodingContext> =>
|
|
26
|
-
makeCodecFamily([
|
|
27
|
-
[1, makeV1Codec(revisionTagCodec)],
|
|
28
|
-
[2, makeV2Codec(revisionTagCodec)],
|
|
29
|
-
]);
|
|
25
|
+
makeCodecFamily([[2, makeV2Codec(revisionTagCodec)]]);
|
|
@@ -4,6 +4,10 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import { fail, unreachableCase } from "@fluidframework/core-utils/internal";
|
|
7
|
+
import {
|
|
8
|
+
getConfigForMinVersionForCollab,
|
|
9
|
+
lowestMinVersionForCollab,
|
|
10
|
+
} from "@fluidframework/runtime-utils/internal";
|
|
7
11
|
|
|
8
12
|
import {
|
|
9
13
|
type CodecTree,
|
|
@@ -40,9 +44,12 @@ import type { MinimumVersionForCollab } from "@fluidframework/runtime-definition
|
|
|
40
44
|
export function clientVersionToSchemaVersion(
|
|
41
45
|
clientVersion: MinimumVersionForCollab,
|
|
42
46
|
): SchemaFormatVersion {
|
|
43
|
-
return
|
|
44
|
-
|
|
45
|
-
|
|
47
|
+
return brand(
|
|
48
|
+
getConfigForMinVersionForCollab(clientVersion, {
|
|
49
|
+
[lowestMinVersionForCollab]: SchemaFormatVersion.v1,
|
|
50
|
+
[FluidClientVersion.v2_43]: SchemaFormatVersion.v2,
|
|
51
|
+
}),
|
|
52
|
+
);
|
|
46
53
|
}
|
|
47
54
|
|
|
48
55
|
export function getCodecTreeForSchemaFormat(
|
|
@@ -13,10 +13,10 @@ import {
|
|
|
13
13
|
MapNodeStoredSchema,
|
|
14
14
|
Multiplicity,
|
|
15
15
|
type SchemaAndPolicy,
|
|
16
|
-
} from "
|
|
17
|
-
import { allowsValue } from "
|
|
18
|
-
import type { MapTreeFieldViewGeneric, MinimalMapTreeNodeView } from "
|
|
19
|
-
import { iterableHasSome, mapIterable } from "
|
|
16
|
+
} from "../core/index.js";
|
|
17
|
+
import { allowsValue } from "./valueUtilities.js";
|
|
18
|
+
import type { MapTreeFieldViewGeneric, MinimalMapTreeNodeView } from "./mapTreeCursor.js";
|
|
19
|
+
import { iterableHasSome, mapIterable } from "../util/index.js";
|
|
20
20
|
|
|
21
21
|
export enum SchemaValidationError {
|
|
22
22
|
Field_KindNotInSchemaPolicy,
|
|
@@ -11,7 +11,6 @@ import type {
|
|
|
11
11
|
} from "../../core/index.js";
|
|
12
12
|
import type { FieldChangeEncodingContext } from "../modular-schema/index.js";
|
|
13
13
|
|
|
14
|
-
import { makeV1Codec } from "./sequenceFieldCodecV1.js";
|
|
15
14
|
import { makeV2Codec } from "./sequenceFieldCodecV2.js";
|
|
16
15
|
import { makeV3Codec } from "./sequenceFieldCodecV3.js";
|
|
17
16
|
import type { Changeset, MarkList } from "./types.js";
|
|
@@ -25,7 +24,6 @@ export const sequenceFieldChangeCodecFactory = (
|
|
|
25
24
|
>,
|
|
26
25
|
): ICodecFamily<MarkList, FieldChangeEncodingContext> =>
|
|
27
26
|
makeCodecFamily<Changeset, FieldChangeEncodingContext>([
|
|
28
|
-
[1, makeV1Codec(revisionTagCodec)],
|
|
29
27
|
[2, makeV2Codec(revisionTagCodec)],
|
|
30
28
|
[3, makeV3Codec(revisionTagCodec)],
|
|
31
29
|
]);
|
package/src/index.ts
CHANGED
|
@@ -60,7 +60,6 @@ export {
|
|
|
60
60
|
type SharedTreeOptionsBeta,
|
|
61
61
|
type ForestType,
|
|
62
62
|
type SharedTreeFormatOptions,
|
|
63
|
-
SharedTreeFormatVersion,
|
|
64
63
|
Tree,
|
|
65
64
|
type RunTransaction,
|
|
66
65
|
type ForestOptions,
|
|
@@ -285,6 +284,9 @@ export {
|
|
|
285
284
|
type SimpleAllowedTypeAttributes,
|
|
286
285
|
encodeSimpleSchema,
|
|
287
286
|
decodeSimpleSchema,
|
|
287
|
+
exportCompatibilitySchemaSnapshot,
|
|
288
|
+
importCompatibilitySchemaSnapshot,
|
|
289
|
+
checkCompatibility,
|
|
288
290
|
} from "./simple-tree/index.js";
|
|
289
291
|
export {
|
|
290
292
|
SharedTree,
|
package/src/packageVersion.ts
CHANGED
package/src/shared-tree/index.ts
CHANGED
|
@@ -574,56 +574,6 @@ export function getBranch<T extends ImplicitFieldSchema | UnsafeUnknownSchema>(
|
|
|
574
574
|
return kernel.checkout as unknown as BranchableTree;
|
|
575
575
|
}
|
|
576
576
|
|
|
577
|
-
/**
|
|
578
|
-
* Format versions supported by SharedTree.
|
|
579
|
-
*
|
|
580
|
-
* Each version documents a required minimum version of the \@fluidframework/tree package.
|
|
581
|
-
* @alpha
|
|
582
|
-
*/
|
|
583
|
-
export const SharedTreeFormatVersion = {
|
|
584
|
-
/**
|
|
585
|
-
* Requires \@fluidframework/tree \>= 2.0.0.
|
|
586
|
-
*
|
|
587
|
-
* @deprecated FF does not currently plan on supporting this format long-term.
|
|
588
|
-
* Do not write production documents using this format, as they may not be loadable in the future.
|
|
589
|
-
*/
|
|
590
|
-
v1: 1,
|
|
591
|
-
|
|
592
|
-
/**
|
|
593
|
-
* Requires \@fluidframework/tree \>= 2.0.0.
|
|
594
|
-
*/
|
|
595
|
-
v2: 2,
|
|
596
|
-
|
|
597
|
-
/**
|
|
598
|
-
* Requires \@fluidframework/tree \>= 2.0.0.
|
|
599
|
-
*/
|
|
600
|
-
v3: 3,
|
|
601
|
-
|
|
602
|
-
/**
|
|
603
|
-
* Requires \@fluidframework/tree \>= 2.0.0.
|
|
604
|
-
*/
|
|
605
|
-
v5: 5,
|
|
606
|
-
|
|
607
|
-
/**
|
|
608
|
-
* For testing purposes only.
|
|
609
|
-
*/
|
|
610
|
-
vSharedBranches: 100,
|
|
611
|
-
} as const;
|
|
612
|
-
|
|
613
|
-
/**
|
|
614
|
-
* Format versions supported by SharedTree.
|
|
615
|
-
*
|
|
616
|
-
* Each version documents a required minimum version of the \@fluidframework/tree package.
|
|
617
|
-
* @alpha
|
|
618
|
-
* @privateRemarks
|
|
619
|
-
* See packages/dds/tree/docs/main/compatibility.md for information on how to add support for a new format.
|
|
620
|
-
*
|
|
621
|
-
* TODO: Before this gets promoted past Alpha,
|
|
622
|
-
* a separate abstraction more suited for use in the public API should be adopted rather than reusing the same types used internally.
|
|
623
|
-
* Such an abstraction should probably be in the form of a Fluid-Framework wide compatibility enum.
|
|
624
|
-
*/
|
|
625
|
-
export type SharedTreeFormatVersion = typeof SharedTreeFormatVersion;
|
|
626
|
-
|
|
627
577
|
/**
|
|
628
578
|
* Defines for each EditManagerFormatVersion the SharedTreeChangeFormatVersion to use.
|
|
629
579
|
* This is an arbitrary mapping that is injected in the EditManger codec.
|
|
@@ -631,14 +581,6 @@ export type SharedTreeFormatVersion = typeof SharedTreeFormatVersion;
|
|
|
631
581
|
* This is because the format for SharedTree changes are not explicitly versioned.
|
|
632
582
|
*/
|
|
633
583
|
export const changeFormatVersionForEditManager = DependentFormatVersion.fromPairs([
|
|
634
|
-
[
|
|
635
|
-
brand<EditManagerFormatVersion>(EditManagerFormatVersion.v1),
|
|
636
|
-
brand<SharedTreeChangeFormatVersion>(1),
|
|
637
|
-
],
|
|
638
|
-
[
|
|
639
|
-
brand<EditManagerFormatVersion>(EditManagerFormatVersion.v2),
|
|
640
|
-
brand<SharedTreeChangeFormatVersion>(2),
|
|
641
|
-
],
|
|
642
584
|
[
|
|
643
585
|
brand<EditManagerFormatVersion>(EditManagerFormatVersion.v3),
|
|
644
586
|
brand<SharedTreeChangeFormatVersion>(3),
|
|
@@ -660,18 +602,6 @@ export const changeFormatVersionForEditManager = DependentFormatVersion.fromPair
|
|
|
660
602
|
* This is because the format for SharedTree changes are not explicitly versioned.
|
|
661
603
|
*/
|
|
662
604
|
export const changeFormatVersionForMessage = DependentFormatVersion.fromPairs([
|
|
663
|
-
[
|
|
664
|
-
brand<MessageFormatVersion>(MessageFormatVersion.undefined),
|
|
665
|
-
brand<SharedTreeChangeFormatVersion>(1),
|
|
666
|
-
],
|
|
667
|
-
[
|
|
668
|
-
brand<MessageFormatVersion>(MessageFormatVersion.v1),
|
|
669
|
-
brand<SharedTreeChangeFormatVersion>(1),
|
|
670
|
-
],
|
|
671
|
-
[
|
|
672
|
-
brand<MessageFormatVersion>(MessageFormatVersion.v2),
|
|
673
|
-
brand<SharedTreeChangeFormatVersion>(2),
|
|
674
|
-
],
|
|
675
605
|
[
|
|
676
606
|
brand<MessageFormatVersion>(MessageFormatVersion.v3),
|
|
677
607
|
brand<SharedTreeChangeFormatVersion>(3),
|
|
@@ -74,10 +74,7 @@ interface ChangeFormatDependencies {
|
|
|
74
74
|
readonly schemaChange: SchemaFormatVersion;
|
|
75
75
|
}
|
|
76
76
|
|
|
77
|
-
export type SharedTreeChangeFormatVersion = Brand<
|
|
78
|
-
1 | 2 | 3 | 4,
|
|
79
|
-
"SharedTreeChangeFormatVersion"
|
|
80
|
-
>;
|
|
77
|
+
export type SharedTreeChangeFormatVersion = Brand<3 | 4, "SharedTreeChangeFormatVersion">;
|
|
81
78
|
|
|
82
79
|
/**
|
|
83
80
|
* Defines for each SharedTree change format the corresponding dependent formats to use.
|
|
@@ -89,8 +86,6 @@ export const dependenciesForChangeFormat: Map<
|
|
|
89
86
|
SharedTreeChangeFormatVersion,
|
|
90
87
|
ChangeFormatDependencies
|
|
91
88
|
> = new Map([
|
|
92
|
-
[brand(1), { modularChange: brand(1), schemaChange: brand(SchemaFormatVersion.v1) }],
|
|
93
|
-
[brand(2), { modularChange: brand(2), schemaChange: brand(SchemaFormatVersion.v1) }],
|
|
94
89
|
[brand(3), { modularChange: brand(3), schemaChange: brand(SchemaFormatVersion.v1) }],
|
|
95
90
|
[brand(4), { modularChange: brand(4), schemaChange: brand(SchemaFormatVersion.v1) }],
|
|
96
91
|
]);
|
|
@@ -5,6 +5,10 @@
|
|
|
5
5
|
|
|
6
6
|
import type { IIdCompressor } from "@fluidframework/id-compressor";
|
|
7
7
|
import { unreachableCase } from "@fluidframework/core-utils/internal";
|
|
8
|
+
import {
|
|
9
|
+
getConfigForMinVersionForCollab,
|
|
10
|
+
lowestMinVersionForCollab,
|
|
11
|
+
} from "@fluidframework/runtime-utils/internal";
|
|
8
12
|
|
|
9
13
|
import {
|
|
10
14
|
type CodecTree,
|
|
@@ -16,6 +20,7 @@ import {
|
|
|
16
20
|
type ICodecOptions,
|
|
17
21
|
type IJsonCodec,
|
|
18
22
|
makeCodecFamily,
|
|
23
|
+
makeDiscontinuedCodecVersion,
|
|
19
24
|
} from "../codec/index.js";
|
|
20
25
|
import { makeVersionDispatchingCodec } from "../codec/index.js";
|
|
21
26
|
import type {
|
|
@@ -49,10 +54,13 @@ export function clientVersionToEditManagerFormatVersion(
|
|
|
49
54
|
clientVersion: MinimumVersionForCollab,
|
|
50
55
|
writeVersionOverride?: EditManagerFormatVersion,
|
|
51
56
|
): EditManagerFormatVersion {
|
|
52
|
-
const compatibleVersion: EditManagerFormatVersion =
|
|
53
|
-
clientVersion
|
|
54
|
-
|
|
55
|
-
:
|
|
57
|
+
const compatibleVersion: EditManagerFormatVersion = brand(
|
|
58
|
+
getConfigForMinVersionForCollab(clientVersion, {
|
|
59
|
+
[lowestMinVersionForCollab]: EditManagerFormatVersion.v3,
|
|
60
|
+
[FluidClientVersion.v2_43]: EditManagerFormatVersion.v4,
|
|
61
|
+
}),
|
|
62
|
+
);
|
|
63
|
+
|
|
56
64
|
return writeVersionOverride ?? compatibleVersion;
|
|
57
65
|
}
|
|
58
66
|
|
|
@@ -125,21 +133,25 @@ export function makeEditManagerCodecs<TChangeset>(
|
|
|
125
133
|
EditManagerEncodingContext
|
|
126
134
|
>,
|
|
127
135
|
][] = Array.from(editManagerFormatVersions, (version) => {
|
|
128
|
-
const changeCodec = changeCodecs.resolve(dependentChangeFormatVersion.lookup(version));
|
|
129
136
|
switch (version) {
|
|
130
137
|
case EditManagerFormatVersion.v1:
|
|
131
138
|
case EditManagerFormatVersion.v2:
|
|
139
|
+
return [version, makeDiscontinuedCodecVersion(options, version, "2.73.0")];
|
|
132
140
|
case EditManagerFormatVersion.v3:
|
|
133
|
-
case EditManagerFormatVersion.v4:
|
|
141
|
+
case EditManagerFormatVersion.v4: {
|
|
142
|
+
const changeCodec = changeCodecs.resolve(dependentChangeFormatVersion.lookup(version));
|
|
134
143
|
return [
|
|
135
144
|
version,
|
|
136
145
|
makeV1CodecWithVersion(changeCodec, revisionTagCodec, options, version),
|
|
137
146
|
];
|
|
138
|
-
|
|
147
|
+
}
|
|
148
|
+
case EditManagerFormatVersion.v5: {
|
|
149
|
+
const changeCodec = changeCodecs.resolve(dependentChangeFormatVersion.lookup(version));
|
|
139
150
|
return [
|
|
140
151
|
version,
|
|
141
152
|
makeV5CodecWithVersion(changeCodec, revisionTagCodec, options, version),
|
|
142
153
|
];
|
|
154
|
+
}
|
|
143
155
|
default:
|
|
144
156
|
unreachableCase(version);
|
|
145
157
|
}
|