@fluidframework/tree 2.63.0-359286 → 2.63.0-359734
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 +93 -98
- 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 +11 -13
- package/dist/beta.d.ts +5 -0
- 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/schematizingTreeView.js +1 -1
- package/dist/shared-tree/schematizingTreeView.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 +4 -29
- 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 +2 -2
- package/dist/simple-tree/api/index.d.ts.map +1 -1
- package/dist/simple-tree/api/index.js +4 -1
- package/dist/simple-tree/api/index.js.map +1 -1
- package/dist/simple-tree/api/schemaFactory.d.ts +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 +27 -26
- package/dist/simple-tree/api/schemaFactoryAlpha.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaFactoryAlpha.js +11 -0
- 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 +9 -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 +37 -18
- package/dist/simple-tree/api/tree.d.ts.map +1 -1
- package/dist/simple-tree/api/tree.js.map +1 -1
- package/dist/simple-tree/api/treeBeta.d.ts +52 -2
- package/dist/simple-tree/api/treeBeta.d.ts.map +1 -1
- package/dist/simple-tree/api/treeBeta.js +36 -1
- package/dist/simple-tree/api/treeBeta.js.map +1 -1
- package/dist/simple-tree/api/treeNodeApi.js +1 -1
- package/dist/simple-tree/api/treeNodeApi.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 +2 -2
- package/dist/simple-tree/core/index.d.ts.map +1 -1
- package/dist/simple-tree/core/index.js +4 -3
- 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/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/index.d.ts +4 -4
- package/dist/simple-tree/index.d.ts.map +1 -1
- package/dist/simple-tree/index.js +6 -2
- 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 +5 -6
- 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 +3 -3
- 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 +5 -15
- 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 +3 -3
- 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 +5 -5
- package/dist/simple-tree/prepareForInsertion.d.ts.map +1 -1
- 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 +11 -13
- package/lib/beta.d.ts +5 -0
- 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/schematizingTreeView.js +1 -1
- package/lib/shared-tree/schematizingTreeView.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 +3 -28
- 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 +2 -2
- 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 +27 -26
- package/lib/simple-tree/api/schemaFactoryAlpha.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaFactoryAlpha.js +12 -1
- 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 +9 -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 +37 -18
- package/lib/simple-tree/api/tree.d.ts.map +1 -1
- package/lib/simple-tree/api/tree.js.map +1 -1
- package/lib/simple-tree/api/treeBeta.d.ts +52 -2
- package/lib/simple-tree/api/treeBeta.d.ts.map +1 -1
- package/lib/simple-tree/api/treeBeta.js +33 -1
- package/lib/simple-tree/api/treeBeta.js.map +1 -1
- package/lib/simple-tree/api/treeNodeApi.js +1 -1
- package/lib/simple-tree/api/treeNodeApi.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 +2 -2
- package/lib/simple-tree/core/index.d.ts.map +1 -1
- package/lib/simple-tree/core/index.js +1 -1
- package/lib/simple-tree/core/index.js.map +1 -1
- package/lib/simple-tree/core/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/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/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 +6 -7
- 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 +4 -4
- 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 +6 -15
- 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 +4 -4
- 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 +5 -5
- package/lib/simple-tree/prepareForInsertion.d.ts.map +1 -1
- 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/treeCursorUtils.ts +34 -19
- package/src/index.ts +7 -10
- package/src/jsonDomainSchema.ts +5 -5
- package/src/packageVersion.ts +1 -1
- package/src/serializableDomainSchema.ts +6 -6
- package/src/shared-tree/schematizingTreeView.ts +1 -1
- package/src/shared-tree/treeAlpha.ts +32 -81
- 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 +10 -2
- package/src/simple-tree/api/schemaFactory.ts +18 -73
- package/src/simple-tree/api/schemaFactoryAlpha.ts +45 -12
- package/src/simple-tree/api/schemaFactoryBeta.ts +76 -1
- package/src/simple-tree/api/schemaStatics.ts +16 -61
- package/src/simple-tree/api/storedSchema.ts +2 -6
- package/src/simple-tree/api/tree.ts +37 -18
- package/src/simple-tree/api/treeBeta.ts +136 -3
- package/src/simple-tree/api/treeNodeApi.ts +1 -1
- 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 +10 -8
- package/src/simple-tree/core/toStored.ts +7 -5
- package/src/simple-tree/core/treeNode.ts +1 -1
- 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/index.ts +11 -10
- package/src/simple-tree/node-kinds/array/arrayNode.ts +9 -14
- 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 +5 -13
- 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 +13 -51
- package/src/simple-tree/node-kinds/object/objectNodeTypes.ts +5 -19
- package/src/simple-tree/node-kinds/record/recordNode.ts +9 -16
- package/src/simple-tree/node-kinds/record/recordNodeTypes.ts +7 -11
- package/src/simple-tree/prepareForInsertion.ts +5 -5
- 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
|
@@ -30,13 +30,10 @@ import {
|
|
|
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,
|
|
@@ -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";
|
|
@@ -41,8 +41,6 @@ import {
|
|
|
41
41
|
getOrCreateInnerNode,
|
|
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);
|
|
@@ -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
|
*/
|
|
@@ -19,11 +19,8 @@ import {
|
|
|
19
19
|
getKernel,
|
|
20
20
|
type InternalTreeNode,
|
|
21
21
|
type NodeSchemaMetadata,
|
|
22
|
-
type ImplicitAnnotatedAllowedTypes,
|
|
23
|
-
type UnannotateImplicitAllowedTypes,
|
|
24
22
|
type ImplicitAllowedTypes,
|
|
25
23
|
normalizeAllowedTypes,
|
|
26
|
-
unannotateImplicitAllowedTypes,
|
|
27
24
|
type TreeNodeFromImplicitAllowedTypes,
|
|
28
25
|
TreeNodeValid,
|
|
29
26
|
type MostDerivedData,
|
|
@@ -212,7 +209,7 @@ abstract class CustomRecordNodeBase<
|
|
|
212
209
|
*/
|
|
213
210
|
export interface RecordSchemaOptions<
|
|
214
211
|
TName extends string,
|
|
215
|
-
TAllowedTypes extends
|
|
212
|
+
TAllowedTypes extends ImplicitAllowedTypes,
|
|
216
213
|
TImplicitlyConstructable extends boolean,
|
|
217
214
|
TCustomMetadata = unknown,
|
|
218
215
|
> {
|
|
@@ -250,7 +247,7 @@ export interface RecordSchemaOptions<
|
|
|
250
247
|
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
|
|
251
248
|
export function recordSchema<
|
|
252
249
|
TName extends string,
|
|
253
|
-
const TAllowedTypes extends
|
|
250
|
+
const TAllowedTypes extends ImplicitAllowedTypes,
|
|
254
251
|
const TImplicitlyConstructable extends boolean,
|
|
255
252
|
const TCustomMetadata = unknown,
|
|
256
253
|
>(
|
|
@@ -261,8 +258,6 @@ export function recordSchema<
|
|
|
261
258
|
TCustomMetadata
|
|
262
259
|
>,
|
|
263
260
|
) {
|
|
264
|
-
type TUnannotatedAllowedTypes = UnannotateImplicitAllowedTypes<TAllowedTypes>;
|
|
265
|
-
|
|
266
261
|
const {
|
|
267
262
|
identifier,
|
|
268
263
|
info,
|
|
@@ -272,23 +267,21 @@ export function recordSchema<
|
|
|
272
267
|
persistedMetadata,
|
|
273
268
|
} = options;
|
|
274
269
|
|
|
275
|
-
const
|
|
276
|
-
normalizeAllowedTypes(unannotateImplicitAllowedTypes(info)),
|
|
277
|
-
);
|
|
270
|
+
const normalizedTypes = normalizeAllowedTypes(info);
|
|
278
271
|
const lazyAllowedTypesIdentifiers = new Lazy(
|
|
279
|
-
() => new Set(
|
|
272
|
+
() => new Set(normalizedTypes.evaluate().map((type) => type.identifier)),
|
|
280
273
|
);
|
|
281
274
|
|
|
282
275
|
let privateData: TreeNodeSchemaPrivateData | undefined;
|
|
283
276
|
|
|
284
277
|
class Schema
|
|
285
|
-
extends CustomRecordNodeBase<
|
|
286
|
-
implements TreeRecordNode<
|
|
278
|
+
extends CustomRecordNodeBase<TAllowedTypes>
|
|
279
|
+
implements TreeRecordNode<TAllowedTypes>
|
|
287
280
|
{
|
|
288
281
|
/**
|
|
289
282
|
* Record-like index signature for the node.
|
|
290
283
|
*/
|
|
291
|
-
[key: string]: TreeNodeFromImplicitAllowedTypes<
|
|
284
|
+
[key: string]: TreeNodeFromImplicitAllowedTypes<TAllowedTypes>;
|
|
292
285
|
|
|
293
286
|
public static override prepareInstance<T2>(
|
|
294
287
|
this: typeof TreeNodeValid<T2>,
|
|
@@ -374,7 +367,7 @@ export function recordSchema<
|
|
|
374
367
|
public static readonly implicitlyConstructable: TImplicitlyConstructable =
|
|
375
368
|
implicitlyConstructable;
|
|
376
369
|
public static get childTypes(): ReadonlySet<TreeNodeSchema> {
|
|
377
|
-
return
|
|
370
|
+
return normalizedTypes.evaluateSet();
|
|
378
371
|
}
|
|
379
372
|
public static readonly metadata: NodeSchemaMetadata<TCustomMetadata> = metadata ?? {};
|
|
380
373
|
public static readonly persistedMetadata: JsonCompatibleReadOnlyObject | undefined =
|
|
@@ -389,7 +382,7 @@ export function recordSchema<
|
|
|
389
382
|
}
|
|
390
383
|
|
|
391
384
|
public [Symbol.iterator](): IterableIterator<
|
|
392
|
-
[string, TreeNodeFromImplicitAllowedTypes<
|
|
385
|
+
[string, TreeNodeFromImplicitAllowedTypes<TAllowedTypes>]
|
|
393
386
|
> {
|
|
394
387
|
return recordIterator(this);
|
|
395
388
|
}
|
|
@@ -11,10 +11,8 @@ import type {
|
|
|
11
11
|
WithType,
|
|
12
12
|
TreeNode,
|
|
13
13
|
ImplicitAllowedTypes,
|
|
14
|
-
ImplicitAnnotatedAllowedTypes,
|
|
15
14
|
InsertableTreeNodeFromImplicitAllowedTypes,
|
|
16
15
|
TreeNodeFromImplicitAllowedTypes,
|
|
17
|
-
UnannotateImplicitAllowedTypes,
|
|
18
16
|
} from "../../core/index.js";
|
|
19
17
|
|
|
20
18
|
import type { SimpleRecordNodeSchema } from "../../simpleSchema.js";
|
|
@@ -56,15 +54,14 @@ export type RecordNodeInsertableData<T extends ImplicitAllowedTypes> = Restricti
|
|
|
56
54
|
*/
|
|
57
55
|
export interface RecordNodeCustomizableSchema<
|
|
58
56
|
out TName extends string = string,
|
|
59
|
-
in out T extends
|
|
57
|
+
in out T extends ImplicitAllowedTypes = ImplicitAllowedTypes,
|
|
60
58
|
out ImplicitlyConstructable extends boolean = true,
|
|
61
59
|
out TCustomMetadata = unknown,
|
|
62
60
|
> extends TreeNodeSchemaClass<
|
|
63
61
|
/* Name */ TName,
|
|
64
62
|
/* Kind */ NodeKind.Record,
|
|
65
|
-
/* TNode */ TreeRecordNode<
|
|
66
|
-
|
|
67
|
-
/* TInsertable */ RecordNodeInsertableData<UnannotateImplicitAllowedTypes<T>>,
|
|
63
|
+
/* TNode */ TreeRecordNode<T> & WithType<TName, NodeKind.Record, T>,
|
|
64
|
+
/* TInsertable */ RecordNodeInsertableData<T>,
|
|
68
65
|
/* ImplicitlyConstructable */ ImplicitlyConstructable,
|
|
69
66
|
/* Info */ T,
|
|
70
67
|
/* TConstructorExtra */ never,
|
|
@@ -78,15 +75,14 @@ export interface RecordNodeCustomizableSchema<
|
|
|
78
75
|
*/
|
|
79
76
|
export interface RecordNodePojoEmulationSchema<
|
|
80
77
|
out TName extends string = string,
|
|
81
|
-
in out T extends
|
|
78
|
+
in out T extends ImplicitAllowedTypes = ImplicitAllowedTypes,
|
|
82
79
|
out ImplicitlyConstructable extends boolean = true,
|
|
83
80
|
out TCustomMetadata = unknown,
|
|
84
81
|
> extends TreeNodeSchemaNonClass<
|
|
85
82
|
/* Name */ TName,
|
|
86
83
|
/* Kind */ NodeKind.Record,
|
|
87
|
-
/* TNode */ TreeRecordNode<
|
|
88
|
-
|
|
89
|
-
/* TInsertable */ RecordNodeInsertableData<UnannotateImplicitAllowedTypes<T>>,
|
|
84
|
+
/* TNode */ TreeRecordNode<T> & WithType<TName, NodeKind.Record, T>,
|
|
85
|
+
/* TInsertable */ RecordNodeInsertableData<T>,
|
|
90
86
|
/* ImplicitlyConstructable */ ImplicitlyConstructable,
|
|
91
87
|
/* Info */ T,
|
|
92
88
|
/* TConstructorExtra */ never,
|
|
@@ -104,7 +100,7 @@ export interface RecordNodePojoEmulationSchema<
|
|
|
104
100
|
*/
|
|
105
101
|
export type RecordNodeSchema<
|
|
106
102
|
TName extends string = string,
|
|
107
|
-
T extends
|
|
103
|
+
T extends ImplicitAllowedTypes = ImplicitAllowedTypes,
|
|
108
104
|
ImplicitlyConstructable extends boolean = true,
|
|
109
105
|
TCustomMetadata = unknown,
|
|
110
106
|
> =
|
|
@@ -22,7 +22,7 @@ import {
|
|
|
22
22
|
type FlexibleNodeContent,
|
|
23
23
|
throwOutOfSchema,
|
|
24
24
|
} from "../feature-libraries/index.js";
|
|
25
|
-
import type {
|
|
25
|
+
import type { ImplicitFieldSchema } from "./fieldSchema.js";
|
|
26
26
|
import {
|
|
27
27
|
type InsertableContent,
|
|
28
28
|
unhydratedFlexTreeFromInsertable,
|
|
@@ -31,7 +31,7 @@ import { UsageError } from "@fluidframework/telemetry-utils/internal";
|
|
|
31
31
|
import { brand } from "../util/index.js";
|
|
32
32
|
import {
|
|
33
33
|
getKernel,
|
|
34
|
-
type
|
|
34
|
+
type ImplicitAllowedTypes,
|
|
35
35
|
type TreeNode,
|
|
36
36
|
type UnhydratedFlexTreeNode,
|
|
37
37
|
} from "./core/index.js";
|
|
@@ -56,7 +56,7 @@ const validateSchema = true;
|
|
|
56
56
|
*/
|
|
57
57
|
export function prepareForInsertion<TIn extends InsertableContent | undefined>(
|
|
58
58
|
data: TIn,
|
|
59
|
-
schema:
|
|
59
|
+
schema: ImplicitFieldSchema,
|
|
60
60
|
destinationContext: FlexTreeContext,
|
|
61
61
|
destinationSchema: TreeFieldStoredSchema,
|
|
62
62
|
): TIn extends undefined ? undefined : FlexibleNodeContent {
|
|
@@ -84,7 +84,7 @@ export function prepareForInsertion<TIn extends InsertableContent | undefined>(
|
|
|
84
84
|
*/
|
|
85
85
|
export function prepareArrayContentForInsertion(
|
|
86
86
|
data: readonly InsertableContent[],
|
|
87
|
-
schema:
|
|
87
|
+
schema: ImplicitAllowedTypes,
|
|
88
88
|
destinationContext: FlexTreeContext,
|
|
89
89
|
destinationSchema: TreeTypeSet,
|
|
90
90
|
): FlexibleFieldContent {
|
|
@@ -117,7 +117,7 @@ export function prepareArrayContentForInsertion(
|
|
|
117
117
|
*/
|
|
118
118
|
export function prepareForInsertionContextless<TIn extends InsertableContent | undefined>(
|
|
119
119
|
data: TIn,
|
|
120
|
-
schema:
|
|
120
|
+
schema: ImplicitFieldSchema,
|
|
121
121
|
schemaAndPolicy: SchemaAndPolicy,
|
|
122
122
|
hydratedData: FlexTreeHydratedContextMinimal | undefined,
|
|
123
123
|
destinationSchema: TreeFieldStoredSchema,
|
|
@@ -35,7 +35,6 @@ import {
|
|
|
35
35
|
FieldKind,
|
|
36
36
|
FieldSchemaAlpha,
|
|
37
37
|
normalizeFieldSchema,
|
|
38
|
-
type ImplicitAnnotatedFieldSchema,
|
|
39
38
|
type ImplicitFieldSchema,
|
|
40
39
|
} from "./fieldSchema.js";
|
|
41
40
|
import type { SimpleFieldSchema, SimpleNodeSchema } from "./simpleSchema.js";
|
|
@@ -55,23 +54,23 @@ export const permissiveStoredSchemaGenerationOptions: StoredSchemaGenerationOpti
|
|
|
55
54
|
};
|
|
56
55
|
|
|
57
56
|
/**
|
|
58
|
-
* Converts a {@link
|
|
57
|
+
* Converts a {@link ImplicitFieldSchema} into a {@link TreeStoredSchema} for use in schema upgrades.
|
|
59
58
|
*
|
|
60
59
|
* TODO: once upgrades are more flexible, this should take in more options, including the old schema and specific upgrades to enable.
|
|
61
60
|
*/
|
|
62
|
-
export function toUpgradeSchema(root:
|
|
61
|
+
export function toUpgradeSchema(root: ImplicitFieldSchema): TreeStoredSchema {
|
|
63
62
|
return toStoredSchema(root, restrictiveStoredSchemaGenerationOptions);
|
|
64
63
|
}
|
|
65
64
|
|
|
66
65
|
/**
|
|
67
|
-
* Converts a {@link
|
|
66
|
+
* Converts a {@link ImplicitFieldSchema} into a {@link TreeStoredSchema} for use as initial document schema.
|
|
68
67
|
*/
|
|
69
|
-
export function toInitialSchema(root:
|
|
68
|
+
export function toInitialSchema(root: ImplicitFieldSchema): TreeStoredSchema {
|
|
70
69
|
return toStoredSchema(root, restrictiveStoredSchemaGenerationOptions);
|
|
71
70
|
}
|
|
72
71
|
|
|
73
72
|
/**
|
|
74
|
-
* Converts a {@link
|
|
73
|
+
* Converts a {@link ImplicitFieldSchema} into a {@link TreeStoredSchema} to used for unhydrated nodes.
|
|
75
74
|
* @remarks
|
|
76
75
|
* This allows as much as possible, relying on further validation when inserting the content.
|
|
77
76
|
*
|
|
@@ -80,7 +79,7 @@ export function toInitialSchema(root: ImplicitAnnotatedFieldSchema): TreeStoredS
|
|
|
80
79
|
export const toUnhydratedSchema = permissiveStoredSchemaGenerationOptions;
|
|
81
80
|
|
|
82
81
|
/**
|
|
83
|
-
* Converts a {@link
|
|
82
|
+
* Converts a {@link ImplicitFieldSchema} into a {@link TreeStoredSchema}.
|
|
84
83
|
*
|
|
85
84
|
* @privateRemarks
|
|
86
85
|
* TODO:#38722 When runtime schema upgrades are implemented, this will need to be updated to check if
|
|
@@ -90,7 +89,7 @@ export const toUnhydratedSchema = permissiveStoredSchemaGenerationOptions;
|
|
|
90
89
|
* Throws a `UsageError` if multiple schemas are encountered with the same identifier.
|
|
91
90
|
*/
|
|
92
91
|
export function toStoredSchema(
|
|
93
|
-
root:
|
|
92
|
+
root: ImplicitFieldSchema,
|
|
94
93
|
options: StoredSchemaGenerationOptions,
|
|
95
94
|
): TreeStoredSchema {
|
|
96
95
|
const cache = getOrCreate(viewToStoredCache, options, () => new WeakMap());
|
|
@@ -138,7 +137,7 @@ export function convertField(
|
|
|
138
137
|
let types: TreeTypeSet;
|
|
139
138
|
// eslint-disable-next-line unicorn/prefer-ternary
|
|
140
139
|
if (schema instanceof FieldSchemaAlpha) {
|
|
141
|
-
types = convertAllowedTypes(schema.
|
|
140
|
+
types = convertAllowedTypes(schema.allowedTypes, options);
|
|
142
141
|
} else {
|
|
143
142
|
types = schema.allowedTypesIdentifiers as TreeTypeSet;
|
|
144
143
|
}
|
|
@@ -9,11 +9,7 @@ import { assert } from "@fluidframework/core-utils/internal";
|
|
|
9
9
|
|
|
10
10
|
import { hasSingle } from "../util/index.js";
|
|
11
11
|
|
|
12
|
-
import {
|
|
13
|
-
normalizeFieldSchema,
|
|
14
|
-
FieldKind,
|
|
15
|
-
type ImplicitAnnotatedFieldSchema,
|
|
16
|
-
} from "./fieldSchema.js";
|
|
12
|
+
import { normalizeFieldSchema, FieldKind, type ImplicitFieldSchema } from "./fieldSchema.js";
|
|
17
13
|
import {
|
|
18
14
|
CompatibilityLevel,
|
|
19
15
|
getKernel,
|
|
@@ -54,7 +50,7 @@ import { getUnhydratedContext } from "./createContext.js";
|
|
|
54
50
|
*/
|
|
55
51
|
export function unhydratedFlexTreeFromInsertable<TIn extends InsertableContent | undefined>(
|
|
56
52
|
data: TIn,
|
|
57
|
-
allowedTypes:
|
|
53
|
+
allowedTypes: ImplicitFieldSchema,
|
|
58
54
|
): TIn extends undefined ? undefined : UnhydratedFlexTreeNode {
|
|
59
55
|
const normalizedFieldSchema = normalizeFieldSchema(allowedTypes);
|
|
60
56
|
|
|
@@ -17,8 +17,8 @@ import type { InsertableContent } from "./unhydratedFlexTreeFromInsertable.js";
|
|
|
17
17
|
* {@inheritdoc (UnsafeUnknownSchema:type)}
|
|
18
18
|
* @alpha
|
|
19
19
|
*/
|
|
20
|
-
|
|
21
20
|
export const UnsafeUnknownSchema: unique symbol = Symbol("UnsafeUnknownSchema");
|
|
21
|
+
|
|
22
22
|
/**
|
|
23
23
|
* A special type which can be provided to some APIs as the schema type parameter when schema cannot easily be provided at compile time and an unsafe (instead of disabled) editing API is desired.
|
|
24
24
|
* @remarks
|
|
@@ -37,8 +37,8 @@ export const UnsafeUnknownSchema: unique symbol = Symbol("UnsafeUnknownSchema");
|
|
|
37
37
|
* This is currently only type exported from the package: the symbol is just used as a way to get a named type.
|
|
38
38
|
* @alpha
|
|
39
39
|
*/
|
|
40
|
-
|
|
41
40
|
export type UnsafeUnknownSchema = typeof UnsafeUnknownSchema;
|
|
41
|
+
|
|
42
42
|
/**
|
|
43
43
|
* Content which could be inserted into a tree.
|
|
44
44
|
*
|
|
@@ -47,7 +47,6 @@ export type UnsafeUnknownSchema = typeof UnsafeUnknownSchema;
|
|
|
47
47
|
* Extended version of {@link InsertableTreeNodeFromImplicitAllowedTypes} that also allows {@link (UnsafeUnknownSchema:type)}.
|
|
48
48
|
* @alpha
|
|
49
49
|
*/
|
|
50
|
-
|
|
51
50
|
export type Insertable<TSchema extends ImplicitAllowedTypes | UnsafeUnknownSchema> =
|
|
52
51
|
TSchema extends ImplicitAllowedTypes
|
|
53
52
|
? InsertableTreeNodeFromImplicitAllowedTypes<TSchema>
|
|
@@ -16,7 +16,7 @@ export function walkFieldSchema(
|
|
|
16
16
|
visitedSet: Set<TreeNodeSchema> = new Set(),
|
|
17
17
|
): void {
|
|
18
18
|
walkAllowedTypes(
|
|
19
|
-
normalizeFieldSchema(schema).
|
|
19
|
+
normalizeFieldSchema(schema).allowedTypesFull.evaluate(),
|
|
20
20
|
visitor,
|
|
21
21
|
visitedSet,
|
|
22
22
|
);
|