@fluidframework/tree 2.43.0 → 2.50.0
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 +100 -0
- package/api-report/tree.alpha.api.md +73 -16
- package/api-report/tree.beta.api.md +9 -3
- package/api-report/tree.legacy.alpha.api.md +8 -2
- package/api-report/tree.legacy.public.api.md +8 -2
- package/api-report/tree.public.api.md +8 -2
- package/dist/alpha.d.ts +9 -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 +0 -2
- 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/treeAlpha.d.ts.map +1 -1
- package/dist/shared-tree/treeAlpha.js +3 -1
- package/dist/shared-tree/treeAlpha.js.map +1 -1
- package/dist/shared-tree-core/defaultResubmitMachine.d.ts +8 -12
- package/dist/shared-tree-core/defaultResubmitMachine.d.ts.map +1 -1
- package/dist/shared-tree-core/defaultResubmitMachine.js +54 -46
- package/dist/shared-tree-core/defaultResubmitMachine.js.map +1 -1
- package/dist/shared-tree-core/resubmitMachine.d.ts +6 -0
- package/dist/shared-tree-core/resubmitMachine.d.ts.map +1 -1
- package/dist/shared-tree-core/resubmitMachine.js.map +1 -1
- package/dist/shared-tree-core/sharedTreeCore.d.ts +1 -0
- package/dist/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
- package/dist/shared-tree-core/sharedTreeCore.js +16 -3
- package/dist/shared-tree-core/sharedTreeCore.js.map +1 -1
- package/dist/simple-tree/api/configuration.d.ts.map +1 -1
- package/dist/simple-tree/api/configuration.js +49 -17
- 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 +2 -2
- package/dist/simple-tree/api/index.d.ts.map +1 -1
- 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.js +1 -1
- 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/index.d.ts +1 -1
- package/dist/simple-tree/core/index.d.ts.map +1 -1
- package/dist/simple-tree/core/index.js +2 -1
- package/dist/simple-tree/core/index.js.map +1 -1
- package/dist/simple-tree/core/treeNodeSchema.d.ts +5 -1
- package/dist/simple-tree/core/treeNodeSchema.d.ts.map +1 -1
- package/dist/simple-tree/core/treeNodeSchema.js +4 -0
- package/dist/simple-tree/core/treeNodeSchema.js.map +1 -1
- package/dist/simple-tree/index.d.ts +3 -3
- package/dist/simple-tree/index.d.ts.map +1 -1
- package/dist/simple-tree/index.js +3 -1
- package/dist/simple-tree/index.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/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.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/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.map +1 -1
- package/dist/simple-tree/toStoredSchema.js +4 -2
- package/dist/simple-tree/toStoredSchema.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/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 +9 -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 +0 -2
- 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/treeAlpha.d.ts.map +1 -1
- package/lib/shared-tree/treeAlpha.js +3 -1
- package/lib/shared-tree/treeAlpha.js.map +1 -1
- package/lib/shared-tree-core/defaultResubmitMachine.d.ts +8 -12
- package/lib/shared-tree-core/defaultResubmitMachine.d.ts.map +1 -1
- package/lib/shared-tree-core/defaultResubmitMachine.js +55 -47
- package/lib/shared-tree-core/defaultResubmitMachine.js.map +1 -1
- package/lib/shared-tree-core/resubmitMachine.d.ts +6 -0
- package/lib/shared-tree-core/resubmitMachine.d.ts.map +1 -1
- package/lib/shared-tree-core/resubmitMachine.js.map +1 -1
- package/lib/shared-tree-core/sharedTreeCore.d.ts +1 -0
- package/lib/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
- package/lib/shared-tree-core/sharedTreeCore.js +16 -3
- package/lib/shared-tree-core/sharedTreeCore.js.map +1 -1
- package/lib/simple-tree/api/configuration.d.ts.map +1 -1
- package/lib/simple-tree/api/configuration.js +51 -19
- 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 +2 -2
- package/lib/simple-tree/api/index.d.ts.map +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.js +2 -2
- 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/index.d.ts +1 -1
- package/lib/simple-tree/core/index.d.ts.map +1 -1
- package/lib/simple-tree/core/index.js +1 -1
- package/lib/simple-tree/core/index.js.map +1 -1
- package/lib/simple-tree/core/treeNodeSchema.d.ts +5 -1
- package/lib/simple-tree/core/treeNodeSchema.d.ts.map +1 -1
- package/lib/simple-tree/core/treeNodeSchema.js +4 -0
- package/lib/simple-tree/core/treeNodeSchema.js.map +1 -1
- package/lib/simple-tree/index.d.ts +3 -3
- package/lib/simple-tree/index.d.ts.map +1 -1
- package/lib/simple-tree/index.js +1 -1
- package/lib/simple-tree/index.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/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.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/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.map +1 -1
- package/lib/simple-tree/toStoredSchema.js +4 -2
- package/lib/simple-tree/toStoredSchema.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/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 +34 -22
- 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 +0 -2
- 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 +9 -0
- package/src/jsonDomainSchema.ts +3 -3
- package/src/packageVersion.ts +1 -1
- package/src/shared-tree/treeAlpha.ts +3 -1
- package/src/shared-tree-core/defaultResubmitMachine.ts +99 -52
- package/src/shared-tree-core/resubmitMachine.ts +7 -0
- package/src/shared-tree-core/sharedTreeCore.ts +18 -6
- package/src/simple-tree/api/configuration.ts +73 -19
- package/src/simple-tree/api/customTree.ts +3 -3
- package/src/simple-tree/api/index.ts +3 -0
- 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 +2 -2
- package/src/simple-tree/api/typesUnsafe.ts +15 -0
- package/src/simple-tree/api/viewSchemaToSimpleSchema.ts +14 -6
- package/src/simple-tree/core/index.ts +1 -0
- package/src/simple-tree/core/treeNodeSchema.ts +8 -4
- package/src/simple-tree/index.ts +11 -0
- package/src/simple-tree/node-kinds/index.ts +11 -0
- package/src/simple-tree/node-kinds/object/index.ts +5 -1
- package/src/simple-tree/node-kinds/object/objectNode.ts +3 -2
- 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/simpleSchema.ts +19 -1
- package/src/simple-tree/toStoredSchema.ts +4 -2
- package/src/simple-tree/unhydratedFlexTreeFromInsertable.ts +83 -40
- package/src/tableSchema.ts +27 -8
- package/src/util/brandedMap.ts +0 -2
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
+
import type { IFluidHandle } from "@fluidframework/core-interfaces";
|
|
6
7
|
import { assert, fail, unreachableCase } from "@fluidframework/core-utils/internal";
|
|
7
8
|
import { UsageError } from "@fluidframework/telemetry-utils/internal";
|
|
8
9
|
import { isFluidHandle } from "@fluidframework/runtime-utils/internal";
|
|
@@ -28,28 +29,39 @@ import {
|
|
|
28
29
|
type TreeLeafValue,
|
|
29
30
|
extractFieldProvider,
|
|
30
31
|
type ContextualFieldProvider,
|
|
32
|
+
unannotateImplicitAllowedTypes,
|
|
31
33
|
} from "./schemaTypes.js";
|
|
32
34
|
import {
|
|
35
|
+
createField,
|
|
33
36
|
getKernel,
|
|
34
37
|
isTreeNode,
|
|
35
38
|
NodeKind,
|
|
36
39
|
type TreeNode,
|
|
37
40
|
type TreeNodeSchema,
|
|
38
41
|
type Unhydrated,
|
|
42
|
+
type UnhydratedFlexTreeField,
|
|
39
43
|
UnhydratedFlexTreeNode,
|
|
40
44
|
UnhydratedSequenceField,
|
|
41
45
|
} from "./core/index.js";
|
|
46
|
+
import { getUnhydratedContext } from "./createContext.js";
|
|
47
|
+
import { convertFieldKind } from "./toStoredSchema.js";
|
|
48
|
+
|
|
42
49
|
// Required to prevent the introduction of new circular dependencies
|
|
43
50
|
// TODO: Having the schema provide their own policy functions for compatibility which
|
|
44
|
-
// unhydratedFlexTreeFromInsertable invokes instead of manually handling each kind would remove this bad
|
|
51
|
+
// `unhydratedFlexTreeFromInsertable` invokes instead of manually handling each kind would remove this bad
|
|
45
52
|
// dependency, and reduce coupling.
|
|
46
|
-
|
|
47
|
-
import {
|
|
48
|
-
import type
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
+
/* eslint-disable import/no-internal-modules */
|
|
54
|
+
import { isArrayNodeSchema, type ArrayNodeSchema } from "./node-kinds/array/arrayNodeTypes.js";
|
|
55
|
+
import { isMapNodeSchema, type MapNodeSchema } from "./node-kinds/map/mapNodeTypes.js";
|
|
56
|
+
import {
|
|
57
|
+
isObjectNodeSchema,
|
|
58
|
+
type ObjectNodeSchemaPrivate,
|
|
59
|
+
} from "./node-kinds/object/objectNodeTypes.js";
|
|
60
|
+
import {
|
|
61
|
+
isRecordNodeSchema,
|
|
62
|
+
type RecordNodeSchema,
|
|
63
|
+
} from "./node-kinds/record/recordNodeTypes.js";
|
|
64
|
+
/* eslint-enable import/no-internal-modules */
|
|
53
65
|
|
|
54
66
|
/**
|
|
55
67
|
* Module notes:
|
|
@@ -139,14 +151,21 @@ function unhydratedFlexTreeFromInsertableNode(
|
|
|
139
151
|
result = leafToFlexContent(data, schema, allowedTypes);
|
|
140
152
|
break;
|
|
141
153
|
case NodeKind.Array:
|
|
154
|
+
assert(isArrayNodeSchema(schema), 0x922 /* Expected an array schema. */);
|
|
142
155
|
result = arrayToFlexContent(data, schema);
|
|
143
156
|
break;
|
|
144
157
|
case NodeKind.Map:
|
|
158
|
+
assert(isMapNodeSchema(schema), 0x923 /* Expected a Map schema. */);
|
|
145
159
|
result = mapToFlexContent(data, schema);
|
|
146
160
|
break;
|
|
147
161
|
case NodeKind.Object:
|
|
162
|
+
assert(isObjectNodeSchema(schema), 0x924 /* Expected an Object schema. */);
|
|
148
163
|
result = objectToFlexContent(data, schema);
|
|
149
164
|
break;
|
|
165
|
+
case NodeKind.Record:
|
|
166
|
+
assert(isRecordNodeSchema(schema), 0xbdd /* Expected a Record schema. */);
|
|
167
|
+
result = recordToFlexContent(data, schema);
|
|
168
|
+
break;
|
|
150
169
|
default:
|
|
151
170
|
unreachableCase(schema.kind);
|
|
152
171
|
}
|
|
@@ -265,8 +284,7 @@ function arrayChildToFlexTree(
|
|
|
265
284
|
* @param data - The tree data to be transformed. Must be an iterable.
|
|
266
285
|
* @param schema - The schema associated with the value.
|
|
267
286
|
*/
|
|
268
|
-
function arrayToFlexContent(data: FactoryContent, schema:
|
|
269
|
-
assert(schema.kind === NodeKind.Array, 0x922 /* Expected an array schema. */);
|
|
287
|
+
function arrayToFlexContent(data: FactoryContent, schema: ArrayNodeSchema): FlexContent {
|
|
270
288
|
if (!(typeof data === "object" && data !== null && Symbol.iterator in data)) {
|
|
271
289
|
throw new UsageError(`Input data is incompatible with Array schema: ${data}`);
|
|
272
290
|
}
|
|
@@ -308,14 +326,11 @@ function arrayToFlexContent(data: FactoryContent, schema: TreeNodeSchema): FlexC
|
|
|
308
326
|
* @param data - The tree data to be transformed. Must be an iterable.
|
|
309
327
|
* @param schema - The schema associated with the value.
|
|
310
328
|
*/
|
|
311
|
-
function mapToFlexContent(data: FactoryContent, schema:
|
|
312
|
-
assert(schema.kind === NodeKind.Map, 0x923 /* Expected a Map schema. */);
|
|
329
|
+
function mapToFlexContent(data: FactoryContent, schema: MapNodeSchema): FlexContent {
|
|
313
330
|
if (!(typeof data === "object" && data !== null)) {
|
|
314
331
|
throw new UsageError(`Input data is incompatible with Map schema: ${data}`);
|
|
315
332
|
}
|
|
316
333
|
|
|
317
|
-
const allowedChildTypes = normalizeAllowedTypes(schema.info as ImplicitAllowedTypes);
|
|
318
|
-
|
|
319
334
|
const fieldsIterator = (
|
|
320
335
|
Symbol.iterator in data
|
|
321
336
|
? // Support iterables of key value pairs (including Map objects)
|
|
@@ -324,30 +339,7 @@ function mapToFlexContent(data: FactoryContent, schema: TreeNodeSchema): FlexCon
|
|
|
324
339
|
Object.entries(data)
|
|
325
340
|
) as Iterable<readonly [string, InsertableContent]>;
|
|
326
341
|
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
const transformedFields = new Map<FieldKey, UnhydratedFlexTreeField>();
|
|
330
|
-
for (const item of fieldsIterator) {
|
|
331
|
-
if (!isReadonlyArray(item) || item.length !== 2 || typeof item[0] !== "string") {
|
|
332
|
-
throw new UsageError(`Input data is incompatible with map entry: ${item}`);
|
|
333
|
-
}
|
|
334
|
-
const [key, value] = item;
|
|
335
|
-
assert(!transformedFields.has(brand(key)), 0x84c /* Keys should not be duplicated */);
|
|
336
|
-
|
|
337
|
-
// Omit undefined values - an entry with an undefined value is equivalent to one that has been removed or omitted
|
|
338
|
-
if (value !== undefined) {
|
|
339
|
-
const child = unhydratedFlexTreeFromInsertableNode(value, allowedChildTypes);
|
|
340
|
-
const field = createField(context, FieldKinds.optional.identifier, brand(key), [child]);
|
|
341
|
-
transformedFields.set(brand(key), field);
|
|
342
|
-
}
|
|
343
|
-
}
|
|
344
|
-
|
|
345
|
-
return [
|
|
346
|
-
{
|
|
347
|
-
type: brand(schema.identifier),
|
|
348
|
-
},
|
|
349
|
-
transformedFields,
|
|
350
|
-
];
|
|
342
|
+
return recordLikeDataToFlexContent(fieldsIterator, schema);
|
|
351
343
|
}
|
|
352
344
|
|
|
353
345
|
/**
|
|
@@ -355,8 +347,10 @@ function mapToFlexContent(data: FactoryContent, schema: TreeNodeSchema): FlexCon
|
|
|
355
347
|
* @param data - The tree data to be transformed. Must be a Record-like object.
|
|
356
348
|
* @param schema - The schema associated with the value.
|
|
357
349
|
*/
|
|
358
|
-
function objectToFlexContent(
|
|
359
|
-
|
|
350
|
+
function objectToFlexContent(
|
|
351
|
+
data: FactoryContent,
|
|
352
|
+
schema: ObjectNodeSchemaPrivate,
|
|
353
|
+
): FlexContent {
|
|
360
354
|
if (
|
|
361
355
|
typeof data !== "object" ||
|
|
362
356
|
data === null ||
|
|
@@ -396,6 +390,51 @@ function objectToFlexContent(data: FactoryContent, schema: TreeNodeSchema): Flex
|
|
|
396
390
|
return [{ type: brand(schema.identifier) }, fields];
|
|
397
391
|
}
|
|
398
392
|
|
|
393
|
+
/**
|
|
394
|
+
* Transforms data under an Object schema.
|
|
395
|
+
* @param data - The tree data to be transformed. Must be a Record-like object.
|
|
396
|
+
* @param schema - The schema associated with the value.
|
|
397
|
+
*/
|
|
398
|
+
function recordToFlexContent(data: FactoryContent, schema: RecordNodeSchema): FlexContent {
|
|
399
|
+
if (!(typeof data === "object" && data !== null)) {
|
|
400
|
+
throw new UsageError(`Input data is incompatible with Record schema: ${data}`);
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
const fieldsIterator: Iterable<readonly [string, InsertableContent]> = Object.entries(data);
|
|
404
|
+
return recordLikeDataToFlexContent(fieldsIterator, schema);
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
/**
|
|
408
|
+
* Converts record-like data to a FlexContent representation for map/record schema.
|
|
409
|
+
*/
|
|
410
|
+
function recordLikeDataToFlexContent(
|
|
411
|
+
fieldsIterator: Iterable<readonly [string, InsertableContent]>,
|
|
412
|
+
schema: MapNodeSchema | RecordNodeSchema,
|
|
413
|
+
): FlexContent {
|
|
414
|
+
const allowedChildTypes = normalizeAllowedTypes(unannotateImplicitAllowedTypes(schema.info));
|
|
415
|
+
const context = getUnhydratedContext(schema).flexContext;
|
|
416
|
+
|
|
417
|
+
const transformedFields = new Map<FieldKey, UnhydratedFlexTreeField>();
|
|
418
|
+
for (const item of fieldsIterator) {
|
|
419
|
+
const [key, value] = item;
|
|
420
|
+
assert(!transformedFields.has(brand(key)), 0x84c /* Keys should not be duplicated */);
|
|
421
|
+
|
|
422
|
+
// Omit undefined values - an entry with an undefined value is equivalent to one that has been removed or omitted
|
|
423
|
+
if (value !== undefined) {
|
|
424
|
+
const child = unhydratedFlexTreeFromInsertableNode(value, allowedChildTypes);
|
|
425
|
+
const field = createField(context, FieldKinds.optional.identifier, brand(key), [child]);
|
|
426
|
+
transformedFields.set(brand(key), field);
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
return [
|
|
431
|
+
{
|
|
432
|
+
type: brand(schema.identifier),
|
|
433
|
+
},
|
|
434
|
+
transformedFields,
|
|
435
|
+
];
|
|
436
|
+
}
|
|
437
|
+
|
|
399
438
|
/**
|
|
400
439
|
* Check {@link FactoryContentObject} for a property which could be store a field.
|
|
401
440
|
*
|
|
@@ -550,6 +589,10 @@ function shallowCompatibilityTest(
|
|
|
550
589
|
|
|
551
590
|
// At this point, it is assumed data is a record-like object since all the other cases have been eliminated.
|
|
552
591
|
|
|
592
|
+
if (schema.kind === NodeKind.Record) {
|
|
593
|
+
return CompatibilityLevel.Normal;
|
|
594
|
+
}
|
|
595
|
+
|
|
553
596
|
if (schema.kind === NodeKind.Array) {
|
|
554
597
|
return CompatibilityLevel.None;
|
|
555
598
|
}
|
package/src/tableSchema.ts
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import { oob } from "@fluidframework/core-utils/internal";
|
|
7
7
|
import { UsageError } from "@fluidframework/telemetry-utils/internal";
|
|
8
8
|
|
|
9
|
-
import { Tree } from "./shared-tree/index.js";
|
|
9
|
+
import { Tree, TreeAlpha } from "./shared-tree/index.js";
|
|
10
10
|
import {
|
|
11
11
|
type FieldHasDefault,
|
|
12
12
|
type ImplicitAllowedTypes,
|
|
@@ -28,6 +28,7 @@ import {
|
|
|
28
28
|
type ImplicitAnnotatedFieldSchema,
|
|
29
29
|
type UnannotateImplicitFieldSchema,
|
|
30
30
|
isArrayNodeSchema,
|
|
31
|
+
type InsertableField,
|
|
31
32
|
} from "./simple-tree/index.js";
|
|
32
33
|
|
|
33
34
|
// Future improvement TODOs:
|
|
@@ -352,7 +353,12 @@ export namespace System_TableSchema {
|
|
|
352
353
|
// See definition of `RowInsertableType` below.
|
|
353
354
|
const rowFieldsBuiltInParts = {
|
|
354
355
|
id: schemaFactory.identifier,
|
|
355
|
-
|
|
356
|
+
/**
|
|
357
|
+
* The cells of the table row, keyed by column ID.
|
|
358
|
+
* @remarks
|
|
359
|
+
* The table row models its cells as a record, where each key is the ID of the column it belongs to. The choice of record (as opposed to a map) is intended to make interop with common table rendering libraries in TypeScript/JavaScript easier.
|
|
360
|
+
*/
|
|
361
|
+
cells: schemaFactory.required(schemaFactory.record("Row.cells", cellSchema), {
|
|
356
362
|
metadata: {
|
|
357
363
|
description: "The cells of the table row, keyed by column ID.",
|
|
358
364
|
},
|
|
@@ -389,7 +395,8 @@ export namespace System_TableSchema {
|
|
|
389
395
|
columnOrId: TableSchema.Column<TCellSchema> | string,
|
|
390
396
|
): CellValueType | undefined {
|
|
391
397
|
const columnId = typeof columnOrId === "string" ? columnOrId : columnOrId.id;
|
|
392
|
-
|
|
398
|
+
// Unlike most objects, RecordNodes don't have the default inherited object properties, so this is safe
|
|
399
|
+
return this.cells[columnId];
|
|
393
400
|
}
|
|
394
401
|
|
|
395
402
|
public setCell(
|
|
@@ -398,8 +405,18 @@ export namespace System_TableSchema {
|
|
|
398
405
|
): void {
|
|
399
406
|
// TODO: throw if column does not exist in the owning table.
|
|
400
407
|
|
|
401
|
-
|
|
402
|
-
|
|
408
|
+
if (value === undefined) {
|
|
409
|
+
this.removeCell(columnOrId);
|
|
410
|
+
} else {
|
|
411
|
+
const columnId = typeof columnOrId === "string" ? columnOrId : columnOrId.id;
|
|
412
|
+
|
|
413
|
+
// TypeScript is unable to narrow the types correctly here, hence the casts.
|
|
414
|
+
// See: https://github.com/microsoft/TypeScript/issues/52144
|
|
415
|
+
this.cells[columnId] = TreeAlpha.create(
|
|
416
|
+
cellSchema,
|
|
417
|
+
value as InsertableField<TCellSchema>,
|
|
418
|
+
) as CellValueType;
|
|
419
|
+
}
|
|
403
420
|
}
|
|
404
421
|
|
|
405
422
|
public removeCell(
|
|
@@ -409,12 +426,14 @@ export namespace System_TableSchema {
|
|
|
409
426
|
|
|
410
427
|
const columnId = typeof columnOrId === "string" ? columnOrId : columnOrId.id;
|
|
411
428
|
|
|
412
|
-
const cell: CellValueType | undefined = this.
|
|
429
|
+
const cell: CellValueType | undefined = this.getCell(columnId);
|
|
413
430
|
if (cell === undefined) {
|
|
414
431
|
return undefined;
|
|
415
432
|
}
|
|
416
433
|
|
|
417
|
-
|
|
434
|
+
// eslint-disable-next-line @typescript-eslint/no-dynamic-delete -- The record's values are non-optional, so setting `undefined` as a means to remove the cell is not supported.
|
|
435
|
+
delete this.cells[columnId];
|
|
436
|
+
|
|
418
437
|
return cell;
|
|
419
438
|
}
|
|
420
439
|
|
|
@@ -423,7 +442,7 @@ export namespace System_TableSchema {
|
|
|
423
442
|
cell: CellValueType;
|
|
424
443
|
}[] {
|
|
425
444
|
const result = [];
|
|
426
|
-
for (const [columnId, cell] of this.cells
|
|
445
|
+
for (const [columnId, cell] of Object.entries(this.cells)) {
|
|
427
446
|
if (cell !== undefined) {
|
|
428
447
|
result.push({
|
|
429
448
|
columnId,
|
package/src/util/brandedMap.ts
CHANGED
|
@@ -16,8 +16,6 @@ import { getOrCreate } from "./utils.js";
|
|
|
16
16
|
*/
|
|
17
17
|
export type BrandedKey<TKey, TContent> = TKey & Invariant<TContent>;
|
|
18
18
|
|
|
19
|
-
/**
|
|
20
|
-
*/
|
|
21
19
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
22
20
|
export type BrandedKeyContent<TKey extends BrandedKey<unknown, any>> = TKey extends BrandedKey<
|
|
23
21
|
unknown,
|