@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/dist/BasicCheckout.d.ts
DELETED
|
@@ -1,23 +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 { Checkout } from './Checkout';
|
|
7
|
-
import { GenericSharedTree } from './generic';
|
|
8
|
-
/**
|
|
9
|
-
* Basic Session that stays up to date with the SharedTree.
|
|
10
|
-
*
|
|
11
|
-
* waitForPendingUpdates is always a no-op since BasicCheckout is always up to date.
|
|
12
|
-
* @public
|
|
13
|
-
* @sealed
|
|
14
|
-
*/
|
|
15
|
-
export declare class BasicCheckout<TChange> extends Checkout<TChange> {
|
|
16
|
-
/**
|
|
17
|
-
* @param tree - the tree
|
|
18
|
-
*/
|
|
19
|
-
constructor(tree: GenericSharedTree<TChange>);
|
|
20
|
-
protected get latestCommittedView(): Snapshot;
|
|
21
|
-
waitForPendingUpdates(): Promise<void>;
|
|
22
|
-
}
|
|
23
|
-
//# sourceMappingURL=BasicCheckout.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BasicCheckout.d.ts","sourceRoot":"","sources":["../src/BasicCheckout.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAA+B,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE3E;;;;;;GAMG;AACH,qBAAa,aAAa,CAAC,OAAO,CAAE,SAAQ,QAAQ,CAAC,OAAO,CAAC;IAC5D;;OAEG;gBACgB,IAAI,EAAE,iBAAiB,CAAC,OAAO,CAAC;IAMnD,SAAS,KAAK,mBAAmB,IAAI,QAAQ,CAE5C;IAEY,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;CAGnD"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BasicCheckout.js","sourceRoot":"","sources":["../src/BasicCheckout.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAGH,yCAAsC;AAGtC;;;;;;GAMG;AACH,MAAa,aAAuB,SAAQ,mBAAiB;IAC5D;;OAEG;IACH,YAAmB,IAAgC;QAClD,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,IAA6D,EAAE,EAAE;YAC/F,IAAI,CAAC,UAAU,EAAE,CAAC;QACnB,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,IAAc,mBAAmB;QAChC,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;IAC9B,CAAC;IAEM,KAAK,CAAC,qBAAqB;QACjC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC1B,CAAC;CACD;AAjBD,sCAiBC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Snapshot } from './Snapshot';\nimport { Checkout } from './Checkout';\nimport { EditCommittedEventArguments, GenericSharedTree } from './generic';\n\n/**\n * Basic Session that stays up to date with the SharedTree.\n *\n * waitForPendingUpdates is always a no-op since BasicCheckout is always up to date.\n * @public\n * @sealed\n */\nexport class BasicCheckout<TChange> extends Checkout<TChange> {\n\t/**\n\t * @param tree - the tree\n\t */\n\tpublic constructor(tree: GenericSharedTree<TChange>) {\n\t\tsuper(tree, tree.currentView, (args: EditCommittedEventArguments<GenericSharedTree<TChange>>) => {\n\t\t\tthis.emitChange();\n\t\t});\n\t}\n\n\tprotected get latestCommittedView(): Snapshot {\n\t\treturn this.tree.currentView;\n\t}\n\n\tpublic async waitForPendingUpdates(): Promise<void> {\n\t\treturn Promise.resolve();\n\t}\n}\n"]}
|
package/dist/Snapshot.d.ts
DELETED
|
@@ -1,198 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
|
-
* Licensed under the MIT License.
|
|
4
|
-
*/
|
|
5
|
-
import { NodeId, TraitLabel } from './Identifiers';
|
|
6
|
-
import { Delta } from './Forest';
|
|
7
|
-
import { ChangeNode, NodeData, Payload, TraitLocation } from './generic';
|
|
8
|
-
/**
|
|
9
|
-
* An immutable view of a distributed tree node.
|
|
10
|
-
* @public
|
|
11
|
-
*/
|
|
12
|
-
export interface SnapshotNode extends NodeData {
|
|
13
|
-
readonly traits: ReadonlyMap<TraitLabel, readonly NodeId[]>;
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* Index of a place within a trait.
|
|
17
|
-
* 0 = before all nodes,
|
|
18
|
-
* 1 = after first node,
|
|
19
|
-
* etc.
|
|
20
|
-
* @public
|
|
21
|
-
*/
|
|
22
|
-
export declare type PlaceIndex = number & {
|
|
23
|
-
readonly PlaceIndex: unique symbol;
|
|
24
|
-
};
|
|
25
|
-
/**
|
|
26
|
-
* Index of a node within a trait.
|
|
27
|
-
* 0 = first node,
|
|
28
|
-
* 1 = second node,
|
|
29
|
-
* etc.
|
|
30
|
-
* @public
|
|
31
|
-
*/
|
|
32
|
-
export declare type TraitNodeIndex = number & {
|
|
33
|
-
readonly TraitNodeIndex: unique symbol;
|
|
34
|
-
};
|
|
35
|
-
/**
|
|
36
|
-
* 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.
|
|
37
|
-
* Valid iff 'trait' is valid and, if provided, sibling is in the Location specified by 'trait'.
|
|
38
|
-
* @public
|
|
39
|
-
*/
|
|
40
|
-
export interface SnapshotPlace {
|
|
41
|
-
readonly sibling?: NodeId;
|
|
42
|
-
readonly side: Side;
|
|
43
|
-
readonly trait: TraitLocation;
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Defines a place relative to sibling.
|
|
47
|
-
* The "outside" of a trait is the `undefined` sibling,
|
|
48
|
-
* so After `undefined` is the beginning of the trait, and before `undefined` is the end.
|
|
49
|
-
*
|
|
50
|
-
* For this purpose, traits look like:
|
|
51
|
-
*
|
|
52
|
-
* `{undefined} - {Node 0} - {Node 1} - ... - {Node N} - {undefined}`
|
|
53
|
-
*
|
|
54
|
-
* Each `{value}` in the diagram is a possible sibling, which is either a Node or undefined.
|
|
55
|
-
* Each `-` in the above diagram is a `Place`, and can be describe as being `After` a particular `{sibling}` or `Before` it.
|
|
56
|
-
* This means that `After` `{undefined}` means the same `Place` as before the first node
|
|
57
|
-
* and `Before` `{undefined}` means the `Place` after the last Node.
|
|
58
|
-
*
|
|
59
|
-
* Each place can be specified, (aka 'anchored') in two ways (relative to the sibling before or after):
|
|
60
|
-
* 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
|
|
61
|
-
* two place description may no longer evaluate to the same place.
|
|
62
|
-
* @public
|
|
63
|
-
*/
|
|
64
|
-
export declare enum Side {
|
|
65
|
-
Before = 0,
|
|
66
|
-
After = 1
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Specifies the range of nodes from `start` to `end` within a trait within a particular `Snapshot`.
|
|
70
|
-
* Valid iff start and end are valid and are withing the same trait.
|
|
71
|
-
* @public
|
|
72
|
-
*/
|
|
73
|
-
export interface SnapshotRange {
|
|
74
|
-
readonly start: SnapshotPlace;
|
|
75
|
-
readonly end: SnapshotPlace;
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* An immutable view of a distributed tree.
|
|
79
|
-
* @public
|
|
80
|
-
*/
|
|
81
|
-
export declare class Snapshot {
|
|
82
|
-
readonly root: NodeId;
|
|
83
|
-
private readonly forest;
|
|
84
|
-
/**
|
|
85
|
-
* A cache of node's index within their parent trait.
|
|
86
|
-
* Used to avoid redundant linear scans of traits.
|
|
87
|
-
* Not shared across snapshots; initialized to empty each time a Snapshot is created.
|
|
88
|
-
*/
|
|
89
|
-
private traitIndicesCache?;
|
|
90
|
-
/**
|
|
91
|
-
* Constructs a Snapshot using the supplied tree.
|
|
92
|
-
* @param root - the root of the tree to use as the contents of the `Snapshot`
|
|
93
|
-
*/
|
|
94
|
-
static fromTree(root: ChangeNode, expensiveValidation?: boolean): Snapshot;
|
|
95
|
-
private constructor();
|
|
96
|
-
/** Return a tree of JSON-compatible `ChangeNode`s representing the current state of this `Snapshot` */
|
|
97
|
-
getChangeNodeTree(): ChangeNode;
|
|
98
|
-
/**
|
|
99
|
-
* Returns the number of nodes in this `Snapshot`
|
|
100
|
-
*/
|
|
101
|
-
get size(): number;
|
|
102
|
-
/**
|
|
103
|
-
* @returns true iff the nodeId exists.
|
|
104
|
-
*/
|
|
105
|
-
hasNode(id: NodeId): boolean;
|
|
106
|
-
/**
|
|
107
|
-
* @returns a `ChangeNode` derived from the `SnapshotNode` in this snapshot with the given `NodeId`.
|
|
108
|
-
*/
|
|
109
|
-
getChangeNode(id: NodeId): ChangeNode;
|
|
110
|
-
/**
|
|
111
|
-
* @returns the `ChangeNode`s derived from the `SnapshotNode`s in this snapshot with the given `NodeId`s.
|
|
112
|
-
*/
|
|
113
|
-
getChangeNodes(nodeIds: readonly NodeId[]): ChangeNode[];
|
|
114
|
-
/**
|
|
115
|
-
* Asserts the forest is in a consistent state.
|
|
116
|
-
*/
|
|
117
|
-
assertConsistent(): void;
|
|
118
|
-
/**
|
|
119
|
-
* Inserts all nodes in a NodeSequence into the forest.
|
|
120
|
-
*/
|
|
121
|
-
addNodes(sequence: Iterable<SnapshotNode>): Snapshot;
|
|
122
|
-
/**
|
|
123
|
-
* Remove all nodes with the given ids from the forest
|
|
124
|
-
*/
|
|
125
|
-
deleteNodes(nodes: Iterable<NodeId>): Snapshot;
|
|
126
|
-
/**
|
|
127
|
-
* Parents a set of detached nodes at a specified place.
|
|
128
|
-
* @param nodesToAttach - the nodes to parent in the specified place. The nodes must already be present in the Snapshot.
|
|
129
|
-
* @param place - the location to insert the nodes.
|
|
130
|
-
*/
|
|
131
|
-
attachRange(nodesToAttach: readonly NodeId[], place: SnapshotPlace): Snapshot;
|
|
132
|
-
/**
|
|
133
|
-
* Detaches a range of nodes from their parent. The detached nodes remain in the Snapshot.
|
|
134
|
-
* @param rangeToDetach - the range of nodes to detach
|
|
135
|
-
*/
|
|
136
|
-
detachRange(rangeToDetach: SnapshotRange): {
|
|
137
|
-
snapshot: Snapshot;
|
|
138
|
-
detached: readonly NodeId[];
|
|
139
|
-
};
|
|
140
|
-
/**
|
|
141
|
-
* Sets a node's value. The node must exist in this `Snapshot`.
|
|
142
|
-
* @param nodeId - the id of the node
|
|
143
|
-
* @param value - the new value
|
|
144
|
-
*/
|
|
145
|
-
setNodeValue(nodeId: NodeId, value: Payload): Snapshot;
|
|
146
|
-
/**
|
|
147
|
-
* @returns the index just after place (which specifies a location between items).
|
|
148
|
-
* Performance note: this is O(siblings in trait).
|
|
149
|
-
*/
|
|
150
|
-
findIndexWithinTrait(place: SnapshotPlace): PlaceIndex;
|
|
151
|
-
/**
|
|
152
|
-
* Returns the node associated with `id` in this `Snapshot`.
|
|
153
|
-
*/
|
|
154
|
-
getSnapshotNode(id: NodeId): SnapshotNode;
|
|
155
|
-
/**
|
|
156
|
-
* 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.
|
|
157
|
-
*/
|
|
158
|
-
getTraitLabel(id: NodeId): TraitLabel | undefined;
|
|
159
|
-
/**
|
|
160
|
-
* 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.
|
|
161
|
-
*/
|
|
162
|
-
getParentSnapshotNode(id: NodeId): SnapshotNode | undefined;
|
|
163
|
-
/**
|
|
164
|
-
* @param node - must have a parent.
|
|
165
|
-
*/
|
|
166
|
-
getTraitLocation(node: NodeId): TraitLocation;
|
|
167
|
-
/**
|
|
168
|
-
* @param node - must have a parent.
|
|
169
|
-
* Performance note: this is O(siblings in trait).
|
|
170
|
-
*/
|
|
171
|
-
getIndexInTrait(node: NodeId): TraitNodeIndex;
|
|
172
|
-
/**
|
|
173
|
-
* Return a trait given its location
|
|
174
|
-
* @param traitLocation - the location of the trait
|
|
175
|
-
*/
|
|
176
|
-
getTrait(traitLocation: TraitLocation): readonly NodeId[];
|
|
177
|
-
private getIndexOfSide;
|
|
178
|
-
/** Compares this snapshot to another for equality. */
|
|
179
|
-
equals(snapshot: Snapshot): boolean;
|
|
180
|
-
private iterateNodeDescendants;
|
|
181
|
-
/**
|
|
182
|
-
* Calculate the difference between two `Snapshot`s
|
|
183
|
-
* @param snapshot - the other snapshot to compare to this one
|
|
184
|
-
* @returns A {@link Delta} which nodes must be changed, added, and removed to get from `this` to `snapshot`.
|
|
185
|
-
* The snapshots must share a root.
|
|
186
|
-
*/
|
|
187
|
-
delta(snapshot: Snapshot): Delta<NodeId>;
|
|
188
|
-
[Symbol.iterator](): IterableIterator<SnapshotNode>;
|
|
189
|
-
}
|
|
190
|
-
/**
|
|
191
|
-
* Contains some redundant information. Use only in computations between edits. Do not store.
|
|
192
|
-
* @public
|
|
193
|
-
*/
|
|
194
|
-
export interface NodeInTrait {
|
|
195
|
-
readonly trait: TraitLocation;
|
|
196
|
-
readonly index: TraitNodeIndex;
|
|
197
|
-
}
|
|
198
|
-
//# sourceMappingURL=Snapshot.d.ts.map
|
package/dist/Snapshot.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Snapshot.d.ts","sourceRoot":"","sources":["../src/Snapshot.ts"],"names":[],"mappings":"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"}
|
package/dist/Snapshot.js
DELETED
|
@@ -1,267 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/*!
|
|
3
|
-
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
4
|
-
* Licensed under the MIT License.
|
|
5
|
-
*/
|
|
6
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.Snapshot = exports.Side = void 0;
|
|
8
|
-
const Common_1 = require("./Common");
|
|
9
|
-
const SnapshotUtilities_1 = require("./SnapshotUtilities");
|
|
10
|
-
const Forest_1 = require("./Forest");
|
|
11
|
-
/**
|
|
12
|
-
* Defines a place relative to sibling.
|
|
13
|
-
* The "outside" of a trait is the `undefined` sibling,
|
|
14
|
-
* so After `undefined` is the beginning of the trait, and before `undefined` is the end.
|
|
15
|
-
*
|
|
16
|
-
* For this purpose, traits look like:
|
|
17
|
-
*
|
|
18
|
-
* `{undefined} - {Node 0} - {Node 1} - ... - {Node N} - {undefined}`
|
|
19
|
-
*
|
|
20
|
-
* Each `{value}` in the diagram is a possible sibling, which is either a Node or undefined.
|
|
21
|
-
* Each `-` in the above diagram is a `Place`, and can be describe as being `After` a particular `{sibling}` or `Before` it.
|
|
22
|
-
* This means that `After` `{undefined}` means the same `Place` as before the first node
|
|
23
|
-
* and `Before` `{undefined}` means the `Place` after the last Node.
|
|
24
|
-
*
|
|
25
|
-
* Each place can be specified, (aka 'anchored') in two ways (relative to the sibling before or after):
|
|
26
|
-
* 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
|
|
27
|
-
* two place description may no longer evaluate to the same place.
|
|
28
|
-
* @public
|
|
29
|
-
*/
|
|
30
|
-
var Side;
|
|
31
|
-
(function (Side) {
|
|
32
|
-
Side[Side["Before"] = 0] = "Before";
|
|
33
|
-
Side[Side["After"] = 1] = "After";
|
|
34
|
-
})(Side = exports.Side || (exports.Side = {}));
|
|
35
|
-
/**
|
|
36
|
-
* An immutable view of a distributed tree.
|
|
37
|
-
* @public
|
|
38
|
-
*/
|
|
39
|
-
class Snapshot {
|
|
40
|
-
constructor(root, forest) {
|
|
41
|
-
this.root = root;
|
|
42
|
-
this.forest = forest;
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Constructs a Snapshot using the supplied tree.
|
|
46
|
-
* @param root - the root of the tree to use as the contents of the `Snapshot`
|
|
47
|
-
*/
|
|
48
|
-
static fromTree(root, expensiveValidation = false) {
|
|
49
|
-
function insertNodeRecursive(node, newSnapshotNodes) {
|
|
50
|
-
const { identifier, definition } = node;
|
|
51
|
-
const traits = new Map();
|
|
52
|
-
// eslint-disable-next-line no-restricted-syntax
|
|
53
|
-
for (const key in node.traits) {
|
|
54
|
-
if (Object.prototype.hasOwnProperty.call(node.traits, key)) {
|
|
55
|
-
const element = node.traits[key];
|
|
56
|
-
if (element.length > 0) {
|
|
57
|
-
traits.set(key, element.map((n) => insertNodeRecursive(n, newSnapshotNodes)));
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
const snapshotNode = { identifier, definition, traits };
|
|
62
|
-
Common_1.copyPropertyIfDefined(node, snapshotNode, 'payload');
|
|
63
|
-
Common_1.assert(!newSnapshotNodes.has(identifier), `duplicate node in tree for snapshot: { identifier: ${identifier}, definition: ${definition}`);
|
|
64
|
-
newSnapshotNodes.set(snapshotNode.identifier, snapshotNode);
|
|
65
|
-
return snapshotNode.identifier;
|
|
66
|
-
}
|
|
67
|
-
const map = new Map();
|
|
68
|
-
return new Snapshot(insertNodeRecursive(root, map), Forest_1.Forest.create(expensiveValidation).add(map.values()));
|
|
69
|
-
}
|
|
70
|
-
/** Return a tree of JSON-compatible `ChangeNode`s representing the current state of this `Snapshot` */
|
|
71
|
-
getChangeNodeTree() {
|
|
72
|
-
return SnapshotUtilities_1.getChangeNodeFromSnapshot(this, this.root);
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* Returns the number of nodes in this `Snapshot`
|
|
76
|
-
*/
|
|
77
|
-
get size() {
|
|
78
|
-
return this.forest.size;
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* @returns true iff the nodeId exists.
|
|
82
|
-
*/
|
|
83
|
-
hasNode(id) {
|
|
84
|
-
return this.forest.tryGet(id) !== undefined;
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* @returns a `ChangeNode` derived from the `SnapshotNode` in this snapshot with the given `NodeId`.
|
|
88
|
-
*/
|
|
89
|
-
getChangeNode(id) {
|
|
90
|
-
return SnapshotUtilities_1.getChangeNodeFromSnapshot(this, id);
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* @returns the `ChangeNode`s derived from the `SnapshotNode`s in this snapshot with the given `NodeId`s.
|
|
94
|
-
*/
|
|
95
|
-
getChangeNodes(nodeIds) {
|
|
96
|
-
return nodeIds.map((id) => this.getChangeNode(id));
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* Asserts the forest is in a consistent state.
|
|
100
|
-
*/
|
|
101
|
-
assertConsistent() {
|
|
102
|
-
this.forest.assertConsistent();
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* Inserts all nodes in a NodeSequence into the forest.
|
|
106
|
-
*/
|
|
107
|
-
addNodes(sequence) {
|
|
108
|
-
return new Snapshot(this.root, this.forest.add(sequence));
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* Remove all nodes with the given ids from the forest
|
|
112
|
-
*/
|
|
113
|
-
deleteNodes(nodes) {
|
|
114
|
-
return new Snapshot(this.root, this.forest.delete(nodes, true));
|
|
115
|
-
}
|
|
116
|
-
/**
|
|
117
|
-
* Parents a set of detached nodes at a specified place.
|
|
118
|
-
* @param nodesToAttach - the nodes to parent in the specified place. The nodes must already be present in the Snapshot.
|
|
119
|
-
* @param place - the location to insert the nodes.
|
|
120
|
-
*/
|
|
121
|
-
attachRange(nodesToAttach, place) {
|
|
122
|
-
const { parent, label } = place.trait;
|
|
123
|
-
const index = this.findIndexWithinTrait(place);
|
|
124
|
-
return new Snapshot(this.root, this.forest.attachRangeOfChildren(parent, label, index, nodesToAttach));
|
|
125
|
-
}
|
|
126
|
-
/**
|
|
127
|
-
* Detaches a range of nodes from their parent. The detached nodes remain in the Snapshot.
|
|
128
|
-
* @param rangeToDetach - the range of nodes to detach
|
|
129
|
-
*/
|
|
130
|
-
detachRange(rangeToDetach) {
|
|
131
|
-
const { start, end } = rangeToDetach;
|
|
132
|
-
const { trait: traitLocation } = start;
|
|
133
|
-
const { parent, label } = traitLocation;
|
|
134
|
-
const startIndex = this.findIndexWithinTrait(start);
|
|
135
|
-
const endIndex = this.findIndexWithinTrait(end);
|
|
136
|
-
const { forest, detached } = this.forest.detachRangeOfChildren(parent, label, startIndex, endIndex);
|
|
137
|
-
return { snapshot: new Snapshot(this.root, forest), detached };
|
|
138
|
-
}
|
|
139
|
-
/**
|
|
140
|
-
* Sets a node's value. The node must exist in this `Snapshot`.
|
|
141
|
-
* @param nodeId - the id of the node
|
|
142
|
-
* @param value - the new value
|
|
143
|
-
*/
|
|
144
|
-
setNodeValue(nodeId, value) {
|
|
145
|
-
return new Snapshot(this.root, this.forest.setValue(nodeId, value));
|
|
146
|
-
}
|
|
147
|
-
/**
|
|
148
|
-
* @returns the index just after place (which specifies a location between items).
|
|
149
|
-
* Performance note: this is O(siblings in trait).
|
|
150
|
-
*/
|
|
151
|
-
findIndexWithinTrait(place) {
|
|
152
|
-
if (place.sibling === undefined) {
|
|
153
|
-
return this.getIndexOfSide(place.side, place.trait);
|
|
154
|
-
}
|
|
155
|
-
return getIndex(place.side, this.getIndexInTrait(place.sibling));
|
|
156
|
-
}
|
|
157
|
-
/**
|
|
158
|
-
* Returns the node associated with `id` in this `Snapshot`.
|
|
159
|
-
*/
|
|
160
|
-
getSnapshotNode(id) {
|
|
161
|
-
return this.forest.get(id);
|
|
162
|
-
}
|
|
163
|
-
/**
|
|
164
|
-
* 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.
|
|
165
|
-
*/
|
|
166
|
-
getTraitLabel(id) {
|
|
167
|
-
var _a;
|
|
168
|
-
return (_a = this.forest.tryGetParent(id)) === null || _a === void 0 ? void 0 : _a.traitParent;
|
|
169
|
-
}
|
|
170
|
-
/**
|
|
171
|
-
* 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.
|
|
172
|
-
*/
|
|
173
|
-
getParentSnapshotNode(id) {
|
|
174
|
-
const parentInfo = this.forest.tryGetParent(id);
|
|
175
|
-
if (parentInfo === undefined) {
|
|
176
|
-
return undefined;
|
|
177
|
-
}
|
|
178
|
-
return this.getSnapshotNode(parentInfo.parentId);
|
|
179
|
-
}
|
|
180
|
-
/**
|
|
181
|
-
* @param node - must have a parent.
|
|
182
|
-
*/
|
|
183
|
-
getTraitLocation(node) {
|
|
184
|
-
const parentData = this.forest.getParent(node);
|
|
185
|
-
Common_1.assert(parentData !== undefined, 'node must have parent');
|
|
186
|
-
return {
|
|
187
|
-
parent: parentData.parentId,
|
|
188
|
-
label: parentData.traitParent,
|
|
189
|
-
};
|
|
190
|
-
}
|
|
191
|
-
/**
|
|
192
|
-
* @param node - must have a parent.
|
|
193
|
-
* Performance note: this is O(siblings in trait).
|
|
194
|
-
*/
|
|
195
|
-
getIndexInTrait(node) {
|
|
196
|
-
var _a;
|
|
197
|
-
if (this.traitIndicesCache === undefined) {
|
|
198
|
-
this.traitIndicesCache = new Map();
|
|
199
|
-
}
|
|
200
|
-
else {
|
|
201
|
-
const cached = this.traitIndicesCache.get(node);
|
|
202
|
-
if (cached !== undefined) {
|
|
203
|
-
return cached;
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
const parentData = this.forest.getParent(node);
|
|
207
|
-
const parent = this.forest.get(parentData.parentId);
|
|
208
|
-
const traitParent = (_a = parent.traits.get(parentData.traitParent)) !== null && _a !== void 0 ? _a : Common_1.fail('invalid parentData: trait parent not found.');
|
|
209
|
-
let foundIndex = -1;
|
|
210
|
-
for (let i = 0; i < traitParent.length; i++) {
|
|
211
|
-
const nodeInTrait = traitParent[i];
|
|
212
|
-
const index = i;
|
|
213
|
-
this.traitIndicesCache.set(nodeInTrait, index);
|
|
214
|
-
if (nodeInTrait === node) {
|
|
215
|
-
foundIndex = index;
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
return foundIndex !== -1 ? foundIndex : Common_1.fail('invalidParentData: node not found in specified trait');
|
|
219
|
-
}
|
|
220
|
-
/**
|
|
221
|
-
* Return a trait given its location
|
|
222
|
-
* @param traitLocation - the location of the trait
|
|
223
|
-
*/
|
|
224
|
-
getTrait(traitLocation) {
|
|
225
|
-
var _a;
|
|
226
|
-
return (_a = this.getSnapshotNode(traitLocation.parent).traits.get(traitLocation.label)) !== null && _a !== void 0 ? _a : [];
|
|
227
|
-
}
|
|
228
|
-
getIndexOfSide(side, traitLocation) {
|
|
229
|
-
return side === Side.After ? 0 : this.getTrait(traitLocation).length;
|
|
230
|
-
}
|
|
231
|
-
/** Compares this snapshot to another for equality. */
|
|
232
|
-
equals(snapshot) {
|
|
233
|
-
if (this.root !== snapshot.root) {
|
|
234
|
-
return false;
|
|
235
|
-
}
|
|
236
|
-
// TODO:#49100:Perf: make this faster and/or remove use by PrefetchingCheckout.
|
|
237
|
-
return this.forest.equals(snapshot.forest);
|
|
238
|
-
}
|
|
239
|
-
*iterateNodeDescendants(nodeId) {
|
|
240
|
-
const node = this.getSnapshotNode(nodeId);
|
|
241
|
-
yield node;
|
|
242
|
-
for (const trait of node.traits.values()) {
|
|
243
|
-
for (const childId of trait) {
|
|
244
|
-
yield* this.iterateNodeDescendants(childId);
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
/**
|
|
249
|
-
* Calculate the difference between two `Snapshot`s
|
|
250
|
-
* @param snapshot - the other snapshot to compare to this one
|
|
251
|
-
* @returns A {@link Delta} which nodes must be changed, added, and removed to get from `this` to `snapshot`.
|
|
252
|
-
* The snapshots must share a root.
|
|
253
|
-
*/
|
|
254
|
-
delta(snapshot) {
|
|
255
|
-
Common_1.assert(this.root === snapshot.root, 'Delta can only be calculated between snapshots that share a root');
|
|
256
|
-
return this.forest.delta(snapshot.forest);
|
|
257
|
-
}
|
|
258
|
-
[Symbol.iterator]() {
|
|
259
|
-
return this.iterateNodeDescendants(this.root);
|
|
260
|
-
}
|
|
261
|
-
}
|
|
262
|
-
exports.Snapshot = Snapshot;
|
|
263
|
-
function getIndex(side, index) {
|
|
264
|
-
// eslint-disable-next-line @typescript-eslint/restrict-plus-operands
|
|
265
|
-
return (side + index);
|
|
266
|
-
}
|
|
267
|
-
//# sourceMappingURL=Snapshot.js.map
|
package/dist/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"}
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/*!
|
|
3
|
-
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
4
|
-
* Licensed under the MIT License.
|
|
5
|
-
*/
|
|
6
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.compareStrings = exports.compareFiniteNumbers = exports.getChangeNodeFromSnapshot = void 0;
|
|
8
|
-
const Common_1 = require("./Common");
|
|
9
|
-
/**
|
|
10
|
-
* Converts a node in a snapshot to an equivalent `ChangeNode`.
|
|
11
|
-
* @param snapshot - the snapshot in which the node exists
|
|
12
|
-
* @param nodeId - the id of the node in the snapshot
|
|
13
|
-
* @param lazyTraits - whether or not traits should be populated lazily.
|
|
14
|
-
* If lazy, the subtrees under each trait will not be read until the trait is first accessed.
|
|
15
|
-
*/
|
|
16
|
-
function getChangeNodeFromSnapshot(snapshot, nodeId, lazyTraits = false) {
|
|
17
|
-
const node = snapshot.getSnapshotNode(nodeId);
|
|
18
|
-
const nodeData = {
|
|
19
|
-
definition: node.definition,
|
|
20
|
-
identifier: node.identifier,
|
|
21
|
-
};
|
|
22
|
-
Common_1.copyPropertyIfDefined(node, nodeData, 'payload');
|
|
23
|
-
if (lazyTraits) {
|
|
24
|
-
return Object.assign(Object.assign({}, nodeData), { get traits() {
|
|
25
|
-
return Common_1.memoizeGetter(this, 'traits', makeTraits(snapshot, node.traits, lazyTraits));
|
|
26
|
-
} });
|
|
27
|
-
}
|
|
28
|
-
return Object.assign(Object.assign({}, nodeData), { traits: makeTraits(snapshot, node.traits, lazyTraits) });
|
|
29
|
-
}
|
|
30
|
-
exports.getChangeNodeFromSnapshot = getChangeNodeFromSnapshot;
|
|
31
|
-
/** Given the traits of a SnapshotNode, return the corresponding traits on a Node */
|
|
32
|
-
function makeTraits(snapshot, traits, lazyTraits = false) {
|
|
33
|
-
const traitMap = {};
|
|
34
|
-
for (const [label, trait] of traits.entries()) {
|
|
35
|
-
if (lazyTraits) {
|
|
36
|
-
Object.defineProperty(traitMap, label, {
|
|
37
|
-
get() {
|
|
38
|
-
const treeNodeTrait = trait.map((nodeId) => getChangeNodeFromSnapshot(snapshot, nodeId, lazyTraits));
|
|
39
|
-
return Common_1.memoizeGetter(this, label, treeNodeTrait);
|
|
40
|
-
},
|
|
41
|
-
configurable: true,
|
|
42
|
-
enumerable: true,
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
else {
|
|
46
|
-
Object.defineProperty(traitMap, label, {
|
|
47
|
-
value: trait.map((nodeId) => getChangeNodeFromSnapshot(snapshot, nodeId, lazyTraits)),
|
|
48
|
-
enumerable: true,
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
return traitMap;
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Compares finite numbers to form a strict partial ordering.
|
|
56
|
-
*
|
|
57
|
-
* Handles +/-0 like Map: -0 is equal to +0.
|
|
58
|
-
*
|
|
59
|
-
* Once https://github.com/qwertie/btree-typescript/pull/15 is merged, we can use the version of this function from it.
|
|
60
|
-
*/
|
|
61
|
-
function compareFiniteNumbers(a, b) {
|
|
62
|
-
return a - b;
|
|
63
|
-
}
|
|
64
|
-
exports.compareFiniteNumbers = compareFiniteNumbers;
|
|
65
|
-
/**
|
|
66
|
-
* Compares strings lexically to form a strict partial ordering.
|
|
67
|
-
* Once https://github.com/qwertie/btree-typescript/pull/15 is merged, we can use the version of this function from it.
|
|
68
|
-
*/
|
|
69
|
-
function compareStrings(a, b) {
|
|
70
|
-
return a > b ? 1 : a === b ? 0 : -1;
|
|
71
|
-
}
|
|
72
|
-
exports.compareStrings = compareStrings;
|
|
73
|
-
//# sourceMappingURL=SnapshotUtilities.js.map
|