@fluidframework/tree 2.51.0 → 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/.vscode/settings.json +0 -1
- package/CHANGELOG.md +43 -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 +1 -2
- package/dist/feature-libraries/index.d.ts.map +1 -1
- package/dist/feature-libraries/index.js +2 -4
- 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 -16
- package/dist/feature-libraries/modular-schema/comparison.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.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.js +1 -1
- 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/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 +32 -0
- 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 +9 -7
- package/dist/simple-tree/api/schemaCompatibilityTester.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaCompatibilityTester.js +18 -117
- package/dist/simple-tree/api/schemaCompatibilityTester.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 +4 -4
- package/dist/simple-tree/index.d.ts.map +1 -1
- package/dist/simple-tree/index.js +7 -8
- 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 +1 -2
- package/lib/feature-libraries/index.d.ts.map +1 -1
- package/lib/feature-libraries/index.js +1 -2
- 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 -14
- package/lib/feature-libraries/modular-schema/comparison.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.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.js +1 -1
- 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/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 +33 -1
- 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/{discrepancies.js → api/discrepancies.js} +80 -206
- package/lib/simple-tree/api/discrepancies.js.map +1 -0
- package/lib/simple-tree/api/schemaCompatibilityTester.d.ts +9 -7
- package/lib/simple-tree/api/schemaCompatibilityTester.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaCompatibilityTester.js +19 -118
- package/lib/simple-tree/api/schemaCompatibilityTester.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 +4 -4
- package/lib/simple-tree/index.d.ts.map +1 -1
- package/lib/simple-tree/index.js +4 -4
- package/lib/simple-tree/index.js.map +1 -1
- package/lib/simple-tree/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 -3
- package/src/feature-libraries/modular-schema/comparison.ts +14 -29
- 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 +1 -1
- package/src/shared-tree/schematizingTreeView.ts +16 -13
- package/src/shared-tree/sharedTree.ts +2 -42
- package/src/shared-tree/treeAlpha.ts +30 -18
- package/src/shared-tree/treeCheckout.ts +54 -10
- 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/{discrepancies.ts → api/discrepancies.ts} +128 -303
- package/src/simple-tree/api/schemaCompatibilityTester.ts +27 -151
- package/src/simple-tree/api/schemaFactory.ts +7 -4
- package/src/simple-tree/api/storedSchema.ts +6 -9
- 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 +5 -10
- package/src/simple-tree/node-kinds/array/arrayNode.ts +32 -19
- package/src/simple-tree/node-kinds/index.ts +0 -1
- package/src/simple-tree/node-kinds/object/index.ts +0 -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/simple-tree/discrepancies.d.ts +0 -167
- package/dist/simple-tree/discrepancies.d.ts.map +0 -1
- package/dist/simple-tree/discrepancies.js +0 -382
- package/dist/simple-tree/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/simple-tree/discrepancies.d.ts +0 -167
- package/lib/simple-tree/discrepancies.d.ts.map +0 -1
- package/lib/simple-tree/discrepancies.js.map +0 -1
- package/src/feature-libraries/initializeForest.ts +0 -55
package/src/index.ts
CHANGED
|
@@ -114,6 +114,7 @@ export {
|
|
|
114
114
|
type SchemaCompatibilityStatus,
|
|
115
115
|
type FieldProps,
|
|
116
116
|
type FieldPropsAlpha,
|
|
117
|
+
normalizeFieldSchema,
|
|
117
118
|
type InternalTreeNode,
|
|
118
119
|
type WithType,
|
|
119
120
|
type NodeChangedData,
|
|
@@ -214,6 +215,10 @@ export {
|
|
|
214
215
|
type SimpleObjectFieldSchema,
|
|
215
216
|
type SimpleRecordNodeSchema,
|
|
216
217
|
normalizeAllowedTypes,
|
|
218
|
+
walkFieldSchema,
|
|
219
|
+
walkNodeSchema,
|
|
220
|
+
walkAllowedTypes,
|
|
221
|
+
type SchemaVisitor,
|
|
217
222
|
getSimpleSchema,
|
|
218
223
|
type ReadonlyArrayNode,
|
|
219
224
|
type InsertableTreeNodeFromAllowedTypes,
|
package/src/packageVersion.ts
CHANGED
|
@@ -12,9 +12,11 @@ import {
|
|
|
12
12
|
|
|
13
13
|
import type { ICodecOptions } from "../codec/index.js";
|
|
14
14
|
import {
|
|
15
|
+
type ITreeCursorSynchronous,
|
|
15
16
|
type RevisionTag,
|
|
16
17
|
RevisionTagCodec,
|
|
17
18
|
SchemaVersion,
|
|
19
|
+
type TreeStoredSchema,
|
|
18
20
|
TreeStoredSchemaRepository,
|
|
19
21
|
} from "../core/index.js";
|
|
20
22
|
import {
|
|
@@ -24,7 +26,6 @@ import {
|
|
|
24
26
|
type FieldBatchEncodingContext,
|
|
25
27
|
defaultSchemaPolicy,
|
|
26
28
|
TreeCompressionStrategy,
|
|
27
|
-
initializeForest,
|
|
28
29
|
} from "../feature-libraries/index.js";
|
|
29
30
|
// eslint-disable-next-line import/no-internal-modules
|
|
30
31
|
import type { Format } from "../feature-libraries/schema-index/formatV1.js";
|
|
@@ -41,6 +42,7 @@ import {
|
|
|
41
42
|
} from "./sharedTree.js";
|
|
42
43
|
import { createTreeCheckout } from "./treeCheckout.js";
|
|
43
44
|
import { SchematizingSimpleTreeView } from "./schematizingTreeView.js";
|
|
45
|
+
import { initialize } from "./schematizeTree.js";
|
|
44
46
|
|
|
45
47
|
/**
|
|
46
48
|
* Create an uninitialized {@link TreeView} that is not tied to any {@link ITree} instance.
|
|
@@ -85,6 +87,8 @@ export function independentView<const TSchema extends ImplicitFieldSchema>(
|
|
|
85
87
|
* Such a view can never experience collaboration or be persisted to to a Fluid Container.
|
|
86
88
|
*
|
|
87
89
|
* This can be useful for testing, as well as use-cases like working on local files instead of documents stored in some Fluid service.
|
|
90
|
+
* @privateRemarks
|
|
91
|
+
* TODO: Providing an API which generates a {@link ViewableTree} extended with export options from {@link ITreeAlpha} and maybe even branching APIs would likely be better that just exposing a {@link TreeViewAlpha}.
|
|
88
92
|
* @alpha
|
|
89
93
|
*/
|
|
90
94
|
export function independentInitializedView<const TSchema extends ImplicitFieldSchema>(
|
|
@@ -92,22 +96,11 @@ export function independentInitializedView<const TSchema extends ImplicitFieldSc
|
|
|
92
96
|
options: ForestOptions & ICodecOptions,
|
|
93
97
|
content: ViewContent,
|
|
94
98
|
): TreeViewAlpha<TSchema> {
|
|
95
|
-
const breaker = new Breakable("independentInitializedView");
|
|
96
99
|
const idCompressor: IIdCompressor = content.idCompressor;
|
|
97
|
-
const mintRevisionTag = (): RevisionTag => idCompressor.generateCompressedId();
|
|
98
|
-
const revisionTagCodec = new RevisionTagCodec(idCompressor);
|
|
99
|
-
|
|
100
100
|
const fieldBatchCodec = makeFieldBatchCodec(options, 1);
|
|
101
101
|
const schemaCodec = makeSchemaCodec(options, SchemaVersion.v1);
|
|
102
102
|
|
|
103
|
-
const schema =
|
|
104
|
-
const forest = buildConfiguredForest(
|
|
105
|
-
breaker,
|
|
106
|
-
options.forest ?? defaultSharedTreeOptions.forest,
|
|
107
|
-
schema,
|
|
108
|
-
idCompressor,
|
|
109
|
-
);
|
|
110
|
-
|
|
103
|
+
const schema = schemaCodec.decode(content.schema as Format);
|
|
111
104
|
const context: FieldBatchEncodingContext = {
|
|
112
105
|
encodeType: TreeCompressionStrategy.Compressed,
|
|
113
106
|
idCompressor,
|
|
@@ -117,21 +110,54 @@ export function independentInitializedView<const TSchema extends ImplicitFieldSc
|
|
|
117
110
|
|
|
118
111
|
const fieldCursors = fieldBatchCodec.decode(content.tree as JsonCompatibleReadOnly, context);
|
|
119
112
|
assert(fieldCursors.length === 1, 0xa5b /* must have exactly 1 field in batch */);
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
113
|
+
|
|
114
|
+
return independentInitializedViewInternal(
|
|
115
|
+
config,
|
|
116
|
+
options,
|
|
117
|
+
schema,
|
|
118
|
+
// Checked above.
|
|
119
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
120
|
+
fieldCursors[0]!,
|
|
121
|
+
idCompressor,
|
|
122
|
+
);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* {@link independentInitializedView} but using internal types instead of persisted data formats.
|
|
127
|
+
*/
|
|
128
|
+
export function independentInitializedViewInternal<const TSchema extends ImplicitFieldSchema>(
|
|
129
|
+
config: TreeViewConfiguration<TSchema>,
|
|
130
|
+
options: ForestOptions & ICodecOptions,
|
|
131
|
+
schema: TreeStoredSchema,
|
|
132
|
+
rootFieldCursor: ITreeCursorSynchronous,
|
|
133
|
+
idCompressor: IIdCompressor,
|
|
134
|
+
): SchematizingSimpleTreeView<TSchema> {
|
|
135
|
+
const breaker = new Breakable("independentInitializedView");
|
|
136
|
+
const revisionTagCodec = new RevisionTagCodec(idCompressor);
|
|
137
|
+
const mintRevisionTag = (): RevisionTag => idCompressor.generateCompressedId();
|
|
138
|
+
|
|
139
|
+
// To ensure the forest is in schema when constructed, start it with an empty schema and set the schema repository content later.
|
|
140
|
+
const schemaRepository = new TreeStoredSchemaRepository();
|
|
141
|
+
|
|
142
|
+
const forest = buildConfiguredForest(
|
|
143
|
+
breaker,
|
|
144
|
+
options.forest ?? defaultSharedTreeOptions.forest,
|
|
145
|
+
schemaRepository,
|
|
146
|
+
idCompressor,
|
|
147
|
+
);
|
|
123
148
|
|
|
124
149
|
const checkout = createTreeCheckout(idCompressor, mintRevisionTag, revisionTagCodec, {
|
|
125
150
|
forest,
|
|
126
|
-
schema,
|
|
151
|
+
schema: schemaRepository,
|
|
127
152
|
breaker,
|
|
128
153
|
});
|
|
129
|
-
|
|
154
|
+
|
|
155
|
+
initialize(checkout, { schema, initialTree: rootFieldCursor });
|
|
156
|
+
return new SchematizingSimpleTreeView<TSchema>(
|
|
130
157
|
checkout,
|
|
131
158
|
config,
|
|
132
159
|
createNodeIdentifierManager(idCompressor),
|
|
133
160
|
);
|
|
134
|
-
return out;
|
|
135
161
|
}
|
|
136
162
|
|
|
137
163
|
/**
|
|
@@ -219,7 +219,7 @@ export function ensureSchema(
|
|
|
219
219
|
return false;
|
|
220
220
|
}
|
|
221
221
|
case UpdateType.SchemaCompatible: {
|
|
222
|
-
checkout.updateSchema(toStoredSchema(viewSchema.
|
|
222
|
+
checkout.updateSchema(toStoredSchema(viewSchema.viewSchema.root));
|
|
223
223
|
return true;
|
|
224
224
|
}
|
|
225
225
|
default: {
|
|
@@ -12,7 +12,7 @@ import type {
|
|
|
12
12
|
import { assert, unreachableCase } from "@fluidframework/core-utils/internal";
|
|
13
13
|
import { UsageError } from "@fluidframework/telemetry-utils/internal";
|
|
14
14
|
|
|
15
|
-
import { anchorSlot
|
|
15
|
+
import { anchorSlot } from "../core/index.js";
|
|
16
16
|
import {
|
|
17
17
|
type NodeIdentifierManager,
|
|
18
18
|
defaultSchemaPolicy,
|
|
@@ -49,11 +49,12 @@ import {
|
|
|
49
49
|
HydratedContext,
|
|
50
50
|
SimpleContextSlot,
|
|
51
51
|
areImplicitFieldSchemaEqual,
|
|
52
|
-
createUnknownOptionalFieldPolicy,
|
|
53
52
|
prepareForInsertionContextless,
|
|
54
53
|
type FieldSchema,
|
|
55
54
|
toStoredSchema,
|
|
56
55
|
tryDisposeTreeNode,
|
|
56
|
+
FieldSchemaAlpha,
|
|
57
|
+
TreeViewConfigurationAlpha,
|
|
57
58
|
} from "../simple-tree/index.js";
|
|
58
59
|
import {
|
|
59
60
|
type Breakable,
|
|
@@ -90,7 +91,6 @@ export class SchematizingSimpleTreeView<
|
|
|
90
91
|
* Undefined iff uninitialized or disposed.
|
|
91
92
|
*/
|
|
92
93
|
private currentCompatibility: SchemaCompatibilityStatus | undefined;
|
|
93
|
-
private readonly schemaPolicy: SchemaPolicy;
|
|
94
94
|
public readonly events: Listenable<TreeViewEvents & TreeBranchEvents> &
|
|
95
95
|
IEmitter<TreeViewEvents & TreeBranchEvents> &
|
|
96
96
|
HasListeners<TreeViewEvents & TreeBranchEvents> = createEmitter();
|
|
@@ -132,13 +132,10 @@ export class SchematizingSimpleTreeView<
|
|
|
132
132
|
checkout.forest.anchors.slots.set(ViewSlot, this);
|
|
133
133
|
|
|
134
134
|
this.rootFieldSchema = normalizeFieldSchema(config.schema);
|
|
135
|
-
this.schemaPolicy = {
|
|
136
|
-
...defaultSchemaPolicy,
|
|
137
|
-
validateSchema: config.enableSchemaValidation,
|
|
138
|
-
allowUnknownOptionalFields: createUnknownOptionalFieldPolicy(this.rootFieldSchema),
|
|
139
|
-
};
|
|
140
135
|
|
|
141
|
-
|
|
136
|
+
const configAlpha = new TreeViewConfigurationAlpha({ schema: config.schema });
|
|
137
|
+
|
|
138
|
+
this.viewSchema = new SchemaCompatibilityTester(configAlpha);
|
|
142
139
|
// This must be initialized before `update` can be called.
|
|
143
140
|
this.currentCompatibility = {
|
|
144
141
|
canView: false,
|
|
@@ -175,13 +172,13 @@ export class SchematizingSimpleTreeView<
|
|
|
175
172
|
}
|
|
176
173
|
|
|
177
174
|
this.runSchemaEdit(() => {
|
|
178
|
-
const schema = toStoredSchema(this.
|
|
175
|
+
const schema = toStoredSchema(this.config.schema);
|
|
179
176
|
const mapTree = prepareForInsertionContextless(
|
|
180
177
|
content as InsertableContent | undefined,
|
|
181
178
|
this.rootFieldSchema,
|
|
182
179
|
{
|
|
183
180
|
schema,
|
|
184
|
-
policy:
|
|
181
|
+
policy: defaultSchemaPolicy,
|
|
185
182
|
},
|
|
186
183
|
this,
|
|
187
184
|
);
|
|
@@ -316,16 +313,22 @@ export class SchematizingSimpleTreeView<
|
|
|
316
313
|
|
|
317
314
|
if (compatibility.canView) {
|
|
318
315
|
this.flexTreeContext = new Context(
|
|
319
|
-
|
|
316
|
+
defaultSchemaPolicy,
|
|
320
317
|
this.checkout,
|
|
321
318
|
this.nodeKeyManager,
|
|
322
319
|
);
|
|
323
320
|
assert(!slots.has(SimpleContextSlot), 0xa47 /* extra simple tree context */);
|
|
321
|
+
assert(
|
|
322
|
+
this.rootFieldSchema instanceof FieldSchemaAlpha,
|
|
323
|
+
0xbfa /* all field schema should be FieldSchemaAlpha */,
|
|
324
|
+
);
|
|
324
325
|
slots.set(
|
|
325
326
|
SimpleContextSlot,
|
|
326
327
|
new HydratedContext(
|
|
327
|
-
normalizeFieldSchema(this.rootFieldSchema).annotatedAllowedTypesNormalized,
|
|
328
328
|
this.flexTreeContext,
|
|
329
|
+
HydratedContext.schemaMapFromRootSchema(
|
|
330
|
+
this.rootFieldSchema.annotatedAllowedTypesNormalized,
|
|
331
|
+
),
|
|
329
332
|
),
|
|
330
333
|
);
|
|
331
334
|
|
|
@@ -3,11 +3,7 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import type {
|
|
7
|
-
ErasedType,
|
|
8
|
-
IFluidHandle,
|
|
9
|
-
IFluidLoadable,
|
|
10
|
-
} from "@fluidframework/core-interfaces/internal";
|
|
6
|
+
import type { ErasedType, IFluidLoadable } from "@fluidframework/core-interfaces/internal";
|
|
11
7
|
import { assert, fail } from "@fluidframework/core-utils/internal";
|
|
12
8
|
import type { IChannelStorageService } from "@fluidframework/datastore-definitions/internal";
|
|
13
9
|
import type { IIdCompressor } from "@fluidframework/id-compressor";
|
|
@@ -31,7 +27,6 @@ import {
|
|
|
31
27
|
type FieldKey,
|
|
32
28
|
type GraphCommit,
|
|
33
29
|
type IEditableForest,
|
|
34
|
-
type ITreeCursor,
|
|
35
30
|
type JsonableTree,
|
|
36
31
|
LeafNodeStoredSchema,
|
|
37
32
|
MapNodeStoredSchema,
|
|
@@ -40,7 +35,6 @@ import {
|
|
|
40
35
|
SchemaVersion,
|
|
41
36
|
type TaggedChange,
|
|
42
37
|
type TreeFieldStoredSchema,
|
|
43
|
-
type TreeNodeSchemaIdentifier,
|
|
44
38
|
type TreeNodeStoredSchema,
|
|
45
39
|
type TreeStoredSchema,
|
|
46
40
|
TreeStoredSchemaRepository,
|
|
@@ -85,10 +79,7 @@ import {
|
|
|
85
79
|
type VerboseTree,
|
|
86
80
|
tryStoredSchemaAsArray,
|
|
87
81
|
type SimpleNodeSchema,
|
|
88
|
-
customFromCursorStored,
|
|
89
82
|
FieldKind,
|
|
90
|
-
type CustomTreeNode,
|
|
91
|
-
type CustomTreeValue,
|
|
92
83
|
type ITreeAlpha,
|
|
93
84
|
type SimpleObjectFieldSchema,
|
|
94
85
|
} from "../simple-tree/index.js";
|
|
@@ -382,21 +373,7 @@ export class SharedTreeKernel
|
|
|
382
373
|
}
|
|
383
374
|
|
|
384
375
|
public exportVerbose(): VerboseTree | undefined {
|
|
385
|
-
|
|
386
|
-
try {
|
|
387
|
-
moveToDetachedField(this.checkout.forest, cursor);
|
|
388
|
-
const length = cursor.getFieldLength();
|
|
389
|
-
if (length === 0) {
|
|
390
|
-
return undefined;
|
|
391
|
-
} else if (length === 1) {
|
|
392
|
-
cursor.enterNode(0);
|
|
393
|
-
return verboseFromCursor(cursor, this.storedSchema.nodeSchema);
|
|
394
|
-
} else {
|
|
395
|
-
fail(0xac8 /* Invalid document root length */);
|
|
396
|
-
}
|
|
397
|
-
} finally {
|
|
398
|
-
cursor.free();
|
|
399
|
-
}
|
|
376
|
+
return this.checkout.exportVerbose();
|
|
400
377
|
}
|
|
401
378
|
|
|
402
379
|
public exportSimpleSchema(): SimpleTreeSchema {
|
|
@@ -723,23 +700,6 @@ export const defaultSharedTreeOptions: Required<SharedTreeOptionsInternal> = {
|
|
|
723
700
|
disposeForksAfterTransaction: true,
|
|
724
701
|
};
|
|
725
702
|
|
|
726
|
-
function verboseFromCursor(
|
|
727
|
-
reader: ITreeCursor,
|
|
728
|
-
schema: ReadonlyMap<TreeNodeSchemaIdentifier, TreeNodeStoredSchema>,
|
|
729
|
-
): VerboseTree {
|
|
730
|
-
const fields = customFromCursorStored(reader, schema, verboseFromCursor);
|
|
731
|
-
const nodeSchema =
|
|
732
|
-
schema.get(reader.type) ?? fail(0xac9 /* missing schema for type in cursor */);
|
|
733
|
-
if (nodeSchema instanceof LeafNodeStoredSchema) {
|
|
734
|
-
return fields as CustomTreeValue;
|
|
735
|
-
}
|
|
736
|
-
|
|
737
|
-
return {
|
|
738
|
-
type: reader.type,
|
|
739
|
-
fields: fields as CustomTreeNode<IFluidHandle>,
|
|
740
|
-
};
|
|
741
|
-
}
|
|
742
|
-
|
|
743
703
|
function exportSimpleFieldSchemaStored(schema: TreeFieldStoredSchema): SimpleFieldSchema {
|
|
744
704
|
let kind: FieldKind;
|
|
745
705
|
switch (schema.kind) {
|
|
@@ -51,6 +51,7 @@ import {
|
|
|
51
51
|
NodeKind,
|
|
52
52
|
tryGetTreeNodeForField,
|
|
53
53
|
isObjectNodeSchema,
|
|
54
|
+
isTreeNode,
|
|
54
55
|
} from "../simple-tree/index.js";
|
|
55
56
|
import { brand, extractFromOpaque, type JsonCompatible } from "../util/index.js";
|
|
56
57
|
import {
|
|
@@ -191,11 +192,19 @@ export interface TreeIdentifierUtils {
|
|
|
191
192
|
* Extensions to {@link (Tree:interface)} and {@link (TreeBeta:interface)} which are not yet stable.
|
|
192
193
|
* @remarks
|
|
193
194
|
* Use via the {@link (TreeAlpha:variable)} singleton.
|
|
195
|
+
*
|
|
196
|
+
* The unhydrated node creation APIs in this interface do not support {@link SchemaFactoryObjectOptions.allowUnknownOptionalFields | unknown optional fields}.
|
|
197
|
+
* This is because unknown optional fields still must have a schema: its just that the schema may come from the document's stored schema.
|
|
198
|
+
* Unhydrated nodes created via this interface are not associated with any document, so there is nowhere for them to get schema for unknown optional fields.
|
|
199
|
+
* Note that {@link (TreeBeta:interface).clone} can create an unhydrated node with unknown optional fields, as it uses the source node's stored schema (if any).
|
|
200
|
+
*
|
|
201
|
+
* Export APIs in this interface include {@link SchemaFactoryObjectOptions.allowUnknownOptionalFields | unknown optional fields}
|
|
202
|
+
* if they are using {@link TreeEncodingOptions.useStoredKeys | stored keys}.
|
|
203
|
+
*
|
|
194
204
|
* @privateRemarks
|
|
195
|
-
* TODO:
|
|
196
|
-
*
|
|
197
|
-
*
|
|
198
|
-
* See also TreeBeta.clone with a similar issue.
|
|
205
|
+
* TODO:
|
|
206
|
+
* There should be a way to provide a source for defaulted identifiers for unhydrated node creation, either via these APIs or some way to add them to its output later.
|
|
207
|
+
* If an option were added to these APIs, it could also be used to enable unknown optional fields.
|
|
199
208
|
*
|
|
200
209
|
* @system @sealed @alpha
|
|
201
210
|
*/
|
|
@@ -219,8 +228,6 @@ export interface TreeAlpha {
|
|
|
219
228
|
* When providing a {@link TreeNodeSchemaClass}, this is the same as invoking its constructor except that an unhydrated node can also be provided.
|
|
220
229
|
* This function exists as a generalization that can be used in other cases as well,
|
|
221
230
|
* such as when `undefined` might be allowed (for an optional field), or when the type should be inferred from the data when more than one type is possible.
|
|
222
|
-
* @privateRemarks
|
|
223
|
-
* TODO: AB#43548: There should be a way to provide a source for defaulted identifiers, either via this API or some way to add them to its output later.
|
|
224
231
|
*/
|
|
225
232
|
create<const TSchema extends ImplicitFieldSchema | UnsafeUnknownSchema>(
|
|
226
233
|
schema: UnsafeUnknownSchema extends TSchema
|
|
@@ -263,6 +270,14 @@ export interface TreeAlpha {
|
|
|
263
270
|
* Construct tree content compatible with a field defined by the provided `schema`.
|
|
264
271
|
* @param schema - The schema for what to construct. As this is an {@link ImplicitFieldSchema}, a {@link FieldSchema}, {@link TreeNodeSchema} or {@link AllowedTypes} array can be provided.
|
|
265
272
|
* @param data - The data used to construct the field content. See {@link (TreeAlpha:interface).(exportVerbose:1)}.
|
|
273
|
+
* @remarks
|
|
274
|
+
* This currently does not support input containing {@link SchemaFactoryObjectOptions.allowUnknownOptionalFields| unknown optional fields}.
|
|
275
|
+
* @privateRemarks
|
|
276
|
+
* See TODOs in {@link TreeEncodingOptions}.
|
|
277
|
+
*
|
|
278
|
+
* TODO: clarify how this handles out of schema data.
|
|
279
|
+
* Does it robustly validate? How do you use it with schema evolution features like staged allowed types and allowUnknownOptionalFields? Which errors are deferred until insertion/hydration?
|
|
280
|
+
* Ensure whatever policy is chosen is documented, enforces, tested and applied consistently to all import code paths.
|
|
266
281
|
*/
|
|
267
282
|
importVerbose<const TSchema extends ImplicitFieldSchema>(
|
|
268
283
|
schema: TSchema,
|
|
@@ -484,14 +499,14 @@ export const TreeAlpha: TreeAlpha = {
|
|
|
484
499
|
exportConcise,
|
|
485
500
|
|
|
486
501
|
exportVerbose(node: TreeNode | TreeLeafValue, options?: TreeEncodingOptions): VerboseTree {
|
|
502
|
+
if (isTreeValue(node)) {
|
|
503
|
+
return node;
|
|
504
|
+
}
|
|
487
505
|
const config: TreeEncodingOptions = { ...options };
|
|
488
506
|
|
|
489
507
|
const cursor = borrowCursorFromTreeNodeOrValue(node);
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
tryGetSchema(node) ?? fail(0xace /* invalid input */),
|
|
493
|
-
config,
|
|
494
|
-
);
|
|
508
|
+
const kernel = getKernel(node);
|
|
509
|
+
return verboseFromCursor(cursor, kernel.context, config);
|
|
495
510
|
},
|
|
496
511
|
|
|
497
512
|
exportCompressed(
|
|
@@ -701,17 +716,14 @@ function exportConcise(
|
|
|
701
716
|
node: TreeNode | TreeLeafValue | undefined,
|
|
702
717
|
options?: TreeEncodingOptions,
|
|
703
718
|
): ConciseTree | undefined {
|
|
704
|
-
if (node
|
|
705
|
-
return
|
|
719
|
+
if (!isTreeNode(node)) {
|
|
720
|
+
return node;
|
|
706
721
|
}
|
|
707
722
|
const config: TreeEncodingOptions = { ...options };
|
|
708
723
|
|
|
724
|
+
const kernel = getKernel(node);
|
|
709
725
|
const cursor = borrowCursorFromTreeNodeOrValue(node);
|
|
710
|
-
return conciseFromCursor(
|
|
711
|
-
cursor,
|
|
712
|
-
tryGetSchema(node) ?? fail(0xacd /* invalid input */),
|
|
713
|
-
config,
|
|
714
|
-
);
|
|
726
|
+
return conciseFromCursor(cursor, kernel.context, config);
|
|
715
727
|
}
|
|
716
728
|
|
|
717
729
|
/**
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import { assert, unreachableCase, fail } from "@fluidframework/core-utils/internal";
|
|
7
|
-
import type { Listenable } from "@fluidframework/core-interfaces/internal";
|
|
7
|
+
import type { IFluidHandle, Listenable } from "@fluidframework/core-interfaces/internal";
|
|
8
8
|
import { createEmitter } from "@fluid-internal/client-utils";
|
|
9
9
|
import type { IIdCompressor } from "@fluidframework/id-compressor";
|
|
10
10
|
import {
|
|
@@ -42,6 +42,11 @@ import {
|
|
|
42
42
|
type RevertibleAlpha,
|
|
43
43
|
type GraphCommit,
|
|
44
44
|
isAncestor,
|
|
45
|
+
moveToDetachedField,
|
|
46
|
+
type ITreeCursor,
|
|
47
|
+
type TreeNodeSchemaIdentifier,
|
|
48
|
+
type TreeNodeStoredSchema,
|
|
49
|
+
LeafNodeStoredSchema,
|
|
45
50
|
} from "../core/index.js";
|
|
46
51
|
import {
|
|
47
52
|
type FieldBatchCodec,
|
|
@@ -68,15 +73,19 @@ import { SharedTreeChangeFamily, hasSchemaChange } from "./sharedTreeChangeFamil
|
|
|
68
73
|
import type { SharedTreeChange } from "./sharedTreeChangeTypes.js";
|
|
69
74
|
import type { ISharedTreeEditor, SharedTreeEditBuilder } from "./sharedTreeEditBuilder.js";
|
|
70
75
|
import type { IDisposable } from "@fluidframework/core-interfaces";
|
|
71
|
-
import
|
|
72
|
-
ImplicitFieldSchema,
|
|
73
|
-
ReadSchema,
|
|
74
|
-
TreeView,
|
|
75
|
-
TreeViewConfiguration,
|
|
76
|
-
UnsafeUnknownSchema,
|
|
77
|
-
ViewableTree,
|
|
78
|
-
TreeBranch,
|
|
79
|
-
TreeChangeEvents,
|
|
76
|
+
import {
|
|
77
|
+
type ImplicitFieldSchema,
|
|
78
|
+
type ReadSchema,
|
|
79
|
+
type TreeView,
|
|
80
|
+
type TreeViewConfiguration,
|
|
81
|
+
type UnsafeUnknownSchema,
|
|
82
|
+
type ViewableTree,
|
|
83
|
+
type TreeBranch,
|
|
84
|
+
type TreeChangeEvents,
|
|
85
|
+
type VerboseTree,
|
|
86
|
+
customFromCursorStored,
|
|
87
|
+
type CustomTreeValue,
|
|
88
|
+
type CustomTreeNode,
|
|
80
89
|
} from "../simple-tree/index.js";
|
|
81
90
|
import { getCheckout, SchematizingSimpleTreeView } from "./schematizingTreeView.js";
|
|
82
91
|
|
|
@@ -495,6 +504,24 @@ export class TreeCheckout implements ITreeCheckoutFork {
|
|
|
495
504
|
this.#transaction.activeBranchEvents.on("ancestryTrimmed", this.onAncestryTrimmed);
|
|
496
505
|
}
|
|
497
506
|
|
|
507
|
+
public exportVerbose(): VerboseTree | undefined {
|
|
508
|
+
const cursor = this.forest.allocateCursor("contentSnapshot");
|
|
509
|
+
try {
|
|
510
|
+
moveToDetachedField(this.forest, cursor);
|
|
511
|
+
const length = cursor.getFieldLength();
|
|
512
|
+
if (length === 0) {
|
|
513
|
+
return undefined;
|
|
514
|
+
} else if (length === 1) {
|
|
515
|
+
cursor.enterNode(0);
|
|
516
|
+
return verboseFromCursor(cursor, this.storedSchema.nodeSchema);
|
|
517
|
+
} else {
|
|
518
|
+
fail(0xac8 /* Invalid document root length */);
|
|
519
|
+
}
|
|
520
|
+
} finally {
|
|
521
|
+
cursor.free();
|
|
522
|
+
}
|
|
523
|
+
}
|
|
524
|
+
|
|
498
525
|
private readonly onAfterChange = (event: SharedTreeBranchChange<SharedTreeChange>): void => {
|
|
499
526
|
this.editLock.lock();
|
|
500
527
|
this.#events.emit("beforeBatch", event);
|
|
@@ -1110,3 +1137,20 @@ function trackForksForDisposal(checkout: TreeCheckout): () => void {
|
|
|
1110
1137
|
disposed = true;
|
|
1111
1138
|
};
|
|
1112
1139
|
}
|
|
1140
|
+
|
|
1141
|
+
function verboseFromCursor(
|
|
1142
|
+
reader: ITreeCursor,
|
|
1143
|
+
schema: ReadonlyMap<TreeNodeSchemaIdentifier, TreeNodeStoredSchema>,
|
|
1144
|
+
): VerboseTree {
|
|
1145
|
+
const fields = customFromCursorStored(reader, schema, verboseFromCursor);
|
|
1146
|
+
const nodeSchema =
|
|
1147
|
+
schema.get(reader.type) ?? fail(0xac9 /* missing schema for type in cursor */);
|
|
1148
|
+
if (nodeSchema instanceof LeafNodeStoredSchema) {
|
|
1149
|
+
return fields as CustomTreeValue;
|
|
1150
|
+
}
|
|
1151
|
+
|
|
1152
|
+
return {
|
|
1153
|
+
type: reader.type,
|
|
1154
|
+
fields: fields as CustomTreeNode<IFluidHandle>,
|
|
1155
|
+
};
|
|
1156
|
+
}
|
|
@@ -251,12 +251,7 @@ export class SharedTreeBranch<TEditor extends ChangeFamilyEditor, TChange> {
|
|
|
251
251
|
// TODO: Pull this side effect out if/when more diverse ancestry walking helpers are available
|
|
252
252
|
if (c !== commit) {
|
|
253
253
|
const revision = this.mintRevisionTag();
|
|
254
|
-
const inverse = this.changeFamily.rebaser.
|
|
255
|
-
this.changeFamily.rebaser.invert(c, true, revision),
|
|
256
|
-
revision,
|
|
257
|
-
c.revision,
|
|
258
|
-
);
|
|
259
|
-
|
|
254
|
+
const inverse = this.changeFamily.rebaser.invert(c, true, revision);
|
|
260
255
|
inverses.push(tagRollbackInverse(inverse, revision, c.revision));
|
|
261
256
|
return false;
|
|
262
257
|
}
|
|
@@ -5,9 +5,8 @@
|
|
|
5
5
|
|
|
6
6
|
import type { IFluidHandle } from "@fluidframework/core-interfaces";
|
|
7
7
|
|
|
8
|
-
import type { ITreeCursor } from "../../core/index.js";
|
|
9
|
-
import type { TreeNodeSchema, TreeLeafValue,
|
|
10
|
-
import { getUnhydratedContext } from "../createContext.js";
|
|
8
|
+
import type { ITreeCursor, TreeNodeStoredSchema } from "../../core/index.js";
|
|
9
|
+
import type { TreeNodeSchema, TreeLeafValue, Context } from "../core/index.js";
|
|
11
10
|
|
|
12
11
|
import {
|
|
13
12
|
customFromCursor,
|
|
@@ -43,7 +42,7 @@ export type ConciseTree<THandle = IFluidHandle> =
|
|
|
43
42
|
*/
|
|
44
43
|
export function conciseFromCursor(
|
|
45
44
|
reader: ITreeCursor,
|
|
46
|
-
|
|
45
|
+
context: Context,
|
|
47
46
|
options: TreeEncodingOptions,
|
|
48
47
|
): ConciseTree {
|
|
49
48
|
const config: Required<TreeEncodingOptions> = {
|
|
@@ -51,16 +50,19 @@ export function conciseFromCursor(
|
|
|
51
50
|
...options,
|
|
52
51
|
};
|
|
53
52
|
|
|
54
|
-
const
|
|
55
|
-
|
|
53
|
+
const storedSchemaMap = context.flexContext.schema.nodeSchema;
|
|
54
|
+
const schemaMap = context.schema;
|
|
55
|
+
|
|
56
|
+
return conciseFromCursorInner(reader, config, storedSchemaMap, schemaMap);
|
|
56
57
|
}
|
|
57
58
|
|
|
58
59
|
function conciseFromCursorInner(
|
|
59
60
|
reader: ITreeCursor,
|
|
60
61
|
options: Required<TreeEncodingOptions>,
|
|
62
|
+
storedSchema: ReadonlyMap<string, TreeNodeStoredSchema>,
|
|
61
63
|
schema: ReadonlyMap<string, TreeNodeSchema>,
|
|
62
64
|
): ConciseTree {
|
|
63
|
-
return customFromCursor(reader, options, schema, conciseFromCursorInner);
|
|
65
|
+
return customFromCursor(reader, options, storedSchema, schema, conciseFromCursorInner);
|
|
64
66
|
}
|
|
65
67
|
|
|
66
68
|
/**
|
|
@@ -47,14 +47,20 @@ import type { SimpleNodeSchema, SimpleTreeSchema } from "../simpleSchema.js";
|
|
|
47
47
|
*/
|
|
48
48
|
export interface ITreeConfigurationOptions {
|
|
49
49
|
/**
|
|
50
|
-
* If `true`, the tree will
|
|
50
|
+
* If `true`, the tree will perform additional validation of content against its stored schema
|
|
51
51
|
* and throw an error if the new content doesn't match the expected schema.
|
|
52
52
|
*
|
|
53
53
|
* @defaultValue `false`.
|
|
54
54
|
*
|
|
55
|
-
* @remarks
|
|
55
|
+
* @remarks
|
|
56
|
+
* Currently most cases already have some schema validation, so this is mainly for additional validation which may be useful when debugging issues,
|
|
57
|
+
* working with untyped APIs, or when the small performance overhead is a non-issue.
|
|
58
|
+
*
|
|
59
|
+
* Enabling schema validation has a performance penalty when inserting new content into the tree because
|
|
56
60
|
* additional checks are done. Enable this option only in scenarios where you are ok with that operation being a
|
|
57
61
|
* bit slower.
|
|
62
|
+
*
|
|
63
|
+
* For additional validation in more cases, see {@link ForestTypeExpensiveDebug}.
|
|
58
64
|
*/
|
|
59
65
|
enableSchemaValidation?: boolean;
|
|
60
66
|
|