@fluidframework/tree 2.43.0-343119 → 2.50.0-345060
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/CHANGELOG.md +189 -0
- package/api-report/tree.alpha.api.md +86 -20
- package/api-report/tree.beta.api.md +10 -3
- package/api-report/tree.legacy.alpha.api.md +9 -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 +10 -0
- package/dist/core/forest/editableForest.d.ts +0 -2
- package/dist/core/forest/editableForest.d.ts.map +1 -1
- package/dist/core/forest/editableForest.js.map +1 -1
- package/dist/core/forest/forest.d.ts +0 -4
- package/dist/core/forest/forest.d.ts.map +1 -1
- package/dist/core/forest/forest.js +0 -4
- package/dist/core/forest/forest.js.map +1 -1
- package/dist/core/rebase/changeRebaser.d.ts +0 -6
- package/dist/core/rebase/changeRebaser.d.ts.map +1 -1
- package/dist/core/rebase/changeRebaser.js.map +1 -1
- package/dist/core/rebase/types.d.ts +0 -2
- package/dist/core/rebase/types.d.ts.map +1 -1
- package/dist/core/rebase/types.js.map +1 -1
- package/dist/core/schema-stored/schema.d.ts +0 -8
- package/dist/core/schema-stored/schema.d.ts.map +1 -1
- package/dist/core/schema-stored/schema.js +0 -8
- package/dist/core/schema-stored/schema.js.map +1 -1
- package/dist/core/schema-view/view.d.ts +0 -2
- package/dist/core/schema-view/view.d.ts.map +1 -1
- package/dist/core/schema-view/view.js.map +1 -1
- package/dist/core/tree/cursor.d.ts +0 -2
- package/dist/core/tree/cursor.d.ts.map +1 -1
- package/dist/core/tree/cursor.js +0 -2
- package/dist/core/tree/cursor.js.map +1 -1
- package/dist/core/tree/delta.d.ts +0 -2
- package/dist/core/tree/delta.d.ts.map +1 -1
- package/dist/core/tree/delta.js.map +1 -1
- package/dist/core/tree/types.d.ts +0 -4
- package/dist/core/tree/types.d.ts.map +1 -1
- package/dist/core/tree/types.js +0 -2
- package/dist/core/tree/types.js.map +1 -1
- package/dist/feature-libraries/default-schema/defaultEditBuilder.d.ts +0 -4
- package/dist/feature-libraries/default-schema/defaultEditBuilder.d.ts.map +1 -1
- package/dist/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
- package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts +0 -10
- package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
- package/dist/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
- package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts +1 -3
- package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/flexTreeTypes.js +0 -2
- package/dist/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
- package/dist/feature-libraries/modular-schema/crossFieldQueries.d.ts +0 -2
- package/dist/feature-libraries/modular-schema/crossFieldQueries.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/crossFieldQueries.js +0 -2
- package/dist/feature-libraries/modular-schema/crossFieldQueries.js.map +1 -1
- package/dist/feature-libraries/modular-schema/fieldChangeHandler.d.ts +0 -10
- package/dist/feature-libraries/modular-schema/fieldChangeHandler.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/fieldChangeHandler.js +0 -2
- package/dist/feature-libraries/modular-schema/fieldChangeHandler.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts +0 -6
- package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeTypes.d.ts +0 -12
- package/dist/feature-libraries/modular-schema/modularChangeTypes.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeTypes.js.map +1 -1
- package/dist/feature-libraries/sequence-field/types.d.ts +0 -2
- package/dist/feature-libraries/sequence-field/types.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/types.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/jsonDomainSchema.d.ts +2 -6
- package/dist/jsonDomainSchema.d.ts.map +1 -1
- package/dist/jsonDomainSchema.js +2 -2
- package/dist/jsonDomainSchema.js.map +1 -1
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/dist/shared-tree/schematizingTreeView.js +3 -3
- package/dist/shared-tree/schematizingTreeView.js.map +1 -1
- package/dist/shared-tree/treeAlpha.d.ts +38 -0
- package/dist/shared-tree/treeAlpha.d.ts.map +1 -1
- package/dist/shared-tree/treeAlpha.js +116 -9
- package/dist/shared-tree/treeAlpha.js.map +1 -1
- package/dist/simple-tree/api/configuration.d.ts +15 -3
- package/dist/simple-tree/api/configuration.d.ts.map +1 -1
- package/dist/simple-tree/api/configuration.js +88 -38
- package/dist/simple-tree/api/configuration.js.map +1 -1
- package/dist/simple-tree/api/customTree.d.ts +1 -1
- package/dist/simple-tree/api/customTree.d.ts.map +1 -1
- package/dist/simple-tree/api/customTree.js +3 -4
- package/dist/simple-tree/api/customTree.js.map +1 -1
- package/dist/simple-tree/api/index.d.ts +3 -3
- package/dist/simple-tree/api/index.d.ts.map +1 -1
- package/dist/simple-tree/api/index.js +4 -4
- package/dist/simple-tree/api/index.js.map +1 -1
- package/dist/simple-tree/api/jsonSchema.d.ts +32 -8
- package/dist/simple-tree/api/jsonSchema.d.ts.map +1 -1
- package/dist/simple-tree/api/jsonSchema.js.map +1 -1
- package/dist/simple-tree/api/schemaFactory.d.ts +2 -2
- package/dist/simple-tree/api/schemaFactory.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaFactory.js +1 -1
- package/dist/simple-tree/api/schemaFactory.js.map +1 -1
- package/dist/simple-tree/api/schemaFactoryAlpha.d.ts +97 -3
- package/dist/simple-tree/api/schemaFactoryAlpha.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaFactoryAlpha.js +75 -0
- package/dist/simple-tree/api/schemaFactoryAlpha.js.map +1 -1
- package/dist/simple-tree/api/schemaFactoryRecursive.d.ts +5 -1
- package/dist/simple-tree/api/schemaFactoryRecursive.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaFactoryRecursive.js.map +1 -1
- package/dist/simple-tree/api/schemaFromSimple.js +2 -0
- package/dist/simple-tree/api/schemaFromSimple.js.map +1 -1
- package/dist/simple-tree/api/simpleSchemaToJsonSchema.d.ts.map +1 -1
- package/dist/simple-tree/api/simpleSchemaToJsonSchema.js +4 -4
- package/dist/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -1
- package/dist/simple-tree/api/treeBeta.d.ts +1 -1
- package/dist/simple-tree/api/treeBeta.d.ts.map +1 -1
- package/dist/simple-tree/api/treeBeta.js.map +1 -1
- package/dist/simple-tree/api/treeNodeApi.d.ts +3 -0
- package/dist/simple-tree/api/treeNodeApi.d.ts.map +1 -1
- package/dist/simple-tree/api/treeNodeApi.js +2 -2
- package/dist/simple-tree/api/treeNodeApi.js.map +1 -1
- package/dist/simple-tree/api/typesUnsafe.d.ts +12 -0
- package/dist/simple-tree/api/typesUnsafe.d.ts.map +1 -1
- package/dist/simple-tree/api/typesUnsafe.js.map +1 -1
- package/dist/simple-tree/api/viewSchemaToSimpleSchema.d.ts.map +1 -1
- package/dist/simple-tree/api/viewSchemaToSimpleSchema.js +5 -3
- package/dist/simple-tree/api/viewSchemaToSimpleSchema.js.map +1 -1
- package/dist/simple-tree/core/context.d.ts +3 -3
- 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/getOrCreateNode.d.ts +9 -0
- package/dist/simple-tree/core/getOrCreateNode.d.ts.map +1 -1
- package/dist/simple-tree/core/getOrCreateNode.js +12 -1
- package/dist/simple-tree/core/getOrCreateNode.js.map +1 -1
- package/dist/simple-tree/core/index.d.ts +3 -3
- package/dist/simple-tree/core/index.d.ts.map +1 -1
- package/dist/simple-tree/core/index.js +4 -1
- package/dist/simple-tree/core/index.js.map +1 -1
- package/dist/simple-tree/core/treeNodeKernel.js +1 -1
- package/dist/simple-tree/core/treeNodeKernel.js.map +1 -1
- package/dist/simple-tree/core/treeNodeSchema.d.ts +73 -2
- package/dist/simple-tree/core/treeNodeSchema.d.ts.map +1 -1
- package/dist/simple-tree/core/treeNodeSchema.js +28 -1
- package/dist/simple-tree/core/treeNodeSchema.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 +9 -5
- package/dist/simple-tree/core/walkSchema.js.map +1 -1
- package/dist/simple-tree/createContext.js +1 -1
- package/dist/simple-tree/createContext.js.map +1 -1
- package/dist/simple-tree/getTreeNodeForField.d.ts +1 -1
- package/dist/simple-tree/getTreeNodeForField.d.ts.map +1 -1
- package/dist/simple-tree/getTreeNodeForField.js +3 -3
- package/dist/simple-tree/getTreeNodeForField.js.map +1 -1
- package/dist/simple-tree/index.d.ts +6 -6
- package/dist/simple-tree/index.d.ts.map +1 -1
- package/dist/simple-tree/index.js +10 -5
- package/dist/simple-tree/index.js.map +1 -1
- package/dist/simple-tree/leafNodeSchema.d.ts +2 -1
- package/dist/simple-tree/leafNodeSchema.d.ts.map +1 -1
- package/dist/simple-tree/leafNodeSchema.js +1 -0
- package/dist/simple-tree/leafNodeSchema.js.map +1 -1
- package/dist/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/array/arrayNode.js +18 -15
- package/dist/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
- package/dist/simple-tree/node-kinds/index.d.ts +2 -1
- package/dist/simple-tree/node-kinds/index.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/index.js +5 -1
- package/dist/simple-tree/node-kinds/index.js.map +1 -1
- package/dist/simple-tree/node-kinds/map/mapNode.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/map/mapNode.js +7 -3
- package/dist/simple-tree/node-kinds/map/mapNode.js.map +1 -1
- package/dist/simple-tree/node-kinds/object/index.d.ts +1 -1
- 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.map +1 -1
- package/dist/simple-tree/node-kinds/object/objectNode.js +9 -6
- package/dist/simple-tree/node-kinds/object/objectNode.js.map +1 -1
- package/dist/simple-tree/node-kinds/object/objectNodeTypes.d.ts +5 -1
- 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/index.d.ts +7 -0
- package/dist/simple-tree/node-kinds/record/index.d.ts.map +1 -0
- package/dist/simple-tree/node-kinds/record/index.js +13 -0
- package/dist/simple-tree/node-kinds/record/index.js.map +1 -0
- package/dist/simple-tree/node-kinds/record/recordNode.d.ts +39 -0
- package/dist/simple-tree/node-kinds/record/recordNode.d.ts.map +1 -0
- package/dist/simple-tree/node-kinds/record/recordNode.js +234 -0
- package/dist/simple-tree/node-kinds/record/recordNode.js.map +1 -0
- package/dist/simple-tree/node-kinds/record/recordNodeTypes.d.ts +70 -0
- package/dist/simple-tree/node-kinds/record/recordNodeTypes.d.ts.map +1 -0
- package/dist/simple-tree/node-kinds/record/recordNodeTypes.js +30 -0
- package/dist/simple-tree/node-kinds/record/recordNodeTypes.js.map +1 -0
- package/dist/simple-tree/schemaTypes.d.ts +13 -27
- package/dist/simple-tree/schemaTypes.d.ts.map +1 -1
- package/dist/simple-tree/schemaTypes.js +45 -39
- package/dist/simple-tree/schemaTypes.js.map +1 -1
- package/dist/simple-tree/simpleSchema.d.ts +16 -1
- package/dist/simple-tree/simpleSchema.d.ts.map +1 -1
- package/dist/simple-tree/simpleSchema.js.map +1 -1
- package/dist/simple-tree/toStoredSchema.d.ts +2 -0
- package/dist/simple-tree/toStoredSchema.d.ts.map +1 -1
- package/dist/simple-tree/toStoredSchema.js +6 -2
- package/dist/simple-tree/toStoredSchema.js.map +1 -1
- package/dist/simple-tree/treeNodeValid.d.ts.map +1 -1
- package/dist/simple-tree/treeNodeValid.js +1 -2
- package/dist/simple-tree/treeNodeValid.js.map +1 -1
- package/dist/simple-tree/unhydratedFlexTreeFromInsertable.d.ts +1 -1
- package/dist/simple-tree/unhydratedFlexTreeFromInsertable.d.ts.map +1 -1
- package/dist/simple-tree/unhydratedFlexTreeFromInsertable.js +56 -32
- package/dist/simple-tree/unhydratedFlexTreeFromInsertable.js.map +1 -1
- package/dist/simple-tree/walkFieldSchema.d.ts.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 +7 -2
- package/dist/tableSchema.d.ts.map +1 -1
- package/dist/tableSchema.js +21 -7
- package/dist/tableSchema.js.map +1 -1
- package/dist/util/brandedMap.d.ts +0 -2
- package/dist/util/brandedMap.d.ts.map +1 -1
- package/dist/util/brandedMap.js.map +1 -1
- package/docs/main/compatibility.md +15 -1
- package/lib/alpha.d.ts +10 -0
- package/lib/core/forest/editableForest.d.ts +0 -2
- package/lib/core/forest/editableForest.d.ts.map +1 -1
- package/lib/core/forest/editableForest.js.map +1 -1
- package/lib/core/forest/forest.d.ts +0 -4
- package/lib/core/forest/forest.d.ts.map +1 -1
- package/lib/core/forest/forest.js +0 -4
- package/lib/core/forest/forest.js.map +1 -1
- package/lib/core/rebase/changeRebaser.d.ts +0 -6
- package/lib/core/rebase/changeRebaser.d.ts.map +1 -1
- package/lib/core/rebase/changeRebaser.js.map +1 -1
- package/lib/core/rebase/types.d.ts +0 -2
- package/lib/core/rebase/types.d.ts.map +1 -1
- package/lib/core/rebase/types.js.map +1 -1
- package/lib/core/schema-stored/schema.d.ts +0 -8
- package/lib/core/schema-stored/schema.d.ts.map +1 -1
- package/lib/core/schema-stored/schema.js +0 -8
- package/lib/core/schema-stored/schema.js.map +1 -1
- package/lib/core/schema-view/view.d.ts +0 -2
- package/lib/core/schema-view/view.d.ts.map +1 -1
- package/lib/core/schema-view/view.js.map +1 -1
- package/lib/core/tree/cursor.d.ts +0 -2
- package/lib/core/tree/cursor.d.ts.map +1 -1
- package/lib/core/tree/cursor.js +0 -2
- package/lib/core/tree/cursor.js.map +1 -1
- package/lib/core/tree/delta.d.ts +0 -2
- package/lib/core/tree/delta.d.ts.map +1 -1
- package/lib/core/tree/delta.js.map +1 -1
- package/lib/core/tree/types.d.ts +0 -4
- package/lib/core/tree/types.d.ts.map +1 -1
- package/lib/core/tree/types.js +0 -2
- package/lib/core/tree/types.js.map +1 -1
- package/lib/feature-libraries/default-schema/defaultEditBuilder.d.ts +0 -4
- package/lib/feature-libraries/default-schema/defaultEditBuilder.d.ts.map +1 -1
- package/lib/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
- package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts +0 -10
- package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
- package/lib/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
- package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts +1 -3
- package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/flexTreeTypes.js +0 -2
- package/lib/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
- package/lib/feature-libraries/modular-schema/crossFieldQueries.d.ts +0 -2
- package/lib/feature-libraries/modular-schema/crossFieldQueries.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/crossFieldQueries.js +0 -2
- package/lib/feature-libraries/modular-schema/crossFieldQueries.js.map +1 -1
- package/lib/feature-libraries/modular-schema/fieldChangeHandler.d.ts +0 -10
- package/lib/feature-libraries/modular-schema/fieldChangeHandler.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/fieldChangeHandler.js +0 -2
- package/lib/feature-libraries/modular-schema/fieldChangeHandler.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts +0 -6
- package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeTypes.d.ts +0 -12
- package/lib/feature-libraries/modular-schema/modularChangeTypes.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeTypes.js.map +1 -1
- package/lib/feature-libraries/sequence-field/types.d.ts +0 -2
- package/lib/feature-libraries/sequence-field/types.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/types.js.map +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/jsonDomainSchema.d.ts +2 -6
- package/lib/jsonDomainSchema.d.ts.map +1 -1
- package/lib/jsonDomainSchema.js +3 -3
- package/lib/jsonDomainSchema.js.map +1 -1
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/lib/shared-tree/schematizingTreeView.js +4 -4
- package/lib/shared-tree/schematizingTreeView.js.map +1 -1
- package/lib/shared-tree/treeAlpha.d.ts +38 -0
- package/lib/shared-tree/treeAlpha.d.ts.map +1 -1
- package/lib/shared-tree/treeAlpha.js +110 -3
- package/lib/shared-tree/treeAlpha.js.map +1 -1
- package/lib/simple-tree/api/configuration.d.ts +15 -3
- package/lib/simple-tree/api/configuration.d.ts.map +1 -1
- package/lib/simple-tree/api/configuration.js +91 -41
- package/lib/simple-tree/api/configuration.js.map +1 -1
- package/lib/simple-tree/api/customTree.d.ts +1 -1
- package/lib/simple-tree/api/customTree.d.ts.map +1 -1
- package/lib/simple-tree/api/customTree.js +2 -3
- package/lib/simple-tree/api/customTree.js.map +1 -1
- package/lib/simple-tree/api/index.d.ts +3 -3
- package/lib/simple-tree/api/index.d.ts.map +1 -1
- package/lib/simple-tree/api/index.js +1 -1
- package/lib/simple-tree/api/index.js.map +1 -1
- package/lib/simple-tree/api/jsonSchema.d.ts +32 -8
- package/lib/simple-tree/api/jsonSchema.d.ts.map +1 -1
- package/lib/simple-tree/api/jsonSchema.js.map +1 -1
- package/lib/simple-tree/api/schemaFactory.d.ts +2 -2
- package/lib/simple-tree/api/schemaFactory.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaFactory.js +1 -1
- package/lib/simple-tree/api/schemaFactory.js.map +1 -1
- package/lib/simple-tree/api/schemaFactoryAlpha.d.ts +97 -3
- package/lib/simple-tree/api/schemaFactoryAlpha.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaFactoryAlpha.js +77 -2
- package/lib/simple-tree/api/schemaFactoryAlpha.js.map +1 -1
- package/lib/simple-tree/api/schemaFactoryRecursive.d.ts +5 -1
- package/lib/simple-tree/api/schemaFactoryRecursive.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaFactoryRecursive.js.map +1 -1
- package/lib/simple-tree/api/schemaFromSimple.js +2 -0
- package/lib/simple-tree/api/schemaFromSimple.js.map +1 -1
- package/lib/simple-tree/api/simpleSchemaToJsonSchema.d.ts.map +1 -1
- package/lib/simple-tree/api/simpleSchemaToJsonSchema.js +5 -5
- package/lib/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -1
- package/lib/simple-tree/api/treeBeta.d.ts +1 -1
- package/lib/simple-tree/api/treeBeta.d.ts.map +1 -1
- package/lib/simple-tree/api/treeBeta.js.map +1 -1
- package/lib/simple-tree/api/treeNodeApi.d.ts +3 -0
- package/lib/simple-tree/api/treeNodeApi.d.ts.map +1 -1
- package/lib/simple-tree/api/treeNodeApi.js +4 -4
- package/lib/simple-tree/api/treeNodeApi.js.map +1 -1
- package/lib/simple-tree/api/typesUnsafe.d.ts +12 -0
- package/lib/simple-tree/api/typesUnsafe.d.ts.map +1 -1
- package/lib/simple-tree/api/typesUnsafe.js.map +1 -1
- package/lib/simple-tree/api/viewSchemaToSimpleSchema.d.ts.map +1 -1
- package/lib/simple-tree/api/viewSchemaToSimpleSchema.js +6 -4
- package/lib/simple-tree/api/viewSchemaToSimpleSchema.js.map +1 -1
- package/lib/simple-tree/core/context.d.ts +3 -3
- 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/getOrCreateNode.d.ts +9 -0
- package/lib/simple-tree/core/getOrCreateNode.d.ts.map +1 -1
- package/lib/simple-tree/core/getOrCreateNode.js +10 -0
- package/lib/simple-tree/core/getOrCreateNode.js.map +1 -1
- package/lib/simple-tree/core/index.d.ts +3 -3
- package/lib/simple-tree/core/index.d.ts.map +1 -1
- package/lib/simple-tree/core/index.js +3 -3
- package/lib/simple-tree/core/index.js.map +1 -1
- package/lib/simple-tree/core/treeNodeKernel.js +1 -1
- package/lib/simple-tree/core/treeNodeKernel.js.map +1 -1
- package/lib/simple-tree/core/treeNodeSchema.d.ts +73 -2
- package/lib/simple-tree/core/treeNodeSchema.d.ts.map +1 -1
- package/lib/simple-tree/core/treeNodeSchema.js +25 -0
- package/lib/simple-tree/core/treeNodeSchema.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 +9 -5
- package/lib/simple-tree/core/walkSchema.js.map +1 -1
- package/lib/simple-tree/createContext.js +1 -1
- package/lib/simple-tree/createContext.js.map +1 -1
- package/lib/simple-tree/getTreeNodeForField.d.ts +1 -1
- package/lib/simple-tree/getTreeNodeForField.d.ts.map +1 -1
- package/lib/simple-tree/getTreeNodeForField.js +1 -1
- package/lib/simple-tree/getTreeNodeForField.js.map +1 -1
- package/lib/simple-tree/index.d.ts +6 -6
- package/lib/simple-tree/index.d.ts.map +1 -1
- package/lib/simple-tree/index.js +4 -4
- package/lib/simple-tree/index.js.map +1 -1
- package/lib/simple-tree/leafNodeSchema.d.ts +2 -1
- package/lib/simple-tree/leafNodeSchema.d.ts.map +1 -1
- package/lib/simple-tree/leafNodeSchema.js +2 -1
- package/lib/simple-tree/leafNodeSchema.js.map +1 -1
- package/lib/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/array/arrayNode.js +10 -7
- package/lib/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
- package/lib/simple-tree/node-kinds/index.d.ts +2 -1
- package/lib/simple-tree/node-kinds/index.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/index.js +1 -0
- package/lib/simple-tree/node-kinds/index.js.map +1 -1
- package/lib/simple-tree/node-kinds/map/mapNode.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/map/mapNode.js +9 -5
- package/lib/simple-tree/node-kinds/map/mapNode.js.map +1 -1
- package/lib/simple-tree/node-kinds/object/index.d.ts +1 -1
- package/lib/simple-tree/node-kinds/object/index.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/object/index.js +1 -1
- package/lib/simple-tree/node-kinds/object/index.js.map +1 -1
- package/lib/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/object/objectNode.js +11 -8
- package/lib/simple-tree/node-kinds/object/objectNode.js.map +1 -1
- package/lib/simple-tree/node-kinds/object/objectNodeTypes.d.ts +5 -1
- 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/index.d.ts +7 -0
- package/lib/simple-tree/node-kinds/record/index.d.ts.map +1 -0
- package/lib/simple-tree/node-kinds/record/index.js +7 -0
- package/lib/simple-tree/node-kinds/record/index.js.map +1 -0
- package/lib/simple-tree/node-kinds/record/recordNode.d.ts +39 -0
- package/lib/simple-tree/node-kinds/record/recordNode.d.ts.map +1 -0
- package/lib/simple-tree/node-kinds/record/recordNode.js +232 -0
- package/lib/simple-tree/node-kinds/record/recordNode.js.map +1 -0
- package/lib/simple-tree/node-kinds/record/recordNodeTypes.d.ts +70 -0
- package/lib/simple-tree/node-kinds/record/recordNodeTypes.d.ts.map +1 -0
- package/lib/simple-tree/node-kinds/record/recordNodeTypes.js +26 -0
- package/lib/simple-tree/node-kinds/record/recordNodeTypes.js.map +1 -0
- package/lib/simple-tree/schemaTypes.d.ts +13 -27
- package/lib/simple-tree/schemaTypes.d.ts.map +1 -1
- package/lib/simple-tree/schemaTypes.js +42 -35
- package/lib/simple-tree/schemaTypes.js.map +1 -1
- package/lib/simple-tree/simpleSchema.d.ts +16 -1
- package/lib/simple-tree/simpleSchema.d.ts.map +1 -1
- package/lib/simple-tree/simpleSchema.js.map +1 -1
- package/lib/simple-tree/toStoredSchema.d.ts +2 -0
- package/lib/simple-tree/toStoredSchema.d.ts.map +1 -1
- package/lib/simple-tree/toStoredSchema.js +6 -2
- package/lib/simple-tree/toStoredSchema.js.map +1 -1
- package/lib/simple-tree/treeNodeValid.d.ts.map +1 -1
- package/lib/simple-tree/treeNodeValid.js +1 -2
- package/lib/simple-tree/treeNodeValid.js.map +1 -1
- package/lib/simple-tree/unhydratedFlexTreeFromInsertable.d.ts +1 -1
- package/lib/simple-tree/unhydratedFlexTreeFromInsertable.d.ts.map +1 -1
- package/lib/simple-tree/unhydratedFlexTreeFromInsertable.js +58 -34
- package/lib/simple-tree/unhydratedFlexTreeFromInsertable.js.map +1 -1
- package/lib/simple-tree/walkFieldSchema.d.ts.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 +7 -2
- package/lib/tableSchema.d.ts.map +1 -1
- package/lib/tableSchema.js +22 -8
- package/lib/tableSchema.js.map +1 -1
- package/lib/util/brandedMap.d.ts +0 -2
- package/lib/util/brandedMap.d.ts.map +1 -1
- package/lib/util/brandedMap.js.map +1 -1
- package/package.json +36 -24
- package/src/core/forest/editableForest.ts +0 -2
- package/src/core/forest/forest.ts +0 -4
- package/src/core/rebase/changeRebaser.ts +0 -6
- package/src/core/rebase/types.ts +0 -2
- package/src/core/schema-stored/schema.ts +0 -8
- package/src/core/schema-view/view.ts +0 -2
- package/src/core/tree/cursor.ts +0 -2
- package/src/core/tree/delta.ts +0 -2
- package/src/core/tree/types.ts +0 -4
- package/src/feature-libraries/default-schema/defaultEditBuilder.ts +0 -4
- package/src/feature-libraries/default-schema/defaultFieldKinds.ts +0 -10
- package/src/feature-libraries/flex-tree/flexTreeTypes.ts +1 -3
- package/src/feature-libraries/modular-schema/crossFieldQueries.ts +0 -2
- package/src/feature-libraries/modular-schema/fieldChangeHandler.ts +0 -10
- package/src/feature-libraries/modular-schema/modularChangeFamily.ts +0 -8
- package/src/feature-libraries/modular-schema/modularChangeTypes.ts +0 -12
- package/src/feature-libraries/sequence-field/types.ts +0 -2
- package/src/index.ts +10 -0
- package/src/jsonDomainSchema.ts +3 -3
- package/src/packageVersion.ts +1 -1
- package/src/shared-tree/schematizingTreeView.ts +8 -5
- package/src/shared-tree/treeAlpha.ts +190 -3
- package/src/simple-tree/api/configuration.ts +131 -45
- package/src/simple-tree/api/customTree.ts +3 -3
- package/src/simple-tree/api/index.ts +6 -3
- package/src/simple-tree/api/jsonSchema.ts +35 -8
- package/src/simple-tree/api/schemaFactory.ts +5 -13
- package/src/simple-tree/api/schemaFactoryAlpha.ts +268 -1
- package/src/simple-tree/api/schemaFactoryRecursive.ts +5 -1
- package/src/simple-tree/api/schemaFromSimple.ts +6 -0
- package/src/simple-tree/api/simpleSchemaToJsonSchema.ts +16 -7
- package/src/simple-tree/api/treeBeta.ts +2 -2
- package/src/simple-tree/api/treeNodeApi.ts +7 -4
- package/src/simple-tree/api/typesUnsafe.ts +15 -0
- package/src/simple-tree/api/viewSchemaToSimpleSchema.ts +14 -6
- package/src/simple-tree/core/context.ts +3 -3
- package/src/simple-tree/core/getOrCreateNode.ts +14 -0
- package/src/simple-tree/core/index.ts +8 -1
- package/src/simple-tree/core/treeNodeKernel.ts +1 -1
- package/src/simple-tree/core/treeNodeSchema.ts +121 -5
- package/src/simple-tree/core/walkSchema.ts +16 -7
- package/src/simple-tree/createContext.ts +1 -1
- package/src/simple-tree/getTreeNodeForField.ts +3 -1
- package/src/simple-tree/index.ts +20 -5
- package/src/simple-tree/leafNodeSchema.ts +7 -1
- package/src/simple-tree/node-kinds/array/arrayNode.ts +15 -9
- package/src/simple-tree/node-kinds/index.ts +11 -0
- package/src/simple-tree/node-kinds/map/mapNode.ts +10 -4
- package/src/simple-tree/node-kinds/object/index.ts +5 -1
- package/src/simple-tree/node-kinds/object/objectNode.ts +23 -13
- package/src/simple-tree/node-kinds/object/objectNodeTypes.ts +6 -3
- package/src/simple-tree/node-kinds/record/index.ts +14 -0
- package/src/simple-tree/node-kinds/record/recordNode.ts +410 -0
- package/src/simple-tree/node-kinds/record/recordNodeTypes.ts +136 -0
- package/src/simple-tree/schemaTypes.ts +55 -64
- package/src/simple-tree/simpleSchema.ts +19 -1
- package/src/simple-tree/toStoredSchema.ts +6 -2
- package/src/simple-tree/treeNodeValid.ts +1 -1
- package/src/simple-tree/unhydratedFlexTreeFromInsertable.ts +83 -40
- package/src/simple-tree/walkFieldSchema.ts +5 -1
- package/src/tableSchema.ts +27 -8
- package/src/util/brandedMap.ts +0 -2
|
@@ -3,7 +3,15 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import
|
|
6
|
+
import { assert } from "@fluidframework/core-utils/internal";
|
|
7
|
+
import type { LazyItem } from "../flexList.js";
|
|
8
|
+
import type {
|
|
9
|
+
AllowedTypeMetadata,
|
|
10
|
+
AllowedTypesMetadata,
|
|
11
|
+
AnnotatedAllowedTypes,
|
|
12
|
+
ImplicitAnnotatedAllowedTypes,
|
|
13
|
+
TreeLeafValue,
|
|
14
|
+
} from "../schemaTypes.js";
|
|
7
15
|
import type { SimpleNodeSchemaBase } from "../simpleSchema.js";
|
|
8
16
|
|
|
9
17
|
import type { TreeNode } from "./treeNode.js";
|
|
@@ -62,6 +70,48 @@ export type TreeNodeSchema<
|
|
|
62
70
|
TCustomMetadata
|
|
63
71
|
>;
|
|
64
72
|
|
|
73
|
+
/**
|
|
74
|
+
* Stores annotations for an individual allowed type.
|
|
75
|
+
* @alpha
|
|
76
|
+
*/
|
|
77
|
+
export interface AnnotatedAllowedType<T = LazyItem<TreeNodeSchema>> {
|
|
78
|
+
/**
|
|
79
|
+
* Annotations for the allowed type.
|
|
80
|
+
*/
|
|
81
|
+
readonly metadata: AllowedTypeMetadata;
|
|
82
|
+
/**
|
|
83
|
+
* The allowed type the annotations apply to in a particular schema.
|
|
84
|
+
*/
|
|
85
|
+
readonly type: T;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Stores annotations for a set of evaluated annotated allowed types.
|
|
90
|
+
* @alpha
|
|
91
|
+
*/
|
|
92
|
+
export interface NormalizedAnnotatedAllowedTypes {
|
|
93
|
+
/**
|
|
94
|
+
* Annotations that apply to a set of allowed types.
|
|
95
|
+
*/
|
|
96
|
+
readonly metadata: AllowedTypesMetadata;
|
|
97
|
+
/**
|
|
98
|
+
* All the evaluated allowed types that the annotations apply to. The types themselves are also individually annotated.
|
|
99
|
+
*/
|
|
100
|
+
readonly types: readonly AnnotatedAllowedType<TreeNodeSchema>[];
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Checks if the input is an {@link AnnotatedAllowedTypes}.
|
|
105
|
+
*/
|
|
106
|
+
export function isAnnotatedAllowedTypes(
|
|
107
|
+
allowedTypes: ImplicitAnnotatedAllowedTypes,
|
|
108
|
+
): allowedTypes is AnnotatedAllowedTypes {
|
|
109
|
+
return (
|
|
110
|
+
// Class based schema, and lazy schema references report type "function": filtering them out with typeof makes narrowing based on members mostly safe
|
|
111
|
+
typeof allowedTypes === "object" && "metadata" in allowedTypes && "types" in allowedTypes
|
|
112
|
+
);
|
|
113
|
+
}
|
|
114
|
+
|
|
65
115
|
/**
|
|
66
116
|
* Schema which is not a class.
|
|
67
117
|
* @remarks
|
|
@@ -231,8 +281,13 @@ export type TreeNodeSchemaBoth<
|
|
|
231
281
|
|
|
232
282
|
/**
|
|
233
283
|
* Data common to all tree node schema.
|
|
284
|
+
*
|
|
234
285
|
* @remarks
|
|
235
286
|
* Implementation detail of {@link TreeNodeSchema} which should be accessed instead of referring to this type directly.
|
|
287
|
+
*
|
|
288
|
+
* @privateRemarks
|
|
289
|
+
* All implementations must implement {@link TreeNodeSchemaCorePrivate} as well.
|
|
290
|
+
*
|
|
236
291
|
* @sealed @public
|
|
237
292
|
*/
|
|
238
293
|
export interface TreeNodeSchemaCore<
|
|
@@ -316,6 +371,63 @@ export interface TreeNodeSchemaCore<
|
|
|
316
371
|
createFromInsertable(data: TInsertable): Unhydrated<TreeNode | TreeLeafValue>;
|
|
317
372
|
}
|
|
318
373
|
|
|
374
|
+
/**
|
|
375
|
+
* {@link TreeNodeSchemaCore} extended with some non-exported APIs.
|
|
376
|
+
*/
|
|
377
|
+
export interface TreeNodeSchemaCorePrivate<
|
|
378
|
+
Name extends string = string,
|
|
379
|
+
Kind extends NodeKind = NodeKind,
|
|
380
|
+
TInsertable = never,
|
|
381
|
+
ImplicitlyConstructable extends boolean = boolean,
|
|
382
|
+
Info = unknown,
|
|
383
|
+
TCustomMetadata = unknown,
|
|
384
|
+
> extends TreeNodeSchemaCore<
|
|
385
|
+
Name,
|
|
386
|
+
Kind,
|
|
387
|
+
ImplicitlyConstructable,
|
|
388
|
+
Info,
|
|
389
|
+
TInsertable,
|
|
390
|
+
TCustomMetadata
|
|
391
|
+
> {
|
|
392
|
+
/**
|
|
393
|
+
* All possible annotated allowed types that a field under a node with this schema could have.
|
|
394
|
+
* @remarks
|
|
395
|
+
* In this case "field" includes anything that is a field in the internal (flex-tree) abstraction layer.
|
|
396
|
+
* This includes the content field for arrays, and all the fields for map nodes.
|
|
397
|
+
* If this node does not have fields (and thus is a leaf), the array will be empty.
|
|
398
|
+
*
|
|
399
|
+
* This set cannot be used before the schema in it have been defined:
|
|
400
|
+
* more specifically, when using lazy schema references (for example to make foreword references to schema which have not yet been defined),
|
|
401
|
+
* users must wait until after the schema are defined to access this array.
|
|
402
|
+
*
|
|
403
|
+
* @privateRemarks
|
|
404
|
+
* If this is stabilized, it will live alongside the childTypes property on {@link TreeNodeSchemaCore}.
|
|
405
|
+
* @system
|
|
406
|
+
*/
|
|
407
|
+
readonly childAnnotatedAllowedTypes: readonly NormalizedAnnotatedAllowedTypes[];
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
/**
|
|
411
|
+
* Downcasts a {@link TreeNodeSchemaCore} to {@link TreeNodeSchemaCorePrivate} if it is one.
|
|
412
|
+
*
|
|
413
|
+
* @remarks
|
|
414
|
+
* This function should only be used internally. The result should not be exposed publicly
|
|
415
|
+
* in any exported types or API return values.
|
|
416
|
+
*/
|
|
417
|
+
export function asTreeNodeSchemaCorePrivate(
|
|
418
|
+
schema: TreeNodeSchemaCore<string, NodeKind, boolean>,
|
|
419
|
+
): TreeNodeSchemaCorePrivate {
|
|
420
|
+
assert(
|
|
421
|
+
"childAnnotatedAllowedTypes" in schema,
|
|
422
|
+
0xbc9 /* All implementations of TreeNodeSchemaCore must also implement TreeNodeSchemaCorePrivate */,
|
|
423
|
+
);
|
|
424
|
+
assert(
|
|
425
|
+
Array.isArray((schema as TreeNodeSchemaCorePrivate).childAnnotatedAllowedTypes),
|
|
426
|
+
0xbca /* All implementations of TreeNodeSchemaCore must also implement TreeNodeSchemaCorePrivate */,
|
|
427
|
+
);
|
|
428
|
+
return schema as TreeNodeSchemaCorePrivate;
|
|
429
|
+
}
|
|
430
|
+
|
|
319
431
|
/**
|
|
320
432
|
* Kind of tree node.
|
|
321
433
|
* @remarks
|
|
@@ -326,19 +438,23 @@ export enum NodeKind {
|
|
|
326
438
|
/**
|
|
327
439
|
* A node which serves as a map, storing children under string keys.
|
|
328
440
|
*/
|
|
329
|
-
Map,
|
|
441
|
+
Map = 0,
|
|
330
442
|
/**
|
|
331
443
|
* A node which serves as an array, storing children in an ordered sequence.
|
|
332
444
|
*/
|
|
333
|
-
Array,
|
|
445
|
+
Array = 1,
|
|
334
446
|
/**
|
|
335
447
|
* A node which stores a heterogenous collection of children in named fields.
|
|
336
448
|
* @remarks
|
|
337
449
|
* Each field gets its own schema.
|
|
338
450
|
*/
|
|
339
|
-
Object,
|
|
451
|
+
Object = 2,
|
|
340
452
|
/**
|
|
341
453
|
* A node which stores a single leaf value.
|
|
342
454
|
*/
|
|
343
|
-
Leaf,
|
|
455
|
+
Leaf = 3,
|
|
456
|
+
/**
|
|
457
|
+
* A node which serves as a record, storing children under string keys.
|
|
458
|
+
*/
|
|
459
|
+
Record = 4,
|
|
344
460
|
}
|
|
@@ -3,7 +3,11 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import
|
|
6
|
+
import {
|
|
7
|
+
asTreeNodeSchemaCorePrivate,
|
|
8
|
+
type NormalizedAnnotatedAllowedTypes,
|
|
9
|
+
type TreeNodeSchema,
|
|
10
|
+
} from "./treeNodeSchema.js";
|
|
7
11
|
|
|
8
12
|
/**
|
|
9
13
|
* Traverses all {@link TreeNodeSchema} schema reachable from `schema`, applying the visitor pattern.
|
|
@@ -16,9 +20,14 @@ export function walkNodeSchema(
|
|
|
16
20
|
if (visitedSet.has(schema)) {
|
|
17
21
|
return;
|
|
18
22
|
}
|
|
23
|
+
|
|
19
24
|
visitedSet.add(schema);
|
|
20
25
|
|
|
21
|
-
|
|
26
|
+
const annotatedAllowedTypes = asTreeNodeSchemaCorePrivate(schema).childAnnotatedAllowedTypes;
|
|
27
|
+
|
|
28
|
+
for (const fieldAllowedTypes of annotatedAllowedTypes) {
|
|
29
|
+
walkAllowedTypes(fieldAllowedTypes, visitor, visitedSet);
|
|
30
|
+
}
|
|
22
31
|
|
|
23
32
|
// This visit is done at the end so the traversal order is most inner types first.
|
|
24
33
|
// This was picked since when fixing errors,
|
|
@@ -31,14 +40,14 @@ export function walkNodeSchema(
|
|
|
31
40
|
* Traverses all {@link TreeNodeSchema} schema reachable from `allowedTypes`, applying the visitor pattern.
|
|
32
41
|
*/
|
|
33
42
|
export function walkAllowedTypes(
|
|
34
|
-
|
|
43
|
+
annotatedAllowedTypes: NormalizedAnnotatedAllowedTypes,
|
|
35
44
|
visitor: SchemaVisitor,
|
|
36
45
|
visitedSet: Set<TreeNodeSchema> = new Set(),
|
|
37
46
|
): void {
|
|
38
|
-
for (const
|
|
39
|
-
walkNodeSchema(
|
|
47
|
+
for (const { type } of annotatedAllowedTypes.types) {
|
|
48
|
+
walkNodeSchema(type, visitor, visitedSet);
|
|
40
49
|
}
|
|
41
|
-
visitor.allowedTypes?.(
|
|
50
|
+
visitor.allowedTypes?.(annotatedAllowedTypes);
|
|
42
51
|
}
|
|
43
52
|
|
|
44
53
|
/**
|
|
@@ -55,5 +64,5 @@ export interface SchemaVisitor {
|
|
|
55
64
|
*
|
|
56
65
|
* This includes every field, but also the allowed types array for maps and arrays and the root if starting at {@link walkAllowedTypes}.
|
|
57
66
|
*/
|
|
58
|
-
allowedTypes?: (allowedTypes:
|
|
67
|
+
allowedTypes?: (allowedTypes: NormalizedAnnotatedAllowedTypes) => void;
|
|
59
68
|
}
|
|
@@ -20,6 +20,6 @@ export function getUnhydratedContext(schema: ImplicitFieldSchema): Context {
|
|
|
20
20
|
const normalized = normalizeFieldSchema(schema);
|
|
21
21
|
|
|
22
22
|
const flexContext = new UnhydratedContext(defaultSchemaPolicy, toStoredSchema(schema));
|
|
23
|
-
return new Context(normalized.
|
|
23
|
+
return new Context(normalized.annotatedAllowedTypesNormalized, flexContext);
|
|
24
24
|
});
|
|
25
25
|
}
|
|
@@ -19,7 +19,9 @@ import { type TreeNode, getOrCreateNodeFromInnerNode } from "./core/index.js";
|
|
|
19
19
|
/**
|
|
20
20
|
* Retrieve the associated {@link TreeNode} for the given field's content.
|
|
21
21
|
*/
|
|
22
|
-
export function
|
|
22
|
+
export function tryGetTreeNodeForField(
|
|
23
|
+
field: FlexTreeField,
|
|
24
|
+
): TreeNode | TreeValue | undefined {
|
|
23
25
|
function tryToUnboxLeaves(
|
|
24
26
|
flexField: FlexTreeOptionalField | FlexTreeRequiredField,
|
|
25
27
|
): TreeNode | TreeValue | undefined {
|
package/src/simple-tree/index.ts
CHANGED
|
@@ -8,6 +8,8 @@ export {
|
|
|
8
8
|
typeSchemaSymbol,
|
|
9
9
|
type WithType,
|
|
10
10
|
type TreeNodeSchema,
|
|
11
|
+
type AnnotatedAllowedType,
|
|
12
|
+
type NormalizedAnnotatedAllowedTypes,
|
|
11
13
|
NodeKind,
|
|
12
14
|
type TreeNodeSchemaClass,
|
|
13
15
|
type TreeNodeSchemaNonClass,
|
|
@@ -23,6 +25,7 @@ export {
|
|
|
23
25
|
SimpleContextSlot,
|
|
24
26
|
getOrCreateInnerNode,
|
|
25
27
|
getOrCreateNodeFromInnerNode,
|
|
28
|
+
getOrCreateNodeFromInnerUnboxedNode,
|
|
26
29
|
getKernel,
|
|
27
30
|
} from "./core/index.js";
|
|
28
31
|
export {
|
|
@@ -66,6 +69,8 @@ export {
|
|
|
66
69
|
type JsonTreeSchema,
|
|
67
70
|
type JsonFieldSchema,
|
|
68
71
|
type JsonLeafSchemaType,
|
|
72
|
+
type JsonRecordNodeSchema,
|
|
73
|
+
type JsonStringKeyPatternProperties,
|
|
69
74
|
type TreeSchemaEncodingOptions,
|
|
70
75
|
getJsonSchema,
|
|
71
76
|
getSimpleSchema,
|
|
@@ -80,12 +85,13 @@ export {
|
|
|
80
85
|
type System_Unsafe,
|
|
81
86
|
type ArrayNodeCustomizableSchemaUnsafe,
|
|
82
87
|
type MapNodeCustomizableSchemaUnsafe,
|
|
88
|
+
type TreeRecordNodeUnsafe,
|
|
83
89
|
type TreeViewAlpha,
|
|
84
90
|
type TreeBranch,
|
|
85
91
|
type TreeBranchEvents,
|
|
86
|
-
tryGetSchema,
|
|
87
|
-
getStoredKey,
|
|
88
92
|
getPropertyKeyFromStoredKey,
|
|
93
|
+
getStoredKey,
|
|
94
|
+
tryGetSchema,
|
|
89
95
|
applySchemaToParserOptions,
|
|
90
96
|
cursorFromVerbose,
|
|
91
97
|
verboseFromCursor,
|
|
@@ -133,12 +139,11 @@ export type {
|
|
|
133
139
|
SimpleNodeSchemaBase,
|
|
134
140
|
SimpleNodeSchemaBaseAlpha,
|
|
135
141
|
SimpleObjectFieldSchema,
|
|
142
|
+
SimpleRecordNodeSchema,
|
|
136
143
|
} from "./simpleSchema.js";
|
|
137
144
|
export {
|
|
138
145
|
type NodeFromSchema,
|
|
139
146
|
isTreeNodeSchemaClass,
|
|
140
|
-
type AnnotatedAllowedType,
|
|
141
|
-
type AnnotatedAllowedTypes,
|
|
142
147
|
type ImplicitFieldSchema,
|
|
143
148
|
type ImplicitAnnotatedFieldSchema,
|
|
144
149
|
type TreeFieldFromImplicitField,
|
|
@@ -157,6 +162,7 @@ export {
|
|
|
157
162
|
type AllowedTypes,
|
|
158
163
|
type AllowedTypeMetadata,
|
|
159
164
|
type AllowedTypesMetadata,
|
|
165
|
+
type AnnotatedAllowedTypes,
|
|
160
166
|
FieldKind,
|
|
161
167
|
FieldSchema,
|
|
162
168
|
type FieldSchemaAlpha,
|
|
@@ -185,11 +191,12 @@ export {
|
|
|
185
191
|
type NodeSchemaMetadata,
|
|
186
192
|
evaluateLazySchema,
|
|
187
193
|
} from "./schemaTypes.js";
|
|
188
|
-
export {
|
|
194
|
+
export { tryGetTreeNodeForField } from "./getTreeNodeForField.js";
|
|
189
195
|
export {
|
|
190
196
|
type ArrayNodeCustomizableSchema,
|
|
191
197
|
type ArrayNodePojoEmulationSchema,
|
|
192
198
|
ArrayNodeSchema,
|
|
199
|
+
asIndex,
|
|
193
200
|
isArrayNodeSchema,
|
|
194
201
|
IterableTreeArrayContent,
|
|
195
202
|
type ReadonlyArrayNode,
|
|
@@ -204,10 +211,18 @@ export {
|
|
|
204
211
|
type InsertableObjectFromSchemaRecord,
|
|
205
212
|
type ObjectFromSchemaRecord,
|
|
206
213
|
ObjectNodeSchema,
|
|
214
|
+
type ObjectNodeSchemaPrivate,
|
|
215
|
+
isObjectNodeSchema,
|
|
207
216
|
type InsertableObjectFromAnnotatedSchemaRecord,
|
|
208
217
|
type TreeObjectNode,
|
|
209
218
|
setField,
|
|
210
219
|
createUnknownOptionalFieldPolicy,
|
|
220
|
+
isRecordNodeSchema,
|
|
221
|
+
type RecordNodeCustomizableSchema,
|
|
222
|
+
type RecordNodeInsertableData,
|
|
223
|
+
type RecordNodePojoEmulationSchema,
|
|
224
|
+
RecordNodeSchema,
|
|
225
|
+
type TreeRecordNode,
|
|
211
226
|
} from "./node-kinds/index.js";
|
|
212
227
|
export {
|
|
213
228
|
unhydratedFlexTreeFromInsertable,
|
|
@@ -12,7 +12,12 @@ import {
|
|
|
12
12
|
valueSchemaAllows,
|
|
13
13
|
} from "../feature-libraries/index.js";
|
|
14
14
|
|
|
15
|
-
import {
|
|
15
|
+
import {
|
|
16
|
+
NodeKind,
|
|
17
|
+
type NormalizedAnnotatedAllowedTypes,
|
|
18
|
+
type TreeNodeSchema,
|
|
19
|
+
type TreeNodeSchemaNonClass,
|
|
20
|
+
} from "./core/index.js";
|
|
16
21
|
import type { NodeSchemaMetadata, TreeLeafValue } from "./schemaTypes.js";
|
|
17
22
|
import type { SimpleLeafNodeSchema } from "./simpleSchema.js";
|
|
18
23
|
import type { JsonCompatibleReadOnlyObject } from "../util/index.js";
|
|
@@ -34,6 +39,7 @@ export class LeafNodeSchema<Name extends string, const T extends ValueSchema>
|
|
|
34
39
|
public readonly info: T;
|
|
35
40
|
public readonly implicitlyConstructable = true as const;
|
|
36
41
|
public readonly childTypes: ReadonlySet<TreeNodeSchema> = new Set();
|
|
42
|
+
public readonly childAnnotatedAllowedTypes: readonly NormalizedAnnotatedAllowedTypes[] = [];
|
|
37
43
|
|
|
38
44
|
public create(data: TreeValue<T> | FlexTreeNode): TreeValue<T> {
|
|
39
45
|
if (isFlexTreeNode(data)) {
|
|
@@ -7,14 +7,14 @@ import { Lazy, oob, fail } from "@fluidframework/core-utils/internal";
|
|
|
7
7
|
import { UsageError } from "@fluidframework/telemetry-utils/internal";
|
|
8
8
|
|
|
9
9
|
import { EmptyKey } from "../../../core/index.js";
|
|
10
|
-
import {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
isFlexTreeNode,
|
|
10
|
+
import type {
|
|
11
|
+
FlexibleFieldContent,
|
|
12
|
+
FlexTreeNode,
|
|
13
|
+
FlexTreeSequenceField,
|
|
15
14
|
} from "../../../feature-libraries/index.js";
|
|
16
15
|
import {
|
|
17
16
|
normalizeAllowedTypes,
|
|
17
|
+
normalizeAnnotatedAllowedTypes,
|
|
18
18
|
unannotateImplicitAllowedTypes,
|
|
19
19
|
type ImplicitAllowedTypes,
|
|
20
20
|
type ImplicitAnnotatedAllowedTypes,
|
|
@@ -41,6 +41,8 @@ import {
|
|
|
41
41
|
getKernel,
|
|
42
42
|
type UnhydratedFlexTreeNode,
|
|
43
43
|
UnhydratedSequenceField,
|
|
44
|
+
getOrCreateNodeFromInnerUnboxedNode,
|
|
45
|
+
type NormalizedAnnotatedAllowedTypes,
|
|
44
46
|
} from "../../core/index.js";
|
|
45
47
|
import {
|
|
46
48
|
type InsertableContent,
|
|
@@ -735,9 +737,9 @@ function createArrayNodeProxy(
|
|
|
735
737
|
}
|
|
736
738
|
|
|
737
739
|
const maybeContent = field.at(maybeIndex);
|
|
738
|
-
return
|
|
739
|
-
?
|
|
740
|
-
: maybeContent;
|
|
740
|
+
return maybeContent === undefined
|
|
741
|
+
? undefined
|
|
742
|
+
: getOrCreateNodeFromInnerUnboxedNode(maybeContent);
|
|
741
743
|
},
|
|
742
744
|
set: (target, key, newValue, receiver) => {
|
|
743
745
|
if (key === "length") {
|
|
@@ -796,7 +798,7 @@ function createArrayNodeProxy(
|
|
|
796
798
|
// To satisfy 'deepEquals' level scrutiny, the property descriptor for indexed properties must
|
|
797
799
|
// be a simple value property (as opposed to using getter) and declared writable/enumerable/configurable.
|
|
798
800
|
return {
|
|
799
|
-
value:
|
|
801
|
+
value: val === undefined ? undefined : getOrCreateNodeFromInnerUnboxedNode(val),
|
|
800
802
|
writable: true, // For MVP, setting indexed properties is reported as allowed here (for deep equals compatibility noted above), but not actually supported.
|
|
801
803
|
enumerable: true,
|
|
802
804
|
configurable: true,
|
|
@@ -1110,6 +1112,7 @@ export function arraySchema<
|
|
|
1110
1112
|
const unannotatedTypes = unannotateImplicitAllowedTypes(info);
|
|
1111
1113
|
|
|
1112
1114
|
const lazyChildTypes = new Lazy(() => normalizeAllowedTypes(unannotatedTypes));
|
|
1115
|
+
const lazyAnnotatedTypes = new Lazy(() => [normalizeAnnotatedAllowedTypes(info)]);
|
|
1113
1116
|
const lazyAllowedTypesIdentifiers = new Lazy(
|
|
1114
1117
|
() => new Set([...lazyChildTypes.value].map((type) => type.identifier)),
|
|
1115
1118
|
);
|
|
@@ -1192,6 +1195,9 @@ export function arraySchema<
|
|
|
1192
1195
|
public static get childTypes(): ReadonlySet<TreeNodeSchema> {
|
|
1193
1196
|
return lazyChildTypes.value;
|
|
1194
1197
|
}
|
|
1198
|
+
public static get childAnnotatedAllowedTypes(): readonly NormalizedAnnotatedAllowedTypes[] {
|
|
1199
|
+
return lazyAnnotatedTypes.value;
|
|
1200
|
+
}
|
|
1195
1201
|
public static readonly metadata: NodeSchemaMetadata<TCustomMetadata> = metadata ?? {};
|
|
1196
1202
|
public static readonly persistedMetadata: JsonCompatibleReadOnlyObject | undefined =
|
|
1197
1203
|
persistedMetadata;
|
|
@@ -33,7 +33,18 @@ export {
|
|
|
33
33
|
isObjectNodeSchema,
|
|
34
34
|
type ObjectFromSchemaRecord,
|
|
35
35
|
ObjectNodeSchema,
|
|
36
|
+
type ObjectNodeSchemaPrivate,
|
|
36
37
|
objectSchema,
|
|
37
38
|
setField,
|
|
38
39
|
type TreeObjectNode,
|
|
39
40
|
} from "./object/index.js";
|
|
41
|
+
|
|
42
|
+
export {
|
|
43
|
+
isRecordNodeSchema,
|
|
44
|
+
type RecordNodeCustomizableSchema,
|
|
45
|
+
type RecordNodeInsertableData,
|
|
46
|
+
type RecordNodePojoEmulationSchema,
|
|
47
|
+
RecordNodeSchema,
|
|
48
|
+
recordSchema,
|
|
49
|
+
type TreeRecordNode,
|
|
50
|
+
} from "./record/index.js";
|
|
@@ -10,11 +10,12 @@ import type {
|
|
|
10
10
|
FlexTreeOptionalField,
|
|
11
11
|
OptionalFieldEditBuilder,
|
|
12
12
|
} from "../../../feature-libraries/index.js";
|
|
13
|
-
import {
|
|
13
|
+
import { tryGetTreeNodeForField } from "../../getTreeNodeForField.js";
|
|
14
14
|
import {
|
|
15
15
|
createFieldSchema,
|
|
16
16
|
FieldKind,
|
|
17
17
|
normalizeAllowedTypes,
|
|
18
|
+
normalizeAnnotatedAllowedTypes,
|
|
18
19
|
unannotateImplicitAllowedTypes,
|
|
19
20
|
type ImplicitAllowedTypes,
|
|
20
21
|
type ImplicitAnnotatedAllowedTypes,
|
|
@@ -36,6 +37,7 @@ import {
|
|
|
36
37
|
getOrCreateInnerNode,
|
|
37
38
|
type InternalTreeNode,
|
|
38
39
|
type UnhydratedFlexTreeNode,
|
|
40
|
+
type NormalizedAnnotatedAllowedTypes,
|
|
39
41
|
} from "../../core/index.js";
|
|
40
42
|
import {
|
|
41
43
|
unhydratedFlexTreeFromInsertable,
|
|
@@ -177,14 +179,14 @@ abstract class CustomMapNodeBase<const T extends ImplicitAllowedTypes> extends T
|
|
|
177
179
|
for (const key of node.keys()) {
|
|
178
180
|
yield [
|
|
179
181
|
key,
|
|
180
|
-
|
|
182
|
+
tryGetTreeNodeForField(node.getBoxed(key)) as TreeNodeFromImplicitAllowedTypes<T>,
|
|
181
183
|
];
|
|
182
184
|
}
|
|
183
185
|
}
|
|
184
186
|
public get(key: string): TreeNodeFromImplicitAllowedTypes<T> {
|
|
185
187
|
const node = this.innerNode;
|
|
186
188
|
const field = node.getBoxed(brand(key));
|
|
187
|
-
return
|
|
189
|
+
return tryGetTreeNodeForField(field) as TreeNodeFromImplicitAllowedTypes<T>;
|
|
188
190
|
}
|
|
189
191
|
public has(key: string): boolean {
|
|
190
192
|
return this.innerNode.tryGetField(brand(key)) !== undefined;
|
|
@@ -221,7 +223,7 @@ abstract class CustomMapNodeBase<const T extends ImplicitAllowedTypes> extends T
|
|
|
221
223
|
thisArg?: unknown,
|
|
222
224
|
): void {
|
|
223
225
|
for (const field of getOrCreateInnerNode(this)) {
|
|
224
|
-
const node =
|
|
226
|
+
const node = tryGetTreeNodeForField(field) as TreeNodeFromImplicitAllowedTypes<T>;
|
|
225
227
|
callbackFn.call(thisArg, node, field.key, this);
|
|
226
228
|
}
|
|
227
229
|
}
|
|
@@ -252,6 +254,7 @@ export function mapSchema<
|
|
|
252
254
|
const lazyChildTypes = new Lazy(() =>
|
|
253
255
|
normalizeAllowedTypes(unannotateImplicitAllowedTypes(info)),
|
|
254
256
|
);
|
|
257
|
+
const lazyAnnotatedTypes = new Lazy(() => [normalizeAnnotatedAllowedTypes(info)]);
|
|
255
258
|
const lazyAllowedTypesIdentifiers = new Lazy(
|
|
256
259
|
() => new Set([...lazyChildTypes.value].map((type) => type.identifier)),
|
|
257
260
|
);
|
|
@@ -300,6 +303,9 @@ export function mapSchema<
|
|
|
300
303
|
public static get childTypes(): ReadonlySet<TreeNodeSchema> {
|
|
301
304
|
return lazyChildTypes.value;
|
|
302
305
|
}
|
|
306
|
+
public static get childAnnotatedAllowedTypes(): readonly NormalizedAnnotatedAllowedTypes[] {
|
|
307
|
+
return lazyAnnotatedTypes.value;
|
|
308
|
+
}
|
|
303
309
|
public static readonly metadata: NodeSchemaMetadata<TCustomMetadata> = metadata ?? {};
|
|
304
310
|
public static readonly persistedMetadata: JsonCompatibleReadOnlyObject | undefined =
|
|
305
311
|
persistedMetadata;
|
|
@@ -13,4 +13,8 @@ export {
|
|
|
13
13
|
setField,
|
|
14
14
|
type TreeObjectNode,
|
|
15
15
|
} from "./objectNode.js";
|
|
16
|
-
export {
|
|
16
|
+
export {
|
|
17
|
+
isObjectNodeSchema,
|
|
18
|
+
ObjectNodeSchema,
|
|
19
|
+
type ObjectNodeSchemaPrivate,
|
|
20
|
+
} from "./objectNodeTypes.js";
|
|
@@ -32,13 +32,15 @@ import {
|
|
|
32
32
|
type Context,
|
|
33
33
|
type UnhydratedFlexTreeNode,
|
|
34
34
|
getOrCreateInnerNode,
|
|
35
|
+
type NormalizedAnnotatedAllowedTypes,
|
|
35
36
|
} from "../../core/index.js";
|
|
36
37
|
import { getUnhydratedContext } from "../../createContext.js";
|
|
37
|
-
import {
|
|
38
|
+
import { tryGetTreeNodeForField } from "../../getTreeNodeForField.js";
|
|
38
39
|
import {
|
|
39
40
|
isObjectNodeSchema,
|
|
40
41
|
type ObjectNodeSchema,
|
|
41
42
|
type ObjectNodeSchemaInternalData,
|
|
43
|
+
type ObjectNodeSchemaPrivate,
|
|
42
44
|
} from "./objectNodeTypes.js";
|
|
43
45
|
import { prepareForInsertion } from "../../prepareForInsertion.js";
|
|
44
46
|
import {
|
|
@@ -54,7 +56,6 @@ import {
|
|
|
54
56
|
type FieldSchemaAlpha,
|
|
55
57
|
ObjectFieldSchema,
|
|
56
58
|
type ImplicitAnnotatedFieldSchema,
|
|
57
|
-
unannotateSchemaRecord,
|
|
58
59
|
type UnannotateSchemaRecord,
|
|
59
60
|
} from "../../schemaTypes.js";
|
|
60
61
|
import type { SimpleObjectFieldSchema } from "../../simpleSchema.js";
|
|
@@ -194,7 +195,9 @@ export type SimpleKeyMap = ReadonlyMap<
|
|
|
194
195
|
/**
|
|
195
196
|
* Caches the mappings from property keys to stored keys for the provided object field schemas in {@link simpleKeyToFlexKeyCache}.
|
|
196
197
|
*/
|
|
197
|
-
function createFlexKeyMapping(
|
|
198
|
+
function createFlexKeyMapping(
|
|
199
|
+
fields: Record<string, ImplicitAnnotatedFieldSchema>,
|
|
200
|
+
): SimpleKeyMap {
|
|
198
201
|
const keyMap: Map<string | symbol, { storedKey: FieldKey; schema: FieldSchema }> = new Map();
|
|
199
202
|
for (const [propertyKey, fieldSchema] of Object.entries(fields)) {
|
|
200
203
|
const storedKey = getStoredKey(propertyKey, fieldSchema);
|
|
@@ -214,7 +217,7 @@ function createFlexKeyMapping(fields: Record<string, ImplicitFieldSchema>): Simp
|
|
|
214
217
|
* If not provided `{}` is used for the target.
|
|
215
218
|
*/
|
|
216
219
|
function createProxyHandler(
|
|
217
|
-
schema:
|
|
220
|
+
schema: ObjectNodeSchemaPrivate,
|
|
218
221
|
allowAdditionalProperties: boolean,
|
|
219
222
|
): ProxyHandler<TreeNode> {
|
|
220
223
|
// To satisfy 'deepEquals' level scrutiny, the target of the proxy must be an object with the same
|
|
@@ -234,13 +237,13 @@ function createProxyHandler(
|
|
|
234
237
|
debugAssert(() => !flexNode.context.isDisposed() || "FlexTreeNode is disposed");
|
|
235
238
|
const field = flexNode.tryGetField(fieldInfo.storedKey);
|
|
236
239
|
if (field !== undefined) {
|
|
237
|
-
return
|
|
240
|
+
return tryGetTreeNodeForField(field);
|
|
238
241
|
}
|
|
239
242
|
|
|
240
243
|
return undefined;
|
|
241
244
|
}
|
|
242
245
|
|
|
243
|
-
// POJO mode objects don't have TreeNode's
|
|
246
|
+
// POJO mode objects don't have TreeNode's built in members on their targets, so special case them:
|
|
244
247
|
if (propertyKey === typeSchemaSymbol) {
|
|
245
248
|
return schema;
|
|
246
249
|
}
|
|
@@ -302,7 +305,7 @@ function createProxyHandler(
|
|
|
302
305
|
const field = getOrCreateInnerNode(proxy).tryGetField(fieldInfo.storedKey);
|
|
303
306
|
|
|
304
307
|
const p: PropertyDescriptor = {
|
|
305
|
-
value: field === undefined ? undefined :
|
|
308
|
+
value: field === undefined ? undefined : tryGetTreeNodeForField(field),
|
|
306
309
|
writable: true,
|
|
307
310
|
// Report empty fields as own properties so they shadow inherited properties (even when empty) to match TypeScript typing.
|
|
308
311
|
// Make empty fields not enumerable so they get skipped when iterating over an object to better align with
|
|
@@ -372,14 +375,12 @@ export function objectSchema<
|
|
|
372
375
|
// Field set can't be modified after this since derived data is stored in maps.
|
|
373
376
|
Object.freeze(info);
|
|
374
377
|
|
|
375
|
-
const unannotatedInfo = unannotateSchemaRecord(info);
|
|
376
|
-
|
|
377
378
|
// Ensure no collisions between final set of property keys, and final set of stored keys (including those
|
|
378
379
|
// implicitly derived from property keys)
|
|
379
|
-
assertUniqueKeys(identifier,
|
|
380
|
+
assertUniqueKeys(identifier, info);
|
|
380
381
|
|
|
381
382
|
// Performance optimization: cache property key => stored key and schema.
|
|
382
|
-
const flexKeyMap: SimpleKeyMap = createFlexKeyMapping(
|
|
383
|
+
const flexKeyMap: SimpleKeyMap = createFlexKeyMapping(info);
|
|
383
384
|
|
|
384
385
|
const identifierFieldKeys: FieldKey[] = [];
|
|
385
386
|
for (const item of flexKeyMap.values()) {
|
|
@@ -391,6 +392,12 @@ export function objectSchema<
|
|
|
391
392
|
const lazyChildTypes = new Lazy(
|
|
392
393
|
() => new Set(Array.from(flexKeyMap.values(), (f) => [...f.schema.allowedTypeSet]).flat()),
|
|
393
394
|
);
|
|
395
|
+
const lazyAnnotatedTypes = new Lazy(() =>
|
|
396
|
+
Array.from(
|
|
397
|
+
flexKeyMap.values(),
|
|
398
|
+
({ schema }) => normalizeFieldSchema(schema).annotatedAllowedTypesNormalized,
|
|
399
|
+
),
|
|
400
|
+
);
|
|
394
401
|
|
|
395
402
|
let handler: ProxyHandler<object>;
|
|
396
403
|
let customizable: boolean;
|
|
@@ -470,7 +477,7 @@ export function objectSchema<
|
|
|
470
477
|
protected static override oneTimeSetup<T2>(this: typeof TreeNodeValid<T2>): Context {
|
|
471
478
|
// One time initialization that required knowing the most derived type (from this.constructor) and thus has to be lazy.
|
|
472
479
|
customizable = (this as unknown) !== CustomObjectNode;
|
|
473
|
-
const schema = this as unknown as
|
|
480
|
+
const schema = this as unknown as ObjectNodeSchemaPrivate;
|
|
474
481
|
handler = createProxyHandler(schema, customizable);
|
|
475
482
|
unhydratedContext = getUnhydratedContext(schema);
|
|
476
483
|
|
|
@@ -509,6 +516,9 @@ export function objectSchema<
|
|
|
509
516
|
public static get childTypes(): ReadonlySet<TreeNodeSchema> {
|
|
510
517
|
return lazyChildTypes.value;
|
|
511
518
|
}
|
|
519
|
+
public static get childAnnotatedAllowedTypes(): readonly NormalizedAnnotatedAllowedTypes[] {
|
|
520
|
+
return lazyAnnotatedTypes.value;
|
|
521
|
+
}
|
|
512
522
|
public static readonly metadata: NodeSchemaMetadata<TCustomMetadata> = metadata ?? {};
|
|
513
523
|
public static readonly persistedMetadata: JsonCompatibleReadOnlyObject | undefined =
|
|
514
524
|
persistedMetadata;
|
|
@@ -537,7 +547,7 @@ const targetToProxy: WeakMap<object, TreeNode> = new WeakMap();
|
|
|
537
547
|
*/
|
|
538
548
|
function assertUniqueKeys<
|
|
539
549
|
const Name extends number | string,
|
|
540
|
-
const Fields extends RestrictiveStringRecord<
|
|
550
|
+
const Fields extends RestrictiveStringRecord<ImplicitAnnotatedFieldSchema>,
|
|
541
551
|
>(schemaName: Name, fields: Fields): void {
|
|
542
552
|
// Verify that there are no duplicates among the explicitly specified stored keys.
|
|
543
553
|
const explicitStoredKeys = new Set<string>();
|
|
@@ -83,8 +83,11 @@ export const ObjectNodeSchema = {
|
|
|
83
83
|
},
|
|
84
84
|
} as const;
|
|
85
85
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
86
|
+
/**
|
|
87
|
+
* {@link ObjectNodeSchema} with data that is not part of the package-exported API surface.
|
|
88
|
+
*/
|
|
89
|
+
export type ObjectNodeSchemaPrivate = ObjectNodeSchema & ObjectNodeSchemaInternalData;
|
|
90
|
+
|
|
91
|
+
export function isObjectNodeSchema(schema: TreeNodeSchema): schema is ObjectNodeSchemaPrivate {
|
|
89
92
|
return schema.kind === NodeKind.Object;
|
|
90
93
|
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
|
+
* Licensed under the MIT License.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
export { recordSchema } from "./recordNode.js";
|
|
7
|
+
export {
|
|
8
|
+
isRecordNodeSchema,
|
|
9
|
+
type RecordNodeCustomizableSchema,
|
|
10
|
+
type RecordNodeInsertableData,
|
|
11
|
+
type RecordNodePojoEmulationSchema,
|
|
12
|
+
RecordNodeSchema,
|
|
13
|
+
type TreeRecordNode,
|
|
14
|
+
} from "./recordNodeTypes.js";
|