@fluidframework/tree 2.50.0 → 2.51.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/.eslintrc.cjs +3 -2
- package/.vscode/Tree.code-workspace +14 -1
- package/.vscode/settings.json +16 -0
- package/CHANGELOG.md +51 -2
- package/api-report/tree.alpha.api.md +7 -7
- package/dist/core/schema-stored/schema.d.ts +14 -1
- package/dist/core/schema-stored/schema.d.ts.map +1 -1
- package/dist/core/schema-stored/schema.js.map +1 -1
- package/dist/feature-libraries/default-schema/schemaChecker.d.ts.map +1 -1
- package/dist/feature-libraries/default-schema/schemaChecker.js +3 -0
- package/dist/feature-libraries/default-schema/schemaChecker.js.map +1 -1
- package/dist/feature-libraries/flex-tree/context.d.ts +7 -2
- package/dist/feature-libraries/flex-tree/context.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/context.js +4 -4
- package/dist/feature-libraries/flex-tree/context.js.map +1 -1
- package/dist/feature-libraries/flex-tree/index.d.ts +1 -0
- package/dist/feature-libraries/flex-tree/index.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/index.js +3 -1
- package/dist/feature-libraries/flex-tree/index.js.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyField.js +5 -5
- package/dist/feature-libraries/flex-tree/lazyField.js.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyNode.d.ts +3 -1
- package/dist/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyNode.js +5 -3
- package/dist/feature-libraries/flex-tree/lazyNode.js.map +1 -1
- package/dist/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
- package/dist/feature-libraries/forest-summary/forestSummarizer.js +3 -4
- package/dist/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
- package/dist/feature-libraries/index.d.ts +2 -2
- package/dist/feature-libraries/index.d.ts.map +1 -1
- package/dist/feature-libraries/index.js +3 -8
- package/dist/feature-libraries/index.js.map +1 -1
- package/dist/feature-libraries/modular-schema/comparison.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/comparison.js +0 -3
- package/dist/feature-libraries/modular-schema/comparison.js.map +1 -1
- package/dist/feature-libraries/modular-schema/index.d.ts +0 -1
- package/dist/feature-libraries/modular-schema/index.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/index.js +1 -8
- package/dist/feature-libraries/modular-schema/index.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/index.d.ts +0 -1
- package/dist/shared-tree/index.d.ts.map +1 -1
- package/dist/shared-tree/index.js +1 -3
- package/dist/shared-tree/index.js.map +1 -1
- package/dist/shared-tree/schematizeTree.d.ts +1 -1
- package/dist/shared-tree/schematizeTree.d.ts.map +1 -1
- package/dist/shared-tree/schematizeTree.js +7 -10
- package/dist/shared-tree/schematizeTree.js.map +1 -1
- package/dist/shared-tree/schematizingTreeView.d.ts +11 -13
- package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/dist/shared-tree/schematizingTreeView.js +60 -83
- package/dist/shared-tree/schematizingTreeView.js.map +1 -1
- package/dist/shared-tree/sharedTreeChangeTypes.d.ts +1 -1
- package/dist/shared-tree/sharedTreeChangeTypes.js.map +1 -1
- package/dist/shared-tree/tree.d.ts.map +1 -1
- package/dist/shared-tree/tree.js +4 -3
- package/dist/shared-tree/tree.js.map +1 -1
- package/dist/shared-tree/treeAlpha.d.ts +7 -1
- package/dist/shared-tree/treeAlpha.d.ts.map +1 -1
- package/dist/shared-tree/treeAlpha.js.map +1 -1
- package/dist/shared-tree/treeCheckout.d.ts +7 -2
- package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
- package/dist/shared-tree/treeCheckout.js +4 -1
- package/dist/shared-tree/treeCheckout.js.map +1 -1
- package/dist/simple-tree/api/conciseTree.d.ts +1 -1
- package/dist/simple-tree/api/conciseTree.d.ts.map +1 -1
- package/dist/simple-tree/api/conciseTree.js.map +1 -1
- package/dist/simple-tree/api/configuration.d.ts +1 -1
- package/dist/simple-tree/api/configuration.d.ts.map +1 -1
- package/dist/simple-tree/api/configuration.js +5 -5
- package/dist/simple-tree/api/configuration.js.map +1 -1
- package/dist/simple-tree/api/create.d.ts +3 -1
- package/dist/simple-tree/api/create.d.ts.map +1 -1
- package/dist/simple-tree/api/create.js +2 -0
- package/dist/simple-tree/api/create.js.map +1 -1
- package/dist/simple-tree/api/customTree.d.ts +1 -2
- package/dist/simple-tree/api/customTree.d.ts.map +1 -1
- package/dist/simple-tree/api/customTree.js.map +1 -1
- package/dist/simple-tree/api/getJsonSchema.d.ts +1 -1
- package/dist/simple-tree/api/getJsonSchema.d.ts.map +1 -1
- package/dist/simple-tree/api/getJsonSchema.js.map +1 -1
- package/dist/simple-tree/api/getSimpleSchema.d.ts +1 -1
- package/dist/simple-tree/api/getSimpleSchema.js.map +1 -1
- package/dist/simple-tree/api/identifierIndex.d.ts +1 -1
- package/dist/simple-tree/api/identifierIndex.js +2 -2
- package/dist/simple-tree/api/identifierIndex.js.map +1 -1
- package/dist/simple-tree/api/index.d.ts +1 -1
- 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/schemaCompatibilityTester.d.ts +4 -19
- package/dist/simple-tree/api/schemaCompatibilityTester.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaCompatibilityTester.js +31 -82
- package/dist/simple-tree/api/schemaCompatibilityTester.js.map +1 -1
- package/dist/simple-tree/api/schemaCreationUtilities.d.ts +14 -2
- package/dist/simple-tree/api/schemaCreationUtilities.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaCreationUtilities.js +41 -4
- package/dist/simple-tree/api/schemaCreationUtilities.js.map +1 -1
- package/dist/simple-tree/api/schemaFactory.d.ts +36 -3
- package/dist/simple-tree/api/schemaFactory.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaFactory.js +18 -18
- package/dist/simple-tree/api/schemaFactory.js.map +1 -1
- package/dist/simple-tree/api/schemaFactoryAlpha.d.ts +16 -16
- package/dist/simple-tree/api/schemaFactoryAlpha.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaFactoryAlpha.js.map +1 -1
- package/dist/simple-tree/api/schemaFactoryRecursive.d.ts +2 -2
- package/dist/simple-tree/api/schemaFactoryRecursive.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaFactoryRecursive.js +2 -2
- package/dist/simple-tree/api/schemaFactoryRecursive.js.map +1 -1
- package/dist/simple-tree/api/schemaFromSimple.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaFromSimple.js +4 -4
- package/dist/simple-tree/api/schemaFromSimple.js.map +1 -1
- package/dist/simple-tree/api/simpleSchemaToJsonSchema.js +2 -2
- package/dist/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -1
- package/dist/simple-tree/api/simpleTreeIndex.d.ts +2 -2
- package/dist/simple-tree/api/simpleTreeIndex.d.ts.map +1 -1
- package/dist/simple-tree/api/simpleTreeIndex.js +1 -1
- package/dist/simple-tree/api/simpleTreeIndex.js.map +1 -1
- package/dist/simple-tree/api/storedSchema.d.ts +1 -1
- package/dist/simple-tree/api/storedSchema.d.ts.map +1 -1
- package/dist/simple-tree/api/storedSchema.js +2 -2
- package/dist/simple-tree/api/storedSchema.js.map +1 -1
- package/dist/simple-tree/api/tree.d.ts +2 -1
- package/dist/simple-tree/api/tree.d.ts.map +1 -1
- package/dist/simple-tree/api/tree.js.map +1 -1
- package/dist/simple-tree/api/treeBeta.d.ts +4 -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 +1 -2
- package/dist/simple-tree/api/treeNodeApi.d.ts.map +1 -1
- package/dist/simple-tree/api/treeNodeApi.js +3 -3
- package/dist/simple-tree/api/treeNodeApi.js.map +1 -1
- package/dist/simple-tree/api/typesUnsafe.d.ts +2 -3
- 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/verboseTree.d.ts +2 -1
- package/dist/simple-tree/api/verboseTree.d.ts.map +1 -1
- package/dist/simple-tree/api/verboseTree.js.map +1 -1
- package/dist/simple-tree/api/viewSchemaToSimpleSchema.d.ts +1 -1
- package/dist/simple-tree/api/viewSchemaToSimpleSchema.js +2 -2
- package/dist/simple-tree/api/viewSchemaToSimpleSchema.js.map +1 -1
- package/dist/simple-tree/core/allowedTypes.d.ts +316 -0
- package/dist/simple-tree/core/allowedTypes.d.ts.map +1 -0
- package/dist/simple-tree/core/allowedTypes.js +173 -0
- package/dist/simple-tree/core/allowedTypes.js.map +1 -0
- package/dist/simple-tree/core/context.d.ts +3 -9
- package/dist/simple-tree/core/context.d.ts.map +1 -1
- package/dist/simple-tree/core/context.js +3 -11
- package/dist/simple-tree/core/context.js.map +1 -1
- package/dist/simple-tree/core/flexList.d.ts.map +1 -0
- package/dist/simple-tree/core/flexList.js.map +1 -0
- package/dist/simple-tree/core/getOrCreateNode.d.ts +1 -1
- package/dist/simple-tree/core/getOrCreateNode.d.ts.map +1 -1
- package/dist/simple-tree/core/getOrCreateNode.js.map +1 -1
- package/dist/simple-tree/core/index.d.ts +9 -3
- package/dist/simple-tree/core/index.d.ts.map +1 -1
- package/dist/simple-tree/core/index.js +19 -3
- package/dist/simple-tree/core/index.js.map +1 -1
- package/dist/simple-tree/core/treeNodeKernel.d.ts +8 -1
- package/dist/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
- package/dist/simple-tree/core/treeNodeKernel.js +24 -20
- package/dist/simple-tree/core/treeNodeKernel.js.map +1 -1
- package/dist/simple-tree/core/treeNodeSchema.d.ts +182 -39
- package/dist/simple-tree/core/treeNodeSchema.d.ts.map +1 -1
- package/dist/simple-tree/core/treeNodeSchema.js +47 -17
- package/dist/simple-tree/core/treeNodeSchema.js.map +1 -1
- package/{lib/simple-tree → dist/simple-tree/core}/treeNodeValid.d.ts +18 -4
- package/dist/simple-tree/core/treeNodeValid.d.ts.map +1 -0
- package/dist/simple-tree/{treeNodeValid.js → core/treeNodeValid.js} +41 -11
- package/dist/simple-tree/core/treeNodeValid.js.map +1 -0
- package/dist/simple-tree/core/unhydratedFlexTree.d.ts +1 -1
- package/dist/simple-tree/core/unhydratedFlexTree.js.map +1 -1
- package/dist/simple-tree/core/walkSchema.d.ts +2 -1
- package/dist/simple-tree/core/walkSchema.d.ts.map +1 -1
- package/dist/simple-tree/core/walkSchema.js +6 -2
- package/dist/simple-tree/core/walkSchema.js.map +1 -1
- package/dist/simple-tree/createContext.d.ts +6 -2
- package/dist/simple-tree/createContext.d.ts.map +1 -1
- package/dist/simple-tree/createContext.js +15 -3
- package/dist/simple-tree/createContext.js.map +1 -1
- package/dist/{feature-libraries/modular-schema → simple-tree}/discrepancies.d.ts +22 -29
- package/dist/simple-tree/discrepancies.d.ts.map +1 -0
- package/dist/simple-tree/discrepancies.js +382 -0
- package/dist/simple-tree/discrepancies.js.map +1 -0
- package/dist/simple-tree/fieldSchema.d.ts +423 -0
- package/dist/simple-tree/fieldSchema.d.ts.map +1 -0
- package/dist/simple-tree/{schemaTypes.js → fieldSchema.js} +5 -195
- package/dist/simple-tree/fieldSchema.js.map +1 -0
- package/dist/simple-tree/index.d.ts +7 -6
- package/dist/simple-tree/index.d.ts.map +1 -1
- package/dist/simple-tree/index.js +17 -11
- package/dist/simple-tree/index.js.map +1 -1
- package/dist/simple-tree/leafNodeSchema.d.ts +14 -5
- package/dist/simple-tree/leafNodeSchema.d.ts.map +1 -1
- package/dist/simple-tree/leafNodeSchema.js +117 -2
- package/dist/simple-tree/leafNodeSchema.js.map +1 -1
- package/dist/simple-tree/node-kinds/array/arrayNode.d.ts +3 -4
- package/dist/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/array/arrayNode.js +97 -26
- package/dist/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
- package/dist/simple-tree/node-kinds/array/arrayNodeTypes.d.ts +2 -2
- package/dist/simple-tree/node-kinds/array/arrayNodeTypes.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/array/arrayNodeTypes.js.map +1 -1
- package/dist/simple-tree/node-kinds/common.d.ts +16 -0
- package/dist/simple-tree/node-kinds/common.d.ts.map +1 -0
- package/dist/simple-tree/node-kinds/common.js +42 -0
- package/dist/simple-tree/node-kinds/common.js.map +1 -0
- package/dist/simple-tree/node-kinds/index.d.ts +1 -1
- package/dist/simple-tree/node-kinds/index.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/index.js.map +1 -1
- package/dist/simple-tree/node-kinds/map/mapNode.d.ts +2 -3
- package/dist/simple-tree/node-kinds/map/mapNode.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/map/mapNode.js +64 -26
- package/dist/simple-tree/node-kinds/map/mapNode.js.map +1 -1
- package/dist/simple-tree/node-kinds/map/mapNodeTypes.d.ts +2 -2
- package/dist/simple-tree/node-kinds/map/mapNodeTypes.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/map/mapNodeTypes.js.map +1 -1
- package/dist/simple-tree/node-kinds/object/index.d.ts +2 -2
- package/dist/simple-tree/node-kinds/object/index.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/object/index.js.map +1 -1
- package/dist/simple-tree/node-kinds/object/objectNode.d.ts +19 -5
- package/dist/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/object/objectNode.js +131 -27
- package/dist/simple-tree/node-kinds/object/objectNode.js.map +1 -1
- package/dist/simple-tree/node-kinds/object/objectNodeTypes.d.ts +11 -4
- package/dist/simple-tree/node-kinds/object/objectNodeTypes.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/object/objectNodeTypes.js.map +1 -1
- package/dist/simple-tree/node-kinds/record/recordNode.d.ts +2 -2
- package/dist/simple-tree/node-kinds/record/recordNode.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/record/recordNode.js +41 -13
- package/dist/simple-tree/node-kinds/record/recordNode.js.map +1 -1
- package/dist/simple-tree/node-kinds/record/recordNodeTypes.d.ts +2 -2
- package/dist/simple-tree/node-kinds/record/recordNodeTypes.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/record/recordNodeTypes.js.map +1 -1
- package/dist/simple-tree/prepareForInsertion.d.ts +2 -2
- package/dist/simple-tree/prepareForInsertion.d.ts.map +1 -1
- package/dist/simple-tree/prepareForInsertion.js +3 -3
- package/dist/simple-tree/prepareForInsertion.js.map +1 -1
- package/dist/simple-tree/simpleSchema.d.ts +2 -2
- 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 +1 -1
- package/dist/simple-tree/toStoredSchema.d.ts.map +1 -1
- package/dist/simple-tree/toStoredSchema.js +6 -7
- package/dist/simple-tree/toStoredSchema.js.map +1 -1
- package/dist/simple-tree/unhydratedFlexTreeFromInsertable.d.ts +5 -11
- package/dist/simple-tree/unhydratedFlexTreeFromInsertable.d.ts.map +1 -1
- package/dist/simple-tree/unhydratedFlexTreeFromInsertable.js +25 -395
- package/dist/simple-tree/unhydratedFlexTreeFromInsertable.js.map +1 -1
- package/dist/simple-tree/unsafeUnknownSchema.d.ts +52 -0
- package/dist/simple-tree/unsafeUnknownSchema.d.ts.map +1 -0
- package/dist/simple-tree/unsafeUnknownSchema.js +13 -0
- package/dist/simple-tree/unsafeUnknownSchema.js.map +1 -0
- package/dist/simple-tree/walkFieldSchema.d.ts +1 -1
- package/dist/simple-tree/walkFieldSchema.js +2 -2
- package/dist/simple-tree/walkFieldSchema.js.map +1 -1
- package/dist/tableSchema.d.ts +12 -12
- package/dist/treeFactory.d.ts +0 -1
- package/dist/treeFactory.d.ts.map +1 -1
- package/dist/treeFactory.js +0 -1
- package/dist/treeFactory.js.map +1 -1
- package/lib/core/schema-stored/schema.d.ts +14 -1
- package/lib/core/schema-stored/schema.d.ts.map +1 -1
- package/lib/core/schema-stored/schema.js.map +1 -1
- package/lib/feature-libraries/default-schema/schemaChecker.d.ts.map +1 -1
- package/lib/feature-libraries/default-schema/schemaChecker.js +3 -0
- package/lib/feature-libraries/default-schema/schemaChecker.js.map +1 -1
- package/lib/feature-libraries/flex-tree/context.d.ts +7 -2
- package/lib/feature-libraries/flex-tree/context.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/context.js +4 -4
- package/lib/feature-libraries/flex-tree/context.js.map +1 -1
- package/lib/feature-libraries/flex-tree/index.d.ts +1 -0
- package/lib/feature-libraries/flex-tree/index.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/index.js +1 -0
- package/lib/feature-libraries/flex-tree/index.js.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyField.js +6 -6
- package/lib/feature-libraries/flex-tree/lazyField.js.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyNode.d.ts +3 -1
- package/lib/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyNode.js +3 -1
- package/lib/feature-libraries/flex-tree/lazyNode.js.map +1 -1
- package/lib/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
- package/lib/feature-libraries/forest-summary/forestSummarizer.js +1 -2
- package/lib/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
- package/lib/feature-libraries/index.d.ts +2 -2
- package/lib/feature-libraries/index.d.ts.map +1 -1
- package/lib/feature-libraries/index.js +2 -2
- package/lib/feature-libraries/index.js.map +1 -1
- package/lib/feature-libraries/modular-schema/comparison.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/comparison.js +0 -3
- package/lib/feature-libraries/modular-schema/comparison.js.map +1 -1
- package/lib/feature-libraries/modular-schema/index.d.ts +0 -1
- package/lib/feature-libraries/modular-schema/index.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/index.js +0 -1
- package/lib/feature-libraries/modular-schema/index.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/index.d.ts +0 -1
- package/lib/shared-tree/index.d.ts.map +1 -1
- package/lib/shared-tree/index.js +0 -1
- package/lib/shared-tree/index.js.map +1 -1
- package/lib/shared-tree/schematizeTree.d.ts +1 -1
- package/lib/shared-tree/schematizeTree.d.ts.map +1 -1
- package/lib/shared-tree/schematizeTree.js +5 -8
- package/lib/shared-tree/schematizeTree.js.map +1 -1
- package/lib/shared-tree/schematizingTreeView.d.ts +11 -13
- package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/lib/shared-tree/schematizingTreeView.js +61 -83
- package/lib/shared-tree/schematizingTreeView.js.map +1 -1
- package/lib/shared-tree/sharedTreeChangeTypes.d.ts +1 -1
- package/lib/shared-tree/sharedTreeChangeTypes.js.map +1 -1
- package/lib/shared-tree/tree.d.ts.map +1 -1
- package/lib/shared-tree/tree.js +4 -3
- package/lib/shared-tree/tree.js.map +1 -1
- package/lib/shared-tree/treeAlpha.d.ts +7 -1
- package/lib/shared-tree/treeAlpha.d.ts.map +1 -1
- package/lib/shared-tree/treeAlpha.js.map +1 -1
- package/lib/shared-tree/treeCheckout.d.ts +7 -2
- package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
- package/lib/shared-tree/treeCheckout.js +5 -2
- package/lib/shared-tree/treeCheckout.js.map +1 -1
- package/lib/simple-tree/api/conciseTree.d.ts +1 -1
- package/lib/simple-tree/api/conciseTree.d.ts.map +1 -1
- package/lib/simple-tree/api/conciseTree.js.map +1 -1
- package/lib/simple-tree/api/configuration.d.ts +1 -1
- package/lib/simple-tree/api/configuration.d.ts.map +1 -1
- package/lib/simple-tree/api/configuration.js +2 -2
- package/lib/simple-tree/api/configuration.js.map +1 -1
- package/lib/simple-tree/api/create.d.ts +3 -1
- package/lib/simple-tree/api/create.d.ts.map +1 -1
- package/lib/simple-tree/api/create.js +2 -0
- package/lib/simple-tree/api/create.js.map +1 -1
- package/lib/simple-tree/api/customTree.d.ts +1 -2
- package/lib/simple-tree/api/customTree.d.ts.map +1 -1
- package/lib/simple-tree/api/customTree.js.map +1 -1
- package/lib/simple-tree/api/getJsonSchema.d.ts +1 -1
- package/lib/simple-tree/api/getJsonSchema.d.ts.map +1 -1
- package/lib/simple-tree/api/getJsonSchema.js.map +1 -1
- package/lib/simple-tree/api/getSimpleSchema.d.ts +1 -1
- package/lib/simple-tree/api/getSimpleSchema.js.map +1 -1
- package/lib/simple-tree/api/identifierIndex.d.ts +1 -1
- package/lib/simple-tree/api/identifierIndex.js +1 -1
- package/lib/simple-tree/api/identifierIndex.js.map +1 -1
- package/lib/simple-tree/api/index.d.ts +1 -1
- 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/schemaCompatibilityTester.d.ts +4 -19
- package/lib/simple-tree/api/schemaCompatibilityTester.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaCompatibilityTester.js +25 -76
- package/lib/simple-tree/api/schemaCompatibilityTester.js.map +1 -1
- package/lib/simple-tree/api/schemaCreationUtilities.d.ts +14 -2
- package/lib/simple-tree/api/schemaCreationUtilities.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaCreationUtilities.js +40 -4
- package/lib/simple-tree/api/schemaCreationUtilities.js.map +1 -1
- package/lib/simple-tree/api/schemaFactory.d.ts +36 -3
- package/lib/simple-tree/api/schemaFactory.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaFactory.js +2 -2
- package/lib/simple-tree/api/schemaFactory.js.map +1 -1
- package/lib/simple-tree/api/schemaFactoryAlpha.d.ts +16 -16
- package/lib/simple-tree/api/schemaFactoryAlpha.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaFactoryAlpha.js.map +1 -1
- package/lib/simple-tree/api/schemaFactoryRecursive.d.ts +2 -2
- package/lib/simple-tree/api/schemaFactoryRecursive.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaFactoryRecursive.js +1 -1
- package/lib/simple-tree/api/schemaFactoryRecursive.js.map +1 -1
- package/lib/simple-tree/api/schemaFromSimple.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaFromSimple.js +1 -1
- package/lib/simple-tree/api/schemaFromSimple.js.map +1 -1
- package/lib/simple-tree/api/simpleSchemaToJsonSchema.js +1 -1
- package/lib/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -1
- package/lib/simple-tree/api/simpleTreeIndex.d.ts +2 -2
- package/lib/simple-tree/api/simpleTreeIndex.d.ts.map +1 -1
- package/lib/simple-tree/api/simpleTreeIndex.js +2 -2
- package/lib/simple-tree/api/simpleTreeIndex.js.map +1 -1
- package/lib/simple-tree/api/storedSchema.d.ts +1 -1
- package/lib/simple-tree/api/storedSchema.d.ts.map +1 -1
- package/lib/simple-tree/api/storedSchema.js +2 -2
- package/lib/simple-tree/api/storedSchema.js.map +1 -1
- package/lib/simple-tree/api/tree.d.ts +2 -1
- package/lib/simple-tree/api/tree.d.ts.map +1 -1
- package/lib/simple-tree/api/tree.js.map +1 -1
- package/lib/simple-tree/api/treeBeta.d.ts +4 -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 +1 -2
- package/lib/simple-tree/api/treeNodeApi.d.ts.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 +2 -3
- 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/verboseTree.d.ts +2 -1
- package/lib/simple-tree/api/verboseTree.d.ts.map +1 -1
- package/lib/simple-tree/api/verboseTree.js.map +1 -1
- package/lib/simple-tree/api/viewSchemaToSimpleSchema.d.ts +1 -1
- package/lib/simple-tree/api/viewSchemaToSimpleSchema.js +1 -1
- package/lib/simple-tree/api/viewSchemaToSimpleSchema.js.map +1 -1
- package/lib/simple-tree/core/allowedTypes.d.ts +316 -0
- package/lib/simple-tree/core/allowedTypes.d.ts.map +1 -0
- package/lib/simple-tree/core/allowedTypes.js +162 -0
- package/lib/simple-tree/core/allowedTypes.js.map +1 -0
- package/lib/simple-tree/core/context.d.ts +3 -9
- package/lib/simple-tree/core/context.d.ts.map +1 -1
- package/lib/simple-tree/core/context.js +0 -8
- package/lib/simple-tree/core/context.js.map +1 -1
- package/lib/simple-tree/core/flexList.d.ts.map +1 -0
- package/lib/simple-tree/core/flexList.js.map +1 -0
- package/lib/simple-tree/core/getOrCreateNode.d.ts +1 -1
- package/lib/simple-tree/core/getOrCreateNode.d.ts.map +1 -1
- package/lib/simple-tree/core/getOrCreateNode.js.map +1 -1
- package/lib/simple-tree/core/index.d.ts +9 -3
- package/lib/simple-tree/core/index.d.ts.map +1 -1
- package/lib/simple-tree/core/index.js +6 -3
- package/lib/simple-tree/core/index.js.map +1 -1
- package/lib/simple-tree/core/treeNodeKernel.d.ts +8 -1
- package/lib/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
- package/lib/simple-tree/core/treeNodeKernel.js +10 -6
- package/lib/simple-tree/core/treeNodeKernel.js.map +1 -1
- package/lib/simple-tree/core/treeNodeSchema.d.ts +182 -39
- package/lib/simple-tree/core/treeNodeSchema.d.ts.map +1 -1
- package/lib/simple-tree/core/treeNodeSchema.js +44 -14
- package/lib/simple-tree/core/treeNodeSchema.js.map +1 -1
- package/{dist/simple-tree → lib/simple-tree/core}/treeNodeValid.d.ts +18 -4
- package/lib/simple-tree/core/treeNodeValid.d.ts.map +1 -0
- package/lib/simple-tree/{treeNodeValid.js → core/treeNodeValid.js} +31 -3
- package/lib/simple-tree/core/treeNodeValid.js.map +1 -0
- package/lib/simple-tree/core/unhydratedFlexTree.d.ts +1 -1
- package/lib/simple-tree/core/unhydratedFlexTree.js.map +1 -1
- package/lib/simple-tree/core/walkSchema.d.ts +2 -1
- package/lib/simple-tree/core/walkSchema.d.ts.map +1 -1
- package/lib/simple-tree/core/walkSchema.js +7 -3
- package/lib/simple-tree/core/walkSchema.js.map +1 -1
- package/lib/simple-tree/createContext.d.ts +6 -2
- package/lib/simple-tree/createContext.d.ts.map +1 -1
- package/lib/simple-tree/createContext.js +13 -2
- package/lib/simple-tree/createContext.js.map +1 -1
- package/lib/{feature-libraries/modular-schema → simple-tree}/discrepancies.d.ts +22 -29
- package/lib/simple-tree/discrepancies.d.ts.map +1 -0
- package/lib/simple-tree/discrepancies.js +376 -0
- package/lib/simple-tree/discrepancies.js.map +1 -0
- package/lib/simple-tree/fieldSchema.d.ts +423 -0
- package/lib/simple-tree/fieldSchema.d.ts.map +1 -0
- package/lib/simple-tree/{schemaTypes.js → fieldSchema.js} +3 -183
- package/lib/simple-tree/fieldSchema.js.map +1 -0
- package/lib/simple-tree/index.d.ts +7 -6
- package/lib/simple-tree/index.d.ts.map +1 -1
- package/lib/simple-tree/index.js +4 -3
- package/lib/simple-tree/index.js.map +1 -1
- package/lib/simple-tree/leafNodeSchema.d.ts +14 -5
- package/lib/simple-tree/leafNodeSchema.d.ts.map +1 -1
- package/lib/simple-tree/leafNodeSchema.js +117 -3
- package/lib/simple-tree/leafNodeSchema.js.map +1 -1
- package/lib/simple-tree/node-kinds/array/arrayNode.d.ts +3 -4
- package/lib/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/array/arrayNode.js +86 -15
- package/lib/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
- package/lib/simple-tree/node-kinds/array/arrayNodeTypes.d.ts +2 -2
- package/lib/simple-tree/node-kinds/array/arrayNodeTypes.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/array/arrayNodeTypes.js +1 -1
- package/lib/simple-tree/node-kinds/array/arrayNodeTypes.js.map +1 -1
- package/lib/simple-tree/node-kinds/common.d.ts +16 -0
- package/lib/simple-tree/node-kinds/common.d.ts.map +1 -0
- package/lib/simple-tree/node-kinds/common.js +38 -0
- package/lib/simple-tree/node-kinds/common.js.map +1 -0
- package/lib/simple-tree/node-kinds/index.d.ts +1 -1
- package/lib/simple-tree/node-kinds/index.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/index.js.map +1 -1
- package/lib/simple-tree/node-kinds/map/mapNode.d.ts +2 -3
- package/lib/simple-tree/node-kinds/map/mapNode.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/map/mapNode.js +51 -13
- package/lib/simple-tree/node-kinds/map/mapNode.js.map +1 -1
- package/lib/simple-tree/node-kinds/map/mapNodeTypes.d.ts +2 -2
- package/lib/simple-tree/node-kinds/map/mapNodeTypes.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/map/mapNodeTypes.js +1 -1
- package/lib/simple-tree/node-kinds/map/mapNodeTypes.js.map +1 -1
- package/lib/simple-tree/node-kinds/object/index.d.ts +2 -2
- package/lib/simple-tree/node-kinds/object/index.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/object/index.js.map +1 -1
- package/lib/simple-tree/node-kinds/object/objectNode.d.ts +19 -5
- package/lib/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/object/objectNode.js +116 -14
- package/lib/simple-tree/node-kinds/object/objectNode.js.map +1 -1
- package/lib/simple-tree/node-kinds/object/objectNodeTypes.d.ts +11 -4
- package/lib/simple-tree/node-kinds/object/objectNodeTypes.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/object/objectNodeTypes.js +1 -1
- package/lib/simple-tree/node-kinds/object/objectNodeTypes.js.map +1 -1
- package/lib/simple-tree/node-kinds/record/recordNode.d.ts +2 -2
- package/lib/simple-tree/node-kinds/record/recordNode.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/record/recordNode.js +40 -12
- package/lib/simple-tree/node-kinds/record/recordNode.js.map +1 -1
- package/lib/simple-tree/node-kinds/record/recordNodeTypes.d.ts +2 -2
- package/lib/simple-tree/node-kinds/record/recordNodeTypes.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/record/recordNodeTypes.js +1 -1
- package/lib/simple-tree/node-kinds/record/recordNodeTypes.js.map +1 -1
- package/lib/simple-tree/prepareForInsertion.d.ts +2 -2
- package/lib/simple-tree/prepareForInsertion.d.ts.map +1 -1
- package/lib/simple-tree/prepareForInsertion.js +2 -2
- package/lib/simple-tree/prepareForInsertion.js.map +1 -1
- package/lib/simple-tree/simpleSchema.d.ts +2 -2
- 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 +1 -1
- package/lib/simple-tree/toStoredSchema.d.ts.map +1 -1
- package/lib/simple-tree/toStoredSchema.js +2 -3
- package/lib/simple-tree/toStoredSchema.js.map +1 -1
- package/lib/simple-tree/unhydratedFlexTreeFromInsertable.d.ts +5 -11
- package/lib/simple-tree/unhydratedFlexTreeFromInsertable.d.ts.map +1 -1
- package/lib/simple-tree/unhydratedFlexTreeFromInsertable.js +10 -381
- package/lib/simple-tree/unhydratedFlexTreeFromInsertable.js.map +1 -1
- package/lib/simple-tree/unsafeUnknownSchema.d.ts +52 -0
- package/lib/simple-tree/unsafeUnknownSchema.d.ts.map +1 -0
- package/lib/simple-tree/unsafeUnknownSchema.js +10 -0
- package/lib/simple-tree/unsafeUnknownSchema.js.map +1 -0
- package/lib/simple-tree/walkFieldSchema.d.ts +1 -1
- package/lib/simple-tree/walkFieldSchema.js +1 -1
- package/lib/simple-tree/walkFieldSchema.js.map +1 -1
- package/lib/tableSchema.d.ts +12 -12
- package/lib/treeFactory.d.ts +0 -1
- package/lib/treeFactory.d.ts.map +1 -1
- package/lib/treeFactory.js +0 -1
- package/lib/treeFactory.js.map +1 -1
- package/package.json +22 -23
- package/src/core/schema-stored/schema.ts +14 -1
- package/src/feature-libraries/default-schema/schemaChecker.ts +3 -0
- package/src/feature-libraries/flex-tree/context.ts +10 -5
- package/src/feature-libraries/flex-tree/index.ts +2 -0
- package/src/feature-libraries/flex-tree/lazyField.ts +10 -6
- package/src/feature-libraries/flex-tree/lazyNode.ts +6 -1
- package/src/feature-libraries/forest-summary/forestSummarizer.ts +1 -2
- package/src/feature-libraries/index.ts +1 -15
- package/src/feature-libraries/modular-schema/comparison.ts +0 -4
- package/src/feature-libraries/modular-schema/index.ts +0 -17
- package/src/packageVersion.ts +1 -1
- package/src/shared-tree/index.ts +0 -2
- package/src/shared-tree/schematizeTree.ts +5 -9
- package/src/shared-tree/schematizingTreeView.ts +75 -113
- package/src/shared-tree/sharedTreeChangeTypes.ts +1 -1
- package/src/shared-tree/tree.ts +4 -3
- package/src/shared-tree/treeAlpha.ts +7 -1
- package/src/shared-tree/treeCheckout.ts +15 -2
- package/src/simple-tree/api/conciseTree.ts +1 -2
- package/src/simple-tree/api/configuration.ts +7 -4
- package/src/simple-tree/api/create.ts +3 -1
- package/src/simple-tree/api/customTree.ts +1 -2
- package/src/simple-tree/api/getJsonSchema.ts +1 -1
- package/src/simple-tree/api/getSimpleSchema.ts +1 -1
- package/src/simple-tree/api/identifierIndex.ts +1 -1
- package/src/simple-tree/api/index.ts +2 -0
- package/src/simple-tree/api/schemaCompatibilityTester.ts +38 -128
- package/src/simple-tree/api/schemaCreationUtilities.ts +50 -5
- package/src/simple-tree/api/schemaFactory.ts +45 -10
- package/src/simple-tree/api/schemaFactoryAlpha.ts +4 -7
- package/src/simple-tree/api/schemaFactoryRecursive.ts +9 -4
- package/src/simple-tree/api/schemaFromSimple.ts +2 -3
- package/src/simple-tree/api/simpleSchemaToJsonSchema.ts +1 -1
- package/src/simple-tree/api/simpleTreeIndex.ts +8 -3
- package/src/simple-tree/api/storedSchema.ts +1 -2
- package/src/simple-tree/api/tree.ts +2 -2
- package/src/simple-tree/api/treeBeta.ts +4 -1
- package/src/simple-tree/api/treeNodeApi.ts +5 -8
- package/src/simple-tree/api/typesUnsafe.ts +5 -4
- package/src/simple-tree/api/verboseTree.ts +3 -6
- package/src/simple-tree/api/viewSchemaToSimpleSchema.ts +1 -1
- package/src/simple-tree/core/README.md +1 -1
- package/src/simple-tree/core/allowedTypes.ts +496 -0
- package/src/simple-tree/core/context.ts +3 -10
- package/src/simple-tree/core/getOrCreateNode.ts +1 -1
- package/src/simple-tree/core/index.ts +62 -9
- package/src/simple-tree/core/treeNodeKernel.ts +12 -6
- package/src/simple-tree/core/treeNodeSchema.ts +247 -63
- package/src/simple-tree/{treeNodeValid.ts → core/treeNodeValid.ts} +59 -15
- package/src/simple-tree/core/unhydratedFlexTree.ts +1 -1
- package/src/simple-tree/core/walkSchema.ts +9 -5
- package/src/simple-tree/createContext.ts +26 -2
- package/src/simple-tree/discrepancies.ts +648 -0
- package/src/simple-tree/fieldSchema.ts +734 -0
- package/src/simple-tree/index.ts +41 -31
- package/src/simple-tree/leafNodeSchema.ts +137 -5
- package/src/simple-tree/node-kinds/array/arrayNode.ts +141 -30
- package/src/simple-tree/node-kinds/array/arrayNodeTypes.ts +5 -7
- package/src/simple-tree/node-kinds/common.ts +60 -0
- package/src/simple-tree/node-kinds/index.ts +2 -0
- package/src/simple-tree/node-kinds/map/mapNode.ts +91 -33
- package/src/simple-tree/node-kinds/map/mapNodeTypes.ts +5 -7
- package/src/simple-tree/node-kinds/object/index.ts +2 -0
- package/src/simple-tree/node-kinds/object/objectNode.ts +205 -25
- package/src/simple-tree/node-kinds/object/objectNodeTypes.ts +22 -5
- package/src/simple-tree/node-kinds/record/recordNode.ts +68 -26
- package/src/simple-tree/node-kinds/record/recordNodeTypes.ts +6 -8
- package/src/simple-tree/prepareForInsertion.ts +7 -6
- package/src/simple-tree/simpleSchema.ts +2 -2
- package/src/simple-tree/toStoredSchema.ts +2 -3
- package/src/simple-tree/unhydratedFlexTreeFromInsertable.ts +12 -494
- package/src/simple-tree/unsafeUnknownSchema.ts +70 -0
- package/src/simple-tree/walkFieldSchema.ts +1 -1
- package/src/treeFactory.ts +0 -1
- package/dist/feature-libraries/modular-schema/discrepancies.d.ts.map +0 -1
- package/dist/feature-libraries/modular-schema/discrepancies.js +0 -361
- package/dist/feature-libraries/modular-schema/discrepancies.js.map +0 -1
- package/dist/shared-tree/checkoutFlexTreeView.d.ts +0 -58
- package/dist/shared-tree/checkoutFlexTreeView.d.ts.map +0 -1
- package/dist/shared-tree/checkoutFlexTreeView.js +0 -77
- package/dist/shared-tree/checkoutFlexTreeView.js.map +0 -1
- package/dist/simple-tree/flexList.d.ts.map +0 -1
- package/dist/simple-tree/flexList.js.map +0 -1
- package/dist/simple-tree/schemaTypes.d.ts +0 -856
- package/dist/simple-tree/schemaTypes.d.ts.map +0 -1
- package/dist/simple-tree/schemaTypes.js.map +0 -1
- package/dist/simple-tree/treeNodeValid.d.ts.map +0 -1
- package/dist/simple-tree/treeNodeValid.js.map +0 -1
- package/lib/feature-libraries/modular-schema/discrepancies.d.ts.map +0 -1
- package/lib/feature-libraries/modular-schema/discrepancies.js +0 -354
- package/lib/feature-libraries/modular-schema/discrepancies.js.map +0 -1
- package/lib/shared-tree/checkoutFlexTreeView.d.ts +0 -58
- package/lib/shared-tree/checkoutFlexTreeView.d.ts.map +0 -1
- package/lib/shared-tree/checkoutFlexTreeView.js +0 -72
- package/lib/shared-tree/checkoutFlexTreeView.js.map +0 -1
- package/lib/simple-tree/flexList.d.ts.map +0 -1
- package/lib/simple-tree/flexList.js.map +0 -1
- package/lib/simple-tree/schemaTypes.d.ts +0 -856
- package/lib/simple-tree/schemaTypes.d.ts.map +0 -1
- package/lib/simple-tree/schemaTypes.js.map +0 -1
- package/lib/simple-tree/treeNodeValid.d.ts.map +0 -1
- package/lib/simple-tree/treeNodeValid.js.map +0 -1
- package/src/feature-libraries/modular-schema/discrepancies.ts +0 -567
- package/src/shared-tree/checkoutFlexTreeView.ts +0 -100
- package/src/simple-tree/schemaTypes.ts +0 -1420
- /package/dist/simple-tree/{flexList.d.ts → core/flexList.d.ts} +0 -0
- /package/dist/simple-tree/{flexList.js → core/flexList.js} +0 -0
- /package/lib/simple-tree/{flexList.d.ts → core/flexList.d.ts} +0 -0
- /package/lib/simple-tree/{flexList.js → core/flexList.js} +0 -0
- /package/src/simple-tree/{flexList.ts → core/flexList.ts} +0 -0
|
@@ -3,30 +3,26 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import {
|
|
6
|
+
import { assert, unreachableCase } from "@fluidframework/core-utils/internal";
|
|
7
7
|
|
|
8
|
+
import type { TreeStoredSchema } from "../../core/index.js";
|
|
8
9
|
import {
|
|
9
|
-
|
|
10
|
-
type TreeNodeStoredSchema,
|
|
11
|
-
type Adapters,
|
|
12
|
-
type TreeFieldStoredSchema,
|
|
13
|
-
type TreeNodeSchemaIdentifier,
|
|
14
|
-
type TreeStoredSchema,
|
|
15
|
-
} from "../../core/index.js";
|
|
16
|
-
import {
|
|
10
|
+
allowsRepoSuperset,
|
|
17
11
|
FieldKinds,
|
|
18
12
|
type FullSchemaPolicy,
|
|
19
|
-
type FieldDiscrepancy,
|
|
20
|
-
getAllowedContentDiscrepancies,
|
|
21
13
|
isNeverTree,
|
|
22
|
-
PosetComparisonResult,
|
|
23
|
-
fieldRealizer,
|
|
24
|
-
comparePosetElements,
|
|
25
14
|
} from "../../feature-libraries/index.js";
|
|
26
|
-
import type { FieldSchema } from "../
|
|
27
|
-
import { toStoredSchema } from "../toStoredSchema.js";
|
|
15
|
+
import type { FieldSchema } from "../fieldSchema.js";
|
|
28
16
|
|
|
29
17
|
import type { SchemaCompatibilityStatus } from "./tree.js";
|
|
18
|
+
import {
|
|
19
|
+
comparePosetElements,
|
|
20
|
+
fieldRealizer,
|
|
21
|
+
getAllowedContentDiscrepancies,
|
|
22
|
+
PosetComparisonResult,
|
|
23
|
+
type FieldDiscrepancy,
|
|
24
|
+
} from "../discrepancies.js";
|
|
25
|
+
import { toStoredSchema } from "../toStoredSchema.js";
|
|
30
26
|
|
|
31
27
|
/**
|
|
32
28
|
* A collection of View information for schema, including policy.
|
|
@@ -34,21 +30,13 @@ import type { SchemaCompatibilityStatus } from "./tree.js";
|
|
|
34
30
|
* This contains everything needed to determine compatibility with a given stored schema.
|
|
35
31
|
*/
|
|
36
32
|
export class SchemaCompatibilityTester {
|
|
37
|
-
/**
|
|
38
|
-
* Cached conversion of the view schema in the stored schema format.
|
|
39
|
-
*/
|
|
40
|
-
public readonly viewSchemaAsStored: TreeStoredSchema;
|
|
41
|
-
|
|
42
33
|
/**
|
|
43
34
|
* @param viewSchemaRoot - Schema for the root field.
|
|
44
35
|
*/
|
|
45
36
|
public constructor(
|
|
46
37
|
public readonly policy: FullSchemaPolicy,
|
|
47
|
-
public readonly
|
|
48
|
-
|
|
49
|
-
) {
|
|
50
|
-
this.viewSchemaAsStored = toStoredSchema(viewSchemaRoot);
|
|
51
|
-
}
|
|
38
|
+
public readonly viewSchemaRoot: FieldSchema,
|
|
39
|
+
) {}
|
|
52
40
|
|
|
53
41
|
/**
|
|
54
42
|
* Determines the compatibility of a stored document
|
|
@@ -63,9 +51,6 @@ export class SchemaCompatibilityTester {
|
|
|
63
51
|
public checkCompatibility(
|
|
64
52
|
stored: TreeStoredSchema,
|
|
65
53
|
): Omit<SchemaCompatibilityStatus, "canInitialize"> {
|
|
66
|
-
// TODO: support adapters
|
|
67
|
-
// const adapted = this.adaptRepo(stored);
|
|
68
|
-
|
|
69
54
|
// View schema allows a subset of documents that stored schema does, and the discrepancies are allowed by policy
|
|
70
55
|
// determined by the view schema (i.e. objects with extra optional fields in the stored schema have opted into allowing this.
|
|
71
56
|
// In the future, this would also include things like:
|
|
@@ -92,16 +77,7 @@ export class SchemaCompatibilityTester {
|
|
|
92
77
|
canView = false;
|
|
93
78
|
}
|
|
94
79
|
|
|
95
|
-
if (
|
|
96
|
-
discrepancy.view.some(
|
|
97
|
-
(identifier) =>
|
|
98
|
-
!isNeverTree(
|
|
99
|
-
this.policy,
|
|
100
|
-
this.viewSchemaAsStored,
|
|
101
|
-
this.viewSchemaAsStored.nodeSchema.get(identifier),
|
|
102
|
-
),
|
|
103
|
-
)
|
|
104
|
-
) {
|
|
80
|
+
if (discrepancy.view.length > 0) {
|
|
105
81
|
// View schema has extra allowed types that the stored schema does not.
|
|
106
82
|
canView = false;
|
|
107
83
|
}
|
|
@@ -151,32 +127,24 @@ export class SchemaCompatibilityTester {
|
|
|
151
127
|
}
|
|
152
128
|
};
|
|
153
129
|
|
|
154
|
-
for (const discrepancy of getAllowedContentDiscrepancies(
|
|
155
|
-
this.viewSchemaAsStored,
|
|
156
|
-
stored,
|
|
157
|
-
)) {
|
|
130
|
+
for (const discrepancy of getAllowedContentDiscrepancies(this.viewSchemaRoot, stored)) {
|
|
158
131
|
if (!canView && !canUpgrade) {
|
|
159
132
|
break;
|
|
160
133
|
}
|
|
161
134
|
|
|
162
135
|
switch (discrepancy.mismatch) {
|
|
163
136
|
case "nodeKind": {
|
|
164
|
-
const viewNodeSchema = this.viewSchemaAsStored.nodeSchema.get(
|
|
165
|
-
discrepancy.identifier,
|
|
166
|
-
);
|
|
167
137
|
const storedNodeSchema = stored.nodeSchema.get(discrepancy.identifier);
|
|
168
138
|
// We conservatively do not allow node types to change.
|
|
169
139
|
// The only time this might be valid in the sense that the data canonically converts is converting an object node
|
|
170
140
|
// to a map node over the union of all the object fields' types.
|
|
171
141
|
if (discrepancy.stored === undefined) {
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
canView = false;
|
|
179
|
-
}
|
|
142
|
+
// View schema has added a node type that the stored schema doesn't know about.
|
|
143
|
+
// Note that all cases which trigger this should also trigger an AllowedTypeDiscrepancy (where the type is used).
|
|
144
|
+
// This means this case should be redundant and could be removed in the future if there is a reason to do so
|
|
145
|
+
// (like simplifying enablable type support).
|
|
146
|
+
// See the TODO in getAllowedContentDiscrepancies.
|
|
147
|
+
canView = false;
|
|
180
148
|
} else if (discrepancy.view === undefined) {
|
|
181
149
|
const storedIsNever =
|
|
182
150
|
storedNodeSchema !== undefined
|
|
@@ -184,22 +152,18 @@ export class SchemaCompatibilityTester {
|
|
|
184
152
|
: true;
|
|
185
153
|
if (!storedIsNever) {
|
|
186
154
|
// Stored schema has a node type that the view schema doesn't know about.
|
|
155
|
+
// The design of allowUnknownOptionalFields allows adding new optional content to types,
|
|
156
|
+
// and the new optional content can use new types.
|
|
157
|
+
// Therefore this case needs to be supported for viewing.
|
|
158
|
+
// However, it is not supported for upgrade as the stored document must be newer (or at least more general) than the view in this case.
|
|
159
|
+
// The fact that there might be removed trees with a root of this type which only appears in the stored schema is why this must set canUpgrade to false.
|
|
187
160
|
canUpgrade = false;
|
|
188
161
|
}
|
|
189
162
|
} else {
|
|
190
|
-
// Node type exists in both schemas but has changed. We conservatively never allow this.
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
: true;
|
|
195
|
-
const viewIsNever =
|
|
196
|
-
viewNodeSchema !== undefined
|
|
197
|
-
? isNeverTree(this.policy, this.viewSchemaAsStored, viewNodeSchema)
|
|
198
|
-
: true;
|
|
199
|
-
if (!storedIsNever || !viewIsNever) {
|
|
200
|
-
canView = false;
|
|
201
|
-
canUpgrade = false;
|
|
202
|
-
}
|
|
163
|
+
// Node type exists in both schemas but kind has changed. We conservatively never allow this.
|
|
164
|
+
// See note above about cases where this could be allowed if needed.
|
|
165
|
+
canView = false;
|
|
166
|
+
canUpgrade = false;
|
|
203
167
|
}
|
|
204
168
|
break;
|
|
205
169
|
}
|
|
@@ -217,71 +181,17 @@ export class SchemaCompatibilityTester {
|
|
|
217
181
|
}
|
|
218
182
|
}
|
|
219
183
|
|
|
184
|
+
if (canUpgrade) {
|
|
185
|
+
assert(
|
|
186
|
+
allowsRepoSuperset(this.policy, stored, toStoredSchema(this.viewSchemaRoot)),
|
|
187
|
+
0xbf2 /* View schema must be a superset of the stored schema to allow upgrade */,
|
|
188
|
+
);
|
|
189
|
+
}
|
|
190
|
+
|
|
220
191
|
return {
|
|
221
192
|
canView,
|
|
222
193
|
canUpgrade,
|
|
223
194
|
isEquivalent: canView && canUpgrade,
|
|
224
195
|
};
|
|
225
196
|
}
|
|
226
|
-
|
|
227
|
-
/**
|
|
228
|
-
* Compute a schema that `original` could be viewed as using adapters as needed.
|
|
229
|
-
*
|
|
230
|
-
* TODO: have a way for callers to get invalidated on schema updates.
|
|
231
|
-
*/
|
|
232
|
-
public adaptRepo(stored: TreeStoredSchema): AdaptedViewSchema {
|
|
233
|
-
// Sanity check on adapters:
|
|
234
|
-
// it's probably a bug if they use the never types,
|
|
235
|
-
// since there never is a reason to have a never type as an adapter input,
|
|
236
|
-
// and its impossible for an adapter to be correctly implemented if its output type is never
|
|
237
|
-
// (unless its input is also never).
|
|
238
|
-
|
|
239
|
-
for (const adapter of this.adapters?.tree ?? []) {
|
|
240
|
-
if (
|
|
241
|
-
isNeverTree(
|
|
242
|
-
this.policy,
|
|
243
|
-
this.viewSchemaAsStored,
|
|
244
|
-
this.viewSchemaAsStored.nodeSchema.get(adapter.output),
|
|
245
|
-
)
|
|
246
|
-
) {
|
|
247
|
-
fail(0xb3d /* tree adapter for stored adapter.output should not be never */);
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
|
|
251
|
-
const adapted = {
|
|
252
|
-
rootFieldSchema: this.adaptField(stored.rootFieldSchema),
|
|
253
|
-
nodeSchema: new Map<TreeNodeSchemaIdentifier, TreeNodeStoredSchema>(),
|
|
254
|
-
};
|
|
255
|
-
|
|
256
|
-
for (const [key, schema] of stored.nodeSchema) {
|
|
257
|
-
const adapatedTree = this.adaptTree(schema);
|
|
258
|
-
adapted.nodeSchema.set(key, adapatedTree);
|
|
259
|
-
}
|
|
260
|
-
|
|
261
|
-
// TODO: subset these adapters to the ones that were needed/used.
|
|
262
|
-
return new AdaptedViewSchema(this.adapters, adapted);
|
|
263
|
-
}
|
|
264
|
-
|
|
265
|
-
/**
|
|
266
|
-
* Adapt original such that it allows member types which can be adapted to its specified types.
|
|
267
|
-
*/
|
|
268
|
-
private adaptField(original: TreeFieldStoredSchema): TreeFieldStoredSchema {
|
|
269
|
-
if (original.types !== undefined) {
|
|
270
|
-
const types: Set<TreeNodeSchemaIdentifier> = new Set(original.types);
|
|
271
|
-
for (const treeAdapter of this.adapters?.tree ?? []) {
|
|
272
|
-
if (types.has(treeAdapter.input)) {
|
|
273
|
-
types.delete(treeAdapter.input);
|
|
274
|
-
types.add(treeAdapter.output);
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
|
|
278
|
-
return { kind: original.kind, types, persistedMetadata: undefined };
|
|
279
|
-
}
|
|
280
|
-
return original;
|
|
281
|
-
}
|
|
282
|
-
|
|
283
|
-
private adaptTree(original: TreeNodeStoredSchema): TreeNodeStoredSchema {
|
|
284
|
-
// TODO: support adapters like missing field adapters.
|
|
285
|
-
return original;
|
|
286
|
-
}
|
|
287
197
|
}
|
|
@@ -4,11 +4,11 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import { UsageError } from "@fluidframework/telemetry-utils/internal";
|
|
7
|
-
import { fail } from "@fluidframework/core-utils/internal";
|
|
7
|
+
import { assert, fail } from "@fluidframework/core-utils/internal";
|
|
8
8
|
|
|
9
9
|
import type { SchemaFactory, ScopedSchemaName } from "./schemaFactory.js";
|
|
10
|
-
import type { NodeFromSchema } from "../schemaTypes.js";
|
|
11
10
|
import type {
|
|
11
|
+
NodeFromSchema,
|
|
12
12
|
InternalTreeNode,
|
|
13
13
|
NodeKind,
|
|
14
14
|
TreeNode,
|
|
@@ -47,6 +47,12 @@ export function singletonSchema<TScope extends string, TName extends string | nu
|
|
|
47
47
|
public get value(): TName {
|
|
48
48
|
return name;
|
|
49
49
|
}
|
|
50
|
+
|
|
51
|
+
public static override toString(): string {
|
|
52
|
+
return `SingletonSchema(${name})`;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
public static [Symbol.toStringTag] = `SingletonSchema(${name})`;
|
|
50
56
|
}
|
|
51
57
|
|
|
52
58
|
type SingletonNodeType = TreeNode & { readonly value: TName };
|
|
@@ -71,10 +77,16 @@ export function singletonSchema<TScope extends string, TName extends string | nu
|
|
|
71
77
|
|
|
72
78
|
/**
|
|
73
79
|
* Converts an enum into a collection of schema which can be used in a union.
|
|
80
|
+
*
|
|
81
|
+
* @typeParam TScope - The scope of the provided factory.
|
|
82
|
+
* There is a known issue where if a factory is provided that is typed as a {@link SchemaFactoryAlpha}, and its scope contains a "." character,
|
|
83
|
+
* the inferred type for the scope will end up as a union of the scope up to the first "." character and the scope as it should be.
|
|
84
|
+
* This can be mitigated by explicitly providing the TScope type parameter or by typing the provided factory as a {@link SchemaFactory} instead of a {@link SchemaFactoryAlpha}.
|
|
85
|
+
*
|
|
74
86
|
* @remarks
|
|
75
87
|
* The string value of the enum is used as the name of the schema: callers must ensure that it is stable and unique.
|
|
76
88
|
* Numeric enums values have the value implicitly converted into a string.
|
|
77
|
-
* Consider making a dedicated schema factory with a nested scope to avoid the enum members colliding with other schema.
|
|
89
|
+
* Consider making a dedicated schema factory with a nested scope (for example using {@link SchemaFactoryAlpha.scopedFactory}) to avoid the enum members colliding with other schema.
|
|
78
90
|
* @example
|
|
79
91
|
* ```typescript
|
|
80
92
|
* const schemaFactory = new SchemaFactory("com.myApp");
|
|
@@ -105,7 +117,8 @@ export function singletonSchema<TScope extends string, TName extends string | nu
|
|
|
105
117
|
* }
|
|
106
118
|
* ```
|
|
107
119
|
* @privateRemarks
|
|
108
|
-
*
|
|
120
|
+
* TODO: AB#43345: see TScope known issue above, and other references to this work item.
|
|
121
|
+
*
|
|
109
122
|
* @see {@link enumFromStrings} for a similar function that works on arrays of strings instead of an enum.
|
|
110
123
|
* @beta
|
|
111
124
|
*/
|
|
@@ -144,7 +157,7 @@ export function adaptEnum<
|
|
|
144
157
|
: never;
|
|
145
158
|
};
|
|
146
159
|
const out = factoryOut as typeof factoryOut & TOut & { readonly schema: SchemaArray };
|
|
147
|
-
for (const [key, value] of
|
|
160
|
+
for (const [key, value] of enumEntries(members)) {
|
|
148
161
|
const schema = singletonSchema(factory, value);
|
|
149
162
|
schemaArray.push(schema);
|
|
150
163
|
Object.defineProperty(out, key, {
|
|
@@ -165,6 +178,38 @@ export function adaptEnum<
|
|
|
165
178
|
return out;
|
|
166
179
|
}
|
|
167
180
|
|
|
181
|
+
/**
|
|
182
|
+
* Returns en "entries" (like Object.entries) for an enum object, omitting the
|
|
183
|
+
* {@link https://www.typescriptlang.org/docs/handbook/enums.html#reverse-mappings|reverse mappings}
|
|
184
|
+
*/
|
|
185
|
+
export function enumEntries(
|
|
186
|
+
enumObject: Record<string, string | number>,
|
|
187
|
+
): [string, string | number][] {
|
|
188
|
+
// Skip reverse mapping for numeric entries.
|
|
189
|
+
// For numeric entries, TypeScript defines an additional property keyed with the number implicitly converted to a string.
|
|
190
|
+
// Note TypeScript can overwrite its own enum entries in some edge cases (see https://github.com/microsoft/TypeScript/issues/48956), so it's not possible to handle all cases correctly.
|
|
191
|
+
return Object.entries(enumObject).filter(([key, value]) => {
|
|
192
|
+
// All reverse mapping must also have a inverse mapping (the regular forward mapping) to a number:
|
|
193
|
+
const inverse = enumObject[value];
|
|
194
|
+
if (typeof inverse !== "number") {
|
|
195
|
+
// Known not to be a reverse mapping, so keep it.
|
|
196
|
+
return true;
|
|
197
|
+
}
|
|
198
|
+
// At this point, it is expected that all remaining cases are reverse mappings,
|
|
199
|
+
// but do some asserts to ensure that the above logic is sufficient.
|
|
200
|
+
assert(
|
|
201
|
+
typeof value === "string",
|
|
202
|
+
0xbe4 /* expected reverse mapping and thus a string value */,
|
|
203
|
+
);
|
|
204
|
+
assert(
|
|
205
|
+
Number.parseFloat(key).toString() === key,
|
|
206
|
+
0xbe5 /* expected reverse mapping and thus a key that is a normalized number */,
|
|
207
|
+
);
|
|
208
|
+
// Discard the reverse mapping.
|
|
209
|
+
return false;
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
|
|
168
213
|
/**
|
|
169
214
|
* Converts an array of distinct strings into a collection of schema which can be used like an enum style union.
|
|
170
215
|
* @remarks
|
|
@@ -13,11 +13,13 @@ import type { TreeValue } from "../../core/index.js";
|
|
|
13
13
|
// eslint-disable-next-line unused-imports/no-unused-imports, @typescript-eslint/no-unused-vars
|
|
14
14
|
import type { TreeAlpha } from "../../shared-tree/index.js";
|
|
15
15
|
import {
|
|
16
|
+
type JsonCompatibleReadOnlyObject,
|
|
16
17
|
type RestrictiveStringRecord,
|
|
17
18
|
compareSets,
|
|
18
19
|
getOrCreate,
|
|
19
20
|
isReadonlyArray,
|
|
20
21
|
} from "../../util/index.js";
|
|
22
|
+
import { normalizeAllowedTypes, markSchemaMostDerived, isLazy } from "../core/index.js";
|
|
21
23
|
import type {
|
|
22
24
|
NodeKind,
|
|
23
25
|
WithType,
|
|
@@ -26,8 +28,12 @@ import type {
|
|
|
26
28
|
TreeNodeSchemaNonClass,
|
|
27
29
|
TreeNodeSchemaBoth,
|
|
28
30
|
UnhydratedFlexTreeNode,
|
|
31
|
+
NodeSchemaMetadata,
|
|
32
|
+
ImplicitAnnotatedAllowedTypes,
|
|
33
|
+
UnannotateImplicitAllowedTypes,
|
|
34
|
+
ImplicitAllowedTypes,
|
|
35
|
+
InsertableTreeNodeFromImplicitAllowedTypes,
|
|
29
36
|
} from "../core/index.js";
|
|
30
|
-
import { isLazy } from "../flexList.js";
|
|
31
37
|
import {
|
|
32
38
|
booleanSchema,
|
|
33
39
|
handleSchema,
|
|
@@ -45,26 +51,19 @@ import {
|
|
|
45
51
|
type InsertableObjectFromSchemaRecord,
|
|
46
52
|
type TreeMapNode,
|
|
47
53
|
type TreeObjectNode,
|
|
54
|
+
type UnannotateSchemaRecord,
|
|
48
55
|
} from "../node-kinds/index.js";
|
|
49
56
|
import {
|
|
50
57
|
FieldKind,
|
|
51
58
|
type FieldSchema,
|
|
52
|
-
type ImplicitAllowedTypes,
|
|
53
59
|
type ImplicitFieldSchema,
|
|
54
|
-
type InsertableTreeNodeFromImplicitAllowedTypes,
|
|
55
60
|
type FieldProps,
|
|
56
61
|
createFieldSchema,
|
|
57
62
|
type DefaultProvider,
|
|
58
63
|
getDefaultProvider,
|
|
59
|
-
markSchemaMostDerived,
|
|
60
64
|
type FieldSchemaAlpha,
|
|
61
|
-
type ImplicitAnnotatedAllowedTypes,
|
|
62
|
-
type UnannotateImplicitAllowedTypes,
|
|
63
|
-
type UnannotateSchemaRecord,
|
|
64
|
-
type NodeSchemaOptionsAlpha,
|
|
65
|
-
normalizeAllowedTypes,
|
|
66
65
|
type FieldPropsAlpha,
|
|
67
|
-
} from "../
|
|
66
|
+
} from "../fieldSchema.js";
|
|
68
67
|
|
|
69
68
|
import { createFieldSchemaUnsafe } from "./schemaFactoryRecursive.js";
|
|
70
69
|
import type { System_Unsafe, FieldSchemaAlphaUnsafe } from "./typesUnsafe.js";
|
|
@@ -1312,3 +1311,39 @@ export function structuralName<const T extends string>(
|
|
|
1312
1311
|
* Using this is only better than creating fully random V4 UUIDs because it reduces the entropy making it possible for things like text compression to work slightly better.
|
|
1313
1312
|
*/
|
|
1314
1313
|
const globalIdentifierAllocator: IIdCompressor = createIdCompressor();
|
|
1314
|
+
|
|
1315
|
+
/**
|
|
1316
|
+
* Additional information to provide to Node Schema creation.
|
|
1317
|
+
*
|
|
1318
|
+
* @typeParam TCustomMetadata - Custom metadata properties to associate with the Node Schema.
|
|
1319
|
+
* See {@link NodeSchemaMetadata.custom}.
|
|
1320
|
+
*
|
|
1321
|
+
* @sealed
|
|
1322
|
+
* @public
|
|
1323
|
+
*/
|
|
1324
|
+
export interface NodeSchemaOptions<out TCustomMetadata = unknown> {
|
|
1325
|
+
/**
|
|
1326
|
+
* Optional metadata to associate with the Node Schema.
|
|
1327
|
+
*
|
|
1328
|
+
* @remarks
|
|
1329
|
+
* Note: this metadata is not persisted nor made part of the collaborative state; it is strictly client-local.
|
|
1330
|
+
* Different clients in the same collaborative session may see different metadata for the same field.
|
|
1331
|
+
*/
|
|
1332
|
+
readonly metadata?: NodeSchemaMetadata<TCustomMetadata> | undefined;
|
|
1333
|
+
}
|
|
1334
|
+
|
|
1335
|
+
/**
|
|
1336
|
+
* Additional information to provide to Node Schema creation. Includes fields for alpha features.
|
|
1337
|
+
*
|
|
1338
|
+
* @typeParam TCustomMetadata - Custom metadata properties to associate with the Node Schema.
|
|
1339
|
+
* See {@link NodeSchemaMetadata.custom}.
|
|
1340
|
+
*
|
|
1341
|
+
* @alpha
|
|
1342
|
+
*/
|
|
1343
|
+
export interface NodeSchemaOptionsAlpha<out TCustomMetadata = unknown>
|
|
1344
|
+
extends NodeSchemaOptions<TCustomMetadata> {
|
|
1345
|
+
/**
|
|
1346
|
+
* The persisted metadata for this schema element.
|
|
1347
|
+
*/
|
|
1348
|
+
readonly persistedMetadata?: JsonCompatibleReadOnlyObject | undefined;
|
|
1349
|
+
}
|
|
@@ -20,16 +20,11 @@ import {
|
|
|
20
20
|
SchemaFactory,
|
|
21
21
|
schemaStatics,
|
|
22
22
|
structuralName,
|
|
23
|
+
type NodeSchemaOptionsAlpha,
|
|
23
24
|
type SchemaFactoryObjectOptions,
|
|
24
25
|
type ScopedSchemaName,
|
|
25
26
|
} from "./schemaFactory.js";
|
|
26
|
-
import type {
|
|
27
|
-
ImplicitAllowedTypes,
|
|
28
|
-
ImplicitAnnotatedAllowedTypes,
|
|
29
|
-
ImplicitAnnotatedFieldSchema,
|
|
30
|
-
ImplicitFieldSchema,
|
|
31
|
-
NodeSchemaOptionsAlpha,
|
|
32
|
-
} from "../schemaTypes.js";
|
|
27
|
+
import type { ImplicitAnnotatedFieldSchema, ImplicitFieldSchema } from "../fieldSchema.js";
|
|
33
28
|
import type { RestrictiveStringRecord } from "../../util/index.js";
|
|
34
29
|
import type {
|
|
35
30
|
NodeKind,
|
|
@@ -38,6 +33,8 @@ import type {
|
|
|
38
33
|
TreeNodeSchemaClass,
|
|
39
34
|
TreeNodeSchemaNonClass,
|
|
40
35
|
WithType,
|
|
36
|
+
ImplicitAllowedTypes,
|
|
37
|
+
ImplicitAnnotatedAllowedTypes,
|
|
41
38
|
} from "../core/index.js";
|
|
42
39
|
import type {
|
|
43
40
|
ArrayNodeCustomizableSchemaUnsafe,
|
|
@@ -4,16 +4,21 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import type { RestrictiveStringRecord } from "../../util/index.js";
|
|
7
|
-
import type {
|
|
7
|
+
import type {
|
|
8
|
+
NodeKind,
|
|
9
|
+
TreeNodeSchema,
|
|
10
|
+
WithType,
|
|
11
|
+
TreeNode,
|
|
12
|
+
ImplicitAllowedTypes,
|
|
13
|
+
InsertableTreeNodeFromImplicitAllowedTypes,
|
|
14
|
+
} from "../core/index.js";
|
|
8
15
|
import type { InsertableObjectFromSchemaRecord } from "../node-kinds/index.js";
|
|
9
16
|
import {
|
|
10
17
|
type FieldKind,
|
|
11
18
|
type FieldProps,
|
|
12
19
|
createFieldSchema,
|
|
13
|
-
type ImplicitAllowedTypes,
|
|
14
20
|
type ImplicitFieldSchema,
|
|
15
|
-
|
|
16
|
-
} from "../schemaTypes.js";
|
|
21
|
+
} from "../fieldSchema.js";
|
|
17
22
|
|
|
18
23
|
import type { FieldSchemaAlphaUnsafe, System_Unsafe } from "./typesUnsafe.js";
|
|
19
24
|
|
|
@@ -5,14 +5,13 @@
|
|
|
5
5
|
|
|
6
6
|
import { unreachableCase, fail } from "@fluidframework/core-utils/internal";
|
|
7
7
|
|
|
8
|
-
import { NodeKind, type TreeNodeSchema } from "../core/index.js";
|
|
8
|
+
import { NodeKind, type TreeNodeSchema, type AllowedTypes } from "../core/index.js";
|
|
9
9
|
import {
|
|
10
10
|
type FieldSchema,
|
|
11
|
-
type AllowedTypes,
|
|
12
11
|
type FieldSchemaAlpha,
|
|
13
12
|
FieldKind,
|
|
14
13
|
type FieldProps,
|
|
15
|
-
} from "../
|
|
14
|
+
} from "../fieldSchema.js";
|
|
16
15
|
import type {
|
|
17
16
|
SimpleFieldSchema,
|
|
18
17
|
SimpleNodeSchema,
|
|
@@ -20,8 +20,13 @@ import {
|
|
|
20
20
|
type KeyFinder,
|
|
21
21
|
} from "../../feature-libraries/index.js";
|
|
22
22
|
import { brand } from "../../util/index.js";
|
|
23
|
-
import type { ImplicitFieldSchema
|
|
24
|
-
import {
|
|
23
|
+
import type { ImplicitFieldSchema } from "../fieldSchema.js";
|
|
24
|
+
import {
|
|
25
|
+
treeNodeFromAnchor,
|
|
26
|
+
type TreeNode,
|
|
27
|
+
type TreeNodeSchema,
|
|
28
|
+
type NodeFromSchema,
|
|
29
|
+
} from "../core/index.js";
|
|
25
30
|
import { treeNodeApi } from "./treeNodeApi.js";
|
|
26
31
|
import type { TreeView } from "./tree.js";
|
|
27
32
|
import { walkFieldSchema } from "../walkFieldSchema.js";
|
|
@@ -180,7 +185,7 @@ export function createSimpleTreeIndex<
|
|
|
180
185
|
};
|
|
181
186
|
|
|
182
187
|
const index = new AnchorTreeIndex<TKey, TValue>(
|
|
183
|
-
(view as SchematizingSimpleTreeView<TFieldSchema>).
|
|
188
|
+
(view as SchematizingSimpleTreeView<TFieldSchema>).checkout.forest,
|
|
184
189
|
schemaIndexer,
|
|
185
190
|
(anchorNodes) => {
|
|
186
191
|
const simpleTreeNodes: TreeNode[] = [];
|
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
// eslint-disable-next-line import/no-internal-modules
|
|
17
17
|
} from "../../feature-libraries/schema-index/index.js";
|
|
18
18
|
import type { JsonCompatible } from "../../util/index.js";
|
|
19
|
-
import { normalizeFieldSchema, type ImplicitFieldSchema } from "../
|
|
19
|
+
import { normalizeFieldSchema, type ImplicitFieldSchema } from "../fieldSchema.js";
|
|
20
20
|
import type { SimpleTreeSchema } from "../simpleSchema.js";
|
|
21
21
|
import { simpleToStoredSchema } from "../toStoredSchema.js";
|
|
22
22
|
|
|
@@ -103,7 +103,6 @@ export function comparePersistedSchema(
|
|
|
103
103
|
const stored = schemaCodec.decode(persisted as FormatV1);
|
|
104
104
|
const viewSchema = new SchemaCompatibilityTester(
|
|
105
105
|
defaultSchemaPolicy,
|
|
106
|
-
{},
|
|
107
106
|
normalizeFieldSchema(view),
|
|
108
107
|
);
|
|
109
108
|
return viewSchema.checkCompatibility(stored);
|
|
@@ -22,8 +22,8 @@ import type {
|
|
|
22
22
|
ReadableField,
|
|
23
23
|
ReadSchema,
|
|
24
24
|
TreeFieldFromImplicitField,
|
|
25
|
-
|
|
26
|
-
} from "../
|
|
25
|
+
} from "../fieldSchema.js";
|
|
26
|
+
import type { UnsafeUnknownSchema } from "../unsafeUnknownSchema.js";
|
|
27
27
|
import type { SimpleTreeSchema } from "../simpleSchema.js";
|
|
28
28
|
|
|
29
29
|
import type { TreeViewConfiguration } from "./configuration.js";
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
type Unhydrated,
|
|
12
12
|
type WithType,
|
|
13
13
|
} from "../core/index.js";
|
|
14
|
-
import type { ImplicitFieldSchema, TreeFieldFromImplicitField } from "../
|
|
14
|
+
import type { ImplicitFieldSchema, TreeFieldFromImplicitField } from "../fieldSchema.js";
|
|
15
15
|
|
|
16
16
|
import { createFromCursor } from "./create.js";
|
|
17
17
|
import type { TreeChangeEvents } from "./treeChangeEvents.js";
|
|
@@ -127,6 +127,9 @@ export interface TreeBeta {
|
|
|
127
127
|
* - Value node types (i.e., numbers, strings, booleans, nulls and Fluid handles) will be returned as is.
|
|
128
128
|
*
|
|
129
129
|
* - The identifiers in the node's subtree will be preserved, i.e., they are not replaced with new values.
|
|
130
|
+
*
|
|
131
|
+
* @privateRemarks
|
|
132
|
+
* TODO: AB#43548: How this handles unknown optional fields needs to be figured out, tested and documented.
|
|
130
133
|
*/
|
|
131
134
|
clone<const TSchema extends ImplicitFieldSchema>(
|
|
132
135
|
node: TreeFieldFromImplicitField<TSchema>,
|
|
@@ -8,14 +8,7 @@ import { assert, oob, fail, unreachableCase } from "@fluidframework/core-utils/i
|
|
|
8
8
|
import { EmptyKey, rootFieldKey } from "../../core/index.js";
|
|
9
9
|
import { type TreeStatus, isTreeValue, FieldKinds } from "../../feature-libraries/index.js";
|
|
10
10
|
import { extractFromOpaque } from "../../util/index.js";
|
|
11
|
-
import {
|
|
12
|
-
type TreeLeafValue,
|
|
13
|
-
type ImplicitFieldSchema,
|
|
14
|
-
FieldSchema,
|
|
15
|
-
type ImplicitAllowedTypes,
|
|
16
|
-
type TreeNodeFromImplicitAllowedTypes,
|
|
17
|
-
normalizeAllowedTypes,
|
|
18
|
-
} from "../schemaTypes.js";
|
|
11
|
+
import { type ImplicitFieldSchema, FieldSchema } from "../fieldSchema.js";
|
|
19
12
|
import {
|
|
20
13
|
booleanSchema,
|
|
21
14
|
handleSchema,
|
|
@@ -36,6 +29,10 @@ import {
|
|
|
36
29
|
getOrCreateNodeFromInnerNode,
|
|
37
30
|
typeSchemaSymbol,
|
|
38
31
|
getOrCreateInnerNode,
|
|
32
|
+
type TreeLeafValue,
|
|
33
|
+
type ImplicitAllowedTypes,
|
|
34
|
+
type TreeNodeFromImplicitAllowedTypes,
|
|
35
|
+
normalizeAllowedTypes,
|
|
39
36
|
} from "../core/index.js";
|
|
40
37
|
import type { TreeChangeEvents } from "./treeChangeEvents.js";
|
|
41
38
|
import { isArrayNodeSchema, isObjectNodeSchema } from "../node-kinds/index.js";
|
|
@@ -15,9 +15,7 @@ import type {
|
|
|
15
15
|
FieldKind,
|
|
16
16
|
FieldSchema,
|
|
17
17
|
FieldSchemaAlpha,
|
|
18
|
-
|
|
19
|
-
TreeLeafValue,
|
|
20
|
-
} from "../schemaTypes.js";
|
|
18
|
+
} from "../fieldSchema.js";
|
|
21
19
|
import type {
|
|
22
20
|
NodeKind,
|
|
23
21
|
WithType,
|
|
@@ -27,9 +25,12 @@ import type {
|
|
|
27
25
|
TreeNodeSchema,
|
|
28
26
|
TreeNodeSchemaCore,
|
|
29
27
|
TreeNodeSchemaClass,
|
|
28
|
+
ImplicitAllowedTypes,
|
|
29
|
+
TreeLeafValue,
|
|
30
|
+
FlexListToUnion,
|
|
31
|
+
LazyItem,
|
|
30
32
|
} from "../core/index.js";
|
|
31
33
|
import type { TreeArrayNode } from "../node-kinds/index.js";
|
|
32
|
-
import type { FlexListToUnion, LazyItem } from "../flexList.js";
|
|
33
34
|
import type { SimpleArrayNodeSchema, SimpleMapNodeSchema } from "../simpleSchema.js";
|
|
34
35
|
|
|
35
36
|
/*
|
|
@@ -17,12 +17,9 @@ import {
|
|
|
17
17
|
type ITreeCursorSynchronous,
|
|
18
18
|
} from "../../core/index.js";
|
|
19
19
|
import { brand } from "../../util/index.js";
|
|
20
|
-
import type {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
ImplicitAllowedTypes,
|
|
24
|
-
} from "../schemaTypes.js";
|
|
25
|
-
import { NodeKind, type TreeNodeSchema } from "../core/index.js";
|
|
20
|
+
import type { ImplicitFieldSchema } from "../fieldSchema.js";
|
|
21
|
+
import { NodeKind } from "../core/index.js";
|
|
22
|
+
import type { TreeNodeSchema, ImplicitAllowedTypes, TreeLeafValue } from "../core/index.js";
|
|
26
23
|
import {
|
|
27
24
|
isTreeValue,
|
|
28
25
|
stackTreeFieldCursor,
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import { assert, unreachableCase } from "@fluidframework/core-utils/internal";
|
|
7
|
-
import { normalizeFieldSchema, type ImplicitFieldSchema } from "../
|
|
7
|
+
import { normalizeFieldSchema, type ImplicitFieldSchema } from "../fieldSchema.js";
|
|
8
8
|
import type {
|
|
9
9
|
SimpleArrayNodeSchema,
|
|
10
10
|
SimpleFieldSchema,
|