@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
package/src/simple-tree/index.ts
CHANGED
|
@@ -9,7 +9,7 @@ export {
|
|
|
9
9
|
type WithType,
|
|
10
10
|
type TreeNodeSchema,
|
|
11
11
|
type AnnotatedAllowedType,
|
|
12
|
-
type
|
|
12
|
+
type AllowedTypesFullEvaluated,
|
|
13
13
|
NodeKind,
|
|
14
14
|
type TreeNodeSchemaClass,
|
|
15
15
|
type TreeNodeSchemaNonClass,
|
|
@@ -21,7 +21,7 @@ export {
|
|
|
21
21
|
tryDisposeTreeNode,
|
|
22
22
|
HydratedContext,
|
|
23
23
|
SimpleContextSlot,
|
|
24
|
-
|
|
24
|
+
getInnerNode,
|
|
25
25
|
getOrCreateNodeFromInnerNode,
|
|
26
26
|
getOrCreateNodeFromInnerUnboxedNode,
|
|
27
27
|
getKernel,
|
|
@@ -38,12 +38,8 @@ export {
|
|
|
38
38
|
normalizeAllowedTypes,
|
|
39
39
|
type NodeSchemaMetadata,
|
|
40
40
|
type ImplicitAllowedTypes,
|
|
41
|
-
type ImplicitAnnotatedAllowedTypes,
|
|
42
|
-
type UnannotateImplicitAllowedTypes,
|
|
43
41
|
type AllowedTypesMetadata,
|
|
44
42
|
evaluateLazySchema,
|
|
45
|
-
type UnannotateAllowedTypes,
|
|
46
|
-
type UnannotateAllowedType,
|
|
47
43
|
type UnannotateAllowedTypesList,
|
|
48
44
|
type AllowedTypeMetadata,
|
|
49
45
|
type AnnotatedAllowedTypes,
|
|
@@ -57,6 +53,11 @@ export {
|
|
|
57
53
|
type SchemaVisitor,
|
|
58
54
|
type SimpleNodeSchemaBase,
|
|
59
55
|
withBufferedTreeEvents,
|
|
56
|
+
type AnnotateAllowedTypesList,
|
|
57
|
+
type AllowedTypesFull,
|
|
58
|
+
type AllowedTypesFullFromMixed,
|
|
59
|
+
AnnotatedAllowedTypesInternal,
|
|
60
|
+
type NumberKeys,
|
|
60
61
|
} from "./core/index.js";
|
|
61
62
|
export { walkFieldSchema } from "./walkFieldSchema.js";
|
|
62
63
|
export type { UnsafeUnknownSchema, Insertable } from "./unsafeUnknownSchema.js";
|
|
@@ -73,7 +74,8 @@ export {
|
|
|
73
74
|
SchemaFactory,
|
|
74
75
|
SchemaFactoryBeta,
|
|
75
76
|
SchemaFactoryAlpha,
|
|
76
|
-
type
|
|
77
|
+
type ObjectSchemaOptionsAlpha,
|
|
78
|
+
type ObjectSchemaOptions,
|
|
77
79
|
type ScopedSchemaName,
|
|
78
80
|
type ValidateRecursiveSchema,
|
|
79
81
|
type FixRecursiveArraySchema,
|
|
@@ -83,6 +85,9 @@ export {
|
|
|
83
85
|
treeNodeApi,
|
|
84
86
|
type TreeNodeApi,
|
|
85
87
|
type NodeChangedData,
|
|
88
|
+
borrowCursorFromTreeNodeOrValue,
|
|
89
|
+
exportConcise,
|
|
90
|
+
importConcise,
|
|
86
91
|
TreeBeta,
|
|
87
92
|
type TreeChangeEventsBeta,
|
|
88
93
|
type SimpleTreeIndex,
|
|
@@ -122,6 +127,13 @@ export {
|
|
|
122
127
|
type ArrayNodeCustomizableSchemaUnsafe,
|
|
123
128
|
type MapNodeCustomizableSchemaUnsafe,
|
|
124
129
|
type TreeRecordNodeUnsafe,
|
|
130
|
+
type UnannotateAllowedTypeUnsafe,
|
|
131
|
+
type AnnotatedAllowedTypeUnsafe,
|
|
132
|
+
type AnnotatedAllowedTypesUnsafe,
|
|
133
|
+
type AllowedTypesFullUnsafe,
|
|
134
|
+
type AllowedTypesFullFromMixedUnsafe,
|
|
135
|
+
type UnannotateAllowedTypesListUnsafe,
|
|
136
|
+
type AnnotateAllowedTypesListUnsafe,
|
|
125
137
|
type TreeViewAlpha,
|
|
126
138
|
type TreeBranch,
|
|
127
139
|
type TreeBranchEvents,
|
|
@@ -184,9 +196,7 @@ export type {
|
|
|
184
196
|
} from "./simpleSchema.js";
|
|
185
197
|
export {
|
|
186
198
|
type ImplicitFieldSchema,
|
|
187
|
-
type ImplicitAnnotatedFieldSchema,
|
|
188
199
|
type TreeFieldFromImplicitField,
|
|
189
|
-
type UnannotateImplicitFieldSchema,
|
|
190
200
|
FieldKind,
|
|
191
201
|
FieldSchema,
|
|
192
202
|
FieldSchemaAlpha,
|
|
@@ -226,7 +236,6 @@ export {
|
|
|
226
236
|
ObjectNodeSchema,
|
|
227
237
|
type ObjectNodeSchemaPrivate,
|
|
228
238
|
isObjectNodeSchema,
|
|
229
|
-
type InsertableObjectFromAnnotatedSchemaRecord,
|
|
230
239
|
type TreeObjectNode,
|
|
231
240
|
setField,
|
|
232
241
|
isRecordNodeSchema,
|
|
@@ -235,7 +244,6 @@ export {
|
|
|
235
244
|
type RecordNodePojoEmulationSchema,
|
|
236
245
|
RecordNodeSchema,
|
|
237
246
|
type TreeRecordNode,
|
|
238
|
-
type UnannotateSchemaRecord,
|
|
239
247
|
} from "./node-kinds/index.js";
|
|
240
248
|
export {
|
|
241
249
|
unhydratedFlexTreeFromInsertable,
|
|
@@ -25,21 +25,18 @@ import {
|
|
|
25
25
|
typeSchemaSymbol,
|
|
26
26
|
getOrCreateNodeFromInnerNode,
|
|
27
27
|
getSimpleNodeSchemaFromInnerNode,
|
|
28
|
-
|
|
28
|
+
getInnerNode,
|
|
29
29
|
type TreeNodeSchemaClass,
|
|
30
30
|
getKernel,
|
|
31
31
|
type UnhydratedFlexTreeNode,
|
|
32
32
|
UnhydratedSequenceField,
|
|
33
33
|
getOrCreateNodeFromInnerUnboxedNode,
|
|
34
34
|
normalizeAllowedTypes,
|
|
35
|
-
unannotateImplicitAllowedTypes,
|
|
36
35
|
type ImplicitAllowedTypes,
|
|
37
|
-
type ImplicitAnnotatedAllowedTypes,
|
|
38
36
|
type InsertableTreeNodeFromImplicitAllowedTypes,
|
|
39
37
|
type NodeSchemaMetadata,
|
|
40
38
|
type TreeLeafValue,
|
|
41
39
|
type TreeNodeFromImplicitAllowedTypes,
|
|
42
|
-
type UnannotateImplicitAllowedTypes,
|
|
43
40
|
TreeNodeValid,
|
|
44
41
|
type MostDerivedData,
|
|
45
42
|
type TreeNodeSchemaInitializedData,
|
|
@@ -480,7 +477,7 @@ export class IterableTreeArrayContent<T> implements Iterable<T> {
|
|
|
480
477
|
* Given a array node proxy, returns its underlying LazySequence field.
|
|
481
478
|
*/
|
|
482
479
|
function getSequenceField(arrayNode: ReadonlyArrayNode): FlexTreeSequenceField {
|
|
483
|
-
return
|
|
480
|
+
return getInnerNode(arrayNode).getBoxed(EmptyKey) as FlexTreeSequenceField;
|
|
484
481
|
}
|
|
485
482
|
|
|
486
483
|
// For compatibility, we are initially implement 'readonly T[]' by applying the Array.prototype methods
|
|
@@ -863,7 +860,7 @@ abstract class CustomArrayNodeBase<const T extends ImplicitAllowedTypes>
|
|
|
863
860
|
|
|
864
861
|
public static readonly kind = NodeKind.Array;
|
|
865
862
|
|
|
866
|
-
protected abstract get childSchema():
|
|
863
|
+
protected abstract get childSchema(): ImplicitAllowedTypes;
|
|
867
864
|
protected abstract get allowedTypes(): ReadonlySet<TreeNodeSchema>;
|
|
868
865
|
|
|
869
866
|
public abstract override get [typeSchemaSymbol](): TreeNodeSchemaClass<
|
|
@@ -889,7 +886,7 @@ abstract class CustomArrayNodeBase<const T extends ImplicitAllowedTypes>
|
|
|
889
886
|
);
|
|
890
887
|
|
|
891
888
|
const kernel = getKernel(this);
|
|
892
|
-
const flexContext = kernel.
|
|
889
|
+
const flexContext = kernel.getInnerNode().context;
|
|
893
890
|
assert(
|
|
894
891
|
flexContext === kernel.context.flexContext,
|
|
895
892
|
0xc14 /* Expected flexContext to match */,
|
|
@@ -1147,7 +1144,7 @@ abstract class CustomArrayNodeBase<const T extends ImplicitAllowedTypes>
|
|
|
1147
1144
|
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
|
|
1148
1145
|
export function arraySchema<
|
|
1149
1146
|
TName extends string,
|
|
1150
|
-
const T extends
|
|
1147
|
+
const T extends ImplicitAllowedTypes,
|
|
1151
1148
|
const ImplicitlyConstructable extends boolean,
|
|
1152
1149
|
const TCustomMetadata = unknown,
|
|
1153
1150
|
>(
|
|
@@ -1167,18 +1164,16 @@ export function arraySchema<
|
|
|
1167
1164
|
ArrayNodePojoEmulationSchema<TName, T, ImplicitlyConstructable, TCustomMetadata> &
|
|
1168
1165
|
TreeNodeSchemaCorePrivate;
|
|
1169
1166
|
|
|
1170
|
-
const
|
|
1171
|
-
|
|
1172
|
-
const lazyChildTypes = new Lazy(() => normalizeAllowedTypes(unannotatedTypes));
|
|
1167
|
+
const normalizedTypes = normalizeAllowedTypes(info);
|
|
1173
1168
|
const lazyAllowedTypesIdentifiers = new Lazy(
|
|
1174
|
-
() => new Set(
|
|
1169
|
+
() => new Set(normalizedTypes.evaluate().map((type) => type.identifier)),
|
|
1175
1170
|
);
|
|
1176
1171
|
|
|
1177
1172
|
let privateData: TreeNodeSchemaPrivateData | undefined;
|
|
1178
1173
|
|
|
1179
1174
|
// This class returns a proxy from its constructor to handle numeric indexing.
|
|
1180
1175
|
// Alternatively it could extend a normal class which gets tons of numeric properties added.
|
|
1181
|
-
class Schema extends CustomArrayNodeBase<
|
|
1176
|
+
class Schema extends CustomArrayNodeBase<T> {
|
|
1182
1177
|
public static override prepareInstance<T2>(
|
|
1183
1178
|
this: typeof TreeNodeValid<T2>,
|
|
1184
1179
|
instance: TreeNodeValid<T2>,
|
|
@@ -1255,7 +1250,7 @@ export function arraySchema<
|
|
|
1255
1250
|
public static readonly implicitlyConstructable: ImplicitlyConstructable =
|
|
1256
1251
|
implicitlyConstructable;
|
|
1257
1252
|
public static get childTypes(): ReadonlySet<TreeNodeSchema> {
|
|
1258
|
-
return
|
|
1253
|
+
return normalizedTypes.evaluateSet();
|
|
1259
1254
|
}
|
|
1260
1255
|
public static readonly metadata: NodeSchemaMetadata<TCustomMetadata> = metadata ?? {};
|
|
1261
1256
|
public static readonly persistedMetadata: JsonCompatibleReadOnlyObject | undefined =
|
|
@@ -1273,7 +1268,7 @@ export function arraySchema<
|
|
|
1273
1268
|
return info;
|
|
1274
1269
|
}
|
|
1275
1270
|
protected get allowedTypes(): ReadonlySet<TreeNodeSchema> {
|
|
1276
|
-
return
|
|
1271
|
+
return normalizedTypes.evaluateSet();
|
|
1277
1272
|
}
|
|
1278
1273
|
|
|
1279
1274
|
public static get [privateDataSymbol](): TreeNodeSchemaPrivateData {
|
|
@@ -1370,10 +1365,10 @@ function arrayToFlexContent(data: FactoryContent, schema: ArrayNodeSchema): Flex
|
|
|
1370
1365
|
throw new UsageError(`Input data is incompatible with Array schema: ${data}`);
|
|
1371
1366
|
}
|
|
1372
1367
|
|
|
1373
|
-
const allowedChildTypes = normalizeAllowedTypes(schema.info
|
|
1368
|
+
const allowedChildTypes = normalizeAllowedTypes(schema.info);
|
|
1374
1369
|
|
|
1375
1370
|
const mappedData = Array.from(data, (child) =>
|
|
1376
|
-
arrayChildToFlexTree(child, allowedChildTypes),
|
|
1371
|
+
arrayChildToFlexTree(child, allowedChildTypes.evaluateSet()),
|
|
1377
1372
|
);
|
|
1378
1373
|
|
|
1379
1374
|
const context = getUnhydratedContext(schema).flexContext;
|
|
@@ -10,9 +10,8 @@ import type {
|
|
|
10
10
|
TreeNodeSchema,
|
|
11
11
|
TreeNodeSchemaNonClass,
|
|
12
12
|
WithType,
|
|
13
|
-
|
|
13
|
+
ImplicitAllowedTypes,
|
|
14
14
|
InsertableTreeNodeFromImplicitAllowedTypes,
|
|
15
|
-
UnannotateImplicitAllowedTypes,
|
|
16
15
|
} from "../../core/index.js";
|
|
17
16
|
|
|
18
17
|
import type { SimpleArrayNodeSchema } from "../../simpleSchema.js";
|
|
@@ -23,14 +22,14 @@ import type { SimpleArrayNodeSchema } from "../../simpleSchema.js";
|
|
|
23
22
|
*/
|
|
24
23
|
export interface ArrayNodeCustomizableSchema<
|
|
25
24
|
out TName extends string = string,
|
|
26
|
-
in out T extends
|
|
25
|
+
in out T extends ImplicitAllowedTypes = ImplicitAllowedTypes,
|
|
27
26
|
out ImplicitlyConstructable extends boolean = true,
|
|
28
27
|
out TCustomMetadata = unknown,
|
|
29
28
|
> extends TreeNodeSchemaClass<
|
|
30
29
|
TName,
|
|
31
30
|
NodeKind.Array,
|
|
32
|
-
TreeArrayNode<
|
|
33
|
-
Iterable<InsertableTreeNodeFromImplicitAllowedTypes<
|
|
31
|
+
TreeArrayNode<T> & WithType<TName, NodeKind.Array, T>,
|
|
32
|
+
Iterable<InsertableTreeNodeFromImplicitAllowedTypes<T>>,
|
|
34
33
|
ImplicitlyConstructable,
|
|
35
34
|
T,
|
|
36
35
|
undefined,
|
|
@@ -44,14 +43,14 @@ export interface ArrayNodeCustomizableSchema<
|
|
|
44
43
|
*/
|
|
45
44
|
export interface ArrayNodePojoEmulationSchema<
|
|
46
45
|
out TName extends string = string,
|
|
47
|
-
in out T extends
|
|
46
|
+
in out T extends ImplicitAllowedTypes = ImplicitAllowedTypes,
|
|
48
47
|
out ImplicitlyConstructable extends boolean = true,
|
|
49
48
|
out TCustomMetadata = unknown,
|
|
50
49
|
> extends TreeNodeSchemaNonClass<
|
|
51
50
|
TName,
|
|
52
51
|
NodeKind.Array,
|
|
53
|
-
TreeArrayNode<
|
|
54
|
-
Iterable<InsertableTreeNodeFromImplicitAllowedTypes<
|
|
52
|
+
TreeArrayNode<T> & WithType<TName, NodeKind.Array, T>,
|
|
53
|
+
Iterable<InsertableTreeNodeFromImplicitAllowedTypes<T>>,
|
|
55
54
|
ImplicitlyConstructable,
|
|
56
55
|
T,
|
|
57
56
|
undefined,
|
|
@@ -12,7 +12,6 @@ import { brand } from "../../util/index.js";
|
|
|
12
12
|
import {
|
|
13
13
|
createField,
|
|
14
14
|
type UnhydratedFlexTreeField,
|
|
15
|
-
unannotateImplicitAllowedTypes,
|
|
16
15
|
normalizeAllowedTypes,
|
|
17
16
|
type FlexContent,
|
|
18
17
|
} from "../core/index.js";
|
|
@@ -35,7 +34,7 @@ export function recordLikeDataToFlexContent(
|
|
|
35
34
|
fieldsIterator: Iterable<readonly [string, InsertableContent]>,
|
|
36
35
|
schema: MapNodeSchema | RecordNodeSchema,
|
|
37
36
|
): FlexContent {
|
|
38
|
-
const allowedChildTypes = normalizeAllowedTypes(
|
|
37
|
+
const allowedChildTypes = normalizeAllowedTypes(schema.info);
|
|
39
38
|
const context = getUnhydratedContext(schema).flexContext;
|
|
40
39
|
|
|
41
40
|
const transformedFields = new Map<FieldKey, UnhydratedFlexTreeField>();
|
|
@@ -45,7 +44,10 @@ export function recordLikeDataToFlexContent(
|
|
|
45
44
|
|
|
46
45
|
// Omit undefined values - an entry with an undefined value is equivalent to one that has been removed or omitted
|
|
47
46
|
if (value !== undefined) {
|
|
48
|
-
const child = unhydratedFlexTreeFromInsertableNode(
|
|
47
|
+
const child = unhydratedFlexTreeFromInsertableNode(
|
|
48
|
+
value,
|
|
49
|
+
allowedChildTypes.evaluateSet(),
|
|
50
|
+
);
|
|
49
51
|
const field = createField(context, FieldKinds.optional.identifier, brand(key), [child]);
|
|
50
52
|
transformedFields.set(brand(key), field);
|
|
51
53
|
}
|
|
@@ -27,7 +27,6 @@ export {
|
|
|
27
27
|
|
|
28
28
|
export {
|
|
29
29
|
type FieldHasDefault,
|
|
30
|
-
type InsertableObjectFromAnnotatedSchemaRecord,
|
|
31
30
|
type InsertableObjectFromSchemaRecord,
|
|
32
31
|
isObjectNodeSchema,
|
|
33
32
|
type ObjectFromSchemaRecord,
|
|
@@ -37,7 +36,6 @@ export {
|
|
|
37
36
|
setField,
|
|
38
37
|
type TreeObjectNode,
|
|
39
38
|
type SimpleKeyMap,
|
|
40
|
-
type UnannotateSchemaRecord,
|
|
41
39
|
} from "./object/index.js";
|
|
42
40
|
|
|
43
41
|
export {
|
|
@@ -26,17 +26,14 @@ import {
|
|
|
26
26
|
typeNameSymbol,
|
|
27
27
|
type TreeNode,
|
|
28
28
|
typeSchemaSymbol,
|
|
29
|
-
|
|
29
|
+
getInnerNode,
|
|
30
30
|
type InternalTreeNode,
|
|
31
31
|
type UnhydratedFlexTreeNode,
|
|
32
32
|
normalizeAllowedTypes,
|
|
33
|
-
unannotateImplicitAllowedTypes,
|
|
34
33
|
type ImplicitAllowedTypes,
|
|
35
|
-
type ImplicitAnnotatedAllowedTypes,
|
|
36
34
|
type InsertableTreeNodeFromImplicitAllowedTypes,
|
|
37
35
|
type NodeSchemaMetadata,
|
|
38
36
|
type TreeNodeFromImplicitAllowedTypes,
|
|
39
|
-
type UnannotateImplicitAllowedTypes,
|
|
40
37
|
TreeNodeValid,
|
|
41
38
|
type MostDerivedData,
|
|
42
39
|
type TreeNodeSchemaInitializedData,
|
|
@@ -176,7 +173,7 @@ abstract class CustomMapNodeBase<const T extends ImplicitAllowedTypes> extends T
|
|
|
176
173
|
}
|
|
177
174
|
|
|
178
175
|
private get innerNode(): InnerNode {
|
|
179
|
-
return
|
|
176
|
+
return getInnerNode(this);
|
|
180
177
|
}
|
|
181
178
|
|
|
182
179
|
private editor(key: string): OptionalFieldEditBuilder<FlexibleNodeContent> {
|
|
@@ -245,7 +242,7 @@ abstract class CustomMapNodeBase<const T extends ImplicitAllowedTypes> extends T
|
|
|
245
242
|
callbackFn: (value: TreeNodeFromImplicitAllowedTypes<T>, key: string, map: TThis) => void,
|
|
246
243
|
thisArg?: unknown,
|
|
247
244
|
): void {
|
|
248
|
-
for (const field of
|
|
245
|
+
for (const field of getInnerNode(this)) {
|
|
249
246
|
const node = tryGetTreeNodeForField(field) as TreeNodeFromImplicitAllowedTypes<T>;
|
|
250
247
|
callbackFn.call(thisArg, node, field.key, this);
|
|
251
248
|
}
|
|
@@ -263,7 +260,7 @@ abstract class CustomMapNodeBase<const T extends ImplicitAllowedTypes> extends T
|
|
|
263
260
|
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
|
|
264
261
|
export function mapSchema<
|
|
265
262
|
TName extends string,
|
|
266
|
-
const T extends
|
|
263
|
+
const T extends ImplicitAllowedTypes,
|
|
267
264
|
const ImplicitlyConstructable extends boolean,
|
|
268
265
|
const TCustomMetadata = unknown,
|
|
269
266
|
>(
|
|
@@ -274,19 +271,14 @@ export function mapSchema<
|
|
|
274
271
|
metadata?: NodeSchemaMetadata<TCustomMetadata>,
|
|
275
272
|
persistedMetadata?: JsonCompatibleReadOnlyObject | undefined,
|
|
276
273
|
) {
|
|
277
|
-
const
|
|
278
|
-
normalizeAllowedTypes(unannotateImplicitAllowedTypes(info)),
|
|
279
|
-
);
|
|
274
|
+
const normalizedTypes = normalizeAllowedTypes(info);
|
|
280
275
|
const lazyAllowedTypesIdentifiers = new Lazy(
|
|
281
|
-
() => new Set(
|
|
276
|
+
() => new Set(normalizedTypes.evaluate().map((type) => type.identifier)),
|
|
282
277
|
);
|
|
283
278
|
|
|
284
279
|
let privateData: TreeNodeSchemaPrivateData | undefined;
|
|
285
280
|
|
|
286
|
-
class Schema
|
|
287
|
-
extends CustomMapNodeBase<UnannotateImplicitAllowedTypes<T>>
|
|
288
|
-
implements TreeMapNode<UnannotateImplicitAllowedTypes<T>>
|
|
289
|
-
{
|
|
281
|
+
class Schema extends CustomMapNodeBase<T> implements TreeMapNode<T> {
|
|
290
282
|
public static override prepareInstance<T2>(
|
|
291
283
|
this: typeof TreeNodeValid<T2>,
|
|
292
284
|
instance: TreeNodeValid<T2>,
|
|
@@ -325,7 +317,7 @@ export function mapSchema<
|
|
|
325
317
|
public static readonly implicitlyConstructable: ImplicitlyConstructable =
|
|
326
318
|
implicitlyConstructable;
|
|
327
319
|
public static get childTypes(): ReadonlySet<TreeNodeSchema> {
|
|
328
|
-
return
|
|
320
|
+
return normalizedTypes.evaluateSet();
|
|
329
321
|
}
|
|
330
322
|
public static readonly metadata: NodeSchemaMetadata<TCustomMetadata> = metadata ?? {};
|
|
331
323
|
public static readonly persistedMetadata: JsonCompatibleReadOnlyObject | undefined =
|
|
@@ -10,8 +10,7 @@ import type {
|
|
|
10
10
|
TreeNodeSchema,
|
|
11
11
|
TreeNodeSchemaNonClass,
|
|
12
12
|
WithType,
|
|
13
|
-
|
|
14
|
-
UnannotateImplicitAllowedTypes,
|
|
13
|
+
ImplicitAllowedTypes,
|
|
15
14
|
} from "../../core/index.js";
|
|
16
15
|
|
|
17
16
|
import type { SimpleMapNodeSchema } from "../../simpleSchema.js";
|
|
@@ -22,14 +21,14 @@ import type { SimpleMapNodeSchema } from "../../simpleSchema.js";
|
|
|
22
21
|
*/
|
|
23
22
|
export interface MapNodeCustomizableSchema<
|
|
24
23
|
out TName extends string = string,
|
|
25
|
-
in out T extends
|
|
24
|
+
in out T extends ImplicitAllowedTypes = ImplicitAllowedTypes,
|
|
26
25
|
out ImplicitlyConstructable extends boolean = true,
|
|
27
26
|
out TCustomMetadata = unknown,
|
|
28
27
|
> extends TreeNodeSchemaClass<
|
|
29
28
|
TName,
|
|
30
29
|
NodeKind.Map,
|
|
31
|
-
TreeMapNode<
|
|
32
|
-
MapNodeInsertableData<
|
|
30
|
+
TreeMapNode<T> & WithType<TName, NodeKind.Map, T>,
|
|
31
|
+
MapNodeInsertableData<T>,
|
|
33
32
|
ImplicitlyConstructable,
|
|
34
33
|
T,
|
|
35
34
|
undefined,
|
|
@@ -43,14 +42,14 @@ export interface MapNodeCustomizableSchema<
|
|
|
43
42
|
*/
|
|
44
43
|
export interface MapNodePojoEmulationSchema<
|
|
45
44
|
out TName extends string = string,
|
|
46
|
-
in out T extends
|
|
45
|
+
in out T extends ImplicitAllowedTypes = ImplicitAllowedTypes,
|
|
47
46
|
out ImplicitlyConstructable extends boolean = true,
|
|
48
47
|
out TCustomMetadata = unknown,
|
|
49
48
|
> extends TreeNodeSchemaNonClass<
|
|
50
49
|
TName,
|
|
51
50
|
NodeKind.Map,
|
|
52
|
-
TreeMapNode<
|
|
53
|
-
MapNodeInsertableData<
|
|
51
|
+
TreeMapNode<T> & WithType<TName, NodeKind.Map, T>,
|
|
52
|
+
MapNodeInsertableData<T>,
|
|
54
53
|
ImplicitlyConstructable,
|
|
55
54
|
T,
|
|
56
55
|
undefined,
|
|
@@ -5,7 +5,6 @@
|
|
|
5
5
|
|
|
6
6
|
export {
|
|
7
7
|
type FieldHasDefault,
|
|
8
|
-
type InsertableObjectFromAnnotatedSchemaRecord,
|
|
9
8
|
type InsertableObjectFromSchemaRecord,
|
|
10
9
|
type ObjectFromSchemaRecord,
|
|
11
10
|
objectSchema,
|
|
@@ -17,5 +16,4 @@ export {
|
|
|
17
16
|
isObjectNodeSchema,
|
|
18
17
|
ObjectNodeSchema,
|
|
19
18
|
type ObjectNodeSchemaPrivate,
|
|
20
|
-
type UnannotateSchemaRecord,
|
|
21
19
|
} from "./objectNodeTypes.js";
|
|
@@ -38,11 +38,9 @@ import {
|
|
|
38
38
|
type InternalTreeNode,
|
|
39
39
|
type TreeNode,
|
|
40
40
|
type UnhydratedFlexTreeNode,
|
|
41
|
-
|
|
41
|
+
getInnerNode,
|
|
42
42
|
type NodeSchemaMetadata,
|
|
43
43
|
type ImplicitAllowedTypes,
|
|
44
|
-
type ImplicitAnnotatedAllowedTypes,
|
|
45
|
-
unannotateImplicitAllowedTypes,
|
|
46
44
|
TreeNodeValid,
|
|
47
45
|
type MostDerivedData,
|
|
48
46
|
type TreeNodeSchemaInitializedData,
|
|
@@ -63,7 +61,6 @@ import type {
|
|
|
63
61
|
ObjectNodeSchema,
|
|
64
62
|
ObjectNodeSchemaInternalData,
|
|
65
63
|
ObjectNodeSchemaPrivate,
|
|
66
|
-
UnannotateSchemaRecord,
|
|
67
64
|
} from "./objectNodeTypes.js";
|
|
68
65
|
import { prepareForInsertion } from "../../prepareForInsertion.js";
|
|
69
66
|
import {
|
|
@@ -72,11 +69,10 @@ import {
|
|
|
72
69
|
getExplicitStoredKey,
|
|
73
70
|
type TreeFieldFromImplicitField,
|
|
74
71
|
type InsertableTreeFieldFromImplicitField,
|
|
75
|
-
FieldSchema,
|
|
72
|
+
type FieldSchema,
|
|
76
73
|
FieldSchemaAlpha,
|
|
77
74
|
normalizeFieldSchema,
|
|
78
75
|
FieldKind,
|
|
79
|
-
type ImplicitAnnotatedFieldSchema,
|
|
80
76
|
type FieldProps,
|
|
81
77
|
type ContextualFieldProvider,
|
|
82
78
|
extractFieldProvider,
|
|
@@ -194,18 +190,6 @@ export type InsertableObjectFromSchemaRecord<
|
|
|
194
190
|
}
|
|
195
191
|
>;
|
|
196
192
|
|
|
197
|
-
/**
|
|
198
|
-
* Helper used to remove annotations from a schema record and produce insertable objects,
|
|
199
|
-
*
|
|
200
|
-
* @privateRemarks
|
|
201
|
-
* This calls {@link InsertableObjectFromSchemaRecord} in order to produce the insertable objects.
|
|
202
|
-
*
|
|
203
|
-
* @system @alpha
|
|
204
|
-
*/
|
|
205
|
-
export type InsertableObjectFromAnnotatedSchemaRecord<
|
|
206
|
-
T extends RestrictiveStringRecord<ImplicitAnnotatedFieldSchema>,
|
|
207
|
-
> = InsertableObjectFromSchemaRecord<UnannotateSchemaRecord<T>>;
|
|
208
|
-
|
|
209
193
|
/**
|
|
210
194
|
* Maps from simple field keys ("property" keys) to information about the field.
|
|
211
195
|
*
|
|
@@ -222,9 +206,7 @@ export type SimpleKeyMap = ReadonlyMap<
|
|
|
222
206
|
/**
|
|
223
207
|
* Caches the mappings from property keys to stored keys for the provided object field schemas in {@link simpleKeyToFlexKeyCache}.
|
|
224
208
|
*/
|
|
225
|
-
function createFlexKeyMapping(
|
|
226
|
-
fields: Record<string, ImplicitAnnotatedFieldSchema>,
|
|
227
|
-
): SimpleKeyMap {
|
|
209
|
+
function createFlexKeyMapping(fields: Record<string, ImplicitFieldSchema>): SimpleKeyMap {
|
|
228
210
|
const keyMap: Map<string | symbol, { storedKey: FieldKey; schema: FieldSchema }> = new Map();
|
|
229
211
|
for (const [propertyKey, fieldSchema] of Object.entries(fields)) {
|
|
230
212
|
const schema = normalizeFieldSchema(fieldSchema);
|
|
@@ -261,7 +243,7 @@ function createProxyHandler(
|
|
|
261
243
|
get(target, propertyKey, proxy): unknown {
|
|
262
244
|
const fieldInfo = schema.flexKeyMap.get(propertyKey);
|
|
263
245
|
if (fieldInfo !== undefined) {
|
|
264
|
-
const flexNode =
|
|
246
|
+
const flexNode = getInnerNode(proxy);
|
|
265
247
|
debugAssert(() => !flexNode.context.isDisposed() || "FlexTreeNode is disposed");
|
|
266
248
|
const field = flexNode.tryGetField(fieldInfo.storedKey);
|
|
267
249
|
if (field !== undefined) {
|
|
@@ -292,7 +274,7 @@ function createProxyHandler(
|
|
|
292
274
|
: false;
|
|
293
275
|
}
|
|
294
276
|
|
|
295
|
-
const innerNode =
|
|
277
|
+
const innerNode = getInnerNode(proxy);
|
|
296
278
|
|
|
297
279
|
const innerSchema = innerNode.context.schema.nodeSchema.get(brand(schema.identifier));
|
|
298
280
|
assert(
|
|
@@ -339,7 +321,7 @@ function createProxyHandler(
|
|
|
339
321
|
// If a refactoring is done to associated flex tree data with the target not the proxy, this extra map could be removed,
|
|
340
322
|
// and the design would be more compatible with proxyless nodes.
|
|
341
323
|
const proxy = targetToProxy.get(target) ?? fail(0xadd /* missing proxy */);
|
|
342
|
-
const field =
|
|
324
|
+
const field = getInnerNode(proxy).tryGetField(fieldInfo.storedKey);
|
|
343
325
|
|
|
344
326
|
const p: PropertyDescriptor = {
|
|
345
327
|
value: field === undefined ? undefined : tryGetTreeNodeForField(field),
|
|
@@ -404,10 +386,9 @@ export class ObjectFieldSchema<
|
|
|
404
386
|
public constructor(
|
|
405
387
|
kind: Kind,
|
|
406
388
|
allowedTypes: Types,
|
|
407
|
-
annotatedTypes: ImplicitAnnotatedAllowedTypes,
|
|
408
389
|
props: FieldProps<TCustomMetadata> & { readonly key: string },
|
|
409
390
|
) {
|
|
410
|
-
super(kind, allowedTypes,
|
|
391
|
+
super(kind, allowedTypes, props);
|
|
411
392
|
this.storedKey = props.key;
|
|
412
393
|
}
|
|
413
394
|
}
|
|
@@ -427,7 +408,7 @@ abstract class CustomObjectNodeBase<
|
|
|
427
408
|
*/
|
|
428
409
|
export function objectSchema<
|
|
429
410
|
TName extends string,
|
|
430
|
-
const T extends RestrictiveStringRecord<
|
|
411
|
+
const T extends RestrictiveStringRecord<ImplicitFieldSchema>,
|
|
431
412
|
const ImplicitlyConstructable extends boolean,
|
|
432
413
|
const TCustomMetadata = unknown,
|
|
433
414
|
>(
|
|
@@ -466,22 +447,17 @@ export function objectSchema<
|
|
|
466
447
|
let handler: ProxyHandler<object>;
|
|
467
448
|
let customizable: boolean;
|
|
468
449
|
|
|
469
|
-
class CustomObjectNode extends CustomObjectNodeBase<
|
|
450
|
+
class CustomObjectNode extends CustomObjectNodeBase<T> {
|
|
470
451
|
public static readonly fields: ReadonlyMap<
|
|
471
452
|
string,
|
|
472
453
|
FieldSchemaAlpha & SimpleObjectFieldSchema
|
|
473
454
|
> = new Map(
|
|
474
455
|
Array.from(flexKeyMap, ([key, value]) => [
|
|
475
456
|
key as string,
|
|
476
|
-
new ObjectFieldSchema(
|
|
477
|
-
value.schema.
|
|
478
|
-
value.schema
|
|
479
|
-
|
|
480
|
-
{
|
|
481
|
-
...value.schema.props,
|
|
482
|
-
key: getStoredKey(key as string, value.schema),
|
|
483
|
-
},
|
|
484
|
-
),
|
|
457
|
+
new ObjectFieldSchema(value.schema.kind, value.schema.allowedTypes, {
|
|
458
|
+
...value.schema.props,
|
|
459
|
+
key: getStoredKey(key as string, value.schema),
|
|
460
|
+
}),
|
|
485
461
|
]),
|
|
486
462
|
);
|
|
487
463
|
public static readonly flexKeyMap: SimpleKeyMap = flexKeyMap;
|
|
@@ -602,7 +578,7 @@ export function objectSchema<
|
|
|
602
578
|
this,
|
|
603
579
|
Array.from(
|
|
604
580
|
flexKeyMap.values(),
|
|
605
|
-
({ schema }) => normalizeFieldSchema(schema).
|
|
581
|
+
({ schema }) => normalizeFieldSchema(schema).allowedTypes,
|
|
606
582
|
),
|
|
607
583
|
(storedOptions) => {
|
|
608
584
|
const fields: Map<FieldKey, TreeFieldStoredSchema> = new Map();
|
|
@@ -623,25 +599,11 @@ export function objectSchema<
|
|
|
623
599
|
}
|
|
624
600
|
type Output = typeof CustomObjectNode &
|
|
625
601
|
(new (
|
|
626
|
-
input:
|
|
627
|
-
) => TreeObjectNode<
|
|
602
|
+
input: InsertableObjectFromSchemaRecord<T> | InternalTreeNode,
|
|
603
|
+
) => TreeObjectNode<T, TName>);
|
|
628
604
|
return CustomObjectNode as Output;
|
|
629
605
|
}
|
|
630
606
|
|
|
631
|
-
/**
|
|
632
|
-
* Removes annotations from a schema record.
|
|
633
|
-
*/
|
|
634
|
-
export function unannotateSchemaRecord<
|
|
635
|
-
Schema extends RestrictiveStringRecord<ImplicitAnnotatedFieldSchema>,
|
|
636
|
-
>(schemaRecord: Schema): UnannotateSchemaRecord<Schema> {
|
|
637
|
-
return Object.fromEntries(
|
|
638
|
-
Object.entries(schemaRecord).map(([key, schema]) => [
|
|
639
|
-
key,
|
|
640
|
-
schema instanceof FieldSchema ? schema : unannotateImplicitAllowedTypes(schema),
|
|
641
|
-
]),
|
|
642
|
-
) as UnannotateSchemaRecord<Schema>;
|
|
643
|
-
}
|
|
644
|
-
|
|
645
607
|
const targetToProxy: WeakMap<object, TreeNode> = new WeakMap();
|
|
646
608
|
|
|
647
609
|
/**
|
|
@@ -651,7 +613,7 @@ const targetToProxy: WeakMap<object, TreeNode> = new WeakMap();
|
|
|
651
613
|
*/
|
|
652
614
|
function assertUniqueKeys<
|
|
653
615
|
const Name extends number | string,
|
|
654
|
-
const Fields extends RestrictiveStringRecord<
|
|
616
|
+
const Fields extends RestrictiveStringRecord<ImplicitFieldSchema>,
|
|
655
617
|
>(schemaName: Name, fields: Fields): void {
|
|
656
618
|
// Verify that there are no duplicates among the explicitly specified stored keys.
|
|
657
619
|
const explicitStoredKeys = new Set<string>();
|
|
@@ -7,13 +7,9 @@ import type { RestrictiveStringRecord } from "../../../util/index.js";
|
|
|
7
7
|
import type {
|
|
8
8
|
TreeObjectNode,
|
|
9
9
|
SimpleKeyMap,
|
|
10
|
-
|
|
10
|
+
InsertableObjectFromSchemaRecord,
|
|
11
11
|
} from "./objectNode.js";
|
|
12
|
-
import type {
|
|
13
|
-
FieldSchemaAlpha,
|
|
14
|
-
ImplicitAnnotatedFieldSchema,
|
|
15
|
-
UnannotateImplicitFieldSchema,
|
|
16
|
-
} from "../../fieldSchema.js";
|
|
12
|
+
import type { FieldSchemaAlpha, ImplicitFieldSchema } from "../../fieldSchema.js";
|
|
17
13
|
import {
|
|
18
14
|
NodeKind,
|
|
19
15
|
type TreeNodeSchemaClass,
|
|
@@ -31,14 +27,14 @@ import type { SimpleObjectFieldSchema, SimpleObjectNodeSchema } from "../../simp
|
|
|
31
27
|
export interface ObjectNodeSchema<
|
|
32
28
|
out TName extends string = string,
|
|
33
29
|
in out T extends
|
|
34
|
-
RestrictiveStringRecord<
|
|
30
|
+
RestrictiveStringRecord<ImplicitFieldSchema> = RestrictiveStringRecord<ImplicitFieldSchema>,
|
|
35
31
|
ImplicitlyConstructable extends boolean = boolean,
|
|
36
32
|
out TCustomMetadata = unknown,
|
|
37
33
|
> extends TreeNodeSchemaClass<
|
|
38
34
|
TName,
|
|
39
35
|
NodeKind.Object,
|
|
40
|
-
TreeObjectNode<
|
|
41
|
-
|
|
36
|
+
TreeObjectNode<T, TName>,
|
|
37
|
+
InsertableObjectFromSchemaRecord<T>,
|
|
42
38
|
ImplicitlyConstructable,
|
|
43
39
|
T,
|
|
44
40
|
never,
|
|
@@ -51,16 +47,6 @@ export interface ObjectNodeSchema<
|
|
|
51
47
|
readonly fields: ReadonlyMap<string, FieldSchemaAlpha & SimpleObjectFieldSchema>;
|
|
52
48
|
}
|
|
53
49
|
|
|
54
|
-
/**
|
|
55
|
-
* Removes annotations from field schemas in a schema record.
|
|
56
|
-
* @system @alpha
|
|
57
|
-
*/
|
|
58
|
-
export type UnannotateSchemaRecord<
|
|
59
|
-
T extends RestrictiveStringRecord<ImplicitAnnotatedFieldSchema>,
|
|
60
|
-
> = {
|
|
61
|
-
readonly [P in Extract<keyof T, string>]: UnannotateImplicitFieldSchema<T[P]>;
|
|
62
|
-
};
|
|
63
|
-
|
|
64
50
|
/**
|
|
65
51
|
* Extra data provided on all {@link ObjectNodeSchema} that is not included in the (soon possibly public) ObjectNodeSchema type.
|
|
66
52
|
*/
|