@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
|
@@ -10,11 +10,16 @@ import {
|
|
|
10
10
|
mapSchema,
|
|
11
11
|
type ObjectNodeSchema,
|
|
12
12
|
objectSchema,
|
|
13
|
+
type RecordNodeCustomizableSchema,
|
|
14
|
+
type RecordNodeInsertableData,
|
|
15
|
+
recordSchema,
|
|
16
|
+
type TreeRecordNode,
|
|
13
17
|
} from "../node-kinds/index.js";
|
|
14
18
|
import {
|
|
15
19
|
defaultSchemaFactoryObjectOptions,
|
|
16
20
|
SchemaFactory,
|
|
17
21
|
schemaStatics,
|
|
22
|
+
structuralName,
|
|
18
23
|
type SchemaFactoryObjectOptions,
|
|
19
24
|
type ScopedSchemaName,
|
|
20
25
|
} from "./schemaFactory.js";
|
|
@@ -26,11 +31,19 @@ import type {
|
|
|
26
31
|
NodeSchemaOptionsAlpha,
|
|
27
32
|
} from "../schemaTypes.js";
|
|
28
33
|
import type { RestrictiveStringRecord } from "../../util/index.js";
|
|
29
|
-
import type {
|
|
34
|
+
import type {
|
|
35
|
+
NodeKind,
|
|
36
|
+
TreeNodeSchema,
|
|
37
|
+
TreeNodeSchemaBoth,
|
|
38
|
+
TreeNodeSchemaClass,
|
|
39
|
+
TreeNodeSchemaNonClass,
|
|
40
|
+
WithType,
|
|
41
|
+
} from "../core/index.js";
|
|
30
42
|
import type {
|
|
31
43
|
ArrayNodeCustomizableSchemaUnsafe,
|
|
32
44
|
MapNodeCustomizableSchemaUnsafe,
|
|
33
45
|
System_Unsafe,
|
|
46
|
+
TreeRecordNodeUnsafe,
|
|
34
47
|
} from "./typesUnsafe.js";
|
|
35
48
|
import type { SimpleObjectNodeSchema } from "../simpleSchema.js";
|
|
36
49
|
|
|
@@ -307,6 +320,260 @@ export class SchemaFactoryAlpha<
|
|
|
307
320
|
>;
|
|
308
321
|
}
|
|
309
322
|
|
|
323
|
+
/**
|
|
324
|
+
* Define a structurally typed {@link TreeNodeSchema} for a {@link (TreeRecordNode:interface)}.
|
|
325
|
+
*
|
|
326
|
+
* @param allowedTypes - The types that may appear in the record.
|
|
327
|
+
*
|
|
328
|
+
* @remarks
|
|
329
|
+
* The identifier for this record is defined as a function of the provided types.
|
|
330
|
+
* It is still scoped to this `SchemaFactory`, but multiple calls with the same arguments will return the same
|
|
331
|
+
* schema object, providing somewhat structural typing.
|
|
332
|
+
* This does not support recursive types.
|
|
333
|
+
*
|
|
334
|
+
* If using these structurally named records, other types in this schema builder should avoid names of the form `Record<${string}>`.
|
|
335
|
+
*
|
|
336
|
+
* @example
|
|
337
|
+
* The returned schema should be used as a schema directly:
|
|
338
|
+
* ```typescript
|
|
339
|
+
* const MyRecord = factory.record(factory.number);
|
|
340
|
+
* type MyRecord = NodeFromSchema<typeof Record>;
|
|
341
|
+
* ```
|
|
342
|
+
* Or inline:
|
|
343
|
+
* ```typescript
|
|
344
|
+
* factory.object("Foo", { myRecord: factory.record(factory.number) });
|
|
345
|
+
* ```
|
|
346
|
+
*
|
|
347
|
+
* @privateRemarks
|
|
348
|
+
* The name produced at the type-level here is not as specific as it could be; however, doing type-level sorting and escaping is a real mess.
|
|
349
|
+
* There are cases where not having this full type provided will be less than ideal, since TypeScript's structural types will allow assignment between runtime incompatible types at compile time.
|
|
350
|
+
* For example, attempts to narrow unions of structural records by name won't work.
|
|
351
|
+
* Planned future changes to move to a class based schema system as well as factor function based node construction should mostly avoid these issues,
|
|
352
|
+
* though there may still be some problematic cases even after that work is done.
|
|
353
|
+
*
|
|
354
|
+
* The return value is a class, but its type is intentionally not specific enough to indicate it is a class.
|
|
355
|
+
* This prevents callers of this from sub-classing it, which is unlikely to work well (due to the ease of accidentally giving two different calls to this different subclasses)
|
|
356
|
+
* when working with structural typing.
|
|
357
|
+
*
|
|
358
|
+
* {@label STRUCTURAL}
|
|
359
|
+
*/
|
|
360
|
+
public record<const T extends TreeNodeSchema | readonly TreeNodeSchema[]>(
|
|
361
|
+
allowedTypes: T,
|
|
362
|
+
): TreeNodeSchemaNonClass<
|
|
363
|
+
/* Name */ ScopedSchemaName<TScope, `Record<${string}>`>,
|
|
364
|
+
/* Kind */ NodeKind.Record,
|
|
365
|
+
/* TNode */ TreeRecordNode<T> &
|
|
366
|
+
WithType<ScopedSchemaName<TScope, `Record<${string}>`>, NodeKind.Record>,
|
|
367
|
+
/* TInsertable */ RecordNodeInsertableData<T>,
|
|
368
|
+
/* ImplicitlyConstructable */ true,
|
|
369
|
+
/* Info */ T,
|
|
370
|
+
/* TConstructorExtra */ undefined
|
|
371
|
+
>;
|
|
372
|
+
/**
|
|
373
|
+
* Define (and add to this library) a {@link TreeNodeSchemaClass} for a {@link (TreeRecordNode:interface)}.
|
|
374
|
+
*
|
|
375
|
+
* @param name - Unique identifier for this schema within this factory's scope.
|
|
376
|
+
* @param allowedTypes - The types that may appear in the record.
|
|
377
|
+
*
|
|
378
|
+
* @remarks
|
|
379
|
+
* Like TypeScript `Record`s, record nodes have some potential pitfalls.
|
|
380
|
+
* For example: TypeScript makes assumptions about built-in keys being present (e.g. `toString`, `hasOwnProperty`, etc.).
|
|
381
|
+
* Since these are otherwise valid keys in a record, this can lead to unexpected behavior.
|
|
382
|
+
* To prevent inconsistent behavior, these built-ins are hidden by record nodes.
|
|
383
|
+
* This means that if you try to call these built-ins (e.g. `toString()`) on a record node, you will get an error.
|
|
384
|
+
*
|
|
385
|
+
* In most cases, it is probably preferable to use {@link SchemaFactory.(map:2)} instead.
|
|
386
|
+
*
|
|
387
|
+
* @example
|
|
388
|
+
* ```typescript
|
|
389
|
+
* class NamedRecord extends factory.record("name", factory.number) {}
|
|
390
|
+
* ```
|
|
391
|
+
*
|
|
392
|
+
* {@label NAMED}
|
|
393
|
+
*/
|
|
394
|
+
public record<const Name extends TName, const T extends ImplicitAllowedTypes>(
|
|
395
|
+
name: Name,
|
|
396
|
+
allowedTypes: T,
|
|
397
|
+
): TreeNodeSchemaClass<
|
|
398
|
+
/* Name */ ScopedSchemaName<TScope, Name>,
|
|
399
|
+
/* Kind */ NodeKind.Record,
|
|
400
|
+
/* TNode */ TreeRecordNode<T> & WithType<ScopedSchemaName<TScope, Name>, NodeKind.Record>,
|
|
401
|
+
/* TInsertable */ RecordNodeInsertableData<T>,
|
|
402
|
+
/* ImplicitlyConstructable */ true,
|
|
403
|
+
/* Info */ T,
|
|
404
|
+
/* TConstructorExtra */ undefined
|
|
405
|
+
>;
|
|
406
|
+
/**
|
|
407
|
+
* {@link SchemaFactory.array} implementation.
|
|
408
|
+
*
|
|
409
|
+
* @privateRemarks
|
|
410
|
+
* This should return TreeNodeSchemaBoth: see note on "map" implementation for details.
|
|
411
|
+
*/
|
|
412
|
+
public record<const T extends ImplicitAllowedTypes>(
|
|
413
|
+
nameOrAllowedTypes: TName | ((T & TreeNodeSchema) | readonly TreeNodeSchema[]),
|
|
414
|
+
maybeAllowedTypes?: T,
|
|
415
|
+
): TreeNodeSchema<
|
|
416
|
+
/* Name */ ScopedSchemaName<TScope, string>,
|
|
417
|
+
/* Kind */ NodeKind.Record,
|
|
418
|
+
/* TNode */ TreeRecordNode<T>,
|
|
419
|
+
/* TInsertable */ RecordNodeInsertableData<T>,
|
|
420
|
+
/* ImplicitlyConstructable */ true,
|
|
421
|
+
/* Info */ T
|
|
422
|
+
> {
|
|
423
|
+
if (maybeAllowedTypes === undefined) {
|
|
424
|
+
const types = nameOrAllowedTypes as (T & TreeNodeSchema) | readonly TreeNodeSchema[];
|
|
425
|
+
const fullName = structuralName("Record", types);
|
|
426
|
+
return this.getStructuralType(fullName, types, () =>
|
|
427
|
+
this.namedRecord(
|
|
428
|
+
fullName,
|
|
429
|
+
nameOrAllowedTypes as T,
|
|
430
|
+
/* customizable */ false,
|
|
431
|
+
/* implicitlyConstructable */ true,
|
|
432
|
+
),
|
|
433
|
+
) as TreeNodeSchemaClass<
|
|
434
|
+
/* Name */ ScopedSchemaName<TScope, string>,
|
|
435
|
+
/* Kind */ NodeKind.Record,
|
|
436
|
+
/* TNode */ TreeRecordNode<T>,
|
|
437
|
+
/* TInsertable */ RecordNodeInsertableData<T>,
|
|
438
|
+
/* ImplicitlyConstructable */ true,
|
|
439
|
+
/* Info */ T,
|
|
440
|
+
/* TConstructorExtra */ undefined
|
|
441
|
+
>;
|
|
442
|
+
}
|
|
443
|
+
const out: TreeNodeSchemaBoth<
|
|
444
|
+
/* Name */ ScopedSchemaName<TScope, string>,
|
|
445
|
+
/* Kind */ NodeKind.Record,
|
|
446
|
+
/* TNode */ TreeRecordNode<T>,
|
|
447
|
+
/* TInsertable */ RecordNodeInsertableData<T>,
|
|
448
|
+
/* ImplicitlyConstructable */ true,
|
|
449
|
+
/* Info */ T,
|
|
450
|
+
/* TConstructorExtra */ undefined
|
|
451
|
+
> = this.namedRecord(
|
|
452
|
+
nameOrAllowedTypes as TName,
|
|
453
|
+
maybeAllowedTypes,
|
|
454
|
+
/* customizable */ true,
|
|
455
|
+
/* implicitlyConstructable */ true,
|
|
456
|
+
);
|
|
457
|
+
return out;
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
/**
|
|
461
|
+
* Define a {@link TreeNodeSchema} for a {@link (TreeArrayNode:interface)}.
|
|
462
|
+
*
|
|
463
|
+
* @param name - Unique identifier for this schema within this factory's scope.
|
|
464
|
+
*
|
|
465
|
+
* @remarks
|
|
466
|
+
* This is not intended to be used directly, use the overload of `array` which takes a name instead.
|
|
467
|
+
* This is only public to work around a compiler limitation.
|
|
468
|
+
*/
|
|
469
|
+
private namedRecord<
|
|
470
|
+
Name extends TName | string,
|
|
471
|
+
const T extends ImplicitAllowedTypes,
|
|
472
|
+
const ImplicitlyConstructable extends boolean,
|
|
473
|
+
>(
|
|
474
|
+
name: Name,
|
|
475
|
+
allowedTypes: T,
|
|
476
|
+
customizable: boolean,
|
|
477
|
+
implicitlyConstructable: ImplicitlyConstructable,
|
|
478
|
+
): TreeNodeSchemaBoth<
|
|
479
|
+
/* Name */ ScopedSchemaName<TScope, Name>,
|
|
480
|
+
/* Kind */ NodeKind.Record,
|
|
481
|
+
/* TNode */ TreeRecordNode<T> &
|
|
482
|
+
WithType<ScopedSchemaName<TScope, string>, NodeKind.Record>,
|
|
483
|
+
/* TInsertable */ RecordNodeInsertableData<T>,
|
|
484
|
+
/* ImplicitlyConstructable */ ImplicitlyConstructable,
|
|
485
|
+
/* Info */ T,
|
|
486
|
+
/* TConstructorExtra */ undefined
|
|
487
|
+
> {
|
|
488
|
+
const record = recordSchema({
|
|
489
|
+
identifier: this.scoped2(name),
|
|
490
|
+
info: allowedTypes,
|
|
491
|
+
customizable,
|
|
492
|
+
implicitlyConstructable,
|
|
493
|
+
});
|
|
494
|
+
|
|
495
|
+
return record as TreeNodeSchemaBoth<
|
|
496
|
+
/* Name */ ScopedSchemaName<TScope, Name>,
|
|
497
|
+
/* Kind */ NodeKind.Record,
|
|
498
|
+
/* TNode */ TreeRecordNode<T> &
|
|
499
|
+
WithType<ScopedSchemaName<TScope, string>, NodeKind.Record>,
|
|
500
|
+
/* TInsertable */ RecordNodeInsertableData<T>,
|
|
501
|
+
/* ImplicitlyConstructable */ ImplicitlyConstructable,
|
|
502
|
+
/* Info */ T,
|
|
503
|
+
/* TConstructorExtra */ undefined
|
|
504
|
+
>;
|
|
505
|
+
}
|
|
506
|
+
|
|
507
|
+
/**
|
|
508
|
+
* Define (and add to this library) a {@link TreeNodeSchemaClass} for a {@link (TreeRecordNode:interface)}.
|
|
509
|
+
*
|
|
510
|
+
* @param name - Unique identifier for this schema within this factory's scope.
|
|
511
|
+
* @param allowedTypes - The types that may appear in the record.
|
|
512
|
+
* @param options - Additional options for the schema.
|
|
513
|
+
*
|
|
514
|
+
* @example
|
|
515
|
+
* ```typescript
|
|
516
|
+
* class NamedRecord extends factory.recordAlpha("name", factory.number) {}
|
|
517
|
+
* ```
|
|
518
|
+
*/
|
|
519
|
+
public recordAlpha<
|
|
520
|
+
const Name extends TName,
|
|
521
|
+
const T extends ImplicitAnnotatedAllowedTypes,
|
|
522
|
+
const TCustomMetadata = unknown,
|
|
523
|
+
>(
|
|
524
|
+
name: Name,
|
|
525
|
+
allowedTypes: T,
|
|
526
|
+
options?: NodeSchemaOptionsAlpha<TCustomMetadata>,
|
|
527
|
+
): RecordNodeCustomizableSchema<ScopedSchemaName<TScope, Name>, T, true, TCustomMetadata> {
|
|
528
|
+
return recordSchema({
|
|
529
|
+
identifier: this.scoped2(name),
|
|
530
|
+
info: allowedTypes,
|
|
531
|
+
customizable: true,
|
|
532
|
+
implicitlyConstructable: true,
|
|
533
|
+
metadata: options?.metadata,
|
|
534
|
+
persistedMetadata: options?.persistedMetadata,
|
|
535
|
+
});
|
|
536
|
+
}
|
|
537
|
+
|
|
538
|
+
/**
|
|
539
|
+
* {@link SchemaFactoryAlpha.(record:2)} except tweaked to work better for recursive types.
|
|
540
|
+
* Use with {@link ValidateRecursiveSchema} for improved type safety.
|
|
541
|
+
* @remarks
|
|
542
|
+
* This version of `SchemaFactory.record` uses the same workarounds as {@link SchemaFactory.objectRecursive}.
|
|
543
|
+
* See {@link ValidateRecursiveSchema} for additional information about using recursive schema.
|
|
544
|
+
*/
|
|
545
|
+
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
|
|
546
|
+
public recordRecursive<
|
|
547
|
+
Name extends TName,
|
|
548
|
+
const T extends System_Unsafe.ImplicitAllowedTypesUnsafe,
|
|
549
|
+
>(name: Name, allowedTypes: T) {
|
|
550
|
+
const RecordSchema = this.namedRecord(
|
|
551
|
+
name,
|
|
552
|
+
allowedTypes as T & ImplicitAllowedTypes,
|
|
553
|
+
/* customizable */ true,
|
|
554
|
+
// Setting this to true seems to work ok currently, but not for other node kinds.
|
|
555
|
+
// Supporting this could be fragile and might break other future changes, so it's being kept as false for now.
|
|
556
|
+
/* implicitlyConstructable */ false,
|
|
557
|
+
);
|
|
558
|
+
|
|
559
|
+
return RecordSchema as TreeNodeSchemaClass<
|
|
560
|
+
/* Name */ ScopedSchemaName<TScope, Name>,
|
|
561
|
+
/* Kind */ NodeKind.Record,
|
|
562
|
+
/* TNode */ TreeRecordNodeUnsafe<T> &
|
|
563
|
+
WithType<ScopedSchemaName<TScope, Name>, NodeKind.Record>,
|
|
564
|
+
/* TInsertable */ {
|
|
565
|
+
// Ideally this would be
|
|
566
|
+
// RestrictiveStringRecord<InsertableTreeNodeFromImplicitAllowedTypesUnsafe<T>>,
|
|
567
|
+
// but doing so breaks recursive types.
|
|
568
|
+
// Instead we do a less nice version:
|
|
569
|
+
readonly [P in string]: System_Unsafe.InsertableTreeNodeFromImplicitAllowedTypesUnsafe<T>;
|
|
570
|
+
},
|
|
571
|
+
/* ImplicitlyConstructable */ false,
|
|
572
|
+
/* Info */ T,
|
|
573
|
+
/* TConstructorExtra */ undefined
|
|
574
|
+
>;
|
|
575
|
+
}
|
|
576
|
+
|
|
310
577
|
/**
|
|
311
578
|
* Create a {@link SchemaFactory} with a {@link SchemaFactory.scope|scope} which is a combination of this factory's scope and the provided name.
|
|
312
579
|
* @remarks
|
|
@@ -168,7 +168,7 @@ export type ValidateRecursiveSchemaTemplate<T extends TreeNodeSchema> = TreeNode
|
|
|
168
168
|
// Name: This validator places no restrictions on the name other than that it's a string (as required by TreeNodeSchemaClass).
|
|
169
169
|
string,
|
|
170
170
|
// NodeKind: These are the NodeKinds which currently can be used recursively.
|
|
171
|
-
NodeKind.Array | NodeKind.Map | NodeKind.Object,
|
|
171
|
+
NodeKind.Array | NodeKind.Map | NodeKind.Object | NodeKind.Record,
|
|
172
172
|
// TNode: The produced node API. This is pretty minimal validation: more could be added if similar to how TInsertable works below if needed.
|
|
173
173
|
TreeNode & WithType<T["identifier"], T["kind"]>,
|
|
174
174
|
// TInsertable: What can be passed to the constructor. This should be enough to catch most issues with incorrect schema.
|
|
@@ -183,6 +183,9 @@ export type ValidateRecursiveSchemaTemplate<T extends TreeNodeSchema> = TreeNode
|
|
|
183
183
|
[NodeKind.Map]: T["info"] extends ImplicitAllowedTypes
|
|
184
184
|
? Iterable<[string, InsertableTreeNodeFromImplicitAllowedTypes<T["info"]>]>
|
|
185
185
|
: unknown;
|
|
186
|
+
[NodeKind.Record]: {
|
|
187
|
+
readonly [P in string]: InsertableTreeNodeFromImplicitAllowedTypes<T>;
|
|
188
|
+
};
|
|
186
189
|
[NodeKind.Leaf]: unknown;
|
|
187
190
|
}[T["kind"]],
|
|
188
191
|
// ImplicitlyConstructable: recursive types are currently not implicitly constructable.
|
|
@@ -192,6 +195,7 @@ export type ValidateRecursiveSchemaTemplate<T extends TreeNodeSchema> = TreeNode
|
|
|
192
195
|
[NodeKind.Object]: RestrictiveStringRecord<ImplicitFieldSchema>;
|
|
193
196
|
[NodeKind.Array]: ImplicitAllowedTypes;
|
|
194
197
|
[NodeKind.Map]: ImplicitAllowedTypes;
|
|
198
|
+
[NodeKind.Record]: ImplicitAllowedTypes;
|
|
195
199
|
[NodeKind.Leaf]: unknown;
|
|
196
200
|
}[T["kind"]]
|
|
197
201
|
>;
|
|
@@ -116,6 +116,12 @@ function generateNode(
|
|
|
116
116
|
generateAllowedTypes(schema.allowedTypesIdentifiers, context),
|
|
117
117
|
{ metadata: schema.metadata },
|
|
118
118
|
);
|
|
119
|
+
case NodeKind.Record:
|
|
120
|
+
return factory.recordAlpha(
|
|
121
|
+
id,
|
|
122
|
+
generateAllowedTypes(schema.allowedTypesIdentifiers, context),
|
|
123
|
+
{ metadata: schema.metadata },
|
|
124
|
+
);
|
|
119
125
|
case NodeKind.Leaf:
|
|
120
126
|
return (
|
|
121
127
|
SchemaFactoryAlpha.leaves.find((leaf) => leaf.identifier === id) ??
|
|
@@ -18,17 +18,24 @@ import type {
|
|
|
18
18
|
JsonObjectNodeSchema,
|
|
19
19
|
JsonTreeSchema,
|
|
20
20
|
JsonLeafSchemaType,
|
|
21
|
+
JsonRecordNodeSchema,
|
|
21
22
|
} from "./jsonSchema.js";
|
|
22
23
|
import { FieldKind } from "../schemaTypes.js";
|
|
23
24
|
import type {
|
|
24
25
|
SimpleArrayNodeSchema,
|
|
25
26
|
SimpleLeafNodeSchema,
|
|
26
27
|
SimpleMapNodeSchema,
|
|
28
|
+
SimpleRecordNodeSchema,
|
|
27
29
|
} from "../simpleSchema.js";
|
|
28
30
|
import { NodeKind, type TreeNodeSchema } from "../core/index.js";
|
|
29
31
|
import type { TreeSchema } from "./configuration.js";
|
|
30
32
|
import type { TreeSchemaEncodingOptions } from "./getJsonSchema.js";
|
|
31
|
-
import {
|
|
33
|
+
import {
|
|
34
|
+
ArrayNodeSchema,
|
|
35
|
+
isMapNodeSchema,
|
|
36
|
+
isRecordNodeSchema,
|
|
37
|
+
ObjectNodeSchema,
|
|
38
|
+
} from "../node-kinds/index.js";
|
|
32
39
|
import { LeafNodeSchema } from "../leafNodeSchema.js";
|
|
33
40
|
|
|
34
41
|
/**
|
|
@@ -88,8 +95,8 @@ function convertNodeSchema(
|
|
|
88
95
|
): JsonNodeSchema {
|
|
89
96
|
if (schema instanceof ArrayNodeSchema) {
|
|
90
97
|
return convertArrayNodeSchema(schema);
|
|
91
|
-
} else if (schema
|
|
92
|
-
return
|
|
98
|
+
} else if (isMapNodeSchema(schema) || isRecordNodeSchema(schema)) {
|
|
99
|
+
return convertRecordLikeNodeSchema(schema);
|
|
93
100
|
} else if (schema instanceof ObjectNodeSchema) {
|
|
94
101
|
return convertObjectNodeSchema(schema, options);
|
|
95
102
|
} else if (schema instanceof LeafNodeSchema) {
|
|
@@ -191,15 +198,17 @@ export function convertObjectNodeSchema(
|
|
|
191
198
|
return transformedNode;
|
|
192
199
|
}
|
|
193
200
|
|
|
194
|
-
function
|
|
201
|
+
function convertRecordLikeNodeSchema(
|
|
202
|
+
schema: SimpleRecordNodeSchema | SimpleMapNodeSchema,
|
|
203
|
+
): JsonMapNodeSchema | JsonRecordNodeSchema {
|
|
195
204
|
const allowedTypes: JsonSchemaRef[] = [];
|
|
196
205
|
schema.allowedTypesIdentifiers.forEach((type) => {
|
|
197
206
|
allowedTypes.push(createSchemaRef(type));
|
|
198
207
|
});
|
|
199
208
|
|
|
200
|
-
const output
|
|
209
|
+
const output = {
|
|
201
210
|
type: "object",
|
|
202
|
-
_treeNodeSchemaKind:
|
|
211
|
+
_treeNodeSchemaKind: schema.kind,
|
|
203
212
|
patternProperties: {
|
|
204
213
|
"^.*$": hasSingle(allowedTypes)
|
|
205
214
|
? allowedTypes[0]
|
|
@@ -207,7 +216,7 @@ function convertMapNodeSchema(schema: SimpleMapNodeSchema): JsonMapNodeSchema {
|
|
|
207
216
|
anyOf: allowedTypes,
|
|
208
217
|
},
|
|
209
218
|
},
|
|
210
|
-
};
|
|
219
|
+
} as const;
|
|
211
220
|
|
|
212
221
|
copyProperty(schema.metadata, "description", output);
|
|
213
222
|
|
|
@@ -85,8 +85,8 @@ export interface TreeChangeEventsBeta<TNode extends TreeNode = TreeNode>
|
|
|
85
85
|
*/
|
|
86
86
|
nodeChanged: (
|
|
87
87
|
data: NodeChangedData<TNode> &
|
|
88
|
-
//
|
|
89
|
-
(TNode extends WithType<string, NodeKind.Map | NodeKind.Object>
|
|
88
|
+
// Make the properties of object, map, and record nodes required:
|
|
89
|
+
(TNode extends WithType<string, NodeKind.Map | NodeKind.Object | NodeKind.Record>
|
|
90
90
|
? Required<Pick<NodeChangedData<TNode>, "changedProperties">>
|
|
91
91
|
: unknown),
|
|
92
92
|
) => void;
|
|
@@ -38,8 +38,8 @@ import {
|
|
|
38
38
|
getOrCreateInnerNode,
|
|
39
39
|
} from "../core/index.js";
|
|
40
40
|
import type { TreeChangeEvents } from "./treeChangeEvents.js";
|
|
41
|
-
import { isObjectNodeSchema } from "../node-kinds/index.js";
|
|
42
|
-
import {
|
|
41
|
+
import { isArrayNodeSchema, isObjectNodeSchema } from "../node-kinds/index.js";
|
|
42
|
+
import { tryGetTreeNodeForField } from "../getTreeNodeForField.js";
|
|
43
43
|
|
|
44
44
|
/**
|
|
45
45
|
* Provides various functions for analyzing {@link TreeNode}s.
|
|
@@ -83,6 +83,9 @@ export interface TreeNodeApi {
|
|
|
83
83
|
* Return the node under which this node resides in the tree (or undefined if this is a root node of the tree).
|
|
84
84
|
*
|
|
85
85
|
* @throws A {@link @fluidframework/telemetry-utils#UsageError} if the node has been {@link TreeStatus.Deleted | deleted}.
|
|
86
|
+
*
|
|
87
|
+
* @see {@link (TreeAlpha:interface).child}
|
|
88
|
+
* @see {@link (TreeAlpha:interface).children}
|
|
86
89
|
*/
|
|
87
90
|
parent(node: TreeNode): TreeNode | undefined;
|
|
88
91
|
|
|
@@ -190,7 +193,7 @@ export const treeNodeApi: TreeNodeApi = {
|
|
|
190
193
|
);
|
|
191
194
|
listener({ changedProperties });
|
|
192
195
|
});
|
|
193
|
-
} else if (nodeSchema
|
|
196
|
+
} else if (isArrayNodeSchema(nodeSchema)) {
|
|
194
197
|
return kernel.events.on("childrenChangedAfterBatch", () => {
|
|
195
198
|
listener({ changedProperties: undefined });
|
|
196
199
|
});
|
|
@@ -316,7 +319,7 @@ export function getIdentifierFromNode(
|
|
|
316
319
|
const key = identifierFieldKeys[0] ?? oob();
|
|
317
320
|
const identifierField = flexNode.tryGetField(key);
|
|
318
321
|
assert(identifierField !== undefined, 0xbb5 /* missing identifier field */);
|
|
319
|
-
const identifierValue =
|
|
322
|
+
const identifierValue = tryGetTreeNodeForField(identifierField);
|
|
320
323
|
assert(typeof identifierValue === "string", 0xbb6 /* identifier not a string */);
|
|
321
324
|
|
|
322
325
|
const context = flexNode.context;
|
|
@@ -527,3 +527,18 @@ export interface MapNodeCustomizableSchemaUnsafe<
|
|
|
527
527
|
TCustomMetadata
|
|
528
528
|
>,
|
|
529
529
|
SimpleMapNodeSchema<TCustomMetadata> {}
|
|
530
|
+
|
|
531
|
+
/**
|
|
532
|
+
* {@link Unenforced} version of {@link TreeRecordNode}.
|
|
533
|
+
* @remarks
|
|
534
|
+
* Do not use this type directly: it's only needed in the implementation of generic logic which define recursive schema, not when using recursive schema.
|
|
535
|
+
* @system @sealed @alpha
|
|
536
|
+
*/
|
|
537
|
+
export interface TreeRecordNodeUnsafe<
|
|
538
|
+
TAllowedTypes extends System_Unsafe.ImplicitAllowedTypesUnsafe,
|
|
539
|
+
> extends Record<string, System_Unsafe.TreeNodeFromImplicitAllowedTypesUnsafe<TAllowedTypes>>,
|
|
540
|
+
TreeNode {
|
|
541
|
+
[Symbol.iterator](): IterableIterator<
|
|
542
|
+
[string, System_Unsafe.TreeNodeFromImplicitAllowedTypesUnsafe<TAllowedTypes>]
|
|
543
|
+
>;
|
|
544
|
+
}
|
|
@@ -13,10 +13,16 @@ import type {
|
|
|
13
13
|
SimpleNodeSchema,
|
|
14
14
|
SimpleObjectFieldSchema,
|
|
15
15
|
SimpleObjectNodeSchema,
|
|
16
|
+
SimpleRecordNodeSchema,
|
|
16
17
|
SimpleTreeSchema,
|
|
17
18
|
} from "../simpleSchema.js";
|
|
18
19
|
import { NodeKind } from "../core/index.js";
|
|
19
|
-
import {
|
|
20
|
+
import {
|
|
21
|
+
ArrayNodeSchema,
|
|
22
|
+
MapNodeSchema,
|
|
23
|
+
ObjectNodeSchema,
|
|
24
|
+
RecordNodeSchema,
|
|
25
|
+
} from "../node-kinds/index.js";
|
|
20
26
|
import { walkFieldSchema } from "../walkFieldSchema.js";
|
|
21
27
|
import { LeafNodeSchema } from "../leafNodeSchema.js";
|
|
22
28
|
|
|
@@ -49,7 +55,8 @@ export function toSimpleTreeSchema(
|
|
|
49
55
|
nodeSchema instanceof ArrayNodeSchema ||
|
|
50
56
|
nodeSchema instanceof MapNodeSchema ||
|
|
51
57
|
nodeSchema instanceof LeafNodeSchema ||
|
|
52
|
-
nodeSchema instanceof ObjectNodeSchema
|
|
58
|
+
nodeSchema instanceof ObjectNodeSchema ||
|
|
59
|
+
nodeSchema instanceof RecordNodeSchema,
|
|
53
60
|
0xb60 /* Invalid schema */,
|
|
54
61
|
);
|
|
55
62
|
const outSchema = copySchemaObjects ? copySimpleNodeSchema(nodeSchema) : nodeSchema;
|
|
@@ -82,7 +89,8 @@ function copySimpleNodeSchema(schema: SimpleNodeSchema): SimpleNodeSchema {
|
|
|
82
89
|
return copySimpleLeafSchema(schema);
|
|
83
90
|
case NodeKind.Array:
|
|
84
91
|
case NodeKind.Map:
|
|
85
|
-
|
|
92
|
+
case NodeKind.Record:
|
|
93
|
+
return copySimpleSchemaWithAllowedTypes(schema);
|
|
86
94
|
case NodeKind.Object:
|
|
87
95
|
return copySimpleObjectSchema(schema);
|
|
88
96
|
default:
|
|
@@ -99,9 +107,9 @@ function copySimpleLeafSchema(schema: SimpleLeafNodeSchema): SimpleLeafNodeSchem
|
|
|
99
107
|
};
|
|
100
108
|
}
|
|
101
109
|
|
|
102
|
-
function
|
|
103
|
-
schema: SimpleMapNodeSchema | SimpleArrayNodeSchema,
|
|
104
|
-
): SimpleMapNodeSchema | SimpleArrayNodeSchema {
|
|
110
|
+
function copySimpleSchemaWithAllowedTypes(
|
|
111
|
+
schema: SimpleMapNodeSchema | SimpleArrayNodeSchema | SimpleRecordNodeSchema,
|
|
112
|
+
): SimpleMapNodeSchema | SimpleArrayNodeSchema | SimpleRecordNodeSchema {
|
|
105
113
|
return {
|
|
106
114
|
kind: schema.kind,
|
|
107
115
|
allowedTypesIdentifiers: schema.allowedTypesIdentifiers,
|
|
@@ -10,7 +10,7 @@ import type {
|
|
|
10
10
|
} from "../../feature-libraries/index.js";
|
|
11
11
|
import { brand } from "../../util/index.js";
|
|
12
12
|
|
|
13
|
-
import type { TreeNodeSchema } from "./treeNodeSchema.js";
|
|
13
|
+
import type { NormalizedAnnotatedAllowedTypes, TreeNodeSchema } from "./treeNodeSchema.js";
|
|
14
14
|
import { walkAllowedTypes } from "./walkSchema.js";
|
|
15
15
|
|
|
16
16
|
/**
|
|
@@ -52,7 +52,7 @@ export class Context {
|
|
|
52
52
|
* Since this walks the schema, it must not be invoked during schema declaration or schema forward references could fail to be resolved.
|
|
53
53
|
*/
|
|
54
54
|
public constructor(
|
|
55
|
-
rootSchema:
|
|
55
|
+
rootSchema: NormalizedAnnotatedAllowedTypes,
|
|
56
56
|
public readonly flexContext: FlexTreeContext,
|
|
57
57
|
) {
|
|
58
58
|
const schema: Map<TreeNodeSchemaIdentifier, TreeNodeSchema> = new Map();
|
|
@@ -71,7 +71,7 @@ export class Context {
|
|
|
71
71
|
*/
|
|
72
72
|
export class HydratedContext extends Context {
|
|
73
73
|
public constructor(
|
|
74
|
-
rootSchema:
|
|
74
|
+
rootSchema: NormalizedAnnotatedAllowedTypes,
|
|
75
75
|
public override readonly flexContext: FlexTreeHydratedContext,
|
|
76
76
|
) {
|
|
77
77
|
super(rootSchema, flexContext);
|
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import type { TreeValue } from "../../core/index.js";
|
|
7
|
+
import { isFlexTreeNode, type FlexTreeUnknownUnboxed } from "../../feature-libraries/index.js";
|
|
8
|
+
import type { TreeLeafValue } from "../schemaTypes.js";
|
|
7
9
|
|
|
8
10
|
import type { TreeNode } from "./treeNode.js";
|
|
9
11
|
import {
|
|
@@ -34,3 +36,15 @@ export function getOrCreateNodeFromInnerNode(flexNode: InnerNode): TreeNode | Tr
|
|
|
34
36
|
|
|
35
37
|
return createTreeNodeFromInner(flexNode);
|
|
36
38
|
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Returns the TreeNode or TreeValue for the provided {@link FlexTreeUnknownUnboxed}.
|
|
42
|
+
* This will allocate a new one if needed, and otherwise return one from cache.
|
|
43
|
+
* @remarks
|
|
44
|
+
* This supports both hydrated and unhydrated nodes.
|
|
45
|
+
*/
|
|
46
|
+
export function getOrCreateNodeFromInnerUnboxedNode(
|
|
47
|
+
flexTree: FlexTreeUnknownUnboxed,
|
|
48
|
+
): TreeNode | TreeLeafValue {
|
|
49
|
+
return isFlexTreeNode(flexTree) ? getOrCreateNodeFromInnerNode(flexTree) : flexTree;
|
|
50
|
+
}
|
|
@@ -31,11 +31,18 @@ export {
|
|
|
31
31
|
type TreeNodeSchemaNonClass,
|
|
32
32
|
type TreeNodeSchemaCore,
|
|
33
33
|
type TreeNodeSchemaBoth,
|
|
34
|
+
type AnnotatedAllowedType,
|
|
35
|
+
type NormalizedAnnotatedAllowedTypes,
|
|
36
|
+
isAnnotatedAllowedTypes,
|
|
34
37
|
} from "./treeNodeSchema.js";
|
|
35
38
|
export { walkAllowedTypes, type SchemaVisitor } from "./walkSchema.js";
|
|
36
39
|
export { Context, HydratedContext, SimpleContextSlot } from "./context.js";
|
|
37
|
-
export { getOrCreateNodeFromInnerNode } from "./getOrCreateNode.js";
|
|
38
40
|
export {
|
|
41
|
+
getOrCreateNodeFromInnerNode,
|
|
42
|
+
getOrCreateNodeFromInnerUnboxedNode,
|
|
43
|
+
} from "./getOrCreateNode.js";
|
|
44
|
+
export {
|
|
45
|
+
UnhydratedFlexTreeField,
|
|
39
46
|
UnhydratedFlexTreeNode,
|
|
40
47
|
UnhydratedSequenceField,
|
|
41
48
|
UnhydratedContext,
|
|
@@ -372,7 +372,7 @@ export function splitInnerNodeType(
|
|
|
372
372
|
): asserts innerNode is UnhydratedFlexTreeNode | HydratedFlexTreeNode {
|
|
373
373
|
assert(
|
|
374
374
|
innerNode instanceof UnhydratedFlexTreeNode || innerNode.isHydrated(),
|
|
375
|
-
|
|
375
|
+
0xbc8 /* Invalid inner node type */,
|
|
376
376
|
);
|
|
377
377
|
}
|
|
378
378
|
|