@fluidframework/tree 2.116.1 → 2.118.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 +202 -0
- package/api-report/tree.alpha.api.md +122 -31
- package/api-report/tree.beta.api.md +50 -9
- package/api-report/tree.legacy.beta.api.md +50 -9
- package/dist/codec/codec.d.ts +18 -0
- package/dist/codec/codec.d.ts.map +1 -1
- package/dist/codec/codec.js +18 -0
- package/dist/codec/codec.js.map +1 -1
- package/dist/core/index.d.ts +2 -2
- 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 +39 -2
- package/dist/core/rebase/types.d.ts.map +1 -1
- package/dist/core/rebase/types.js +37 -2
- package/dist/core/rebase/types.js.map +1 -1
- package/dist/core/rebase/utils.d.ts.map +1 -1
- package/dist/core/rebase/utils.js +1 -0
- package/dist/core/rebase/utils.js.map +1 -1
- package/dist/core/revertible.d.ts +62 -6
- package/dist/core/revertible.d.ts.map +1 -1
- package/dist/core/revertible.js.map +1 -1
- package/dist/entrypoints/alpha.d.ts +1 -1
- package/dist/entrypoints/alpha.d.ts.map +1 -1
- package/dist/entrypoints/alpha.js.map +1 -1
- package/dist/entrypoints/beta.d.ts +1 -1
- package/dist/entrypoints/beta.d.ts.map +1 -1
- package/dist/entrypoints/beta.js.map +1 -1
- package/dist/entrypoints/legacy.d.ts +1 -1
- package/dist/entrypoints/legacy.d.ts.map +1 -1
- package/dist/entrypoints/legacy.js.map +1 -1
- package/dist/feature-libraries/index.d.ts +1 -1
- package/dist/feature-libraries/index.js.map +1 -1
- package/dist/feature-libraries/indexing/types.d.ts +1 -1
- package/dist/feature-libraries/indexing/types.js.map +1 -1
- package/dist/feature-libraries/schemaChecker.d.ts +9 -19
- package/dist/feature-libraries/schemaChecker.d.ts.map +1 -1
- package/dist/feature-libraries/schemaChecker.js +130 -46
- package/dist/feature-libraries/schemaChecker.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- 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/history.d.ts +22 -0
- package/dist/shared-tree/history.d.ts.map +1 -0
- package/dist/shared-tree/history.js +66 -0
- package/dist/shared-tree/history.js.map +1 -0
- package/dist/shared-tree/schematizingTreeView.d.ts +24 -9
- package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/dist/shared-tree/schematizingTreeView.js +61 -11
- package/dist/shared-tree/schematizingTreeView.js.map +1 -1
- package/dist/shared-tree/sharedTree.d.ts +3 -2
- package/dist/shared-tree/sharedTree.d.ts.map +1 -1
- package/dist/shared-tree/sharedTree.js +2 -0
- package/dist/shared-tree/sharedTree.js.map +1 -1
- package/dist/shared-tree/tree.js +1 -1
- package/dist/shared-tree/tree.js.map +1 -1
- package/dist/shared-tree/treeAlpha.d.ts +8 -20
- package/dist/shared-tree/treeAlpha.d.ts.map +1 -1
- package/dist/shared-tree/treeAlpha.js +9 -12
- package/dist/shared-tree/treeAlpha.js.map +1 -1
- package/dist/shared-tree/treeCheckout.d.ts +16 -9
- package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
- package/dist/shared-tree/treeCheckout.js +122 -25
- package/dist/shared-tree/treeCheckout.js.map +1 -1
- package/dist/shared-tree/unhydratedTreeContext.d.ts +3 -2
- package/dist/shared-tree/unhydratedTreeContext.d.ts.map +1 -1
- package/dist/shared-tree/unhydratedTreeContext.js +3 -0
- package/dist/shared-tree/unhydratedTreeContext.js.map +1 -1
- package/dist/shared-tree-core/branch.d.ts +16 -2
- package/dist/shared-tree-core/branch.d.ts.map +1 -1
- package/dist/shared-tree-core/branch.js +20 -2
- package/dist/shared-tree-core/branch.js.map +1 -1
- package/dist/shared-tree-core/branchCommitCounter.d.ts +31 -0
- package/dist/shared-tree-core/branchCommitCounter.d.ts.map +1 -0
- package/dist/shared-tree-core/branchCommitCounter.js +79 -0
- package/dist/shared-tree-core/branchCommitCounter.js.map +1 -0
- package/dist/shared-tree-core/customMetadataCodec.d.ts +9 -0
- package/dist/shared-tree-core/customMetadataCodec.d.ts.map +1 -0
- package/dist/shared-tree-core/customMetadataCodec.js +37 -0
- package/dist/shared-tree-core/customMetadataCodec.js.map +1 -0
- package/dist/shared-tree-core/customMetadataFormat.d.ts +18 -0
- package/dist/shared-tree-core/customMetadataFormat.d.ts.map +1 -0
- package/dist/shared-tree-core/customMetadataFormat.js +15 -0
- package/dist/shared-tree-core/customMetadataFormat.js.map +1 -0
- package/dist/shared-tree-core/editManager.d.ts.map +1 -1
- package/dist/shared-tree-core/editManager.js +15 -3
- package/dist/shared-tree-core/editManager.js.map +1 -1
- package/dist/shared-tree-core/editManagerCodecs.d.ts.map +1 -1
- package/dist/shared-tree-core/editManagerCodecs.js +5 -0
- package/dist/shared-tree-core/editManagerCodecs.js.map +1 -1
- package/dist/shared-tree-core/editManagerCodecsCommons.d.ts +1 -1
- package/dist/shared-tree-core/editManagerCodecsCommons.d.ts.map +1 -1
- package/dist/shared-tree-core/editManagerCodecsCommons.js +17 -5
- package/dist/shared-tree-core/editManagerCodecsCommons.js.map +1 -1
- package/dist/shared-tree-core/editManagerCodecsV1toV4.d.ts.map +1 -1
- package/dist/shared-tree-core/editManagerCodecsV1toV4.js +4 -2
- package/dist/shared-tree-core/editManagerCodecsV1toV4.js.map +1 -1
- package/dist/shared-tree-core/editManagerCodecsVSharedBranches.d.ts.map +1 -1
- package/dist/shared-tree-core/editManagerCodecsVSharedBranches.js +2 -2
- package/dist/shared-tree-core/editManagerCodecsVSharedBranches.js.map +1 -1
- package/dist/shared-tree-core/editManagerFormatCommons.d.ts +17 -6
- package/dist/shared-tree-core/editManagerFormatCommons.d.ts.map +1 -1
- package/dist/shared-tree-core/editManagerFormatCommons.js +18 -8
- package/dist/shared-tree-core/editManagerFormatCommons.js.map +1 -1
- package/dist/shared-tree-core/editManagerFormatV1toV4.d.ts +7 -5
- package/dist/shared-tree-core/editManagerFormatV1toV4.d.ts.map +1 -1
- package/dist/shared-tree-core/editManagerFormatV1toV4.js +4 -3
- package/dist/shared-tree-core/editManagerFormatV1toV4.js.map +1 -1
- package/dist/shared-tree-core/editManagerFormatVSharedBranches.d.ts +4 -0
- package/dist/shared-tree-core/editManagerFormatVSharedBranches.d.ts.map +1 -1
- package/dist/shared-tree-core/editManagerFormatVSharedBranches.js +2 -2
- package/dist/shared-tree-core/editManagerFormatVSharedBranches.js.map +1 -1
- package/dist/shared-tree-core/index.d.ts +2 -1
- package/dist/shared-tree-core/index.d.ts.map +1 -1
- package/dist/shared-tree-core/index.js +3 -1
- package/dist/shared-tree-core/index.js.map +1 -1
- package/dist/shared-tree-core/messageCodecV1ToV4.d.ts +2 -2
- package/dist/shared-tree-core/messageCodecV1ToV4.d.ts.map +1 -1
- package/dist/shared-tree-core/messageCodecV1ToV4.js +12 -3
- package/dist/shared-tree-core/messageCodecV1ToV4.js.map +1 -1
- package/dist/shared-tree-core/messageCodecVSharedBranches.d.ts.map +1 -1
- package/dist/shared-tree-core/messageCodecVSharedBranches.js +8 -2
- package/dist/shared-tree-core/messageCodecVSharedBranches.js.map +1 -1
- package/dist/shared-tree-core/messageCodecs.d.ts.map +1 -1
- package/dist/shared-tree-core/messageCodecs.js +5 -0
- package/dist/shared-tree-core/messageCodecs.js.map +1 -1
- package/dist/shared-tree-core/messageFormat.d.ts +1 -0
- package/dist/shared-tree-core/messageFormat.d.ts.map +1 -1
- package/dist/shared-tree-core/messageFormat.js +6 -0
- package/dist/shared-tree-core/messageFormat.js.map +1 -1
- package/dist/shared-tree-core/messageFormatV1ToV4.d.ts +10 -3
- package/dist/shared-tree-core/messageFormatV1ToV4.d.ts.map +1 -1
- package/dist/shared-tree-core/messageFormatV1ToV4.js +10 -2
- package/dist/shared-tree-core/messageFormatV1ToV4.js.map +1 -1
- package/dist/shared-tree-core/messageFormatVSharedBranches.d.ts +7 -0
- package/dist/shared-tree-core/messageFormatVSharedBranches.d.ts.map +1 -1
- package/dist/shared-tree-core/messageFormatVSharedBranches.js +2 -0
- package/dist/shared-tree-core/messageFormatVSharedBranches.js.map +1 -1
- package/dist/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
- package/dist/shared-tree-core/sharedTreeCore.js +4 -2
- package/dist/shared-tree-core/sharedTreeCore.js.map +1 -1
- package/dist/shared-tree-core/transaction.d.ts +9 -0
- package/dist/shared-tree-core/transaction.d.ts.map +1 -1
- package/dist/shared-tree-core/transaction.js +26 -4
- package/dist/shared-tree-core/transaction.js.map +1 -1
- package/dist/simple-tree/api/configuration.d.ts +4 -4
- 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/discrepancies.d.ts +36 -3
- package/dist/simple-tree/api/discrepancies.d.ts.map +1 -1
- package/dist/simple-tree/api/discrepancies.js +40 -14
- package/dist/simple-tree/api/discrepancies.js.map +1 -1
- package/dist/simple-tree/api/index.d.ts +3 -2
- package/dist/simple-tree/api/index.d.ts.map +1 -1
- package/dist/simple-tree/api/index.js +3 -2
- package/dist/simple-tree/api/index.js.map +1 -1
- package/dist/simple-tree/api/schemaCompatibilityTester.d.ts +22 -3
- package/dist/simple-tree/api/schemaCompatibilityTester.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaCompatibilityTester.js +140 -10
- package/dist/simple-tree/api/schemaCompatibilityTester.js.map +1 -1
- package/dist/simple-tree/api/transactionTypes.d.ts +28 -2
- package/dist/simple-tree/api/transactionTypes.d.ts.map +1 -1
- package/dist/simple-tree/api/transactionTypes.js.map +1 -1
- package/dist/simple-tree/api/tree.d.ts +353 -68
- 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/core/toStored.d.ts +7 -0
- package/dist/simple-tree/core/toStored.d.ts.map +1 -1
- package/dist/simple-tree/core/toStored.js.map +1 -1
- package/dist/simple-tree/core/treeNodeValid.d.ts.map +1 -1
- package/dist/simple-tree/core/treeNodeValid.js +2 -2
- package/dist/simple-tree/core/treeNodeValid.js.map +1 -1
- package/dist/simple-tree/index.d.ts +1 -1
- package/dist/simple-tree/index.d.ts.map +1 -1
- package/dist/simple-tree/index.js +4 -3
- package/dist/simple-tree/index.js.map +1 -1
- package/dist/tableSchema.js +10 -10
- package/dist/tableSchema.js.map +1 -1
- package/docs/main/glossary.md +163 -0
- package/lib/codec/codec.d.ts +18 -0
- package/lib/codec/codec.d.ts.map +1 -1
- package/lib/codec/codec.js +18 -0
- package/lib/codec/codec.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 +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 +39 -2
- package/lib/core/rebase/types.d.ts.map +1 -1
- package/lib/core/rebase/types.js +35 -1
- package/lib/core/rebase/types.js.map +1 -1
- package/lib/core/rebase/utils.d.ts.map +1 -1
- package/lib/core/rebase/utils.js +1 -0
- package/lib/core/rebase/utils.js.map +1 -1
- package/lib/core/revertible.d.ts +62 -6
- package/lib/core/revertible.d.ts.map +1 -1
- package/lib/core/revertible.js.map +1 -1
- package/lib/entrypoints/alpha.d.ts +1 -1
- package/lib/entrypoints/alpha.d.ts.map +1 -1
- package/lib/entrypoints/alpha.js.map +1 -1
- package/lib/entrypoints/beta.d.ts +1 -1
- package/lib/entrypoints/beta.d.ts.map +1 -1
- package/lib/entrypoints/beta.js.map +1 -1
- package/lib/entrypoints/legacy.d.ts +1 -1
- package/lib/entrypoints/legacy.d.ts.map +1 -1
- package/lib/entrypoints/legacy.js.map +1 -1
- package/lib/feature-libraries/index.d.ts +1 -1
- package/lib/feature-libraries/index.js.map +1 -1
- package/lib/feature-libraries/indexing/types.d.ts +1 -1
- package/lib/feature-libraries/indexing/types.js.map +1 -1
- package/lib/feature-libraries/schemaChecker.d.ts +9 -19
- package/lib/feature-libraries/schemaChecker.d.ts.map +1 -1
- package/lib/feature-libraries/schemaChecker.js +133 -49
- package/lib/feature-libraries/schemaChecker.js.map +1 -1
- package/lib/index.d.ts +2 -2
- package/lib/index.d.ts.map +1 -1
- 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/history.d.ts +22 -0
- package/lib/shared-tree/history.d.ts.map +1 -0
- package/lib/shared-tree/history.js +62 -0
- package/lib/shared-tree/history.js.map +1 -0
- package/lib/shared-tree/schematizingTreeView.d.ts +24 -9
- package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/lib/shared-tree/schematizingTreeView.js +62 -12
- package/lib/shared-tree/schematizingTreeView.js.map +1 -1
- package/lib/shared-tree/sharedTree.d.ts +3 -2
- package/lib/shared-tree/sharedTree.d.ts.map +1 -1
- package/lib/shared-tree/sharedTree.js +2 -0
- package/lib/shared-tree/sharedTree.js.map +1 -1
- package/lib/shared-tree/tree.js +1 -1
- package/lib/shared-tree/tree.js.map +1 -1
- package/lib/shared-tree/treeAlpha.d.ts +8 -20
- package/lib/shared-tree/treeAlpha.d.ts.map +1 -1
- package/lib/shared-tree/treeAlpha.js +9 -12
- package/lib/shared-tree/treeAlpha.js.map +1 -1
- package/lib/shared-tree/treeCheckout.d.ts +16 -9
- package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
- package/lib/shared-tree/treeCheckout.js +123 -26
- package/lib/shared-tree/treeCheckout.js.map +1 -1
- package/lib/shared-tree/unhydratedTreeContext.d.ts +3 -2
- package/lib/shared-tree/unhydratedTreeContext.d.ts.map +1 -1
- package/lib/shared-tree/unhydratedTreeContext.js +3 -0
- package/lib/shared-tree/unhydratedTreeContext.js.map +1 -1
- package/lib/shared-tree-core/branch.d.ts +16 -2
- package/lib/shared-tree-core/branch.d.ts.map +1 -1
- package/lib/shared-tree-core/branch.js +20 -2
- package/lib/shared-tree-core/branch.js.map +1 -1
- package/lib/shared-tree-core/branchCommitCounter.d.ts +31 -0
- package/lib/shared-tree-core/branchCommitCounter.d.ts.map +1 -0
- package/lib/shared-tree-core/branchCommitCounter.js +75 -0
- package/lib/shared-tree-core/branchCommitCounter.js.map +1 -0
- package/lib/shared-tree-core/customMetadataCodec.d.ts +9 -0
- package/lib/shared-tree-core/customMetadataCodec.d.ts.map +1 -0
- package/lib/shared-tree-core/customMetadataCodec.js +32 -0
- package/lib/shared-tree-core/customMetadataCodec.js.map +1 -0
- package/lib/shared-tree-core/customMetadataFormat.d.ts +18 -0
- package/lib/shared-tree-core/customMetadataFormat.d.ts.map +1 -0
- package/lib/shared-tree-core/customMetadataFormat.js +11 -0
- package/lib/shared-tree-core/customMetadataFormat.js.map +1 -0
- package/lib/shared-tree-core/editManager.d.ts.map +1 -1
- package/lib/shared-tree-core/editManager.js +16 -4
- package/lib/shared-tree-core/editManager.js.map +1 -1
- package/lib/shared-tree-core/editManagerCodecs.d.ts.map +1 -1
- package/lib/shared-tree-core/editManagerCodecs.js +5 -0
- package/lib/shared-tree-core/editManagerCodecs.js.map +1 -1
- package/lib/shared-tree-core/editManagerCodecsCommons.d.ts +1 -1
- package/lib/shared-tree-core/editManagerCodecsCommons.d.ts.map +1 -1
- package/lib/shared-tree-core/editManagerCodecsCommons.js +17 -5
- package/lib/shared-tree-core/editManagerCodecsCommons.js.map +1 -1
- package/lib/shared-tree-core/editManagerCodecsV1toV4.d.ts.map +1 -1
- package/lib/shared-tree-core/editManagerCodecsV1toV4.js +4 -2
- package/lib/shared-tree-core/editManagerCodecsV1toV4.js.map +1 -1
- package/lib/shared-tree-core/editManagerCodecsVSharedBranches.d.ts.map +1 -1
- package/lib/shared-tree-core/editManagerCodecsVSharedBranches.js +2 -2
- package/lib/shared-tree-core/editManagerCodecsVSharedBranches.js.map +1 -1
- package/lib/shared-tree-core/editManagerFormatCommons.d.ts +17 -6
- package/lib/shared-tree-core/editManagerFormatCommons.d.ts.map +1 -1
- package/lib/shared-tree-core/editManagerFormatCommons.js +18 -8
- package/lib/shared-tree-core/editManagerFormatCommons.js.map +1 -1
- package/lib/shared-tree-core/editManagerFormatV1toV4.d.ts +7 -5
- package/lib/shared-tree-core/editManagerFormatV1toV4.d.ts.map +1 -1
- package/lib/shared-tree-core/editManagerFormatV1toV4.js +4 -3
- package/lib/shared-tree-core/editManagerFormatV1toV4.js.map +1 -1
- package/lib/shared-tree-core/editManagerFormatVSharedBranches.d.ts +4 -0
- package/lib/shared-tree-core/editManagerFormatVSharedBranches.d.ts.map +1 -1
- package/lib/shared-tree-core/editManagerFormatVSharedBranches.js +2 -2
- package/lib/shared-tree-core/editManagerFormatVSharedBranches.js.map +1 -1
- package/lib/shared-tree-core/index.d.ts +2 -1
- package/lib/shared-tree-core/index.d.ts.map +1 -1
- package/lib/shared-tree-core/index.js +1 -0
- package/lib/shared-tree-core/index.js.map +1 -1
- package/lib/shared-tree-core/messageCodecV1ToV4.d.ts +2 -2
- package/lib/shared-tree-core/messageCodecV1ToV4.d.ts.map +1 -1
- package/lib/shared-tree-core/messageCodecV1ToV4.js +12 -3
- package/lib/shared-tree-core/messageCodecV1ToV4.js.map +1 -1
- package/lib/shared-tree-core/messageCodecVSharedBranches.d.ts.map +1 -1
- package/lib/shared-tree-core/messageCodecVSharedBranches.js +8 -2
- package/lib/shared-tree-core/messageCodecVSharedBranches.js.map +1 -1
- package/lib/shared-tree-core/messageCodecs.d.ts.map +1 -1
- package/lib/shared-tree-core/messageCodecs.js +5 -0
- package/lib/shared-tree-core/messageCodecs.js.map +1 -1
- package/lib/shared-tree-core/messageFormat.d.ts +1 -0
- package/lib/shared-tree-core/messageFormat.d.ts.map +1 -1
- package/lib/shared-tree-core/messageFormat.js +6 -0
- package/lib/shared-tree-core/messageFormat.js.map +1 -1
- package/lib/shared-tree-core/messageFormatV1ToV4.d.ts +10 -3
- package/lib/shared-tree-core/messageFormatV1ToV4.d.ts.map +1 -1
- package/lib/shared-tree-core/messageFormatV1ToV4.js +10 -2
- package/lib/shared-tree-core/messageFormatV1ToV4.js.map +1 -1
- package/lib/shared-tree-core/messageFormatVSharedBranches.d.ts +7 -0
- package/lib/shared-tree-core/messageFormatVSharedBranches.d.ts.map +1 -1
- package/lib/shared-tree-core/messageFormatVSharedBranches.js +2 -0
- package/lib/shared-tree-core/messageFormatVSharedBranches.js.map +1 -1
- package/lib/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
- package/lib/shared-tree-core/sharedTreeCore.js +5 -3
- package/lib/shared-tree-core/sharedTreeCore.js.map +1 -1
- package/lib/shared-tree-core/transaction.d.ts +9 -0
- package/lib/shared-tree-core/transaction.d.ts.map +1 -1
- package/lib/shared-tree-core/transaction.js +27 -5
- package/lib/shared-tree-core/transaction.js.map +1 -1
- package/lib/simple-tree/api/configuration.d.ts +4 -4
- 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/discrepancies.d.ts +36 -3
- package/lib/simple-tree/api/discrepancies.d.ts.map +1 -1
- package/lib/simple-tree/api/discrepancies.js +40 -14
- package/lib/simple-tree/api/discrepancies.js.map +1 -1
- package/lib/simple-tree/api/index.d.ts +3 -2
- package/lib/simple-tree/api/index.d.ts.map +1 -1
- package/lib/simple-tree/api/index.js +1 -1
- package/lib/simple-tree/api/index.js.map +1 -1
- package/lib/simple-tree/api/schemaCompatibilityTester.d.ts +22 -3
- package/lib/simple-tree/api/schemaCompatibilityTester.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaCompatibilityTester.js +136 -7
- package/lib/simple-tree/api/schemaCompatibilityTester.js.map +1 -1
- package/lib/simple-tree/api/transactionTypes.d.ts +28 -2
- package/lib/simple-tree/api/transactionTypes.d.ts.map +1 -1
- package/lib/simple-tree/api/transactionTypes.js.map +1 -1
- package/lib/simple-tree/api/tree.d.ts +353 -68
- 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/core/toStored.d.ts +7 -0
- package/lib/simple-tree/core/toStored.d.ts.map +1 -1
- package/lib/simple-tree/core/toStored.js.map +1 -1
- package/lib/simple-tree/core/treeNodeValid.d.ts.map +1 -1
- package/lib/simple-tree/core/treeNodeValid.js +3 -3
- package/lib/simple-tree/core/treeNodeValid.js.map +1 -1
- package/lib/simple-tree/index.d.ts +1 -1
- package/lib/simple-tree/index.d.ts.map +1 -1
- package/lib/simple-tree/index.js +1 -1
- package/lib/simple-tree/index.js.map +1 -1
- package/lib/tableSchema.js +10 -10
- package/lib/tableSchema.js.map +1 -1
- package/package.json +22 -22
- package/src/codec/codec.ts +19 -0
- package/src/core/index.ts +4 -0
- package/src/core/rebase/index.ts +2 -0
- package/src/core/rebase/types.ts +72 -2
- package/src/core/rebase/utils.ts +1 -0
- package/src/core/revertible.ts +67 -6
- package/src/entrypoints/alpha.ts +11 -0
- package/src/entrypoints/beta.ts +3 -0
- package/src/entrypoints/legacy.ts +3 -0
- package/src/feature-libraries/index.ts +1 -1
- package/src/feature-libraries/indexing/types.ts +1 -1
- package/src/feature-libraries/schemaChecker.ts +198 -82
- package/src/index.ts +11 -0
- package/src/packageVersion.ts +1 -1
- package/src/shared-tree/history.ts +99 -0
- package/src/shared-tree/schematizingTreeView.ts +100 -29
- package/src/shared-tree/sharedTree.ts +5 -2
- package/src/shared-tree/tree.ts +1 -1
- package/src/shared-tree/treeAlpha.ts +17 -35
- package/src/shared-tree/treeCheckout.ts +170 -31
- package/src/shared-tree/unhydratedTreeContext.ts +6 -2
- package/src/shared-tree-core/branch.ts +34 -2
- package/src/shared-tree-core/branchCommitCounter.ts +103 -0
- package/src/shared-tree-core/customMetadataCodec.ts +42 -0
- package/src/shared-tree-core/customMetadataFormat.ts +39 -0
- package/src/shared-tree-core/editManager.ts +22 -3
- package/src/shared-tree-core/editManagerCodecs.ts +12 -0
- package/src/shared-tree-core/editManagerCodecsCommons.ts +41 -15
- package/src/shared-tree-core/editManagerCodecsV1toV4.ts +7 -1
- package/src/shared-tree-core/editManagerCodecsVSharedBranches.ts +2 -0
- package/src/shared-tree-core/editManagerFormatCommons.ts +46 -12
- package/src/shared-tree-core/editManagerFormatV1toV4.ts +13 -5
- package/src/shared-tree-core/editManagerFormatVSharedBranches.ts +2 -2
- package/src/shared-tree-core/index.ts +3 -0
- package/src/shared-tree-core/messageCodecV1ToV4.ts +18 -5
- package/src/shared-tree-core/messageCodecVSharedBranches.ts +9 -2
- package/src/shared-tree-core/messageCodecs.ts +12 -0
- package/src/shared-tree-core/messageFormat.ts +6 -0
- package/src/shared-tree-core/messageFormatV1ToV4.ts +21 -3
- package/src/shared-tree-core/messageFormatVSharedBranches.ts +8 -0
- package/src/shared-tree-core/sharedTreeCore.ts +5 -2
- package/src/shared-tree-core/transaction.ts +56 -4
- package/src/simple-tree/api/configuration.ts +4 -4
- package/src/simple-tree/api/discrepancies.ts +100 -5
- package/src/simple-tree/api/index.ts +12 -1
- package/src/simple-tree/api/schemaCompatibilityTester.ts +185 -11
- package/src/simple-tree/api/transactionTypes.ts +29 -2
- package/src/simple-tree/api/tree.ts +384 -68
- package/src/simple-tree/core/toStored.ts +8 -0
- package/src/simple-tree/core/treeNodeValid.ts +3 -1
- package/src/simple-tree/index.ts +9 -0
- package/src/tableSchema.ts +9 -9
- package/docs/main/runtime-schema-upgrade.md +0 -208
|
@@ -3,14 +3,119 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import
|
|
6
|
+
import { unreachableCase } from "@fluidframework/core-utils/internal";
|
|
7
|
+
|
|
8
|
+
import {
|
|
9
|
+
MapNodeStoredSchema,
|
|
10
|
+
ObjectNodeStoredSchema,
|
|
11
|
+
type TreeStoredSchema,
|
|
12
|
+
ValueSchema,
|
|
13
|
+
} from "../../core/index.js";
|
|
7
14
|
import type { SchemaUpgrade, StagedSchemaUpgradePolicy } from "../core/index.js";
|
|
15
|
+
import { NodeKind } from "../core/index.js";
|
|
8
16
|
import { allowsRepoSuperset, defaultSchemaPolicy } from "../../feature-libraries/index.js";
|
|
9
|
-
import { toUpgradeSchema } from "../toStoredSchema.js";
|
|
17
|
+
import { resolveStoredSchemaGenerationOptions, toUpgradeSchema } from "../toStoredSchema.js";
|
|
10
18
|
import type { TreeSchema } from "../treeSchema.js";
|
|
11
19
|
|
|
12
|
-
import {
|
|
13
|
-
|
|
20
|
+
import {
|
|
21
|
+
getDiscrepanciesInAllowedContent,
|
|
22
|
+
type Discrepancy,
|
|
23
|
+
type UpgradeLocationCollector,
|
|
24
|
+
} from "./discrepancies.js";
|
|
25
|
+
import type { SchemaCompatibilityStatusBeta, SchemaDiscrepancy } from "./tree.js";
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Describes the discrepancies that prevent a view schema from viewing a stored schema as a
|
|
29
|
+
* readonly array.
|
|
30
|
+
*/
|
|
31
|
+
export function getSchemaIncompatibilityDetails(
|
|
32
|
+
viewSchema: TreeSchema,
|
|
33
|
+
stored: TreeStoredSchema,
|
|
34
|
+
): readonly SchemaDiscrepancy[] | undefined {
|
|
35
|
+
const discrepancies = [...getDiscrepanciesInAllowedContent(viewSchema, stored)];
|
|
36
|
+
if (discrepancies.length === 0) {
|
|
37
|
+
return undefined;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
return discrepancies.map(formatSchemaDiscrepancy);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
function formatSchemaDiscrepancy(value: Discrepancy): SchemaDiscrepancy {
|
|
44
|
+
switch (value.mismatch) {
|
|
45
|
+
case "allowedTypes": {
|
|
46
|
+
return {
|
|
47
|
+
mismatch: value.mismatch,
|
|
48
|
+
location:
|
|
49
|
+
value.identifier === undefined
|
|
50
|
+
? "root"
|
|
51
|
+
: {
|
|
52
|
+
nodeType: value.identifier,
|
|
53
|
+
fieldKey: value.fieldKey,
|
|
54
|
+
},
|
|
55
|
+
view: value.view.map(({ type }) => type.identifier).sort(),
|
|
56
|
+
...(value.stagedView === undefined
|
|
57
|
+
? {}
|
|
58
|
+
: {
|
|
59
|
+
stagedView: value.stagedView.map(({ type }) => type.identifier).sort(),
|
|
60
|
+
}),
|
|
61
|
+
stored: [...value.stored].sort(),
|
|
62
|
+
...(value.viewIsStagedOptional === true ? { viewIsStagedOptional: true } : {}),
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
case "fieldKind": {
|
|
66
|
+
return {
|
|
67
|
+
mismatch: value.mismatch,
|
|
68
|
+
location:
|
|
69
|
+
value.identifier === undefined
|
|
70
|
+
? "root"
|
|
71
|
+
: {
|
|
72
|
+
nodeType: value.identifier,
|
|
73
|
+
fieldKey: value.fieldKey,
|
|
74
|
+
},
|
|
75
|
+
view: value.view,
|
|
76
|
+
stored: value.stored,
|
|
77
|
+
...(value.viewIsStagedOptional === true ? { viewIsStagedOptional: true } : {}),
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
case "valueSchema": {
|
|
81
|
+
return {
|
|
82
|
+
mismatch: value.mismatch,
|
|
83
|
+
nodeType: value.identifier,
|
|
84
|
+
view: value.view === undefined ? undefined : ValueSchema[value.view],
|
|
85
|
+
stored: value.stored === undefined ? undefined : ValueSchema[value.stored],
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
case "nodeKind": {
|
|
89
|
+
const storedNodeKind =
|
|
90
|
+
value.stored === ObjectNodeStoredSchema
|
|
91
|
+
? "Object"
|
|
92
|
+
: value.stored === MapNodeStoredSchema
|
|
93
|
+
? "Map"
|
|
94
|
+
: "Leaf";
|
|
95
|
+
return {
|
|
96
|
+
mismatch: value.mismatch,
|
|
97
|
+
nodeType: value.identifier,
|
|
98
|
+
view: NodeKind[value.view],
|
|
99
|
+
stored: storedNodeKind,
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
default: {
|
|
103
|
+
return unreachableCase(value);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* The enablement status of a staged schema upgrade in a document's stored schema.
|
|
110
|
+
*
|
|
111
|
+
* @remarks
|
|
112
|
+
* - `"disabled"` — no locations guarded by the upgrade are enabled in stored schema.
|
|
113
|
+
* - `"partial"` — at least one location is enabled but not all of them.
|
|
114
|
+
* - `"enabled"` — all locations guarded by the upgrade are enabled in stored schema.
|
|
115
|
+
*
|
|
116
|
+
* @alpha
|
|
117
|
+
*/
|
|
118
|
+
export type StagedUpgradeStatus = "disabled" | "partial" | "enabled";
|
|
14
119
|
|
|
15
120
|
/**
|
|
16
121
|
* Determines the compatibility of a stored document (based on its stored schema) with a viewer (based on its view schema).
|
|
@@ -24,27 +129,59 @@ import type { SchemaCompatibilityStatus } from "./tree.js";
|
|
|
24
129
|
* @param viewSchema - Schema for the view
|
|
25
130
|
* @param stored - The stored schema to check compatibility against
|
|
26
131
|
* @param stagedSchemaUpgrades - Staged schema upgrades enabled for this view, or explicit stored-schema generation options
|
|
132
|
+
*
|
|
27
133
|
*/
|
|
28
134
|
export function checkSchemaCompatibility(
|
|
29
135
|
viewSchema: TreeSchema,
|
|
30
136
|
stored: TreeStoredSchema,
|
|
31
137
|
stagedSchemaUpgrades?: Iterable<SchemaUpgrade> | StagedSchemaUpgradePolicy,
|
|
32
|
-
): Omit<
|
|
138
|
+
): Omit<SchemaCompatibilityStatusBeta, "canInitialize"> & {
|
|
139
|
+
enabledUpgrades: ReadonlyMap<SchemaUpgrade, StagedUpgradeStatus>;
|
|
140
|
+
} {
|
|
33
141
|
// The public API surface assumes defaultSchemaPolicy
|
|
34
142
|
const policy = defaultSchemaPolicy;
|
|
143
|
+
const configuredPolicy = resolveStoredSchemaGenerationOptions(stagedSchemaUpgrades);
|
|
144
|
+
const includeAlreadyEnabledUpgrades = configuredPolicy.includeAlreadyEnabledUpgrades ?? true;
|
|
145
|
+
|
|
146
|
+
// Collect upgrade locations during the discrepancy walk (single pass).
|
|
147
|
+
const totalLocations = new Map<SchemaUpgrade, number>();
|
|
148
|
+
const enabledLocations = new Map<SchemaUpgrade, number>();
|
|
149
|
+
const upgradeCollector: UpgradeLocationCollector = {
|
|
150
|
+
allowedType(upgrade, isEnabled) {
|
|
151
|
+
totalLocations.set(upgrade, (totalLocations.get(upgrade) ?? 0) + 1);
|
|
152
|
+
if (isEnabled) {
|
|
153
|
+
enabledLocations.set(upgrade, (enabledLocations.get(upgrade) ?? 0) + 1);
|
|
154
|
+
}
|
|
155
|
+
},
|
|
156
|
+
optionalField(upgrade, isEnabled) {
|
|
157
|
+
totalLocations.set(upgrade, (totalLocations.get(upgrade) ?? 0) + 1);
|
|
158
|
+
if (isEnabled) {
|
|
159
|
+
enabledLocations.set(upgrade, (enabledLocations.get(upgrade) ?? 0) + 1);
|
|
160
|
+
}
|
|
161
|
+
},
|
|
162
|
+
};
|
|
35
163
|
|
|
36
164
|
// View schema allows a subset of documents that stored schema does, and the discrepancies are allowed by policy
|
|
37
165
|
// determined by the view schema (i.e. objects with extra optional fields in the stored schema have opted into allowing this.
|
|
38
166
|
// In the future, this would also include things like:
|
|
39
167
|
// - fields with more allowed types in the stored schema than in the view schema have out-of-schema "unknown content" adapters
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
168
|
+
// Complete the full walk even after finding an incompatibility so discrepancy details and
|
|
169
|
+
// staged-upgrade status contain all available information for debugging.
|
|
170
|
+
const discrepancies: SchemaDiscrepancy[] = [];
|
|
171
|
+
for (const discrepancy of getDiscrepanciesInAllowedContent(
|
|
172
|
+
viewSchema,
|
|
173
|
+
stored,
|
|
174
|
+
upgradeCollector,
|
|
175
|
+
)) {
|
|
176
|
+
discrepancies.push(formatSchemaDiscrepancy(discrepancy));
|
|
45
177
|
}
|
|
178
|
+
const canView = discrepancies.length === 0;
|
|
46
179
|
|
|
47
|
-
const
|
|
180
|
+
const enabledUpgrades = computeUpgradeStatuses(totalLocations, enabledLocations);
|
|
181
|
+
const upgradePolicy = includeAlreadyEnabledUpgrades
|
|
182
|
+
? includeEnabledUpgrades(configuredPolicy, enabledUpgrades)
|
|
183
|
+
: configuredPolicy;
|
|
184
|
+
const wouldUpgradeTo = toUpgradeSchema(viewSchema.root, upgradePolicy);
|
|
48
185
|
|
|
49
186
|
const canUpgrade = allowsRepoSuperset(policy, stored, wouldUpgradeTo);
|
|
50
187
|
|
|
@@ -57,5 +194,42 @@ export function checkSchemaCompatibility(
|
|
|
57
194
|
canView,
|
|
58
195
|
canUpgrade,
|
|
59
196
|
isEquivalent,
|
|
197
|
+
discrepancies: canView ? undefined : discrepancies,
|
|
198
|
+
enabledUpgrades,
|
|
60
199
|
};
|
|
61
200
|
}
|
|
201
|
+
|
|
202
|
+
function includeEnabledUpgrades(
|
|
203
|
+
configuredPolicy: StagedSchemaUpgradePolicy,
|
|
204
|
+
enabledUpgrades: ReadonlyMap<SchemaUpgrade, StagedUpgradeStatus>,
|
|
205
|
+
): StagedSchemaUpgradePolicy {
|
|
206
|
+
if (enabledUpgrades.size === 0) {
|
|
207
|
+
return configuredPolicy;
|
|
208
|
+
}
|
|
209
|
+
return {
|
|
210
|
+
includeStaged: (upgrade) =>
|
|
211
|
+
configuredPolicy.includeStaged(upgrade) || enabledUpgrades.has(upgrade),
|
|
212
|
+
includeStagedOptional: (upgrade) =>
|
|
213
|
+
configuredPolicy.includeStagedOptional(upgrade) || enabledUpgrades.has(upgrade),
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
/**
|
|
218
|
+
* Computes the {@link StagedUpgradeStatus} for each upgrade token from total and enabled location counts.
|
|
219
|
+
* Only tokens with at least one enabled location are included in the returned map.
|
|
220
|
+
*/
|
|
221
|
+
function computeUpgradeStatuses(
|
|
222
|
+
totalLocations: ReadonlyMap<SchemaUpgrade, number>,
|
|
223
|
+
enabledLocations: ReadonlyMap<SchemaUpgrade, number>,
|
|
224
|
+
): ReadonlyMap<SchemaUpgrade, StagedUpgradeStatus> {
|
|
225
|
+
const result = new Map<SchemaUpgrade, StagedUpgradeStatus>();
|
|
226
|
+
for (const [upgrade, total] of totalLocations) {
|
|
227
|
+
const enabled = enabledLocations.get(upgrade) ?? 0;
|
|
228
|
+
if (enabled > 0 && enabled < total) {
|
|
229
|
+
result.set(upgrade, "partial");
|
|
230
|
+
} else if (enabled >= total && enabled > 0) {
|
|
231
|
+
result.set(upgrade, "enabled");
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
return result;
|
|
235
|
+
}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
import type { ErasedType } from "@fluidframework/core-interfaces";
|
|
7
7
|
|
|
8
8
|
import type { TreeNode } from "../core/index.js";
|
|
9
|
+
import type { JsonCompatibleReadOnlyObject } from "../../util/index.js";
|
|
9
10
|
|
|
10
11
|
/**
|
|
11
12
|
* A special object that signifies when a SharedTree {@link RunTransaction | transaction} should "roll back".
|
|
@@ -103,7 +104,7 @@ export type TransactionCallbackStatusAlpha<TSuccessValue, TFailureValue> =
|
|
|
103
104
|
};
|
|
104
105
|
|
|
105
106
|
/**
|
|
106
|
-
* The result of a {@link
|
|
107
|
+
* The result of a {@link UntypedTreeViewAlpha.(runTransaction:2) | transaction} that doesn't return a value.
|
|
107
108
|
* @input
|
|
108
109
|
* @alpha
|
|
109
110
|
*/
|
|
@@ -181,7 +182,7 @@ export interface RunTransactionParamsBeta {
|
|
|
181
182
|
/**
|
|
182
183
|
* A label for this transaction that allows it to be correlated with later edits (e.g. for controlling undo/redo grouping).
|
|
183
184
|
* @remarks
|
|
184
|
-
* If this transaction is applied to
|
|
185
|
+
* If this transaction is applied to an {@link UntypedTreeViewAlpha | untyped view}, the label will be available in the {@link LocalChangeMetadata.label | metadata} of the {@link TreeBranchEvents.changed | `changed`} event.
|
|
185
186
|
*
|
|
186
187
|
* If there is a nested transaction, only the outermost transaction label will be used.
|
|
187
188
|
*/
|
|
@@ -218,4 +219,30 @@ export interface RunTransactionParamsAlpha extends RunTransactionParamsBeta {
|
|
|
218
219
|
* reserving the behavior; a real post-processor will be provided in a future change.
|
|
219
220
|
*/
|
|
220
221
|
readonly postProcessor?: TransactionPostProcessor;
|
|
222
|
+
|
|
223
|
+
/**
|
|
224
|
+
* Arbitrary, application-defined metadata to persist alongside the commit that this transaction produces.
|
|
225
|
+
* @remarks
|
|
226
|
+
* The metadata is replicated to all collaborating clients and persisted in the document, and is readable
|
|
227
|
+
* via {@link TreeBranchCommitMetadata.custom} while walking the branch's
|
|
228
|
+
* {@link UntypedTreeViewAlpha.branchHistory | history}. It shares the lifetime of the commit it is attached
|
|
229
|
+
* to: once that commit is trimmed from the trunk, the metadata goes with it. If the transaction produces no
|
|
230
|
+
* commit — because its body made no changes, or because it was rolled back — the metadata is discarded.
|
|
231
|
+
*
|
|
232
|
+
* Nested transactions all contribute to the single commit they produce, and their metadata is available
|
|
233
|
+
* both flattened via {@link TreeBranchCommitMetadata.custom} and structurally via
|
|
234
|
+
* {@link TreeBranchCommitMetadata.customTree}.
|
|
235
|
+
*
|
|
236
|
+
* To attach metadata to the commit produced by
|
|
237
|
+
* {@link RevertibleAlpha.(revert:3) | reverting}, use {@link RevertOptionsAlpha.customMetadata} instead.
|
|
238
|
+
*
|
|
239
|
+
* The value is snapshotted when the transaction starts and normalized as `JSON.stringify` would. An error is
|
|
240
|
+
* thrown if it cannot be represented as a JSON object at all, such as when it contains a cycle or a
|
|
241
|
+
* `bigint`. Because it is persisted, it should be kept small; it is also bounded by the runtime's maximum
|
|
242
|
+
* op size.
|
|
243
|
+
*
|
|
244
|
+
* Metadata is only written to the document when `minVersionForCollab` is set to `"2.117.0"` or later.
|
|
245
|
+
* Otherwise it is retained in memory for the local session but not persisted or replicated.
|
|
246
|
+
*/
|
|
247
|
+
readonly customMetadata?: JsonCompatibleReadOnlyObject;
|
|
221
248
|
}
|