@fluidframework/tree 2.72.0 → 2.73.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +99 -0
- package/api-report/tree.alpha.api.md +17 -30
- package/dist/alpha.d.ts +3 -1
- package/dist/api.d.ts +6 -2
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +2 -11
- package/dist/api.js.map +1 -1
- package/dist/codec/codec.d.ts +9 -2
- package/dist/codec/codec.d.ts.map +1 -1
- package/dist/codec/codec.js +9 -2
- package/dist/codec/codec.js.map +1 -1
- package/dist/codec/index.d.ts +1 -1
- package/dist/codec/index.d.ts.map +1 -1
- package/dist/codec/index.js +2 -1
- package/dist/codec/index.js.map +1 -1
- package/dist/codec/versioned/codec.d.ts +7 -2
- package/dist/codec/versioned/codec.d.ts.map +1 -1
- package/dist/codec/versioned/codec.js +24 -1
- package/dist/codec/versioned/codec.js.map +1 -1
- package/dist/codec/versioned/index.d.ts +1 -1
- package/dist/codec/versioned/index.d.ts.map +1 -1
- package/dist/codec/versioned/index.js +2 -1
- package/dist/codec/versioned/index.js.map +1 -1
- package/dist/core/schema-stored/schema.d.ts +12 -1
- package/dist/core/schema-stored/schema.d.ts.map +1 -1
- package/dist/core/schema-stored/schema.js.map +1 -1
- package/dist/core/tree/detachedFieldIndexCodecs.d.ts.map +1 -1
- package/dist/core/tree/detachedFieldIndexCodecs.js +5 -3
- package/dist/core/tree/detachedFieldIndexCodecs.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/chunkTree.d.ts +4 -5
- package/dist/feature-libraries/chunked-forest/chunkTree.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.js +1 -0
- package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.d.ts +2 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/codecs.d.ts +1 -1
- package/dist/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/codecs.js +31 -17
- package/dist/feature-libraries/chunked-forest/codec/codecs.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/compressedEncode.d.ts +6 -6
- package/dist/feature-libraries/chunked-forest/codec/compressedEncode.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js +4 -2
- package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/format.d.ts +156 -4
- package/dist/feature-libraries/chunked-forest/codec/format.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/format.js +7 -3
- package/dist/feature-libraries/chunked-forest/codec/format.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/formatGeneric.d.ts +8 -3
- package/dist/feature-libraries/chunked-forest/codec/formatGeneric.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/formatGeneric.js +4 -1
- package/dist/feature-libraries/chunked-forest/codec/formatGeneric.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/index.d.ts +1 -1
- package/dist/feature-libraries/chunked-forest/codec/index.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/index.js +2 -1
- package/dist/feature-libraries/chunked-forest/codec/index.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncode.d.ts +13 -13
- package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncode.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncode.js +23 -6
- package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncode.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/uncompressedEncode.d.ts +9 -8
- package/dist/feature-libraries/chunked-forest/codec/uncompressedEncode.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/uncompressedEncode.js +20 -4
- package/dist/feature-libraries/chunked-forest/codec/uncompressedEncode.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/index.d.ts +1 -1
- package/dist/feature-libraries/chunked-forest/index.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/index.js +2 -1
- package/dist/feature-libraries/chunked-forest/index.js.map +1 -1
- package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts +35 -17
- package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
- package/dist/feature-libraries/default-schema/defaultFieldKinds.js +53 -55
- package/dist/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
- package/dist/feature-libraries/default-schema/index.d.ts +1 -3
- package/dist/feature-libraries/default-schema/index.d.ts.map +1 -1
- package/dist/feature-libraries/default-schema/index.js +2 -8
- package/dist/feature-libraries/default-schema/index.js.map +1 -1
- package/dist/feature-libraries/forest-summary/format.d.ts +2 -2
- package/dist/feature-libraries/forest-summary/format.d.ts.map +1 -1
- package/dist/feature-libraries/forest-summary/format.js +4 -2
- package/dist/feature-libraries/forest-summary/format.js.map +1 -1
- package/dist/feature-libraries/index.d.ts +4 -3
- package/dist/feature-libraries/index.d.ts.map +1 -1
- package/dist/feature-libraries/index.js +8 -7
- package/dist/feature-libraries/index.js.map +1 -1
- package/dist/feature-libraries/modular-schema/comparison.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/comparison.js +1 -2
- package/dist/feature-libraries/modular-schema/comparison.js.map +1 -1
- package/dist/feature-libraries/modular-schema/fieldKind.d.ts +38 -12
- package/dist/feature-libraries/modular-schema/fieldKind.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/fieldKind.js +29 -11
- package/dist/feature-libraries/modular-schema/fieldKind.js.map +1 -1
- package/dist/feature-libraries/modular-schema/fieldKindConfiguration.d.ts +2 -2
- package/dist/feature-libraries/modular-schema/fieldKindConfiguration.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/fieldKindConfiguration.js.map +1 -1
- package/dist/feature-libraries/modular-schema/genericFieldKind.d.ts +2 -2
- package/dist/feature-libraries/modular-schema/genericFieldKind.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/genericFieldKind.js +3 -2
- package/dist/feature-libraries/modular-schema/genericFieldKind.js.map +1 -1
- package/dist/feature-libraries/modular-schema/index.d.ts +0 -1
- package/dist/feature-libraries/modular-schema/index.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/index.js +1 -3
- package/dist/feature-libraries/modular-schema/index.js.map +1 -1
- package/dist/feature-libraries/modular-schema/isNeverTree.d.ts +5 -6
- package/dist/feature-libraries/modular-schema/isNeverTree.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/isNeverTree.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts +8 -8
- package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFamily.js +1 -2
- package/dist/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFormat.d.ts +66 -9
- package/dist/feature-libraries/modular-schema/modularChangeFormat.d.ts.map +1 -1
- package/dist/feature-libraries/object-forest/objectForest.d.ts.map +1 -1
- package/dist/feature-libraries/object-forest/objectForest.js +3 -2
- package/dist/feature-libraries/object-forest/objectForest.js.map +1 -1
- package/dist/feature-libraries/optional-field/index.d.ts +1 -1
- package/dist/feature-libraries/optional-field/index.d.ts.map +1 -1
- package/dist/feature-libraries/optional-field/index.js.map +1 -1
- package/dist/feature-libraries/optional-field/optionalFieldCodecs.d.ts.map +1 -1
- package/dist/feature-libraries/optional-field/optionalFieldCodecs.js +1 -5
- package/dist/feature-libraries/optional-field/optionalFieldCodecs.js.map +1 -1
- package/dist/feature-libraries/schema-index/codec.d.ts.map +1 -1
- package/dist/feature-libraries/schema-index/codec.js +5 -3
- package/dist/feature-libraries/schema-index/codec.js.map +1 -1
- package/dist/feature-libraries/{default-schema/schemaChecker.d.ts → schemaChecker.d.ts} +2 -2
- package/dist/feature-libraries/schemaChecker.d.ts.map +1 -0
- package/dist/feature-libraries/{default-schema/schemaChecker.js → schemaChecker.js} +3 -3
- package/dist/feature-libraries/schemaChecker.js.map +1 -0
- package/dist/feature-libraries/sequence-field/sequenceFieldCodecs.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldCodecs.js +0 -2
- package/dist/feature-libraries/sequence-field/sequenceFieldCodecs.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -3
- package/dist/index.js.map +1 -1
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/shared-tree/index.d.ts +1 -1
- package/dist/shared-tree/index.d.ts.map +1 -1
- package/dist/shared-tree/index.js +1 -2
- package/dist/shared-tree/index.js.map +1 -1
- package/dist/shared-tree/sharedTree.d.ts +0 -44
- package/dist/shared-tree/sharedTree.d.ts.map +1 -1
- package/dist/shared-tree/sharedTree.js +1 -52
- package/dist/shared-tree/sharedTree.js.map +1 -1
- package/dist/shared-tree/sharedTreeChangeCodecs.d.ts +1 -1
- package/dist/shared-tree/sharedTreeChangeCodecs.d.ts.map +1 -1
- package/dist/shared-tree/sharedTreeChangeCodecs.js +0 -2
- package/dist/shared-tree/sharedTreeChangeCodecs.js.map +1 -1
- package/dist/shared-tree-core/editManagerCodecs.d.ts.map +1 -1
- package/dist/shared-tree-core/editManagerCodecs.js +12 -6
- package/dist/shared-tree-core/editManagerCodecs.js.map +1 -1
- package/dist/shared-tree-core/editManagerFormatCommons.d.ts +3 -4
- package/dist/shared-tree-core/editManagerFormatCommons.d.ts.map +1 -1
- package/dist/shared-tree-core/editManagerFormatCommons.js +5 -8
- package/dist/shared-tree-core/editManagerFormatCommons.js.map +1 -1
- package/dist/shared-tree-core/index.d.ts +2 -2
- package/dist/shared-tree-core/index.d.ts.map +1 -1
- package/dist/shared-tree-core/index.js +3 -2
- package/dist/shared-tree-core/index.js.map +1 -1
- package/dist/shared-tree-core/messageCodecs.d.ts.map +1 -1
- package/dist/shared-tree-core/messageCodecs.js +20 -9
- package/dist/shared-tree-core/messageCodecs.js.map +1 -1
- package/dist/shared-tree-core/messageFormat.d.ts +4 -6
- package/dist/shared-tree-core/messageFormat.d.ts.map +1 -1
- package/dist/shared-tree-core/messageFormat.js +9 -7
- package/dist/shared-tree-core/messageFormat.js.map +1 -1
- package/dist/simple-tree/api/configuration.d.ts +2 -0
- package/dist/simple-tree/api/configuration.d.ts.map +1 -1
- package/dist/simple-tree/api/configuration.js +10 -0
- package/dist/simple-tree/api/configuration.js.map +1 -1
- package/dist/simple-tree/api/index.d.ts +1 -0
- package/dist/simple-tree/api/index.d.ts.map +1 -1
- package/dist/simple-tree/api/index.js +5 -1
- package/dist/simple-tree/api/index.js.map +1 -1
- package/dist/simple-tree/api/schemaFromSimple.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaFromSimple.js +7 -1
- package/dist/simple-tree/api/schemaFromSimple.js.map +1 -1
- package/dist/simple-tree/api/simpleSchemaCodec.js +4 -6
- package/dist/simple-tree/api/simpleSchemaCodec.js.map +1 -1
- package/dist/simple-tree/api/snapshotCompatibilityChecker.d.ts +103 -0
- package/dist/simple-tree/api/snapshotCompatibilityChecker.d.ts.map +1 -0
- package/dist/simple-tree/api/snapshotCompatibilityChecker.js +128 -0
- package/dist/simple-tree/api/snapshotCompatibilityChecker.js.map +1 -0
- package/dist/simple-tree/api/tree.d.ts +1 -1
- package/dist/simple-tree/api/tree.js +1 -1
- package/dist/simple-tree/api/tree.js.map +1 -1
- package/dist/simple-tree/core/allowedTypes.js +1 -1
- package/dist/simple-tree/core/allowedTypes.js.map +1 -1
- package/dist/simple-tree/core/index.d.ts +3 -3
- package/dist/simple-tree/core/index.d.ts.map +1 -1
- package/dist/simple-tree/core/index.js +3 -1
- package/dist/simple-tree/core/index.js.map +1 -1
- package/dist/simple-tree/core/toStored.d.ts +12 -5
- package/dist/simple-tree/core/toStored.d.ts.map +1 -1
- package/dist/simple-tree/core/toStored.js +26 -10
- package/dist/simple-tree/core/toStored.js.map +1 -1
- package/dist/simple-tree/core/treeNodeSchema.d.ts +1 -6
- package/dist/simple-tree/core/treeNodeSchema.d.ts.map +1 -1
- package/dist/simple-tree/core/treeNodeSchema.js.map +1 -1
- package/dist/simple-tree/core/treeNodeValid.d.ts +1 -1
- package/dist/simple-tree/core/treeNodeValid.d.ts.map +1 -1
- package/dist/simple-tree/core/treeNodeValid.js +1 -2
- package/dist/simple-tree/core/treeNodeValid.js.map +1 -1
- package/dist/simple-tree/fieldSchema.d.ts.map +1 -1
- package/dist/simple-tree/fieldSchema.js +1 -8
- package/dist/simple-tree/fieldSchema.js.map +1 -1
- package/dist/simple-tree/index.d.ts +2 -2
- package/dist/simple-tree/index.d.ts.map +1 -1
- package/dist/simple-tree/index.js +9 -3
- package/dist/simple-tree/index.js.map +1 -1
- package/dist/simple-tree/leafNodeSchema.d.ts.map +1 -1
- package/dist/simple-tree/leafNodeSchema.js +0 -1
- package/dist/simple-tree/leafNodeSchema.js.map +1 -1
- package/dist/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/array/arrayNode.js +13 -49
- package/dist/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
- package/dist/simple-tree/node-kinds/map/mapNode.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/map/mapNode.js +1 -5
- package/dist/simple-tree/node-kinds/map/mapNode.js.map +1 -1
- package/dist/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/object/objectNode.js +2 -10
- package/dist/simple-tree/node-kinds/object/objectNode.js.map +1 -1
- package/dist/simple-tree/node-kinds/record/recordNode.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/record/recordNode.js +1 -5
- package/dist/simple-tree/node-kinds/record/recordNode.js.map +1 -1
- package/dist/simple-tree/simpleSchema.d.ts +15 -3
- package/dist/simple-tree/simpleSchema.d.ts.map +1 -1
- package/dist/simple-tree/simpleSchema.js.map +1 -1
- package/dist/simple-tree/toStoredSchema.d.ts +20 -8
- package/dist/simple-tree/toStoredSchema.d.ts.map +1 -1
- package/dist/simple-tree/toStoredSchema.js +27 -22
- package/dist/simple-tree/toStoredSchema.js.map +1 -1
- package/dist/simple-tree/unhydratedFlexTreeFromInsertable.d.ts.map +1 -1
- package/dist/simple-tree/unhydratedFlexTreeFromInsertable.js +18 -15
- package/dist/simple-tree/unhydratedFlexTreeFromInsertable.js.map +1 -1
- package/dist/tableSchema.d.ts +22 -52
- package/dist/tableSchema.d.ts.map +1 -1
- package/dist/tableSchema.js +141 -277
- package/dist/tableSchema.js.map +1 -1
- package/dist/util/arrayUtilities.d.ts +45 -0
- package/dist/util/arrayUtilities.d.ts.map +1 -0
- package/dist/util/arrayUtilities.js +76 -0
- package/dist/util/arrayUtilities.js.map +1 -0
- package/dist/util/index.d.ts +1 -0
- package/dist/util/index.d.ts.map +1 -1
- package/dist/util/index.js +7 -2
- package/dist/util/index.js.map +1 -1
- package/lib/alpha.d.ts +3 -1
- package/lib/api.d.ts +6 -2
- package/lib/api.d.ts.map +1 -1
- package/lib/api.js +2 -13
- package/lib/api.js.map +1 -1
- package/lib/codec/codec.d.ts +9 -2
- package/lib/codec/codec.d.ts.map +1 -1
- package/lib/codec/codec.js +9 -2
- package/lib/codec/codec.js.map +1 -1
- package/lib/codec/index.d.ts +1 -1
- package/lib/codec/index.d.ts.map +1 -1
- package/lib/codec/index.js +1 -1
- package/lib/codec/index.js.map +1 -1
- package/lib/codec/versioned/codec.d.ts +7 -2
- package/lib/codec/versioned/codec.d.ts.map +1 -1
- package/lib/codec/versioned/codec.js +22 -0
- package/lib/codec/versioned/codec.js.map +1 -1
- package/lib/codec/versioned/index.d.ts +1 -1
- package/lib/codec/versioned/index.d.ts.map +1 -1
- package/lib/codec/versioned/index.js +1 -1
- package/lib/codec/versioned/index.js.map +1 -1
- package/lib/core/schema-stored/schema.d.ts +12 -1
- package/lib/core/schema-stored/schema.d.ts.map +1 -1
- package/lib/core/schema-stored/schema.js.map +1 -1
- package/lib/core/tree/detachedFieldIndexCodecs.d.ts.map +1 -1
- package/lib/core/tree/detachedFieldIndexCodecs.js +5 -3
- package/lib/core/tree/detachedFieldIndexCodecs.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/chunkTree.d.ts +4 -5
- package/lib/feature-libraries/chunked-forest/chunkTree.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.js +2 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.d.ts +2 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/codecs.d.ts +1 -1
- package/lib/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/codecs.js +34 -20
- package/lib/feature-libraries/chunked-forest/codec/codecs.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/compressedEncode.d.ts +6 -6
- package/lib/feature-libraries/chunked-forest/codec/compressedEncode.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js +4 -2
- package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/format.d.ts +156 -4
- package/lib/feature-libraries/chunked-forest/codec/format.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/format.js +6 -2
- package/lib/feature-libraries/chunked-forest/codec/format.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/formatGeneric.d.ts +8 -3
- package/lib/feature-libraries/chunked-forest/codec/formatGeneric.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/formatGeneric.js +4 -1
- package/lib/feature-libraries/chunked-forest/codec/formatGeneric.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/index.d.ts +1 -1
- package/lib/feature-libraries/chunked-forest/codec/index.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/index.js +1 -1
- package/lib/feature-libraries/chunked-forest/codec/index.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncode.d.ts +13 -13
- package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncode.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncode.js +22 -6
- package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncode.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/uncompressedEncode.d.ts +9 -8
- package/lib/feature-libraries/chunked-forest/codec/uncompressedEncode.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/uncompressedEncode.js +17 -2
- package/lib/feature-libraries/chunked-forest/codec/uncompressedEncode.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/index.d.ts +1 -1
- package/lib/feature-libraries/chunked-forest/index.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/index.js +1 -1
- package/lib/feature-libraries/chunked-forest/index.js.map +1 -1
- package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts +35 -17
- package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
- package/lib/feature-libraries/default-schema/defaultFieldKinds.js +55 -57
- package/lib/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
- package/lib/feature-libraries/default-schema/index.d.ts +1 -3
- package/lib/feature-libraries/default-schema/index.d.ts.map +1 -1
- package/lib/feature-libraries/default-schema/index.js +1 -3
- package/lib/feature-libraries/default-schema/index.js.map +1 -1
- package/lib/feature-libraries/forest-summary/format.d.ts +2 -2
- package/lib/feature-libraries/forest-summary/format.d.ts.map +1 -1
- package/lib/feature-libraries/forest-summary/format.js +4 -2
- package/lib/feature-libraries/forest-summary/format.js.map +1 -1
- package/lib/feature-libraries/index.d.ts +4 -3
- package/lib/feature-libraries/index.d.ts.map +1 -1
- package/lib/feature-libraries/index.js +4 -3
- package/lib/feature-libraries/index.js.map +1 -1
- package/lib/feature-libraries/modular-schema/comparison.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/comparison.js +1 -2
- package/lib/feature-libraries/modular-schema/comparison.js.map +1 -1
- package/lib/feature-libraries/modular-schema/fieldKind.d.ts +38 -12
- package/lib/feature-libraries/modular-schema/fieldKind.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/fieldKind.js +29 -11
- package/lib/feature-libraries/modular-schema/fieldKind.js.map +1 -1
- package/lib/feature-libraries/modular-schema/fieldKindConfiguration.d.ts +2 -2
- package/lib/feature-libraries/modular-schema/fieldKindConfiguration.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/fieldKindConfiguration.js.map +1 -1
- package/lib/feature-libraries/modular-schema/genericFieldKind.d.ts +2 -2
- package/lib/feature-libraries/modular-schema/genericFieldKind.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/genericFieldKind.js +3 -2
- package/lib/feature-libraries/modular-schema/genericFieldKind.js.map +1 -1
- package/lib/feature-libraries/modular-schema/index.d.ts +0 -1
- package/lib/feature-libraries/modular-schema/index.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/index.js +0 -1
- package/lib/feature-libraries/modular-schema/index.js.map +1 -1
- package/lib/feature-libraries/modular-schema/isNeverTree.d.ts +5 -6
- package/lib/feature-libraries/modular-schema/isNeverTree.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/isNeverTree.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts +8 -8
- package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFamily.js +1 -2
- package/lib/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFormat.d.ts +66 -9
- package/lib/feature-libraries/modular-schema/modularChangeFormat.d.ts.map +1 -1
- package/lib/feature-libraries/object-forest/objectForest.d.ts.map +1 -1
- package/lib/feature-libraries/object-forest/objectForest.js +2 -1
- package/lib/feature-libraries/object-forest/objectForest.js.map +1 -1
- package/lib/feature-libraries/optional-field/index.d.ts +1 -1
- package/lib/feature-libraries/optional-field/index.d.ts.map +1 -1
- package/lib/feature-libraries/optional-field/index.js.map +1 -1
- package/lib/feature-libraries/optional-field/optionalFieldCodecs.d.ts.map +1 -1
- package/lib/feature-libraries/optional-field/optionalFieldCodecs.js +1 -5
- package/lib/feature-libraries/optional-field/optionalFieldCodecs.js.map +1 -1
- package/lib/feature-libraries/schema-index/codec.d.ts.map +1 -1
- package/lib/feature-libraries/schema-index/codec.js +5 -3
- package/lib/feature-libraries/schema-index/codec.js.map +1 -1
- package/lib/feature-libraries/{default-schema/schemaChecker.d.ts → schemaChecker.d.ts} +2 -2
- package/lib/feature-libraries/schemaChecker.d.ts.map +1 -0
- package/lib/feature-libraries/{default-schema/schemaChecker.js → schemaChecker.js} +3 -3
- package/lib/feature-libraries/schemaChecker.js.map +1 -0
- package/lib/feature-libraries/sequence-field/sequenceFieldCodecs.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldCodecs.js +0 -2
- package/lib/feature-libraries/sequence-field/sequenceFieldCodecs.js.map +1 -1
- package/lib/index.d.ts +2 -2
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +2 -2
- package/lib/index.js.map +1 -1
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/shared-tree/index.d.ts +1 -1
- package/lib/shared-tree/index.d.ts.map +1 -1
- package/lib/shared-tree/index.js +1 -1
- package/lib/shared-tree/index.js.map +1 -1
- package/lib/shared-tree/sharedTree.d.ts +0 -44
- package/lib/shared-tree/sharedTree.d.ts.map +1 -1
- package/lib/shared-tree/sharedTree.js +0 -51
- package/lib/shared-tree/sharedTree.js.map +1 -1
- package/lib/shared-tree/sharedTreeChangeCodecs.d.ts +1 -1
- package/lib/shared-tree/sharedTreeChangeCodecs.d.ts.map +1 -1
- package/lib/shared-tree/sharedTreeChangeCodecs.js +0 -2
- package/lib/shared-tree/sharedTreeChangeCodecs.js.map +1 -1
- package/lib/shared-tree-core/editManagerCodecs.d.ts.map +1 -1
- package/lib/shared-tree-core/editManagerCodecs.js +13 -7
- package/lib/shared-tree-core/editManagerCodecs.js.map +1 -1
- package/lib/shared-tree-core/editManagerFormatCommons.d.ts +3 -4
- package/lib/shared-tree-core/editManagerFormatCommons.d.ts.map +1 -1
- package/lib/shared-tree-core/editManagerFormatCommons.js +4 -7
- package/lib/shared-tree-core/editManagerFormatCommons.js.map +1 -1
- package/lib/shared-tree-core/index.d.ts +2 -2
- package/lib/shared-tree-core/index.d.ts.map +1 -1
- package/lib/shared-tree-core/index.js +2 -2
- package/lib/shared-tree-core/index.js.map +1 -1
- package/lib/shared-tree-core/messageCodecs.d.ts.map +1 -1
- package/lib/shared-tree-core/messageCodecs.js +21 -10
- package/lib/shared-tree-core/messageCodecs.js.map +1 -1
- package/lib/shared-tree-core/messageFormat.d.ts +4 -6
- package/lib/shared-tree-core/messageFormat.d.ts.map +1 -1
- package/lib/shared-tree-core/messageFormat.js +8 -6
- package/lib/shared-tree-core/messageFormat.js.map +1 -1
- package/lib/simple-tree/api/configuration.d.ts +2 -0
- package/lib/simple-tree/api/configuration.d.ts.map +1 -1
- package/lib/simple-tree/api/configuration.js +10 -0
- package/lib/simple-tree/api/configuration.js.map +1 -1
- package/lib/simple-tree/api/index.d.ts +1 -0
- package/lib/simple-tree/api/index.d.ts.map +1 -1
- package/lib/simple-tree/api/index.js +1 -0
- package/lib/simple-tree/api/index.js.map +1 -1
- package/lib/simple-tree/api/schemaFromSimple.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaFromSimple.js +8 -2
- package/lib/simple-tree/api/schemaFromSimple.js.map +1 -1
- package/lib/simple-tree/api/simpleSchemaCodec.js +5 -7
- package/lib/simple-tree/api/simpleSchemaCodec.js.map +1 -1
- package/lib/simple-tree/api/snapshotCompatibilityChecker.d.ts +103 -0
- package/lib/simple-tree/api/snapshotCompatibilityChecker.d.ts.map +1 -0
- package/lib/simple-tree/api/snapshotCompatibilityChecker.js +122 -0
- package/lib/simple-tree/api/snapshotCompatibilityChecker.js.map +1 -0
- package/lib/simple-tree/api/tree.d.ts +1 -1
- package/lib/simple-tree/api/tree.js +1 -1
- package/lib/simple-tree/api/tree.js.map +1 -1
- package/lib/simple-tree/core/allowedTypes.js +1 -1
- package/lib/simple-tree/core/allowedTypes.js.map +1 -1
- package/lib/simple-tree/core/index.d.ts +3 -3
- package/lib/simple-tree/core/index.d.ts.map +1 -1
- package/lib/simple-tree/core/index.js +2 -2
- package/lib/simple-tree/core/index.js.map +1 -1
- package/lib/simple-tree/core/toStored.d.ts +12 -5
- package/lib/simple-tree/core/toStored.d.ts.map +1 -1
- package/lib/simple-tree/core/toStored.js +25 -9
- package/lib/simple-tree/core/toStored.js.map +1 -1
- package/lib/simple-tree/core/treeNodeSchema.d.ts +1 -6
- package/lib/simple-tree/core/treeNodeSchema.d.ts.map +1 -1
- package/lib/simple-tree/core/treeNodeSchema.js.map +1 -1
- package/lib/simple-tree/core/treeNodeValid.d.ts +1 -1
- package/lib/simple-tree/core/treeNodeValid.d.ts.map +1 -1
- package/lib/simple-tree/core/treeNodeValid.js +1 -2
- package/lib/simple-tree/core/treeNodeValid.js.map +1 -1
- package/lib/simple-tree/fieldSchema.d.ts.map +1 -1
- package/lib/simple-tree/fieldSchema.js +2 -9
- package/lib/simple-tree/fieldSchema.js.map +1 -1
- package/lib/simple-tree/index.d.ts +2 -2
- package/lib/simple-tree/index.d.ts.map +1 -1
- package/lib/simple-tree/index.js +2 -2
- package/lib/simple-tree/index.js.map +1 -1
- package/lib/simple-tree/leafNodeSchema.d.ts.map +1 -1
- package/lib/simple-tree/leafNodeSchema.js +1 -2
- package/lib/simple-tree/leafNodeSchema.js.map +1 -1
- package/lib/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/array/arrayNode.js +15 -51
- package/lib/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
- package/lib/simple-tree/node-kinds/map/mapNode.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/map/mapNode.js +3 -7
- package/lib/simple-tree/node-kinds/map/mapNode.js.map +1 -1
- package/lib/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/object/objectNode.js +3 -11
- package/lib/simple-tree/node-kinds/object/objectNode.js.map +1 -1
- package/lib/simple-tree/node-kinds/record/recordNode.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/record/recordNode.js +3 -7
- package/lib/simple-tree/node-kinds/record/recordNode.js.map +1 -1
- package/lib/simple-tree/simpleSchema.d.ts +15 -3
- package/lib/simple-tree/simpleSchema.d.ts.map +1 -1
- package/lib/simple-tree/simpleSchema.js.map +1 -1
- package/lib/simple-tree/toStoredSchema.d.ts +20 -8
- package/lib/simple-tree/toStoredSchema.d.ts.map +1 -1
- package/lib/simple-tree/toStoredSchema.js +28 -24
- package/lib/simple-tree/toStoredSchema.js.map +1 -1
- package/lib/simple-tree/unhydratedFlexTreeFromInsertable.d.ts.map +1 -1
- package/lib/simple-tree/unhydratedFlexTreeFromInsertable.js +20 -17
- package/lib/simple-tree/unhydratedFlexTreeFromInsertable.js.map +1 -1
- package/lib/tableSchema.d.ts +22 -52
- package/lib/tableSchema.d.ts.map +1 -1
- package/lib/tableSchema.js +143 -279
- package/lib/tableSchema.js.map +1 -1
- package/lib/util/arrayUtilities.d.ts +45 -0
- package/lib/util/arrayUtilities.d.ts.map +1 -0
- package/lib/util/arrayUtilities.js +69 -0
- package/lib/util/arrayUtilities.js.map +1 -0
- package/lib/util/index.d.ts +1 -0
- package/lib/util/index.d.ts.map +1 -1
- package/lib/util/index.js +1 -0
- package/lib/util/index.js.map +1 -1
- package/package.json +21 -21
- package/src/api.ts +22 -11
- package/src/codec/codec.ts +10 -2
- package/src/codec/index.ts +1 -0
- package/src/codec/versioned/codec.ts +40 -2
- package/src/codec/versioned/index.ts +1 -0
- package/src/core/schema-stored/schema.ts +12 -1
- package/src/core/tree/detachedFieldIndexCodecs.ts +10 -3
- package/src/feature-libraries/README.md +1 -1
- package/src/feature-libraries/chunked-forest/chunkTree.ts +3 -3
- package/src/feature-libraries/chunked-forest/codec/chunkDecoding.ts +5 -0
- package/src/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.ts +2 -1
- package/src/feature-libraries/chunked-forest/codec/codecs.ts +52 -19
- package/src/feature-libraries/chunked-forest/codec/compressedEncode.ts +8 -3
- package/src/feature-libraries/chunked-forest/codec/format.ts +14 -4
- package/src/feature-libraries/chunked-forest/codec/formatGeneric.ts +7 -2
- package/src/feature-libraries/chunked-forest/codec/index.ts +1 -4
- package/src/feature-libraries/chunked-forest/codec/schemaBasedEncode.ts +62 -9
- package/src/feature-libraries/chunked-forest/codec/uncompressedEncode.ts +24 -2
- package/src/feature-libraries/chunked-forest/index.ts +1 -1
- package/src/feature-libraries/default-schema/defaultFieldKinds.ts +86 -74
- package/src/feature-libraries/default-schema/index.ts +1 -9
- package/src/feature-libraries/forest-summary/format.ts +15 -9
- package/src/feature-libraries/index.ts +7 -5
- package/src/feature-libraries/modular-schema/comparison.ts +2 -3
- package/src/feature-libraries/modular-schema/fieldKind.ts +90 -13
- package/src/feature-libraries/modular-schema/fieldKindConfiguration.ts +2 -3
- package/src/feature-libraries/modular-schema/genericFieldKind.ts +6 -6
- package/src/feature-libraries/modular-schema/index.ts +0 -1
- package/src/feature-libraries/modular-schema/isNeverTree.ts +7 -8
- package/src/feature-libraries/modular-schema/modularChangeFamily.ts +13 -13
- package/src/feature-libraries/object-forest/objectForest.ts +2 -6
- package/src/feature-libraries/optional-field/index.ts +1 -0
- package/src/feature-libraries/optional-field/optionalFieldCodecs.ts +1 -5
- package/src/feature-libraries/schema-index/codec.ts +10 -3
- package/src/feature-libraries/{default-schema/schemaChecker.ts → schemaChecker.ts} +4 -4
- package/src/feature-libraries/sequence-field/sequenceFieldCodecs.ts +0 -2
- package/src/index.ts +3 -1
- package/src/packageVersion.ts +1 -1
- package/src/shared-tree/index.ts +0 -1
- package/src/shared-tree/sharedTree.ts +0 -70
- package/src/shared-tree/sharedTreeChangeCodecs.ts +1 -6
- package/src/shared-tree-core/editManagerCodecs.ts +19 -7
- package/src/shared-tree-core/editManagerFormatCommons.ts +11 -12
- package/src/shared-tree-core/index.ts +6 -2
- package/src/shared-tree-core/messageCodecs.ts +32 -17
- package/src/shared-tree-core/messageFormat.ts +8 -6
- package/src/simple-tree/api/configuration.ts +17 -4
- package/src/simple-tree/api/index.ts +5 -0
- package/src/simple-tree/api/schemaFromSimple.ts +14 -6
- package/src/simple-tree/api/simpleSchemaCodec.ts +10 -9
- package/src/simple-tree/api/snapshotCompatibilityChecker.ts +135 -0
- package/src/simple-tree/api/tree.ts +1 -1
- package/src/simple-tree/core/allowedTypes.ts +1 -1
- package/src/simple-tree/core/index.ts +3 -1
- package/src/simple-tree/core/toStored.ts +42 -18
- package/src/simple-tree/core/treeNodeSchema.ts +1 -7
- package/src/simple-tree/core/treeNodeValid.ts +0 -2
- package/src/simple-tree/fieldSchema.ts +2 -11
- package/src/simple-tree/index.ts +6 -1
- package/src/simple-tree/leafNodeSchema.ts +1 -2
- package/src/simple-tree/node-kinds/array/arrayNode.ts +26 -75
- package/src/simple-tree/node-kinds/map/mapNode.ts +1 -15
- package/src/simple-tree/node-kinds/object/objectNode.ts +2 -17
- package/src/simple-tree/node-kinds/record/recordNode.ts +1 -15
- package/src/simple-tree/simpleSchema.ts +16 -3
- package/src/simple-tree/toStoredSchema.ts +54 -38
- package/src/simple-tree/unhydratedFlexTreeFromInsertable.ts +22 -17
- package/src/tableSchema.ts +110 -334
- package/src/util/arrayUtilities.ts +88 -0
- package/src/util/index.ts +6 -0
- package/dist/feature-libraries/default-schema/defaultSchema.d.ts +0 -10
- package/dist/feature-libraries/default-schema/defaultSchema.d.ts.map +0 -1
- package/dist/feature-libraries/default-schema/defaultSchema.js +0 -15
- package/dist/feature-libraries/default-schema/defaultSchema.js.map +0 -1
- package/dist/feature-libraries/default-schema/schemaChecker.d.ts.map +0 -1
- package/dist/feature-libraries/default-schema/schemaChecker.js.map +0 -1
- package/dist/feature-libraries/modular-schema/fieldKindWithEditor.d.ts +0 -50
- package/dist/feature-libraries/modular-schema/fieldKindWithEditor.d.ts.map +0 -1
- package/dist/feature-libraries/modular-schema/fieldKindWithEditor.js +0 -76
- package/dist/feature-libraries/modular-schema/fieldKindWithEditor.js.map +0 -1
- package/dist/feature-libraries/optional-field/optionalFieldCodecV1.d.ts +0 -12
- package/dist/feature-libraries/optional-field/optionalFieldCodecV1.d.ts.map +0 -1
- package/dist/feature-libraries/optional-field/optionalFieldCodecV1.js +0 -158
- package/dist/feature-libraries/optional-field/optionalFieldCodecV1.js.map +0 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldCodecV1.d.ts +0 -11
- package/dist/feature-libraries/sequence-field/sequenceFieldCodecV1.d.ts.map +0 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldCodecV1.js +0 -245
- package/dist/feature-libraries/sequence-field/sequenceFieldCodecV1.js.map +0 -1
- package/lib/feature-libraries/default-schema/defaultSchema.d.ts +0 -10
- package/lib/feature-libraries/default-schema/defaultSchema.d.ts.map +0 -1
- package/lib/feature-libraries/default-schema/defaultSchema.js +0 -12
- package/lib/feature-libraries/default-schema/defaultSchema.js.map +0 -1
- package/lib/feature-libraries/default-schema/schemaChecker.d.ts.map +0 -1
- package/lib/feature-libraries/default-schema/schemaChecker.js.map +0 -1
- package/lib/feature-libraries/modular-schema/fieldKindWithEditor.d.ts +0 -50
- package/lib/feature-libraries/modular-schema/fieldKindWithEditor.d.ts.map +0 -1
- package/lib/feature-libraries/modular-schema/fieldKindWithEditor.js +0 -71
- package/lib/feature-libraries/modular-schema/fieldKindWithEditor.js.map +0 -1
- package/lib/feature-libraries/optional-field/optionalFieldCodecV1.d.ts +0 -12
- package/lib/feature-libraries/optional-field/optionalFieldCodecV1.d.ts.map +0 -1
- package/lib/feature-libraries/optional-field/optionalFieldCodecV1.js +0 -154
- package/lib/feature-libraries/optional-field/optionalFieldCodecV1.js.map +0 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldCodecV1.d.ts +0 -11
- package/lib/feature-libraries/sequence-field/sequenceFieldCodecV1.d.ts.map +0 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldCodecV1.js +0 -241
- package/lib/feature-libraries/sequence-field/sequenceFieldCodecV1.js.map +0 -1
- package/src/feature-libraries/default-schema/defaultSchema.ts +0 -15
- package/src/feature-libraries/modular-schema/fieldKindWithEditor.ts +0 -108
- package/src/feature-libraries/optional-field/optionalFieldCodecV1.ts +0 -208
- package/src/feature-libraries/sequence-field/sequenceFieldCodecV1.ts +0 -344
package/src/simple-tree/index.ts
CHANGED
|
@@ -44,7 +44,7 @@ export {
|
|
|
44
44
|
type UnannotateAllowedTypesList,
|
|
45
45
|
type AllowedTypeMetadata,
|
|
46
46
|
type AnnotatedAllowedTypes,
|
|
47
|
-
|
|
47
|
+
SchemaUpgrade,
|
|
48
48
|
type LazyItem,
|
|
49
49
|
type FlexList,
|
|
50
50
|
type FlexListToUnion,
|
|
@@ -59,6 +59,8 @@ export {
|
|
|
59
59
|
type AllowedTypesFullFromMixed,
|
|
60
60
|
AnnotatedAllowedTypesInternal,
|
|
61
61
|
type NumberKeys,
|
|
62
|
+
ExpectStored,
|
|
63
|
+
createSchemaUpgrade,
|
|
62
64
|
} from "./core/index.js";
|
|
63
65
|
export { walkFieldSchema } from "./walkFieldSchema.js";
|
|
64
66
|
export type { UnsafeUnknownSchema, Insertable } from "./unsafeUnknownSchema.js";
|
|
@@ -283,4 +285,7 @@ export type { LeafSchema } from "./leafNodeSchema.js";
|
|
|
283
285
|
export {
|
|
284
286
|
encodeSimpleSchema,
|
|
285
287
|
decodeSimpleSchema,
|
|
288
|
+
exportCompatibilitySchemaSnapshot,
|
|
289
|
+
importCompatibilitySchemaSnapshot,
|
|
290
|
+
checkCompatibility,
|
|
286
291
|
} from "./api/index.js";
|
|
@@ -7,7 +7,7 @@ import { assert } from "@fluidframework/core-utils/internal";
|
|
|
7
7
|
import { UsageError } from "@fluidframework/telemetry-utils/internal";
|
|
8
8
|
import { isFluidHandle } from "@fluidframework/runtime-utils/internal";
|
|
9
9
|
|
|
10
|
-
import {
|
|
10
|
+
import { type TreeValue, ValueSchema } from "../core/index.js";
|
|
11
11
|
import {
|
|
12
12
|
type FlexTreeNode,
|
|
13
13
|
isFlexTreeNode,
|
|
@@ -64,7 +64,6 @@ export class LeafNodeSchema<Name extends string, const T extends ValueSchema>
|
|
|
64
64
|
): FlexContent => leafToFlexContent(data, this, allowedTypes),
|
|
65
65
|
})),
|
|
66
66
|
childAllowedTypes: [],
|
|
67
|
-
toStored: () => new LeafNodeStoredSchema(this.leafKind),
|
|
68
67
|
};
|
|
69
68
|
#initializedData: TreeNodeSchemaInitializedData | undefined;
|
|
70
69
|
|
|
@@ -45,7 +45,6 @@ import {
|
|
|
45
45
|
createTreeNodeSchemaPrivateData,
|
|
46
46
|
type FlexContent,
|
|
47
47
|
type TreeNodeSchemaPrivateData,
|
|
48
|
-
convertAllowedTypes,
|
|
49
48
|
withBufferedTreeEvents,
|
|
50
49
|
AnnotatedAllowedTypesInternal,
|
|
51
50
|
} from "../../core/index.js";
|
|
@@ -66,9 +65,13 @@ import type {
|
|
|
66
65
|
ArrayNodePojoEmulationSchema,
|
|
67
66
|
ArrayNodeSchema,
|
|
68
67
|
} from "./arrayNodeTypes.js";
|
|
69
|
-
import {
|
|
68
|
+
import {
|
|
69
|
+
brand,
|
|
70
|
+
validateIndex,
|
|
71
|
+
validateIndexRange,
|
|
72
|
+
type JsonCompatibleReadOnlyObject,
|
|
73
|
+
} from "../../../util/index.js";
|
|
70
74
|
import { nullSchema } from "../../leafNodeSchema.js";
|
|
71
|
-
import { arrayNodeStoredSchema } from "../../toStoredSchema.js";
|
|
72
75
|
import type { SimpleAllowedTypeAttributes } from "../../simpleSchema.js";
|
|
73
76
|
|
|
74
77
|
/**
|
|
@@ -951,7 +954,7 @@ abstract class CustomArrayNodeBase<const T extends ImplicitAllowedTypes>
|
|
|
951
954
|
}
|
|
952
955
|
public insertAt(index: number, ...value: Insertable<T>): void {
|
|
953
956
|
const field = getSequenceField(this);
|
|
954
|
-
validateIndex(index, field, "insertAt", true);
|
|
957
|
+
validateIndex(index, field, "TreeArrayNode.insertAt", true);
|
|
955
958
|
const content = this.#mapTreesFromFieldData(value);
|
|
956
959
|
field.editor.insert(index, content);
|
|
957
960
|
}
|
|
@@ -963,32 +966,30 @@ abstract class CustomArrayNodeBase<const T extends ImplicitAllowedTypes>
|
|
|
963
966
|
}
|
|
964
967
|
public removeAt(index: number): void {
|
|
965
968
|
const field = getSequenceField(this);
|
|
966
|
-
validateIndex(index, field, "removeAt");
|
|
969
|
+
validateIndex(index, field, "TreeArrayNode.removeAt");
|
|
967
970
|
field.editor.remove(index, 1);
|
|
968
971
|
}
|
|
969
972
|
public removeRange(start?: number, end?: number): void {
|
|
970
973
|
const field = getSequenceField(this);
|
|
971
974
|
const { length } = field;
|
|
972
975
|
const removeStart = start ?? 0;
|
|
976
|
+
validateIndex(removeStart, field, "TreeArrayNode.removeRange", true);
|
|
977
|
+
|
|
973
978
|
const removeEnd = Math.min(length, end ?? length);
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
if (removeEnd < removeStart) {
|
|
977
|
-
// This catches both the case where start is > array.length and when start is > end.
|
|
978
|
-
throw new UsageError('Too large of "start" value passed to TreeArrayNode.removeRange.');
|
|
979
|
-
}
|
|
979
|
+
validateIndexRange(removeStart, removeEnd, field, "TreeArrayNode.removeRange");
|
|
980
|
+
|
|
980
981
|
field.editor.remove(removeStart, removeEnd - removeStart);
|
|
981
982
|
}
|
|
982
983
|
public moveToStart(sourceIndex: number, source?: ReadonlyArrayNode): void {
|
|
983
984
|
const sourceArray = source ?? this;
|
|
984
985
|
const sourceField = getSequenceField(sourceArray);
|
|
985
|
-
validateIndex(sourceIndex, sourceField, "moveToStart");
|
|
986
|
+
validateIndex(sourceIndex, sourceField, "TreeArrayNode.moveToStart");
|
|
986
987
|
this.moveRangeToIndex(0, sourceIndex, sourceIndex + 1, source);
|
|
987
988
|
}
|
|
988
989
|
public moveToEnd(sourceIndex: number, source?: ReadonlyArrayNode): void {
|
|
989
990
|
const sourceArray = source ?? this;
|
|
990
991
|
const sourceField = getSequenceField(sourceArray);
|
|
991
|
-
validateIndex(sourceIndex, sourceField, "moveToEnd");
|
|
992
|
+
validateIndex(sourceIndex, sourceField, "TreeArrayNode.moveToEnd");
|
|
992
993
|
this.moveRangeToIndex(this.length, sourceIndex, sourceIndex + 1, source);
|
|
993
994
|
}
|
|
994
995
|
public moveToIndex(
|
|
@@ -999,8 +1000,8 @@ abstract class CustomArrayNodeBase<const T extends ImplicitAllowedTypes>
|
|
|
999
1000
|
const sourceArray = source ?? this;
|
|
1000
1001
|
const sourceField = getSequenceField(sourceArray);
|
|
1001
1002
|
const destinationField = getSequenceField(this);
|
|
1002
|
-
validateIndex(destinationGap, destinationField, "moveToIndex", true);
|
|
1003
|
-
validateIndex(sourceIndex, sourceField, "moveToIndex");
|
|
1003
|
+
validateIndex(destinationGap, destinationField, "TreeArrayNode.moveToIndex", true);
|
|
1004
|
+
validateIndex(sourceIndex, sourceField, "TreeArrayNode.moveToIndex");
|
|
1004
1005
|
this.moveRangeToIndex(destinationGap, sourceIndex, sourceIndex + 1, source);
|
|
1005
1006
|
}
|
|
1006
1007
|
public moveRangeToStart(
|
|
@@ -1012,7 +1013,7 @@ abstract class CustomArrayNodeBase<const T extends ImplicitAllowedTypes>
|
|
|
1012
1013
|
sourceStart,
|
|
1013
1014
|
sourceEnd,
|
|
1014
1015
|
source ?? getSequenceField(this),
|
|
1015
|
-
"moveRangeToStart",
|
|
1016
|
+
"TreeArrayNode.moveRangeToStart",
|
|
1016
1017
|
);
|
|
1017
1018
|
this.moveRangeToIndex(0, sourceStart, sourceEnd, source);
|
|
1018
1019
|
}
|
|
@@ -1025,7 +1026,7 @@ abstract class CustomArrayNodeBase<const T extends ImplicitAllowedTypes>
|
|
|
1025
1026
|
sourceStart,
|
|
1026
1027
|
sourceEnd,
|
|
1027
1028
|
source ?? getSequenceField(this),
|
|
1028
|
-
"moveRangeToEnd",
|
|
1029
|
+
"TreeArrayNode.moveRangeToEnd",
|
|
1029
1030
|
);
|
|
1030
1031
|
this.moveRangeToIndex(this.length, sourceStart, sourceEnd, source);
|
|
1031
1032
|
}
|
|
@@ -1044,8 +1045,13 @@ abstract class CustomArrayNodeBase<const T extends ImplicitAllowedTypes>
|
|
|
1044
1045
|
).getFieldSchema(EmptyKey).types;
|
|
1045
1046
|
const sourceField = source !== undefined ? getSequenceField(source) : destinationField;
|
|
1046
1047
|
|
|
1047
|
-
validateIndex(destinationGap, destinationField, "moveRangeToIndex", true);
|
|
1048
|
-
validateIndexRange(
|
|
1048
|
+
validateIndex(destinationGap, destinationField, "TreeArrayNode.moveRangeToIndex", true);
|
|
1049
|
+
validateIndexRange(
|
|
1050
|
+
sourceStart,
|
|
1051
|
+
sourceEnd,
|
|
1052
|
+
source ?? destinationField,
|
|
1053
|
+
"TreeArrayNode.moveRangeToIndex",
|
|
1054
|
+
);
|
|
1049
1055
|
|
|
1050
1056
|
// TODO: determine support for move across different sequence types
|
|
1051
1057
|
if (sourceField !== destinationField) {
|
|
@@ -1282,12 +1288,7 @@ export function arraySchema<
|
|
|
1282
1288
|
}
|
|
1283
1289
|
|
|
1284
1290
|
public static get [privateDataSymbol](): TreeNodeSchemaPrivateData {
|
|
1285
|
-
return (privateData ??= createTreeNodeSchemaPrivateData(
|
|
1286
|
-
this,
|
|
1287
|
-
[normalizedTypes],
|
|
1288
|
-
(storedOptions) =>
|
|
1289
|
-
arrayNodeStoredSchema(convertAllowedTypes(info, storedOptions), persistedMetadata),
|
|
1290
|
-
));
|
|
1291
|
+
return (privateData ??= createTreeNodeSchemaPrivateData(this, [normalizedTypes]));
|
|
1291
1292
|
}
|
|
1292
1293
|
}
|
|
1293
1294
|
|
|
@@ -1295,56 +1296,6 @@ export function arraySchema<
|
|
|
1295
1296
|
return output;
|
|
1296
1297
|
}
|
|
1297
1298
|
|
|
1298
|
-
function validateSafeInteger(index: number): void {
|
|
1299
|
-
if (!Number.isSafeInteger(index)) {
|
|
1300
|
-
throw new UsageError(`Expected a safe integer, got ${index}.`);
|
|
1301
|
-
}
|
|
1302
|
-
}
|
|
1303
|
-
|
|
1304
|
-
function validatePositiveIndex(index: number): void {
|
|
1305
|
-
validateSafeInteger(index);
|
|
1306
|
-
if (index < 0) {
|
|
1307
|
-
throw new UsageError(`Expected non-negative index, got ${index}.`);
|
|
1308
|
-
}
|
|
1309
|
-
}
|
|
1310
|
-
|
|
1311
|
-
function validateIndex(
|
|
1312
|
-
index: number,
|
|
1313
|
-
array: { readonly length: number },
|
|
1314
|
-
methodName: string,
|
|
1315
|
-
allowOnePastEnd: boolean = false,
|
|
1316
|
-
): void {
|
|
1317
|
-
validatePositiveIndex(index);
|
|
1318
|
-
if (allowOnePastEnd) {
|
|
1319
|
-
if (index > array.length) {
|
|
1320
|
-
throw new UsageError(
|
|
1321
|
-
`Index value passed to TreeArrayNode.${methodName} is out of bounds.`,
|
|
1322
|
-
);
|
|
1323
|
-
}
|
|
1324
|
-
} else {
|
|
1325
|
-
if (index >= array.length) {
|
|
1326
|
-
throw new UsageError(
|
|
1327
|
-
`Index value passed to TreeArrayNode.${methodName} is out of bounds.`,
|
|
1328
|
-
);
|
|
1329
|
-
}
|
|
1330
|
-
}
|
|
1331
|
-
}
|
|
1332
|
-
|
|
1333
|
-
function validateIndexRange(
|
|
1334
|
-
startIndex: number,
|
|
1335
|
-
endIndex: number,
|
|
1336
|
-
array: { readonly length: number },
|
|
1337
|
-
methodName: string,
|
|
1338
|
-
): void {
|
|
1339
|
-
validateIndex(startIndex, array, methodName, true);
|
|
1340
|
-
validateIndex(endIndex, array, methodName, true);
|
|
1341
|
-
if (startIndex > endIndex || array.length < endIndex) {
|
|
1342
|
-
throw new UsageError(
|
|
1343
|
-
`Index value passed to TreeArrayNode.${methodName} is out of bounds.`,
|
|
1344
|
-
);
|
|
1345
|
-
}
|
|
1346
|
-
}
|
|
1347
|
-
|
|
1348
1299
|
/**
|
|
1349
1300
|
* Transforms data for a child of an array.
|
|
1350
1301
|
* @param child - The tree data to be transformed.
|
|
@@ -7,7 +7,6 @@ import { assert, Lazy } from "@fluidframework/core-utils/internal";
|
|
|
7
7
|
import { UsageError } from "@fluidframework/telemetry-utils/internal";
|
|
8
8
|
|
|
9
9
|
import {
|
|
10
|
-
FieldKinds,
|
|
11
10
|
isTreeValue,
|
|
12
11
|
type FlexibleNodeContent,
|
|
13
12
|
type FlexTreeNode,
|
|
@@ -42,7 +41,6 @@ import {
|
|
|
42
41
|
createTreeNodeSchemaPrivateData,
|
|
43
42
|
type FlexContent,
|
|
44
43
|
type TreeNodeSchemaPrivateData,
|
|
45
|
-
convertAllowedTypes,
|
|
46
44
|
AnnotatedAllowedTypesInternal,
|
|
47
45
|
} from "../../core/index.js";
|
|
48
46
|
import {
|
|
@@ -343,19 +341,7 @@ export function mapSchema<
|
|
|
343
341
|
}
|
|
344
342
|
|
|
345
343
|
public static get [privateDataSymbol](): TreeNodeSchemaPrivateData {
|
|
346
|
-
return (privateData ??= createTreeNodeSchemaPrivateData(
|
|
347
|
-
this,
|
|
348
|
-
[normalizedTypes],
|
|
349
|
-
(storedOptions) =>
|
|
350
|
-
new MapNodeStoredSchema(
|
|
351
|
-
{
|
|
352
|
-
kind: FieldKinds.optional.identifier,
|
|
353
|
-
types: convertAllowedTypes(info, storedOptions),
|
|
354
|
-
persistedMetadata,
|
|
355
|
-
},
|
|
356
|
-
persistedMetadata,
|
|
357
|
-
),
|
|
358
|
-
));
|
|
344
|
+
return (privateData ??= createTreeNodeSchemaPrivateData(this, [normalizedTypes]));
|
|
359
345
|
}
|
|
360
346
|
}
|
|
361
347
|
const schemaErased: MapNodeCustomizableSchema<
|
|
@@ -86,7 +86,7 @@ import {
|
|
|
86
86
|
type FactoryContentObject,
|
|
87
87
|
type InsertableContent,
|
|
88
88
|
} from "../../unhydratedFlexTreeFromInsertable.js";
|
|
89
|
-
import {
|
|
89
|
+
import { convertFieldKind } from "../../toStoredSchema.js";
|
|
90
90
|
import type { ObjectSchemaOptionsAlpha } from "../../api/index.js";
|
|
91
91
|
|
|
92
92
|
/**
|
|
@@ -585,20 +585,6 @@ export function objectSchema<
|
|
|
585
585
|
return (privateData ??= createTreeNodeSchemaPrivateData(
|
|
586
586
|
this,
|
|
587
587
|
Array.from(CustomObjectNode.fields.values(), (schema) => schema.allowedTypesFull),
|
|
588
|
-
(storedOptions) => {
|
|
589
|
-
const fields: Map<FieldKey, TreeFieldStoredSchema> = new Map();
|
|
590
|
-
for (const fieldSchema of flexKeyMap.values()) {
|
|
591
|
-
assert(
|
|
592
|
-
fieldSchema.schema instanceof FieldSchemaAlpha,
|
|
593
|
-
0xc19 /* Expected FieldSchemaAlpha */,
|
|
594
|
-
);
|
|
595
|
-
fields.set(
|
|
596
|
-
brand(fieldSchema.storedKey),
|
|
597
|
-
convertField(fieldSchema.schema, storedOptions),
|
|
598
|
-
);
|
|
599
|
-
}
|
|
600
|
-
return new ObjectNodeStoredSchema(fields, nodeOptions.persistedMetadata);
|
|
601
|
-
},
|
|
602
588
|
));
|
|
603
589
|
}
|
|
604
590
|
}
|
|
@@ -650,9 +636,8 @@ function assertUniqueKeys<
|
|
|
650
636
|
}
|
|
651
637
|
|
|
652
638
|
/**
|
|
653
|
-
* {@link TreeNodeSchemaInitializedData.toFlexContent} for
|
|
639
|
+
* {@link TreeNodeSchemaInitializedData.toFlexContent} for object nodes.
|
|
654
640
|
*
|
|
655
|
-
* Transforms data under an Object schema.
|
|
656
641
|
* @param data - The tree data to be transformed. Must be a Record-like object.
|
|
657
642
|
* @param schema - The schema to comply with.
|
|
658
643
|
*/
|
|
@@ -31,7 +31,6 @@ import {
|
|
|
31
31
|
type FlexContent,
|
|
32
32
|
CompatibilityLevel,
|
|
33
33
|
type TreeNodeSchemaPrivateData,
|
|
34
|
-
convertAllowedTypes,
|
|
35
34
|
AnnotatedAllowedTypesInternal,
|
|
36
35
|
} from "../../core/index.js";
|
|
37
36
|
import { getTreeNodeSchemaInitializedData } from "../../createContext.js";
|
|
@@ -50,7 +49,6 @@ import type {
|
|
|
50
49
|
TreeRecordNode,
|
|
51
50
|
} from "./recordNodeTypes.js";
|
|
52
51
|
import {
|
|
53
|
-
FieldKinds,
|
|
54
52
|
isTreeValue,
|
|
55
53
|
type FlexTreeNode,
|
|
56
54
|
type FlexTreeOptionalField,
|
|
@@ -388,19 +386,7 @@ export function recordSchema<
|
|
|
388
386
|
}
|
|
389
387
|
|
|
390
388
|
public static get [privateDataSymbol](): TreeNodeSchemaPrivateData {
|
|
391
|
-
return (privateData ??= createTreeNodeSchemaPrivateData(
|
|
392
|
-
this,
|
|
393
|
-
[normalizedTypes],
|
|
394
|
-
(storedOptions) =>
|
|
395
|
-
new MapNodeStoredSchema(
|
|
396
|
-
{
|
|
397
|
-
kind: FieldKinds.optional.identifier,
|
|
398
|
-
types: convertAllowedTypes(info, storedOptions),
|
|
399
|
-
persistedMetadata,
|
|
400
|
-
},
|
|
401
|
-
persistedMetadata,
|
|
402
|
-
),
|
|
403
|
-
));
|
|
389
|
+
return (privateData ??= createTreeNodeSchemaPrivateData(this, [normalizedTypes]));
|
|
404
390
|
}
|
|
405
391
|
}
|
|
406
392
|
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
import type { ValueSchema } from "../core/index.js";
|
|
7
7
|
import type { JsonCompatibleReadOnlyObject } from "../util/index.js";
|
|
8
|
-
import type { NodeKind, SimpleNodeSchemaBase } from "./core/index.js";
|
|
8
|
+
import type { NodeKind, SchemaUpgrade, SimpleNodeSchemaBase } from "./core/index.js";
|
|
9
9
|
import type { FieldKind, FieldSchemaMetadata } from "./fieldSchema.js";
|
|
10
10
|
|
|
11
11
|
/*
|
|
@@ -39,6 +39,15 @@ export interface SimpleNodeSchemaBaseAlpha<
|
|
|
39
39
|
readonly persistedMetadata: JsonCompatibleReadOnlyObject | undefined;
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
+
/**
|
|
43
|
+
* {@link AllowedTypes} for a location in the tree, expressed for use in the Simple Schema layer of abstraction.
|
|
44
|
+
*
|
|
45
|
+
* @remarks
|
|
46
|
+
* Refers to the types by identifier.
|
|
47
|
+
* A {@link SimpleTreeSchema} is needed to resolve these identifiers to their schema {@link SimpleTreeSchema.definitions}.
|
|
48
|
+
*/
|
|
49
|
+
export type SimpleAllowedTypes = ReadonlyMap<string, SimpleAllowedTypeAttributes>;
|
|
50
|
+
|
|
42
51
|
/**
|
|
43
52
|
* A {@link SimpleNodeSchema} for an object node.
|
|
44
53
|
*
|
|
@@ -179,13 +188,17 @@ export type SimpleNodeSchema =
|
|
|
179
188
|
*/
|
|
180
189
|
export interface SimpleAllowedTypeAttributes {
|
|
181
190
|
/**
|
|
182
|
-
*
|
|
191
|
+
* {@link SchemaUpgrade} if this schema is included as a {@link SchemaStaticsBeta.staged | staged} schema upgrade,
|
|
183
192
|
* allowing the view schema be compatible with stored schema with (post upgrade) or without it (pre-upgrade).
|
|
184
193
|
* New documents and schema upgrades will omit any staged schema.
|
|
185
194
|
*
|
|
186
195
|
* Undefined if derived from a stored schema.
|
|
196
|
+
*
|
|
197
|
+
* @privateRemarks
|
|
198
|
+
* The false and undefined cases here are a bit odd.
|
|
199
|
+
* This API should be reevaluated before stabilizing.
|
|
187
200
|
*/
|
|
188
|
-
readonly isStaged:
|
|
201
|
+
readonly isStaged: false | SchemaUpgrade | undefined;
|
|
189
202
|
}
|
|
190
203
|
|
|
191
204
|
/**
|
|
@@ -3,7 +3,11 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import {
|
|
6
|
+
import {
|
|
7
|
+
unreachableCase,
|
|
8
|
+
fail,
|
|
9
|
+
transformMapValues,
|
|
10
|
+
} from "@fluidframework/core-utils/internal";
|
|
7
11
|
import { UsageError } from "@fluidframework/telemetry-utils/internal";
|
|
8
12
|
|
|
9
13
|
import {
|
|
@@ -17,7 +21,6 @@ import {
|
|
|
17
21
|
type TreeNodeSchemaIdentifier,
|
|
18
22
|
type TreeNodeStoredSchema,
|
|
19
23
|
type TreeStoredSchema,
|
|
20
|
-
type TreeTypeSet,
|
|
21
24
|
} from "../core/index.js";
|
|
22
25
|
import { FieldKinds, type FlexFieldKind } from "../feature-libraries/index.js";
|
|
23
26
|
import { brand, getOrCreate, type JsonCompatibleReadOnlyObject } from "../util/index.js";
|
|
@@ -25,23 +28,23 @@ import { brand, getOrCreate, type JsonCompatibleReadOnlyObject } from "../util/i
|
|
|
25
28
|
import {
|
|
26
29
|
allowedTypeFilter,
|
|
27
30
|
convertAllowedTypes,
|
|
28
|
-
|
|
29
|
-
isClassBasedSchema,
|
|
31
|
+
ExpectStored,
|
|
30
32
|
NodeKind,
|
|
31
33
|
type SimpleNodeSchemaBase,
|
|
34
|
+
type StoredFromViewSchemaGenerationOptions,
|
|
32
35
|
type StoredSchemaGenerationOptions,
|
|
33
36
|
} from "./core/index.js";
|
|
34
|
-
import {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
37
|
+
import { FieldKind, normalizeFieldSchema, type ImplicitFieldSchema } from "./fieldSchema.js";
|
|
38
|
+
import type {
|
|
39
|
+
SimpleAllowedTypes,
|
|
40
|
+
SimpleFieldSchema,
|
|
41
|
+
SimpleNodeSchema,
|
|
42
|
+
SimpleTreeSchema,
|
|
43
|
+
} from "./simpleSchema.js";
|
|
41
44
|
import { walkFieldSchema } from "./walkFieldSchema.js";
|
|
42
45
|
|
|
43
46
|
const viewToStoredCache = new WeakMap<
|
|
44
|
-
|
|
47
|
+
StoredFromViewSchemaGenerationOptions,
|
|
45
48
|
WeakMap<ImplicitFieldSchema, TreeStoredSchema>
|
|
46
49
|
>();
|
|
47
50
|
|
|
@@ -85,6 +88,9 @@ export const toUnhydratedSchema = permissiveStoredSchemaGenerationOptions;
|
|
|
85
88
|
* TODO:#38722 When runtime schema upgrades are implemented, this will need to be updated to check if
|
|
86
89
|
* a staged allowed type has been upgraded and if so, include it in the conversion.
|
|
87
90
|
*
|
|
91
|
+
* Even if this took in a SimpleTreeSchema,
|
|
92
|
+
* it would still need to walk the schema to avoid including schema that become unreachable due to filtered out staged schema.
|
|
93
|
+
*
|
|
88
94
|
* @throws
|
|
89
95
|
* Throws a `UsageError` if multiple schemas are encountered with the same identifier.
|
|
90
96
|
*/
|
|
@@ -114,7 +120,11 @@ export function toStoredSchema(
|
|
|
114
120
|
),
|
|
115
121
|
);
|
|
116
122
|
},
|
|
117
|
-
allowedTypeFilter: (allowedType) =>
|
|
123
|
+
allowedTypeFilter: (allowedType) =>
|
|
124
|
+
allowedTypeFilter(
|
|
125
|
+
{ isStaged: allowedType.metadata.stagedSchemaUpgrade ?? false },
|
|
126
|
+
options,
|
|
127
|
+
),
|
|
118
128
|
});
|
|
119
129
|
|
|
120
130
|
const result: TreeStoredSchema = {
|
|
@@ -126,24 +136,35 @@ export function toStoredSchema(
|
|
|
126
136
|
}
|
|
127
137
|
|
|
128
138
|
/**
|
|
129
|
-
*
|
|
139
|
+
* Convert a {@link SimpleTreeSchema} for a stored schema into a {@link TreeStoredSchema}.
|
|
140
|
+
* @remarks
|
|
141
|
+
* This only supports simple schemas that are already logically stored schemas.
|
|
142
|
+
* @privateRemarks
|
|
143
|
+
* To correctly support view schema here, this would need to filter out unreferenced schema after excluding staged schema.
|
|
144
|
+
* @see {@link ExpectStored}.
|
|
145
|
+
*/
|
|
146
|
+
export function simpleStoredSchemaToStoredSchema(
|
|
147
|
+
treeSchema: SimpleTreeSchema,
|
|
148
|
+
): TreeStoredSchema {
|
|
149
|
+
const result: TreeStoredSchema = {
|
|
150
|
+
nodeSchema: transformMapValues(treeSchema.definitions, (schema) =>
|
|
151
|
+
getStoredSchema(schema, ExpectStored),
|
|
152
|
+
) as Map<TreeNodeSchemaIdentifier, TreeNodeStoredSchema>,
|
|
153
|
+
rootFieldSchema: convertField(treeSchema.root, ExpectStored),
|
|
154
|
+
};
|
|
155
|
+
return result;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* Convert a {@link SimpleFieldSchema} into a {@link TreeFieldStoredSchema}.
|
|
130
160
|
*/
|
|
131
161
|
export function convertField(
|
|
132
|
-
schema: SimpleFieldSchema
|
|
162
|
+
schema: SimpleFieldSchema,
|
|
133
163
|
options: StoredSchemaGenerationOptions,
|
|
134
164
|
): TreeFieldStoredSchema {
|
|
135
165
|
const kind: FieldKindIdentifier =
|
|
136
166
|
convertFieldKind.get(schema.kind)?.identifier ?? fail(0xae3 /* Invalid field kind */);
|
|
137
|
-
|
|
138
|
-
// eslint-disable-next-line unicorn/prefer-ternary
|
|
139
|
-
if (schema instanceof FieldSchemaAlpha) {
|
|
140
|
-
types = convertAllowedTypes(schema.allowedTypes, options);
|
|
141
|
-
} else {
|
|
142
|
-
const allowedTypesIdentifiers: ReadonlySet<string> = new Set(
|
|
143
|
-
schema.simpleAllowedTypes.keys(),
|
|
144
|
-
);
|
|
145
|
-
types = allowedTypesIdentifiers as TreeTypeSet;
|
|
146
|
-
}
|
|
167
|
+
const types = convertAllowedTypes(schema.simpleAllowedTypes, options);
|
|
147
168
|
return { kind, types, persistedMetadata: schema.persistedMetadata };
|
|
148
169
|
}
|
|
149
170
|
|
|
@@ -168,9 +189,6 @@ export function getStoredSchema(
|
|
|
168
189
|
schema: SimpleNodeSchema,
|
|
169
190
|
options: StoredSchemaGenerationOptions,
|
|
170
191
|
): TreeNodeStoredSchema {
|
|
171
|
-
if (isClassBasedSchema(schema)) {
|
|
172
|
-
return getTreeNodeSchemaPrivateData(schema).toStored(options);
|
|
173
|
-
}
|
|
174
192
|
const kind = schema.kind;
|
|
175
193
|
switch (kind) {
|
|
176
194
|
case NodeKind.Leaf: {
|
|
@@ -178,10 +196,7 @@ export function getStoredSchema(
|
|
|
178
196
|
}
|
|
179
197
|
case NodeKind.Map:
|
|
180
198
|
case NodeKind.Record: {
|
|
181
|
-
const
|
|
182
|
-
schema.simpleAllowedTypes.keys(),
|
|
183
|
-
);
|
|
184
|
-
const types = allowedTypesIdentifiers as TreeTypeSet;
|
|
199
|
+
const types = convertAllowedTypes(schema.simpleAllowedTypes, options);
|
|
185
200
|
return new MapNodeStoredSchema(
|
|
186
201
|
{
|
|
187
202
|
kind: FieldKinds.optional.identifier,
|
|
@@ -193,11 +208,11 @@ export function getStoredSchema(
|
|
|
193
208
|
);
|
|
194
209
|
}
|
|
195
210
|
case NodeKind.Array: {
|
|
196
|
-
|
|
197
|
-
schema.simpleAllowedTypes
|
|
211
|
+
return arrayNodeStoredSchema(
|
|
212
|
+
schema.simpleAllowedTypes,
|
|
213
|
+
options,
|
|
214
|
+
schema.persistedMetadata,
|
|
198
215
|
);
|
|
199
|
-
const types = allowedTypesIdentifiers as TreeTypeSet;
|
|
200
|
-
return arrayNodeStoredSchema(types, schema.persistedMetadata);
|
|
201
216
|
}
|
|
202
217
|
case NodeKind.Object: {
|
|
203
218
|
const fields: Map<FieldKey, TreeFieldStoredSchema> = new Map();
|
|
@@ -213,12 +228,13 @@ export function getStoredSchema(
|
|
|
213
228
|
}
|
|
214
229
|
|
|
215
230
|
export function arrayNodeStoredSchema(
|
|
216
|
-
|
|
231
|
+
schema: SimpleAllowedTypes,
|
|
232
|
+
options: StoredSchemaGenerationOptions,
|
|
217
233
|
persistedMetadata: JsonCompatibleReadOnlyObject | undefined,
|
|
218
234
|
): ObjectNodeStoredSchema {
|
|
219
235
|
const field = {
|
|
220
236
|
kind: FieldKinds.sequence.identifier,
|
|
221
|
-
types,
|
|
237
|
+
types: convertAllowedTypes(schema, options),
|
|
222
238
|
persistedMetadata,
|
|
223
239
|
};
|
|
224
240
|
const fields = new Map([[EmptyKey, field]]);
|
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
|
|
6
6
|
import type { IFluidHandle } from "@fluidframework/core-interfaces";
|
|
7
7
|
import { UsageError } from "@fluidframework/telemetry-utils/internal";
|
|
8
|
-
import { assert } from "@fluidframework/core-utils/internal";
|
|
8
|
+
import { assert, fail } from "@fluidframework/core-utils/internal";
|
|
9
9
|
|
|
10
|
-
import { hasSingle } from "../util/index.js";
|
|
10
|
+
import { filterIterable, hasSingle, oneFromIterable } from "../util/index.js";
|
|
11
11
|
|
|
12
12
|
import { normalizeFieldSchema, FieldKind, type ImplicitFieldSchema } from "./fieldSchema.js";
|
|
13
13
|
import {
|
|
@@ -96,7 +96,13 @@ export function unhydratedFlexTreeFromInsertableNode(
|
|
|
96
96
|
const handler = getTreeNodeSchemaPrivateData(schema).idempotentInitialize();
|
|
97
97
|
const result = handler.toFlexContent(data, allowedTypes);
|
|
98
98
|
|
|
99
|
-
|
|
99
|
+
// Might not match schema due to fallbacks, see TODO on toFlexContent
|
|
100
|
+
// TODO: fix TODO in `toFlexContent`, and remove this.
|
|
101
|
+
const finalSchema =
|
|
102
|
+
oneFromIterable(filterIterable(allowedTypes, (s) => s.identifier === result[0].type)) ??
|
|
103
|
+
fail(0xc9d /* missing schema */);
|
|
104
|
+
|
|
105
|
+
return new UnhydratedFlexTreeNode(...result, getUnhydratedContext(finalSchema));
|
|
100
106
|
}
|
|
101
107
|
|
|
102
108
|
function getType(
|
|
@@ -133,21 +139,20 @@ export function getPossibleTypes(
|
|
|
133
139
|
data: FactoryContent,
|
|
134
140
|
): TreeNodeSchema[] {
|
|
135
141
|
assert(data !== undefined, 0x889 /* undefined cannot be used as FactoryContent. */);
|
|
136
|
-
const type =
|
|
137
|
-
typeof data === "object" && data !== null
|
|
138
|
-
? (data as Partial<{ [contentSchemaSymbol]: string }>)[contentSchemaSymbol]
|
|
139
|
-
: undefined;
|
|
140
142
|
|
|
141
|
-
let
|
|
143
|
+
let toCheck: Iterable<TreeNodeSchema>;
|
|
144
|
+
if (typeof data === "object" && data !== null && contentSchemaSymbol in data) {
|
|
145
|
+
// If the data has an explicit brand via contentSchemaSymbol, only check that type.
|
|
146
|
+
const type = data[contentSchemaSymbol];
|
|
147
|
+
toCheck = filterIterable(allowedTypes, (schema) => schema.identifier === type);
|
|
148
|
+
} else {
|
|
149
|
+
toCheck = allowedTypes;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
// Start at the lowest level of compat we would ever accept: this discards types which are less compatible.
|
|
153
|
+
let best = CompatibilityLevel.Low;
|
|
142
154
|
const possibleTypes: TreeNodeSchema[] = [];
|
|
143
|
-
for (const schema of
|
|
144
|
-
if (type !== undefined) {
|
|
145
|
-
if (schema.identifier === type) {
|
|
146
|
-
return [schema];
|
|
147
|
-
} else {
|
|
148
|
-
continue;
|
|
149
|
-
}
|
|
150
|
-
}
|
|
155
|
+
for (const schema of toCheck) {
|
|
151
156
|
const handler = getTreeNodeSchemaPrivateData(schema).idempotentInitialize();
|
|
152
157
|
const level = handler.shallowCompatibilityTest(data);
|
|
153
158
|
if (level > best) {
|
|
@@ -158,7 +163,7 @@ export function getPossibleTypes(
|
|
|
158
163
|
possibleTypes.push(schema);
|
|
159
164
|
}
|
|
160
165
|
}
|
|
161
|
-
return
|
|
166
|
+
return possibleTypes;
|
|
162
167
|
}
|
|
163
168
|
|
|
164
169
|
/**
|