@fluidframework/tree 2.63.0-359461 → 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 +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 +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 +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 +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 +3 -3
- 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
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
|
|
6
6
|
import { brand } from "../../util/index.js";
|
|
7
7
|
import {
|
|
8
|
-
|
|
8
|
+
normalizeAndEvaluateAnnotatedAllowedTypes,
|
|
9
9
|
type AnnotatedAllowedType,
|
|
10
|
-
type
|
|
10
|
+
type ImplicitAllowedTypes,
|
|
11
11
|
type SchemaUpgrade,
|
|
12
12
|
} from "./allowedTypes.js";
|
|
13
13
|
import type { TreeNodeSchemaIdentifier, TreeTypeSet } from "../../core/index.js";
|
|
@@ -42,16 +42,18 @@ export function allowedTypeFilter(
|
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
/**
|
|
45
|
-
* Converts an
|
|
45
|
+
* Converts an ImplicitAllowedTypes to a stored schema.
|
|
46
46
|
* @param schema - The schema to convert.
|
|
47
47
|
* @param options - The options to use for filtering.
|
|
48
48
|
* @returns The converted stored schema.
|
|
49
49
|
*/
|
|
50
50
|
export function convertAllowedTypes(
|
|
51
|
-
schema:
|
|
51
|
+
schema: ImplicitAllowedTypes,
|
|
52
52
|
options: StoredSchemaGenerationOptions,
|
|
53
53
|
): TreeTypeSet {
|
|
54
|
-
const filtered: TreeNodeSchemaIdentifier[] =
|
|
54
|
+
const filtered: TreeNodeSchemaIdentifier[] = normalizeAndEvaluateAnnotatedAllowedTypes(
|
|
55
|
+
schema,
|
|
56
|
+
)
|
|
55
57
|
.types.filter((allowedType) => allowedTypeFilter(allowedType, options))
|
|
56
58
|
.map((a) => brand(a.type.identifier));
|
|
57
59
|
return new Set(filtered);
|
|
@@ -29,7 +29,7 @@ import { markEager } from "./flexList.js";
|
|
|
29
29
|
* 2. Explicit construction of {@link Unhydrated} nodes using either {@link TreeNodeSchemaClass} as a constructor or {@link TreeNodeSchemaNonClass|TreeNodeSchemaNonClass.create}.
|
|
30
30
|
* Either way the {@link TreeNodeSchema} produced must be produced using a {@link SchemaFactory}.
|
|
31
31
|
* There are also higher level APIs which wrap these, including {@link (TreeBeta:interface).create}, {@link (TreeBeta:interface).clone},
|
|
32
|
-
* and import APIs like {@link (
|
|
32
|
+
* and import APIs like {@link (TreeBeta:interface).importConcise}, {@link (TreeAlpha:interface).importVerbose}, and {@link (TreeAlpha:interface).importCompressed}.
|
|
33
33
|
*
|
|
34
34
|
* 3. Implicit construction: Several APIs which logically require an unhydrated TreeNode also allow passing in a value which could be used to explicitly construct the node instead.
|
|
35
35
|
* These APIs internally call the constructor with the provided value (typically behaving like {@link (TreeAlpha:interface).create}), so it's really just a special case of the above option.
|
|
@@ -10,10 +10,7 @@ import type { SimpleNodeSchemaBase } from "./simpleNodeSchemaBase.js";
|
|
|
10
10
|
import type { TreeNode } from "./treeNode.js";
|
|
11
11
|
import type { InternalTreeNode, Unhydrated } from "./types.js";
|
|
12
12
|
import type { UnionToIntersection } from "../../util/index.js";
|
|
13
|
-
import type {
|
|
14
|
-
ImplicitAnnotatedAllowedTypes,
|
|
15
|
-
NormalizedAnnotatedAllowedTypes,
|
|
16
|
-
} from "./allowedTypes.js";
|
|
13
|
+
import type { ImplicitAllowedTypes, AllowedTypesFullEvaluated } from "./allowedTypes.js";
|
|
17
14
|
import type { Context } from "./context.js";
|
|
18
15
|
import type { FieldKey, NodeData, TreeNodeStoredSchema } from "../../core/index.js";
|
|
19
16
|
import type { UnhydratedFlexTreeField } from "./unhydratedFlexTree.js";
|
|
@@ -391,7 +388,7 @@ export interface TreeNodeSchemaPrivateData {
|
|
|
391
388
|
* If this is stabilized, it will live alongside the childTypes property on {@link TreeNodeSchemaCore}.
|
|
392
389
|
* @system
|
|
393
390
|
*/
|
|
394
|
-
readonly childAnnotatedAllowedTypes: readonly
|
|
391
|
+
readonly childAnnotatedAllowedTypes: readonly ImplicitAllowedTypes[];
|
|
395
392
|
|
|
396
393
|
/**
|
|
397
394
|
* Idempotent initialization function that pre-caches data and can dereference lazy schema references.
|
|
@@ -425,7 +422,7 @@ export interface TreeNodeSchemaInitializedData {
|
|
|
425
422
|
* If this is stabilized, it will live alongside the childTypes property on {@link TreeNodeSchemaCore}.
|
|
426
423
|
* @system
|
|
427
424
|
*/
|
|
428
|
-
readonly childAnnotatedAllowedTypes: readonly
|
|
425
|
+
readonly childAnnotatedAllowedTypes: readonly AllowedTypesFullEvaluated[];
|
|
429
426
|
|
|
430
427
|
/**
|
|
431
428
|
* A {@link Context} which can be used for unhydrated nodes of this schema.
|
|
@@ -25,7 +25,7 @@ import {
|
|
|
25
25
|
} from "./treeNodeKernel.js";
|
|
26
26
|
import type { InternalTreeNode } from "./types.js";
|
|
27
27
|
import { typeSchemaSymbol } from "./withType.js";
|
|
28
|
-
import type {
|
|
28
|
+
import type { ImplicitAllowedTypes } from "./allowedTypes.js";
|
|
29
29
|
import type { SimpleNodeSchemaBase } from "./simpleNodeSchemaBase.js";
|
|
30
30
|
|
|
31
31
|
/**
|
|
@@ -259,7 +259,7 @@ export function isClassBasedSchema(
|
|
|
259
259
|
*/
|
|
260
260
|
export function createTreeNodeSchemaPrivateData(
|
|
261
261
|
schema: TreeNodeSchemaCore<string, NodeKind, boolean>,
|
|
262
|
-
childAnnotatedAllowedTypes: readonly
|
|
262
|
+
childAnnotatedAllowedTypes: readonly ImplicitAllowedTypes[],
|
|
263
263
|
toStored: TreeNodeSchemaPrivateData["toStored"],
|
|
264
264
|
): TreeNodeSchemaPrivateData {
|
|
265
265
|
const schemaValid = schemaAsTreeNodeValid(schema);
|
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import {
|
|
7
|
-
|
|
7
|
+
normalizeAndEvaluateAnnotatedAllowedTypes,
|
|
8
8
|
type AnnotatedAllowedType,
|
|
9
|
-
type
|
|
9
|
+
type AllowedTypesFullEvaluated,
|
|
10
10
|
} from "./allowedTypes.js";
|
|
11
11
|
import { getTreeNodeSchemaPrivateData, type TreeNodeSchema } from "./treeNodeSchema.js";
|
|
12
12
|
|
|
@@ -32,7 +32,11 @@ export function walkNodeSchema(
|
|
|
32
32
|
getTreeNodeSchemaPrivateData(schema).childAnnotatedAllowedTypes;
|
|
33
33
|
|
|
34
34
|
for (const fieldAllowedTypes of annotatedAllowedTypes) {
|
|
35
|
-
walkAllowedTypes(
|
|
35
|
+
walkAllowedTypes(
|
|
36
|
+
normalizeAndEvaluateAnnotatedAllowedTypes(fieldAllowedTypes),
|
|
37
|
+
visitor,
|
|
38
|
+
visitedSet,
|
|
39
|
+
);
|
|
36
40
|
}
|
|
37
41
|
|
|
38
42
|
// This visit is done at the end so the traversal order is most inner types first.
|
|
@@ -47,7 +51,7 @@ export function walkNodeSchema(
|
|
|
47
51
|
* @internal
|
|
48
52
|
*/
|
|
49
53
|
export function walkAllowedTypes(
|
|
50
|
-
annotatedAllowedTypes:
|
|
54
|
+
annotatedAllowedTypes: AllowedTypesFullEvaluated,
|
|
51
55
|
visitor: SchemaVisitor,
|
|
52
56
|
visitedSet: Set<TreeNodeSchema> = new Set(),
|
|
53
57
|
): void {
|
|
@@ -77,7 +81,7 @@ export interface SchemaVisitor {
|
|
|
77
81
|
*
|
|
78
82
|
* After this is called {@link SchemaVisitor.allowedTypeFilter} is applied to each allowed type in the schema to determine which of them are walked into.
|
|
79
83
|
*/
|
|
80
|
-
allowedTypes?: (allowedTypes:
|
|
84
|
+
allowedTypes?: (allowedTypes: AllowedTypesFullEvaluated) => void;
|
|
81
85
|
/**
|
|
82
86
|
* If true, will walk into this `allowedType`.
|
|
83
87
|
* If false, the `allowedType` will not be walked into.
|
|
@@ -9,7 +9,7 @@ import { getOrCreate } from "../util/index.js";
|
|
|
9
9
|
import {
|
|
10
10
|
Context,
|
|
11
11
|
getTreeNodeSchemaPrivateData,
|
|
12
|
-
|
|
12
|
+
normalizeAndEvaluateAnnotatedAllowedTypes,
|
|
13
13
|
UnhydratedContext,
|
|
14
14
|
type TreeNodeSchema,
|
|
15
15
|
type TreeNodeSchemaInitializedData,
|
|
@@ -34,7 +34,7 @@ export function getUnhydratedContext(schema: ImplicitFieldSchema): Context {
|
|
|
34
34
|
);
|
|
35
35
|
return new Context(
|
|
36
36
|
flexContext,
|
|
37
|
-
Context.schemaMapFromRootSchema(normalized.
|
|
37
|
+
Context.schemaMapFromRootSchema(normalized.allowedTypesFull.evaluate()),
|
|
38
38
|
);
|
|
39
39
|
});
|
|
40
40
|
}
|
|
@@ -51,7 +51,7 @@ export function getTreeNodeSchemaInitializedData(
|
|
|
51
51
|
...handler,
|
|
52
52
|
context: getUnhydratedContext(schema),
|
|
53
53
|
childAnnotatedAllowedTypes: data.childAnnotatedAllowedTypes.map(
|
|
54
|
-
|
|
54
|
+
normalizeAndEvaluateAnnotatedAllowedTypes,
|
|
55
55
|
),
|
|
56
56
|
};
|
|
57
57
|
}
|
|
@@ -23,21 +23,13 @@ import type {
|
|
|
23
23
|
TreeNodeSchema,
|
|
24
24
|
TreeNode,
|
|
25
25
|
UnhydratedFlexTreeNode,
|
|
26
|
-
NormalizedAnnotatedAllowedTypes,
|
|
27
26
|
ImplicitAllowedTypes,
|
|
28
|
-
ImplicitAnnotatedAllowedTypes,
|
|
29
|
-
UnannotateImplicitAllowedTypes,
|
|
30
|
-
AllowedTypesMetadata,
|
|
31
27
|
TreeNodeFromImplicitAllowedTypes,
|
|
32
28
|
TreeLeafValue,
|
|
33
29
|
InsertableTreeNodeFromImplicitAllowedTypes,
|
|
30
|
+
AllowedTypesFull,
|
|
34
31
|
} from "./core/index.js";
|
|
35
|
-
import {
|
|
36
|
-
isAnnotatedAllowedTypes,
|
|
37
|
-
normalizeAllowedTypes,
|
|
38
|
-
normalizeAnnotatedAllowedTypes,
|
|
39
|
-
unannotateImplicitAllowedTypes,
|
|
40
|
-
} from "./core/index.js";
|
|
32
|
+
import { normalizeAllowedTypes } from "./core/index.js";
|
|
41
33
|
|
|
42
34
|
import type { SimpleFieldSchema } from "./simpleSchema.js";
|
|
43
35
|
import type { UnsafeUnknownSchema } from "./unsafeUnknownSchema.js";
|
|
@@ -81,10 +73,7 @@ export enum FieldKind {
|
|
|
81
73
|
* If an explicit stored key was specified in the schema, it will be used.
|
|
82
74
|
* Otherwise, the stored key is the same as the property key.
|
|
83
75
|
*/
|
|
84
|
-
export function getStoredKey(
|
|
85
|
-
propertyKey: string,
|
|
86
|
-
fieldSchema: ImplicitAnnotatedFieldSchema,
|
|
87
|
-
): FieldKey {
|
|
76
|
+
export function getStoredKey(propertyKey: string, fieldSchema: ImplicitFieldSchema): FieldKey {
|
|
88
77
|
return brand(getExplicitStoredKey(fieldSchema) ?? propertyKey);
|
|
89
78
|
}
|
|
90
79
|
|
|
@@ -92,9 +81,7 @@ export function getStoredKey(
|
|
|
92
81
|
* Gets the {@link FieldProps.key | stored key} specified by the schema, if one was explicitly specified.
|
|
93
82
|
* Otherwise, returns undefined.
|
|
94
83
|
*/
|
|
95
|
-
export function getExplicitStoredKey(
|
|
96
|
-
fieldSchema: ImplicitAnnotatedFieldSchema,
|
|
97
|
-
): string | undefined {
|
|
84
|
+
export function getExplicitStoredKey(fieldSchema: ImplicitFieldSchema): string | undefined {
|
|
98
85
|
return fieldSchema instanceof FieldSchema ? fieldSchema.props?.key : undefined;
|
|
99
86
|
}
|
|
100
87
|
|
|
@@ -286,30 +273,7 @@ export function createFieldSchema<
|
|
|
286
273
|
kind: Kind,
|
|
287
274
|
annotatedTypes: Types,
|
|
288
275
|
props?: FieldProps<TCustomMetadata>,
|
|
289
|
-
): FieldSchemaAlpha<Kind, Types, TCustomMetadata
|
|
290
|
-
|
|
291
|
-
/**
|
|
292
|
-
* Package internal construction API that supports annotations for allowed types.
|
|
293
|
-
*/
|
|
294
|
-
export function createFieldSchema<
|
|
295
|
-
Kind extends FieldKind,
|
|
296
|
-
Types extends ImplicitAnnotatedAllowedTypes,
|
|
297
|
-
TCustomMetadata = unknown,
|
|
298
|
-
>(
|
|
299
|
-
kind: Kind,
|
|
300
|
-
annotatedTypes: Types,
|
|
301
|
-
props?: FieldProps<TCustomMetadata>,
|
|
302
|
-
): FieldSchemaAlpha<Kind, UnannotateImplicitAllowedTypes<Types>, TCustomMetadata>;
|
|
303
|
-
|
|
304
|
-
export function createFieldSchema<
|
|
305
|
-
Kind extends FieldKind,
|
|
306
|
-
Types extends ImplicitAnnotatedAllowedTypes,
|
|
307
|
-
TCustomMetadata = unknown,
|
|
308
|
-
>(
|
|
309
|
-
kind: Kind,
|
|
310
|
-
annotatedTypes: Types,
|
|
311
|
-
props?: FieldProps<TCustomMetadata>,
|
|
312
|
-
): FieldSchemaAlpha<Kind, UnannotateImplicitAllowedTypes<Types>, TCustomMetadata> {
|
|
276
|
+
): FieldSchemaAlpha<Kind, Types, TCustomMetadata> {
|
|
313
277
|
return createFieldSchemaPrivate(kind, annotatedTypes, props);
|
|
314
278
|
}
|
|
315
279
|
|
|
@@ -318,13 +282,13 @@ export function createFieldSchema<
|
|
|
318
282
|
*/
|
|
319
283
|
let createFieldSchemaPrivate: <
|
|
320
284
|
Kind extends FieldKind,
|
|
321
|
-
Types extends
|
|
285
|
+
Types extends ImplicitAllowedTypes,
|
|
322
286
|
TCustomMetadata,
|
|
323
287
|
>(
|
|
324
288
|
kind: Kind,
|
|
325
289
|
annotatedTypes: Types,
|
|
326
290
|
props?: FieldProps<TCustomMetadata>,
|
|
327
|
-
) => FieldSchemaAlpha<Kind,
|
|
291
|
+
) => FieldSchemaAlpha<Kind, Types, TCustomMetadata>;
|
|
328
292
|
|
|
329
293
|
/**
|
|
330
294
|
* All policy for a specific field,
|
|
@@ -400,7 +364,7 @@ export class FieldSchema<
|
|
|
400
364
|
throw new UsageError("FieldSchema is @sealed: sub-classing is not allowed.");
|
|
401
365
|
}
|
|
402
366
|
|
|
403
|
-
this.lazyTypes = new Lazy(() => normalizeAllowedTypes(this.allowedTypes));
|
|
367
|
+
this.lazyTypes = new Lazy(() => normalizeAllowedTypes(this.allowedTypes).evaluateSet());
|
|
404
368
|
// TODO: optional fields should (by default) get a default provider that returns undefined, removing the need to special case them here:
|
|
405
369
|
this.requiresValue =
|
|
406
370
|
this.props?.defaultProvider === undefined && this.kind !== FieldKind.Optional;
|
|
@@ -421,15 +385,8 @@ export class FieldSchemaAlpha<
|
|
|
421
385
|
extends FieldSchema<Kind, Types, TCustomMetadata>
|
|
422
386
|
implements SimpleFieldSchema
|
|
423
387
|
{
|
|
424
|
-
private readonly lazyIdentifiers: Lazy<ReadonlySet<string>>;
|
|
425
|
-
private readonly lazyAnnotatedTypes: Lazy<NormalizedAnnotatedAllowedTypes>;
|
|
426
388
|
private readonly propsAlpha: FieldPropsAlpha<TCustomMetadata> | undefined;
|
|
427
389
|
|
|
428
|
-
/**
|
|
429
|
-
* Metadata on the types of tree nodes allowed on this field.
|
|
430
|
-
*/
|
|
431
|
-
public readonly allowedTypesMetadata: AllowedTypesMetadata;
|
|
432
|
-
|
|
433
390
|
public get persistedMetadata(): JsonCompatibleReadOnlyObject | undefined {
|
|
434
391
|
return this.propsAlpha?.persistedMetadata;
|
|
435
392
|
}
|
|
@@ -437,61 +394,44 @@ export class FieldSchemaAlpha<
|
|
|
437
394
|
static {
|
|
438
395
|
createFieldSchemaPrivate = <
|
|
439
396
|
Kind2 extends FieldKind,
|
|
440
|
-
Types2 extends
|
|
397
|
+
Types2 extends ImplicitAllowedTypes,
|
|
441
398
|
TCustomMetadata2,
|
|
442
399
|
>(
|
|
443
400
|
kind: Kind2,
|
|
444
401
|
annotatedAllowedTypes: Types2,
|
|
445
402
|
props?: FieldPropsAlpha<TCustomMetadata2>,
|
|
446
|
-
) =>
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
403
|
+
) => new FieldSchemaAlpha(kind, annotatedAllowedTypes, props);
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
/**
|
|
407
|
+
* {@link normalizeAllowedTypes|Normalized} version of {@link FieldSchema.allowedTypes}.
|
|
408
|
+
*/
|
|
409
|
+
public readonly allowedTypesFull: AllowedTypesFull;
|
|
410
|
+
|
|
411
|
+
public get allowedTypesIdentifiers(): ReadonlySet<string> {
|
|
412
|
+
return this.allowedTypesFull.evaluateIdentifiers();
|
|
453
413
|
}
|
|
454
414
|
|
|
455
415
|
protected constructor(
|
|
456
416
|
kind: Kind,
|
|
457
417
|
types: Types,
|
|
458
|
-
|
|
418
|
+
|
|
459
419
|
props?: FieldPropsAlpha<TCustomMetadata>,
|
|
460
420
|
) {
|
|
461
421
|
super(kind, types, props);
|
|
462
422
|
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
: {};
|
|
466
|
-
this.lazyAnnotatedTypes = new Lazy(() =>
|
|
467
|
-
normalizeAnnotatedAllowedTypes(annotatedAllowedTypes),
|
|
468
|
-
);
|
|
469
|
-
this.lazyIdentifiers = new Lazy(
|
|
470
|
-
() =>
|
|
471
|
-
new Set(this.annotatedAllowedTypesNormalized.types.map(({ type }) => type.identifier)),
|
|
472
|
-
);
|
|
423
|
+
const normalizedTypes = normalizeAllowedTypes(types);
|
|
424
|
+
this.allowedTypesFull = normalizedTypes;
|
|
473
425
|
this.propsAlpha = props;
|
|
474
426
|
}
|
|
475
|
-
|
|
476
|
-
public get allowedTypesIdentifiers(): ReadonlySet<string> {
|
|
477
|
-
return this.lazyIdentifiers.value;
|
|
478
|
-
}
|
|
479
|
-
|
|
480
|
-
/**
|
|
481
|
-
* What types of tree nodes are allowed in this field and their annotations.
|
|
482
|
-
* @remarks Counterpart to {@link FieldSchemaAlpha.annotatedAllowedTypes}, with any lazy definitions evaluated.
|
|
483
|
-
*/
|
|
484
|
-
public get annotatedAllowedTypesNormalized(): NormalizedAnnotatedAllowedTypes {
|
|
485
|
-
return this.lazyAnnotatedTypes.value;
|
|
486
|
-
}
|
|
487
427
|
}
|
|
488
428
|
|
|
489
429
|
/**
|
|
490
|
-
* Normalizes a {@link ImplicitFieldSchema} or {@link
|
|
430
|
+
* Normalizes a {@link ImplicitFieldSchema} or {@link ImplicitFieldSchema} to a {@link FieldSchema}.
|
|
491
431
|
* @internal
|
|
492
432
|
*/
|
|
493
433
|
export function normalizeFieldSchema(
|
|
494
|
-
schema: ImplicitFieldSchema |
|
|
434
|
+
schema: ImplicitFieldSchema | ImplicitFieldSchema,
|
|
495
435
|
): FieldSchemaAlpha {
|
|
496
436
|
return schema instanceof FieldSchema
|
|
497
437
|
? (schema as FieldSchemaAlpha)
|
|
@@ -618,20 +558,6 @@ function arePersistedMetadataEqual(
|
|
|
618
558
|
*/
|
|
619
559
|
export type ImplicitFieldSchema = FieldSchema | ImplicitAllowedTypes;
|
|
620
560
|
|
|
621
|
-
/**
|
|
622
|
-
* {@link ImplicitFieldSchema} which supports {@link AnnotatedAllowedTypes | annotations} on the allowed types.
|
|
623
|
-
* @alpha
|
|
624
|
-
* @input
|
|
625
|
-
*/
|
|
626
|
-
export type ImplicitAnnotatedFieldSchema = FieldSchema | ImplicitAnnotatedAllowedTypes;
|
|
627
|
-
|
|
628
|
-
/**
|
|
629
|
-
* Removes annotations from an annotated field schema.
|
|
630
|
-
* @system @alpha
|
|
631
|
-
*/
|
|
632
|
-
export type UnannotateImplicitFieldSchema<T extends ImplicitAnnotatedFieldSchema> =
|
|
633
|
-
T extends ImplicitAnnotatedAllowedTypes ? UnannotateImplicitAllowedTypes<T> : T;
|
|
634
|
-
|
|
635
561
|
/**
|
|
636
562
|
* Converts an `ImplicitFieldSchema` to a property type suitable for reading a field with this that schema.
|
|
637
563
|
*
|
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,
|
|
@@ -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,
|
|
@@ -184,9 +189,7 @@ export type {
|
|
|
184
189
|
} from "./simpleSchema.js";
|
|
185
190
|
export {
|
|
186
191
|
type ImplicitFieldSchema,
|
|
187
|
-
type ImplicitAnnotatedFieldSchema,
|
|
188
192
|
type TreeFieldFromImplicitField,
|
|
189
|
-
type UnannotateImplicitFieldSchema,
|
|
190
193
|
FieldKind,
|
|
191
194
|
FieldSchema,
|
|
192
195
|
FieldSchemaAlpha,
|
|
@@ -226,7 +229,6 @@ export {
|
|
|
226
229
|
ObjectNodeSchema,
|
|
227
230
|
type ObjectNodeSchemaPrivate,
|
|
228
231
|
isObjectNodeSchema,
|
|
229
|
-
type InsertableObjectFromAnnotatedSchemaRecord,
|
|
230
232
|
type TreeObjectNode,
|
|
231
233
|
setField,
|
|
232
234
|
isRecordNodeSchema,
|
|
@@ -235,7 +237,6 @@ export {
|
|
|
235
237
|
type RecordNodePojoEmulationSchema,
|
|
236
238
|
RecordNodeSchema,
|
|
237
239
|
type TreeRecordNode,
|
|
238
|
-
type UnannotateSchemaRecord,
|
|
239
240
|
} from "./node-kinds/index.js";
|
|
240
241
|
export {
|
|
241
242
|
unhydratedFlexTreeFromInsertable,
|
|
@@ -32,14 +32,11 @@ import {
|
|
|
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,
|
|
@@ -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<
|
|
@@ -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 {
|