@fluid-experimental/tree 0.58.2002 → 0.59.1000
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/README.md +159 -46
- package/dist/ChangeCompression.d.ts +39 -0
- package/dist/ChangeCompression.d.ts.map +1 -0
- package/dist/ChangeCompression.js +117 -0
- package/dist/ChangeCompression.js.map +1 -0
- package/{lib/default-edits/PersistedTypes.d.ts → dist/ChangeTypes.d.ts} +58 -105
- package/dist/ChangeTypes.d.ts.map +1 -0
- package/dist/{default-edits/PersistedTypes.js → ChangeTypes.js} +21 -76
- package/dist/ChangeTypes.js.map +1 -0
- package/dist/Checkout.d.ts +39 -27
- package/dist/Checkout.d.ts.map +1 -1
- package/dist/Checkout.js +61 -32
- package/dist/Checkout.js.map +1 -1
- package/dist/Common.d.ts +175 -38
- package/dist/Common.d.ts.map +1 -1
- package/dist/Common.js +240 -103
- package/dist/Common.js.map +1 -1
- package/dist/EagerCheckout.d.ts +24 -0
- package/dist/EagerCheckout.d.ts.map +1 -0
- package/dist/{BasicCheckout.js → EagerCheckout.js} +9 -6
- package/dist/EagerCheckout.js.map +1 -0
- package/dist/EditLog.d.ts +77 -63
- package/dist/EditLog.d.ts.map +1 -1
- package/dist/EditLog.js +85 -48
- package/dist/EditLog.js.map +1 -1
- package/dist/EditUtilities.d.ts +168 -0
- package/dist/EditUtilities.d.ts.map +1 -0
- package/dist/EditUtilities.js +373 -0
- package/dist/EditUtilities.js.map +1 -0
- package/dist/EventTypes.d.ts +73 -0
- package/dist/EventTypes.d.ts.map +1 -0
- package/dist/EventTypes.js +78 -0
- package/dist/EventTypes.js.map +1 -0
- package/dist/Forest.d.ts +29 -7
- package/dist/Forest.d.ts.map +1 -1
- package/dist/Forest.js +60 -36
- package/dist/Forest.js.map +1 -1
- package/dist/HistoryEditFactory.d.ts +20 -0
- package/dist/HistoryEditFactory.d.ts.map +1 -0
- package/dist/HistoryEditFactory.js +226 -0
- package/dist/HistoryEditFactory.js.map +1 -0
- package/dist/IdConversion.d.ts +12 -0
- package/dist/IdConversion.d.ts.map +1 -0
- package/dist/IdConversion.js +98 -0
- package/dist/IdConversion.js.map +1 -0
- package/dist/Identifiers.d.ts +89 -2
- package/dist/Identifiers.d.ts.map +1 -1
- package/dist/Identifiers.js +10 -0
- package/dist/Identifiers.js.map +1 -1
- package/dist/InitialTree.d.ts +2 -2
- package/dist/InitialTree.d.ts.map +1 -1
- package/dist/InitialTree.js +2 -1
- package/dist/InitialTree.js.map +1 -1
- package/dist/LazyCheckout.d.ts +28 -0
- package/dist/LazyCheckout.d.ts.map +1 -0
- package/dist/LazyCheckout.js +44 -0
- package/dist/LazyCheckout.js.map +1 -0
- package/dist/LogViewer.d.ts +129 -85
- package/dist/LogViewer.d.ts.map +1 -1
- package/dist/LogViewer.js +111 -85
- package/dist/LogViewer.js.map +1 -1
- package/dist/MergeHealth.d.ts +221 -0
- package/dist/MergeHealth.d.ts.map +1 -0
- package/dist/MergeHealth.js +263 -0
- package/dist/MergeHealth.js.map +1 -0
- package/dist/NodeIdUtilities.d.ts +105 -0
- package/dist/NodeIdUtilities.d.ts.map +1 -0
- package/dist/NodeIdUtilities.js +60 -0
- package/dist/NodeIdUtilities.js.map +1 -0
- package/dist/PayloadUtilities.d.ts +42 -0
- package/dist/PayloadUtilities.d.ts.map +1 -0
- package/dist/PayloadUtilities.js +114 -0
- package/dist/PayloadUtilities.js.map +1 -0
- package/dist/ReconciliationPath.d.ts +18 -13
- package/dist/ReconciliationPath.d.ts.map +1 -1
- package/dist/ReconciliationPath.js.map +1 -1
- package/dist/RevisionValueCache.d.ts +11 -2
- package/dist/RevisionValueCache.d.ts.map +1 -1
- package/dist/RevisionValueCache.js +2 -3
- package/dist/RevisionValueCache.js.map +1 -1
- package/dist/RevisionView.d.ts +83 -0
- package/dist/RevisionView.d.ts.map +1 -0
- package/dist/RevisionView.js +182 -0
- package/dist/RevisionView.js.map +1 -0
- package/dist/SerializationUtilities.d.ts +36 -0
- package/dist/SerializationUtilities.d.ts.map +1 -0
- package/dist/SerializationUtilities.js +102 -0
- package/dist/SerializationUtilities.js.map +1 -0
- package/dist/SharedTree.d.ts +439 -0
- package/dist/SharedTree.d.ts.map +1 -0
- package/dist/SharedTree.js +1109 -0
- package/dist/SharedTree.js.map +1 -0
- package/dist/SharedTreeEncoder.d.ts +102 -0
- package/dist/SharedTreeEncoder.d.ts.map +1 -0
- package/dist/SharedTreeEncoder.js +313 -0
- package/dist/SharedTreeEncoder.js.map +1 -0
- package/dist/StringInterner.d.ts +46 -0
- package/dist/StringInterner.d.ts.map +1 -0
- package/dist/StringInterner.js +61 -0
- package/dist/StringInterner.js.map +1 -0
- package/dist/Summary.d.ts +40 -0
- package/dist/Summary.d.ts.map +1 -0
- package/dist/Summary.js +23 -0
- package/dist/Summary.js.map +1 -0
- package/dist/SummaryBackCompatibility.d.ts +22 -22
- package/dist/SummaryBackCompatibility.d.ts.map +1 -1
- package/dist/SummaryBackCompatibility.js +30 -33
- package/dist/SummaryBackCompatibility.js.map +1 -1
- package/dist/SummaryTestUtilities.d.ts +31 -0
- package/dist/SummaryTestUtilities.d.ts.map +1 -0
- package/dist/SummaryTestUtilities.js +37 -0
- package/dist/SummaryTestUtilities.js.map +1 -0
- package/dist/Transaction.d.ts +52 -0
- package/dist/Transaction.d.ts.map +1 -0
- package/dist/Transaction.js +72 -0
- package/dist/Transaction.js.map +1 -0
- package/dist/TransactionInternal.d.ts +540 -0
- package/dist/TransactionInternal.d.ts.map +1 -0
- package/dist/TransactionInternal.js +626 -0
- package/dist/TransactionInternal.js.map +1 -0
- package/dist/TreeCompressor.d.ts +36 -0
- package/dist/TreeCompressor.d.ts.map +1 -0
- package/dist/TreeCompressor.js +137 -0
- package/dist/TreeCompressor.js.map +1 -0
- package/dist/TreeNodeHandle.d.ts +12 -18
- package/dist/TreeNodeHandle.d.ts.map +1 -1
- package/dist/TreeNodeHandle.js +13 -23
- package/dist/TreeNodeHandle.js.map +1 -1
- package/dist/TreeView.d.ts +166 -0
- package/dist/TreeView.d.ts.map +1 -0
- package/dist/TreeView.js +218 -0
- package/dist/TreeView.js.map +1 -0
- package/dist/TreeViewUtilities.d.ts +21 -0
- package/dist/TreeViewUtilities.d.ts.map +1 -0
- package/dist/TreeViewUtilities.js +77 -0
- package/dist/TreeViewUtilities.js.map +1 -0
- package/dist/{default-edits/UndoRedoHandler.d.ts → UndoRedoHandler.d.ts} +2 -2
- package/dist/UndoRedoHandler.d.ts.map +1 -0
- package/dist/{default-edits/UndoRedoHandler.js → UndoRedoHandler.js} +5 -9
- package/dist/UndoRedoHandler.js.map +1 -0
- package/dist/id-compressor/AppendOnlySortedMap.d.ts +127 -0
- package/dist/id-compressor/AppendOnlySortedMap.d.ts.map +1 -0
- package/dist/id-compressor/AppendOnlySortedMap.js +283 -0
- package/dist/id-compressor/AppendOnlySortedMap.js.map +1 -0
- package/dist/id-compressor/IdCompressor.d.ts +389 -0
- package/dist/id-compressor/IdCompressor.d.ts.map +1 -0
- package/dist/id-compressor/IdCompressor.js +1353 -0
- package/dist/id-compressor/IdCompressor.js.map +1 -0
- package/dist/id-compressor/IdRange.d.ts +11 -0
- package/dist/id-compressor/IdRange.d.ts.map +1 -0
- package/dist/id-compressor/IdRange.js +29 -0
- package/dist/id-compressor/IdRange.js.map +1 -0
- package/dist/id-compressor/NumericUuid.d.ts +63 -0
- package/dist/id-compressor/NumericUuid.d.ts.map +1 -0
- package/dist/id-compressor/NumericUuid.js +377 -0
- package/dist/id-compressor/NumericUuid.js.map +1 -0
- package/dist/id-compressor/index.d.ts +12 -0
- package/dist/id-compressor/index.d.ts.map +1 -0
- package/dist/id-compressor/index.js +26 -0
- package/dist/id-compressor/index.js.map +1 -0
- package/dist/id-compressor/persisted-types/0.0.1.d.ts +156 -0
- package/dist/id-compressor/persisted-types/0.0.1.d.ts.map +1 -0
- package/dist/id-compressor/persisted-types/0.0.1.js +7 -0
- package/dist/id-compressor/persisted-types/0.0.1.js.map +1 -0
- package/dist/id-compressor/persisted-types/index.d.ts +6 -0
- package/dist/id-compressor/persisted-types/index.d.ts.map +1 -0
- package/dist/id-compressor/persisted-types/index.js +18 -0
- package/dist/id-compressor/persisted-types/index.js.map +1 -0
- package/dist/index.d.ts +29 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +50 -35
- package/dist/index.js.map +1 -1
- package/dist/persisted-types/0.0.2.d.ts +385 -0
- package/dist/persisted-types/0.0.2.d.ts.map +1 -0
- package/dist/persisted-types/0.0.2.js +113 -0
- package/dist/persisted-types/0.0.2.js.map +1 -0
- package/dist/persisted-types/0.1.1.d.ts +314 -0
- package/dist/persisted-types/0.1.1.d.ts.map +1 -0
- package/dist/persisted-types/0.1.1.js +153 -0
- package/dist/persisted-types/0.1.1.js.map +1 -0
- package/dist/persisted-types/index.d.ts +7 -0
- package/dist/persisted-types/index.d.ts.map +1 -0
- package/dist/persisted-types/index.js +20 -0
- package/dist/persisted-types/index.js.map +1 -0
- package/docs/0-1-1-Compression.md +228 -0
- package/docs/Breaking-Change-Migration.md +52 -0
- package/docs/Compression.md +2 -2
- package/docs/Telemetry.md +43 -0
- package/docs/Write-Format.md +19 -0
- package/lib/ChangeCompression.d.ts +39 -0
- package/lib/ChangeCompression.d.ts.map +1 -0
- package/lib/ChangeCompression.js +111 -0
- package/lib/ChangeCompression.js.map +1 -0
- package/{dist/default-edits/PersistedTypes.d.ts → lib/ChangeTypes.d.ts} +58 -105
- package/lib/ChangeTypes.d.ts.map +1 -0
- package/lib/{default-edits/PersistedTypes.js → ChangeTypes.js} +15 -68
- package/lib/ChangeTypes.js.map +1 -0
- package/lib/Checkout.d.ts +39 -27
- package/lib/Checkout.d.ts.map +1 -1
- package/lib/Checkout.js +53 -24
- package/lib/Checkout.js.map +1 -1
- package/lib/Common.d.ts +175 -38
- package/lib/Common.d.ts.map +1 -1
- package/lib/Common.js +226 -101
- package/lib/Common.js.map +1 -1
- package/lib/EagerCheckout.d.ts +24 -0
- package/lib/EagerCheckout.d.ts.map +1 -0
- package/lib/{BasicCheckout.js → EagerCheckout.js} +7 -4
- package/lib/EagerCheckout.js.map +1 -0
- package/lib/EditLog.d.ts +77 -63
- package/lib/EditLog.d.ts.map +1 -1
- package/lib/EditLog.js +83 -47
- package/lib/EditLog.js.map +1 -1
- package/lib/EditUtilities.d.ts +168 -0
- package/lib/EditUtilities.d.ts.map +1 -0
- package/lib/EditUtilities.js +353 -0
- package/lib/EditUtilities.js.map +1 -0
- package/lib/EventTypes.d.ts +73 -0
- package/lib/EventTypes.d.ts.map +1 -0
- package/lib/EventTypes.js +75 -0
- package/lib/EventTypes.js.map +1 -0
- package/lib/Forest.d.ts +29 -7
- package/lib/Forest.d.ts.map +1 -1
- package/lib/Forest.js +58 -35
- package/lib/Forest.js.map +1 -1
- package/lib/HistoryEditFactory.d.ts +20 -0
- package/lib/HistoryEditFactory.d.ts.map +1 -0
- package/lib/{default-edits/HistoryEditFactory.js → HistoryEditFactory.js} +78 -39
- package/lib/HistoryEditFactory.js.map +1 -0
- package/lib/IdConversion.d.ts +12 -0
- package/lib/IdConversion.d.ts.map +1 -0
- package/lib/IdConversion.js +91 -0
- package/lib/IdConversion.js.map +1 -0
- package/lib/Identifiers.d.ts +89 -2
- package/lib/Identifiers.d.ts.map +1 -1
- package/lib/Identifiers.js +8 -1
- package/lib/Identifiers.js.map +1 -1
- package/lib/InitialTree.d.ts +2 -2
- package/lib/InitialTree.d.ts.map +1 -1
- package/lib/InitialTree.js +2 -1
- package/lib/InitialTree.js.map +1 -1
- package/lib/LazyCheckout.d.ts +28 -0
- package/lib/LazyCheckout.d.ts.map +1 -0
- package/lib/LazyCheckout.js +40 -0
- package/lib/LazyCheckout.js.map +1 -0
- package/lib/LogViewer.d.ts +129 -85
- package/lib/LogViewer.d.ts.map +1 -1
- package/lib/LogViewer.js +103 -77
- package/lib/LogViewer.js.map +1 -1
- package/lib/MergeHealth.d.ts +221 -0
- package/lib/MergeHealth.d.ts.map +1 -0
- package/lib/MergeHealth.js +258 -0
- package/lib/MergeHealth.js.map +1 -0
- package/lib/NodeIdUtilities.d.ts +105 -0
- package/lib/NodeIdUtilities.d.ts.map +1 -0
- package/lib/NodeIdUtilities.js +53 -0
- package/lib/NodeIdUtilities.js.map +1 -0
- package/lib/PayloadUtilities.d.ts +42 -0
- package/lib/PayloadUtilities.d.ts.map +1 -0
- package/lib/PayloadUtilities.js +110 -0
- package/lib/PayloadUtilities.js.map +1 -0
- package/lib/ReconciliationPath.d.ts +18 -13
- package/lib/ReconciliationPath.d.ts.map +1 -1
- package/lib/ReconciliationPath.js.map +1 -1
- package/lib/RevisionValueCache.d.ts +11 -2
- package/lib/RevisionValueCache.d.ts.map +1 -1
- package/lib/RevisionValueCache.js +2 -3
- package/lib/RevisionValueCache.js.map +1 -1
- package/lib/RevisionView.d.ts +83 -0
- package/lib/RevisionView.d.ts.map +1 -0
- package/lib/RevisionView.js +175 -0
- package/lib/RevisionView.js.map +1 -0
- package/lib/SerializationUtilities.d.ts +36 -0
- package/lib/SerializationUtilities.d.ts.map +1 -0
- package/lib/SerializationUtilities.js +95 -0
- package/lib/SerializationUtilities.js.map +1 -0
- package/lib/SharedTree.d.ts +439 -0
- package/lib/SharedTree.d.ts.map +1 -0
- package/lib/SharedTree.js +1104 -0
- package/lib/SharedTree.js.map +1 -0
- package/lib/SharedTreeEncoder.d.ts +102 -0
- package/lib/SharedTreeEncoder.d.ts.map +1 -0
- package/lib/SharedTreeEncoder.js +308 -0
- package/lib/SharedTreeEncoder.js.map +1 -0
- package/lib/StringInterner.d.ts +46 -0
- package/lib/StringInterner.d.ts.map +1 -0
- package/lib/StringInterner.js +57 -0
- package/lib/StringInterner.js.map +1 -0
- package/lib/Summary.d.ts +40 -0
- package/lib/Summary.d.ts.map +1 -0
- package/lib/Summary.js +19 -0
- package/lib/Summary.js.map +1 -0
- package/lib/SummaryBackCompatibility.d.ts +22 -22
- package/lib/SummaryBackCompatibility.d.ts.map +1 -1
- package/lib/SummaryBackCompatibility.js +29 -32
- package/lib/SummaryBackCompatibility.js.map +1 -1
- package/lib/SummaryTestUtilities.d.ts +31 -0
- package/lib/SummaryTestUtilities.d.ts.map +1 -0
- package/lib/SummaryTestUtilities.js +32 -0
- package/lib/SummaryTestUtilities.js.map +1 -0
- package/lib/Transaction.d.ts +52 -0
- package/lib/Transaction.d.ts.map +1 -0
- package/lib/Transaction.js +68 -0
- package/lib/Transaction.js.map +1 -0
- package/lib/TransactionInternal.d.ts +540 -0
- package/lib/TransactionInternal.d.ts.map +1 -0
- package/lib/TransactionInternal.js +622 -0
- package/lib/TransactionInternal.js.map +1 -0
- package/lib/TreeCompressor.d.ts +36 -0
- package/lib/TreeCompressor.d.ts.map +1 -0
- package/lib/TreeCompressor.js +133 -0
- package/lib/TreeCompressor.js.map +1 -0
- package/lib/TreeNodeHandle.d.ts +12 -18
- package/lib/TreeNodeHandle.d.ts.map +1 -1
- package/lib/TreeNodeHandle.js +14 -24
- package/lib/TreeNodeHandle.js.map +1 -1
- package/lib/TreeView.d.ts +166 -0
- package/lib/TreeView.d.ts.map +1 -0
- package/lib/TreeView.js +214 -0
- package/lib/TreeView.js.map +1 -0
- package/lib/TreeViewUtilities.d.ts +21 -0
- package/lib/TreeViewUtilities.d.ts.map +1 -0
- package/lib/TreeViewUtilities.js +71 -0
- package/lib/TreeViewUtilities.js.map +1 -0
- package/lib/{default-edits/UndoRedoHandler.d.ts → UndoRedoHandler.d.ts} +2 -2
- package/lib/UndoRedoHandler.d.ts.map +1 -0
- package/lib/{default-edits/UndoRedoHandler.js → UndoRedoHandler.js} +3 -7
- package/lib/UndoRedoHandler.js.map +1 -0
- package/lib/id-compressor/AppendOnlySortedMap.d.ts +127 -0
- package/lib/id-compressor/AppendOnlySortedMap.d.ts.map +1 -0
- package/lib/id-compressor/AppendOnlySortedMap.js +278 -0
- package/lib/id-compressor/AppendOnlySortedMap.js.map +1 -0
- package/lib/id-compressor/IdCompressor.d.ts +389 -0
- package/lib/id-compressor/IdCompressor.d.ts.map +1 -0
- package/lib/id-compressor/IdCompressor.js +1343 -0
- package/lib/id-compressor/IdCompressor.js.map +1 -0
- package/lib/id-compressor/IdRange.d.ts +11 -0
- package/lib/id-compressor/IdRange.d.ts.map +1 -0
- package/lib/id-compressor/IdRange.js +25 -0
- package/lib/id-compressor/IdRange.js.map +1 -0
- package/lib/id-compressor/NumericUuid.d.ts +63 -0
- package/lib/id-compressor/NumericUuid.d.ts.map +1 -0
- package/lib/id-compressor/NumericUuid.js +365 -0
- package/lib/id-compressor/NumericUuid.js.map +1 -0
- package/lib/id-compressor/index.d.ts +12 -0
- package/lib/id-compressor/index.d.ts.map +1 -0
- package/lib/id-compressor/index.js +12 -0
- package/lib/id-compressor/index.js.map +1 -0
- package/lib/id-compressor/persisted-types/0.0.1.d.ts +156 -0
- package/lib/id-compressor/persisted-types/0.0.1.d.ts.map +1 -0
- package/lib/{test/Snapshot.tests.d.ts → id-compressor/persisted-types/0.0.1.js} +1 -1
- package/lib/id-compressor/persisted-types/0.0.1.js.map +1 -0
- package/lib/id-compressor/persisted-types/index.d.ts +6 -0
- package/lib/id-compressor/persisted-types/index.d.ts.map +1 -0
- package/lib/id-compressor/persisted-types/index.js +6 -0
- package/lib/id-compressor/persisted-types/index.js.map +1 -0
- package/lib/index.d.ts +29 -9
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +23 -6
- package/lib/index.js.map +1 -1
- package/lib/persisted-types/0.0.2.d.ts +385 -0
- package/lib/persisted-types/0.0.2.d.ts.map +1 -0
- package/lib/persisted-types/0.0.2.js +110 -0
- package/lib/persisted-types/0.0.2.js.map +1 -0
- package/lib/persisted-types/0.1.1.d.ts +314 -0
- package/lib/persisted-types/0.1.1.d.ts.map +1 -0
- package/lib/persisted-types/0.1.1.js +150 -0
- package/lib/persisted-types/0.1.1.js.map +1 -0
- package/lib/persisted-types/index.d.ts +7 -0
- package/lib/persisted-types/index.d.ts.map +1 -0
- package/lib/persisted-types/index.js +8 -0
- package/lib/persisted-types/index.js.map +1 -0
- package/lib/test/AppendOnlySortedMap.tests.d.ts +6 -0
- package/lib/test/AppendOnlySortedMap.tests.d.ts.map +1 -0
- package/lib/test/AppendOnlySortedMap.tests.js +169 -0
- package/lib/test/AppendOnlySortedMap.tests.js.map +1 -0
- package/lib/test/{SnapshotUtilities.tests.d.ts → ChangeCompression.tests.d.ts} +1 -1
- package/lib/test/ChangeCompression.tests.d.ts.map +1 -0
- package/lib/test/ChangeCompression.tests.js +145 -0
- package/lib/test/ChangeCompression.tests.js.map +1 -0
- package/lib/test/Checkout.tests.d.ts +2 -3
- package/lib/test/Checkout.tests.d.ts.map +1 -1
- package/lib/test/Checkout.tests.js +126 -69
- package/lib/test/Checkout.tests.js.map +1 -1
- package/lib/test/Common.tests.js +60 -2
- package/lib/test/Common.tests.js.map +1 -1
- package/lib/test/{BasicCheckout.tests.d.ts → EagerCheckout.tests.d.ts} +1 -1
- package/lib/test/EagerCheckout.tests.d.ts.map +1 -0
- package/lib/test/EagerCheckout.tests.js +20 -0
- package/lib/test/EagerCheckout.tests.js.map +1 -0
- package/lib/test/Edit.tests.js +22 -14
- package/lib/test/Edit.tests.js.map +1 -1
- package/lib/test/{Anchors.glassBox.tests.d.ts → EditLog.perf.tests.d.ts} +1 -1
- package/lib/test/EditLog.perf.tests.d.ts.map +1 -0
- package/lib/test/EditLog.perf.tests.js +30 -0
- package/lib/test/EditLog.perf.tests.js.map +1 -0
- package/lib/test/EditLog.tests.js +10 -6
- package/lib/test/EditLog.tests.js.map +1 -1
- package/lib/test/EditUtilities.tests.d.ts +6 -0
- package/lib/test/EditUtilities.tests.d.ts.map +1 -0
- package/lib/test/EditUtilities.tests.js +503 -0
- package/lib/test/EditUtilities.tests.js.map +1 -0
- package/lib/test/Forest.perf.tests.d.ts +6 -0
- package/lib/test/Forest.perf.tests.d.ts.map +1 -0
- package/lib/test/Forest.perf.tests.js +133 -0
- package/lib/test/Forest.perf.tests.js.map +1 -0
- package/lib/test/Forest.tests.js +54 -27
- package/lib/test/Forest.tests.js.map +1 -1
- package/lib/test/GenericTransaction.tests.js +12 -3
- package/lib/test/GenericTransaction.tests.js.map +1 -1
- package/lib/test/HistoryEditFactory.tests.d.ts +6 -0
- package/lib/test/HistoryEditFactory.tests.d.ts.map +1 -0
- package/lib/test/HistoryEditFactory.tests.js +90 -0
- package/lib/test/HistoryEditFactory.tests.js.map +1 -0
- package/lib/test/IdCompressor.perf.tests.d.ts +6 -0
- package/lib/test/IdCompressor.perf.tests.d.ts.map +1 -0
- package/lib/test/IdCompressor.perf.tests.js +304 -0
- package/lib/test/IdCompressor.perf.tests.js.map +1 -0
- package/lib/test/IdCompressor.tests.d.ts +6 -0
- package/lib/test/IdCompressor.tests.d.ts.map +1 -0
- package/lib/test/IdCompressor.tests.js +1075 -0
- package/lib/test/IdCompressor.tests.js.map +1 -0
- package/lib/test/IdConversion.tests.d.ts +6 -0
- package/lib/test/IdConversion.tests.d.ts.map +1 -0
- package/lib/test/IdConversion.tests.js +36 -0
- package/lib/test/IdConversion.tests.js.map +1 -0
- package/lib/test/LazyCheckout.tests.d.ts +6 -0
- package/lib/test/LazyCheckout.tests.d.ts.map +1 -0
- package/lib/test/LazyCheckout.tests.js +22 -0
- package/lib/test/LazyCheckout.tests.js.map +1 -0
- package/lib/test/LogViewer.tests.js +276 -191
- package/lib/test/LogViewer.tests.js.map +1 -1
- package/lib/test/{SharedTreeWithAnchors.tests.d.ts → MergeHealthTelemetryHeartbeat.tests.d.ts} +1 -1
- package/lib/test/MergeHealthTelemetryHeartbeat.tests.d.ts.map +1 -0
- package/lib/test/MergeHealthTelemetryHeartbeat.tests.js +342 -0
- package/lib/test/MergeHealthTelemetryHeartbeat.tests.js.map +1 -0
- package/lib/test/NumericUuid.perf.tests.d.ts +6 -0
- package/lib/test/NumericUuid.perf.tests.d.ts.map +1 -0
- package/lib/test/NumericUuid.perf.tests.js +68 -0
- package/lib/test/NumericUuid.perf.tests.js.map +1 -0
- package/lib/test/NumericUuid.tests.d.ts +6 -0
- package/lib/test/NumericUuid.tests.d.ts.map +1 -0
- package/lib/test/NumericUuid.tests.js +191 -0
- package/lib/test/NumericUuid.tests.js.map +1 -0
- package/lib/test/RevisionView.tests.d.ts +6 -0
- package/lib/test/RevisionView.tests.d.ts.map +1 -0
- package/lib/test/RevisionView.tests.js +133 -0
- package/lib/test/RevisionView.tests.js.map +1 -0
- package/lib/test/SharedTree.perf.tests.d.ts +6 -0
- package/lib/test/SharedTree.perf.tests.d.ts.map +1 -0
- package/lib/test/SharedTree.perf.tests.js +39 -0
- package/lib/test/SharedTree.perf.tests.js.map +1 -0
- package/lib/test/SharedTree.tests.js +15 -3
- package/lib/test/SharedTree.tests.js.map +1 -1
- package/lib/test/StringInterner.tests.d.ts +6 -0
- package/lib/test/StringInterner.tests.d.ts.map +1 -0
- package/lib/test/StringInterner.tests.js +71 -0
- package/lib/test/StringInterner.tests.js.map +1 -0
- package/lib/test/Summary.tests.d.ts +8 -0
- package/lib/test/Summary.tests.d.ts.map +1 -0
- package/lib/test/Summary.tests.js +407 -0
- package/lib/test/Summary.tests.js.map +1 -0
- package/lib/test/Transaction.tests.js +76 -330
- package/lib/test/Transaction.tests.js.map +1 -1
- package/lib/test/TransactionInternal.tests.d.ts +6 -0
- package/lib/test/TransactionInternal.tests.d.ts.map +1 -0
- package/lib/test/TransactionInternal.tests.js +568 -0
- package/lib/test/TransactionInternal.tests.js.map +1 -0
- package/lib/test/TreeCompression.tests.d.ts +6 -0
- package/lib/test/TreeCompression.tests.d.ts.map +1 -0
- package/lib/test/TreeCompression.tests.js +292 -0
- package/lib/test/TreeCompression.tests.js.map +1 -0
- package/lib/test/TreeView.tests.d.ts +6 -0
- package/lib/test/TreeView.tests.d.ts.map +1 -0
- package/lib/test/TreeView.tests.js +176 -0
- package/lib/test/TreeView.tests.js.map +1 -0
- package/lib/test/UndoRedoHandler.tests.js +2 -2
- package/lib/test/UndoRedoHandler.tests.js.map +1 -1
- package/lib/test/Virtualization.tests.js +146 -62
- package/lib/test/Virtualization.tests.js.map +1 -1
- package/lib/test/fuzz/Generators.d.ts +19 -0
- package/lib/test/fuzz/Generators.d.ts.map +1 -0
- package/lib/test/fuzz/Generators.js +420 -0
- package/lib/test/fuzz/Generators.js.map +1 -0
- package/lib/test/fuzz/SharedTreeFuzzTests.d.ts +20 -0
- package/lib/test/fuzz/SharedTreeFuzzTests.d.ts.map +1 -0
- package/lib/test/fuzz/SharedTreeFuzzTests.js +217 -0
- package/lib/test/fuzz/SharedTreeFuzzTests.js.map +1 -0
- package/lib/test/fuzz/Types.d.ts +133 -0
- package/lib/test/fuzz/Types.d.ts.map +1 -0
- package/lib/test/{GenericTransactionWithAnchors.tests.d.ts → fuzz/Types.js} +2 -2
- package/lib/test/fuzz/Types.js.map +1 -0
- package/lib/test/utilities/IdCompressorTestUtilities.d.ts +180 -0
- package/lib/test/utilities/IdCompressorTestUtilities.d.ts.map +1 -0
- package/lib/test/utilities/IdCompressorTestUtilities.js +528 -0
- package/lib/test/utilities/IdCompressorTestUtilities.js.map +1 -0
- package/lib/test/utilities/MockTransaction.d.ts +26 -7
- package/lib/test/utilities/MockTransaction.d.ts.map +1 -1
- package/lib/test/utilities/MockTransaction.js +40 -11
- package/lib/test/utilities/MockTransaction.js.map +1 -1
- package/lib/test/utilities/PendingLocalStateTests.d.ts +12 -0
- package/lib/test/utilities/PendingLocalStateTests.d.ts.map +1 -0
- package/lib/test/utilities/PendingLocalStateTests.js +105 -0
- package/lib/test/utilities/PendingLocalStateTests.js.map +1 -0
- package/lib/test/utilities/SharedTreeTests.d.ts +3 -4
- package/lib/test/utilities/SharedTreeTests.d.ts.map +1 -1
- package/lib/test/utilities/SharedTreeTests.js +696 -439
- package/lib/test/utilities/SharedTreeTests.js.map +1 -1
- package/lib/test/utilities/SharedTreeVersioningTests.d.ts +11 -0
- package/lib/test/utilities/SharedTreeVersioningTests.d.ts.map +1 -0
- package/lib/test/utilities/SharedTreeVersioningTests.js +370 -0
- package/lib/test/utilities/SharedTreeVersioningTests.js.map +1 -0
- package/lib/test/utilities/SummaryLoadPerfTests.d.ts +10 -0
- package/lib/test/utilities/SummaryLoadPerfTests.d.ts.map +1 -0
- package/lib/test/utilities/SummaryLoadPerfTests.js +102 -0
- package/lib/test/utilities/SummaryLoadPerfTests.js.map +1 -0
- package/lib/test/utilities/SummarySizeTests.d.ts +11 -0
- package/lib/test/utilities/SummarySizeTests.d.ts.map +1 -0
- package/lib/test/utilities/SummarySizeTests.js +158 -0
- package/lib/test/utilities/SummarySizeTests.js.map +1 -0
- package/lib/test/utilities/TestCommon.d.ts +9 -0
- package/lib/test/utilities/TestCommon.d.ts.map +1 -0
- package/lib/test/utilities/TestCommon.js +13 -0
- package/lib/test/utilities/TestCommon.js.map +1 -0
- package/lib/test/utilities/TestNode.d.ts +140 -0
- package/lib/test/utilities/TestNode.d.ts.map +1 -0
- package/lib/test/utilities/TestNode.js +292 -0
- package/lib/test/utilities/TestNode.js.map +1 -0
- package/lib/test/utilities/TestUtilities.d.ts +84 -70
- package/lib/test/utilities/TestUtilities.d.ts.map +1 -1
- package/lib/test/utilities/TestUtilities.js +218 -143
- package/lib/test/utilities/TestUtilities.js.map +1 -1
- package/lib/test/utilities/UndoRedoTests.d.ts +4 -5
- package/lib/test/utilities/UndoRedoTests.d.ts.map +1 -1
- package/lib/test/utilities/UndoRedoTests.js +138 -149
- package/lib/test/utilities/UndoRedoTests.js.map +1 -1
- package/package.json +22 -17
- package/src/ChangeCompression.ts +159 -0
- package/src/{default-edits/PersistedTypes.ts → ChangeTypes.ts} +62 -125
- package/src/Checkout.ts +82 -53
- package/src/Common.ts +317 -117
- package/src/EagerCheckout.ts +38 -0
- package/src/EditLog.ts +153 -100
- package/src/EditUtilities.ts +559 -0
- package/src/EventTypes.ts +74 -0
- package/src/Forest.ts +81 -73
- package/src/{default-edits/HistoryEditFactory.ts → HistoryEditFactory.ts} +103 -53
- package/src/IdConversion.ts +125 -0
- package/src/Identifiers.ts +101 -1
- package/src/InitialTree.ts +5 -4
- package/src/LazyCheckout.ts +51 -0
- package/src/LogViewer.ts +242 -166
- package/src/MergeHealth.ts +447 -0
- package/src/NodeIdUtilities.ts +156 -0
- package/src/PayloadUtilities.ts +124 -0
- package/src/ReconciliationPath.ts +18 -13
- package/src/RevisionValueCache.ts +14 -5
- package/src/RevisionView.ts +252 -0
- package/src/SerializationUtilities.ts +130 -0
- package/src/SharedTree.ts +1501 -0
- package/src/SharedTreeEncoder.ts +493 -0
- package/src/StringInterner.ts +72 -0
- package/src/Summary.ts +48 -0
- package/src/SummaryBackCompatibility.ts +47 -57
- package/src/SummaryTestUtilities.ts +54 -0
- package/src/Transaction.ts +89 -0
- package/src/TransactionInternal.ts +1087 -0
- package/src/TreeCompressor.ts +213 -0
- package/src/TreeNodeHandle.ts +19 -32
- package/src/TreeView.ts +322 -0
- package/src/TreeViewUtilities.ts +77 -0
- package/src/{default-edits/UndoRedoHandler.ts → UndoRedoHandler.ts} +8 -13
- package/src/id-compressor/AppendOnlySortedMap.ts +325 -0
- package/src/id-compressor/IdCompressor.md +3 -0
- package/src/id-compressor/IdCompressor.ts +1848 -0
- package/src/id-compressor/IdRange.ts +33 -0
- package/src/id-compressor/NumericUuid.ts +414 -0
- package/src/id-compressor/index.ts +13 -0
- package/src/id-compressor/persisted-types/0.0.1.ts +179 -0
- package/src/id-compressor/persisted-types/README.md +3 -0
- package/src/id-compressor/persisted-types/index.ts +6 -0
- package/src/index.ts +118 -59
- package/src/persisted-types/0.0.2.ts +442 -0
- package/src/persisted-types/0.1.1.ts +476 -0
- package/src/persisted-types/README.md +22 -0
- package/src/persisted-types/index.ts +9 -0
- package/.mocharc.js +0 -41
- package/api/tree.api.md +0 -729
- package/dist/BasicCheckout.d.ts +0 -23
- package/dist/BasicCheckout.d.ts.map +0 -1
- package/dist/BasicCheckout.js.map +0 -1
- package/dist/Snapshot.d.ts +0 -198
- package/dist/Snapshot.d.ts.map +0 -1
- package/dist/Snapshot.js +0 -267
- package/dist/Snapshot.js.map +0 -1
- package/dist/SnapshotUtilities.d.ts +0 -29
- package/dist/SnapshotUtilities.d.ts.map +0 -1
- package/dist/SnapshotUtilities.js +0 -73
- package/dist/SnapshotUtilities.js.map +0 -1
- package/dist/anchored-edits/AnchorResolution.d.ts +0 -144
- package/dist/anchored-edits/AnchorResolution.d.ts.map +0 -1
- package/dist/anchored-edits/AnchorResolution.js +0 -162
- package/dist/anchored-edits/AnchorResolution.js.map +0 -1
- package/dist/anchored-edits/Factory.d.ts +0 -56
- package/dist/anchored-edits/Factory.d.ts.map +0 -1
- package/dist/anchored-edits/Factory.js +0 -79
- package/dist/anchored-edits/Factory.js.map +0 -1
- package/dist/anchored-edits/PersistedTypes.d.ts +0 -245
- package/dist/anchored-edits/PersistedTypes.d.ts.map +0 -1
- package/dist/anchored-edits/PersistedTypes.js +0 -131
- package/dist/anchored-edits/PersistedTypes.js.map +0 -1
- package/dist/anchored-edits/SharedTreeWithAnchors.d.ts +0 -120
- package/dist/anchored-edits/SharedTreeWithAnchors.d.ts.map +0 -1
- package/dist/anchored-edits/SharedTreeWithAnchors.js +0 -115
- package/dist/anchored-edits/SharedTreeWithAnchors.js.map +0 -1
- package/dist/anchored-edits/TransactionWithAnchors.d.ts +0 -28
- package/dist/anchored-edits/TransactionWithAnchors.d.ts.map +0 -1
- package/dist/anchored-edits/TransactionWithAnchors.js +0 -36
- package/dist/anchored-edits/TransactionWithAnchors.js.map +0 -1
- package/dist/anchored-edits/index.d.ts +0 -10
- package/dist/anchored-edits/index.d.ts.map +0 -1
- package/dist/anchored-edits/index.js +0 -34
- package/dist/anchored-edits/index.js.map +0 -1
- package/dist/default-edits/EditUtilities.d.ts +0 -57
- package/dist/default-edits/EditUtilities.d.ts.map +0 -1
- package/dist/default-edits/EditUtilities.js +0 -192
- package/dist/default-edits/EditUtilities.js.map +0 -1
- package/dist/default-edits/Factory.d.ts +0 -56
- package/dist/default-edits/Factory.d.ts.map +0 -1
- package/dist/default-edits/Factory.js +0 -79
- package/dist/default-edits/Factory.js.map +0 -1
- package/dist/default-edits/HistoryEditFactory.d.ts +0 -19
- package/dist/default-edits/HistoryEditFactory.d.ts.map +0 -1
- package/dist/default-edits/HistoryEditFactory.js +0 -187
- package/dist/default-edits/HistoryEditFactory.js.map +0 -1
- package/dist/default-edits/PersistedTypes.d.ts.map +0 -1
- package/dist/default-edits/PersistedTypes.js.map +0 -1
- package/dist/default-edits/SharedTree.d.ts +0 -111
- package/dist/default-edits/SharedTree.d.ts.map +0 -1
- package/dist/default-edits/SharedTree.js +0 -124
- package/dist/default-edits/SharedTree.js.map +0 -1
- package/dist/default-edits/Summary.d.ts +0 -15
- package/dist/default-edits/Summary.d.ts.map +0 -1
- package/dist/default-edits/Summary.js +0 -35
- package/dist/default-edits/Summary.js.map +0 -1
- package/dist/default-edits/Transaction.d.ts +0 -41
- package/dist/default-edits/Transaction.d.ts.map +0 -1
- package/dist/default-edits/Transaction.js +0 -225
- package/dist/default-edits/Transaction.js.map +0 -1
- package/dist/default-edits/UndoRedoHandler.d.ts.map +0 -1
- package/dist/default-edits/UndoRedoHandler.js.map +0 -1
- package/dist/default-edits/index.d.ts +0 -13
- package/dist/default-edits/index.d.ts.map +0 -1
- package/dist/default-edits/index.js +0 -41
- package/dist/default-edits/index.js.map +0 -1
- package/dist/generic/GenericEditUtilities.d.ts +0 -26
- package/dist/generic/GenericEditUtilities.d.ts.map +0 -1
- package/dist/generic/GenericEditUtilities.js +0 -45
- package/dist/generic/GenericEditUtilities.js.map +0 -1
- package/dist/generic/GenericSharedTree.d.ts +0 -221
- package/dist/generic/GenericSharedTree.d.ts.map +0 -1
- package/dist/generic/GenericSharedTree.js +0 -447
- package/dist/generic/GenericSharedTree.js.map +0 -1
- package/dist/generic/GenericTransaction.d.ts +0 -87
- package/dist/generic/GenericTransaction.d.ts.map +0 -1
- package/dist/generic/GenericTransaction.js +0 -144
- package/dist/generic/GenericTransaction.js.map +0 -1
- package/dist/generic/PersistedTypes.d.ts +0 -194
- package/dist/generic/PersistedTypes.d.ts.map +0 -1
- package/dist/generic/PersistedTypes.js +0 -42
- package/dist/generic/PersistedTypes.js.map +0 -1
- package/dist/generic/Summary.d.ts +0 -63
- package/dist/generic/Summary.d.ts.map +0 -1
- package/dist/generic/Summary.js +0 -64
- package/dist/generic/Summary.js.map +0 -1
- package/dist/generic/index.d.ts +0 -10
- package/dist/generic/index.d.ts.map +0 -1
- package/dist/generic/index.js +0 -26
- package/dist/generic/index.js.map +0 -1
- package/docs/Future.md +0 -155
- package/lib/BasicCheckout.d.ts +0 -23
- package/lib/BasicCheckout.d.ts.map +0 -1
- package/lib/BasicCheckout.js.map +0 -1
- package/lib/Snapshot.d.ts +0 -198
- package/lib/Snapshot.d.ts.map +0 -1
- package/lib/Snapshot.js +0 -263
- package/lib/Snapshot.js.map +0 -1
- package/lib/SnapshotUtilities.d.ts +0 -29
- package/lib/SnapshotUtilities.d.ts.map +0 -1
- package/lib/SnapshotUtilities.js +0 -67
- package/lib/SnapshotUtilities.js.map +0 -1
- package/lib/anchored-edits/AnchorResolution.d.ts +0 -144
- package/lib/anchored-edits/AnchorResolution.d.ts.map +0 -1
- package/lib/anchored-edits/AnchorResolution.js +0 -152
- package/lib/anchored-edits/AnchorResolution.js.map +0 -1
- package/lib/anchored-edits/Factory.d.ts +0 -56
- package/lib/anchored-edits/Factory.d.ts.map +0 -1
- package/lib/anchored-edits/Factory.js +0 -74
- package/lib/anchored-edits/Factory.js.map +0 -1
- package/lib/anchored-edits/PersistedTypes.d.ts +0 -245
- package/lib/anchored-edits/PersistedTypes.d.ts.map +0 -1
- package/lib/anchored-edits/PersistedTypes.js +0 -128
- package/lib/anchored-edits/PersistedTypes.js.map +0 -1
- package/lib/anchored-edits/SharedTreeWithAnchors.d.ts +0 -120
- package/lib/anchored-edits/SharedTreeWithAnchors.d.ts.map +0 -1
- package/lib/anchored-edits/SharedTreeWithAnchors.js +0 -110
- package/lib/anchored-edits/SharedTreeWithAnchors.js.map +0 -1
- package/lib/anchored-edits/TransactionWithAnchors.d.ts +0 -28
- package/lib/anchored-edits/TransactionWithAnchors.d.ts.map +0 -1
- package/lib/anchored-edits/TransactionWithAnchors.js +0 -32
- package/lib/anchored-edits/TransactionWithAnchors.js.map +0 -1
- package/lib/anchored-edits/index.d.ts +0 -10
- package/lib/anchored-edits/index.d.ts.map +0 -1
- package/lib/anchored-edits/index.js +0 -11
- package/lib/anchored-edits/index.js.map +0 -1
- package/lib/default-edits/EditUtilities.d.ts +0 -57
- package/lib/default-edits/EditUtilities.d.ts.map +0 -1
- package/lib/default-edits/EditUtilities.js +0 -181
- package/lib/default-edits/EditUtilities.js.map +0 -1
- package/lib/default-edits/Factory.d.ts +0 -56
- package/lib/default-edits/Factory.d.ts.map +0 -1
- package/lib/default-edits/Factory.js +0 -74
- package/lib/default-edits/Factory.js.map +0 -1
- package/lib/default-edits/HistoryEditFactory.d.ts +0 -19
- package/lib/default-edits/HistoryEditFactory.d.ts.map +0 -1
- package/lib/default-edits/HistoryEditFactory.js.map +0 -1
- package/lib/default-edits/PersistedTypes.d.ts.map +0 -1
- package/lib/default-edits/PersistedTypes.js.map +0 -1
- package/lib/default-edits/SharedTree.d.ts +0 -111
- package/lib/default-edits/SharedTree.d.ts.map +0 -1
- package/lib/default-edits/SharedTree.js +0 -100
- package/lib/default-edits/SharedTree.js.map +0 -1
- package/lib/default-edits/Summary.d.ts +0 -15
- package/lib/default-edits/Summary.d.ts.map +0 -1
- package/lib/default-edits/Summary.js +0 -31
- package/lib/default-edits/Summary.js.map +0 -1
- package/lib/default-edits/Transaction.d.ts +0 -41
- package/lib/default-edits/Transaction.d.ts.map +0 -1
- package/lib/default-edits/Transaction.js +0 -221
- package/lib/default-edits/Transaction.js.map +0 -1
- package/lib/default-edits/UndoRedoHandler.d.ts.map +0 -1
- package/lib/default-edits/UndoRedoHandler.js.map +0 -1
- package/lib/default-edits/index.d.ts +0 -13
- package/lib/default-edits/index.d.ts.map +0 -1
- package/lib/default-edits/index.js +0 -14
- package/lib/default-edits/index.js.map +0 -1
- package/lib/generic/GenericEditUtilities.d.ts +0 -26
- package/lib/generic/GenericEditUtilities.d.ts.map +0 -1
- package/lib/generic/GenericEditUtilities.js +0 -38
- package/lib/generic/GenericEditUtilities.js.map +0 -1
- package/lib/generic/GenericSharedTree.d.ts +0 -221
- package/lib/generic/GenericSharedTree.d.ts.map +0 -1
- package/lib/generic/GenericSharedTree.js +0 -443
- package/lib/generic/GenericSharedTree.js.map +0 -1
- package/lib/generic/GenericTransaction.d.ts +0 -87
- package/lib/generic/GenericTransaction.d.ts.map +0 -1
- package/lib/generic/GenericTransaction.js +0 -140
- package/lib/generic/GenericTransaction.js.map +0 -1
- package/lib/generic/PersistedTypes.d.ts +0 -194
- package/lib/generic/PersistedTypes.d.ts.map +0 -1
- package/lib/generic/PersistedTypes.js +0 -39
- package/lib/generic/PersistedTypes.js.map +0 -1
- package/lib/generic/Summary.d.ts +0 -63
- package/lib/generic/Summary.d.ts.map +0 -1
- package/lib/generic/Summary.js +0 -58
- package/lib/generic/Summary.js.map +0 -1
- package/lib/generic/index.d.ts +0 -10
- package/lib/generic/index.d.ts.map +0 -1
- package/lib/generic/index.js +0 -11
- package/lib/generic/index.js.map +0 -1
- package/lib/test/Anchors.glassBox.tests.d.ts.map +0 -1
- package/lib/test/Anchors.glassBox.tests.js +0 -410
- package/lib/test/Anchors.glassBox.tests.js.map +0 -1
- package/lib/test/BasicCheckout.tests.d.ts.map +0 -1
- package/lib/test/BasicCheckout.tests.js +0 -8
- package/lib/test/BasicCheckout.tests.js.map +0 -1
- package/lib/test/GenericTransactionWithAnchors.tests.d.ts.map +0 -1
- package/lib/test/GenericTransactionWithAnchors.tests.js +0 -25
- package/lib/test/GenericTransactionWithAnchors.tests.js.map +0 -1
- package/lib/test/SharedTreeWithAnchors.tests.d.ts.map +0 -1
- package/lib/test/SharedTreeWithAnchors.tests.js +0 -420
- package/lib/test/SharedTreeWithAnchors.tests.js.map +0 -1
- package/lib/test/Snapshot.tests.d.ts.map +0 -1
- package/lib/test/Snapshot.tests.js +0 -96
- package/lib/test/Snapshot.tests.js.map +0 -1
- package/lib/test/SnapshotUtilities.tests.d.ts.map +0 -1
- package/lib/test/SnapshotUtilities.tests.js +0 -168
- package/lib/test/SnapshotUtilities.tests.js.map +0 -1
- package/lib/test/undoRedoStackManager.d.ts +0 -26
- package/lib/test/undoRedoStackManager.d.ts.map +0 -1
- package/lib/test/undoRedoStackManager.js +0 -176
- package/lib/test/undoRedoStackManager.js.map +0 -1
- package/lib/test/utilities/SummaryFormatCompatibilityTests.d.ts +0 -13
- package/lib/test/utilities/SummaryFormatCompatibilityTests.d.ts.map +0 -1
- package/lib/test/utilities/SummaryFormatCompatibilityTests.js +0 -154
- package/lib/test/utilities/SummaryFormatCompatibilityTests.js.map +0 -1
- package/src/BasicCheckout.ts +0 -34
- package/src/Snapshot.ts +0 -363
- package/src/SnapshotUtilities.ts +0 -88
- package/src/anchored-edits/AnchorResolution.ts +0 -442
- package/src/anchored-edits/Factory.ts +0 -94
- package/src/anchored-edits/PersistedTypes.ts +0 -310
- package/src/anchored-edits/SharedTreeWithAnchors.ts +0 -200
- package/src/anchored-edits/TransactionWithAnchors.ts +0 -39
- package/src/anchored-edits/index.ts +0 -21
- package/src/default-edits/EditUtilities.ts +0 -220
- package/src/default-edits/Factory.ts +0 -94
- package/src/default-edits/SharedTree.ts +0 -174
- package/src/default-edits/Summary.ts +0 -44
- package/src/default-edits/Transaction.ts +0 -262
- package/src/default-edits/index.ts +0 -29
- package/src/generic/GenericEditUtilities.ts +0 -46
- package/src/generic/GenericSharedTree.ts +0 -593
- package/src/generic/GenericTransaction.ts +0 -194
- package/src/generic/PersistedTypes.ts +0 -221
- package/src/generic/Summary.ts +0 -113
- package/src/generic/index.ts +0 -41
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
import { expect } from 'chai';
|
|
6
|
-
import { setTrait,
|
|
7
|
-
import {
|
|
6
|
+
import { setTrait, EditStatus, StableRange, StablePlace, EditValidationResult, SharedTreeEvent, CheckoutEvent, Change, Side, areRevisionViewsSemanticallyEqual, } from '../index';
|
|
7
|
+
import { setUpTestSharedTree, setUpTestTree } from './utilities/TestUtilities';
|
|
8
8
|
/**
|
|
9
9
|
* Checkout test suite
|
|
10
10
|
*/
|
|
11
|
-
export function checkoutTests(
|
|
11
|
+
export function checkoutTests(checkoutName, checkoutFactory, additionalTests) {
|
|
12
12
|
async function setUpTestCheckout(options = { localMode: true, noFailOnError: true }) {
|
|
13
13
|
const { tree } = setUpTestSharedTree(options);
|
|
14
14
|
return { checkout: await checkoutFactory(tree), tree };
|
|
@@ -20,7 +20,9 @@ export function checkoutTests(suiteName, checkoutFactory) {
|
|
|
20
20
|
* @param options Options object used to construct the initial SharedTree
|
|
21
21
|
*/
|
|
22
22
|
async function countViewChange(action, options = { localMode: true }) {
|
|
23
|
-
const { checkout } = await setUpTestCheckout(options);
|
|
23
|
+
const { checkout, tree } = await setUpTestCheckout(options);
|
|
24
|
+
const simpleTestTree = setUpTestTree(tree);
|
|
25
|
+
await checkout.waitForPendingUpdates();
|
|
24
26
|
let lastView = checkout.currentView;
|
|
25
27
|
const data = { changeCount: 0 };
|
|
26
28
|
checkout.on(CheckoutEvent.ViewChange, (before, after) => {
|
|
@@ -34,11 +36,17 @@ export function checkoutTests(suiteName, checkoutFactory) {
|
|
|
34
36
|
checkout.on('error', (error) => {
|
|
35
37
|
errors.push(error);
|
|
36
38
|
});
|
|
37
|
-
await action(checkout, data);
|
|
39
|
+
await action(checkout, simpleTestTree, data);
|
|
38
40
|
expect(errors).deep.equal([]);
|
|
39
41
|
return data.changeCount;
|
|
40
42
|
}
|
|
41
|
-
|
|
43
|
+
async function setUpTestTreeCheckout() {
|
|
44
|
+
const { checkout, tree } = await setUpTestCheckout();
|
|
45
|
+
const testTree = setUpTestTree(tree);
|
|
46
|
+
await checkout.waitForPendingUpdates();
|
|
47
|
+
return { checkout, sharedTree: tree, testTree };
|
|
48
|
+
}
|
|
49
|
+
describe(checkoutName, () => {
|
|
42
50
|
it('can only have one edit open at a time', async () => {
|
|
43
51
|
const { checkout } = await setUpTestCheckout();
|
|
44
52
|
checkout.openEdit();
|
|
@@ -49,30 +57,30 @@ export function checkoutTests(suiteName, checkoutFactory) {
|
|
|
49
57
|
expect(() => checkout.closeEdit()).throws();
|
|
50
58
|
});
|
|
51
59
|
it('can only apply changes if an edit is open', async () => {
|
|
52
|
-
const { checkout } = await
|
|
53
|
-
expect(() => checkout.applyChanges(
|
|
60
|
+
const { checkout, testTree } = await setUpTestTreeCheckout();
|
|
61
|
+
expect(() => checkout.applyChanges(Change.delete(StableRange.only(testTree.left)))).throws();
|
|
54
62
|
});
|
|
55
63
|
it('cannot abort an edit if no edit is open', async () => {
|
|
56
64
|
const { checkout } = await setUpTestCheckout();
|
|
57
65
|
expect(() => checkout.abortEdit()).throws();
|
|
58
66
|
});
|
|
59
67
|
it('can abort valid edits', async () => {
|
|
60
|
-
const { checkout } = await
|
|
68
|
+
const { checkout, testTree } = await setUpTestTreeCheckout();
|
|
61
69
|
checkout.openEdit();
|
|
62
70
|
// Is still valid after a valid edit
|
|
63
|
-
checkout.applyChanges(
|
|
71
|
+
checkout.applyChanges(Change.delete(StableRange.only(testTree.left.identifier)));
|
|
64
72
|
expect(checkout.getEditStatus()).equals(EditStatus.Applied);
|
|
65
73
|
checkout.abortEdit();
|
|
66
74
|
// The left node should still be there
|
|
67
|
-
expect(checkout.currentView.
|
|
75
|
+
expect(checkout.currentView.getViewNode(testTree.left.identifier).identifier).not.undefined;
|
|
68
76
|
});
|
|
69
77
|
it('can abort invalid edits', async () => {
|
|
70
|
-
const { checkout } = await
|
|
78
|
+
const { checkout, testTree } = await setUpTestTreeCheckout();
|
|
71
79
|
checkout.openEdit();
|
|
72
80
|
// Starts as valid
|
|
73
81
|
expect(checkout.getEditStatus()).equals(EditStatus.Applied);
|
|
74
82
|
// Is invalid after an invalid edit
|
|
75
|
-
expect(() => checkout.applyChanges(...
|
|
83
|
+
expect(() => checkout.applyChanges(...Change.insertTree(testTree.left, StablePlace.after(testTree.left)))).throws('Locally constructed edits must be well-formed and valid.');
|
|
76
84
|
expect(checkout.getEditStatus()).equals(EditStatus.Invalid);
|
|
77
85
|
checkout.abortEdit();
|
|
78
86
|
// Next edit is unaffected
|
|
@@ -81,19 +89,19 @@ export function checkoutTests(suiteName, checkoutFactory) {
|
|
|
81
89
|
checkout.closeEdit();
|
|
82
90
|
});
|
|
83
91
|
it('can abort malformed edits', async () => {
|
|
84
|
-
const { checkout } = await
|
|
92
|
+
const { checkout, testTree } = await setUpTestTreeCheckout();
|
|
85
93
|
checkout.openEdit();
|
|
86
94
|
// Starts as valid
|
|
87
95
|
expect(checkout.getEditStatus()).equals(EditStatus.Applied);
|
|
88
96
|
// Is malformed after a malformed edit
|
|
89
|
-
const malformedMove =
|
|
97
|
+
const malformedMove = Change.move({
|
|
90
98
|
start: { side: Side.Before },
|
|
91
99
|
end: { side: Side.After },
|
|
92
100
|
}, { side: Side.After });
|
|
93
101
|
expect(() => checkout.applyChanges(...malformedMove)).throws('Locally constructed edits must be well-formed and valid.');
|
|
94
102
|
expect(checkout.getEditStatus()).equals(EditStatus.Malformed);
|
|
95
103
|
// Is still malformed after a subsequent valid edit
|
|
96
|
-
expect(() => checkout.applyChanges(
|
|
104
|
+
expect(() => checkout.applyChanges(Change.delete(StableRange.only(testTree.left)))).throws('Cannot apply change to an edit unless all previous changes have applied');
|
|
97
105
|
expect(checkout.getEditStatus()).equals(EditStatus.Malformed);
|
|
98
106
|
checkout.abortEdit();
|
|
99
107
|
// Next edit is unaffected
|
|
@@ -101,6 +109,16 @@ export function checkoutTests(suiteName, checkoutFactory) {
|
|
|
101
109
|
expect(checkout.getEditStatus()).equals(EditStatus.Applied);
|
|
102
110
|
checkout.closeEdit();
|
|
103
111
|
});
|
|
112
|
+
it('can try to apply an invalid edit and abort without causing an error', async () => {
|
|
113
|
+
const { checkout, tree } = await setUpTestCheckout();
|
|
114
|
+
const simpleTestTree = setUpTestTree(tree);
|
|
115
|
+
// tryApplyEdit aborts when applying an invalid edit and returns undefined
|
|
116
|
+
expect(checkout.tryApplyEdit(...Change.insertTree(simpleTestTree.left, StablePlace.after(simpleTestTree.left)))).to.be.undefined;
|
|
117
|
+
// Next edit is unaffected
|
|
118
|
+
checkout.openEdit();
|
|
119
|
+
expect(checkout.getEditStatus()).equals(EditStatus.Applied);
|
|
120
|
+
checkout.closeEdit();
|
|
121
|
+
});
|
|
104
122
|
it('cannot get the edit status if no edit is open', async () => {
|
|
105
123
|
const { checkout } = await setUpTestCheckout();
|
|
106
124
|
expect(() => checkout.getEditStatus()).throws();
|
|
@@ -121,25 +139,25 @@ export function checkoutTests(suiteName, checkoutFactory) {
|
|
|
121
139
|
expect(treeErrorHandlerWasCalled).equals(true);
|
|
122
140
|
});
|
|
123
141
|
it('exposes the current edit status in the face of valid edits', async () => {
|
|
124
|
-
const { checkout } = await
|
|
142
|
+
const { checkout, testTree } = await setUpTestTreeCheckout();
|
|
125
143
|
checkout.openEdit();
|
|
126
144
|
// Starts as valid
|
|
127
145
|
expect(checkout.getEditStatus()).equals(EditStatus.Applied);
|
|
128
146
|
// Is still valid after a valid edit
|
|
129
|
-
checkout.applyChanges(
|
|
147
|
+
checkout.applyChanges(Change.delete(StableRange.only(testTree.left)));
|
|
130
148
|
expect(checkout.getEditStatus()).equals(EditStatus.Applied);
|
|
131
149
|
checkout.closeEdit();
|
|
132
150
|
});
|
|
133
151
|
it('exposes the current edit status in the face of invalid edits', async () => {
|
|
134
|
-
const { checkout } = await
|
|
152
|
+
const { checkout, testTree } = await setUpTestTreeCheckout();
|
|
135
153
|
checkout.openEdit();
|
|
136
154
|
// Starts as valid
|
|
137
155
|
expect(checkout.getEditStatus()).equals(EditStatus.Applied);
|
|
138
156
|
// Is invalid after an invalid edit
|
|
139
|
-
expect(() => checkout.applyChanges(...
|
|
157
|
+
expect(() => checkout.applyChanges(...Change.insertTree(testTree.left, StablePlace.after(testTree.left)))).throws('Locally constructed edits must be well-formed and valid.');
|
|
140
158
|
expect(checkout.getEditStatus()).equals(EditStatus.Invalid);
|
|
141
159
|
// Is still invalid after a subsequent valid edit
|
|
142
|
-
expect(() => checkout.applyChanges(
|
|
160
|
+
expect(() => checkout.applyChanges(Change.delete(StableRange.only(testTree.left)))).throws('Cannot apply change to an edit unless all previous changes have applied');
|
|
143
161
|
expect(checkout.getEditStatus()).equals(EditStatus.Invalid);
|
|
144
162
|
expect(() => checkout.closeEdit()).throws('Locally constructed edits must be well-formed and valid');
|
|
145
163
|
// Next edit is unaffected
|
|
@@ -148,19 +166,19 @@ export function checkoutTests(suiteName, checkoutFactory) {
|
|
|
148
166
|
checkout.closeEdit();
|
|
149
167
|
});
|
|
150
168
|
it('exposes the current edit status in the face of malformed edits', async () => {
|
|
151
|
-
const { checkout } = await
|
|
169
|
+
const { checkout, testTree } = await setUpTestTreeCheckout();
|
|
152
170
|
checkout.openEdit();
|
|
153
171
|
// Starts as valid
|
|
154
172
|
expect(checkout.getEditStatus()).equals(EditStatus.Applied);
|
|
155
173
|
// Is malformed after a malformed edit
|
|
156
|
-
const malformedMove =
|
|
174
|
+
const malformedMove = Change.move({
|
|
157
175
|
start: { side: Side.Before },
|
|
158
176
|
end: { side: Side.After },
|
|
159
177
|
}, { side: Side.After });
|
|
160
178
|
expect(() => checkout.applyChanges(...malformedMove)).throws('Locally constructed edits must be well-formed and valid.');
|
|
161
179
|
expect(checkout.getEditStatus()).equals(EditStatus.Malformed);
|
|
162
180
|
// Is still malformed after a subsequent valid edit
|
|
163
|
-
expect(() => checkout.applyChanges(
|
|
181
|
+
expect(() => checkout.applyChanges(Change.delete(StableRange.only(testTree.left)))).throws('Cannot apply change to an edit unless all previous changes have applied');
|
|
164
182
|
expect(checkout.getEditStatus()).equals(EditStatus.Malformed);
|
|
165
183
|
expect(() => checkout.closeEdit()).throws('Locally constructed edits must be well-formed and valid');
|
|
166
184
|
// Next edit is unaffected
|
|
@@ -184,22 +202,22 @@ export function checkoutTests(suiteName, checkoutFactory) {
|
|
|
184
202
|
expect(tree.edits.tryGetEdit(editId)).is.not.undefined;
|
|
185
203
|
});
|
|
186
204
|
it('will emit invalidation messages in response to changes', async () => {
|
|
187
|
-
const invalidations = await countViewChange((checkout) => {
|
|
188
|
-
checkout.applyEdit(
|
|
189
|
-
}
|
|
205
|
+
const invalidations = await countViewChange((checkout, simpleTestTree) => {
|
|
206
|
+
checkout.applyEdit(Change.delete(StableRange.only(simpleTestTree.left)));
|
|
207
|
+
});
|
|
190
208
|
expect(invalidations).equals(1);
|
|
191
209
|
});
|
|
192
210
|
it('will emit invalidation messages in response to payload change', async () => {
|
|
193
|
-
const invalidations = await countViewChange((checkout) => {
|
|
194
|
-
checkout.applyEdit(Change.setPayload(left.identifier, 5));
|
|
195
|
-
}
|
|
211
|
+
const invalidations = await countViewChange((checkout, simpleTestTree) => {
|
|
212
|
+
checkout.applyEdit(Change.setPayload(simpleTestTree.left.identifier, 5));
|
|
213
|
+
});
|
|
196
214
|
expect(invalidations).equals(1);
|
|
197
215
|
});
|
|
198
216
|
it('emits a change event for each batch of changes in a local edit', async () => {
|
|
199
|
-
const changes = await countViewChange(async (checkout, data) => {
|
|
217
|
+
const changes = await countViewChange(async (checkout, simpleTestTree, data) => {
|
|
200
218
|
checkout.on(CheckoutEvent.ViewChange, () => {
|
|
201
|
-
const leftTrait = checkout.currentView.getTrait(
|
|
202
|
-
const rightTrait = checkout.currentView.getTrait(
|
|
219
|
+
const leftTrait = checkout.currentView.getTrait(simpleTestTree.left.traitLocation);
|
|
220
|
+
const rightTrait = checkout.currentView.getTrait(simpleTestTree.right.traitLocation);
|
|
203
221
|
if (data.changeCount === 1) {
|
|
204
222
|
expect(leftTrait.length).to.equal(0); // "left" child is deleted...
|
|
205
223
|
expect(rightTrait.length).to.equal(1); // ...but "right" child is not
|
|
@@ -211,37 +229,59 @@ export function checkoutTests(suiteName, checkoutFactory) {
|
|
|
211
229
|
});
|
|
212
230
|
checkout.openEdit();
|
|
213
231
|
expect(data.changeCount).equals(0);
|
|
214
|
-
checkout.applyChanges(
|
|
232
|
+
checkout.applyChanges(Change.delete(StableRange.only(simpleTestTree.left)));
|
|
215
233
|
expect(data.changeCount).equals(1);
|
|
216
|
-
checkout.applyChanges(
|
|
234
|
+
checkout.applyChanges(Change.delete(StableRange.only(simpleTestTree.right)));
|
|
217
235
|
expect(data.changeCount).equals(2);
|
|
218
236
|
checkout.closeEdit();
|
|
219
237
|
await checkout.waitForPendingUpdates();
|
|
220
|
-
}
|
|
238
|
+
});
|
|
221
239
|
// Checkout's use of LogViewer.setKnownEditingResult should enable CachingLogViewer
|
|
222
|
-
// to return the exact same
|
|
240
|
+
// to return the exact same revision view object, allowing checkout to skip an extra change event from closeEdit.
|
|
223
241
|
expect(changes).equals(2);
|
|
224
242
|
});
|
|
225
243
|
it('emits ViewChange events for edits directly on tree', async () => {
|
|
226
|
-
const { checkout } = await
|
|
244
|
+
const { checkout, testTree } = await setUpTestTreeCheckout();
|
|
227
245
|
let changeCount = 0;
|
|
228
246
|
checkout.on(CheckoutEvent.ViewChange, () => {
|
|
229
247
|
changeCount += 1;
|
|
230
248
|
});
|
|
231
249
|
expect(changeCount).equals(0);
|
|
232
|
-
checkout.tree.applyEdit(
|
|
250
|
+
checkout.tree.applyEdit(Change.delete(StableRange.only(testTree.left)));
|
|
233
251
|
// Wait for edit to be included in checkout.
|
|
234
252
|
await checkout.waitForPendingUpdates();
|
|
235
253
|
expect(changeCount).equals(1);
|
|
236
254
|
});
|
|
237
|
-
|
|
255
|
+
it('automatically loads views from edits committed directly on it', async () => {
|
|
256
|
+
const { checkout, testTree } = await setUpTestTreeCheckout();
|
|
257
|
+
const viewBefore = checkout.currentView;
|
|
258
|
+
let changeCount = 0;
|
|
259
|
+
checkout.on(CheckoutEvent.ViewChange, () => {
|
|
260
|
+
changeCount += 1;
|
|
261
|
+
});
|
|
262
|
+
checkout.applyEdit(Change.delete(StableRange.only(testTree.left)));
|
|
263
|
+
expect(changeCount).equals(1);
|
|
264
|
+
expect(viewBefore.equals(checkout.currentView)).to.be.false;
|
|
265
|
+
});
|
|
238
266
|
const secondTreeOptions = {
|
|
239
267
|
id: 'secondTestSharedTree',
|
|
240
268
|
localMode: false,
|
|
241
269
|
allowInvalid: true,
|
|
242
270
|
};
|
|
271
|
+
it('can wait on edits to be submitted', async () => {
|
|
272
|
+
const { checkout, testTree } = await setUpTestTreeCheckout();
|
|
273
|
+
let committedEditsCount = 0;
|
|
274
|
+
checkout.tree.on(SharedTreeEvent.EditCommitted, () => {
|
|
275
|
+
committedEditsCount += 1;
|
|
276
|
+
});
|
|
277
|
+
expect(committedEditsCount).equals(0);
|
|
278
|
+
checkout.tree.applyEdit(Change.delete(StableRange.only(testTree.left)));
|
|
279
|
+
await checkout.waitForEditsToSubmit();
|
|
280
|
+
expect(committedEditsCount).equals(1);
|
|
281
|
+
});
|
|
243
282
|
it('emits ViewChange events for remote edits', async () => {
|
|
244
|
-
const { containerRuntimeFactory, tree } = setUpTestSharedTree(
|
|
283
|
+
const { containerRuntimeFactory, tree } = setUpTestSharedTree({ localMode: false });
|
|
284
|
+
const simpleTestTree = setUpTestTree(tree);
|
|
245
285
|
const { tree: secondTree } = setUpTestSharedTree(Object.assign({ containerRuntimeFactory }, secondTreeOptions));
|
|
246
286
|
containerRuntimeFactory.processAllMessages();
|
|
247
287
|
const checkout = await checkoutFactory(tree);
|
|
@@ -249,34 +289,48 @@ export function checkoutTests(suiteName, checkoutFactory) {
|
|
|
249
289
|
checkout.on(CheckoutEvent.ViewChange, () => {
|
|
250
290
|
changeCount += 1;
|
|
251
291
|
});
|
|
252
|
-
secondTree.applyEdit(
|
|
292
|
+
secondTree.applyEdit(Change.delete(StableRange.only(simpleTestTree.left.translateId(secondTree))));
|
|
253
293
|
expect(changeCount).equals(0);
|
|
254
294
|
containerRuntimeFactory.processAllMessages();
|
|
255
295
|
// Wait for edit to be included in checkout.
|
|
256
296
|
await checkout.waitForPendingUpdates();
|
|
257
297
|
expect(changeCount).equals(1);
|
|
298
|
+
expect(secondTree.equals(tree));
|
|
258
299
|
});
|
|
259
300
|
it('connected state with a remote SharedTree equates correctly during edits', async () => {
|
|
260
301
|
// Invalid edits are allowed here because this test creates edits concurrently in two trees,
|
|
261
302
|
// which after syncing, end up with one being invalid.
|
|
262
|
-
const { tree, containerRuntimeFactory } = setUpTestSharedTree(
|
|
303
|
+
const { tree, containerRuntimeFactory } = setUpTestSharedTree({ localMode: false, allowInvalid: true });
|
|
304
|
+
const simpleTestTree = setUpTestTree(tree);
|
|
263
305
|
const { tree: secondTree } = setUpTestSharedTree(Object.assign({ containerRuntimeFactory }, secondTreeOptions));
|
|
264
306
|
containerRuntimeFactory.processAllMessages();
|
|
265
307
|
const checkout = await checkoutFactory(tree);
|
|
266
308
|
const secondCheckout = await checkoutFactory(tree);
|
|
267
|
-
checkout.openEdit();
|
|
268
309
|
expect(checkout.currentView.equals(secondCheckout.currentView)).to.be.true;
|
|
310
|
+
expect(checkout.currentView.hasEqualForest(secondCheckout.currentView)).to.be.true;
|
|
311
|
+
checkout.openEdit();
|
|
312
|
+
expect(checkout.currentView.equals(secondCheckout.currentView)).to.be.false;
|
|
313
|
+
expect(checkout.currentView.hasEqualForest(secondCheckout.currentView)).to.be.true;
|
|
269
314
|
expect(tree.equals(secondTree)).to.be.true;
|
|
270
315
|
secondCheckout.openEdit();
|
|
271
316
|
expect(checkout.currentView.equals(secondCheckout.currentView)).to.be.true;
|
|
317
|
+
expect(checkout.currentView.hasEqualForest(secondCheckout.currentView)).to.be.true;
|
|
272
318
|
expect(tree.equals(secondTree)).to.be.true;
|
|
273
|
-
checkout.applyChanges(
|
|
319
|
+
checkout.applyChanges(Change.delete(StableRange.only(simpleTestTree.left)));
|
|
274
320
|
expect(checkout.currentView.equals(secondCheckout.currentView)).to.be.false;
|
|
275
|
-
|
|
321
|
+
expect(checkout.currentView.hasEqualForest(secondCheckout.currentView)).to.be.false;
|
|
322
|
+
secondCheckout.applyChanges(Change.delete(StableRange.only(simpleTestTree.left)));
|
|
276
323
|
expect(checkout.currentView.equals(secondCheckout.currentView)).to.be.true;
|
|
324
|
+
expect(checkout.currentView.hasEqualForest(secondCheckout.currentView)).to.be.true;
|
|
277
325
|
expect(tree.equals(secondTree)).to.be.true;
|
|
278
326
|
checkout.closeEdit();
|
|
327
|
+
await checkout.waitForPendingUpdates();
|
|
328
|
+
expect(checkout.currentView.equals(secondCheckout.currentView)).to.be.false;
|
|
329
|
+
expect(checkout.currentView.hasEqualForest(secondCheckout.currentView)).to.be.true;
|
|
279
330
|
secondCheckout.closeEdit();
|
|
331
|
+
await secondCheckout.waitForPendingUpdates();
|
|
332
|
+
expect(checkout.currentView.equals(secondCheckout.currentView)).to.be.true;
|
|
333
|
+
expect(checkout.currentView.hasEqualForest(secondCheckout.currentView)).to.be.true;
|
|
280
334
|
await checkout.waitForPendingUpdates();
|
|
281
335
|
await secondCheckout.waitForPendingUpdates();
|
|
282
336
|
containerRuntimeFactory.processAllMessages();
|
|
@@ -284,49 +338,55 @@ export function checkoutTests(suiteName, checkoutFactory) {
|
|
|
284
338
|
await checkout.waitForPendingUpdates();
|
|
285
339
|
await secondCheckout.waitForPendingUpdates();
|
|
286
340
|
expect(checkout.currentView.equals(secondCheckout.currentView)).to.be.true;
|
|
341
|
+
expect(checkout.currentView.hasEqualForest(secondCheckout.currentView)).to.be.true;
|
|
287
342
|
});
|
|
288
343
|
it('can successfully rebase an ongoing local edit', async () => {
|
|
289
|
-
const { tree, containerRuntimeFactory } = setUpTestSharedTree(
|
|
344
|
+
const { tree, containerRuntimeFactory } = setUpTestSharedTree({ localMode: false });
|
|
345
|
+
const simpleTestTree = setUpTestTree(tree);
|
|
290
346
|
const { tree: secondTree } = setUpTestSharedTree(Object.assign({ containerRuntimeFactory }, secondTreeOptions));
|
|
291
347
|
// Sync initial tree
|
|
292
348
|
containerRuntimeFactory.processAllMessages();
|
|
293
349
|
const checkout = await checkoutFactory(tree);
|
|
294
350
|
const secondCheckout = await checkoutFactory(secondTree);
|
|
295
|
-
const newLeftNode =
|
|
351
|
+
const newLeftNode = simpleTestTree.buildLeaf(simpleTestTree.generateNodeId());
|
|
296
352
|
checkout.openEdit();
|
|
297
|
-
checkout.applyChanges(...setTrait(
|
|
353
|
+
checkout.applyChanges(...setTrait(simpleTestTree.left.traitLocation, [newLeftNode]));
|
|
298
354
|
// Concurrently, the second client deletes the right node. This will not conflict with the operation performed
|
|
299
355
|
// on the left trait on the first client.
|
|
300
|
-
secondCheckout.applyEdit(
|
|
356
|
+
secondCheckout.applyEdit(Change.delete(StableRange.only(simpleTestTree.right.translateId(secondTree))));
|
|
301
357
|
await secondCheckout.waitForPendingUpdates();
|
|
302
358
|
// Deliver the remote change. Since there will not be any conflicts, the result should merge locally and both trait
|
|
303
359
|
// modifications should be reflected in the current view.
|
|
304
360
|
containerRuntimeFactory.processAllMessages();
|
|
305
361
|
await checkout.waitForPendingUpdates();
|
|
306
362
|
await secondCheckout.waitForPendingUpdates();
|
|
307
|
-
let leftTrait = checkout.currentView.getTrait(
|
|
308
|
-
let rightTrait = checkout.currentView.getTrait(
|
|
363
|
+
let leftTrait = checkout.currentView.getTrait(simpleTestTree.left.traitLocation);
|
|
364
|
+
let rightTrait = checkout.currentView.getTrait(simpleTestTree.right.traitLocation);
|
|
309
365
|
expect(leftTrait).deep.equals([newLeftNode.identifier]);
|
|
310
366
|
// The remote deletion of the right node, while delivered, will not be reflected in the view yet.
|
|
311
|
-
expect(rightTrait).deep.equals([right.identifier]);
|
|
312
|
-
const secondLeftTrait = secondCheckout.currentView.getTrait(
|
|
313
|
-
const secondRightTrait = secondCheckout.currentView.getTrait(
|
|
314
|
-
expect(secondLeftTrait).deep.equals([left.
|
|
367
|
+
expect(rightTrait).deep.equals([simpleTestTree.right.identifier]);
|
|
368
|
+
const secondLeftTrait = secondCheckout.currentView.getTrait(simpleTestTree.left.traitLocation.translate(secondTree));
|
|
369
|
+
const secondRightTrait = secondCheckout.currentView.getTrait(simpleTestTree.right.traitLocation.translate(secondTree));
|
|
370
|
+
expect(secondLeftTrait).deep.equals([simpleTestTree.left.translateId(secondTree)]);
|
|
315
371
|
expect(secondRightTrait.length).equals(0);
|
|
316
372
|
// Merge in the latest changes.
|
|
373
|
+
await checkout.waitForPendingUpdates();
|
|
317
374
|
const rebaseResult = checkout.rebaseCurrentEdit();
|
|
318
375
|
expect(rebaseResult).equals(EditValidationResult.Valid);
|
|
319
|
-
leftTrait = checkout.currentView.getTrait(
|
|
320
|
-
rightTrait = checkout.currentView.getTrait(
|
|
376
|
+
leftTrait = checkout.currentView.getTrait(simpleTestTree.left.traitLocation);
|
|
377
|
+
rightTrait = checkout.currentView.getTrait(simpleTestTree.right.traitLocation);
|
|
321
378
|
expect(leftTrait).deep.equals([newLeftNode.identifier]);
|
|
322
379
|
expect(rightTrait.length).equals(0);
|
|
323
380
|
checkout.closeEdit();
|
|
381
|
+
// Again, call this prior to processing ops to accommodate PrefetchingCheckout
|
|
324
382
|
await checkout.waitForPendingUpdates();
|
|
325
383
|
containerRuntimeFactory.processAllMessages();
|
|
384
|
+
await secondCheckout.waitForPendingUpdates();
|
|
326
385
|
expect(tree.equals(secondTree)).to.be.true;
|
|
327
386
|
});
|
|
328
387
|
it('can handle a failed rebase of an ongoing local edit', async () => {
|
|
329
|
-
const { tree, containerRuntimeFactory } = setUpTestSharedTree(
|
|
388
|
+
const { tree, containerRuntimeFactory } = setUpTestSharedTree({ localMode: false });
|
|
389
|
+
const simpleTestTree = setUpTestTree(tree);
|
|
330
390
|
const { tree: secondTree } = setUpTestSharedTree(Object.assign({ containerRuntimeFactory }, secondTreeOptions));
|
|
331
391
|
// Sync initial tree
|
|
332
392
|
containerRuntimeFactory.processAllMessages();
|
|
@@ -334,33 +394,30 @@ export function checkoutTests(suiteName, checkoutFactory) {
|
|
|
334
394
|
const secondCheckout = await checkoutFactory(secondTree);
|
|
335
395
|
checkout.openEdit();
|
|
336
396
|
// Move the left node to after the right node
|
|
337
|
-
checkout.applyChanges(...
|
|
397
|
+
checkout.applyChanges(...Change.move(StableRange.only(simpleTestTree.left), StablePlace.after(simpleTestTree.right)));
|
|
338
398
|
// Concurrently, the second client deletes the right node. This will conflict with the move operation by the first client.
|
|
339
|
-
secondCheckout.applyEdit(
|
|
399
|
+
secondCheckout.applyEdit(Change.delete(StableRange.only(simpleTestTree.right.translateId(secondTree))));
|
|
340
400
|
await secondCheckout.waitForPendingUpdates();
|
|
341
401
|
containerRuntimeFactory.processAllMessages();
|
|
342
402
|
await checkout.waitForPendingUpdates();
|
|
343
403
|
await secondCheckout.waitForPendingUpdates();
|
|
344
404
|
// Before rebasing, the first client should still see the right node and will have moved the left node after it.
|
|
345
|
-
const leftTrait = checkout.currentView.getTrait(
|
|
346
|
-
const rightTrait = checkout.currentView.getTrait(
|
|
405
|
+
const leftTrait = checkout.currentView.getTrait(simpleTestTree.left.traitLocation);
|
|
406
|
+
const rightTrait = checkout.currentView.getTrait(simpleTestTree.right.traitLocation);
|
|
347
407
|
expect(leftTrait).deep.equals([]);
|
|
348
|
-
expect(rightTrait).deep.equals([right.identifier, left.identifier]);
|
|
408
|
+
expect(rightTrait).deep.equals([simpleTestTree.right.identifier, simpleTestTree.left.identifier]);
|
|
349
409
|
// Merge in the latest changes.
|
|
350
410
|
const rebaseResult = checkout.rebaseCurrentEdit();
|
|
351
411
|
expect(rebaseResult).equals(EditValidationResult.Invalid);
|
|
352
|
-
expect(checkout.currentView
|
|
412
|
+
expect(areRevisionViewsSemanticallyEqual(checkout.currentView, tree, secondCheckout.currentView, secondTree)).to.be.true;
|
|
353
413
|
});
|
|
354
414
|
it('can dispose and remove listeners', async () => {
|
|
355
|
-
// Arrange
|
|
356
415
|
const { checkout } = await setUpTestCheckout();
|
|
357
|
-
// Assert
|
|
358
416
|
expect(checkout.tree.listenerCount(SharedTreeEvent.EditCommitted)).to.equal(1);
|
|
359
|
-
// Act
|
|
360
417
|
checkout.dispose();
|
|
361
|
-
// Assert
|
|
362
418
|
expect(checkout.tree.listenerCount(SharedTreeEvent.EditCommitted)).to.equal(0);
|
|
363
419
|
});
|
|
420
|
+
additionalTests === null || additionalTests === void 0 ? void 0 : additionalTests();
|
|
364
421
|
});
|
|
365
422
|
}
|
|
366
423
|
//# sourceMappingURL=Checkout.tests.js.map
|