@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
|
@@ -9,12 +9,12 @@ exports.hasOngoingSession = exports.IdCompressor = exports.isLocalId = exports.i
|
|
|
9
9
|
const core_utils_1 = require("@fluidframework/core-utils");
|
|
10
10
|
const telemetry_utils_1 = require("@fluidframework/telemetry-utils");
|
|
11
11
|
const sorted_btree_es6_1 = require("@tylerbu/sorted-btree-es6");
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
const
|
|
15
|
-
const
|
|
16
|
-
const
|
|
17
|
-
const
|
|
12
|
+
const Common_js_1 = require("../Common.js");
|
|
13
|
+
const UuidUtilities_js_1 = require("../UuidUtilities.js");
|
|
14
|
+
const AppendOnlySortedMap_js_1 = require("./AppendOnlySortedMap.js");
|
|
15
|
+
const IdRange_js_1 = require("./IdRange.js");
|
|
16
|
+
const NumericUuid_js_1 = require("./NumericUuid.js");
|
|
17
|
+
const SessionIdNormalizer_js_1 = require("./SessionIdNormalizer.js");
|
|
18
18
|
/**
|
|
19
19
|
* Roughly equates to a minimum of 1M sessions before we start allocating 64 bit IDs.
|
|
20
20
|
* This value must *NOT* change without careful consideration to compatibility.
|
|
@@ -24,7 +24,7 @@ exports.defaultClusterCapacity = 512;
|
|
|
24
24
|
* The base UUID for the reserved id cluster.
|
|
25
25
|
* This should not be changed without consideration to compatibility.
|
|
26
26
|
*/
|
|
27
|
-
const reservedSessionId = (0,
|
|
27
|
+
const reservedSessionId = (0, NumericUuid_js_1.ensureSessionUuid)((0, UuidUtilities_js_1.assertIsStableId)('decaf40b-3c1a-47f8-a7a1-e8461ddb69ce'));
|
|
28
28
|
/**
|
|
29
29
|
* The ID override for the initial tree of a SharedTree. An artifact of an unfortunate typo which included an extraneous '6' on the UUID
|
|
30
30
|
* which must be forever preserved for backwards compatibility.
|
|
@@ -169,7 +169,7 @@ class IdCompressor {
|
|
|
169
169
|
* Maps local IDs to override strings. This will contain an entry for every override assigned to a local ID generated during
|
|
170
170
|
* the current session, and retains entries for the lifetime of this compressor.
|
|
171
171
|
*/
|
|
172
|
-
this.localOverrides = new
|
|
172
|
+
this.localOverrides = new AppendOnlySortedMap_js_1.AppendOnlySortedMap(Common_js_1.compareFiniteNumbersReversed);
|
|
173
173
|
/**
|
|
174
174
|
* Maps local IDs to the final ID they are associated with (if any), and maps final IDs to the corresponding local ID (if any).
|
|
175
175
|
* This is used to efficiently compute normalization. This map can be thought of as mapping ranges of "optimistic uncertainty"
|
|
@@ -185,7 +185,7 @@ class IdCompressor {
|
|
|
185
185
|
* final ID would be associated with that override.
|
|
186
186
|
* See `SessionIdNormalizer` for more.
|
|
187
187
|
*/
|
|
188
|
-
this.sessionIdNormalizer = new
|
|
188
|
+
this.sessionIdNormalizer = new SessionIdNormalizer_js_1.SessionIdNormalizer();
|
|
189
189
|
/**
|
|
190
190
|
* Contains entries for cluster base UUIDs and override strings (both local and final).
|
|
191
191
|
* As a performance optimization, entries for finalized strings also include the containing cluster object.
|
|
@@ -194,15 +194,15 @@ class IdCompressor {
|
|
|
194
194
|
* This is unified as a performance optimization, as the common case does not have overridden IDs. It is a btree due to the need
|
|
195
195
|
* to make range queries.
|
|
196
196
|
*/
|
|
197
|
-
this.clustersAndOverridesInversion = new sorted_btree_es6_1.BTree(undefined,
|
|
197
|
+
this.clustersAndOverridesInversion = new sorted_btree_es6_1.BTree(undefined, Common_js_1.compareStrings);
|
|
198
198
|
/**
|
|
199
199
|
* Maps the first final ID in a cluster to its owning cluster.
|
|
200
200
|
* Can be searched in O(log n) to determine clusters for any final ID.
|
|
201
201
|
*/
|
|
202
|
-
this.finalIdToCluster = new
|
|
202
|
+
this.finalIdToCluster = new AppendOnlySortedMap_js_1.AppendOnlySortedMap(Common_js_1.compareFiniteNumbers);
|
|
203
203
|
(0, core_utils_1.assert)(reservedIdCount >= 0, 0x642 /* reservedIdCount must be non-negative */);
|
|
204
204
|
if (attributionId !== undefined) {
|
|
205
|
-
(0,
|
|
205
|
+
(0, UuidUtilities_js_1.assertIsUuidString)(attributionId);
|
|
206
206
|
}
|
|
207
207
|
this.localSession = this.createSession(localSessionId, attributionId);
|
|
208
208
|
if (reservedIdCount > 0) {
|
|
@@ -228,12 +228,12 @@ class IdCompressor {
|
|
|
228
228
|
* @returns the session object for the supplied ID
|
|
229
229
|
*/
|
|
230
230
|
createSession(sessionId, attributionId) {
|
|
231
|
-
(0,
|
|
231
|
+
(0, Common_js_1.assertWithMessage)(!this.clustersAndOverridesInversion.has(sessionId));
|
|
232
232
|
const existingSession = this.sessions.get(sessionId);
|
|
233
233
|
if (existingSession !== undefined) {
|
|
234
|
-
(0,
|
|
234
|
+
(0, Common_js_1.fail)('createSession must only be called once for each session ID.');
|
|
235
235
|
}
|
|
236
|
-
const sessionUuid = (0,
|
|
236
|
+
const sessionUuid = (0, NumericUuid_js_1.numericUuidFromStableId)(sessionId);
|
|
237
237
|
const session = {
|
|
238
238
|
sessionUuid,
|
|
239
239
|
currentClusterDetails: undefined,
|
|
@@ -249,7 +249,7 @@ class IdCompressor {
|
|
|
249
249
|
*/
|
|
250
250
|
getReservedId(index) {
|
|
251
251
|
if (index < 0 || index >= this.reservedIdCount) {
|
|
252
|
-
(0,
|
|
252
|
+
(0, Common_js_1.fail)('Reserved Id index out of bounds');
|
|
253
253
|
}
|
|
254
254
|
// All reserved IDs are contiguous and finalized during the Compressor's construction, therefore they are always the lowest
|
|
255
255
|
// final IDs, beginning at 0
|
|
@@ -275,7 +275,7 @@ class IdCompressor {
|
|
|
275
275
|
return this.attributionId;
|
|
276
276
|
}
|
|
277
277
|
else {
|
|
278
|
-
(0,
|
|
278
|
+
(0, Common_js_1.fail)('Cluster does not exist for final ID');
|
|
279
279
|
}
|
|
280
280
|
}
|
|
281
281
|
const [_, cluster] = closestCluster;
|
|
@@ -290,7 +290,7 @@ class IdCompressor {
|
|
|
290
290
|
takeNextCreationRange() {
|
|
291
291
|
const lastLocalInRange = -this.localIdCount;
|
|
292
292
|
const lastTakenNormalized = this.lastTakenLocalId ?? 0;
|
|
293
|
-
(0,
|
|
293
|
+
(0, Common_js_1.assertWithMessage)(lastLocalInRange <= lastTakenNormalized);
|
|
294
294
|
// The attribution ID is sent with each range, but it can be elided after the first IDs are allocated.
|
|
295
295
|
const sendAttributionId = this.lastTakenLocalId === undefined;
|
|
296
296
|
let ids;
|
|
@@ -299,16 +299,16 @@ class IdCompressor {
|
|
|
299
299
|
const overrides = [
|
|
300
300
|
...this.localOverrides.getRange((lastTakenNormalized - 1), lastLocalInRange),
|
|
301
301
|
];
|
|
302
|
-
if ((0,
|
|
303
|
-
(0,
|
|
304
|
-
(0,
|
|
302
|
+
if ((0, Common_js_1.hasLength)(overrides, 1)) {
|
|
303
|
+
(0, Common_js_1.assertWithMessage)(overrides[0][0] <= firstLocalInRange);
|
|
304
|
+
(0, Common_js_1.assertWithMessage)(overrides[overrides.length - 1][0] >= lastLocalInRange);
|
|
305
305
|
ids = {
|
|
306
306
|
overrides,
|
|
307
307
|
};
|
|
308
308
|
const first = firstLocalInRange === overrides[0][0] ? undefined : firstLocalInRange;
|
|
309
309
|
const last = lastLocalInRange === overrides[overrides.length - 1][0] ? undefined : lastLocalInRange;
|
|
310
|
-
(0,
|
|
311
|
-
(0,
|
|
310
|
+
(0, Common_js_1.setPropertyIfDefined)(first, ids, 'first');
|
|
311
|
+
(0, Common_js_1.setPropertyIfDefined)(last, ids, 'last');
|
|
312
312
|
}
|
|
313
313
|
else {
|
|
314
314
|
ids = {
|
|
@@ -338,7 +338,7 @@ class IdCompressor {
|
|
|
338
338
|
const isLocal = sessionId === this.localSessionId;
|
|
339
339
|
const session = this.sessions.get(sessionId) ?? this.createSession(sessionId, attributionId);
|
|
340
340
|
(0, core_utils_1.assert)(range.attributionId === undefined || range.attributionId === session.attributionId, 0x644 /* A session's attribution ID may never be modified. */);
|
|
341
|
-
const ids = (0,
|
|
341
|
+
const ids = (0, IdRange_js_1.getIds)(range);
|
|
342
342
|
if (ids === undefined) {
|
|
343
343
|
return;
|
|
344
344
|
}
|
|
@@ -361,7 +361,7 @@ class IdCompressor {
|
|
|
361
361
|
if (currentClusterExists) {
|
|
362
362
|
if (isLocal) {
|
|
363
363
|
const lastKnownFinal = this.sessionIdNormalizer.getLastFinalId() ??
|
|
364
|
-
(0,
|
|
364
|
+
(0, Common_js_1.fail)('Cluster exists but normalizer does not have an entry for it.');
|
|
365
365
|
const lastAlignedFinalInCluster = (currentBaseFinalId +
|
|
366
366
|
Math.min(currentCluster.count + finalizeCount, currentCluster.capacity) -
|
|
367
367
|
1);
|
|
@@ -422,7 +422,7 @@ class IdCompressor {
|
|
|
422
422
|
else {
|
|
423
423
|
// The range cannot be fully allocated in the existing cluster, so allocate any space left in it and
|
|
424
424
|
// form a new one by incrementing the previous baseUuid
|
|
425
|
-
newBaseUuid = (0,
|
|
425
|
+
newBaseUuid = (0, NumericUuid_js_1.incrementUuid)(currentCluster.baseUuid, currentCluster.capacity);
|
|
426
426
|
currentCluster.count += remainingCapacity;
|
|
427
427
|
eagerFinalIdCount = remainingCapacity;
|
|
428
428
|
remainingCount -= remainingCapacity;
|
|
@@ -455,10 +455,10 @@ class IdCompressor {
|
|
|
455
455
|
// Need to make a new cluster
|
|
456
456
|
if (newBaseUuid !== undefined) {
|
|
457
457
|
if (remainingCount <= 0) {
|
|
458
|
-
(0,
|
|
458
|
+
(0, Common_js_1.fail)('Should not create an empty cluster.');
|
|
459
459
|
}
|
|
460
460
|
if (currentCluster !== undefined && currentCluster.capacity !== currentCluster.count) {
|
|
461
|
-
(0,
|
|
461
|
+
(0, Common_js_1.fail)('Cluster must be filled before another is allocated.');
|
|
462
462
|
}
|
|
463
463
|
newBaseFinalId = this.nextClusterBaseFinalId;
|
|
464
464
|
const newCapacity = Math.max(this.newClusterCapacity, remainingCount);
|
|
@@ -480,7 +480,7 @@ class IdCompressor {
|
|
|
480
480
|
this.sessionIdNormalizer.registerFinalIdBlock(newBaseFinalId, newCluster.capacity, newCluster);
|
|
481
481
|
}
|
|
482
482
|
this.checkClusterForCollision(newCluster);
|
|
483
|
-
this.clustersAndOverridesInversion.set((0,
|
|
483
|
+
this.clustersAndOverridesInversion.set((0, NumericUuid_js_1.stableIdFromNumericUuid)(newCluster.baseUuid), {
|
|
484
484
|
clusterBase: newBaseFinalId,
|
|
485
485
|
cluster: newCluster,
|
|
486
486
|
});
|
|
@@ -565,14 +565,14 @@ class IdCompressor {
|
|
|
565
565
|
override,
|
|
566
566
|
originalOverridingFinal: overrideForCluster,
|
|
567
567
|
};
|
|
568
|
-
(0,
|
|
568
|
+
(0, Common_js_1.setPropertyIfDefined)(associatedLocal, unifiedOverride, 'associatedLocalId');
|
|
569
569
|
cluster.overrides.set(overriddenFinal, unifiedOverride);
|
|
570
570
|
}
|
|
571
571
|
const finalizedOverride = {
|
|
572
572
|
cluster,
|
|
573
573
|
originalOverridingFinal: overriddenFinal,
|
|
574
574
|
};
|
|
575
|
-
(0,
|
|
575
|
+
(0, Common_js_1.setPropertyIfDefined)(associatedLocal, finalizedOverride, 'associatedLocalId');
|
|
576
576
|
const currentOverride = this.clustersAndOverridesInversion.get(inversionKey);
|
|
577
577
|
if (currentOverride === undefined || IdCompressor.isUnfinalizedOverride(currentOverride)) {
|
|
578
578
|
// Update the map to contain a finalized override, but never update it with future finalized overrides with
|
|
@@ -593,16 +593,16 @@ class IdCompressor {
|
|
|
593
593
|
session.lastFinalizedLocalId = newLastFinalizedLocal;
|
|
594
594
|
}
|
|
595
595
|
checkClusterForCollision(cluster) {
|
|
596
|
-
const maxClusterUuid = (0,
|
|
597
|
-
const maxClusterStableId = (0,
|
|
596
|
+
const maxClusterUuid = (0, NumericUuid_js_1.incrementUuid)(cluster.baseUuid, cluster.capacity - 1);
|
|
597
|
+
const maxClusterStableId = (0, NumericUuid_js_1.stableIdFromNumericUuid)(maxClusterUuid);
|
|
598
598
|
const closestMatch = this.clustersAndOverridesInversion.getPairOrNextLower(maxClusterStableId);
|
|
599
599
|
if (closestMatch !== undefined) {
|
|
600
600
|
const [inversionKey, compressionMapping] = closestMatch;
|
|
601
601
|
if (!IdCompressor.isClusterInfo(compressionMapping)) {
|
|
602
|
-
if ((0,
|
|
602
|
+
if ((0, UuidUtilities_js_1.isStableId)(inversionKey) &&
|
|
603
603
|
IdCompressor.uuidsMightCollide(inversionKey, maxClusterStableId, cluster.capacity)) {
|
|
604
|
-
const numericOverride = (0,
|
|
605
|
-
const delta = (0,
|
|
604
|
+
const numericOverride = (0, NumericUuid_js_1.numericUuidFromStableId)(inversionKey);
|
|
605
|
+
const delta = (0, NumericUuid_js_1.getPositiveDelta)(maxClusterUuid, numericOverride, cluster.capacity - 1);
|
|
606
606
|
if (delta !== undefined) {
|
|
607
607
|
IdCompressor.failWithCollidingOverride(inversionKey);
|
|
608
608
|
}
|
|
@@ -611,7 +611,7 @@ class IdCompressor {
|
|
|
611
611
|
}
|
|
612
612
|
}
|
|
613
613
|
static failWithCollidingOverride(override) {
|
|
614
|
-
(0,
|
|
614
|
+
(0, Common_js_1.fail)(`Override '${override}' collides with another allocated UUID.`);
|
|
615
615
|
}
|
|
616
616
|
static isClusterInfo(compressionMapping) {
|
|
617
617
|
return compressionMapping.clusterBase !== undefined;
|
|
@@ -620,7 +620,7 @@ class IdCompressor {
|
|
|
620
620
|
return typeof compressionMapping === 'number';
|
|
621
621
|
}
|
|
622
622
|
static createInversionKey(inversionKey) {
|
|
623
|
-
return (0,
|
|
623
|
+
return (0, UuidUtilities_js_1.isStableId)(inversionKey) ? inversionKey : `${nonStableOverridePrefix}${inversionKey}`;
|
|
624
624
|
}
|
|
625
625
|
static isStableInversionKey(inversionKey) {
|
|
626
626
|
return !inversionKey.startsWith(nonStableOverridePrefix);
|
|
@@ -649,8 +649,8 @@ class IdCompressor {
|
|
|
649
649
|
stableOverride = inversionKey;
|
|
650
650
|
const cluster = compressionMapping.cluster;
|
|
651
651
|
if (IdCompressor.uuidsMightCollide(inversionKey, key, cluster.capacity)) {
|
|
652
|
-
numericOverride = (0,
|
|
653
|
-
const delta = (0,
|
|
652
|
+
numericOverride = (0, NumericUuid_js_1.numericUuidFromStableId)(stableOverride);
|
|
653
|
+
const delta = (0, NumericUuid_js_1.getPositiveDelta)(numericOverride, cluster.baseUuid, cluster.capacity - 1);
|
|
654
654
|
if (delta !== undefined) {
|
|
655
655
|
if (!isFinalOverride) {
|
|
656
656
|
if (delta >= cluster.count) {
|
|
@@ -738,15 +738,15 @@ class IdCompressor {
|
|
|
738
738
|
const registeredLocal = sessionIdNormalizer.addLocalId();
|
|
739
739
|
(0, core_utils_1.assert)(registeredLocal === newLocalId, 0x651 /* Session ID Normalizer produced unexpected local ID */);
|
|
740
740
|
if (eagerFinalId !== undefined) {
|
|
741
|
-
sessionIdNormalizer.addFinalIds(eagerFinalId, eagerFinalId, cluster ?? (0,
|
|
741
|
+
sessionIdNormalizer.addFinalIds(eagerFinalId, eagerFinalId, cluster ?? (0, Common_js_1.fail)());
|
|
742
742
|
}
|
|
743
|
-
this.localOverrides.append(newLocalId, override ?? (0,
|
|
743
|
+
this.localOverrides.append(newLocalId, override ?? (0, Common_js_1.fail)());
|
|
744
744
|
// Since the local ID was just created, it is in both session and op space
|
|
745
745
|
const compressionMapping = newLocalId;
|
|
746
746
|
this.clustersAndOverridesInversion.set(overrideInversionKey, compressionMapping);
|
|
747
747
|
}
|
|
748
748
|
else if (eagerFinalId !== undefined) {
|
|
749
|
-
sessionIdNormalizer.addFinalIds(eagerFinalId, eagerFinalId, cluster ?? (0,
|
|
749
|
+
sessionIdNormalizer.addFinalIds(eagerFinalId, eagerFinalId, cluster ?? (0, Common_js_1.fail)());
|
|
750
750
|
return eagerFinalId;
|
|
751
751
|
}
|
|
752
752
|
else {
|
|
@@ -761,7 +761,7 @@ class IdCompressor {
|
|
|
761
761
|
* @returns the UUID or override string associated with the compressed ID. Fails if the ID was not generated by this compressor.
|
|
762
762
|
*/
|
|
763
763
|
decompress(id) {
|
|
764
|
-
return this.tryDecompress(id) ?? (0,
|
|
764
|
+
return this.tryDecompress(id) ?? (0, Common_js_1.fail)('Compressed ID was not generated by this compressor');
|
|
765
765
|
}
|
|
766
766
|
/**
|
|
767
767
|
* Attempts to decompress a previously compressed ID into a UUID or override string.
|
|
@@ -775,7 +775,7 @@ class IdCompressor {
|
|
|
775
775
|
// It may be an unfinalized eager final ID, so check with normalizer to get the offset from the session UUID
|
|
776
776
|
const creationIndex = this.sessionIdNormalizer.getCreationIndex(id);
|
|
777
777
|
if (creationIndex !== undefined) {
|
|
778
|
-
return (0,
|
|
778
|
+
return (0, NumericUuid_js_1.stableIdFromNumericUuid)(this.localSession.sessionUuid, creationIndex);
|
|
779
779
|
}
|
|
780
780
|
return undefined;
|
|
781
781
|
}
|
|
@@ -787,7 +787,7 @@ class IdCompressor {
|
|
|
787
787
|
}
|
|
788
788
|
else {
|
|
789
789
|
const offsetInCluster = id - baseFinalId;
|
|
790
|
-
return (0,
|
|
790
|
+
return (0, NumericUuid_js_1.stableIdFromNumericUuid)(cluster.baseUuid, offsetInCluster);
|
|
791
791
|
}
|
|
792
792
|
}
|
|
793
793
|
}
|
|
@@ -801,7 +801,7 @@ class IdCompressor {
|
|
|
801
801
|
// `localOverrides`s. Otherwise, it is a sequential allocation from the session UUID and can simply be negated and
|
|
802
802
|
// added to that UUID to obtain the stable ID associated with it.
|
|
803
803
|
const localOverride = this.localOverrides?.get(id);
|
|
804
|
-
return localOverride ?? (0,
|
|
804
|
+
return localOverride ?? (0, NumericUuid_js_1.stableIdFromNumericUuid)(this.localSession.sessionUuid, idOffset - 1);
|
|
805
805
|
}
|
|
806
806
|
}
|
|
807
807
|
/**
|
|
@@ -810,7 +810,7 @@ class IdCompressor {
|
|
|
810
810
|
* @returns the `CompressedId` associated with `uncompressed`. Fails if it has not been previously compressed by this compressor.
|
|
811
811
|
*/
|
|
812
812
|
recompress(uncompressed) {
|
|
813
|
-
return this.tryRecompress(uncompressed) ?? (0,
|
|
813
|
+
return this.tryRecompress(uncompressed) ?? (0, Common_js_1.fail)('No such string has ever been compressed');
|
|
814
814
|
}
|
|
815
815
|
/**
|
|
816
816
|
* Attempts to recompresses a decompressed ID, which could be a UUID or an override string.
|
|
@@ -844,8 +844,8 @@ class IdCompressor {
|
|
|
844
844
|
return undefined;
|
|
845
845
|
}
|
|
846
846
|
const { clusterBase: closestBaseFinalId, cluster: closestCluster } = compressionMapping;
|
|
847
|
-
numericUuid ?? (numericUuid = (0,
|
|
848
|
-
const uuidOffset = (0,
|
|
847
|
+
numericUuid ?? (numericUuid = (0, NumericUuid_js_1.numericUuidFromStableId)(inversionKey));
|
|
848
|
+
const uuidOffset = (0, NumericUuid_js_1.getPositiveDelta)(numericUuid, closestCluster.baseUuid, closestCluster.count - 1);
|
|
849
849
|
if (uuidOffset !== undefined) {
|
|
850
850
|
let targetFinalId = (closestBaseFinalId + uuidOffset);
|
|
851
851
|
const override = closestCluster.overrides?.get(targetFinalId);
|
|
@@ -881,7 +881,7 @@ class IdCompressor {
|
|
|
881
881
|
}
|
|
882
882
|
// Check if this local ID has not been allocated yet
|
|
883
883
|
if (-id > this.localIdCount) {
|
|
884
|
-
(0,
|
|
884
|
+
(0, Common_js_1.fail)('Supplied local ID was not created by this compressor.');
|
|
885
885
|
}
|
|
886
886
|
// Check if this local ID has not been finalized yet.
|
|
887
887
|
// Comparing lastFinalizedLocalId is a safe check for eager final IDs because the local IDs corresponding to them
|
|
@@ -894,7 +894,7 @@ class IdCompressor {
|
|
|
894
894
|
const override = this.localOverrides.get(id);
|
|
895
895
|
if (override !== undefined) {
|
|
896
896
|
const inversionKey = IdCompressor.createInversionKey(override);
|
|
897
|
-
const compressionMapping = this.clustersAndOverridesInversion.get(inversionKey) ?? (0,
|
|
897
|
+
const compressionMapping = this.clustersAndOverridesInversion.get(inversionKey) ?? (0, Common_js_1.fail)('Bimap is malformed.');
|
|
898
898
|
return !IdCompressor.isClusterInfo(compressionMapping) &&
|
|
899
899
|
!IdCompressor.isUnfinalizedOverride(compressionMapping) &&
|
|
900
900
|
compressionMapping.associatedLocalId === id
|
|
@@ -905,7 +905,7 @@ class IdCompressor {
|
|
|
905
905
|
return possibleFinal?.[0] ?? id;
|
|
906
906
|
}
|
|
907
907
|
const [correspondingFinal, cluster] = this.sessionIdNormalizer.getFinalId(id) ??
|
|
908
|
-
(0,
|
|
908
|
+
(0, Common_js_1.fail)('Locally created cluster should be added to the map when allocated');
|
|
909
909
|
if (cluster.overrides) {
|
|
910
910
|
const override = cluster.overrides.get(correspondingFinal);
|
|
911
911
|
if (typeof override === 'object' && override.originalOverridingFinal !== undefined) {
|
|
@@ -920,16 +920,16 @@ class IdCompressor {
|
|
|
920
920
|
if (sessionIdIfLocal === undefined || sessionIdIfLocal === this.localSessionId) {
|
|
921
921
|
const localIndex = -id;
|
|
922
922
|
if (localIndex > this.localIdCount) {
|
|
923
|
-
(0,
|
|
923
|
+
(0, Common_js_1.fail)('Supplied local ID was not created by this compressor.');
|
|
924
924
|
}
|
|
925
925
|
return id;
|
|
926
926
|
}
|
|
927
927
|
else {
|
|
928
928
|
const session = this.sessions.get(sessionIdIfLocal) ??
|
|
929
|
-
(0,
|
|
929
|
+
(0, Common_js_1.fail)('No IDs have ever been finalized by the supplied session.');
|
|
930
930
|
const localCount = -id;
|
|
931
|
-
const numericUuid = (0,
|
|
932
|
-
return this.compressNumericUuid(numericUuid) ?? (0,
|
|
931
|
+
const numericUuid = (0, NumericUuid_js_1.incrementUuid)(session.sessionUuid, localCount - 1);
|
|
932
|
+
return this.compressNumericUuid(numericUuid) ?? (0, Common_js_1.fail)('ID is not known to this compressor.');
|
|
933
933
|
}
|
|
934
934
|
}
|
|
935
935
|
const normalizedId = this.sessionIdNormalizer.getSessionSpaceId(id);
|
|
@@ -938,7 +938,7 @@ class IdCompressor {
|
|
|
938
938
|
}
|
|
939
939
|
// Check for a unified override finalized first by another session but to which the local session
|
|
940
940
|
// still has an associated local ID.
|
|
941
|
-
const [_, cluster] = this.getClusterForFinalId(id) ?? (0,
|
|
941
|
+
const [_, cluster] = this.getClusterForFinalId(id) ?? (0, Common_js_1.fail)('Supplied final ID was not finalized by this compressor.');
|
|
942
942
|
const override = cluster.overrides?.get(id);
|
|
943
943
|
if (typeof override === 'object' && override.associatedLocalId !== undefined) {
|
|
944
944
|
return override.associatedLocalId;
|
|
@@ -966,7 +966,7 @@ class IdCompressor {
|
|
|
966
966
|
* session-space ID corresponding to A0000000-0000-0000-0000-000000000000 (with override X0000000-0000-0000-0000-000000000000).
|
|
967
967
|
*/
|
|
968
968
|
compressNumericUuid(numericUuid) {
|
|
969
|
-
const stableId = (0,
|
|
969
|
+
const stableId = (0, NumericUuid_js_1.stableIdFromNumericUuid)(numericUuid);
|
|
970
970
|
const sessionSpaceId = this.recompressInternal(stableId, numericUuid);
|
|
971
971
|
if (sessionSpaceId === undefined) {
|
|
972
972
|
return undefined;
|
|
@@ -977,8 +977,8 @@ class IdCompressor {
|
|
|
977
977
|
* Returns a compressed ID for the supplied stable ID if it was created by the local session, and undefined otherwise.
|
|
978
978
|
*/
|
|
979
979
|
getCompressedIdForStableId(stableId) {
|
|
980
|
-
const numericUuid = typeof stableId === 'string' ? (0,
|
|
981
|
-
const creationIndex = (0,
|
|
980
|
+
const numericUuid = typeof stableId === 'string' ? (0, NumericUuid_js_1.numericUuidFromStableId)(stableId) : stableId;
|
|
981
|
+
const creationIndex = (0, NumericUuid_js_1.getPositiveDelta)(numericUuid, this.localSession.sessionUuid, this.localIdCount - 1);
|
|
982
982
|
if (creationIndex !== undefined) {
|
|
983
983
|
const sessionSpaceId = this.sessionIdNormalizer.getIdByCreationIndex(creationIndex);
|
|
984
984
|
if (sessionSpaceId !== undefined) {
|
|
@@ -1013,7 +1013,7 @@ class IdCompressor {
|
|
|
1013
1013
|
if (!this.localOverrides.equals(other.localOverrides, (a, b) => a === b)) {
|
|
1014
1014
|
return false;
|
|
1015
1015
|
}
|
|
1016
|
-
if (!(0,
|
|
1016
|
+
if (!(0, Common_js_1.compareMaps)(this.sessions, other.sessions, (a, b) => IdCompressor.sessionDataEqual(a, b, true, compareLocalState))) {
|
|
1017
1017
|
return false;
|
|
1018
1018
|
}
|
|
1019
1019
|
if (!this.sessionIdNormalizer.equals(other.sessionIdNormalizer, (a, b) => IdCompressor.idClustersEqual(a, b, false, compareLocalState))) {
|
|
@@ -1093,7 +1093,7 @@ class IdCompressor {
|
|
|
1093
1093
|
}
|
|
1094
1094
|
static sessionDataEqual(a, b, checkCluster = true, compareLocalState = true) {
|
|
1095
1095
|
if (a.attributionId !== b.attributionId ||
|
|
1096
|
-
!(0,
|
|
1096
|
+
!(0, NumericUuid_js_1.numericUuidEquals)(a.sessionUuid, b.sessionUuid) ||
|
|
1097
1097
|
a.lastFinalizedLocalId !== b.lastFinalizedLocalId) {
|
|
1098
1098
|
return false;
|
|
1099
1099
|
}
|
|
@@ -1110,13 +1110,13 @@ class IdCompressor {
|
|
|
1110
1110
|
return true;
|
|
1111
1111
|
}
|
|
1112
1112
|
static idClustersEqual(a, b, checkSessionData = true, compareLocalState = true) {
|
|
1113
|
-
const areEqual = (0,
|
|
1113
|
+
const areEqual = (0, NumericUuid_js_1.numericUuidEquals)(a.baseUuid, b.baseUuid) &&
|
|
1114
1114
|
a.capacity === b.capacity &&
|
|
1115
1115
|
a.count === b.count &&
|
|
1116
1116
|
(!checkSessionData || IdCompressor.sessionDataEqual(a.session, b.session, false, compareLocalState)) &&
|
|
1117
1117
|
(a.overrides === undefined) === (b.overrides === undefined) &&
|
|
1118
1118
|
(a.overrides === undefined ||
|
|
1119
|
-
(0,
|
|
1119
|
+
(0, Common_js_1.compareMaps)((0, Common_js_1.assertNotUndefined)(a.overrides), (0, Common_js_1.assertNotUndefined)(b.overrides), (a, b) => {
|
|
1120
1120
|
if (compareLocalState) {
|
|
1121
1121
|
if (typeof a === 'string' || typeof b === 'string') {
|
|
1122
1122
|
return a === b;
|
|
@@ -1152,7 +1152,7 @@ class IdCompressor {
|
|
|
1152
1152
|
if (session.attributionId !== sessionId) {
|
|
1153
1153
|
// As an optimization, don't include the attributionId if it is its default (the sessionId)
|
|
1154
1154
|
// Get the index into the array for the given attribution ID. If it doesn't exist, push it onto the array and update the map.
|
|
1155
|
-
sessionData.push((0,
|
|
1155
|
+
sessionData.push((0, Common_js_1.getOrCreate)(attributionIdToAttributionIndex, session.attributionId, (id) => (serializedAttributionIds ?? (serializedAttributionIds = [])).push(id) - 1));
|
|
1156
1156
|
}
|
|
1157
1157
|
sessionIdToSessionIndex.set(sessionId, serializedSessions.length);
|
|
1158
1158
|
serializedSessions.push(sessionData);
|
|
@@ -1160,10 +1160,10 @@ class IdCompressor {
|
|
|
1160
1160
|
}
|
|
1161
1161
|
const serializedClusters = [];
|
|
1162
1162
|
for (const [baseFinalId, cluster] of this.finalIdToCluster.entries()) {
|
|
1163
|
-
const sessionId = (0,
|
|
1163
|
+
const sessionId = (0, NumericUuid_js_1.stableIdFromNumericUuid)(cluster.session.sessionUuid);
|
|
1164
1164
|
if (sessionId !== reservedSessionId) {
|
|
1165
1165
|
const sessionIndex = sessionIdToSessionIndex.get(sessionId) ??
|
|
1166
|
-
(0,
|
|
1166
|
+
(0, Common_js_1.fail)('Session object contains wrong session numeric UUID');
|
|
1167
1167
|
const serializedCluster = [sessionIndex, cluster.capacity];
|
|
1168
1168
|
if (cluster.count !== cluster.capacity) {
|
|
1169
1169
|
serializedCluster.push(cluster.count);
|
|
@@ -1200,7 +1200,7 @@ class IdCompressor {
|
|
|
1200
1200
|
sessions: serializedSessions,
|
|
1201
1201
|
clusters: serializedClusters,
|
|
1202
1202
|
};
|
|
1203
|
-
(0,
|
|
1203
|
+
(0, Common_js_1.setPropertyIfDefined)(serializedAttributionIds, serializedIdCompressor, 'attributionIds');
|
|
1204
1204
|
if (withSession) {
|
|
1205
1205
|
const serializedWithSession = serializedIdCompressor;
|
|
1206
1206
|
serializedWithSession.localSessionIndex = serializedWithSession.sessions.findIndex(([sessionId]) => sessionId === this.localSessionId);
|
|
@@ -1235,7 +1235,7 @@ class IdCompressor {
|
|
|
1235
1235
|
localSessionId = serializedSessionData[0];
|
|
1236
1236
|
const attributionIndex = serializedSessionData[1];
|
|
1237
1237
|
if (attributionIndex !== undefined) {
|
|
1238
|
-
(0,
|
|
1238
|
+
(0, Common_js_1.assertWithMessage)(serializedAttributionIds !== undefined && serializedAttributionIds.length > attributionIndex);
|
|
1239
1239
|
attributionId = serializedAttributionIds[attributionIndex];
|
|
1240
1240
|
}
|
|
1241
1241
|
serializedLocalState = serializedWithSession.localState;
|
|
@@ -1284,7 +1284,7 @@ class IdCompressor {
|
|
|
1284
1284
|
const cluster = {
|
|
1285
1285
|
capacity,
|
|
1286
1286
|
count,
|
|
1287
|
-
baseUuid: (0,
|
|
1287
|
+
baseUuid: (0, NumericUuid_js_1.incrementUuid)(sessionUuid, currentIdCount),
|
|
1288
1288
|
session,
|
|
1289
1289
|
};
|
|
1290
1290
|
const lastFinalizedNormalized = lastFinalizedLocalId ?? 0;
|
|
@@ -1293,7 +1293,7 @@ class IdCompressor {
|
|
|
1293
1293
|
session.currentClusterDetails = { clusterBase, cluster };
|
|
1294
1294
|
compressor.nextClusterBaseFinalId = (compressor.nextClusterBaseFinalId + capacity);
|
|
1295
1295
|
compressor.finalIdToCluster.append(clusterBase, cluster);
|
|
1296
|
-
compressor.clustersAndOverridesInversion.set((0,
|
|
1296
|
+
compressor.clustersAndOverridesInversion.set((0, NumericUuid_js_1.stableIdFromNumericUuid)(cluster.baseUuid), {
|
|
1297
1297
|
clusterBase,
|
|
1298
1298
|
cluster,
|
|
1299
1299
|
});
|
|
@@ -1307,7 +1307,7 @@ class IdCompressor {
|
|
|
1307
1307
|
originalOverridingFinal,
|
|
1308
1308
|
};
|
|
1309
1309
|
if (serializedLocalState !== undefined) {
|
|
1310
|
-
(0,
|
|
1310
|
+
(0, Common_js_1.setPropertyIfDefined)(localOverridesInverse.get(override), unifiedOverride, 'associatedLocalId');
|
|
1311
1311
|
}
|
|
1312
1312
|
cluster.overrides.set(finalId, unifiedOverride);
|
|
1313
1313
|
}
|
|
@@ -1331,7 +1331,7 @@ class IdCompressor {
|
|
|
1331
1331
|
originalOverridingFinal: finalId,
|
|
1332
1332
|
};
|
|
1333
1333
|
if (serializedLocalState !== undefined) {
|
|
1334
|
-
(0,
|
|
1334
|
+
(0, Common_js_1.setPropertyIfDefined)(associatedLocal, finalizedOverride, 'associatedLocalId');
|
|
1335
1335
|
}
|
|
1336
1336
|
compressor.clustersAndOverridesInversion.set(IdCompressor.createInversionKey(override), finalizedOverride);
|
|
1337
1337
|
}
|
|
@@ -1339,19 +1339,19 @@ class IdCompressor {
|
|
|
1339
1339
|
}
|
|
1340
1340
|
}
|
|
1341
1341
|
if (serializedLocalState !== undefined) {
|
|
1342
|
-
compressor.sessionIdNormalizer =
|
|
1342
|
+
compressor.sessionIdNormalizer = SessionIdNormalizer_js_1.SessionIdNormalizer.deserialize(serializedLocalState.sessionNormalizer, (finalId) => {
|
|
1343
1343
|
const [_, cluster] = compressor.finalIdToCluster.getPairOrNextLower(finalId) ??
|
|
1344
|
-
(0,
|
|
1344
|
+
(0, Common_js_1.fail)('Final in serialized normalizer was never created.');
|
|
1345
1345
|
return cluster;
|
|
1346
1346
|
});
|
|
1347
1347
|
}
|
|
1348
|
-
(0,
|
|
1348
|
+
(0, Common_js_1.assertWithMessage)(compressor.localSession.lastFinalizedLocalId === undefined ||
|
|
1349
1349
|
compressor.localIdCount >= -compressor.localSession.lastFinalizedLocalId);
|
|
1350
1350
|
return compressor;
|
|
1351
1351
|
}
|
|
1352
1352
|
static convertToCurrentVersion(serializedCompressor, hasSession) {
|
|
1353
1353
|
if (serializedCompressor.version !== currentWrittenVersion) {
|
|
1354
|
-
(0,
|
|
1354
|
+
(0, Common_js_1.fail)('Unknown SerializedIdCompressor version number');
|
|
1355
1355
|
}
|
|
1356
1356
|
const serialized = serializedCompressor;
|
|
1357
1357
|
if (hasSession !== hasOngoingSession(serialized)) {
|