@fluidframework/tree 2.72.0 → 2.74.0-365691
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 +32 -31
- package/dist/alpha.d.ts +7 -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 +3 -3
- package/dist/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/codecs.js +32 -18
- 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/incrementalEncodingPolicy.d.ts +2 -2
- package/dist/feature-libraries/chunked-forest/codec/incrementalEncodingPolicy.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/incrementalEncodingPolicy.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/forestSummarizer.js +1 -1
- package/dist/feature-libraries/forest-summary/forestSummarizer.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 +5 -4
- package/dist/feature-libraries/index.d.ts.map +1 -1
- package/dist/feature-libraries/index.js +8 -8
- 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/modularChangeCodecs.d.ts +2 -2
- package/dist/feature-libraries/modular-schema/modularChangeCodecs.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeCodecs.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/formatV2.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/formatV2.js +1 -0
- package/dist/feature-libraries/sequence-field/formatV2.js.map +1 -1
- 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/feature-libraries/treeCompressionUtils.d.ts +2 -12
- package/dist/feature-libraries/treeCompressionUtils.d.ts.map +1 -1
- package/dist/feature-libraries/treeCompressionUtils.js +4 -14
- package/dist/feature-libraries/treeCompressionUtils.js.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -3
- package/dist/index.js.map +1 -1
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.d.ts.map +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/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 +7 -54
- package/dist/shared-tree/sharedTree.d.ts.map +1 -1
- package/dist/shared-tree/sharedTree.js +2 -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/sharedTreeChangeFamily.d.ts +2 -2
- package/dist/shared-tree/sharedTreeChangeFamily.d.ts.map +1 -1
- package/dist/shared-tree/sharedTreeChangeFamily.js.map +1 -1
- package/dist/shared-tree/treeCheckout.d.ts +2 -2
- package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
- package/dist/shared-tree/treeCheckout.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 +3 -3
- 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/incrementalAllowedTypes.d.ts +15 -12
- package/dist/simple-tree/api/incrementalAllowedTypes.d.ts.map +1 -1
- package/dist/simple-tree/api/incrementalAllowedTypes.js +17 -14
- package/dist/simple-tree/api/incrementalAllowedTypes.js.map +1 -1
- package/dist/simple-tree/api/index.d.ts +2 -1
- package/dist/simple-tree/api/index.d.ts.map +1 -1
- package/dist/simple-tree/api/index.js +6 -2
- 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 +2 -2
- 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/treeNodeKernel.d.ts.map +1 -1
- package/dist/simple-tree/core/treeNodeKernel.js +1 -0
- package/dist/simple-tree/core/treeNodeKernel.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 +3 -3
- package/dist/simple-tree/index.d.ts.map +1 -1
- package/dist/simple-tree/index.js +10 -4
- 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 +14 -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 +3 -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/treeFactory.d.ts +5 -0
- package/dist/treeFactory.d.ts.map +1 -1
- package/dist/treeFactory.js +12 -5
- package/dist/treeFactory.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/breakable.js +3 -3
- package/dist/util/breakable.js.map +1 -1
- 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/dist/util/typeCheckTests.d.ts.map +1 -1
- package/dist/util/typeCheckTests.js.map +1 -1
- package/lib/alpha.d.ts +7 -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 +3 -3
- package/lib/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/codecs.js +36 -22
- 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/incrementalEncodingPolicy.d.ts +2 -2
- package/lib/feature-libraries/chunked-forest/codec/incrementalEncodingPolicy.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/incrementalEncodingPolicy.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/forestSummarizer.js +2 -2
- package/lib/feature-libraries/forest-summary/forestSummarizer.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 +5 -4
- package/lib/feature-libraries/index.d.ts.map +1 -1
- package/lib/feature-libraries/index.js +5 -4
- 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/modularChangeCodecs.d.ts +2 -2
- package/lib/feature-libraries/modular-schema/modularChangeCodecs.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeCodecs.js +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeCodecs.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/formatV2.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/formatV2.js +1 -0
- package/lib/feature-libraries/sequence-field/formatV2.js.map +1 -1
- 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/feature-libraries/treeCompressionUtils.d.ts +2 -12
- package/lib/feature-libraries/treeCompressionUtils.d.ts.map +1 -1
- package/lib/feature-libraries/treeCompressionUtils.js +3 -13
- package/lib/feature-libraries/treeCompressionUtils.js.map +1 -1
- package/lib/index.d.ts +4 -4
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +3 -3
- package/lib/index.js.map +1 -1
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.d.ts.map +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/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 +7 -54
- package/lib/shared-tree/sharedTree.d.ts.map +1 -1
- package/lib/shared-tree/sharedTree.js +1 -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/sharedTreeChangeFamily.d.ts +2 -2
- package/lib/shared-tree/sharedTreeChangeFamily.d.ts.map +1 -1
- package/lib/shared-tree/sharedTreeChangeFamily.js.map +1 -1
- package/lib/shared-tree/treeCheckout.d.ts +2 -2
- package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
- package/lib/shared-tree/treeCheckout.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 +3 -3
- 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/incrementalAllowedTypes.d.ts +15 -12
- package/lib/simple-tree/api/incrementalAllowedTypes.d.ts.map +1 -1
- package/lib/simple-tree/api/incrementalAllowedTypes.js +15 -12
- package/lib/simple-tree/api/incrementalAllowedTypes.js.map +1 -1
- package/lib/simple-tree/api/index.d.ts +2 -1
- package/lib/simple-tree/api/index.d.ts.map +1 -1
- package/lib/simple-tree/api/index.js +2 -1
- 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 +2 -2
- 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/treeNodeKernel.d.ts.map +1 -1
- package/lib/simple-tree/core/treeNodeKernel.js +1 -0
- package/lib/simple-tree/core/treeNodeKernel.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 +3 -3
- package/lib/simple-tree/index.d.ts.map +1 -1
- package/lib/simple-tree/index.js +3 -3
- 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 +16 -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 +4 -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/treeFactory.d.ts +5 -0
- package/lib/treeFactory.d.ts.map +1 -1
- package/lib/treeFactory.js +10 -4
- package/lib/treeFactory.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/breakable.js +3 -3
- package/lib/util/breakable.js.map +1 -1
- 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/lib/util/typeCheckTests.d.ts.map +1 -1
- package/lib/util/typeCheckTests.js.map +1 -1
- package/package.json +22 -22
- 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 +55 -26
- 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/incrementalEncodingPolicy.ts +5 -6
- 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/forestSummarizer.ts +2 -2
- package/src/feature-libraries/forest-summary/format.ts +15 -9
- package/src/feature-libraries/index.ts +8 -10
- 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/modularChangeCodecs.ts +3 -6
- 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/formatV2.ts +1 -0
- package/src/feature-libraries/sequence-field/sequenceFieldCodecs.ts +0 -2
- package/src/feature-libraries/treeCompressionUtils.ts +1 -15
- package/src/index.ts +7 -1
- package/src/packageVersion.ts +1 -1
- package/src/shared-tree/index.ts +0 -1
- package/src/shared-tree/sharedTree.ts +12 -88
- package/src/shared-tree/sharedTreeChangeCodecs.ts +1 -6
- package/src/shared-tree/sharedTreeChangeFamily.ts +2 -2
- package/src/shared-tree/treeCheckout.ts +2 -2
- 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 +7 -3
- 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/incrementalAllowedTypes.ts +20 -18
- package/src/simple-tree/api/index.ts +6 -1
- 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 +2 -2
- 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/treeNodeKernel.ts +1 -0
- 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 +7 -2
- package/src/simple-tree/leafNodeSchema.ts +1 -2
- package/src/simple-tree/node-kinds/array/arrayNode.ts +28 -75
- package/src/simple-tree/node-kinds/map/mapNode.ts +1 -15
- package/src/simple-tree/node-kinds/object/objectNode.ts +4 -18
- 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/treeFactory.ts +13 -4
- package/src/util/arrayUtilities.ts +88 -0
- package/src/util/breakable.ts +4 -4
- package/src/util/index.ts +6 -0
- package/src/util/typeCheckTests.ts +0 -1
- 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
|
@@ -23,9 +23,9 @@ import {
|
|
|
23
23
|
type TreeChunk,
|
|
24
24
|
tryGetChunk,
|
|
25
25
|
type SchemaAndPolicy,
|
|
26
|
+
type SchemaPolicy,
|
|
26
27
|
} from "../../core/index.js";
|
|
27
28
|
import { getOrCreate } from "../../util/index.js";
|
|
28
|
-
import type { FullSchemaPolicy } from "../modular-schema/index.js";
|
|
29
29
|
import { isStableNodeIdentifier } from "../node-identifier/index.js";
|
|
30
30
|
|
|
31
31
|
import { BasicChunk } from "./basicChunk.js";
|
|
@@ -44,7 +44,7 @@ export interface Disposable {
|
|
|
44
44
|
*/
|
|
45
45
|
export function makeTreeChunker(
|
|
46
46
|
schema: TreeStoredSchemaSubscription,
|
|
47
|
-
policy:
|
|
47
|
+
policy: SchemaPolicy,
|
|
48
48
|
shouldEncodeIncrementally: IncrementalEncodingPolicy,
|
|
49
49
|
): IChunker {
|
|
50
50
|
return new Chunker(
|
|
@@ -113,7 +113,7 @@ export class Chunker implements IChunker {
|
|
|
113
113
|
|
|
114
114
|
public constructor(
|
|
115
115
|
public readonly schema: TreeStoredSchemaSubscription,
|
|
116
|
-
public readonly policy:
|
|
116
|
+
public readonly policy: SchemaPolicy,
|
|
117
117
|
public readonly sequenceChunkSplitThreshold: number,
|
|
118
118
|
public readonly sequenceChunkInlineThreshold: number,
|
|
119
119
|
public readonly uniformChunkNodeCount: number,
|
|
@@ -46,6 +46,7 @@ import {
|
|
|
46
46
|
type EncodedNestedArrayShape,
|
|
47
47
|
type EncodedNodeShape,
|
|
48
48
|
type EncodedValueShape,
|
|
49
|
+
FieldBatchFormatVersion,
|
|
49
50
|
SpecialField,
|
|
50
51
|
} from "./format.js";
|
|
51
52
|
import type { IncrementalDecoder } from "./codecs.js";
|
|
@@ -246,6 +247,10 @@ export class IncrementalChunkDecoder implements ChunkDecoder {
|
|
|
246
247
|
);
|
|
247
248
|
|
|
248
249
|
const chunkDecoder = (batch: EncodedFieldBatch): TreeChunk => {
|
|
250
|
+
assert(
|
|
251
|
+
batch.version >= FieldBatchFormatVersion.v2,
|
|
252
|
+
0xc9f /* Unsupported FieldBatchFormatVersion for incremental chunks; must be v2 or higher */,
|
|
253
|
+
);
|
|
249
254
|
const context = new DecoderContext(
|
|
250
255
|
batch.identifiers,
|
|
251
256
|
batch.shapes,
|
|
@@ -15,6 +15,7 @@ import {
|
|
|
15
15
|
jsonMinimizingFilter,
|
|
16
16
|
} from "./chunkCodecUtilities.js";
|
|
17
17
|
import type { EncodedFieldBatchGeneric } from "./formatGeneric.js";
|
|
18
|
+
import type { FieldBatchFormatVersion } from "./format.js";
|
|
18
19
|
|
|
19
20
|
/**
|
|
20
21
|
* An identifier which can be compressed using {@link Counter}.
|
|
@@ -51,7 +52,7 @@ export type BufferFormat<TEncodedShape> = (
|
|
|
51
52
|
* Note that this modifies `buffer` to avoid having to copy it.
|
|
52
53
|
*/
|
|
53
54
|
export function updateShapesAndIdentifiersEncoding<TEncodedShape>(
|
|
54
|
-
version:
|
|
55
|
+
version: FieldBatchFormatVersion,
|
|
55
56
|
buffer: BufferFormat<TEncodedShape>[],
|
|
56
57
|
identifierFilter: CounterFilter<string> = jsonMinimizingFilter,
|
|
57
58
|
): EncodedFieldBatchGeneric<TEncodedShape> {
|
|
@@ -5,10 +5,15 @@
|
|
|
5
5
|
|
|
6
6
|
import { assert, unreachableCase } from "@fluidframework/core-utils/internal";
|
|
7
7
|
import type { IIdCompressor, SessionId } from "@fluidframework/id-compressor";
|
|
8
|
+
import {
|
|
9
|
+
getConfigForMinVersionForCollab,
|
|
10
|
+
lowestMinVersionForCollab,
|
|
11
|
+
} from "@fluidframework/runtime-utils/internal";
|
|
8
12
|
|
|
9
13
|
import {
|
|
10
14
|
type CodecTree,
|
|
11
15
|
type CodecWriteOptions,
|
|
16
|
+
FluidClientVersion,
|
|
12
17
|
type IJsonCodec,
|
|
13
18
|
makeVersionedValidatedCodec,
|
|
14
19
|
} from "../../../codec/index.js";
|
|
@@ -24,19 +29,21 @@ import {
|
|
|
24
29
|
type Brand,
|
|
25
30
|
type JsonCompatibleReadOnly,
|
|
26
31
|
} from "../../../util/index.js";
|
|
27
|
-
import {
|
|
28
|
-
TreeCompressionStrategy,
|
|
29
|
-
TreeCompressionStrategyExtended,
|
|
30
|
-
type TreeCompressionStrategyPrivate,
|
|
31
|
-
} from "../../treeCompressionUtils.js";
|
|
32
|
+
import { TreeCompressionStrategy } from "../../treeCompressionUtils.js";
|
|
32
33
|
|
|
33
34
|
import { decode } from "./chunkDecoding.js";
|
|
34
35
|
import type { FieldBatch } from "./fieldBatch.js";
|
|
35
|
-
import {
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
import {
|
|
37
|
+
type EncodedFieldBatch,
|
|
38
|
+
validVersions,
|
|
39
|
+
FieldBatchFormatVersion,
|
|
40
|
+
EncodedFieldBatchV1,
|
|
41
|
+
EncodedFieldBatchV2,
|
|
42
|
+
} from "./format.js";
|
|
38
43
|
import type { MinimumVersionForCollab } from "@fluidframework/runtime-definitions/internal";
|
|
39
44
|
import type { IncrementalEncodingPolicy } from "./incrementalEncodingPolicy.js";
|
|
45
|
+
import { uncompressedEncodeV1, uncompressedEncodeV2 } from "./uncompressedEncode.js";
|
|
46
|
+
import { schemaCompressedEncodeV1, schemaCompressedEncodeV2 } from "./schemaBasedEncode.js";
|
|
40
47
|
|
|
41
48
|
/**
|
|
42
49
|
* Reference ID for a chunk that is incrementally encoded.
|
|
@@ -98,7 +105,7 @@ export interface IncrementalDecoder {
|
|
|
98
105
|
export interface IncrementalEncoderDecoder extends IncrementalEncoder, IncrementalDecoder {}
|
|
99
106
|
|
|
100
107
|
export interface FieldBatchEncodingContext {
|
|
101
|
-
readonly encodeType:
|
|
108
|
+
readonly encodeType: TreeCompressionStrategy;
|
|
102
109
|
readonly idCompressor: IIdCompressor;
|
|
103
110
|
readonly originatorId: SessionId;
|
|
104
111
|
readonly schema?: SchemaAndPolicy;
|
|
@@ -119,11 +126,6 @@ export type FieldBatchCodec = IJsonCodec<
|
|
|
119
126
|
FieldBatchEncodingContext
|
|
120
127
|
>;
|
|
121
128
|
|
|
122
|
-
/**
|
|
123
|
-
* Get the write version for {@link makeFieldBatchCodec} based on the `minVersionForCollab` version.
|
|
124
|
-
* @privateRemarks
|
|
125
|
-
* TODO: makeFieldBatchCodec (and makeVersionDispatchingCodec transitively) should bake in this versionToFormat logic and the resulting codec can then support use with FluidClientVersion directly.
|
|
126
|
-
*/
|
|
127
129
|
/**
|
|
128
130
|
* Convert a MinimumVersionForCollab to write version for {@link FieldBatchCodec}.
|
|
129
131
|
* @param clientVersion - The MinimumVersionForCollab to convert.
|
|
@@ -131,8 +133,12 @@ export type FieldBatchCodec = IJsonCodec<
|
|
|
131
133
|
function clientVersionToFieldBatchVersion(
|
|
132
134
|
clientVersion: MinimumVersionForCollab,
|
|
133
135
|
): FieldBatchFormatVersion {
|
|
134
|
-
|
|
135
|
-
|
|
136
|
+
return brand(
|
|
137
|
+
getConfigForMinVersionForCollab(clientVersion, {
|
|
138
|
+
[lowestMinVersionForCollab]: FieldBatchFormatVersion.v1,
|
|
139
|
+
[FluidClientVersion.v2_73]: FieldBatchFormatVersion.v2,
|
|
140
|
+
}),
|
|
141
|
+
);
|
|
136
142
|
}
|
|
137
143
|
|
|
138
144
|
export function makeFieldBatchCodec(options: CodecWriteOptions): FieldBatchCodec {
|
|
@@ -146,8 +152,27 @@ export function makeFieldBatchCodec(options: CodecWriteOptions): FieldBatchCodec
|
|
|
146
152
|
0x935 /* Invalid write version for FieldBatch codec */,
|
|
147
153
|
);
|
|
148
154
|
|
|
149
|
-
|
|
150
|
-
|
|
155
|
+
let uncompressedEncodeFn: typeof uncompressedEncodeV1 | typeof uncompressedEncodeV2;
|
|
156
|
+
let schemaCompressedEncodeFn:
|
|
157
|
+
| typeof schemaCompressedEncodeV1
|
|
158
|
+
| typeof schemaCompressedEncodeV2;
|
|
159
|
+
let encodedFieldBatchType: typeof EncodedFieldBatchV1 | typeof EncodedFieldBatchV2;
|
|
160
|
+
switch (writeVersion) {
|
|
161
|
+
case FieldBatchFormatVersion.v1:
|
|
162
|
+
uncompressedEncodeFn = uncompressedEncodeV1;
|
|
163
|
+
schemaCompressedEncodeFn = schemaCompressedEncodeV1;
|
|
164
|
+
encodedFieldBatchType = EncodedFieldBatchV1;
|
|
165
|
+
break;
|
|
166
|
+
case FieldBatchFormatVersion.v2:
|
|
167
|
+
uncompressedEncodeFn = uncompressedEncodeV2;
|
|
168
|
+
schemaCompressedEncodeFn = schemaCompressedEncodeV2;
|
|
169
|
+
encodedFieldBatchType = EncodedFieldBatchV2;
|
|
170
|
+
break;
|
|
171
|
+
default:
|
|
172
|
+
unreachableCase(writeVersion);
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
return makeVersionedValidatedCodec(options, validVersions, encodedFieldBatchType, {
|
|
151
176
|
encode: (data: FieldBatch, context: FieldBatchEncodingContext): EncodedFieldBatch => {
|
|
152
177
|
for (const cursor of data) {
|
|
153
178
|
assert(
|
|
@@ -156,27 +181,31 @@ export function makeFieldBatchCodec(options: CodecWriteOptions): FieldBatchCodec
|
|
|
156
181
|
);
|
|
157
182
|
}
|
|
158
183
|
let encoded: EncodedFieldBatch;
|
|
184
|
+
let incrementalEncoder: IncrementalEncoder | undefined;
|
|
159
185
|
switch (context.encodeType) {
|
|
160
186
|
case TreeCompressionStrategy.Uncompressed:
|
|
161
|
-
encoded =
|
|
187
|
+
encoded = uncompressedEncodeFn(data);
|
|
162
188
|
break;
|
|
163
|
-
case
|
|
189
|
+
case TreeCompressionStrategy.CompressedIncremental:
|
|
190
|
+
assert(
|
|
191
|
+
writeVersion >= FieldBatchFormatVersion.v2,
|
|
192
|
+
0xca0 /* Unsupported FieldBatchFormatVersion for incremental encoding; must be v2 or higher */,
|
|
193
|
+
);
|
|
194
|
+
// Incremental encoding is only supported for CompressedIncremental.
|
|
195
|
+
incrementalEncoder = context.incrementalEncoderDecoder;
|
|
164
196
|
case TreeCompressionStrategy.Compressed:
|
|
165
197
|
// eslint-disable-next-line unicorn/prefer-ternary
|
|
166
198
|
if (context.schema !== undefined) {
|
|
167
|
-
encoded =
|
|
199
|
+
encoded = schemaCompressedEncodeFn(
|
|
168
200
|
context.schema.schema,
|
|
169
201
|
context.schema.policy,
|
|
170
202
|
data,
|
|
171
203
|
context.idCompressor,
|
|
172
|
-
|
|
173
|
-
context.encodeType === TreeCompressionStrategyExtended.CompressedIncremental
|
|
174
|
-
? context.incrementalEncoderDecoder
|
|
175
|
-
: undefined,
|
|
204
|
+
incrementalEncoder,
|
|
176
205
|
);
|
|
177
206
|
} else {
|
|
178
207
|
// TODO: consider enabling a somewhat compressed but not schema accelerated encode.
|
|
179
|
-
encoded =
|
|
208
|
+
encoded = uncompressedEncodeFn(data);
|
|
180
209
|
}
|
|
181
210
|
|
|
182
211
|
break;
|
|
@@ -9,6 +9,7 @@ import type { IIdCompressor } from "@fluidframework/id-compressor";
|
|
|
9
9
|
import {
|
|
10
10
|
CursorLocationType,
|
|
11
11
|
type FieldKey,
|
|
12
|
+
type FieldKindData,
|
|
12
13
|
type FieldKindIdentifier,
|
|
13
14
|
type ITreeCursorSynchronous,
|
|
14
15
|
type TreeChunk,
|
|
@@ -18,7 +19,6 @@ import {
|
|
|
18
19
|
forEachNode,
|
|
19
20
|
} from "../../../core/index.js";
|
|
20
21
|
import { getOrCreate } from "../../../util/index.js";
|
|
21
|
-
import type { FlexFieldKind } from "../../modular-schema/index.js";
|
|
22
22
|
|
|
23
23
|
import type { Counter, DeduplicationTable } from "./chunkCodecUtilities.js";
|
|
24
24
|
import {
|
|
@@ -57,7 +57,7 @@ export function compressedEncode(
|
|
|
57
57
|
anyFieldEncoder.encodeField(cursor, context, buffer);
|
|
58
58
|
batchBuffer.push(buffer);
|
|
59
59
|
}
|
|
60
|
-
return updateShapesAndIdentifiersEncoding(
|
|
60
|
+
return updateShapesAndIdentifiersEncoding(context.version, batchBuffer);
|
|
61
61
|
}
|
|
62
62
|
|
|
63
63
|
export type BufferFormat = BufferFormatGeneric<EncodedChunkShape>;
|
|
@@ -458,6 +458,10 @@ export const incrementalFieldEncoder: FieldEncoder = {
|
|
|
458
458
|
context.incrementalEncoder !== undefined,
|
|
459
459
|
0xc88 /* incremental encoder must be defined to use incrementalFieldEncoder */,
|
|
460
460
|
);
|
|
461
|
+
assert(
|
|
462
|
+
context.version >= FieldBatchFormatVersion.v2,
|
|
463
|
+
0xca1 /* Unsupported FieldBatchFormatVersion for incremental encoding; must be v2 or higher */,
|
|
464
|
+
);
|
|
461
465
|
|
|
462
466
|
const chunkReferenceIds = context.incrementalEncoder.encodeIncrementalField(
|
|
463
467
|
cursor,
|
|
@@ -519,7 +523,7 @@ export class EncoderContext implements NodeEncodeBuilder, FieldEncodeBuilder {
|
|
|
519
523
|
public constructor(
|
|
520
524
|
private readonly nodeEncoderFromPolicy: NodeEncoderPolicy,
|
|
521
525
|
private readonly fieldEncoderFromPolicy: FieldEncoderPolicy,
|
|
522
|
-
public readonly fieldShapes: ReadonlyMap<FieldKindIdentifier,
|
|
526
|
+
public readonly fieldShapes: ReadonlyMap<FieldKindIdentifier, FieldKindData>,
|
|
523
527
|
public readonly idCompressor: IIdCompressor,
|
|
524
528
|
/**
|
|
525
529
|
* To be used to encode incremental chunks, if any.
|
|
@@ -527,6 +531,7 @@ export class EncoderContext implements NodeEncodeBuilder, FieldEncodeBuilder {
|
|
|
527
531
|
* See {@link IncrementalEncoder} for more information.
|
|
528
532
|
*/
|
|
529
533
|
public readonly incrementalEncoder: IncrementalEncoder | undefined,
|
|
534
|
+
public readonly version: FieldBatchFormatVersion,
|
|
530
535
|
) {}
|
|
531
536
|
|
|
532
537
|
public nodeEncoderFromSchema(schemaName: TreeNodeSchemaIdentifier): NodeEncoder {
|
|
@@ -13,13 +13,14 @@ import {
|
|
|
13
13
|
IdentifierOrIndex,
|
|
14
14
|
ShapeIndex,
|
|
15
15
|
} from "./formatGeneric.js";
|
|
16
|
-
import type
|
|
16
|
+
import { brand, type Brand } from "../../../util/index.js";
|
|
17
17
|
|
|
18
18
|
/**
|
|
19
19
|
* The format version for the field batch.
|
|
20
20
|
*/
|
|
21
21
|
export const FieldBatchFormatVersion = {
|
|
22
22
|
v1: 1,
|
|
23
|
+
v2: 2,
|
|
23
24
|
} as const;
|
|
24
25
|
export type FieldBatchFormatVersion = Brand<
|
|
25
26
|
(typeof FieldBatchFormatVersion)[keyof typeof FieldBatchFormatVersion],
|
|
@@ -28,7 +29,7 @@ export type FieldBatchFormatVersion = Brand<
|
|
|
28
29
|
|
|
29
30
|
// Compatible versions used for format/version validation.
|
|
30
31
|
// TODO: A proper version update policy will need to be documented.
|
|
31
|
-
export const validVersions = new Set([FieldBatchFormatVersion
|
|
32
|
+
export const validVersions = new Set([...Object.values(FieldBatchFormatVersion)]);
|
|
32
33
|
|
|
33
34
|
/**
|
|
34
35
|
* Top level length is implied from length of data array.
|
|
@@ -217,8 +218,17 @@ export type EncodedNodeShape = Static<typeof EncodedNodeShape>;
|
|
|
217
218
|
export type EncodedAnyShape = Static<typeof EncodedAnyShape>;
|
|
218
219
|
export type EncodedIncrementalChunkShape = Static<typeof EncodedIncrementalChunkShape>;
|
|
219
220
|
|
|
220
|
-
export const
|
|
221
|
-
FieldBatchFormatVersion.v1,
|
|
221
|
+
export const EncodedFieldBatchV1 = EncodedFieldBatchGeneric(
|
|
222
|
+
brand<FieldBatchFormatVersion>(FieldBatchFormatVersion.v1),
|
|
222
223
|
EncodedChunkShape,
|
|
223
224
|
);
|
|
225
|
+
export type EncodedFieldBatchV1 = Static<typeof EncodedFieldBatchV1>;
|
|
226
|
+
|
|
227
|
+
export const EncodedFieldBatchV2 = EncodedFieldBatchGeneric(
|
|
228
|
+
brand<FieldBatchFormatVersion>(FieldBatchFormatVersion.v2),
|
|
229
|
+
EncodedChunkShape,
|
|
230
|
+
);
|
|
231
|
+
export type EncodedFieldBatchV2 = Static<typeof EncodedFieldBatchV2>;
|
|
232
|
+
|
|
233
|
+
export const EncodedFieldBatch = Type.Union([EncodedFieldBatchV1, EncodedFieldBatchV2]);
|
|
224
234
|
export type EncodedFieldBatch = Static<typeof EncodedFieldBatch>;
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import { type Static, type TSchema, Type } from "@sinclair/typebox";
|
|
7
|
+
import type { FieldBatchFormatVersion } from "./format.js";
|
|
7
8
|
|
|
8
9
|
/**
|
|
9
10
|
* Identifier OR Index of an identifier in the identifier list.
|
|
@@ -39,11 +40,14 @@ const EncodedFieldBatchBase = Type.Object(
|
|
|
39
40
|
|
|
40
41
|
/**
|
|
41
42
|
* Format for encoding a tree chunk.
|
|
42
|
-
* @param version - format version.
|
|
43
|
+
* @param version - format version.
|
|
44
|
+
* Must be changed if the previously existing decode logic will not correctly handle the new encoding.
|
|
45
|
+
* If adding a new encoding version which does not use this format,
|
|
46
|
+
* this parameter should be retyped to be a union of the subset of FieldBatchFormatVersion values which this supports.
|
|
43
47
|
* @param shape - schema for union of shape format, see {@link DiscriminatedUnionDispatcher}.
|
|
44
48
|
*/
|
|
45
49
|
export const EncodedFieldBatchGeneric = <TShapeSchema extends TSchema>(
|
|
46
|
-
version:
|
|
50
|
+
version: FieldBatchFormatVersion,
|
|
47
51
|
shape: TShapeSchema,
|
|
48
52
|
// Return type is intentionally derived.
|
|
49
53
|
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
|
|
@@ -62,4 +66,5 @@ export const EncodedFieldBatchGeneric = <TShapeSchema extends TSchema>(
|
|
|
62
66
|
export interface EncodedFieldBatchGeneric<TEncodedShape>
|
|
63
67
|
extends Static<typeof EncodedFieldBatchBase> {
|
|
64
68
|
shapes: TEncodedShape[];
|
|
69
|
+
version: FieldBatchFormatVersion;
|
|
65
70
|
}
|
|
@@ -3,8 +3,6 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import type { FieldKey, TreeNodeSchemaIdentifier } from "../../../core/index.js";
|
|
7
|
-
|
|
8
6
|
/**
|
|
9
7
|
* Policy to determine whether a node / field should be incrementally encoded.
|
|
10
8
|
* @param nodeIdentifier - The identifier of the node containing the field.
|
|
@@ -16,18 +14,19 @@ import type { FieldKey, TreeNodeSchemaIdentifier } from "../../../core/index.js"
|
|
|
16
14
|
* but allows reuse of previously encoded unchanged subtrees.
|
|
17
15
|
* Thus it should only be enabled for large subtrees which are modified infrequently.
|
|
18
16
|
* TODO: AB#9068: Measure the actual overhead.
|
|
17
|
+
* @alpha
|
|
19
18
|
*/
|
|
20
19
|
export type IncrementalEncodingPolicy = (
|
|
21
|
-
nodeIdentifier:
|
|
22
|
-
fieldKey:
|
|
20
|
+
nodeIdentifier: string | undefined,
|
|
21
|
+
fieldKey: string,
|
|
23
22
|
) => boolean;
|
|
24
23
|
|
|
25
24
|
/**
|
|
26
25
|
* Default policy for incremental encoding is to not encode incrementally.
|
|
27
26
|
*/
|
|
28
27
|
export const defaultIncrementalEncodingPolicy: IncrementalEncodingPolicy = (
|
|
29
|
-
nodeIdentifier:
|
|
30
|
-
fieldKey:
|
|
28
|
+
nodeIdentifier: string | undefined,
|
|
29
|
+
fieldKey: string,
|
|
31
30
|
): boolean => {
|
|
32
31
|
return false;
|
|
33
32
|
};
|
|
@@ -3,10 +3,7 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
export {
|
|
7
|
-
EncodedFieldBatch,
|
|
8
|
-
type FieldBatchFormatVersion,
|
|
9
|
-
} from "./format.js";
|
|
6
|
+
export { EncodedFieldBatch, FieldBatchFormatVersion } from "./format.js";
|
|
10
7
|
export type { FieldBatch } from "./fieldBatch.js";
|
|
11
8
|
export {
|
|
12
9
|
type FieldBatchCodec,
|
|
@@ -16,8 +16,8 @@ import {
|
|
|
16
16
|
ValueSchema,
|
|
17
17
|
Multiplicity,
|
|
18
18
|
identifierFieldKindIdentifier,
|
|
19
|
+
type SchemaPolicy,
|
|
19
20
|
} from "../../../core/index.js";
|
|
20
|
-
import type { FullSchemaPolicy } from "../../modular-schema/index.js";
|
|
21
21
|
|
|
22
22
|
import {
|
|
23
23
|
EncoderContext,
|
|
@@ -31,11 +31,61 @@ import {
|
|
|
31
31
|
incrementalFieldEncoder,
|
|
32
32
|
} from "./compressedEncode.js";
|
|
33
33
|
import type { FieldBatch } from "./fieldBatch.js";
|
|
34
|
-
import {
|
|
34
|
+
import {
|
|
35
|
+
type EncodedFieldBatch,
|
|
36
|
+
type EncodedFieldBatchV1,
|
|
37
|
+
type EncodedFieldBatchV2,
|
|
38
|
+
type EncodedValueShape,
|
|
39
|
+
FieldBatchFormatVersion,
|
|
40
|
+
SpecialField,
|
|
41
|
+
} from "./format.js";
|
|
35
42
|
import type { IncrementalEncoder } from "./codecs.js";
|
|
36
43
|
import { NodeShapeBasedEncoder } from "./nodeEncoder.js";
|
|
37
44
|
import { defaultIncrementalEncodingPolicy } from "./incrementalEncodingPolicy.js";
|
|
38
|
-
import { oneFromIterable } from "../../../util/index.js";
|
|
45
|
+
import { brand, oneFromIterable } from "../../../util/index.js";
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Encode data from `fieldBatch` in into an `EncodedChunk` using {@link FieldBatchFormatVersion.v1}.
|
|
49
|
+
* @remarks See {@link schemaCompressedEncode} for more details.
|
|
50
|
+
* This version does not support incremental encoding.
|
|
51
|
+
*/
|
|
52
|
+
export function schemaCompressedEncodeV1(
|
|
53
|
+
schema: StoredSchemaCollection,
|
|
54
|
+
policy: SchemaPolicy,
|
|
55
|
+
fieldBatch: FieldBatch,
|
|
56
|
+
idCompressor: IIdCompressor,
|
|
57
|
+
): EncodedFieldBatchV1 {
|
|
58
|
+
return schemaCompressedEncode(
|
|
59
|
+
schema,
|
|
60
|
+
policy,
|
|
61
|
+
fieldBatch,
|
|
62
|
+
idCompressor,
|
|
63
|
+
undefined /* incrementalEncoder */,
|
|
64
|
+
brand(FieldBatchFormatVersion.v1),
|
|
65
|
+
);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Encode data from `fieldBatch` in into an `EncodedChunk` using {@link FieldBatchFormatVersion.v2}.
|
|
70
|
+
* @remarks See {@link schemaCompressedEncode} for more details.
|
|
71
|
+
* Incremental encoding is supported from this version onwards.
|
|
72
|
+
*/
|
|
73
|
+
export function schemaCompressedEncodeV2(
|
|
74
|
+
schema: StoredSchemaCollection,
|
|
75
|
+
policy: SchemaPolicy,
|
|
76
|
+
fieldBatch: FieldBatch,
|
|
77
|
+
idCompressor: IIdCompressor,
|
|
78
|
+
incrementalEncoder: IncrementalEncoder | undefined,
|
|
79
|
+
): EncodedFieldBatchV2 {
|
|
80
|
+
return schemaCompressedEncode(
|
|
81
|
+
schema,
|
|
82
|
+
policy,
|
|
83
|
+
fieldBatch,
|
|
84
|
+
idCompressor,
|
|
85
|
+
incrementalEncoder,
|
|
86
|
+
brand(FieldBatchFormatVersion.v2),
|
|
87
|
+
);
|
|
88
|
+
}
|
|
39
89
|
|
|
40
90
|
/**
|
|
41
91
|
* Encode data from `fieldBatch` in into an `EncodedChunk`.
|
|
@@ -47,24 +97,26 @@ import { oneFromIterable } from "../../../util/index.js";
|
|
|
47
97
|
* Optimized for encoded size and encoding performance.
|
|
48
98
|
* TODO: This function should eventually also take in the root FieldSchema to more efficiently compress the nodes.
|
|
49
99
|
*/
|
|
50
|
-
|
|
100
|
+
function schemaCompressedEncode(
|
|
51
101
|
schema: StoredSchemaCollection,
|
|
52
|
-
policy:
|
|
102
|
+
policy: SchemaPolicy,
|
|
53
103
|
fieldBatch: FieldBatch,
|
|
54
104
|
idCompressor: IIdCompressor,
|
|
55
|
-
incrementalEncoder
|
|
105
|
+
incrementalEncoder: IncrementalEncoder | undefined,
|
|
106
|
+
version: FieldBatchFormatVersion,
|
|
56
107
|
): EncodedFieldBatch {
|
|
57
108
|
return compressedEncode(
|
|
58
109
|
fieldBatch,
|
|
59
|
-
buildContext(schema, policy, idCompressor, incrementalEncoder),
|
|
110
|
+
buildContext(schema, policy, idCompressor, incrementalEncoder, version),
|
|
60
111
|
);
|
|
61
112
|
}
|
|
62
113
|
|
|
63
114
|
export function buildContext(
|
|
64
115
|
storedSchema: StoredSchemaCollection,
|
|
65
|
-
policy:
|
|
116
|
+
policy: SchemaPolicy,
|
|
66
117
|
idCompressor: IIdCompressor,
|
|
67
|
-
incrementalEncoder
|
|
118
|
+
incrementalEncoder: IncrementalEncoder | undefined,
|
|
119
|
+
version: FieldBatchFormatVersion,
|
|
68
120
|
): EncoderContext {
|
|
69
121
|
const context: EncoderContext = new EncoderContext(
|
|
70
122
|
(fieldBuilder: FieldEncodeBuilder, schemaName: TreeNodeSchemaIdentifier) =>
|
|
@@ -74,6 +126,7 @@ export function buildContext(
|
|
|
74
126
|
policy.fieldKinds,
|
|
75
127
|
idCompressor,
|
|
76
128
|
incrementalEncoder,
|
|
129
|
+
version,
|
|
77
130
|
);
|
|
78
131
|
return context;
|
|
79
132
|
}
|
|
@@ -8,17 +8,36 @@ import {
|
|
|
8
8
|
forEachField,
|
|
9
9
|
forEachNode,
|
|
10
10
|
} from "../../../core/index.js";
|
|
11
|
+
import { brand } from "../../../util/index.js";
|
|
11
12
|
import type { FluidSerializableReadOnly } from "../../valueUtilities.js";
|
|
12
13
|
|
|
13
14
|
import type { FieldBatch } from "./fieldBatch.js";
|
|
14
15
|
import {
|
|
15
16
|
FieldBatchFormatVersion,
|
|
16
17
|
type EncodedFieldBatch,
|
|
18
|
+
type EncodedFieldBatchV1,
|
|
19
|
+
type EncodedFieldBatchV2,
|
|
17
20
|
type EncodedNestedArrayShape,
|
|
18
21
|
type EncodedNodeShape,
|
|
19
22
|
} from "./format.js";
|
|
20
23
|
import type { ShapeIndex } from "./formatGeneric.js";
|
|
21
24
|
|
|
25
|
+
/**
|
|
26
|
+
* Encode data from `cursor` in the simplest way supported by `EncodedChunk` using {@link FieldBatchFormatVersion.v1}.
|
|
27
|
+
* @remarks See {@link uncompressedEncode} for more details.
|
|
28
|
+
*/
|
|
29
|
+
export function uncompressedEncodeV1(batch: FieldBatch): EncodedFieldBatchV1 {
|
|
30
|
+
return uncompressedEncode(batch, brand(FieldBatchFormatVersion.v1));
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Encode data from `cursor` in the simplest way supported by `EncodedChunk` using {@link FieldBatchFormatVersion.v2}.
|
|
35
|
+
* @remarks See {@link uncompressedEncode} for more details.
|
|
36
|
+
*/
|
|
37
|
+
export function uncompressedEncodeV2(batch: FieldBatch): EncodedFieldBatchV2 {
|
|
38
|
+
return uncompressedEncode(batch, brand(FieldBatchFormatVersion.v2));
|
|
39
|
+
}
|
|
40
|
+
|
|
22
41
|
/**
|
|
23
42
|
* Encode data from `cursor` in the simplest way supported by `EncodedChunk`.
|
|
24
43
|
*
|
|
@@ -27,10 +46,13 @@ import type { ShapeIndex } from "./formatGeneric.js";
|
|
|
27
46
|
*
|
|
28
47
|
* This is intended as a simple reference implementation with minimal code and dependencies.
|
|
29
48
|
*/
|
|
30
|
-
|
|
49
|
+
function uncompressedEncode(
|
|
50
|
+
batch: FieldBatch,
|
|
51
|
+
version: FieldBatchFormatVersion,
|
|
52
|
+
): EncodedFieldBatch {
|
|
31
53
|
const rootFields = batch.map(encodeSequence);
|
|
32
54
|
return {
|
|
33
|
-
version
|
|
55
|
+
version,
|
|
34
56
|
identifiers: [],
|
|
35
57
|
// A single shape used to encode all fields.
|
|
36
58
|
shapes: [{ c: anyNodeShape }, { a: anyArray }],
|