@fluidframework/tree 2.70.0 → 2.72.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 +84 -40
- package/api-report/tree.alpha.api.md +52 -22
- package/api-report/tree.beta.api.md +45 -0
- package/api-report/tree.legacy.beta.api.md +45 -0
- package/dist/alpha.d.ts +12 -7
- package/dist/api.js +1 -1
- package/dist/api.js.map +1 -1
- package/dist/beta.d.ts +8 -0
- package/dist/codec/codec.d.ts +16 -1
- package/dist/codec/codec.d.ts.map +1 -1
- package/dist/codec/codec.js +16 -3
- package/dist/codec/codec.js.map +1 -1
- package/dist/codec/discriminatedUnions.d.ts +1 -1
- package/dist/codec/discriminatedUnions.js +1 -1
- package/dist/codec/discriminatedUnions.js.map +1 -1
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +2 -2
- package/dist/core/index.js.map +1 -1
- package/dist/core/schema-stored/index.d.ts +1 -1
- package/dist/core/schema-stored/index.d.ts.map +1 -1
- package/dist/core/schema-stored/index.js +2 -2
- package/dist/core/schema-stored/index.js.map +1 -1
- package/dist/core/schema-stored/schema.d.ts +6 -6
- package/dist/core/schema-stored/schema.d.ts.map +1 -1
- package/dist/core/schema-stored/schema.js +6 -7
- package/dist/core/schema-stored/schema.js.map +1 -1
- package/dist/core/tree/detachedFieldIndexCodecCommon.d.ts +2 -1
- package/dist/core/tree/detachedFieldIndexCodecCommon.d.ts.map +1 -1
- package/dist/core/tree/detachedFieldIndexCodecCommon.js.map +1 -1
- package/dist/core/tree/detachedFieldIndexCodecV1.d.ts +1 -1
- package/dist/core/tree/detachedFieldIndexCodecV1.d.ts.map +1 -1
- package/dist/core/tree/detachedFieldIndexCodecV1.js +3 -2
- package/dist/core/tree/detachedFieldIndexCodecV1.js.map +1 -1
- package/dist/core/tree/detachedFieldIndexCodecV2.d.ts.map +1 -1
- package/dist/core/tree/detachedFieldIndexCodecV2.js +3 -1
- package/dist/core/tree/detachedFieldIndexCodecV2.js.map +1 -1
- package/dist/core/tree/detachedFieldIndexCodecs.d.ts +2 -3
- package/dist/core/tree/detachedFieldIndexCodecs.d.ts.map +1 -1
- package/dist/core/tree/detachedFieldIndexCodecs.js +29 -8
- package/dist/core/tree/detachedFieldIndexCodecs.js.map +1 -1
- package/dist/core/tree/detachedFieldIndexFormatCommon.d.ts +10 -1
- package/dist/core/tree/detachedFieldIndexFormatCommon.d.ts.map +1 -1
- package/dist/core/tree/detachedFieldIndexFormatCommon.js +8 -1
- package/dist/core/tree/detachedFieldIndexFormatCommon.js.map +1 -1
- package/dist/core/tree/detachedFieldIndexFormatV1.d.ts +2 -2
- package/dist/core/tree/detachedFieldIndexFormatV1.d.ts.map +1 -1
- package/dist/core/tree/detachedFieldIndexFormatV1.js +3 -3
- package/dist/core/tree/detachedFieldIndexFormatV1.js.map +1 -1
- package/dist/core/tree/detachedFieldIndexFormatV2.d.ts +2 -2
- package/dist/core/tree/detachedFieldIndexFormatV2.d.ts.map +1 -1
- package/dist/core/tree/detachedFieldIndexFormatV2.js +3 -3
- package/dist/core/tree/detachedFieldIndexFormatV2.js.map +1 -1
- package/dist/core/tree/index.d.ts +2 -1
- package/dist/core/tree/index.d.ts.map +1 -1
- package/dist/core/tree/index.js.map +1 -1
- package/dist/external-utilities/typeboxValidator.js +1 -1
- package/dist/external-utilities/typeboxValidator.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/codecs.d.ts +4 -10
- package/dist/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/codecs.js +12 -8
- package/dist/feature-libraries/chunked-forest/codec/codecs.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js +1 -1
- package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/format.d.ts +8 -3
- package/dist/feature-libraries/chunked-forest/codec/format.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/format.js +9 -4
- package/dist/feature-libraries/chunked-forest/codec/format.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/index.d.ts +2 -2
- package/dist/feature-libraries/chunked-forest/codec/index.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/index.js +1 -2
- package/dist/feature-libraries/chunked-forest/codec/index.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/uncompressedEncode.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/uncompressedEncode.js +1 -1
- 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 +1 -2
- package/dist/feature-libraries/chunked-forest/index.js.map +1 -1
- package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts +1 -9
- package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
- package/dist/feature-libraries/default-schema/defaultFieldKinds.js +3 -21
- package/dist/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
- package/dist/feature-libraries/forest-summary/codec.d.ts +4 -5
- package/dist/feature-libraries/forest-summary/codec.d.ts.map +1 -1
- package/dist/feature-libraries/forest-summary/codec.js +15 -4
- package/dist/feature-libraries/forest-summary/codec.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 +8 -1
- package/dist/feature-libraries/forest-summary/format.d.ts.map +1 -1
- package/dist/feature-libraries/forest-summary/format.js +8 -3
- package/dist/feature-libraries/forest-summary/format.js.map +1 -1
- package/dist/feature-libraries/forest-summary/index.d.ts +2 -1
- package/dist/feature-libraries/forest-summary/index.d.ts.map +1 -1
- package/dist/feature-libraries/forest-summary/index.js +3 -1
- package/dist/feature-libraries/forest-summary/index.js.map +1 -1
- package/dist/feature-libraries/index.d.ts +3 -3
- package/dist/feature-libraries/index.d.ts.map +1 -1
- package/dist/feature-libraries/index.js +2 -2
- package/dist/feature-libraries/index.js.map +1 -1
- package/dist/feature-libraries/schema-edits/index.d.ts +1 -1
- package/dist/feature-libraries/schema-edits/index.d.ts.map +1 -1
- package/dist/feature-libraries/schema-edits/index.js.map +1 -1
- package/dist/feature-libraries/schema-edits/schemaChangeCodecs.d.ts +6 -7
- package/dist/feature-libraries/schema-edits/schemaChangeCodecs.d.ts.map +1 -1
- package/dist/feature-libraries/schema-edits/schemaChangeCodecs.js +5 -4
- package/dist/feature-libraries/schema-edits/schemaChangeCodecs.js.map +1 -1
- package/dist/feature-libraries/schema-index/codec.d.ts +10 -10
- package/dist/feature-libraries/schema-index/codec.d.ts.map +1 -1
- package/dist/feature-libraries/schema-index/codec.js +22 -18
- package/dist/feature-libraries/schema-index/codec.js.map +1 -1
- package/dist/feature-libraries/schema-index/formatV1.d.ts +2 -2
- package/dist/feature-libraries/schema-index/formatV1.d.ts.map +1 -1
- package/dist/feature-libraries/schema-index/formatV1.js +1 -1
- package/dist/feature-libraries/schema-index/formatV1.js.map +1 -1
- package/dist/feature-libraries/schema-index/formatV2.d.ts +1 -2
- package/dist/feature-libraries/schema-index/formatV2.d.ts.map +1 -1
- package/dist/feature-libraries/schema-index/formatV2.js +1 -1
- package/dist/feature-libraries/schema-index/formatV2.js.map +1 -1
- package/dist/feature-libraries/schema-index/schemaSummarizer.d.ts +2 -2
- package/dist/feature-libraries/schema-index/schemaSummarizer.d.ts.map +1 -1
- package/dist/feature-libraries/schema-index/schemaSummarizer.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -2
- package/dist/index.js.map +1 -1
- package/dist/legacy.d.ts +8 -0
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/shared-tree/independentView.d.ts +75 -6
- package/dist/shared-tree/independentView.d.ts.map +1 -1
- package/dist/shared-tree/independentView.js +116 -43
- package/dist/shared-tree/independentView.js.map +1 -1
- package/dist/shared-tree/index.d.ts +2 -1
- package/dist/shared-tree/index.d.ts.map +1 -1
- package/dist/shared-tree/index.js +6 -1
- package/dist/shared-tree/index.js.map +1 -1
- package/dist/shared-tree/sharedTree.d.ts +12 -16
- package/dist/shared-tree/sharedTree.d.ts.map +1 -1
- package/dist/shared-tree/sharedTree.js +105 -130
- package/dist/shared-tree/sharedTree.js.map +1 -1
- package/dist/shared-tree/sharedTreeChangeCodecs.d.ts +7 -6
- package/dist/shared-tree/sharedTreeChangeCodecs.d.ts.map +1 -1
- package/dist/shared-tree/sharedTreeChangeCodecs.js +12 -11
- 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/treeAlpha.d.ts +1 -1
- package/dist/shared-tree/treeAlpha.d.ts.map +1 -1
- package/dist/shared-tree/treeAlpha.js +4 -2
- package/dist/shared-tree/treeAlpha.js.map +1 -1
- package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
- package/dist/shared-tree/treeCheckout.js +1 -3
- package/dist/shared-tree/treeCheckout.js.map +1 -1
- package/dist/shared-tree-core/editManagerCodecs.d.ts +19 -6
- package/dist/shared-tree-core/editManagerCodecs.d.ts.map +1 -1
- package/dist/shared-tree-core/editManagerCodecs.js +35 -17
- package/dist/shared-tree-core/editManagerCodecs.js.map +1 -1
- package/dist/shared-tree-core/editManagerFormatCommons.d.ts +37 -0
- package/dist/shared-tree-core/editManagerFormatCommons.d.ts.map +1 -1
- package/dist/shared-tree-core/editManagerFormatCommons.js +43 -1
- package/dist/shared-tree-core/editManagerFormatCommons.js.map +1 -1
- package/dist/shared-tree-core/editManagerFormatV1toV4.d.ts +2 -2
- package/dist/shared-tree-core/editManagerFormatV1toV4.d.ts.map +1 -1
- package/dist/shared-tree-core/editManagerFormatV1toV4.js +4 -4
- package/dist/shared-tree-core/editManagerFormatV1toV4.js.map +1 -1
- package/dist/shared-tree-core/editManagerFormatV5.d.ts +2 -2
- package/dist/shared-tree-core/editManagerFormatV5.d.ts.map +1 -1
- package/dist/shared-tree-core/editManagerFormatV5.js +1 -1
- package/dist/shared-tree-core/editManagerFormatV5.js.map +1 -1
- package/dist/shared-tree-core/index.d.ts +5 -3
- package/dist/shared-tree-core/index.d.ts.map +1 -1
- package/dist/shared-tree-core/index.js +11 -3
- package/dist/shared-tree-core/index.js.map +1 -1
- package/dist/shared-tree-core/messageCodecV1ToV4.d.ts +2 -1
- package/dist/shared-tree-core/messageCodecV1ToV4.d.ts.map +1 -1
- package/dist/shared-tree-core/messageCodecV1ToV4.js.map +1 -1
- package/dist/shared-tree-core/messageCodecV5.d.ts +2 -1
- package/dist/shared-tree-core/messageCodecV5.d.ts.map +1 -1
- package/dist/shared-tree-core/messageCodecV5.js.map +1 -1
- package/dist/shared-tree-core/messageCodecs.d.ts +19 -6
- package/dist/shared-tree-core/messageCodecs.d.ts.map +1 -1
- package/dist/shared-tree-core/messageCodecs.js +38 -21
- package/dist/shared-tree-core/messageCodecs.js.map +1 -1
- package/dist/shared-tree-core/messageFormat.d.ts +50 -0
- package/dist/shared-tree-core/messageFormat.d.ts.map +1 -0
- package/dist/shared-tree-core/messageFormat.js +51 -0
- package/dist/shared-tree-core/messageFormat.js.map +1 -0
- package/dist/shared-tree-core/sharedTreeCore.d.ts +8 -8
- package/dist/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
- package/dist/shared-tree-core/sharedTreeCore.js +3 -3
- package/dist/shared-tree-core/sharedTreeCore.js.map +1 -1
- package/dist/simple-tree/api/discrepancies.d.ts +2 -2
- package/dist/simple-tree/api/discrepancies.js.map +1 -1
- package/dist/simple-tree/api/incrementalAllowedTypes.d.ts +1 -1
- package/dist/simple-tree/api/incrementalAllowedTypes.js +1 -1
- package/dist/simple-tree/api/incrementalAllowedTypes.js.map +1 -1
- package/dist/simple-tree/api/index.d.ts +3 -2
- package/dist/simple-tree/api/index.d.ts.map +1 -1
- package/dist/simple-tree/api/index.js +4 -1
- package/dist/simple-tree/api/index.js.map +1 -1
- package/dist/simple-tree/api/schemaFactory.d.ts +2 -2
- package/dist/simple-tree/api/schemaFactory.js +2 -2
- package/dist/simple-tree/api/schemaFactory.js.map +1 -1
- package/dist/simple-tree/api/schemaFactoryAlpha.d.ts +2 -98
- package/dist/simple-tree/api/schemaFactoryAlpha.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaFactoryAlpha.js +1 -52
- package/dist/simple-tree/api/schemaFactoryAlpha.js.map +1 -1
- package/dist/simple-tree/api/schemaFactoryBeta.d.ts +98 -2
- package/dist/simple-tree/api/schemaFactoryBeta.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaFactoryBeta.js +61 -7
- package/dist/simple-tree/api/schemaFactoryBeta.js.map +1 -1
- package/dist/simple-tree/api/schemaFactoryRecursive.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaFactoryRecursive.js +1 -0
- package/dist/simple-tree/api/schemaFactoryRecursive.js.map +1 -1
- package/dist/simple-tree/api/schemaFromSimple.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaFromSimple.js +15 -8
- package/dist/simple-tree/api/schemaFromSimple.js.map +1 -1
- package/dist/simple-tree/api/simpleSchemaCodec.d.ts +28 -0
- package/dist/simple-tree/api/simpleSchemaCodec.d.ts.map +1 -0
- package/dist/simple-tree/api/simpleSchemaCodec.js +292 -0
- package/dist/simple-tree/api/simpleSchemaCodec.js.map +1 -0
- package/dist/simple-tree/api/simpleSchemaToJsonSchema.d.ts.map +1 -1
- package/dist/simple-tree/api/simpleSchemaToJsonSchema.js +4 -2
- package/dist/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -1
- package/dist/simple-tree/api/storedSchema.d.ts +2 -2
- package/dist/simple-tree/api/storedSchema.d.ts.map +1 -1
- package/dist/simple-tree/api/storedSchema.js +8 -6
- package/dist/simple-tree/api/storedSchema.js.map +1 -1
- package/dist/simple-tree/api/tree.d.ts +2 -2
- package/dist/simple-tree/api/tree.js.map +1 -1
- package/dist/simple-tree/api/typesUnsafe.d.ts +6 -6
- package/dist/simple-tree/api/typesUnsafe.js.map +1 -1
- package/dist/simple-tree/api/viewSchemaToSimpleSchema.d.ts +17 -1
- package/dist/simple-tree/api/viewSchemaToSimpleSchema.d.ts.map +1 -1
- package/dist/simple-tree/api/viewSchemaToSimpleSchema.js +71 -7
- package/dist/simple-tree/api/viewSchemaToSimpleSchema.js.map +1 -1
- package/dist/simple-tree/core/allowedTypes.d.ts +12 -7
- package/dist/simple-tree/core/allowedTypes.d.ts.map +1 -1
- package/dist/simple-tree/core/allowedTypes.js +18 -5
- package/dist/simple-tree/core/allowedTypes.js.map +1 -1
- package/dist/simple-tree/core/treeNode.js +1 -1
- package/dist/simple-tree/core/treeNode.js.map +1 -1
- package/dist/simple-tree/fieldSchema.d.ts +2 -1
- package/dist/simple-tree/fieldSchema.d.ts.map +1 -1
- package/dist/simple-tree/fieldSchema.js +10 -0
- package/dist/simple-tree/fieldSchema.js.map +1 -1
- package/dist/simple-tree/index.d.ts +3 -2
- package/dist/simple-tree/index.d.ts.map +1 -1
- package/dist/simple-tree/index.js +4 -0
- package/dist/simple-tree/index.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 +7 -1
- 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 +7 -1
- package/dist/simple-tree/node-kinds/map/mapNode.js.map +1 -1
- package/dist/simple-tree/node-kinds/object/objectNode.d.ts +17 -0
- package/dist/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/object/objectNode.js +21 -8
- 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 +8 -2
- package/dist/simple-tree/node-kinds/record/recordNode.js.map +1 -1
- package/dist/simple-tree/node-kinds/record/recordNodeTypes.d.ts +16 -0
- package/dist/simple-tree/node-kinds/record/recordNodeTypes.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/record/recordNodeTypes.js.map +1 -1
- package/dist/simple-tree/simpleSchema.d.ts +30 -6
- package/dist/simple-tree/simpleSchema.d.ts.map +1 -1
- package/dist/simple-tree/simpleSchema.js.map +1 -1
- package/dist/simple-tree/simpleSchemaFormatV1.d.ts +249 -0
- package/dist/simple-tree/simpleSchemaFormatV1.d.ts.map +1 -0
- package/dist/simple-tree/simpleSchemaFormatV1.js +115 -0
- package/dist/simple-tree/simpleSchemaFormatV1.js.map +1 -0
- package/dist/simple-tree/toStoredSchema.d.ts.map +1 -1
- package/dist/simple-tree/toStoredSchema.js +6 -3
- package/dist/simple-tree/toStoredSchema.js.map +1 -1
- package/dist/tableSchema.d.ts.map +1 -1
- package/dist/tableSchema.js +1 -1
- package/dist/tableSchema.js.map +1 -1
- package/dist/treeFactory.d.ts +3 -1
- package/dist/treeFactory.d.ts.map +1 -1
- package/dist/treeFactory.js +26 -2
- package/dist/treeFactory.js.map +1 -1
- package/dist/util/brand.d.ts +31 -2
- package/dist/util/brand.d.ts.map +1 -1
- package/dist/util/brand.js +28 -2
- package/dist/util/brand.js.map +1 -1
- package/dist/util/brandedMap.d.ts +3 -1
- package/dist/util/brandedMap.d.ts.map +1 -1
- package/dist/util/brandedMap.js.map +1 -1
- package/dist/util/index.d.ts +1 -1
- package/dist/util/index.d.ts.map +1 -1
- package/dist/util/index.js +3 -2
- package/dist/util/index.js.map +1 -1
- package/dist/util/referenceCounting.d.ts.map +1 -1
- package/dist/util/referenceCounting.js +1 -0
- package/dist/util/referenceCounting.js.map +1 -1
- package/lib/alpha.d.ts +12 -7
- package/lib/api.js +2 -2
- package/lib/api.js.map +1 -1
- package/lib/beta.d.ts +8 -0
- package/lib/codec/codec.d.ts +16 -1
- package/lib/codec/codec.d.ts.map +1 -1
- package/lib/codec/codec.js +16 -3
- package/lib/codec/codec.js.map +1 -1
- package/lib/codec/discriminatedUnions.d.ts +1 -1
- package/lib/codec/discriminatedUnions.js +1 -1
- package/lib/codec/discriminatedUnions.js.map +1 -1
- package/lib/core/index.d.ts +1 -1
- package/lib/core/index.d.ts.map +1 -1
- package/lib/core/index.js +1 -1
- package/lib/core/index.js.map +1 -1
- package/lib/core/schema-stored/index.d.ts +1 -1
- package/lib/core/schema-stored/index.d.ts.map +1 -1
- package/lib/core/schema-stored/index.js +1 -1
- package/lib/core/schema-stored/index.js.map +1 -1
- package/lib/core/schema-stored/schema.d.ts +6 -6
- package/lib/core/schema-stored/schema.d.ts.map +1 -1
- package/lib/core/schema-stored/schema.js +6 -7
- package/lib/core/schema-stored/schema.js.map +1 -1
- package/lib/core/tree/detachedFieldIndexCodecCommon.d.ts +2 -1
- package/lib/core/tree/detachedFieldIndexCodecCommon.d.ts.map +1 -1
- package/lib/core/tree/detachedFieldIndexCodecCommon.js.map +1 -1
- package/lib/core/tree/detachedFieldIndexCodecV1.d.ts +1 -1
- package/lib/core/tree/detachedFieldIndexCodecV1.d.ts.map +1 -1
- package/lib/core/tree/detachedFieldIndexCodecV1.js +3 -2
- package/lib/core/tree/detachedFieldIndexCodecV1.js.map +1 -1
- package/lib/core/tree/detachedFieldIndexCodecV2.d.ts.map +1 -1
- package/lib/core/tree/detachedFieldIndexCodecV2.js +4 -2
- package/lib/core/tree/detachedFieldIndexCodecV2.js.map +1 -1
- package/lib/core/tree/detachedFieldIndexCodecs.d.ts +2 -3
- package/lib/core/tree/detachedFieldIndexCodecs.d.ts.map +1 -1
- package/lib/core/tree/detachedFieldIndexCodecs.js +29 -8
- package/lib/core/tree/detachedFieldIndexCodecs.js.map +1 -1
- package/lib/core/tree/detachedFieldIndexFormatCommon.d.ts +10 -1
- package/lib/core/tree/detachedFieldIndexFormatCommon.d.ts.map +1 -1
- package/lib/core/tree/detachedFieldIndexFormatCommon.js +7 -0
- package/lib/core/tree/detachedFieldIndexFormatCommon.js.map +1 -1
- package/lib/core/tree/detachedFieldIndexFormatV1.d.ts +2 -2
- package/lib/core/tree/detachedFieldIndexFormatV1.d.ts.map +1 -1
- package/lib/core/tree/detachedFieldIndexFormatV1.js +3 -3
- package/lib/core/tree/detachedFieldIndexFormatV1.js.map +1 -1
- package/lib/core/tree/detachedFieldIndexFormatV2.d.ts +2 -2
- package/lib/core/tree/detachedFieldIndexFormatV2.d.ts.map +1 -1
- package/lib/core/tree/detachedFieldIndexFormatV2.js +3 -3
- package/lib/core/tree/detachedFieldIndexFormatV2.js.map +1 -1
- package/lib/core/tree/index.d.ts +2 -1
- package/lib/core/tree/index.d.ts.map +1 -1
- package/lib/core/tree/index.js +1 -1
- package/lib/core/tree/index.js.map +1 -1
- package/lib/external-utilities/typeboxValidator.js +1 -1
- package/lib/external-utilities/typeboxValidator.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/codecs.d.ts +4 -10
- package/lib/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/codecs.js +13 -8
- package/lib/feature-libraries/chunked-forest/codec/codecs.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js +2 -2
- package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/format.d.ts +8 -3
- package/lib/feature-libraries/chunked-forest/codec/format.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/format.js +8 -3
- package/lib/feature-libraries/chunked-forest/codec/format.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/index.d.ts +2 -2
- package/lib/feature-libraries/chunked-forest/codec/index.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/index.js +2 -2
- package/lib/feature-libraries/chunked-forest/codec/index.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/uncompressedEncode.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/uncompressedEncode.js +2 -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 +1 -9
- package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
- package/lib/feature-libraries/default-schema/defaultFieldKinds.js +2 -20
- package/lib/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
- package/lib/feature-libraries/forest-summary/codec.d.ts +4 -5
- package/lib/feature-libraries/forest-summary/codec.d.ts.map +1 -1
- package/lib/feature-libraries/forest-summary/codec.js +16 -5
- package/lib/feature-libraries/forest-summary/codec.js.map +1 -1
- package/lib/feature-libraries/forest-summary/forestSummarizer.js +1 -1
- package/lib/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
- package/lib/feature-libraries/forest-summary/format.d.ts +8 -1
- package/lib/feature-libraries/forest-summary/format.d.ts.map +1 -1
- package/lib/feature-libraries/forest-summary/format.js +7 -2
- package/lib/feature-libraries/forest-summary/format.js.map +1 -1
- package/lib/feature-libraries/forest-summary/index.d.ts +2 -1
- package/lib/feature-libraries/forest-summary/index.d.ts.map +1 -1
- package/lib/feature-libraries/forest-summary/index.js +1 -0
- package/lib/feature-libraries/forest-summary/index.js.map +1 -1
- package/lib/feature-libraries/index.d.ts +3 -3
- package/lib/feature-libraries/index.d.ts.map +1 -1
- package/lib/feature-libraries/index.js +2 -2
- package/lib/feature-libraries/index.js.map +1 -1
- package/lib/feature-libraries/schema-edits/index.d.ts +1 -1
- package/lib/feature-libraries/schema-edits/index.d.ts.map +1 -1
- package/lib/feature-libraries/schema-edits/index.js.map +1 -1
- package/lib/feature-libraries/schema-edits/schemaChangeCodecs.d.ts +6 -7
- package/lib/feature-libraries/schema-edits/schemaChangeCodecs.d.ts.map +1 -1
- package/lib/feature-libraries/schema-edits/schemaChangeCodecs.js +6 -5
- package/lib/feature-libraries/schema-edits/schemaChangeCodecs.js.map +1 -1
- package/lib/feature-libraries/schema-index/codec.d.ts +10 -10
- package/lib/feature-libraries/schema-index/codec.d.ts.map +1 -1
- package/lib/feature-libraries/schema-index/codec.js +24 -20
- package/lib/feature-libraries/schema-index/codec.js.map +1 -1
- package/lib/feature-libraries/schema-index/formatV1.d.ts +2 -2
- package/lib/feature-libraries/schema-index/formatV1.d.ts.map +1 -1
- package/lib/feature-libraries/schema-index/formatV1.js +2 -2
- package/lib/feature-libraries/schema-index/formatV1.js.map +1 -1
- package/lib/feature-libraries/schema-index/formatV2.d.ts +1 -2
- package/lib/feature-libraries/schema-index/formatV2.d.ts.map +1 -1
- package/lib/feature-libraries/schema-index/formatV2.js +2 -2
- package/lib/feature-libraries/schema-index/formatV2.js.map +1 -1
- package/lib/feature-libraries/schema-index/schemaSummarizer.d.ts +2 -2
- package/lib/feature-libraries/schema-index/schemaSummarizer.d.ts.map +1 -1
- package/lib/feature-libraries/schema-index/schemaSummarizer.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/legacy.d.ts +8 -0
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/shared-tree/independentView.d.ts +75 -6
- package/lib/shared-tree/independentView.d.ts.map +1 -1
- package/lib/shared-tree/independentView.js +111 -39
- package/lib/shared-tree/independentView.js.map +1 -1
- package/lib/shared-tree/index.d.ts +2 -1
- package/lib/shared-tree/index.d.ts.map +1 -1
- package/lib/shared-tree/index.js +2 -1
- package/lib/shared-tree/index.js.map +1 -1
- package/lib/shared-tree/sharedTree.d.ts +12 -16
- package/lib/shared-tree/sharedTree.d.ts.map +1 -1
- package/lib/shared-tree/sharedTree.js +108 -133
- package/lib/shared-tree/sharedTree.js.map +1 -1
- package/lib/shared-tree/sharedTreeChangeCodecs.d.ts +7 -6
- package/lib/shared-tree/sharedTreeChangeCodecs.d.ts.map +1 -1
- package/lib/shared-tree/sharedTreeChangeCodecs.js +7 -6
- 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/treeAlpha.d.ts +1 -1
- package/lib/shared-tree/treeAlpha.d.ts.map +1 -1
- package/lib/shared-tree/treeAlpha.js +5 -3
- package/lib/shared-tree/treeAlpha.js.map +1 -1
- package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
- package/lib/shared-tree/treeCheckout.js +1 -3
- package/lib/shared-tree/treeCheckout.js.map +1 -1
- package/lib/shared-tree-core/editManagerCodecs.d.ts +19 -6
- package/lib/shared-tree-core/editManagerCodecs.d.ts.map +1 -1
- package/lib/shared-tree-core/editManagerCodecs.js +32 -16
- package/lib/shared-tree-core/editManagerCodecs.js.map +1 -1
- package/lib/shared-tree-core/editManagerFormatCommons.d.ts +37 -0
- package/lib/shared-tree-core/editManagerFormatCommons.d.ts.map +1 -1
- package/lib/shared-tree-core/editManagerFormatCommons.js +42 -0
- package/lib/shared-tree-core/editManagerFormatCommons.js.map +1 -1
- package/lib/shared-tree-core/editManagerFormatV1toV4.d.ts +2 -2
- package/lib/shared-tree-core/editManagerFormatV1toV4.d.ts.map +1 -1
- package/lib/shared-tree-core/editManagerFormatV1toV4.js +5 -5
- package/lib/shared-tree-core/editManagerFormatV1toV4.js.map +1 -1
- package/lib/shared-tree-core/editManagerFormatV5.d.ts +2 -2
- package/lib/shared-tree-core/editManagerFormatV5.d.ts.map +1 -1
- package/lib/shared-tree-core/editManagerFormatV5.js +2 -2
- package/lib/shared-tree-core/editManagerFormatV5.js.map +1 -1
- package/lib/shared-tree-core/index.d.ts +5 -3
- package/lib/shared-tree-core/index.d.ts.map +1 -1
- package/lib/shared-tree-core/index.js +4 -2
- package/lib/shared-tree-core/index.js.map +1 -1
- package/lib/shared-tree-core/messageCodecV1ToV4.d.ts +2 -1
- package/lib/shared-tree-core/messageCodecV1ToV4.d.ts.map +1 -1
- package/lib/shared-tree-core/messageCodecV1ToV4.js.map +1 -1
- package/lib/shared-tree-core/messageCodecV5.d.ts +2 -1
- package/lib/shared-tree-core/messageCodecV5.d.ts.map +1 -1
- package/lib/shared-tree-core/messageCodecV5.js.map +1 -1
- package/lib/shared-tree-core/messageCodecs.d.ts +19 -6
- package/lib/shared-tree-core/messageCodecs.d.ts.map +1 -1
- package/lib/shared-tree-core/messageCodecs.js +35 -20
- package/lib/shared-tree-core/messageCodecs.js.map +1 -1
- package/lib/shared-tree-core/messageFormat.d.ts +50 -0
- package/lib/shared-tree-core/messageFormat.d.ts.map +1 -0
- package/lib/shared-tree-core/messageFormat.js +48 -0
- package/lib/shared-tree-core/messageFormat.js.map +1 -0
- package/lib/shared-tree-core/sharedTreeCore.d.ts +8 -8
- package/lib/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
- package/lib/shared-tree-core/sharedTreeCore.js +3 -3
- package/lib/shared-tree-core/sharedTreeCore.js.map +1 -1
- package/lib/simple-tree/api/discrepancies.d.ts +2 -2
- package/lib/simple-tree/api/discrepancies.js.map +1 -1
- package/lib/simple-tree/api/incrementalAllowedTypes.d.ts +1 -1
- package/lib/simple-tree/api/incrementalAllowedTypes.js +1 -1
- package/lib/simple-tree/api/incrementalAllowedTypes.js.map +1 -1
- package/lib/simple-tree/api/index.d.ts +3 -2
- 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/schemaFactory.d.ts +2 -2
- package/lib/simple-tree/api/schemaFactory.js +2 -2
- package/lib/simple-tree/api/schemaFactory.js.map +1 -1
- package/lib/simple-tree/api/schemaFactoryAlpha.d.ts +2 -98
- package/lib/simple-tree/api/schemaFactoryAlpha.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaFactoryAlpha.js +1 -52
- package/lib/simple-tree/api/schemaFactoryAlpha.js.map +1 -1
- package/lib/simple-tree/api/schemaFactoryBeta.d.ts +98 -2
- package/lib/simple-tree/api/schemaFactoryBeta.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaFactoryBeta.js +58 -4
- package/lib/simple-tree/api/schemaFactoryBeta.js.map +1 -1
- package/lib/simple-tree/api/schemaFactoryRecursive.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaFactoryRecursive.js +1 -0
- package/lib/simple-tree/api/schemaFactoryRecursive.js.map +1 -1
- package/lib/simple-tree/api/schemaFromSimple.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaFromSimple.js +15 -8
- package/lib/simple-tree/api/schemaFromSimple.js.map +1 -1
- package/lib/simple-tree/api/simpleSchemaCodec.d.ts +28 -0
- package/lib/simple-tree/api/simpleSchemaCodec.d.ts.map +1 -0
- package/lib/simple-tree/api/simpleSchemaCodec.js +264 -0
- package/lib/simple-tree/api/simpleSchemaCodec.js.map +1 -0
- package/lib/simple-tree/api/simpleSchemaToJsonSchema.d.ts.map +1 -1
- package/lib/simple-tree/api/simpleSchemaToJsonSchema.js +4 -2
- package/lib/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -1
- package/lib/simple-tree/api/storedSchema.d.ts +2 -2
- package/lib/simple-tree/api/storedSchema.d.ts.map +1 -1
- package/lib/simple-tree/api/storedSchema.js +5 -3
- package/lib/simple-tree/api/storedSchema.js.map +1 -1
- package/lib/simple-tree/api/tree.d.ts +2 -2
- package/lib/simple-tree/api/tree.js.map +1 -1
- package/lib/simple-tree/api/typesUnsafe.d.ts +6 -6
- package/lib/simple-tree/api/typesUnsafe.js.map +1 -1
- package/lib/simple-tree/api/viewSchemaToSimpleSchema.d.ts +17 -1
- package/lib/simple-tree/api/viewSchemaToSimpleSchema.d.ts.map +1 -1
- package/lib/simple-tree/api/viewSchemaToSimpleSchema.js +69 -7
- package/lib/simple-tree/api/viewSchemaToSimpleSchema.js.map +1 -1
- package/lib/simple-tree/core/allowedTypes.d.ts +12 -7
- package/lib/simple-tree/core/allowedTypes.d.ts.map +1 -1
- package/lib/simple-tree/core/allowedTypes.js +19 -6
- package/lib/simple-tree/core/allowedTypes.js.map +1 -1
- package/lib/simple-tree/core/treeNode.js +1 -1
- package/lib/simple-tree/core/treeNode.js.map +1 -1
- package/lib/simple-tree/fieldSchema.d.ts +2 -1
- package/lib/simple-tree/fieldSchema.d.ts.map +1 -1
- package/lib/simple-tree/fieldSchema.js +10 -0
- package/lib/simple-tree/fieldSchema.js.map +1 -1
- package/lib/simple-tree/index.d.ts +3 -2
- package/lib/simple-tree/index.d.ts.map +1 -1
- package/lib/simple-tree/index.js +1 -0
- package/lib/simple-tree/index.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 +9 -3
- 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 +9 -3
- package/lib/simple-tree/node-kinds/map/mapNode.js.map +1 -1
- package/lib/simple-tree/node-kinds/object/objectNode.d.ts +17 -0
- package/lib/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/object/objectNode.js +22 -9
- 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 +10 -4
- package/lib/simple-tree/node-kinds/record/recordNode.js.map +1 -1
- package/lib/simple-tree/node-kinds/record/recordNodeTypes.d.ts +16 -0
- package/lib/simple-tree/node-kinds/record/recordNodeTypes.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/record/recordNodeTypes.js.map +1 -1
- package/lib/simple-tree/simpleSchema.d.ts +30 -6
- package/lib/simple-tree/simpleSchema.d.ts.map +1 -1
- package/lib/simple-tree/simpleSchema.js.map +1 -1
- package/lib/simple-tree/simpleSchemaFormatV1.d.ts +249 -0
- package/lib/simple-tree/simpleSchemaFormatV1.d.ts.map +1 -0
- package/lib/simple-tree/simpleSchemaFormatV1.js +112 -0
- package/lib/simple-tree/simpleSchemaFormatV1.js.map +1 -0
- package/lib/simple-tree/toStoredSchema.d.ts.map +1 -1
- package/lib/simple-tree/toStoredSchema.js +6 -3
- package/lib/simple-tree/toStoredSchema.js.map +1 -1
- package/lib/tableSchema.d.ts.map +1 -1
- package/lib/tableSchema.js +1 -1
- package/lib/tableSchema.js.map +1 -1
- package/lib/treeFactory.d.ts +3 -1
- package/lib/treeFactory.d.ts.map +1 -1
- package/lib/treeFactory.js +23 -1
- package/lib/treeFactory.js.map +1 -1
- package/lib/util/brand.d.ts +31 -2
- package/lib/util/brand.d.ts.map +1 -1
- package/lib/util/brand.js +26 -1
- package/lib/util/brand.js.map +1 -1
- package/lib/util/brandedMap.d.ts +3 -1
- package/lib/util/brandedMap.d.ts.map +1 -1
- package/lib/util/brandedMap.js.map +1 -1
- package/lib/util/index.d.ts +1 -1
- package/lib/util/index.d.ts.map +1 -1
- package/lib/util/index.js +1 -1
- package/lib/util/index.js.map +1 -1
- package/lib/util/referenceCounting.d.ts.map +1 -1
- package/lib/util/referenceCounting.js +1 -0
- package/lib/util/referenceCounting.js.map +1 -1
- package/package.json +26 -26
- package/src/api.ts +2 -2
- package/src/codec/codec.ts +17 -3
- package/src/codec/discriminatedUnions.ts +1 -1
- package/src/core/index.ts +1 -2
- package/src/core/schema-stored/index.ts +1 -2
- package/src/core/schema-stored/schema.ts +10 -7
- package/src/core/tree/detachedFieldIndexCodecCommon.ts +2 -1
- package/src/core/tree/detachedFieldIndexCodecV1.ts +4 -2
- package/src/core/tree/detachedFieldIndexCodecV2.ts +4 -6
- package/src/core/tree/detachedFieldIndexCodecs.ts +33 -11
- package/src/core/tree/detachedFieldIndexFormatCommon.ts +17 -2
- package/src/core/tree/detachedFieldIndexFormatV1.ts +6 -4
- package/src/core/tree/detachedFieldIndexFormatV2.ts +6 -4
- package/src/core/tree/index.ts +2 -4
- package/src/external-utilities/typeboxValidator.ts +1 -1
- package/src/feature-libraries/chunked-forest/codec/codecs.ts +18 -13
- package/src/feature-libraries/chunked-forest/codec/compressedEncode.ts +2 -2
- package/src/feature-libraries/chunked-forest/codec/format.ts +15 -4
- package/src/feature-libraries/chunked-forest/codec/index.ts +4 -2
- package/src/feature-libraries/chunked-forest/codec/uncompressedEncode.ts +2 -2
- package/src/feature-libraries/chunked-forest/index.ts +0 -1
- package/src/feature-libraries/default-schema/defaultFieldKinds.ts +2 -29
- package/src/feature-libraries/forest-summary/codec.ts +24 -9
- package/src/feature-libraries/forest-summary/forestSummarizer.ts +1 -1
- package/src/feature-libraries/forest-summary/format.ts +12 -2
- package/src/feature-libraries/forest-summary/index.ts +2 -1
- package/src/feature-libraries/index.ts +1 -2
- package/src/feature-libraries/schema-edits/index.ts +0 -1
- package/src/feature-libraries/schema-edits/schemaChangeCodecs.ts +16 -16
- package/src/feature-libraries/schema-index/codec.ts +34 -22
- package/src/feature-libraries/schema-index/formatV1.ts +2 -2
- package/src/feature-libraries/schema-index/formatV2.ts +2 -2
- package/src/feature-libraries/schema-index/schemaSummarizer.ts +2 -1
- package/src/index.ts +6 -1
- package/src/packageVersion.ts +1 -1
- package/src/shared-tree/independentView.ts +161 -75
- package/src/shared-tree/index.ts +4 -0
- package/src/shared-tree/sharedTree.ts +137 -175
- package/src/shared-tree/sharedTreeChangeCodecs.ts +15 -9
- package/src/shared-tree/sharedTreeChangeFamily.ts +2 -2
- package/src/shared-tree/treeAlpha.ts +6 -5
- package/src/shared-tree/treeCheckout.ts +1 -3
- package/src/shared-tree-core/editManagerCodecs.ts +56 -19
- package/src/shared-tree-core/editManagerFormatCommons.ts +47 -0
- package/src/shared-tree-core/editManagerFormatV1toV4.ts +10 -5
- package/src/shared-tree-core/editManagerFormatV5.ts +3 -3
- package/src/shared-tree-core/index.ts +11 -5
- package/src/shared-tree-core/messageCodecV1ToV4.ts +6 -1
- package/src/shared-tree-core/messageCodecV5.ts +2 -1
- package/src/shared-tree-core/messageCodecs.ts +60 -26
- package/src/shared-tree-core/messageFormat.ts +56 -0
- package/src/shared-tree-core/sharedTreeCore.ts +11 -13
- package/src/simple-tree/api/discrepancies.ts +2 -2
- package/src/simple-tree/api/incrementalAllowedTypes.ts +1 -1
- package/src/simple-tree/api/index.ts +6 -2
- package/src/simple-tree/api/schemaFactory.ts +2 -2
- package/src/simple-tree/api/schemaFactoryAlpha.ts +2 -168
- package/src/simple-tree/api/schemaFactoryBeta.ts +180 -14
- package/src/simple-tree/api/schemaFactoryRecursive.ts +2 -0
- package/src/simple-tree/api/schemaFromSimple.ts +23 -17
- package/src/simple-tree/api/simpleSchemaCodec.ts +360 -0
- package/src/simple-tree/api/simpleSchemaToJsonSchema.ts +8 -2
- package/src/simple-tree/api/storedSchema.ts +8 -5
- package/src/simple-tree/api/tree.ts +2 -2
- package/src/simple-tree/api/typesUnsafe.ts +6 -6
- package/src/simple-tree/api/viewSchemaToSimpleSchema.ts +76 -7
- package/src/simple-tree/core/allowedTypes.ts +29 -16
- package/src/simple-tree/core/treeNode.ts +2 -2
- package/src/simple-tree/fieldSchema.ts +14 -1
- package/src/simple-tree/index.ts +6 -1
- package/src/simple-tree/node-kinds/array/arrayNode.ts +11 -2
- package/src/simple-tree/node-kinds/map/mapNode.ts +11 -2
- package/src/simple-tree/node-kinds/object/objectNode.ts +57 -21
- package/src/simple-tree/node-kinds/record/recordNode.ts +12 -3
- package/src/simple-tree/node-kinds/record/recordNodeTypes.ts +16 -0
- package/src/simple-tree/simpleSchema.ts +32 -6
- package/src/simple-tree/simpleSchemaFormatV1.ts +179 -0
- package/src/simple-tree/toStoredSchema.ts +12 -3
- package/src/tableSchema.ts +5 -2
- package/src/treeFactory.ts +33 -1
- package/src/util/brand.ts +40 -2
- package/src/util/brandedMap.ts +3 -1
- package/src/util/index.ts +1 -0
- package/src/util/referenceCounting.ts +1 -0
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import { UsageError } from "@fluidframework/telemetry-utils/internal";
|
|
7
|
-
import {
|
|
7
|
+
import { Lazy } from "@fluidframework/core-utils/internal";
|
|
8
8
|
|
|
9
9
|
import {
|
|
10
10
|
type ErasedBaseType,
|
|
@@ -25,6 +25,7 @@ import {
|
|
|
25
25
|
type TreeNodeSchema,
|
|
26
26
|
} from "./treeNodeSchema.js";
|
|
27
27
|
import { schemaAsTreeNodeValid } from "./treeNodeValid.js";
|
|
28
|
+
import type { SimpleAllowedTypeAttributes } from "../simpleSchema.js";
|
|
28
29
|
|
|
29
30
|
/**
|
|
30
31
|
* Schema for types allowed in some location in a tree (like a field, map entry or array).
|
|
@@ -56,7 +57,7 @@ export type AllowedTypes = readonly LazyItem<TreeNodeSchema>[];
|
|
|
56
57
|
/**
|
|
57
58
|
* Stores annotations for an individual allowed type.
|
|
58
59
|
* @remarks
|
|
59
|
-
* Create using APIs on {@link
|
|
60
|
+
* Create using APIs on {@link SchemaStaticsBeta}, like {@link SchemaStaticsBeta.staged}.
|
|
60
61
|
* @privateRemarks
|
|
61
62
|
* Since this is sealed, users are not supposed to create instances of it directly.
|
|
62
63
|
* Making it extend ErasedType could enforce that.
|
|
@@ -252,6 +253,21 @@ export class AnnotatedAllowedTypesInternal<
|
|
|
252
253
|
return this.lazyEvaluate.value.identifiers;
|
|
253
254
|
}
|
|
254
255
|
|
|
256
|
+
/**
|
|
257
|
+
* Get the {@link SimpleAllowedTypeAttributes} version of the allowed types set.
|
|
258
|
+
*/
|
|
259
|
+
public static evaluateSimpleAllowedTypes(
|
|
260
|
+
annotatedAllowedTypes: AnnotatedAllowedTypes,
|
|
261
|
+
): ReadonlyMap<string, SimpleAllowedTypeAttributes> {
|
|
262
|
+
const simpleAllowedTypes = new Map<string, SimpleAllowedTypeAttributes>();
|
|
263
|
+
for (const type of annotatedAllowedTypes.evaluate().types) {
|
|
264
|
+
simpleAllowedTypes.set(type.type.identifier, {
|
|
265
|
+
isStaged: type.metadata.stagedSchemaUpgrade !== undefined,
|
|
266
|
+
});
|
|
267
|
+
}
|
|
268
|
+
return simpleAllowedTypes;
|
|
269
|
+
}
|
|
270
|
+
|
|
255
271
|
public static override [Symbol.hasInstance]<TThis extends { prototype: object }>(
|
|
256
272
|
this: TThis,
|
|
257
273
|
value: unknown,
|
|
@@ -332,7 +348,7 @@ export class AnnotatedAllowedTypesInternal<
|
|
|
332
348
|
public static create<const T extends readonly AnnotatedAllowedType[]>(
|
|
333
349
|
types: T,
|
|
334
350
|
metadata: AllowedTypesMetadata = {},
|
|
335
|
-
): AnnotatedAllowedTypesInternal<T
|
|
351
|
+
): AnnotatedAllowedTypesInternal<Readonly<T>> & AllowedTypesFull<Readonly<T>> {
|
|
336
352
|
const result = new AnnotatedAllowedTypesInternal(types, metadata);
|
|
337
353
|
return result as typeof result & UnannotateAllowedTypesList<T>;
|
|
338
354
|
}
|
|
@@ -340,7 +356,8 @@ export class AnnotatedAllowedTypesInternal<
|
|
|
340
356
|
public static createUnannotated<const T extends AllowedTypes>(
|
|
341
357
|
types: T,
|
|
342
358
|
metadata: AllowedTypesMetadata = {},
|
|
343
|
-
): AnnotatedAllowedTypesInternal & T {
|
|
359
|
+
): AnnotatedAllowedTypesInternal & Readonly<T> {
|
|
360
|
+
Object.freeze(types);
|
|
344
361
|
const annotatedTypes: AnnotatedAllowedType[] = types.map(normalizeToAnnotatedAllowedType);
|
|
345
362
|
const result = AnnotatedAllowedTypesInternal.create(annotatedTypes, metadata);
|
|
346
363
|
return result as typeof result & T;
|
|
@@ -349,6 +366,7 @@ export class AnnotatedAllowedTypesInternal<
|
|
|
349
366
|
public static createMixed<
|
|
350
367
|
const T extends readonly (AnnotatedAllowedType | LazyItem<TreeNodeSchema>)[],
|
|
351
368
|
>(types: T, metadata: AllowedTypesMetadata = {}): AllowedTypesFullFromMixed<T> {
|
|
369
|
+
Object.freeze(types);
|
|
352
370
|
const annotatedTypes: AnnotatedAllowedType[] = types.map(normalizeToAnnotatedAllowedType);
|
|
353
371
|
const result = AnnotatedAllowedTypesInternal.create(annotatedTypes, metadata);
|
|
354
372
|
return result as AllowedTypesFullFromMixed<T>;
|
|
@@ -394,7 +412,7 @@ export interface AllowedTypeMetadata {
|
|
|
394
412
|
readonly custom?: unknown;
|
|
395
413
|
|
|
396
414
|
/**
|
|
397
|
-
* If defined, indicates that an allowed type is {@link
|
|
415
|
+
* If defined, indicates that an allowed type is {@link SchemaStaticsBeta.staged | staged}.
|
|
398
416
|
*/
|
|
399
417
|
readonly stagedSchemaUpgrade?: SchemaUpgrade;
|
|
400
418
|
}
|
|
@@ -407,7 +425,7 @@ export let createSchemaUpgrade: () => SchemaUpgrade;
|
|
|
407
425
|
/**
|
|
408
426
|
* Unique token used to upgrade schemas and determine if a particular upgrade has been completed.
|
|
409
427
|
* @remarks
|
|
410
|
-
* Create using {@link
|
|
428
|
+
* Create using {@link SchemaStaticsBeta.staged}.
|
|
411
429
|
* @privateRemarks
|
|
412
430
|
* TODO:#38722 implement runtime schema upgrades.
|
|
413
431
|
* Until then, the class purely behaves mostly as a placeholder.
|
|
@@ -524,14 +542,9 @@ export function normalizeAllowedTypesInternal(
|
|
|
524
542
|
// Adding this cache improved the performance of the "large recursive union" test (which mostly just constructs a TreeConfiguration) by ~5 times.
|
|
525
543
|
// This cache is strictly a performance optimization: it is not required for correctness.
|
|
526
544
|
return getOrCreate(cachedNormalize, type, () => {
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
!("types" in type && "metadata" in type),
|
|
531
|
-
0xc7d /* invalid AnnotatedAllowedTypes */,
|
|
532
|
-
);
|
|
533
|
-
|
|
534
|
-
const annotatedTypes: AnnotatedAllowedType[] = (isReadonlyArray(type) ? type : [type]).map(
|
|
545
|
+
const inputArray = isReadonlyArray(type) ? type : [type];
|
|
546
|
+
Object.freeze(inputArray);
|
|
547
|
+
const annotatedTypes: AnnotatedAllowedType[] = inputArray.map(
|
|
535
548
|
normalizeToAnnotatedAllowedType,
|
|
536
549
|
);
|
|
537
550
|
|
|
@@ -637,8 +650,8 @@ export type TreeNodeFromImplicitAllowedTypes<
|
|
|
637
650
|
* This type exists only to be linked from documentation to provide a single linkable place to document some details of
|
|
638
651
|
* "Input" types and how they handle schema.
|
|
639
652
|
*
|
|
640
|
-
* When a schema is used to describe data which is an input into an API, the API is
|
|
641
|
-
* (See also
|
|
653
|
+
* When a schema is used to describe data which is an input into an API, the API is {@link https://en.wikipedia.org/wiki/Type_variance | contravariant}) over the schema.
|
|
654
|
+
* (See also {@link https://www.typescriptlang.org/docs/handbook/2/generics.html#variance-annotations | TypeScript Variance Annotations}).
|
|
642
655
|
*
|
|
643
656
|
* Since these schema are expressed using TypeScript types, it is possible for the user of the API to provide non-exact values of these types which has implications that depended on the variance.
|
|
644
657
|
*
|
|
@@ -8,7 +8,7 @@ import { UsageError } from "@fluidframework/telemetry-utils/internal";
|
|
|
8
8
|
|
|
9
9
|
import { tryGetTreeNodeSchema } from "./treeNodeKernel.js";
|
|
10
10
|
import { NodeKind, type TreeNodeSchemaClass } from "./treeNodeSchema.js";
|
|
11
|
-
// eslint-disable-next-line import/no-deprecated
|
|
11
|
+
// eslint-disable-next-line import-x/no-deprecated
|
|
12
12
|
import { type WithType, typeNameSymbol, type typeSchemaSymbol } from "./withType.js";
|
|
13
13
|
import { markEager } from "./flexList.js";
|
|
14
14
|
|
|
@@ -80,7 +80,7 @@ export abstract class TreeNode implements WithType {
|
|
|
80
80
|
* Subclasses provide more specific strings for this to get strong typing of otherwise type compatible nodes.
|
|
81
81
|
* @deprecated Use {@link typeSchemaSymbol} instead.
|
|
82
82
|
*/
|
|
83
|
-
// eslint-disable-next-line import/no-deprecated
|
|
83
|
+
// eslint-disable-next-line import-x/no-deprecated
|
|
84
84
|
public abstract get [typeNameSymbol](): string;
|
|
85
85
|
|
|
86
86
|
/**
|
|
@@ -31,7 +31,7 @@ import type {
|
|
|
31
31
|
} from "./core/index.js";
|
|
32
32
|
import { normalizeAllowedTypes } from "./core/index.js";
|
|
33
33
|
|
|
34
|
-
import type { SimpleFieldSchema } from "./simpleSchema.js";
|
|
34
|
+
import type { SimpleAllowedTypeAttributes, SimpleFieldSchema } from "./simpleSchema.js";
|
|
35
35
|
import type { UnsafeUnknownSchema } from "./unsafeUnknownSchema.js";
|
|
36
36
|
import type { InsertableContent } from "./unhydratedFlexTreeFromInsertable.js";
|
|
37
37
|
|
|
@@ -412,6 +412,19 @@ export class FieldSchemaAlpha<
|
|
|
412
412
|
return this.allowedTypesFull.evaluateIdentifiers();
|
|
413
413
|
}
|
|
414
414
|
|
|
415
|
+
public get simpleAllowedTypes(): ReadonlyMap<string, SimpleAllowedTypeAttributes> {
|
|
416
|
+
const types = this.allowedTypesFull.evaluate().types;
|
|
417
|
+
const info = new Map<string, SimpleAllowedTypeAttributes>();
|
|
418
|
+
|
|
419
|
+
for (const type of types) {
|
|
420
|
+
info.set(type.type.identifier, {
|
|
421
|
+
isStaged: type.metadata.stagedSchemaUpgrade !== undefined,
|
|
422
|
+
});
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
return info;
|
|
426
|
+
}
|
|
427
|
+
|
|
415
428
|
protected constructor(
|
|
416
429
|
kind: Kind,
|
|
417
430
|
types: Types,
|
package/src/simple-tree/index.ts
CHANGED
|
@@ -74,6 +74,7 @@ export {
|
|
|
74
74
|
type ITreeConfigurationOptions,
|
|
75
75
|
SchemaFactory,
|
|
76
76
|
SchemaFactoryBeta,
|
|
77
|
+
type SchemaStaticsBeta,
|
|
77
78
|
SchemaFactoryAlpha,
|
|
78
79
|
type ObjectSchemaOptionsAlpha,
|
|
79
80
|
type ObjectSchemaOptions,
|
|
@@ -180,7 +181,6 @@ export {
|
|
|
180
181
|
type TreeChangeEvents,
|
|
181
182
|
type NodeSchemaOptions,
|
|
182
183
|
type NodeSchemaOptionsAlpha,
|
|
183
|
-
type SchemaStaticsAlpha,
|
|
184
184
|
KeyEncodingOptions,
|
|
185
185
|
type TreeParsingOptions,
|
|
186
186
|
incrementalSummaryHint,
|
|
@@ -198,6 +198,7 @@ export type {
|
|
|
198
198
|
SimpleNodeSchemaBaseAlpha,
|
|
199
199
|
SimpleObjectFieldSchema,
|
|
200
200
|
SimpleRecordNodeSchema,
|
|
201
|
+
SimpleAllowedTypeAttributes,
|
|
201
202
|
} from "./simpleSchema.js";
|
|
202
203
|
export {
|
|
203
204
|
type ImplicitFieldSchema,
|
|
@@ -279,3 +280,7 @@ export {
|
|
|
279
280
|
nullSchema,
|
|
280
281
|
} from "./leafNodeSchema.js";
|
|
281
282
|
export type { LeafSchema } from "./leafNodeSchema.js";
|
|
283
|
+
export {
|
|
284
|
+
encodeSimpleSchema,
|
|
285
|
+
decodeSimpleSchema,
|
|
286
|
+
} from "./api/index.js";
|
|
@@ -16,7 +16,7 @@ import { FieldKinds, isTreeValue } from "../../../feature-libraries/index.js";
|
|
|
16
16
|
import {
|
|
17
17
|
CompatibilityLevel,
|
|
18
18
|
type WithType,
|
|
19
|
-
// eslint-disable-next-line import/no-deprecated
|
|
19
|
+
// eslint-disable-next-line import-x/no-deprecated
|
|
20
20
|
typeNameSymbol,
|
|
21
21
|
NodeKind,
|
|
22
22
|
type TreeNode,
|
|
@@ -47,6 +47,7 @@ import {
|
|
|
47
47
|
type TreeNodeSchemaPrivateData,
|
|
48
48
|
convertAllowedTypes,
|
|
49
49
|
withBufferedTreeEvents,
|
|
50
|
+
AnnotatedAllowedTypesInternal,
|
|
50
51
|
} from "../../core/index.js";
|
|
51
52
|
import {
|
|
52
53
|
type FactoryContent,
|
|
@@ -68,6 +69,7 @@ import type {
|
|
|
68
69
|
import { brand, type JsonCompatibleReadOnlyObject } from "../../../util/index.js";
|
|
69
70
|
import { nullSchema } from "../../leafNodeSchema.js";
|
|
70
71
|
import { arrayNodeStoredSchema } from "../../toStoredSchema.js";
|
|
72
|
+
import type { SimpleAllowedTypeAttributes } from "../../simpleSchema.js";
|
|
71
73
|
|
|
72
74
|
/**
|
|
73
75
|
* A covariant base type for {@link (TreeArrayNode:interface)}.
|
|
@@ -1168,6 +1170,9 @@ export function arraySchema<
|
|
|
1168
1170
|
const lazyAllowedTypesIdentifiers = new Lazy(
|
|
1169
1171
|
() => new Set(normalizedTypes.evaluate().map((type) => type.identifier)),
|
|
1170
1172
|
);
|
|
1173
|
+
const lazySimpleAllowedTypes = new Lazy(() => {
|
|
1174
|
+
return AnnotatedAllowedTypesInternal.evaluateSimpleAllowedTypes(normalizedTypes);
|
|
1175
|
+
});
|
|
1171
1176
|
|
|
1172
1177
|
let privateData: TreeNodeSchemaPrivateData | undefined;
|
|
1173
1178
|
|
|
@@ -1206,6 +1211,10 @@ export function arraySchema<
|
|
|
1206
1211
|
return lazyAllowedTypesIdentifiers.value;
|
|
1207
1212
|
}
|
|
1208
1213
|
|
|
1214
|
+
public static get simpleAllowedTypes(): ReadonlyMap<string, SimpleAllowedTypeAttributes> {
|
|
1215
|
+
return lazySimpleAllowedTypes.value;
|
|
1216
|
+
}
|
|
1217
|
+
|
|
1209
1218
|
protected static override constructorCached: MostDerivedData | undefined = undefined;
|
|
1210
1219
|
|
|
1211
1220
|
protected static override oneTimeSetup(): TreeNodeSchemaInitializedData {
|
|
@@ -1257,7 +1266,7 @@ export function arraySchema<
|
|
|
1257
1266
|
public static readonly persistedMetadata: JsonCompatibleReadOnlyObject | undefined =
|
|
1258
1267
|
persistedMetadata;
|
|
1259
1268
|
|
|
1260
|
-
// eslint-disable-next-line import/no-deprecated
|
|
1269
|
+
// eslint-disable-next-line import-x/no-deprecated
|
|
1261
1270
|
public get [typeNameSymbol](): TName {
|
|
1262
1271
|
return identifier;
|
|
1263
1272
|
}
|
|
@@ -22,7 +22,7 @@ import {
|
|
|
22
22
|
type InnerNode,
|
|
23
23
|
NodeKind,
|
|
24
24
|
type TreeNodeSchema,
|
|
25
|
-
// eslint-disable-next-line import/no-deprecated
|
|
25
|
+
// eslint-disable-next-line import-x/no-deprecated
|
|
26
26
|
typeNameSymbol,
|
|
27
27
|
type TreeNode,
|
|
28
28
|
typeSchemaSymbol,
|
|
@@ -43,6 +43,7 @@ import {
|
|
|
43
43
|
type FlexContent,
|
|
44
44
|
type TreeNodeSchemaPrivateData,
|
|
45
45
|
convertAllowedTypes,
|
|
46
|
+
AnnotatedAllowedTypesInternal,
|
|
46
47
|
} from "../../core/index.js";
|
|
47
48
|
import {
|
|
48
49
|
unhydratedFlexTreeFromInsertable,
|
|
@@ -66,6 +67,7 @@ import type {
|
|
|
66
67
|
import { recordLikeDataToFlexContent } from "../common.js";
|
|
67
68
|
import { MapNodeStoredSchema } from "../../../core/index.js";
|
|
68
69
|
import type { NodeSchemaOptionsAlpha } from "../../api/index.js";
|
|
70
|
+
import type { SimpleAllowedTypeAttributes } from "../../simpleSchema.js";
|
|
69
71
|
|
|
70
72
|
/**
|
|
71
73
|
* A map of string keys to tree objects.
|
|
@@ -275,6 +277,9 @@ export function mapSchema<
|
|
|
275
277
|
const lazyAllowedTypesIdentifiers = new Lazy(
|
|
276
278
|
() => new Set(normalizedTypes.evaluate().map((type) => type.identifier)),
|
|
277
279
|
);
|
|
280
|
+
const lazySimpleAllowedTypes = new Lazy(() => {
|
|
281
|
+
return AnnotatedAllowedTypesInternal.evaluateSimpleAllowedTypes(normalizedTypes);
|
|
282
|
+
});
|
|
278
283
|
|
|
279
284
|
let privateData: TreeNodeSchemaPrivateData | undefined;
|
|
280
285
|
const persistedMetadata = nodeOptions.persistedMetadata;
|
|
@@ -303,6 +308,10 @@ export function mapSchema<
|
|
|
303
308
|
return lazyAllowedTypesIdentifiers.value;
|
|
304
309
|
}
|
|
305
310
|
|
|
311
|
+
public static get simpleAllowedTypes(): ReadonlyMap<string, SimpleAllowedTypeAttributes> {
|
|
312
|
+
return lazySimpleAllowedTypes.value;
|
|
313
|
+
}
|
|
314
|
+
|
|
306
315
|
protected static override constructorCached: MostDerivedData | undefined = undefined;
|
|
307
316
|
|
|
308
317
|
protected static override oneTimeSetup(): TreeNodeSchemaInitializedData {
|
|
@@ -325,7 +334,7 @@ export function mapSchema<
|
|
|
325
334
|
public static readonly persistedMetadata: JsonCompatibleReadOnlyObject | undefined =
|
|
326
335
|
persistedMetadata;
|
|
327
336
|
|
|
328
|
-
// eslint-disable-next-line import/no-deprecated
|
|
337
|
+
// eslint-disable-next-line import-x/no-deprecated
|
|
329
338
|
public get [typeNameSymbol](): TName {
|
|
330
339
|
return identifier;
|
|
331
340
|
}
|
|
@@ -32,7 +32,7 @@ import {
|
|
|
32
32
|
type TreeNodeSchema,
|
|
33
33
|
NodeKind,
|
|
34
34
|
type WithType,
|
|
35
|
-
// eslint-disable-next-line import/no-deprecated
|
|
35
|
+
// eslint-disable-next-line import-x/no-deprecated
|
|
36
36
|
typeNameSymbol,
|
|
37
37
|
typeSchemaSymbol,
|
|
38
38
|
type InternalTreeNode,
|
|
@@ -118,6 +118,23 @@ export type ObjectFromSchemaRecord<T extends RestrictiveStringRecord<ImplicitFie
|
|
|
118
118
|
* No other own `own` or `enumerable` properties are included on object nodes unless the user of the node manually adds custom session only state.
|
|
119
119
|
* This allows a majority of general purpose JavaScript object processing operations (like `for...in`, `Reflect.ownKeys()` and `Object.entries()`) to enumerate all the children.
|
|
120
120
|
*
|
|
121
|
+
* Field Assignment and Deletion
|
|
122
|
+
* Assigning to a field updates the tree value as long as it is still valid based on the schema.
|
|
123
|
+
* - For required fields, assigning `undefined` is invalid, and will throw.
|
|
124
|
+
* - For optional fields, assigning `undefined` removes the field's contents, and marks it as empty (non-enumerable and value set to undefined).
|
|
125
|
+
*
|
|
126
|
+
* Example:
|
|
127
|
+
* ```ts
|
|
128
|
+
* const Foo = schemaFactory.object("Foo", {bar: schemaFactory.optional(schemaFactory.number)});
|
|
129
|
+
* const node = new Foo({bar: 1})
|
|
130
|
+
*
|
|
131
|
+
* // This clears the field, is non-enumerable, and value is undefined.
|
|
132
|
+
* delete node.bar;
|
|
133
|
+
*
|
|
134
|
+
* // This is equivalent to the delete example.
|
|
135
|
+
* node.bar = undefined
|
|
136
|
+
* ```
|
|
137
|
+
*
|
|
121
138
|
* The API for fields is defined by {@link ObjectFromSchemaRecord}.
|
|
122
139
|
* @public
|
|
123
140
|
*/
|
|
@@ -258,7 +275,7 @@ function createProxyHandler(
|
|
|
258
275
|
if (propertyKey === typeSchemaSymbol) {
|
|
259
276
|
return schema;
|
|
260
277
|
}
|
|
261
|
-
// eslint-disable-next-line import/no-deprecated
|
|
278
|
+
// eslint-disable-next-line import-x/no-deprecated
|
|
262
279
|
if (propertyKey === typeNameSymbol) {
|
|
263
280
|
return schema.identifier;
|
|
264
281
|
}
|
|
@@ -275,27 +292,17 @@ function createProxyHandler(
|
|
|
275
292
|
: false;
|
|
276
293
|
}
|
|
277
294
|
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
const innerSchema = innerNode.context.schema.nodeSchema.get(brand(schema.identifier));
|
|
281
|
-
assert(
|
|
282
|
-
innerSchema instanceof ObjectNodeStoredSchema,
|
|
283
|
-
0xc18 /* Expected ObjectNodeStoredSchema */,
|
|
284
|
-
);
|
|
285
|
-
|
|
286
|
-
setField(
|
|
287
|
-
innerNode.getBoxed(fieldInfo.storedKey),
|
|
288
|
-
fieldInfo.schema,
|
|
289
|
-
value,
|
|
290
|
-
innerSchema.getFieldSchema(fieldInfo.storedKey),
|
|
291
|
-
);
|
|
295
|
+
applyFieldChange(schema, { kind: "proxy", node: proxy }, fieldInfo, value);
|
|
292
296
|
return true;
|
|
293
297
|
},
|
|
294
298
|
deleteProperty(target, propertyKey): boolean {
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
+
const fieldInfo = schema.flexKeyMap.get(propertyKey);
|
|
300
|
+
if (fieldInfo === undefined) {
|
|
301
|
+
return allowAdditionalProperties ? Reflect.deleteProperty(target, propertyKey) : false;
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
applyFieldChange(schema, { kind: "target", node: target }, fieldInfo, undefined);
|
|
305
|
+
return true;
|
|
299
306
|
},
|
|
300
307
|
has: (target, propertyKey) => {
|
|
301
308
|
return (
|
|
@@ -566,7 +573,7 @@ export function objectSchema<
|
|
|
566
573
|
public static readonly persistedMetadata: JsonCompatibleReadOnlyObject | undefined =
|
|
567
574
|
nodeOptions.persistedMetadata;
|
|
568
575
|
|
|
569
|
-
// eslint-disable-next-line import/no-deprecated
|
|
576
|
+
// eslint-disable-next-line import-x/no-deprecated
|
|
570
577
|
public get [typeNameSymbol](): TName {
|
|
571
578
|
return identifier;
|
|
572
579
|
}
|
|
@@ -750,3 +757,32 @@ function getFieldProperty(
|
|
|
750
757
|
}
|
|
751
758
|
return undefined;
|
|
752
759
|
}
|
|
760
|
+
|
|
761
|
+
function applyFieldChange(
|
|
762
|
+
schema: ObjectNodeSchemaPrivate,
|
|
763
|
+
from: { kind: "proxy"; node: TreeNode } | { kind: "target"; node: object },
|
|
764
|
+
fieldInfo: { storedKey: FieldKey; schema: FieldSchema },
|
|
765
|
+
value: InsertableContent | undefined,
|
|
766
|
+
): void {
|
|
767
|
+
const proxy =
|
|
768
|
+
from.kind === "proxy"
|
|
769
|
+
? from.node
|
|
770
|
+
: (targetToProxy.get(from.node) ?? fail(0xc95 /* missing proxy */));
|
|
771
|
+
const inner = getInnerNode(proxy);
|
|
772
|
+
const storedSchema = inner.context.schema.nodeSchema.get(brand(schema.identifier));
|
|
773
|
+
assert(
|
|
774
|
+
storedSchema instanceof ObjectNodeStoredSchema,
|
|
775
|
+
0xc96 /* Expected ObjectNodeStoredSchema */,
|
|
776
|
+
);
|
|
777
|
+
|
|
778
|
+
if (value === undefined && inner.tryGetField(fieldInfo.storedKey) === undefined) {
|
|
779
|
+
return;
|
|
780
|
+
}
|
|
781
|
+
|
|
782
|
+
setField(
|
|
783
|
+
inner.getBoxed(fieldInfo.storedKey),
|
|
784
|
+
fieldInfo.schema,
|
|
785
|
+
value,
|
|
786
|
+
storedSchema.getFieldSchema(fieldInfo.storedKey),
|
|
787
|
+
);
|
|
788
|
+
}
|
|
@@ -11,7 +11,7 @@ import { type JsonCompatibleReadOnlyObject, brand } from "../../../util/index.js
|
|
|
11
11
|
import {
|
|
12
12
|
type TreeNodeSchema,
|
|
13
13
|
NodeKind,
|
|
14
|
-
// eslint-disable-next-line import/no-deprecated
|
|
14
|
+
// eslint-disable-next-line import-x/no-deprecated
|
|
15
15
|
typeNameSymbol,
|
|
16
16
|
typeSchemaSymbol,
|
|
17
17
|
type UnhydratedFlexTreeNode,
|
|
@@ -32,6 +32,7 @@ import {
|
|
|
32
32
|
CompatibilityLevel,
|
|
33
33
|
type TreeNodeSchemaPrivateData,
|
|
34
34
|
convertAllowedTypes,
|
|
35
|
+
AnnotatedAllowedTypesInternal,
|
|
35
36
|
} from "../../core/index.js";
|
|
36
37
|
import { getTreeNodeSchemaInitializedData } from "../../createContext.js";
|
|
37
38
|
import { tryGetTreeNodeForField } from "../../getTreeNodeForField.js";
|
|
@@ -58,6 +59,7 @@ import { prepareForInsertion } from "../../prepareForInsertion.js";
|
|
|
58
59
|
import { recordLikeDataToFlexContent } from "../common.js";
|
|
59
60
|
import { MapNodeStoredSchema } from "../../../core/index.js";
|
|
60
61
|
import type { NodeSchemaOptionsAlpha } from "../../api/index.js";
|
|
62
|
+
import type { SimpleAllowedTypeAttributes } from "../../simpleSchema.js";
|
|
61
63
|
|
|
62
64
|
/**
|
|
63
65
|
* Create a proxy which implements the {@link TreeRecordNode} API.
|
|
@@ -78,7 +80,7 @@ function createRecordNodeProxy(
|
|
|
78
80
|
case typeSchemaSymbol: {
|
|
79
81
|
return schema;
|
|
80
82
|
}
|
|
81
|
-
// eslint-disable-next-line import/no-deprecated
|
|
83
|
+
// eslint-disable-next-line import-x/no-deprecated
|
|
82
84
|
case typeNameSymbol: {
|
|
83
85
|
return schema.identifier;
|
|
84
86
|
}
|
|
@@ -258,6 +260,9 @@ export function recordSchema<
|
|
|
258
260
|
const lazyAllowedTypesIdentifiers = new Lazy(
|
|
259
261
|
() => new Set(normalizedTypes.evaluate().map((type) => type.identifier)),
|
|
260
262
|
);
|
|
263
|
+
const lazySimpleAllowedTypes = new Lazy(() => {
|
|
264
|
+
return AnnotatedAllowedTypesInternal.evaluateSimpleAllowedTypes(normalizedTypes);
|
|
265
|
+
});
|
|
261
266
|
|
|
262
267
|
let privateData: TreeNodeSchemaPrivateData | undefined;
|
|
263
268
|
|
|
@@ -347,6 +352,10 @@ export function recordSchema<
|
|
|
347
352
|
return lazyAllowedTypesIdentifiers.value;
|
|
348
353
|
}
|
|
349
354
|
|
|
355
|
+
public static get simpleAllowedTypes(): ReadonlyMap<string, SimpleAllowedTypeAttributes> {
|
|
356
|
+
return lazySimpleAllowedTypes.value;
|
|
357
|
+
}
|
|
358
|
+
|
|
350
359
|
protected static override constructorCached: MostDerivedData | undefined = undefined;
|
|
351
360
|
|
|
352
361
|
public static readonly identifier = identifier;
|
|
@@ -361,7 +370,7 @@ export function recordSchema<
|
|
|
361
370
|
public static readonly persistedMetadata: JsonCompatibleReadOnlyObject | undefined =
|
|
362
371
|
persistedMetadata;
|
|
363
372
|
|
|
364
|
-
// eslint-disable-next-line import/no-deprecated
|
|
373
|
+
// eslint-disable-next-line import-x/no-deprecated
|
|
365
374
|
public get [typeNameSymbol](): TName {
|
|
366
375
|
return identifier;
|
|
367
376
|
}
|
|
@@ -26,6 +26,22 @@ import type { RestrictiveStringRecord } from "../../../util/index.js";
|
|
|
26
26
|
* Therefore code assigning to these fields must explicitly construct nodes using the schema's constructor or create method,
|
|
27
27
|
* or using some other method like {@link (TreeAlpha:interface).create}.
|
|
28
28
|
*
|
|
29
|
+
* Field Assignment and Deletion
|
|
30
|
+
*
|
|
31
|
+
* Unlike JavaScript's `Record` type, assigning `undefined` to a key in {@link TreeRecordNode} behaves like a `delete` operation,
|
|
32
|
+
* removing the field's contents.
|
|
33
|
+
*
|
|
34
|
+
* This is to stay consistent with {@link TreeObjectNode} behavior.
|
|
35
|
+
*
|
|
36
|
+
* Example:
|
|
37
|
+
* ```ts
|
|
38
|
+
* const Numbers = schemaFactory.record("Numbers", schemaFactory.number);
|
|
39
|
+
* const record = new Numbers({ a:1, b:2 });
|
|
40
|
+
*
|
|
41
|
+
* // This is equivalent to delete record.a, and removes the entry.
|
|
42
|
+
* record.a = undefined
|
|
43
|
+
* ```
|
|
44
|
+
*
|
|
29
45
|
* @beta
|
|
30
46
|
*/
|
|
31
47
|
export interface TreeRecordNode<
|
|
@@ -58,6 +58,15 @@ export interface SimpleObjectNodeSchema<out TCustomMetadata = unknown>
|
|
|
58
58
|
* especially if/when TreeNodeSchema for objects provide more maps.
|
|
59
59
|
*/
|
|
60
60
|
readonly fields: ReadonlyMap<string, SimpleObjectFieldSchema>;
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Whether the object node allows unknown optional fields.
|
|
64
|
+
*
|
|
65
|
+
* @see {@link ObjectSchemaOptions.allowUnknownOptionalFields} for the API where this field is set as part of authoring a schema.
|
|
66
|
+
*
|
|
67
|
+
* @remarks Only populated for view schemas, undefined otherwise. Relevant for compatibility checking scenarios.
|
|
68
|
+
*/
|
|
69
|
+
readonly allowUnknownOptionalFields: boolean | undefined;
|
|
61
70
|
}
|
|
62
71
|
|
|
63
72
|
/**
|
|
@@ -91,7 +100,7 @@ export interface SimpleArrayNodeSchema<out TCustomMetadata = unknown>
|
|
|
91
100
|
* @remarks Refers to the types by identifier.
|
|
92
101
|
* A {@link SimpleTreeSchema} is needed to resolve these identifiers to their schema {@link SimpleTreeSchema.definitions}.
|
|
93
102
|
*/
|
|
94
|
-
readonly
|
|
103
|
+
readonly simpleAllowedTypes: ReadonlyMap<string, SimpleAllowedTypeAttributes>;
|
|
95
104
|
}
|
|
96
105
|
|
|
97
106
|
/**
|
|
@@ -108,7 +117,7 @@ export interface SimpleMapNodeSchema<out TCustomMetadata = unknown>
|
|
|
108
117
|
* @remarks Refers to the types by identifier.
|
|
109
118
|
* A {@link SimpleTreeSchema} is needed to resolve these identifiers to their schema {@link SimpleTreeSchema.definitions}.
|
|
110
119
|
*/
|
|
111
|
-
readonly
|
|
120
|
+
readonly simpleAllowedTypes: ReadonlyMap<string, SimpleAllowedTypeAttributes>;
|
|
112
121
|
}
|
|
113
122
|
|
|
114
123
|
/**
|
|
@@ -125,7 +134,7 @@ export interface SimpleRecordNodeSchema<out TCustomMetadata = unknown>
|
|
|
125
134
|
* @remarks Refers to the types by identifier.
|
|
126
135
|
* A {@link SimpleTreeSchema} is needed to resolve these identifiers to their schema {@link SimpleTreeSchema.definitions}.
|
|
127
136
|
*/
|
|
128
|
-
readonly
|
|
137
|
+
readonly simpleAllowedTypes: ReadonlyMap<string, SimpleAllowedTypeAttributes>;
|
|
129
138
|
}
|
|
130
139
|
|
|
131
140
|
/**
|
|
@@ -162,6 +171,23 @@ export type SimpleNodeSchema =
|
|
|
162
171
|
| SimpleObjectNodeSchema
|
|
163
172
|
| SimpleRecordNodeSchema;
|
|
164
173
|
|
|
174
|
+
/**
|
|
175
|
+
* Information about allowed types under a field.
|
|
176
|
+
*
|
|
177
|
+
* @alpha
|
|
178
|
+
* @sealed
|
|
179
|
+
*/
|
|
180
|
+
export interface SimpleAllowedTypeAttributes {
|
|
181
|
+
/**
|
|
182
|
+
* True if this schema is included as a {@link SchemaStaticsBeta.staged | staged} schema upgrade,
|
|
183
|
+
* allowing the view schema be compatible with stored schema with (post upgrade) or without it (pre-upgrade).
|
|
184
|
+
* New documents and schema upgrades will omit any staged schema.
|
|
185
|
+
*
|
|
186
|
+
* Undefined if derived from a stored schema.
|
|
187
|
+
*/
|
|
188
|
+
readonly isStaged: boolean | undefined;
|
|
189
|
+
}
|
|
190
|
+
|
|
165
191
|
/**
|
|
166
192
|
* A simple, shallow representation of a schema for a field.
|
|
167
193
|
*
|
|
@@ -179,12 +205,12 @@ export interface SimpleFieldSchema {
|
|
|
179
205
|
readonly kind: FieldKind;
|
|
180
206
|
|
|
181
207
|
/**
|
|
182
|
-
*
|
|
208
|
+
* Information about the allowed types under this field.
|
|
183
209
|
*
|
|
184
210
|
* @remarks Refers to the types by identifier.
|
|
185
211
|
* A {@link SimpleTreeSchema} is needed to resolve these identifiers to their schema {@link SimpleTreeSchema.definitions}.
|
|
186
212
|
*/
|
|
187
|
-
readonly
|
|
213
|
+
readonly simpleAllowedTypes: ReadonlyMap<string, SimpleAllowedTypeAttributes>;
|
|
188
214
|
|
|
189
215
|
/**
|
|
190
216
|
* {@inheritDoc FieldSchemaMetadata}
|
|
@@ -221,7 +247,7 @@ export interface SimpleTreeSchema {
|
|
|
221
247
|
* @remarks
|
|
222
248
|
* The keys are the schemas' {@link TreeNodeSchemaCore.identifier | identifiers}.
|
|
223
249
|
*
|
|
224
|
-
* Information about if a schema is {@link
|
|
250
|
+
* Information about if a schema is {@link SchemaStaticsBeta.staged | staged} or not is not available as the "Simple Schema" layer of abstraction: they are included unconditionally.
|
|
225
251
|
* Options for filtering out staged schemas from view schema are available in {@link extractPersistedSchema}.
|
|
226
252
|
*/
|
|
227
253
|
readonly definitions: ReadonlyMap<string, SimpleNodeSchema>;
|