@fluidframework/tree 2.70.0-361092 → 2.70.0-361788
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/api-report/tree.alpha.api.md +36 -17
- package/api-report/tree.beta.api.md +70 -2
- package/api-report/tree.legacy.beta.api.md +70 -2
- package/dist/alpha.d.ts +15 -11
- package/dist/api.d.ts +6 -1
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +9 -1
- package/dist/api.js.map +1 -1
- package/dist/beta.d.ts +13 -0
- package/dist/codec/codec.d.ts +3 -3
- package/dist/codec/codec.js.map +1 -1
- package/dist/core/forest/forest.d.ts +3 -4
- package/dist/core/forest/forest.d.ts.map +1 -1
- package/dist/core/forest/forest.js.map +1 -1
- package/dist/core/rebase/changeRebaser.d.ts +1 -1
- package/dist/core/rebase/changeRebaser.js.map +1 -1
- package/dist/core/tree/detachedFieldIndex.d.ts.map +1 -1
- package/dist/core/tree/detachedFieldIndex.js +4 -1
- package/dist/core/tree/detachedFieldIndex.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/chunkTree.d.ts +6 -0
- package/dist/feature-libraries/chunked-forest/chunkTree.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/chunkTree.js +11 -2
- package/dist/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/chunkedForest.d.ts +1 -1
- package/dist/feature-libraries/chunked-forest/chunkedForest.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/chunkedForest.js +1 -1
- package/dist/feature-libraries/chunked-forest/chunkedForest.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/compressedEncode.d.ts +21 -20
- package/dist/feature-libraries/chunked-forest/codec/compressedEncode.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js +17 -43
- package/dist/feature-libraries/chunked-forest/codec/compressedEncode.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/flex-tree/lazyField.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyField.js +2 -1
- package/dist/feature-libraries/flex-tree/lazyField.js.map +1 -1
- package/dist/feature-libraries/flex-tree/utilities.d.ts +1 -1
- package/dist/feature-libraries/flex-tree/utilities.js +1 -1
- package/dist/feature-libraries/flex-tree/utilities.js.map +1 -1
- package/dist/feature-libraries/forest-summary/incrementalSummaryBuilder.d.ts +1 -1
- package/dist/feature-libraries/forest-summary/incrementalSummaryBuilder.d.ts.map +1 -1
- package/dist/feature-libraries/forest-summary/incrementalSummaryBuilder.js +42 -47
- package/dist/feature-libraries/forest-summary/incrementalSummaryBuilder.js.map +1 -1
- package/dist/feature-libraries/incrementalSummarizationUtils.d.ts +1 -1
- package/dist/feature-libraries/incrementalSummarizationUtils.js.map +1 -1
- package/dist/feature-libraries/index.d.ts +1 -1
- package/dist/feature-libraries/index.d.ts.map +1 -1
- package/dist/feature-libraries/index.js +2 -1
- package/dist/feature-libraries/index.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFamily.js +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
- package/dist/feature-libraries/object-forest/objectForest.d.ts +1 -1
- package/dist/feature-libraries/object-forest/objectForest.d.ts.map +1 -1
- package/dist/feature-libraries/object-forest/objectForest.js +1 -1
- package/dist/feature-libraries/object-forest/objectForest.js.map +1 -1
- package/dist/feature-libraries/sequence-field/formatV1.d.ts +1 -1
- package/dist/feature-libraries/sequence-field/formatV1.js.map +1 -1
- package/dist/feature-libraries/sequence-field/formatV2.d.ts +1 -1
- package/dist/feature-libraries/sequence-field/formatV2.js.map +1 -1
- package/dist/feature-libraries/sequence-field/formatV3.d.ts +1 -1
- package/dist/feature-libraries/sequence-field/formatV3.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/legacy.d.ts +13 -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.map +1 -1
- package/dist/shared-tree/independentView.js +2 -1
- package/dist/shared-tree/independentView.js.map +1 -1
- package/dist/shared-tree/schematizingTreeView.d.ts +4 -3
- package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/dist/shared-tree/schematizingTreeView.js +1 -1
- package/dist/shared-tree/schematizingTreeView.js.map +1 -1
- package/dist/shared-tree/sharedTree.d.ts +1 -1
- package/dist/shared-tree/sharedTree.js +1 -1
- package/dist/shared-tree/sharedTree.js.map +1 -1
- package/dist/shared-tree/treeAlpha.d.ts +28 -2
- package/dist/shared-tree/treeAlpha.d.ts.map +1 -1
- package/dist/shared-tree/treeAlpha.js +12 -0
- package/dist/shared-tree/treeAlpha.js.map +1 -1
- package/dist/shared-tree/treeCheckout.d.ts +1 -1
- package/dist/shared-tree/treeCheckout.js +1 -1
- package/dist/shared-tree/treeCheckout.js.map +1 -1
- package/dist/shared-tree-core/sharedTreeCore.js +1 -1
- package/dist/shared-tree-core/sharedTreeCore.js.map +1 -1
- package/dist/shared-tree-core/transaction.d.ts +2 -2
- package/dist/shared-tree-core/transaction.js.map +1 -1
- package/dist/simple-tree/api/incrementalAllowedTypes.d.ts +47 -0
- package/dist/simple-tree/api/incrementalAllowedTypes.d.ts.map +1 -0
- package/dist/simple-tree/api/incrementalAllowedTypes.js +90 -0
- package/dist/simple-tree/api/incrementalAllowedTypes.js.map +1 -0
- package/dist/simple-tree/api/index.d.ts +2 -1
- package/dist/simple-tree/api/index.d.ts.map +1 -1
- package/dist/simple-tree/api/index.js +4 -1
- package/dist/simple-tree/api/index.js.map +1 -1
- package/dist/simple-tree/api/schemaFactoryBeta.d.ts +2 -2
- package/dist/simple-tree/api/schemaFactoryBeta.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaFactoryBeta.js.map +1 -1
- package/dist/simple-tree/api/tree.d.ts +51 -37
- package/dist/simple-tree/api/tree.d.ts.map +1 -1
- package/dist/simple-tree/api/tree.js.map +1 -1
- package/dist/simple-tree/core/allowedTypes.d.ts +10 -11
- package/dist/simple-tree/core/allowedTypes.d.ts.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 +1 -1
- package/dist/simple-tree/core/index.d.ts.map +1 -1
- package/dist/simple-tree/core/index.js +2 -1
- package/dist/simple-tree/core/index.js.map +1 -1
- package/dist/simple-tree/core/treeNodeSchema.d.ts +3 -8
- 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 +2 -2
- package/dist/simple-tree/core/treeNodeValid.d.ts.map +1 -1
- package/dist/simple-tree/core/treeNodeValid.js +2 -2
- package/dist/simple-tree/core/treeNodeValid.js.map +1 -1
- package/dist/simple-tree/core/walkSchema.d.ts.map +1 -1
- package/dist/simple-tree/core/walkSchema.js +1 -1
- package/dist/simple-tree/core/walkSchema.js.map +1 -1
- package/dist/simple-tree/core/withType.d.ts +20 -0
- package/dist/simple-tree/core/withType.d.ts.map +1 -1
- package/dist/simple-tree/core/withType.js +21 -1
- package/dist/simple-tree/core/withType.js.map +1 -1
- package/dist/simple-tree/createContext.d.ts.map +1 -1
- package/dist/simple-tree/createContext.js +1 -1
- package/dist/simple-tree/createContext.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 +5 -2
- package/dist/simple-tree/index.js.map +1 -1
- package/dist/simple-tree/leafNodeSchema.js +1 -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 +1 -1
- package/dist/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
- package/dist/simple-tree/node-kinds/map/mapNode.js +1 -1
- 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 +1 -1
- package/dist/simple-tree/node-kinds/object/objectNode.js.map +1 -1
- package/dist/simple-tree/node-kinds/record/recordNode.js +1 -1
- package/dist/simple-tree/node-kinds/record/recordNode.js.map +1 -1
- package/dist/simple-tree/unhydratedFlexTreeFromInsertable.d.ts +1 -0
- package/dist/simple-tree/unhydratedFlexTreeFromInsertable.d.ts.map +1 -1
- package/dist/simple-tree/unhydratedFlexTreeFromInsertable.js +12 -0
- package/dist/simple-tree/unhydratedFlexTreeFromInsertable.js.map +1 -1
- package/dist/util/nestedMap.d.ts +1 -1
- package/dist/util/nestedMap.js +1 -1
- package/dist/util/nestedMap.js.map +1 -1
- package/dist/util/referenceCounting.d.ts +1 -1
- package/dist/util/referenceCounting.js.map +1 -1
- package/lib/alpha.d.ts +15 -11
- package/lib/api.d.ts +6 -1
- package/lib/api.d.ts.map +1 -1
- package/lib/api.js +7 -0
- package/lib/api.js.map +1 -1
- package/lib/beta.d.ts +13 -0
- package/lib/codec/codec.d.ts +3 -3
- package/lib/codec/codec.js.map +1 -1
- package/lib/core/forest/forest.d.ts +3 -4
- package/lib/core/forest/forest.d.ts.map +1 -1
- package/lib/core/forest/forest.js.map +1 -1
- package/lib/core/rebase/changeRebaser.d.ts +1 -1
- package/lib/core/rebase/changeRebaser.js.map +1 -1
- package/lib/core/tree/detachedFieldIndex.d.ts.map +1 -1
- package/lib/core/tree/detachedFieldIndex.js +4 -1
- package/lib/core/tree/detachedFieldIndex.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/chunkTree.d.ts +6 -0
- package/lib/feature-libraries/chunked-forest/chunkTree.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/chunkTree.js +8 -0
- package/lib/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/chunkedForest.d.ts +1 -1
- package/lib/feature-libraries/chunked-forest/chunkedForest.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/chunkedForest.js +2 -2
- package/lib/feature-libraries/chunked-forest/chunkedForest.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/compressedEncode.d.ts +21 -20
- package/lib/feature-libraries/chunked-forest/codec/compressedEncode.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js +17 -43
- package/lib/feature-libraries/chunked-forest/codec/compressedEncode.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/flex-tree/lazyField.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyField.js +2 -1
- package/lib/feature-libraries/flex-tree/lazyField.js.map +1 -1
- package/lib/feature-libraries/flex-tree/utilities.d.ts +1 -1
- package/lib/feature-libraries/flex-tree/utilities.js +1 -1
- package/lib/feature-libraries/flex-tree/utilities.js.map +1 -1
- package/lib/feature-libraries/forest-summary/incrementalSummaryBuilder.d.ts +1 -1
- package/lib/feature-libraries/forest-summary/incrementalSummaryBuilder.d.ts.map +1 -1
- package/lib/feature-libraries/forest-summary/incrementalSummaryBuilder.js +42 -47
- package/lib/feature-libraries/forest-summary/incrementalSummaryBuilder.js.map +1 -1
- package/lib/feature-libraries/incrementalSummarizationUtils.d.ts +1 -1
- package/lib/feature-libraries/incrementalSummarizationUtils.js.map +1 -1
- package/lib/feature-libraries/index.d.ts +1 -1
- package/lib/feature-libraries/index.d.ts.map +1 -1
- package/lib/feature-libraries/index.js +1 -1
- package/lib/feature-libraries/index.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFamily.js +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
- package/lib/feature-libraries/object-forest/objectForest.d.ts +1 -1
- package/lib/feature-libraries/object-forest/objectForest.d.ts.map +1 -1
- package/lib/feature-libraries/object-forest/objectForest.js +2 -2
- package/lib/feature-libraries/object-forest/objectForest.js.map +1 -1
- package/lib/feature-libraries/sequence-field/formatV1.d.ts +1 -1
- package/lib/feature-libraries/sequence-field/formatV1.js.map +1 -1
- package/lib/feature-libraries/sequence-field/formatV2.d.ts +1 -1
- package/lib/feature-libraries/sequence-field/formatV2.js.map +1 -1
- package/lib/feature-libraries/sequence-field/formatV3.d.ts +1 -1
- package/lib/feature-libraries/sequence-field/formatV3.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 +13 -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.map +1 -1
- package/lib/shared-tree/independentView.js +2 -1
- package/lib/shared-tree/independentView.js.map +1 -1
- package/lib/shared-tree/schematizingTreeView.d.ts +4 -3
- package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/lib/shared-tree/schematizingTreeView.js +2 -2
- package/lib/shared-tree/schematizingTreeView.js.map +1 -1
- package/lib/shared-tree/sharedTree.d.ts +1 -1
- package/lib/shared-tree/sharedTree.js +1 -1
- package/lib/shared-tree/sharedTree.js.map +1 -1
- package/lib/shared-tree/treeAlpha.d.ts +28 -2
- package/lib/shared-tree/treeAlpha.d.ts.map +1 -1
- package/lib/shared-tree/treeAlpha.js +13 -1
- package/lib/shared-tree/treeAlpha.js.map +1 -1
- package/lib/shared-tree/treeCheckout.d.ts +1 -1
- package/lib/shared-tree/treeCheckout.js +1 -1
- package/lib/shared-tree/treeCheckout.js.map +1 -1
- package/lib/shared-tree-core/sharedTreeCore.js +1 -1
- package/lib/shared-tree-core/sharedTreeCore.js.map +1 -1
- package/lib/shared-tree-core/transaction.d.ts +2 -2
- package/lib/shared-tree-core/transaction.js.map +1 -1
- package/lib/simple-tree/api/incrementalAllowedTypes.d.ts +47 -0
- package/lib/simple-tree/api/incrementalAllowedTypes.d.ts.map +1 -0
- package/lib/simple-tree/api/incrementalAllowedTypes.js +86 -0
- package/lib/simple-tree/api/incrementalAllowedTypes.js.map +1 -0
- package/lib/simple-tree/api/index.d.ts +2 -1
- package/lib/simple-tree/api/index.d.ts.map +1 -1
- package/lib/simple-tree/api/index.js +1 -0
- package/lib/simple-tree/api/index.js.map +1 -1
- package/lib/simple-tree/api/schemaFactoryBeta.d.ts +2 -2
- package/lib/simple-tree/api/schemaFactoryBeta.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaFactoryBeta.js.map +1 -1
- package/lib/simple-tree/api/tree.d.ts +51 -37
- package/lib/simple-tree/api/tree.d.ts.map +1 -1
- package/lib/simple-tree/api/tree.js.map +1 -1
- package/lib/simple-tree/core/allowedTypes.d.ts +10 -11
- package/lib/simple-tree/core/allowedTypes.d.ts.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 +1 -1
- package/lib/simple-tree/core/index.d.ts.map +1 -1
- package/lib/simple-tree/core/index.js +1 -1
- package/lib/simple-tree/core/index.js.map +1 -1
- package/lib/simple-tree/core/treeNodeSchema.d.ts +3 -8
- 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 +2 -2
- package/lib/simple-tree/core/treeNodeValid.d.ts.map +1 -1
- package/lib/simple-tree/core/treeNodeValid.js +2 -2
- package/lib/simple-tree/core/treeNodeValid.js.map +1 -1
- package/lib/simple-tree/core/walkSchema.d.ts.map +1 -1
- package/lib/simple-tree/core/walkSchema.js +1 -1
- package/lib/simple-tree/core/walkSchema.js.map +1 -1
- package/lib/simple-tree/core/withType.d.ts +20 -0
- package/lib/simple-tree/core/withType.d.ts.map +1 -1
- package/lib/simple-tree/core/withType.js +20 -0
- package/lib/simple-tree/core/withType.js.map +1 -1
- package/lib/simple-tree/createContext.d.ts.map +1 -1
- package/lib/simple-tree/createContext.js +2 -2
- package/lib/simple-tree/createContext.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.js +1 -1
- 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 +1 -1
- package/lib/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
- package/lib/simple-tree/node-kinds/map/mapNode.js +1 -1
- 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 +1 -1
- package/lib/simple-tree/node-kinds/object/objectNode.js.map +1 -1
- package/lib/simple-tree/node-kinds/record/recordNode.js +1 -1
- package/lib/simple-tree/node-kinds/record/recordNode.js.map +1 -1
- package/lib/simple-tree/unhydratedFlexTreeFromInsertable.d.ts +1 -0
- package/lib/simple-tree/unhydratedFlexTreeFromInsertable.d.ts.map +1 -1
- package/lib/simple-tree/unhydratedFlexTreeFromInsertable.js +13 -1
- package/lib/simple-tree/unhydratedFlexTreeFromInsertable.js.map +1 -1
- package/lib/util/nestedMap.d.ts +1 -1
- package/lib/util/nestedMap.js +1 -1
- package/lib/util/nestedMap.js.map +1 -1
- package/lib/util/referenceCounting.d.ts +1 -1
- package/lib/util/referenceCounting.js.map +1 -1
- package/package.json +21 -21
- package/src/api.ts +11 -0
- package/src/codec/codec.ts +3 -3
- package/src/core/forest/forest.ts +3 -4
- package/src/core/rebase/changeRebaser.ts +1 -1
- package/src/core/tree/detachedFieldIndex.ts +4 -1
- package/src/feature-libraries/chunked-forest/chunkTree.ts +9 -0
- package/src/feature-libraries/chunked-forest/chunkedForest.ts +3 -3
- package/src/feature-libraries/chunked-forest/codec/compressedEncode.ts +20 -58
- package/src/feature-libraries/chunked-forest/index.ts +1 -0
- package/src/feature-libraries/flex-tree/lazyField.ts +3 -1
- package/src/feature-libraries/flex-tree/utilities.ts +1 -1
- package/src/feature-libraries/forest-summary/incrementalSummaryBuilder.ts +64 -70
- package/src/feature-libraries/incrementalSummarizationUtils.ts +1 -1
- package/src/feature-libraries/index.ts +1 -0
- package/src/feature-libraries/modular-schema/modularChangeFamily.ts +1 -1
- package/src/feature-libraries/object-forest/objectForest.ts +3 -3
- package/src/feature-libraries/sequence-field/formatV1.ts +1 -1
- package/src/feature-libraries/sequence-field/formatV2.ts +1 -1
- package/src/feature-libraries/sequence-field/formatV3.ts +1 -1
- package/src/index.ts +4 -1
- package/src/packageVersion.ts +1 -1
- package/src/shared-tree/independentView.ts +4 -1
- package/src/shared-tree/schematizingTreeView.ts +10 -5
- package/src/shared-tree/sharedTree.ts +1 -1
- package/src/shared-tree/treeAlpha.ts +50 -2
- package/src/shared-tree/treeCheckout.ts +1 -1
- package/src/shared-tree-core/sharedTreeCore.ts +1 -1
- package/src/shared-tree-core/transaction.ts +2 -2
- package/src/simple-tree/api/incrementalAllowedTypes.ts +107 -0
- package/src/simple-tree/api/index.ts +6 -0
- package/src/simple-tree/api/schemaFactoryBeta.ts +6 -2
- package/src/simple-tree/api/tree.ts +64 -44
- package/src/simple-tree/core/allowedTypes.ts +10 -11
- package/src/simple-tree/core/index.ts +6 -1
- package/src/simple-tree/core/treeNodeSchema.ts +3 -8
- package/src/simple-tree/core/treeNodeValid.ts +3 -3
- package/src/simple-tree/core/walkSchema.ts +1 -2
- package/src/simple-tree/core/withType.ts +24 -0
- package/src/simple-tree/createContext.ts +1 -4
- package/src/simple-tree/index.ts +5 -0
- package/src/simple-tree/leafNodeSchema.ts +1 -1
- package/src/simple-tree/node-kinds/array/arrayNode.ts +5 -2
- package/src/simple-tree/node-kinds/map/mapNode.ts +1 -1
- package/src/simple-tree/node-kinds/object/objectNode.ts +1 -4
- package/src/simple-tree/node-kinds/record/recordNode.ts +1 -1
- package/src/simple-tree/unhydratedFlexTreeFromInsertable.ts +13 -0
- package/src/util/nestedMap.ts +1 -1
- package/src/util/referenceCounting.ts +1 -1
|
@@ -60,7 +60,7 @@ export type AllowedTypes = readonly LazyItem<TreeNodeSchema>[];
|
|
|
60
60
|
* @privateRemarks
|
|
61
61
|
* Since this is sealed, users are not supposed to create instances of it directly.
|
|
62
62
|
* Making it extend ErasedType could enforce that.
|
|
63
|
-
* @
|
|
63
|
+
* @beta
|
|
64
64
|
* @sealed
|
|
65
65
|
*/
|
|
66
66
|
export interface AnnotatedAllowedType<T = LazyItem<TreeNodeSchema>> {
|
|
@@ -77,7 +77,7 @@ export interface AnnotatedAllowedType<T = LazyItem<TreeNodeSchema>> {
|
|
|
77
77
|
/**
|
|
78
78
|
* {@link AllowedTypesFull} but with the lazy schema references eagerly evaluated.
|
|
79
79
|
* @sealed
|
|
80
|
-
* @
|
|
80
|
+
* @beta
|
|
81
81
|
*/
|
|
82
82
|
export type AllowedTypesFullEvaluated = AllowedTypesFull<
|
|
83
83
|
readonly AnnotatedAllowedType<TreeNodeSchema>[]
|
|
@@ -95,7 +95,7 @@ export function isAnnotatedAllowedTypes(
|
|
|
95
95
|
|
|
96
96
|
/**
|
|
97
97
|
* Stores annotations for a set of allowed types.
|
|
98
|
-
* @
|
|
98
|
+
* @beta
|
|
99
99
|
* @sealed
|
|
100
100
|
*/
|
|
101
101
|
export interface AnnotatedAllowedTypes<T = readonly AnnotatedAllowedType[]>
|
|
@@ -139,7 +139,7 @@ export interface AnnotatedAllowedTypes<T = readonly AnnotatedAllowedType[]>
|
|
|
139
139
|
* Stores annotations for a set of allowed types.
|
|
140
140
|
* @remarks
|
|
141
141
|
* Most expressive form of AllowedTypes which any of the implicit types can be normalized to.
|
|
142
|
-
* @
|
|
142
|
+
* @beta
|
|
143
143
|
* @sealed
|
|
144
144
|
*/
|
|
145
145
|
export type AllowedTypesFull<
|
|
@@ -148,8 +148,7 @@ export type AllowedTypesFull<
|
|
|
148
148
|
|
|
149
149
|
/**
|
|
150
150
|
* Creates an {@link AllowedTypesFull} type from a mixed array of annotated and unannotated allowed types.
|
|
151
|
-
* @
|
|
152
|
-
* @sealed
|
|
151
|
+
* @system @sealed @beta
|
|
153
152
|
*/
|
|
154
153
|
export type AllowedTypesFullFromMixed<
|
|
155
154
|
T extends readonly (AnnotatedAllowedType | LazyItem<TreeNodeSchema>)[],
|
|
@@ -360,7 +359,7 @@ export class AnnotatedAllowedTypesInternal<
|
|
|
360
359
|
* Annotations that apply to a set of allowed types.
|
|
361
360
|
* @remarks
|
|
362
361
|
* Additional optionals may be added to this as non-breaking changes, so implementations of it should be simple object literals with no unlisted members.
|
|
363
|
-
* @
|
|
362
|
+
* @beta
|
|
364
363
|
* @input
|
|
365
364
|
*/
|
|
366
365
|
export interface AllowedTypesMetadata {
|
|
@@ -385,7 +384,7 @@ export function isAnnotatedAllowedType(
|
|
|
385
384
|
* Annotations that apply to an individual allowed type.
|
|
386
385
|
* @remarks
|
|
387
386
|
* Additional optionals may be added to this as non-breaking changes, so implementations of it should be simple object literals with no unlisted members.
|
|
388
|
-
* @
|
|
387
|
+
* @beta
|
|
389
388
|
* @input
|
|
390
389
|
*/
|
|
391
390
|
export interface AllowedTypeMetadata {
|
|
@@ -413,7 +412,7 @@ export let createSchemaUpgrade: () => SchemaUpgrade;
|
|
|
413
412
|
* TODO:#38722 implement runtime schema upgrades.
|
|
414
413
|
* Until then, the class purely behaves mostly as a placeholder.
|
|
415
414
|
* TODO: Consider allowing users to store a name for the upgrade to use in error messages.
|
|
416
|
-
* @sealed @
|
|
415
|
+
* @sealed @beta
|
|
417
416
|
*/
|
|
418
417
|
export class SchemaUpgrade {
|
|
419
418
|
protected _typeCheck!: MakeNominal;
|
|
@@ -461,7 +460,7 @@ export type ImplicitAllowedTypes = AllowedTypes | TreeNodeSchema;
|
|
|
461
460
|
|
|
462
461
|
/**
|
|
463
462
|
* Removes annotations from a list of allowed types that may contain annotations.
|
|
464
|
-
* @system @
|
|
463
|
+
* @system @beta
|
|
465
464
|
*/
|
|
466
465
|
export type UnannotateAllowedTypesList<
|
|
467
466
|
T extends readonly (AnnotatedAllowedType | LazyItem<TreeNodeSchema>)[],
|
|
@@ -471,7 +470,7 @@ export type UnannotateAllowedTypesList<
|
|
|
471
470
|
|
|
472
471
|
/**
|
|
473
472
|
* Add annotations to a list of allowed types that may or may not contain annotations.
|
|
474
|
-
* @system @
|
|
473
|
+
* @system @beta
|
|
475
474
|
*/
|
|
476
475
|
export type AnnotateAllowedTypesList<
|
|
477
476
|
T extends readonly (AnnotatedAllowedType | LazyItem<TreeNodeSchema>)[],
|
|
@@ -16,7 +16,12 @@ export {
|
|
|
16
16
|
SimpleContextSlot,
|
|
17
17
|
withBufferedTreeEvents,
|
|
18
18
|
} from "./treeNodeKernel.js";
|
|
19
|
-
export {
|
|
19
|
+
export {
|
|
20
|
+
type WithType,
|
|
21
|
+
typeNameSymbol,
|
|
22
|
+
typeSchemaSymbol,
|
|
23
|
+
contentSchemaSymbol,
|
|
24
|
+
} from "./withType.js";
|
|
20
25
|
export {
|
|
21
26
|
type Unhydrated,
|
|
22
27
|
type InternalTreeNode,
|
|
@@ -10,7 +10,7 @@ import type { SimpleNodeSchemaBase } from "./simpleNodeSchemaBase.js";
|
|
|
10
10
|
import type { TreeNode } from "./treeNode.js";
|
|
11
11
|
import type { InternalTreeNode, Unhydrated } from "./types.js";
|
|
12
12
|
import type { UnionToIntersection } from "../../util/index.js";
|
|
13
|
-
import type {
|
|
13
|
+
import type { AllowedTypesFullEvaluated, AllowedTypesFull } from "./allowedTypes.js";
|
|
14
14
|
import type { Context } from "./context.js";
|
|
15
15
|
import type { FieldKey, NodeData, TreeNodeStoredSchema } from "../../core/index.js";
|
|
16
16
|
import type { UnhydratedFlexTreeField } from "./unhydratedFlexTree.js";
|
|
@@ -379,16 +379,11 @@ export interface TreeNodeSchemaPrivateData {
|
|
|
379
379
|
* In this case "field" includes anything that is a field in the internal (flex-tree) abstraction layer.
|
|
380
380
|
* This includes the content field for arrays, and all the fields for map nodes.
|
|
381
381
|
* If this node does not have fields (and thus is a leaf), the array will be empty.
|
|
382
|
-
*
|
|
383
|
-
* This set cannot be used before the schema in it have been defined:
|
|
384
|
-
* more specifically, when using lazy schema references (for example to make foreword references to schema which have not yet been defined),
|
|
385
|
-
* users must wait until after the schema are defined to access this array.
|
|
386
|
-
*
|
|
387
382
|
* @privateRemarks
|
|
388
383
|
* If this is stabilized, it will live alongside the childTypes property on {@link TreeNodeSchemaCore}.
|
|
389
384
|
* @system
|
|
390
385
|
*/
|
|
391
|
-
readonly
|
|
386
|
+
readonly childAllowedTypes: readonly AllowedTypesFull[];
|
|
392
387
|
|
|
393
388
|
/**
|
|
394
389
|
* Idempotent initialization function that pre-caches data and can dereference lazy schema references.
|
|
@@ -422,7 +417,7 @@ export interface TreeNodeSchemaInitializedData {
|
|
|
422
417
|
* If this is stabilized, it will live alongside the childTypes property on {@link TreeNodeSchemaCore}.
|
|
423
418
|
* @system
|
|
424
419
|
*/
|
|
425
|
-
readonly
|
|
420
|
+
readonly childAllowedTypes: readonly AllowedTypesFullEvaluated[];
|
|
426
421
|
|
|
427
422
|
/**
|
|
428
423
|
* A {@link Context} which can be used for unhydrated nodes of this schema.
|
|
@@ -25,7 +25,7 @@ import {
|
|
|
25
25
|
} from "./treeNodeKernel.js";
|
|
26
26
|
import type { InternalTreeNode } from "./types.js";
|
|
27
27
|
import { typeSchemaSymbol } from "./withType.js";
|
|
28
|
-
import type {
|
|
28
|
+
import type { AllowedTypesFull } from "./allowedTypes.js";
|
|
29
29
|
import type { SimpleNodeSchemaBase } from "./simpleNodeSchemaBase.js";
|
|
30
30
|
|
|
31
31
|
/**
|
|
@@ -259,7 +259,7 @@ export function isClassBasedSchema(
|
|
|
259
259
|
*/
|
|
260
260
|
export function createTreeNodeSchemaPrivateData(
|
|
261
261
|
schema: TreeNodeSchemaCore<string, NodeKind, boolean>,
|
|
262
|
-
|
|
262
|
+
childAllowedTypes: readonly AllowedTypesFull[],
|
|
263
263
|
toStored: TreeNodeSchemaPrivateData["toStored"],
|
|
264
264
|
): TreeNodeSchemaPrivateData {
|
|
265
265
|
const schemaValid = schemaAsTreeNodeValid(schema);
|
|
@@ -269,7 +269,7 @@ export function createTreeNodeSchemaPrivateData(
|
|
|
269
269
|
|
|
270
270
|
return {
|
|
271
271
|
idempotentInitialize: () => schemaValid.oneTimeInitialize().oneTimeInitialized,
|
|
272
|
-
|
|
272
|
+
childAllowedTypes,
|
|
273
273
|
toStored,
|
|
274
274
|
};
|
|
275
275
|
}
|
|
@@ -28,8 +28,7 @@ export function walkNodeSchema(
|
|
|
28
28
|
// Since walkNodeSchema is used in the implementation of TreeNodeSchemaPrivateData.idempotentInitialize,
|
|
29
29
|
// Avoid depending on it here to avoid circular dependencies for recursive schema.
|
|
30
30
|
// Instead normalize/evaluate the allowed types as needed.
|
|
31
|
-
const annotatedAllowedTypes =
|
|
32
|
-
getTreeNodeSchemaPrivateData(schema).childAnnotatedAllowedTypes;
|
|
31
|
+
const annotatedAllowedTypes = getTreeNodeSchemaPrivateData(schema).childAllowedTypes;
|
|
33
32
|
|
|
34
33
|
for (const fieldAllowedTypes of annotatedAllowedTypes) {
|
|
35
34
|
walkAllowedTypes(
|
|
@@ -5,6 +5,9 @@
|
|
|
5
5
|
|
|
6
6
|
import type { TreeNode } from "./treeNode.js";
|
|
7
7
|
import type { NodeKind, TreeNodeSchemaClass } from "./treeNodeSchema.js";
|
|
8
|
+
// Used by doc links:
|
|
9
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars, unused-imports/no-unused-imports
|
|
10
|
+
import type { TreeAlpha } from "../../shared-tree/index.js";
|
|
8
11
|
|
|
9
12
|
/**
|
|
10
13
|
* The type of a {@link TreeNode}.
|
|
@@ -39,6 +42,27 @@ export const typeNameSymbol: unique symbol = Symbol("TreeNode Type");
|
|
|
39
42
|
*/
|
|
40
43
|
export const typeSchemaSymbol: unique symbol = Symbol("TreeNode Schema");
|
|
41
44
|
|
|
45
|
+
/**
|
|
46
|
+
* The intended type of insertable content that is to become a {@link TreeNode}.
|
|
47
|
+
* @remarks Use the type-safe {@link (TreeAlpha:interface).tagContentSchema} function to tag insertable content with this symbol.
|
|
48
|
+
*
|
|
49
|
+
* If a property with this symbol key is present on an object that is inserted into the tree,
|
|
50
|
+
* the tree will use the schema identifier specified by the value of this property when creating the node.
|
|
51
|
+
* This is particularly useful for specifying the intended schema of untyped content when it would otherwise be ambiguous.
|
|
52
|
+
* @example
|
|
53
|
+
* ```typescript
|
|
54
|
+
* const sf = new SchemaFactory("example");
|
|
55
|
+
* class Dog extends sf.object("Dog", { name: sf.string() }) {}
|
|
56
|
+
* class Cat extends sf.object("Cat", { name: sf.string() }) {}
|
|
57
|
+
* class Root extends sf.object("Root", { pet: [Dog, Cat] }) {}
|
|
58
|
+
* // ...
|
|
59
|
+
* view.root.pet = { name: "Max" }; // Error: ambiguous schema - is it a Dog or a Cat?
|
|
60
|
+
* view.root.pet = { name: "Max", [contentSchemaSymbol]: "example.Dog" }; // No error - it's a Dog.
|
|
61
|
+
* ```
|
|
62
|
+
* @alpha
|
|
63
|
+
*/
|
|
64
|
+
export const contentSchemaSymbol: unique symbol = Symbol("SharedTree Schema");
|
|
65
|
+
|
|
42
66
|
/**
|
|
43
67
|
* Adds a type symbol to a type for stronger typing.
|
|
44
68
|
*
|
|
@@ -9,7 +9,6 @@ import { getOrCreate } from "../util/index.js";
|
|
|
9
9
|
import {
|
|
10
10
|
Context,
|
|
11
11
|
getTreeNodeSchemaPrivateData,
|
|
12
|
-
normalizeAndEvaluateAnnotatedAllowedTypes,
|
|
13
12
|
UnhydratedContext,
|
|
14
13
|
type TreeNodeSchema,
|
|
15
14
|
type TreeNodeSchemaInitializedData,
|
|
@@ -50,8 +49,6 @@ export function getTreeNodeSchemaInitializedData(
|
|
|
50
49
|
return {
|
|
51
50
|
...handler,
|
|
52
51
|
context: getUnhydratedContext(schema),
|
|
53
|
-
|
|
54
|
-
normalizeAndEvaluateAnnotatedAllowedTypes,
|
|
55
|
-
),
|
|
52
|
+
childAllowedTypes: data.childAllowedTypes.map((t) => t.evaluate()),
|
|
56
53
|
};
|
|
57
54
|
}
|
package/src/simple-tree/index.ts
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
export {
|
|
7
7
|
typeNameSymbol,
|
|
8
8
|
typeSchemaSymbol,
|
|
9
|
+
contentSchemaSymbol,
|
|
9
10
|
type WithType,
|
|
10
11
|
type TreeNodeSchema,
|
|
11
12
|
type AnnotatedAllowedType,
|
|
@@ -135,7 +136,9 @@ export {
|
|
|
135
136
|
type UnannotateAllowedTypesListUnsafe,
|
|
136
137
|
type AnnotateAllowedTypesListUnsafe,
|
|
137
138
|
type TreeViewAlpha,
|
|
139
|
+
type TreeViewBeta,
|
|
138
140
|
type TreeBranch,
|
|
141
|
+
type TreeBranchAlpha,
|
|
139
142
|
type TreeBranchEvents,
|
|
140
143
|
getPropertyKeyFromStoredKey,
|
|
141
144
|
getStoredKey,
|
|
@@ -180,6 +183,8 @@ export {
|
|
|
180
183
|
type SchemaStaticsAlpha,
|
|
181
184
|
KeyEncodingOptions,
|
|
182
185
|
type TreeParsingOptions,
|
|
186
|
+
incrementalSummaryHint,
|
|
187
|
+
getShouldIncrementallySummarizeAllowedTypes,
|
|
183
188
|
type SchemaFactory_base,
|
|
184
189
|
} from "./api/index.js";
|
|
185
190
|
export type {
|
|
@@ -63,7 +63,7 @@ export class LeafNodeSchema<Name extends string, const T extends ValueSchema>
|
|
|
63
63
|
allowedTypes: ReadonlySet<TreeNodeSchema>,
|
|
64
64
|
): FlexContent => leafToFlexContent(data, this, allowedTypes),
|
|
65
65
|
})),
|
|
66
|
-
|
|
66
|
+
childAllowedTypes: [],
|
|
67
67
|
toStored: () => new LeafNodeStoredSchema(this.leafKind),
|
|
68
68
|
};
|
|
69
69
|
#initializedData: TreeNodeSchemaInitializedData | undefined;
|
|
@@ -1273,8 +1273,11 @@ export function arraySchema<
|
|
|
1273
1273
|
}
|
|
1274
1274
|
|
|
1275
1275
|
public static get [privateDataSymbol](): TreeNodeSchemaPrivateData {
|
|
1276
|
-
return (privateData ??= createTreeNodeSchemaPrivateData(
|
|
1277
|
-
|
|
1276
|
+
return (privateData ??= createTreeNodeSchemaPrivateData(
|
|
1277
|
+
this,
|
|
1278
|
+
[normalizedTypes],
|
|
1279
|
+
(storedOptions) =>
|
|
1280
|
+
arrayNodeStoredSchema(convertAllowedTypes(info, storedOptions), persistedMetadata),
|
|
1278
1281
|
));
|
|
1279
1282
|
}
|
|
1280
1283
|
}
|
|
@@ -336,7 +336,7 @@ export function mapSchema<
|
|
|
336
336
|
public static get [privateDataSymbol](): TreeNodeSchemaPrivateData {
|
|
337
337
|
return (privateData ??= createTreeNodeSchemaPrivateData(
|
|
338
338
|
this,
|
|
339
|
-
[
|
|
339
|
+
[normalizedTypes],
|
|
340
340
|
(storedOptions) =>
|
|
341
341
|
new MapNodeStoredSchema(
|
|
342
342
|
{
|
|
@@ -577,10 +577,7 @@ export function objectSchema<
|
|
|
577
577
|
public static get [privateDataSymbol](): TreeNodeSchemaPrivateData {
|
|
578
578
|
return (privateData ??= createTreeNodeSchemaPrivateData(
|
|
579
579
|
this,
|
|
580
|
-
Array.from(
|
|
581
|
-
flexKeyMap.values(),
|
|
582
|
-
({ schema }) => normalizeFieldSchema(schema).allowedTypes,
|
|
583
|
-
),
|
|
580
|
+
Array.from(CustomObjectNode.fields.values(), (schema) => schema.allowedTypesFull),
|
|
584
581
|
(storedOptions) => {
|
|
585
582
|
const fields: Map<FieldKey, TreeFieldStoredSchema> = new Map();
|
|
586
583
|
for (const fieldSchema of flexKeyMap.values()) {
|
|
@@ -381,7 +381,7 @@ export function recordSchema<
|
|
|
381
381
|
public static get [privateDataSymbol](): TreeNodeSchemaPrivateData {
|
|
382
382
|
return (privateData ??= createTreeNodeSchemaPrivateData(
|
|
383
383
|
this,
|
|
384
|
-
[
|
|
384
|
+
[normalizedTypes],
|
|
385
385
|
(storedOptions) =>
|
|
386
386
|
new MapNodeStoredSchema(
|
|
387
387
|
{
|
|
@@ -17,6 +17,7 @@ import {
|
|
|
17
17
|
isTreeNode,
|
|
18
18
|
type TreeNode,
|
|
19
19
|
type TreeNodeSchema,
|
|
20
|
+
contentSchemaSymbol,
|
|
20
21
|
type Unhydrated,
|
|
21
22
|
UnhydratedFlexTreeNode,
|
|
22
23
|
} from "./core/index.js";
|
|
@@ -125,16 +126,28 @@ For class-based schema, this can be done by replacing an expression like "{foo:
|
|
|
125
126
|
|
|
126
127
|
/**
|
|
127
128
|
* Returns all types for which the data is schema-compatible.
|
|
129
|
+
* @remarks This will respect the {@link contentSchemaSymbol} property on data to disambiguate types - if present, only that type will be returned.
|
|
128
130
|
*/
|
|
129
131
|
export function getPossibleTypes(
|
|
130
132
|
allowedTypes: ReadonlySet<TreeNodeSchema>,
|
|
131
133
|
data: FactoryContent,
|
|
132
134
|
): TreeNodeSchema[] {
|
|
133
135
|
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;
|
|
134
140
|
|
|
135
141
|
let best = CompatibilityLevel.None;
|
|
136
142
|
const possibleTypes: TreeNodeSchema[] = [];
|
|
137
143
|
for (const schema of allowedTypes) {
|
|
144
|
+
if (type !== undefined) {
|
|
145
|
+
if (schema.identifier === type) {
|
|
146
|
+
return [schema];
|
|
147
|
+
} else {
|
|
148
|
+
continue;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
138
151
|
const handler = getTreeNodeSchemaPrivateData(schema).idempotentInitialize();
|
|
139
152
|
const level = handler.shallowCompatibilityTest(data);
|
|
140
153
|
if (level > best) {
|
package/src/util/nestedMap.ts
CHANGED
|
@@ -49,7 +49,7 @@ export function tryAddToNestedMap<Key1, Key2, Value>(
|
|
|
49
49
|
* @param destination - The map to copy data into. Both the outer and inner map may be mutated.
|
|
50
50
|
* @param override - Whether existing entries in `destination` should be replaced by corresponding entries in `source`.
|
|
51
51
|
*
|
|
52
|
-
* @remarks
|
|
52
|
+
* @remarks This function performs deep copying when necessary.
|
|
53
53
|
* This ensures that mutating `destination` after this call will not result in unexpected mutations to `source`.
|
|
54
54
|
*/
|
|
55
55
|
export function populateNestedMap<Key1, Key2, Value>(
|
|
@@ -8,7 +8,7 @@ import { assert } from "@fluidframework/core-utils/internal";
|
|
|
8
8
|
/**
|
|
9
9
|
* An object which counts the number of users / references to it.
|
|
10
10
|
* @remarks
|
|
11
|
-
* This implements the
|
|
11
|
+
* This implements the {@link https://en.wikipedia.org/wiki/Reference_counting | Reference counting} pattern.
|
|
12
12
|
* Getting the reference count correct is difficult in TypeScript and great care must be used.
|
|
13
13
|
* Because of this, this interface should not be used in the public API.
|
|
14
14
|
*/
|