@fluid-experimental/tree 2.0.0-rc.1.0.3 → 2.0.0-rc.2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{.eslintrc.js → .eslintrc.cjs} +1 -1
- package/{.mocharc.js → .mocharc.cjs} +1 -1
- package/.vscode/settings.json +1 -1
- package/CHANGELOG.md +4 -0
- package/api-report/experimental-tree.api.md +4 -15
- package/dist/ChangeCompression.d.ts +5 -5
- package/dist/ChangeCompression.d.ts.map +1 -1
- package/dist/ChangeCompression.js +24 -24
- package/dist/ChangeCompression.js.map +1 -1
- package/dist/ChangeTypes.d.ts +3 -3
- package/dist/ChangeTypes.d.ts.map +1 -1
- package/dist/ChangeTypes.js +9 -9
- package/dist/ChangeTypes.js.map +1 -1
- package/dist/Checkout.d.ts +7 -7
- package/dist/Checkout.d.ts.map +1 -1
- package/dist/Checkout.js +27 -27
- package/dist/Checkout.js.map +1 -1
- package/dist/Common.d.ts +2 -2
- package/dist/Common.d.ts.map +1 -1
- package/dist/Common.js.map +1 -1
- package/dist/EagerCheckout.d.ts +3 -3
- package/dist/EagerCheckout.d.ts.map +1 -1
- package/dist/EagerCheckout.js +2 -2
- package/dist/EagerCheckout.js.map +1 -1
- package/dist/EditLog.d.ts +4 -6
- package/dist/EditLog.d.ts.map +1 -1
- package/dist/EditLog.js +9 -9
- package/dist/EditLog.js.map +1 -1
- package/dist/EditUtilities.d.ts +6 -6
- package/dist/EditUtilities.d.ts.map +1 -1
- package/dist/EditUtilities.js +28 -28
- package/dist/EditUtilities.js.map +1 -1
- package/dist/Forest.d.ts +2 -2
- package/dist/Forest.d.ts.map +1 -1
- package/dist/Forest.js +13 -13
- package/dist/Forest.js.map +1 -1
- package/dist/HistoryEditFactory.d.ts +3 -3
- package/dist/HistoryEditFactory.d.ts.map +1 -1
- package/dist/HistoryEditFactory.js +36 -36
- package/dist/HistoryEditFactory.js.map +1 -1
- package/dist/IdConversion.d.ts +3 -3
- package/dist/IdConversion.d.ts.map +1 -1
- package/dist/IdConversion.js +23 -23
- package/dist/IdConversion.js.map +1 -1
- package/dist/InitialTree.d.ts +1 -1
- package/dist/InitialTree.d.ts.map +1 -1
- package/dist/InitialTree.js +2 -2
- package/dist/InitialTree.js.map +1 -1
- package/dist/LazyCheckout.d.ts +5 -5
- package/dist/LazyCheckout.d.ts.map +1 -1
- package/dist/LazyCheckout.js +2 -2
- package/dist/LazyCheckout.js.map +1 -1
- package/dist/LogViewer.d.ts +7 -7
- package/dist/LogViewer.d.ts.map +1 -1
- package/dist/LogViewer.js +25 -25
- package/dist/LogViewer.js.map +1 -1
- package/dist/MergeHealth.d.ts +1 -1
- package/dist/MergeHealth.d.ts.map +1 -1
- package/dist/MergeHealth.js +32 -32
- package/dist/MergeHealth.js.map +1 -1
- package/dist/NodeIdUtilities.d.ts +3 -3
- package/dist/NodeIdUtilities.d.ts.map +1 -1
- package/dist/NodeIdUtilities.js +4 -4
- package/dist/NodeIdUtilities.js.map +1 -1
- package/dist/PayloadUtilities.d.ts +1 -1
- package/dist/PayloadUtilities.d.ts.map +1 -1
- package/dist/PayloadUtilities.js.map +1 -1
- package/dist/ReconciliationPath.d.ts +3 -3
- package/dist/ReconciliationPath.d.ts.map +1 -1
- package/dist/ReconciliationPath.js.map +1 -1
- package/dist/RevisionValueCache.js +5 -5
- package/dist/RevisionValueCache.js.map +1 -1
- package/dist/RevisionView.d.ts +5 -5
- package/dist/RevisionView.d.ts.map +1 -1
- package/dist/RevisionView.js +11 -11
- package/dist/RevisionView.js.map +1 -1
- package/dist/SerializationUtilities.d.ts +4 -4
- package/dist/SerializationUtilities.d.ts.map +1 -1
- package/dist/SerializationUtilities.js +5 -5
- package/dist/SerializationUtilities.js.map +1 -1
- package/dist/SharedTree.d.ts +15 -18
- package/dist/SharedTree.d.ts.map +1 -1
- package/dist/SharedTree.js +154 -166
- package/dist/SharedTree.js.map +1 -1
- package/dist/SharedTreeEncoder.d.ts +8 -8
- package/dist/SharedTreeEncoder.d.ts.map +1 -1
- package/dist/SharedTreeEncoder.js +67 -67
- package/dist/SharedTreeEncoder.js.map +1 -1
- package/dist/StringInterner.d.ts +1 -1
- package/dist/StringInterner.d.ts.map +1 -1
- package/dist/StringInterner.js +2 -2
- package/dist/StringInterner.js.map +1 -1
- package/dist/Summary.d.ts +4 -4
- package/dist/Summary.d.ts.map +1 -1
- package/dist/Summary.js +2 -2
- package/dist/Summary.js.map +1 -1
- package/dist/SummaryBackCompatibility.d.ts +3 -3
- package/dist/SummaryBackCompatibility.d.ts.map +1 -1
- package/dist/SummaryBackCompatibility.js +13 -13
- package/dist/SummaryBackCompatibility.js.map +1 -1
- package/dist/SummaryTestUtilities.d.ts +2 -2
- package/dist/SummaryTestUtilities.d.ts.map +1 -1
- package/dist/SummaryTestUtilities.js.map +1 -1
- package/dist/Transaction.d.ts +4 -4
- package/dist/Transaction.d.ts.map +1 -1
- package/dist/Transaction.js +10 -10
- package/dist/Transaction.js.map +1 -1
- package/dist/TransactionInternal.d.ts +7 -7
- package/dist/TransactionInternal.d.ts.map +1 -1
- package/dist/TransactionInternal.js +87 -87
- package/dist/TransactionInternal.js.map +1 -1
- package/dist/TreeCompressor.d.ts +4 -4
- package/dist/TreeCompressor.d.ts.map +1 -1
- package/dist/TreeCompressor.js +6 -6
- package/dist/TreeCompressor.js.map +1 -1
- package/dist/TreeNodeHandle.d.ts +3 -3
- package/dist/TreeNodeHandle.d.ts.map +1 -1
- package/dist/TreeNodeHandle.js +5 -5
- package/dist/TreeNodeHandle.js.map +1 -1
- package/dist/TreeView.d.ts +3 -3
- package/dist/TreeView.d.ts.map +1 -1
- package/dist/TreeView.js +10 -10
- package/dist/TreeView.js.map +1 -1
- package/dist/TreeViewUtilities.d.ts +2 -2
- package/dist/TreeViewUtilities.d.ts.map +1 -1
- package/dist/TreeViewUtilities.js +3 -3
- package/dist/TreeViewUtilities.js.map +1 -1
- package/dist/UndoRedoHandler.d.ts +2 -2
- package/dist/UndoRedoHandler.d.ts.map +1 -1
- package/dist/UndoRedoHandler.js +5 -5
- package/dist/UndoRedoHandler.js.map +1 -1
- package/dist/UuidUtilities.d.ts +1 -1
- package/dist/UuidUtilities.d.ts.map +1 -1
- package/dist/UuidUtilities.js +3 -3
- package/dist/UuidUtilities.js.map +1 -1
- package/dist/id-compressor/AppendOnlySortedMap.js +4 -4
- package/dist/id-compressor/AppendOnlySortedMap.js.map +1 -1
- package/dist/id-compressor/IdCompressor.d.ts +2 -2
- package/dist/id-compressor/IdCompressor.d.ts.map +1 -1
- package/dist/id-compressor/IdCompressor.js +78 -78
- package/dist/id-compressor/IdCompressor.js.map +1 -1
- package/dist/id-compressor/IdRange.d.ts +1 -1
- package/dist/id-compressor/IdRange.d.ts.map +1 -1
- package/dist/id-compressor/IdRange.js.map +1 -1
- package/dist/id-compressor/NumericUuid.d.ts +1 -1
- package/dist/id-compressor/NumericUuid.d.ts.map +1 -1
- package/dist/id-compressor/NumericUuid.js +6 -6
- package/dist/id-compressor/NumericUuid.js.map +1 -1
- package/dist/id-compressor/SessionIdNormalizer.d.ts +2 -2
- package/dist/id-compressor/SessionIdNormalizer.d.ts.map +1 -1
- package/dist/id-compressor/SessionIdNormalizer.js +14 -14
- package/dist/id-compressor/SessionIdNormalizer.js.map +1 -1
- package/dist/id-compressor/index.d.ts +4 -4
- package/dist/id-compressor/index.d.ts.map +1 -1
- package/dist/id-compressor/index.js +11 -11
- package/dist/id-compressor/index.js.map +1 -1
- package/dist/id-compressor/persisted-types/0.0.1.d.ts +1 -1
- package/dist/id-compressor/persisted-types/0.0.1.d.ts.map +1 -1
- package/dist/id-compressor/persisted-types/0.0.1.js.map +1 -1
- package/dist/id-compressor/persisted-types/index.d.ts +1 -1
- package/dist/id-compressor/persisted-types/index.d.ts.map +1 -1
- package/dist/id-compressor/persisted-types/index.js.map +1 -1
- package/dist/index.d.ts +29 -29
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +73 -73
- package/dist/index.js.map +1 -1
- package/dist/migration-shim/migrationDeltaHandler.d.ts +1 -1
- package/dist/migration-shim/migrationDeltaHandler.d.ts.map +1 -1
- package/dist/migration-shim/migrationDeltaHandler.js +5 -8
- package/dist/migration-shim/migrationDeltaHandler.js.map +1 -1
- package/dist/migration-shim/migrationShim.d.ts +1 -1
- package/dist/migration-shim/migrationShim.d.ts.map +1 -1
- package/dist/migration-shim/migrationShim.js +1 -1
- package/dist/migration-shim/migrationShim.js.map +1 -1
- package/dist/migration-shim/migrationShimFactory.d.ts +1 -1
- package/dist/migration-shim/migrationShimFactory.d.ts.map +1 -1
- package/dist/migration-shim/migrationShimFactory.js.map +1 -1
- package/dist/migration-shim/sharedTreeDeltaHandler.d.ts +1 -1
- package/dist/migration-shim/sharedTreeDeltaHandler.d.ts.map +1 -1
- package/dist/migration-shim/sharedTreeDeltaHandler.js +2 -5
- package/dist/migration-shim/sharedTreeDeltaHandler.js.map +1 -1
- package/dist/migration-shim/types.d.ts +1 -1
- package/dist/migration-shim/types.d.ts.map +1 -1
- package/dist/migration-shim/types.js.map +1 -1
- package/dist/package.json +3 -0
- package/dist/persisted-types/0.0.2.d.ts +1 -1
- package/dist/persisted-types/0.0.2.d.ts.map +1 -1
- package/dist/persisted-types/0.0.2.js.map +1 -1
- package/dist/persisted-types/0.1.1.d.ts +4 -4
- package/dist/persisted-types/0.1.1.d.ts.map +1 -1
- package/dist/persisted-types/0.1.1.js +13 -13
- package/dist/persisted-types/0.1.1.js.map +1 -1
- package/dist/persisted-types/index.d.ts +2 -2
- package/dist/persisted-types/index.d.ts.map +1 -1
- package/dist/persisted-types/index.js +13 -13
- package/dist/persisted-types/index.js.map +1 -1
- package/dist/tree-alpha.d.ts +5 -8
- package/dist/tree-beta.d.ts +5 -1
- package/dist/tree-public.d.ts +5 -1
- package/dist/tree-untrimmed.d.ts +5 -8
- package/dist/tsdoc-metadata.json +1 -1
- package/lib/ChangeCompression.d.ts +5 -5
- package/lib/ChangeCompression.d.ts.map +1 -1
- package/lib/ChangeCompression.js +3 -3
- package/lib/ChangeCompression.js.map +1 -1
- package/lib/ChangeTypes.d.ts +3 -3
- package/lib/ChangeTypes.d.ts.map +1 -1
- package/lib/ChangeTypes.js +3 -3
- package/lib/ChangeTypes.js.map +1 -1
- package/lib/Checkout.d.ts +7 -7
- package/lib/Checkout.d.ts.map +1 -1
- package/lib/Checkout.js +6 -6
- package/lib/Checkout.js.map +1 -1
- package/lib/Common.d.ts +2 -2
- package/lib/Common.d.ts.map +1 -1
- package/lib/Common.js.map +1 -1
- package/lib/EagerCheckout.d.ts +3 -3
- package/lib/EagerCheckout.d.ts.map +1 -1
- package/lib/EagerCheckout.js +1 -1
- package/lib/EagerCheckout.js.map +1 -1
- package/lib/EditLog.d.ts +4 -6
- package/lib/EditLog.d.ts.map +1 -1
- package/lib/EditLog.js +1 -1
- package/lib/EditLog.js.map +1 -1
- package/lib/EditUtilities.d.ts +6 -6
- package/lib/EditUtilities.d.ts.map +1 -1
- package/lib/EditUtilities.js +7 -7
- package/lib/EditUtilities.js.map +1 -1
- package/lib/Forest.d.ts +2 -2
- package/lib/Forest.d.ts.map +1 -1
- package/lib/Forest.js +2 -2
- package/lib/Forest.js.map +1 -1
- package/lib/HistoryEditFactory.d.ts +3 -3
- package/lib/HistoryEditFactory.d.ts.map +1 -1
- package/lib/HistoryEditFactory.js +7 -7
- package/lib/HistoryEditFactory.js.map +1 -1
- package/lib/IdConversion.d.ts +3 -3
- package/lib/IdConversion.d.ts.map +1 -1
- package/lib/IdConversion.js +4 -4
- package/lib/IdConversion.js.map +1 -1
- package/lib/InitialTree.d.ts +1 -1
- package/lib/InitialTree.d.ts.map +1 -1
- package/lib/InitialTree.js +1 -1
- package/lib/InitialTree.js.map +1 -1
- package/lib/LazyCheckout.d.ts +5 -5
- package/lib/LazyCheckout.d.ts.map +1 -1
- package/lib/LazyCheckout.js +1 -1
- package/lib/LazyCheckout.js.map +1 -1
- package/lib/LogViewer.d.ts +7 -7
- package/lib/LogViewer.d.ts.map +1 -1
- package/lib/LogViewer.js +4 -4
- package/lib/LogViewer.js.map +1 -1
- package/lib/MergeHealth.d.ts +1 -1
- package/lib/MergeHealth.d.ts.map +1 -1
- package/lib/MergeHealth.js +5 -5
- package/lib/MergeHealth.js.map +1 -1
- package/lib/NodeIdUtilities.d.ts +3 -3
- package/lib/NodeIdUtilities.d.ts.map +1 -1
- package/lib/NodeIdUtilities.js +2 -2
- package/lib/NodeIdUtilities.js.map +1 -1
- package/lib/PayloadUtilities.d.ts +1 -1
- package/lib/PayloadUtilities.d.ts.map +1 -1
- package/lib/PayloadUtilities.js.map +1 -1
- package/lib/ReconciliationPath.d.ts +3 -3
- package/lib/ReconciliationPath.d.ts.map +1 -1
- package/lib/ReconciliationPath.js.map +1 -1
- package/lib/RevisionValueCache.js +1 -1
- package/lib/RevisionValueCache.js.map +1 -1
- package/lib/RevisionView.d.ts +5 -5
- package/lib/RevisionView.d.ts.map +1 -1
- package/lib/RevisionView.js +3 -3
- package/lib/RevisionView.js.map +1 -1
- package/lib/SerializationUtilities.d.ts +4 -4
- package/lib/SerializationUtilities.d.ts.map +1 -1
- package/lib/SerializationUtilities.js +1 -1
- package/lib/SerializationUtilities.js.map +1 -1
- package/lib/SharedTree.d.ts +15 -18
- package/lib/SharedTree.d.ts.map +1 -1
- package/lib/SharedTree.js +28 -40
- package/lib/SharedTree.js.map +1 -1
- package/lib/SharedTreeEncoder.d.ts +8 -8
- package/lib/SharedTreeEncoder.d.ts.map +1 -1
- package/lib/SharedTreeEncoder.js +12 -12
- package/lib/SharedTreeEncoder.js.map +1 -1
- package/lib/StringInterner.d.ts +1 -1
- package/lib/StringInterner.d.ts.map +1 -1
- package/lib/StringInterner.js +1 -1
- package/lib/StringInterner.js.map +1 -1
- package/lib/Summary.d.ts +4 -4
- package/lib/Summary.d.ts.map +1 -1
- package/lib/Summary.js +1 -1
- package/lib/Summary.js.map +1 -1
- package/lib/SummaryBackCompatibility.d.ts +3 -3
- package/lib/SummaryBackCompatibility.d.ts.map +1 -1
- package/lib/SummaryBackCompatibility.js +3 -3
- package/lib/SummaryBackCompatibility.js.map +1 -1
- package/lib/SummaryTestUtilities.d.ts +2 -2
- package/lib/SummaryTestUtilities.d.ts.map +1 -1
- package/lib/SummaryTestUtilities.js.map +1 -1
- package/lib/Transaction.d.ts +4 -4
- package/lib/Transaction.d.ts.map +1 -1
- package/lib/Transaction.js +5 -5
- package/lib/Transaction.js.map +1 -1
- package/lib/TransactionInternal.d.ts +7 -7
- package/lib/TransactionInternal.d.ts.map +1 -1
- package/lib/TransactionInternal.js +5 -5
- package/lib/TransactionInternal.js.map +1 -1
- package/lib/TreeCompressor.d.ts +4 -4
- package/lib/TreeCompressor.d.ts.map +1 -1
- package/lib/TreeCompressor.js +2 -2
- package/lib/TreeCompressor.js.map +1 -1
- package/lib/TreeNodeHandle.d.ts +3 -3
- package/lib/TreeNodeHandle.d.ts.map +1 -1
- package/lib/TreeNodeHandle.js +1 -1
- package/lib/TreeNodeHandle.js.map +1 -1
- package/lib/TreeView.d.ts +3 -3
- package/lib/TreeView.d.ts.map +1 -1
- package/lib/TreeView.js +3 -3
- package/lib/TreeView.js.map +1 -1
- package/lib/TreeViewUtilities.d.ts +2 -2
- package/lib/TreeViewUtilities.d.ts.map +1 -1
- package/lib/TreeViewUtilities.js +1 -1
- package/lib/TreeViewUtilities.js.map +1 -1
- package/lib/UndoRedoHandler.d.ts +2 -2
- package/lib/UndoRedoHandler.d.ts.map +1 -1
- package/lib/UndoRedoHandler.js +2 -2
- package/lib/UndoRedoHandler.js.map +1 -1
- package/lib/UuidUtilities.d.ts +1 -1
- package/lib/UuidUtilities.d.ts.map +1 -1
- package/lib/UuidUtilities.js +1 -1
- package/lib/UuidUtilities.js.map +1 -1
- package/lib/id-compressor/AppendOnlySortedMap.js +1 -1
- package/lib/id-compressor/AppendOnlySortedMap.js.map +1 -1
- package/lib/id-compressor/IdCompressor.d.ts +2 -2
- package/lib/id-compressor/IdCompressor.d.ts.map +1 -1
- package/lib/id-compressor/IdCompressor.js +6 -6
- package/lib/id-compressor/IdCompressor.js.map +1 -1
- package/lib/id-compressor/IdRange.d.ts +1 -1
- package/lib/id-compressor/IdRange.d.ts.map +1 -1
- package/lib/id-compressor/IdRange.js.map +1 -1
- package/lib/id-compressor/NumericUuid.d.ts +1 -1
- package/lib/id-compressor/NumericUuid.d.ts.map +1 -1
- package/lib/id-compressor/NumericUuid.js +2 -2
- package/lib/id-compressor/NumericUuid.js.map +1 -1
- package/lib/id-compressor/SessionIdNormalizer.d.ts +2 -2
- package/lib/id-compressor/SessionIdNormalizer.d.ts.map +1 -1
- package/lib/id-compressor/SessionIdNormalizer.js +2 -2
- package/lib/id-compressor/SessionIdNormalizer.js.map +1 -1
- package/lib/id-compressor/index.d.ts +4 -4
- package/lib/id-compressor/index.d.ts.map +1 -1
- package/lib/id-compressor/index.js +3 -3
- package/lib/id-compressor/index.js.map +1 -1
- package/lib/id-compressor/persisted-types/0.0.1.d.ts +1 -1
- package/lib/id-compressor/persisted-types/0.0.1.d.ts.map +1 -1
- package/lib/id-compressor/persisted-types/0.0.1.js.map +1 -1
- package/lib/id-compressor/persisted-types/index.d.ts +1 -1
- package/lib/id-compressor/persisted-types/index.d.ts.map +1 -1
- package/lib/id-compressor/persisted-types/index.js.map +1 -1
- package/lib/index.d.ts +29 -29
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +22 -22
- package/lib/index.js.map +1 -1
- package/lib/migration-shim/migrationDeltaHandler.d.ts +1 -1
- package/lib/migration-shim/migrationDeltaHandler.d.ts.map +1 -1
- package/lib/migration-shim/migrationDeltaHandler.js +5 -8
- package/lib/migration-shim/migrationDeltaHandler.js.map +1 -1
- package/lib/migration-shim/migrationShim.d.ts +1 -1
- package/lib/migration-shim/migrationShim.d.ts.map +1 -1
- package/lib/migration-shim/migrationShim.js +1 -1
- package/lib/migration-shim/migrationShim.js.map +1 -1
- package/lib/migration-shim/migrationShimFactory.d.ts +1 -1
- package/lib/migration-shim/migrationShimFactory.d.ts.map +1 -1
- package/lib/migration-shim/migrationShimFactory.js.map +1 -1
- package/lib/migration-shim/sharedTreeDeltaHandler.d.ts +1 -1
- package/lib/migration-shim/sharedTreeDeltaHandler.d.ts.map +1 -1
- package/lib/migration-shim/sharedTreeDeltaHandler.js +2 -5
- package/lib/migration-shim/sharedTreeDeltaHandler.js.map +1 -1
- package/lib/migration-shim/types.d.ts +1 -1
- package/lib/migration-shim/types.d.ts.map +1 -1
- package/lib/migration-shim/types.js.map +1 -1
- package/lib/persisted-types/0.0.2.d.ts +1 -1
- package/lib/persisted-types/0.0.2.d.ts.map +1 -1
- package/lib/persisted-types/0.0.2.js.map +1 -1
- package/lib/persisted-types/0.1.1.d.ts +4 -4
- package/lib/persisted-types/0.1.1.d.ts.map +1 -1
- package/lib/persisted-types/0.1.1.js +2 -2
- package/lib/persisted-types/0.1.1.js.map +1 -1
- package/lib/persisted-types/index.d.ts +2 -2
- package/lib/persisted-types/index.d.ts.map +1 -1
- package/lib/persisted-types/index.js +2 -2
- package/lib/persisted-types/index.js.map +1 -1
- package/lib/test/AppendOnlySortedMap.perf.tests.js +2 -2
- package/lib/test/AppendOnlySortedMap.perf.tests.js.map +1 -1
- package/lib/test/AppendOnlySortedMap.tests.js +2 -2
- package/lib/test/AppendOnlySortedMap.tests.js.map +1 -1
- package/lib/test/ChangeCompression.tests.js +9 -9
- package/lib/test/ChangeCompression.tests.js.map +1 -1
- package/lib/test/Checkout.tests.d.ts +1 -1
- package/lib/test/Checkout.tests.d.ts.map +1 -1
- package/lib/test/Checkout.tests.js +2 -2
- package/lib/test/Checkout.tests.js.map +1 -1
- package/lib/test/Common.tests.js +1 -1
- package/lib/test/Common.tests.js.map +1 -1
- package/lib/test/EagerCheckout.tests.js +4 -4
- package/lib/test/EagerCheckout.tests.js.map +1 -1
- package/lib/test/Edit.tests.js +2 -2
- package/lib/test/Edit.tests.js.map +1 -1
- package/lib/test/EditLog.perf.tests.js +4 -4
- package/lib/test/EditLog.perf.tests.js.map +1 -1
- package/lib/test/EditLog.tests.js +3 -3
- package/lib/test/EditLog.tests.js.map +1 -1
- package/lib/test/EditUtilities.tests.js +6 -6
- package/lib/test/EditUtilities.tests.js.map +1 -1
- package/lib/test/Forest.perf.tests.js +4 -4
- package/lib/test/Forest.perf.tests.js.map +1 -1
- package/lib/test/Forest.tests.js +2 -2
- package/lib/test/Forest.tests.js.map +1 -1
- package/lib/test/GenericTransaction.tests.js +3 -3
- package/lib/test/GenericTransaction.tests.js.map +1 -1
- package/lib/test/HistoryEditFactory.tests.js +4 -4
- package/lib/test/HistoryEditFactory.tests.js.map +1 -1
- package/lib/test/IdCompressor.perf.tests.js +4 -4
- package/lib/test/IdCompressor.perf.tests.js.map +1 -1
- package/lib/test/IdCompressor.tests.js +7 -7
- package/lib/test/IdCompressor.tests.js.map +1 -1
- package/lib/test/IdConversion.tests.js +3 -3
- package/lib/test/IdConversion.tests.js.map +1 -1
- package/lib/test/LazyCheckout.tests.js +4 -4
- package/lib/test/LazyCheckout.tests.js.map +1 -1
- package/lib/test/LogViewer.tests.js +12 -12
- package/lib/test/LogViewer.tests.js.map +1 -1
- package/lib/test/MergeHealthTelemetryHeartbeat.tests.js +6 -6
- package/lib/test/MergeHealthTelemetryHeartbeat.tests.js.map +1 -1
- package/lib/test/NumericUuid.perf.tests.js +3 -3
- package/lib/test/NumericUuid.perf.tests.js.map +1 -1
- package/lib/test/NumericUuid.tests.js +4 -4
- package/lib/test/NumericUuid.tests.js.map +1 -1
- package/lib/test/RevisionValueCache.tests.js +2 -2
- package/lib/test/RevisionValueCache.tests.js.map +1 -1
- package/lib/test/RevisionView.tests.js +6 -6
- package/lib/test/RevisionView.tests.js.map +1 -1
- package/lib/test/SessionIdNormalizer.tests.js +3 -3
- package/lib/test/SessionIdNormalizer.tests.js.map +1 -1
- package/lib/test/SharedTree.fuzz.tests.js +1 -1
- package/lib/test/SharedTree.fuzz.tests.js.map +1 -1
- package/lib/test/SharedTree.perf.tests.js +2 -2
- package/lib/test/SharedTree.perf.tests.js.map +1 -1
- package/lib/test/SharedTree.tests.js +7 -7
- package/lib/test/SharedTree.tests.js.map +1 -1
- package/lib/test/StringInterner.tests.js +1 -1
- package/lib/test/StringInterner.tests.js.map +1 -1
- package/lib/test/Summary.tests.d.ts +2 -2
- package/lib/test/Summary.tests.d.ts.map +1 -1
- package/lib/test/Summary.tests.js +14 -14
- package/lib/test/Summary.tests.js.map +1 -1
- package/lib/test/Transaction.tests.js +5 -5
- package/lib/test/Transaction.tests.js.map +1 -1
- package/lib/test/TransactionInternal.tests.js +7 -7
- package/lib/test/TransactionInternal.tests.js.map +1 -1
- package/lib/test/TreeCompression.tests.js +8 -8
- package/lib/test/TreeCompression.tests.js.map +1 -1
- package/lib/test/TreeView.tests.js +3 -3
- package/lib/test/TreeView.tests.js.map +1 -1
- package/lib/test/UndoRedoHandler.tests.js +2 -2
- package/lib/test/UndoRedoHandler.tests.js.map +1 -1
- package/lib/test/fuzz/Generators.d.ts +1 -1
- package/lib/test/fuzz/Generators.d.ts.map +1 -1
- package/lib/test/fuzz/Generators.js +4 -4
- package/lib/test/fuzz/Generators.js.map +1 -1
- package/lib/test/fuzz/SharedTreeFuzzTests.d.ts +1 -1
- package/lib/test/fuzz/SharedTreeFuzzTests.d.ts.map +1 -1
- package/lib/test/fuzz/SharedTreeFuzzTests.js +5 -5
- package/lib/test/fuzz/SharedTreeFuzzTests.js.map +1 -1
- package/lib/test/fuzz/Types.d.ts +6 -6
- package/lib/test/fuzz/Types.d.ts.map +1 -1
- package/lib/test/fuzz/Types.js.map +1 -1
- package/lib/test/utilities/IdCompressorTestUtilities.d.ts +6 -6
- package/lib/test/utilities/IdCompressorTestUtilities.d.ts.map +1 -1
- package/lib/test/utilities/IdCompressorTestUtilities.js +6 -6
- package/lib/test/utilities/IdCompressorTestUtilities.js.map +1 -1
- package/lib/test/utilities/MockTransaction.d.ts +4 -4
- package/lib/test/utilities/MockTransaction.d.ts.map +1 -1
- package/lib/test/utilities/MockTransaction.js +3 -3
- package/lib/test/utilities/MockTransaction.js.map +1 -1
- package/lib/test/utilities/PendingLocalStateTests.d.ts +1 -1
- package/lib/test/utilities/PendingLocalStateTests.d.ts.map +1 -1
- package/lib/test/utilities/PendingLocalStateTests.js +5 -5
- package/lib/test/utilities/PendingLocalStateTests.js.map +1 -1
- package/lib/test/utilities/SharedTreeTests.d.ts +2 -2
- package/lib/test/utilities/SharedTreeTests.d.ts.map +1 -1
- package/lib/test/utilities/SharedTreeTests.js +22 -22
- package/lib/test/utilities/SharedTreeTests.js.map +1 -1
- package/lib/test/utilities/SharedTreeVersioningTests.d.ts +1 -1
- package/lib/test/utilities/SharedTreeVersioningTests.d.ts.map +1 -1
- package/lib/test/utilities/SharedTreeVersioningTests.js +10 -10
- package/lib/test/utilities/SharedTreeVersioningTests.js.map +1 -1
- package/lib/test/utilities/SummaryLoadPerfTests.js +6 -6
- package/lib/test/utilities/SummaryLoadPerfTests.js.map +1 -1
- package/lib/test/utilities/SummarySizeTests.d.ts +1 -1
- package/lib/test/utilities/SummarySizeTests.d.ts.map +1 -1
- package/lib/test/utilities/SummarySizeTests.js +5 -5
- package/lib/test/utilities/SummarySizeTests.js.map +1 -1
- package/lib/test/utilities/TestNode.d.ts +6 -6
- package/lib/test/utilities/TestNode.d.ts.map +1 -1
- package/lib/test/utilities/TestNode.js +5 -5
- package/lib/test/utilities/TestNode.js.map +1 -1
- package/lib/test/utilities/TestUtilities.d.ts +12 -12
- package/lib/test/utilities/TestUtilities.d.ts.map +1 -1
- package/lib/test/utilities/TestUtilities.js +18 -19
- package/lib/test/utilities/TestUtilities.js.map +1 -1
- package/lib/test/utilities/UndoRedoTests.d.ts +2 -2
- package/lib/test/utilities/UndoRedoTests.d.ts.map +1 -1
- package/lib/test/utilities/UndoRedoTests.js +7 -7
- package/lib/test/utilities/UndoRedoTests.js.map +1 -1
- package/package.json +57 -31
- package/src/ChangeCompression.ts +7 -7
- package/src/ChangeTypes.ts +5 -5
- package/src/Checkout.ts +13 -13
- package/src/Common.ts +2 -2
- package/src/EagerCheckout.ts +3 -3
- package/src/EditLog.ts +6 -7
- package/src/EditUtilities.ts +10 -10
- package/src/Forest.ts +4 -4
- package/src/HistoryEditFactory.ts +11 -11
- package/src/IdConversion.ts +4 -4
- package/src/InitialTree.ts +3 -3
- package/src/LazyCheckout.ts +5 -5
- package/src/LogViewer.ts +8 -8
- package/src/MergeHealth.ts +6 -6
- package/src/NodeIdUtilities.ts +4 -4
- package/src/PayloadUtilities.ts +1 -1
- package/src/ReconciliationPath.ts +3 -3
- package/src/RevisionValueCache.ts +1 -1
- package/src/RevisionView.ts +7 -7
- package/src/SerializationUtilities.ts +5 -5
- package/src/SharedTree.ts +34 -54
- package/src/SharedTreeEncoder.ts +15 -15
- package/src/StringInterner.ts +2 -2
- package/src/Summary.ts +5 -5
- package/src/SummaryBackCompatibility.ts +10 -5
- package/src/SummaryTestUtilities.ts +3 -3
- package/src/Transaction.ts +8 -8
- package/src/TransactionInternal.ts +8 -8
- package/src/TreeCompressor.ts +6 -6
- package/src/TreeNodeHandle.ts +4 -4
- package/src/TreeView.ts +4 -4
- package/src/TreeViewUtilities.ts +3 -3
- package/src/UndoRedoHandler.ts +4 -4
- package/src/UuidUtilities.ts +2 -2
- package/src/id-compressor/AppendOnlySortedMap.ts +1 -1
- package/src/id-compressor/IdCompressor.ts +8 -8
- package/src/id-compressor/IdRange.ts +1 -1
- package/src/id-compressor/NumericUuid.ts +3 -3
- package/src/id-compressor/SessionIdNormalizer.ts +4 -4
- package/src/id-compressor/index.ts +4 -4
- package/src/id-compressor/persisted-types/0.0.1.ts +1 -1
- package/src/id-compressor/persisted-types/index.ts +1 -1
- package/src/index.ts +29 -29
- package/src/migration-shim/migrationDeltaHandler.ts +9 -10
- package/src/migration-shim/migrationShim.ts +7 -5
- package/src/migration-shim/migrationShimFactory.ts +4 -1
- package/src/migration-shim/sharedTreeDeltaHandler.ts +7 -6
- package/src/migration-shim/types.ts +1 -1
- package/src/persisted-types/0.0.2.ts +1 -1
- package/src/persisted-types/0.1.1.ts +4 -4
- package/src/persisted-types/index.ts +2 -2
- package/tsconfig.esnext.json +1 -2
- package/tsconfig.json +3 -0
- package/lib/test/Attach.tests.d.ts +0 -6
- package/lib/test/Attach.tests.d.ts.map +0 -1
- package/lib/test/Attach.tests.js +0 -52
- package/lib/test/Attach.tests.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"0.0.1.js","sourceRoot":"","sources":["../../../src/id-compressor/persisted-types/0.0.1.ts"],"names":[],"mappings":";AAAA;;;GAGG","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport type {\n\tAttributionId,\n\tFinalCompressedId,\n\tLocalCompressedId,\n\tOpSpaceCompressedId,\n\tSessionId,\n} from '../../Identifiers';\n\n/**\n * A serialized ID allocation session for an `IdCompressor`.\n */\nexport type SerializedSessionData = readonly [\n\t/**\n\t * The ID of the session.\n\t */\n\tsessionId: SessionId,\n\n\t/**\n\t * Index into the serialized AttributionIDs array; points to the attribution ID provided for this session\n\t */\n\tattributionId?: number,\n];\n\nexport type SerializedClusterOverrides = readonly [\n\t/** The overridden final ID, represented as an index into the cluster's ID range */\n\toverriddenFinalIndex: number, // A cluster with base UUID '...beef' and an `overriddenFinalIndex` of 3 would correspond to '...bef2'\n\t/** The override string */\n\toverride: string,\n\t/** The first ID that was finalized and associated with this override, set only if different than the `overriddenFinalIndex` */\n\toverriddenId?: FinalCompressedId,\n][];\n\n/**\n * A serialized final ID cluster.\n */\nexport type SerializedCluster = readonly [\n\t/**\n\t * Index into the serialized sessions array. Can be converted into a baseUuid via its order in `clusters`.\n\t * If negative, then this cluster was created by the local session.\n\t */\n\tsessionIndex: number,\n\n\t/**\n\t * The capacity of the cluster.\n\t */\n\tcapacity: number,\n\n\t/**\n\t * The number of IDs in the cluster. Omitted if count === capacity.\n\t * --OR--\n\t * The overrides in this cluster. Omitted if no overrides exist in the cluster.\n\t */\n\tcountOrOverrides?: number | SerializedClusterOverrides,\n\n\t/**\n\t * Overrides in this cluster. Omitted if no overrides exist in the cluster.\n\t */\n\toverrides?: SerializedClusterOverrides,\n];\n\nexport type SerializedLocalOverrides = readonly (readonly [LocalCompressedId, string])[];\n\nexport interface SerializedLocalState {\n\t/**\n\t * The total number of local IDs created by this session\n\t */\n\treadonly localIdCount: number;\n\t/**\n\t * Overrides generated by this session. Omitted if no local overrides exist in the session.\n\t */\n\treadonly overrides?: SerializedLocalOverrides;\n\n\t/**\n\t * The most recent local ID in a range returned by `takeNextCreationRange`.\n\t */\n\treadonly lastTakenLocalId: LocalCompressedId | undefined;\n\n\t/**\n\t * Serialized table for normalizing IDs made by the local session.\n\t */\n\treadonly sessionNormalizer: SerializedSessionIdNormalizer;\n}\n\n/**\n * Serialized table for normalizing IDs made by the local session.\n */\nexport interface SerializedSessionIdNormalizer {\n\treadonly nextLocalId: LocalCompressedId;\n\treadonly localRanges: readonly (readonly [\n\t\tfirstLocal: LocalCompressedId,\n\t\tlastLocal: LocalCompressedId,\n\t\tfinalRanges?: readonly (readonly [\n\t\t\talignedLocal: LocalCompressedId,\n\t\t\tfirstFinal: FinalCompressedId,\n\t\t\tlastFinal: FinalCompressedId,\n\t\t])[],\n\t])[];\n}\n\n/**\n * The minimal required contents of a serialized IdCompressor.\n */\nexport interface VersionedSerializedIdCompressor {\n\treadonly _versionedSerializedIdCompressor: '8c73c57c-1cf4-4278-8915-6444cb4f6af5';\n\treadonly version: string;\n}\n\n/**\n * The serialized contents of an IdCompressor, suitable for persistence in a summary.\n */\nexport interface SerializedIdCompressor extends VersionedSerializedIdCompressor {\n\t/** The cluster capacity of this compressor */\n\treadonly clusterCapacity: number;\n\t/** The number of reserved IDs in this compressor */\n\treadonly reservedIdCount: number;\n\t/** All sessions except the local session. */\n\treadonly sessions: readonly SerializedSessionData[];\n\t/** All clusters in the compressor in the order they were created. */\n\treadonly clusters: readonly SerializedCluster[];\n\t/** All attribution IDs for all sessions */\n\treadonly attributionIds?: readonly AttributionId[];\n}\n\n/**\n * The serialized contents of an IdCompressor, suitable for persistence in a summary.\n */\nexport interface SerializedIdCompressorWithNoSession extends SerializedIdCompressor {\n\treadonly _noLocalState: '3aa2e1e8-cc28-4ea7-bc1a-a11dc3f26dfb';\n}\n\n/**\n * The serialized contents of an IdCompressor, suitable for persistence in a summary.\n */\nexport interface SerializedIdCompressorWithOngoingSession extends SerializedIdCompressor {\n\treadonly _hasLocalState: '1281acae-6d14-47e7-bc92-71c8ee0819cb';\n\t/** The session ID of the local session, by index into `sessions`. */\n\treadonly localSessionIndex: number;\n\t/** This is only present if the local session made any IDs. */\n\treadonly localState?: SerializedLocalState;\n}\n\n/**\n * Data describing a range of session-local IDs (from a remote or local session).\n *\n * A range is composed of local IDs that were generated. Some of these may have overrides.\n *\n * @example\n *\n * Suppose an IdCompressor generated a sequence of local IDs as follows:\n *\n * ```typescripot\n * compressor.generateLocalId()\n * compressor.generateLocalId('0093cf29-9454-4034-8940-33b1077b41c3')\n * compressor.generateLocalId()\n * compressor.generateLocalId('0ed545f8-e97e-4dc1-acf9-c4a783258bdf')\n * compressor.generateLocalId()\n * compressor.generateLocalId()\n * compressor.takeNextCreationRange()\n * ```\n *\n * This would result in the following range:\n *\n * ```typescript\n * {\n * first: localId1,\n * last: localId6,\n * overrides: [[localId2, '0093cf29-9454-4034-8940-33b1077b41c3'], [localId4, '0ed545f8-e97e-4dc1-acf9-c4a783258bdf']]\n * }\n * ```\n */\nexport interface IdCreationRange {\n\treadonly sessionId: SessionId;\n\treadonly ids?: IdCreationRange.Ids;\n\treadonly attributionId?: AttributionId;\n}\n\nexport type UnackedLocalId = LocalCompressedId & OpSpaceCompressedId;\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace IdCreationRange {\n\texport type Ids =\n\t\t| {\n\t\t\t\treadonly first: UnackedLocalId;\n\t\t\t\treadonly last: UnackedLocalId;\n\t\t }\n\t\t| ({\n\t\t\t\treadonly first?: UnackedLocalId;\n\t\t\t\treadonly last?: UnackedLocalId;\n\t\t } & HasOverrides);\n\n\texport interface HasOverrides {\n\t\treadonly overrides: Overrides;\n\t}\n\n\texport type Override = readonly [id: UnackedLocalId, override: string];\n\texport type Overrides = readonly [Override, ...Override[]];\n}\n"]}
|
|
1
|
+
{"version":3,"file":"0.0.1.js","sourceRoot":"","sources":["../../../src/id-compressor/persisted-types/0.0.1.ts"],"names":[],"mappings":";AAAA;;;GAGG","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport type {\n\tAttributionId,\n\tFinalCompressedId,\n\tLocalCompressedId,\n\tOpSpaceCompressedId,\n\tSessionId,\n} from '../../Identifiers.js';\n\n/**\n * A serialized ID allocation session for an `IdCompressor`.\n */\nexport type SerializedSessionData = readonly [\n\t/**\n\t * The ID of the session.\n\t */\n\tsessionId: SessionId,\n\n\t/**\n\t * Index into the serialized AttributionIDs array; points to the attribution ID provided for this session\n\t */\n\tattributionId?: number,\n];\n\nexport type SerializedClusterOverrides = readonly [\n\t/** The overridden final ID, represented as an index into the cluster's ID range */\n\toverriddenFinalIndex: number, // A cluster with base UUID '...beef' and an `overriddenFinalIndex` of 3 would correspond to '...bef2'\n\t/** The override string */\n\toverride: string,\n\t/** The first ID that was finalized and associated with this override, set only if different than the `overriddenFinalIndex` */\n\toverriddenId?: FinalCompressedId,\n][];\n\n/**\n * A serialized final ID cluster.\n */\nexport type SerializedCluster = readonly [\n\t/**\n\t * Index into the serialized sessions array. Can be converted into a baseUuid via its order in `clusters`.\n\t * If negative, then this cluster was created by the local session.\n\t */\n\tsessionIndex: number,\n\n\t/**\n\t * The capacity of the cluster.\n\t */\n\tcapacity: number,\n\n\t/**\n\t * The number of IDs in the cluster. Omitted if count === capacity.\n\t * --OR--\n\t * The overrides in this cluster. Omitted if no overrides exist in the cluster.\n\t */\n\tcountOrOverrides?: number | SerializedClusterOverrides,\n\n\t/**\n\t * Overrides in this cluster. Omitted if no overrides exist in the cluster.\n\t */\n\toverrides?: SerializedClusterOverrides,\n];\n\nexport type SerializedLocalOverrides = readonly (readonly [LocalCompressedId, string])[];\n\nexport interface SerializedLocalState {\n\t/**\n\t * The total number of local IDs created by this session\n\t */\n\treadonly localIdCount: number;\n\t/**\n\t * Overrides generated by this session. Omitted if no local overrides exist in the session.\n\t */\n\treadonly overrides?: SerializedLocalOverrides;\n\n\t/**\n\t * The most recent local ID in a range returned by `takeNextCreationRange`.\n\t */\n\treadonly lastTakenLocalId: LocalCompressedId | undefined;\n\n\t/**\n\t * Serialized table for normalizing IDs made by the local session.\n\t */\n\treadonly sessionNormalizer: SerializedSessionIdNormalizer;\n}\n\n/**\n * Serialized table for normalizing IDs made by the local session.\n */\nexport interface SerializedSessionIdNormalizer {\n\treadonly nextLocalId: LocalCompressedId;\n\treadonly localRanges: readonly (readonly [\n\t\tfirstLocal: LocalCompressedId,\n\t\tlastLocal: LocalCompressedId,\n\t\tfinalRanges?: readonly (readonly [\n\t\t\talignedLocal: LocalCompressedId,\n\t\t\tfirstFinal: FinalCompressedId,\n\t\t\tlastFinal: FinalCompressedId,\n\t\t])[],\n\t])[];\n}\n\n/**\n * The minimal required contents of a serialized IdCompressor.\n */\nexport interface VersionedSerializedIdCompressor {\n\treadonly _versionedSerializedIdCompressor: '8c73c57c-1cf4-4278-8915-6444cb4f6af5';\n\treadonly version: string;\n}\n\n/**\n * The serialized contents of an IdCompressor, suitable for persistence in a summary.\n */\nexport interface SerializedIdCompressor extends VersionedSerializedIdCompressor {\n\t/** The cluster capacity of this compressor */\n\treadonly clusterCapacity: number;\n\t/** The number of reserved IDs in this compressor */\n\treadonly reservedIdCount: number;\n\t/** All sessions except the local session. */\n\treadonly sessions: readonly SerializedSessionData[];\n\t/** All clusters in the compressor in the order they were created. */\n\treadonly clusters: readonly SerializedCluster[];\n\t/** All attribution IDs for all sessions */\n\treadonly attributionIds?: readonly AttributionId[];\n}\n\n/**\n * The serialized contents of an IdCompressor, suitable for persistence in a summary.\n */\nexport interface SerializedIdCompressorWithNoSession extends SerializedIdCompressor {\n\treadonly _noLocalState: '3aa2e1e8-cc28-4ea7-bc1a-a11dc3f26dfb';\n}\n\n/**\n * The serialized contents of an IdCompressor, suitable for persistence in a summary.\n */\nexport interface SerializedIdCompressorWithOngoingSession extends SerializedIdCompressor {\n\treadonly _hasLocalState: '1281acae-6d14-47e7-bc92-71c8ee0819cb';\n\t/** The session ID of the local session, by index into `sessions`. */\n\treadonly localSessionIndex: number;\n\t/** This is only present if the local session made any IDs. */\n\treadonly localState?: SerializedLocalState;\n}\n\n/**\n * Data describing a range of session-local IDs (from a remote or local session).\n *\n * A range is composed of local IDs that were generated. Some of these may have overrides.\n *\n * @example\n *\n * Suppose an IdCompressor generated a sequence of local IDs as follows:\n *\n * ```typescripot\n * compressor.generateLocalId()\n * compressor.generateLocalId('0093cf29-9454-4034-8940-33b1077b41c3')\n * compressor.generateLocalId()\n * compressor.generateLocalId('0ed545f8-e97e-4dc1-acf9-c4a783258bdf')\n * compressor.generateLocalId()\n * compressor.generateLocalId()\n * compressor.takeNextCreationRange()\n * ```\n *\n * This would result in the following range:\n *\n * ```typescript\n * {\n * first: localId1,\n * last: localId6,\n * overrides: [[localId2, '0093cf29-9454-4034-8940-33b1077b41c3'], [localId4, '0ed545f8-e97e-4dc1-acf9-c4a783258bdf']]\n * }\n * ```\n */\nexport interface IdCreationRange {\n\treadonly sessionId: SessionId;\n\treadonly ids?: IdCreationRange.Ids;\n\treadonly attributionId?: AttributionId;\n}\n\nexport type UnackedLocalId = LocalCompressedId & OpSpaceCompressedId;\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace IdCreationRange {\n\texport type Ids =\n\t\t| {\n\t\t\t\treadonly first: UnackedLocalId;\n\t\t\t\treadonly last: UnackedLocalId;\n\t\t }\n\t\t| ({\n\t\t\t\treadonly first?: UnackedLocalId;\n\t\t\t\treadonly last?: UnackedLocalId;\n\t\t } & HasOverrides);\n\n\texport interface HasOverrides {\n\t\treadonly overrides: Overrides;\n\t}\n\n\texport type Override = readonly [id: UnackedLocalId, override: string];\n\texport type Overrides = readonly [Override, ...Override[]];\n}\n"]}
|
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
|
-
export { IdCreationRange, SerializedCluster, SerializedClusterOverrides, SerializedIdCompressor, SerializedIdCompressorWithNoSession, SerializedIdCompressorWithOngoingSession, SerializedLocalOverrides, SerializedLocalState, SerializedSessionData, SerializedSessionIdNormalizer, UnackedLocalId, VersionedSerializedIdCompressor, } from './0.0.1';
|
|
5
|
+
export { IdCreationRange, SerializedCluster, SerializedClusterOverrides, SerializedIdCompressor, SerializedIdCompressorWithNoSession, SerializedIdCompressorWithOngoingSession, SerializedLocalOverrides, SerializedLocalState, SerializedSessionData, SerializedSessionIdNormalizer, UnackedLocalId, VersionedSerializedIdCompressor, } from './0.0.1.js';
|
|
6
6
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/id-compressor/persisted-types/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACN,eAAe,EACf,iBAAiB,EACjB,0BAA0B,EAC1B,sBAAsB,EACtB,mCAAmC,EACnC,wCAAwC,EACxC,wBAAwB,EACxB,oBAAoB,EACpB,qBAAqB,EACrB,6BAA6B,EAC7B,cAAc,EACd,+BAA+B,GAC/B,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/id-compressor/persisted-types/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACN,eAAe,EACf,iBAAiB,EACjB,0BAA0B,EAC1B,sBAAsB,EACtB,mCAAmC,EACnC,wCAAwC,EACxC,wBAAwB,EACxB,oBAAoB,EACpB,qBAAqB,EACrB,6BAA6B,EAC7B,cAAc,EACd,+BAA+B,GAC/B,MAAM,YAAY,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/id-compressor/persisted-types/index.ts"],"names":[],"mappings":";AAAA;;;GAGG","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport {\n\tIdCreationRange,\n\tSerializedCluster,\n\tSerializedClusterOverrides,\n\tSerializedIdCompressor,\n\tSerializedIdCompressorWithNoSession,\n\tSerializedIdCompressorWithOngoingSession,\n\tSerializedLocalOverrides,\n\tSerializedLocalState,\n\tSerializedSessionData,\n\tSerializedSessionIdNormalizer,\n\tUnackedLocalId,\n\tVersionedSerializedIdCompressor,\n} from './0.0.1';\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/id-compressor/persisted-types/index.ts"],"names":[],"mappings":";AAAA;;;GAGG","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport {\n\tIdCreationRange,\n\tSerializedCluster,\n\tSerializedClusterOverrides,\n\tSerializedIdCompressor,\n\tSerializedIdCompressorWithNoSession,\n\tSerializedIdCompressorWithOngoingSession,\n\tSerializedLocalOverrides,\n\tSerializedLocalState,\n\tSerializedSessionData,\n\tSerializedSessionIdNormalizer,\n\tUnackedLocalId,\n\tVersionedSerializedIdCompressor,\n} from './0.0.1.js';\n"]}
|
package/dist/index.d.ts
CHANGED
|
@@ -11,36 +11,36 @@
|
|
|
11
11
|
* This file represents the public API. Consumers of this library will not see exported modules unless they are enumerated here.
|
|
12
12
|
* Removing / editing existing exports here will often indicate a breaking change, so please be cognizant of changes made here.
|
|
13
13
|
*/
|
|
14
|
-
export { Build, BuildNode, BuildTreeNode, Change, ChangeType, Constraint, Detach, HasVariadicTraits, Insert, SetValue, StablePlace, StableRange, } from './ChangeTypes';
|
|
15
|
-
export { Checkout, CheckoutEvent, ICheckoutEvents, EditValidationResult } from './Checkout';
|
|
16
|
-
export { isSharedTreeEvent, sharedTreeAssertionErrorType, Result } from './Common';
|
|
17
|
-
export { EagerCheckout } from './EagerCheckout';
|
|
18
|
-
export type { OrderedEditSet, EditHandle } from './EditLog';
|
|
19
|
-
export { setTrait, areRevisionViewsSemanticallyEqual, BadPlaceValidationResult, BadRangeValidationResult, PlaceValidationResult, RangeValidationResult, RangeValidationResultKind, } from './EditUtilities';
|
|
20
|
-
export { SharedTreeDiagnosticEvent, SharedTreeEvent } from './EventTypes';
|
|
21
|
-
export { Delta, Forest, ForestNode, ParentData } from './Forest';
|
|
22
|
-
export type { CompressedId, Definition, DetachedSequenceId, EditId, InternedStringId, FinalCompressedId, LocalCompressedId, NodeId, NodeIdBrand, StableNodeId, SessionSpaceCompressedId, SessionUnique, TraitLabel, UuidString, AttributionId, } from './Identifiers';
|
|
23
|
-
export { isDetachedSequenceId } from './Identifiers';
|
|
24
|
-
export { initialTree } from './InitialTree';
|
|
25
|
-
export { LazyCheckout } from './LazyCheckout';
|
|
26
|
-
export { LogViewer } from './LogViewer';
|
|
27
|
-
export { NodeIdContext, NodeIdGenerator, NodeIdConverter } from './NodeIdUtilities';
|
|
28
|
-
export { MergeHealthStats, SharedTreeMergeHealthTelemetryHeartbeat, useFailedSequencedEditTelemetry, } from './MergeHealth';
|
|
29
|
-
export { comparePayloads } from './PayloadUtilities';
|
|
30
|
-
export { Side, EditStatus, TreeNode, TreeNodeSequence, Payload, ConstraintEffect, Edit, ChangeInternal, InternalizedChange, ChangeNode, ChangeNode_0_0_2, EditLogSummary, FluidEditHandle, SharedTreeSummaryBase, EditWithoutId, PlaceholderTree, EditBase, HasTraits, InsertInternal, DetachInternal, BuildInternal, SetValueInternal, ConstraintInternal, BuildNodeInternal, StablePlaceInternal_0_0_2, StableRangeInternal_0_0_2, NodeData, TraitMap, ChangeTypeInternal, TraitLocationInternal_0_0_2, WriteFormat, ConstraintInternal_0_0_2, StablePlaceInternal, StableRangeInternal, BuildNodeInternal_0_0_2, BuildInternal_0_0_2, InsertInternal_0_0_2, DetachInternal_0_0_2, SetValueInternal_0_0_2, TraitLocationInternal, } from './persisted-types';
|
|
31
|
-
export { ReconciliationChange, ReconciliationEdit, ReconciliationPath } from './ReconciliationPath';
|
|
32
|
-
export { Revision } from './RevisionValueCache';
|
|
33
|
-
export { RevisionView, TransactionView } from './RevisionView';
|
|
34
|
-
export { TreeNodeHandle } from './TreeNodeHandle';
|
|
35
|
-
export { getTraitLocationOfRange, placeFromStablePlace, rangeFromStableRange } from './TreeViewUtilities';
|
|
36
|
-
export { SharedTreeArgs, SharedTreeOptions, SharedTreeBaseOptions, SharedTreeOptions_0_0_2, SharedTreeOptions_0_1_1, SharedTreeFactory, SharedTree, EditCommittedHandler, SequencedEditAppliedHandler, EditCommittedEventArguments, SequencedEditAppliedEventArguments, EditApplicationOutcome, ISharedTreeEvents, StashedLocalOpMetadata, } from './SharedTree';
|
|
37
|
-
export { StringInterner } from './StringInterner';
|
|
14
|
+
export { Build, BuildNode, BuildTreeNode, Change, ChangeType, Constraint, Detach, HasVariadicTraits, Insert, SetValue, StablePlace, StableRange, } from './ChangeTypes.js';
|
|
15
|
+
export { Checkout, CheckoutEvent, ICheckoutEvents, EditValidationResult } from './Checkout.js';
|
|
16
|
+
export { isSharedTreeEvent, sharedTreeAssertionErrorType, Result } from './Common.js';
|
|
17
|
+
export { EagerCheckout } from './EagerCheckout.js';
|
|
18
|
+
export type { OrderedEditSet, EditHandle } from './EditLog.js';
|
|
19
|
+
export { setTrait, areRevisionViewsSemanticallyEqual, BadPlaceValidationResult, BadRangeValidationResult, PlaceValidationResult, RangeValidationResult, RangeValidationResultKind, } from './EditUtilities.js';
|
|
20
|
+
export { SharedTreeDiagnosticEvent, SharedTreeEvent } from './EventTypes.js';
|
|
21
|
+
export { Delta, Forest, ForestNode, ParentData } from './Forest.js';
|
|
22
|
+
export type { CompressedId, Definition, DetachedSequenceId, EditId, InternedStringId, FinalCompressedId, LocalCompressedId, NodeId, NodeIdBrand, StableNodeId, SessionSpaceCompressedId, SessionUnique, TraitLabel, UuidString, AttributionId, } from './Identifiers.js';
|
|
23
|
+
export { isDetachedSequenceId } from './Identifiers.js';
|
|
24
|
+
export { initialTree } from './InitialTree.js';
|
|
25
|
+
export { LazyCheckout } from './LazyCheckout.js';
|
|
26
|
+
export { LogViewer } from './LogViewer.js';
|
|
27
|
+
export { NodeIdContext, NodeIdGenerator, NodeIdConverter } from './NodeIdUtilities.js';
|
|
28
|
+
export { MergeHealthStats, SharedTreeMergeHealthTelemetryHeartbeat, useFailedSequencedEditTelemetry, } from './MergeHealth.js';
|
|
29
|
+
export { comparePayloads } from './PayloadUtilities.js';
|
|
30
|
+
export { Side, EditStatus, TreeNode, TreeNodeSequence, Payload, ConstraintEffect, Edit, ChangeInternal, InternalizedChange, ChangeNode, ChangeNode_0_0_2, EditLogSummary, FluidEditHandle, SharedTreeSummaryBase, EditWithoutId, PlaceholderTree, EditBase, HasTraits, InsertInternal, DetachInternal, BuildInternal, SetValueInternal, ConstraintInternal, BuildNodeInternal, StablePlaceInternal_0_0_2, StableRangeInternal_0_0_2, NodeData, TraitMap, ChangeTypeInternal, TraitLocationInternal_0_0_2, WriteFormat, ConstraintInternal_0_0_2, StablePlaceInternal, StableRangeInternal, BuildNodeInternal_0_0_2, BuildInternal_0_0_2, InsertInternal_0_0_2, DetachInternal_0_0_2, SetValueInternal_0_0_2, TraitLocationInternal, } from './persisted-types/index.js';
|
|
31
|
+
export { ReconciliationChange, ReconciliationEdit, ReconciliationPath } from './ReconciliationPath.js';
|
|
32
|
+
export { Revision } from './RevisionValueCache.js';
|
|
33
|
+
export { RevisionView, TransactionView } from './RevisionView.js';
|
|
34
|
+
export { TreeNodeHandle } from './TreeNodeHandle.js';
|
|
35
|
+
export { getTraitLocationOfRange, placeFromStablePlace, rangeFromStableRange } from './TreeViewUtilities.js';
|
|
36
|
+
export { SharedTreeArgs, SharedTreeOptions, SharedTreeBaseOptions, SharedTreeOptions_0_0_2, SharedTreeOptions_0_1_1, SharedTreeFactory, SharedTree, EditCommittedHandler, SequencedEditAppliedHandler, EditCommittedEventArguments, SequencedEditAppliedEventArguments, EditApplicationOutcome, ISharedTreeEvents, StashedLocalOpMetadata, } from './SharedTree.js';
|
|
37
|
+
export { StringInterner } from './StringInterner.js';
|
|
38
38
|
/**
|
|
39
39
|
* TODO:#61413: Publish test utilities from a separate test package
|
|
40
40
|
*/
|
|
41
|
-
export { getSerializedUploadedEditChunkContents as getUploadedEditChunkContents, getSerializedUploadedEditChunkContents, } from './SummaryTestUtilities';
|
|
42
|
-
export { Transaction, TransactionEvent, TransactionEvents } from './Transaction';
|
|
43
|
-
export { TransactionInternal, GenericTransaction, GenericTransactionPolicy, EditingResult, EditingResultBase, FailedEditingResult, ValidEditingResult, TransactionState, TransactionFailure, SucceedingTransactionState, FailingTransactionState, ChangeResult, } from './TransactionInternal';
|
|
44
|
-
export { NodeInTrait, PlaceIndex, TreeViewNode, TreeView, TraitNodeIndex, TreeViewPlace, TreeViewRange, TraitLocation, } from './TreeView';
|
|
45
|
-
export { type IMigrationEvent, type IShim, MigrationShim, MigrationShimFactory, SharedTreeShim, SharedTreeShimFactory, } from './migration-shim';
|
|
41
|
+
export { getSerializedUploadedEditChunkContents as getUploadedEditChunkContents, getSerializedUploadedEditChunkContents, } from './SummaryTestUtilities.js';
|
|
42
|
+
export { Transaction, TransactionEvent, TransactionEvents } from './Transaction.js';
|
|
43
|
+
export { TransactionInternal, GenericTransaction, GenericTransactionPolicy, EditingResult, EditingResultBase, FailedEditingResult, ValidEditingResult, TransactionState, TransactionFailure, SucceedingTransactionState, FailingTransactionState, ChangeResult, } from './TransactionInternal.js';
|
|
44
|
+
export { NodeInTrait, PlaceIndex, TreeViewNode, TreeView, TraitNodeIndex, TreeViewPlace, TreeViewRange, TraitLocation, } from './TreeView.js';
|
|
45
|
+
export { type IMigrationEvent, type IShim, MigrationShim, MigrationShimFactory, SharedTreeShim, SharedTreeShimFactory, } from './migration-shim/index.js';
|
|
46
46
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;GAIG;AAEH;;;GAGG;AAIH,OAAO,EACN,KAAK,EACL,SAAS,EACT,aAAa,EACb,MAAM,EACN,UAAU,EACV,UAAU,EACV,MAAM,EACN,iBAAiB,EACjB,MAAM,EACN,QAAQ,EACR,WAAW,EACX,WAAW,GACX,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -16,80 +16,80 @@ exports.SharedTreeShimFactory = void 0;
|
|
|
16
16
|
* Removing / editing existing exports here will often indicate a breaking change, so please be cognizant of changes made here.
|
|
17
17
|
*/
|
|
18
18
|
// API Exports
|
|
19
|
-
var
|
|
20
|
-
Object.defineProperty(exports, "Change", { enumerable: true, get: function () { return
|
|
21
|
-
Object.defineProperty(exports, "ChangeType", { enumerable: true, get: function () { return
|
|
22
|
-
Object.defineProperty(exports, "StablePlace", { enumerable: true, get: function () { return
|
|
23
|
-
Object.defineProperty(exports, "StableRange", { enumerable: true, get: function () { return
|
|
24
|
-
var
|
|
25
|
-
Object.defineProperty(exports, "Checkout", { enumerable: true, get: function () { return
|
|
26
|
-
Object.defineProperty(exports, "CheckoutEvent", { enumerable: true, get: function () { return
|
|
27
|
-
Object.defineProperty(exports, "EditValidationResult", { enumerable: true, get: function () { return
|
|
28
|
-
var
|
|
29
|
-
Object.defineProperty(exports, "isSharedTreeEvent", { enumerable: true, get: function () { return
|
|
30
|
-
Object.defineProperty(exports, "sharedTreeAssertionErrorType", { enumerable: true, get: function () { return
|
|
31
|
-
Object.defineProperty(exports, "Result", { enumerable: true, get: function () { return
|
|
32
|
-
var
|
|
33
|
-
Object.defineProperty(exports, "EagerCheckout", { enumerable: true, get: function () { return
|
|
34
|
-
var
|
|
35
|
-
Object.defineProperty(exports, "setTrait", { enumerable: true, get: function () { return
|
|
36
|
-
Object.defineProperty(exports, "areRevisionViewsSemanticallyEqual", { enumerable: true, get: function () { return
|
|
37
|
-
Object.defineProperty(exports, "PlaceValidationResult", { enumerable: true, get: function () { return
|
|
38
|
-
Object.defineProperty(exports, "RangeValidationResultKind", { enumerable: true, get: function () { return
|
|
39
|
-
var
|
|
40
|
-
Object.defineProperty(exports, "SharedTreeDiagnosticEvent", { enumerable: true, get: function () { return
|
|
41
|
-
Object.defineProperty(exports, "SharedTreeEvent", { enumerable: true, get: function () { return
|
|
42
|
-
var
|
|
43
|
-
Object.defineProperty(exports, "Forest", { enumerable: true, get: function () { return
|
|
44
|
-
var
|
|
45
|
-
Object.defineProperty(exports, "isDetachedSequenceId", { enumerable: true, get: function () { return
|
|
46
|
-
var
|
|
47
|
-
Object.defineProperty(exports, "initialTree", { enumerable: true, get: function () { return
|
|
48
|
-
var
|
|
49
|
-
Object.defineProperty(exports, "LazyCheckout", { enumerable: true, get: function () { return
|
|
50
|
-
var
|
|
51
|
-
Object.defineProperty(exports, "SharedTreeMergeHealthTelemetryHeartbeat", { enumerable: true, get: function () { return
|
|
52
|
-
Object.defineProperty(exports, "useFailedSequencedEditTelemetry", { enumerable: true, get: function () { return
|
|
53
|
-
var
|
|
54
|
-
Object.defineProperty(exports, "comparePayloads", { enumerable: true, get: function () { return
|
|
55
|
-
var
|
|
56
|
-
Object.defineProperty(exports, "Side", { enumerable: true, get: function () { return
|
|
57
|
-
Object.defineProperty(exports, "EditStatus", { enumerable: true, get: function () { return
|
|
58
|
-
Object.defineProperty(exports, "ConstraintEffect", { enumerable: true, get: function () { return
|
|
59
|
-
Object.defineProperty(exports, "ChangeInternal", { enumerable: true, get: function () { return
|
|
60
|
-
Object.defineProperty(exports, "ChangeTypeInternal", { enumerable: true, get: function () { return
|
|
61
|
-
Object.defineProperty(exports, "WriteFormat", { enumerable: true, get: function () { return
|
|
62
|
-
Object.defineProperty(exports, "StablePlaceInternal", { enumerable: true, get: function () { return
|
|
63
|
-
Object.defineProperty(exports, "StableRangeInternal", { enumerable: true, get: function () { return
|
|
64
|
-
var
|
|
65
|
-
Object.defineProperty(exports, "RevisionView", { enumerable: true, get: function () { return
|
|
66
|
-
Object.defineProperty(exports, "TransactionView", { enumerable: true, get: function () { return
|
|
67
|
-
var
|
|
68
|
-
Object.defineProperty(exports, "TreeNodeHandle", { enumerable: true, get: function () { return
|
|
69
|
-
var
|
|
70
|
-
Object.defineProperty(exports, "getTraitLocationOfRange", { enumerable: true, get: function () { return
|
|
71
|
-
Object.defineProperty(exports, "placeFromStablePlace", { enumerable: true, get: function () { return
|
|
72
|
-
Object.defineProperty(exports, "rangeFromStableRange", { enumerable: true, get: function () { return
|
|
73
|
-
var
|
|
74
|
-
Object.defineProperty(exports, "SharedTreeFactory", { enumerable: true, get: function () { return
|
|
75
|
-
Object.defineProperty(exports, "SharedTree", { enumerable: true, get: function () { return
|
|
19
|
+
var ChangeTypes_js_1 = require("./ChangeTypes.js");
|
|
20
|
+
Object.defineProperty(exports, "Change", { enumerable: true, get: function () { return ChangeTypes_js_1.Change; } });
|
|
21
|
+
Object.defineProperty(exports, "ChangeType", { enumerable: true, get: function () { return ChangeTypes_js_1.ChangeType; } });
|
|
22
|
+
Object.defineProperty(exports, "StablePlace", { enumerable: true, get: function () { return ChangeTypes_js_1.StablePlace; } });
|
|
23
|
+
Object.defineProperty(exports, "StableRange", { enumerable: true, get: function () { return ChangeTypes_js_1.StableRange; } });
|
|
24
|
+
var Checkout_js_1 = require("./Checkout.js");
|
|
25
|
+
Object.defineProperty(exports, "Checkout", { enumerable: true, get: function () { return Checkout_js_1.Checkout; } });
|
|
26
|
+
Object.defineProperty(exports, "CheckoutEvent", { enumerable: true, get: function () { return Checkout_js_1.CheckoutEvent; } });
|
|
27
|
+
Object.defineProperty(exports, "EditValidationResult", { enumerable: true, get: function () { return Checkout_js_1.EditValidationResult; } });
|
|
28
|
+
var Common_js_1 = require("./Common.js");
|
|
29
|
+
Object.defineProperty(exports, "isSharedTreeEvent", { enumerable: true, get: function () { return Common_js_1.isSharedTreeEvent; } });
|
|
30
|
+
Object.defineProperty(exports, "sharedTreeAssertionErrorType", { enumerable: true, get: function () { return Common_js_1.sharedTreeAssertionErrorType; } });
|
|
31
|
+
Object.defineProperty(exports, "Result", { enumerable: true, get: function () { return Common_js_1.Result; } });
|
|
32
|
+
var EagerCheckout_js_1 = require("./EagerCheckout.js");
|
|
33
|
+
Object.defineProperty(exports, "EagerCheckout", { enumerable: true, get: function () { return EagerCheckout_js_1.EagerCheckout; } });
|
|
34
|
+
var EditUtilities_js_1 = require("./EditUtilities.js");
|
|
35
|
+
Object.defineProperty(exports, "setTrait", { enumerable: true, get: function () { return EditUtilities_js_1.setTrait; } });
|
|
36
|
+
Object.defineProperty(exports, "areRevisionViewsSemanticallyEqual", { enumerable: true, get: function () { return EditUtilities_js_1.areRevisionViewsSemanticallyEqual; } });
|
|
37
|
+
Object.defineProperty(exports, "PlaceValidationResult", { enumerable: true, get: function () { return EditUtilities_js_1.PlaceValidationResult; } });
|
|
38
|
+
Object.defineProperty(exports, "RangeValidationResultKind", { enumerable: true, get: function () { return EditUtilities_js_1.RangeValidationResultKind; } });
|
|
39
|
+
var EventTypes_js_1 = require("./EventTypes.js");
|
|
40
|
+
Object.defineProperty(exports, "SharedTreeDiagnosticEvent", { enumerable: true, get: function () { return EventTypes_js_1.SharedTreeDiagnosticEvent; } });
|
|
41
|
+
Object.defineProperty(exports, "SharedTreeEvent", { enumerable: true, get: function () { return EventTypes_js_1.SharedTreeEvent; } });
|
|
42
|
+
var Forest_js_1 = require("./Forest.js");
|
|
43
|
+
Object.defineProperty(exports, "Forest", { enumerable: true, get: function () { return Forest_js_1.Forest; } });
|
|
44
|
+
var Identifiers_js_1 = require("./Identifiers.js");
|
|
45
|
+
Object.defineProperty(exports, "isDetachedSequenceId", { enumerable: true, get: function () { return Identifiers_js_1.isDetachedSequenceId; } });
|
|
46
|
+
var InitialTree_js_1 = require("./InitialTree.js");
|
|
47
|
+
Object.defineProperty(exports, "initialTree", { enumerable: true, get: function () { return InitialTree_js_1.initialTree; } });
|
|
48
|
+
var LazyCheckout_js_1 = require("./LazyCheckout.js");
|
|
49
|
+
Object.defineProperty(exports, "LazyCheckout", { enumerable: true, get: function () { return LazyCheckout_js_1.LazyCheckout; } });
|
|
50
|
+
var MergeHealth_js_1 = require("./MergeHealth.js");
|
|
51
|
+
Object.defineProperty(exports, "SharedTreeMergeHealthTelemetryHeartbeat", { enumerable: true, get: function () { return MergeHealth_js_1.SharedTreeMergeHealthTelemetryHeartbeat; } });
|
|
52
|
+
Object.defineProperty(exports, "useFailedSequencedEditTelemetry", { enumerable: true, get: function () { return MergeHealth_js_1.useFailedSequencedEditTelemetry; } });
|
|
53
|
+
var PayloadUtilities_js_1 = require("./PayloadUtilities.js");
|
|
54
|
+
Object.defineProperty(exports, "comparePayloads", { enumerable: true, get: function () { return PayloadUtilities_js_1.comparePayloads; } });
|
|
55
|
+
var index_js_1 = require("./persisted-types/index.js");
|
|
56
|
+
Object.defineProperty(exports, "Side", { enumerable: true, get: function () { return index_js_1.Side; } });
|
|
57
|
+
Object.defineProperty(exports, "EditStatus", { enumerable: true, get: function () { return index_js_1.EditStatus; } });
|
|
58
|
+
Object.defineProperty(exports, "ConstraintEffect", { enumerable: true, get: function () { return index_js_1.ConstraintEffect; } });
|
|
59
|
+
Object.defineProperty(exports, "ChangeInternal", { enumerable: true, get: function () { return index_js_1.ChangeInternal; } });
|
|
60
|
+
Object.defineProperty(exports, "ChangeTypeInternal", { enumerable: true, get: function () { return index_js_1.ChangeTypeInternal; } });
|
|
61
|
+
Object.defineProperty(exports, "WriteFormat", { enumerable: true, get: function () { return index_js_1.WriteFormat; } });
|
|
62
|
+
Object.defineProperty(exports, "StablePlaceInternal", { enumerable: true, get: function () { return index_js_1.StablePlaceInternal; } });
|
|
63
|
+
Object.defineProperty(exports, "StableRangeInternal", { enumerable: true, get: function () { return index_js_1.StableRangeInternal; } });
|
|
64
|
+
var RevisionView_js_1 = require("./RevisionView.js");
|
|
65
|
+
Object.defineProperty(exports, "RevisionView", { enumerable: true, get: function () { return RevisionView_js_1.RevisionView; } });
|
|
66
|
+
Object.defineProperty(exports, "TransactionView", { enumerable: true, get: function () { return RevisionView_js_1.TransactionView; } });
|
|
67
|
+
var TreeNodeHandle_js_1 = require("./TreeNodeHandle.js");
|
|
68
|
+
Object.defineProperty(exports, "TreeNodeHandle", { enumerable: true, get: function () { return TreeNodeHandle_js_1.TreeNodeHandle; } });
|
|
69
|
+
var TreeViewUtilities_js_1 = require("./TreeViewUtilities.js");
|
|
70
|
+
Object.defineProperty(exports, "getTraitLocationOfRange", { enumerable: true, get: function () { return TreeViewUtilities_js_1.getTraitLocationOfRange; } });
|
|
71
|
+
Object.defineProperty(exports, "placeFromStablePlace", { enumerable: true, get: function () { return TreeViewUtilities_js_1.placeFromStablePlace; } });
|
|
72
|
+
Object.defineProperty(exports, "rangeFromStableRange", { enumerable: true, get: function () { return TreeViewUtilities_js_1.rangeFromStableRange; } });
|
|
73
|
+
var SharedTree_js_1 = require("./SharedTree.js");
|
|
74
|
+
Object.defineProperty(exports, "SharedTreeFactory", { enumerable: true, get: function () { return SharedTree_js_1.SharedTreeFactory; } });
|
|
75
|
+
Object.defineProperty(exports, "SharedTree", { enumerable: true, get: function () { return SharedTree_js_1.SharedTree; } });
|
|
76
76
|
/**
|
|
77
77
|
* TODO:#61413: Publish test utilities from a separate test package
|
|
78
78
|
*/
|
|
79
|
-
var
|
|
80
|
-
Object.defineProperty(exports, "getUploadedEditChunkContents", { enumerable: true, get: function () { return
|
|
81
|
-
Object.defineProperty(exports, "getSerializedUploadedEditChunkContents", { enumerable: true, get: function () { return
|
|
82
|
-
var
|
|
83
|
-
Object.defineProperty(exports, "Transaction", { enumerable: true, get: function () { return
|
|
84
|
-
Object.defineProperty(exports, "TransactionEvent", { enumerable: true, get: function () { return
|
|
85
|
-
var
|
|
86
|
-
Object.defineProperty(exports, "TransactionInternal", { enumerable: true, get: function () { return
|
|
87
|
-
Object.defineProperty(exports, "GenericTransaction", { enumerable: true, get: function () { return
|
|
88
|
-
var
|
|
89
|
-
Object.defineProperty(exports, "TreeView", { enumerable: true, get: function () { return
|
|
90
|
-
var
|
|
91
|
-
Object.defineProperty(exports, "MigrationShim", { enumerable: true, get: function () { return
|
|
92
|
-
Object.defineProperty(exports, "MigrationShimFactory", { enumerable: true, get: function () { return
|
|
93
|
-
Object.defineProperty(exports, "SharedTreeShim", { enumerable: true, get: function () { return
|
|
94
|
-
Object.defineProperty(exports, "SharedTreeShimFactory", { enumerable: true, get: function () { return
|
|
79
|
+
var SummaryTestUtilities_js_1 = require("./SummaryTestUtilities.js");
|
|
80
|
+
Object.defineProperty(exports, "getUploadedEditChunkContents", { enumerable: true, get: function () { return SummaryTestUtilities_js_1.getSerializedUploadedEditChunkContents; } });
|
|
81
|
+
Object.defineProperty(exports, "getSerializedUploadedEditChunkContents", { enumerable: true, get: function () { return SummaryTestUtilities_js_1.getSerializedUploadedEditChunkContents; } });
|
|
82
|
+
var Transaction_js_1 = require("./Transaction.js");
|
|
83
|
+
Object.defineProperty(exports, "Transaction", { enumerable: true, get: function () { return Transaction_js_1.Transaction; } });
|
|
84
|
+
Object.defineProperty(exports, "TransactionEvent", { enumerable: true, get: function () { return Transaction_js_1.TransactionEvent; } });
|
|
85
|
+
var TransactionInternal_js_1 = require("./TransactionInternal.js");
|
|
86
|
+
Object.defineProperty(exports, "TransactionInternal", { enumerable: true, get: function () { return TransactionInternal_js_1.TransactionInternal; } });
|
|
87
|
+
Object.defineProperty(exports, "GenericTransaction", { enumerable: true, get: function () { return TransactionInternal_js_1.GenericTransaction; } });
|
|
88
|
+
var TreeView_js_1 = require("./TreeView.js");
|
|
89
|
+
Object.defineProperty(exports, "TreeView", { enumerable: true, get: function () { return TreeView_js_1.TreeView; } });
|
|
90
|
+
var index_js_2 = require("./migration-shim/index.js");
|
|
91
|
+
Object.defineProperty(exports, "MigrationShim", { enumerable: true, get: function () { return index_js_2.MigrationShim; } });
|
|
92
|
+
Object.defineProperty(exports, "MigrationShimFactory", { enumerable: true, get: function () { return index_js_2.MigrationShimFactory; } });
|
|
93
|
+
Object.defineProperty(exports, "SharedTreeShim", { enumerable: true, get: function () { return index_js_2.SharedTreeShim; } });
|
|
94
|
+
Object.defineProperty(exports, "SharedTreeShimFactory", { enumerable: true, get: function () { return index_js_2.SharedTreeShimFactory; } });
|
|
95
95
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;AAEH;;;;GAIG;AAEH;;;GAGG;AAEH,cAAc;AAEd,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;AAEH;;;;GAIG;AAEH;;;GAGG;AAEH,cAAc;AAEd,mDAa0B;AATzB,wGAAA,MAAM,OAAA;AACN,4GAAA,UAAU,OAAA;AAMV,6GAAA,WAAW,OAAA;AACX,6GAAA,WAAW,OAAA;AAEZ,6CAA+F;AAAtF,uGAAA,QAAQ,OAAA;AAAE,4GAAA,aAAa,OAAA;AAAmB,mHAAA,oBAAoB,OAAA;AACvE,yCAAsF;AAA7E,8GAAA,iBAAiB,OAAA;AAAE,yHAAA,4BAA4B,OAAA;AAAE,mGAAA,MAAM,OAAA;AAChE,uDAAmD;AAA1C,iHAAA,aAAa,OAAA;AAEtB,uDAQ4B;AAP3B,4GAAA,QAAQ,OAAA;AACR,qIAAA,iCAAiC,OAAA;AAGjC,yHAAA,qBAAqB,OAAA;AAErB,6HAAA,yBAAyB,OAAA;AAE1B,iDAA6E;AAApE,0HAAA,yBAAyB,OAAA;AAAE,gHAAA,eAAe,OAAA;AACnD,yCAAoE;AAApD,mGAAA,MAAM,OAAA;AAkBtB,mDAAwD;AAA/C,sHAAA,oBAAoB,OAAA;AAC7B,mDAA+C;AAAtC,6GAAA,WAAW,OAAA;AACpB,qDAAiD;AAAxC,+GAAA,YAAY,OAAA;AAGrB,mDAI0B;AAFzB,yIAAA,uCAAuC,OAAA;AACvC,iIAAA,+BAA+B,OAAA;AAEhC,6DAAwD;AAA/C,sHAAA,eAAe,OAAA;AACxB,uDAyCoC;AAxCnC,gGAAA,IAAI,OAAA;AACJ,sGAAA,UAAU,OAAA;AAIV,4GAAA,gBAAgB,OAAA;AAEhB,0GAAA,cAAc,OAAA;AAqBd,8GAAA,kBAAkB,OAAA;AAElB,uGAAA,WAAW,OAAA;AAEX,+GAAA,mBAAmB,OAAA;AACnB,+GAAA,mBAAmB,OAAA;AAUpB,qDAAkE;AAAzD,+GAAA,YAAY,OAAA;AAAE,kHAAA,eAAe,OAAA;AACtC,yDAAqD;AAA5C,mHAAA,cAAc,OAAA;AACvB,+DAA6G;AAApG,+HAAA,uBAAuB,OAAA;AAAE,4HAAA,oBAAoB,OAAA;AAAE,4HAAA,oBAAoB,OAAA;AAC5E,iDAeyB;AATxB,kHAAA,iBAAiB,OAAA;AACjB,2GAAA,UAAU,OAAA;AAWX;;GAEG;AACH,qEAGmC;AAFlC,uIAAA,sCAAsC,OAAgC;AACtE,iJAAA,sCAAsC,OAAA;AAGvC,mDAAoF;AAA3E,6GAAA,WAAW,OAAA;AAAE,kHAAA,gBAAgB,OAAA;AACtC,mEAakC;AAZjC,6HAAA,mBAAmB,OAAA;AACnB,4HAAA,kBAAkB,OAAA;AAYnB,6CASuB;AALtB,uGAAA,QAAQ,OAAA;AAOT,sDAOmC;AAJlC,yGAAA,aAAa,OAAA;AACb,gHAAA,oBAAoB,OAAA;AACpB,0GAAA,cAAc,OAAA;AACd,iHAAA,qBAAqB,OAAA","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * Fluid DDS storing a tree.\n *\n * @packageDocumentation\n */\n\n/**\n * This file represents the public API. Consumers of this library will not see exported modules unless they are enumerated here.\n * Removing / editing existing exports here will often indicate a breaking change, so please be cognizant of changes made here.\n */\n\n// API Exports\n\nexport {\n\tBuild,\n\tBuildNode,\n\tBuildTreeNode,\n\tChange,\n\tChangeType,\n\tConstraint,\n\tDetach,\n\tHasVariadicTraits,\n\tInsert,\n\tSetValue,\n\tStablePlace,\n\tStableRange,\n} from './ChangeTypes.js';\nexport { Checkout, CheckoutEvent, ICheckoutEvents, EditValidationResult } from './Checkout.js';\nexport { isSharedTreeEvent, sharedTreeAssertionErrorType, Result } from './Common.js';\nexport { EagerCheckout } from './EagerCheckout.js';\nexport type { OrderedEditSet, EditHandle } from './EditLog.js';\nexport {\n\tsetTrait,\n\tareRevisionViewsSemanticallyEqual,\n\tBadPlaceValidationResult,\n\tBadRangeValidationResult,\n\tPlaceValidationResult,\n\tRangeValidationResult,\n\tRangeValidationResultKind,\n} from './EditUtilities.js';\nexport { SharedTreeDiagnosticEvent, SharedTreeEvent } from './EventTypes.js';\nexport { Delta, Forest, ForestNode, ParentData } from './Forest.js';\nexport type {\n\tCompressedId,\n\tDefinition,\n\tDetachedSequenceId,\n\tEditId,\n\tInternedStringId,\n\tFinalCompressedId,\n\tLocalCompressedId,\n\tNodeId,\n\tNodeIdBrand,\n\tStableNodeId,\n\tSessionSpaceCompressedId,\n\tSessionUnique,\n\tTraitLabel,\n\tUuidString,\n\tAttributionId,\n} from './Identifiers.js';\nexport { isDetachedSequenceId } from './Identifiers.js';\nexport { initialTree } from './InitialTree.js';\nexport { LazyCheckout } from './LazyCheckout.js';\nexport { LogViewer } from './LogViewer.js';\nexport { NodeIdContext, NodeIdGenerator, NodeIdConverter } from './NodeIdUtilities.js';\nexport {\n\tMergeHealthStats,\n\tSharedTreeMergeHealthTelemetryHeartbeat,\n\tuseFailedSequencedEditTelemetry,\n} from './MergeHealth.js';\nexport { comparePayloads } from './PayloadUtilities.js';\nexport {\n\tSide,\n\tEditStatus,\n\tTreeNode,\n\tTreeNodeSequence,\n\tPayload,\n\tConstraintEffect,\n\tEdit,\n\tChangeInternal,\n\tInternalizedChange,\n\tChangeNode,\n\tChangeNode_0_0_2,\n\tEditLogSummary,\n\tFluidEditHandle,\n\tSharedTreeSummaryBase,\n\tEditWithoutId,\n\tPlaceholderTree,\n\tEditBase,\n\tHasTraits,\n\tInsertInternal,\n\tDetachInternal,\n\tBuildInternal,\n\tSetValueInternal,\n\tConstraintInternal,\n\tBuildNodeInternal,\n\tStablePlaceInternal_0_0_2,\n\tStableRangeInternal_0_0_2,\n\tNodeData,\n\tTraitMap,\n\tChangeTypeInternal,\n\tTraitLocationInternal_0_0_2,\n\tWriteFormat,\n\tConstraintInternal_0_0_2,\n\tStablePlaceInternal,\n\tStableRangeInternal,\n\tBuildNodeInternal_0_0_2,\n\tBuildInternal_0_0_2,\n\tInsertInternal_0_0_2,\n\tDetachInternal_0_0_2,\n\tSetValueInternal_0_0_2,\n\tTraitLocationInternal,\n} from './persisted-types/index.js';\nexport { ReconciliationChange, ReconciliationEdit, ReconciliationPath } from './ReconciliationPath.js';\nexport { Revision } from './RevisionValueCache.js';\nexport { RevisionView, TransactionView } from './RevisionView.js';\nexport { TreeNodeHandle } from './TreeNodeHandle.js';\nexport { getTraitLocationOfRange, placeFromStablePlace, rangeFromStableRange } from './TreeViewUtilities.js';\nexport {\n\tSharedTreeArgs,\n\tSharedTreeOptions,\n\tSharedTreeBaseOptions,\n\tSharedTreeOptions_0_0_2,\n\tSharedTreeOptions_0_1_1,\n\tSharedTreeFactory,\n\tSharedTree,\n\tEditCommittedHandler,\n\tSequencedEditAppliedHandler,\n\tEditCommittedEventArguments,\n\tSequencedEditAppliedEventArguments,\n\tEditApplicationOutcome,\n\tISharedTreeEvents,\n\tStashedLocalOpMetadata,\n} from './SharedTree.js';\nexport { StringInterner } from './StringInterner.js';\n\n/**\n * TODO:#61413: Publish test utilities from a separate test package\n */\nexport {\n\tgetSerializedUploadedEditChunkContents as getUploadedEditChunkContents,\n\tgetSerializedUploadedEditChunkContents,\n} from './SummaryTestUtilities.js';\n\nexport { Transaction, TransactionEvent, TransactionEvents } from './Transaction.js';\nexport {\n\tTransactionInternal,\n\tGenericTransaction,\n\tGenericTransactionPolicy,\n\tEditingResult,\n\tEditingResultBase,\n\tFailedEditingResult,\n\tValidEditingResult,\n\tTransactionState,\n\tTransactionFailure,\n\tSucceedingTransactionState,\n\tFailingTransactionState,\n\tChangeResult,\n} from './TransactionInternal.js';\nexport {\n\tNodeInTrait,\n\tPlaceIndex,\n\tTreeViewNode,\n\tTreeView,\n\tTraitNodeIndex,\n\tTreeViewPlace,\n\tTreeViewRange,\n\tTraitLocation,\n} from './TreeView.js';\n\nexport {\n\ttype IMigrationEvent,\n\ttype IShim,\n\tMigrationShim,\n\tMigrationShimFactory,\n\tSharedTreeShim,\n\tSharedTreeShimFactory,\n} from './migration-shim/index.js';\n"]}
|
|
@@ -33,7 +33,7 @@ export declare class MigrationShimDeltaHandler implements IShimDeltaHandler {
|
|
|
33
33
|
process(message: ISequencedDocumentMessage, local: boolean, localOpMetadata: unknown): void;
|
|
34
34
|
setConnectionState(connected: boolean): void;
|
|
35
35
|
reSubmit(contents: unknown, localOpMetadata: unknown): void;
|
|
36
|
-
applyStashedOp(contents: unknown):
|
|
36
|
+
applyStashedOp(contents: unknown): void;
|
|
37
37
|
rollback?(contents: unknown, localOpMetadata: unknown): void;
|
|
38
38
|
private isInV1StateAndIsBarrierOp;
|
|
39
39
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrationDeltaHandler.d.ts","sourceRoot":"","sources":["../../src/migration-shim/migrationDeltaHandler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAe,KAAK,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AACnG,OAAO,EAAE,KAAK,kBAAkB,EAAE,KAAK,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAEpG,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAGtE;;;;;;;;GAQG;AACH,qBAAa,yBAA0B,YAAW,iBAAiB;aAKjD,gBAAgB,EAAE,CACjC,OAAO,EAAE,yBAAyB,EAClC,KAAK,EAAE,OAAO,EACd,eAAe,EAAE,OAAO,KACpB,OAAO;IACZ,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU;IAV5B,OAAO,CAAC,iBAAiB,CAAC,CAAgB;IAC1C,OAAO,CAAC,cAAc,CAAC,CAAgB;gBAGtB,gBAAgB,EAAE,CACjC,OAAO,EAAE,yBAAyB,EAClC,KAAK,EAAE,OAAO,EACd,eAAe,EAAE,OAAO,KACpB,OAAO,EACK,kBAAkB,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,EAClD,UAAU,EAAE,kBAAkB;IAGzC,mBAAmB,IAAI,OAAO;IAIrC,OAAO,KAAK,gBAAgB,GAI3B;IAED,OAAO,CAAC,SAAS,CAAS;IAC1B,IAAW,QAAQ,IAAI,OAAO,CAE7B;IAEM,YAAY,IAAI,IAAI;IAIpB,gBAAgB,IAAI,OAAO;IAM3B,YAAY,IAAI,OAAO;IAIvB,YAAY,IAAI,OAAO;IAOvB,sBAAsB,CAAC,gBAAgB,EAAE,aAAa,GAAG,IAAI;IAW7D,OAAO,CAAC,OAAO,EAAE,yBAAyB,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"migrationDeltaHandler.d.ts","sourceRoot":"","sources":["../../src/migration-shim/migrationDeltaHandler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAe,KAAK,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AACnG,OAAO,EAAE,KAAK,kBAAkB,EAAE,KAAK,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAEpG,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAGtE;;;;;;;;GAQG;AACH,qBAAa,yBAA0B,YAAW,iBAAiB;aAKjD,gBAAgB,EAAE,CACjC,OAAO,EAAE,yBAAyB,EAClC,KAAK,EAAE,OAAO,EACd,eAAe,EAAE,OAAO,KACpB,OAAO;IACZ,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU;IAV5B,OAAO,CAAC,iBAAiB,CAAC,CAAgB;IAC1C,OAAO,CAAC,cAAc,CAAC,CAAgB;gBAGtB,gBAAgB,EAAE,CACjC,OAAO,EAAE,yBAAyB,EAClC,KAAK,EAAE,OAAO,EACd,eAAe,EAAE,OAAO,KACpB,OAAO,EACK,kBAAkB,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,EAClD,UAAU,EAAE,kBAAkB;IAGzC,mBAAmB,IAAI,OAAO;IAIrC,OAAO,KAAK,gBAAgB,GAI3B;IAED,OAAO,CAAC,SAAS,CAAS;IAC1B,IAAW,QAAQ,IAAI,OAAO,CAE7B;IAEM,YAAY,IAAI,IAAI;IAIpB,gBAAgB,IAAI,OAAO;IAM3B,YAAY,IAAI,OAAO;IAIvB,YAAY,IAAI,OAAO;IAOvB,sBAAsB,CAAC,gBAAgB,EAAE,aAAa,GAAG,IAAI;IAW7D,OAAO,CAAC,OAAO,EAAE,yBAAyB,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,GAAG,IAAI;IAoB3F,kBAAkB,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI;IAI5C,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,GAAG,IAAI;IAa3D,cAAc,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI;IAcvC,QAAQ,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,GAAG,IAAI;IAQnE,OAAO,CAAC,yBAAyB;IAIjC;;;;;OAKG;IACH,OAAO,CAAC,YAAY;CAmBpB"}
|
|
@@ -68,9 +68,7 @@ class MigrationShimDeltaHandler {
|
|
|
68
68
|
process(message, local, localOpMetadata) {
|
|
69
69
|
// This allows us to process the migrate op and prevent the shared object from processing the wrong ops
|
|
70
70
|
(0, core_utils_1.assert)(!this.isPreAttachState(), 0x82c /* Can't process ops before attaching tree handler */);
|
|
71
|
-
if (
|
|
72
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison
|
|
73
|
-
message.type !== protocol_definitions_1.MessageType.Operation) {
|
|
71
|
+
if (message.type !== protocol_definitions_1.MessageType.Operation) {
|
|
74
72
|
return;
|
|
75
73
|
}
|
|
76
74
|
const contents = message.contents;
|
|
@@ -101,12 +99,11 @@ class MigrationShimDeltaHandler {
|
|
|
101
99
|
applyStashedOp(contents) {
|
|
102
100
|
const opContents = contents;
|
|
103
101
|
if (this.isInV1StateAndIsBarrierOp(opContents)) {
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
if (this.shouldDropOp(opContents)) {
|
|
107
|
-
return undefined;
|
|
102
|
+
this.submitLocalMessage(opContents);
|
|
103
|
+
return;
|
|
108
104
|
}
|
|
109
|
-
|
|
105
|
+
(0, core_utils_1.assert)(!this.shouldDropOp(opContents), 0x8aa /* MigrationShim should not be able to apply v1 ops as they shouldn't have been created locally. */);
|
|
106
|
+
this.treeDeltaHandler.applyStashedOp(contents);
|
|
110
107
|
}
|
|
111
108
|
rollback(contents, localOpMetadata) {
|
|
112
109
|
const opContents = contents;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrationDeltaHandler.js","sourceRoot":"","sources":["../../src/migration-shim/migrationDeltaHandler.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { MessageType, type ISequencedDocumentMessage } from '@fluidframework/protocol-definitions';\nimport { type IChannelAttributes, type IDeltaHandler } from '@fluidframework/datastore-definitions';\nimport { assert } from '@fluidframework/core-utils';\nimport { type IOpContents, type IShimDeltaHandler } from './types.js';\nimport { attributesMatch, isBarrierOp, isStampedOp } from './utils.js';\n\n/**\n * Handles incoming and outgoing deltas/ops for the Migration Shim distributed data structure.\n * Intercepts processing of ops to allow for migration, and swapping from LegacySharedTree to new SharedTree\n *\n * Able to process v1 and v2 ops, differentiate between them, understand the various states and drop v1 ops after\n * migration.\n *\n * TODO: After the MSN of the barrier op, it needs to process v2 ops without needing to check for the v2 stamp.\n */\nexport class MigrationShimDeltaHandler implements IShimDeltaHandler {\n\tprivate legacyTreeHandler?: IDeltaHandler;\n\tprivate newTreeHandler?: IDeltaHandler;\n\tpublic constructor(\n\t\t// Maybe it would be better to pass in a different interface?\n\t\tpublic readonly processMigrateOp: (\n\t\t\tmessage: ISequencedDocumentMessage,\n\t\t\tlocal: boolean,\n\t\t\tlocalOpMetadata: unknown\n\t\t) => boolean,\n\t\tprivate readonly submitLocalMessage: (message: IOpContents) => void,\n\t\tprivate readonly attributes: IChannelAttributes\n\t) {}\n\t// Introduction of invariant, we always expect an old handler.\n\tpublic hasTreeDeltaHandler(): boolean {\n\t\treturn this.legacyTreeHandler !== undefined;\n\t}\n\n\tprivate get treeDeltaHandler(): IDeltaHandler {\n\t\tconst handler = this.newTreeHandler ?? this.legacyTreeHandler;\n\t\tassert(handler !== undefined, 0x7e2 /* No handler to process op */);\n\t\treturn handler;\n\t}\n\n\tprivate _attached = false;\n\tpublic get attached(): boolean {\n\t\treturn this._attached;\n\t}\n\n\tpublic markAttached(): void {\n\t\tthis._attached = true;\n\t}\n\n\tpublic isPreAttachState(): boolean {\n\t\tconst preAttach = this.legacyTreeHandler === undefined && this.newTreeHandler === undefined;\n\t\tassert(!preAttach || !this.attached, 0x82a /* Should not be attached in preAttach state */);\n\t\treturn preAttach;\n\t}\n\n\tpublic isUsingOldV1(): boolean {\n\t\treturn this.legacyTreeHandler !== undefined && this.newTreeHandler === undefined;\n\t}\n\n\tpublic isUsingNewV2(): boolean {\n\t\tconst isUsingV2 = this.legacyTreeHandler !== undefined && this.newTreeHandler !== undefined;\n\t\tassert(!isUsingV2 || this.attached, 0x82b /* Should be attached if in v2 state */);\n\t\treturn isUsingV2;\n\t}\n\n\t// Allow for the handler to be swapped out for the new SharedTree's handler\n\tpublic attachTreeDeltaHandler(treeDeltaHandler: IDeltaHandler): void {\n\t\tassert(!this.isUsingNewV2(), 0x7e3 /* Can't swap tree handlers more than once! */);\n\t\tif (this.isPreAttachState()) {\n\t\t\tthis.legacyTreeHandler = treeDeltaHandler;\n\t\t\treturn;\n\t\t}\n\t\tassert(this.isUsingOldV1(), 0x7e4 /* Can only swap handlers after the old handler is loaded */);\n\t\tthis.newTreeHandler = treeDeltaHandler;\n\t\tassert(this.isUsingNewV2(), 0x7e5 /* Should be using new handler after swap */);\n\t}\n\n\tpublic process(message: ISequencedDocumentMessage, local: boolean, localOpMetadata: unknown): void {\n\t\t// This allows us to process the migrate op and prevent the shared object from processing the wrong ops\n\t\tassert(!this.isPreAttachState(), 0x82c /* Can't process ops before attaching tree handler */);\n\t\tif (\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison\n\t\t\tmessage.type !== MessageType.Operation\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst contents = message.contents as IOpContents;\n\t\tif (this.isInV1StateAndIsBarrierOp(contents)) {\n\t\t\tthis.processMigrateOp(message, local, localOpMetadata);\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.shouldDropOp(contents)) {\n\t\t\treturn;\n\t\t}\n\t\t// Another thought, flatten the IShimDeltaHandler and the MigrationShim into one class\n\t\treturn this.treeDeltaHandler.process(message, local, localOpMetadata);\n\t}\n\n\tpublic setConnectionState(connected: boolean): void {\n\t\treturn this.treeDeltaHandler.setConnectionState(connected);\n\t}\n\n\tpublic reSubmit(contents: unknown, localOpMetadata: unknown): void {\n\t\tconst opContents = contents as IOpContents;\n\t\tif (this.isInV1StateAndIsBarrierOp(opContents)) {\n\t\t\tthis.submitLocalMessage(opContents);\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.shouldDropOp(opContents)) {\n\t\t\treturn;\n\t\t}\n\t\treturn this.treeDeltaHandler.reSubmit(contents, localOpMetadata);\n\t}\n\n\tpublic applyStashedOp(contents: unknown): unknown {\n\t\tconst opContents = contents as IOpContents;\n\t\tif (this.isInV1StateAndIsBarrierOp(opContents)) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (this.shouldDropOp(opContents)) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn this.treeDeltaHandler.applyStashedOp(contents);\n\t}\n\n\tpublic rollback?(contents: unknown, localOpMetadata: unknown): void {\n\t\tconst opContents = contents as IOpContents;\n\t\tif (isBarrierOp(opContents)) {\n\t\t\tthrow new Error('MigrationShim does not support rollback of barrier ops');\n\t\t}\n\t\treturn this.treeDeltaHandler.rollback?.(contents, localOpMetadata);\n\t}\n\n\tprivate isInV1StateAndIsBarrierOp(contents: IOpContents): boolean {\n\t\treturn this.isUsingOldV1() && isBarrierOp(contents);\n\t}\n\n\t/**\n\t * We should drop an op when we are v2 state and the op is a v1 op or a migrate op.\n\t *\n\t * @param contents - op contents we expect to interrogate, this could be anything\n\t * @returns whether or not we should drop the op\n\t */\n\tprivate shouldDropOp(contents: IOpContents): boolean {\n\t\tassert(!this.isPreAttachState(), 0x82d /* Can't process ops before attaching tree handler */);\n\t\t// Don't drop ops when we are in v1 state\n\t\tif (this.isUsingOldV1()) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Drop v1 ops when in v2 state\n\t\tif (!isStampedOp(contents)) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Don't drop v2 ops in v2 state\n\t\tassert(\n\t\t\tattributesMatch(contents.fluidMigrationStamp, this.attributes),\n\t\t\t0x82e /* Unexpected v2 op with mismatched attributes */\n\t\t);\n\t\treturn false;\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"migrationDeltaHandler.js","sourceRoot":"","sources":["../../src/migration-shim/migrationDeltaHandler.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,+EAAmG;AAEnG,2DAAoD;AAEpD,yCAAuE;AAEvE;;;;;;;;GAQG;AACH,MAAa,yBAAyB;IAGrC;IACC,6DAA6D;IAC7C,gBAIJ,EACK,kBAAkD,EAClD,UAA8B;QAN/B,qBAAgB,GAAhB,gBAAgB,CAIpB;QACK,uBAAkB,GAAlB,kBAAkB,CAAgC;QAClD,eAAU,GAAV,UAAU,CAAoB;QAaxC,cAAS,GAAG,KAAK,CAAC;IAZvB,CAAC;IACJ,8DAA8D;IACvD,mBAAmB;QACzB,OAAO,IAAI,CAAC,iBAAiB,KAAK,SAAS,CAAC;IAC7C,CAAC;IAED,IAAY,gBAAgB;QAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,iBAAiB,CAAC;QAC9D,IAAA,mBAAM,EAAC,OAAO,KAAK,SAAS,EAAE,KAAK,CAAC,8BAA8B,CAAC,CAAC;QACpE,OAAO,OAAO,CAAC;IAChB,CAAC;IAGD,IAAW,QAAQ;QAClB,OAAO,IAAI,CAAC,SAAS,CAAC;IACvB,CAAC;IAEM,YAAY;QAClB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACvB,CAAC;IAEM,gBAAgB;QACtB,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,KAAK,SAAS,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS,CAAC;QAC5F,IAAA,mBAAM,EAAC,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,+CAA+C,CAAC,CAAC;QAC5F,OAAO,SAAS,CAAC;IAClB,CAAC;IAEM,YAAY;QAClB,OAAO,IAAI,CAAC,iBAAiB,KAAK,SAAS,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS,CAAC;IAClF,CAAC;IAEM,YAAY;QAClB,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,KAAK,SAAS,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS,CAAC;QAC5F,IAAA,mBAAM,EAAC,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,uCAAuC,CAAC,CAAC;QACnF,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,2EAA2E;IACpE,sBAAsB,CAAC,gBAA+B;QAC5D,IAAA,mBAAM,EAAC,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,KAAK,CAAC,8CAA8C,CAAC,CAAC;QACnF,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE;YAC5B,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;YAC1C,OAAO;SACP;QACD,IAAA,mBAAM,EAAC,IAAI,CAAC,YAAY,EAAE,EAAE,KAAK,CAAC,4DAA4D,CAAC,CAAC;QAChG,IAAI,CAAC,cAAc,GAAG,gBAAgB,CAAC;QACvC,IAAA,mBAAM,EAAC,IAAI,CAAC,YAAY,EAAE,EAAE,KAAK,CAAC,4CAA4C,CAAC,CAAC;IACjF,CAAC;IAEM,OAAO,CAAC,OAAkC,EAAE,KAAc,EAAE,eAAwB;QAC1F,uGAAuG;QACvG,IAAA,mBAAM,EAAC,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,KAAK,CAAC,qDAAqD,CAAC,CAAC;QAC9F,IAAI,OAAO,CAAC,IAAI,KAAK,kCAAW,CAAC,SAAS,EAAE;YAC3C,OAAO;SACP;QAED,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAuB,CAAC;QACjD,IAAI,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,EAAE;YAC7C,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC;YACvD,OAAO;SACP;QAED,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE;YAChC,OAAO;SACP;QACD,sFAAsF;QACtF,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC;IACvE,CAAC;IAEM,kBAAkB,CAAC,SAAkB;QAC3C,OAAO,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAC5D,CAAC;IAEM,QAAQ,CAAC,QAAiB,EAAE,eAAwB;QAC1D,MAAM,UAAU,GAAG,QAAuB,CAAC;QAC3C,IAAI,IAAI,CAAC,yBAAyB,CAAC,UAAU,CAAC,EAAE;YAC/C,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;YACpC,OAAO;SACP;QAED,IAAI,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE;YAClC,OAAO;SACP;QACD,OAAO,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;IAClE,CAAC;IAEM,cAAc,CAAC,QAAiB;QACtC,MAAM,UAAU,GAAG,QAAuB,CAAC;QAC3C,IAAI,IAAI,CAAC,yBAAyB,CAAC,UAAU,CAAC,EAAE;YAC/C,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;YACpC,OAAO;SACP;QAED,IAAA,mBAAM,EACL,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,EAC9B,KAAK,CAAC,mGAAmG,CACzG,CAAC;QACF,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IAChD,CAAC;IAEM,QAAQ,CAAE,QAAiB,EAAE,eAAwB;QAC3D,MAAM,UAAU,GAAG,QAAuB,CAAC;QAC3C,IAAI,IAAA,sBAAW,EAAC,UAAU,CAAC,EAAE;YAC5B,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;SAC1E;QACD,OAAO,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;IACpE,CAAC;IAEO,yBAAyB,CAAC,QAAqB;QACtD,OAAO,IAAI,CAAC,YAAY,EAAE,IAAI,IAAA,sBAAW,EAAC,QAAQ,CAAC,CAAC;IACrD,CAAC;IAED;;;;;OAKG;IACK,YAAY,CAAC,QAAqB;QACzC,IAAA,mBAAM,EAAC,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,KAAK,CAAC,qDAAqD,CAAC,CAAC;QAC9F,yCAAyC;QACzC,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;YACxB,OAAO,KAAK,CAAC;SACb;QAED,+BAA+B;QAC/B,IAAI,CAAC,IAAA,sBAAW,EAAC,QAAQ,CAAC,EAAE;YAC3B,OAAO,IAAI,CAAC;SACZ;QAED,gCAAgC;QAChC,IAAA,mBAAM,EACL,IAAA,0BAAe,EAAC,QAAQ,CAAC,mBAAmB,EAAE,IAAI,CAAC,UAAU,CAAC,EAC9D,KAAK,CAAC,iDAAiD,CACvD,CAAC;QACF,OAAO,KAAK,CAAC;IACd,CAAC;CACD;AArJD,8DAqJC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { MessageType, type ISequencedDocumentMessage } from '@fluidframework/protocol-definitions';\nimport { type IChannelAttributes, type IDeltaHandler } from '@fluidframework/datastore-definitions';\nimport { assert } from '@fluidframework/core-utils';\nimport { type IOpContents, type IShimDeltaHandler } from './types.js';\nimport { attributesMatch, isBarrierOp, isStampedOp } from './utils.js';\n\n/**\n * Handles incoming and outgoing deltas/ops for the Migration Shim distributed data structure.\n * Intercepts processing of ops to allow for migration, and swapping from LegacySharedTree to new SharedTree\n *\n * Able to process v1 and v2 ops, differentiate between them, understand the various states and drop v1 ops after\n * migration.\n *\n * TODO: After the MSN of the barrier op, it needs to process v2 ops without needing to check for the v2 stamp.\n */\nexport class MigrationShimDeltaHandler implements IShimDeltaHandler {\n\tprivate legacyTreeHandler?: IDeltaHandler;\n\tprivate newTreeHandler?: IDeltaHandler;\n\tpublic constructor(\n\t\t// Maybe it would be better to pass in a different interface?\n\t\tpublic readonly processMigrateOp: (\n\t\t\tmessage: ISequencedDocumentMessage,\n\t\t\tlocal: boolean,\n\t\t\tlocalOpMetadata: unknown\n\t\t) => boolean,\n\t\tprivate readonly submitLocalMessage: (message: IOpContents) => void,\n\t\tprivate readonly attributes: IChannelAttributes\n\t) {}\n\t// Introduction of invariant, we always expect an old handler.\n\tpublic hasTreeDeltaHandler(): boolean {\n\t\treturn this.legacyTreeHandler !== undefined;\n\t}\n\n\tprivate get treeDeltaHandler(): IDeltaHandler {\n\t\tconst handler = this.newTreeHandler ?? this.legacyTreeHandler;\n\t\tassert(handler !== undefined, 0x7e2 /* No handler to process op */);\n\t\treturn handler;\n\t}\n\n\tprivate _attached = false;\n\tpublic get attached(): boolean {\n\t\treturn this._attached;\n\t}\n\n\tpublic markAttached(): void {\n\t\tthis._attached = true;\n\t}\n\n\tpublic isPreAttachState(): boolean {\n\t\tconst preAttach = this.legacyTreeHandler === undefined && this.newTreeHandler === undefined;\n\t\tassert(!preAttach || !this.attached, 0x82a /* Should not be attached in preAttach state */);\n\t\treturn preAttach;\n\t}\n\n\tpublic isUsingOldV1(): boolean {\n\t\treturn this.legacyTreeHandler !== undefined && this.newTreeHandler === undefined;\n\t}\n\n\tpublic isUsingNewV2(): boolean {\n\t\tconst isUsingV2 = this.legacyTreeHandler !== undefined && this.newTreeHandler !== undefined;\n\t\tassert(!isUsingV2 || this.attached, 0x82b /* Should be attached if in v2 state */);\n\t\treturn isUsingV2;\n\t}\n\n\t// Allow for the handler to be swapped out for the new SharedTree's handler\n\tpublic attachTreeDeltaHandler(treeDeltaHandler: IDeltaHandler): void {\n\t\tassert(!this.isUsingNewV2(), 0x7e3 /* Can't swap tree handlers more than once! */);\n\t\tif (this.isPreAttachState()) {\n\t\t\tthis.legacyTreeHandler = treeDeltaHandler;\n\t\t\treturn;\n\t\t}\n\t\tassert(this.isUsingOldV1(), 0x7e4 /* Can only swap handlers after the old handler is loaded */);\n\t\tthis.newTreeHandler = treeDeltaHandler;\n\t\tassert(this.isUsingNewV2(), 0x7e5 /* Should be using new handler after swap */);\n\t}\n\n\tpublic process(message: ISequencedDocumentMessage, local: boolean, localOpMetadata: unknown): void {\n\t\t// This allows us to process the migrate op and prevent the shared object from processing the wrong ops\n\t\tassert(!this.isPreAttachState(), 0x82c /* Can't process ops before attaching tree handler */);\n\t\tif (message.type !== MessageType.Operation) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst contents = message.contents as IOpContents;\n\t\tif (this.isInV1StateAndIsBarrierOp(contents)) {\n\t\t\tthis.processMigrateOp(message, local, localOpMetadata);\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.shouldDropOp(contents)) {\n\t\t\treturn;\n\t\t}\n\t\t// Another thought, flatten the IShimDeltaHandler and the MigrationShim into one class\n\t\treturn this.treeDeltaHandler.process(message, local, localOpMetadata);\n\t}\n\n\tpublic setConnectionState(connected: boolean): void {\n\t\treturn this.treeDeltaHandler.setConnectionState(connected);\n\t}\n\n\tpublic reSubmit(contents: unknown, localOpMetadata: unknown): void {\n\t\tconst opContents = contents as IOpContents;\n\t\tif (this.isInV1StateAndIsBarrierOp(opContents)) {\n\t\t\tthis.submitLocalMessage(opContents);\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.shouldDropOp(opContents)) {\n\t\t\treturn;\n\t\t}\n\t\treturn this.treeDeltaHandler.reSubmit(contents, localOpMetadata);\n\t}\n\n\tpublic applyStashedOp(contents: unknown): void {\n\t\tconst opContents = contents as IOpContents;\n\t\tif (this.isInV1StateAndIsBarrierOp(opContents)) {\n\t\t\tthis.submitLocalMessage(opContents);\n\t\t\treturn;\n\t\t}\n\n\t\tassert(\n\t\t\t!this.shouldDropOp(opContents),\n\t\t\t0x8aa /* MigrationShim should not be able to apply v1 ops as they shouldn't have been created locally. */\n\t\t);\n\t\tthis.treeDeltaHandler.applyStashedOp(contents);\n\t}\n\n\tpublic rollback?(contents: unknown, localOpMetadata: unknown): void {\n\t\tconst opContents = contents as IOpContents;\n\t\tif (isBarrierOp(opContents)) {\n\t\t\tthrow new Error('MigrationShim does not support rollback of barrier ops');\n\t\t}\n\t\treturn this.treeDeltaHandler.rollback?.(contents, localOpMetadata);\n\t}\n\n\tprivate isInV1StateAndIsBarrierOp(contents: IOpContents): boolean {\n\t\treturn this.isUsingOldV1() && isBarrierOp(contents);\n\t}\n\n\t/**\n\t * We should drop an op when we are v2 state and the op is a v1 op or a migrate op.\n\t *\n\t * @param contents - op contents we expect to interrogate, this could be anything\n\t * @returns whether or not we should drop the op\n\t */\n\tprivate shouldDropOp(contents: IOpContents): boolean {\n\t\tassert(!this.isPreAttachState(), 0x82d /* Can't process ops before attaching tree handler */);\n\t\t// Don't drop ops when we are in v1 state\n\t\tif (this.isUsingOldV1()) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Drop v1 ops when in v2 state\n\t\tif (!isStampedOp(contents)) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Don't drop v2 ops in v2 state\n\t\tassert(\n\t\t\tattributesMatch(contents.fluidMigrationStamp, this.attributes),\n\t\t\t0x82e /* Unexpected v2 op with mismatched attributes */\n\t\t);\n\t\treturn false;\n\t}\n}\n"]}
|
|
@@ -3,7 +3,7 @@ import { IChannelFactory, type IChannelAttributes, type IChannelServices, type I
|
|
|
3
3
|
import { type IExperimentalIncrementalSummaryContext, type IGarbageCollectionData, type ITelemetryContext, type ISummaryTreeWithStats } from '@fluidframework/runtime-definitions';
|
|
4
4
|
import { type ITree } from '@fluidframework/tree';
|
|
5
5
|
import { EventEmitterWithErrorHandling } from '@fluidframework/telemetry-utils';
|
|
6
|
-
import { type SharedTreeFactory as LegacySharedTreeFactory, type SharedTree as LegacySharedTree } from '../SharedTree';
|
|
6
|
+
import { type SharedTreeFactory as LegacySharedTreeFactory, type SharedTree as LegacySharedTree } from '../SharedTree.js';
|
|
7
7
|
import { type IShim } from './types.js';
|
|
8
8
|
/**
|
|
9
9
|
* Interface for migration events to indicate the stage of the migration. There really is two stages: before, and after.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrationShim.d.ts","sourceRoot":"","sources":["../../src/migration-shim/migrationShim.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,YAAY,EAAE,KAAK,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtG,OAAO,EACN,eAAe,EACf,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC3B,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACN,KAAK,sCAAsC,EAC3C,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,
|
|
1
|
+
{"version":3,"file":"migrationShim.d.ts","sourceRoot":"","sources":["../../src/migration-shim/migrationShim.ts"],"names":[],"mappings":"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"}
|
|
@@ -116,7 +116,7 @@ class MigrationShim extends telemetry_utils_1.EventEmitterWithErrorHandling {
|
|
|
116
116
|
const shimServices = this.runtime.attachState === container_definitions_1.AttachState.Detached
|
|
117
117
|
? new shimChannelServices_js_1.NoDeltasChannelServices(services)
|
|
118
118
|
: this.generateShimServicesOnce(services);
|
|
119
|
-
this._legacyTree =
|
|
119
|
+
this._legacyTree = await this.legacyTreeFactory.load(this.runtime, this.id, shimServices, this.legacyTreeFactory.attributes);
|
|
120
120
|
}
|
|
121
121
|
create() {
|
|
122
122
|
this._legacyTree = this.legacyTreeFactory.create(this.runtime, this.id);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrationShim.js","sourceRoot":"","sources":["../../src/migration-shim/migrationShim.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { AttachState } from '@fluidframework/container-definitions';\nimport { type IEvent, type IFluidHandle, type IFluidLoadable } from '@fluidframework/core-interfaces';\nimport {\n\tIChannelFactory,\n\ttype IChannelAttributes,\n\ttype IChannelServices,\n\ttype IFluidDataStoreRuntime,\n} from '@fluidframework/datastore-definitions';\nimport {\n\ttype IExperimentalIncrementalSummaryContext,\n\ttype IGarbageCollectionData,\n\ttype ITelemetryContext,\n\ttype ISummaryTreeWithStats,\n\tIIdCompressorCore,\n\tSessionId,\n} from '@fluidframework/runtime-definitions';\nimport { type ITree } from '@fluidframework/tree';\nimport { assert } from '@fluidframework/core-utils';\nimport { MessageType, type ISequencedDocumentMessage } from '@fluidframework/protocol-definitions';\nimport { type EventEmitterEventType } from '@fluid-internal/client-utils';\nimport { DataProcessingError, EventEmitterWithErrorHandling } from '@fluidframework/telemetry-utils';\nimport { type SharedTreeFactory as LegacySharedTreeFactory, type SharedTree as LegacySharedTree } from '../SharedTree';\nimport { type IShimChannelServices, NoDeltasChannelServices } from './shimChannelServices.js';\nimport { MigrationShimDeltaHandler } from './migrationDeltaHandler.js';\nimport { PreMigrationDeltaConnection, StampDeltaConnection } from './shimDeltaConnection.js';\nimport { ShimHandle } from './shimHandle.js';\nimport { type IShim, type IOpContents } from './types.js';\n\n/**\n * Interface for migration events to indicate the stage of the migration. There really is two stages: before, and after.\n *\n * @internal\n */\nexport interface IMigrationEvent extends IEvent {\n\t/**\n\t * Event that is emitted when the migration is complete.\n\t */\n\t(event: 'migrated', listener: () => void);\n}\n\n/**\n * Interface for migration operation.\n */\nexport interface IMigrationOp {\n\t/**\n\t * Type of the migration operation.\n\t */\n\ttype: 'barrier';\n\t/**\n\t * Old channel attributes so we can do verification and understand what changed. This will allow future clients to\n\t * accurately reason about what state of the document was before the migration op initiated at.\n\t */\n\toldAttributes: IChannelAttributes;\n\t/**\n\t * New channel attributes so we can do verification and understand what changed. This will allow future clients to\n\t * accurately reason about what the migration state of the new container is expected to be.\n\t */\n\tnewAttributes: IChannelAttributes;\n}\n\nconst ghostSessionId = '3692b242-46c0-4076-abea-c2ac1e896dee' as SessionId;\n\n/**\n * The MigrationShim loads in place of the legacy SharedTree. It provides API surface for migrating it to the new SharedTree, while also providing access to the current SharedTree for usage.\n *\n * @remarks\n *\n * This MigrationShim is responsible for submitting a migration op, processing the migrate op, swapping from the old\n * tree to the new tree, loading an old tree snapshot and creating an old tree.\n *\n * The MigrationShim expects to always load from a legacy SharedTree snapshot, though by the time it catches up in\n * processing all ops, it may find that the migration has already occurred. After migration occurs, it modifies its\n * attributes to point at the SharedTreeShimFactory. This will cause future clients to load with a SharedTreeShim and\n * the new SharedTree snapshot instead after the next summarization.\n *\n * @internal\n */\nexport class MigrationShim extends EventEmitterWithErrorHandling<IMigrationEvent> implements IShim {\n\tpublic constructor(\n\t\tpublic readonly id: string,\n\t\tprivate readonly runtime: IFluidDataStoreRuntime,\n\t\tprivate readonly legacyTreeFactory: LegacySharedTreeFactory,\n\t\tprivate readonly newTreeFactory: IChannelFactory,\n\t\tprivate readonly populateNewSharedObjectFn: (legacyTree: LegacySharedTree, newTree: ITree) => void\n\t) {\n\t\tsuper((event: EventEmitterEventType, e: unknown) => this.eventListenerErrorHandler(event, e));\n\t\t// TODO: consider flattening this class\n\t\tthis.migrationDeltaHandler = new MigrationShimDeltaHandler(\n\t\t\tthis.processMigrateOp,\n\t\t\tthis.submitLocalMessage,\n\t\t\tthis.newTreeFactory.attributes\n\t\t);\n\t\tthis.handle = new ShimHandle<MigrationShim>(this);\n\t}\n\n\tprivate readonly processMigrateOp = (message: ISequencedDocumentMessage): boolean => {\n\t\tif (message.type !== MessageType.Operation || (message.contents as Partial<IMigrationOp>).type !== 'barrier') {\n\t\t\treturn false;\n\t\t}\n\t\tconst newTree = this.newTreeFactory.create(this.runtime, this.id) as ITree;\n\t\tassert(this.preMigrationDeltaConnection !== undefined, 0x82f /* Should be in v1 state */);\n\t\tthis.preMigrationDeltaConnection.disableSubmit();\n\t\tconst { idCompressor } = this.runtime;\n\t\tif (idCompressor !== undefined) {\n\t\t\t(idCompressor as unknown as IIdCompressorCore).beginGhostSession(ghostSessionId, () =>\n\t\t\t\tthis.populateNewSharedObjectFn(this.legacyTree, newTree)\n\t\t\t);\n\t\t} else {\n\t\t\tthis.populateNewSharedObjectFn(this.legacyTree, newTree);\n\t\t}\n\t\tthis.newTree = newTree;\n\t\tthis.reconnect();\n\t\tthis.emit('migrated');\n\t\treturn true;\n\t};\n\n\tprivate readonly migrationDeltaHandler: MigrationShimDeltaHandler;\n\tprivate services?: IChannelServices;\n\tprivate preMigrationDeltaConnection?: PreMigrationDeltaConnection;\n\tprivate postMigrationServices?: IShimChannelServices;\n\n\tprivate _legacyTree: LegacySharedTree | undefined;\n\tprivate get legacyTree(): LegacySharedTree {\n\t\tassert(this._legacyTree !== undefined, 0x7e6 /* Old tree not initialized */);\n\t\treturn this._legacyTree;\n\t}\n\n\tprivate newTree: ITree | undefined;\n\n\t/**\n\t * {@inheritDoc @fluidframework/shared-object-base#SharedObject.closeError}\n\t */\n\tprivate closeError?: ReturnType<typeof DataProcessingError.wrapIfUnrecognized>;\n\n\t/**\n\t * {@inheritDoc @fluidframework/shared-object-base#SharedObject.eventListenerErrorHandler}\n\t */\n\tprivate eventListenerErrorHandler(event: EventEmitterEventType, e: unknown): void {\n\t\tconst error = DataProcessingError.wrapIfUnrecognized(e, 'SharedObjectEventListenerException');\n\t\terror.addTelemetryProperties({ emittedEventName: String(event) });\n\n\t\tthis.closeWithError(error);\n\t\tthrow error;\n\t}\n\n\t/**\n\t * {@inheritDoc @fluidframework/shared-object-base#SharedObject.closeWithError}\n\t */\n\tprivate closeWithError(error: ReturnType<typeof DataProcessingError.wrapIfUnrecognized>): void {\n\t\tif (this.closeError === undefined) {\n\t\t\tthis.closeError = error;\n\t\t}\n\t}\n\n\t/**\n\t * {@inheritDoc @fluidframework/shared-object-base#SharedObject.verifyNotClosed}\n\t */\n\tprivate verifyNotClosed(): void {\n\t\tif (this.closeError !== undefined) {\n\t\t\tthrow this.closeError;\n\t\t}\n\t}\n\n\t/**\n\t * {@inheritDoc @fluidframework/shared-object-base#SharedObject.submitLocalMessage}\n\t */\n\tprivate readonly submitLocalMessage = (message: IOpContents): void => {\n\t\tthis.verifyNotClosed();\n\t\t// This is a copy of submit local message from SharedObject\n\t\tif (this.isAttached()) {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\tthis.services!.deltaConnection.submit(message, undefined);\n\t\t}\n\t};\n\n\t// Migration occurs once this op is read.\n\tpublic submitMigrateOp(): void {\n\t\tconst migrateOp: IMigrationOp = {\n\t\t\ttype: 'barrier',\n\t\t\toldAttributes: this.legacyTreeFactory.attributes,\n\t\t\tnewAttributes: this.newTreeFactory.attributes,\n\t\t};\n\n\t\tthis.submitLocalMessage(migrateOp);\n\t}\n\n\tpublic get currentTree(): LegacySharedTree | ITree {\n\t\treturn this.newTree ?? this.legacyTree;\n\t}\n\n\tpublic async load(services: IChannelServices): Promise<void> {\n\t\tconst shimServices =\n\t\t\tthis.runtime.attachState === AttachState.Detached\n\t\t\t\t? new NoDeltasChannelServices(services)\n\t\t\t\t: this.generateShimServicesOnce(services);\n\t\tthis._legacyTree = (await this.legacyTreeFactory.load(\n\t\t\tthis.runtime,\n\t\t\tthis.id,\n\t\t\tshimServices,\n\t\t\tthis.legacyTreeFactory.attributes\n\t\t)) as LegacySharedTree;\n\t}\n\tpublic create(): void {\n\t\tthis._legacyTree = this.legacyTreeFactory.create(this.runtime, this.id);\n\t}\n\n\tpublic get attributes(): IChannelAttributes {\n\t\treturn this.currentTree.attributes;\n\t}\n\tpublic getAttachSummary(\n\t\tfullTree?: boolean | undefined,\n\t\ttrackState?: boolean | undefined,\n\t\ttelemetryContext?: ITelemetryContext | undefined\n\t): ISummaryTreeWithStats {\n\t\treturn this.currentTree.getAttachSummary(fullTree, trackState, telemetryContext);\n\t}\n\tpublic async summarize(\n\t\tfullTree?: boolean | undefined,\n\t\ttrackState?: boolean | undefined,\n\t\ttelemetryContext?: ITelemetryContext | undefined,\n\t\tincrementalSummaryContext?: IExperimentalIncrementalSummaryContext | undefined\n\t): Promise<ISummaryTreeWithStats> {\n\t\treturn this.currentTree.summarize(fullTree, trackState, telemetryContext, incrementalSummaryContext);\n\t}\n\tpublic isAttached(): boolean {\n\t\treturn this.currentTree.isAttached();\n\t}\n\n\t// Only connect to the legacy shared tree\n\tpublic connect(services: IChannelServices): void {\n\t\tconst shimServices = this.generateShimServicesOnce(services);\n\t\tthis.legacyTree.connect(shimServices);\n\t}\n\n\t// Only reconnect to the new shared tree this limits us to only migrating\n\tprivate reconnect(): void {\n\t\tassert(this.services !== undefined, 0x7e7 /* Not connected */);\n\t\tassert(this.newTree !== undefined, 0x7e8 /* New tree not initialized */);\n\t\tassert(this.postMigrationServices === undefined, 0x830 /* Already reconnected! */);\n\t\t// This method attaches the newTree's delta handler to the MigrationShimDeltaHandler\n\t\tthis.postMigrationServices = {\n\t\t\tobjectStorage: this.services.objectStorage,\n\t\t\tdeltaConnection: new StampDeltaConnection(\n\t\t\t\tthis.services.deltaConnection,\n\t\t\t\tthis.migrationDeltaHandler,\n\t\t\t\tthis.newTree.attributes\n\t\t\t),\n\t\t};\n\t\tthis.newTree.connect(this.postMigrationServices);\n\t}\n\n\t/**\n\t * Only generate the ShimServices once as the underlying DeltaHandler can only be connected to once. If we connect\n\t * twice, we will be in a \"v2\" state even though we really are in a \"v1\" state. We will encounter unexpected op\n\t * dropping behavior or lack thereof and may corrupt the document.\n\t * @param services - the services to generate the shim services from\n\t * @returns - shim services\n\t */\n\tprivate generateShimServicesOnce(services: IChannelServices): IShimChannelServices {\n\t\tassert(\n\t\t\tthis.services === undefined && this.preMigrationDeltaConnection === undefined,\n\t\t\t0x7e9 /* Already connected */\n\t\t);\n\t\tthis.services = services;\n\t\tthis.preMigrationDeltaConnection = new PreMigrationDeltaConnection(\n\t\t\tthis.services.deltaConnection,\n\t\t\tthis.migrationDeltaHandler\n\t\t);\n\t\tconst shimServices: IShimChannelServices = {\n\t\t\tobjectStorage: this.services.objectStorage,\n\t\t\tdeltaConnection: this.preMigrationDeltaConnection,\n\t\t};\n\t\treturn shimServices;\n\t}\n\n\tpublic getGCData(fullGC?: boolean | undefined): IGarbageCollectionData {\n\t\treturn this.currentTree.getGCData(fullGC);\n\t}\n\tpublic handle: IFluidHandle<MigrationShim>;\n\tpublic get IFluidLoadable(): IFluidLoadable {\n\t\treturn this;\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"migrationShim.js","sourceRoot":"","sources":["../../src/migration-shim/migrationShim.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { AttachState } from '@fluidframework/container-definitions';\nimport { type IEvent, type IFluidHandle, type IFluidLoadable } from '@fluidframework/core-interfaces';\nimport {\n\tIChannelFactory,\n\ttype IChannelAttributes,\n\ttype IChannelServices,\n\ttype IFluidDataStoreRuntime,\n} from '@fluidframework/datastore-definitions';\nimport {\n\ttype IExperimentalIncrementalSummaryContext,\n\ttype IGarbageCollectionData,\n\ttype ITelemetryContext,\n\ttype ISummaryTreeWithStats,\n} from '@fluidframework/runtime-definitions';\nimport { type ITree } from '@fluidframework/tree';\nimport { assert } from '@fluidframework/core-utils';\nimport { MessageType, type ISequencedDocumentMessage } from '@fluidframework/protocol-definitions';\nimport { type EventEmitterEventType } from '@fluid-internal/client-utils';\nimport { DataProcessingError, EventEmitterWithErrorHandling } from '@fluidframework/telemetry-utils';\nimport type { SessionId, IIdCompressorCore } from '@fluidframework/id-compressor';\nimport {\n\ttype SharedTreeFactory as LegacySharedTreeFactory,\n\ttype SharedTree as LegacySharedTree,\n} from '../SharedTree.js';\nimport { type IShimChannelServices, NoDeltasChannelServices } from './shimChannelServices.js';\nimport { MigrationShimDeltaHandler } from './migrationDeltaHandler.js';\nimport { PreMigrationDeltaConnection, StampDeltaConnection } from './shimDeltaConnection.js';\nimport { ShimHandle } from './shimHandle.js';\nimport { type IShim, type IOpContents } from './types.js';\n\n/**\n * Interface for migration events to indicate the stage of the migration. There really is two stages: before, and after.\n *\n * @internal\n */\nexport interface IMigrationEvent extends IEvent {\n\t/**\n\t * Event that is emitted when the migration is complete.\n\t */\n\t(event: 'migrated', listener: () => void);\n}\n\n/**\n * Interface for migration operation.\n */\nexport interface IMigrationOp {\n\t/**\n\t * Type of the migration operation.\n\t */\n\ttype: 'barrier';\n\t/**\n\t * Old channel attributes so we can do verification and understand what changed. This will allow future clients to\n\t * accurately reason about what state of the document was before the migration op initiated at.\n\t */\n\toldAttributes: IChannelAttributes;\n\t/**\n\t * New channel attributes so we can do verification and understand what changed. This will allow future clients to\n\t * accurately reason about what the migration state of the new container is expected to be.\n\t */\n\tnewAttributes: IChannelAttributes;\n}\n\nconst ghostSessionId = '3692b242-46c0-4076-abea-c2ac1e896dee' as SessionId;\n\n/**\n * The MigrationShim loads in place of the legacy SharedTree. It provides API surface for migrating it to the new SharedTree, while also providing access to the current SharedTree for usage.\n *\n * @remarks\n *\n * This MigrationShim is responsible for submitting a migration op, processing the migrate op, swapping from the old\n * tree to the new tree, loading an old tree snapshot and creating an old tree.\n *\n * The MigrationShim expects to always load from a legacy SharedTree snapshot, though by the time it catches up in\n * processing all ops, it may find that the migration has already occurred. After migration occurs, it modifies its\n * attributes to point at the SharedTreeShimFactory. This will cause future clients to load with a SharedTreeShim and\n * the new SharedTree snapshot instead after the next summarization.\n *\n * @internal\n */\nexport class MigrationShim extends EventEmitterWithErrorHandling<IMigrationEvent> implements IShim {\n\tpublic constructor(\n\t\tpublic readonly id: string,\n\t\tprivate readonly runtime: IFluidDataStoreRuntime,\n\t\tprivate readonly legacyTreeFactory: LegacySharedTreeFactory,\n\t\tprivate readonly newTreeFactory: IChannelFactory,\n\t\tprivate readonly populateNewSharedObjectFn: (legacyTree: LegacySharedTree, newTree: ITree) => void\n\t) {\n\t\tsuper((event: EventEmitterEventType, e: unknown) => this.eventListenerErrorHandler(event, e));\n\t\t// TODO: consider flattening this class\n\t\tthis.migrationDeltaHandler = new MigrationShimDeltaHandler(\n\t\t\tthis.processMigrateOp,\n\t\t\tthis.submitLocalMessage,\n\t\t\tthis.newTreeFactory.attributes\n\t\t);\n\t\tthis.handle = new ShimHandle<MigrationShim>(this);\n\t}\n\n\tprivate readonly processMigrateOp = (message: ISequencedDocumentMessage): boolean => {\n\t\tif (message.type !== MessageType.Operation || (message.contents as Partial<IMigrationOp>).type !== 'barrier') {\n\t\t\treturn false;\n\t\t}\n\t\tconst newTree = this.newTreeFactory.create(this.runtime, this.id) as ITree;\n\t\tassert(this.preMigrationDeltaConnection !== undefined, 0x82f /* Should be in v1 state */);\n\t\tthis.preMigrationDeltaConnection.disableSubmit();\n\t\tconst { idCompressor } = this.runtime;\n\t\tif (idCompressor !== undefined) {\n\t\t\t(idCompressor as unknown as IIdCompressorCore).beginGhostSession(ghostSessionId, () =>\n\t\t\t\tthis.populateNewSharedObjectFn(this.legacyTree, newTree)\n\t\t\t);\n\t\t} else {\n\t\t\tthis.populateNewSharedObjectFn(this.legacyTree, newTree);\n\t\t}\n\t\tthis.newTree = newTree;\n\t\tthis.reconnect();\n\t\tthis.emit('migrated');\n\t\treturn true;\n\t};\n\n\tprivate readonly migrationDeltaHandler: MigrationShimDeltaHandler;\n\tprivate services?: IChannelServices;\n\tprivate preMigrationDeltaConnection?: PreMigrationDeltaConnection;\n\tprivate postMigrationServices?: IShimChannelServices;\n\n\tprivate _legacyTree: LegacySharedTree | undefined;\n\tprivate get legacyTree(): LegacySharedTree {\n\t\tassert(this._legacyTree !== undefined, 0x7e6 /* Old tree not initialized */);\n\t\treturn this._legacyTree;\n\t}\n\n\tprivate newTree: ITree | undefined;\n\n\t/**\n\t * {@inheritDoc @fluidframework/shared-object-base#SharedObject.closeError}\n\t */\n\tprivate closeError?: ReturnType<typeof DataProcessingError.wrapIfUnrecognized>;\n\n\t/**\n\t * {@inheritDoc @fluidframework/shared-object-base#SharedObject.eventListenerErrorHandler}\n\t */\n\tprivate eventListenerErrorHandler(event: EventEmitterEventType, e: unknown): void {\n\t\tconst error = DataProcessingError.wrapIfUnrecognized(e, 'SharedObjectEventListenerException');\n\t\terror.addTelemetryProperties({ emittedEventName: String(event) });\n\n\t\tthis.closeWithError(error);\n\t\tthrow error;\n\t}\n\n\t/**\n\t * {@inheritDoc @fluidframework/shared-object-base#SharedObject.closeWithError}\n\t */\n\tprivate closeWithError(error: ReturnType<typeof DataProcessingError.wrapIfUnrecognized>): void {\n\t\tif (this.closeError === undefined) {\n\t\t\tthis.closeError = error;\n\t\t}\n\t}\n\n\t/**\n\t * {@inheritDoc @fluidframework/shared-object-base#SharedObject.verifyNotClosed}\n\t */\n\tprivate verifyNotClosed(): void {\n\t\tif (this.closeError !== undefined) {\n\t\t\tthrow this.closeError;\n\t\t}\n\t}\n\n\t/**\n\t * {@inheritDoc @fluidframework/shared-object-base#SharedObject.submitLocalMessage}\n\t */\n\tprivate readonly submitLocalMessage = (message: IOpContents): void => {\n\t\tthis.verifyNotClosed();\n\t\t// This is a copy of submit local message from SharedObject\n\t\tif (this.isAttached()) {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\tthis.services!.deltaConnection.submit(message, undefined);\n\t\t}\n\t};\n\n\t// Migration occurs once this op is read.\n\tpublic submitMigrateOp(): void {\n\t\tconst migrateOp: IMigrationOp = {\n\t\t\ttype: 'barrier',\n\t\t\toldAttributes: this.legacyTreeFactory.attributes,\n\t\t\tnewAttributes: this.newTreeFactory.attributes,\n\t\t};\n\n\t\tthis.submitLocalMessage(migrateOp);\n\t}\n\n\tpublic get currentTree(): LegacySharedTree | ITree {\n\t\treturn this.newTree ?? this.legacyTree;\n\t}\n\n\tpublic async load(services: IChannelServices): Promise<void> {\n\t\tconst shimServices =\n\t\t\tthis.runtime.attachState === AttachState.Detached\n\t\t\t\t? new NoDeltasChannelServices(services)\n\t\t\t\t: this.generateShimServicesOnce(services);\n\t\tthis._legacyTree = await this.legacyTreeFactory.load(\n\t\t\tthis.runtime,\n\t\t\tthis.id,\n\t\t\tshimServices,\n\t\t\tthis.legacyTreeFactory.attributes\n\t\t);\n\t}\n\tpublic create(): void {\n\t\tthis._legacyTree = this.legacyTreeFactory.create(this.runtime, this.id);\n\t}\n\n\tpublic get attributes(): IChannelAttributes {\n\t\treturn this.currentTree.attributes;\n\t}\n\tpublic getAttachSummary(\n\t\tfullTree?: boolean | undefined,\n\t\ttrackState?: boolean | undefined,\n\t\ttelemetryContext?: ITelemetryContext | undefined\n\t): ISummaryTreeWithStats {\n\t\treturn this.currentTree.getAttachSummary(fullTree, trackState, telemetryContext);\n\t}\n\tpublic async summarize(\n\t\tfullTree?: boolean | undefined,\n\t\ttrackState?: boolean | undefined,\n\t\ttelemetryContext?: ITelemetryContext | undefined,\n\t\tincrementalSummaryContext?: IExperimentalIncrementalSummaryContext | undefined\n\t): Promise<ISummaryTreeWithStats> {\n\t\treturn this.currentTree.summarize(fullTree, trackState, telemetryContext, incrementalSummaryContext);\n\t}\n\tpublic isAttached(): boolean {\n\t\treturn this.currentTree.isAttached();\n\t}\n\n\t// Only connect to the legacy shared tree\n\tpublic connect(services: IChannelServices): void {\n\t\tconst shimServices = this.generateShimServicesOnce(services);\n\t\tthis.legacyTree.connect(shimServices);\n\t}\n\n\t// Only reconnect to the new shared tree this limits us to only migrating\n\tprivate reconnect(): void {\n\t\tassert(this.services !== undefined, 0x7e7 /* Not connected */);\n\t\tassert(this.newTree !== undefined, 0x7e8 /* New tree not initialized */);\n\t\tassert(this.postMigrationServices === undefined, 0x830 /* Already reconnected! */);\n\t\t// This method attaches the newTree's delta handler to the MigrationShimDeltaHandler\n\t\tthis.postMigrationServices = {\n\t\t\tobjectStorage: this.services.objectStorage,\n\t\t\tdeltaConnection: new StampDeltaConnection(\n\t\t\t\tthis.services.deltaConnection,\n\t\t\t\tthis.migrationDeltaHandler,\n\t\t\t\tthis.newTree.attributes\n\t\t\t),\n\t\t};\n\t\tthis.newTree.connect(this.postMigrationServices);\n\t}\n\n\t/**\n\t * Only generate the ShimServices once as the underlying DeltaHandler can only be connected to once. If we connect\n\t * twice, we will be in a \"v2\" state even though we really are in a \"v1\" state. We will encounter unexpected op\n\t * dropping behavior or lack thereof and may corrupt the document.\n\t * @param services - the services to generate the shim services from\n\t * @returns - shim services\n\t */\n\tprivate generateShimServicesOnce(services: IChannelServices): IShimChannelServices {\n\t\tassert(\n\t\t\tthis.services === undefined && this.preMigrationDeltaConnection === undefined,\n\t\t\t0x7e9 /* Already connected */\n\t\t);\n\t\tthis.services = services;\n\t\tthis.preMigrationDeltaConnection = new PreMigrationDeltaConnection(\n\t\t\tthis.services.deltaConnection,\n\t\t\tthis.migrationDeltaHandler\n\t\t);\n\t\tconst shimServices: IShimChannelServices = {\n\t\t\tobjectStorage: this.services.objectStorage,\n\t\t\tdeltaConnection: this.preMigrationDeltaConnection,\n\t\t};\n\t\treturn shimServices;\n\t}\n\n\tpublic getGCData(fullGC?: boolean | undefined): IGarbageCollectionData {\n\t\treturn this.currentTree.getGCData(fullGC);\n\t}\n\tpublic handle: IFluidHandle<MigrationShim>;\n\tpublic get IFluidLoadable(): IFluidLoadable {\n\t\treturn this;\n\t}\n}\n"]}
|