@fluid-experimental/tree 0.58.2002 → 0.59.1000
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +159 -46
- package/dist/ChangeCompression.d.ts +39 -0
- package/dist/ChangeCompression.d.ts.map +1 -0
- package/dist/ChangeCompression.js +117 -0
- package/dist/ChangeCompression.js.map +1 -0
- package/{lib/default-edits/PersistedTypes.d.ts → dist/ChangeTypes.d.ts} +58 -105
- package/dist/ChangeTypes.d.ts.map +1 -0
- package/dist/{default-edits/PersistedTypes.js → ChangeTypes.js} +21 -76
- package/dist/ChangeTypes.js.map +1 -0
- package/dist/Checkout.d.ts +39 -27
- package/dist/Checkout.d.ts.map +1 -1
- package/dist/Checkout.js +61 -32
- package/dist/Checkout.js.map +1 -1
- package/dist/Common.d.ts +175 -38
- package/dist/Common.d.ts.map +1 -1
- package/dist/Common.js +240 -103
- package/dist/Common.js.map +1 -1
- package/dist/EagerCheckout.d.ts +24 -0
- package/dist/EagerCheckout.d.ts.map +1 -0
- package/dist/{BasicCheckout.js → EagerCheckout.js} +9 -6
- package/dist/EagerCheckout.js.map +1 -0
- package/dist/EditLog.d.ts +77 -63
- package/dist/EditLog.d.ts.map +1 -1
- package/dist/EditLog.js +85 -48
- package/dist/EditLog.js.map +1 -1
- package/dist/EditUtilities.d.ts +168 -0
- package/dist/EditUtilities.d.ts.map +1 -0
- package/dist/EditUtilities.js +373 -0
- package/dist/EditUtilities.js.map +1 -0
- package/dist/EventTypes.d.ts +73 -0
- package/dist/EventTypes.d.ts.map +1 -0
- package/dist/EventTypes.js +78 -0
- package/dist/EventTypes.js.map +1 -0
- package/dist/Forest.d.ts +29 -7
- package/dist/Forest.d.ts.map +1 -1
- package/dist/Forest.js +60 -36
- package/dist/Forest.js.map +1 -1
- package/dist/HistoryEditFactory.d.ts +20 -0
- package/dist/HistoryEditFactory.d.ts.map +1 -0
- package/dist/HistoryEditFactory.js +226 -0
- package/dist/HistoryEditFactory.js.map +1 -0
- package/dist/IdConversion.d.ts +12 -0
- package/dist/IdConversion.d.ts.map +1 -0
- package/dist/IdConversion.js +98 -0
- package/dist/IdConversion.js.map +1 -0
- package/dist/Identifiers.d.ts +89 -2
- package/dist/Identifiers.d.ts.map +1 -1
- package/dist/Identifiers.js +10 -0
- package/dist/Identifiers.js.map +1 -1
- package/dist/InitialTree.d.ts +2 -2
- package/dist/InitialTree.d.ts.map +1 -1
- package/dist/InitialTree.js +2 -1
- package/dist/InitialTree.js.map +1 -1
- package/dist/LazyCheckout.d.ts +28 -0
- package/dist/LazyCheckout.d.ts.map +1 -0
- package/dist/LazyCheckout.js +44 -0
- package/dist/LazyCheckout.js.map +1 -0
- package/dist/LogViewer.d.ts +129 -85
- package/dist/LogViewer.d.ts.map +1 -1
- package/dist/LogViewer.js +111 -85
- package/dist/LogViewer.js.map +1 -1
- package/dist/MergeHealth.d.ts +221 -0
- package/dist/MergeHealth.d.ts.map +1 -0
- package/dist/MergeHealth.js +263 -0
- package/dist/MergeHealth.js.map +1 -0
- package/dist/NodeIdUtilities.d.ts +105 -0
- package/dist/NodeIdUtilities.d.ts.map +1 -0
- package/dist/NodeIdUtilities.js +60 -0
- package/dist/NodeIdUtilities.js.map +1 -0
- package/dist/PayloadUtilities.d.ts +42 -0
- package/dist/PayloadUtilities.d.ts.map +1 -0
- package/dist/PayloadUtilities.js +114 -0
- package/dist/PayloadUtilities.js.map +1 -0
- package/dist/ReconciliationPath.d.ts +18 -13
- package/dist/ReconciliationPath.d.ts.map +1 -1
- package/dist/ReconciliationPath.js.map +1 -1
- package/dist/RevisionValueCache.d.ts +11 -2
- package/dist/RevisionValueCache.d.ts.map +1 -1
- package/dist/RevisionValueCache.js +2 -3
- package/dist/RevisionValueCache.js.map +1 -1
- package/dist/RevisionView.d.ts +83 -0
- package/dist/RevisionView.d.ts.map +1 -0
- package/dist/RevisionView.js +182 -0
- package/dist/RevisionView.js.map +1 -0
- package/dist/SerializationUtilities.d.ts +36 -0
- package/dist/SerializationUtilities.d.ts.map +1 -0
- package/dist/SerializationUtilities.js +102 -0
- package/dist/SerializationUtilities.js.map +1 -0
- package/dist/SharedTree.d.ts +439 -0
- package/dist/SharedTree.d.ts.map +1 -0
- package/dist/SharedTree.js +1109 -0
- package/dist/SharedTree.js.map +1 -0
- package/dist/SharedTreeEncoder.d.ts +102 -0
- package/dist/SharedTreeEncoder.d.ts.map +1 -0
- package/dist/SharedTreeEncoder.js +313 -0
- package/dist/SharedTreeEncoder.js.map +1 -0
- package/dist/StringInterner.d.ts +46 -0
- package/dist/StringInterner.d.ts.map +1 -0
- package/dist/StringInterner.js +61 -0
- package/dist/StringInterner.js.map +1 -0
- package/dist/Summary.d.ts +40 -0
- package/dist/Summary.d.ts.map +1 -0
- package/dist/Summary.js +23 -0
- package/dist/Summary.js.map +1 -0
- package/dist/SummaryBackCompatibility.d.ts +22 -22
- package/dist/SummaryBackCompatibility.d.ts.map +1 -1
- package/dist/SummaryBackCompatibility.js +30 -33
- package/dist/SummaryBackCompatibility.js.map +1 -1
- package/dist/SummaryTestUtilities.d.ts +31 -0
- package/dist/SummaryTestUtilities.d.ts.map +1 -0
- package/dist/SummaryTestUtilities.js +37 -0
- package/dist/SummaryTestUtilities.js.map +1 -0
- package/dist/Transaction.d.ts +52 -0
- package/dist/Transaction.d.ts.map +1 -0
- package/dist/Transaction.js +72 -0
- package/dist/Transaction.js.map +1 -0
- package/dist/TransactionInternal.d.ts +540 -0
- package/dist/TransactionInternal.d.ts.map +1 -0
- package/dist/TransactionInternal.js +626 -0
- package/dist/TransactionInternal.js.map +1 -0
- package/dist/TreeCompressor.d.ts +36 -0
- package/dist/TreeCompressor.d.ts.map +1 -0
- package/dist/TreeCompressor.js +137 -0
- package/dist/TreeCompressor.js.map +1 -0
- package/dist/TreeNodeHandle.d.ts +12 -18
- package/dist/TreeNodeHandle.d.ts.map +1 -1
- package/dist/TreeNodeHandle.js +13 -23
- package/dist/TreeNodeHandle.js.map +1 -1
- package/dist/TreeView.d.ts +166 -0
- package/dist/TreeView.d.ts.map +1 -0
- package/dist/TreeView.js +218 -0
- package/dist/TreeView.js.map +1 -0
- package/dist/TreeViewUtilities.d.ts +21 -0
- package/dist/TreeViewUtilities.d.ts.map +1 -0
- package/dist/TreeViewUtilities.js +77 -0
- package/dist/TreeViewUtilities.js.map +1 -0
- package/dist/{default-edits/UndoRedoHandler.d.ts → UndoRedoHandler.d.ts} +2 -2
- package/dist/UndoRedoHandler.d.ts.map +1 -0
- package/dist/{default-edits/UndoRedoHandler.js → UndoRedoHandler.js} +5 -9
- package/dist/UndoRedoHandler.js.map +1 -0
- package/dist/id-compressor/AppendOnlySortedMap.d.ts +127 -0
- package/dist/id-compressor/AppendOnlySortedMap.d.ts.map +1 -0
- package/dist/id-compressor/AppendOnlySortedMap.js +283 -0
- package/dist/id-compressor/AppendOnlySortedMap.js.map +1 -0
- package/dist/id-compressor/IdCompressor.d.ts +389 -0
- package/dist/id-compressor/IdCompressor.d.ts.map +1 -0
- package/dist/id-compressor/IdCompressor.js +1353 -0
- package/dist/id-compressor/IdCompressor.js.map +1 -0
- package/dist/id-compressor/IdRange.d.ts +11 -0
- package/dist/id-compressor/IdRange.d.ts.map +1 -0
- package/dist/id-compressor/IdRange.js +29 -0
- package/dist/id-compressor/IdRange.js.map +1 -0
- package/dist/id-compressor/NumericUuid.d.ts +63 -0
- package/dist/id-compressor/NumericUuid.d.ts.map +1 -0
- package/dist/id-compressor/NumericUuid.js +377 -0
- package/dist/id-compressor/NumericUuid.js.map +1 -0
- package/dist/id-compressor/index.d.ts +12 -0
- package/dist/id-compressor/index.d.ts.map +1 -0
- package/dist/id-compressor/index.js +26 -0
- package/dist/id-compressor/index.js.map +1 -0
- package/dist/id-compressor/persisted-types/0.0.1.d.ts +156 -0
- package/dist/id-compressor/persisted-types/0.0.1.d.ts.map +1 -0
- package/dist/id-compressor/persisted-types/0.0.1.js +7 -0
- package/dist/id-compressor/persisted-types/0.0.1.js.map +1 -0
- package/dist/id-compressor/persisted-types/index.d.ts +6 -0
- package/dist/id-compressor/persisted-types/index.d.ts.map +1 -0
- package/dist/id-compressor/persisted-types/index.js +18 -0
- package/dist/id-compressor/persisted-types/index.js.map +1 -0
- package/dist/index.d.ts +29 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +50 -35
- package/dist/index.js.map +1 -1
- package/dist/persisted-types/0.0.2.d.ts +385 -0
- package/dist/persisted-types/0.0.2.d.ts.map +1 -0
- package/dist/persisted-types/0.0.2.js +113 -0
- package/dist/persisted-types/0.0.2.js.map +1 -0
- package/dist/persisted-types/0.1.1.d.ts +314 -0
- package/dist/persisted-types/0.1.1.d.ts.map +1 -0
- package/dist/persisted-types/0.1.1.js +153 -0
- package/dist/persisted-types/0.1.1.js.map +1 -0
- package/dist/persisted-types/index.d.ts +7 -0
- package/dist/persisted-types/index.d.ts.map +1 -0
- package/dist/persisted-types/index.js +20 -0
- package/dist/persisted-types/index.js.map +1 -0
- package/docs/0-1-1-Compression.md +228 -0
- package/docs/Breaking-Change-Migration.md +52 -0
- package/docs/Compression.md +2 -2
- package/docs/Telemetry.md +43 -0
- package/docs/Write-Format.md +19 -0
- package/lib/ChangeCompression.d.ts +39 -0
- package/lib/ChangeCompression.d.ts.map +1 -0
- package/lib/ChangeCompression.js +111 -0
- package/lib/ChangeCompression.js.map +1 -0
- package/{dist/default-edits/PersistedTypes.d.ts → lib/ChangeTypes.d.ts} +58 -105
- package/lib/ChangeTypes.d.ts.map +1 -0
- package/lib/{default-edits/PersistedTypes.js → ChangeTypes.js} +15 -68
- package/lib/ChangeTypes.js.map +1 -0
- package/lib/Checkout.d.ts +39 -27
- package/lib/Checkout.d.ts.map +1 -1
- package/lib/Checkout.js +53 -24
- package/lib/Checkout.js.map +1 -1
- package/lib/Common.d.ts +175 -38
- package/lib/Common.d.ts.map +1 -1
- package/lib/Common.js +226 -101
- package/lib/Common.js.map +1 -1
- package/lib/EagerCheckout.d.ts +24 -0
- package/lib/EagerCheckout.d.ts.map +1 -0
- package/lib/{BasicCheckout.js → EagerCheckout.js} +7 -4
- package/lib/EagerCheckout.js.map +1 -0
- package/lib/EditLog.d.ts +77 -63
- package/lib/EditLog.d.ts.map +1 -1
- package/lib/EditLog.js +83 -47
- package/lib/EditLog.js.map +1 -1
- package/lib/EditUtilities.d.ts +168 -0
- package/lib/EditUtilities.d.ts.map +1 -0
- package/lib/EditUtilities.js +353 -0
- package/lib/EditUtilities.js.map +1 -0
- package/lib/EventTypes.d.ts +73 -0
- package/lib/EventTypes.d.ts.map +1 -0
- package/lib/EventTypes.js +75 -0
- package/lib/EventTypes.js.map +1 -0
- package/lib/Forest.d.ts +29 -7
- package/lib/Forest.d.ts.map +1 -1
- package/lib/Forest.js +58 -35
- package/lib/Forest.js.map +1 -1
- package/lib/HistoryEditFactory.d.ts +20 -0
- package/lib/HistoryEditFactory.d.ts.map +1 -0
- package/lib/{default-edits/HistoryEditFactory.js → HistoryEditFactory.js} +78 -39
- package/lib/HistoryEditFactory.js.map +1 -0
- package/lib/IdConversion.d.ts +12 -0
- package/lib/IdConversion.d.ts.map +1 -0
- package/lib/IdConversion.js +91 -0
- package/lib/IdConversion.js.map +1 -0
- package/lib/Identifiers.d.ts +89 -2
- package/lib/Identifiers.d.ts.map +1 -1
- package/lib/Identifiers.js +8 -1
- package/lib/Identifiers.js.map +1 -1
- package/lib/InitialTree.d.ts +2 -2
- package/lib/InitialTree.d.ts.map +1 -1
- package/lib/InitialTree.js +2 -1
- package/lib/InitialTree.js.map +1 -1
- package/lib/LazyCheckout.d.ts +28 -0
- package/lib/LazyCheckout.d.ts.map +1 -0
- package/lib/LazyCheckout.js +40 -0
- package/lib/LazyCheckout.js.map +1 -0
- package/lib/LogViewer.d.ts +129 -85
- package/lib/LogViewer.d.ts.map +1 -1
- package/lib/LogViewer.js +103 -77
- package/lib/LogViewer.js.map +1 -1
- package/lib/MergeHealth.d.ts +221 -0
- package/lib/MergeHealth.d.ts.map +1 -0
- package/lib/MergeHealth.js +258 -0
- package/lib/MergeHealth.js.map +1 -0
- package/lib/NodeIdUtilities.d.ts +105 -0
- package/lib/NodeIdUtilities.d.ts.map +1 -0
- package/lib/NodeIdUtilities.js +53 -0
- package/lib/NodeIdUtilities.js.map +1 -0
- package/lib/PayloadUtilities.d.ts +42 -0
- package/lib/PayloadUtilities.d.ts.map +1 -0
- package/lib/PayloadUtilities.js +110 -0
- package/lib/PayloadUtilities.js.map +1 -0
- package/lib/ReconciliationPath.d.ts +18 -13
- package/lib/ReconciliationPath.d.ts.map +1 -1
- package/lib/ReconciliationPath.js.map +1 -1
- package/lib/RevisionValueCache.d.ts +11 -2
- package/lib/RevisionValueCache.d.ts.map +1 -1
- package/lib/RevisionValueCache.js +2 -3
- package/lib/RevisionValueCache.js.map +1 -1
- package/lib/RevisionView.d.ts +83 -0
- package/lib/RevisionView.d.ts.map +1 -0
- package/lib/RevisionView.js +175 -0
- package/lib/RevisionView.js.map +1 -0
- package/lib/SerializationUtilities.d.ts +36 -0
- package/lib/SerializationUtilities.d.ts.map +1 -0
- package/lib/SerializationUtilities.js +95 -0
- package/lib/SerializationUtilities.js.map +1 -0
- package/lib/SharedTree.d.ts +439 -0
- package/lib/SharedTree.d.ts.map +1 -0
- package/lib/SharedTree.js +1104 -0
- package/lib/SharedTree.js.map +1 -0
- package/lib/SharedTreeEncoder.d.ts +102 -0
- package/lib/SharedTreeEncoder.d.ts.map +1 -0
- package/lib/SharedTreeEncoder.js +308 -0
- package/lib/SharedTreeEncoder.js.map +1 -0
- package/lib/StringInterner.d.ts +46 -0
- package/lib/StringInterner.d.ts.map +1 -0
- package/lib/StringInterner.js +57 -0
- package/lib/StringInterner.js.map +1 -0
- package/lib/Summary.d.ts +40 -0
- package/lib/Summary.d.ts.map +1 -0
- package/lib/Summary.js +19 -0
- package/lib/Summary.js.map +1 -0
- package/lib/SummaryBackCompatibility.d.ts +22 -22
- package/lib/SummaryBackCompatibility.d.ts.map +1 -1
- package/lib/SummaryBackCompatibility.js +29 -32
- package/lib/SummaryBackCompatibility.js.map +1 -1
- package/lib/SummaryTestUtilities.d.ts +31 -0
- package/lib/SummaryTestUtilities.d.ts.map +1 -0
- package/lib/SummaryTestUtilities.js +32 -0
- package/lib/SummaryTestUtilities.js.map +1 -0
- package/lib/Transaction.d.ts +52 -0
- package/lib/Transaction.d.ts.map +1 -0
- package/lib/Transaction.js +68 -0
- package/lib/Transaction.js.map +1 -0
- package/lib/TransactionInternal.d.ts +540 -0
- package/lib/TransactionInternal.d.ts.map +1 -0
- package/lib/TransactionInternal.js +622 -0
- package/lib/TransactionInternal.js.map +1 -0
- package/lib/TreeCompressor.d.ts +36 -0
- package/lib/TreeCompressor.d.ts.map +1 -0
- package/lib/TreeCompressor.js +133 -0
- package/lib/TreeCompressor.js.map +1 -0
- package/lib/TreeNodeHandle.d.ts +12 -18
- package/lib/TreeNodeHandle.d.ts.map +1 -1
- package/lib/TreeNodeHandle.js +14 -24
- package/lib/TreeNodeHandle.js.map +1 -1
- package/lib/TreeView.d.ts +166 -0
- package/lib/TreeView.d.ts.map +1 -0
- package/lib/TreeView.js +214 -0
- package/lib/TreeView.js.map +1 -0
- package/lib/TreeViewUtilities.d.ts +21 -0
- package/lib/TreeViewUtilities.d.ts.map +1 -0
- package/lib/TreeViewUtilities.js +71 -0
- package/lib/TreeViewUtilities.js.map +1 -0
- package/lib/{default-edits/UndoRedoHandler.d.ts → UndoRedoHandler.d.ts} +2 -2
- package/lib/UndoRedoHandler.d.ts.map +1 -0
- package/lib/{default-edits/UndoRedoHandler.js → UndoRedoHandler.js} +3 -7
- package/lib/UndoRedoHandler.js.map +1 -0
- package/lib/id-compressor/AppendOnlySortedMap.d.ts +127 -0
- package/lib/id-compressor/AppendOnlySortedMap.d.ts.map +1 -0
- package/lib/id-compressor/AppendOnlySortedMap.js +278 -0
- package/lib/id-compressor/AppendOnlySortedMap.js.map +1 -0
- package/lib/id-compressor/IdCompressor.d.ts +389 -0
- package/lib/id-compressor/IdCompressor.d.ts.map +1 -0
- package/lib/id-compressor/IdCompressor.js +1343 -0
- package/lib/id-compressor/IdCompressor.js.map +1 -0
- package/lib/id-compressor/IdRange.d.ts +11 -0
- package/lib/id-compressor/IdRange.d.ts.map +1 -0
- package/lib/id-compressor/IdRange.js +25 -0
- package/lib/id-compressor/IdRange.js.map +1 -0
- package/lib/id-compressor/NumericUuid.d.ts +63 -0
- package/lib/id-compressor/NumericUuid.d.ts.map +1 -0
- package/lib/id-compressor/NumericUuid.js +365 -0
- package/lib/id-compressor/NumericUuid.js.map +1 -0
- package/lib/id-compressor/index.d.ts +12 -0
- package/lib/id-compressor/index.d.ts.map +1 -0
- package/lib/id-compressor/index.js +12 -0
- package/lib/id-compressor/index.js.map +1 -0
- package/lib/id-compressor/persisted-types/0.0.1.d.ts +156 -0
- package/lib/id-compressor/persisted-types/0.0.1.d.ts.map +1 -0
- package/lib/{test/Snapshot.tests.d.ts → id-compressor/persisted-types/0.0.1.js} +1 -1
- package/lib/id-compressor/persisted-types/0.0.1.js.map +1 -0
- package/lib/id-compressor/persisted-types/index.d.ts +6 -0
- package/lib/id-compressor/persisted-types/index.d.ts.map +1 -0
- package/lib/id-compressor/persisted-types/index.js +6 -0
- package/lib/id-compressor/persisted-types/index.js.map +1 -0
- package/lib/index.d.ts +29 -9
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +23 -6
- package/lib/index.js.map +1 -1
- package/lib/persisted-types/0.0.2.d.ts +385 -0
- package/lib/persisted-types/0.0.2.d.ts.map +1 -0
- package/lib/persisted-types/0.0.2.js +110 -0
- package/lib/persisted-types/0.0.2.js.map +1 -0
- package/lib/persisted-types/0.1.1.d.ts +314 -0
- package/lib/persisted-types/0.1.1.d.ts.map +1 -0
- package/lib/persisted-types/0.1.1.js +150 -0
- package/lib/persisted-types/0.1.1.js.map +1 -0
- package/lib/persisted-types/index.d.ts +7 -0
- package/lib/persisted-types/index.d.ts.map +1 -0
- package/lib/persisted-types/index.js +8 -0
- package/lib/persisted-types/index.js.map +1 -0
- package/lib/test/AppendOnlySortedMap.tests.d.ts +6 -0
- package/lib/test/AppendOnlySortedMap.tests.d.ts.map +1 -0
- package/lib/test/AppendOnlySortedMap.tests.js +169 -0
- package/lib/test/AppendOnlySortedMap.tests.js.map +1 -0
- package/lib/test/{SnapshotUtilities.tests.d.ts → ChangeCompression.tests.d.ts} +1 -1
- package/lib/test/ChangeCompression.tests.d.ts.map +1 -0
- package/lib/test/ChangeCompression.tests.js +145 -0
- package/lib/test/ChangeCompression.tests.js.map +1 -0
- package/lib/test/Checkout.tests.d.ts +2 -3
- package/lib/test/Checkout.tests.d.ts.map +1 -1
- package/lib/test/Checkout.tests.js +126 -69
- package/lib/test/Checkout.tests.js.map +1 -1
- package/lib/test/Common.tests.js +60 -2
- package/lib/test/Common.tests.js.map +1 -1
- package/lib/test/{BasicCheckout.tests.d.ts → EagerCheckout.tests.d.ts} +1 -1
- package/lib/test/EagerCheckout.tests.d.ts.map +1 -0
- package/lib/test/EagerCheckout.tests.js +20 -0
- package/lib/test/EagerCheckout.tests.js.map +1 -0
- package/lib/test/Edit.tests.js +22 -14
- package/lib/test/Edit.tests.js.map +1 -1
- package/lib/test/{Anchors.glassBox.tests.d.ts → EditLog.perf.tests.d.ts} +1 -1
- package/lib/test/EditLog.perf.tests.d.ts.map +1 -0
- package/lib/test/EditLog.perf.tests.js +30 -0
- package/lib/test/EditLog.perf.tests.js.map +1 -0
- package/lib/test/EditLog.tests.js +10 -6
- package/lib/test/EditLog.tests.js.map +1 -1
- package/lib/test/EditUtilities.tests.d.ts +6 -0
- package/lib/test/EditUtilities.tests.d.ts.map +1 -0
- package/lib/test/EditUtilities.tests.js +503 -0
- package/lib/test/EditUtilities.tests.js.map +1 -0
- package/lib/test/Forest.perf.tests.d.ts +6 -0
- package/lib/test/Forest.perf.tests.d.ts.map +1 -0
- package/lib/test/Forest.perf.tests.js +133 -0
- package/lib/test/Forest.perf.tests.js.map +1 -0
- package/lib/test/Forest.tests.js +54 -27
- package/lib/test/Forest.tests.js.map +1 -1
- package/lib/test/GenericTransaction.tests.js +12 -3
- package/lib/test/GenericTransaction.tests.js.map +1 -1
- package/lib/test/HistoryEditFactory.tests.d.ts +6 -0
- package/lib/test/HistoryEditFactory.tests.d.ts.map +1 -0
- package/lib/test/HistoryEditFactory.tests.js +90 -0
- package/lib/test/HistoryEditFactory.tests.js.map +1 -0
- package/lib/test/IdCompressor.perf.tests.d.ts +6 -0
- package/lib/test/IdCompressor.perf.tests.d.ts.map +1 -0
- package/lib/test/IdCompressor.perf.tests.js +304 -0
- package/lib/test/IdCompressor.perf.tests.js.map +1 -0
- package/lib/test/IdCompressor.tests.d.ts +6 -0
- package/lib/test/IdCompressor.tests.d.ts.map +1 -0
- package/lib/test/IdCompressor.tests.js +1075 -0
- package/lib/test/IdCompressor.tests.js.map +1 -0
- package/lib/test/IdConversion.tests.d.ts +6 -0
- package/lib/test/IdConversion.tests.d.ts.map +1 -0
- package/lib/test/IdConversion.tests.js +36 -0
- package/lib/test/IdConversion.tests.js.map +1 -0
- package/lib/test/LazyCheckout.tests.d.ts +6 -0
- package/lib/test/LazyCheckout.tests.d.ts.map +1 -0
- package/lib/test/LazyCheckout.tests.js +22 -0
- package/lib/test/LazyCheckout.tests.js.map +1 -0
- package/lib/test/LogViewer.tests.js +276 -191
- package/lib/test/LogViewer.tests.js.map +1 -1
- package/lib/test/{SharedTreeWithAnchors.tests.d.ts → MergeHealthTelemetryHeartbeat.tests.d.ts} +1 -1
- package/lib/test/MergeHealthTelemetryHeartbeat.tests.d.ts.map +1 -0
- package/lib/test/MergeHealthTelemetryHeartbeat.tests.js +342 -0
- package/lib/test/MergeHealthTelemetryHeartbeat.tests.js.map +1 -0
- package/lib/test/NumericUuid.perf.tests.d.ts +6 -0
- package/lib/test/NumericUuid.perf.tests.d.ts.map +1 -0
- package/lib/test/NumericUuid.perf.tests.js +68 -0
- package/lib/test/NumericUuid.perf.tests.js.map +1 -0
- package/lib/test/NumericUuid.tests.d.ts +6 -0
- package/lib/test/NumericUuid.tests.d.ts.map +1 -0
- package/lib/test/NumericUuid.tests.js +191 -0
- package/lib/test/NumericUuid.tests.js.map +1 -0
- package/lib/test/RevisionView.tests.d.ts +6 -0
- package/lib/test/RevisionView.tests.d.ts.map +1 -0
- package/lib/test/RevisionView.tests.js +133 -0
- package/lib/test/RevisionView.tests.js.map +1 -0
- package/lib/test/SharedTree.perf.tests.d.ts +6 -0
- package/lib/test/SharedTree.perf.tests.d.ts.map +1 -0
- package/lib/test/SharedTree.perf.tests.js +39 -0
- package/lib/test/SharedTree.perf.tests.js.map +1 -0
- package/lib/test/SharedTree.tests.js +15 -3
- package/lib/test/SharedTree.tests.js.map +1 -1
- package/lib/test/StringInterner.tests.d.ts +6 -0
- package/lib/test/StringInterner.tests.d.ts.map +1 -0
- package/lib/test/StringInterner.tests.js +71 -0
- package/lib/test/StringInterner.tests.js.map +1 -0
- package/lib/test/Summary.tests.d.ts +8 -0
- package/lib/test/Summary.tests.d.ts.map +1 -0
- package/lib/test/Summary.tests.js +407 -0
- package/lib/test/Summary.tests.js.map +1 -0
- package/lib/test/Transaction.tests.js +76 -330
- package/lib/test/Transaction.tests.js.map +1 -1
- package/lib/test/TransactionInternal.tests.d.ts +6 -0
- package/lib/test/TransactionInternal.tests.d.ts.map +1 -0
- package/lib/test/TransactionInternal.tests.js +568 -0
- package/lib/test/TransactionInternal.tests.js.map +1 -0
- package/lib/test/TreeCompression.tests.d.ts +6 -0
- package/lib/test/TreeCompression.tests.d.ts.map +1 -0
- package/lib/test/TreeCompression.tests.js +292 -0
- package/lib/test/TreeCompression.tests.js.map +1 -0
- package/lib/test/TreeView.tests.d.ts +6 -0
- package/lib/test/TreeView.tests.d.ts.map +1 -0
- package/lib/test/TreeView.tests.js +176 -0
- package/lib/test/TreeView.tests.js.map +1 -0
- package/lib/test/UndoRedoHandler.tests.js +2 -2
- package/lib/test/UndoRedoHandler.tests.js.map +1 -1
- package/lib/test/Virtualization.tests.js +146 -62
- package/lib/test/Virtualization.tests.js.map +1 -1
- package/lib/test/fuzz/Generators.d.ts +19 -0
- package/lib/test/fuzz/Generators.d.ts.map +1 -0
- package/lib/test/fuzz/Generators.js +420 -0
- package/lib/test/fuzz/Generators.js.map +1 -0
- package/lib/test/fuzz/SharedTreeFuzzTests.d.ts +20 -0
- package/lib/test/fuzz/SharedTreeFuzzTests.d.ts.map +1 -0
- package/lib/test/fuzz/SharedTreeFuzzTests.js +217 -0
- package/lib/test/fuzz/SharedTreeFuzzTests.js.map +1 -0
- package/lib/test/fuzz/Types.d.ts +133 -0
- package/lib/test/fuzz/Types.d.ts.map +1 -0
- package/lib/test/{GenericTransactionWithAnchors.tests.d.ts → fuzz/Types.js} +2 -2
- package/lib/test/fuzz/Types.js.map +1 -0
- package/lib/test/utilities/IdCompressorTestUtilities.d.ts +180 -0
- package/lib/test/utilities/IdCompressorTestUtilities.d.ts.map +1 -0
- package/lib/test/utilities/IdCompressorTestUtilities.js +528 -0
- package/lib/test/utilities/IdCompressorTestUtilities.js.map +1 -0
- package/lib/test/utilities/MockTransaction.d.ts +26 -7
- package/lib/test/utilities/MockTransaction.d.ts.map +1 -1
- package/lib/test/utilities/MockTransaction.js +40 -11
- package/lib/test/utilities/MockTransaction.js.map +1 -1
- package/lib/test/utilities/PendingLocalStateTests.d.ts +12 -0
- package/lib/test/utilities/PendingLocalStateTests.d.ts.map +1 -0
- package/lib/test/utilities/PendingLocalStateTests.js +105 -0
- package/lib/test/utilities/PendingLocalStateTests.js.map +1 -0
- package/lib/test/utilities/SharedTreeTests.d.ts +3 -4
- package/lib/test/utilities/SharedTreeTests.d.ts.map +1 -1
- package/lib/test/utilities/SharedTreeTests.js +696 -439
- package/lib/test/utilities/SharedTreeTests.js.map +1 -1
- package/lib/test/utilities/SharedTreeVersioningTests.d.ts +11 -0
- package/lib/test/utilities/SharedTreeVersioningTests.d.ts.map +1 -0
- package/lib/test/utilities/SharedTreeVersioningTests.js +370 -0
- package/lib/test/utilities/SharedTreeVersioningTests.js.map +1 -0
- package/lib/test/utilities/SummaryLoadPerfTests.d.ts +10 -0
- package/lib/test/utilities/SummaryLoadPerfTests.d.ts.map +1 -0
- package/lib/test/utilities/SummaryLoadPerfTests.js +102 -0
- package/lib/test/utilities/SummaryLoadPerfTests.js.map +1 -0
- package/lib/test/utilities/SummarySizeTests.d.ts +11 -0
- package/lib/test/utilities/SummarySizeTests.d.ts.map +1 -0
- package/lib/test/utilities/SummarySizeTests.js +158 -0
- package/lib/test/utilities/SummarySizeTests.js.map +1 -0
- package/lib/test/utilities/TestCommon.d.ts +9 -0
- package/lib/test/utilities/TestCommon.d.ts.map +1 -0
- package/lib/test/utilities/TestCommon.js +13 -0
- package/lib/test/utilities/TestCommon.js.map +1 -0
- package/lib/test/utilities/TestNode.d.ts +140 -0
- package/lib/test/utilities/TestNode.d.ts.map +1 -0
- package/lib/test/utilities/TestNode.js +292 -0
- package/lib/test/utilities/TestNode.js.map +1 -0
- package/lib/test/utilities/TestUtilities.d.ts +84 -70
- package/lib/test/utilities/TestUtilities.d.ts.map +1 -1
- package/lib/test/utilities/TestUtilities.js +218 -143
- package/lib/test/utilities/TestUtilities.js.map +1 -1
- package/lib/test/utilities/UndoRedoTests.d.ts +4 -5
- package/lib/test/utilities/UndoRedoTests.d.ts.map +1 -1
- package/lib/test/utilities/UndoRedoTests.js +138 -149
- package/lib/test/utilities/UndoRedoTests.js.map +1 -1
- package/package.json +22 -17
- package/src/ChangeCompression.ts +159 -0
- package/src/{default-edits/PersistedTypes.ts → ChangeTypes.ts} +62 -125
- package/src/Checkout.ts +82 -53
- package/src/Common.ts +317 -117
- package/src/EagerCheckout.ts +38 -0
- package/src/EditLog.ts +153 -100
- package/src/EditUtilities.ts +559 -0
- package/src/EventTypes.ts +74 -0
- package/src/Forest.ts +81 -73
- package/src/{default-edits/HistoryEditFactory.ts → HistoryEditFactory.ts} +103 -53
- package/src/IdConversion.ts +125 -0
- package/src/Identifiers.ts +101 -1
- package/src/InitialTree.ts +5 -4
- package/src/LazyCheckout.ts +51 -0
- package/src/LogViewer.ts +242 -166
- package/src/MergeHealth.ts +447 -0
- package/src/NodeIdUtilities.ts +156 -0
- package/src/PayloadUtilities.ts +124 -0
- package/src/ReconciliationPath.ts +18 -13
- package/src/RevisionValueCache.ts +14 -5
- package/src/RevisionView.ts +252 -0
- package/src/SerializationUtilities.ts +130 -0
- package/src/SharedTree.ts +1501 -0
- package/src/SharedTreeEncoder.ts +493 -0
- package/src/StringInterner.ts +72 -0
- package/src/Summary.ts +48 -0
- package/src/SummaryBackCompatibility.ts +47 -57
- package/src/SummaryTestUtilities.ts +54 -0
- package/src/Transaction.ts +89 -0
- package/src/TransactionInternal.ts +1087 -0
- package/src/TreeCompressor.ts +213 -0
- package/src/TreeNodeHandle.ts +19 -32
- package/src/TreeView.ts +322 -0
- package/src/TreeViewUtilities.ts +77 -0
- package/src/{default-edits/UndoRedoHandler.ts → UndoRedoHandler.ts} +8 -13
- package/src/id-compressor/AppendOnlySortedMap.ts +325 -0
- package/src/id-compressor/IdCompressor.md +3 -0
- package/src/id-compressor/IdCompressor.ts +1848 -0
- package/src/id-compressor/IdRange.ts +33 -0
- package/src/id-compressor/NumericUuid.ts +414 -0
- package/src/id-compressor/index.ts +13 -0
- package/src/id-compressor/persisted-types/0.0.1.ts +179 -0
- package/src/id-compressor/persisted-types/README.md +3 -0
- package/src/id-compressor/persisted-types/index.ts +6 -0
- package/src/index.ts +118 -59
- package/src/persisted-types/0.0.2.ts +442 -0
- package/src/persisted-types/0.1.1.ts +476 -0
- package/src/persisted-types/README.md +22 -0
- package/src/persisted-types/index.ts +9 -0
- package/.mocharc.js +0 -41
- package/api/tree.api.md +0 -729
- package/dist/BasicCheckout.d.ts +0 -23
- package/dist/BasicCheckout.d.ts.map +0 -1
- package/dist/BasicCheckout.js.map +0 -1
- package/dist/Snapshot.d.ts +0 -198
- package/dist/Snapshot.d.ts.map +0 -1
- package/dist/Snapshot.js +0 -267
- package/dist/Snapshot.js.map +0 -1
- package/dist/SnapshotUtilities.d.ts +0 -29
- package/dist/SnapshotUtilities.d.ts.map +0 -1
- package/dist/SnapshotUtilities.js +0 -73
- package/dist/SnapshotUtilities.js.map +0 -1
- package/dist/anchored-edits/AnchorResolution.d.ts +0 -144
- package/dist/anchored-edits/AnchorResolution.d.ts.map +0 -1
- package/dist/anchored-edits/AnchorResolution.js +0 -162
- package/dist/anchored-edits/AnchorResolution.js.map +0 -1
- package/dist/anchored-edits/Factory.d.ts +0 -56
- package/dist/anchored-edits/Factory.d.ts.map +0 -1
- package/dist/anchored-edits/Factory.js +0 -79
- package/dist/anchored-edits/Factory.js.map +0 -1
- package/dist/anchored-edits/PersistedTypes.d.ts +0 -245
- package/dist/anchored-edits/PersistedTypes.d.ts.map +0 -1
- package/dist/anchored-edits/PersistedTypes.js +0 -131
- package/dist/anchored-edits/PersistedTypes.js.map +0 -1
- package/dist/anchored-edits/SharedTreeWithAnchors.d.ts +0 -120
- package/dist/anchored-edits/SharedTreeWithAnchors.d.ts.map +0 -1
- package/dist/anchored-edits/SharedTreeWithAnchors.js +0 -115
- package/dist/anchored-edits/SharedTreeWithAnchors.js.map +0 -1
- package/dist/anchored-edits/TransactionWithAnchors.d.ts +0 -28
- package/dist/anchored-edits/TransactionWithAnchors.d.ts.map +0 -1
- package/dist/anchored-edits/TransactionWithAnchors.js +0 -36
- package/dist/anchored-edits/TransactionWithAnchors.js.map +0 -1
- package/dist/anchored-edits/index.d.ts +0 -10
- package/dist/anchored-edits/index.d.ts.map +0 -1
- package/dist/anchored-edits/index.js +0 -34
- package/dist/anchored-edits/index.js.map +0 -1
- package/dist/default-edits/EditUtilities.d.ts +0 -57
- package/dist/default-edits/EditUtilities.d.ts.map +0 -1
- package/dist/default-edits/EditUtilities.js +0 -192
- package/dist/default-edits/EditUtilities.js.map +0 -1
- package/dist/default-edits/Factory.d.ts +0 -56
- package/dist/default-edits/Factory.d.ts.map +0 -1
- package/dist/default-edits/Factory.js +0 -79
- package/dist/default-edits/Factory.js.map +0 -1
- package/dist/default-edits/HistoryEditFactory.d.ts +0 -19
- package/dist/default-edits/HistoryEditFactory.d.ts.map +0 -1
- package/dist/default-edits/HistoryEditFactory.js +0 -187
- package/dist/default-edits/HistoryEditFactory.js.map +0 -1
- package/dist/default-edits/PersistedTypes.d.ts.map +0 -1
- package/dist/default-edits/PersistedTypes.js.map +0 -1
- package/dist/default-edits/SharedTree.d.ts +0 -111
- package/dist/default-edits/SharedTree.d.ts.map +0 -1
- package/dist/default-edits/SharedTree.js +0 -124
- package/dist/default-edits/SharedTree.js.map +0 -1
- package/dist/default-edits/Summary.d.ts +0 -15
- package/dist/default-edits/Summary.d.ts.map +0 -1
- package/dist/default-edits/Summary.js +0 -35
- package/dist/default-edits/Summary.js.map +0 -1
- package/dist/default-edits/Transaction.d.ts +0 -41
- package/dist/default-edits/Transaction.d.ts.map +0 -1
- package/dist/default-edits/Transaction.js +0 -225
- package/dist/default-edits/Transaction.js.map +0 -1
- package/dist/default-edits/UndoRedoHandler.d.ts.map +0 -1
- package/dist/default-edits/UndoRedoHandler.js.map +0 -1
- package/dist/default-edits/index.d.ts +0 -13
- package/dist/default-edits/index.d.ts.map +0 -1
- package/dist/default-edits/index.js +0 -41
- package/dist/default-edits/index.js.map +0 -1
- package/dist/generic/GenericEditUtilities.d.ts +0 -26
- package/dist/generic/GenericEditUtilities.d.ts.map +0 -1
- package/dist/generic/GenericEditUtilities.js +0 -45
- package/dist/generic/GenericEditUtilities.js.map +0 -1
- package/dist/generic/GenericSharedTree.d.ts +0 -221
- package/dist/generic/GenericSharedTree.d.ts.map +0 -1
- package/dist/generic/GenericSharedTree.js +0 -447
- package/dist/generic/GenericSharedTree.js.map +0 -1
- package/dist/generic/GenericTransaction.d.ts +0 -87
- package/dist/generic/GenericTransaction.d.ts.map +0 -1
- package/dist/generic/GenericTransaction.js +0 -144
- package/dist/generic/GenericTransaction.js.map +0 -1
- package/dist/generic/PersistedTypes.d.ts +0 -194
- package/dist/generic/PersistedTypes.d.ts.map +0 -1
- package/dist/generic/PersistedTypes.js +0 -42
- package/dist/generic/PersistedTypes.js.map +0 -1
- package/dist/generic/Summary.d.ts +0 -63
- package/dist/generic/Summary.d.ts.map +0 -1
- package/dist/generic/Summary.js +0 -64
- package/dist/generic/Summary.js.map +0 -1
- package/dist/generic/index.d.ts +0 -10
- package/dist/generic/index.d.ts.map +0 -1
- package/dist/generic/index.js +0 -26
- package/dist/generic/index.js.map +0 -1
- package/docs/Future.md +0 -155
- package/lib/BasicCheckout.d.ts +0 -23
- package/lib/BasicCheckout.d.ts.map +0 -1
- package/lib/BasicCheckout.js.map +0 -1
- package/lib/Snapshot.d.ts +0 -198
- package/lib/Snapshot.d.ts.map +0 -1
- package/lib/Snapshot.js +0 -263
- package/lib/Snapshot.js.map +0 -1
- package/lib/SnapshotUtilities.d.ts +0 -29
- package/lib/SnapshotUtilities.d.ts.map +0 -1
- package/lib/SnapshotUtilities.js +0 -67
- package/lib/SnapshotUtilities.js.map +0 -1
- package/lib/anchored-edits/AnchorResolution.d.ts +0 -144
- package/lib/anchored-edits/AnchorResolution.d.ts.map +0 -1
- package/lib/anchored-edits/AnchorResolution.js +0 -152
- package/lib/anchored-edits/AnchorResolution.js.map +0 -1
- package/lib/anchored-edits/Factory.d.ts +0 -56
- package/lib/anchored-edits/Factory.d.ts.map +0 -1
- package/lib/anchored-edits/Factory.js +0 -74
- package/lib/anchored-edits/Factory.js.map +0 -1
- package/lib/anchored-edits/PersistedTypes.d.ts +0 -245
- package/lib/anchored-edits/PersistedTypes.d.ts.map +0 -1
- package/lib/anchored-edits/PersistedTypes.js +0 -128
- package/lib/anchored-edits/PersistedTypes.js.map +0 -1
- package/lib/anchored-edits/SharedTreeWithAnchors.d.ts +0 -120
- package/lib/anchored-edits/SharedTreeWithAnchors.d.ts.map +0 -1
- package/lib/anchored-edits/SharedTreeWithAnchors.js +0 -110
- package/lib/anchored-edits/SharedTreeWithAnchors.js.map +0 -1
- package/lib/anchored-edits/TransactionWithAnchors.d.ts +0 -28
- package/lib/anchored-edits/TransactionWithAnchors.d.ts.map +0 -1
- package/lib/anchored-edits/TransactionWithAnchors.js +0 -32
- package/lib/anchored-edits/TransactionWithAnchors.js.map +0 -1
- package/lib/anchored-edits/index.d.ts +0 -10
- package/lib/anchored-edits/index.d.ts.map +0 -1
- package/lib/anchored-edits/index.js +0 -11
- package/lib/anchored-edits/index.js.map +0 -1
- package/lib/default-edits/EditUtilities.d.ts +0 -57
- package/lib/default-edits/EditUtilities.d.ts.map +0 -1
- package/lib/default-edits/EditUtilities.js +0 -181
- package/lib/default-edits/EditUtilities.js.map +0 -1
- package/lib/default-edits/Factory.d.ts +0 -56
- package/lib/default-edits/Factory.d.ts.map +0 -1
- package/lib/default-edits/Factory.js +0 -74
- package/lib/default-edits/Factory.js.map +0 -1
- package/lib/default-edits/HistoryEditFactory.d.ts +0 -19
- package/lib/default-edits/HistoryEditFactory.d.ts.map +0 -1
- package/lib/default-edits/HistoryEditFactory.js.map +0 -1
- package/lib/default-edits/PersistedTypes.d.ts.map +0 -1
- package/lib/default-edits/PersistedTypes.js.map +0 -1
- package/lib/default-edits/SharedTree.d.ts +0 -111
- package/lib/default-edits/SharedTree.d.ts.map +0 -1
- package/lib/default-edits/SharedTree.js +0 -100
- package/lib/default-edits/SharedTree.js.map +0 -1
- package/lib/default-edits/Summary.d.ts +0 -15
- package/lib/default-edits/Summary.d.ts.map +0 -1
- package/lib/default-edits/Summary.js +0 -31
- package/lib/default-edits/Summary.js.map +0 -1
- package/lib/default-edits/Transaction.d.ts +0 -41
- package/lib/default-edits/Transaction.d.ts.map +0 -1
- package/lib/default-edits/Transaction.js +0 -221
- package/lib/default-edits/Transaction.js.map +0 -1
- package/lib/default-edits/UndoRedoHandler.d.ts.map +0 -1
- package/lib/default-edits/UndoRedoHandler.js.map +0 -1
- package/lib/default-edits/index.d.ts +0 -13
- package/lib/default-edits/index.d.ts.map +0 -1
- package/lib/default-edits/index.js +0 -14
- package/lib/default-edits/index.js.map +0 -1
- package/lib/generic/GenericEditUtilities.d.ts +0 -26
- package/lib/generic/GenericEditUtilities.d.ts.map +0 -1
- package/lib/generic/GenericEditUtilities.js +0 -38
- package/lib/generic/GenericEditUtilities.js.map +0 -1
- package/lib/generic/GenericSharedTree.d.ts +0 -221
- package/lib/generic/GenericSharedTree.d.ts.map +0 -1
- package/lib/generic/GenericSharedTree.js +0 -443
- package/lib/generic/GenericSharedTree.js.map +0 -1
- package/lib/generic/GenericTransaction.d.ts +0 -87
- package/lib/generic/GenericTransaction.d.ts.map +0 -1
- package/lib/generic/GenericTransaction.js +0 -140
- package/lib/generic/GenericTransaction.js.map +0 -1
- package/lib/generic/PersistedTypes.d.ts +0 -194
- package/lib/generic/PersistedTypes.d.ts.map +0 -1
- package/lib/generic/PersistedTypes.js +0 -39
- package/lib/generic/PersistedTypes.js.map +0 -1
- package/lib/generic/Summary.d.ts +0 -63
- package/lib/generic/Summary.d.ts.map +0 -1
- package/lib/generic/Summary.js +0 -58
- package/lib/generic/Summary.js.map +0 -1
- package/lib/generic/index.d.ts +0 -10
- package/lib/generic/index.d.ts.map +0 -1
- package/lib/generic/index.js +0 -11
- package/lib/generic/index.js.map +0 -1
- package/lib/test/Anchors.glassBox.tests.d.ts.map +0 -1
- package/lib/test/Anchors.glassBox.tests.js +0 -410
- package/lib/test/Anchors.glassBox.tests.js.map +0 -1
- package/lib/test/BasicCheckout.tests.d.ts.map +0 -1
- package/lib/test/BasicCheckout.tests.js +0 -8
- package/lib/test/BasicCheckout.tests.js.map +0 -1
- package/lib/test/GenericTransactionWithAnchors.tests.d.ts.map +0 -1
- package/lib/test/GenericTransactionWithAnchors.tests.js +0 -25
- package/lib/test/GenericTransactionWithAnchors.tests.js.map +0 -1
- package/lib/test/SharedTreeWithAnchors.tests.d.ts.map +0 -1
- package/lib/test/SharedTreeWithAnchors.tests.js +0 -420
- package/lib/test/SharedTreeWithAnchors.tests.js.map +0 -1
- package/lib/test/Snapshot.tests.d.ts.map +0 -1
- package/lib/test/Snapshot.tests.js +0 -96
- package/lib/test/Snapshot.tests.js.map +0 -1
- package/lib/test/SnapshotUtilities.tests.d.ts.map +0 -1
- package/lib/test/SnapshotUtilities.tests.js +0 -168
- package/lib/test/SnapshotUtilities.tests.js.map +0 -1
- package/lib/test/undoRedoStackManager.d.ts +0 -26
- package/lib/test/undoRedoStackManager.d.ts.map +0 -1
- package/lib/test/undoRedoStackManager.js +0 -176
- package/lib/test/undoRedoStackManager.js.map +0 -1
- package/lib/test/utilities/SummaryFormatCompatibilityTests.d.ts +0 -13
- package/lib/test/utilities/SummaryFormatCompatibilityTests.d.ts.map +0 -1
- package/lib/test/utilities/SummaryFormatCompatibilityTests.js +0 -154
- package/lib/test/utilities/SummaryFormatCompatibilityTests.js.map +0 -1
- package/src/BasicCheckout.ts +0 -34
- package/src/Snapshot.ts +0 -363
- package/src/SnapshotUtilities.ts +0 -88
- package/src/anchored-edits/AnchorResolution.ts +0 -442
- package/src/anchored-edits/Factory.ts +0 -94
- package/src/anchored-edits/PersistedTypes.ts +0 -310
- package/src/anchored-edits/SharedTreeWithAnchors.ts +0 -200
- package/src/anchored-edits/TransactionWithAnchors.ts +0 -39
- package/src/anchored-edits/index.ts +0 -21
- package/src/default-edits/EditUtilities.ts +0 -220
- package/src/default-edits/Factory.ts +0 -94
- package/src/default-edits/SharedTree.ts +0 -174
- package/src/default-edits/Summary.ts +0 -44
- package/src/default-edits/Transaction.ts +0 -262
- package/src/default-edits/index.ts +0 -29
- package/src/generic/GenericEditUtilities.ts +0 -46
- package/src/generic/GenericSharedTree.ts +0 -593
- package/src/generic/GenericTransaction.ts +0 -194
- package/src/generic/PersistedTypes.ts +0 -221
- package/src/generic/Summary.ts +0 -113
- package/src/generic/index.ts +0 -41
package/src/Common.ts
CHANGED
|
@@ -3,10 +3,8 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import {
|
|
7
|
-
import
|
|
8
|
-
import { IFluidHandle } from '@fluidframework/core-interfaces';
|
|
9
|
-
import { Payload } from './generic';
|
|
6
|
+
import { ITelemetryBaseEvent, ITelemetryProperties } from '@fluidframework/common-definitions';
|
|
7
|
+
import BTree from 'sorted-btree';
|
|
10
8
|
|
|
11
9
|
const defaultFailMessage = 'Assertion failed';
|
|
12
10
|
|
|
@@ -24,8 +22,8 @@ export const sharedTreeAssertionErrorType = 'SharedTreeAssertion';
|
|
|
24
22
|
/**
|
|
25
23
|
* Telemetry properties decorated on all SharedTree events.
|
|
26
24
|
*/
|
|
27
|
-
export interface SharedTreeTelemetryProperties extends
|
|
28
|
-
isSharedTreeEvent: true;
|
|
25
|
+
export interface SharedTreeTelemetryProperties extends ITelemetryProperties {
|
|
26
|
+
readonly isSharedTreeEvent: true;
|
|
29
27
|
}
|
|
30
28
|
|
|
31
29
|
/**
|
|
@@ -44,124 +42,25 @@ class SharedTreeAssertionError extends Error {
|
|
|
44
42
|
public constructor(message: string) {
|
|
45
43
|
super(message);
|
|
46
44
|
this.name = 'Assertion error';
|
|
45
|
+
// Note: conditional as `captureStackTrace` isn't defined in all browsers (e.g. Safari).
|
|
47
46
|
Error.captureStackTrace?.(this);
|
|
48
47
|
}
|
|
49
48
|
}
|
|
50
49
|
|
|
51
50
|
/**
|
|
52
|
-
*
|
|
53
|
-
* May return false for equivalent payloads encoded differently.
|
|
51
|
+
* Compares finite numbers to form a strict partial ordering.
|
|
54
52
|
*
|
|
55
|
-
*
|
|
56
|
-
* (This is because they may not be preserved through roundtrip).
|
|
57
|
-
*
|
|
58
|
-
* For other information which Fluid would lose on serialization round trip,
|
|
59
|
-
* behavior is unspecified other than this this function is reflective (all payloads are equal to themselves)
|
|
60
|
-
* and commutative (argument order does not matter).
|
|
61
|
-
*
|
|
62
|
-
* This means that any Payload is equal to itself and a deep clone of itself.
|
|
63
|
-
*
|
|
64
|
-
* Payloads might not be equal to a version of themselves that has been serialized then deserialized.
|
|
65
|
-
* If they are serialized then deserialized again, the two deserialized objects will compare equal,
|
|
66
|
-
* however the serialized strings may be unequal (due to field order for objects being unspecified).
|
|
67
|
-
*
|
|
68
|
-
* Fluid will cause lossy operations due to use of JSON.stringify().
|
|
69
|
-
* This includes:
|
|
70
|
-
* - Loss of object identity
|
|
71
|
-
* - Loss of field order (may be ordered arbitrarily)
|
|
72
|
-
* - -0 becomes +0
|
|
73
|
-
* - NaN, Infinity, -Infinity all become null
|
|
74
|
-
* - custom toJSON functions may cause arbitrary behavior
|
|
75
|
-
* - functions become undefined or null
|
|
76
|
-
* - non enumerable properties (including prototype) are lost
|
|
77
|
-
* - more (this is not a complete list)
|
|
78
|
-
*
|
|
79
|
-
* Inputs must not contain cyclic references other than fields set to their immediate parent (for the JavaScript feature detection pattern).
|
|
80
|
-
*
|
|
81
|
-
* IFluidHandle instances (detected via JavaScript feature detection pattern) are only compared by absolutePath.
|
|
82
|
-
*
|
|
83
|
-
* TODO:#54095: Is there a better way to do this comparison?
|
|
84
|
-
* @public
|
|
53
|
+
* Handles +/-0 like Map: -0 is equal to +0.
|
|
85
54
|
*/
|
|
86
|
-
export function
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
// Since -0 is not preserved in serialization round trips,
|
|
90
|
-
// it can be handed in any way that is reflective and commutative, so this is fine.
|
|
91
|
-
if (Object.is(a, b)) {
|
|
92
|
-
return true;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
// Primitives which are equal would have early returned above, so now if the values are not both objects, they are unequal.
|
|
96
|
-
if (typeof a !== 'object' || typeof b !== 'object') {
|
|
97
|
-
return false;
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
// null is of type object, and needs to be treated as distinct from the empty object.
|
|
101
|
-
// Handling it early also avoids type errors trying to access its keys.
|
|
102
|
-
// Rationale: 'undefined' payloads are reserved for future use (see 'SetValue' interface).
|
|
103
|
-
if (a === null || b === null) {
|
|
104
|
-
return false;
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
// Special case IFluidHandles, comparing them only by their absolutePath
|
|
108
|
-
// Detect them using JavaScript feature detection pattern: they have a `IFluidHandle` field that is set to the parent object.
|
|
109
|
-
{
|
|
110
|
-
const aHandle = a as IFluidHandle;
|
|
111
|
-
const bHandle = b as IFluidHandle;
|
|
112
|
-
if (aHandle.IFluidHandle === a) {
|
|
113
|
-
if (bHandle.IFluidHandle !== b) {
|
|
114
|
-
return false;
|
|
115
|
-
}
|
|
116
|
-
return a.absolutePath === b.absolutePath;
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
// Fluid Serialization (like Json) only keeps enumerable properties, so we can ignore non-enumerable ones.
|
|
121
|
-
const aKeys = Object.keys(a);
|
|
122
|
-
const bKeys = Object.keys(b);
|
|
123
|
-
|
|
124
|
-
if (aKeys.length !== bKeys.length) {
|
|
125
|
-
return false;
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
// make sure objects with numeric keys (or no keys) compare unequal to arrays.
|
|
129
|
-
if (Array.isArray(a) !== Array.isArray(b)) {
|
|
130
|
-
return false;
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
// Fluid Serialization (like Json) orders object fields arbitrarily, so reordering fields is not considered considered a change.
|
|
134
|
-
// Therefor the keys arrays must be sorted here.
|
|
135
|
-
if (!Array.isArray(a)) {
|
|
136
|
-
aKeys.sort();
|
|
137
|
-
bKeys.sort();
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
// First check keys are equal.
|
|
141
|
-
// This will often early exit, and thus is worth doing as a separate pass than recursive check.
|
|
142
|
-
if (!compareArrays(aKeys, bKeys)) {
|
|
143
|
-
return false;
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
for (let i = 0; i < aKeys.length; i++) {
|
|
147
|
-
const aItem: Payload = a[aKeys[i]];
|
|
148
|
-
const bItem: Payload = b[bKeys[i]];
|
|
149
|
-
|
|
150
|
-
// The JavaScript feature detection pattern, used for IFluidHandle, uses a field that is set to the parent object.
|
|
151
|
-
// Detect this pattern and special case it to avoid infinite recursion.
|
|
152
|
-
const aSelf = Object.is(aItem, a);
|
|
153
|
-
const bSelf = Object.is(bItem, b);
|
|
154
|
-
if (aSelf !== bSelf) {
|
|
155
|
-
return false;
|
|
156
|
-
}
|
|
157
|
-
if (!aSelf) {
|
|
158
|
-
if (!comparePayloads(aItem, bItem)) {
|
|
159
|
-
return false;
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
}
|
|
55
|
+
export function compareFiniteNumbers<T extends number>(a: T, b: T): number {
|
|
56
|
+
return a - b;
|
|
57
|
+
}
|
|
163
58
|
|
|
164
|
-
|
|
59
|
+
/**
|
|
60
|
+
* Compares strings lexically to form a strict partial ordering.
|
|
61
|
+
*/
|
|
62
|
+
export function compareStrings<T extends string>(a: T, b: T): number {
|
|
63
|
+
return a > b ? 1 : a === b ? 0 : -1;
|
|
165
64
|
}
|
|
166
65
|
|
|
167
66
|
/**
|
|
@@ -186,7 +85,6 @@ export function assert(condition: unknown, message?: string, containsPII = false
|
|
|
186
85
|
*/
|
|
187
86
|
export function fail(message: string = defaultFailMessage, containsPII = false): never {
|
|
188
87
|
if (process.env.NODE_ENV !== 'production') {
|
|
189
|
-
// eslint-disable-next-line no-debugger
|
|
190
88
|
debugger;
|
|
191
89
|
console.error(message);
|
|
192
90
|
}
|
|
@@ -197,6 +95,18 @@ export function fail(message: string = defaultFailMessage, containsPII = false):
|
|
|
197
95
|
/**
|
|
198
96
|
* Asserts a value is not undefined, and returns the value.
|
|
199
97
|
* Use when violations are logic errors in the program.
|
|
98
|
+
*
|
|
99
|
+
* When practical, prefer the pattern `x ?? fail('message')` over `assertNotUndefined(x, 'message')`.
|
|
100
|
+
* Using `?? fail` allows for message formatting without incurring the cost of formatting the message in the non failing case
|
|
101
|
+
* (ex:
|
|
102
|
+
* ```
|
|
103
|
+
* x ?? fail(`x should exist for ${y}`)
|
|
104
|
+
* ```
|
|
105
|
+
* ). Additionally the `?? fail` avoids an extra call/stack frame in the non failing case.
|
|
106
|
+
*
|
|
107
|
+
* Another pattern to prefer over `assertNotUndefined(x, 'message')` is `assert(x !== undefined)`.
|
|
108
|
+
* This pattern is preferred because it is more general (same approach works with typeof, instance of, comparison to other values etc.).
|
|
109
|
+
*
|
|
200
110
|
* @param value - Value to assert against is non undefined.
|
|
201
111
|
* @param message - Message to be printed if assertion fails.
|
|
202
112
|
*/
|
|
@@ -215,6 +125,17 @@ export function assertArrayOfOne<T>(array: readonly T[], message = 'array value
|
|
|
215
125
|
return array[0];
|
|
216
126
|
}
|
|
217
127
|
|
|
128
|
+
/**
|
|
129
|
+
* Assign a property and value to a given object.
|
|
130
|
+
* @param object - the object to add the property to
|
|
131
|
+
* @param property - the property key
|
|
132
|
+
* @param value - the value of the property
|
|
133
|
+
* @returns `object` after assigning `value` to the property `property`.
|
|
134
|
+
*/
|
|
135
|
+
export function assign<T, K extends keyof never, V>(object: T, property: K, value: V): With<T, K, V> {
|
|
136
|
+
return Object.assign(object, { [property]: value }) as With<T, K, V>;
|
|
137
|
+
}
|
|
138
|
+
|
|
218
139
|
/**
|
|
219
140
|
* Redefine a property to have the given value. This is simply a type-safe wrapper around
|
|
220
141
|
* `Object.defineProperty`, but it is useful for caching public getters on first read.
|
|
@@ -241,6 +162,62 @@ export function memoizeGetter<T, K extends keyof T>(object: T, propName: K, valu
|
|
|
241
162
|
return value;
|
|
242
163
|
}
|
|
243
164
|
|
|
165
|
+
/**
|
|
166
|
+
* Map an iterable to another iterable
|
|
167
|
+
*/
|
|
168
|
+
export function* map<T, R>(sequence: Iterable<T>, mapper: (t: T) => R): Iterable<R> {
|
|
169
|
+
for (const t of sequence) {
|
|
170
|
+
yield mapper(t);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* Filter an iterable into another iterable
|
|
176
|
+
*/
|
|
177
|
+
export function* filter<T>(sequence: Iterable<T>, filter: (t: T) => boolean): Iterable<T> {
|
|
178
|
+
for (const t of sequence) {
|
|
179
|
+
if (filter(t)) {
|
|
180
|
+
yield t;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
/**
|
|
186
|
+
* Reduce an iterable into a single value, or undefined if the iterable has too few elements to reduce
|
|
187
|
+
*/
|
|
188
|
+
export function reduce<T>(
|
|
189
|
+
sequence: Iterable<T>,
|
|
190
|
+
reduce: (previous: T, current: T) => T,
|
|
191
|
+
initialValue?: T
|
|
192
|
+
): T | undefined {
|
|
193
|
+
let previous: T | undefined;
|
|
194
|
+
let current: T | undefined;
|
|
195
|
+
for (const t of sequence) {
|
|
196
|
+
current = t;
|
|
197
|
+
if (previous === undefined) {
|
|
198
|
+
if (initialValue !== undefined) {
|
|
199
|
+
current = reduce(initialValue, current);
|
|
200
|
+
}
|
|
201
|
+
} else {
|
|
202
|
+
current = reduce(previous, current);
|
|
203
|
+
}
|
|
204
|
+
previous = current;
|
|
205
|
+
}
|
|
206
|
+
return current;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
/**
|
|
210
|
+
* Returns the first element of the given sequence that satisfies the given predicate, or undefined if no such element exists
|
|
211
|
+
*/
|
|
212
|
+
export function find<T>(sequence: Iterable<T>, find: (t: T) => boolean): T | undefined {
|
|
213
|
+
for (const t of sequence) {
|
|
214
|
+
if (find(t)) {
|
|
215
|
+
return t;
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
return undefined;
|
|
219
|
+
}
|
|
220
|
+
|
|
244
221
|
/**
|
|
245
222
|
* Iterate through two iterables and return true if they yield equivalent elements in the same order.
|
|
246
223
|
* @param iterableA - the first iterable to compare
|
|
@@ -310,6 +287,48 @@ export function compareArrays<T>(
|
|
|
310
287
|
return true;
|
|
311
288
|
}
|
|
312
289
|
|
|
290
|
+
/**
|
|
291
|
+
* Compare two maps and return true if their contents are equivalent.
|
|
292
|
+
* @param mapA - the first array to compare
|
|
293
|
+
* @param mapB - the second array to compare
|
|
294
|
+
* @param elementComparator - the function used to check if two `T`s are equivalent.
|
|
295
|
+
* Defaults to `Object.is()` equality (a shallow compare)
|
|
296
|
+
*/
|
|
297
|
+
export function compareMaps<K, V>(
|
|
298
|
+
mapA: ReadonlyMap<K, V>,
|
|
299
|
+
mapB: ReadonlyMap<K, V>,
|
|
300
|
+
elementComparator: (a: V, b: V) => boolean = Object.is
|
|
301
|
+
): boolean {
|
|
302
|
+
if (mapA.size !== mapB.size) {
|
|
303
|
+
return false;
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
for (const [keyA, valueA] of mapA) {
|
|
307
|
+
const valueB = mapB.get(keyA);
|
|
308
|
+
if (valueB === undefined || !elementComparator(valueA, valueB)) {
|
|
309
|
+
return false;
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
return true;
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
/**
|
|
317
|
+
* Retrieve a value from a map with the given key, or create a new entry if the key is not in the map.
|
|
318
|
+
* @param map - the map to query/update
|
|
319
|
+
* @param key - the key to lookup in the map
|
|
320
|
+
* @param defaultValue - a function which returns a default value. This is called and used to set an initial value in the map if none exists
|
|
321
|
+
* @returns either the existing value for the given key, or the newly-created value (the result of `defaultValue`)
|
|
322
|
+
*/
|
|
323
|
+
export function getOrCreate<K, V>(map: Map<K, V>, key: K, defaultValue: () => V): V {
|
|
324
|
+
let value = map.get(key);
|
|
325
|
+
if (value === undefined) {
|
|
326
|
+
value = defaultValue();
|
|
327
|
+
map.set(key, value);
|
|
328
|
+
}
|
|
329
|
+
return value;
|
|
330
|
+
}
|
|
331
|
+
|
|
313
332
|
/**
|
|
314
333
|
* Function which does nothing (no-ops).
|
|
315
334
|
*/
|
|
@@ -317,6 +336,13 @@ export function noop(): void {
|
|
|
317
336
|
// noop
|
|
318
337
|
}
|
|
319
338
|
|
|
339
|
+
/**
|
|
340
|
+
* Function which returns its input
|
|
341
|
+
*/
|
|
342
|
+
export function identity<T>(t: T): T {
|
|
343
|
+
return t;
|
|
344
|
+
}
|
|
345
|
+
|
|
320
346
|
/**
|
|
321
347
|
* Copies a property in such a way that it is only set on `destination` if it is present on `source`.
|
|
322
348
|
* This avoids having explicit undefined values under properties that would cause `Object.hasOwnProperty` to return true.
|
|
@@ -328,8 +354,182 @@ export function copyPropertyIfDefined<TSrc, TDst>(source: TSrc, destination: TDs
|
|
|
328
354
|
}
|
|
329
355
|
}
|
|
330
356
|
|
|
357
|
+
/**
|
|
358
|
+
* Sets a property in such a way that it is only set on `destination` if the provided value is not undefined.
|
|
359
|
+
* This avoids having explicit undefined values under properties that would cause `Object.hasOwnProperty` to return true.
|
|
360
|
+
*/
|
|
361
|
+
export function setPropertyIfDefined<TDst, P extends keyof TDst>(
|
|
362
|
+
value: TDst[P] | undefined,
|
|
363
|
+
destination: TDst,
|
|
364
|
+
property: P
|
|
365
|
+
): void {
|
|
366
|
+
if (value !== undefined) {
|
|
367
|
+
destination[property] = value;
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
/**
|
|
372
|
+
* function (thing: ObjectWithMaybeFoo) {
|
|
373
|
+
* const x: MyActualType = {
|
|
374
|
+
* bar: 3
|
|
375
|
+
* };
|
|
376
|
+
* x.foo = 3;
|
|
377
|
+
*
|
|
378
|
+
* copyPropertyIfDefined(thing, x, 'foo');
|
|
379
|
+
* }
|
|
380
|
+
* @returns
|
|
381
|
+
*/
|
|
382
|
+
|
|
383
|
+
function breakOnDifference(): { break: boolean } {
|
|
384
|
+
return { break: true };
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
/**
|
|
388
|
+
* Helper that returns whether two b-trees are equal.
|
|
389
|
+
* Accelerated when large portions of the tree are shared between the two.
|
|
390
|
+
*/
|
|
391
|
+
export function compareBtrees<K, V>(treeA: BTree<K, V>, treeB: BTree<K, V>, compare: (valA: V, valB: V) => boolean) {
|
|
392
|
+
const diff = treeA.diffAgainst(treeB, breakOnDifference, breakOnDifference, (_, valA, valB) => {
|
|
393
|
+
if (!compare(valA, valB)) {
|
|
394
|
+
return { break: true };
|
|
395
|
+
}
|
|
396
|
+
return undefined;
|
|
397
|
+
});
|
|
398
|
+
|
|
399
|
+
return diff === undefined;
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
export function backmap<K, V>(forwardmap: Map<V, K>): Map<K, V> {
|
|
403
|
+
return new Map(map(forwardmap, ([key, value]) => [value, key]));
|
|
404
|
+
}
|
|
405
|
+
|
|
331
406
|
/**
|
|
332
407
|
* A developer facing (non-localized) error message.
|
|
333
408
|
* TODO: better error system.
|
|
334
409
|
*/
|
|
335
410
|
export type ErrorString = string;
|
|
411
|
+
|
|
412
|
+
/**
|
|
413
|
+
* Discriminated union instance that wraps either a result of type `TOk` or an error of type `TError`.
|
|
414
|
+
*/
|
|
415
|
+
export type Result<TOk, TError> = Result.Ok<TOk> | Result.Error<TError>;
|
|
416
|
+
|
|
417
|
+
export namespace Result {
|
|
418
|
+
/**
|
|
419
|
+
* Factory function for making a successful Result.
|
|
420
|
+
* @param result - The result to wrap in the Result.
|
|
421
|
+
*/
|
|
422
|
+
export function ok<TOk>(result: TOk): Ok<TOk> {
|
|
423
|
+
return { type: ResultType.Ok, result };
|
|
424
|
+
}
|
|
425
|
+
/**
|
|
426
|
+
* Factory function for making a unsuccessful Result.
|
|
427
|
+
* @param error - The error to wrap in the Result.
|
|
428
|
+
*/
|
|
429
|
+
export function error<TError>(error: TError): Error<TError> {
|
|
430
|
+
return { type: ResultType.Error, error };
|
|
431
|
+
}
|
|
432
|
+
/**
|
|
433
|
+
* Type guard for successful Result.
|
|
434
|
+
* @returns True if `result` is successful.
|
|
435
|
+
*/
|
|
436
|
+
export function isOk<TOk, TError>(result: Result<TOk, TError>): result is Ok<TOk> {
|
|
437
|
+
return result.type === ResultType.Ok;
|
|
438
|
+
}
|
|
439
|
+
/**
|
|
440
|
+
* Type guard for unsuccessful Result.
|
|
441
|
+
* @returns True if `result` is unsuccessful.
|
|
442
|
+
*/
|
|
443
|
+
export function isError<TOk, TError>(result: Result<TOk, TError>): result is Error<TError> {
|
|
444
|
+
return result.type === ResultType.Error;
|
|
445
|
+
}
|
|
446
|
+
/**
|
|
447
|
+
* Maps the given result with the given function when the result is ok.
|
|
448
|
+
* @param result - The result to map.
|
|
449
|
+
* @param map - The function to apply to derive the new result.
|
|
450
|
+
* @returns The given result if it is not ok, the mapped result otherwise.
|
|
451
|
+
*/
|
|
452
|
+
export function mapOk<TOkIn, TOkOut, TError>(
|
|
453
|
+
result: Result<TOkIn, TError>,
|
|
454
|
+
map: (ok: TOkIn) => TOkOut
|
|
455
|
+
): Result<TOkOut, TError> {
|
|
456
|
+
return isOk(result) ? ok(map(result.result)) : result;
|
|
457
|
+
}
|
|
458
|
+
/**
|
|
459
|
+
* Maps the given result with the given function when the result is an error.
|
|
460
|
+
* @param result - The result to map.
|
|
461
|
+
* @param map - The function to apply to derive the new error.
|
|
462
|
+
* @returns The given result if it is ok, the mapped result otherwise.
|
|
463
|
+
*/
|
|
464
|
+
export function mapError<TOk, TErrorIn, TErrorOut>(
|
|
465
|
+
result: Result<TOk, TErrorIn>,
|
|
466
|
+
map: (error: TErrorIn) => TErrorOut
|
|
467
|
+
): Result<TOk, TErrorOut> {
|
|
468
|
+
return isError(result) ? error(map(result.error)) : result;
|
|
469
|
+
}
|
|
470
|
+
/**
|
|
471
|
+
* Tag value use to differentiate the members of the `Result` discriminated union.
|
|
472
|
+
*/
|
|
473
|
+
export enum ResultType {
|
|
474
|
+
/** Signals a successful result. */
|
|
475
|
+
Ok,
|
|
476
|
+
/** Signals an unsuccessful result. */
|
|
477
|
+
Error,
|
|
478
|
+
}
|
|
479
|
+
/**
|
|
480
|
+
* Wraps a result of type `TOk`.
|
|
481
|
+
*/
|
|
482
|
+
export interface Ok<TOk> {
|
|
483
|
+
readonly type: ResultType.Ok;
|
|
484
|
+
readonly result: TOk;
|
|
485
|
+
}
|
|
486
|
+
/**
|
|
487
|
+
* Wraps an error of type `TError`.
|
|
488
|
+
*/
|
|
489
|
+
export interface Error<TError> {
|
|
490
|
+
readonly type: ResultType.Error;
|
|
491
|
+
readonly error: TError;
|
|
492
|
+
}
|
|
493
|
+
}
|
|
494
|
+
|
|
495
|
+
/** Type that removes `readonly` from fields. */
|
|
496
|
+
export type Mutable<T> = { -readonly [P in keyof T]: T[P] };
|
|
497
|
+
|
|
498
|
+
/** Type that recursively removes `readonly` from fields. */
|
|
499
|
+
export type RecursiveMutable<T> = {
|
|
500
|
+
-readonly [K in keyof T]: RecursiveMutable<T[K]>;
|
|
501
|
+
};
|
|
502
|
+
|
|
503
|
+
/** Type that produces a writeable map from a readonly map. */
|
|
504
|
+
export type MutableMap<T extends ReadonlyMap<unknown, unknown>> = T extends ReadonlyMap<infer K, infer V>
|
|
505
|
+
? Map<K, V>
|
|
506
|
+
: never;
|
|
507
|
+
|
|
508
|
+
/** Type that includes the property K: V on T */
|
|
509
|
+
export type With<T, K extends keyof never, V> = T & { [key in K]: V };
|
|
510
|
+
|
|
511
|
+
/**
|
|
512
|
+
* A readonly `Map` which is known to contain a value for every possible key
|
|
513
|
+
*/
|
|
514
|
+
export interface ClosedMap<K, V> extends Omit<Map<K, V>, 'delete' | 'clear'> {
|
|
515
|
+
get(key: K): V;
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
/**
|
|
519
|
+
* Change the given property Prop of type T to have a type of TPropNew
|
|
520
|
+
*/
|
|
521
|
+
export type ChangePropType<T, Prop extends keyof T, TPropNew> = Omit<T, Prop> & { [_ in Prop]: TPropNew };
|
|
522
|
+
|
|
523
|
+
// eslint-disable-next-line @rushstack/no-new-null
|
|
524
|
+
type Primitive = string | number | bigint | boolean | null | symbol | undefined;
|
|
525
|
+
|
|
526
|
+
/**
|
|
527
|
+
* Recursively replace all properties with type assignable to type TReplace in T with properties of type TWith.
|
|
528
|
+
*/
|
|
529
|
+
export type ReplaceRecursive<T, TReplace, TWith> = T extends TReplace
|
|
530
|
+
? TWith
|
|
531
|
+
: T extends Primitive
|
|
532
|
+
? T
|
|
533
|
+
: {
|
|
534
|
+
[P in keyof T]: ReplaceRecursive<T[P], TReplace, TWith>;
|
|
535
|
+
};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
|
+
* Licensed under the MIT License.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { Checkout } from './Checkout';
|
|
7
|
+
import { RevisionView } from './RevisionView';
|
|
8
|
+
import { EditCommittedEventArguments, SharedTree } from './SharedTree';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Checkout that always stays up to date with the SharedTree.
|
|
12
|
+
* This means that {@link EagerCheckout.waitForPendingUpdates} is always a no-op since EagerCheckout is always up to date.
|
|
13
|
+
*
|
|
14
|
+
* @public
|
|
15
|
+
* @sealed
|
|
16
|
+
*/
|
|
17
|
+
export class EagerCheckout extends Checkout {
|
|
18
|
+
/**
|
|
19
|
+
* @param tree - the tree
|
|
20
|
+
*/
|
|
21
|
+
public constructor(tree: SharedTree) {
|
|
22
|
+
super(tree, tree.currentView, (args: EditCommittedEventArguments) => {
|
|
23
|
+
this.emitChange();
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
protected get latestCommittedView(): RevisionView {
|
|
28
|
+
return this.tree.currentView;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
public async waitForPendingUpdates(): Promise<void> {
|
|
32
|
+
return Promise.resolve();
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
public async waitForEditsToSubmit(): Promise<void> {
|
|
36
|
+
return Promise.resolve();
|
|
37
|
+
}
|
|
38
|
+
}
|