@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
|
@@ -18,22 +18,26 @@ import {
|
|
|
18
18
|
type FieldEditor,
|
|
19
19
|
type FieldKindConfiguration,
|
|
20
20
|
type FieldKindConfigurationEntry,
|
|
21
|
-
|
|
22
|
-
type
|
|
21
|
+
FlexFieldKind,
|
|
22
|
+
type FullSchemaPolicy,
|
|
23
23
|
type ToDelta,
|
|
24
24
|
allowsTreeSchemaIdentifierSuperset,
|
|
25
25
|
referenceFreeFieldChangeRebaser,
|
|
26
26
|
} from "../modular-schema/index.js";
|
|
27
27
|
import {
|
|
28
28
|
type OptionalChangeset,
|
|
29
|
+
type OptionalFieldEditor,
|
|
29
30
|
optionalChangeHandler,
|
|
30
31
|
optionalFieldEditor,
|
|
31
32
|
} from "../optional-field/index.js";
|
|
32
|
-
import {
|
|
33
|
+
import {
|
|
34
|
+
sequenceFieldChangeHandler,
|
|
35
|
+
type SequenceFieldEditor,
|
|
36
|
+
} from "../sequence-field/index.js";
|
|
33
37
|
|
|
34
38
|
import { noChangeCodecFamily } from "./noChangeCodecs.js";
|
|
35
39
|
import type { CodecTree } from "../../codec/index.js";
|
|
36
|
-
import { brand, type Brand } from "../../util/index.js";
|
|
40
|
+
import { brand, brandConst, type Brand } from "../../util/index.js";
|
|
37
41
|
|
|
38
42
|
/**
|
|
39
43
|
* ChangeHandler that only handles no-op / identity changes.
|
|
@@ -55,7 +59,15 @@ export const noChangeHandler: FieldChangeHandler<0> = {
|
|
|
55
59
|
getCrossFieldKeys: () => [],
|
|
56
60
|
};
|
|
57
61
|
|
|
58
|
-
|
|
62
|
+
/**
|
|
63
|
+
* {@link FieldEditor} for required fields (always contain exactly 1 child).
|
|
64
|
+
* @remarks
|
|
65
|
+
* This shares code with optional fields, since they are the same edit wise except setting to empty is not allowed,
|
|
66
|
+
* and the content is always assumed to not be empty.
|
|
67
|
+
* This means the actual edits implemented for optional fields are sufficient to support required fields
|
|
68
|
+
* which is why this is defined and implemented in terms of optional fields.
|
|
69
|
+
*/
|
|
70
|
+
export interface RequiredFieldEditor extends FieldEditor<OptionalChangeset> {
|
|
59
71
|
/**
|
|
60
72
|
* Creates a change which replaces the current value of the field with `newValue`.
|
|
61
73
|
* @param ids - The ids for the fill and detach fields.
|
|
@@ -63,21 +75,19 @@ export interface ValueFieldEditor extends FieldEditor<OptionalChangeset> {
|
|
|
63
75
|
set(ids: { fill: ChangeAtomId; detach: ChangeAtomId }): OptionalChangeset;
|
|
64
76
|
}
|
|
65
77
|
|
|
66
|
-
const optionalIdentifier = "Optional";
|
|
78
|
+
const optionalIdentifier = brandConst("Optional")<FieldKindIdentifier>();
|
|
79
|
+
|
|
67
80
|
/**
|
|
68
81
|
* 0 or 1 items.
|
|
69
82
|
*/
|
|
70
|
-
export const optional = new
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
optionalChangeHandler,
|
|
74
|
-
(types, other) =>
|
|
83
|
+
export const optional = new FlexFieldKind(optionalIdentifier, Multiplicity.Optional, {
|
|
84
|
+
changeHandler: optionalChangeHandler,
|
|
85
|
+
allowsTreeSupersetOf: (types, other) =>
|
|
75
86
|
(other.kind === sequence.identifier || other.kind === optionalIdentifier) &&
|
|
76
87
|
allowsTreeSchemaIdentifierSuperset(types, other.types),
|
|
77
|
-
|
|
78
|
-
);
|
|
88
|
+
});
|
|
79
89
|
|
|
80
|
-
export const
|
|
90
|
+
export const requiredFieldEditor: RequiredFieldEditor = {
|
|
81
91
|
...optionalFieldEditor,
|
|
82
92
|
set: (ids: {
|
|
83
93
|
fill: ChangeAtomId;
|
|
@@ -85,21 +95,22 @@ export const valueFieldEditor: ValueFieldEditor = {
|
|
|
85
95
|
}): OptionalChangeset => optionalFieldEditor.set(false, ids),
|
|
86
96
|
};
|
|
87
97
|
|
|
88
|
-
export const
|
|
89
|
-
|
|
90
|
-
|
|
98
|
+
export const requiredFieldChangeHandler: FieldChangeHandler<
|
|
99
|
+
OptionalChangeset,
|
|
100
|
+
RequiredFieldEditor
|
|
101
|
+
> = {
|
|
102
|
+
...optionalChangeHandler,
|
|
103
|
+
editor: requiredFieldEditor,
|
|
91
104
|
};
|
|
92
105
|
|
|
93
|
-
const requiredIdentifier = "Value";
|
|
106
|
+
const requiredIdentifier = brandConst("Value")<FieldKindIdentifier>();
|
|
94
107
|
|
|
95
108
|
/**
|
|
96
109
|
* Exactly one item.
|
|
97
110
|
*/
|
|
98
|
-
export const required = new
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
valueChangeHandler,
|
|
102
|
-
(types, other) =>
|
|
111
|
+
export const required = new FlexFieldKind(requiredIdentifier, Multiplicity.Single, {
|
|
112
|
+
changeHandler: requiredFieldChangeHandler,
|
|
113
|
+
allowsTreeSupersetOf: (types, other) =>
|
|
103
114
|
// By omitting Identifier here,
|
|
104
115
|
// this is making a policy choice that a schema upgrade cannot be done from required to identifier.
|
|
105
116
|
// Since an identifier can be upgraded into a required field,
|
|
@@ -109,43 +120,35 @@ export const required = new FieldKindWithEditor(
|
|
|
109
120
|
other.kind === requiredIdentifier ||
|
|
110
121
|
other.kind === optional.identifier) &&
|
|
111
122
|
allowsTreeSchemaIdentifierSuperset(types, other.types),
|
|
112
|
-
|
|
113
|
-
);
|
|
123
|
+
});
|
|
114
124
|
|
|
115
|
-
const sequenceIdentifier = "Sequence";
|
|
125
|
+
const sequenceIdentifier = brandConst("Sequence")<FieldKindIdentifier>();
|
|
116
126
|
|
|
117
127
|
/**
|
|
118
128
|
* 0 or more items.
|
|
119
129
|
*/
|
|
120
|
-
export const sequence = new
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
sequenceFieldChangeHandler,
|
|
124
|
-
(types, other) =>
|
|
130
|
+
export const sequence = new FlexFieldKind(sequenceIdentifier, Multiplicity.Sequence, {
|
|
131
|
+
changeHandler: sequenceFieldChangeHandler,
|
|
132
|
+
allowsTreeSupersetOf: (types, other) =>
|
|
125
133
|
other.kind === sequenceIdentifier &&
|
|
126
134
|
allowsTreeSchemaIdentifierSuperset(types, other.types),
|
|
127
|
-
|
|
128
|
-
new Set([]),
|
|
129
|
-
);
|
|
135
|
+
});
|
|
130
136
|
|
|
131
|
-
const identifierFieldIdentifier = "Identifier";
|
|
137
|
+
const identifierFieldIdentifier = brandConst("Identifier")<FieldKindIdentifier>();
|
|
132
138
|
|
|
133
139
|
/**
|
|
134
140
|
* Exactly one identifier.
|
|
135
141
|
*/
|
|
136
|
-
export const identifier = new
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
noChangeHandler,
|
|
140
|
-
(types, other) =>
|
|
142
|
+
export const identifier = new FlexFieldKind(identifierFieldIdentifier, Multiplicity.Single, {
|
|
143
|
+
changeHandler: noChangeHandler,
|
|
144
|
+
allowsTreeSupersetOf: (types, other) =>
|
|
141
145
|
// Allows upgrading from identifier to required: which way this upgrade is allowed to go is a subjective policy choice.
|
|
142
146
|
(other.kind === sequence.identifier ||
|
|
143
147
|
other.kind === requiredIdentifier ||
|
|
144
148
|
other.kind === optional.identifier ||
|
|
145
149
|
other.kind === identifierFieldIdentifier) &&
|
|
146
150
|
allowsTreeSchemaIdentifierSuperset(types, other.types),
|
|
147
|
-
|
|
148
|
-
);
|
|
151
|
+
});
|
|
149
152
|
|
|
150
153
|
/**
|
|
151
154
|
* Exactly 0 items.
|
|
@@ -175,39 +178,21 @@ export const identifier = new FieldKindWithEditor(
|
|
|
175
178
|
*
|
|
176
179
|
* See {@link emptyField} for a constant, reusable field using Forbidden.
|
|
177
180
|
*/
|
|
178
|
-
export const forbidden = new
|
|
181
|
+
export const forbidden = new FlexFieldKind(
|
|
179
182
|
forbiddenFieldKindIdentifier,
|
|
180
183
|
Multiplicity.Forbidden,
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
184
|
+
{
|
|
185
|
+
changeHandler: noChangeHandler,
|
|
186
|
+
// All multiplicities other than Value support empty.
|
|
187
|
+
allowsTreeSupersetOf: (types, other) =>
|
|
188
|
+
fieldKinds.get(other.kind)?.multiplicity !== Multiplicity.Single,
|
|
189
|
+
},
|
|
185
190
|
);
|
|
186
191
|
|
|
187
192
|
export const fieldKindConfigurations: ReadonlyMap<
|
|
188
193
|
ModularChangeFormatVersion,
|
|
189
194
|
FieldKindConfiguration
|
|
190
195
|
> = new Map([
|
|
191
|
-
[
|
|
192
|
-
brand(1),
|
|
193
|
-
new Map<FieldKindIdentifier, FieldKindConfigurationEntry>([
|
|
194
|
-
[required.identifier, { kind: required, formatVersion: 1 }],
|
|
195
|
-
[optional.identifier, { kind: optional, formatVersion: 1 }],
|
|
196
|
-
[sequence.identifier, { kind: sequence, formatVersion: 1 }],
|
|
197
|
-
[forbidden.identifier, { kind: forbidden, formatVersion: 1 }],
|
|
198
|
-
[identifier.identifier, { kind: identifier, formatVersion: 1 }],
|
|
199
|
-
]),
|
|
200
|
-
],
|
|
201
|
-
[
|
|
202
|
-
brand(2),
|
|
203
|
-
new Map<FieldKindIdentifier, FieldKindConfigurationEntry>([
|
|
204
|
-
[required.identifier, { kind: required, formatVersion: 2 }],
|
|
205
|
-
[optional.identifier, { kind: optional, formatVersion: 2 }],
|
|
206
|
-
[sequence.identifier, { kind: sequence, formatVersion: 1 }],
|
|
207
|
-
[forbidden.identifier, { kind: forbidden, formatVersion: 1 }],
|
|
208
|
-
[identifier.identifier, { kind: identifier, formatVersion: 1 }],
|
|
209
|
-
]),
|
|
210
|
-
],
|
|
211
196
|
[
|
|
212
197
|
brand(3),
|
|
213
198
|
new Map<FieldKindIdentifier, FieldKindConfigurationEntry>([
|
|
@@ -230,7 +215,7 @@ export const fieldKindConfigurations: ReadonlyMap<
|
|
|
230
215
|
],
|
|
231
216
|
]);
|
|
232
217
|
|
|
233
|
-
export type ModularChangeFormatVersion = Brand<
|
|
218
|
+
export type ModularChangeFormatVersion = Brand<3 | 4, "ModularChangeFormatVersion">;
|
|
234
219
|
export function getCodecTreeForModularChangeFormat(
|
|
235
220
|
version: ModularChangeFormatVersion,
|
|
236
221
|
): CodecTree {
|
|
@@ -256,7 +241,7 @@ export function getCodecTreeForModularChangeFormat(
|
|
|
256
241
|
* Before making a SharedTree format change which impacts which set of field kinds are allowed,
|
|
257
242
|
* code which uses this should be audited for compatibility considerations.
|
|
258
243
|
*/
|
|
259
|
-
export const fieldKinds: ReadonlyMap<FieldKindIdentifier,
|
|
244
|
+
export const fieldKinds: ReadonlyMap<FieldKindIdentifier, FlexFieldKind> = new Map(
|
|
260
245
|
[required, optional, sequence, identifier, forbidden].map((s) => [s.identifier, s]),
|
|
261
246
|
);
|
|
262
247
|
|
|
@@ -265,12 +250,32 @@ export const fieldKinds: ReadonlyMap<FieldKindIdentifier, FieldKindWithEditor> =
|
|
|
265
250
|
// TODO: Find a way to make docs like {@inheritDoc required} work in vscode.
|
|
266
251
|
// TODO: ensure thy work in generated docs.
|
|
267
252
|
// TODO: add these comments to the rest of the cases below.
|
|
268
|
-
export interface Required
|
|
269
|
-
|
|
270
|
-
export interface
|
|
271
|
-
|
|
253
|
+
export interface Required
|
|
254
|
+
extends FlexFieldKind<RequiredFieldEditor, typeof requiredIdentifier, Multiplicity.Single> {}
|
|
255
|
+
export interface Optional
|
|
256
|
+
extends FlexFieldKind<
|
|
257
|
+
OptionalFieldEditor,
|
|
258
|
+
typeof optionalIdentifier,
|
|
259
|
+
Multiplicity.Optional
|
|
260
|
+
> {}
|
|
261
|
+
export interface Sequence
|
|
262
|
+
extends FlexFieldKind<
|
|
263
|
+
SequenceFieldEditor,
|
|
264
|
+
typeof sequenceIdentifier,
|
|
265
|
+
Multiplicity.Sequence
|
|
266
|
+
> {}
|
|
267
|
+
export interface Identifier
|
|
268
|
+
extends FlexFieldKind<
|
|
269
|
+
FieldEditor<0>,
|
|
270
|
+
typeof identifierFieldIdentifier,
|
|
271
|
+
Multiplicity.Single
|
|
272
|
+
> {}
|
|
272
273
|
export interface Forbidden
|
|
273
|
-
extends FlexFieldKind<
|
|
274
|
+
extends FlexFieldKind<
|
|
275
|
+
FieldEditor<0>,
|
|
276
|
+
typeof forbiddenFieldKindIdentifier,
|
|
277
|
+
Multiplicity.Forbidden
|
|
278
|
+
> {}
|
|
274
279
|
|
|
275
280
|
/**
|
|
276
281
|
* Default FieldKinds with their editor types erased.
|
|
@@ -283,3 +288,10 @@ export const FieldKinds: {
|
|
|
283
288
|
readonly identifier: Identifier;
|
|
284
289
|
readonly forbidden: Forbidden;
|
|
285
290
|
} = { required, optional, sequence, identifier, forbidden };
|
|
291
|
+
|
|
292
|
+
/**
|
|
293
|
+
* FullSchemaPolicy with the default field kinds.
|
|
294
|
+
*/
|
|
295
|
+
export const defaultSchemaPolicy: FullSchemaPolicy = {
|
|
296
|
+
fieldKinds,
|
|
297
|
+
};
|
|
@@ -14,6 +14,7 @@ export {
|
|
|
14
14
|
fieldKindConfigurations,
|
|
15
15
|
getCodecTreeForModularChangeFormat,
|
|
16
16
|
type ModularChangeFormatVersion,
|
|
17
|
+
defaultSchemaPolicy,
|
|
17
18
|
} from "./defaultFieldKinds.js";
|
|
18
19
|
|
|
19
20
|
export {
|
|
@@ -28,13 +29,4 @@ export {
|
|
|
28
29
|
relevantRemovedRoots,
|
|
29
30
|
} from "./defaultEditBuilder.js";
|
|
30
31
|
|
|
31
|
-
export {
|
|
32
|
-
SchemaValidationError,
|
|
33
|
-
isNodeInSchema,
|
|
34
|
-
isFieldInSchema,
|
|
35
|
-
throwOutOfSchema,
|
|
36
|
-
} from "./schemaChecker.js";
|
|
37
|
-
|
|
38
|
-
export { defaultSchemaPolicy } from "./defaultSchema.js";
|
|
39
|
-
|
|
40
32
|
export { MappedEditBuilder } from "./mappedEditBuilder.js";
|
|
@@ -48,7 +48,7 @@ import {
|
|
|
48
48
|
ForestIncrementalSummaryBuilder,
|
|
49
49
|
forestSummaryContentKey,
|
|
50
50
|
} from "./incrementalSummaryBuilder.js";
|
|
51
|
-
import {
|
|
51
|
+
import { TreeCompressionStrategy } from "../treeCompressionUtils.js";
|
|
52
52
|
import type { IFluidHandle } from "@fluidframework/core-interfaces";
|
|
53
53
|
|
|
54
54
|
/**
|
|
@@ -85,7 +85,7 @@ export class ForestSummarizer implements Summarizable {
|
|
|
85
85
|
this.codec = makeForestSummarizerCodec(options, fieldBatchCodec);
|
|
86
86
|
this.incrementalSummaryBuilder = new ForestIncrementalSummaryBuilder(
|
|
87
87
|
encoderContext.encodeType ===
|
|
88
|
-
|
|
88
|
+
TreeCompressionStrategy.CompressedIncremental /* enableIncrementalSummary */,
|
|
89
89
|
(cursor: ITreeCursorSynchronous) => this.forest.chunkField(cursor),
|
|
90
90
|
shouldEncodeIncrementally,
|
|
91
91
|
initialSequenceNumber,
|
|
@@ -7,7 +7,7 @@ import { type Static, Type } from "@sinclair/typebox";
|
|
|
7
7
|
|
|
8
8
|
import { Versioned } from "../../codec/index.js";
|
|
9
9
|
import { schemaFormatV1 } from "../../core/index.js";
|
|
10
|
-
import type
|
|
10
|
+
import { brand, type Brand } from "../../util/index.js";
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
13
|
* The format version for the forest.
|
|
@@ -20,13 +20,19 @@ export type ForestFormatVersion = Brand<
|
|
|
20
20
|
"ForestFormatVersion"
|
|
21
21
|
>;
|
|
22
22
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
)
|
|
23
|
+
const FormatGeneric = (
|
|
24
|
+
version: ForestFormatVersion,
|
|
25
|
+
// Return type is intentionally derived.
|
|
26
|
+
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
|
|
27
|
+
) =>
|
|
28
|
+
Type.Object(
|
|
29
|
+
{
|
|
30
|
+
version: Type.Literal(version),
|
|
31
|
+
keys: Type.Array(schemaFormatV1.FieldKeySchema),
|
|
32
|
+
fields: Versioned,
|
|
33
|
+
},
|
|
34
|
+
{ additionalProperties: false },
|
|
35
|
+
);
|
|
31
36
|
|
|
37
|
+
export const Format = FormatGeneric(brand<ForestFormatVersion>(ForestFormatVersion.v1));
|
|
32
38
|
export type Format = Static<typeof Format>;
|
|
@@ -81,7 +81,6 @@ export {
|
|
|
81
81
|
genericFieldKind,
|
|
82
82
|
type HasFieldChanges,
|
|
83
83
|
type NodeExistsConstraint,
|
|
84
|
-
FieldKindWithEditor,
|
|
85
84
|
ModularChangeFamily,
|
|
86
85
|
type RelevantRemovedRootsFromChild,
|
|
87
86
|
EncodedModularChangeset,
|
|
@@ -104,7 +103,7 @@ export {
|
|
|
104
103
|
defaultChunkPolicy,
|
|
105
104
|
type FieldBatch,
|
|
106
105
|
type FieldBatchCodec,
|
|
107
|
-
|
|
106
|
+
FieldBatchFormatVersion,
|
|
108
107
|
getCodecTreeForFieldBatchFormat,
|
|
109
108
|
makeTreeChunker,
|
|
110
109
|
makeFieldBatchCodec,
|
|
@@ -145,13 +144,16 @@ export {
|
|
|
145
144
|
fieldKindConfigurations,
|
|
146
145
|
intoDelta,
|
|
147
146
|
relevantRemovedRoots,
|
|
147
|
+
getCodecTreeForModularChangeFormat,
|
|
148
|
+
type ModularChangeFormatVersion,
|
|
149
|
+
} from "./default-schema/index.js";
|
|
150
|
+
|
|
151
|
+
export {
|
|
148
152
|
SchemaValidationError,
|
|
149
153
|
isNodeInSchema,
|
|
150
154
|
isFieldInSchema,
|
|
151
155
|
throwOutOfSchema,
|
|
152
|
-
|
|
153
|
-
type ModularChangeFormatVersion,
|
|
154
|
-
} from "./default-schema/index.js";
|
|
156
|
+
} from "./schemaChecker.js";
|
|
155
157
|
|
|
156
158
|
export {
|
|
157
159
|
type FlexTreeOptionalField,
|
|
@@ -188,11 +190,7 @@ export {
|
|
|
188
190
|
type Observer,
|
|
189
191
|
} from "./flex-tree/index.js";
|
|
190
192
|
|
|
191
|
-
export {
|
|
192
|
-
TreeCompressionStrategy,
|
|
193
|
-
TreeCompressionStrategyExtended,
|
|
194
|
-
type TreeCompressionStrategyPrivate,
|
|
195
|
-
} from "./treeCompressionUtils.js";
|
|
193
|
+
export { TreeCompressionStrategy } from "./treeCompressionUtils.js";
|
|
196
194
|
|
|
197
195
|
export { valueSchemaAllows } from "./valueUtilities.js";
|
|
198
196
|
|
|
@@ -19,7 +19,6 @@ import {
|
|
|
19
19
|
import { compareSets } from "../../util/index.js";
|
|
20
20
|
|
|
21
21
|
import type { FullSchemaPolicy } from "./fieldKind.js";
|
|
22
|
-
import { withEditor } from "./fieldKindWithEditor.js";
|
|
23
22
|
import { isNeverTree } from "./isNeverTree.js";
|
|
24
23
|
|
|
25
24
|
/**
|
|
@@ -133,8 +132,8 @@ export function allowsFieldSuperset(
|
|
|
133
132
|
original: TreeFieldStoredSchema,
|
|
134
133
|
superset: TreeFieldStoredSchema,
|
|
135
134
|
): boolean {
|
|
136
|
-
return
|
|
137
|
-
policy.fieldKinds.get(original.kind) ?? fail(0xb1b /* missing kind */)
|
|
135
|
+
return (
|
|
136
|
+
policy.fieldKinds.get(original.kind) ?? fail(0xb1b /* missing kind */)
|
|
138
137
|
).allowsFieldSuperset(policy, originalData, original.types, superset);
|
|
139
138
|
}
|
|
140
139
|
|
|
@@ -8,7 +8,14 @@ import type {
|
|
|
8
8
|
FieldKindData,
|
|
9
9
|
Multiplicity,
|
|
10
10
|
SchemaPolicy,
|
|
11
|
+
TreeFieldStoredSchema,
|
|
12
|
+
TreeStoredSchema,
|
|
13
|
+
TreeTypeSet,
|
|
11
14
|
} from "../../core/index.js";
|
|
15
|
+
import type { MakeNominal } from "../../util/index.js";
|
|
16
|
+
|
|
17
|
+
import type { FieldChangeHandler, FieldEditor } from "./fieldChangeHandler.js";
|
|
18
|
+
import { isNeverField } from "./isNeverTree.js";
|
|
12
19
|
|
|
13
20
|
/**
|
|
14
21
|
* Functionality for FieldKinds that is stable,
|
|
@@ -22,26 +29,96 @@ import type {
|
|
|
22
29
|
*
|
|
23
30
|
* These policies include the data encoding, change encoding, change rebase and change application.
|
|
24
31
|
*
|
|
25
|
-
* @
|
|
26
|
-
*
|
|
27
|
-
* This package itself may provide implementations.
|
|
28
|
-
* This pattern was picked instead of an interface since we do not have a convention for how to mark interfaces as only allowed to be implemented by the package declaring them,
|
|
29
|
-
* and using a class also gets stronger (nominal) typing for objects which will be down cast.
|
|
32
|
+
* @privateRemarks
|
|
33
|
+
* Using a class gets stronger (nominal) typing for objects which will be down cast.
|
|
30
34
|
*/
|
|
31
|
-
export
|
|
32
|
-
|
|
35
|
+
export class FlexFieldKind<
|
|
36
|
+
// TODO: stronger typing
|
|
37
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
38
|
+
TEditor extends FieldEditor<any> = FieldEditor<any>,
|
|
39
|
+
TName extends FieldKindIdentifier = FieldKindIdentifier,
|
|
33
40
|
TMultiplicity extends Multiplicity = Multiplicity,
|
|
34
41
|
> implements FieldKindData
|
|
35
42
|
{
|
|
43
|
+
protected _typeCheck!: MakeNominal;
|
|
44
|
+
|
|
36
45
|
/**
|
|
37
|
-
*
|
|
38
|
-
* @param multiplicity - bound on the number of children that fields of this kind may have.
|
|
39
|
-
* TODO: consider replacing with numeric upper and lower bounds.
|
|
46
|
+
* Change handling policy.
|
|
40
47
|
*/
|
|
41
|
-
|
|
42
|
-
|
|
48
|
+
// TODO: stronger typing
|
|
49
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
50
|
+
public readonly changeHandler: FieldChangeHandler<any, TEditor>;
|
|
51
|
+
|
|
52
|
+
public constructor(
|
|
53
|
+
public readonly identifier: TName,
|
|
43
54
|
public readonly multiplicity: TMultiplicity,
|
|
44
|
-
|
|
55
|
+
// TODO: stronger typing
|
|
56
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
57
|
+
private readonly options: FieldKindOptions<FieldChangeHandler<any, TEditor>>,
|
|
58
|
+
) {
|
|
59
|
+
this.changeHandler = options.changeHandler;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Returns true if and only if `superset` permits a (non-strict) superset of the subtrees
|
|
64
|
+
* allowed by field made from `this` and `originalTypes`.
|
|
65
|
+
*
|
|
66
|
+
* TODO: clarify the relationship between this and FieldKindData, and issues with cyclic schema upgrades.
|
|
67
|
+
*/
|
|
68
|
+
public allowsFieldSuperset(
|
|
69
|
+
policy: SchemaPolicy,
|
|
70
|
+
originalData: TreeStoredSchema,
|
|
71
|
+
originalTypes: TreeTypeSet,
|
|
72
|
+
superset: TreeFieldStoredSchema,
|
|
73
|
+
): boolean {
|
|
74
|
+
if (
|
|
75
|
+
isNeverField(policy, originalData, {
|
|
76
|
+
kind: this.identifier,
|
|
77
|
+
types: originalTypes,
|
|
78
|
+
// Metadata is not used for this check.
|
|
79
|
+
persistedMetadata: undefined,
|
|
80
|
+
})
|
|
81
|
+
) {
|
|
82
|
+
return true;
|
|
83
|
+
}
|
|
84
|
+
if (isNeverField(policy, originalData, superset)) {
|
|
85
|
+
return false;
|
|
86
|
+
}
|
|
87
|
+
return this.options.allowsTreeSupersetOf(originalTypes, superset);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Additional options for {@link FlexFieldKind}.
|
|
93
|
+
*
|
|
94
|
+
* @remarks
|
|
95
|
+
* Puts the more confusing parameters into this object so they get explicit names to help with clarity.
|
|
96
|
+
*/
|
|
97
|
+
export interface FieldKindOptions<TFieldChangeHandler> {
|
|
98
|
+
/**
|
|
99
|
+
* Change handling policy.
|
|
100
|
+
*/
|
|
101
|
+
readonly changeHandler: TFieldChangeHandler;
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Returns true if and only if `superset` permits a (non-strict) superset of the subtrees
|
|
105
|
+
* allowed by field made from `this` and `originalTypes`.
|
|
106
|
+
* @remarks
|
|
107
|
+
* Used by {@link FlexFieldKind.allowsFieldSuperset}, which handles the `never` cases before calling this.
|
|
108
|
+
*/
|
|
109
|
+
readonly allowsTreeSupersetOf: (
|
|
110
|
+
originalTypes: TreeTypeSet,
|
|
111
|
+
superset: TreeFieldStoredSchema,
|
|
112
|
+
) => boolean;
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Kinds (in addition to this) whose edits can be processed by changeHandler.
|
|
116
|
+
* If the kind of a field changes, and edits are rebased across that kind change,
|
|
117
|
+
* listing the other old kind here can prevent those edits from being conflicted and
|
|
118
|
+
* provide a chance to handle them.
|
|
119
|
+
*/
|
|
120
|
+
// TODO: provide this and use it for improved support for rebasing changes across schema upgrades.
|
|
121
|
+
// readonly handlesEditsFrom: ReadonlySet<FieldKindIdentifier>;
|
|
45
122
|
}
|
|
46
123
|
|
|
47
124
|
/**
|
|
@@ -4,14 +4,13 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import type { FieldKindIdentifier } from "../../core/index.js";
|
|
7
|
-
|
|
8
|
-
import type { FieldKindWithEditor } from "./fieldKindWithEditor.js";
|
|
7
|
+
import type { FlexFieldKind } from "./fieldKind.js";
|
|
9
8
|
|
|
10
9
|
/**
|
|
11
10
|
* Configuration for a single field kind.
|
|
12
11
|
*/
|
|
13
12
|
export interface FieldKindConfigurationEntry {
|
|
14
|
-
readonly kind:
|
|
13
|
+
readonly kind: FlexFieldKind;
|
|
15
14
|
/**
|
|
16
15
|
* The format to be used for encoding changesets for this field kind.
|
|
17
16
|
*/
|
|
@@ -9,6 +9,7 @@ import { BTree } from "@tylerbu/sorted-btree-es6";
|
|
|
9
9
|
import {
|
|
10
10
|
type DeltaDetachedNodeId,
|
|
11
11
|
type DeltaMark,
|
|
12
|
+
type FieldKindIdentifier,
|
|
12
13
|
Multiplicity,
|
|
13
14
|
type RevisionTag,
|
|
14
15
|
replaceAtomRevisions,
|
|
@@ -24,10 +25,11 @@ import type {
|
|
|
24
25
|
RelevantRemovedRootsFromChild,
|
|
25
26
|
ToDelta,
|
|
26
27
|
} from "./fieldChangeHandler.js";
|
|
27
|
-
import { FieldKindWithEditor } from "./fieldKindWithEditor.js";
|
|
28
28
|
import { makeGenericChangeCodec } from "./genericFieldKindCodecs.js";
|
|
29
29
|
import { newGenericChangeset, type GenericChangeset } from "./genericFieldKindTypes.js";
|
|
30
30
|
import type { NodeId } from "./modularChangeTypes.js";
|
|
31
|
+
import { FlexFieldKind } from "./fieldKind.js";
|
|
32
|
+
import { brandConst } from "../../util/index.js";
|
|
31
33
|
|
|
32
34
|
/**
|
|
33
35
|
* {@link FieldChangeHandler} implementation for {@link GenericChangeset}.
|
|
@@ -164,12 +166,10 @@ function replaceRevisions(
|
|
|
164
166
|
/**
|
|
165
167
|
* {@link FieldKind} used to represent changes to elements of a field in a field-kind-agnostic format.
|
|
166
168
|
*/
|
|
167
|
-
export const genericFieldKind:
|
|
168
|
-
"ModularEditBuilder.Generic",
|
|
169
|
+
export const genericFieldKind: FlexFieldKind = new FlexFieldKind(
|
|
170
|
+
brandConst("ModularEditBuilder.Generic")<FieldKindIdentifier>(),
|
|
169
171
|
Multiplicity.Sequence,
|
|
170
|
-
genericChangeHandler,
|
|
171
|
-
(types, other) => false,
|
|
172
|
-
new Set(),
|
|
172
|
+
{ changeHandler: genericChangeHandler, allowsTreeSupersetOf: (types, other) => false },
|
|
173
173
|
);
|
|
174
174
|
|
|
175
175
|
/**
|
|
@@ -26,7 +26,6 @@ export {
|
|
|
26
26
|
EncodedNodeChangeset,
|
|
27
27
|
} from "./modularChangeFormat.js";
|
|
28
28
|
export { FlexFieldKind, type FullSchemaPolicy } from "./fieldKind.js";
|
|
29
|
-
export { FieldKindWithEditor } from "./fieldKindWithEditor.js";
|
|
30
29
|
export {
|
|
31
30
|
type FieldChangeHandler,
|
|
32
31
|
type FieldChangeDelta,
|
|
@@ -13,12 +13,11 @@ import {
|
|
|
13
13
|
type TreeNodeStoredSchema,
|
|
14
14
|
type TreeStoredSchema,
|
|
15
15
|
Multiplicity,
|
|
16
|
+
type SchemaPolicy,
|
|
16
17
|
} from "../../core/index.js";
|
|
17
18
|
|
|
18
|
-
import type { FullSchemaPolicy } from "./fieldKind.js";
|
|
19
|
-
|
|
20
19
|
export function isNeverField(
|
|
21
|
-
policy:
|
|
20
|
+
policy: SchemaPolicy,
|
|
22
21
|
originalData: TreeStoredSchema,
|
|
23
22
|
field: TreeFieldStoredSchema,
|
|
24
23
|
): boolean {
|
|
@@ -26,7 +25,7 @@ export function isNeverField(
|
|
|
26
25
|
}
|
|
27
26
|
|
|
28
27
|
export function isNeverFieldRecursive(
|
|
29
|
-
policy:
|
|
28
|
+
policy: SchemaPolicy,
|
|
30
29
|
originalData: TreeStoredSchema,
|
|
31
30
|
field: TreeFieldStoredSchema,
|
|
32
31
|
parentTypeStack: Set<TreeNodeStoredSchema>,
|
|
@@ -54,29 +53,29 @@ export function isNeverFieldRecursive(
|
|
|
54
53
|
}
|
|
55
54
|
return false;
|
|
56
55
|
}
|
|
56
|
+
|
|
57
57
|
/**
|
|
58
58
|
* Returns true iff there are no possible trees that could meet this schema.
|
|
59
59
|
* Trees which are infinite (like endless linked lists) are considered impossible.
|
|
60
60
|
*
|
|
61
61
|
* `undefined` means the schema is not present and thus a NeverTree.
|
|
62
62
|
*/
|
|
63
|
-
|
|
64
63
|
export function isNeverTree(
|
|
65
|
-
policy:
|
|
64
|
+
policy: SchemaPolicy,
|
|
66
65
|
originalData: TreeStoredSchema,
|
|
67
66
|
treeNode: TreeNodeStoredSchema | undefined,
|
|
68
67
|
): boolean {
|
|
69
68
|
return isNeverTreeRecursive(policy, originalData, treeNode, new Set());
|
|
70
69
|
}
|
|
70
|
+
|
|
71
71
|
/**
|
|
72
72
|
* Returns true iff there are no possible trees that could meet this schema.
|
|
73
73
|
* Trees which are infinite (like endless linked lists) are considered impossible.
|
|
74
74
|
*
|
|
75
75
|
* `undefined` means the schema is not present and thus a NeverTree.
|
|
76
76
|
*/
|
|
77
|
-
|
|
78
77
|
export function isNeverTreeRecursive(
|
|
79
|
-
policy:
|
|
78
|
+
policy: SchemaPolicy,
|
|
80
79
|
originalData: TreeStoredSchema,
|
|
81
80
|
treeNode: TreeNodeStoredSchema | undefined,
|
|
82
81
|
parentTypeStack: Set<TreeNodeStoredSchema>,
|