@fluidframework/tree 2.51.0-347100 → 2.52.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/settings.json +0 -1
- package/CHANGELOG.md +92 -0
- package/api-report/tree.alpha.api.md +3 -2
- package/dist/codec/codec.d.ts +2 -1
- package/dist/codec/codec.d.ts.map +1 -1
- package/dist/codec/codec.js +4 -3
- package/dist/codec/codec.js.map +1 -1
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +3 -2
- package/dist/core/index.js.map +1 -1
- package/dist/core/rebase/index.d.ts +1 -1
- package/dist/core/rebase/index.d.ts.map +1 -1
- package/dist/core/rebase/index.js +2 -1
- package/dist/core/rebase/index.js.map +1 -1
- package/dist/core/rebase/types.d.ts +3 -1
- package/dist/core/rebase/types.d.ts.map +1 -1
- package/dist/core/rebase/types.js +2 -1
- package/dist/core/rebase/types.js.map +1 -1
- package/dist/core/schema-stored/schema.d.ts +1 -23
- package/dist/core/schema-stored/schema.d.ts.map +1 -1
- package/dist/core/schema-stored/schema.js +2 -2
- package/dist/core/schema-stored/schema.js.map +1 -1
- package/dist/core/tree/detachedFieldIndex.d.ts.map +1 -1
- package/dist/core/tree/detachedFieldIndex.js +2 -3
- package/dist/core/tree/detachedFieldIndex.js.map +1 -1
- package/dist/core/tree/detachedFieldIndexCodecCommon.d.ts +17 -0
- package/dist/core/tree/detachedFieldIndexCodecCommon.d.ts.map +1 -0
- package/dist/core/tree/detachedFieldIndexCodecCommon.js +68 -0
- package/dist/core/tree/detachedFieldIndexCodecCommon.js.map +1 -0
- package/dist/core/tree/detachedFieldIndexCodecV1.d.ts +11 -0
- package/dist/core/tree/detachedFieldIndexCodecV1.d.ts.map +1 -0
- package/dist/core/tree/detachedFieldIndexCodecV1.js +55 -0
- package/dist/core/tree/detachedFieldIndexCodecV1.js.map +1 -0
- package/dist/core/tree/detachedFieldIndexCodecV2.d.ts +11 -0
- package/dist/core/tree/detachedFieldIndexCodecV2.d.ts.map +1 -0
- package/dist/core/tree/detachedFieldIndexCodecV2.js +49 -0
- package/dist/core/tree/detachedFieldIndexCodecV2.js.map +1 -0
- package/dist/core/tree/detachedFieldIndexCodecs.d.ts +11 -0
- package/dist/core/tree/detachedFieldIndexCodecs.d.ts.map +1 -0
- package/dist/core/tree/detachedFieldIndexCodecs.js +26 -0
- package/dist/core/tree/detachedFieldIndexCodecs.js.map +1 -0
- package/dist/core/tree/detachedFieldIndexFormatCommon.d.ts +37 -0
- package/dist/core/tree/detachedFieldIndexFormatCommon.d.ts.map +1 -0
- package/dist/core/tree/{detachedFieldIndexFormat.js → detachedFieldIndexFormatCommon.js} +18 -13
- package/dist/core/tree/detachedFieldIndexFormatCommon.js.map +1 -0
- package/dist/core/tree/detachedFieldIndexFormatV1.d.ts +13 -0
- package/dist/core/tree/detachedFieldIndexFormatV1.d.ts.map +1 -0
- package/dist/core/tree/detachedFieldIndexFormatV1.js +12 -0
- package/dist/core/tree/detachedFieldIndexFormatV1.js.map +1 -0
- package/dist/core/tree/detachedFieldIndexFormatV2.d.ts +14 -0
- package/dist/core/tree/detachedFieldIndexFormatV2.d.ts.map +1 -0
- package/dist/core/tree/detachedFieldIndexFormatV2.js +14 -0
- package/dist/core/tree/detachedFieldIndexFormatV2.js.map +1 -0
- package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts +9 -9
- package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.js +21 -21
- package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.d.ts +4 -2
- package/dist/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.js +4 -4
- package/dist/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/compressedEncode.d.ts +50 -31
- package/dist/feature-libraries/chunked-forest/codec/compressedEncode.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js +74 -61
- package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/format.d.ts +20 -14
- package/dist/feature-libraries/chunked-forest/codec/format.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/format.js +18 -12
- package/dist/feature-libraries/chunked-forest/codec/format.js.map +1 -1
- package/{lib/feature-libraries/chunked-forest/codec/nodeShape.d.ts → dist/feature-libraries/chunked-forest/codec/nodeEncoder.d.ts} +20 -14
- package/dist/feature-libraries/chunked-forest/codec/nodeEncoder.d.ts.map +1 -0
- package/dist/feature-libraries/chunked-forest/codec/{nodeShape.js → nodeEncoder.js} +23 -17
- package/dist/feature-libraries/chunked-forest/codec/nodeEncoder.js.map +1 -0
- package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncode.d.ts +7 -7
- package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncode.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncode.js +22 -22
- package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncode.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/uncompressedEncode.js +2 -2
- package/dist/feature-libraries/chunked-forest/codec/uncompressedEncode.js.map +1 -1
- package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts +5 -1
- package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
- package/dist/feature-libraries/default-schema/defaultFieldKinds.js +14 -2
- package/dist/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
- package/dist/feature-libraries/default-schema/defaultSchema.d.ts.map +1 -1
- package/dist/feature-libraries/default-schema/defaultSchema.js +0 -2
- package/dist/feature-libraries/default-schema/defaultSchema.js.map +1 -1
- package/dist/feature-libraries/default-schema/index.d.ts +1 -1
- package/dist/feature-libraries/default-schema/index.d.ts.map +1 -1
- package/dist/feature-libraries/default-schema/index.js +2 -2
- package/dist/feature-libraries/default-schema/index.js.map +1 -1
- package/dist/feature-libraries/default-schema/schemaChecker.d.ts +14 -4
- package/dist/feature-libraries/default-schema/schemaChecker.d.ts.map +1 -1
- package/dist/feature-libraries/default-schema/schemaChecker.js +31 -26
- package/dist/feature-libraries/default-schema/schemaChecker.js.map +1 -1
- package/dist/feature-libraries/index.d.ts +2 -3
- package/dist/feature-libraries/index.d.ts.map +1 -1
- package/dist/feature-libraries/index.js +3 -11
- package/dist/feature-libraries/index.js.map +1 -1
- package/dist/feature-libraries/modular-schema/comparison.d.ts +5 -6
- package/dist/feature-libraries/modular-schema/comparison.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/comparison.js +15 -19
- 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/feature-libraries/modular-schema/modularChangeFormat.d.ts +9 -3
- package/dist/feature-libraries/modular-schema/modularChangeFormat.d.ts.map +1 -1
- package/dist/feature-libraries/object-forest/objectForest.d.ts.map +1 -1
- package/dist/feature-libraries/object-forest/objectForest.js +2 -3
- package/dist/feature-libraries/object-forest/objectForest.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -2
- package/dist/index.js.map +1 -1
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.d.ts.map +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/shared-tree/independentView.d.ts +8 -0
- package/dist/shared-tree/independentView.d.ts.map +1 -1
- package/dist/shared-tree/independentView.js +23 -11
- package/dist/shared-tree/independentView.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 +5 -4
- package/dist/shared-tree/schematizeTree.js.map +1 -1
- package/dist/shared-tree/schematizingTreeView.d.ts +0 -1
- package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/dist/shared-tree/schematizingTreeView.js +7 -10
- package/dist/shared-tree/schematizingTreeView.js.map +1 -1
- package/dist/shared-tree/sharedTree.d.ts.map +1 -1
- package/dist/shared-tree/sharedTree.js +1 -29
- package/dist/shared-tree/sharedTree.js.map +1 -1
- package/dist/shared-tree/tree.js +1 -1
- package/dist/shared-tree/tree.js.map +1 -1
- package/dist/shared-tree/treeAlpha.d.ts +20 -6
- package/dist/shared-tree/treeAlpha.d.ts.map +1 -1
- package/dist/shared-tree/treeAlpha.js +9 -4
- package/dist/shared-tree/treeAlpha.js.map +1 -1
- package/dist/shared-tree/treeCheckout.d.ts +2 -1
- package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
- package/dist/shared-tree/treeCheckout.js +33 -1
- package/dist/shared-tree/treeCheckout.js.map +1 -1
- package/dist/shared-tree-core/branch.d.ts.map +1 -1
- package/dist/shared-tree-core/branch.js +1 -1
- package/dist/shared-tree-core/branch.js.map +1 -1
- package/dist/simple-tree/api/conciseTree.d.ts +2 -2
- package/dist/simple-tree/api/conciseTree.d.ts.map +1 -1
- package/dist/simple-tree/api/conciseTree.js +6 -6
- package/dist/simple-tree/api/conciseTree.js.map +1 -1
- package/dist/simple-tree/api/configuration.d.ts +8 -2
- package/dist/simple-tree/api/configuration.d.ts.map +1 -1
- package/dist/simple-tree/api/configuration.js.map +1 -1
- package/dist/simple-tree/api/create.d.ts +8 -7
- package/dist/simple-tree/api/create.d.ts.map +1 -1
- package/dist/simple-tree/api/create.js +35 -22
- package/dist/simple-tree/api/create.js.map +1 -1
- package/dist/simple-tree/api/customTree.d.ts +25 -4
- package/dist/simple-tree/api/customTree.d.ts.map +1 -1
- package/dist/simple-tree/api/customTree.js +42 -16
- package/dist/simple-tree/api/customTree.js.map +1 -1
- package/dist/simple-tree/api/discrepancies.d.ts +98 -0
- package/dist/simple-tree/api/discrepancies.d.ts.map +1 -0
- package/dist/simple-tree/api/discrepancies.js +255 -0
- package/dist/simple-tree/api/discrepancies.js.map +1 -0
- package/dist/simple-tree/api/schemaCompatibilityTester.d.ts +8 -21
- package/dist/simple-tree/api/schemaCompatibilityTester.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaCompatibilityTester.js +19 -169
- package/dist/simple-tree/api/schemaCompatibilityTester.js.map +1 -1
- package/dist/simple-tree/api/schemaCreationUtilities.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaCreationUtilities.js +2 -2
- package/dist/simple-tree/api/schemaCreationUtilities.js.map +1 -1
- package/dist/simple-tree/api/schemaFactory.d.ts +7 -4
- package/dist/simple-tree/api/schemaFactory.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaFactory.js.map +1 -1
- package/dist/simple-tree/api/storedSchema.d.ts.map +1 -1
- package/dist/simple-tree/api/storedSchema.js +5 -1
- package/dist/simple-tree/api/storedSchema.js.map +1 -1
- package/dist/simple-tree/api/treeBeta.d.ts +2 -2
- package/dist/simple-tree/api/treeBeta.d.ts.map +1 -1
- package/dist/simple-tree/api/treeBeta.js +10 -4
- package/dist/simple-tree/api/treeBeta.js.map +1 -1
- package/dist/simple-tree/api/verboseTree.d.ts +2 -2
- package/dist/simple-tree/api/verboseTree.d.ts.map +1 -1
- package/dist/simple-tree/api/verboseTree.js +15 -15
- package/dist/simple-tree/api/verboseTree.js.map +1 -1
- package/dist/simple-tree/core/allowedTypes.d.ts +20 -4
- package/dist/simple-tree/core/allowedTypes.d.ts.map +1 -1
- package/dist/simple-tree/core/allowedTypes.js +45 -13
- package/dist/simple-tree/core/allowedTypes.js.map +1 -1
- package/dist/simple-tree/core/context.d.ts +13 -2
- package/dist/simple-tree/core/context.d.ts.map +1 -1
- package/dist/simple-tree/core/context.js +22 -9
- package/dist/simple-tree/core/context.js.map +1 -1
- package/dist/simple-tree/core/index.d.ts +2 -2
- package/dist/simple-tree/core/index.d.ts.map +1 -1
- package/dist/simple-tree/core/index.js +3 -1
- package/dist/simple-tree/core/index.js.map +1 -1
- package/dist/simple-tree/core/treeNodeKernel.d.ts +1 -1
- package/dist/simple-tree/core/treeNodeKernel.js +1 -1
- package/dist/simple-tree/core/treeNodeKernel.js.map +1 -1
- package/dist/simple-tree/core/treeNodeValid.d.ts +1 -1
- package/dist/simple-tree/core/treeNodeValid.d.ts.map +1 -1
- package/dist/simple-tree/core/treeNodeValid.js +8 -1
- package/dist/simple-tree/core/treeNodeValid.js.map +1 -1
- package/dist/simple-tree/core/walkSchema.d.ts +3 -0
- package/dist/simple-tree/core/walkSchema.d.ts.map +1 -1
- package/dist/simple-tree/core/walkSchema.js +2 -0
- package/dist/simple-tree/core/walkSchema.js.map +1 -1
- package/dist/simple-tree/createContext.d.ts +2 -0
- package/dist/simple-tree/createContext.d.ts.map +1 -1
- package/dist/simple-tree/createContext.js +3 -1
- package/dist/simple-tree/createContext.js.map +1 -1
- package/dist/simple-tree/fieldSchema.d.ts +1 -0
- package/dist/simple-tree/fieldSchema.d.ts.map +1 -1
- package/dist/simple-tree/fieldSchema.js +1 -0
- package/dist/simple-tree/fieldSchema.js.map +1 -1
- package/dist/simple-tree/index.d.ts +5 -4
- package/dist/simple-tree/index.d.ts.map +1 -1
- package/dist/simple-tree/index.js +8 -3
- package/dist/simple-tree/index.js.map +1 -1
- package/dist/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/array/arrayNode.js +1 -1
- package/dist/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
- 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 +1 -2
- package/dist/simple-tree/node-kinds/index.js.map +1 -1
- package/dist/simple-tree/node-kinds/object/index.d.ts +1 -1
- package/dist/simple-tree/node-kinds/object/index.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/object/index.js +1 -2
- package/dist/simple-tree/node-kinds/object/index.js.map +1 -1
- package/dist/simple-tree/node-kinds/object/objectNode.d.ts +2 -7
- package/dist/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/object/objectNode.js +4 -18
- package/dist/simple-tree/node-kinds/object/objectNode.js.map +1 -1
- package/dist/simple-tree/prepareForInsertion.d.ts +5 -5
- package/dist/simple-tree/prepareForInsertion.d.ts.map +1 -1
- package/dist/simple-tree/prepareForInsertion.js +9 -3
- package/dist/simple-tree/prepareForInsertion.js.map +1 -1
- package/dist/simple-tree/toStoredSchema.d.ts +3 -0
- package/dist/simple-tree/toStoredSchema.d.ts.map +1 -1
- package/dist/simple-tree/toStoredSchema.js +3 -0
- package/dist/simple-tree/toStoredSchema.js.map +1 -1
- package/dist/simple-tree/unhydratedFlexTreeFromInsertable.d.ts +2 -2
- package/dist/simple-tree/unhydratedFlexTreeFromInsertable.d.ts.map +1 -1
- package/dist/simple-tree/unhydratedFlexTreeFromInsertable.js.map +1 -1
- package/dist/simple-tree/walkFieldSchema.d.ts +1 -0
- package/dist/simple-tree/walkFieldSchema.d.ts.map +1 -1
- package/dist/simple-tree/walkFieldSchema.js +1 -0
- package/dist/simple-tree/walkFieldSchema.js.map +1 -1
- package/lib/codec/codec.d.ts +2 -1
- package/lib/codec/codec.d.ts.map +1 -1
- package/lib/codec/codec.js +4 -3
- package/lib/codec/codec.js.map +1 -1
- package/lib/core/index.d.ts +1 -1
- package/lib/core/index.d.ts.map +1 -1
- package/lib/core/index.js +1 -1
- package/lib/core/index.js.map +1 -1
- package/lib/core/rebase/index.d.ts +1 -1
- package/lib/core/rebase/index.d.ts.map +1 -1
- package/lib/core/rebase/index.js +1 -1
- package/lib/core/rebase/index.js.map +1 -1
- package/lib/core/rebase/types.d.ts +3 -1
- package/lib/core/rebase/types.d.ts.map +1 -1
- package/lib/core/rebase/types.js +1 -0
- package/lib/core/rebase/types.js.map +1 -1
- package/lib/core/schema-stored/schema.d.ts +1 -23
- package/lib/core/schema-stored/schema.d.ts.map +1 -1
- package/lib/core/schema-stored/schema.js +2 -2
- package/lib/core/schema-stored/schema.js.map +1 -1
- package/lib/core/tree/detachedFieldIndex.d.ts.map +1 -1
- package/lib/core/tree/detachedFieldIndex.js +2 -3
- package/lib/core/tree/detachedFieldIndex.js.map +1 -1
- package/lib/core/tree/detachedFieldIndexCodecCommon.d.ts +17 -0
- package/lib/core/tree/detachedFieldIndexCodecCommon.d.ts.map +1 -0
- package/lib/core/tree/detachedFieldIndexCodecCommon.js +64 -0
- package/lib/core/tree/detachedFieldIndexCodecCommon.js.map +1 -0
- package/lib/core/tree/detachedFieldIndexCodecV1.d.ts +11 -0
- package/lib/core/tree/detachedFieldIndexCodecV1.d.ts.map +1 -0
- package/lib/core/tree/detachedFieldIndexCodecV1.js +51 -0
- package/lib/core/tree/detachedFieldIndexCodecV1.js.map +1 -0
- package/lib/core/tree/detachedFieldIndexCodecV2.d.ts +11 -0
- package/lib/core/tree/detachedFieldIndexCodecV2.d.ts.map +1 -0
- package/lib/core/tree/detachedFieldIndexCodecV2.js +45 -0
- package/lib/core/tree/detachedFieldIndexCodecV2.js.map +1 -0
- package/lib/core/tree/detachedFieldIndexCodecs.d.ts +11 -0
- package/lib/core/tree/detachedFieldIndexCodecs.d.ts.map +1 -0
- package/lib/core/tree/detachedFieldIndexCodecs.js +21 -0
- package/lib/core/tree/detachedFieldIndexCodecs.js.map +1 -0
- package/lib/core/tree/detachedFieldIndexFormatCommon.d.ts +37 -0
- package/lib/core/tree/detachedFieldIndexFormatCommon.d.ts.map +1 -0
- package/lib/core/tree/{detachedFieldIndexFormat.js → detachedFieldIndexFormatCommon.js} +13 -10
- package/lib/core/tree/detachedFieldIndexFormatCommon.js.map +1 -0
- package/lib/core/tree/detachedFieldIndexFormatV1.d.ts +13 -0
- package/lib/core/tree/detachedFieldIndexFormatV1.d.ts.map +1 -0
- package/lib/core/tree/detachedFieldIndexFormatV1.js +9 -0
- package/lib/core/tree/detachedFieldIndexFormatV1.js.map +1 -0
- package/lib/core/tree/detachedFieldIndexFormatV2.d.ts +14 -0
- package/lib/core/tree/detachedFieldIndexFormatV2.d.ts.map +1 -0
- package/lib/core/tree/detachedFieldIndexFormatV2.js +11 -0
- package/lib/core/tree/detachedFieldIndexFormatV2.js.map +1 -0
- package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts +9 -9
- package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.js +19 -19
- package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.d.ts +4 -2
- package/lib/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.js +4 -4
- package/lib/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/compressedEncode.d.ts +50 -31
- package/lib/feature-libraries/chunked-forest/codec/compressedEncode.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js +70 -57
- package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/format.d.ts +20 -14
- package/lib/feature-libraries/chunked-forest/codec/format.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/format.js +17 -11
- package/lib/feature-libraries/chunked-forest/codec/format.js.map +1 -1
- package/{dist/feature-libraries/chunked-forest/codec/nodeShape.d.ts → lib/feature-libraries/chunked-forest/codec/nodeEncoder.d.ts} +20 -14
- package/lib/feature-libraries/chunked-forest/codec/nodeEncoder.d.ts.map +1 -0
- package/lib/feature-libraries/chunked-forest/codec/{nodeShape.js → nodeEncoder.js} +21 -15
- package/lib/feature-libraries/chunked-forest/codec/nodeEncoder.js.map +1 -0
- package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncode.d.ts +7 -7
- package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncode.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncode.js +19 -19
- package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncode.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/uncompressedEncode.js +2 -2
- package/lib/feature-libraries/chunked-forest/codec/uncompressedEncode.js.map +1 -1
- package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts +5 -1
- package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
- package/lib/feature-libraries/default-schema/defaultFieldKinds.js +14 -2
- package/lib/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
- package/lib/feature-libraries/default-schema/defaultSchema.d.ts.map +1 -1
- package/lib/feature-libraries/default-schema/defaultSchema.js +0 -2
- package/lib/feature-libraries/default-schema/defaultSchema.js.map +1 -1
- package/lib/feature-libraries/default-schema/index.d.ts +1 -1
- package/lib/feature-libraries/default-schema/index.d.ts.map +1 -1
- package/lib/feature-libraries/default-schema/index.js +1 -1
- package/lib/feature-libraries/default-schema/index.js.map +1 -1
- package/lib/feature-libraries/default-schema/schemaChecker.d.ts +14 -4
- package/lib/feature-libraries/default-schema/schemaChecker.d.ts.map +1 -1
- package/lib/feature-libraries/default-schema/schemaChecker.js +29 -24
- package/lib/feature-libraries/default-schema/schemaChecker.js.map +1 -1
- package/lib/feature-libraries/index.d.ts +2 -3
- package/lib/feature-libraries/index.d.ts.map +1 -1
- package/lib/feature-libraries/index.js +2 -3
- package/lib/feature-libraries/index.js.map +1 -1
- package/lib/feature-libraries/modular-schema/comparison.d.ts +5 -6
- package/lib/feature-libraries/modular-schema/comparison.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/comparison.js +14 -17
- 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/feature-libraries/modular-schema/modularChangeFormat.d.ts +9 -3
- package/lib/feature-libraries/modular-schema/modularChangeFormat.d.ts.map +1 -1
- package/lib/feature-libraries/object-forest/objectForest.d.ts.map +1 -1
- package/lib/feature-libraries/object-forest/objectForest.js +3 -4
- package/lib/feature-libraries/object-forest/objectForest.js.map +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +2 -2
- package/lib/index.js.map +1 -1
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.d.ts.map +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/shared-tree/independentView.d.ts +8 -0
- package/lib/shared-tree/independentView.d.ts.map +1 -1
- package/lib/shared-tree/independentView.js +21 -10
- package/lib/shared-tree/independentView.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 +3 -2
- package/lib/shared-tree/schematizeTree.js.map +1 -1
- package/lib/shared-tree/schematizingTreeView.d.ts +0 -1
- package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/lib/shared-tree/schematizingTreeView.js +8 -11
- package/lib/shared-tree/schematizingTreeView.js.map +1 -1
- package/lib/shared-tree/sharedTree.d.ts.map +1 -1
- package/lib/shared-tree/sharedTree.js +2 -30
- package/lib/shared-tree/sharedTree.js.map +1 -1
- package/lib/shared-tree/tree.js +1 -1
- package/lib/shared-tree/tree.js.map +1 -1
- package/lib/shared-tree/treeAlpha.d.ts +20 -6
- package/lib/shared-tree/treeAlpha.d.ts.map +1 -1
- package/lib/shared-tree/treeAlpha.js +10 -5
- package/lib/shared-tree/treeAlpha.js.map +1 -1
- package/lib/shared-tree/treeCheckout.d.ts +2 -1
- package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
- package/lib/shared-tree/treeCheckout.js +34 -2
- package/lib/shared-tree/treeCheckout.js.map +1 -1
- package/lib/shared-tree-core/branch.d.ts.map +1 -1
- package/lib/shared-tree-core/branch.js +1 -1
- package/lib/shared-tree-core/branch.js.map +1 -1
- package/lib/simple-tree/api/conciseTree.d.ts +2 -2
- package/lib/simple-tree/api/conciseTree.d.ts.map +1 -1
- package/lib/simple-tree/api/conciseTree.js +6 -6
- package/lib/simple-tree/api/conciseTree.js.map +1 -1
- package/lib/simple-tree/api/configuration.d.ts +8 -2
- package/lib/simple-tree/api/configuration.d.ts.map +1 -1
- package/lib/simple-tree/api/configuration.js.map +1 -1
- package/lib/simple-tree/api/create.d.ts +8 -7
- package/lib/simple-tree/api/create.d.ts.map +1 -1
- package/lib/simple-tree/api/create.js +38 -25
- package/lib/simple-tree/api/create.js.map +1 -1
- package/lib/simple-tree/api/customTree.d.ts +25 -4
- package/lib/simple-tree/api/customTree.d.ts.map +1 -1
- package/lib/simple-tree/api/customTree.js +43 -17
- package/lib/simple-tree/api/customTree.js.map +1 -1
- package/lib/simple-tree/api/discrepancies.d.ts +98 -0
- package/lib/simple-tree/api/discrepancies.d.ts.map +1 -0
- package/lib/simple-tree/api/discrepancies.js +250 -0
- package/lib/simple-tree/api/discrepancies.js.map +1 -0
- package/lib/simple-tree/api/schemaCompatibilityTester.d.ts +8 -21
- package/lib/simple-tree/api/schemaCompatibilityTester.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaCompatibilityTester.js +19 -169
- package/lib/simple-tree/api/schemaCompatibilityTester.js.map +1 -1
- package/lib/simple-tree/api/schemaCreationUtilities.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaCreationUtilities.js +2 -2
- package/lib/simple-tree/api/schemaCreationUtilities.js.map +1 -1
- package/lib/simple-tree/api/schemaFactory.d.ts +7 -4
- package/lib/simple-tree/api/schemaFactory.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaFactory.js.map +1 -1
- package/lib/simple-tree/api/storedSchema.d.ts.map +1 -1
- package/lib/simple-tree/api/storedSchema.js +6 -2
- package/lib/simple-tree/api/storedSchema.js.map +1 -1
- package/lib/simple-tree/api/treeBeta.d.ts +2 -2
- package/lib/simple-tree/api/treeBeta.d.ts.map +1 -1
- package/lib/simple-tree/api/treeBeta.js +8 -2
- package/lib/simple-tree/api/treeBeta.js.map +1 -1
- package/lib/simple-tree/api/verboseTree.d.ts +2 -2
- package/lib/simple-tree/api/verboseTree.d.ts.map +1 -1
- package/lib/simple-tree/api/verboseTree.js +9 -9
- package/lib/simple-tree/api/verboseTree.js.map +1 -1
- package/lib/simple-tree/core/allowedTypes.d.ts +20 -4
- package/lib/simple-tree/core/allowedTypes.d.ts.map +1 -1
- package/lib/simple-tree/core/allowedTypes.js +42 -12
- package/lib/simple-tree/core/allowedTypes.js.map +1 -1
- package/lib/simple-tree/core/context.d.ts +13 -2
- package/lib/simple-tree/core/context.d.ts.map +1 -1
- package/lib/simple-tree/core/context.js +22 -9
- package/lib/simple-tree/core/context.js.map +1 -1
- package/lib/simple-tree/core/index.d.ts +2 -2
- package/lib/simple-tree/core/index.d.ts.map +1 -1
- package/lib/simple-tree/core/index.js +2 -2
- package/lib/simple-tree/core/index.js.map +1 -1
- package/lib/simple-tree/core/treeNodeKernel.d.ts +1 -1
- package/lib/simple-tree/core/treeNodeKernel.js +1 -1
- package/lib/simple-tree/core/treeNodeKernel.js.map +1 -1
- package/lib/simple-tree/core/treeNodeValid.d.ts +1 -1
- package/lib/simple-tree/core/treeNodeValid.d.ts.map +1 -1
- package/lib/simple-tree/core/treeNodeValid.js +8 -1
- package/lib/simple-tree/core/treeNodeValid.js.map +1 -1
- package/lib/simple-tree/core/walkSchema.d.ts +3 -0
- package/lib/simple-tree/core/walkSchema.d.ts.map +1 -1
- package/lib/simple-tree/core/walkSchema.js +2 -0
- package/lib/simple-tree/core/walkSchema.js.map +1 -1
- package/lib/simple-tree/createContext.d.ts +2 -0
- package/lib/simple-tree/createContext.d.ts.map +1 -1
- package/lib/simple-tree/createContext.js +3 -1
- package/lib/simple-tree/createContext.js.map +1 -1
- package/lib/simple-tree/fieldSchema.d.ts +1 -0
- package/lib/simple-tree/fieldSchema.d.ts.map +1 -1
- package/lib/simple-tree/fieldSchema.js +1 -0
- package/lib/simple-tree/fieldSchema.js.map +1 -1
- package/lib/simple-tree/index.d.ts +5 -4
- package/lib/simple-tree/index.d.ts.map +1 -1
- package/lib/simple-tree/index.js +5 -4
- package/lib/simple-tree/index.js.map +1 -1
- package/lib/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/array/arrayNode.js +1 -1
- package/lib/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
- 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 +1 -1
- package/lib/simple-tree/node-kinds/index.js.map +1 -1
- package/lib/simple-tree/node-kinds/object/index.d.ts +1 -1
- package/lib/simple-tree/node-kinds/object/index.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/object/index.js +1 -1
- package/lib/simple-tree/node-kinds/object/index.js.map +1 -1
- package/lib/simple-tree/node-kinds/object/objectNode.d.ts +2 -7
- package/lib/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/object/objectNode.js +3 -16
- package/lib/simple-tree/node-kinds/object/objectNode.js.map +1 -1
- package/lib/simple-tree/prepareForInsertion.d.ts +5 -5
- package/lib/simple-tree/prepareForInsertion.d.ts.map +1 -1
- package/lib/simple-tree/prepareForInsertion.js +11 -5
- package/lib/simple-tree/prepareForInsertion.js.map +1 -1
- package/lib/simple-tree/toStoredSchema.d.ts +3 -0
- package/lib/simple-tree/toStoredSchema.d.ts.map +1 -1
- package/lib/simple-tree/toStoredSchema.js +3 -0
- package/lib/simple-tree/toStoredSchema.js.map +1 -1
- package/lib/simple-tree/unhydratedFlexTreeFromInsertable.d.ts +2 -2
- package/lib/simple-tree/unhydratedFlexTreeFromInsertable.d.ts.map +1 -1
- package/lib/simple-tree/unhydratedFlexTreeFromInsertable.js +1 -1
- package/lib/simple-tree/unhydratedFlexTreeFromInsertable.js.map +1 -1
- package/lib/simple-tree/walkFieldSchema.d.ts +1 -0
- package/lib/simple-tree/walkFieldSchema.d.ts.map +1 -1
- package/lib/simple-tree/walkFieldSchema.js +1 -0
- package/lib/simple-tree/walkFieldSchema.js.map +1 -1
- package/package.json +23 -23
- package/src/codec/codec.ts +4 -3
- package/src/core/index.ts +2 -0
- package/src/core/rebase/index.ts +2 -0
- package/src/core/rebase/types.ts +4 -0
- package/src/core/schema-stored/schema.ts +2 -26
- package/src/core/tree/detachedFieldIndex.ts +4 -6
- package/src/core/tree/detachedFieldIndexCodecCommon.ts +87 -0
- package/src/core/tree/{detachedFieldIndexCodec.ts → detachedFieldIndexCodecV1.ts} +22 -68
- package/src/core/tree/detachedFieldIndexCodecV2.ts +72 -0
- package/src/core/tree/detachedFieldIndexCodecs.ts +44 -0
- package/src/core/tree/{detachedFieldIndexFormat.ts → detachedFieldIndexFormatCommon.ts} +32 -23
- package/src/core/tree/detachedFieldIndexFormatV1.ts +15 -0
- package/src/core/tree/detachedFieldIndexFormatV2.ts +17 -0
- package/src/feature-libraries/chunked-forest/codec/README.md +1 -1
- package/src/feature-libraries/chunked-forest/codec/chunkDecoding.ts +25 -25
- package/src/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.ts +10 -6
- package/src/feature-libraries/chunked-forest/codec/compressedEncode.ts +96 -73
- package/src/feature-libraries/chunked-forest/codec/format.ts +20 -14
- package/src/feature-libraries/chunked-forest/codec/{nodeShape.ts → nodeEncoder.ts} +23 -17
- package/src/feature-libraries/chunked-forest/codec/schemaBasedEncode.ts +34 -34
- package/src/feature-libraries/chunked-forest/codec/uncompressedEncode.ts +5 -5
- package/src/feature-libraries/default-schema/defaultFieldKinds.ts +10 -0
- package/src/feature-libraries/default-schema/defaultSchema.ts +0 -2
- package/src/feature-libraries/default-schema/index.ts +1 -1
- package/src/feature-libraries/default-schema/schemaChecker.ts +47 -30
- package/src/feature-libraries/index.ts +1 -18
- package/src/feature-libraries/modular-schema/comparison.ts +14 -33
- package/src/feature-libraries/modular-schema/index.ts +0 -17
- package/src/feature-libraries/object-forest/objectForest.ts +10 -6
- package/src/index.ts +5 -0
- package/src/packageVersion.ts +1 -1
- package/src/shared-tree/independentView.ts +45 -19
- package/src/shared-tree/schematizeTree.ts +3 -3
- package/src/shared-tree/schematizingTreeView.ts +17 -17
- package/src/shared-tree/sharedTree.ts +2 -42
- package/src/shared-tree/tree.ts +1 -1
- package/src/shared-tree/treeAlpha.ts +30 -18
- package/src/shared-tree/treeCheckout.ts +55 -11
- package/src/shared-tree-core/branch.ts +1 -6
- package/src/simple-tree/api/conciseTree.ts +9 -7
- package/src/simple-tree/api/configuration.ts +8 -2
- package/src/simple-tree/api/create.ts +49 -36
- package/src/simple-tree/api/customTree.ts +59 -20
- package/src/simple-tree/api/discrepancies.ts +473 -0
- package/src/simple-tree/api/schemaCompatibilityTester.ts +28 -242
- package/src/simple-tree/api/schemaCreationUtilities.ts +5 -2
- package/src/simple-tree/api/schemaFactory.ts +7 -4
- package/src/simple-tree/api/storedSchema.ts +6 -10
- package/src/simple-tree/api/treeBeta.ts +17 -4
- package/src/simple-tree/api/verboseTree.ts +17 -8
- package/src/simple-tree/core/allowedTypes.ts +54 -21
- package/src/simple-tree/core/context.ts +24 -22
- package/src/simple-tree/core/index.ts +2 -1
- package/src/simple-tree/core/treeNodeKernel.ts +1 -1
- package/src/simple-tree/core/treeNodeValid.ts +9 -2
- package/src/simple-tree/core/walkSchema.ts +3 -0
- package/src/simple-tree/createContext.ts +6 -1
- package/src/simple-tree/fieldSchema.ts +1 -0
- package/src/simple-tree/index.ts +6 -3
- package/src/simple-tree/node-kinds/array/arrayNode.ts +32 -19
- package/src/simple-tree/node-kinds/index.ts +1 -1
- package/src/simple-tree/node-kinds/object/index.ts +1 -1
- package/src/simple-tree/node-kinds/object/objectNode.ts +9 -27
- package/src/simple-tree/prepareForInsertion.ts +17 -9
- package/src/simple-tree/toStoredSchema.ts +3 -0
- package/src/simple-tree/unhydratedFlexTreeFromInsertable.ts +6 -2
- package/src/simple-tree/walkFieldSchema.ts +1 -0
- package/dist/core/tree/detachedFieldIndexCodec.d.ts +0 -11
- package/dist/core/tree/detachedFieldIndexCodec.d.ts.map +0 -1
- package/dist/core/tree/detachedFieldIndexCodec.js +0 -100
- package/dist/core/tree/detachedFieldIndexCodec.js.map +0 -1
- package/dist/core/tree/detachedFieldIndexFormat.d.ts +0 -33
- package/dist/core/tree/detachedFieldIndexFormat.d.ts.map +0 -1
- package/dist/core/tree/detachedFieldIndexFormat.js.map +0 -1
- package/dist/feature-libraries/chunked-forest/codec/nodeShape.d.ts.map +0 -1
- package/dist/feature-libraries/chunked-forest/codec/nodeShape.js.map +0 -1
- package/dist/feature-libraries/initializeForest.d.ts +0 -18
- package/dist/feature-libraries/initializeForest.d.ts.map +0 -1
- package/dist/feature-libraries/initializeForest.js +0 -35
- package/dist/feature-libraries/initializeForest.js.map +0 -1
- package/dist/feature-libraries/modular-schema/discrepancies.d.ts +0 -174
- 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/lib/core/tree/detachedFieldIndexCodec.d.ts +0 -11
- package/lib/core/tree/detachedFieldIndexCodec.d.ts.map +0 -1
- package/lib/core/tree/detachedFieldIndexCodec.js +0 -96
- package/lib/core/tree/detachedFieldIndexCodec.js.map +0 -1
- package/lib/core/tree/detachedFieldIndexFormat.d.ts +0 -33
- package/lib/core/tree/detachedFieldIndexFormat.d.ts.map +0 -1
- package/lib/core/tree/detachedFieldIndexFormat.js.map +0 -1
- package/lib/feature-libraries/chunked-forest/codec/nodeShape.d.ts.map +0 -1
- package/lib/feature-libraries/chunked-forest/codec/nodeShape.js.map +0 -1
- package/lib/feature-libraries/initializeForest.d.ts +0 -18
- package/lib/feature-libraries/initializeForest.d.ts.map +0 -1
- package/lib/feature-libraries/initializeForest.js +0 -31
- package/lib/feature-libraries/initializeForest.js.map +0 -1
- package/lib/feature-libraries/modular-schema/discrepancies.d.ts +0 -174
- 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/src/feature-libraries/initializeForest.ts +0 -55
- package/src/feature-libraries/modular-schema/discrepancies.ts +0 -567
|
@@ -28,34 +28,36 @@ import { walkAllowedTypes } from "./walkSchema.js";
|
|
|
28
28
|
* This design is the same as {@link FlexTreeContext} with its base type and {@link FlexTreeHydratedContext} extending it.
|
|
29
29
|
*/
|
|
30
30
|
export class Context {
|
|
31
|
-
|
|
32
|
-
* All schema which could transitively be used under the associated node.
|
|
33
|
-
* @remarks
|
|
34
|
-
* While generally {@link TreeNodeSchema} are referenced as objects and thus do not need to be looked up by identifier,
|
|
35
|
-
* there are a few cases (mainly constructing new TreeNodes from existing tree data) where such a lookup is useful.
|
|
36
|
-
* Having this map in the context addresses this use-case.
|
|
37
|
-
* @privateRemarks
|
|
38
|
-
* This design mirrors how {@link FlexTreeSchema} are accessed off the {@link FlexTreeContext}, making the migration away from them simpler.
|
|
39
|
-
*/
|
|
40
|
-
public readonly schema: ReadonlyMap<TreeNodeSchemaIdentifier, TreeNodeSchema>;
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* Builds the context.
|
|
44
|
-
* @remarks
|
|
45
|
-
* Since this walks the schema, it must not be invoked during schema declaration or schema forward references could fail to be resolved.
|
|
46
|
-
*/
|
|
47
|
-
public constructor(
|
|
31
|
+
public static schemaMapFromRootSchema(
|
|
48
32
|
rootSchema: NormalizedAnnotatedAllowedTypes,
|
|
49
|
-
|
|
50
|
-
) {
|
|
33
|
+
): ReadonlyMap<TreeNodeSchemaIdentifier, TreeNodeSchema> {
|
|
51
34
|
const schema: Map<TreeNodeSchemaIdentifier, TreeNodeSchema> = new Map();
|
|
52
35
|
walkAllowedTypes(rootSchema, {
|
|
53
36
|
node(nodeSchema) {
|
|
54
37
|
schema.set(brand(nodeSchema.identifier), nodeSchema);
|
|
55
38
|
},
|
|
56
39
|
});
|
|
57
|
-
|
|
40
|
+
return schema;
|
|
58
41
|
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Builds the context.
|
|
45
|
+
* @remarks
|
|
46
|
+
* Since this walks the schema, it must not be invoked during schema declaration or schema forward references could fail to be resolved.
|
|
47
|
+
*/
|
|
48
|
+
public constructor(
|
|
49
|
+
public readonly flexContext: FlexTreeContext,
|
|
50
|
+
/**
|
|
51
|
+
* All schema which could transitively be used under the associated node.
|
|
52
|
+
* @remarks
|
|
53
|
+
* While generally {@link TreeNodeSchema} are referenced as objects and thus do not need to be looked up by identifier,
|
|
54
|
+
* there are a few cases (mainly constructing new TreeNodes from existing tree data) where such a lookup is useful.
|
|
55
|
+
* Having this map in the context addresses this use-case.
|
|
56
|
+
* @privateRemarks
|
|
57
|
+
* This design mirrors how {@link FlexTreeSchema} are accessed off the {@link FlexTreeContext}, making the migration away from them simpler.
|
|
58
|
+
*/
|
|
59
|
+
public readonly schema: ReadonlyMap<TreeNodeSchemaIdentifier, TreeNodeSchema>,
|
|
60
|
+
) {}
|
|
59
61
|
}
|
|
60
62
|
|
|
61
63
|
/**
|
|
@@ -64,9 +66,9 @@ export class Context {
|
|
|
64
66
|
*/
|
|
65
67
|
export class HydratedContext extends Context {
|
|
66
68
|
public constructor(
|
|
67
|
-
rootSchema: NormalizedAnnotatedAllowedTypes,
|
|
68
69
|
public override readonly flexContext: FlexTreeHydratedContext,
|
|
70
|
+
schema: ReadonlyMap<TreeNodeSchemaIdentifier, TreeNodeSchema>,
|
|
69
71
|
) {
|
|
70
|
-
super(
|
|
72
|
+
super(flexContext, schema);
|
|
71
73
|
}
|
|
72
74
|
}
|
|
@@ -53,6 +53,7 @@ export {
|
|
|
53
53
|
isAnnotatedAllowedType,
|
|
54
54
|
normalizeAllowedTypes,
|
|
55
55
|
normalizeAnnotatedAllowedTypes,
|
|
56
|
+
normalizeToAnnotatedAllowedType,
|
|
56
57
|
unannotateImplicitAllowedTypes,
|
|
57
58
|
markSchemaMostDerived,
|
|
58
59
|
evaluateLazySchema,
|
|
@@ -76,7 +77,7 @@ export type {
|
|
|
76
77
|
AllowedTypeMetadata,
|
|
77
78
|
AnnotatedAllowedTypes,
|
|
78
79
|
} from "./allowedTypes.js";
|
|
79
|
-
export { walkAllowedTypes, type SchemaVisitor } from "./walkSchema.js";
|
|
80
|
+
export { walkAllowedTypes, walkNodeSchema, type SchemaVisitor } from "./walkSchema.js";
|
|
80
81
|
export { Context, HydratedContext } from "./context.js";
|
|
81
82
|
export {
|
|
82
83
|
getOrCreateNodeFromInnerNode,
|
|
@@ -131,7 +131,7 @@ export class TreeNodeKernel {
|
|
|
131
131
|
/**
|
|
132
132
|
* Create a TreeNodeKernel which can be looked up with {@link getKernel}.
|
|
133
133
|
*
|
|
134
|
-
* @param initialContext - context from when this node was originally
|
|
134
|
+
* @param initialContext - context from when this node was originally created. Only used when unhydrated.
|
|
135
135
|
* @param innerNode - When unhydrated/raw or marinated the MapTreeNode. FlexTreeNode when cooked.
|
|
136
136
|
* @remarks
|
|
137
137
|
* Exactly one kernel per TreeNode should be created.
|
|
@@ -10,7 +10,7 @@ import { type FlexTreeNode, isFlexTreeNode } from "../../feature-libraries/index
|
|
|
10
10
|
|
|
11
11
|
import { markEager } from "./flexList.js";
|
|
12
12
|
import { inPrototypeChain, privateToken, TreeNode } from "./treeNode.js";
|
|
13
|
-
import
|
|
13
|
+
import { UnhydratedFlexTreeNode } from "./unhydratedFlexTree.js";
|
|
14
14
|
import {
|
|
15
15
|
NodeKind,
|
|
16
16
|
type TreeNodeSchema,
|
|
@@ -193,10 +193,17 @@ export abstract class TreeNodeValid<TInput> extends TreeNode {
|
|
|
193
193
|
);
|
|
194
194
|
|
|
195
195
|
const result = schema.prepareInstance(this, node);
|
|
196
|
+
// For unhydrated nodes, grab the context from the `simpleContext` (which likely is from cache.oneTimeInitialized.context,
|
|
197
|
+
// but might be customized for better schema evolution support like unknown optional fields like in clone)
|
|
198
|
+
// For hydrated nodes, this context is unused, so using the default from cache.oneTimeInitialized.context is always fine.
|
|
199
|
+
const context =
|
|
200
|
+
node instanceof UnhydratedFlexTreeNode
|
|
201
|
+
? node.simpleContext
|
|
202
|
+
: cache.oneTimeInitialized.context;
|
|
196
203
|
// The TreeNodeKernel associates itself the TreeNode (result here, not node) so it can be looked up later via getKernel.
|
|
197
204
|
// If desired this could be put in a non-enumerable symbol property for lookup instead, but that gets messy going through proxies,
|
|
198
205
|
// so just relying on the WeakMap seems like the cleanest approach.
|
|
199
|
-
new TreeNodeKernel(result, schema, node,
|
|
206
|
+
new TreeNodeKernel(result, schema, node, context);
|
|
200
207
|
|
|
201
208
|
return result;
|
|
202
209
|
}
|
|
@@ -11,6 +11,7 @@ import { getTreeNodeSchemaPrivateData, type TreeNodeSchema } from "./treeNodeSch
|
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
13
|
* Traverses all {@link TreeNodeSchema} schema reachable from `schema`, applying the visitor pattern.
|
|
14
|
+
* @internal
|
|
14
15
|
*/
|
|
15
16
|
export function walkNodeSchema(
|
|
16
17
|
schema: TreeNodeSchema,
|
|
@@ -42,6 +43,7 @@ export function walkNodeSchema(
|
|
|
42
43
|
|
|
43
44
|
/**
|
|
44
45
|
* Traverses all {@link TreeNodeSchema} schema reachable from `allowedTypes`, applying the visitor pattern.
|
|
46
|
+
* @internal
|
|
45
47
|
*/
|
|
46
48
|
export function walkAllowedTypes(
|
|
47
49
|
annotatedAllowedTypes: NormalizedAnnotatedAllowedTypes,
|
|
@@ -56,6 +58,7 @@ export function walkAllowedTypes(
|
|
|
56
58
|
|
|
57
59
|
/**
|
|
58
60
|
* Callbacks for use in {@link walkFieldSchema} / {@link walkAllowedTypes} / {@link walkNodeSchema}.
|
|
61
|
+
* @internal
|
|
59
62
|
*/
|
|
60
63
|
export interface SchemaVisitor {
|
|
61
64
|
/**
|
|
@@ -21,13 +21,18 @@ const contextCache: WeakMap<ImplicitFieldSchema, Context> = new WeakMap();
|
|
|
21
21
|
|
|
22
22
|
/**
|
|
23
23
|
* Utility for creating {@link Context}s for unhydrated nodes.
|
|
24
|
+
* @remarks
|
|
25
|
+
* The resulting context will not allow any unknown optional fields.
|
|
24
26
|
*/
|
|
25
27
|
export function getUnhydratedContext(schema: ImplicitFieldSchema): Context {
|
|
26
28
|
return getOrCreate(contextCache, schema, (s) => {
|
|
27
29
|
const normalized = normalizeFieldSchema(schema);
|
|
28
30
|
|
|
29
31
|
const flexContext = new UnhydratedContext(defaultSchemaPolicy, toStoredSchema(schema));
|
|
30
|
-
return new Context(
|
|
32
|
+
return new Context(
|
|
33
|
+
flexContext,
|
|
34
|
+
Context.schemaMapFromRootSchema(normalized.annotatedAllowedTypesNormalized),
|
|
35
|
+
);
|
|
31
36
|
});
|
|
32
37
|
}
|
|
33
38
|
|
|
@@ -488,6 +488,7 @@ export class FieldSchemaAlpha<
|
|
|
488
488
|
|
|
489
489
|
/**
|
|
490
490
|
* Normalizes a {@link ImplicitFieldSchema} or {@link ImplicitAnnotatedFieldSchema} to a {@link FieldSchema}.
|
|
491
|
+
* @internal
|
|
491
492
|
*/
|
|
492
493
|
export function normalizeFieldSchema(
|
|
493
494
|
schema: ImplicitFieldSchema | ImplicitAnnotatedFieldSchema,
|
package/src/simple-tree/index.ts
CHANGED
|
@@ -54,7 +54,11 @@ export {
|
|
|
54
54
|
type FlexList,
|
|
55
55
|
type FlexListToUnion,
|
|
56
56
|
type ExtractItemType,
|
|
57
|
+
walkNodeSchema,
|
|
58
|
+
walkAllowedTypes,
|
|
59
|
+
type SchemaVisitor,
|
|
57
60
|
} from "./core/index.js";
|
|
61
|
+
export { walkFieldSchema } from "./walkFieldSchema.js";
|
|
58
62
|
export type { UnsafeUnknownSchema, Insertable } from "./unsafeUnknownSchema.js";
|
|
59
63
|
export {
|
|
60
64
|
type ITree,
|
|
@@ -178,7 +182,7 @@ export {
|
|
|
178
182
|
type UnannotateImplicitFieldSchema,
|
|
179
183
|
FieldKind,
|
|
180
184
|
FieldSchema,
|
|
181
|
-
|
|
185
|
+
FieldSchemaAlpha,
|
|
182
186
|
type InsertableTreeFieldFromImplicitField,
|
|
183
187
|
type DefaultProvider,
|
|
184
188
|
type FieldProps,
|
|
@@ -218,7 +222,6 @@ export {
|
|
|
218
222
|
type InsertableObjectFromAnnotatedSchemaRecord,
|
|
219
223
|
type TreeObjectNode,
|
|
220
224
|
setField,
|
|
221
|
-
createUnknownOptionalFieldPolicy,
|
|
222
225
|
isRecordNodeSchema,
|
|
223
226
|
type RecordNodeCustomizableSchema,
|
|
224
227
|
type RecordNodeInsertableData,
|
|
@@ -237,7 +240,7 @@ export {
|
|
|
237
240
|
prepareForInsertion,
|
|
238
241
|
prepareForInsertionContextless,
|
|
239
242
|
} from "./prepareForInsertion.js";
|
|
240
|
-
export { toStoredSchema, getStoredSchema } from "./toStoredSchema.js";
|
|
243
|
+
export { toStoredSchema, getStoredSchema, convertFieldKind } from "./toStoredSchema.js";
|
|
241
244
|
export {
|
|
242
245
|
numberSchema,
|
|
243
246
|
stringSchema,
|
|
@@ -848,15 +848,15 @@ type Insertable<T extends ImplicitAllowedTypes> = readonly (
|
|
|
848
848
|
| IterableTreeArrayContent<InsertableTreeNodeFromImplicitAllowedTypes<T>>
|
|
849
849
|
)[];
|
|
850
850
|
|
|
851
|
-
abstract class CustomArrayNodeBase<const T extends
|
|
851
|
+
abstract class CustomArrayNodeBase<const T extends ImplicitAnnotatedAllowedTypes>
|
|
852
852
|
extends TreeNodeWithArrayFeatures<
|
|
853
|
-
Iterable<InsertableTreeNodeFromImplicitAllowedTypes<T
|
|
854
|
-
TreeNodeFromImplicitAllowedTypes<T
|
|
853
|
+
Iterable<InsertableTreeNodeFromImplicitAllowedTypes<UnannotateImplicitAllowedTypes<T>>>,
|
|
854
|
+
TreeNodeFromImplicitAllowedTypes<UnannotateImplicitAllowedTypes<T>>
|
|
855
855
|
>
|
|
856
|
-
implements TreeArrayNode<T
|
|
856
|
+
implements TreeArrayNode<UnannotateImplicitAllowedTypes<T>>
|
|
857
857
|
{
|
|
858
858
|
// Indexing must be provided by subclass.
|
|
859
|
-
[k: number]: TreeNodeFromImplicitAllowedTypes<T
|
|
859
|
+
[k: number]: TreeNodeFromImplicitAllowedTypes<UnannotateImplicitAllowedTypes<T>>;
|
|
860
860
|
|
|
861
861
|
public static readonly kind = NodeKind.Array;
|
|
862
862
|
|
|
@@ -869,12 +869,16 @@ abstract class CustomArrayNodeBase<const T extends ImplicitAllowedTypes>
|
|
|
869
869
|
>;
|
|
870
870
|
|
|
871
871
|
public constructor(
|
|
872
|
-
input?:
|
|
872
|
+
input?:
|
|
873
|
+
| Iterable<InsertableTreeNodeFromImplicitAllowedTypes<UnannotateImplicitAllowedTypes<T>>>
|
|
874
|
+
| InternalTreeNode,
|
|
873
875
|
) {
|
|
874
876
|
super(input ?? []);
|
|
875
877
|
}
|
|
876
878
|
|
|
877
|
-
#mapTreesFromFieldData(
|
|
879
|
+
#mapTreesFromFieldData(
|
|
880
|
+
value: Insertable<UnannotateImplicitAllowedTypes<T>>,
|
|
881
|
+
): FlexibleFieldContent {
|
|
878
882
|
const sequenceField = getSequenceField(this);
|
|
879
883
|
const content = value as readonly (
|
|
880
884
|
| InsertableContent
|
|
@@ -906,7 +910,9 @@ abstract class CustomArrayNodeBase<const T extends ImplicitAllowedTypes>
|
|
|
906
910
|
return fail(0xadb /* Proxy should intercept length */);
|
|
907
911
|
}
|
|
908
912
|
|
|
909
|
-
public [Symbol.iterator](): IterableIterator<
|
|
913
|
+
public [Symbol.iterator](): IterableIterator<
|
|
914
|
+
TreeNodeFromImplicitAllowedTypes<UnannotateImplicitAllowedTypes<T>>
|
|
915
|
+
> {
|
|
910
916
|
return this.values();
|
|
911
917
|
}
|
|
912
918
|
|
|
@@ -918,9 +924,9 @@ abstract class CustomArrayNodeBase<const T extends ImplicitAllowedTypes>
|
|
|
918
924
|
}
|
|
919
925
|
|
|
920
926
|
public at(
|
|
921
|
-
this: TreeArrayNode<T
|
|
927
|
+
this: TreeArrayNode<UnannotateImplicitAllowedTypes<T>>,
|
|
922
928
|
index: number,
|
|
923
|
-
): TreeNodeFromImplicitAllowedTypes<T
|
|
929
|
+
): TreeNodeFromImplicitAllowedTypes<UnannotateImplicitAllowedTypes<T>> | undefined {
|
|
924
930
|
const field = getSequenceField(this);
|
|
925
931
|
const val = field.boxedAt(index);
|
|
926
932
|
|
|
@@ -928,18 +934,23 @@ abstract class CustomArrayNodeBase<const T extends ImplicitAllowedTypes>
|
|
|
928
934
|
return val;
|
|
929
935
|
}
|
|
930
936
|
|
|
931
|
-
return getOrCreateNodeFromInnerNode(val) as TreeNodeFromImplicitAllowedTypes<
|
|
937
|
+
return getOrCreateNodeFromInnerNode(val) as TreeNodeFromImplicitAllowedTypes<
|
|
938
|
+
UnannotateImplicitAllowedTypes<T>
|
|
939
|
+
>;
|
|
932
940
|
}
|
|
933
|
-
public insertAt(
|
|
941
|
+
public insertAt(
|
|
942
|
+
index: number,
|
|
943
|
+
...value: Insertable<UnannotateImplicitAllowedTypes<T>>
|
|
944
|
+
): void {
|
|
934
945
|
const field = getSequenceField(this);
|
|
935
946
|
validateIndex(index, field, "insertAt", true);
|
|
936
947
|
const content = this.#mapTreesFromFieldData(value);
|
|
937
948
|
field.editor.insert(index, content);
|
|
938
949
|
}
|
|
939
|
-
public insertAtStart(...value: Insertable<T
|
|
950
|
+
public insertAtStart(...value: Insertable<UnannotateImplicitAllowedTypes<T>>): void {
|
|
940
951
|
this.insertAt(0, ...value);
|
|
941
952
|
}
|
|
942
|
-
public insertAtEnd(...value: Insertable<T
|
|
953
|
+
public insertAtEnd(...value: Insertable<UnannotateImplicitAllowedTypes<T>>): void {
|
|
943
954
|
this.insertAt(this.length, ...value);
|
|
944
955
|
}
|
|
945
956
|
public removeAt(index: number): void {
|
|
@@ -1079,12 +1090,14 @@ abstract class CustomArrayNodeBase<const T extends ImplicitAllowedTypes>
|
|
|
1079
1090
|
}
|
|
1080
1091
|
}
|
|
1081
1092
|
|
|
1082
|
-
public values(): IterableIterator<
|
|
1093
|
+
public values(): IterableIterator<
|
|
1094
|
+
TreeNodeFromImplicitAllowedTypes<UnannotateImplicitAllowedTypes<T>>
|
|
1095
|
+
> {
|
|
1083
1096
|
return this.generateValues(getKernel(this).generationNumber);
|
|
1084
1097
|
}
|
|
1085
1098
|
private *generateValues(
|
|
1086
1099
|
initialLastUpdatedStamp: number,
|
|
1087
|
-
): Generator<TreeNodeFromImplicitAllowedTypes<T
|
|
1100
|
+
): Generator<TreeNodeFromImplicitAllowedTypes<UnannotateImplicitAllowedTypes<T>>> {
|
|
1088
1101
|
const kernel = getKernel(this);
|
|
1089
1102
|
if (initialLastUpdatedStamp !== kernel.generationNumber) {
|
|
1090
1103
|
throw new UsageError(`Concurrent editing and iteration is not allowed.`);
|
|
@@ -1138,7 +1151,7 @@ export function arraySchema<
|
|
|
1138
1151
|
|
|
1139
1152
|
// This class returns a proxy from its constructor to handle numeric indexing.
|
|
1140
1153
|
// Alternatively it could extend a normal class which gets tons of numeric properties added.
|
|
1141
|
-
class Schema extends CustomArrayNodeBase<
|
|
1154
|
+
class Schema extends CustomArrayNodeBase<T> {
|
|
1142
1155
|
public static override prepareInstance<T2>(
|
|
1143
1156
|
this: typeof TreeNodeValid<T2>,
|
|
1144
1157
|
instance: TreeNodeValid<T2>,
|
|
@@ -1229,8 +1242,8 @@ export function arraySchema<
|
|
|
1229
1242
|
return Schema.constructorCached?.constructor as unknown as Output;
|
|
1230
1243
|
}
|
|
1231
1244
|
|
|
1232
|
-
protected get simpleSchema():
|
|
1233
|
-
return
|
|
1245
|
+
protected get simpleSchema(): T {
|
|
1246
|
+
return info;
|
|
1234
1247
|
}
|
|
1235
1248
|
protected get allowedTypes(): ReadonlySet<TreeNodeSchema> {
|
|
1236
1249
|
return lazyChildTypes.value;
|
|
@@ -26,7 +26,6 @@ export {
|
|
|
26
26
|
} from "./map/index.js";
|
|
27
27
|
|
|
28
28
|
export {
|
|
29
|
-
createUnknownOptionalFieldPolicy,
|
|
30
29
|
type FieldHasDefault,
|
|
31
30
|
type InsertableObjectFromAnnotatedSchemaRecord,
|
|
32
31
|
type InsertableObjectFromSchemaRecord,
|
|
@@ -37,6 +36,7 @@ export {
|
|
|
37
36
|
objectSchema,
|
|
38
37
|
setField,
|
|
39
38
|
type TreeObjectNode,
|
|
39
|
+
type SimpleKeyMap,
|
|
40
40
|
type UnannotateSchemaRecord,
|
|
41
41
|
} from "./object/index.js";
|
|
42
42
|
|
|
@@ -4,7 +4,6 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
export {
|
|
7
|
-
createUnknownOptionalFieldPolicy,
|
|
8
7
|
type FieldHasDefault,
|
|
9
8
|
type InsertableObjectFromAnnotatedSchemaRecord,
|
|
10
9
|
type InsertableObjectFromSchemaRecord,
|
|
@@ -12,6 +11,7 @@ export {
|
|
|
12
11
|
objectSchema,
|
|
13
12
|
setField,
|
|
14
13
|
type TreeObjectNode,
|
|
14
|
+
type SimpleKeyMap,
|
|
15
15
|
} from "./objectNode.js";
|
|
16
16
|
export {
|
|
17
17
|
isObjectNodeSchema,
|
|
@@ -7,7 +7,7 @@ import { assert, Lazy, fail, debugAssert } from "@fluidframework/core-utils/inte
|
|
|
7
7
|
import { UsageError } from "@fluidframework/telemetry-utils/internal";
|
|
8
8
|
import { isFluidHandle } from "@fluidframework/runtime-utils/internal";
|
|
9
9
|
|
|
10
|
-
import type { FieldKey
|
|
10
|
+
import type { FieldKey } from "../../../core/index.js";
|
|
11
11
|
import {
|
|
12
12
|
FieldKinds,
|
|
13
13
|
isTreeValue,
|
|
@@ -55,12 +55,11 @@ import {
|
|
|
55
55
|
getUnhydratedContext,
|
|
56
56
|
} from "../../createContext.js";
|
|
57
57
|
import { tryGetTreeNodeForField } from "../../getTreeNodeForField.js";
|
|
58
|
-
import {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
type UnannotateSchemaRecord,
|
|
58
|
+
import type {
|
|
59
|
+
ObjectNodeSchema,
|
|
60
|
+
ObjectNodeSchemaInternalData,
|
|
61
|
+
ObjectNodeSchemaPrivate,
|
|
62
|
+
UnannotateSchemaRecord,
|
|
64
63
|
} from "./objectNodeTypes.js";
|
|
65
64
|
import { prepareForInsertion } from "../../prepareForInsertion.js";
|
|
66
65
|
import {
|
|
@@ -224,8 +223,9 @@ function createFlexKeyMapping(
|
|
|
224
223
|
): SimpleKeyMap {
|
|
225
224
|
const keyMap: Map<string | symbol, { storedKey: FieldKey; schema: FieldSchema }> = new Map();
|
|
226
225
|
for (const [propertyKey, fieldSchema] of Object.entries(fields)) {
|
|
227
|
-
const
|
|
228
|
-
|
|
226
|
+
const schema = normalizeFieldSchema(fieldSchema);
|
|
227
|
+
const storedKey = getStoredKey(propertyKey, schema);
|
|
228
|
+
keyMap.set(propertyKey, { storedKey, schema });
|
|
229
229
|
}
|
|
230
230
|
|
|
231
231
|
return keyMap;
|
|
@@ -649,24 +649,6 @@ function assertUniqueKeys<
|
|
|
649
649
|
}
|
|
650
650
|
}
|
|
651
651
|
|
|
652
|
-
/**
|
|
653
|
-
* Creates a policy for allowing unknown optional fields on an object node which delegates to the policy defined
|
|
654
|
-
* on the object node's internal schema data.
|
|
655
|
-
*/
|
|
656
|
-
export function createUnknownOptionalFieldPolicy(
|
|
657
|
-
schema: ImplicitFieldSchema,
|
|
658
|
-
): SchemaPolicy["allowUnknownOptionalFields"] {
|
|
659
|
-
const context = getUnhydratedContext(schema);
|
|
660
|
-
return (identifier) => {
|
|
661
|
-
const storedSchema = context.schema.get(identifier);
|
|
662
|
-
return (
|
|
663
|
-
storedSchema !== undefined &&
|
|
664
|
-
isObjectNodeSchema(storedSchema) &&
|
|
665
|
-
storedSchema.allowUnknownOptionalFields
|
|
666
|
-
);
|
|
667
|
-
};
|
|
668
|
-
}
|
|
669
|
-
|
|
670
652
|
/**
|
|
671
653
|
* {@link TreeNodeSchemaInitializedData.toFlexContent} for Map nodes.
|
|
672
654
|
*
|
|
@@ -19,8 +19,9 @@ import {
|
|
|
19
19
|
FieldKinds,
|
|
20
20
|
type FlexibleFieldContent,
|
|
21
21
|
type FlexibleNodeContent,
|
|
22
|
+
throwOutOfSchema,
|
|
22
23
|
} from "../feature-libraries/index.js";
|
|
23
|
-
import { normalizeFieldSchema, type
|
|
24
|
+
import { normalizeFieldSchema, type ImplicitAnnotatedFieldSchema } from "./fieldSchema.js";
|
|
24
25
|
import {
|
|
25
26
|
type InsertableContent,
|
|
26
27
|
unhydratedFlexTreeFromInsertable,
|
|
@@ -29,14 +30,22 @@ import { UsageError } from "@fluidframework/telemetry-utils/internal";
|
|
|
29
30
|
import { brand } from "../util/index.js";
|
|
30
31
|
import {
|
|
31
32
|
getKernel,
|
|
32
|
-
type
|
|
33
|
+
type ImplicitAnnotatedAllowedTypes,
|
|
33
34
|
type TreeNode,
|
|
34
35
|
type UnhydratedFlexTreeNode,
|
|
35
36
|
} from "./core/index.js";
|
|
36
37
|
import { debugAssert, oob } from "@fluidframework/core-utils/internal";
|
|
37
|
-
import {
|
|
38
|
+
import { isFieldInSchema } from "../feature-libraries/index.js";
|
|
38
39
|
import { convertField } from "./toStoredSchema.js";
|
|
39
40
|
|
|
41
|
+
/**
|
|
42
|
+
* For now, schema validation for inserted content is always enabled.
|
|
43
|
+
* @remarks
|
|
44
|
+
* If this ends up being too much of a performance overhead, AND nothing depends on it (like staged allowed types likely will),
|
|
45
|
+
* this could be changed.
|
|
46
|
+
*/
|
|
47
|
+
const validateSchema = true;
|
|
48
|
+
|
|
40
49
|
/**
|
|
41
50
|
* Prepare content from a user for insertion into a tree.
|
|
42
51
|
* @remarks
|
|
@@ -47,7 +56,7 @@ import { convertField } from "./toStoredSchema.js";
|
|
|
47
56
|
*/
|
|
48
57
|
export function prepareForInsertion<TIn extends InsertableContent | undefined>(
|
|
49
58
|
data: TIn,
|
|
50
|
-
schema:
|
|
59
|
+
schema: ImplicitAnnotatedFieldSchema,
|
|
51
60
|
destinationContext: FlexTreeContext,
|
|
52
61
|
): TIn extends undefined ? undefined : FlexibleNodeContent {
|
|
53
62
|
return prepareForInsertionContextless(
|
|
@@ -73,7 +82,7 @@ export function prepareForInsertion<TIn extends InsertableContent | undefined>(
|
|
|
73
82
|
*/
|
|
74
83
|
export function prepareArrayContentForInsertion(
|
|
75
84
|
data: readonly InsertableContent[],
|
|
76
|
-
schema:
|
|
85
|
+
schema: ImplicitAnnotatedAllowedTypes,
|
|
77
86
|
destinationContext: FlexTreeContext,
|
|
78
87
|
): FlexibleFieldContent {
|
|
79
88
|
const mapTrees: UnhydratedFlexTreeNode[] = data.map((item) =>
|
|
@@ -107,7 +116,7 @@ export function prepareArrayContentForInsertion(
|
|
|
107
116
|
*/
|
|
108
117
|
export function prepareForInsertionContextless<TIn extends InsertableContent | undefined>(
|
|
109
118
|
data: TIn,
|
|
110
|
-
schema:
|
|
119
|
+
schema: ImplicitAnnotatedFieldSchema,
|
|
111
120
|
schemaAndPolicy: SchemaAndPolicy,
|
|
112
121
|
hydratedData: FlexTreeHydratedContextMinimal | undefined,
|
|
113
122
|
): TIn extends undefined ? undefined : FlexibleNodeContent {
|
|
@@ -137,9 +146,8 @@ function validateAndPrepare(
|
|
|
137
146
|
// This ensures that when `isFieldInSchema` requests identifiers (or any other contextual defaults),
|
|
138
147
|
// they were already creating used the more specific context we have access to from `hydratedData`.
|
|
139
148
|
prepareContentForHydration(mapTrees, hydratedData.checkout.forest, hydratedData);
|
|
140
|
-
if (
|
|
141
|
-
|
|
142
|
-
inSchemaOrThrow(maybeError);
|
|
149
|
+
if (validateSchema === true) {
|
|
150
|
+
isFieldInSchema(mapTrees, fieldSchema, schemaAndPolicy, throwOutOfSchema);
|
|
143
151
|
}
|
|
144
152
|
}
|
|
145
153
|
}
|
|
@@ -110,6 +110,9 @@ export const convertFieldKind: ReadonlyMap<FieldKind, FlexFieldKind> = new Map<
|
|
|
110
110
|
* Converts a {@link TreeNodeSchema} into a {@link TreeNodeStoredSchema}.
|
|
111
111
|
* @privateRemarks
|
|
112
112
|
* TODO: Persist node metadata once schema FormatV2 is supported.
|
|
113
|
+
*
|
|
114
|
+
* TODO: AB#43548: Using a stored schema for unhydrated flex trees does not handle schema evolution features like "allowUnknownOptionalFields".
|
|
115
|
+
* Usage of this and the conversion which wrap it should be audited and reduced.
|
|
113
116
|
*/
|
|
114
117
|
export function getStoredSchema(schema: SimpleNodeSchema): TreeNodeStoredSchema {
|
|
115
118
|
const kind = schema.kind;
|
|
@@ -9,7 +9,11 @@ import { assert } from "@fluidframework/core-utils/internal";
|
|
|
9
9
|
|
|
10
10
|
import { hasSingle } from "../util/index.js";
|
|
11
11
|
|
|
12
|
-
import {
|
|
12
|
+
import {
|
|
13
|
+
normalizeFieldSchema,
|
|
14
|
+
FieldKind,
|
|
15
|
+
type ImplicitAnnotatedFieldSchema,
|
|
16
|
+
} from "./fieldSchema.js";
|
|
13
17
|
import {
|
|
14
18
|
CompatibilityLevel,
|
|
15
19
|
getKernel,
|
|
@@ -50,7 +54,7 @@ import { getUnhydratedContext } from "./createContext.js";
|
|
|
50
54
|
*/
|
|
51
55
|
export function unhydratedFlexTreeFromInsertable<TIn extends InsertableContent | undefined>(
|
|
52
56
|
data: TIn,
|
|
53
|
-
allowedTypes:
|
|
57
|
+
allowedTypes: ImplicitAnnotatedFieldSchema,
|
|
54
58
|
): TIn extends undefined ? undefined : UnhydratedFlexTreeNode {
|
|
55
59
|
const normalizedFieldSchema = normalizeFieldSchema(allowedTypes);
|
|
56
60
|
|
|
@@ -8,6 +8,7 @@ import { type ImplicitFieldSchema, normalizeFieldSchema } from "./fieldSchema.js
|
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Traverses all {@link TreeNodeSchema} schema reachable from `schema`, applying the visitor pattern.
|
|
11
|
+
* @internal
|
|
11
12
|
*/
|
|
12
13
|
export function walkFieldSchema(
|
|
13
14
|
schema: ImplicitFieldSchema,
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
|
-
* Licensed under the MIT License.
|
|
4
|
-
*/
|
|
5
|
-
import type { IIdCompressor } from "@fluidframework/id-compressor";
|
|
6
|
-
import { type ICodecOptions, type IJsonCodec } from "../../codec/index.js";
|
|
7
|
-
import type { RevisionTagCodec } from "../rebase/index.js";
|
|
8
|
-
import { Format } from "./detachedFieldIndexFormat.js";
|
|
9
|
-
import type { DetachedFieldSummaryData } from "./detachedFieldIndexTypes.js";
|
|
10
|
-
export declare function makeDetachedNodeToFieldCodec(revisionTagCodec: RevisionTagCodec, options: ICodecOptions, idCompressor: IIdCompressor): IJsonCodec<DetachedFieldSummaryData, Format>;
|
|
11
|
-
//# sourceMappingURL=detachedFieldIndexCodec.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"detachedFieldIndexCodec.d.ts","sourceRoot":"","sources":["../../../src/core/tree/detachedFieldIndexCodec.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAEnE,OAAO,EACN,KAAK,aAAa,EAClB,KAAK,UAAU,EAEf,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAsB,gBAAgB,EAAe,MAAM,oBAAoB,CAAC;AAE5F,OAAO,EAEN,MAAM,EAGN,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAEX,wBAAwB,EAExB,MAAM,8BAA8B,CAAC;AA6CtC,wBAAgB,4BAA4B,CAC3C,gBAAgB,EAAE,gBAAgB,EAClC,OAAO,EAAE,aAAa,EACtB,YAAY,EAAE,aAAa,GACzB,UAAU,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAkD9C"}
|