@fluidframework/tree 2.11.0 → 2.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +4 -0
- package/api-report/tree.alpha.api.md +2 -2
- package/api-report/tree.beta.api.md +1 -1
- package/api-report/tree.legacy.alpha.api.md +1 -1
- package/api-report/tree.legacy.public.api.md +1 -1
- package/api-report/tree.public.api.md +1 -1
- package/dist/core/index.d.ts +2 -2
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +5 -3
- package/dist/core/index.js.map +1 -1
- package/dist/core/rebase/utils.d.ts.map +1 -1
- package/dist/core/rebase/utils.js +2 -9
- package/dist/core/rebase/utils.js.map +1 -1
- package/dist/core/schema-stored/format.d.ts +0 -3
- package/dist/core/schema-stored/format.d.ts.map +1 -1
- package/dist/core/schema-stored/format.js.map +1 -1
- package/dist/core/schema-stored/schema.d.ts +12 -10
- package/dist/core/schema-stored/schema.d.ts.map +1 -1
- package/dist/core/schema-stored/schema.js +3 -5
- package/dist/core/schema-stored/schema.js.map +1 -1
- package/dist/core/schema-view/index.d.ts +1 -1
- package/dist/core/schema-view/index.d.ts.map +1 -1
- package/dist/core/schema-view/index.js +1 -2
- package/dist/core/schema-view/index.js.map +1 -1
- package/dist/core/schema-view/view.d.ts +0 -7
- package/dist/core/schema-view/view.d.ts.map +1 -1
- package/dist/core/schema-view/view.js +1 -12
- package/dist/core/schema-view/view.js.map +1 -1
- package/dist/{feature-libraries/chunked-forest → core/tree}/chunk.d.ts +2 -1
- package/dist/core/tree/chunk.d.ts.map +1 -0
- package/dist/{feature-libraries/chunked-forest → core/tree}/chunk.js +2 -2
- package/dist/core/tree/chunk.js.map +1 -0
- package/dist/core/tree/index.d.ts +1 -0
- package/dist/core/tree/index.d.ts.map +1 -1
- package/dist/core/tree/index.js +5 -1
- package/dist/core/tree/index.js.map +1 -1
- package/dist/core/tree/treeTextFormat.d.ts +0 -5
- package/dist/core/tree/treeTextFormat.d.ts.map +1 -1
- package/dist/core/tree/treeTextFormat.js.map +1 -1
- package/dist/core/tree/types.d.ts +0 -5
- package/dist/core/tree/types.d.ts.map +1 -1
- package/dist/core/tree/types.js +0 -1
- package/dist/core/tree/types.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/basicChunk.d.ts +1 -2
- package/dist/feature-libraries/chunked-forest/basicChunk.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/basicChunk.js +14 -14
- package/dist/feature-libraries/chunked-forest/basicChunk.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/chunkTree.d.ts +1 -2
- package/dist/feature-libraries/chunked-forest/chunkTree.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/chunkTree.js +2 -3
- package/dist/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/chunkedForest.d.ts +1 -2
- package/dist/feature-libraries/chunked-forest/chunkedForest.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/chunkedForest.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkCodecUtilities.d.ts +1 -2
- package/dist/feature-libraries/chunked-forest/codec/chunkCodecUtilities.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkCodecUtilities.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts +1 -2
- package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.d.ts +1 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/emptyChunk.d.ts +1 -1
- package/dist/feature-libraries/chunked-forest/emptyChunk.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/emptyChunk.js +2 -3
- package/dist/feature-libraries/chunked-forest/emptyChunk.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/index.d.ts +1 -1
- package/dist/feature-libraries/chunked-forest/index.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/index.js +5 -5
- package/dist/feature-libraries/chunked-forest/index.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/sequenceChunk.d.ts +1 -1
- package/dist/feature-libraries/chunked-forest/sequenceChunk.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/sequenceChunk.js +2 -2
- package/dist/feature-libraries/chunked-forest/sequenceChunk.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/uniformChunk.d.ts +1 -2
- package/dist/feature-libraries/chunked-forest/uniformChunk.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/uniformChunk.js +13 -13
- package/dist/feature-libraries/chunked-forest/uniformChunk.js.map +1 -1
- package/dist/feature-libraries/default-schema/defaultSchema.d.ts.map +1 -1
- package/dist/feature-libraries/default-schema/defaultSchema.js +1 -0
- package/dist/feature-libraries/default-schema/defaultSchema.js.map +1 -1
- package/dist/feature-libraries/default-schema/schemaChecker.d.ts.map +1 -1
- package/dist/feature-libraries/default-schema/schemaChecker.js +2 -1
- package/dist/feature-libraries/default-schema/schemaChecker.js.map +1 -1
- package/dist/feature-libraries/index.d.ts +1 -1
- package/dist/feature-libraries/index.d.ts.map +1 -1
- package/dist/feature-libraries/index.js +6 -2
- package/dist/feature-libraries/index.js.map +1 -1
- package/dist/feature-libraries/indexing/anchorTreeIndex.d.ts +8 -1
- package/dist/feature-libraries/indexing/anchorTreeIndex.d.ts.map +1 -1
- package/dist/feature-libraries/indexing/anchorTreeIndex.js +31 -5
- package/dist/feature-libraries/indexing/anchorTreeIndex.js.map +1 -1
- package/dist/feature-libraries/modular-schema/discrepancies.d.ts +84 -24
- package/dist/feature-libraries/modular-schema/discrepancies.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/discrepancies.js +32 -33
- package/dist/feature-libraries/modular-schema/discrepancies.js.map +1 -1
- package/dist/feature-libraries/modular-schema/index.d.ts +1 -1
- package/dist/feature-libraries/modular-schema/index.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/index.js +5 -1
- package/dist/feature-libraries/modular-schema/index.js.map +1 -1
- package/dist/feature-libraries/modular-schema/isNeverTree.d.ts +0 -1
- package/dist/feature-libraries/modular-schema/isNeverTree.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/isNeverTree.js +0 -1
- package/dist/feature-libraries/modular-schema/isNeverTree.js.map +1 -1
- package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV1.d.ts +6 -6
- package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV1.d.ts.map +1 -1
- package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV2.d.ts +7 -7
- package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV2.d.ts.map +1 -1
- package/dist/feature-libraries/schema-edits/schemaChangeFormat.d.ts +12 -12
- package/dist/feature-libraries/sequence-field/formatV1.d.ts +99 -99
- package/dist/feature-libraries/sequence-field/formatV1.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/formatV2.d.ts +76 -76
- package/dist/feature-libraries/sequence-field/formatV2.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/formatV3.d.ts +54 -54
- package/dist/feature-libraries/sequence-field/types.d.ts +0 -1
- package/dist/feature-libraries/sequence-field/types.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/types.js.map +1 -1
- package/dist/index.d.ts +4 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -14
- 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/index.d.ts +1 -1
- package/dist/shared-tree/index.d.ts.map +1 -1
- package/dist/shared-tree/index.js.map +1 -1
- package/dist/shared-tree/schematizeTree.d.ts +1 -1
- package/dist/shared-tree/schematizeTree.d.ts.map +1 -1
- package/dist/shared-tree/schematizeTree.js +6 -6
- package/dist/shared-tree/schematizeTree.js.map +1 -1
- package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/dist/shared-tree/schematizingTreeView.js +8 -12
- package/dist/shared-tree/schematizingTreeView.js.map +1 -1
- package/dist/shared-tree/sharedTree.d.ts +25 -7
- package/dist/shared-tree/sharedTree.d.ts.map +1 -1
- package/dist/shared-tree/sharedTree.js +104 -15
- package/dist/shared-tree/sharedTree.js.map +1 -1
- package/dist/shared-tree/treeCheckout.d.ts +35 -12
- package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
- package/dist/shared-tree/treeCheckout.js +159 -127
- package/dist/shared-tree/treeCheckout.js.map +1 -1
- package/dist/shared-tree-core/branch.d.ts +13 -35
- package/dist/shared-tree-core/branch.d.ts.map +1 -1
- package/dist/shared-tree-core/branch.js +12 -77
- package/dist/shared-tree-core/branch.js.map +1 -1
- package/dist/shared-tree-core/branchCommitEnricher.d.ts +7 -1
- package/dist/shared-tree-core/branchCommitEnricher.d.ts.map +1 -1
- package/dist/shared-tree-core/branchCommitEnricher.js +16 -18
- package/dist/shared-tree-core/branchCommitEnricher.js.map +1 -1
- package/dist/shared-tree-core/editManager.d.ts.map +1 -1
- package/dist/shared-tree-core/editManager.js +2 -2
- package/dist/shared-tree-core/editManager.js.map +1 -1
- package/dist/shared-tree-core/index.d.ts +3 -3
- package/dist/shared-tree-core/index.d.ts.map +1 -1
- package/dist/shared-tree-core/index.js +2 -2
- package/dist/shared-tree-core/index.js.map +1 -1
- package/dist/shared-tree-core/sharedTreeCore.d.ts +2 -9
- package/dist/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
- package/dist/shared-tree-core/sharedTreeCore.js +4 -16
- package/dist/shared-tree-core/sharedTreeCore.js.map +1 -1
- package/dist/shared-tree-core/transaction.d.ts +38 -0
- package/dist/shared-tree-core/transaction.d.ts.map +1 -1
- package/dist/shared-tree-core/transaction.js +118 -6
- package/dist/shared-tree-core/transaction.js.map +1 -1
- package/dist/simple-tree/api/conciseTree.d.ts.map +1 -1
- package/dist/simple-tree/api/conciseTree.js +1 -1
- package/dist/simple-tree/api/conciseTree.js.map +1 -1
- package/dist/simple-tree/api/create.d.ts.map +1 -1
- package/dist/simple-tree/api/create.js +5 -1
- package/dist/simple-tree/api/create.js.map +1 -1
- package/dist/simple-tree/api/customTree.d.ts +14 -2
- package/dist/simple-tree/api/customTree.d.ts.map +1 -1
- package/dist/simple-tree/api/customTree.js +53 -3
- package/dist/simple-tree/api/customTree.js.map +1 -1
- package/dist/simple-tree/api/index.d.ts +2 -2
- package/dist/simple-tree/api/index.d.ts.map +1 -1
- package/dist/simple-tree/api/index.js +4 -1
- package/dist/simple-tree/api/index.js.map +1 -1
- package/dist/simple-tree/api/schemaFactory.d.ts +48 -0
- package/dist/simple-tree/api/schemaFactory.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaFactory.js +5 -2
- package/dist/simple-tree/api/schemaFactory.js.map +1 -1
- package/dist/simple-tree/api/simpleSchema.d.ts +3 -1
- package/dist/simple-tree/api/simpleSchema.d.ts.map +1 -1
- package/dist/simple-tree/api/simpleSchema.js.map +1 -1
- package/dist/simple-tree/api/simpleTreeIndex.js +3 -1
- package/dist/simple-tree/api/simpleTreeIndex.js.map +1 -1
- package/dist/simple-tree/api/storedSchema.d.ts +4 -4
- package/dist/simple-tree/api/storedSchema.d.ts.map +1 -1
- package/dist/simple-tree/api/storedSchema.js +8 -21
- package/dist/simple-tree/api/storedSchema.js.map +1 -1
- package/dist/simple-tree/api/tree.d.ts +1 -0
- package/dist/simple-tree/api/tree.d.ts.map +1 -1
- package/dist/simple-tree/api/tree.js.map +1 -1
- package/dist/simple-tree/api/verboseTree.js +1 -1
- package/dist/simple-tree/api/verboseTree.js.map +1 -1
- package/dist/simple-tree/api/view.d.ts +14 -9
- package/dist/simple-tree/api/view.d.ts.map +1 -1
- package/dist/simple-tree/api/view.js +129 -40
- package/dist/simple-tree/api/view.js.map +1 -1
- package/dist/simple-tree/index.d.ts +2 -2
- package/dist/simple-tree/index.d.ts.map +1 -1
- package/dist/simple-tree/index.js +5 -2
- package/dist/simple-tree/index.js.map +1 -1
- package/dist/simple-tree/leafNodeSchema.d.ts +0 -15
- package/dist/simple-tree/leafNodeSchema.d.ts.map +1 -1
- package/dist/simple-tree/leafNodeSchema.js +0 -15
- package/dist/simple-tree/leafNodeSchema.js.map +1 -1
- package/dist/simple-tree/objectNode.d.ts +8 -3
- package/dist/simple-tree/objectNode.d.ts.map +1 -1
- package/dist/simple-tree/objectNode.js +18 -2
- package/dist/simple-tree/objectNode.js.map +1 -1
- package/dist/simple-tree/objectNodeTypes.d.ts +4 -0
- package/dist/simple-tree/objectNodeTypes.d.ts.map +1 -1
- package/dist/simple-tree/objectNodeTypes.js.map +1 -1
- package/dist/simple-tree/schemaTypes.d.ts +4 -2
- package/dist/simple-tree/schemaTypes.d.ts.map +1 -1
- package/dist/simple-tree/schemaTypes.js.map +1 -1
- package/dist/simple-tree/toStoredSchema.d.ts.map +1 -1
- package/dist/simple-tree/toStoredSchema.js +18 -13
- package/dist/simple-tree/toStoredSchema.js.map +1 -1
- package/dist/util/brand.d.ts +0 -2
- package/dist/util/brand.d.ts.map +1 -1
- package/dist/util/brand.js +0 -1
- package/dist/util/brand.js.map +1 -1
- package/dist/util/index.d.ts +1 -1
- package/dist/util/index.d.ts.map +1 -1
- package/dist/util/index.js +2 -1
- package/dist/util/index.js.map +1 -1
- package/dist/util/typeCheck.d.ts +0 -2
- package/dist/util/typeCheck.d.ts.map +1 -1
- package/dist/util/typeCheck.js.map +1 -1
- package/dist/util/utils.d.ts +13 -0
- package/dist/util/utils.d.ts.map +1 -1
- package/dist/util/utils.js +23 -1
- package/dist/util/utils.js.map +1 -1
- package/lib/core/index.d.ts +2 -2
- package/lib/core/index.d.ts.map +1 -1
- package/lib/core/index.js +2 -2
- package/lib/core/index.js.map +1 -1
- package/lib/core/rebase/utils.d.ts.map +1 -1
- package/lib/core/rebase/utils.js +3 -10
- package/lib/core/rebase/utils.js.map +1 -1
- package/lib/core/schema-stored/format.d.ts +0 -3
- package/lib/core/schema-stored/format.d.ts.map +1 -1
- package/lib/core/schema-stored/format.js.map +1 -1
- package/lib/core/schema-stored/schema.d.ts +12 -10
- package/lib/core/schema-stored/schema.d.ts.map +1 -1
- package/lib/core/schema-stored/schema.js +3 -5
- package/lib/core/schema-stored/schema.js.map +1 -1
- package/lib/core/schema-view/index.d.ts +1 -1
- package/lib/core/schema-view/index.d.ts.map +1 -1
- package/lib/core/schema-view/index.js +1 -1
- package/lib/core/schema-view/index.js.map +1 -1
- package/lib/core/schema-view/view.d.ts +0 -7
- package/lib/core/schema-view/view.d.ts.map +1 -1
- package/lib/core/schema-view/view.js +0 -11
- package/lib/core/schema-view/view.js.map +1 -1
- package/lib/{feature-libraries/chunked-forest → core/tree}/chunk.d.ts +2 -1
- package/lib/core/tree/chunk.d.ts.map +1 -0
- package/lib/{feature-libraries/chunked-forest → core/tree}/chunk.js +1 -1
- package/lib/core/tree/chunk.js.map +1 -0
- package/lib/core/tree/index.d.ts +1 -0
- package/lib/core/tree/index.d.ts.map +1 -1
- package/lib/core/tree/index.js +1 -0
- package/lib/core/tree/index.js.map +1 -1
- package/lib/core/tree/treeTextFormat.d.ts +0 -5
- package/lib/core/tree/treeTextFormat.d.ts.map +1 -1
- package/lib/core/tree/treeTextFormat.js.map +1 -1
- package/lib/core/tree/types.d.ts +0 -5
- package/lib/core/tree/types.d.ts.map +1 -1
- package/lib/core/tree/types.js +0 -1
- package/lib/core/tree/types.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/basicChunk.d.ts +1 -2
- package/lib/feature-libraries/chunked-forest/basicChunk.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/basicChunk.js +1 -1
- package/lib/feature-libraries/chunked-forest/basicChunk.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/chunkTree.d.ts +1 -2
- package/lib/feature-libraries/chunked-forest/chunkTree.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/chunkTree.js +1 -2
- package/lib/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/chunkedForest.d.ts +1 -2
- package/lib/feature-libraries/chunked-forest/chunkedForest.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/chunkedForest.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkCodecUtilities.d.ts +1 -2
- package/lib/feature-libraries/chunked-forest/codec/chunkCodecUtilities.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkCodecUtilities.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts +1 -2
- package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.d.ts +1 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/emptyChunk.d.ts +1 -1
- package/lib/feature-libraries/chunked-forest/emptyChunk.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/emptyChunk.js +1 -2
- package/lib/feature-libraries/chunked-forest/emptyChunk.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/index.d.ts +1 -1
- package/lib/feature-libraries/chunked-forest/index.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/index.js +1 -1
- package/lib/feature-libraries/chunked-forest/index.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/sequenceChunk.d.ts +1 -1
- package/lib/feature-libraries/chunked-forest/sequenceChunk.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/sequenceChunk.js +1 -1
- package/lib/feature-libraries/chunked-forest/sequenceChunk.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/uniformChunk.d.ts +1 -2
- package/lib/feature-libraries/chunked-forest/uniformChunk.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/uniformChunk.js +1 -1
- package/lib/feature-libraries/chunked-forest/uniformChunk.js.map +1 -1
- package/lib/feature-libraries/default-schema/defaultSchema.d.ts.map +1 -1
- package/lib/feature-libraries/default-schema/defaultSchema.js +1 -0
- package/lib/feature-libraries/default-schema/defaultSchema.js.map +1 -1
- package/lib/feature-libraries/default-schema/schemaChecker.d.ts.map +1 -1
- package/lib/feature-libraries/default-schema/schemaChecker.js +2 -1
- package/lib/feature-libraries/default-schema/schemaChecker.js.map +1 -1
- package/lib/feature-libraries/index.d.ts +1 -1
- package/lib/feature-libraries/index.d.ts.map +1 -1
- package/lib/feature-libraries/index.js +1 -1
- package/lib/feature-libraries/index.js.map +1 -1
- package/lib/feature-libraries/indexing/anchorTreeIndex.d.ts +8 -1
- package/lib/feature-libraries/indexing/anchorTreeIndex.d.ts.map +1 -1
- package/lib/feature-libraries/indexing/anchorTreeIndex.js +31 -5
- package/lib/feature-libraries/indexing/anchorTreeIndex.js.map +1 -1
- package/lib/feature-libraries/modular-schema/discrepancies.d.ts +84 -24
- package/lib/feature-libraries/modular-schema/discrepancies.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/discrepancies.js +25 -28
- package/lib/feature-libraries/modular-schema/discrepancies.js.map +1 -1
- package/lib/feature-libraries/modular-schema/index.d.ts +1 -1
- package/lib/feature-libraries/modular-schema/index.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/index.js +1 -1
- package/lib/feature-libraries/modular-schema/index.js.map +1 -1
- package/lib/feature-libraries/modular-schema/isNeverTree.d.ts +0 -1
- package/lib/feature-libraries/modular-schema/isNeverTree.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/isNeverTree.js +0 -1
- package/lib/feature-libraries/modular-schema/isNeverTree.js.map +1 -1
- package/lib/feature-libraries/optional-field/optionalFieldChangeFormatV1.d.ts +6 -6
- package/lib/feature-libraries/optional-field/optionalFieldChangeFormatV1.d.ts.map +1 -1
- package/lib/feature-libraries/optional-field/optionalFieldChangeFormatV2.d.ts +7 -7
- package/lib/feature-libraries/optional-field/optionalFieldChangeFormatV2.d.ts.map +1 -1
- package/lib/feature-libraries/schema-edits/schemaChangeFormat.d.ts +12 -12
- package/lib/feature-libraries/sequence-field/formatV1.d.ts +99 -99
- package/lib/feature-libraries/sequence-field/formatV1.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/formatV2.d.ts +76 -76
- package/lib/feature-libraries/sequence-field/formatV2.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/formatV3.d.ts +54 -54
- package/lib/feature-libraries/sequence-field/types.d.ts +0 -1
- package/lib/feature-libraries/sequence-field/types.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/types.js.map +1 -1
- package/lib/index.d.ts +4 -5
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +2 -3
- 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/index.d.ts +1 -1
- package/lib/shared-tree/index.d.ts.map +1 -1
- package/lib/shared-tree/index.js.map +1 -1
- package/lib/shared-tree/schematizeTree.d.ts +1 -1
- package/lib/shared-tree/schematizeTree.d.ts.map +1 -1
- package/lib/shared-tree/schematizeTree.js +7 -7
- package/lib/shared-tree/schematizeTree.js.map +1 -1
- package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/lib/shared-tree/schematizingTreeView.js +10 -14
- package/lib/shared-tree/schematizingTreeView.js.map +1 -1
- package/lib/shared-tree/sharedTree.d.ts +25 -7
- package/lib/shared-tree/sharedTree.d.ts.map +1 -1
- package/lib/shared-tree/sharedTree.js +105 -16
- package/lib/shared-tree/sharedTree.js.map +1 -1
- package/lib/shared-tree/treeCheckout.d.ts +35 -12
- package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
- package/lib/shared-tree/treeCheckout.js +161 -129
- package/lib/shared-tree/treeCheckout.js.map +1 -1
- package/lib/shared-tree-core/branch.d.ts +13 -35
- package/lib/shared-tree-core/branch.d.ts.map +1 -1
- package/lib/shared-tree-core/branch.js +12 -76
- package/lib/shared-tree-core/branch.js.map +1 -1
- package/lib/shared-tree-core/branchCommitEnricher.d.ts +7 -1
- package/lib/shared-tree-core/branchCommitEnricher.d.ts.map +1 -1
- package/lib/shared-tree-core/branchCommitEnricher.js +16 -18
- package/lib/shared-tree-core/branchCommitEnricher.js.map +1 -1
- package/lib/shared-tree-core/editManager.d.ts.map +1 -1
- package/lib/shared-tree-core/editManager.js +3 -3
- package/lib/shared-tree-core/editManager.js.map +1 -1
- package/lib/shared-tree-core/index.d.ts +3 -3
- package/lib/shared-tree-core/index.d.ts.map +1 -1
- package/lib/shared-tree-core/index.js +2 -2
- package/lib/shared-tree-core/index.js.map +1 -1
- package/lib/shared-tree-core/sharedTreeCore.d.ts +2 -9
- package/lib/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
- package/lib/shared-tree-core/sharedTreeCore.js +4 -16
- package/lib/shared-tree-core/sharedTreeCore.js.map +1 -1
- package/lib/shared-tree-core/transaction.d.ts +38 -0
- package/lib/shared-tree-core/transaction.d.ts.map +1 -1
- package/lib/shared-tree-core/transaction.js +112 -1
- package/lib/shared-tree-core/transaction.js.map +1 -1
- package/lib/simple-tree/api/conciseTree.d.ts.map +1 -1
- package/lib/simple-tree/api/conciseTree.js +2 -2
- package/lib/simple-tree/api/conciseTree.js.map +1 -1
- package/lib/simple-tree/api/create.d.ts.map +1 -1
- package/lib/simple-tree/api/create.js +5 -1
- package/lib/simple-tree/api/create.js.map +1 -1
- package/lib/simple-tree/api/customTree.d.ts +14 -2
- package/lib/simple-tree/api/customTree.d.ts.map +1 -1
- package/lib/simple-tree/api/customTree.js +50 -2
- package/lib/simple-tree/api/customTree.js.map +1 -1
- package/lib/simple-tree/api/index.d.ts +2 -2
- package/lib/simple-tree/api/index.d.ts.map +1 -1
- package/lib/simple-tree/api/index.js +2 -1
- package/lib/simple-tree/api/index.js.map +1 -1
- package/lib/simple-tree/api/schemaFactory.d.ts +48 -0
- package/lib/simple-tree/api/schemaFactory.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaFactory.js +4 -1
- package/lib/simple-tree/api/schemaFactory.js.map +1 -1
- package/lib/simple-tree/api/simpleSchema.d.ts +3 -1
- package/lib/simple-tree/api/simpleSchema.d.ts.map +1 -1
- package/lib/simple-tree/api/simpleSchema.js.map +1 -1
- package/lib/simple-tree/api/simpleTreeIndex.js +3 -1
- package/lib/simple-tree/api/simpleTreeIndex.js.map +1 -1
- package/lib/simple-tree/api/storedSchema.d.ts +4 -4
- package/lib/simple-tree/api/storedSchema.d.ts.map +1 -1
- package/lib/simple-tree/api/storedSchema.js +5 -18
- package/lib/simple-tree/api/storedSchema.js.map +1 -1
- package/lib/simple-tree/api/tree.d.ts +1 -0
- package/lib/simple-tree/api/tree.d.ts.map +1 -1
- package/lib/simple-tree/api/tree.js.map +1 -1
- package/lib/simple-tree/api/verboseTree.js +2 -2
- package/lib/simple-tree/api/verboseTree.js.map +1 -1
- package/lib/simple-tree/api/view.d.ts +14 -9
- package/lib/simple-tree/api/view.d.ts.map +1 -1
- package/lib/simple-tree/api/view.js +131 -42
- package/lib/simple-tree/api/view.js.map +1 -1
- package/lib/simple-tree/index.d.ts +2 -2
- package/lib/simple-tree/index.d.ts.map +1 -1
- package/lib/simple-tree/index.js +2 -2
- package/lib/simple-tree/index.js.map +1 -1
- package/lib/simple-tree/leafNodeSchema.d.ts +0 -15
- package/lib/simple-tree/leafNodeSchema.d.ts.map +1 -1
- package/lib/simple-tree/leafNodeSchema.js +0 -15
- package/lib/simple-tree/leafNodeSchema.js.map +1 -1
- package/lib/simple-tree/objectNode.d.ts +8 -3
- package/lib/simple-tree/objectNode.d.ts.map +1 -1
- package/lib/simple-tree/objectNode.js +16 -1
- package/lib/simple-tree/objectNode.js.map +1 -1
- package/lib/simple-tree/objectNodeTypes.d.ts +4 -0
- package/lib/simple-tree/objectNodeTypes.d.ts.map +1 -1
- package/lib/simple-tree/objectNodeTypes.js.map +1 -1
- package/lib/simple-tree/schemaTypes.d.ts +4 -2
- package/lib/simple-tree/schemaTypes.d.ts.map +1 -1
- package/lib/simple-tree/schemaTypes.js.map +1 -1
- package/lib/simple-tree/toStoredSchema.d.ts.map +1 -1
- package/lib/simple-tree/toStoredSchema.js +19 -14
- package/lib/simple-tree/toStoredSchema.js.map +1 -1
- package/lib/util/brand.d.ts +0 -2
- package/lib/util/brand.d.ts.map +1 -1
- package/lib/util/brand.js +0 -1
- package/lib/util/brand.js.map +1 -1
- package/lib/util/index.d.ts +1 -1
- package/lib/util/index.d.ts.map +1 -1
- package/lib/util/index.js +1 -1
- package/lib/util/index.js.map +1 -1
- package/lib/util/typeCheck.d.ts +0 -2
- package/lib/util/typeCheck.d.ts.map +1 -1
- package/lib/util/typeCheck.js.map +1 -1
- package/lib/util/utils.d.ts +13 -0
- package/lib/util/utils.d.ts.map +1 -1
- package/lib/util/utils.js +21 -0
- package/lib/util/utils.js.map +1 -1
- package/package.json +22 -22
- package/src/core/index.ts +5 -1
- package/src/core/rebase/utils.ts +17 -20
- package/src/core/schema-stored/format.ts +0 -3
- package/src/core/schema-stored/schema.ts +13 -10
- package/src/core/schema-view/index.ts +0 -1
- package/src/core/schema-view/view.ts +0 -11
- package/src/{feature-libraries/chunked-forest → core/tree}/chunk.ts +4 -4
- package/src/core/tree/index.ts +8 -0
- package/src/core/tree/treeTextFormat.ts +0 -5
- package/src/core/tree/types.ts +0 -5
- package/src/feature-libraries/chunked-forest/basicChunk.ts +4 -2
- package/src/feature-libraries/chunked-forest/chunkTree.ts +2 -1
- package/src/feature-libraries/chunked-forest/chunkedForest.ts +2 -1
- package/src/feature-libraries/chunked-forest/codec/chunkCodecUtilities.ts +1 -2
- package/src/feature-libraries/chunked-forest/codec/chunkDecoding.ts +6 -2
- package/src/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.ts +1 -1
- package/src/feature-libraries/chunked-forest/emptyChunk.ts +4 -2
- package/src/feature-libraries/chunked-forest/index.ts +1 -1
- package/src/feature-libraries/chunked-forest/sequenceChunk.ts +1 -1
- package/src/feature-libraries/chunked-forest/uniformChunk.ts +4 -1
- package/src/feature-libraries/default-schema/defaultSchema.ts +1 -0
- package/src/feature-libraries/default-schema/schemaChecker.ts +4 -1
- package/src/feature-libraries/index.ts +13 -0
- package/src/feature-libraries/indexing/anchorTreeIndex.ts +34 -5
- package/src/feature-libraries/modular-schema/discrepancies.ts +76 -38
- package/src/feature-libraries/modular-schema/index.ts +13 -0
- package/src/feature-libraries/modular-schema/isNeverTree.ts +0 -2
- package/src/feature-libraries/sequence-field/types.ts +0 -1
- package/src/index.ts +1 -29
- package/src/packageVersion.ts +1 -1
- package/src/shared-tree/index.ts +1 -0
- package/src/shared-tree/schematizeTree.ts +6 -10
- package/src/shared-tree/schematizingTreeView.ts +11 -21
- package/src/shared-tree/sharedTree.ts +173 -41
- package/src/shared-tree/treeCheckout.ts +224 -175
- package/src/shared-tree-core/branch.ts +29 -122
- package/src/shared-tree-core/branchCommitEnricher.ts +19 -20
- package/src/shared-tree-core/editManager.ts +3 -8
- package/src/shared-tree-core/index.ts +2 -1
- package/src/shared-tree-core/sharedTreeCore.ts +8 -19
- package/src/shared-tree-core/transaction.ts +145 -0
- package/src/simple-tree/api/conciseTree.ts +2 -2
- package/src/simple-tree/api/create.ts +5 -1
- package/src/simple-tree/api/customTree.ts +69 -1
- package/src/simple-tree/api/index.ts +12 -2
- package/src/simple-tree/api/schemaFactory.ts +62 -1
- package/src/simple-tree/api/simpleSchema.ts +3 -1
- package/src/simple-tree/api/simpleTreeIndex.ts +2 -0
- package/src/simple-tree/api/storedSchema.ts +7 -22
- package/src/simple-tree/api/tree.ts +6 -0
- package/src/simple-tree/api/verboseTree.ts +2 -2
- package/src/simple-tree/api/view.ts +197 -51
- package/src/simple-tree/index.ts +6 -0
- package/src/simple-tree/leafNodeSchema.ts +0 -19
- package/src/simple-tree/objectNode.ts +26 -2
- package/src/simple-tree/objectNodeTypes.ts +5 -0
- package/src/simple-tree/schemaTypes.ts +7 -2
- package/src/simple-tree/toStoredSchema.ts +25 -19
- package/src/util/brand.ts +0 -2
- package/src/util/index.ts +1 -0
- package/src/util/typeCheck.ts +0 -2
- package/src/util/utils.ts +26 -0
- package/dist/feature-libraries/chunked-forest/chunk.d.ts.map +0 -1
- package/dist/feature-libraries/chunked-forest/chunk.js.map +0 -1
- package/lib/feature-libraries/chunked-forest/chunk.d.ts.map +0 -1
- package/lib/feature-libraries/chunked-forest/chunk.js.map +0 -1
|
@@ -14,11 +14,14 @@ import {
|
|
|
14
14
|
type TreeValue,
|
|
15
15
|
type UpPath,
|
|
16
16
|
type Value,
|
|
17
|
+
type ChunkedCursor,
|
|
18
|
+
type TreeChunk,
|
|
19
|
+
cursorChunk,
|
|
20
|
+
dummyRoot,
|
|
17
21
|
} from "../../core/index.js";
|
|
18
22
|
import { ReferenceCountedBase, fail, hasSome } from "../../util/index.js";
|
|
19
23
|
import { SynchronousCursor, prefixFieldPath, prefixPath } from "../treeCursorUtils.js";
|
|
20
24
|
|
|
21
|
-
import { type ChunkedCursor, type TreeChunk, cursorChunk, dummyRoot } from "./chunk.js";
|
|
22
25
|
import type { SessionSpaceCompressedId, IIdCompressor } from "@fluidframework/id-compressor";
|
|
23
26
|
import { UsageError } from "@fluidframework/telemetry-utils/internal";
|
|
24
27
|
|
|
@@ -73,7 +73,10 @@ export function isNodeInSchema(
|
|
|
73
73
|
uncheckedFieldsFromNode.delete(fieldKey);
|
|
74
74
|
}
|
|
75
75
|
// The node has fields that we did not check as part of looking at every field defined in the node's schema
|
|
76
|
-
if (
|
|
76
|
+
if (
|
|
77
|
+
uncheckedFieldsFromNode.size !== 0 &&
|
|
78
|
+
!schemaAndPolicy.policy.allowUnknownOptionalFields(node.type)
|
|
79
|
+
) {
|
|
77
80
|
return SchemaValidationErrors.ObjectNode_FieldNotInSchema;
|
|
78
81
|
}
|
|
79
82
|
} else if (schema instanceof MapNodeStoredSchema) {
|
|
@@ -76,7 +76,20 @@ export {
|
|
|
76
76
|
type FieldKindConfigurationEntry,
|
|
77
77
|
getAllowedContentDiscrepancies,
|
|
78
78
|
isRepoSuperset,
|
|
79
|
+
type AllowedTypeDiscrepancy,
|
|
80
|
+
type FieldKindDiscrepancy,
|
|
81
|
+
type ValueSchemaDiscrepancy,
|
|
82
|
+
type FieldDiscrepancy,
|
|
83
|
+
type NodeDiscrepancy,
|
|
84
|
+
type NodeKindDiscrepancy,
|
|
85
|
+
type NodeFieldsDiscrepancy,
|
|
79
86
|
isNeverTree,
|
|
87
|
+
type LinearExtension,
|
|
88
|
+
type Realizer,
|
|
89
|
+
fieldRealizer,
|
|
90
|
+
PosetComparisonResult,
|
|
91
|
+
comparePosetElements,
|
|
92
|
+
posetLte,
|
|
80
93
|
} from "./modular-schema/index.js";
|
|
81
94
|
|
|
82
95
|
export { mapRootChanges } from "./deltaUtils.js";
|
|
@@ -82,6 +82,8 @@ export class AnchorTreeIndex<TKey extends TreeIndexKey, TValue>
|
|
|
82
82
|
* @param getValue - a pure and functional function that returns the associated value of one or more anchor nodes, can be used to map and filter the indexed anchor nodes
|
|
83
83
|
* so that the values returned from the index are more usable
|
|
84
84
|
* @param checkTreeStatus - a function that gets the tree status from an anchor node, used for filtering out detached nodes
|
|
85
|
+
* @param isShallowIndex - indicates if this index is shallow, meaning that it only allows nodes to be keyed off of fields directly under them rather than anywhere in their subtree.
|
|
86
|
+
* As a performance optimization, re-indexing up the spine can be turned off for shallow indexes.
|
|
85
87
|
*/
|
|
86
88
|
public constructor(
|
|
87
89
|
private readonly forest: IForestSubscription,
|
|
@@ -90,6 +92,7 @@ export class AnchorTreeIndex<TKey extends TreeIndexKey, TValue>
|
|
|
90
92
|
) => KeyFinder<TKey> | undefined,
|
|
91
93
|
private readonly getValue: (anchorNodes: TreeIndexNodes<AnchorNode>) => TValue | undefined,
|
|
92
94
|
private readonly checkTreeStatus: (node: AnchorNode) => TreeStatus | undefined,
|
|
95
|
+
private readonly isShallowIndex = false,
|
|
93
96
|
) {
|
|
94
97
|
this.forest.registerAnnouncedVisitor(this.keyFinder);
|
|
95
98
|
|
|
@@ -132,6 +135,14 @@ export class AnchorTreeIndex<TKey extends TreeIndexKey, TValue>
|
|
|
132
135
|
this.indexField(detachedCursor);
|
|
133
136
|
detachedCursor.free();
|
|
134
137
|
},
|
|
138
|
+
afterAttach: () => {
|
|
139
|
+
assert(parent !== undefined, 0xa99 /* must have a parent */);
|
|
140
|
+
this.reIndexSpine(parent);
|
|
141
|
+
},
|
|
142
|
+
afterDetach: () => {
|
|
143
|
+
assert(parent !== undefined, 0xa9a /* must have a parent */);
|
|
144
|
+
this.reIndexSpine(parent);
|
|
145
|
+
},
|
|
135
146
|
// when a replace happens, the keys of previously indexed nodes could be changed so we must re-index them
|
|
136
147
|
afterReplace: () => {
|
|
137
148
|
assert(parent !== undefined, 0xa8b /* must have a parent */);
|
|
@@ -142,9 +153,12 @@ export class AnchorTreeIndex<TKey extends TreeIndexKey, TValue>
|
|
|
142
153
|
0xa8c /* replace should happen in a node */,
|
|
143
154
|
);
|
|
144
155
|
cursor.exitNode();
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
156
|
+
this.indexField(cursor);
|
|
157
|
+
if (!this.isShallowIndex) {
|
|
158
|
+
// we must also re-index the spine if the key finders allow for any value under a subtree to be the key
|
|
159
|
+
// this means that a replace can cause the key for any node up its spine to be changed
|
|
160
|
+
this.indexSpine(cursor);
|
|
161
|
+
}
|
|
148
162
|
cursor.clear();
|
|
149
163
|
},
|
|
150
164
|
// the methods below are used to keep track of the path that has been traversed by the visitor
|
|
@@ -297,6 +311,23 @@ export class AnchorTreeIndex<TKey extends TreeIndexKey, TValue>
|
|
|
297
311
|
this.disposed = true;
|
|
298
312
|
}
|
|
299
313
|
|
|
314
|
+
/**
|
|
315
|
+
* Checks if the spine needs to be re-indexed and if so, re-indexes it starting from the given path.
|
|
316
|
+
*/
|
|
317
|
+
private reIndexSpine(path: UpPath): void {
|
|
318
|
+
if (!this.isShallowIndex) {
|
|
319
|
+
const cursor = this.forest.allocateCursor();
|
|
320
|
+
this.forest.moveCursorToPath(path, cursor);
|
|
321
|
+
assert(
|
|
322
|
+
cursor.mode === CursorLocationType.Nodes,
|
|
323
|
+
0xa9b /* attach should happen in a node */,
|
|
324
|
+
);
|
|
325
|
+
cursor.exitNode();
|
|
326
|
+
this.indexSpine(cursor);
|
|
327
|
+
cursor.clear();
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
|
|
300
331
|
private checkNotDisposed(errorMessage?: string): void {
|
|
301
332
|
if (this.disposed) {
|
|
302
333
|
if (errorMessage !== undefined) {
|
|
@@ -371,8 +402,6 @@ export class AnchorTreeIndex<TKey extends TreeIndexKey, TValue>
|
|
|
371
402
|
* Given a cursor in field mode, indexes all nodes under the field and then indexes all nodes up the spine.
|
|
372
403
|
*/
|
|
373
404
|
private indexSpine(cursor: ITreeSubscriptionCursor): void {
|
|
374
|
-
this.indexField(cursor);
|
|
375
|
-
|
|
376
405
|
if (keyAsDetachedField(cursor.getFieldKey()) !== rootField) {
|
|
377
406
|
cursor.exitField();
|
|
378
407
|
cursor.exitNode();
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
import { assert } from "@fluidframework/core-utils/internal";
|
|
7
7
|
|
|
8
8
|
import {
|
|
9
|
+
type FieldKey,
|
|
9
10
|
type FieldKindIdentifier,
|
|
10
11
|
LeafNodeStoredSchema,
|
|
11
12
|
MapNodeStoredSchema,
|
|
@@ -25,6 +26,7 @@ import { brand } from "../../util/index.js";
|
|
|
25
26
|
// Rather than both existing, one of which just returns boolean and the other which returns additional details, a simple comparison which returns everything needed should be used.
|
|
26
27
|
|
|
27
28
|
/**
|
|
29
|
+
* Discriminated union (keyed on `mismatch`) of discrepancies between a view and stored schema.
|
|
28
30
|
* @remarks
|
|
29
31
|
*
|
|
30
32
|
* 1. FieldDiscrepancy
|
|
@@ -60,47 +62,73 @@ export type Discrepancy = FieldDiscrepancy | NodeDiscrepancy;
|
|
|
60
62
|
|
|
61
63
|
export type NodeDiscrepancy = NodeKindDiscrepancy | NodeFieldsDiscrepancy;
|
|
62
64
|
|
|
65
|
+
/**
|
|
66
|
+
* A discrepancy in the declaration of a field.
|
|
67
|
+
*/
|
|
63
68
|
export type FieldDiscrepancy =
|
|
64
69
|
| AllowedTypeDiscrepancy
|
|
65
70
|
| FieldKindDiscrepancy
|
|
66
71
|
| ValueSchemaDiscrepancy;
|
|
67
72
|
|
|
68
|
-
|
|
69
|
-
|
|
73
|
+
/**
|
|
74
|
+
* Information about where a field discrepancy is located within a collection of schema.
|
|
75
|
+
*/
|
|
76
|
+
export interface FieldDiscrepancyLocation {
|
|
77
|
+
/**
|
|
78
|
+
* The {@link TreeNodeSchemaIdentifier} that contains the discrepancy.
|
|
79
|
+
*
|
|
80
|
+
* Undefined iff the discrepancy is part of the root field schema.
|
|
81
|
+
*/
|
|
82
|
+
identifier: TreeNodeSchemaIdentifier | undefined;
|
|
83
|
+
/**
|
|
84
|
+
* The {@link FieldKey} for the field that contains the discrepancy.
|
|
85
|
+
* Undefined when:
|
|
86
|
+
* - the discrepancy is part of the root field schema
|
|
87
|
+
* - the discrepancy is for 'all fields' of a map node
|
|
88
|
+
*/
|
|
89
|
+
fieldKey: FieldKey | undefined;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* A discrepancy in the allowed types of a field.
|
|
94
|
+
*
|
|
95
|
+
* @remarks
|
|
96
|
+
* This reports the symmetric difference of allowed types in view/stored to enable more efficient checks for compatibility
|
|
97
|
+
*/
|
|
98
|
+
export interface AllowedTypeDiscrepancy extends FieldDiscrepancyLocation {
|
|
70
99
|
mismatch: "allowedTypes";
|
|
71
100
|
/**
|
|
72
|
-
* List of allowed type identifiers in viewed schema
|
|
101
|
+
* List of allowed type identifiers in viewed schema which are not allowed in stored schema
|
|
73
102
|
*/
|
|
74
|
-
view:
|
|
103
|
+
view: TreeNodeSchemaIdentifier[];
|
|
75
104
|
/**
|
|
76
|
-
* List of allowed type identifiers in stored schema
|
|
105
|
+
* List of allowed type identifiers in stored schema which are not allowed in view schema
|
|
77
106
|
*/
|
|
78
|
-
stored:
|
|
107
|
+
stored: TreeNodeSchemaIdentifier[];
|
|
79
108
|
}
|
|
80
109
|
|
|
81
|
-
export interface FieldKindDiscrepancy {
|
|
82
|
-
identifier: string | undefined; // undefined indicates root field schema
|
|
110
|
+
export interface FieldKindDiscrepancy extends FieldDiscrepancyLocation {
|
|
83
111
|
mismatch: "fieldKind";
|
|
84
112
|
view: FieldKindIdentifier;
|
|
85
113
|
stored: FieldKindIdentifier;
|
|
86
114
|
}
|
|
87
115
|
|
|
88
116
|
export interface ValueSchemaDiscrepancy {
|
|
89
|
-
identifier:
|
|
117
|
+
identifier: TreeNodeSchemaIdentifier;
|
|
90
118
|
mismatch: "valueSchema";
|
|
91
119
|
view: ValueSchema | undefined;
|
|
92
120
|
stored: ValueSchema | undefined;
|
|
93
121
|
}
|
|
94
122
|
|
|
95
123
|
export interface NodeKindDiscrepancy {
|
|
96
|
-
identifier:
|
|
124
|
+
identifier: TreeNodeSchemaIdentifier;
|
|
97
125
|
mismatch: "nodeKind";
|
|
98
126
|
view: SchemaFactoryNodeKind | undefined;
|
|
99
127
|
stored: SchemaFactoryNodeKind | undefined;
|
|
100
128
|
}
|
|
101
129
|
|
|
102
130
|
export interface NodeFieldsDiscrepancy {
|
|
103
|
-
identifier:
|
|
131
|
+
identifier: TreeNodeSchemaIdentifier;
|
|
104
132
|
mismatch: "fields";
|
|
105
133
|
differences: FieldDiscrepancy[];
|
|
106
134
|
}
|
|
@@ -121,26 +149,25 @@ function getNodeSchemaType(nodeSchema: TreeNodeStoredSchema): SchemaFactoryNodeK
|
|
|
121
149
|
/**
|
|
122
150
|
* Finds and reports discrepancies between a view schema and a stored schema.
|
|
123
151
|
*
|
|
124
|
-
*
|
|
125
|
-
*
|
|
126
|
-
*
|
|
127
|
-
*
|
|
128
|
-
*
|
|
129
|
-
* consistent. Otherwise this difference is treated as `NodeKindDiscrepancy`
|
|
130
|
-
* - If a node schema with the same identifier exists in both view and stored, and their `SchemaFactoryNodeKind`
|
|
131
|
-
* are consistent, perform a exhaustive validation to identify all `FieldDiscrepancy`.
|
|
132
|
-
*
|
|
133
|
-
* 3. For each node schema in the stored, verify if it exists in the view. The overlapping parts were already
|
|
134
|
-
* addressed in the previous step.
|
|
152
|
+
* See documentation on {@link Discrepancy} for details of possible discrepancies.
|
|
153
|
+
* @remarks
|
|
154
|
+
* This function does not attempt to distinguish between equivalent representations of a node/field involving extraneous never trees.
|
|
155
|
+
* For example, a Forbidden field with allowed type set `[]` is equivalent to an optional field with allowed type set `[]`,
|
|
156
|
+
* as well as an optional field with an allowed type set containing only unconstructable types.
|
|
135
157
|
*
|
|
136
|
-
*
|
|
158
|
+
* It is up to the caller to determine whether such discrepancies matter.
|
|
137
159
|
*/
|
|
138
160
|
export function* getAllowedContentDiscrepancies(
|
|
139
161
|
view: TreeStoredSchema,
|
|
140
162
|
stored: TreeStoredSchema,
|
|
141
163
|
): Iterable<Discrepancy> {
|
|
142
164
|
// check root schema discrepancies
|
|
143
|
-
yield* getFieldDiscrepancies(
|
|
165
|
+
yield* getFieldDiscrepancies(
|
|
166
|
+
view.rootFieldSchema,
|
|
167
|
+
stored.rootFieldSchema,
|
|
168
|
+
undefined,
|
|
169
|
+
undefined,
|
|
170
|
+
);
|
|
144
171
|
|
|
145
172
|
for (const result of compareMaps(view.nodeSchema, stored.nodeSchema)) {
|
|
146
173
|
switch (result.type) {
|
|
@@ -195,6 +222,7 @@ function* getNodeDiscrepancies(
|
|
|
195
222
|
case "object": {
|
|
196
223
|
const differences = Array.from(
|
|
197
224
|
trackObjectNodeDiscrepancies(
|
|
225
|
+
identifier,
|
|
198
226
|
view as ObjectNodeStoredSchema,
|
|
199
227
|
stored as ObjectNodeStoredSchema,
|
|
200
228
|
),
|
|
@@ -213,6 +241,7 @@ function* getNodeDiscrepancies(
|
|
|
213
241
|
(view as MapNodeStoredSchema).mapFields,
|
|
214
242
|
(stored as MapNodeStoredSchema).mapFields,
|
|
215
243
|
identifier,
|
|
244
|
+
undefined,
|
|
216
245
|
);
|
|
217
246
|
break;
|
|
218
247
|
case "leaf": {
|
|
@@ -241,7 +270,8 @@ function* getNodeDiscrepancies(
|
|
|
241
270
|
function* getFieldDiscrepancies(
|
|
242
271
|
view: TreeFieldStoredSchema,
|
|
243
272
|
stored: TreeFieldStoredSchema,
|
|
244
|
-
|
|
273
|
+
identifier: TreeNodeSchemaIdentifier | undefined,
|
|
274
|
+
fieldKey: FieldKey | undefined,
|
|
245
275
|
): Iterable<FieldDiscrepancy> {
|
|
246
276
|
// Only track the symmetric differences of two sets.
|
|
247
277
|
const findSetDiscrepancies = (
|
|
@@ -256,7 +286,8 @@ function* getFieldDiscrepancies(
|
|
|
256
286
|
const [viewExtra, storedExtra] = findSetDiscrepancies(view.types, stored.types);
|
|
257
287
|
if (viewExtra.length > 0 || storedExtra.length > 0) {
|
|
258
288
|
yield {
|
|
259
|
-
identifier
|
|
289
|
+
identifier,
|
|
290
|
+
fieldKey,
|
|
260
291
|
mismatch: "allowedTypes",
|
|
261
292
|
view: viewExtra,
|
|
262
293
|
stored: storedExtra,
|
|
@@ -265,7 +296,8 @@ function* getFieldDiscrepancies(
|
|
|
265
296
|
|
|
266
297
|
if (view.kind !== stored.kind) {
|
|
267
298
|
yield {
|
|
268
|
-
identifier
|
|
299
|
+
identifier,
|
|
300
|
+
fieldKey,
|
|
269
301
|
mismatch: "fieldKind",
|
|
270
302
|
view: view.kind,
|
|
271
303
|
stored: stored.kind,
|
|
@@ -274,6 +306,7 @@ function* getFieldDiscrepancies(
|
|
|
274
306
|
}
|
|
275
307
|
|
|
276
308
|
function* trackObjectNodeDiscrepancies(
|
|
309
|
+
identifier: TreeNodeSchemaIdentifier,
|
|
277
310
|
view: ObjectNodeStoredSchema,
|
|
278
311
|
stored: ObjectNodeStoredSchema,
|
|
279
312
|
): Iterable<FieldDiscrepancy> {
|
|
@@ -298,7 +331,8 @@ function* trackObjectNodeDiscrepancies(
|
|
|
298
331
|
break;
|
|
299
332
|
}
|
|
300
333
|
yield {
|
|
301
|
-
identifier
|
|
334
|
+
identifier,
|
|
335
|
+
fieldKey,
|
|
302
336
|
mismatch: "fieldKind",
|
|
303
337
|
view: result.value.kind,
|
|
304
338
|
stored: storedEmptyFieldSchema.kind,
|
|
@@ -312,7 +346,8 @@ function* trackObjectNodeDiscrepancies(
|
|
|
312
346
|
break;
|
|
313
347
|
}
|
|
314
348
|
yield {
|
|
315
|
-
identifier
|
|
349
|
+
identifier,
|
|
350
|
+
fieldKey,
|
|
316
351
|
mismatch: "fieldKind",
|
|
317
352
|
view: storedEmptyFieldSchema.kind,
|
|
318
353
|
stored: result.value.kind,
|
|
@@ -320,12 +355,11 @@ function* trackObjectNodeDiscrepancies(
|
|
|
320
355
|
break;
|
|
321
356
|
}
|
|
322
357
|
case "both": {
|
|
323
|
-
yield* getFieldDiscrepancies(result.valueA, result.valueB, fieldKey);
|
|
358
|
+
yield* getFieldDiscrepancies(result.valueA, result.valueB, identifier, fieldKey);
|
|
324
359
|
break;
|
|
325
360
|
}
|
|
326
|
-
default:
|
|
361
|
+
default:
|
|
327
362
|
break;
|
|
328
|
-
}
|
|
329
363
|
}
|
|
330
364
|
}
|
|
331
365
|
}
|
|
@@ -428,13 +462,13 @@ function isFieldDiscrepancyCompatible(discrepancy: FieldDiscrepancy): boolean {
|
|
|
428
462
|
*
|
|
429
463
|
* The linear extension is represented as a lookup from each poset element to its index in the linear extension.
|
|
430
464
|
*/
|
|
431
|
-
type LinearExtension<T> = Map<T, number>;
|
|
465
|
+
export type LinearExtension<T> = Map<T, number>;
|
|
432
466
|
|
|
433
467
|
/**
|
|
434
468
|
* A realizer for a partially-ordered set. See:
|
|
435
469
|
* https://en.wikipedia.org/wiki/Order_dimension
|
|
436
470
|
*/
|
|
437
|
-
type Realizer<T> = LinearExtension<T>[];
|
|
471
|
+
export type Realizer<T> = LinearExtension<T>[];
|
|
438
472
|
|
|
439
473
|
/**
|
|
440
474
|
* @privateRemarks
|
|
@@ -468,7 +502,7 @@ const FieldKindIdentifiers = {
|
|
|
468
502
|
* identifier
|
|
469
503
|
* ```
|
|
470
504
|
*/
|
|
471
|
-
const fieldRealizer: Realizer<FieldKindIdentifier> = [
|
|
505
|
+
export const fieldRealizer: Realizer<FieldKindIdentifier> = [
|
|
472
506
|
[
|
|
473
507
|
FieldKindIdentifiers.forbidden,
|
|
474
508
|
FieldKindIdentifiers.identifier,
|
|
@@ -485,7 +519,7 @@ const fieldRealizer: Realizer<FieldKindIdentifier> = [
|
|
|
485
519
|
],
|
|
486
520
|
].map((extension) => new Map(extension.map((identifier, index) => [identifier, index])));
|
|
487
521
|
|
|
488
|
-
const PosetComparisonResult = {
|
|
522
|
+
export const PosetComparisonResult = {
|
|
489
523
|
Less: "<",
|
|
490
524
|
Greater: ">",
|
|
491
525
|
Equal: "=",
|
|
@@ -494,7 +528,11 @@ const PosetComparisonResult = {
|
|
|
494
528
|
type PosetComparisonResult =
|
|
495
529
|
(typeof PosetComparisonResult)[keyof typeof PosetComparisonResult];
|
|
496
530
|
|
|
497
|
-
function comparePosetElements<T>(
|
|
531
|
+
export function comparePosetElements<T>(
|
|
532
|
+
a: T,
|
|
533
|
+
b: T,
|
|
534
|
+
realizer: Realizer<T>,
|
|
535
|
+
): PosetComparisonResult {
|
|
498
536
|
let hasLessThanResult = false;
|
|
499
537
|
let hasGreaterThanResult = false;
|
|
500
538
|
for (const extension of realizer) {
|
|
@@ -517,7 +555,7 @@ function comparePosetElements<T>(a: T, b: T, realizer: Realizer<T>): PosetCompar
|
|
|
517
555
|
: PosetComparisonResult.Equal;
|
|
518
556
|
}
|
|
519
557
|
|
|
520
|
-
function posetLte<T>(a: T, b: T, realizer: Realizer<T>): boolean {
|
|
558
|
+
export function posetLte<T>(a: T, b: T, realizer: Realizer<T>): boolean {
|
|
521
559
|
const comparison = comparePosetElements(a, b, realizer);
|
|
522
560
|
return (
|
|
523
561
|
comparison === PosetComparisonResult.Less || comparison === PosetComparisonResult.Equal
|
|
@@ -77,4 +77,17 @@ export type {
|
|
|
77
77
|
export {
|
|
78
78
|
getAllowedContentDiscrepancies,
|
|
79
79
|
isRepoSuperset,
|
|
80
|
+
type AllowedTypeDiscrepancy,
|
|
81
|
+
type FieldKindDiscrepancy,
|
|
82
|
+
type ValueSchemaDiscrepancy,
|
|
83
|
+
type FieldDiscrepancy,
|
|
84
|
+
type NodeDiscrepancy,
|
|
85
|
+
type NodeKindDiscrepancy,
|
|
86
|
+
type NodeFieldsDiscrepancy,
|
|
87
|
+
type LinearExtension,
|
|
88
|
+
type Realizer,
|
|
89
|
+
fieldRealizer,
|
|
90
|
+
PosetComparisonResult,
|
|
91
|
+
comparePosetElements,
|
|
92
|
+
posetLte,
|
|
80
93
|
} from "./discrepancies.js";
|
package/src/index.ts
CHANGED
|
@@ -4,35 +4,15 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
export {
|
|
7
|
-
EmptyKey,
|
|
8
|
-
type FieldKey,
|
|
9
|
-
type TreeValue,
|
|
10
|
-
type FieldMapObject,
|
|
11
|
-
type NodeData,
|
|
12
|
-
type GenericTreeNode,
|
|
13
|
-
type JsonableTree,
|
|
14
|
-
type GenericFieldsNode,
|
|
15
|
-
type TreeNodeSchemaIdentifier,
|
|
16
|
-
type TreeFieldStoredSchema,
|
|
17
7
|
ValueSchema,
|
|
18
|
-
TreeNodeStoredSchema,
|
|
19
|
-
type FieldKindIdentifier,
|
|
20
|
-
type TreeTypeSet,
|
|
21
|
-
type TreeStoredSchema,
|
|
22
8
|
type Revertible,
|
|
23
9
|
CommitKind,
|
|
24
10
|
RevertibleStatus,
|
|
25
11
|
type CommitMetadata,
|
|
26
|
-
type StoredSchemaCollection,
|
|
27
|
-
type ErasedTreeNodeSchemaDataFormat,
|
|
28
|
-
ObjectNodeStoredSchema,
|
|
29
|
-
MapNodeStoredSchema,
|
|
30
|
-
LeafNodeStoredSchema,
|
|
31
12
|
type RevertibleFactory,
|
|
32
13
|
type RevertibleAlphaFactory,
|
|
33
14
|
type RevertibleAlpha,
|
|
34
15
|
} from "./core/index.js";
|
|
35
|
-
export { type Brand } from "./util/index.js";
|
|
36
16
|
|
|
37
17
|
export type {
|
|
38
18
|
Listeners,
|
|
@@ -50,10 +30,9 @@ export {
|
|
|
50
30
|
} from "./feature-libraries/index.js";
|
|
51
31
|
|
|
52
32
|
export {
|
|
53
|
-
type
|
|
33
|
+
type ITreeInternal,
|
|
54
34
|
type SharedTreeOptions,
|
|
55
35
|
ForestType,
|
|
56
|
-
type SharedTreeContentSnapshot,
|
|
57
36
|
type SharedTreeFormatOptions,
|
|
58
37
|
SharedTreeFormatVersion,
|
|
59
38
|
Tree,
|
|
@@ -190,11 +169,6 @@ export {
|
|
|
190
169
|
type SimpleObjectNodeSchema,
|
|
191
170
|
normalizeAllowedTypes,
|
|
192
171
|
getSimpleSchema,
|
|
193
|
-
numberSchema,
|
|
194
|
-
stringSchema,
|
|
195
|
-
booleanSchema,
|
|
196
|
-
handleSchema,
|
|
197
|
-
nullSchema,
|
|
198
172
|
type ReadonlyArrayNode,
|
|
199
173
|
type InsertableTreeNodeFromAllowedTypes,
|
|
200
174
|
type Input,
|
|
@@ -217,8 +191,6 @@ export { noopValidator } from "./codec/index.js";
|
|
|
217
191
|
export { typeboxValidator } from "./external-utilities/index.js";
|
|
218
192
|
|
|
219
193
|
export {
|
|
220
|
-
type Covariant,
|
|
221
|
-
BrandedType,
|
|
222
194
|
type RestrictiveReadonlyRecord,
|
|
223
195
|
type RestrictiveStringRecord,
|
|
224
196
|
type MakeNominal,
|
package/src/packageVersion.ts
CHANGED
package/src/shared-tree/index.ts
CHANGED
|
@@ -7,7 +7,6 @@ import { assert, unreachableCase } from "@fluidframework/core-utils/internal";
|
|
|
7
7
|
|
|
8
8
|
import {
|
|
9
9
|
AllowedUpdateType,
|
|
10
|
-
Compatibility,
|
|
11
10
|
CursorLocationType,
|
|
12
11
|
type ITreeCursorSynchronous,
|
|
13
12
|
type TreeStoredSchema,
|
|
@@ -24,7 +23,7 @@ import {
|
|
|
24
23
|
import { fail, isReadonlyArray } from "../util/index.js";
|
|
25
24
|
|
|
26
25
|
import type { ITreeCheckout } from "./treeCheckout.js";
|
|
27
|
-
import type
|
|
26
|
+
import { toStoredSchema, type ViewSchema } from "../simple-tree/index.js";
|
|
28
27
|
|
|
29
28
|
/**
|
|
30
29
|
* Modify `storedSchema` and invoke `setInitialTree` when it's time to set the tree content.
|
|
@@ -120,10 +119,7 @@ export function evaluateUpdate(
|
|
|
120
119
|
): UpdateType {
|
|
121
120
|
const compatibility = viewSchema.checkCompatibility(checkout.storedSchema);
|
|
122
121
|
|
|
123
|
-
if (
|
|
124
|
-
compatibility.read === Compatibility.Compatible &&
|
|
125
|
-
compatibility.write === Compatibility.Compatible
|
|
126
|
-
) {
|
|
122
|
+
if (compatibility.canUpgrade && compatibility.canView) {
|
|
127
123
|
// Compatible as is
|
|
128
124
|
return UpdateType.None;
|
|
129
125
|
}
|
|
@@ -133,13 +129,13 @@ export function evaluateUpdate(
|
|
|
133
129
|
return UpdateType.Initialize;
|
|
134
130
|
}
|
|
135
131
|
|
|
136
|
-
if (compatibility.
|
|
132
|
+
if (!compatibility.canUpgrade) {
|
|
137
133
|
// Existing stored schema permits trees which are incompatible with the view schema, so schema can not be updated
|
|
138
134
|
return UpdateType.Incompatible;
|
|
139
135
|
}
|
|
140
136
|
|
|
141
|
-
assert(compatibility.
|
|
142
|
-
assert(compatibility.
|
|
137
|
+
assert(!compatibility.canView, 0x8bd /* unexpected case */);
|
|
138
|
+
assert(compatibility.canUpgrade, 0x8be /* unexpected case */);
|
|
143
139
|
|
|
144
140
|
// eslint-disable-next-line no-bitwise
|
|
145
141
|
return allowedSchemaModifications & AllowedUpdateType.SchemaCompatible
|
|
@@ -244,7 +240,7 @@ export function ensureSchema(
|
|
|
244
240
|
return false;
|
|
245
241
|
}
|
|
246
242
|
case UpdateType.SchemaCompatible: {
|
|
247
|
-
checkout.updateSchema(viewSchema.schema);
|
|
243
|
+
checkout.updateSchema(toStoredSchema(viewSchema.schema));
|
|
248
244
|
return true;
|
|
249
245
|
}
|
|
250
246
|
case UpdateType.Initialize: {
|
|
@@ -12,12 +12,7 @@ import { createEmitter } from "@fluid-internal/client-utils";
|
|
|
12
12
|
import { assert } from "@fluidframework/core-utils/internal";
|
|
13
13
|
import { UsageError } from "@fluidframework/telemetry-utils/internal";
|
|
14
14
|
|
|
15
|
-
import {
|
|
16
|
-
AllowedUpdateType,
|
|
17
|
-
anchorSlot,
|
|
18
|
-
Compatibility,
|
|
19
|
-
type SchemaPolicy,
|
|
20
|
-
} from "../core/index.js";
|
|
15
|
+
import { AllowedUpdateType, anchorSlot, type SchemaPolicy } from "../core/index.js";
|
|
21
16
|
import {
|
|
22
17
|
type NodeKeyManager,
|
|
23
18
|
defaultSchemaPolicy,
|
|
@@ -58,7 +53,9 @@ import {
|
|
|
58
53
|
HydratedContext,
|
|
59
54
|
SimpleContextSlot,
|
|
60
55
|
areImplicitFieldSchemaEqual,
|
|
56
|
+
createUnknownOptionalFieldPolicy,
|
|
61
57
|
} from "../simple-tree/index.js";
|
|
58
|
+
|
|
62
59
|
/**
|
|
63
60
|
* Creating multiple tree views from the same checkout is not supported. This slot is used to detect if one already
|
|
64
61
|
* exists and error if creating a second.
|
|
@@ -116,14 +113,14 @@ export class SchematizingSimpleTreeView<
|
|
|
116
113
|
}
|
|
117
114
|
checkout.forest.anchors.slots.set(ViewSlot, this);
|
|
118
115
|
|
|
119
|
-
|
|
116
|
+
this.rootFieldSchema = normalizeFieldSchema(config.schema);
|
|
117
|
+
this.schemaPolicy = {
|
|
120
118
|
...defaultSchemaPolicy,
|
|
121
119
|
validateSchema: config.enableSchemaValidation,
|
|
120
|
+
allowUnknownOptionalFields: createUnknownOptionalFieldPolicy(this.rootFieldSchema),
|
|
122
121
|
};
|
|
123
|
-
this.rootFieldSchema = normalizeFieldSchema(config.schema);
|
|
124
|
-
this.schemaPolicy = defaultSchemaPolicy;
|
|
125
122
|
|
|
126
|
-
this.viewSchema = new ViewSchema(
|
|
123
|
+
this.viewSchema = new ViewSchema(this.schemaPolicy, {}, this.rootFieldSchema);
|
|
127
124
|
// This must be initialized before `update` can be called.
|
|
128
125
|
this.currentCompatibility = {
|
|
129
126
|
canView: false,
|
|
@@ -166,16 +163,13 @@ export class SchematizingSimpleTreeView<
|
|
|
166
163
|
this.nodeKeyManager,
|
|
167
164
|
{
|
|
168
165
|
schema: this.checkout.storedSchema,
|
|
169
|
-
policy:
|
|
170
|
-
...defaultSchemaPolicy,
|
|
171
|
-
validateSchema: this.config.enableSchemaValidation,
|
|
172
|
-
},
|
|
166
|
+
policy: this.schemaPolicy,
|
|
173
167
|
},
|
|
174
168
|
);
|
|
175
169
|
|
|
176
170
|
prepareContentForHydration(mapTree, this.checkout.forest);
|
|
177
171
|
initialize(this.checkout, {
|
|
178
|
-
schema: this.viewSchema.schema,
|
|
172
|
+
schema: toStoredSchema(this.viewSchema.schema),
|
|
179
173
|
initialTree: mapTree === undefined ? undefined : cursorForMapTreeNode(mapTree),
|
|
180
174
|
});
|
|
181
175
|
});
|
|
@@ -202,7 +196,7 @@ export class SchematizingSimpleTreeView<
|
|
|
202
196
|
AllowedUpdateType.SchemaCompatible,
|
|
203
197
|
this.checkout,
|
|
204
198
|
{
|
|
205
|
-
schema: this.viewSchema.schema,
|
|
199
|
+
schema: toStoredSchema(this.viewSchema.schema),
|
|
206
200
|
initialTree: undefined,
|
|
207
201
|
},
|
|
208
202
|
);
|
|
@@ -432,11 +426,7 @@ export function requireSchema(
|
|
|
432
426
|
|
|
433
427
|
{
|
|
434
428
|
const compatibility = viewSchema.checkCompatibility(checkout.storedSchema);
|
|
435
|
-
assert(
|
|
436
|
-
compatibility.write === Compatibility.Compatible &&
|
|
437
|
-
compatibility.read === Compatibility.Compatible,
|
|
438
|
-
0x8c3 /* requireSchema invoked with incompatible schema */,
|
|
439
|
-
);
|
|
429
|
+
assert(compatibility.canView, 0x8c3 /* requireSchema invoked with incompatible schema */);
|
|
440
430
|
}
|
|
441
431
|
|
|
442
432
|
const view = new CheckoutFlexTreeView(checkout, schemaPolicy, nodeKeyManager, onDispose);
|