@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
package/src/simple-tree/index.ts
CHANGED
|
@@ -27,7 +27,35 @@ export {
|
|
|
27
27
|
getOrCreateNodeFromInnerNode,
|
|
28
28
|
getOrCreateNodeFromInnerUnboxedNode,
|
|
29
29
|
getKernel,
|
|
30
|
+
type NodeFromSchema,
|
|
31
|
+
isTreeNodeSchemaClass,
|
|
32
|
+
type TreeNodeFromImplicitAllowedTypes,
|
|
33
|
+
type InsertableTreeNodeFromImplicitAllowedTypes,
|
|
34
|
+
type TreeLeafValue,
|
|
35
|
+
type AllowedTypes,
|
|
36
|
+
type InsertableTreeNodeFromAllowedTypes,
|
|
37
|
+
type InsertableTypedNode,
|
|
38
|
+
type NodeBuilderData,
|
|
39
|
+
type Input,
|
|
40
|
+
normalizeAllowedTypes,
|
|
41
|
+
type NodeSchemaMetadata,
|
|
42
|
+
type ImplicitAllowedTypes,
|
|
43
|
+
type ImplicitAnnotatedAllowedTypes,
|
|
44
|
+
type UnannotateImplicitAllowedTypes,
|
|
45
|
+
type AllowedTypesMetadata,
|
|
46
|
+
evaluateLazySchema,
|
|
47
|
+
type UnannotateAllowedTypes,
|
|
48
|
+
type UnannotateAllowedType,
|
|
49
|
+
type UnannotateAllowedTypesList,
|
|
50
|
+
type UnannotateAllowedTypeOrLazyItem,
|
|
51
|
+
type AllowedTypeMetadata,
|
|
52
|
+
type AnnotatedAllowedTypes,
|
|
53
|
+
type LazyItem,
|
|
54
|
+
type FlexList,
|
|
55
|
+
type FlexListToUnion,
|
|
56
|
+
type ExtractItemType,
|
|
30
57
|
} from "./core/index.js";
|
|
58
|
+
export type { UnsafeUnknownSchema, Insertable } from "./unsafeUnknownSchema.js";
|
|
31
59
|
export {
|
|
32
60
|
type ITree,
|
|
33
61
|
type TreeView,
|
|
@@ -127,6 +155,8 @@ export {
|
|
|
127
155
|
type FixRecursiveRecursionLimit,
|
|
128
156
|
schemaStatics,
|
|
129
157
|
type TreeChangeEvents,
|
|
158
|
+
type NodeSchemaOptions,
|
|
159
|
+
type NodeSchemaOptionsAlpha,
|
|
130
160
|
} from "./api/index.js";
|
|
131
161
|
export type {
|
|
132
162
|
SimpleTreeSchema,
|
|
@@ -142,33 +172,14 @@ export type {
|
|
|
142
172
|
SimpleRecordNodeSchema,
|
|
143
173
|
} from "./simpleSchema.js";
|
|
144
174
|
export {
|
|
145
|
-
type NodeFromSchema,
|
|
146
|
-
isTreeNodeSchemaClass,
|
|
147
175
|
type ImplicitFieldSchema,
|
|
148
176
|
type ImplicitAnnotatedFieldSchema,
|
|
149
177
|
type TreeFieldFromImplicitField,
|
|
150
|
-
type ImplicitAllowedTypes,
|
|
151
|
-
type ImplicitAnnotatedAllowedTypes,
|
|
152
|
-
type UnannotateImplicitAllowedTypes,
|
|
153
|
-
type UnannotateAllowedTypes,
|
|
154
|
-
type UnannotateAllowedType,
|
|
155
|
-
type UnannotateAllowedTypesList,
|
|
156
|
-
type UnannotateAllowedTypeOrLazyItem,
|
|
157
178
|
type UnannotateImplicitFieldSchema,
|
|
158
|
-
type UnannotateSchemaRecord,
|
|
159
|
-
type TreeNodeFromImplicitAllowedTypes,
|
|
160
|
-
type InsertableTreeNodeFromImplicitAllowedTypes,
|
|
161
|
-
type TreeLeafValue,
|
|
162
|
-
type AllowedTypes,
|
|
163
|
-
type AllowedTypeMetadata,
|
|
164
|
-
type AllowedTypesMetadata,
|
|
165
|
-
type AnnotatedAllowedTypes,
|
|
166
179
|
FieldKind,
|
|
167
180
|
FieldSchema,
|
|
168
181
|
type FieldSchemaAlpha,
|
|
169
182
|
type InsertableTreeFieldFromImplicitField,
|
|
170
|
-
type InsertableTypedNode,
|
|
171
|
-
type NodeBuilderData,
|
|
172
183
|
type DefaultProvider,
|
|
173
184
|
type FieldProps,
|
|
174
185
|
type FieldPropsAlpha,
|
|
@@ -178,19 +189,10 @@ export {
|
|
|
178
189
|
type ApplyKind,
|
|
179
190
|
type FieldSchemaMetadata,
|
|
180
191
|
type InsertableField,
|
|
181
|
-
type Insertable,
|
|
182
|
-
type UnsafeUnknownSchema,
|
|
183
|
-
normalizeAllowedTypes,
|
|
184
192
|
type ApplyKindInput,
|
|
185
|
-
type InsertableTreeNodeFromAllowedTypes,
|
|
186
|
-
type Input,
|
|
187
193
|
type ReadableField,
|
|
188
194
|
type ReadSchema,
|
|
189
|
-
|
|
190
|
-
type NodeSchemaOptionsAlpha,
|
|
191
|
-
type NodeSchemaMetadata,
|
|
192
|
-
evaluateLazySchema,
|
|
193
|
-
} from "./schemaTypes.js";
|
|
195
|
+
} from "./fieldSchema.js";
|
|
194
196
|
export { tryGetTreeNodeForField } from "./getTreeNodeForField.js";
|
|
195
197
|
export {
|
|
196
198
|
type ArrayNodeCustomizableSchema,
|
|
@@ -223,6 +225,7 @@ export {
|
|
|
223
225
|
type RecordNodePojoEmulationSchema,
|
|
224
226
|
RecordNodeSchema,
|
|
225
227
|
type TreeRecordNode,
|
|
228
|
+
type UnannotateSchemaRecord,
|
|
226
229
|
} from "./node-kinds/index.js";
|
|
227
230
|
export {
|
|
228
231
|
unhydratedFlexTreeFromInsertable,
|
|
@@ -234,7 +237,7 @@ export {
|
|
|
234
237
|
prepareForInsertion,
|
|
235
238
|
prepareForInsertionContextless,
|
|
236
239
|
} from "./prepareForInsertion.js";
|
|
237
|
-
export { toStoredSchema, getStoredSchema } from "./toStoredSchema.js";
|
|
240
|
+
export { toStoredSchema, getStoredSchema, convertFieldKind } from "./toStoredSchema.js";
|
|
238
241
|
export {
|
|
239
242
|
numberSchema,
|
|
240
243
|
stringSchema,
|
|
@@ -243,4 +246,11 @@ export {
|
|
|
243
246
|
nullSchema,
|
|
244
247
|
} from "./leafNodeSchema.js";
|
|
245
248
|
export type { LeafSchema } from "./leafNodeSchema.js";
|
|
246
|
-
export
|
|
249
|
+
export {
|
|
250
|
+
getAllowedContentDiscrepancies,
|
|
251
|
+
type FieldDiscrepancy,
|
|
252
|
+
comparePosetElements,
|
|
253
|
+
fieldRealizer,
|
|
254
|
+
type Realizer,
|
|
255
|
+
PosetComparisonResult,
|
|
256
|
+
} from "./discrepancies.js";
|
|
@@ -4,23 +4,34 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import { assert } from "@fluidframework/core-utils/internal";
|
|
7
|
+
import { UsageError } from "@fluidframework/telemetry-utils/internal";
|
|
8
|
+
import { isFluidHandle } from "@fluidframework/runtime-utils/internal";
|
|
7
9
|
|
|
8
10
|
import { type TreeValue, ValueSchema } from "../core/index.js";
|
|
9
11
|
import {
|
|
10
12
|
type FlexTreeNode,
|
|
11
13
|
isFlexTreeNode,
|
|
14
|
+
isTreeValue,
|
|
12
15
|
valueSchemaAllows,
|
|
13
16
|
} from "../feature-libraries/index.js";
|
|
14
17
|
|
|
15
18
|
import {
|
|
16
19
|
NodeKind,
|
|
17
|
-
type NormalizedAnnotatedAllowedTypes,
|
|
18
20
|
type TreeNodeSchema,
|
|
19
21
|
type TreeNodeSchemaNonClass,
|
|
22
|
+
type NodeSchemaMetadata,
|
|
23
|
+
type TreeLeafValue,
|
|
24
|
+
type TreeNodeSchemaCorePrivate,
|
|
25
|
+
type TreeNodeSchemaPrivateData,
|
|
26
|
+
privateDataSymbol,
|
|
27
|
+
type TreeNodeSchemaInitializedData,
|
|
28
|
+
CompatibilityLevel,
|
|
29
|
+
type FlexContent,
|
|
20
30
|
} from "./core/index.js";
|
|
21
|
-
import type { NodeSchemaMetadata, TreeLeafValue } from "./schemaTypes.js";
|
|
22
31
|
import type { SimpleLeafNodeSchema } from "./simpleSchema.js";
|
|
23
|
-
import type
|
|
32
|
+
import { brand, type JsonCompatibleReadOnlyObject } from "../util/index.js";
|
|
33
|
+
import { getTreeNodeSchemaInitializedData } from "./createContext.js";
|
|
34
|
+
import type { FactoryContent } from "./unhydratedFlexTreeFromInsertable.js";
|
|
24
35
|
|
|
25
36
|
/**
|
|
26
37
|
* Instances of this class are schema for leaf nodes.
|
|
@@ -32,14 +43,29 @@ import type { JsonCompatibleReadOnlyObject } from "../util/index.js";
|
|
|
32
43
|
* This class refers to the underlying flex tree schema in its constructor, so this class can't be included in the package API.
|
|
33
44
|
*/
|
|
34
45
|
export class LeafNodeSchema<Name extends string, const T extends ValueSchema>
|
|
35
|
-
implements
|
|
46
|
+
implements
|
|
47
|
+
TreeNodeSchemaNonClass<Name, NodeKind.Leaf, TreeValue<T>, TreeValue<T>>,
|
|
48
|
+
SimpleLeafNodeSchema,
|
|
49
|
+
TreeNodeSchemaCorePrivate
|
|
36
50
|
{
|
|
37
51
|
public readonly identifier: Name;
|
|
38
52
|
public readonly kind = NodeKind.Leaf;
|
|
39
53
|
public readonly info: T;
|
|
40
54
|
public readonly implicitlyConstructable = true as const;
|
|
41
55
|
public readonly childTypes: ReadonlySet<TreeNodeSchema> = new Set();
|
|
42
|
-
public readonly
|
|
56
|
+
public readonly [privateDataSymbol]: TreeNodeSchemaPrivateData = {
|
|
57
|
+
idempotentInitialize: () =>
|
|
58
|
+
(this.#initializedData ??= getTreeNodeSchemaInitializedData(this, {
|
|
59
|
+
shallowCompatibilityTest: (data: FactoryContent): CompatibilityLevel =>
|
|
60
|
+
shallowCompatibilityTest(this, data),
|
|
61
|
+
toFlexContent: (
|
|
62
|
+
data: FactoryContent,
|
|
63
|
+
allowedTypes: ReadonlySet<TreeNodeSchema>,
|
|
64
|
+
): FlexContent => leafToFlexContent(data, this, allowedTypes),
|
|
65
|
+
})),
|
|
66
|
+
childAnnotatedAllowedTypes: [],
|
|
67
|
+
};
|
|
68
|
+
#initializedData: TreeNodeSchemaInitializedData | undefined;
|
|
43
69
|
|
|
44
70
|
public create(data: TreeValue<T> | FlexTreeNode): TreeValue<T> {
|
|
45
71
|
if (isFlexTreeNode(data)) {
|
|
@@ -103,3 +129,109 @@ export const numberSchema = makeLeaf("number", ValueSchema.Number);
|
|
|
103
129
|
export const booleanSchema = makeLeaf("boolean", ValueSchema.Boolean);
|
|
104
130
|
export const nullSchema = makeLeaf("null", ValueSchema.Null);
|
|
105
131
|
export const handleSchema = makeLeaf("handle", ValueSchema.FluidHandle);
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* Checks if data might be schema-compatible.
|
|
135
|
+
*
|
|
136
|
+
* @returns false if `data` is incompatible with `type` based on a cheap/shallow check.
|
|
137
|
+
*
|
|
138
|
+
* Note that this may return true for cases where data is incompatible, but it must not return false in cases where the data is compatible.
|
|
139
|
+
*/
|
|
140
|
+
function shallowCompatibilityTest(
|
|
141
|
+
schema: TreeNodeSchema,
|
|
142
|
+
data: FactoryContent,
|
|
143
|
+
): CompatibilityLevel {
|
|
144
|
+
if (isTreeValue(data)) {
|
|
145
|
+
return allowsValue(schema, data) ? CompatibilityLevel.Normal : CompatibilityLevel.None;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
return CompatibilityLevel.None;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
function allowsValue(schema: TreeNodeSchema, value: TreeValue): boolean {
|
|
152
|
+
if (schema.kind === NodeKind.Leaf) {
|
|
153
|
+
return valueSchemaAllows(schema.info as ValueSchema, value);
|
|
154
|
+
}
|
|
155
|
+
return false;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* Transforms data under a Leaf schema.
|
|
160
|
+
* @param data - The tree data to be transformed. Must be a {@link TreeValue}.
|
|
161
|
+
* @param schema - The schema associated with the value.
|
|
162
|
+
* @param allowedTypes - The allowed types specified by the parent.
|
|
163
|
+
* Used to determine which fallback values may be appropriate.
|
|
164
|
+
*/
|
|
165
|
+
export function leafToFlexContent(
|
|
166
|
+
data: FactoryContent,
|
|
167
|
+
schema: TreeNodeSchema,
|
|
168
|
+
allowedTypes: ReadonlySet<TreeNodeSchema>,
|
|
169
|
+
): FlexContent {
|
|
170
|
+
assert(schema.kind === NodeKind.Leaf, 0x921 /* Expected a leaf schema. */);
|
|
171
|
+
if (!isTreeValue(data)) {
|
|
172
|
+
// This rule exists to protect against useless `toString` output like `[object Object]`.
|
|
173
|
+
// In this case, that's actually reasonable behavior, since object input is not compatible with Leaf schemas.
|
|
174
|
+
// eslint-disable-next-line @typescript-eslint/no-base-to-string
|
|
175
|
+
throw new UsageError(`Input data is incompatible with leaf schema: ${data}`);
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
const mappedValue = mapValueWithFallbacks(data, allowedTypes);
|
|
179
|
+
const mappedSchema = [...allowedTypes].find((type) => allowsValue(type, mappedValue));
|
|
180
|
+
|
|
181
|
+
assert(mappedSchema !== undefined, 0x84a /* Unsupported schema for provided primitive. */);
|
|
182
|
+
|
|
183
|
+
const result: FlexContent = [
|
|
184
|
+
{
|
|
185
|
+
value: mappedValue,
|
|
186
|
+
type: brand(mappedSchema.identifier),
|
|
187
|
+
},
|
|
188
|
+
new Map(),
|
|
189
|
+
];
|
|
190
|
+
|
|
191
|
+
return result;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
/**
|
|
195
|
+
* Checks an incoming {@link TreeLeafValue} to ensure it is compatible with its requirements.
|
|
196
|
+
* For unsupported values with a schema-compatible replacement, return the replacement value.
|
|
197
|
+
* For unsupported values without a schema-compatible replacement, throw.
|
|
198
|
+
* For supported values, return the input.
|
|
199
|
+
*/
|
|
200
|
+
function mapValueWithFallbacks(
|
|
201
|
+
value: TreeLeafValue,
|
|
202
|
+
allowedTypes: ReadonlySet<TreeNodeSchema>,
|
|
203
|
+
): TreeValue {
|
|
204
|
+
switch (typeof value) {
|
|
205
|
+
case "number": {
|
|
206
|
+
if (Object.is(value, -0)) {
|
|
207
|
+
// Our serialized data format does not support -0.
|
|
208
|
+
// Map such input to +0.
|
|
209
|
+
return 0;
|
|
210
|
+
} else if (!Number.isFinite(value)) {
|
|
211
|
+
// Our serialized data format does not support NaN nor +/-∞.
|
|
212
|
+
// If the schema supports `null`, fall back to that. Otherwise, throw.
|
|
213
|
+
// This is intended to match JSON's behavior for such values.
|
|
214
|
+
if (allowedTypes.has(nullSchema)) {
|
|
215
|
+
return null;
|
|
216
|
+
} else {
|
|
217
|
+
throw new UsageError(`Received unsupported numeric value: ${value}.`);
|
|
218
|
+
}
|
|
219
|
+
} else {
|
|
220
|
+
return value;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
case "string":
|
|
224
|
+
// TODO:
|
|
225
|
+
// This should detect invalid strings. Something like @stdlib/regexp-utf16-unpaired-surrogate could be used to do this.
|
|
226
|
+
// See SchemaFactory.string for details.
|
|
227
|
+
case "boolean":
|
|
228
|
+
return value;
|
|
229
|
+
case "object": {
|
|
230
|
+
if (value === null || isFluidHandle(value)) {
|
|
231
|
+
return value;
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
default:
|
|
235
|
+
throw new UsageError(`Received unsupported leaf value: ${value}.`);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
@@ -12,19 +12,9 @@ import type {
|
|
|
12
12
|
FlexTreeNode,
|
|
13
13
|
FlexTreeSequenceField,
|
|
14
14
|
} from "../../../feature-libraries/index.js";
|
|
15
|
+
import { FieldKinds, isTreeValue } from "../../../feature-libraries/index.js";
|
|
15
16
|
import {
|
|
16
|
-
|
|
17
|
-
normalizeAnnotatedAllowedTypes,
|
|
18
|
-
unannotateImplicitAllowedTypes,
|
|
19
|
-
type ImplicitAllowedTypes,
|
|
20
|
-
type ImplicitAnnotatedAllowedTypes,
|
|
21
|
-
type InsertableTreeNodeFromImplicitAllowedTypes,
|
|
22
|
-
type NodeSchemaMetadata,
|
|
23
|
-
type TreeLeafValue,
|
|
24
|
-
type TreeNodeFromImplicitAllowedTypes,
|
|
25
|
-
type UnannotateImplicitAllowedTypes,
|
|
26
|
-
} from "../../schemaTypes.js";
|
|
27
|
-
import {
|
|
17
|
+
CompatibilityLevel,
|
|
28
18
|
type WithType,
|
|
29
19
|
// eslint-disable-next-line import/no-deprecated
|
|
30
20
|
typeNameSymbol,
|
|
@@ -33,7 +23,6 @@ import {
|
|
|
33
23
|
type InternalTreeNode,
|
|
34
24
|
type TreeNodeSchema,
|
|
35
25
|
typeSchemaSymbol,
|
|
36
|
-
type Context,
|
|
37
26
|
getOrCreateNodeFromInnerNode,
|
|
38
27
|
getSimpleNodeSchemaFromInnerNode,
|
|
39
28
|
getOrCreateInnerNode,
|
|
@@ -42,21 +31,43 @@ import {
|
|
|
42
31
|
type UnhydratedFlexTreeNode,
|
|
43
32
|
UnhydratedSequenceField,
|
|
44
33
|
getOrCreateNodeFromInnerUnboxedNode,
|
|
45
|
-
|
|
34
|
+
normalizeAllowedTypes,
|
|
35
|
+
unannotateImplicitAllowedTypes,
|
|
36
|
+
type ImplicitAllowedTypes,
|
|
37
|
+
type ImplicitAnnotatedAllowedTypes,
|
|
38
|
+
type InsertableTreeNodeFromImplicitAllowedTypes,
|
|
39
|
+
type NodeSchemaMetadata,
|
|
40
|
+
type TreeLeafValue,
|
|
41
|
+
type TreeNodeFromImplicitAllowedTypes,
|
|
42
|
+
type UnannotateImplicitAllowedTypes,
|
|
43
|
+
TreeNodeValid,
|
|
44
|
+
type MostDerivedData,
|
|
45
|
+
type TreeNodeSchemaInitializedData,
|
|
46
|
+
type TreeNodeSchemaCorePrivate,
|
|
47
|
+
privateDataSymbol,
|
|
48
|
+
createTreeNodeSchemaPrivateData,
|
|
49
|
+
type FlexContent,
|
|
50
|
+
type TreeNodeSchemaPrivateData,
|
|
46
51
|
} from "../../core/index.js";
|
|
47
52
|
import {
|
|
53
|
+
type FactoryContent,
|
|
48
54
|
type InsertableContent,
|
|
49
55
|
unhydratedFlexTreeFromInsertable,
|
|
56
|
+
unhydratedFlexTreeFromInsertableNode,
|
|
50
57
|
} from "../../unhydratedFlexTreeFromInsertable.js";
|
|
51
58
|
import { prepareArrayContentForInsertion } from "../../prepareForInsertion.js";
|
|
52
|
-
import {
|
|
53
|
-
|
|
59
|
+
import {
|
|
60
|
+
getTreeNodeSchemaInitializedData,
|
|
61
|
+
getUnhydratedContext,
|
|
62
|
+
} from "../../createContext.js";
|
|
54
63
|
import type { System_Unsafe } from "../../api/index.js";
|
|
55
64
|
import type {
|
|
56
65
|
ArrayNodeCustomizableSchema,
|
|
57
66
|
ArrayNodePojoEmulationSchema,
|
|
67
|
+
ArrayNodeSchema,
|
|
58
68
|
} from "./arrayNodeTypes.js";
|
|
59
|
-
import type
|
|
69
|
+
import { brand, type JsonCompatibleReadOnlyObject } from "../../../util/index.js";
|
|
70
|
+
import { nullSchema } from "../../leafNodeSchema.js";
|
|
60
71
|
|
|
61
72
|
/**
|
|
62
73
|
* A covariant base type for {@link (TreeArrayNode:interface)}.
|
|
@@ -720,7 +731,7 @@ function createArrayNodeProxy(
|
|
|
720
731
|
): TreeArrayNode {
|
|
721
732
|
// To satisfy 'deepEquals' level scrutiny, the target of the proxy must be an array literal in order
|
|
722
733
|
// to pass 'Object.getPrototypeOf'. It also satisfies 'Array.isArray' and 'Object.prototype.toString'
|
|
723
|
-
// requirements without use of Array[Symbol.species], which is potentially on a path
|
|
734
|
+
// requirements without use of Array[Symbol.species], which is potentially on a path to deprecation.
|
|
724
735
|
const proxy: TreeArrayNode = new Proxy<TreeArrayNode>(proxyTarget as TreeArrayNode, {
|
|
725
736
|
get: (target, key, receiver) => {
|
|
726
737
|
const field = getSequenceField(receiver);
|
|
@@ -731,6 +742,12 @@ function createArrayNodeProxy(
|
|
|
731
742
|
return field.length;
|
|
732
743
|
}
|
|
733
744
|
|
|
745
|
+
// In NodeJS 22, assert.strict.deepEqual started special casing well known constructors like Array.
|
|
746
|
+
// That made this necessary, ensuring that in POJO mode, TreeArrayNode are still deepEqual to arrays.
|
|
747
|
+
if (key === "constructor") {
|
|
748
|
+
return proxyTarget.constructor;
|
|
749
|
+
}
|
|
750
|
+
|
|
734
751
|
// Pass the proxy as the receiver here, so that any methods on
|
|
735
752
|
// the prototype receive `proxy` as `this`.
|
|
736
753
|
return Reflect.get(dispatchTarget, key, receiver) as unknown;
|
|
@@ -1107,17 +1124,17 @@ export function arraySchema<
|
|
|
1107
1124
|
ImplicitlyConstructable,
|
|
1108
1125
|
TCustomMetadata
|
|
1109
1126
|
> &
|
|
1110
|
-
ArrayNodePojoEmulationSchema<TName, T, ImplicitlyConstructable, TCustomMetadata
|
|
1127
|
+
ArrayNodePojoEmulationSchema<TName, T, ImplicitlyConstructable, TCustomMetadata> &
|
|
1128
|
+
TreeNodeSchemaCorePrivate;
|
|
1111
1129
|
|
|
1112
1130
|
const unannotatedTypes = unannotateImplicitAllowedTypes(info);
|
|
1113
1131
|
|
|
1114
1132
|
const lazyChildTypes = new Lazy(() => normalizeAllowedTypes(unannotatedTypes));
|
|
1115
|
-
const lazyAnnotatedTypes = new Lazy(() => [normalizeAnnotatedAllowedTypes(info)]);
|
|
1116
1133
|
const lazyAllowedTypesIdentifiers = new Lazy(
|
|
1117
1134
|
() => new Set([...lazyChildTypes.value].map((type) => type.identifier)),
|
|
1118
1135
|
);
|
|
1119
1136
|
|
|
1120
|
-
let
|
|
1137
|
+
let privateData: TreeNodeSchemaPrivateData | undefined;
|
|
1121
1138
|
|
|
1122
1139
|
// This class returns a proxy from its constructor to handle numeric indexing.
|
|
1123
1140
|
// Alternatively it could extend a normal class which gets tons of numeric properties added.
|
|
@@ -1156,10 +1173,7 @@ export function arraySchema<
|
|
|
1156
1173
|
|
|
1157
1174
|
protected static override constructorCached: MostDerivedData | undefined = undefined;
|
|
1158
1175
|
|
|
1159
|
-
protected static override oneTimeSetup
|
|
1160
|
-
const schema = this as unknown as TreeNodeSchema;
|
|
1161
|
-
unhydratedContext = getUnhydratedContext(schema);
|
|
1162
|
-
|
|
1176
|
+
protected static override oneTimeSetup(): TreeNodeSchemaInitializedData {
|
|
1163
1177
|
// First run, do extra validation.
|
|
1164
1178
|
// TODO: provide a way for TreeConfiguration to trigger this same validation to ensure it gets run early.
|
|
1165
1179
|
// Scan for shadowing inherited members which won't work, but stop scan early to allow shadowing built in (which seems to work ok).
|
|
@@ -1184,8 +1198,16 @@ export function arraySchema<
|
|
|
1184
1198
|
prototype = Reflect.getPrototypeOf(prototype) as object;
|
|
1185
1199
|
}
|
|
1186
1200
|
}
|
|
1187
|
-
|
|
1188
|
-
|
|
1201
|
+
const schema = this as ArrayNodeSchema;
|
|
1202
|
+
|
|
1203
|
+
return getTreeNodeSchemaInitializedData(this, {
|
|
1204
|
+
shallowCompatibilityTest: (data: FactoryContent): CompatibilityLevel =>
|
|
1205
|
+
shallowCompatibilityTest(data, schema),
|
|
1206
|
+
toFlexContent: (
|
|
1207
|
+
data: FactoryContent,
|
|
1208
|
+
allowedTypes: ReadonlySet<TreeNodeSchema>,
|
|
1209
|
+
): FlexContent => arrayToFlexContent(data, schema),
|
|
1210
|
+
});
|
|
1189
1211
|
}
|
|
1190
1212
|
|
|
1191
1213
|
public static readonly identifier = identifier;
|
|
@@ -1195,9 +1217,6 @@ export function arraySchema<
|
|
|
1195
1217
|
public static get childTypes(): ReadonlySet<TreeNodeSchema> {
|
|
1196
1218
|
return lazyChildTypes.value;
|
|
1197
1219
|
}
|
|
1198
|
-
public static get childAnnotatedAllowedTypes(): readonly NormalizedAnnotatedAllowedTypes[] {
|
|
1199
|
-
return lazyAnnotatedTypes.value;
|
|
1200
|
-
}
|
|
1201
1220
|
public static readonly metadata: NodeSchemaMetadata<TCustomMetadata> = metadata ?? {};
|
|
1202
1221
|
public static readonly persistedMetadata: JsonCompatibleReadOnlyObject | undefined =
|
|
1203
1222
|
persistedMetadata;
|
|
@@ -1216,6 +1235,10 @@ export function arraySchema<
|
|
|
1216
1235
|
protected get allowedTypes(): ReadonlySet<TreeNodeSchema> {
|
|
1217
1236
|
return lazyChildTypes.value;
|
|
1218
1237
|
}
|
|
1238
|
+
|
|
1239
|
+
public static get [privateDataSymbol](): TreeNodeSchemaPrivateData {
|
|
1240
|
+
return (privateData ??= createTreeNodeSchemaPrivateData(this, [info]));
|
|
1241
|
+
}
|
|
1219
1242
|
}
|
|
1220
1243
|
|
|
1221
1244
|
const output: Output = Schema;
|
|
@@ -1271,3 +1294,91 @@ function validateIndexRange(
|
|
|
1271
1294
|
);
|
|
1272
1295
|
}
|
|
1273
1296
|
}
|
|
1297
|
+
|
|
1298
|
+
/**
|
|
1299
|
+
* Transforms data for a child of an array.
|
|
1300
|
+
* @param child - The tree data to be transformed.
|
|
1301
|
+
* @param allowedTypes - The set of types allowed by the parent context. Used to validate the input tree.
|
|
1302
|
+
*/
|
|
1303
|
+
function arrayChildToFlexTree(
|
|
1304
|
+
child: InsertableContent,
|
|
1305
|
+
allowedTypes: ReadonlySet<TreeNodeSchema>,
|
|
1306
|
+
): UnhydratedFlexTreeNode {
|
|
1307
|
+
// We do not support undefined sequence entries.
|
|
1308
|
+
// If we encounter an undefined entry, use null instead if supported by the schema, otherwise throw.
|
|
1309
|
+
let childWithFallback = child;
|
|
1310
|
+
if (child === undefined) {
|
|
1311
|
+
if (allowedTypes.has(nullSchema)) {
|
|
1312
|
+
childWithFallback = null;
|
|
1313
|
+
} else {
|
|
1314
|
+
throw new TypeError(`Received unsupported array entry value: ${child}.`);
|
|
1315
|
+
}
|
|
1316
|
+
}
|
|
1317
|
+
return unhydratedFlexTreeFromInsertableNode(childWithFallback, allowedTypes);
|
|
1318
|
+
}
|
|
1319
|
+
|
|
1320
|
+
/**
|
|
1321
|
+
* {@link TreeNodeSchemaInitializedData.toFlexContent} for Array nodes.
|
|
1322
|
+
*
|
|
1323
|
+
* @param data - The tree data to be transformed. Must be an iterable.
|
|
1324
|
+
* @param schema - The schema to comply with.
|
|
1325
|
+
*/
|
|
1326
|
+
function arrayToFlexContent(data: FactoryContent, schema: ArrayNodeSchema): FlexContent {
|
|
1327
|
+
if (!(typeof data === "object" && data !== null && Symbol.iterator in data)) {
|
|
1328
|
+
throw new UsageError(`Input data is incompatible with Array schema: ${data}`);
|
|
1329
|
+
}
|
|
1330
|
+
|
|
1331
|
+
const allowedChildTypes = normalizeAllowedTypes(schema.info as ImplicitAllowedTypes);
|
|
1332
|
+
|
|
1333
|
+
const mappedData = Array.from(data, (child) =>
|
|
1334
|
+
arrayChildToFlexTree(child, allowedChildTypes),
|
|
1335
|
+
);
|
|
1336
|
+
|
|
1337
|
+
const context = getUnhydratedContext(schema).flexContext;
|
|
1338
|
+
|
|
1339
|
+
// Array nodes have a single `EmptyKey` field:
|
|
1340
|
+
const fieldsEntries =
|
|
1341
|
+
mappedData.length === 0
|
|
1342
|
+
? []
|
|
1343
|
+
: ([
|
|
1344
|
+
[
|
|
1345
|
+
EmptyKey,
|
|
1346
|
+
new UnhydratedSequenceField(
|
|
1347
|
+
context,
|
|
1348
|
+
FieldKinds.sequence.identifier,
|
|
1349
|
+
EmptyKey,
|
|
1350
|
+
mappedData,
|
|
1351
|
+
),
|
|
1352
|
+
],
|
|
1353
|
+
] as const);
|
|
1354
|
+
|
|
1355
|
+
return [
|
|
1356
|
+
{
|
|
1357
|
+
type: brand(schema.identifier),
|
|
1358
|
+
},
|
|
1359
|
+
new Map(fieldsEntries),
|
|
1360
|
+
];
|
|
1361
|
+
}
|
|
1362
|
+
|
|
1363
|
+
/**
|
|
1364
|
+
* {@link TreeNodeSchemaInitializedData.shallowCompatibilityTest} for Array nodes.
|
|
1365
|
+
*/
|
|
1366
|
+
function shallowCompatibilityTest(
|
|
1367
|
+
data: FactoryContent,
|
|
1368
|
+
schema: ArrayNodeSchema,
|
|
1369
|
+
): CompatibilityLevel {
|
|
1370
|
+
if (isTreeValue(data)) {
|
|
1371
|
+
return CompatibilityLevel.None;
|
|
1372
|
+
}
|
|
1373
|
+
|
|
1374
|
+
if (data instanceof Map) {
|
|
1375
|
+
// Maps are iterable, so type checking does allow constructing an ArrayNode from a map if the ArrayNode's type is an array that includes the key and value types of the map.
|
|
1376
|
+
return CompatibilityLevel.Low;
|
|
1377
|
+
}
|
|
1378
|
+
|
|
1379
|
+
if (Symbol.iterator in data) {
|
|
1380
|
+
return CompatibilityLevel.Normal;
|
|
1381
|
+
}
|
|
1382
|
+
|
|
1383
|
+
return CompatibilityLevel.None;
|
|
1384
|
+
}
|
|
@@ -4,17 +4,15 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import type { TreeArrayNode } from "./arrayNode.js";
|
|
7
|
+
import { NodeKind } from "../../core/index.js";
|
|
7
8
|
import type {
|
|
9
|
+
TreeNodeSchemaClass,
|
|
10
|
+
TreeNodeSchema,
|
|
11
|
+
TreeNodeSchemaNonClass,
|
|
12
|
+
WithType,
|
|
8
13
|
ImplicitAnnotatedAllowedTypes,
|
|
9
14
|
InsertableTreeNodeFromImplicitAllowedTypes,
|
|
10
15
|
UnannotateImplicitAllowedTypes,
|
|
11
|
-
} from "../../schemaTypes.js";
|
|
12
|
-
import {
|
|
13
|
-
NodeKind,
|
|
14
|
-
type TreeNodeSchemaClass,
|
|
15
|
-
type TreeNodeSchema,
|
|
16
|
-
type TreeNodeSchemaNonClass,
|
|
17
|
-
type WithType,
|
|
18
16
|
} from "../../core/index.js";
|
|
19
17
|
|
|
20
18
|
import type { SimpleArrayNodeSchema } from "../../simpleSchema.js";
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
|
+
* Licensed under the MIT License.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { assert } from "@fluidframework/core-utils/internal";
|
|
7
|
+
|
|
8
|
+
import type { FieldKey } from "../../core/index.js";
|
|
9
|
+
import { FieldKinds } from "../../feature-libraries/index.js";
|
|
10
|
+
import { brand } from "../../util/index.js";
|
|
11
|
+
|
|
12
|
+
import {
|
|
13
|
+
createField,
|
|
14
|
+
type UnhydratedFlexTreeField,
|
|
15
|
+
unannotateImplicitAllowedTypes,
|
|
16
|
+
normalizeAllowedTypes,
|
|
17
|
+
type FlexContent,
|
|
18
|
+
} from "../core/index.js";
|
|
19
|
+
import { getUnhydratedContext } from "../createContext.js";
|
|
20
|
+
import {
|
|
21
|
+
unhydratedFlexTreeFromInsertableNode,
|
|
22
|
+
type InsertableContent,
|
|
23
|
+
} from "../unhydratedFlexTreeFromInsertable.js";
|
|
24
|
+
import type { MapNodeSchema } from "./map/index.js";
|
|
25
|
+
import type { RecordNodeSchema } from "./record/index.js";
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Utilities shared by multiple node kinds.
|
|
29
|
+
*/
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Converts record-like data to a FlexContent representation for map/record schema.
|
|
33
|
+
*/
|
|
34
|
+
export function recordLikeDataToFlexContent(
|
|
35
|
+
fieldsIterator: Iterable<readonly [string, InsertableContent]>,
|
|
36
|
+
schema: MapNodeSchema | RecordNodeSchema,
|
|
37
|
+
): FlexContent {
|
|
38
|
+
const allowedChildTypes = normalizeAllowedTypes(unannotateImplicitAllowedTypes(schema.info));
|
|
39
|
+
const context = getUnhydratedContext(schema).flexContext;
|
|
40
|
+
|
|
41
|
+
const transformedFields = new Map<FieldKey, UnhydratedFlexTreeField>();
|
|
42
|
+
for (const item of fieldsIterator) {
|
|
43
|
+
const [key, value] = item;
|
|
44
|
+
assert(!transformedFields.has(brand(key)), 0x84c /* Keys should not be duplicated */);
|
|
45
|
+
|
|
46
|
+
// Omit undefined values - an entry with an undefined value is equivalent to one that has been removed or omitted
|
|
47
|
+
if (value !== undefined) {
|
|
48
|
+
const child = unhydratedFlexTreeFromInsertableNode(value, allowedChildTypes);
|
|
49
|
+
const field = createField(context, FieldKinds.optional.identifier, brand(key), [child]);
|
|
50
|
+
transformedFields.set(brand(key), field);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
return [
|
|
55
|
+
{
|
|
56
|
+
type: brand(schema.identifier),
|
|
57
|
+
},
|
|
58
|
+
transformedFields,
|
|
59
|
+
];
|
|
60
|
+
}
|