@fluid-experimental/tree 0.58.2001 → 0.59.2000-61729
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 +71 -0
- package/dist/Transaction.d.ts.map +1 -0
- package/dist/Transaction.js +92 -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 +71 -0
- package/lib/Transaction.d.ts.map +1 -0
- package/lib/Transaction.js +88 -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 +109 -329
- 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 +120 -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
package/lib/Snapshot.js
DELETED
|
@@ -1,263 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
|
-
* Licensed under the MIT License.
|
|
4
|
-
*/
|
|
5
|
-
import { assert, copyPropertyIfDefined, fail } from './Common';
|
|
6
|
-
import { getChangeNodeFromSnapshot } from './SnapshotUtilities';
|
|
7
|
-
import { Forest } from './Forest';
|
|
8
|
-
/**
|
|
9
|
-
* Defines a place relative to sibling.
|
|
10
|
-
* The "outside" of a trait is the `undefined` sibling,
|
|
11
|
-
* so After `undefined` is the beginning of the trait, and before `undefined` is the end.
|
|
12
|
-
*
|
|
13
|
-
* For this purpose, traits look like:
|
|
14
|
-
*
|
|
15
|
-
* `{undefined} - {Node 0} - {Node 1} - ... - {Node N} - {undefined}`
|
|
16
|
-
*
|
|
17
|
-
* Each `{value}` in the diagram is a possible sibling, which is either a Node or undefined.
|
|
18
|
-
* Each `-` in the above diagram is a `Place`, and can be describe as being `After` a particular `{sibling}` or `Before` it.
|
|
19
|
-
* This means that `After` `{undefined}` means the same `Place` as before the first node
|
|
20
|
-
* and `Before` `{undefined}` means the `Place` after the last Node.
|
|
21
|
-
*
|
|
22
|
-
* Each place can be specified, (aka 'anchored') in two ways (relative to the sibling before or after):
|
|
23
|
-
* the choice of which way to anchor a place only matters when the kept across an edit, and thus evaluated in multiple contexts where the
|
|
24
|
-
* two place description may no longer evaluate to the same place.
|
|
25
|
-
* @public
|
|
26
|
-
*/
|
|
27
|
-
export var Side;
|
|
28
|
-
(function (Side) {
|
|
29
|
-
Side[Side["Before"] = 0] = "Before";
|
|
30
|
-
Side[Side["After"] = 1] = "After";
|
|
31
|
-
})(Side || (Side = {}));
|
|
32
|
-
/**
|
|
33
|
-
* An immutable view of a distributed tree.
|
|
34
|
-
* @public
|
|
35
|
-
*/
|
|
36
|
-
export class Snapshot {
|
|
37
|
-
constructor(root, forest) {
|
|
38
|
-
this.root = root;
|
|
39
|
-
this.forest = forest;
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Constructs a Snapshot using the supplied tree.
|
|
43
|
-
* @param root - the root of the tree to use as the contents of the `Snapshot`
|
|
44
|
-
*/
|
|
45
|
-
static fromTree(root, expensiveValidation = false) {
|
|
46
|
-
function insertNodeRecursive(node, newSnapshotNodes) {
|
|
47
|
-
const { identifier, definition } = node;
|
|
48
|
-
const traits = new Map();
|
|
49
|
-
// eslint-disable-next-line no-restricted-syntax
|
|
50
|
-
for (const key in node.traits) {
|
|
51
|
-
if (Object.prototype.hasOwnProperty.call(node.traits, key)) {
|
|
52
|
-
const element = node.traits[key];
|
|
53
|
-
if (element.length > 0) {
|
|
54
|
-
traits.set(key, element.map((n) => insertNodeRecursive(n, newSnapshotNodes)));
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
const snapshotNode = { identifier, definition, traits };
|
|
59
|
-
copyPropertyIfDefined(node, snapshotNode, 'payload');
|
|
60
|
-
assert(!newSnapshotNodes.has(identifier), `duplicate node in tree for snapshot: { identifier: ${identifier}, definition: ${definition}`);
|
|
61
|
-
newSnapshotNodes.set(snapshotNode.identifier, snapshotNode);
|
|
62
|
-
return snapshotNode.identifier;
|
|
63
|
-
}
|
|
64
|
-
const map = new Map();
|
|
65
|
-
return new Snapshot(insertNodeRecursive(root, map), Forest.create(expensiveValidation).add(map.values()));
|
|
66
|
-
}
|
|
67
|
-
/** Return a tree of JSON-compatible `ChangeNode`s representing the current state of this `Snapshot` */
|
|
68
|
-
getChangeNodeTree() {
|
|
69
|
-
return getChangeNodeFromSnapshot(this, this.root);
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Returns the number of nodes in this `Snapshot`
|
|
73
|
-
*/
|
|
74
|
-
get size() {
|
|
75
|
-
return this.forest.size;
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* @returns true iff the nodeId exists.
|
|
79
|
-
*/
|
|
80
|
-
hasNode(id) {
|
|
81
|
-
return this.forest.tryGet(id) !== undefined;
|
|
82
|
-
}
|
|
83
|
-
/**
|
|
84
|
-
* @returns a `ChangeNode` derived from the `SnapshotNode` in this snapshot with the given `NodeId`.
|
|
85
|
-
*/
|
|
86
|
-
getChangeNode(id) {
|
|
87
|
-
return getChangeNodeFromSnapshot(this, id);
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* @returns the `ChangeNode`s derived from the `SnapshotNode`s in this snapshot with the given `NodeId`s.
|
|
91
|
-
*/
|
|
92
|
-
getChangeNodes(nodeIds) {
|
|
93
|
-
return nodeIds.map((id) => this.getChangeNode(id));
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* Asserts the forest is in a consistent state.
|
|
97
|
-
*/
|
|
98
|
-
assertConsistent() {
|
|
99
|
-
this.forest.assertConsistent();
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
* Inserts all nodes in a NodeSequence into the forest.
|
|
103
|
-
*/
|
|
104
|
-
addNodes(sequence) {
|
|
105
|
-
return new Snapshot(this.root, this.forest.add(sequence));
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* Remove all nodes with the given ids from the forest
|
|
109
|
-
*/
|
|
110
|
-
deleteNodes(nodes) {
|
|
111
|
-
return new Snapshot(this.root, this.forest.delete(nodes, true));
|
|
112
|
-
}
|
|
113
|
-
/**
|
|
114
|
-
* Parents a set of detached nodes at a specified place.
|
|
115
|
-
* @param nodesToAttach - the nodes to parent in the specified place. The nodes must already be present in the Snapshot.
|
|
116
|
-
* @param place - the location to insert the nodes.
|
|
117
|
-
*/
|
|
118
|
-
attachRange(nodesToAttach, place) {
|
|
119
|
-
const { parent, label } = place.trait;
|
|
120
|
-
const index = this.findIndexWithinTrait(place);
|
|
121
|
-
return new Snapshot(this.root, this.forest.attachRangeOfChildren(parent, label, index, nodesToAttach));
|
|
122
|
-
}
|
|
123
|
-
/**
|
|
124
|
-
* Detaches a range of nodes from their parent. The detached nodes remain in the Snapshot.
|
|
125
|
-
* @param rangeToDetach - the range of nodes to detach
|
|
126
|
-
*/
|
|
127
|
-
detachRange(rangeToDetach) {
|
|
128
|
-
const { start, end } = rangeToDetach;
|
|
129
|
-
const { trait: traitLocation } = start;
|
|
130
|
-
const { parent, label } = traitLocation;
|
|
131
|
-
const startIndex = this.findIndexWithinTrait(start);
|
|
132
|
-
const endIndex = this.findIndexWithinTrait(end);
|
|
133
|
-
const { forest, detached } = this.forest.detachRangeOfChildren(parent, label, startIndex, endIndex);
|
|
134
|
-
return { snapshot: new Snapshot(this.root, forest), detached };
|
|
135
|
-
}
|
|
136
|
-
/**
|
|
137
|
-
* Sets a node's value. The node must exist in this `Snapshot`.
|
|
138
|
-
* @param nodeId - the id of the node
|
|
139
|
-
* @param value - the new value
|
|
140
|
-
*/
|
|
141
|
-
setNodeValue(nodeId, value) {
|
|
142
|
-
return new Snapshot(this.root, this.forest.setValue(nodeId, value));
|
|
143
|
-
}
|
|
144
|
-
/**
|
|
145
|
-
* @returns the index just after place (which specifies a location between items).
|
|
146
|
-
* Performance note: this is O(siblings in trait).
|
|
147
|
-
*/
|
|
148
|
-
findIndexWithinTrait(place) {
|
|
149
|
-
if (place.sibling === undefined) {
|
|
150
|
-
return this.getIndexOfSide(place.side, place.trait);
|
|
151
|
-
}
|
|
152
|
-
return getIndex(place.side, this.getIndexInTrait(place.sibling));
|
|
153
|
-
}
|
|
154
|
-
/**
|
|
155
|
-
* Returns the node associated with `id` in this `Snapshot`.
|
|
156
|
-
*/
|
|
157
|
-
getSnapshotNode(id) {
|
|
158
|
-
return this.forest.get(id);
|
|
159
|
-
}
|
|
160
|
-
/**
|
|
161
|
-
* Returns the label of the trait that a node is under. Returns undefined if the node is not present or if it is the root node.
|
|
162
|
-
*/
|
|
163
|
-
getTraitLabel(id) {
|
|
164
|
-
var _a;
|
|
165
|
-
return (_a = this.forest.tryGetParent(id)) === null || _a === void 0 ? void 0 : _a.traitParent;
|
|
166
|
-
}
|
|
167
|
-
/**
|
|
168
|
-
* Returns the parent of a node. Returns undefined if the node does not exist in the snapshot or if it does not have a parent.
|
|
169
|
-
*/
|
|
170
|
-
getParentSnapshotNode(id) {
|
|
171
|
-
const parentInfo = this.forest.tryGetParent(id);
|
|
172
|
-
if (parentInfo === undefined) {
|
|
173
|
-
return undefined;
|
|
174
|
-
}
|
|
175
|
-
return this.getSnapshotNode(parentInfo.parentId);
|
|
176
|
-
}
|
|
177
|
-
/**
|
|
178
|
-
* @param node - must have a parent.
|
|
179
|
-
*/
|
|
180
|
-
getTraitLocation(node) {
|
|
181
|
-
const parentData = this.forest.getParent(node);
|
|
182
|
-
assert(parentData !== undefined, 'node must have parent');
|
|
183
|
-
return {
|
|
184
|
-
parent: parentData.parentId,
|
|
185
|
-
label: parentData.traitParent,
|
|
186
|
-
};
|
|
187
|
-
}
|
|
188
|
-
/**
|
|
189
|
-
* @param node - must have a parent.
|
|
190
|
-
* Performance note: this is O(siblings in trait).
|
|
191
|
-
*/
|
|
192
|
-
getIndexInTrait(node) {
|
|
193
|
-
var _a;
|
|
194
|
-
if (this.traitIndicesCache === undefined) {
|
|
195
|
-
this.traitIndicesCache = new Map();
|
|
196
|
-
}
|
|
197
|
-
else {
|
|
198
|
-
const cached = this.traitIndicesCache.get(node);
|
|
199
|
-
if (cached !== undefined) {
|
|
200
|
-
return cached;
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
const parentData = this.forest.getParent(node);
|
|
204
|
-
const parent = this.forest.get(parentData.parentId);
|
|
205
|
-
const traitParent = (_a = parent.traits.get(parentData.traitParent)) !== null && _a !== void 0 ? _a : fail('invalid parentData: trait parent not found.');
|
|
206
|
-
let foundIndex = -1;
|
|
207
|
-
for (let i = 0; i < traitParent.length; i++) {
|
|
208
|
-
const nodeInTrait = traitParent[i];
|
|
209
|
-
const index = i;
|
|
210
|
-
this.traitIndicesCache.set(nodeInTrait, index);
|
|
211
|
-
if (nodeInTrait === node) {
|
|
212
|
-
foundIndex = index;
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
return foundIndex !== -1 ? foundIndex : fail('invalidParentData: node not found in specified trait');
|
|
216
|
-
}
|
|
217
|
-
/**
|
|
218
|
-
* Return a trait given its location
|
|
219
|
-
* @param traitLocation - the location of the trait
|
|
220
|
-
*/
|
|
221
|
-
getTrait(traitLocation) {
|
|
222
|
-
var _a;
|
|
223
|
-
return (_a = this.getSnapshotNode(traitLocation.parent).traits.get(traitLocation.label)) !== null && _a !== void 0 ? _a : [];
|
|
224
|
-
}
|
|
225
|
-
getIndexOfSide(side, traitLocation) {
|
|
226
|
-
return side === Side.After ? 0 : this.getTrait(traitLocation).length;
|
|
227
|
-
}
|
|
228
|
-
/** Compares this snapshot to another for equality. */
|
|
229
|
-
equals(snapshot) {
|
|
230
|
-
if (this.root !== snapshot.root) {
|
|
231
|
-
return false;
|
|
232
|
-
}
|
|
233
|
-
// TODO:#49100:Perf: make this faster and/or remove use by PrefetchingCheckout.
|
|
234
|
-
return this.forest.equals(snapshot.forest);
|
|
235
|
-
}
|
|
236
|
-
*iterateNodeDescendants(nodeId) {
|
|
237
|
-
const node = this.getSnapshotNode(nodeId);
|
|
238
|
-
yield node;
|
|
239
|
-
for (const trait of node.traits.values()) {
|
|
240
|
-
for (const childId of trait) {
|
|
241
|
-
yield* this.iterateNodeDescendants(childId);
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
/**
|
|
246
|
-
* Calculate the difference between two `Snapshot`s
|
|
247
|
-
* @param snapshot - the other snapshot to compare to this one
|
|
248
|
-
* @returns A {@link Delta} which nodes must be changed, added, and removed to get from `this` to `snapshot`.
|
|
249
|
-
* The snapshots must share a root.
|
|
250
|
-
*/
|
|
251
|
-
delta(snapshot) {
|
|
252
|
-
assert(this.root === snapshot.root, 'Delta can only be calculated between snapshots that share a root');
|
|
253
|
-
return this.forest.delta(snapshot.forest);
|
|
254
|
-
}
|
|
255
|
-
[Symbol.iterator]() {
|
|
256
|
-
return this.iterateNodeDescendants(this.root);
|
|
257
|
-
}
|
|
258
|
-
}
|
|
259
|
-
function getIndex(side, index) {
|
|
260
|
-
// eslint-disable-next-line @typescript-eslint/restrict-plus-operands
|
|
261
|
-
return (side + index);
|
|
262
|
-
}
|
|
263
|
-
//# sourceMappingURL=Snapshot.js.map
|
package/lib/Snapshot.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Snapshot.js","sourceRoot":"","sources":["../src/Snapshot.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { assert, copyPropertyIfDefined, fail } from './Common';\nimport { NodeId, TraitLabel } from './Identifiers';\nimport { getChangeNodeFromSnapshot } from './SnapshotUtilities';\nimport { Delta, Forest } from './Forest';\nimport { ChangeNode, NodeData, Payload, TraitLocation } from './generic';\n\n/**\n * An immutable view of a distributed tree node.\n * @public\n */\nexport interface SnapshotNode extends NodeData {\n\treadonly traits: ReadonlyMap<TraitLabel, readonly NodeId[]>;\n}\n\n/**\n * Index of a place within a trait.\n * 0 = before all nodes,\n * 1 = after first node,\n * etc.\n * @public\n */\nexport type PlaceIndex = number & { readonly PlaceIndex: unique symbol };\n\n/**\n * Index of a node within a trait.\n * 0 = first node,\n * 1 = second node,\n * etc.\n * @public\n */\nexport type TraitNodeIndex = number & { readonly TraitNodeIndex: unique symbol };\n\n/**\n * A place within a particular `Snapshot` that is anchored relative to a specific node in the tree, or relative to the outside of the trait.\n * Valid iff 'trait' is valid and, if provided, sibling is in the Location specified by 'trait'.\n * @public\n */\nexport interface SnapshotPlace {\n\treadonly sibling?: NodeId;\n\treadonly side: Side;\n\treadonly trait: TraitLocation;\n}\n\n/**\n * Defines a place relative to sibling.\n * The \"outside\" of a trait is the `undefined` sibling,\n * so After `undefined` is the beginning of the trait, and before `undefined` is the end.\n *\n * For this purpose, traits look like:\n *\n * `{undefined} - {Node 0} - {Node 1} - ... - {Node N} - {undefined}`\n *\n * Each `{value}` in the diagram is a possible sibling, which is either a Node or undefined.\n * Each `-` in the above diagram is a `Place`, and can be describe as being `After` a particular `{sibling}` or `Before` it.\n * This means that `After` `{undefined}` means the same `Place` as before the first node\n * and `Before` `{undefined}` means the `Place` after the last Node.\n *\n * Each place can be specified, (aka 'anchored') in two ways (relative to the sibling before or after):\n * the choice of which way to anchor a place only matters when the kept across an edit, and thus evaluated in multiple contexts where the\n * two place description may no longer evaluate to the same place.\n * @public\n */\nexport enum Side {\n\tBefore = 0,\n\tAfter = 1,\n}\n\n/**\n * Specifies the range of nodes from `start` to `end` within a trait within a particular `Snapshot`.\n * Valid iff start and end are valid and are withing the same trait.\n * @public\n */\nexport interface SnapshotRange {\n\treadonly start: SnapshotPlace;\n\treadonly end: SnapshotPlace;\n}\n\n/**\n * An immutable view of a distributed tree.\n * @public\n */\nexport class Snapshot {\n\tpublic readonly root: NodeId;\n\tprivate readonly forest: Forest;\n\n\t/**\n\t * A cache of node's index within their parent trait.\n\t * Used to avoid redundant linear scans of traits.\n\t * Not shared across snapshots; initialized to empty each time a Snapshot is created.\n\t */\n\tprivate traitIndicesCache?: Map<NodeId, TraitNodeIndex>;\n\n\t/**\n\t * Constructs a Snapshot using the supplied tree.\n\t * @param root - the root of the tree to use as the contents of the `Snapshot`\n\t */\n\tpublic static fromTree(root: ChangeNode, expensiveValidation = false): Snapshot {\n\t\tfunction insertNodeRecursive(node: ChangeNode, newSnapshotNodes: Map<NodeId, SnapshotNode>): NodeId {\n\t\t\tconst { identifier, definition } = node;\n\t\t\tconst traits: Map<TraitLabel, readonly NodeId[]> = new Map();\n\n\t\t\t// eslint-disable-next-line no-restricted-syntax\n\t\t\tfor (const key in node.traits) {\n\t\t\t\tif (Object.prototype.hasOwnProperty.call(node.traits, key)) {\n\t\t\t\t\tconst element = node.traits[key];\n\t\t\t\t\tif (element.length > 0) {\n\t\t\t\t\t\ttraits.set(\n\t\t\t\t\t\t\tkey as TraitLabel,\n\t\t\t\t\t\t\telement.map((n) => insertNodeRecursive(n, newSnapshotNodes))\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst snapshotNode: SnapshotNode = { identifier, definition, traits };\n\t\t\tcopyPropertyIfDefined(node, snapshotNode, 'payload');\n\t\t\tassert(\n\t\t\t\t!newSnapshotNodes.has(identifier),\n\t\t\t\t`duplicate node in tree for snapshot: { identifier: ${identifier}, definition: ${definition}`\n\t\t\t);\n\t\t\tnewSnapshotNodes.set(snapshotNode.identifier, snapshotNode);\n\t\t\treturn snapshotNode.identifier;\n\t\t}\n\n\t\tconst map = new Map<NodeId, SnapshotNode>();\n\t\treturn new Snapshot(insertNodeRecursive(root, map), Forest.create(expensiveValidation).add(map.values()));\n\t}\n\n\tprivate constructor(root: NodeId, forest: Forest) {\n\t\tthis.root = root;\n\t\tthis.forest = forest;\n\t}\n\n\t/** Return a tree of JSON-compatible `ChangeNode`s representing the current state of this `Snapshot` */\n\tpublic getChangeNodeTree(): ChangeNode {\n\t\treturn getChangeNodeFromSnapshot(this, this.root);\n\t}\n\n\t/**\n\t * Returns the number of nodes in this `Snapshot`\n\t */\n\tpublic get size(): number {\n\t\treturn this.forest.size;\n\t}\n\n\t/**\n\t * @returns true iff the nodeId exists.\n\t */\n\tpublic hasNode(id: NodeId): boolean {\n\t\treturn this.forest.tryGet(id) !== undefined;\n\t}\n\n\t/**\n\t * @returns a `ChangeNode` derived from the `SnapshotNode` in this snapshot with the given `NodeId`.\n\t */\n\tpublic getChangeNode(id: NodeId): ChangeNode {\n\t\treturn getChangeNodeFromSnapshot(this, id);\n\t}\n\n\t/**\n\t * @returns the `ChangeNode`s derived from the `SnapshotNode`s in this snapshot with the given `NodeId`s.\n\t */\n\tpublic getChangeNodes(nodeIds: readonly NodeId[]): ChangeNode[] {\n\t\treturn nodeIds.map((id) => this.getChangeNode(id));\n\t}\n\n\t/**\n\t * Asserts the forest is in a consistent state.\n\t */\n\tpublic assertConsistent(): void {\n\t\tthis.forest.assertConsistent();\n\t}\n\n\t/**\n\t * Inserts all nodes in a NodeSequence into the forest.\n\t */\n\tpublic addNodes(sequence: Iterable<SnapshotNode>): Snapshot {\n\t\treturn new Snapshot(this.root, this.forest.add(sequence));\n\t}\n\n\t/**\n\t * Remove all nodes with the given ids from the forest\n\t */\n\tpublic deleteNodes(nodes: Iterable<NodeId>): Snapshot {\n\t\treturn new Snapshot(this.root, this.forest.delete(nodes, true));\n\t}\n\n\t/**\n\t * Parents a set of detached nodes at a specified place.\n\t * @param nodesToAttach - the nodes to parent in the specified place. The nodes must already be present in the Snapshot.\n\t * @param place - the location to insert the nodes.\n\t */\n\tpublic attachRange(nodesToAttach: readonly NodeId[], place: SnapshotPlace): Snapshot {\n\t\tconst { parent, label } = place.trait;\n\t\tconst index = this.findIndexWithinTrait(place);\n\t\treturn new Snapshot(this.root, this.forest.attachRangeOfChildren(parent, label, index, nodesToAttach));\n\t}\n\n\t/**\n\t * Detaches a range of nodes from their parent. The detached nodes remain in the Snapshot.\n\t * @param rangeToDetach - the range of nodes to detach\n\t */\n\tpublic detachRange(rangeToDetach: SnapshotRange): { snapshot: Snapshot; detached: readonly NodeId[] } {\n\t\tconst { start, end } = rangeToDetach;\n\t\tconst { trait: traitLocation } = start;\n\t\tconst { parent, label } = traitLocation;\n\t\tconst startIndex = this.findIndexWithinTrait(start);\n\t\tconst endIndex = this.findIndexWithinTrait(end);\n\t\tconst { forest, detached } = this.forest.detachRangeOfChildren(parent, label, startIndex, endIndex);\n\t\treturn { snapshot: new Snapshot(this.root, forest), detached };\n\t}\n\n\t/**\n\t * Sets a node's value. The node must exist in this `Snapshot`.\n\t * @param nodeId - the id of the node\n\t * @param value - the new value\n\t */\n\tpublic setNodeValue(nodeId: NodeId, value: Payload): Snapshot {\n\t\treturn new Snapshot(this.root, this.forest.setValue(nodeId, value));\n\t}\n\n\t/**\n\t * @returns the index just after place (which specifies a location between items).\n\t * Performance note: this is O(siblings in trait).\n\t */\n\tpublic findIndexWithinTrait(place: SnapshotPlace): PlaceIndex {\n\t\tif (place.sibling === undefined) {\n\t\t\treturn this.getIndexOfSide(place.side, place.trait);\n\t\t}\n\t\treturn getIndex(place.side, this.getIndexInTrait(place.sibling));\n\t}\n\n\t/**\n\t * Returns the node associated with `id` in this `Snapshot`.\n\t */\n\tpublic getSnapshotNode(id: NodeId): SnapshotNode {\n\t\treturn this.forest.get(id);\n\t}\n\n\t/**\n\t * Returns the label of the trait that a node is under. Returns undefined if the node is not present or if it is the root node.\n\t */\n\tpublic getTraitLabel(id: NodeId): TraitLabel | undefined {\n\t\treturn this.forest.tryGetParent(id)?.traitParent;\n\t}\n\n\t/**\n\t * Returns the parent of a node. Returns undefined if the node does not exist in the snapshot or if it does not have a parent.\n\t */\n\tpublic getParentSnapshotNode(id: NodeId): SnapshotNode | undefined {\n\t\tconst parentInfo = this.forest.tryGetParent(id);\n\t\tif (parentInfo === undefined) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn this.getSnapshotNode(parentInfo.parentId);\n\t}\n\n\t/**\n\t * @param node - must have a parent.\n\t */\n\tpublic getTraitLocation(node: NodeId): TraitLocation {\n\t\tconst parentData = this.forest.getParent(node);\n\t\tassert(parentData !== undefined, 'node must have parent');\n\t\treturn {\n\t\t\tparent: parentData.parentId,\n\t\t\tlabel: parentData.traitParent,\n\t\t};\n\t}\n\n\t/**\n\t * @param node - must have a parent.\n\t * Performance note: this is O(siblings in trait).\n\t */\n\tpublic getIndexInTrait(node: NodeId): TraitNodeIndex {\n\t\tif (this.traitIndicesCache === undefined) {\n\t\t\tthis.traitIndicesCache = new Map();\n\t\t} else {\n\t\t\tconst cached = this.traitIndicesCache.get(node);\n\t\t\tif (cached !== undefined) {\n\t\t\t\treturn cached;\n\t\t\t}\n\t\t}\n\t\tconst parentData = this.forest.getParent(node);\n\t\tconst parent = this.forest.get(parentData.parentId);\n\t\tconst traitParent =\n\t\t\tparent.traits.get(parentData.traitParent) ?? fail('invalid parentData: trait parent not found.');\n\t\tlet foundIndex = -1 as TraitNodeIndex;\n\t\tfor (let i = 0; i < traitParent.length; i++) {\n\t\t\tconst nodeInTrait = traitParent[i];\n\t\t\tconst index = i as TraitNodeIndex;\n\t\t\tthis.traitIndicesCache.set(nodeInTrait, index);\n\t\t\tif (nodeInTrait === node) {\n\t\t\t\tfoundIndex = index;\n\t\t\t}\n\t\t}\n\t\treturn foundIndex !== -1 ? foundIndex : fail('invalidParentData: node not found in specified trait');\n\t}\n\n\t/**\n\t * Return a trait given its location\n\t * @param traitLocation - the location of the trait\n\t */\n\tpublic getTrait(traitLocation: TraitLocation): readonly NodeId[] {\n\t\treturn this.getSnapshotNode(traitLocation.parent).traits.get(traitLocation.label) ?? [];\n\t}\n\n\tprivate getIndexOfSide(side: Side, traitLocation: TraitLocation): PlaceIndex {\n\t\treturn side === Side.After ? (0 as PlaceIndex) : (this.getTrait(traitLocation).length as PlaceIndex);\n\t}\n\n\t/** Compares this snapshot to another for equality. */\n\tpublic equals(snapshot: Snapshot): boolean {\n\t\tif (this.root !== snapshot.root) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// TODO:#49100:Perf: make this faster and/or remove use by PrefetchingCheckout.\n\t\treturn this.forest.equals(snapshot.forest);\n\t}\n\n\tprivate *iterateNodeDescendants(nodeId: NodeId): IterableIterator<SnapshotNode> {\n\t\tconst node = this.getSnapshotNode(nodeId);\n\t\tyield node;\n\t\tfor (const trait of node.traits.values()) {\n\t\t\tfor (const childId of trait) {\n\t\t\t\tyield* this.iterateNodeDescendants(childId);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Calculate the difference between two `Snapshot`s\n\t * @param snapshot - the other snapshot to compare to this one\n\t * @returns A {@link Delta} which nodes must be changed, added, and removed to get from `this` to `snapshot`.\n\t * The snapshots must share a root.\n\t */\n\tpublic delta(snapshot: Snapshot): Delta<NodeId> {\n\t\tassert(this.root === snapshot.root, 'Delta can only be calculated between snapshots that share a root');\n\t\treturn this.forest.delta(snapshot.forest);\n\t}\n\n\tpublic [Symbol.iterator](): IterableIterator<SnapshotNode> {\n\t\treturn this.iterateNodeDescendants(this.root);\n\t}\n}\n\nfunction getIndex(side: Side, index: TraitNodeIndex): PlaceIndex {\n\t// eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n\treturn (side + index) as PlaceIndex;\n}\n\n/**\n * Contains some redundant information. Use only in computations between edits. Do not store.\n * @public\n */\nexport interface NodeInTrait {\n\treadonly trait: TraitLocation;\n\treadonly index: TraitNodeIndex;\n}\n"]}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
|
-
* Licensed under the MIT License.
|
|
4
|
-
*/
|
|
5
|
-
import { NodeId } from './Identifiers';
|
|
6
|
-
import { ChangeNode } from './generic';
|
|
7
|
-
import { Snapshot } from './Snapshot';
|
|
8
|
-
/**
|
|
9
|
-
* Converts a node in a snapshot to an equivalent `ChangeNode`.
|
|
10
|
-
* @param snapshot - the snapshot in which the node exists
|
|
11
|
-
* @param nodeId - the id of the node in the snapshot
|
|
12
|
-
* @param lazyTraits - whether or not traits should be populated lazily.
|
|
13
|
-
* If lazy, the subtrees under each trait will not be read until the trait is first accessed.
|
|
14
|
-
*/
|
|
15
|
-
export declare function getChangeNodeFromSnapshot(snapshot: Snapshot, nodeId: NodeId, lazyTraits?: boolean): ChangeNode;
|
|
16
|
-
/**
|
|
17
|
-
* Compares finite numbers to form a strict partial ordering.
|
|
18
|
-
*
|
|
19
|
-
* Handles +/-0 like Map: -0 is equal to +0.
|
|
20
|
-
*
|
|
21
|
-
* Once https://github.com/qwertie/btree-typescript/pull/15 is merged, we can use the version of this function from it.
|
|
22
|
-
*/
|
|
23
|
-
export declare function compareFiniteNumbers(a: number, b: number): number;
|
|
24
|
-
/**
|
|
25
|
-
* Compares strings lexically to form a strict partial ordering.
|
|
26
|
-
* Once https://github.com/qwertie/btree-typescript/pull/15 is merged, we can use the version of this function from it.
|
|
27
|
-
*/
|
|
28
|
-
export declare function compareStrings(a: string, b: string): number;
|
|
29
|
-
//# sourceMappingURL=SnapshotUtilities.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SnapshotUtilities.d.ts","sourceRoot":"","sources":["../src/SnapshotUtilities.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,MAAM,EAAc,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,UAAU,EAAY,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,UAAQ,GAAG,UAAU,CAqB5G;AAgCD;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAE3D"}
|
package/lib/SnapshotUtilities.js
DELETED
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
|
-
* Licensed under the MIT License.
|
|
4
|
-
*/
|
|
5
|
-
import { copyPropertyIfDefined, memoizeGetter } from './Common';
|
|
6
|
-
/**
|
|
7
|
-
* Converts a node in a snapshot to an equivalent `ChangeNode`.
|
|
8
|
-
* @param snapshot - the snapshot in which the node exists
|
|
9
|
-
* @param nodeId - the id of the node in the snapshot
|
|
10
|
-
* @param lazyTraits - whether or not traits should be populated lazily.
|
|
11
|
-
* If lazy, the subtrees under each trait will not be read until the trait is first accessed.
|
|
12
|
-
*/
|
|
13
|
-
export function getChangeNodeFromSnapshot(snapshot, nodeId, lazyTraits = false) {
|
|
14
|
-
const node = snapshot.getSnapshotNode(nodeId);
|
|
15
|
-
const nodeData = {
|
|
16
|
-
definition: node.definition,
|
|
17
|
-
identifier: node.identifier,
|
|
18
|
-
};
|
|
19
|
-
copyPropertyIfDefined(node, nodeData, 'payload');
|
|
20
|
-
if (lazyTraits) {
|
|
21
|
-
return Object.assign(Object.assign({}, nodeData), { get traits() {
|
|
22
|
-
return memoizeGetter(this, 'traits', makeTraits(snapshot, node.traits, lazyTraits));
|
|
23
|
-
} });
|
|
24
|
-
}
|
|
25
|
-
return Object.assign(Object.assign({}, nodeData), { traits: makeTraits(snapshot, node.traits, lazyTraits) });
|
|
26
|
-
}
|
|
27
|
-
/** Given the traits of a SnapshotNode, return the corresponding traits on a Node */
|
|
28
|
-
function makeTraits(snapshot, traits, lazyTraits = false) {
|
|
29
|
-
const traitMap = {};
|
|
30
|
-
for (const [label, trait] of traits.entries()) {
|
|
31
|
-
if (lazyTraits) {
|
|
32
|
-
Object.defineProperty(traitMap, label, {
|
|
33
|
-
get() {
|
|
34
|
-
const treeNodeTrait = trait.map((nodeId) => getChangeNodeFromSnapshot(snapshot, nodeId, lazyTraits));
|
|
35
|
-
return memoizeGetter(this, label, treeNodeTrait);
|
|
36
|
-
},
|
|
37
|
-
configurable: true,
|
|
38
|
-
enumerable: true,
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
else {
|
|
42
|
-
Object.defineProperty(traitMap, label, {
|
|
43
|
-
value: trait.map((nodeId) => getChangeNodeFromSnapshot(snapshot, nodeId, lazyTraits)),
|
|
44
|
-
enumerable: true,
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
return traitMap;
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Compares finite numbers to form a strict partial ordering.
|
|
52
|
-
*
|
|
53
|
-
* Handles +/-0 like Map: -0 is equal to +0.
|
|
54
|
-
*
|
|
55
|
-
* Once https://github.com/qwertie/btree-typescript/pull/15 is merged, we can use the version of this function from it.
|
|
56
|
-
*/
|
|
57
|
-
export function compareFiniteNumbers(a, b) {
|
|
58
|
-
return a - b;
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Compares strings lexically to form a strict partial ordering.
|
|
62
|
-
* Once https://github.com/qwertie/btree-typescript/pull/15 is merged, we can use the version of this function from it.
|
|
63
|
-
*/
|
|
64
|
-
export function compareStrings(a, b) {
|
|
65
|
-
return a > b ? 1 : a === b ? 0 : -1;
|
|
66
|
-
}
|
|
67
|
-
//# sourceMappingURL=SnapshotUtilities.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SnapshotUtilities.js","sourceRoot":"","sources":["../src/SnapshotUtilities.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAKhE;;;;;;GAMG;AACH,MAAM,UAAU,yBAAyB,CAAC,QAAkB,EAAE,MAAc,EAAE,UAAU,GAAG,KAAK;IAC/F,MAAM,IAAI,GAAG,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG;QAChB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,UAAU,EAAE,IAAI,CAAC,UAAU;KAC3B,CAAC;IACF,qBAAqB,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IAEjD,IAAI,UAAU,EAAE;QACf,uCACI,QAAQ,KACX,IAAI,MAAM;gBACT,OAAO,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;YACrF,CAAC,IACA;KACF;IAED,uCACI,QAAQ,KACX,MAAM,EAAE,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,IACpD;AACH,CAAC;AAED,oFAAoF;AACpF,SAAS,UAAU,CAClB,QAAkB,EAClB,MAAkD,EAClD,UAAU,GAAG,KAAK;IAElB,MAAM,QAAQ,GAAG,EAAE,CAAC;IACpB,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,EAAE;QAC9C,IAAI,UAAU,EAAE;YACf,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,KAAK,EAAE;gBACtC,GAAG;oBACF,MAAM,aAAa,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAC1C,yBAAyB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,CACvD,CAAC;oBACF,OAAO,aAAa,CAAC,IAA4B,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;gBAC1E,CAAC;gBACD,YAAY,EAAE,IAAI;gBAClB,UAAU,EAAE,IAAI;aAChB,CAAC,CAAC;SACH;aAAM;YACN,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,KAAK,EAAE;gBACtC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,yBAAyB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;gBACrF,UAAU,EAAE,IAAI;aAChB,CAAC,CAAC;SACH;KACD;IAED,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,CAAS,EAAE,CAAS;IACxD,OAAO,CAAC,GAAG,CAAC,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,CAAS,EAAE,CAAS;IAClD,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { copyPropertyIfDefined, memoizeGetter } from './Common';\nimport { NodeId, TraitLabel } from './Identifiers';\nimport { ChangeNode, TraitMap } from './generic';\nimport { Snapshot } from './Snapshot';\n\n/**\n * Converts a node in a snapshot to an equivalent `ChangeNode`.\n * @param snapshot - the snapshot in which the node exists\n * @param nodeId - the id of the node in the snapshot\n * @param lazyTraits - whether or not traits should be populated lazily.\n * If lazy, the subtrees under each trait will not be read until the trait is first accessed.\n */\nexport function getChangeNodeFromSnapshot(snapshot: Snapshot, nodeId: NodeId, lazyTraits = false): ChangeNode {\n\tconst node = snapshot.getSnapshotNode(nodeId);\n\tconst nodeData = {\n\t\tdefinition: node.definition,\n\t\tidentifier: node.identifier,\n\t};\n\tcopyPropertyIfDefined(node, nodeData, 'payload');\n\n\tif (lazyTraits) {\n\t\treturn {\n\t\t\t...nodeData,\n\t\t\tget traits() {\n\t\t\t\treturn memoizeGetter(this, 'traits', makeTraits(snapshot, node.traits, lazyTraits));\n\t\t\t},\n\t\t};\n\t}\n\n\treturn {\n\t\t...nodeData,\n\t\ttraits: makeTraits(snapshot, node.traits, lazyTraits),\n\t};\n}\n\n/** Given the traits of a SnapshotNode, return the corresponding traits on a Node */\nfunction makeTraits(\n\tsnapshot: Snapshot,\n\ttraits: ReadonlyMap<TraitLabel, readonly NodeId[]>,\n\tlazyTraits = false\n): TraitMap<ChangeNode> {\n\tconst traitMap = {};\n\tfor (const [label, trait] of traits.entries()) {\n\t\tif (lazyTraits) {\n\t\t\tObject.defineProperty(traitMap, label, {\n\t\t\t\tget() {\n\t\t\t\t\tconst treeNodeTrait = trait.map((nodeId) =>\n\t\t\t\t\t\tgetChangeNodeFromSnapshot(snapshot, nodeId, lazyTraits)\n\t\t\t\t\t);\n\t\t\t\t\treturn memoizeGetter(this as TraitMap<ChangeNode>, label, treeNodeTrait);\n\t\t\t\t},\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t});\n\t\t} else {\n\t\t\tObject.defineProperty(traitMap, label, {\n\t\t\t\tvalue: trait.map((nodeId) => getChangeNodeFromSnapshot(snapshot, nodeId, lazyTraits)),\n\t\t\t\tenumerable: true,\n\t\t\t});\n\t\t}\n\t}\n\n\treturn traitMap;\n}\n\n/**\n * Compares finite numbers to form a strict partial ordering.\n *\n * Handles +/-0 like Map: -0 is equal to +0.\n *\n * Once https://github.com/qwertie/btree-typescript/pull/15 is merged, we can use the version of this function from it.\n */\nexport function compareFiniteNumbers(a: number, b: number): number {\n\treturn a - b;\n}\n\n/**\n * Compares strings lexically to form a strict partial ordering.\n * Once https://github.com/qwertie/btree-typescript/pull/15 is merged, we can use the version of this function from it.\n */\nexport function compareStrings(a: string, b: string): number {\n\treturn a > b ? 1 : a === b ? 0 : -1;\n}\n"]}
|
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
|
-
* Licensed under the MIT License.
|
|
4
|
-
*/
|
|
5
|
-
import { Snapshot } from '../Snapshot';
|
|
6
|
-
import { Change, StablePlace, StableRange } from '../default-edits';
|
|
7
|
-
import { EditValidationResult } from '../Checkout';
|
|
8
|
-
import { NodeId } from '../Identifiers';
|
|
9
|
-
import { ReconciliationPath } from '../ReconciliationPath';
|
|
10
|
-
import { AnchoredChange, NodeAnchor, PlaceAnchor, RangeAnchor, RelativePlaceAnchor } from './PersistedTypes';
|
|
11
|
-
/**
|
|
12
|
-
* A change and the snapshots that precede and succeed it.
|
|
13
|
-
*/
|
|
14
|
-
export interface EvaluatedChange<TChange> {
|
|
15
|
-
readonly change: TChange;
|
|
16
|
-
/**
|
|
17
|
-
* The snapshot before the change was applied.
|
|
18
|
-
*/
|
|
19
|
-
readonly before: Snapshot;
|
|
20
|
-
/**
|
|
21
|
-
* The snapshot after the change was applied.
|
|
22
|
-
*/
|
|
23
|
-
readonly after: Snapshot;
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Object that includes a function for resolving node anchors.
|
|
27
|
-
*/
|
|
28
|
-
export interface HasNodeResolver {
|
|
29
|
-
nodeResolver: (node: NodeAnchor, before: Snapshot, path: ReconciliationPath<AnchoredChange>) => NodeId | undefined;
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Object that includes a function for resolving place anchors.
|
|
33
|
-
*/
|
|
34
|
-
export interface HasPlaceResolver {
|
|
35
|
-
placeResolver: (range: PlaceAnchor, before: Snapshot, path: ReconciliationPath<AnchoredChange>) => StablePlace | undefined;
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Object that includes a function for resolving range anchors.
|
|
39
|
-
*/
|
|
40
|
-
export interface HasRangeResolver {
|
|
41
|
-
rangeResolver: (range: RangeAnchor, before: Snapshot, path: ReconciliationPath<AnchoredChange>) => StableRange | undefined;
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Object that includes a function for validating places.
|
|
45
|
-
*/
|
|
46
|
-
export interface HasPlaceValidator {
|
|
47
|
-
placeValidator: (snapshot: Snapshot, place: StablePlace) => EditValidationResult;
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* Reconciliates a given `change` in the face of concurrent edits described in a `ReconciliationPath`.
|
|
51
|
-
* @param change - The anchor to reconciliate.
|
|
52
|
-
* @param before - The state to which the `change` would be applied to.
|
|
53
|
-
* @param path - The reconciliation path for the `change`.
|
|
54
|
-
* @returns A `Change` that satisfies the same semantics of the given `change` but whose tree locations are valid in the `before` snapshot.
|
|
55
|
-
* Undefined if no such change can be produced.
|
|
56
|
-
* @internal
|
|
57
|
-
*/
|
|
58
|
-
export declare function resolveChangeAnchors(change: AnchoredChange, before: Snapshot, path: ReconciliationPath<AnchoredChange>): Change | undefined;
|
|
59
|
-
/**
|
|
60
|
-
* For testing purposes only.
|
|
61
|
-
* @internal
|
|
62
|
-
*/
|
|
63
|
-
export declare function resolveChangeAnchors(change: AnchoredChange, before: Snapshot, path: ReconciliationPath<AnchoredChange>, dependencies?: HasNodeResolver & HasPlaceResolver & HasRangeResolver): Change | undefined;
|
|
64
|
-
/**
|
|
65
|
-
* Resolves a given `node` anchor in the face of a `ReconciliationPath`.
|
|
66
|
-
* @param node - The anchor to resolve.
|
|
67
|
-
* @param before - The state to which the change that the `node` anchor should be applied to.
|
|
68
|
-
* @param path - The reconciliation path for the change that the `node` is part of.
|
|
69
|
-
* @returns A matching `NodeId` that is valid in the snapshot at the end of the `path`. Undefined if no such node exists.
|
|
70
|
-
* @internal
|
|
71
|
-
*/
|
|
72
|
-
export declare function resolveNodeAnchor(node: NodeAnchor, before: Snapshot, path: ReconciliationPath<AnchoredChange>): NodeId | undefined;
|
|
73
|
-
/**
|
|
74
|
-
* Resolves a given `range` anchor in the face of a `ReconciliationPath`.
|
|
75
|
-
* @param range - The anchor to resolve.
|
|
76
|
-
* @param before - The state to which the change that the `range` anchor should be applied to.
|
|
77
|
-
* @param path - The reconciliation path for the change that the `range` is part of.
|
|
78
|
-
* @returns A matching `StableRange` that is valid in the snapshot at the end of the `path`. Undefined if no such valid range exists.
|
|
79
|
-
* @internal
|
|
80
|
-
*/
|
|
81
|
-
export declare function resolveRangeAnchor(range: RangeAnchor, before: Snapshot, path: ReconciliationPath<AnchoredChange>): StableRange | undefined;
|
|
82
|
-
/**
|
|
83
|
-
* For testing purposes only.
|
|
84
|
-
* @internal
|
|
85
|
-
*/
|
|
86
|
-
export declare function resolveRangeAnchor(range: RangeAnchor, before: Snapshot, path: ReconciliationPath<AnchoredChange>, dependencies?: HasPlaceResolver & {
|
|
87
|
-
rangeValidator: (snapshot: Snapshot, range: StableRange) => EditValidationResult;
|
|
88
|
-
}): StableRange | undefined;
|
|
89
|
-
/**
|
|
90
|
-
* Resolves a given `place` anchor in the face of a `ReconciliationPath`.
|
|
91
|
-
* @param place - The anchor to resolve.
|
|
92
|
-
* @param before - The state to which the change that the `place` anchor should be applied to.
|
|
93
|
-
* @param path - The reconciliation path for the change that the `place` is part of.
|
|
94
|
-
* @returns A matching `StablePlace` that is valid in the snapshot at the end of the `path`. Undefined if no such valid place exists.
|
|
95
|
-
* @internal
|
|
96
|
-
*/
|
|
97
|
-
export declare function resolvePlaceAnchor(place: PlaceAnchor, before: Snapshot, path: ReconciliationPath<AnchoredChange>): StablePlace | undefined;
|
|
98
|
-
/**
|
|
99
|
-
* For testing purposes only.
|
|
100
|
-
* @internal
|
|
101
|
-
*/
|
|
102
|
-
export declare function resolvePlaceAnchor(place: PlaceAnchor, before: Snapshot, path: ReconciliationPath<AnchoredChange>, dependencies?: HasPlaceValidator & {
|
|
103
|
-
placeUpdatorForPath: (place: RelativePlaceAnchor, path: ReconciliationPath<AnchoredChange>) => PlaceAnchor | undefined;
|
|
104
|
-
}): StablePlace | undefined;
|
|
105
|
-
/**
|
|
106
|
-
* Updates a given `place` anchor in the face of a `ReconciliationPath` that violates its semantics.
|
|
107
|
-
* @param place - The anchor to update. Assumed to be invalid after the latest change.
|
|
108
|
-
* @param path - The sequence of edits that violates the anchor's semantics.
|
|
109
|
-
* @returns A place anchor whose semantics are inline with the given `place`, and valid after the most recent change that made it invalid.
|
|
110
|
-
* Undefined if those semantics cannot be preserved.
|
|
111
|
-
* @internal
|
|
112
|
-
*/
|
|
113
|
-
export declare function updateRelativePlaceAnchorForPath(place: RelativePlaceAnchor, path: ReconciliationPath<AnchoredChange>): PlaceAnchor | undefined;
|
|
114
|
-
/**
|
|
115
|
-
* For testing purposes only.
|
|
116
|
-
* @internal
|
|
117
|
-
*/
|
|
118
|
-
export declare function updateRelativePlaceAnchorForPath(place: RelativePlaceAnchor, path: ReconciliationPath<AnchoredChange>, dependencies?: {
|
|
119
|
-
lastOffendingChangeFinder: (place: RelativePlaceAnchor, path: ReconciliationPath<AnchoredChange>) => EvaluatedChange<AnchoredChange> | undefined;
|
|
120
|
-
placeUpdatorForChange: (place: RelativePlaceAnchor, change: EvaluatedChange<AnchoredChange>) => PlaceAnchor | undefined;
|
|
121
|
-
}): PlaceAnchor | undefined;
|
|
122
|
-
/**
|
|
123
|
-
* Finds the latest change in the given `path` that last made the given `place` invalid.
|
|
124
|
-
* @param place - A anchor that is invalid in the last snapshot on the path.
|
|
125
|
-
* @param path - The sequence of edits that violates the anchor's semantics.
|
|
126
|
-
* @returns The change that last made the given `place` invalid and the snapshots before and after it. Undefined if `place` was never valid.
|
|
127
|
-
* @internal
|
|
128
|
-
*/
|
|
129
|
-
export declare function findLastOffendingChange(place: RelativePlaceAnchor, path: ReconciliationPath<AnchoredChange>): EvaluatedChange<AnchoredChange> | undefined;
|
|
130
|
-
/**
|
|
131
|
-
* For testing purposes only.
|
|
132
|
-
* @internal
|
|
133
|
-
*/
|
|
134
|
-
export declare function findLastOffendingChange(place: RelativePlaceAnchor, path: ReconciliationPath<AnchoredChange>, dependencies?: HasPlaceValidator): EvaluatedChange<AnchoredChange> | undefined;
|
|
135
|
-
/**
|
|
136
|
-
* Updates a given `place` anchor in the face of a change that violates its semantics.
|
|
137
|
-
* @param place - The anchor to update.
|
|
138
|
-
* @param change - The change that violates the anchor's semantics.
|
|
139
|
-
* @returns A place anchor that is valid after the given `change` and in line with the original `place`'s semantics.
|
|
140
|
-
* Undefined if those semantics cannot be preserved.
|
|
141
|
-
* @internal
|
|
142
|
-
*/
|
|
143
|
-
export declare function updateRelativePlaceAnchorForChange(place: RelativePlaceAnchor, change: EvaluatedChange<AnchoredChange>): PlaceAnchor | undefined;
|
|
144
|
-
//# sourceMappingURL=AnchorResolution.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AnchorResolution.d.ts","sourceRoot":"","sources":["../../src/anchored-edits/AnchorResolution.ts"],"names":[],"mappings":"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"}
|