@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/src/SnapshotUtilities.ts
DELETED
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
|
-
* Licensed under the MIT License.
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import { copyPropertyIfDefined, memoizeGetter } from './Common';
|
|
7
|
-
import { NodeId, TraitLabel } from './Identifiers';
|
|
8
|
-
import { ChangeNode, TraitMap } from './generic';
|
|
9
|
-
import { Snapshot } from './Snapshot';
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* Converts a node in a snapshot to an equivalent `ChangeNode`.
|
|
13
|
-
* @param snapshot - the snapshot in which the node exists
|
|
14
|
-
* @param nodeId - the id of the node in the snapshot
|
|
15
|
-
* @param lazyTraits - whether or not traits should be populated lazily.
|
|
16
|
-
* If lazy, the subtrees under each trait will not be read until the trait is first accessed.
|
|
17
|
-
*/
|
|
18
|
-
export function getChangeNodeFromSnapshot(snapshot: Snapshot, nodeId: NodeId, lazyTraits = false): ChangeNode {
|
|
19
|
-
const node = snapshot.getSnapshotNode(nodeId);
|
|
20
|
-
const nodeData = {
|
|
21
|
-
definition: node.definition,
|
|
22
|
-
identifier: node.identifier,
|
|
23
|
-
};
|
|
24
|
-
copyPropertyIfDefined(node, nodeData, 'payload');
|
|
25
|
-
|
|
26
|
-
if (lazyTraits) {
|
|
27
|
-
return {
|
|
28
|
-
...nodeData,
|
|
29
|
-
get traits() {
|
|
30
|
-
return memoizeGetter(this, 'traits', makeTraits(snapshot, node.traits, lazyTraits));
|
|
31
|
-
},
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
return {
|
|
36
|
-
...nodeData,
|
|
37
|
-
traits: makeTraits(snapshot, node.traits, lazyTraits),
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
/** Given the traits of a SnapshotNode, return the corresponding traits on a Node */
|
|
42
|
-
function makeTraits(
|
|
43
|
-
snapshot: Snapshot,
|
|
44
|
-
traits: ReadonlyMap<TraitLabel, readonly NodeId[]>,
|
|
45
|
-
lazyTraits = false
|
|
46
|
-
): TraitMap<ChangeNode> {
|
|
47
|
-
const traitMap = {};
|
|
48
|
-
for (const [label, trait] of traits.entries()) {
|
|
49
|
-
if (lazyTraits) {
|
|
50
|
-
Object.defineProperty(traitMap, label, {
|
|
51
|
-
get() {
|
|
52
|
-
const treeNodeTrait = trait.map((nodeId) =>
|
|
53
|
-
getChangeNodeFromSnapshot(snapshot, nodeId, lazyTraits)
|
|
54
|
-
);
|
|
55
|
-
return memoizeGetter(this as TraitMap<ChangeNode>, label, treeNodeTrait);
|
|
56
|
-
},
|
|
57
|
-
configurable: true,
|
|
58
|
-
enumerable: true,
|
|
59
|
-
});
|
|
60
|
-
} else {
|
|
61
|
-
Object.defineProperty(traitMap, label, {
|
|
62
|
-
value: trait.map((nodeId) => getChangeNodeFromSnapshot(snapshot, nodeId, lazyTraits)),
|
|
63
|
-
enumerable: true,
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
return traitMap;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
/**
|
|
72
|
-
* Compares finite numbers to form a strict partial ordering.
|
|
73
|
-
*
|
|
74
|
-
* Handles +/-0 like Map: -0 is equal to +0.
|
|
75
|
-
*
|
|
76
|
-
* Once https://github.com/qwertie/btree-typescript/pull/15 is merged, we can use the version of this function from it.
|
|
77
|
-
*/
|
|
78
|
-
export function compareFiniteNumbers(a: number, b: number): number {
|
|
79
|
-
return a - b;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
/**
|
|
83
|
-
* Compares strings lexically to form a strict partial ordering.
|
|
84
|
-
* Once https://github.com/qwertie/btree-typescript/pull/15 is merged, we can use the version of this function from it.
|
|
85
|
-
*/
|
|
86
|
-
export function compareStrings(a: string, b: string): number {
|
|
87
|
-
return a > b ? 1 : a === b ? 0 : -1;
|
|
88
|
-
}
|
|
@@ -1,442 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
|
-
* Licensed under the MIT License.
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import { Side, Snapshot } from '../Snapshot';
|
|
7
|
-
import {
|
|
8
|
-
Change,
|
|
9
|
-
ChangeType,
|
|
10
|
-
placeFromStablePlace,
|
|
11
|
-
StablePlace,
|
|
12
|
-
StableRange,
|
|
13
|
-
validateStablePlace,
|
|
14
|
-
validateStableRange,
|
|
15
|
-
} from '../default-edits';
|
|
16
|
-
import { assert, assertNotUndefined, fail } from '../Common';
|
|
17
|
-
import { EditValidationResult } from '../Checkout';
|
|
18
|
-
import { NodeId } from '../Identifiers';
|
|
19
|
-
import { ReconciliationPath } from '../ReconciliationPath';
|
|
20
|
-
import {
|
|
21
|
-
AnchoredChange,
|
|
22
|
-
NodeAnchor,
|
|
23
|
-
PlaceAnchor,
|
|
24
|
-
PlaceAnchorSemanticsChoice,
|
|
25
|
-
RangeAnchor,
|
|
26
|
-
RelativePlaceAnchor,
|
|
27
|
-
} from './PersistedTypes';
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* A change and the snapshots that precede and succeed it.
|
|
31
|
-
*/
|
|
32
|
-
export interface EvaluatedChange<TChange> {
|
|
33
|
-
readonly change: TChange;
|
|
34
|
-
/**
|
|
35
|
-
* The snapshot before the change was applied.
|
|
36
|
-
*/
|
|
37
|
-
readonly before: Snapshot;
|
|
38
|
-
/**
|
|
39
|
-
* The snapshot after the change was applied.
|
|
40
|
-
*/
|
|
41
|
-
readonly after: Snapshot;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
/**
|
|
45
|
-
* Object that includes a function for resolving node anchors.
|
|
46
|
-
*/
|
|
47
|
-
export interface HasNodeResolver {
|
|
48
|
-
nodeResolver: (node: NodeAnchor, before: Snapshot, path: ReconciliationPath<AnchoredChange>) => NodeId | undefined;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
* Object that includes a function for resolving place anchors.
|
|
53
|
-
*/
|
|
54
|
-
export interface HasPlaceResolver {
|
|
55
|
-
placeResolver: (
|
|
56
|
-
range: PlaceAnchor,
|
|
57
|
-
before: Snapshot,
|
|
58
|
-
path: ReconciliationPath<AnchoredChange>
|
|
59
|
-
) => StablePlace | undefined;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
/**
|
|
63
|
-
* Object that includes a function for resolving range anchors.
|
|
64
|
-
*/
|
|
65
|
-
export interface HasRangeResolver {
|
|
66
|
-
rangeResolver: (
|
|
67
|
-
range: RangeAnchor,
|
|
68
|
-
before: Snapshot,
|
|
69
|
-
path: ReconciliationPath<AnchoredChange>
|
|
70
|
-
) => StableRange | undefined;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* Object that includes a function for validating places.
|
|
75
|
-
*/
|
|
76
|
-
export interface HasPlaceValidator {
|
|
77
|
-
placeValidator: (snapshot: Snapshot, place: StablePlace) => EditValidationResult;
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
/**
|
|
81
|
-
* Reconciliates a given `change` in the face of concurrent edits described in a `ReconciliationPath`.
|
|
82
|
-
* @param change - The anchor to reconciliate.
|
|
83
|
-
* @param before - The state to which the `change` would be applied to.
|
|
84
|
-
* @param path - The reconciliation path for the `change`.
|
|
85
|
-
* @returns A `Change` that satisfies the same semantics of the given `change` but whose tree locations are valid in the `before` snapshot.
|
|
86
|
-
* Undefined if no such change can be produced.
|
|
87
|
-
* @internal
|
|
88
|
-
*/
|
|
89
|
-
export function resolveChangeAnchors(
|
|
90
|
-
change: AnchoredChange,
|
|
91
|
-
before: Snapshot,
|
|
92
|
-
path: ReconciliationPath<AnchoredChange>
|
|
93
|
-
): Change | undefined;
|
|
94
|
-
|
|
95
|
-
/**
|
|
96
|
-
* For testing purposes only.
|
|
97
|
-
* @internal
|
|
98
|
-
*/
|
|
99
|
-
export function resolveChangeAnchors(
|
|
100
|
-
change: AnchoredChange,
|
|
101
|
-
before: Snapshot,
|
|
102
|
-
path: ReconciliationPath<AnchoredChange>,
|
|
103
|
-
dependencies?: HasNodeResolver & HasPlaceResolver & HasRangeResolver
|
|
104
|
-
): Change | undefined;
|
|
105
|
-
|
|
106
|
-
export function resolveChangeAnchors(
|
|
107
|
-
change: AnchoredChange,
|
|
108
|
-
before: Snapshot,
|
|
109
|
-
path: ReconciliationPath<AnchoredChange>,
|
|
110
|
-
{ nodeResolver, placeResolver, rangeResolver }: HasNodeResolver & HasPlaceResolver & HasRangeResolver = {
|
|
111
|
-
nodeResolver: resolveNodeAnchor,
|
|
112
|
-
placeResolver: resolvePlaceAnchor,
|
|
113
|
-
rangeResolver: resolveRangeAnchor,
|
|
114
|
-
}
|
|
115
|
-
): Change | undefined {
|
|
116
|
-
switch (change.type) {
|
|
117
|
-
case ChangeType.Build:
|
|
118
|
-
return change;
|
|
119
|
-
case ChangeType.Insert: {
|
|
120
|
-
const destination = placeResolver(change.destination, before, path);
|
|
121
|
-
return destination !== undefined ? { ...change, destination } : undefined;
|
|
122
|
-
}
|
|
123
|
-
case ChangeType.Detach: {
|
|
124
|
-
const source = rangeResolver(change.source, before, path);
|
|
125
|
-
return source !== undefined ? { ...change, source } : undefined;
|
|
126
|
-
}
|
|
127
|
-
case ChangeType.Constraint: {
|
|
128
|
-
const toConstrain = rangeResolver(change.toConstrain, before, path);
|
|
129
|
-
return toConstrain !== undefined ? { ...change, toConstrain } : undefined;
|
|
130
|
-
}
|
|
131
|
-
case ChangeType.SetValue: {
|
|
132
|
-
const nodeToModify = nodeResolver(change.nodeToModify, before, path);
|
|
133
|
-
return nodeToModify !== undefined ? { ...change, nodeToModify } : undefined;
|
|
134
|
-
}
|
|
135
|
-
default:
|
|
136
|
-
return fail('Attempted to reconciliate unsupported change');
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
/**
|
|
141
|
-
* Resolves a given `node` anchor in the face of a `ReconciliationPath`.
|
|
142
|
-
* @param node - The anchor to resolve.
|
|
143
|
-
* @param before - The state to which the change that the `node` anchor should be applied to.
|
|
144
|
-
* @param path - The reconciliation path for the change that the `node` is part of.
|
|
145
|
-
* @returns A matching `NodeId` that is valid in the snapshot at the end of the `path`. Undefined if no such node exists.
|
|
146
|
-
* @internal
|
|
147
|
-
*/
|
|
148
|
-
export function resolveNodeAnchor(
|
|
149
|
-
node: NodeAnchor,
|
|
150
|
-
before: Snapshot,
|
|
151
|
-
path: ReconciliationPath<AnchoredChange>
|
|
152
|
-
): NodeId | undefined {
|
|
153
|
-
return before.hasNode(node) ? node : undefined;
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
/**
|
|
157
|
-
* Resolves a given `range` anchor in the face of a `ReconciliationPath`.
|
|
158
|
-
* @param range - The anchor to resolve.
|
|
159
|
-
* @param before - The state to which the change that the `range` anchor should be applied to.
|
|
160
|
-
* @param path - The reconciliation path for the change that the `range` is part of.
|
|
161
|
-
* @returns A matching `StableRange` that is valid in the snapshot at the end of the `path`. Undefined if no such valid range exists.
|
|
162
|
-
* @internal
|
|
163
|
-
*/
|
|
164
|
-
export function resolveRangeAnchor(
|
|
165
|
-
range: RangeAnchor,
|
|
166
|
-
before: Snapshot,
|
|
167
|
-
path: ReconciliationPath<AnchoredChange>
|
|
168
|
-
): StableRange | undefined;
|
|
169
|
-
|
|
170
|
-
/**
|
|
171
|
-
* For testing purposes only.
|
|
172
|
-
* @internal
|
|
173
|
-
*/
|
|
174
|
-
export function resolveRangeAnchor(
|
|
175
|
-
range: RangeAnchor,
|
|
176
|
-
before: Snapshot,
|
|
177
|
-
path: ReconciliationPath<AnchoredChange>,
|
|
178
|
-
dependencies?: HasPlaceResolver & {
|
|
179
|
-
rangeValidator: (snapshot: Snapshot, range: StableRange) => EditValidationResult;
|
|
180
|
-
}
|
|
181
|
-
): StableRange | undefined;
|
|
182
|
-
|
|
183
|
-
export function resolveRangeAnchor(
|
|
184
|
-
range: RangeAnchor,
|
|
185
|
-
before: Snapshot,
|
|
186
|
-
path: ReconciliationPath<AnchoredChange>,
|
|
187
|
-
{
|
|
188
|
-
placeResolver,
|
|
189
|
-
rangeValidator,
|
|
190
|
-
}: HasPlaceResolver & {
|
|
191
|
-
rangeValidator: (snapshot: Snapshot, range: StableRange) => EditValidationResult;
|
|
192
|
-
} = {
|
|
193
|
-
placeResolver: resolvePlaceAnchor,
|
|
194
|
-
rangeValidator: validateStableRange,
|
|
195
|
-
}
|
|
196
|
-
): StableRange | undefined {
|
|
197
|
-
const start = placeResolver(range.start, before, path);
|
|
198
|
-
if (start !== undefined) {
|
|
199
|
-
const end = placeResolver(range.end, before, path);
|
|
200
|
-
if (end !== undefined) {
|
|
201
|
-
const resolvedRange = {
|
|
202
|
-
start,
|
|
203
|
-
end,
|
|
204
|
-
};
|
|
205
|
-
return rangeValidator(before, resolvedRange) === EditValidationResult.Valid ? resolvedRange : undefined;
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
return undefined;
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
/**
|
|
212
|
-
* Resolves a given `place` anchor in the face of a `ReconciliationPath`.
|
|
213
|
-
* @param place - The anchor to resolve.
|
|
214
|
-
* @param before - The state to which the change that the `place` anchor should be applied to.
|
|
215
|
-
* @param path - The reconciliation path for the change that the `place` is part of.
|
|
216
|
-
* @returns A matching `StablePlace` that is valid in the snapshot at the end of the `path`. Undefined if no such valid place exists.
|
|
217
|
-
* @internal
|
|
218
|
-
*/
|
|
219
|
-
export function resolvePlaceAnchor(
|
|
220
|
-
place: PlaceAnchor,
|
|
221
|
-
before: Snapshot,
|
|
222
|
-
path: ReconciliationPath<AnchoredChange>
|
|
223
|
-
): StablePlace | undefined;
|
|
224
|
-
|
|
225
|
-
/**
|
|
226
|
-
* For testing purposes only.
|
|
227
|
-
* @internal
|
|
228
|
-
*/
|
|
229
|
-
export function resolvePlaceAnchor(
|
|
230
|
-
place: PlaceAnchor,
|
|
231
|
-
before: Snapshot,
|
|
232
|
-
path: ReconciliationPath<AnchoredChange>,
|
|
233
|
-
dependencies?: HasPlaceValidator & {
|
|
234
|
-
placeUpdatorForPath: (
|
|
235
|
-
place: RelativePlaceAnchor,
|
|
236
|
-
path: ReconciliationPath<AnchoredChange>
|
|
237
|
-
) => PlaceAnchor | undefined;
|
|
238
|
-
}
|
|
239
|
-
): StablePlace | undefined;
|
|
240
|
-
|
|
241
|
-
export function resolvePlaceAnchor(
|
|
242
|
-
place: PlaceAnchor,
|
|
243
|
-
before: Snapshot,
|
|
244
|
-
path: ReconciliationPath<AnchoredChange>,
|
|
245
|
-
{
|
|
246
|
-
placeValidator,
|
|
247
|
-
placeUpdatorForPath,
|
|
248
|
-
}: HasPlaceValidator & {
|
|
249
|
-
placeUpdatorForPath: (
|
|
250
|
-
place: RelativePlaceAnchor,
|
|
251
|
-
path: ReconciliationPath<AnchoredChange>
|
|
252
|
-
) => PlaceAnchor | undefined;
|
|
253
|
-
} = {
|
|
254
|
-
placeValidator: validateStablePlace,
|
|
255
|
-
placeUpdatorForPath: updateRelativePlaceAnchorForPath,
|
|
256
|
-
}
|
|
257
|
-
): StablePlace | undefined {
|
|
258
|
-
let newPlace: PlaceAnchor | undefined = place;
|
|
259
|
-
while (newPlace !== undefined && placeValidator(before, newPlace) !== EditValidationResult.Valid) {
|
|
260
|
-
switch (newPlace.semantics) {
|
|
261
|
-
case PlaceAnchorSemanticsChoice.RelativeToNode: {
|
|
262
|
-
newPlace = placeUpdatorForPath(newPlace as RelativePlaceAnchor, path);
|
|
263
|
-
break;
|
|
264
|
-
}
|
|
265
|
-
case PlaceAnchorSemanticsChoice.BoundToNode:
|
|
266
|
-
case undefined:
|
|
267
|
-
// There's nothing we can do to fix this place
|
|
268
|
-
newPlace = undefined;
|
|
269
|
-
break;
|
|
270
|
-
default:
|
|
271
|
-
fail('Unsupported choice of PlaceAnchorSemanticsChoice');
|
|
272
|
-
}
|
|
273
|
-
}
|
|
274
|
-
return newPlace;
|
|
275
|
-
}
|
|
276
|
-
|
|
277
|
-
/**
|
|
278
|
-
* Updates a given `place` anchor in the face of a `ReconciliationPath` that violates its semantics.
|
|
279
|
-
* @param place - The anchor to update. Assumed to be invalid after the latest change.
|
|
280
|
-
* @param path - The sequence of edits that violates the anchor's semantics.
|
|
281
|
-
* @returns A place anchor whose semantics are inline with the given `place`, and valid after the most recent change that made it invalid.
|
|
282
|
-
* Undefined if those semantics cannot be preserved.
|
|
283
|
-
* @internal
|
|
284
|
-
*/
|
|
285
|
-
export function updateRelativePlaceAnchorForPath(
|
|
286
|
-
place: RelativePlaceAnchor,
|
|
287
|
-
path: ReconciliationPath<AnchoredChange>
|
|
288
|
-
): PlaceAnchor | undefined;
|
|
289
|
-
|
|
290
|
-
/**
|
|
291
|
-
* For testing purposes only.
|
|
292
|
-
* @internal
|
|
293
|
-
*/
|
|
294
|
-
export function updateRelativePlaceAnchorForPath(
|
|
295
|
-
place: RelativePlaceAnchor,
|
|
296
|
-
path: ReconciliationPath<AnchoredChange>,
|
|
297
|
-
dependencies?: {
|
|
298
|
-
lastOffendingChangeFinder: (
|
|
299
|
-
place: RelativePlaceAnchor,
|
|
300
|
-
path: ReconciliationPath<AnchoredChange>
|
|
301
|
-
) => EvaluatedChange<AnchoredChange> | undefined;
|
|
302
|
-
placeUpdatorForChange: (
|
|
303
|
-
place: RelativePlaceAnchor,
|
|
304
|
-
change: EvaluatedChange<AnchoredChange>
|
|
305
|
-
) => PlaceAnchor | undefined;
|
|
306
|
-
}
|
|
307
|
-
): PlaceAnchor | undefined;
|
|
308
|
-
|
|
309
|
-
export function updateRelativePlaceAnchorForPath(
|
|
310
|
-
place: RelativePlaceAnchor,
|
|
311
|
-
path: ReconciliationPath<AnchoredChange>,
|
|
312
|
-
{
|
|
313
|
-
lastOffendingChangeFinder,
|
|
314
|
-
placeUpdatorForChange,
|
|
315
|
-
}: {
|
|
316
|
-
lastOffendingChangeFinder: (
|
|
317
|
-
place: RelativePlaceAnchor,
|
|
318
|
-
path: ReconciliationPath<AnchoredChange>
|
|
319
|
-
) => EvaluatedChange<AnchoredChange> | undefined;
|
|
320
|
-
placeUpdatorForChange: (
|
|
321
|
-
place: RelativePlaceAnchor,
|
|
322
|
-
change: EvaluatedChange<AnchoredChange>
|
|
323
|
-
) => PlaceAnchor | undefined;
|
|
324
|
-
} = {
|
|
325
|
-
lastOffendingChangeFinder: findLastOffendingChange,
|
|
326
|
-
placeUpdatorForChange: updateRelativePlaceAnchorForChange,
|
|
327
|
-
}
|
|
328
|
-
): PlaceAnchor | undefined {
|
|
329
|
-
if (place.referenceSibling === undefined) {
|
|
330
|
-
// Start and end places cannot be updated.
|
|
331
|
-
return undefined;
|
|
332
|
-
}
|
|
333
|
-
const lastOffendingChange = lastOffendingChangeFinder(place, path);
|
|
334
|
-
return lastOffendingChange === undefined ? undefined : placeUpdatorForChange(place, lastOffendingChange);
|
|
335
|
-
}
|
|
336
|
-
|
|
337
|
-
/**
|
|
338
|
-
* Finds the latest change in the given `path` that last made the given `place` invalid.
|
|
339
|
-
* @param place - A anchor that is invalid in the last snapshot on the path.
|
|
340
|
-
* @param path - The sequence of edits that violates the anchor's semantics.
|
|
341
|
-
* @returns The change that last made the given `place` invalid and the snapshots before and after it. Undefined if `place` was never valid.
|
|
342
|
-
* @internal
|
|
343
|
-
*/
|
|
344
|
-
export function findLastOffendingChange(
|
|
345
|
-
place: RelativePlaceAnchor,
|
|
346
|
-
path: ReconciliationPath<AnchoredChange>
|
|
347
|
-
): EvaluatedChange<AnchoredChange> | undefined;
|
|
348
|
-
|
|
349
|
-
/**
|
|
350
|
-
* For testing purposes only.
|
|
351
|
-
* @internal
|
|
352
|
-
*/
|
|
353
|
-
export function findLastOffendingChange(
|
|
354
|
-
place: RelativePlaceAnchor,
|
|
355
|
-
path: ReconciliationPath<AnchoredChange>,
|
|
356
|
-
dependencies?: HasPlaceValidator
|
|
357
|
-
): EvaluatedChange<AnchoredChange> | undefined;
|
|
358
|
-
|
|
359
|
-
export function findLastOffendingChange(
|
|
360
|
-
place: RelativePlaceAnchor,
|
|
361
|
-
path: ReconciliationPath<AnchoredChange>,
|
|
362
|
-
{ placeValidator }: HasPlaceValidator = {
|
|
363
|
-
placeValidator: validateStablePlace,
|
|
364
|
-
}
|
|
365
|
-
): EvaluatedChange<AnchoredChange> | undefined {
|
|
366
|
-
let followingChange: { change: AnchoredChange; after: Snapshot } | undefined;
|
|
367
|
-
for (let editIndex = path.length - 1; editIndex >= 0; --editIndex) {
|
|
368
|
-
const edit = path[editIndex];
|
|
369
|
-
for (let changeIndex = edit.length - 1; changeIndex >= 0; --changeIndex) {
|
|
370
|
-
const change = edit[changeIndex];
|
|
371
|
-
const placeStatusAfterChange = placeValidator(change.after, place);
|
|
372
|
-
if (placeStatusAfterChange === EditValidationResult.Valid) {
|
|
373
|
-
return {
|
|
374
|
-
before: change.after,
|
|
375
|
-
...assertNotUndefined(followingChange, 'The last change should not make the place valid'),
|
|
376
|
-
};
|
|
377
|
-
}
|
|
378
|
-
followingChange = {
|
|
379
|
-
change: change.resolvedChange,
|
|
380
|
-
after: change.after,
|
|
381
|
-
};
|
|
382
|
-
}
|
|
383
|
-
}
|
|
384
|
-
return path.length > 0 && placeValidator(path[0].before, place) === EditValidationResult.Valid
|
|
385
|
-
? {
|
|
386
|
-
before: path[0].before,
|
|
387
|
-
...assertNotUndefined(followingChange, 'The last change should not make the place valid'),
|
|
388
|
-
}
|
|
389
|
-
: // The place was never valid
|
|
390
|
-
undefined;
|
|
391
|
-
}
|
|
392
|
-
|
|
393
|
-
/**
|
|
394
|
-
* Updates a given `place` anchor in the face of a change that violates its semantics.
|
|
395
|
-
* @param place - The anchor to update.
|
|
396
|
-
* @param change - The change that violates the anchor's semantics.
|
|
397
|
-
* @returns A place anchor that is valid after the given `change` and in line with the original `place`'s semantics.
|
|
398
|
-
* Undefined if those semantics cannot be preserved.
|
|
399
|
-
* @internal
|
|
400
|
-
*/
|
|
401
|
-
export function updateRelativePlaceAnchorForChange(
|
|
402
|
-
place: RelativePlaceAnchor,
|
|
403
|
-
change: EvaluatedChange<AnchoredChange>
|
|
404
|
-
): PlaceAnchor | undefined;
|
|
405
|
-
|
|
406
|
-
export function updateRelativePlaceAnchorForChange(
|
|
407
|
-
place: RelativePlaceAnchor,
|
|
408
|
-
{ change, before }: EvaluatedChange<AnchoredChange>
|
|
409
|
-
): PlaceAnchor | undefined {
|
|
410
|
-
if (place.referenceSibling === undefined) {
|
|
411
|
-
// A start or end place cannot be further updated
|
|
412
|
-
return undefined;
|
|
413
|
-
}
|
|
414
|
-
assert(change.type === ChangeType.Detach, 'A PlaceAnchor can only be made invalid by a detach change');
|
|
415
|
-
const targetPlace = placeFromStablePlace(before, place);
|
|
416
|
-
const startPlace = placeFromStablePlace(before, change.source.start);
|
|
417
|
-
const endPlace = placeFromStablePlace(before, change.source.end);
|
|
418
|
-
if (targetPlace.trait.parent !== startPlace.trait.parent) {
|
|
419
|
-
// The target place was detached indirectly by detaching its parent.
|
|
420
|
-
// The anchor cannot recover.
|
|
421
|
-
return undefined;
|
|
422
|
-
}
|
|
423
|
-
let newIndex;
|
|
424
|
-
if (targetPlace.side === Side.After) {
|
|
425
|
-
newIndex = before.findIndexWithinTrait(startPlace) - 1;
|
|
426
|
-
}
|
|
427
|
-
if (targetPlace.side === Side.Before) {
|
|
428
|
-
newIndex = before.findIndexWithinTrait(endPlace);
|
|
429
|
-
}
|
|
430
|
-
const referenceTrait = targetPlace.trait;
|
|
431
|
-
const parentNode = before.getSnapshotNode(referenceTrait.parent);
|
|
432
|
-
const traits = new Map(parentNode.traits);
|
|
433
|
-
const trait = assertNotUndefined(
|
|
434
|
-
traits.get(referenceTrait.label),
|
|
435
|
-
'The trait must have been populated before the deletion'
|
|
436
|
-
);
|
|
437
|
-
const referenceSibling = trait[newIndex];
|
|
438
|
-
if (referenceSibling === undefined) {
|
|
439
|
-
return { referenceTrait, side: place.side, semantics: place.semantics };
|
|
440
|
-
}
|
|
441
|
-
return { referenceSibling, side: place.side, semantics: place.semantics };
|
|
442
|
-
}
|
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
|
-
* Licensed under the MIT License.
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import {
|
|
7
|
-
IChannelAttributes,
|
|
8
|
-
IFluidDataStoreRuntime,
|
|
9
|
-
IChannelServices,
|
|
10
|
-
IChannelFactory,
|
|
11
|
-
} from '@fluidframework/datastore-definitions';
|
|
12
|
-
import { ISharedObject } from '@fluidframework/shared-object-base';
|
|
13
|
-
import { SharedTreeWithAnchors } from './SharedTreeWithAnchors';
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Factory for SharedTreeWithAnchors.
|
|
17
|
-
* Includes history in the summary.
|
|
18
|
-
* @public
|
|
19
|
-
*/
|
|
20
|
-
export class SharedTreeWithAnchorsFactory implements IChannelFactory {
|
|
21
|
-
/**
|
|
22
|
-
* {@inheritDoc @fluidframework/shared-object-base#ISharedObjectFactory."type"}
|
|
23
|
-
*/
|
|
24
|
-
public static Type = 'SharedTreeWithAnchors';
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* {@inheritDoc @fluidframework/shared-object-base#ISharedObjectFactory.attributes}
|
|
28
|
-
*/
|
|
29
|
-
public static Attributes: IChannelAttributes = {
|
|
30
|
-
type: SharedTreeWithAnchorsFactory.Type,
|
|
31
|
-
snapshotFormatVersion: '0.1',
|
|
32
|
-
packageVersion: '0.1',
|
|
33
|
-
};
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* {@inheritDoc @fluidframework/shared-object-base#ISharedObjectFactory."type"}
|
|
37
|
-
*/
|
|
38
|
-
public get type(): string {
|
|
39
|
-
return SharedTreeWithAnchorsFactory.Type;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* {@inheritDoc @fluidframework/shared-object-base#ISharedObjectFactory.attributes}
|
|
44
|
-
*/
|
|
45
|
-
public get attributes(): IChannelAttributes {
|
|
46
|
-
return SharedTreeWithAnchorsFactory.Attributes;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* {@inheritDoc @fluidframework/shared-object-base#ISharedObjectFactory.load}
|
|
51
|
-
*/
|
|
52
|
-
public async load(
|
|
53
|
-
runtime: IFluidDataStoreRuntime,
|
|
54
|
-
id: string,
|
|
55
|
-
services: IChannelServices,
|
|
56
|
-
_channelAttributes: Readonly<IChannelAttributes>
|
|
57
|
-
): Promise<ISharedObject> {
|
|
58
|
-
const sharedTree = new SharedTreeWithAnchors(runtime, id);
|
|
59
|
-
await sharedTree.load(services);
|
|
60
|
-
return sharedTree;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
* Create a new SharedTree.
|
|
65
|
-
* @param runtime - data store runtime that owns the new SharedTree
|
|
66
|
-
* @param id - optional name for the SharedTree
|
|
67
|
-
*/
|
|
68
|
-
public create(runtime: IFluidDataStoreRuntime, id: string, expensiveValidation?: boolean): SharedTreeWithAnchors {
|
|
69
|
-
const sharedTree = new SharedTreeWithAnchors(runtime, id, expensiveValidation, this.includeHistoryInSummary());
|
|
70
|
-
sharedTree.initializeLocal();
|
|
71
|
-
return sharedTree;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
/**
|
|
75
|
-
* Determines how the SharedTree will summarize the history.
|
|
76
|
-
* This is a workaround for lacking the ability to construct DDSs with custom parameters.
|
|
77
|
-
*/
|
|
78
|
-
protected includeHistoryInSummary(): boolean {
|
|
79
|
-
return true;
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
/**
|
|
84
|
-
* Factory for SharedTreeWithAnchors.
|
|
85
|
-
* Does not include the history in the summary.
|
|
86
|
-
* This is a workaround for lacking the ability to construct DDSs with custom parameters.
|
|
87
|
-
* TODO:#54918: Clean up when DDS parameterization is supported.
|
|
88
|
-
* @public
|
|
89
|
-
*/
|
|
90
|
-
export class SharedTreeWithAnchorsFactoryNoHistory extends SharedTreeWithAnchorsFactory {
|
|
91
|
-
protected includeHistoryInSummary(): boolean {
|
|
92
|
-
return false;
|
|
93
|
-
}
|
|
94
|
-
}
|