@fluidframework/tree 2.63.0-359461 → 2.63.0-359962
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/.mocharc.cjs +9 -1
- package/api-report/tree.alpha.api.md +126 -96
- package/api-report/tree.beta.api.md +37 -2
- package/api-report/tree.legacy.beta.api.md +37 -2
- package/api-report/tree.legacy.public.api.md +9 -2
- package/api-report/tree.public.api.md +9 -2
- package/dist/alpha.d.ts +18 -13
- package/dist/beta.d.ts +5 -0
- package/dist/feature-libraries/chunked-forest/chunkTree.d.ts +67 -13
- package/dist/feature-libraries/chunked-forest/chunkTree.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/chunkTree.js +70 -35
- package/dist/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/codecs.d.ts +5 -5
- package/dist/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/codecs.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/incrementalEncodingPolicy.d.ts +23 -0
- package/dist/feature-libraries/chunked-forest/codec/incrementalEncodingPolicy.d.ts.map +1 -0
- package/dist/feature-libraries/chunked-forest/codec/incrementalEncodingPolicy.js +15 -0
- package/dist/feature-libraries/chunked-forest/codec/incrementalEncodingPolicy.js.map +1 -0
- package/dist/feature-libraries/chunked-forest/codec/index.d.ts +1 -0
- package/dist/feature-libraries/chunked-forest/codec/index.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/index.js +3 -1
- package/dist/feature-libraries/chunked-forest/codec/index.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncode.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncode.js +3 -2
- package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncode.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/flexTreeTypes.d.ts +1 -1
- package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
- package/dist/feature-libraries/forest-summary/forestSummarizer.d.ts +3 -3
- package/dist/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
- package/dist/feature-libraries/forest-summary/forestSummarizer.js +3 -3
- package/dist/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
- package/dist/feature-libraries/forest-summary/incrementalSummaryBuilder.d.ts +4 -11
- package/dist/feature-libraries/forest-summary/incrementalSummaryBuilder.d.ts.map +1 -1
- package/dist/feature-libraries/forest-summary/incrementalSummaryBuilder.js +2 -6
- package/dist/feature-libraries/forest-summary/incrementalSummaryBuilder.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/treeCursorUtils.d.ts.map +1 -1
- package/dist/feature-libraries/treeCursorUtils.js +17 -15
- package/dist/feature-libraries/treeCursorUtils.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/jsonDomainSchema.d.ts +5 -5
- package/dist/jsonDomainSchema.js +5 -5
- package/dist/jsonDomainSchema.js.map +1 -1
- package/dist/legacy.d.ts +5 -0
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/public.d.ts +1 -0
- package/dist/serializableDomainSchema.d.ts +6 -6
- package/dist/serializableDomainSchema.js +5 -5
- package/dist/serializableDomainSchema.js.map +1 -1
- package/dist/shared-tree/independentView.d.ts.map +1 -1
- package/dist/shared-tree/independentView.js +2 -2
- package/dist/shared-tree/independentView.js.map +1 -1
- package/dist/shared-tree/schematizingTreeView.d.ts +5 -0
- package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/dist/shared-tree/schematizingTreeView.js +38 -8
- package/dist/shared-tree/schematizingTreeView.js.map +1 -1
- package/dist/shared-tree/sharedTree.d.ts +6 -8
- package/dist/shared-tree/sharedTree.d.ts.map +1 -1
- package/dist/shared-tree/sharedTree.js +6 -8
- package/dist/shared-tree/sharedTree.js.map +1 -1
- package/dist/shared-tree/tree.js +1 -1
- package/dist/shared-tree/tree.js.map +1 -1
- package/dist/shared-tree/treeAlpha.d.ts +20 -28
- package/dist/shared-tree/treeAlpha.d.ts.map +1 -1
- package/dist/shared-tree/treeAlpha.js +6 -31
- package/dist/shared-tree/treeAlpha.js.map +1 -1
- package/dist/simple-tree/api/conciseTree.d.ts +1 -1
- package/dist/simple-tree/api/conciseTree.js.map +1 -1
- package/dist/simple-tree/api/configuration.d.ts +0 -3
- package/dist/simple-tree/api/configuration.d.ts.map +1 -1
- package/dist/simple-tree/api/configuration.js +1 -4
- package/dist/simple-tree/api/configuration.js.map +1 -1
- package/dist/simple-tree/api/customTree.d.ts +7 -7
- package/dist/simple-tree/api/customTree.js +5 -5
- package/dist/simple-tree/api/customTree.js.map +1 -1
- package/dist/simple-tree/api/discrepancies.js +2 -2
- package/dist/simple-tree/api/discrepancies.js.map +1 -1
- package/dist/simple-tree/api/index.d.ts +3 -3
- 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 +12 -4
- package/dist/simple-tree/api/schemaFactory.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaFactory.js +3 -8
- package/dist/simple-tree/api/schemaFactory.js.map +1 -1
- package/dist/simple-tree/api/schemaFactoryAlpha.d.ts +64 -28
- package/dist/simple-tree/api/schemaFactoryAlpha.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaFactoryAlpha.js +42 -11
- package/dist/simple-tree/api/schemaFactoryAlpha.js.map +1 -1
- package/dist/simple-tree/api/schemaFactoryBeta.d.ts +13 -2
- package/dist/simple-tree/api/schemaFactoryBeta.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaFactoryBeta.js +14 -0
- package/dist/simple-tree/api/schemaFactoryBeta.js.map +1 -1
- package/dist/simple-tree/api/schemaStatics.d.ts +9 -14
- package/dist/simple-tree/api/schemaStatics.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaStatics.js +12 -12
- package/dist/simple-tree/api/schemaStatics.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.map +1 -1
- package/dist/simple-tree/api/tree.d.ts +3 -3
- package/dist/simple-tree/api/tree.js.map +1 -1
- package/dist/simple-tree/api/treeBeta.d.ts +52 -2
- package/dist/simple-tree/api/treeBeta.d.ts.map +1 -1
- package/dist/simple-tree/api/treeBeta.js +37 -2
- package/dist/simple-tree/api/treeBeta.js.map +1 -1
- package/dist/simple-tree/api/treeNodeApi.js +4 -4
- package/dist/simple-tree/api/treeNodeApi.js.map +1 -1
- package/dist/simple-tree/api/typesUnsafe.d.ts +60 -1
- package/dist/simple-tree/api/typesUnsafe.d.ts.map +1 -1
- package/dist/simple-tree/api/typesUnsafe.js.map +1 -1
- package/dist/simple-tree/core/allowedTypes.d.ts +120 -62
- package/dist/simple-tree/core/allowedTypes.d.ts.map +1 -1
- package/dist/simple-tree/core/allowedTypes.js +162 -84
- package/dist/simple-tree/core/allowedTypes.js.map +1 -1
- package/dist/simple-tree/core/context.d.ts +2 -2
- package/dist/simple-tree/core/context.d.ts.map +1 -1
- package/dist/simple-tree/core/context.js.map +1 -1
- package/dist/simple-tree/core/index.d.ts +3 -3
- package/dist/simple-tree/core/index.d.ts.map +1 -1
- package/dist/simple-tree/core/index.js +5 -4
- package/dist/simple-tree/core/index.js.map +1 -1
- package/dist/simple-tree/core/toStored.d.ts +3 -3
- package/dist/simple-tree/core/toStored.d.ts.map +1 -1
- package/dist/simple-tree/core/toStored.js +2 -2
- package/dist/simple-tree/core/toStored.js.map +1 -1
- package/dist/simple-tree/core/treeNode.d.ts +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/core/treeNodeKernel.d.ts +7 -11
- package/dist/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
- package/dist/simple-tree/core/treeNodeKernel.js +24 -47
- package/dist/simple-tree/core/treeNodeKernel.js.map +1 -1
- package/dist/simple-tree/core/treeNodeSchema.d.ts +3 -3
- 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.map +1 -1
- package/dist/simple-tree/core/walkSchema.d.ts +3 -3
- 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/createContext.js +2 -2
- package/dist/simple-tree/createContext.js.map +1 -1
- package/dist/simple-tree/fieldSchema.d.ts +9 -32
- package/dist/simple-tree/fieldSchema.d.ts.map +1 -1
- package/dist/simple-tree/fieldSchema.js +12 -20
- package/dist/simple-tree/fieldSchema.js.map +1 -1
- package/dist/simple-tree/getTreeNodeForField.js +1 -1
- package/dist/simple-tree/getTreeNodeForField.js.map +1 -1
- package/dist/simple-tree/index.d.ts +4 -4
- package/dist/simple-tree/index.d.ts.map +1 -1
- package/dist/simple-tree/index.js +7 -3
- package/dist/simple-tree/index.js.map +1 -1
- package/dist/simple-tree/node-kinds/array/arrayNode.d.ts +2 -2
- package/dist/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/array/arrayNode.js +7 -8
- package/dist/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
- package/dist/simple-tree/node-kinds/array/arrayNodeTypes.d.ts +3 -3
- package/dist/simple-tree/node-kinds/array/arrayNodeTypes.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/array/arrayNodeTypes.js.map +1 -1
- package/dist/simple-tree/node-kinds/common.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/common.js +2 -2
- package/dist/simple-tree/node-kinds/common.js.map +1 -1
- package/dist/simple-tree/node-kinds/index.d.ts +1 -1
- package/dist/simple-tree/node-kinds/index.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/index.js.map +1 -1
- package/dist/simple-tree/node-kinds/map/mapNode.d.ts +2 -2
- package/dist/simple-tree/node-kinds/map/mapNode.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/map/mapNode.js +5 -5
- package/dist/simple-tree/node-kinds/map/mapNode.js.map +1 -1
- package/dist/simple-tree/node-kinds/map/mapNodeTypes.d.ts +3 -3
- package/dist/simple-tree/node-kinds/map/mapNodeTypes.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/map/mapNodeTypes.js.map +1 -1
- package/dist/simple-tree/node-kinds/object/index.d.ts +2 -2
- package/dist/simple-tree/node-kinds/object/index.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/object/index.js.map +1 -1
- package/dist/simple-tree/node-kinds/object/objectNode.d.ts +5 -18
- package/dist/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/object/objectNode.js +8 -18
- package/dist/simple-tree/node-kinds/object/objectNode.js.map +1 -1
- package/dist/simple-tree/node-kinds/object/objectNodeTypes.d.ts +4 -11
- package/dist/simple-tree/node-kinds/object/objectNodeTypes.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/object/objectNodeTypes.js.map +1 -1
- package/dist/simple-tree/node-kinds/record/recordNode.d.ts +3 -3
- package/dist/simple-tree/node-kinds/record/recordNode.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/record/recordNode.js +9 -9
- package/dist/simple-tree/node-kinds/record/recordNode.js.map +1 -1
- package/dist/simple-tree/node-kinds/record/recordNodeTypes.d.ts +5 -5
- 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/prepareForInsertion.d.ts +39 -7
- package/dist/simple-tree/prepareForInsertion.d.ts.map +1 -1
- package/dist/simple-tree/prepareForInsertion.js +43 -15
- package/dist/simple-tree/prepareForInsertion.js.map +1 -1
- package/dist/simple-tree/toStoredSchema.d.ts +8 -8
- package/dist/simple-tree/toStoredSchema.d.ts.map +1 -1
- package/dist/simple-tree/toStoredSchema.js +5 -5
- package/dist/simple-tree/toStoredSchema.js.map +1 -1
- package/dist/simple-tree/unhydratedFlexTreeFromInsertable.d.ts +2 -2
- package/dist/simple-tree/unhydratedFlexTreeFromInsertable.d.ts.map +1 -1
- package/dist/simple-tree/unhydratedFlexTreeFromInsertable.js.map +1 -1
- package/dist/simple-tree/unsafeUnknownSchema.d.ts.map +1 -1
- package/dist/simple-tree/unsafeUnknownSchema.js.map +1 -1
- package/dist/simple-tree/walkFieldSchema.js +1 -1
- package/dist/simple-tree/walkFieldSchema.js.map +1 -1
- package/dist/tableSchema.d.ts +19 -19
- package/dist/tableSchema.d.ts.map +1 -1
- package/dist/tableSchema.js +2 -2
- package/dist/tableSchema.js.map +1 -1
- package/lib/alpha.d.ts +18 -13
- package/lib/beta.d.ts +5 -0
- package/lib/feature-libraries/chunked-forest/chunkTree.d.ts +67 -13
- package/lib/feature-libraries/chunked-forest/chunkTree.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/chunkTree.js +68 -32
- package/lib/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/codecs.d.ts +5 -5
- package/lib/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/codecs.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/incrementalEncodingPolicy.d.ts +23 -0
- package/lib/feature-libraries/chunked-forest/codec/incrementalEncodingPolicy.d.ts.map +1 -0
- package/lib/feature-libraries/chunked-forest/codec/incrementalEncodingPolicy.js +11 -0
- package/lib/feature-libraries/chunked-forest/codec/incrementalEncodingPolicy.js.map +1 -0
- package/lib/feature-libraries/chunked-forest/codec/index.d.ts +1 -0
- package/lib/feature-libraries/chunked-forest/codec/index.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/index.js +1 -0
- package/lib/feature-libraries/chunked-forest/codec/index.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncode.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncode.js +3 -2
- package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncode.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/flexTreeTypes.d.ts +1 -1
- package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
- package/lib/feature-libraries/forest-summary/forestSummarizer.d.ts +3 -3
- package/lib/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
- package/lib/feature-libraries/forest-summary/forestSummarizer.js +3 -3
- package/lib/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
- package/lib/feature-libraries/forest-summary/incrementalSummaryBuilder.d.ts +4 -11
- package/lib/feature-libraries/forest-summary/incrementalSummaryBuilder.d.ts.map +1 -1
- package/lib/feature-libraries/forest-summary/incrementalSummaryBuilder.js +2 -6
- package/lib/feature-libraries/forest-summary/incrementalSummaryBuilder.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/treeCursorUtils.d.ts.map +1 -1
- package/lib/feature-libraries/treeCursorUtils.js +17 -15
- package/lib/feature-libraries/treeCursorUtils.js.map +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js.map +1 -1
- package/lib/jsonDomainSchema.d.ts +5 -5
- package/lib/jsonDomainSchema.js +5 -5
- package/lib/jsonDomainSchema.js.map +1 -1
- package/lib/legacy.d.ts +5 -0
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/public.d.ts +1 -0
- package/lib/serializableDomainSchema.d.ts +6 -6
- package/lib/serializableDomainSchema.js +5 -5
- package/lib/serializableDomainSchema.js.map +1 -1
- package/lib/shared-tree/independentView.d.ts.map +1 -1
- package/lib/shared-tree/independentView.js +3 -3
- package/lib/shared-tree/independentView.js.map +1 -1
- package/lib/shared-tree/schematizingTreeView.d.ts +5 -0
- package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/lib/shared-tree/schematizingTreeView.js +41 -11
- package/lib/shared-tree/schematizingTreeView.js.map +1 -1
- package/lib/shared-tree/sharedTree.d.ts +6 -8
- package/lib/shared-tree/sharedTree.d.ts.map +1 -1
- package/lib/shared-tree/sharedTree.js +7 -9
- package/lib/shared-tree/sharedTree.js.map +1 -1
- package/lib/shared-tree/tree.js +2 -2
- package/lib/shared-tree/tree.js.map +1 -1
- package/lib/shared-tree/treeAlpha.d.ts +20 -28
- package/lib/shared-tree/treeAlpha.d.ts.map +1 -1
- package/lib/shared-tree/treeAlpha.js +5 -30
- package/lib/shared-tree/treeAlpha.js.map +1 -1
- package/lib/simple-tree/api/conciseTree.d.ts +1 -1
- package/lib/simple-tree/api/conciseTree.js.map +1 -1
- package/lib/simple-tree/api/configuration.d.ts +0 -3
- package/lib/simple-tree/api/configuration.d.ts.map +1 -1
- package/lib/simple-tree/api/configuration.js +2 -5
- package/lib/simple-tree/api/configuration.js.map +1 -1
- package/lib/simple-tree/api/customTree.d.ts +7 -7
- package/lib/simple-tree/api/customTree.js +5 -5
- package/lib/simple-tree/api/customTree.js.map +1 -1
- package/lib/simple-tree/api/discrepancies.js +3 -3
- package/lib/simple-tree/api/discrepancies.js.map +1 -1
- package/lib/simple-tree/api/index.d.ts +3 -3
- package/lib/simple-tree/api/index.d.ts.map +1 -1
- package/lib/simple-tree/api/index.js +1 -1
- package/lib/simple-tree/api/index.js.map +1 -1
- package/lib/simple-tree/api/schemaFactory.d.ts +12 -4
- package/lib/simple-tree/api/schemaFactory.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaFactory.js +3 -8
- package/lib/simple-tree/api/schemaFactory.js.map +1 -1
- package/lib/simple-tree/api/schemaFactoryAlpha.d.ts +64 -28
- package/lib/simple-tree/api/schemaFactoryAlpha.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaFactoryAlpha.js +43 -12
- package/lib/simple-tree/api/schemaFactoryAlpha.js.map +1 -1
- package/lib/simple-tree/api/schemaFactoryBeta.d.ts +13 -2
- package/lib/simple-tree/api/schemaFactoryBeta.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaFactoryBeta.js +16 -2
- package/lib/simple-tree/api/schemaFactoryBeta.js.map +1 -1
- package/lib/simple-tree/api/schemaStatics.d.ts +9 -14
- package/lib/simple-tree/api/schemaStatics.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaStatics.js +12 -12
- package/lib/simple-tree/api/schemaStatics.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 +1 -1
- package/lib/simple-tree/api/storedSchema.js.map +1 -1
- package/lib/simple-tree/api/tree.d.ts +3 -3
- package/lib/simple-tree/api/tree.js.map +1 -1
- package/lib/simple-tree/api/treeBeta.d.ts +52 -2
- package/lib/simple-tree/api/treeBeta.d.ts.map +1 -1
- package/lib/simple-tree/api/treeBeta.js +34 -2
- package/lib/simple-tree/api/treeBeta.js.map +1 -1
- package/lib/simple-tree/api/treeNodeApi.js +5 -5
- package/lib/simple-tree/api/treeNodeApi.js.map +1 -1
- package/lib/simple-tree/api/typesUnsafe.d.ts +60 -1
- package/lib/simple-tree/api/typesUnsafe.d.ts.map +1 -1
- package/lib/simple-tree/api/typesUnsafe.js.map +1 -1
- package/lib/simple-tree/core/allowedTypes.d.ts +120 -62
- package/lib/simple-tree/core/allowedTypes.d.ts.map +1 -1
- package/lib/simple-tree/core/allowedTypes.js +158 -80
- package/lib/simple-tree/core/allowedTypes.js.map +1 -1
- package/lib/simple-tree/core/context.d.ts +2 -2
- package/lib/simple-tree/core/context.d.ts.map +1 -1
- package/lib/simple-tree/core/context.js.map +1 -1
- package/lib/simple-tree/core/index.d.ts +3 -3
- package/lib/simple-tree/core/index.d.ts.map +1 -1
- package/lib/simple-tree/core/index.js +2 -2
- package/lib/simple-tree/core/index.js.map +1 -1
- package/lib/simple-tree/core/toStored.d.ts +3 -3
- package/lib/simple-tree/core/toStored.d.ts.map +1 -1
- package/lib/simple-tree/core/toStored.js +3 -3
- package/lib/simple-tree/core/toStored.js.map +1 -1
- package/lib/simple-tree/core/treeNode.d.ts +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/core/treeNodeKernel.d.ts +7 -11
- package/lib/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
- package/lib/simple-tree/core/treeNodeKernel.js +23 -46
- package/lib/simple-tree/core/treeNodeKernel.js.map +1 -1
- package/lib/simple-tree/core/treeNodeSchema.d.ts +3 -3
- 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.map +1 -1
- package/lib/simple-tree/core/walkSchema.d.ts +3 -3
- package/lib/simple-tree/core/walkSchema.d.ts.map +1 -1
- package/lib/simple-tree/core/walkSchema.js +2 -2
- package/lib/simple-tree/core/walkSchema.js.map +1 -1
- package/lib/simple-tree/createContext.js +3 -3
- package/lib/simple-tree/createContext.js.map +1 -1
- package/lib/simple-tree/fieldSchema.d.ts +9 -32
- package/lib/simple-tree/fieldSchema.d.ts.map +1 -1
- package/lib/simple-tree/fieldSchema.js +13 -21
- package/lib/simple-tree/fieldSchema.js.map +1 -1
- package/lib/simple-tree/getTreeNodeForField.js +1 -1
- package/lib/simple-tree/getTreeNodeForField.js.map +1 -1
- package/lib/simple-tree/index.d.ts +4 -4
- 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/node-kinds/array/arrayNode.d.ts +2 -2
- package/lib/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/array/arrayNode.js +8 -9
- package/lib/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
- package/lib/simple-tree/node-kinds/array/arrayNodeTypes.d.ts +3 -3
- package/lib/simple-tree/node-kinds/array/arrayNodeTypes.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/array/arrayNodeTypes.js.map +1 -1
- package/lib/simple-tree/node-kinds/common.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/common.js +3 -3
- package/lib/simple-tree/node-kinds/common.js.map +1 -1
- package/lib/simple-tree/node-kinds/index.d.ts +1 -1
- package/lib/simple-tree/node-kinds/index.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/index.js.map +1 -1
- package/lib/simple-tree/node-kinds/map/mapNode.d.ts +2 -2
- package/lib/simple-tree/node-kinds/map/mapNode.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/map/mapNode.js +6 -6
- package/lib/simple-tree/node-kinds/map/mapNode.js.map +1 -1
- package/lib/simple-tree/node-kinds/map/mapNodeTypes.d.ts +3 -3
- package/lib/simple-tree/node-kinds/map/mapNodeTypes.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/map/mapNodeTypes.js.map +1 -1
- package/lib/simple-tree/node-kinds/object/index.d.ts +2 -2
- package/lib/simple-tree/node-kinds/object/index.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/object/index.js.map +1 -1
- package/lib/simple-tree/node-kinds/object/objectNode.d.ts +5 -18
- package/lib/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/object/objectNode.js +9 -18
- package/lib/simple-tree/node-kinds/object/objectNode.js.map +1 -1
- package/lib/simple-tree/node-kinds/object/objectNodeTypes.d.ts +4 -11
- package/lib/simple-tree/node-kinds/object/objectNodeTypes.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/object/objectNodeTypes.js.map +1 -1
- package/lib/simple-tree/node-kinds/record/recordNode.d.ts +3 -3
- package/lib/simple-tree/node-kinds/record/recordNode.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/record/recordNode.js +10 -10
- package/lib/simple-tree/node-kinds/record/recordNode.js.map +1 -1
- package/lib/simple-tree/node-kinds/record/recordNodeTypes.d.ts +5 -5
- 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/prepareForInsertion.d.ts +39 -7
- package/lib/simple-tree/prepareForInsertion.d.ts.map +1 -1
- package/lib/simple-tree/prepareForInsertion.js +45 -17
- package/lib/simple-tree/prepareForInsertion.js.map +1 -1
- package/lib/simple-tree/toStoredSchema.d.ts +8 -8
- package/lib/simple-tree/toStoredSchema.d.ts.map +1 -1
- package/lib/simple-tree/toStoredSchema.js +5 -5
- package/lib/simple-tree/toStoredSchema.js.map +1 -1
- package/lib/simple-tree/unhydratedFlexTreeFromInsertable.d.ts +2 -2
- package/lib/simple-tree/unhydratedFlexTreeFromInsertable.d.ts.map +1 -1
- package/lib/simple-tree/unhydratedFlexTreeFromInsertable.js +1 -1
- package/lib/simple-tree/unhydratedFlexTreeFromInsertable.js.map +1 -1
- package/lib/simple-tree/unsafeUnknownSchema.d.ts.map +1 -1
- package/lib/simple-tree/unsafeUnknownSchema.js.map +1 -1
- package/lib/simple-tree/walkFieldSchema.js +1 -1
- package/lib/simple-tree/walkFieldSchema.js.map +1 -1
- package/lib/tableSchema.d.ts +19 -19
- package/lib/tableSchema.d.ts.map +1 -1
- package/lib/tableSchema.js +2 -2
- package/lib/tableSchema.js.map +1 -1
- package/package.json +23 -21
- package/src/feature-libraries/chunked-forest/chunkTree.ts +112 -45
- package/src/feature-libraries/chunked-forest/codec/codecs.ts +4 -9
- package/src/feature-libraries/chunked-forest/codec/incrementalEncodingPolicy.ts +33 -0
- package/src/feature-libraries/chunked-forest/codec/index.ts +4 -0
- package/src/feature-libraries/chunked-forest/codec/schemaBasedEncode.ts +4 -7
- package/src/feature-libraries/chunked-forest/index.ts +2 -0
- package/src/feature-libraries/flex-tree/flexTreeTypes.ts +1 -1
- package/src/feature-libraries/forest-summary/forestSummarizer.ts +8 -12
- package/src/feature-libraries/forest-summary/incrementalSummaryBuilder.ts +3 -12
- package/src/feature-libraries/index.ts +2 -0
- package/src/feature-libraries/treeCursorUtils.ts +34 -19
- package/src/index.ts +14 -10
- package/src/jsonDomainSchema.ts +5 -5
- package/src/packageVersion.ts +1 -1
- package/src/serializableDomainSchema.ts +6 -6
- package/src/shared-tree/independentView.ts +3 -0
- package/src/shared-tree/schematizingTreeView.ts +58 -9
- package/src/shared-tree/sharedTree.ts +33 -20
- package/src/shared-tree/tree.ts +2 -2
- package/src/shared-tree/treeAlpha.ts +35 -84
- package/src/simple-tree/api/conciseTree.ts +1 -1
- package/src/simple-tree/api/configuration.ts +3 -7
- package/src/simple-tree/api/customTree.ts +7 -7
- package/src/simple-tree/api/discrepancies.ts +3 -3
- package/src/simple-tree/api/index.ts +17 -2
- package/src/simple-tree/api/schemaFactory.ts +18 -73
- package/src/simple-tree/api/schemaFactoryAlpha.ts +118 -25
- package/src/simple-tree/api/schemaFactoryBeta.ts +76 -1
- package/src/simple-tree/api/schemaStatics.ts +19 -61
- package/src/simple-tree/api/storedSchema.ts +2 -6
- package/src/simple-tree/api/tree.ts +3 -3
- package/src/simple-tree/api/treeBeta.ts +137 -4
- package/src/simple-tree/api/treeNodeApi.ts +5 -5
- package/src/simple-tree/api/typesUnsafe.ts +81 -0
- package/src/simple-tree/core/TreeNodeBinding.md +14 -70
- package/src/simple-tree/core/allowedTypes.ts +355 -159
- package/src/simple-tree/core/context.ts +2 -2
- package/src/simple-tree/core/index.ts +11 -9
- package/src/simple-tree/core/toStored.ts +7 -5
- package/src/simple-tree/core/treeNode.ts +1 -1
- package/src/simple-tree/core/treeNodeKernel.ts +25 -59
- package/src/simple-tree/core/treeNodeSchema.ts +3 -6
- package/src/simple-tree/core/treeNodeValid.ts +2 -2
- package/src/simple-tree/core/walkSchema.ts +9 -5
- package/src/simple-tree/createContext.ts +3 -3
- package/src/simple-tree/fieldSchema.ts +24 -98
- package/src/simple-tree/getTreeNodeForField.ts +1 -1
- package/src/simple-tree/index.ts +19 -11
- package/src/simple-tree/node-kinds/array/arrayNode.ts +12 -17
- package/src/simple-tree/node-kinds/array/arrayNodeTypes.ts +7 -8
- package/src/simple-tree/node-kinds/common.ts +5 -3
- package/src/simple-tree/node-kinds/index.ts +0 -2
- package/src/simple-tree/node-kinds/map/mapNode.ts +8 -16
- package/src/simple-tree/node-kinds/map/mapNodeTypes.ts +7 -8
- package/src/simple-tree/node-kinds/object/index.ts +0 -2
- package/src/simple-tree/node-kinds/object/objectNode.ts +17 -55
- package/src/simple-tree/node-kinds/object/objectNodeTypes.ts +5 -19
- package/src/simple-tree/node-kinds/record/recordNode.ts +16 -23
- package/src/simple-tree/node-kinds/record/recordNodeTypes.ts +7 -11
- package/src/simple-tree/prepareForInsertion.ts +92 -30
- package/src/simple-tree/toStoredSchema.ts +8 -9
- package/src/simple-tree/unhydratedFlexTreeFromInsertable.ts +2 -6
- package/src/simple-tree/unsafeUnknownSchema.ts +2 -3
- package/src/simple-tree/walkFieldSchema.ts +1 -1
- package/src/tableSchema.ts +24 -37
|
@@ -10,7 +10,7 @@ export {
|
|
|
10
10
|
tryGetTreeNodeSchema,
|
|
11
11
|
type InnerNode,
|
|
12
12
|
tryDisposeTreeNode,
|
|
13
|
-
|
|
13
|
+
getInnerNode,
|
|
14
14
|
treeNodeFromAnchor,
|
|
15
15
|
getSimpleNodeSchemaFromInnerNode,
|
|
16
16
|
SimpleContextSlot,
|
|
@@ -53,31 +53,33 @@ export {
|
|
|
53
53
|
isAnnotatedAllowedTypes,
|
|
54
54
|
isAnnotatedAllowedType,
|
|
55
55
|
normalizeAllowedTypes,
|
|
56
|
-
|
|
56
|
+
normalizeAndEvaluateAnnotatedAllowedTypes,
|
|
57
57
|
normalizeToAnnotatedAllowedType,
|
|
58
|
-
unannotateImplicitAllowedTypes,
|
|
59
58
|
markSchemaMostDerived,
|
|
60
59
|
evaluateLazySchema,
|
|
61
60
|
createSchemaUpgrade,
|
|
62
|
-
|
|
61
|
+
AnnotatedAllowedTypesInternal,
|
|
62
|
+
normalizeAllowedTypesInternal,
|
|
63
63
|
} from "./allowedTypes.js";
|
|
64
64
|
export type {
|
|
65
65
|
AnnotatedAllowedType,
|
|
66
|
-
|
|
66
|
+
AllowedTypesFullEvaluated,
|
|
67
67
|
ImplicitAllowedTypes,
|
|
68
|
-
ImplicitAnnotatedAllowedTypes,
|
|
69
|
-
UnannotateImplicitAllowedTypes,
|
|
70
68
|
AllowedTypesMetadata,
|
|
71
69
|
AllowedTypes,
|
|
72
70
|
TreeNodeFromImplicitAllowedTypes,
|
|
73
71
|
InsertableTreeNodeFromImplicitAllowedTypes,
|
|
74
72
|
InsertableTreeNodeFromAllowedTypes,
|
|
75
73
|
Input,
|
|
76
|
-
UnannotateAllowedTypes,
|
|
77
|
-
UnannotateAllowedType,
|
|
78
74
|
UnannotateAllowedTypesList,
|
|
79
75
|
AllowedTypeMetadata,
|
|
80
76
|
AnnotatedAllowedTypes,
|
|
77
|
+
AnnotateAllowedTypesList,
|
|
78
|
+
SchemaUpgrade,
|
|
79
|
+
AllowedTypesFullInternal,
|
|
80
|
+
AllowedTypesFull,
|
|
81
|
+
AllowedTypesFullFromMixed,
|
|
82
|
+
NumberKeys,
|
|
81
83
|
} from "./allowedTypes.js";
|
|
82
84
|
export { walkAllowedTypes, walkNodeSchema, type SchemaVisitor } from "./walkSchema.js";
|
|
83
85
|
export { Context, HydratedContext } from "./context.js";
|
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
|
|
6
6
|
import { brand } from "../../util/index.js";
|
|
7
7
|
import {
|
|
8
|
-
|
|
8
|
+
normalizeAndEvaluateAnnotatedAllowedTypes,
|
|
9
9
|
type AnnotatedAllowedType,
|
|
10
|
-
type
|
|
10
|
+
type ImplicitAllowedTypes,
|
|
11
11
|
type SchemaUpgrade,
|
|
12
12
|
} from "./allowedTypes.js";
|
|
13
13
|
import type { TreeNodeSchemaIdentifier, TreeTypeSet } from "../../core/index.js";
|
|
@@ -42,16 +42,18 @@ export function allowedTypeFilter(
|
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
/**
|
|
45
|
-
* Converts an
|
|
45
|
+
* Converts an ImplicitAllowedTypes to a stored schema.
|
|
46
46
|
* @param schema - The schema to convert.
|
|
47
47
|
* @param options - The options to use for filtering.
|
|
48
48
|
* @returns The converted stored schema.
|
|
49
49
|
*/
|
|
50
50
|
export function convertAllowedTypes(
|
|
51
|
-
schema:
|
|
51
|
+
schema: ImplicitAllowedTypes,
|
|
52
52
|
options: StoredSchemaGenerationOptions,
|
|
53
53
|
): TreeTypeSet {
|
|
54
|
-
const filtered: TreeNodeSchemaIdentifier[] =
|
|
54
|
+
const filtered: TreeNodeSchemaIdentifier[] = normalizeAndEvaluateAnnotatedAllowedTypes(
|
|
55
|
+
schema,
|
|
56
|
+
)
|
|
55
57
|
.types.filter((allowedType) => allowedTypeFilter(allowedType, options))
|
|
56
58
|
.map((a) => brand(a.type.identifier));
|
|
57
59
|
return new Set(filtered);
|
|
@@ -29,7 +29,7 @@ import { markEager } from "./flexList.js";
|
|
|
29
29
|
* 2. Explicit construction of {@link Unhydrated} nodes using either {@link TreeNodeSchemaClass} as a constructor or {@link TreeNodeSchemaNonClass|TreeNodeSchemaNonClass.create}.
|
|
30
30
|
* Either way the {@link TreeNodeSchema} produced must be produced using a {@link SchemaFactory}.
|
|
31
31
|
* There are also higher level APIs which wrap these, including {@link (TreeBeta:interface).create}, {@link (TreeBeta:interface).clone},
|
|
32
|
-
* and import APIs like {@link (
|
|
32
|
+
* and import APIs like {@link (TreeBeta:interface).importConcise}, {@link (TreeAlpha:interface).importVerbose}, and {@link (TreeAlpha:interface).importCompressed}.
|
|
33
33
|
*
|
|
34
34
|
* 3. Implicit construction: Several APIs which logically require an unhydrated TreeNode also allow passing in a value which could be used to explicitly construct the node instead.
|
|
35
35
|
* These APIs internally call the constructor with the provided value (typically behaving like {@link (TreeAlpha:interface).create}), so it's really just a special case of the above option.
|
|
@@ -17,14 +17,11 @@ import {
|
|
|
17
17
|
anchorSlot,
|
|
18
18
|
type AnchorEvents,
|
|
19
19
|
type AnchorNode,
|
|
20
|
-
type AnchorSet,
|
|
21
20
|
type FieldKey,
|
|
22
21
|
type TreeValue,
|
|
23
|
-
type UpPath,
|
|
24
22
|
} from "../../core/index.js";
|
|
25
23
|
import { getOrCreateHydratedFlexTreeNode } from "../../feature-libraries/index.js";
|
|
26
24
|
import {
|
|
27
|
-
assertFlexTreeEntityNotFreed,
|
|
28
25
|
ContextSlot,
|
|
29
26
|
flexTreeSlot,
|
|
30
27
|
LazyEntity,
|
|
@@ -85,10 +82,8 @@ interface UnhydratedState {
|
|
|
85
82
|
|
|
86
83
|
/** The {@link HydrationState} of a {@link TreeNodeKernel} after the kernel is hydrated */
|
|
87
84
|
interface HydratedState {
|
|
88
|
-
/** The flex node for this kernel
|
|
89
|
-
innerNode
|
|
90
|
-
/** The {@link AnchorNode} that this node is associated with. */
|
|
91
|
-
readonly anchorNode: AnchorNode;
|
|
85
|
+
/** The flex node for this kernel */
|
|
86
|
+
readonly innerNode: HydratedFlexTreeNode;
|
|
92
87
|
/** All {@link Off | event deregistration functions} that should be run when the kernel is disposed. */
|
|
93
88
|
readonly offAnchorNode: Set<Off>;
|
|
94
89
|
}
|
|
@@ -98,7 +93,7 @@ type HydrationState = UnhydratedState | HydratedState;
|
|
|
98
93
|
|
|
99
94
|
/** True if and only if the given {@link HydrationState} is post-hydration */
|
|
100
95
|
function isHydrated(state: HydrationState): state is HydratedState {
|
|
101
|
-
return (
|
|
96
|
+
return state.innerNode.isHydrated();
|
|
102
97
|
}
|
|
103
98
|
|
|
104
99
|
/**
|
|
@@ -137,7 +132,7 @@ export class TreeNodeKernel {
|
|
|
137
132
|
* Create a TreeNodeKernel which can be looked up with {@link getKernel}.
|
|
138
133
|
*
|
|
139
134
|
* @param initialContext - context from when this node was originally created. Only used when unhydrated.
|
|
140
|
-
* @param innerNode - When unhydrated
|
|
135
|
+
* @param innerNode - When unhydrated the MapTreeNode. Otherwise HydratedFlexTreeNode.
|
|
141
136
|
* @remarks
|
|
142
137
|
* Exactly one kernel per TreeNode should be created.
|
|
143
138
|
*/
|
|
@@ -165,9 +160,7 @@ export class TreeNodeKernel {
|
|
|
165
160
|
this.#eventBuffer = new KernelEventBuffer(innerNode.events);
|
|
166
161
|
} else {
|
|
167
162
|
// Hydrated case
|
|
168
|
-
this.#hydrationState = this.createHydratedState(innerNode
|
|
169
|
-
this.#hydrationState.innerNode = innerNode;
|
|
170
|
-
|
|
163
|
+
this.#hydrationState = this.createHydratedState(innerNode);
|
|
171
164
|
this.#eventBuffer = new KernelEventBuffer(innerNode.anchorNode.events);
|
|
172
165
|
}
|
|
173
166
|
}
|
|
@@ -176,7 +169,7 @@ export class TreeNodeKernel {
|
|
|
176
169
|
if (isHydrated(this.#hydrationState)) {
|
|
177
170
|
// This can't be cached on this.#hydrated during hydration since initial tree is hydrated before the context is cached on the anchorSet.
|
|
178
171
|
return (
|
|
179
|
-
this.#hydrationState
|
|
172
|
+
this.#hydrationState.innerNode.anchorNode.anchorSet.slots.get(SimpleContextSlot) ??
|
|
180
173
|
fail(0xb40 /* missing simple-tree context */)
|
|
181
174
|
);
|
|
182
175
|
}
|
|
@@ -185,38 +178,33 @@ export class TreeNodeKernel {
|
|
|
185
178
|
|
|
186
179
|
/**
|
|
187
180
|
* Transition from {@link Unhydrated} to hydrated.
|
|
188
|
-
* Bi-directionally associates the given hydrated TreeNode to the
|
|
181
|
+
* Bi-directionally associates the given hydrated TreeNode to the HydratedFlexTreeNode.
|
|
189
182
|
* @remarks
|
|
190
183
|
* Happens at most once for any given node.
|
|
191
184
|
* Cleans up mappings to {@link UnhydratedFlexTreeNode} - it is assumed that they are no longer needed once this node has an anchor node.
|
|
192
185
|
*/
|
|
193
|
-
public hydrate(
|
|
186
|
+
public hydrate(inner: HydratedFlexTreeNode): void {
|
|
194
187
|
assert(!this.disposed, 0xa2a /* cannot hydrate a disposed node */);
|
|
195
188
|
assert(!isHydrated(this.#hydrationState), 0xa2b /* hydration should only happen once */);
|
|
196
189
|
|
|
197
|
-
|
|
198
|
-
const anchorNode =
|
|
199
|
-
anchors.locate(anchor) ?? fail(0xb42 /* Expected anchor node to be present */);
|
|
200
|
-
|
|
201
|
-
this.#hydrationState = this.createHydratedState(anchorNode);
|
|
202
|
-
this.#hydrationState.offAnchorNode.add(() => anchors.forget(anchor));
|
|
190
|
+
this.#hydrationState = this.createHydratedState(inner);
|
|
203
191
|
|
|
204
192
|
// Lazily migrate existing event listeners to the anchor node
|
|
205
|
-
this.#eventBuffer.migrateEventSource(anchorNode.events);
|
|
193
|
+
this.#eventBuffer.migrateEventSource(inner.anchorNode.events);
|
|
206
194
|
}
|
|
207
195
|
|
|
208
|
-
private createHydratedState(
|
|
196
|
+
private createHydratedState(innerNode: HydratedFlexTreeNode): HydratedState {
|
|
209
197
|
assert(
|
|
210
|
-
!anchorNode.slots.has(simpleTreeNodeSlot),
|
|
198
|
+
!innerNode.anchorNode.slots.has(simpleTreeNodeSlot),
|
|
211
199
|
0x7f5 /* Cannot associate an flex node with multiple simple-tree nodes */,
|
|
212
200
|
);
|
|
213
|
-
anchorNode.slots.set(simpleTreeNodeSlot, this.node);
|
|
201
|
+
innerNode.anchorNode.slots.set(simpleTreeNodeSlot, this.node);
|
|
214
202
|
return {
|
|
215
|
-
|
|
203
|
+
innerNode,
|
|
216
204
|
offAnchorNode: new Set([
|
|
217
|
-
anchorNode.events.on("afterDestroy", () => this.dispose()),
|
|
205
|
+
innerNode.anchorNode.events.on("afterDestroy", () => this.dispose()),
|
|
218
206
|
// TODO: this should be triggered on change even for unhydrated nodes.
|
|
219
|
-
anchorNode.events.on("childrenChanging", () => {
|
|
207
|
+
innerNode.anchorNode.events.on("childrenChanging", () => {
|
|
220
208
|
this.generationNumber += 1;
|
|
221
209
|
}),
|
|
222
210
|
]),
|
|
@@ -232,7 +220,7 @@ export class TreeNodeKernel {
|
|
|
232
220
|
}
|
|
233
221
|
|
|
234
222
|
// TODO: Replace this check with the proper check against the cursor state when the cursor becomes part of the kernel
|
|
235
|
-
const flex = this.#hydrationState.anchorNode.slots.get(flexTreeSlot);
|
|
223
|
+
const flex = this.#hydrationState.innerNode.anchorNode.slots.get(flexTreeSlot);
|
|
236
224
|
if (flex !== undefined) {
|
|
237
225
|
assert(flex instanceof LazyEntity, 0x9b4 /* Unexpected flex node implementation */);
|
|
238
226
|
if (flex.isFreed()) {
|
|
@@ -240,7 +228,7 @@ export class TreeNodeKernel {
|
|
|
240
228
|
}
|
|
241
229
|
}
|
|
242
230
|
|
|
243
|
-
return treeStatusFromAnchorCache(this.#hydrationState.anchorNode);
|
|
231
|
+
return treeStatusFromAnchorCache(this.#hydrationState.innerNode.anchorNode);
|
|
244
232
|
}
|
|
245
233
|
|
|
246
234
|
public get events(): Listenable<KernelEvents> {
|
|
@@ -264,7 +252,9 @@ export class TreeNodeKernel {
|
|
|
264
252
|
}
|
|
265
253
|
|
|
266
254
|
public get anchorNode(): AnchorNode | undefined {
|
|
267
|
-
return isHydrated(this.#hydrationState)
|
|
255
|
+
return isHydrated(this.#hydrationState)
|
|
256
|
+
? this.#hydrationState.innerNode.anchorNode
|
|
257
|
+
: undefined;
|
|
268
258
|
}
|
|
269
259
|
|
|
270
260
|
/**
|
|
@@ -273,11 +263,10 @@ export class TreeNodeKernel {
|
|
|
273
263
|
* For {@link Unhydrated} nodes, this returns the MapTreeNode.
|
|
274
264
|
*
|
|
275
265
|
* For hydrated nodes it returns a FlexTreeNode backed by the forest.
|
|
276
|
-
* Note that for "marinated" nodes, this FlexTreeNode exists and returns it: it does not return the MapTreeNode which is the current InnerNode.
|
|
277
266
|
*
|
|
278
267
|
* @throws A {@link @fluidframework/telemetry-utils#UsageError} if the node has been deleted.
|
|
279
268
|
*/
|
|
280
|
-
public
|
|
269
|
+
public getInnerNode(): InnerNode {
|
|
281
270
|
if (!isHydrated(this.#hydrationState)) {
|
|
282
271
|
debugAssert(
|
|
283
272
|
() =>
|
|
@@ -291,26 +280,6 @@ export class TreeNodeKernel {
|
|
|
291
280
|
throw new UsageError("Cannot access a deleted node.");
|
|
292
281
|
}
|
|
293
282
|
|
|
294
|
-
if (this.#hydrationState.innerNode === undefined) {
|
|
295
|
-
// Marinated case -> cooked
|
|
296
|
-
const anchorNode = this.#hydrationState.anchorNode;
|
|
297
|
-
// This TreeNode is bound to an anchor node, but it may or may not have an actual flex node yet
|
|
298
|
-
const flexNode = anchorNode.slots.get(flexTreeSlot);
|
|
299
|
-
if (flexNode !== undefined) {
|
|
300
|
-
// If the flex node already exists, use it...
|
|
301
|
-
this.#hydrationState.innerNode = flexNode;
|
|
302
|
-
} else {
|
|
303
|
-
// ...otherwise, the flex node must be created
|
|
304
|
-
const context =
|
|
305
|
-
anchorNode.anchorSet.slots.get(ContextSlot) ?? fail(0xb41 /* missing context */);
|
|
306
|
-
const cursor = context.checkout.forest.allocateCursor("getFlexNode");
|
|
307
|
-
context.checkout.forest.moveCursorToPath(anchorNode, cursor);
|
|
308
|
-
this.#hydrationState.innerNode = getOrCreateHydratedFlexTreeNode(context, cursor);
|
|
309
|
-
cursor.free();
|
|
310
|
-
assertFlexTreeEntityNotFreed(this.#hydrationState.innerNode);
|
|
311
|
-
}
|
|
312
|
-
}
|
|
313
|
-
|
|
314
283
|
return this.#hydrationState.innerNode;
|
|
315
284
|
}
|
|
316
285
|
|
|
@@ -553,10 +522,8 @@ class KernelEventBuffer implements Listenable<KernelEvents> {
|
|
|
553
522
|
// #endregion
|
|
554
523
|
|
|
555
524
|
/**
|
|
556
|
-
* For
|
|
525
|
+
* For hydrated nodes this is a HydratedFlexTreeNode thats a projection of forest content.
|
|
557
526
|
* For {@link Unhydrated} nodes this is a UnhydratedFlexTreeNode.
|
|
558
|
-
*
|
|
559
|
-
* For "marinated" nodes, some code (ex: getOrCreateInnerNode) returns the FlexTreeNode thats a projection of forest content, and some code (ex: tryGetInnerNode) returns undefined.
|
|
560
527
|
*/
|
|
561
528
|
export type InnerNode = FlexTreeNode;
|
|
562
529
|
|
|
@@ -621,13 +588,12 @@ export function getSimpleContextFromInnerNode(innerNode: InnerNode): Context {
|
|
|
621
588
|
* For {@link Unhydrated} nodes, this returns the MapTreeNode.
|
|
622
589
|
*
|
|
623
590
|
* For hydrated nodes it returns a FlexTreeNode backed by the forest.
|
|
624
|
-
* Note that for "marinated" nodes, this FlexTreeNode exists and returns it: it does not return the MapTreeNode which is the current InnerNode.
|
|
625
591
|
*
|
|
626
592
|
* @throws A {@link @fluidframework/telemetry-utils#UsageError} if the node has been deleted.
|
|
627
593
|
*/
|
|
628
|
-
export function
|
|
594
|
+
export function getInnerNode(treeNode: TreeNode): InnerNode {
|
|
629
595
|
const kernel = getKernel(treeNode);
|
|
630
|
-
return kernel.
|
|
596
|
+
return kernel.getInnerNode();
|
|
631
597
|
}
|
|
632
598
|
|
|
633
599
|
/**
|
|
@@ -10,10 +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 {
|
|
14
|
-
ImplicitAnnotatedAllowedTypes,
|
|
15
|
-
NormalizedAnnotatedAllowedTypes,
|
|
16
|
-
} from "./allowedTypes.js";
|
|
13
|
+
import type { ImplicitAllowedTypes, AllowedTypesFullEvaluated } from "./allowedTypes.js";
|
|
17
14
|
import type { Context } from "./context.js";
|
|
18
15
|
import type { FieldKey, NodeData, TreeNodeStoredSchema } from "../../core/index.js";
|
|
19
16
|
import type { UnhydratedFlexTreeField } from "./unhydratedFlexTree.js";
|
|
@@ -391,7 +388,7 @@ export interface TreeNodeSchemaPrivateData {
|
|
|
391
388
|
* If this is stabilized, it will live alongside the childTypes property on {@link TreeNodeSchemaCore}.
|
|
392
389
|
* @system
|
|
393
390
|
*/
|
|
394
|
-
readonly childAnnotatedAllowedTypes: readonly
|
|
391
|
+
readonly childAnnotatedAllowedTypes: readonly ImplicitAllowedTypes[];
|
|
395
392
|
|
|
396
393
|
/**
|
|
397
394
|
* Idempotent initialization function that pre-caches data and can dereference lazy schema references.
|
|
@@ -425,7 +422,7 @@ export interface TreeNodeSchemaInitializedData {
|
|
|
425
422
|
* If this is stabilized, it will live alongside the childTypes property on {@link TreeNodeSchemaCore}.
|
|
426
423
|
* @system
|
|
427
424
|
*/
|
|
428
|
-
readonly childAnnotatedAllowedTypes: readonly
|
|
425
|
+
readonly childAnnotatedAllowedTypes: readonly AllowedTypesFullEvaluated[];
|
|
429
426
|
|
|
430
427
|
/**
|
|
431
428
|
* 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 { ImplicitAllowedTypes } 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
|
-
childAnnotatedAllowedTypes: readonly
|
|
262
|
+
childAnnotatedAllowedTypes: readonly ImplicitAllowedTypes[],
|
|
263
263
|
toStored: TreeNodeSchemaPrivateData["toStored"],
|
|
264
264
|
): TreeNodeSchemaPrivateData {
|
|
265
265
|
const schemaValid = schemaAsTreeNodeValid(schema);
|
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import {
|
|
7
|
-
|
|
7
|
+
normalizeAndEvaluateAnnotatedAllowedTypes,
|
|
8
8
|
type AnnotatedAllowedType,
|
|
9
|
-
type
|
|
9
|
+
type AllowedTypesFullEvaluated,
|
|
10
10
|
} from "./allowedTypes.js";
|
|
11
11
|
import { getTreeNodeSchemaPrivateData, type TreeNodeSchema } from "./treeNodeSchema.js";
|
|
12
12
|
|
|
@@ -32,7 +32,11 @@ export function walkNodeSchema(
|
|
|
32
32
|
getTreeNodeSchemaPrivateData(schema).childAnnotatedAllowedTypes;
|
|
33
33
|
|
|
34
34
|
for (const fieldAllowedTypes of annotatedAllowedTypes) {
|
|
35
|
-
walkAllowedTypes(
|
|
35
|
+
walkAllowedTypes(
|
|
36
|
+
normalizeAndEvaluateAnnotatedAllowedTypes(fieldAllowedTypes),
|
|
37
|
+
visitor,
|
|
38
|
+
visitedSet,
|
|
39
|
+
);
|
|
36
40
|
}
|
|
37
41
|
|
|
38
42
|
// This visit is done at the end so the traversal order is most inner types first.
|
|
@@ -47,7 +51,7 @@ export function walkNodeSchema(
|
|
|
47
51
|
* @internal
|
|
48
52
|
*/
|
|
49
53
|
export function walkAllowedTypes(
|
|
50
|
-
annotatedAllowedTypes:
|
|
54
|
+
annotatedAllowedTypes: AllowedTypesFullEvaluated,
|
|
51
55
|
visitor: SchemaVisitor,
|
|
52
56
|
visitedSet: Set<TreeNodeSchema> = new Set(),
|
|
53
57
|
): void {
|
|
@@ -77,7 +81,7 @@ export interface SchemaVisitor {
|
|
|
77
81
|
*
|
|
78
82
|
* After this is called {@link SchemaVisitor.allowedTypeFilter} is applied to each allowed type in the schema to determine which of them are walked into.
|
|
79
83
|
*/
|
|
80
|
-
allowedTypes?: (allowedTypes:
|
|
84
|
+
allowedTypes?: (allowedTypes: AllowedTypesFullEvaluated) => void;
|
|
81
85
|
/**
|
|
82
86
|
* If true, will walk into this `allowedType`.
|
|
83
87
|
* If false, the `allowedType` will not be walked into.
|
|
@@ -9,7 +9,7 @@ import { getOrCreate } from "../util/index.js";
|
|
|
9
9
|
import {
|
|
10
10
|
Context,
|
|
11
11
|
getTreeNodeSchemaPrivateData,
|
|
12
|
-
|
|
12
|
+
normalizeAndEvaluateAnnotatedAllowedTypes,
|
|
13
13
|
UnhydratedContext,
|
|
14
14
|
type TreeNodeSchema,
|
|
15
15
|
type TreeNodeSchemaInitializedData,
|
|
@@ -34,7 +34,7 @@ export function getUnhydratedContext(schema: ImplicitFieldSchema): Context {
|
|
|
34
34
|
);
|
|
35
35
|
return new Context(
|
|
36
36
|
flexContext,
|
|
37
|
-
Context.schemaMapFromRootSchema(normalized.
|
|
37
|
+
Context.schemaMapFromRootSchema(normalized.allowedTypesFull.evaluate()),
|
|
38
38
|
);
|
|
39
39
|
});
|
|
40
40
|
}
|
|
@@ -51,7 +51,7 @@ export function getTreeNodeSchemaInitializedData(
|
|
|
51
51
|
...handler,
|
|
52
52
|
context: getUnhydratedContext(schema),
|
|
53
53
|
childAnnotatedAllowedTypes: data.childAnnotatedAllowedTypes.map(
|
|
54
|
-
|
|
54
|
+
normalizeAndEvaluateAnnotatedAllowedTypes,
|
|
55
55
|
),
|
|
56
56
|
};
|
|
57
57
|
}
|
|
@@ -23,21 +23,13 @@ import type {
|
|
|
23
23
|
TreeNodeSchema,
|
|
24
24
|
TreeNode,
|
|
25
25
|
UnhydratedFlexTreeNode,
|
|
26
|
-
NormalizedAnnotatedAllowedTypes,
|
|
27
26
|
ImplicitAllowedTypes,
|
|
28
|
-
ImplicitAnnotatedAllowedTypes,
|
|
29
|
-
UnannotateImplicitAllowedTypes,
|
|
30
|
-
AllowedTypesMetadata,
|
|
31
27
|
TreeNodeFromImplicitAllowedTypes,
|
|
32
28
|
TreeLeafValue,
|
|
33
29
|
InsertableTreeNodeFromImplicitAllowedTypes,
|
|
30
|
+
AllowedTypesFull,
|
|
34
31
|
} from "./core/index.js";
|
|
35
|
-
import {
|
|
36
|
-
isAnnotatedAllowedTypes,
|
|
37
|
-
normalizeAllowedTypes,
|
|
38
|
-
normalizeAnnotatedAllowedTypes,
|
|
39
|
-
unannotateImplicitAllowedTypes,
|
|
40
|
-
} from "./core/index.js";
|
|
32
|
+
import { normalizeAllowedTypes } from "./core/index.js";
|
|
41
33
|
|
|
42
34
|
import type { SimpleFieldSchema } from "./simpleSchema.js";
|
|
43
35
|
import type { UnsafeUnknownSchema } from "./unsafeUnknownSchema.js";
|
|
@@ -81,10 +73,7 @@ export enum FieldKind {
|
|
|
81
73
|
* If an explicit stored key was specified in the schema, it will be used.
|
|
82
74
|
* Otherwise, the stored key is the same as the property key.
|
|
83
75
|
*/
|
|
84
|
-
export function getStoredKey(
|
|
85
|
-
propertyKey: string,
|
|
86
|
-
fieldSchema: ImplicitAnnotatedFieldSchema,
|
|
87
|
-
): FieldKey {
|
|
76
|
+
export function getStoredKey(propertyKey: string, fieldSchema: ImplicitFieldSchema): FieldKey {
|
|
88
77
|
return brand(getExplicitStoredKey(fieldSchema) ?? propertyKey);
|
|
89
78
|
}
|
|
90
79
|
|
|
@@ -92,9 +81,7 @@ export function getStoredKey(
|
|
|
92
81
|
* Gets the {@link FieldProps.key | stored key} specified by the schema, if one was explicitly specified.
|
|
93
82
|
* Otherwise, returns undefined.
|
|
94
83
|
*/
|
|
95
|
-
export function getExplicitStoredKey(
|
|
96
|
-
fieldSchema: ImplicitAnnotatedFieldSchema,
|
|
97
|
-
): string | undefined {
|
|
84
|
+
export function getExplicitStoredKey(fieldSchema: ImplicitFieldSchema): string | undefined {
|
|
98
85
|
return fieldSchema instanceof FieldSchema ? fieldSchema.props?.key : undefined;
|
|
99
86
|
}
|
|
100
87
|
|
|
@@ -286,30 +273,7 @@ export function createFieldSchema<
|
|
|
286
273
|
kind: Kind,
|
|
287
274
|
annotatedTypes: Types,
|
|
288
275
|
props?: FieldProps<TCustomMetadata>,
|
|
289
|
-
): FieldSchemaAlpha<Kind, Types, TCustomMetadata
|
|
290
|
-
|
|
291
|
-
/**
|
|
292
|
-
* Package internal construction API that supports annotations for allowed types.
|
|
293
|
-
*/
|
|
294
|
-
export function createFieldSchema<
|
|
295
|
-
Kind extends FieldKind,
|
|
296
|
-
Types extends ImplicitAnnotatedAllowedTypes,
|
|
297
|
-
TCustomMetadata = unknown,
|
|
298
|
-
>(
|
|
299
|
-
kind: Kind,
|
|
300
|
-
annotatedTypes: Types,
|
|
301
|
-
props?: FieldProps<TCustomMetadata>,
|
|
302
|
-
): FieldSchemaAlpha<Kind, UnannotateImplicitAllowedTypes<Types>, TCustomMetadata>;
|
|
303
|
-
|
|
304
|
-
export function createFieldSchema<
|
|
305
|
-
Kind extends FieldKind,
|
|
306
|
-
Types extends ImplicitAnnotatedAllowedTypes,
|
|
307
|
-
TCustomMetadata = unknown,
|
|
308
|
-
>(
|
|
309
|
-
kind: Kind,
|
|
310
|
-
annotatedTypes: Types,
|
|
311
|
-
props?: FieldProps<TCustomMetadata>,
|
|
312
|
-
): FieldSchemaAlpha<Kind, UnannotateImplicitAllowedTypes<Types>, TCustomMetadata> {
|
|
276
|
+
): FieldSchemaAlpha<Kind, Types, TCustomMetadata> {
|
|
313
277
|
return createFieldSchemaPrivate(kind, annotatedTypes, props);
|
|
314
278
|
}
|
|
315
279
|
|
|
@@ -318,13 +282,13 @@ export function createFieldSchema<
|
|
|
318
282
|
*/
|
|
319
283
|
let createFieldSchemaPrivate: <
|
|
320
284
|
Kind extends FieldKind,
|
|
321
|
-
Types extends
|
|
285
|
+
Types extends ImplicitAllowedTypes,
|
|
322
286
|
TCustomMetadata,
|
|
323
287
|
>(
|
|
324
288
|
kind: Kind,
|
|
325
289
|
annotatedTypes: Types,
|
|
326
290
|
props?: FieldProps<TCustomMetadata>,
|
|
327
|
-
) => FieldSchemaAlpha<Kind,
|
|
291
|
+
) => FieldSchemaAlpha<Kind, Types, TCustomMetadata>;
|
|
328
292
|
|
|
329
293
|
/**
|
|
330
294
|
* All policy for a specific field,
|
|
@@ -400,7 +364,7 @@ export class FieldSchema<
|
|
|
400
364
|
throw new UsageError("FieldSchema is @sealed: sub-classing is not allowed.");
|
|
401
365
|
}
|
|
402
366
|
|
|
403
|
-
this.lazyTypes = new Lazy(() => normalizeAllowedTypes(this.allowedTypes));
|
|
367
|
+
this.lazyTypes = new Lazy(() => normalizeAllowedTypes(this.allowedTypes).evaluateSet());
|
|
404
368
|
// TODO: optional fields should (by default) get a default provider that returns undefined, removing the need to special case them here:
|
|
405
369
|
this.requiresValue =
|
|
406
370
|
this.props?.defaultProvider === undefined && this.kind !== FieldKind.Optional;
|
|
@@ -421,15 +385,8 @@ export class FieldSchemaAlpha<
|
|
|
421
385
|
extends FieldSchema<Kind, Types, TCustomMetadata>
|
|
422
386
|
implements SimpleFieldSchema
|
|
423
387
|
{
|
|
424
|
-
private readonly lazyIdentifiers: Lazy<ReadonlySet<string>>;
|
|
425
|
-
private readonly lazyAnnotatedTypes: Lazy<NormalizedAnnotatedAllowedTypes>;
|
|
426
388
|
private readonly propsAlpha: FieldPropsAlpha<TCustomMetadata> | undefined;
|
|
427
389
|
|
|
428
|
-
/**
|
|
429
|
-
* Metadata on the types of tree nodes allowed on this field.
|
|
430
|
-
*/
|
|
431
|
-
public readonly allowedTypesMetadata: AllowedTypesMetadata;
|
|
432
|
-
|
|
433
390
|
public get persistedMetadata(): JsonCompatibleReadOnlyObject | undefined {
|
|
434
391
|
return this.propsAlpha?.persistedMetadata;
|
|
435
392
|
}
|
|
@@ -437,61 +394,44 @@ export class FieldSchemaAlpha<
|
|
|
437
394
|
static {
|
|
438
395
|
createFieldSchemaPrivate = <
|
|
439
396
|
Kind2 extends FieldKind,
|
|
440
|
-
Types2 extends
|
|
397
|
+
Types2 extends ImplicitAllowedTypes,
|
|
441
398
|
TCustomMetadata2,
|
|
442
399
|
>(
|
|
443
400
|
kind: Kind2,
|
|
444
401
|
annotatedAllowedTypes: Types2,
|
|
445
402
|
props?: FieldPropsAlpha<TCustomMetadata2>,
|
|
446
|
-
) =>
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
403
|
+
) => new FieldSchemaAlpha(kind, annotatedAllowedTypes, props);
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
/**
|
|
407
|
+
* {@link normalizeAllowedTypes|Normalized} version of {@link FieldSchema.allowedTypes}.
|
|
408
|
+
*/
|
|
409
|
+
public readonly allowedTypesFull: AllowedTypesFull;
|
|
410
|
+
|
|
411
|
+
public get allowedTypesIdentifiers(): ReadonlySet<string> {
|
|
412
|
+
return this.allowedTypesFull.evaluateIdentifiers();
|
|
453
413
|
}
|
|
454
414
|
|
|
455
415
|
protected constructor(
|
|
456
416
|
kind: Kind,
|
|
457
417
|
types: Types,
|
|
458
|
-
|
|
418
|
+
|
|
459
419
|
props?: FieldPropsAlpha<TCustomMetadata>,
|
|
460
420
|
) {
|
|
461
421
|
super(kind, types, props);
|
|
462
422
|
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
: {};
|
|
466
|
-
this.lazyAnnotatedTypes = new Lazy(() =>
|
|
467
|
-
normalizeAnnotatedAllowedTypes(annotatedAllowedTypes),
|
|
468
|
-
);
|
|
469
|
-
this.lazyIdentifiers = new Lazy(
|
|
470
|
-
() =>
|
|
471
|
-
new Set(this.annotatedAllowedTypesNormalized.types.map(({ type }) => type.identifier)),
|
|
472
|
-
);
|
|
423
|
+
const normalizedTypes = normalizeAllowedTypes(types);
|
|
424
|
+
this.allowedTypesFull = normalizedTypes;
|
|
473
425
|
this.propsAlpha = props;
|
|
474
426
|
}
|
|
475
|
-
|
|
476
|
-
public get allowedTypesIdentifiers(): ReadonlySet<string> {
|
|
477
|
-
return this.lazyIdentifiers.value;
|
|
478
|
-
}
|
|
479
|
-
|
|
480
|
-
/**
|
|
481
|
-
* What types of tree nodes are allowed in this field and their annotations.
|
|
482
|
-
* @remarks Counterpart to {@link FieldSchemaAlpha.annotatedAllowedTypes}, with any lazy definitions evaluated.
|
|
483
|
-
*/
|
|
484
|
-
public get annotatedAllowedTypesNormalized(): NormalizedAnnotatedAllowedTypes {
|
|
485
|
-
return this.lazyAnnotatedTypes.value;
|
|
486
|
-
}
|
|
487
427
|
}
|
|
488
428
|
|
|
489
429
|
/**
|
|
490
|
-
* Normalizes a {@link ImplicitFieldSchema} or {@link
|
|
430
|
+
* Normalizes a {@link ImplicitFieldSchema} or {@link ImplicitFieldSchema} to a {@link FieldSchema}.
|
|
491
431
|
* @internal
|
|
492
432
|
*/
|
|
493
433
|
export function normalizeFieldSchema(
|
|
494
|
-
schema: ImplicitFieldSchema |
|
|
434
|
+
schema: ImplicitFieldSchema | ImplicitFieldSchema,
|
|
495
435
|
): FieldSchemaAlpha {
|
|
496
436
|
return schema instanceof FieldSchema
|
|
497
437
|
? (schema as FieldSchemaAlpha)
|
|
@@ -618,20 +558,6 @@ function arePersistedMetadataEqual(
|
|
|
618
558
|
*/
|
|
619
559
|
export type ImplicitFieldSchema = FieldSchema | ImplicitAllowedTypes;
|
|
620
560
|
|
|
621
|
-
/**
|
|
622
|
-
* {@link ImplicitFieldSchema} which supports {@link AnnotatedAllowedTypes | annotations} on the allowed types.
|
|
623
|
-
* @alpha
|
|
624
|
-
* @input
|
|
625
|
-
*/
|
|
626
|
-
export type ImplicitAnnotatedFieldSchema = FieldSchema | ImplicitAnnotatedAllowedTypes;
|
|
627
|
-
|
|
628
|
-
/**
|
|
629
|
-
* Removes annotations from an annotated field schema.
|
|
630
|
-
* @system @alpha
|
|
631
|
-
*/
|
|
632
|
-
export type UnannotateImplicitFieldSchema<T extends ImplicitAnnotatedFieldSchema> =
|
|
633
|
-
T extends ImplicitAnnotatedAllowedTypes ? UnannotateImplicitAllowedTypes<T> : T;
|
|
634
|
-
|
|
635
561
|
/**
|
|
636
562
|
* Converts an `ImplicitFieldSchema` to a property type suitable for reading a field with this that schema.
|
|
637
563
|
*
|
|
@@ -40,7 +40,7 @@ export function tryGetTreeNodeForField(
|
|
|
40
40
|
return tryToUnboxLeaves(typedField);
|
|
41
41
|
}
|
|
42
42
|
case FieldKinds.identifier.identifier: {
|
|
43
|
-
// Identifier fields are just
|
|
43
|
+
// Identifier fields are just required fields that hold strings
|
|
44
44
|
return (field as FlexTreeRequiredField).content as string;
|
|
45
45
|
}
|
|
46
46
|
|