@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
|
@@ -1,208 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
|
-
* Licensed under the MIT License.
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import { assert } from "@fluidframework/core-utils/internal";
|
|
7
|
-
import type { TAnySchema } from "@sinclair/typebox";
|
|
8
|
-
|
|
9
|
-
import type { IJsonCodec } from "../../codec/index.js";
|
|
10
|
-
import type {
|
|
11
|
-
ChangeEncodingContext,
|
|
12
|
-
EncodedRevisionTag,
|
|
13
|
-
RevisionTag,
|
|
14
|
-
} from "../../core/index.js";
|
|
15
|
-
import type { Mutable } from "../../util/index.js";
|
|
16
|
-
import { makeChangeAtomIdCodec } from "../changeAtomIdCodec.js";
|
|
17
|
-
import {
|
|
18
|
-
EncodedNodeChangeset,
|
|
19
|
-
type FieldChangeEncodingContext,
|
|
20
|
-
} from "../modular-schema/index.js";
|
|
21
|
-
|
|
22
|
-
import { EncodedOptionalChangeset, EncodedRegisterId } from "./optionalFieldChangeFormatV1.js";
|
|
23
|
-
import type { Move, OptionalChangeset, RegisterId } from "./optionalFieldChangeTypes.js";
|
|
24
|
-
|
|
25
|
-
function makeRegisterIdCodec(
|
|
26
|
-
revisionTagCodec: IJsonCodec<
|
|
27
|
-
RevisionTag,
|
|
28
|
-
EncodedRevisionTag,
|
|
29
|
-
EncodedRevisionTag,
|
|
30
|
-
ChangeEncodingContext
|
|
31
|
-
>,
|
|
32
|
-
): IJsonCodec<RegisterId, EncodedRegisterId, EncodedRegisterId, ChangeEncodingContext> {
|
|
33
|
-
const changeAtomIdCodec = makeChangeAtomIdCodec(revisionTagCodec);
|
|
34
|
-
return {
|
|
35
|
-
encode: (registerId: RegisterId, context: ChangeEncodingContext) => {
|
|
36
|
-
if (registerId === "self") {
|
|
37
|
-
return null;
|
|
38
|
-
}
|
|
39
|
-
return changeAtomIdCodec.encode(registerId, context);
|
|
40
|
-
},
|
|
41
|
-
decode: (registerId: EncodedRegisterId, context: ChangeEncodingContext) => {
|
|
42
|
-
if (registerId === null) {
|
|
43
|
-
return "self";
|
|
44
|
-
}
|
|
45
|
-
return changeAtomIdCodec.decode(registerId, context);
|
|
46
|
-
},
|
|
47
|
-
encodedSchema: EncodedRegisterId,
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
export function makeOptionalFieldCodec(
|
|
52
|
-
revisionTagCodec: IJsonCodec<
|
|
53
|
-
RevisionTag,
|
|
54
|
-
EncodedRevisionTag,
|
|
55
|
-
EncodedRevisionTag,
|
|
56
|
-
ChangeEncodingContext
|
|
57
|
-
>,
|
|
58
|
-
): IJsonCodec<
|
|
59
|
-
OptionalChangeset,
|
|
60
|
-
EncodedOptionalChangeset<TAnySchema>,
|
|
61
|
-
EncodedOptionalChangeset<TAnySchema>,
|
|
62
|
-
FieldChangeEncodingContext
|
|
63
|
-
> {
|
|
64
|
-
const registerIdCodec = makeRegisterIdCodec(revisionTagCodec);
|
|
65
|
-
|
|
66
|
-
return {
|
|
67
|
-
encode: (change: OptionalChangeset, context: FieldChangeEncodingContext) => {
|
|
68
|
-
const encoded: EncodedOptionalChangeset<TAnySchema> = {};
|
|
69
|
-
encoded.m = [];
|
|
70
|
-
|
|
71
|
-
if (change.valueReplace !== undefined) {
|
|
72
|
-
if (change.valueReplace.src !== undefined) {
|
|
73
|
-
encoded.m.push([
|
|
74
|
-
registerIdCodec.encode(change.valueReplace.src, context.baseContext),
|
|
75
|
-
registerIdCodec.encode("self", context.baseContext),
|
|
76
|
-
true,
|
|
77
|
-
]);
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
// When the source of the replace is "self", the destination is a reserved ID that will only be used if
|
|
81
|
-
// the tree in the field is concurrently replaced.
|
|
82
|
-
if (change.valueReplace.isEmpty || change.valueReplace.src === "self") {
|
|
83
|
-
encoded.d = registerIdCodec.encode(change.valueReplace.dst, context.baseContext);
|
|
84
|
-
} else {
|
|
85
|
-
encoded.m.push([
|
|
86
|
-
registerIdCodec.encode("self", context.baseContext),
|
|
87
|
-
registerIdCodec.encode(change.valueReplace.dst, context.baseContext),
|
|
88
|
-
false,
|
|
89
|
-
]);
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
for (const [src, dst] of change.moves) {
|
|
94
|
-
encoded.m.push([
|
|
95
|
-
registerIdCodec.encode(src, context.baseContext),
|
|
96
|
-
registerIdCodec.encode(dst, context.baseContext),
|
|
97
|
-
true,
|
|
98
|
-
]);
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
if (encoded.m.length === 0) {
|
|
102
|
-
delete encoded.m;
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
if (change.childChanges.length > 0) {
|
|
106
|
-
encoded.c = [];
|
|
107
|
-
for (const [id, childChange] of change.childChanges) {
|
|
108
|
-
encoded.c.push([
|
|
109
|
-
registerIdCodec.encode(id, context.baseContext),
|
|
110
|
-
context.encodeNode(childChange),
|
|
111
|
-
]);
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
return encoded;
|
|
116
|
-
},
|
|
117
|
-
|
|
118
|
-
decode: (
|
|
119
|
-
encoded: EncodedOptionalChangeset<TAnySchema>,
|
|
120
|
-
context: FieldChangeEncodingContext,
|
|
121
|
-
) => {
|
|
122
|
-
// The register that the node in the optional field is moved to upon detach
|
|
123
|
-
let detached: RegisterId | undefined;
|
|
124
|
-
// The register that the node is moved from to upon attaching that node in the optional field
|
|
125
|
-
let attached: RegisterId | undefined;
|
|
126
|
-
const moves: Move[] = [];
|
|
127
|
-
if (encoded.m !== undefined) {
|
|
128
|
-
for (const [encodedSrc, encodedDst] of encoded.m) {
|
|
129
|
-
const src = registerIdCodec.decode(encodedSrc, context.baseContext);
|
|
130
|
-
const dst = registerIdCodec.decode(encodedDst, context.baseContext);
|
|
131
|
-
if (src === "self" || dst === "self") {
|
|
132
|
-
if (src === "self") {
|
|
133
|
-
assert(detached === undefined, 0x8d0 /* Multiple detached nodes */);
|
|
134
|
-
detached = dst;
|
|
135
|
-
}
|
|
136
|
-
if (dst === "self") {
|
|
137
|
-
assert(attached === undefined, 0x8d1 /* Multiple attached nodes */);
|
|
138
|
-
attached = src;
|
|
139
|
-
}
|
|
140
|
-
} else {
|
|
141
|
-
moves.push([src, dst]);
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
const decoded: Mutable<OptionalChangeset> = {
|
|
146
|
-
moves,
|
|
147
|
-
childChanges:
|
|
148
|
-
encoded.c?.map(([id, encodedChange]) => [
|
|
149
|
-
registerIdCodec.decode(id, context.baseContext),
|
|
150
|
-
context.decodeNode(encodedChange),
|
|
151
|
-
]) ?? [],
|
|
152
|
-
};
|
|
153
|
-
|
|
154
|
-
if (detached !== undefined && attached !== undefined) {
|
|
155
|
-
if (detached === "self" || attached === "self") {
|
|
156
|
-
assert(
|
|
157
|
-
encoded.d !== undefined,
|
|
158
|
-
0x8d2 /* Invalid change: pin must have a reserved detach ID */,
|
|
159
|
-
);
|
|
160
|
-
const reserved = registerIdCodec.decode(encoded.d, context.baseContext);
|
|
161
|
-
assert(reserved !== "self", 0x8d3 /* Invalid reserved detach ID */);
|
|
162
|
-
decoded.valueReplace = { isEmpty: false, dst: reserved, src: "self" };
|
|
163
|
-
} else {
|
|
164
|
-
assert(
|
|
165
|
-
encoded.d === undefined,
|
|
166
|
-
0x8d4 /* Invalid change: unexpected reserved detach ID on a change that detaches a node from the field */,
|
|
167
|
-
);
|
|
168
|
-
decoded.valueReplace = {
|
|
169
|
-
isEmpty: false,
|
|
170
|
-
dst: detached,
|
|
171
|
-
src: attached,
|
|
172
|
-
};
|
|
173
|
-
}
|
|
174
|
-
} else if (attached !== undefined) {
|
|
175
|
-
assert(
|
|
176
|
-
encoded.d !== undefined,
|
|
177
|
-
0x8d5 /* Invalid change: attach must have a reserved detach ID */,
|
|
178
|
-
);
|
|
179
|
-
const reserved = registerIdCodec.decode(encoded.d, context.baseContext);
|
|
180
|
-
assert(reserved !== "self", 0x8d6 /* Invalid reserved detach ID */);
|
|
181
|
-
decoded.valueReplace = {
|
|
182
|
-
isEmpty: true,
|
|
183
|
-
dst: reserved,
|
|
184
|
-
src: attached,
|
|
185
|
-
};
|
|
186
|
-
} else if (detached !== undefined) {
|
|
187
|
-
assert(
|
|
188
|
-
encoded.d === undefined,
|
|
189
|
-
0x8d7 /* Invalid change: unexpected reserved detach ID on a change that detaches a node from the field */,
|
|
190
|
-
);
|
|
191
|
-
assert(detached !== "self", 0x8d8 /* Invalid detach ID */);
|
|
192
|
-
decoded.valueReplace = {
|
|
193
|
-
isEmpty: false,
|
|
194
|
-
dst: detached,
|
|
195
|
-
};
|
|
196
|
-
} else if (encoded.d !== undefined) {
|
|
197
|
-
const detachId = registerIdCodec.decode(encoded.d, context.baseContext);
|
|
198
|
-
assert(detachId !== "self", 0x8d9 /* Invalid detach ID */);
|
|
199
|
-
decoded.valueReplace = {
|
|
200
|
-
isEmpty: true,
|
|
201
|
-
dst: detachId,
|
|
202
|
-
};
|
|
203
|
-
}
|
|
204
|
-
return decoded;
|
|
205
|
-
},
|
|
206
|
-
encodedSchema: EncodedOptionalChangeset(EncodedNodeChangeset),
|
|
207
|
-
};
|
|
208
|
-
}
|
|
@@ -1,344 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
|
-
* Licensed under the MIT License.
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import { assert, unreachableCase, fail } from "@fluidframework/core-utils/internal";
|
|
7
|
-
import type { TAnySchema } from "@sinclair/typebox";
|
|
8
|
-
|
|
9
|
-
import { DiscriminatedUnionDispatcher, type IJsonCodec } from "../../codec/index.js";
|
|
10
|
-
import type {
|
|
11
|
-
ChangeEncodingContext,
|
|
12
|
-
ChangesetLocalId,
|
|
13
|
-
EncodedRevisionTag,
|
|
14
|
-
RevisionTag,
|
|
15
|
-
} from "../../core/index.js";
|
|
16
|
-
import { type JsonCompatibleReadOnly, type Mutable, brand } from "../../util/index.js";
|
|
17
|
-
import { makeChangeAtomIdCodec } from "../changeAtomIdCodec.js";
|
|
18
|
-
import {
|
|
19
|
-
EncodedNodeChangeset,
|
|
20
|
-
type FieldChangeEncodingContext,
|
|
21
|
-
} from "../modular-schema/index.js";
|
|
22
|
-
|
|
23
|
-
import {
|
|
24
|
-
Changeset as ChangesetSchema,
|
|
25
|
-
DetachIdOverrideType,
|
|
26
|
-
type Encoded,
|
|
27
|
-
} from "./formatV1.js";
|
|
28
|
-
import {
|
|
29
|
-
type Attach,
|
|
30
|
-
type AttachAndDetach,
|
|
31
|
-
type CellId,
|
|
32
|
-
type Changeset,
|
|
33
|
-
type Detach,
|
|
34
|
-
type Insert,
|
|
35
|
-
type Mark,
|
|
36
|
-
type MarkEffect,
|
|
37
|
-
type MoveIn,
|
|
38
|
-
type MoveOut,
|
|
39
|
-
NoopMarkType,
|
|
40
|
-
type Remove,
|
|
41
|
-
type Rename,
|
|
42
|
-
} from "./types.js";
|
|
43
|
-
import { isNoopMark, normalizeCellRename } from "./utils.js";
|
|
44
|
-
|
|
45
|
-
export function makeV1Codec(
|
|
46
|
-
revisionTagCodec: IJsonCodec<
|
|
47
|
-
RevisionTag,
|
|
48
|
-
EncodedRevisionTag,
|
|
49
|
-
EncodedRevisionTag,
|
|
50
|
-
ChangeEncodingContext
|
|
51
|
-
>,
|
|
52
|
-
): IJsonCodec<
|
|
53
|
-
Changeset,
|
|
54
|
-
JsonCompatibleReadOnly,
|
|
55
|
-
JsonCompatibleReadOnly,
|
|
56
|
-
FieldChangeEncodingContext
|
|
57
|
-
> {
|
|
58
|
-
const changeAtomIdCodec = makeChangeAtomIdCodec(revisionTagCodec);
|
|
59
|
-
const markEffectCodec: IJsonCodec<
|
|
60
|
-
MarkEffect,
|
|
61
|
-
Encoded.MarkEffect,
|
|
62
|
-
Encoded.MarkEffect,
|
|
63
|
-
ChangeEncodingContext
|
|
64
|
-
> = {
|
|
65
|
-
encode(effect: MarkEffect, context: ChangeEncodingContext): Encoded.MarkEffect {
|
|
66
|
-
function encodeRevision(
|
|
67
|
-
revision: RevisionTag | undefined,
|
|
68
|
-
): EncodedRevisionTag | undefined {
|
|
69
|
-
if (revision === undefined || revision === context.revision) {
|
|
70
|
-
return undefined;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
return revisionTagCodec.encode(revision, context);
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
const type = effect.type;
|
|
77
|
-
switch (type) {
|
|
78
|
-
case "MoveIn":
|
|
79
|
-
return {
|
|
80
|
-
moveIn: {
|
|
81
|
-
revision: encodeRevision(effect.revision),
|
|
82
|
-
finalEndpoint:
|
|
83
|
-
effect.finalEndpoint === undefined
|
|
84
|
-
? undefined
|
|
85
|
-
: changeAtomIdCodec.encode(effect.finalEndpoint, context),
|
|
86
|
-
id: effect.id,
|
|
87
|
-
},
|
|
88
|
-
};
|
|
89
|
-
case "Insert":
|
|
90
|
-
return {
|
|
91
|
-
insert: {
|
|
92
|
-
revision: encodeRevision(effect.revision),
|
|
93
|
-
id: effect.id,
|
|
94
|
-
},
|
|
95
|
-
};
|
|
96
|
-
case "Remove":
|
|
97
|
-
return {
|
|
98
|
-
delete: {
|
|
99
|
-
revision: encodeRevision(effect.revision),
|
|
100
|
-
idOverride:
|
|
101
|
-
effect.idOverride === undefined
|
|
102
|
-
? undefined
|
|
103
|
-
: {
|
|
104
|
-
// An arbitrary override type is chosen here. It only had an impact on lineage logic which was not enabled in V1.
|
|
105
|
-
type: DetachIdOverrideType.Unattach,
|
|
106
|
-
id: cellIdCodec.encode(effect.idOverride, context),
|
|
107
|
-
},
|
|
108
|
-
id: effect.id,
|
|
109
|
-
},
|
|
110
|
-
};
|
|
111
|
-
case "MoveOut":
|
|
112
|
-
return {
|
|
113
|
-
moveOut: {
|
|
114
|
-
revision: encodeRevision(effect.revision),
|
|
115
|
-
finalEndpoint:
|
|
116
|
-
effect.finalEndpoint === undefined
|
|
117
|
-
? undefined
|
|
118
|
-
: changeAtomIdCodec.encode(effect.finalEndpoint, context),
|
|
119
|
-
idOverride:
|
|
120
|
-
effect.idOverride === undefined
|
|
121
|
-
? undefined
|
|
122
|
-
: {
|
|
123
|
-
// An arbitrary override type is chosen here. It only had an impact on lineage logic which was not enabled in V1.
|
|
124
|
-
type: DetachIdOverrideType.Unattach,
|
|
125
|
-
id: cellIdCodec.encode(effect.idOverride, context),
|
|
126
|
-
},
|
|
127
|
-
id: effect.id,
|
|
128
|
-
},
|
|
129
|
-
};
|
|
130
|
-
case "AttachAndDetach":
|
|
131
|
-
return {
|
|
132
|
-
attachAndDetach: {
|
|
133
|
-
attach: markEffectCodec.encode(effect.attach, context) as Encoded.Attach,
|
|
134
|
-
detach: markEffectCodec.encode(effect.detach, context) as Encoded.Detach,
|
|
135
|
-
},
|
|
136
|
-
};
|
|
137
|
-
case "Rename":
|
|
138
|
-
// In documents generated by clients on release >=2.2 (i.e., running the code from the PR that added this comment),
|
|
139
|
-
// renames are encoded as AttachAndDetach with a special id.
|
|
140
|
-
// This ensures forward-compatibility of clients on release <=2.1 with documents/ops generated by clients on release >=2.2.
|
|
141
|
-
return markEffectCodec.encode(
|
|
142
|
-
{
|
|
143
|
-
type: "AttachAndDetach",
|
|
144
|
-
attach: { type: "MoveIn", id: renameLocalId },
|
|
145
|
-
detach: { type: "MoveOut", id: renameLocalId, idOverride: effect.idOverride },
|
|
146
|
-
},
|
|
147
|
-
context,
|
|
148
|
-
);
|
|
149
|
-
case NoopMarkType:
|
|
150
|
-
fail(0xb2b /* Mark type: NoopMarkType should not be encoded. */);
|
|
151
|
-
default:
|
|
152
|
-
unreachableCase(type);
|
|
153
|
-
}
|
|
154
|
-
},
|
|
155
|
-
decode(encoded: Encoded.MarkEffect, context: ChangeEncodingContext): MarkEffect {
|
|
156
|
-
return decoderLibrary.dispatch(encoded, context);
|
|
157
|
-
},
|
|
158
|
-
};
|
|
159
|
-
|
|
160
|
-
function decodeRevision(
|
|
161
|
-
encodedRevision: EncodedRevisionTag | undefined,
|
|
162
|
-
context: ChangeEncodingContext,
|
|
163
|
-
): RevisionTag {
|
|
164
|
-
if (encodedRevision === undefined) {
|
|
165
|
-
assert(context.revision !== undefined, 0x965 /* Implicit revision should be provided */);
|
|
166
|
-
return context.revision;
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
return revisionTagCodec.decode(encodedRevision, context);
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
const decoderLibrary = new DiscriminatedUnionDispatcher<
|
|
173
|
-
Encoded.MarkEffect,
|
|
174
|
-
/* args */ [context: ChangeEncodingContext],
|
|
175
|
-
MarkEffect
|
|
176
|
-
>({
|
|
177
|
-
moveIn(encoded: Encoded.MoveIn, context: ChangeEncodingContext): MoveIn {
|
|
178
|
-
const { id, finalEndpoint, revision } = encoded;
|
|
179
|
-
const mark: MoveIn = {
|
|
180
|
-
type: "MoveIn",
|
|
181
|
-
id,
|
|
182
|
-
};
|
|
183
|
-
|
|
184
|
-
mark.revision = decodeRevision(revision, context);
|
|
185
|
-
if (finalEndpoint !== undefined) {
|
|
186
|
-
mark.finalEndpoint = changeAtomIdCodec.decode(finalEndpoint, context);
|
|
187
|
-
}
|
|
188
|
-
return mark;
|
|
189
|
-
},
|
|
190
|
-
insert(encoded: Encoded.Insert, context: ChangeEncodingContext): Insert {
|
|
191
|
-
const { id, revision } = encoded;
|
|
192
|
-
const mark: Insert = {
|
|
193
|
-
type: "Insert",
|
|
194
|
-
id,
|
|
195
|
-
};
|
|
196
|
-
|
|
197
|
-
mark.revision = decodeRevision(revision, context);
|
|
198
|
-
return mark;
|
|
199
|
-
},
|
|
200
|
-
delete(encoded: Encoded.Remove, context: ChangeEncodingContext): Remove {
|
|
201
|
-
const { id, revision, idOverride } = encoded;
|
|
202
|
-
const mark: Mutable<Remove> = {
|
|
203
|
-
type: "Remove",
|
|
204
|
-
id,
|
|
205
|
-
};
|
|
206
|
-
|
|
207
|
-
mark.revision = decodeRevision(revision, context);
|
|
208
|
-
if (idOverride !== undefined) {
|
|
209
|
-
mark.idOverride = cellIdCodec.decode(idOverride.id, context);
|
|
210
|
-
}
|
|
211
|
-
return mark;
|
|
212
|
-
},
|
|
213
|
-
moveOut(encoded: Encoded.MoveOut, context: ChangeEncodingContext): MoveOut {
|
|
214
|
-
const { id, finalEndpoint, idOverride, revision } = encoded;
|
|
215
|
-
const mark: Mutable<MoveOut> = {
|
|
216
|
-
type: "MoveOut",
|
|
217
|
-
id,
|
|
218
|
-
};
|
|
219
|
-
|
|
220
|
-
mark.revision = decodeRevision(revision, context);
|
|
221
|
-
if (finalEndpoint !== undefined) {
|
|
222
|
-
mark.finalEndpoint = changeAtomIdCodec.decode(finalEndpoint, context);
|
|
223
|
-
}
|
|
224
|
-
if (idOverride !== undefined) {
|
|
225
|
-
mark.idOverride = cellIdCodec.decode(idOverride.id, context);
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
return mark;
|
|
229
|
-
},
|
|
230
|
-
attachAndDetach(
|
|
231
|
-
encoded: Encoded.AttachAndDetach,
|
|
232
|
-
context: ChangeEncodingContext,
|
|
233
|
-
): AttachAndDetach | Rename {
|
|
234
|
-
const attach = decoderLibrary.dispatch(encoded.attach, context) as Attach;
|
|
235
|
-
const detach = decoderLibrary.dispatch(encoded.detach, context) as Detach;
|
|
236
|
-
// In documents generated by clients on release >=2.2 (i.e., running the code from the PR that added this comment),
|
|
237
|
-
// renames are encoded as AttachAndDetach with a special id.
|
|
238
|
-
// This ensures forward-compatibility of clients on release <=2.1 with documents/ops generated by clients on release >=2.2.
|
|
239
|
-
if (attach.id === renameLocalId) {
|
|
240
|
-
assert(detach.idOverride !== undefined, 0x9f7 /* Rename must have idOverride */);
|
|
241
|
-
return {
|
|
242
|
-
type: "Rename",
|
|
243
|
-
idOverride: detach.idOverride,
|
|
244
|
-
};
|
|
245
|
-
}
|
|
246
|
-
return {
|
|
247
|
-
type: "AttachAndDetach",
|
|
248
|
-
attach,
|
|
249
|
-
detach,
|
|
250
|
-
};
|
|
251
|
-
},
|
|
252
|
-
});
|
|
253
|
-
|
|
254
|
-
const cellIdCodec: IJsonCodec<
|
|
255
|
-
CellId,
|
|
256
|
-
Encoded.CellId,
|
|
257
|
-
Encoded.CellId,
|
|
258
|
-
ChangeEncodingContext
|
|
259
|
-
> = {
|
|
260
|
-
encode: (cellId: CellId, context: ChangeEncodingContext): Encoded.CellId => {
|
|
261
|
-
const encoded: Encoded.CellId = {
|
|
262
|
-
atom: changeAtomIdCodec.encode(cellId, context),
|
|
263
|
-
};
|
|
264
|
-
return encoded;
|
|
265
|
-
},
|
|
266
|
-
decode: ({ atom }: Encoded.CellId, context: ChangeEncodingContext): CellId => {
|
|
267
|
-
return changeAtomIdCodec.decode(atom, context);
|
|
268
|
-
},
|
|
269
|
-
};
|
|
270
|
-
|
|
271
|
-
/**
|
|
272
|
-
* If we want to make the node change aspect of this codec more type-safe, we could adjust generics
|
|
273
|
-
* to be in terms of the schema rather than the concrete type of the node change.
|
|
274
|
-
*/
|
|
275
|
-
type NodeChangeSchema = TAnySchema;
|
|
276
|
-
|
|
277
|
-
return {
|
|
278
|
-
encode: (
|
|
279
|
-
changeset: Changeset,
|
|
280
|
-
context: FieldChangeEncodingContext,
|
|
281
|
-
): JsonCompatibleReadOnly & Encoded.Changeset<NodeChangeSchema> => {
|
|
282
|
-
const jsonMarks: Encoded.Changeset<NodeChangeSchema> = [];
|
|
283
|
-
for (const mark of changeset) {
|
|
284
|
-
const encodedMark: Encoded.Mark<NodeChangeSchema> = {
|
|
285
|
-
count: mark.count,
|
|
286
|
-
};
|
|
287
|
-
if (!isNoopMark(mark)) {
|
|
288
|
-
encodedMark.effect = markEffectCodec.encode(mark, context.baseContext);
|
|
289
|
-
}
|
|
290
|
-
if (mark.cellId !== undefined) {
|
|
291
|
-
encodedMark.cellId = cellIdCodec.encode(mark.cellId, context.baseContext);
|
|
292
|
-
}
|
|
293
|
-
if (mark.changes !== undefined) {
|
|
294
|
-
encodedMark.changes = context.encodeNode(mark.changes);
|
|
295
|
-
}
|
|
296
|
-
jsonMarks.push(encodedMark);
|
|
297
|
-
}
|
|
298
|
-
return jsonMarks;
|
|
299
|
-
},
|
|
300
|
-
decode: (
|
|
301
|
-
changeset: Encoded.Changeset<NodeChangeSchema>,
|
|
302
|
-
context: FieldChangeEncodingContext,
|
|
303
|
-
): Changeset => {
|
|
304
|
-
const marks: Changeset = [];
|
|
305
|
-
for (const mark of changeset) {
|
|
306
|
-
const decodedMark: Mark = {
|
|
307
|
-
count: mark.count,
|
|
308
|
-
};
|
|
309
|
-
|
|
310
|
-
if (mark.effect !== undefined) {
|
|
311
|
-
Object.assign(decodedMark, markEffectCodec.decode(mark.effect, context.baseContext));
|
|
312
|
-
}
|
|
313
|
-
if (mark.cellId !== undefined) {
|
|
314
|
-
decodedMark.cellId = cellIdCodec.decode(mark.cellId, context.baseContext);
|
|
315
|
-
}
|
|
316
|
-
// Type deduction wrongly narrows the type of `decodedMark` to `NoopMark & HasMarkFields`.
|
|
317
|
-
// We declare a new casted copy of `decodedMark` to recover the correct type.
|
|
318
|
-
let decodedMark2 = decodedMark as Mark;
|
|
319
|
-
if (decodedMark2.cellId !== undefined && decodedMark2.type === "AttachAndDetach") {
|
|
320
|
-
// In documents generated by clients on release <=2.1 (i.e., not running the code from the PR that added this comment),
|
|
321
|
-
// rename-like AttachAndDetach marks are not normalized to Rename marks thus requiring this normalization step.
|
|
322
|
-
// This ensures backward compatibility with documents generated by clients on release <=2.1.
|
|
323
|
-
decodedMark2 = normalizeCellRename(
|
|
324
|
-
decodedMark2.cellId,
|
|
325
|
-
decodedMark2.count,
|
|
326
|
-
decodedMark2.attach,
|
|
327
|
-
decodedMark2.detach,
|
|
328
|
-
);
|
|
329
|
-
}
|
|
330
|
-
if (mark.changes !== undefined) {
|
|
331
|
-
decodedMark2.changes = context.decodeNode(mark.changes);
|
|
332
|
-
}
|
|
333
|
-
marks.push(decodedMark2);
|
|
334
|
-
}
|
|
335
|
-
return marks;
|
|
336
|
-
},
|
|
337
|
-
encodedSchema: ChangesetSchema(EncodedNodeChangeset),
|
|
338
|
-
};
|
|
339
|
-
}
|
|
340
|
-
|
|
341
|
-
/**
|
|
342
|
-
* Arbitrary ID that is used to indicate a Rename effect.
|
|
343
|
-
*/
|
|
344
|
-
const renameLocalId: ChangesetLocalId = brand(-1);
|