@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
|
@@ -0,0 +1,626 @@
|
|
|
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.TransactionInternal = exports.GenericTransaction = void 0;
|
|
8
|
+
const Common_1 = require("./Common");
|
|
9
|
+
const Identifiers_1 = require("./Identifiers");
|
|
10
|
+
const TreeViewUtilities_1 = require("./TreeViewUtilities");
|
|
11
|
+
const persisted_types_1 = require("./persisted-types");
|
|
12
|
+
const EditUtilities_1 = require("./EditUtilities");
|
|
13
|
+
/**
|
|
14
|
+
* A mutable transaction for applying sequences of changes to a TreeView.
|
|
15
|
+
* Allows viewing the intermediate states.
|
|
16
|
+
*
|
|
17
|
+
* Contains necessary state to apply changes within an edit to a TreeView.
|
|
18
|
+
*
|
|
19
|
+
* May have any number of changes applied to make up the edit.
|
|
20
|
+
* Use `close` to complete the transaction, returning the array of changes and an EditingResult showing the
|
|
21
|
+
* results of applying the changes as an Edit to the initial TreeView (passed to the constructor).
|
|
22
|
+
*
|
|
23
|
+
* No data outside the Transaction is modified by Transaction:
|
|
24
|
+
* the results from `close` must be used to actually submit an `Edit`.
|
|
25
|
+
*/
|
|
26
|
+
class GenericTransaction {
|
|
27
|
+
/**
|
|
28
|
+
* Create and open an edit of the provided `TreeView`. After applying 0 or more changes, this editor should be closed via `close()`.
|
|
29
|
+
* @param view - the `TreeView` at which this edit begins. The first change will be applied against this view.
|
|
30
|
+
*/
|
|
31
|
+
constructor(view, policy) {
|
|
32
|
+
this.open = true;
|
|
33
|
+
this.before = view;
|
|
34
|
+
this.policy = policy;
|
|
35
|
+
this.state = {
|
|
36
|
+
view: view.openForTransaction(),
|
|
37
|
+
status: persisted_types_1.EditStatus.Applied,
|
|
38
|
+
changes: [],
|
|
39
|
+
steps: [],
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
/** Whether or not this transaction has been closed via `close()` */
|
|
43
|
+
get isOpen() {
|
|
44
|
+
return this.open;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* The most up-to-date `TreeView` for this edit. This is the state of the tree after all changes applied so far.
|
|
48
|
+
*/
|
|
49
|
+
get view() {
|
|
50
|
+
return this.state.view;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* The status code of the most recent attempted change.
|
|
54
|
+
*/
|
|
55
|
+
get status() {
|
|
56
|
+
return this.state.status;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* The status code of the most recent attempted change.
|
|
60
|
+
*/
|
|
61
|
+
get changes() {
|
|
62
|
+
return this.state.changes;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* The status code of the most recent attempted change.
|
|
66
|
+
*/
|
|
67
|
+
get steps() {
|
|
68
|
+
return this.state.steps;
|
|
69
|
+
}
|
|
70
|
+
/** @returns the final `EditStatus` and `TreeView` after all changes are applied. */
|
|
71
|
+
close() {
|
|
72
|
+
Common_1.assert(this.open, 'transaction has already been closed');
|
|
73
|
+
this.open = false;
|
|
74
|
+
if (this.state.status === persisted_types_1.EditStatus.Applied) {
|
|
75
|
+
const validation = this.policy.validateOnClose(this.state);
|
|
76
|
+
if (Common_1.Result.isOk(validation)) {
|
|
77
|
+
if (validation.result !== this.view) {
|
|
78
|
+
this.state = Object.assign(Object.assign({}, this.state), { view: validation.result });
|
|
79
|
+
}
|
|
80
|
+
return {
|
|
81
|
+
status: persisted_types_1.EditStatus.Applied,
|
|
82
|
+
steps: this.steps,
|
|
83
|
+
changes: this.changes,
|
|
84
|
+
before: this.before,
|
|
85
|
+
after: this.view.close(),
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
this.state = Object.assign(Object.assign({}, this.state), validation.error);
|
|
89
|
+
return Object.assign(Object.assign({}, validation.error), { steps: this.steps, changes: this.changes, before: this.before });
|
|
90
|
+
}
|
|
91
|
+
return {
|
|
92
|
+
status: this.state.status,
|
|
93
|
+
failure: this.state.failure,
|
|
94
|
+
steps: this.steps,
|
|
95
|
+
changes: this.changes,
|
|
96
|
+
before: this.before,
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* A helper to apply a sequence of changes. Changes will be applied one after the other. If a change fails to apply,
|
|
101
|
+
* the remaining changes in `changes` will be ignored.
|
|
102
|
+
* @param changes - the sequence of changes to apply.
|
|
103
|
+
* @param path - the reconciliation path for the first change.
|
|
104
|
+
* @returns this
|
|
105
|
+
*/
|
|
106
|
+
applyChanges(changes, path = []) {
|
|
107
|
+
const iter = changes[Symbol.iterator]();
|
|
108
|
+
const firsChangeInternal = iter.next().value;
|
|
109
|
+
let iterResult = iter.next();
|
|
110
|
+
if (iterResult.done === true) {
|
|
111
|
+
for (const change of changes) {
|
|
112
|
+
if (this.applyChange(change, path).status !== persisted_types_1.EditStatus.Applied) {
|
|
113
|
+
return this;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return this;
|
|
117
|
+
}
|
|
118
|
+
if (this.applyChange(firsChangeInternal, path).status !== persisted_types_1.EditStatus.Applied) {
|
|
119
|
+
return this;
|
|
120
|
+
}
|
|
121
|
+
const ongoingEdit = {
|
|
122
|
+
0: this.steps[this.steps.length - 1],
|
|
123
|
+
before: this.view,
|
|
124
|
+
after: this.view,
|
|
125
|
+
length: 1,
|
|
126
|
+
};
|
|
127
|
+
/**
|
|
128
|
+
* We use a Proxy instead of `{ ...path, ...objectWithOngoingEdit }` to avoid eagerly demanding all parts of the path, which may
|
|
129
|
+
* require extensive computation.
|
|
130
|
+
*/
|
|
131
|
+
const pathWithOngoingEdit = new Proxy(path, {
|
|
132
|
+
get: (target, prop) => {
|
|
133
|
+
if (prop === 'length') {
|
|
134
|
+
return target.length + 1;
|
|
135
|
+
}
|
|
136
|
+
return prop === String(target.length) ? ongoingEdit : target[prop];
|
|
137
|
+
},
|
|
138
|
+
});
|
|
139
|
+
while (iterResult.done !== true) {
|
|
140
|
+
if (this.applyChange(iterResult.value, pathWithOngoingEdit).status !== persisted_types_1.EditStatus.Applied) {
|
|
141
|
+
return this;
|
|
142
|
+
}
|
|
143
|
+
ongoingEdit[ongoingEdit.length] = this.steps[this.steps.length - 1];
|
|
144
|
+
ongoingEdit.length += 1;
|
|
145
|
+
ongoingEdit.after = this.view;
|
|
146
|
+
iterResult = iter.next();
|
|
147
|
+
}
|
|
148
|
+
return this;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Attempt to apply the given change as part of this edit. This method should not be called if a previous change in this edit failed to
|
|
152
|
+
* apply.
|
|
153
|
+
* @param change - the change to apply
|
|
154
|
+
* @param path - the reconciliation path for the change.
|
|
155
|
+
* @returns this
|
|
156
|
+
*/
|
|
157
|
+
applyChange(change, path = []) {
|
|
158
|
+
Common_1.assert(this.open, 'Editor must be open to apply changes.');
|
|
159
|
+
if (this.state.status !== persisted_types_1.EditStatus.Applied) {
|
|
160
|
+
Common_1.fail('Cannot apply change to an edit unless all previous changes have applied');
|
|
161
|
+
}
|
|
162
|
+
const resolutionResult = this.policy.tryResolveChange(this.state, change, path);
|
|
163
|
+
if (Common_1.Result.isError(resolutionResult)) {
|
|
164
|
+
this.state = Object.assign(Object.assign({}, this.state), resolutionResult.error);
|
|
165
|
+
return this;
|
|
166
|
+
}
|
|
167
|
+
const resolvedChange = resolutionResult.result;
|
|
168
|
+
const changeResult = this.policy.dispatchChange(this.state, resolvedChange);
|
|
169
|
+
if (Common_1.Result.isOk(changeResult)) {
|
|
170
|
+
this.state = {
|
|
171
|
+
status: persisted_types_1.EditStatus.Applied,
|
|
172
|
+
view: changeResult.result,
|
|
173
|
+
changes: this.changes.concat(change),
|
|
174
|
+
steps: this.steps.concat({ resolvedChange, after: changeResult.result }),
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
this.state = Object.assign(Object.assign({}, this.state), changeResult.error);
|
|
179
|
+
}
|
|
180
|
+
return this;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
exports.GenericTransaction = GenericTransaction;
|
|
184
|
+
/**
|
|
185
|
+
* A mutable transaction for applying sequences of changes to a TreeView.
|
|
186
|
+
* Allows viewing the intermediate states.
|
|
187
|
+
*
|
|
188
|
+
* Contains necessary state to apply changes within an edit to a TreeView.
|
|
189
|
+
*
|
|
190
|
+
* May have any number of changes applied to make up the edit.
|
|
191
|
+
* Use `close` to complete the transaction, returning the array of changes and an EditingResult showing the
|
|
192
|
+
* results of applying the changes as an Edit to the initial TreeView (passed to the constructor).
|
|
193
|
+
*
|
|
194
|
+
* No data outside the Transaction is modified by Transaction:
|
|
195
|
+
* the results from `close` must be used to actually submit an `Edit`.
|
|
196
|
+
* @public
|
|
197
|
+
*/
|
|
198
|
+
var TransactionInternal;
|
|
199
|
+
(function (TransactionInternal) {
|
|
200
|
+
/**
|
|
201
|
+
* Makes a new {@link GenericTransaction} that follows the {@link TransactionInternal.Policy} policy.
|
|
202
|
+
*/
|
|
203
|
+
function factory(view) {
|
|
204
|
+
return new GenericTransaction(view, new Policy());
|
|
205
|
+
}
|
|
206
|
+
TransactionInternal.factory = factory;
|
|
207
|
+
/**
|
|
208
|
+
* The policy followed by a {@link TransactionInternal}.
|
|
209
|
+
*/
|
|
210
|
+
class Policy {
|
|
211
|
+
constructor() {
|
|
212
|
+
/**
|
|
213
|
+
* Maps detached sequences of nodes to their NodeIds
|
|
214
|
+
*/
|
|
215
|
+
this.detached = new Map();
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Resolves change with Result.Ok
|
|
219
|
+
*
|
|
220
|
+
* @param state - Unused
|
|
221
|
+
* @param change - Change to resolve
|
|
222
|
+
* @returns Result.Ok which contains change
|
|
223
|
+
*/
|
|
224
|
+
tryResolveChange(state, change) {
|
|
225
|
+
return Common_1.Result.ok(change);
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Validates the transaction when it is closed
|
|
229
|
+
*
|
|
230
|
+
* @param state - Current state
|
|
231
|
+
* @returns a {@link ChangeResult} containing either the change result or a Failure
|
|
232
|
+
*/
|
|
233
|
+
validateOnClose(state) {
|
|
234
|
+
// Making the policy choice that storing a detached sequences in an edit but not using it is an error.
|
|
235
|
+
return this.detached.size !== 0
|
|
236
|
+
? Common_1.Result.error({
|
|
237
|
+
status: persisted_types_1.EditStatus.Malformed,
|
|
238
|
+
failure: {
|
|
239
|
+
kind: FailureKind.UnusedDetachedSequence,
|
|
240
|
+
sequenceId: this.detached.keys().next().value,
|
|
241
|
+
},
|
|
242
|
+
})
|
|
243
|
+
: Common_1.Result.ok(state.view);
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Applies a given change
|
|
247
|
+
*
|
|
248
|
+
* @param state - Current state
|
|
249
|
+
* @param change - Change to apply
|
|
250
|
+
* @returns a {@link ChangeResult} containing either the change result or a Failure
|
|
251
|
+
*/
|
|
252
|
+
dispatchChange(state, change) {
|
|
253
|
+
switch (change.type) {
|
|
254
|
+
case persisted_types_1.ChangeTypeInternal.Build:
|
|
255
|
+
return this.applyBuild(state, change);
|
|
256
|
+
case persisted_types_1.ChangeTypeInternal.Insert:
|
|
257
|
+
return this.applyInsert(state, change);
|
|
258
|
+
case persisted_types_1.ChangeTypeInternal.Detach:
|
|
259
|
+
return this.applyDetach(state, change);
|
|
260
|
+
case persisted_types_1.ChangeTypeInternal.Constraint:
|
|
261
|
+
return this.applyConstraint(state, change);
|
|
262
|
+
case persisted_types_1.ChangeTypeInternal.SetValue:
|
|
263
|
+
return this.applySetValue(state, change);
|
|
264
|
+
default:
|
|
265
|
+
return Common_1.fail('Attempted to apply unsupported change');
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
applyBuild(state, change) {
|
|
269
|
+
if (this.detached.has(change.destination)) {
|
|
270
|
+
return Common_1.Result.error({
|
|
271
|
+
status: persisted_types_1.EditStatus.Malformed,
|
|
272
|
+
failure: {
|
|
273
|
+
kind: FailureKind.DetachedSequenceIdAlreadyInUse,
|
|
274
|
+
change,
|
|
275
|
+
sequenceId: change.destination,
|
|
276
|
+
},
|
|
277
|
+
});
|
|
278
|
+
}
|
|
279
|
+
let idAlreadyPresent;
|
|
280
|
+
let duplicateIdInBuild;
|
|
281
|
+
let invalidId;
|
|
282
|
+
let detachedSequenceNotFound;
|
|
283
|
+
const map = new Map();
|
|
284
|
+
const newIds = this.createViewNodesForTree(change.source, (id, viewNode) => {
|
|
285
|
+
if (map.has(id)) {
|
|
286
|
+
duplicateIdInBuild = id;
|
|
287
|
+
return true;
|
|
288
|
+
}
|
|
289
|
+
if (state.view.hasNode(viewNode.identifier)) {
|
|
290
|
+
idAlreadyPresent = id;
|
|
291
|
+
return true;
|
|
292
|
+
}
|
|
293
|
+
map.set(id, viewNode);
|
|
294
|
+
return false;
|
|
295
|
+
}, (detachedId) => {
|
|
296
|
+
detachedSequenceNotFound = detachedId;
|
|
297
|
+
});
|
|
298
|
+
if (idAlreadyPresent !== undefined) {
|
|
299
|
+
return Common_1.Result.error({
|
|
300
|
+
status: persisted_types_1.EditStatus.Invalid,
|
|
301
|
+
failure: { kind: FailureKind.IdAlreadyInUse, change, id: idAlreadyPresent },
|
|
302
|
+
});
|
|
303
|
+
}
|
|
304
|
+
if (duplicateIdInBuild !== undefined) {
|
|
305
|
+
return Common_1.Result.error({
|
|
306
|
+
status: persisted_types_1.EditStatus.Malformed,
|
|
307
|
+
failure: { kind: FailureKind.DuplicateIdInBuild, change, id: duplicateIdInBuild },
|
|
308
|
+
});
|
|
309
|
+
}
|
|
310
|
+
if (invalidId !== undefined) {
|
|
311
|
+
return Common_1.Result.error({
|
|
312
|
+
status: persisted_types_1.EditStatus.Invalid,
|
|
313
|
+
failure: { kind: FailureKind.UnknownId, change, id: invalidId },
|
|
314
|
+
});
|
|
315
|
+
}
|
|
316
|
+
if (detachedSequenceNotFound !== undefined) {
|
|
317
|
+
return Common_1.Result.error({
|
|
318
|
+
status: persisted_types_1.EditStatus.Malformed,
|
|
319
|
+
failure: {
|
|
320
|
+
kind: FailureKind.DetachedSequenceNotFound,
|
|
321
|
+
change,
|
|
322
|
+
sequenceId: detachedSequenceNotFound,
|
|
323
|
+
},
|
|
324
|
+
});
|
|
325
|
+
}
|
|
326
|
+
const view = state.view.addNodes(map.values());
|
|
327
|
+
this.detached.set(change.destination, newIds !== null && newIds !== void 0 ? newIds : Common_1.fail('Unhandled failure case in Transaction.createViewNodesForTree'));
|
|
328
|
+
return Common_1.Result.ok(view);
|
|
329
|
+
}
|
|
330
|
+
applyInsert(state, change) {
|
|
331
|
+
const source = this.detached.get(change.source);
|
|
332
|
+
if (source === undefined) {
|
|
333
|
+
return Common_1.Result.error({
|
|
334
|
+
status: persisted_types_1.EditStatus.Malformed,
|
|
335
|
+
failure: {
|
|
336
|
+
kind: FailureKind.DetachedSequenceNotFound,
|
|
337
|
+
change,
|
|
338
|
+
sequenceId: change.source,
|
|
339
|
+
},
|
|
340
|
+
});
|
|
341
|
+
}
|
|
342
|
+
const validatedDestination = EditUtilities_1.validateStablePlace(state.view, change.destination);
|
|
343
|
+
if (validatedDestination.result !== EditUtilities_1.PlaceValidationResult.Valid) {
|
|
344
|
+
return Common_1.Result.error({
|
|
345
|
+
status: validatedDestination.result === EditUtilities_1.PlaceValidationResult.Malformed
|
|
346
|
+
? persisted_types_1.EditStatus.Malformed
|
|
347
|
+
: persisted_types_1.EditStatus.Invalid,
|
|
348
|
+
failure: {
|
|
349
|
+
kind: FailureKind.BadPlace,
|
|
350
|
+
change,
|
|
351
|
+
place: change.destination,
|
|
352
|
+
placeFailure: validatedDestination.result,
|
|
353
|
+
},
|
|
354
|
+
});
|
|
355
|
+
}
|
|
356
|
+
this.detached.delete(change.source);
|
|
357
|
+
const view = EditUtilities_1.insertIntoTrait(state.view, source, validatedDestination);
|
|
358
|
+
return Common_1.Result.ok(view);
|
|
359
|
+
}
|
|
360
|
+
applyDetach(state, change) {
|
|
361
|
+
const validatedSource = EditUtilities_1.validateStableRange(state.view, change.source);
|
|
362
|
+
if (validatedSource.result !== EditUtilities_1.RangeValidationResultKind.Valid) {
|
|
363
|
+
return Common_1.Result.error({
|
|
364
|
+
status: validatedSource.result === EditUtilities_1.RangeValidationResultKind.PlacesInDifferentTraits ||
|
|
365
|
+
validatedSource.result === EditUtilities_1.RangeValidationResultKind.Inverted ||
|
|
366
|
+
validatedSource.result.placeFailure !== EditUtilities_1.PlaceValidationResult.Malformed
|
|
367
|
+
? persisted_types_1.EditStatus.Invalid
|
|
368
|
+
: persisted_types_1.EditStatus.Malformed,
|
|
369
|
+
failure: {
|
|
370
|
+
kind: FailureKind.BadRange,
|
|
371
|
+
change,
|
|
372
|
+
range: change.source,
|
|
373
|
+
rangeFailure: validatedSource.result,
|
|
374
|
+
},
|
|
375
|
+
});
|
|
376
|
+
}
|
|
377
|
+
const result = EditUtilities_1.detachRange(state.view, validatedSource);
|
|
378
|
+
let modifiedView = result.view;
|
|
379
|
+
const { detached } = result;
|
|
380
|
+
// Store or dispose detached
|
|
381
|
+
if (change.destination !== undefined) {
|
|
382
|
+
if (this.detached.has(change.destination)) {
|
|
383
|
+
return Common_1.Result.error({
|
|
384
|
+
status: persisted_types_1.EditStatus.Malformed,
|
|
385
|
+
failure: {
|
|
386
|
+
kind: FailureKind.DetachedSequenceIdAlreadyInUse,
|
|
387
|
+
change,
|
|
388
|
+
sequenceId: change.destination,
|
|
389
|
+
},
|
|
390
|
+
});
|
|
391
|
+
}
|
|
392
|
+
this.detached.set(change.destination, detached);
|
|
393
|
+
}
|
|
394
|
+
else {
|
|
395
|
+
modifiedView = modifiedView.deleteNodes(detached);
|
|
396
|
+
}
|
|
397
|
+
return Common_1.Result.ok(modifiedView);
|
|
398
|
+
}
|
|
399
|
+
applyConstraint(state, change) {
|
|
400
|
+
// TODO: Implement identityHash and contentHash
|
|
401
|
+
Common_1.assert(change.identityHash === undefined, 'identityHash constraint is not implemented');
|
|
402
|
+
Common_1.assert(change.contentHash === undefined, 'contentHash constraint is not implemented');
|
|
403
|
+
const validatedChange = EditUtilities_1.validateStableRange(state.view, change.toConstrain);
|
|
404
|
+
if (validatedChange.result !== EditUtilities_1.RangeValidationResultKind.Valid) {
|
|
405
|
+
return validatedChange.result !== EditUtilities_1.RangeValidationResultKind.PlacesInDifferentTraits &&
|
|
406
|
+
validatedChange.result !== EditUtilities_1.RangeValidationResultKind.Inverted &&
|
|
407
|
+
validatedChange.result.placeFailure !== EditUtilities_1.PlaceValidationResult.Malformed
|
|
408
|
+
? change.effect === persisted_types_1.ConstraintEffect.ValidRetry
|
|
409
|
+
? Common_1.Result.ok(state.view)
|
|
410
|
+
: Common_1.Result.error({
|
|
411
|
+
status: persisted_types_1.EditStatus.Invalid,
|
|
412
|
+
failure: {
|
|
413
|
+
kind: FailureKind.ConstraintViolation,
|
|
414
|
+
constraint: change,
|
|
415
|
+
violation: {
|
|
416
|
+
kind: ConstraintViolationKind.BadRange,
|
|
417
|
+
rangeFailure: validatedChange.result,
|
|
418
|
+
},
|
|
419
|
+
},
|
|
420
|
+
})
|
|
421
|
+
: Common_1.Result.error({
|
|
422
|
+
status: persisted_types_1.EditStatus.Malformed,
|
|
423
|
+
failure: {
|
|
424
|
+
kind: FailureKind.ConstraintViolation,
|
|
425
|
+
constraint: change,
|
|
426
|
+
violation: {
|
|
427
|
+
kind: ConstraintViolationKind.BadRange,
|
|
428
|
+
rangeFailure: validatedChange.result,
|
|
429
|
+
},
|
|
430
|
+
},
|
|
431
|
+
});
|
|
432
|
+
}
|
|
433
|
+
const { start, end } = TreeViewUtilities_1.rangeFromStableRange(state.view, validatedChange);
|
|
434
|
+
const startIndex = state.view.findIndexWithinTrait(start);
|
|
435
|
+
const endIndex = state.view.findIndexWithinTrait(end);
|
|
436
|
+
if (change.length !== undefined && change.length !== endIndex - startIndex) {
|
|
437
|
+
return Common_1.Result.error({
|
|
438
|
+
status: persisted_types_1.EditStatus.Invalid,
|
|
439
|
+
failure: {
|
|
440
|
+
kind: FailureKind.ConstraintViolation,
|
|
441
|
+
constraint: change,
|
|
442
|
+
violation: {
|
|
443
|
+
kind: ConstraintViolationKind.BadLength,
|
|
444
|
+
actual: endIndex - startIndex,
|
|
445
|
+
},
|
|
446
|
+
},
|
|
447
|
+
});
|
|
448
|
+
}
|
|
449
|
+
if (change.parentNode !== undefined && change.parentNode !== end.trait.parent) {
|
|
450
|
+
return Common_1.Result.error({
|
|
451
|
+
status: persisted_types_1.EditStatus.Invalid,
|
|
452
|
+
failure: {
|
|
453
|
+
kind: FailureKind.ConstraintViolation,
|
|
454
|
+
constraint: change,
|
|
455
|
+
violation: {
|
|
456
|
+
kind: ConstraintViolationKind.BadParent,
|
|
457
|
+
actual: change.parentNode,
|
|
458
|
+
},
|
|
459
|
+
},
|
|
460
|
+
});
|
|
461
|
+
}
|
|
462
|
+
if (change.label !== undefined && change.label !== end.trait.label) {
|
|
463
|
+
return Common_1.Result.error({
|
|
464
|
+
status: persisted_types_1.EditStatus.Invalid,
|
|
465
|
+
failure: {
|
|
466
|
+
kind: FailureKind.ConstraintViolation,
|
|
467
|
+
constraint: change,
|
|
468
|
+
violation: {
|
|
469
|
+
kind: ConstraintViolationKind.BadLabel,
|
|
470
|
+
actual: end.trait.label,
|
|
471
|
+
},
|
|
472
|
+
},
|
|
473
|
+
});
|
|
474
|
+
}
|
|
475
|
+
return Common_1.Result.ok(state.view);
|
|
476
|
+
}
|
|
477
|
+
applySetValue(state, change) {
|
|
478
|
+
if (!state.view.hasNode(change.nodeToModify)) {
|
|
479
|
+
return Common_1.Result.error({
|
|
480
|
+
status: persisted_types_1.EditStatus.Invalid,
|
|
481
|
+
failure: { kind: FailureKind.UnknownId, change, id: change.nodeToModify },
|
|
482
|
+
});
|
|
483
|
+
}
|
|
484
|
+
const newView = state.view.setNodeValue(change.nodeToModify, change.payload);
|
|
485
|
+
return Common_1.Result.ok(newView);
|
|
486
|
+
}
|
|
487
|
+
/**
|
|
488
|
+
* Generates tree view nodes from the supplied edit nodes.
|
|
489
|
+
* Invokes onCreateNode for each new node, and halts creation early if it returns true.
|
|
490
|
+
* Invokes onInvalidDetachedId and halts early for any invalid detached IDs referenced in the edit node sequence.
|
|
491
|
+
* @returns all the top-level node IDs in `sequence` (both from nodes and from detached sequences).
|
|
492
|
+
*/
|
|
493
|
+
createViewNodesForTree(sequence, onCreateNode, onInvalidDetachedId) {
|
|
494
|
+
const topLevelIds = [];
|
|
495
|
+
const unprocessed = [];
|
|
496
|
+
for (const buildNode of sequence) {
|
|
497
|
+
if (Identifiers_1.isDetachedSequenceId(buildNode)) {
|
|
498
|
+
const detachedIds = this.getDetachedNodeIds(buildNode, onInvalidDetachedId);
|
|
499
|
+
if (detachedIds === undefined) {
|
|
500
|
+
return undefined;
|
|
501
|
+
}
|
|
502
|
+
topLevelIds.push(...detachedIds);
|
|
503
|
+
}
|
|
504
|
+
else {
|
|
505
|
+
unprocessed.push(buildNode);
|
|
506
|
+
topLevelIds.push(buildNode.identifier);
|
|
507
|
+
}
|
|
508
|
+
}
|
|
509
|
+
while (unprocessed.length > 0) {
|
|
510
|
+
const node = unprocessed.pop();
|
|
511
|
+
Common_1.assert(node !== undefined && !Identifiers_1.isDetachedSequenceId(node));
|
|
512
|
+
const traits = new Map();
|
|
513
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
514
|
+
for (const key in node.traits) {
|
|
515
|
+
if (Object.prototype.hasOwnProperty.call(node.traits, key)) {
|
|
516
|
+
const children = node.traits[key];
|
|
517
|
+
if (children.length > 0) {
|
|
518
|
+
const childIds = [];
|
|
519
|
+
for (const child of children) {
|
|
520
|
+
if (Identifiers_1.isDetachedSequenceId(child)) {
|
|
521
|
+
const detachedIds = this.getDetachedNodeIds(child, onInvalidDetachedId);
|
|
522
|
+
if (detachedIds === undefined) {
|
|
523
|
+
return undefined;
|
|
524
|
+
}
|
|
525
|
+
childIds.push(...detachedIds);
|
|
526
|
+
}
|
|
527
|
+
else {
|
|
528
|
+
childIds.push(child.identifier);
|
|
529
|
+
unprocessed.push(child);
|
|
530
|
+
}
|
|
531
|
+
}
|
|
532
|
+
traits.set(key, childIds);
|
|
533
|
+
}
|
|
534
|
+
}
|
|
535
|
+
}
|
|
536
|
+
const newNode = {
|
|
537
|
+
identifier: node.identifier,
|
|
538
|
+
definition: node.definition,
|
|
539
|
+
traits,
|
|
540
|
+
};
|
|
541
|
+
Common_1.copyPropertyIfDefined(node, newNode, 'payload');
|
|
542
|
+
if (onCreateNode(node.identifier, newNode)) {
|
|
543
|
+
return undefined;
|
|
544
|
+
}
|
|
545
|
+
}
|
|
546
|
+
return topLevelIds;
|
|
547
|
+
}
|
|
548
|
+
getDetachedNodeIds(detachedId, onInvalidDetachedId) {
|
|
549
|
+
// Retrieve the detached sequence from the void.
|
|
550
|
+
const detachedNodeIds = this.detached.get(detachedId);
|
|
551
|
+
if (detachedNodeIds === undefined) {
|
|
552
|
+
onInvalidDetachedId(detachedId);
|
|
553
|
+
return undefined;
|
|
554
|
+
}
|
|
555
|
+
// Since we have retrieved the sequence, remove it from the void to prevent a second tree from multi-parenting it later
|
|
556
|
+
this.detached.delete(detachedId);
|
|
557
|
+
return detachedNodeIds;
|
|
558
|
+
}
|
|
559
|
+
}
|
|
560
|
+
TransactionInternal.Policy = Policy;
|
|
561
|
+
/**
|
|
562
|
+
* The kinds of failures that a transaction might encounter.
|
|
563
|
+
*/
|
|
564
|
+
let FailureKind;
|
|
565
|
+
(function (FailureKind) {
|
|
566
|
+
/**
|
|
567
|
+
* Transaction has an unused DetachedSequenceId
|
|
568
|
+
*/
|
|
569
|
+
FailureKind["UnusedDetachedSequence"] = "UnusedDetachedSequence";
|
|
570
|
+
/**
|
|
571
|
+
* Transaction has a build operation using an already in use DetachedSequenceID.
|
|
572
|
+
*/
|
|
573
|
+
FailureKind["DetachedSequenceIdAlreadyInUse"] = "DetachedSequenceIdAlreadyInUse";
|
|
574
|
+
/**
|
|
575
|
+
* Transaction tries to operate on an unknown DetachedSequenceID
|
|
576
|
+
*/
|
|
577
|
+
FailureKind["DetachedSequenceNotFound"] = "DetachedSequenceNotFound";
|
|
578
|
+
/**
|
|
579
|
+
* Transaction has a build which uses a duplicated NodeId
|
|
580
|
+
*/
|
|
581
|
+
FailureKind["DuplicateIdInBuild"] = "DuplicateIdInBuild";
|
|
582
|
+
/**
|
|
583
|
+
* Transaction tries to build a node using an ID which is already used in the current state
|
|
584
|
+
*/
|
|
585
|
+
FailureKind["IdAlreadyInUse"] = "IdAlreadyInUse";
|
|
586
|
+
/**
|
|
587
|
+
* Transaction tries to set value of an unknown node
|
|
588
|
+
*/
|
|
589
|
+
FailureKind["UnknownId"] = "UnknownId";
|
|
590
|
+
/**
|
|
591
|
+
* Transaction tries to insert in an invalid Place
|
|
592
|
+
*/
|
|
593
|
+
FailureKind["BadPlace"] = "BadPlace";
|
|
594
|
+
/**
|
|
595
|
+
* Transaction tries to detach an invalid Range
|
|
596
|
+
*/
|
|
597
|
+
FailureKind["BadRange"] = "BadRange";
|
|
598
|
+
/**
|
|
599
|
+
* Transaction has an invalid constraint
|
|
600
|
+
*/
|
|
601
|
+
FailureKind["ConstraintViolation"] = "ConstraintViolation";
|
|
602
|
+
})(FailureKind = TransactionInternal.FailureKind || (TransactionInternal.FailureKind = {}));
|
|
603
|
+
/**
|
|
604
|
+
* Enum of possible kinds of constraint violations that can be encountered
|
|
605
|
+
*/
|
|
606
|
+
let ConstraintViolationKind;
|
|
607
|
+
(function (ConstraintViolationKind) {
|
|
608
|
+
/**
|
|
609
|
+
* The constraint failed because it applies to an invalid range
|
|
610
|
+
*/
|
|
611
|
+
ConstraintViolationKind["BadRange"] = "BadRange";
|
|
612
|
+
/**
|
|
613
|
+
* The constraint failed because the length prescribed by the constraint does not match the length of range being constrained
|
|
614
|
+
*/
|
|
615
|
+
ConstraintViolationKind["BadLength"] = "BadLength";
|
|
616
|
+
/**
|
|
617
|
+
* The constraint failed because the parent prescribed by the constraint does not match the actual parent of the range being constrained
|
|
618
|
+
*/
|
|
619
|
+
ConstraintViolationKind["BadParent"] = "BadParent";
|
|
620
|
+
/**
|
|
621
|
+
* The constraint failed because the trait label prescribed by the constraint does not match the actual trait label of the range being constrained
|
|
622
|
+
*/
|
|
623
|
+
ConstraintViolationKind["BadLabel"] = "BadLabel";
|
|
624
|
+
})(ConstraintViolationKind = TransactionInternal.ConstraintViolationKind || (TransactionInternal.ConstraintViolationKind = {}));
|
|
625
|
+
})(TransactionInternal = exports.TransactionInternal || (exports.TransactionInternal = {}));
|
|
626
|
+
//# sourceMappingURL=TransactionInternal.js.map
|