@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
|
@@ -17,28 +17,37 @@ import {
|
|
|
17
17
|
defaultSchemaFactoryObjectOptions,
|
|
18
18
|
scoped,
|
|
19
19
|
type NodeSchemaOptionsAlpha,
|
|
20
|
-
type
|
|
20
|
+
type ObjectSchemaOptionsAlpha,
|
|
21
21
|
type ScopedSchemaName,
|
|
22
22
|
} from "./schemaFactory.js";
|
|
23
23
|
import { schemaStatics } from "./schemaStatics.js";
|
|
24
|
-
import type {
|
|
24
|
+
import type { ImplicitFieldSchema } from "../fieldSchema.js";
|
|
25
25
|
import type { RestrictiveStringRecord } from "../../util/index.js";
|
|
26
26
|
import type {
|
|
27
27
|
NodeKind,
|
|
28
28
|
TreeNodeSchema,
|
|
29
29
|
TreeNodeSchemaClass,
|
|
30
30
|
ImplicitAllowedTypes,
|
|
31
|
-
ImplicitAnnotatedAllowedTypes,
|
|
32
31
|
AnnotatedAllowedType,
|
|
33
32
|
LazyItem,
|
|
34
33
|
WithType,
|
|
34
|
+
AllowedTypesMetadata,
|
|
35
|
+
AllowedTypesFullFromMixed,
|
|
36
|
+
} from "../core/index.js";
|
|
37
|
+
import {
|
|
38
|
+
normalizeToAnnotatedAllowedType,
|
|
39
|
+
createSchemaUpgrade,
|
|
40
|
+
AnnotatedAllowedTypesInternal,
|
|
35
41
|
} from "../core/index.js";
|
|
36
|
-
import { normalizeToAnnotatedAllowedType, createSchemaUpgrade } from "../core/index.js";
|
|
37
42
|
import type {
|
|
43
|
+
AllowedTypesFullFromMixedUnsafe,
|
|
44
|
+
AnnotatedAllowedTypeUnsafe,
|
|
38
45
|
ArrayNodeCustomizableSchemaUnsafe,
|
|
39
46
|
MapNodeCustomizableSchemaUnsafe,
|
|
40
47
|
System_Unsafe,
|
|
41
48
|
TreeRecordNodeUnsafe,
|
|
49
|
+
UnannotateAllowedTypeUnsafe,
|
|
50
|
+
Unenforced,
|
|
42
51
|
} from "./typesUnsafe.js";
|
|
43
52
|
import type { SimpleObjectNodeSchema } from "../simpleSchema.js";
|
|
44
53
|
import { SchemaFactoryBeta } from "./schemaFactoryBeta.js";
|
|
@@ -53,7 +62,6 @@ import type {
|
|
|
53
62
|
} from "../fieldSchema.js";
|
|
54
63
|
import type { LeafSchema } from "../leafNodeSchema.js";
|
|
55
64
|
import type { SimpleLeafNodeSchema } from "../simpleSchema.js";
|
|
56
|
-
import type { UnannotateImplicitAllowedTypes } from "../core/index.js";
|
|
57
65
|
import type { FieldSchemaAlphaUnsafe } from "./typesUnsafe.js";
|
|
58
66
|
/* eslint-enable unused-imports/no-unused-imports, @typescript-eslint/no-unused-vars, import/no-duplicates */
|
|
59
67
|
|
|
@@ -94,24 +102,79 @@ export interface SchemaStaticsAlpha {
|
|
|
94
102
|
*
|
|
95
103
|
* TODO: AB#45711: Update the docs above when recursive type support is added.
|
|
96
104
|
*/
|
|
97
|
-
staged: <const T extends LazyItem<TreeNodeSchema>>(
|
|
105
|
+
readonly staged: <const T extends LazyItem<TreeNodeSchema>>(
|
|
98
106
|
t: T | AnnotatedAllowedType<T>,
|
|
99
107
|
) => AnnotatedAllowedType<T>;
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Normalize information about a set of {@link AllowedTypes} into an {@link AllowedTypesFull}.
|
|
111
|
+
* @remarks
|
|
112
|
+
* This can take in {@link AnnotatedAllowedType} to preserve their annotations.
|
|
113
|
+
*/
|
|
114
|
+
readonly types: <
|
|
115
|
+
const T extends readonly (AnnotatedAllowedType | LazyItem<TreeNodeSchema>)[],
|
|
116
|
+
>(
|
|
117
|
+
t: T,
|
|
118
|
+
metadata?: AllowedTypesMetadata,
|
|
119
|
+
) => AllowedTypesFullFromMixed<T>;
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* {@link SchemaStaticsAlpha.staged} except tweaked to work better for recursive types.
|
|
123
|
+
* Use with {@link ValidateRecursiveSchema} for improved type safety.
|
|
124
|
+
* @remarks
|
|
125
|
+
* This version of {@link SchemaStaticsAlpha.staged} has fewer type constraints to work around TypeScript limitations, see {@link Unenforced}.
|
|
126
|
+
* See {@link ValidateRecursiveSchema} for additional information about using recursive schema.
|
|
127
|
+
*/
|
|
128
|
+
stagedRecursive: <
|
|
129
|
+
const T extends Unenforced<AnnotatedAllowedType | LazyItem<TreeNodeSchema>>,
|
|
130
|
+
>(
|
|
131
|
+
t: T,
|
|
132
|
+
) => AnnotatedAllowedTypeUnsafe<UnannotateAllowedTypeUnsafe<T>>;
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* {@link SchemaStaticsAlpha.types} except tweaked to work better for recursive types.
|
|
136
|
+
* Use with {@link ValidateRecursiveSchema} for improved type safety.
|
|
137
|
+
* @remarks
|
|
138
|
+
* This version of {@link SchemaStaticsAlpha.types} has fewer type constraints to work around TypeScript limitations, see {@link Unenforced}.
|
|
139
|
+
* See {@link ValidateRecursiveSchema} for additional information about using recursive schema.
|
|
140
|
+
* @privateRemarks
|
|
141
|
+
* If all inputs (at least recursive ones) were required to be annotated, this could be typed more strongly.
|
|
142
|
+
* In that case it could use `T extends readonly (AnnotatedAllowedTypeUnsafe | LazyItem<System_Unsafe.TreeNodeSchemaUnsafe>)[]`.
|
|
143
|
+
*/
|
|
144
|
+
readonly typesRecursive: <
|
|
145
|
+
const T extends readonly Unenforced<AnnotatedAllowedType | LazyItem<TreeNodeSchema>>[],
|
|
146
|
+
>(
|
|
147
|
+
t: T,
|
|
148
|
+
metadata?: AllowedTypesMetadata,
|
|
149
|
+
) => AllowedTypesFullFromMixedUnsafe<T>;
|
|
100
150
|
}
|
|
101
151
|
|
|
152
|
+
const staged = <const T extends LazyItem<TreeNodeSchema>>(
|
|
153
|
+
t: T | AnnotatedAllowedType<T>,
|
|
154
|
+
): AnnotatedAllowedType<T> => {
|
|
155
|
+
const annotatedType = normalizeToAnnotatedAllowedType(t);
|
|
156
|
+
return {
|
|
157
|
+
type: annotatedType.type,
|
|
158
|
+
metadata: {
|
|
159
|
+
...annotatedType.metadata,
|
|
160
|
+
stagedSchemaUpgrade: createSchemaUpgrade(),
|
|
161
|
+
},
|
|
162
|
+
};
|
|
163
|
+
};
|
|
164
|
+
|
|
165
|
+
const types = <const T extends readonly (AnnotatedAllowedType | LazyItem<TreeNodeSchema>)[]>(
|
|
166
|
+
t: T,
|
|
167
|
+
metadata: AllowedTypesMetadata = {},
|
|
168
|
+
): AllowedTypesFullFromMixed<T> => {
|
|
169
|
+
return AnnotatedAllowedTypesInternal.createMixed<T>(t, metadata);
|
|
170
|
+
};
|
|
171
|
+
|
|
102
172
|
const schemaStaticsAlpha: SchemaStaticsAlpha = {
|
|
103
|
-
staged
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
type: annotatedType.type,
|
|
109
|
-
metadata: {
|
|
110
|
-
...annotatedType.metadata,
|
|
111
|
-
stagedSchemaUpgrade: createSchemaUpgrade(),
|
|
112
|
-
},
|
|
113
|
-
};
|
|
114
|
-
},
|
|
173
|
+
staged,
|
|
174
|
+
types,
|
|
175
|
+
|
|
176
|
+
stagedRecursive: staged as SchemaStaticsAlpha["stagedRecursive"],
|
|
177
|
+
typesRecursive: types as unknown as SchemaStaticsAlpha["typesRecursive"],
|
|
115
178
|
};
|
|
116
179
|
|
|
117
180
|
/**
|
|
@@ -136,12 +199,12 @@ export class SchemaFactoryAlpha<
|
|
|
136
199
|
*/
|
|
137
200
|
public objectAlpha<
|
|
138
201
|
const Name extends TName,
|
|
139
|
-
const T extends RestrictiveStringRecord<
|
|
202
|
+
const T extends RestrictiveStringRecord<ImplicitFieldSchema>,
|
|
140
203
|
const TCustomMetadata = unknown,
|
|
141
204
|
>(
|
|
142
205
|
name: Name,
|
|
143
206
|
fields: T,
|
|
144
|
-
options?:
|
|
207
|
+
options?: ObjectSchemaOptionsAlpha<TCustomMetadata>,
|
|
145
208
|
): ObjectNodeSchema<ScopedSchemaName<TScope, Name>, T, true, TCustomMetadata> & {
|
|
146
209
|
/**
|
|
147
210
|
* Typing checking workaround: not for for actual use.
|
|
@@ -176,7 +239,7 @@ export class SchemaFactoryAlpha<
|
|
|
176
239
|
>(
|
|
177
240
|
name: Name,
|
|
178
241
|
t: T,
|
|
179
|
-
options?:
|
|
242
|
+
options?: ObjectSchemaOptionsAlpha<TCustomMetadata>,
|
|
180
243
|
): TreeNodeSchemaClass<
|
|
181
244
|
ScopedSchemaName<TScope, Name>,
|
|
182
245
|
NodeKind.Object,
|
|
@@ -287,6 +350,36 @@ export class SchemaFactoryAlpha<
|
|
|
287
350
|
*/
|
|
288
351
|
public staged = schemaStaticsAlpha.staged;
|
|
289
352
|
|
|
353
|
+
/**
|
|
354
|
+
* {@inheritDoc SchemaStaticsAlpha.stagedRecursive}
|
|
355
|
+
*/
|
|
356
|
+
public static stagedRecursive = schemaStaticsAlpha.stagedRecursive;
|
|
357
|
+
|
|
358
|
+
/**
|
|
359
|
+
* {@inheritDoc SchemaStaticsAlpha.stagedRecursive}
|
|
360
|
+
*/
|
|
361
|
+
public stagedRecursive = schemaStaticsAlpha.stagedRecursive;
|
|
362
|
+
|
|
363
|
+
/**
|
|
364
|
+
* {@inheritDoc SchemaStaticsAlpha.types}
|
|
365
|
+
*/
|
|
366
|
+
public static types = schemaStaticsAlpha.types;
|
|
367
|
+
|
|
368
|
+
/**
|
|
369
|
+
* {@inheritDoc SchemaStaticsAlpha.types}
|
|
370
|
+
*/
|
|
371
|
+
public types = schemaStaticsAlpha.types;
|
|
372
|
+
|
|
373
|
+
/**
|
|
374
|
+
* {@inheritDoc SchemaStaticsAlpha.typesRecursive}
|
|
375
|
+
*/
|
|
376
|
+
public static typesRecursive = schemaStaticsAlpha.typesRecursive;
|
|
377
|
+
|
|
378
|
+
/**
|
|
379
|
+
* {@inheritDoc SchemaStaticsAlpha.typesRecursive}
|
|
380
|
+
*/
|
|
381
|
+
public typesRecursive = schemaStaticsAlpha.typesRecursive;
|
|
382
|
+
|
|
290
383
|
/**
|
|
291
384
|
* Define a {@link TreeNodeSchema} for a {@link TreeMapNode}.
|
|
292
385
|
*
|
|
@@ -303,7 +396,7 @@ export class SchemaFactoryAlpha<
|
|
|
303
396
|
*/
|
|
304
397
|
public mapAlpha<
|
|
305
398
|
Name extends TName,
|
|
306
|
-
const T extends
|
|
399
|
+
const T extends ImplicitAllowedTypes,
|
|
307
400
|
const TCustomMetadata = unknown,
|
|
308
401
|
>(
|
|
309
402
|
name: Name,
|
|
@@ -354,7 +447,7 @@ export class SchemaFactoryAlpha<
|
|
|
354
447
|
*/
|
|
355
448
|
public arrayAlpha<
|
|
356
449
|
const Name extends TName,
|
|
357
|
-
const T extends
|
|
450
|
+
const T extends ImplicitAllowedTypes,
|
|
358
451
|
const TCustomMetadata = unknown,
|
|
359
452
|
>(
|
|
360
453
|
name: Name,
|
|
@@ -372,7 +465,7 @@ export class SchemaFactoryAlpha<
|
|
|
372
465
|
}
|
|
373
466
|
|
|
374
467
|
/**
|
|
375
|
-
* {@
|
|
468
|
+
* {@link SchemaFactory.arrayRecursive} but with support for some alpha features.
|
|
376
469
|
*/
|
|
377
470
|
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
|
|
378
471
|
public override arrayRecursive<
|
|
@@ -405,7 +498,7 @@ export class SchemaFactoryAlpha<
|
|
|
405
498
|
*/
|
|
406
499
|
public recordAlpha<
|
|
407
500
|
const Name extends TName,
|
|
408
|
-
const T extends
|
|
501
|
+
const T extends ImplicitAllowedTypes,
|
|
409
502
|
const TCustomMetadata = unknown,
|
|
410
503
|
>(
|
|
411
504
|
name: Name,
|
|
@@ -14,15 +14,20 @@ import type {
|
|
|
14
14
|
} from "../core/index.js";
|
|
15
15
|
|
|
16
16
|
import {
|
|
17
|
+
objectSchema,
|
|
17
18
|
recordSchema,
|
|
19
|
+
type InsertableObjectFromSchemaRecord,
|
|
18
20
|
type RecordNodeInsertableData,
|
|
21
|
+
type TreeObjectNode,
|
|
19
22
|
type TreeRecordNode,
|
|
20
23
|
} from "../node-kinds/index.js";
|
|
21
24
|
import {
|
|
25
|
+
defaultSchemaFactoryObjectOptions,
|
|
22
26
|
SchemaFactory,
|
|
23
27
|
scoped,
|
|
24
28
|
structuralName,
|
|
25
29
|
type NodeSchemaOptions,
|
|
30
|
+
type ObjectSchemaOptions,
|
|
26
31
|
type ScopedSchemaName,
|
|
27
32
|
} from "./schemaFactory.js";
|
|
28
33
|
import type { System_Unsafe, TreeRecordNodeUnsafe } from "./typesUnsafe.js";
|
|
@@ -34,9 +39,11 @@ import type {
|
|
|
34
39
|
FieldSchemaAlpha,
|
|
35
40
|
FieldPropsAlpha,
|
|
36
41
|
FieldKind,
|
|
42
|
+
ImplicitFieldSchema,
|
|
37
43
|
} from "../fieldSchema.js";
|
|
38
44
|
import type { LeafSchema } from "../leafNodeSchema.js";
|
|
39
45
|
import type { SimpleLeafNodeSchema } from "../simpleSchema.js";
|
|
46
|
+
import type { RestrictiveStringRecord } from "../../util/index.js";
|
|
40
47
|
/* eslint-enable unused-imports/no-unused-imports, @typescript-eslint/no-unused-vars, import/no-duplicates */
|
|
41
48
|
|
|
42
49
|
/**
|
|
@@ -57,7 +64,73 @@ export class SchemaFactoryBeta<
|
|
|
57
64
|
public scopedFactory<const T extends TName, TNameInner extends number | string = string>(
|
|
58
65
|
name: T,
|
|
59
66
|
): SchemaFactoryBeta<ScopedSchemaName<TScope, T>, TNameInner> {
|
|
60
|
-
return new SchemaFactoryBeta(scoped(this, name));
|
|
67
|
+
return new SchemaFactoryBeta(scoped<TScope, TName, T>(this, name));
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Define a {@link TreeNodeSchemaClass} for a {@link TreeObjectNode}.
|
|
72
|
+
*
|
|
73
|
+
* @param name - Unique identifier for this schema within this factory's scope.
|
|
74
|
+
* @param fields - Schema for fields of the object node's schema. Defines what children can be placed under each key.
|
|
75
|
+
* @param options - Additional options for the schema.
|
|
76
|
+
*/
|
|
77
|
+
public override object<
|
|
78
|
+
const Name extends TName,
|
|
79
|
+
const T extends RestrictiveStringRecord<ImplicitFieldSchema>,
|
|
80
|
+
const TCustomMetadata = unknown,
|
|
81
|
+
>(
|
|
82
|
+
name: Name,
|
|
83
|
+
fields: T,
|
|
84
|
+
options?: ObjectSchemaOptions<TCustomMetadata>,
|
|
85
|
+
): TreeNodeSchemaClass<
|
|
86
|
+
ScopedSchemaName<TScope, Name>,
|
|
87
|
+
NodeKind.Object,
|
|
88
|
+
TreeObjectNode<T, ScopedSchemaName<TScope, Name>>,
|
|
89
|
+
object & InsertableObjectFromSchemaRecord<T>,
|
|
90
|
+
true,
|
|
91
|
+
T
|
|
92
|
+
> {
|
|
93
|
+
return objectSchema(
|
|
94
|
+
scoped<TScope, TName, Name>(this, name),
|
|
95
|
+
fields,
|
|
96
|
+
true,
|
|
97
|
+
options?.allowUnknownOptionalFields ??
|
|
98
|
+
defaultSchemaFactoryObjectOptions.allowUnknownOptionalFields,
|
|
99
|
+
options?.metadata,
|
|
100
|
+
);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
public override objectRecursive<
|
|
104
|
+
const Name extends TName,
|
|
105
|
+
const T extends RestrictiveStringRecord<System_Unsafe.ImplicitFieldSchemaUnsafe>,
|
|
106
|
+
const TCustomMetadata = unknown,
|
|
107
|
+
>(
|
|
108
|
+
name: Name,
|
|
109
|
+
t: T,
|
|
110
|
+
options?: ObjectSchemaOptions<TCustomMetadata>,
|
|
111
|
+
): TreeNodeSchemaClass<
|
|
112
|
+
ScopedSchemaName<TScope, Name>,
|
|
113
|
+
NodeKind.Object,
|
|
114
|
+
System_Unsafe.TreeObjectNodeUnsafe<T, ScopedSchemaName<TScope, Name>>,
|
|
115
|
+
object & System_Unsafe.InsertableObjectFromSchemaRecordUnsafe<T>,
|
|
116
|
+
false,
|
|
117
|
+
T
|
|
118
|
+
> {
|
|
119
|
+
type TScopedName = ScopedSchemaName<TScope, Name>;
|
|
120
|
+
return this.object(
|
|
121
|
+
name,
|
|
122
|
+
t as T & RestrictiveStringRecord<ImplicitFieldSchema>,
|
|
123
|
+
options,
|
|
124
|
+
) as unknown as TreeNodeSchemaClass<
|
|
125
|
+
TScopedName,
|
|
126
|
+
NodeKind.Object,
|
|
127
|
+
System_Unsafe.TreeObjectNodeUnsafe<T, TScopedName>,
|
|
128
|
+
object & System_Unsafe.InsertableObjectFromSchemaRecordUnsafe<T>,
|
|
129
|
+
false,
|
|
130
|
+
T,
|
|
131
|
+
never,
|
|
132
|
+
TCustomMetadata
|
|
133
|
+
>;
|
|
61
134
|
}
|
|
62
135
|
|
|
63
136
|
/**
|
|
@@ -113,6 +186,7 @@ export class SchemaFactoryBeta<
|
|
|
113
186
|
/* Info */ T,
|
|
114
187
|
/* TConstructorExtra */ undefined
|
|
115
188
|
>;
|
|
189
|
+
|
|
116
190
|
/**
|
|
117
191
|
* Define (and add to this library) a {@link TreeNodeSchemaClass} for a {@link (TreeRecordNode:interface)}.
|
|
118
192
|
*
|
|
@@ -149,6 +223,7 @@ export class SchemaFactoryBeta<
|
|
|
149
223
|
/* Info */ T,
|
|
150
224
|
/* TConstructorExtra */ undefined
|
|
151
225
|
>;
|
|
226
|
+
|
|
152
227
|
/**
|
|
153
228
|
* {@link SchemaFactoryBeta.record} implementation.
|
|
154
229
|
*
|
|
@@ -4,11 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import type { IFluidHandle } from "@fluidframework/core-interfaces";
|
|
7
|
-
import type {
|
|
8
|
-
ImplicitAllowedTypes,
|
|
9
|
-
ImplicitAnnotatedAllowedTypes,
|
|
10
|
-
UnannotateImplicitAllowedTypes,
|
|
11
|
-
} from "../core/index.js";
|
|
7
|
+
import type { ImplicitAllowedTypes } from "../core/index.js";
|
|
12
8
|
import { FieldKind, getDefaultProvider, createFieldSchema } from "../fieldSchema.js";
|
|
13
9
|
import type {
|
|
14
10
|
FieldProps,
|
|
@@ -165,60 +161,6 @@ export interface SchemaStatics {
|
|
|
165
161
|
|
|
166
162
|
const defaultOptionalProvider: DefaultProvider = getDefaultProvider(() => []);
|
|
167
163
|
|
|
168
|
-
// The following overloads for optional and required are used to get around the fact that
|
|
169
|
-
// the compiler can't infer that UnannotateImplicitAllowedTypes<T> is equal to T when T is known to extend ImplicitAllowedTypes
|
|
170
|
-
|
|
171
|
-
// #region Overloads for optional and required
|
|
172
|
-
function optional<const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(
|
|
173
|
-
t: T,
|
|
174
|
-
props?: Omit<FieldPropsAlpha<TCustomMetadata>, "defaultProvider">,
|
|
175
|
-
): FieldSchemaAlpha<FieldKind.Optional, T, TCustomMetadata>;
|
|
176
|
-
|
|
177
|
-
function optional<
|
|
178
|
-
const T extends ImplicitAnnotatedAllowedTypes,
|
|
179
|
-
const TCustomMetadata = unknown,
|
|
180
|
-
>(
|
|
181
|
-
t: T,
|
|
182
|
-
props?: Omit<FieldPropsAlpha<TCustomMetadata>, "defaultProvider">,
|
|
183
|
-
): FieldSchemaAlpha<FieldKind.Optional, UnannotateImplicitAllowedTypes<T>, TCustomMetadata>;
|
|
184
|
-
|
|
185
|
-
function optional<
|
|
186
|
-
const T extends ImplicitAnnotatedAllowedTypes,
|
|
187
|
-
const TCustomMetadata = unknown,
|
|
188
|
-
>(
|
|
189
|
-
t: T,
|
|
190
|
-
props?: Omit<FieldPropsAlpha<TCustomMetadata>, "defaultProvider">,
|
|
191
|
-
): FieldSchemaAlpha<FieldKind.Optional, UnannotateImplicitAllowedTypes<T>, TCustomMetadata> {
|
|
192
|
-
return createFieldSchema(FieldKind.Optional, t, {
|
|
193
|
-
defaultProvider: defaultOptionalProvider,
|
|
194
|
-
...props,
|
|
195
|
-
});
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
function required<const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(
|
|
199
|
-
t: T,
|
|
200
|
-
props?: Omit<FieldPropsAlpha<TCustomMetadata>, "defaultProvider">,
|
|
201
|
-
): FieldSchemaAlpha<FieldKind.Required, T, TCustomMetadata>;
|
|
202
|
-
|
|
203
|
-
function required<
|
|
204
|
-
const T extends ImplicitAnnotatedAllowedTypes,
|
|
205
|
-
const TCustomMetadata = unknown,
|
|
206
|
-
>(
|
|
207
|
-
t: T,
|
|
208
|
-
props?: Omit<FieldPropsAlpha<TCustomMetadata>, "defaultProvider">,
|
|
209
|
-
): FieldSchemaAlpha<FieldKind.Required, UnannotateImplicitAllowedTypes<T>, TCustomMetadata>;
|
|
210
|
-
|
|
211
|
-
function required<
|
|
212
|
-
const T extends ImplicitAnnotatedAllowedTypes,
|
|
213
|
-
const TCustomMetadata = unknown,
|
|
214
|
-
>(
|
|
215
|
-
t: T,
|
|
216
|
-
props?: Omit<FieldPropsAlpha<TCustomMetadata>, "defaultProvider">,
|
|
217
|
-
): FieldSchemaAlpha<FieldKind.Required, UnannotateImplicitAllowedTypes<T>, TCustomMetadata> {
|
|
218
|
-
return createFieldSchema(FieldKind.Required, t, props);
|
|
219
|
-
}
|
|
220
|
-
// #endregion
|
|
221
|
-
|
|
222
164
|
/**
|
|
223
165
|
* Implementation of {@link SchemaStatics}.
|
|
224
166
|
* @remarks
|
|
@@ -233,9 +175,22 @@ export const schemaStaticsStable = {
|
|
|
233
175
|
handle: handleSchema,
|
|
234
176
|
leaves: [stringSchema, numberSchema, booleanSchema, nullSchema, handleSchema],
|
|
235
177
|
|
|
236
|
-
optional,
|
|
178
|
+
optional: <const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(
|
|
179
|
+
t: T,
|
|
180
|
+
props?: Omit<FieldPropsAlpha<TCustomMetadata>, "defaultProvider">,
|
|
181
|
+
): FieldSchemaAlpha<FieldKind.Optional, T, TCustomMetadata> => {
|
|
182
|
+
return createFieldSchema(FieldKind.Optional, t, {
|
|
183
|
+
defaultProvider: defaultOptionalProvider,
|
|
184
|
+
...props,
|
|
185
|
+
});
|
|
186
|
+
},
|
|
237
187
|
|
|
238
|
-
required,
|
|
188
|
+
required: <const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(
|
|
189
|
+
t: T,
|
|
190
|
+
props?: Omit<FieldPropsAlpha<TCustomMetadata>, "defaultProvider">,
|
|
191
|
+
): FieldSchemaAlpha<FieldKind.Required, T, TCustomMetadata> => {
|
|
192
|
+
return createFieldSchema(FieldKind.Required, t, props);
|
|
193
|
+
},
|
|
239
194
|
|
|
240
195
|
optionalRecursive: <
|
|
241
196
|
const T extends System_Unsafe.ImplicitAllowedTypesUnsafe,
|
|
@@ -273,6 +228,9 @@ export const schemaStatics = {
|
|
|
273
228
|
},
|
|
274
229
|
} as const;
|
|
275
230
|
|
|
231
|
+
/**
|
|
232
|
+
* {@link Unenforced} version of {@link createFieldSchema}.
|
|
233
|
+
*/
|
|
276
234
|
function createFieldSchemaUnsafe<
|
|
277
235
|
Kind extends FieldKind,
|
|
278
236
|
Types extends System_Unsafe.ImplicitAllowedTypesUnsafe,
|
|
@@ -13,11 +13,7 @@ import {
|
|
|
13
13
|
} from "../../feature-libraries/schema-index/index.js";
|
|
14
14
|
import type { JsonCompatible } from "../../util/index.js";
|
|
15
15
|
import type { SchemaUpgrade } from "../core/index.js";
|
|
16
|
-
import {
|
|
17
|
-
normalizeFieldSchema,
|
|
18
|
-
type ImplicitAnnotatedFieldSchema,
|
|
19
|
-
type ImplicitFieldSchema,
|
|
20
|
-
} from "../fieldSchema.js";
|
|
16
|
+
import { normalizeFieldSchema, type ImplicitFieldSchema } from "../fieldSchema.js";
|
|
21
17
|
import { toStoredSchema } from "../toStoredSchema.js";
|
|
22
18
|
import { TreeViewConfigurationAlpha } from "./configuration.js";
|
|
23
19
|
|
|
@@ -57,7 +53,7 @@ import type { SchemaCompatibilityStatus } from "./tree.js";
|
|
|
57
53
|
* @alpha
|
|
58
54
|
*/
|
|
59
55
|
export function extractPersistedSchema(
|
|
60
|
-
schema:
|
|
56
|
+
schema: ImplicitFieldSchema,
|
|
61
57
|
oldestCompatibleClient: FluidClientVersion,
|
|
62
58
|
includeStaged: (upgrade: SchemaUpgrade) => boolean,
|
|
63
59
|
): JsonCompatible {
|
|
@@ -412,7 +412,7 @@ export interface SchemaCompatibilityStatus {
|
|
|
412
412
|
* Note that other content in the stored schema that does not impact document compatibility, like {@link NodeSchemaOptionsAlpha.persistedMetadata}, does not affect this field.
|
|
413
413
|
*
|
|
414
414
|
* For the computation of this equivalence, {@link SchemaStaticsAlpha.staged | staged} schemas are not included.
|
|
415
|
-
* If there are any unknown optional fields, even if allowed by {@link
|
|
415
|
+
* If there are any unknown optional fields, even if allowed by {@link ObjectSchemaOptions.allowUnknownOptionalFields}, `isEquivalent` will be false.
|
|
416
416
|
*/
|
|
417
417
|
readonly isEquivalent: boolean;
|
|
418
418
|
|
|
@@ -423,7 +423,7 @@ export interface SchemaCompatibilityStatus {
|
|
|
423
423
|
* If the view schema does not opt into supporting any additional cases, then `canView` is only true when `isEquivalent` is also true.
|
|
424
424
|
* The view schema can however opt into supporting additional cases, and thus can also view documents with stored schema which would be equivalent, except for the following discrepancies:
|
|
425
425
|
*
|
|
426
|
-
* - An object node with {@link
|
|
426
|
+
* - An object node with {@link ObjectSchemaOptions.allowUnknownOptionalFields} to set to true that has additional optional fields in the stored schema beyond those mentioned in its view schema.
|
|
427
427
|
*
|
|
428
428
|
* - An additional type allowed at a location in the stored schema where it is {@link SchemaStaticsAlpha.staged | staged} in the view schema.
|
|
429
429
|
*
|
|
@@ -451,7 +451,7 @@ export interface SchemaCompatibilityStatus {
|
|
|
451
451
|
* @remarks
|
|
452
452
|
* When true, it is valid to call {@link TreeView.upgradeSchema} (though if the stored schema is already an exact match, this is a no-op).
|
|
453
453
|
*
|
|
454
|
-
* When adding optional fields to schema which previously were marked with {@link
|
|
454
|
+
* When adding optional fields to schema which previously were marked with {@link ObjectSchemaOptions.allowUnknownOptionalFields}
|
|
455
455
|
* the schema upgrade (assuming no other changes are included) will allow the previous version to view.
|
|
456
456
|
* Even this case must still must be done with caution however as only clients with the newly added field will be able to do future upgrades.
|
|
457
457
|
* Thus if a version of an application is shipped that adds an unknown optional field, all future versions should include it, even if its no longer used,
|