@fluid-experimental/tree 0.58.2001 → 0.59.2000-61729
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +159 -46
- package/dist/ChangeCompression.d.ts +39 -0
- package/dist/ChangeCompression.d.ts.map +1 -0
- package/dist/ChangeCompression.js +117 -0
- package/dist/ChangeCompression.js.map +1 -0
- package/{lib/default-edits/PersistedTypes.d.ts → dist/ChangeTypes.d.ts} +58 -105
- package/dist/ChangeTypes.d.ts.map +1 -0
- package/dist/{default-edits/PersistedTypes.js → ChangeTypes.js} +21 -76
- package/dist/ChangeTypes.js.map +1 -0
- package/dist/Checkout.d.ts +39 -27
- package/dist/Checkout.d.ts.map +1 -1
- package/dist/Checkout.js +61 -32
- package/dist/Checkout.js.map +1 -1
- package/dist/Common.d.ts +175 -38
- package/dist/Common.d.ts.map +1 -1
- package/dist/Common.js +240 -103
- package/dist/Common.js.map +1 -1
- package/dist/EagerCheckout.d.ts +24 -0
- package/dist/EagerCheckout.d.ts.map +1 -0
- package/dist/{BasicCheckout.js → EagerCheckout.js} +9 -6
- package/dist/EagerCheckout.js.map +1 -0
- package/dist/EditLog.d.ts +77 -63
- package/dist/EditLog.d.ts.map +1 -1
- package/dist/EditLog.js +85 -48
- package/dist/EditLog.js.map +1 -1
- package/dist/EditUtilities.d.ts +168 -0
- package/dist/EditUtilities.d.ts.map +1 -0
- package/dist/EditUtilities.js +373 -0
- package/dist/EditUtilities.js.map +1 -0
- package/dist/EventTypes.d.ts +73 -0
- package/dist/EventTypes.d.ts.map +1 -0
- package/dist/EventTypes.js +78 -0
- package/dist/EventTypes.js.map +1 -0
- package/dist/Forest.d.ts +29 -7
- package/dist/Forest.d.ts.map +1 -1
- package/dist/Forest.js +60 -36
- package/dist/Forest.js.map +1 -1
- package/dist/HistoryEditFactory.d.ts +20 -0
- package/dist/HistoryEditFactory.d.ts.map +1 -0
- package/dist/HistoryEditFactory.js +226 -0
- package/dist/HistoryEditFactory.js.map +1 -0
- package/dist/IdConversion.d.ts +12 -0
- package/dist/IdConversion.d.ts.map +1 -0
- package/dist/IdConversion.js +98 -0
- package/dist/IdConversion.js.map +1 -0
- package/dist/Identifiers.d.ts +89 -2
- package/dist/Identifiers.d.ts.map +1 -1
- package/dist/Identifiers.js +10 -0
- package/dist/Identifiers.js.map +1 -1
- package/dist/InitialTree.d.ts +2 -2
- package/dist/InitialTree.d.ts.map +1 -1
- package/dist/InitialTree.js +2 -1
- package/dist/InitialTree.js.map +1 -1
- package/dist/LazyCheckout.d.ts +28 -0
- package/dist/LazyCheckout.d.ts.map +1 -0
- package/dist/LazyCheckout.js +44 -0
- package/dist/LazyCheckout.js.map +1 -0
- package/dist/LogViewer.d.ts +129 -85
- package/dist/LogViewer.d.ts.map +1 -1
- package/dist/LogViewer.js +111 -85
- package/dist/LogViewer.js.map +1 -1
- package/dist/MergeHealth.d.ts +221 -0
- package/dist/MergeHealth.d.ts.map +1 -0
- package/dist/MergeHealth.js +263 -0
- package/dist/MergeHealth.js.map +1 -0
- package/dist/NodeIdUtilities.d.ts +105 -0
- package/dist/NodeIdUtilities.d.ts.map +1 -0
- package/dist/NodeIdUtilities.js +60 -0
- package/dist/NodeIdUtilities.js.map +1 -0
- package/dist/PayloadUtilities.d.ts +42 -0
- package/dist/PayloadUtilities.d.ts.map +1 -0
- package/dist/PayloadUtilities.js +114 -0
- package/dist/PayloadUtilities.js.map +1 -0
- package/dist/ReconciliationPath.d.ts +18 -13
- package/dist/ReconciliationPath.d.ts.map +1 -1
- package/dist/ReconciliationPath.js.map +1 -1
- package/dist/RevisionValueCache.d.ts +11 -2
- package/dist/RevisionValueCache.d.ts.map +1 -1
- package/dist/RevisionValueCache.js +2 -3
- package/dist/RevisionValueCache.js.map +1 -1
- package/dist/RevisionView.d.ts +83 -0
- package/dist/RevisionView.d.ts.map +1 -0
- package/dist/RevisionView.js +182 -0
- package/dist/RevisionView.js.map +1 -0
- package/dist/SerializationUtilities.d.ts +36 -0
- package/dist/SerializationUtilities.d.ts.map +1 -0
- package/dist/SerializationUtilities.js +102 -0
- package/dist/SerializationUtilities.js.map +1 -0
- package/dist/SharedTree.d.ts +439 -0
- package/dist/SharedTree.d.ts.map +1 -0
- package/dist/SharedTree.js +1109 -0
- package/dist/SharedTree.js.map +1 -0
- package/dist/SharedTreeEncoder.d.ts +102 -0
- package/dist/SharedTreeEncoder.d.ts.map +1 -0
- package/dist/SharedTreeEncoder.js +313 -0
- package/dist/SharedTreeEncoder.js.map +1 -0
- package/dist/StringInterner.d.ts +46 -0
- package/dist/StringInterner.d.ts.map +1 -0
- package/dist/StringInterner.js +61 -0
- package/dist/StringInterner.js.map +1 -0
- package/dist/Summary.d.ts +40 -0
- package/dist/Summary.d.ts.map +1 -0
- package/dist/Summary.js +23 -0
- package/dist/Summary.js.map +1 -0
- package/dist/SummaryBackCompatibility.d.ts +22 -22
- package/dist/SummaryBackCompatibility.d.ts.map +1 -1
- package/dist/SummaryBackCompatibility.js +30 -33
- package/dist/SummaryBackCompatibility.js.map +1 -1
- package/dist/SummaryTestUtilities.d.ts +31 -0
- package/dist/SummaryTestUtilities.d.ts.map +1 -0
- package/dist/SummaryTestUtilities.js +37 -0
- package/dist/SummaryTestUtilities.js.map +1 -0
- package/dist/Transaction.d.ts +71 -0
- package/dist/Transaction.d.ts.map +1 -0
- package/dist/Transaction.js +92 -0
- package/dist/Transaction.js.map +1 -0
- package/dist/TransactionInternal.d.ts +540 -0
- package/dist/TransactionInternal.d.ts.map +1 -0
- package/dist/TransactionInternal.js +626 -0
- package/dist/TransactionInternal.js.map +1 -0
- package/dist/TreeCompressor.d.ts +36 -0
- package/dist/TreeCompressor.d.ts.map +1 -0
- package/dist/TreeCompressor.js +137 -0
- package/dist/TreeCompressor.js.map +1 -0
- package/dist/TreeNodeHandle.d.ts +12 -18
- package/dist/TreeNodeHandle.d.ts.map +1 -1
- package/dist/TreeNodeHandle.js +13 -23
- package/dist/TreeNodeHandle.js.map +1 -1
- package/dist/TreeView.d.ts +166 -0
- package/dist/TreeView.d.ts.map +1 -0
- package/dist/TreeView.js +218 -0
- package/dist/TreeView.js.map +1 -0
- package/dist/TreeViewUtilities.d.ts +21 -0
- package/dist/TreeViewUtilities.d.ts.map +1 -0
- package/dist/TreeViewUtilities.js +77 -0
- package/dist/TreeViewUtilities.js.map +1 -0
- package/dist/{default-edits/UndoRedoHandler.d.ts → UndoRedoHandler.d.ts} +2 -2
- package/dist/UndoRedoHandler.d.ts.map +1 -0
- package/dist/{default-edits/UndoRedoHandler.js → UndoRedoHandler.js} +5 -9
- package/dist/UndoRedoHandler.js.map +1 -0
- package/dist/id-compressor/AppendOnlySortedMap.d.ts +127 -0
- package/dist/id-compressor/AppendOnlySortedMap.d.ts.map +1 -0
- package/dist/id-compressor/AppendOnlySortedMap.js +283 -0
- package/dist/id-compressor/AppendOnlySortedMap.js.map +1 -0
- package/dist/id-compressor/IdCompressor.d.ts +389 -0
- package/dist/id-compressor/IdCompressor.d.ts.map +1 -0
- package/dist/id-compressor/IdCompressor.js +1353 -0
- package/dist/id-compressor/IdCompressor.js.map +1 -0
- package/dist/id-compressor/IdRange.d.ts +11 -0
- package/dist/id-compressor/IdRange.d.ts.map +1 -0
- package/dist/id-compressor/IdRange.js +29 -0
- package/dist/id-compressor/IdRange.js.map +1 -0
- package/dist/id-compressor/NumericUuid.d.ts +63 -0
- package/dist/id-compressor/NumericUuid.d.ts.map +1 -0
- package/dist/id-compressor/NumericUuid.js +377 -0
- package/dist/id-compressor/NumericUuid.js.map +1 -0
- package/dist/id-compressor/index.d.ts +12 -0
- package/dist/id-compressor/index.d.ts.map +1 -0
- package/dist/id-compressor/index.js +26 -0
- package/dist/id-compressor/index.js.map +1 -0
- package/dist/id-compressor/persisted-types/0.0.1.d.ts +156 -0
- package/dist/id-compressor/persisted-types/0.0.1.d.ts.map +1 -0
- package/dist/id-compressor/persisted-types/0.0.1.js +7 -0
- package/dist/id-compressor/persisted-types/0.0.1.js.map +1 -0
- package/dist/id-compressor/persisted-types/index.d.ts +6 -0
- package/dist/id-compressor/persisted-types/index.d.ts.map +1 -0
- package/dist/id-compressor/persisted-types/index.js +18 -0
- package/dist/id-compressor/persisted-types/index.js.map +1 -0
- package/dist/index.d.ts +29 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +50 -35
- package/dist/index.js.map +1 -1
- package/dist/persisted-types/0.0.2.d.ts +385 -0
- package/dist/persisted-types/0.0.2.d.ts.map +1 -0
- package/dist/persisted-types/0.0.2.js +113 -0
- package/dist/persisted-types/0.0.2.js.map +1 -0
- package/dist/persisted-types/0.1.1.d.ts +314 -0
- package/dist/persisted-types/0.1.1.d.ts.map +1 -0
- package/dist/persisted-types/0.1.1.js +153 -0
- package/dist/persisted-types/0.1.1.js.map +1 -0
- package/dist/persisted-types/index.d.ts +7 -0
- package/dist/persisted-types/index.d.ts.map +1 -0
- package/dist/persisted-types/index.js +20 -0
- package/dist/persisted-types/index.js.map +1 -0
- package/docs/0-1-1-Compression.md +228 -0
- package/docs/Breaking-Change-Migration.md +52 -0
- package/docs/Compression.md +2 -2
- package/docs/Telemetry.md +43 -0
- package/docs/Write-Format.md +19 -0
- package/lib/ChangeCompression.d.ts +39 -0
- package/lib/ChangeCompression.d.ts.map +1 -0
- package/lib/ChangeCompression.js +111 -0
- package/lib/ChangeCompression.js.map +1 -0
- package/{dist/default-edits/PersistedTypes.d.ts → lib/ChangeTypes.d.ts} +58 -105
- package/lib/ChangeTypes.d.ts.map +1 -0
- package/lib/{default-edits/PersistedTypes.js → ChangeTypes.js} +15 -68
- package/lib/ChangeTypes.js.map +1 -0
- package/lib/Checkout.d.ts +39 -27
- package/lib/Checkout.d.ts.map +1 -1
- package/lib/Checkout.js +53 -24
- package/lib/Checkout.js.map +1 -1
- package/lib/Common.d.ts +175 -38
- package/lib/Common.d.ts.map +1 -1
- package/lib/Common.js +226 -101
- package/lib/Common.js.map +1 -1
- package/lib/EagerCheckout.d.ts +24 -0
- package/lib/EagerCheckout.d.ts.map +1 -0
- package/lib/{BasicCheckout.js → EagerCheckout.js} +7 -4
- package/lib/EagerCheckout.js.map +1 -0
- package/lib/EditLog.d.ts +77 -63
- package/lib/EditLog.d.ts.map +1 -1
- package/lib/EditLog.js +83 -47
- package/lib/EditLog.js.map +1 -1
- package/lib/EditUtilities.d.ts +168 -0
- package/lib/EditUtilities.d.ts.map +1 -0
- package/lib/EditUtilities.js +353 -0
- package/lib/EditUtilities.js.map +1 -0
- package/lib/EventTypes.d.ts +73 -0
- package/lib/EventTypes.d.ts.map +1 -0
- package/lib/EventTypes.js +75 -0
- package/lib/EventTypes.js.map +1 -0
- package/lib/Forest.d.ts +29 -7
- package/lib/Forest.d.ts.map +1 -1
- package/lib/Forest.js +58 -35
- package/lib/Forest.js.map +1 -1
- package/lib/HistoryEditFactory.d.ts +20 -0
- package/lib/HistoryEditFactory.d.ts.map +1 -0
- package/lib/{default-edits/HistoryEditFactory.js → HistoryEditFactory.js} +78 -39
- package/lib/HistoryEditFactory.js.map +1 -0
- package/lib/IdConversion.d.ts +12 -0
- package/lib/IdConversion.d.ts.map +1 -0
- package/lib/IdConversion.js +91 -0
- package/lib/IdConversion.js.map +1 -0
- package/lib/Identifiers.d.ts +89 -2
- package/lib/Identifiers.d.ts.map +1 -1
- package/lib/Identifiers.js +8 -1
- package/lib/Identifiers.js.map +1 -1
- package/lib/InitialTree.d.ts +2 -2
- package/lib/InitialTree.d.ts.map +1 -1
- package/lib/InitialTree.js +2 -1
- package/lib/InitialTree.js.map +1 -1
- package/lib/LazyCheckout.d.ts +28 -0
- package/lib/LazyCheckout.d.ts.map +1 -0
- package/lib/LazyCheckout.js +40 -0
- package/lib/LazyCheckout.js.map +1 -0
- package/lib/LogViewer.d.ts +129 -85
- package/lib/LogViewer.d.ts.map +1 -1
- package/lib/LogViewer.js +103 -77
- package/lib/LogViewer.js.map +1 -1
- package/lib/MergeHealth.d.ts +221 -0
- package/lib/MergeHealth.d.ts.map +1 -0
- package/lib/MergeHealth.js +258 -0
- package/lib/MergeHealth.js.map +1 -0
- package/lib/NodeIdUtilities.d.ts +105 -0
- package/lib/NodeIdUtilities.d.ts.map +1 -0
- package/lib/NodeIdUtilities.js +53 -0
- package/lib/NodeIdUtilities.js.map +1 -0
- package/lib/PayloadUtilities.d.ts +42 -0
- package/lib/PayloadUtilities.d.ts.map +1 -0
- package/lib/PayloadUtilities.js +110 -0
- package/lib/PayloadUtilities.js.map +1 -0
- package/lib/ReconciliationPath.d.ts +18 -13
- package/lib/ReconciliationPath.d.ts.map +1 -1
- package/lib/ReconciliationPath.js.map +1 -1
- package/lib/RevisionValueCache.d.ts +11 -2
- package/lib/RevisionValueCache.d.ts.map +1 -1
- package/lib/RevisionValueCache.js +2 -3
- package/lib/RevisionValueCache.js.map +1 -1
- package/lib/RevisionView.d.ts +83 -0
- package/lib/RevisionView.d.ts.map +1 -0
- package/lib/RevisionView.js +175 -0
- package/lib/RevisionView.js.map +1 -0
- package/lib/SerializationUtilities.d.ts +36 -0
- package/lib/SerializationUtilities.d.ts.map +1 -0
- package/lib/SerializationUtilities.js +95 -0
- package/lib/SerializationUtilities.js.map +1 -0
- package/lib/SharedTree.d.ts +439 -0
- package/lib/SharedTree.d.ts.map +1 -0
- package/lib/SharedTree.js +1104 -0
- package/lib/SharedTree.js.map +1 -0
- package/lib/SharedTreeEncoder.d.ts +102 -0
- package/lib/SharedTreeEncoder.d.ts.map +1 -0
- package/lib/SharedTreeEncoder.js +308 -0
- package/lib/SharedTreeEncoder.js.map +1 -0
- package/lib/StringInterner.d.ts +46 -0
- package/lib/StringInterner.d.ts.map +1 -0
- package/lib/StringInterner.js +57 -0
- package/lib/StringInterner.js.map +1 -0
- package/lib/Summary.d.ts +40 -0
- package/lib/Summary.d.ts.map +1 -0
- package/lib/Summary.js +19 -0
- package/lib/Summary.js.map +1 -0
- package/lib/SummaryBackCompatibility.d.ts +22 -22
- package/lib/SummaryBackCompatibility.d.ts.map +1 -1
- package/lib/SummaryBackCompatibility.js +29 -32
- package/lib/SummaryBackCompatibility.js.map +1 -1
- package/lib/SummaryTestUtilities.d.ts +31 -0
- package/lib/SummaryTestUtilities.d.ts.map +1 -0
- package/lib/SummaryTestUtilities.js +32 -0
- package/lib/SummaryTestUtilities.js.map +1 -0
- package/lib/Transaction.d.ts +71 -0
- package/lib/Transaction.d.ts.map +1 -0
- package/lib/Transaction.js +88 -0
- package/lib/Transaction.js.map +1 -0
- package/lib/TransactionInternal.d.ts +540 -0
- package/lib/TransactionInternal.d.ts.map +1 -0
- package/lib/TransactionInternal.js +622 -0
- package/lib/TransactionInternal.js.map +1 -0
- package/lib/TreeCompressor.d.ts +36 -0
- package/lib/TreeCompressor.d.ts.map +1 -0
- package/lib/TreeCompressor.js +133 -0
- package/lib/TreeCompressor.js.map +1 -0
- package/lib/TreeNodeHandle.d.ts +12 -18
- package/lib/TreeNodeHandle.d.ts.map +1 -1
- package/lib/TreeNodeHandle.js +14 -24
- package/lib/TreeNodeHandle.js.map +1 -1
- package/lib/TreeView.d.ts +166 -0
- package/lib/TreeView.d.ts.map +1 -0
- package/lib/TreeView.js +214 -0
- package/lib/TreeView.js.map +1 -0
- package/lib/TreeViewUtilities.d.ts +21 -0
- package/lib/TreeViewUtilities.d.ts.map +1 -0
- package/lib/TreeViewUtilities.js +71 -0
- package/lib/TreeViewUtilities.js.map +1 -0
- package/lib/{default-edits/UndoRedoHandler.d.ts → UndoRedoHandler.d.ts} +2 -2
- package/lib/UndoRedoHandler.d.ts.map +1 -0
- package/lib/{default-edits/UndoRedoHandler.js → UndoRedoHandler.js} +3 -7
- package/lib/UndoRedoHandler.js.map +1 -0
- package/lib/id-compressor/AppendOnlySortedMap.d.ts +127 -0
- package/lib/id-compressor/AppendOnlySortedMap.d.ts.map +1 -0
- package/lib/id-compressor/AppendOnlySortedMap.js +278 -0
- package/lib/id-compressor/AppendOnlySortedMap.js.map +1 -0
- package/lib/id-compressor/IdCompressor.d.ts +389 -0
- package/lib/id-compressor/IdCompressor.d.ts.map +1 -0
- package/lib/id-compressor/IdCompressor.js +1343 -0
- package/lib/id-compressor/IdCompressor.js.map +1 -0
- package/lib/id-compressor/IdRange.d.ts +11 -0
- package/lib/id-compressor/IdRange.d.ts.map +1 -0
- package/lib/id-compressor/IdRange.js +25 -0
- package/lib/id-compressor/IdRange.js.map +1 -0
- package/lib/id-compressor/NumericUuid.d.ts +63 -0
- package/lib/id-compressor/NumericUuid.d.ts.map +1 -0
- package/lib/id-compressor/NumericUuid.js +365 -0
- package/lib/id-compressor/NumericUuid.js.map +1 -0
- package/lib/id-compressor/index.d.ts +12 -0
- package/lib/id-compressor/index.d.ts.map +1 -0
- package/lib/id-compressor/index.js +12 -0
- package/lib/id-compressor/index.js.map +1 -0
- package/lib/id-compressor/persisted-types/0.0.1.d.ts +156 -0
- package/lib/id-compressor/persisted-types/0.0.1.d.ts.map +1 -0
- package/lib/{test/Snapshot.tests.d.ts → id-compressor/persisted-types/0.0.1.js} +1 -1
- package/lib/id-compressor/persisted-types/0.0.1.js.map +1 -0
- package/lib/id-compressor/persisted-types/index.d.ts +6 -0
- package/lib/id-compressor/persisted-types/index.d.ts.map +1 -0
- package/lib/id-compressor/persisted-types/index.js +6 -0
- package/lib/id-compressor/persisted-types/index.js.map +1 -0
- package/lib/index.d.ts +29 -9
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +23 -6
- package/lib/index.js.map +1 -1
- package/lib/persisted-types/0.0.2.d.ts +385 -0
- package/lib/persisted-types/0.0.2.d.ts.map +1 -0
- package/lib/persisted-types/0.0.2.js +110 -0
- package/lib/persisted-types/0.0.2.js.map +1 -0
- package/lib/persisted-types/0.1.1.d.ts +314 -0
- package/lib/persisted-types/0.1.1.d.ts.map +1 -0
- package/lib/persisted-types/0.1.1.js +150 -0
- package/lib/persisted-types/0.1.1.js.map +1 -0
- package/lib/persisted-types/index.d.ts +7 -0
- package/lib/persisted-types/index.d.ts.map +1 -0
- package/lib/persisted-types/index.js +8 -0
- package/lib/persisted-types/index.js.map +1 -0
- package/lib/test/AppendOnlySortedMap.tests.d.ts +6 -0
- package/lib/test/AppendOnlySortedMap.tests.d.ts.map +1 -0
- package/lib/test/AppendOnlySortedMap.tests.js +169 -0
- package/lib/test/AppendOnlySortedMap.tests.js.map +1 -0
- package/lib/test/{SnapshotUtilities.tests.d.ts → ChangeCompression.tests.d.ts} +1 -1
- package/lib/test/ChangeCompression.tests.d.ts.map +1 -0
- package/lib/test/ChangeCompression.tests.js +145 -0
- package/lib/test/ChangeCompression.tests.js.map +1 -0
- package/lib/test/Checkout.tests.d.ts +2 -3
- package/lib/test/Checkout.tests.d.ts.map +1 -1
- package/lib/test/Checkout.tests.js +126 -69
- package/lib/test/Checkout.tests.js.map +1 -1
- package/lib/test/Common.tests.js +60 -2
- package/lib/test/Common.tests.js.map +1 -1
- package/lib/test/{BasicCheckout.tests.d.ts → EagerCheckout.tests.d.ts} +1 -1
- package/lib/test/EagerCheckout.tests.d.ts.map +1 -0
- package/lib/test/EagerCheckout.tests.js +20 -0
- package/lib/test/EagerCheckout.tests.js.map +1 -0
- package/lib/test/Edit.tests.js +22 -14
- package/lib/test/Edit.tests.js.map +1 -1
- package/lib/test/{Anchors.glassBox.tests.d.ts → EditLog.perf.tests.d.ts} +1 -1
- package/lib/test/EditLog.perf.tests.d.ts.map +1 -0
- package/lib/test/EditLog.perf.tests.js +30 -0
- package/lib/test/EditLog.perf.tests.js.map +1 -0
- package/lib/test/EditLog.tests.js +10 -6
- package/lib/test/EditLog.tests.js.map +1 -1
- package/lib/test/EditUtilities.tests.d.ts +6 -0
- package/lib/test/EditUtilities.tests.d.ts.map +1 -0
- package/lib/test/EditUtilities.tests.js +503 -0
- package/lib/test/EditUtilities.tests.js.map +1 -0
- package/lib/test/Forest.perf.tests.d.ts +6 -0
- package/lib/test/Forest.perf.tests.d.ts.map +1 -0
- package/lib/test/Forest.perf.tests.js +133 -0
- package/lib/test/Forest.perf.tests.js.map +1 -0
- package/lib/test/Forest.tests.js +54 -27
- package/lib/test/Forest.tests.js.map +1 -1
- package/lib/test/GenericTransaction.tests.js +12 -3
- package/lib/test/GenericTransaction.tests.js.map +1 -1
- package/lib/test/HistoryEditFactory.tests.d.ts +6 -0
- package/lib/test/HistoryEditFactory.tests.d.ts.map +1 -0
- package/lib/test/HistoryEditFactory.tests.js +90 -0
- package/lib/test/HistoryEditFactory.tests.js.map +1 -0
- package/lib/test/IdCompressor.perf.tests.d.ts +6 -0
- package/lib/test/IdCompressor.perf.tests.d.ts.map +1 -0
- package/lib/test/IdCompressor.perf.tests.js +304 -0
- package/lib/test/IdCompressor.perf.tests.js.map +1 -0
- package/lib/test/IdCompressor.tests.d.ts +6 -0
- package/lib/test/IdCompressor.tests.d.ts.map +1 -0
- package/lib/test/IdCompressor.tests.js +1075 -0
- package/lib/test/IdCompressor.tests.js.map +1 -0
- package/lib/test/IdConversion.tests.d.ts +6 -0
- package/lib/test/IdConversion.tests.d.ts.map +1 -0
- package/lib/test/IdConversion.tests.js +36 -0
- package/lib/test/IdConversion.tests.js.map +1 -0
- package/lib/test/LazyCheckout.tests.d.ts +6 -0
- package/lib/test/LazyCheckout.tests.d.ts.map +1 -0
- package/lib/test/LazyCheckout.tests.js +22 -0
- package/lib/test/LazyCheckout.tests.js.map +1 -0
- package/lib/test/LogViewer.tests.js +276 -191
- package/lib/test/LogViewer.tests.js.map +1 -1
- package/lib/test/{SharedTreeWithAnchors.tests.d.ts → MergeHealthTelemetryHeartbeat.tests.d.ts} +1 -1
- package/lib/test/MergeHealthTelemetryHeartbeat.tests.d.ts.map +1 -0
- package/lib/test/MergeHealthTelemetryHeartbeat.tests.js +342 -0
- package/lib/test/MergeHealthTelemetryHeartbeat.tests.js.map +1 -0
- package/lib/test/NumericUuid.perf.tests.d.ts +6 -0
- package/lib/test/NumericUuid.perf.tests.d.ts.map +1 -0
- package/lib/test/NumericUuid.perf.tests.js +68 -0
- package/lib/test/NumericUuid.perf.tests.js.map +1 -0
- package/lib/test/NumericUuid.tests.d.ts +6 -0
- package/lib/test/NumericUuid.tests.d.ts.map +1 -0
- package/lib/test/NumericUuid.tests.js +191 -0
- package/lib/test/NumericUuid.tests.js.map +1 -0
- package/lib/test/RevisionView.tests.d.ts +6 -0
- package/lib/test/RevisionView.tests.d.ts.map +1 -0
- package/lib/test/RevisionView.tests.js +133 -0
- package/lib/test/RevisionView.tests.js.map +1 -0
- package/lib/test/SharedTree.perf.tests.d.ts +6 -0
- package/lib/test/SharedTree.perf.tests.d.ts.map +1 -0
- package/lib/test/SharedTree.perf.tests.js +39 -0
- package/lib/test/SharedTree.perf.tests.js.map +1 -0
- package/lib/test/SharedTree.tests.js +15 -3
- package/lib/test/SharedTree.tests.js.map +1 -1
- package/lib/test/StringInterner.tests.d.ts +6 -0
- package/lib/test/StringInterner.tests.d.ts.map +1 -0
- package/lib/test/StringInterner.tests.js +71 -0
- package/lib/test/StringInterner.tests.js.map +1 -0
- package/lib/test/Summary.tests.d.ts +8 -0
- package/lib/test/Summary.tests.d.ts.map +1 -0
- package/lib/test/Summary.tests.js +407 -0
- package/lib/test/Summary.tests.js.map +1 -0
- package/lib/test/Transaction.tests.js +109 -329
- package/lib/test/Transaction.tests.js.map +1 -1
- package/lib/test/TransactionInternal.tests.d.ts +6 -0
- package/lib/test/TransactionInternal.tests.d.ts.map +1 -0
- package/lib/test/TransactionInternal.tests.js +568 -0
- package/lib/test/TransactionInternal.tests.js.map +1 -0
- package/lib/test/TreeCompression.tests.d.ts +6 -0
- package/lib/test/TreeCompression.tests.d.ts.map +1 -0
- package/lib/test/TreeCompression.tests.js +292 -0
- package/lib/test/TreeCompression.tests.js.map +1 -0
- package/lib/test/TreeView.tests.d.ts +6 -0
- package/lib/test/TreeView.tests.d.ts.map +1 -0
- package/lib/test/TreeView.tests.js +176 -0
- package/lib/test/TreeView.tests.js.map +1 -0
- package/lib/test/UndoRedoHandler.tests.js +2 -2
- package/lib/test/UndoRedoHandler.tests.js.map +1 -1
- package/lib/test/Virtualization.tests.js +146 -62
- package/lib/test/Virtualization.tests.js.map +1 -1
- package/lib/test/fuzz/Generators.d.ts +19 -0
- package/lib/test/fuzz/Generators.d.ts.map +1 -0
- package/lib/test/fuzz/Generators.js +420 -0
- package/lib/test/fuzz/Generators.js.map +1 -0
- package/lib/test/fuzz/SharedTreeFuzzTests.d.ts +20 -0
- package/lib/test/fuzz/SharedTreeFuzzTests.d.ts.map +1 -0
- package/lib/test/fuzz/SharedTreeFuzzTests.js +217 -0
- package/lib/test/fuzz/SharedTreeFuzzTests.js.map +1 -0
- package/lib/test/fuzz/Types.d.ts +133 -0
- package/lib/test/fuzz/Types.d.ts.map +1 -0
- package/lib/test/{GenericTransactionWithAnchors.tests.d.ts → fuzz/Types.js} +2 -2
- package/lib/test/fuzz/Types.js.map +1 -0
- package/lib/test/utilities/IdCompressorTestUtilities.d.ts +180 -0
- package/lib/test/utilities/IdCompressorTestUtilities.d.ts.map +1 -0
- package/lib/test/utilities/IdCompressorTestUtilities.js +528 -0
- package/lib/test/utilities/IdCompressorTestUtilities.js.map +1 -0
- package/lib/test/utilities/MockTransaction.d.ts +26 -7
- package/lib/test/utilities/MockTransaction.d.ts.map +1 -1
- package/lib/test/utilities/MockTransaction.js +40 -11
- package/lib/test/utilities/MockTransaction.js.map +1 -1
- package/lib/test/utilities/PendingLocalStateTests.d.ts +12 -0
- package/lib/test/utilities/PendingLocalStateTests.d.ts.map +1 -0
- package/lib/test/utilities/PendingLocalStateTests.js +105 -0
- package/lib/test/utilities/PendingLocalStateTests.js.map +1 -0
- package/lib/test/utilities/SharedTreeTests.d.ts +3 -4
- package/lib/test/utilities/SharedTreeTests.d.ts.map +1 -1
- package/lib/test/utilities/SharedTreeTests.js +696 -439
- package/lib/test/utilities/SharedTreeTests.js.map +1 -1
- package/lib/test/utilities/SharedTreeVersioningTests.d.ts +11 -0
- package/lib/test/utilities/SharedTreeVersioningTests.d.ts.map +1 -0
- package/lib/test/utilities/SharedTreeVersioningTests.js +370 -0
- package/lib/test/utilities/SharedTreeVersioningTests.js.map +1 -0
- package/lib/test/utilities/SummaryLoadPerfTests.d.ts +10 -0
- package/lib/test/utilities/SummaryLoadPerfTests.d.ts.map +1 -0
- package/lib/test/utilities/SummaryLoadPerfTests.js +102 -0
- package/lib/test/utilities/SummaryLoadPerfTests.js.map +1 -0
- package/lib/test/utilities/SummarySizeTests.d.ts +11 -0
- package/lib/test/utilities/SummarySizeTests.d.ts.map +1 -0
- package/lib/test/utilities/SummarySizeTests.js +158 -0
- package/lib/test/utilities/SummarySizeTests.js.map +1 -0
- package/lib/test/utilities/TestCommon.d.ts +9 -0
- package/lib/test/utilities/TestCommon.d.ts.map +1 -0
- package/lib/test/utilities/TestCommon.js +13 -0
- package/lib/test/utilities/TestCommon.js.map +1 -0
- package/lib/test/utilities/TestNode.d.ts +140 -0
- package/lib/test/utilities/TestNode.d.ts.map +1 -0
- package/lib/test/utilities/TestNode.js +292 -0
- package/lib/test/utilities/TestNode.js.map +1 -0
- package/lib/test/utilities/TestUtilities.d.ts +84 -70
- package/lib/test/utilities/TestUtilities.d.ts.map +1 -1
- package/lib/test/utilities/TestUtilities.js +218 -143
- package/lib/test/utilities/TestUtilities.js.map +1 -1
- package/lib/test/utilities/UndoRedoTests.d.ts +4 -5
- package/lib/test/utilities/UndoRedoTests.d.ts.map +1 -1
- package/lib/test/utilities/UndoRedoTests.js +138 -149
- package/lib/test/utilities/UndoRedoTests.js.map +1 -1
- package/package.json +22 -17
- package/src/ChangeCompression.ts +159 -0
- package/src/{default-edits/PersistedTypes.ts → ChangeTypes.ts} +62 -125
- package/src/Checkout.ts +82 -53
- package/src/Common.ts +317 -117
- package/src/EagerCheckout.ts +38 -0
- package/src/EditLog.ts +153 -100
- package/src/EditUtilities.ts +559 -0
- package/src/EventTypes.ts +74 -0
- package/src/Forest.ts +81 -73
- package/src/{default-edits/HistoryEditFactory.ts → HistoryEditFactory.ts} +103 -53
- package/src/IdConversion.ts +125 -0
- package/src/Identifiers.ts +101 -1
- package/src/InitialTree.ts +5 -4
- package/src/LazyCheckout.ts +51 -0
- package/src/LogViewer.ts +242 -166
- package/src/MergeHealth.ts +447 -0
- package/src/NodeIdUtilities.ts +156 -0
- package/src/PayloadUtilities.ts +124 -0
- package/src/ReconciliationPath.ts +18 -13
- package/src/RevisionValueCache.ts +14 -5
- package/src/RevisionView.ts +252 -0
- package/src/SerializationUtilities.ts +130 -0
- package/src/SharedTree.ts +1501 -0
- package/src/SharedTreeEncoder.ts +493 -0
- package/src/StringInterner.ts +72 -0
- package/src/Summary.ts +48 -0
- package/src/SummaryBackCompatibility.ts +47 -57
- package/src/SummaryTestUtilities.ts +54 -0
- package/src/Transaction.ts +120 -0
- package/src/TransactionInternal.ts +1087 -0
- package/src/TreeCompressor.ts +213 -0
- package/src/TreeNodeHandle.ts +19 -32
- package/src/TreeView.ts +322 -0
- package/src/TreeViewUtilities.ts +77 -0
- package/src/{default-edits/UndoRedoHandler.ts → UndoRedoHandler.ts} +8 -13
- package/src/id-compressor/AppendOnlySortedMap.ts +325 -0
- package/src/id-compressor/IdCompressor.md +3 -0
- package/src/id-compressor/IdCompressor.ts +1848 -0
- package/src/id-compressor/IdRange.ts +33 -0
- package/src/id-compressor/NumericUuid.ts +414 -0
- package/src/id-compressor/index.ts +13 -0
- package/src/id-compressor/persisted-types/0.0.1.ts +179 -0
- package/src/id-compressor/persisted-types/README.md +3 -0
- package/src/id-compressor/persisted-types/index.ts +6 -0
- package/src/index.ts +118 -59
- package/src/persisted-types/0.0.2.ts +442 -0
- package/src/persisted-types/0.1.1.ts +476 -0
- package/src/persisted-types/README.md +22 -0
- package/src/persisted-types/index.ts +9 -0
- package/.mocharc.js +0 -41
- package/api/tree.api.md +0 -729
- package/dist/BasicCheckout.d.ts +0 -23
- package/dist/BasicCheckout.d.ts.map +0 -1
- package/dist/BasicCheckout.js.map +0 -1
- package/dist/Snapshot.d.ts +0 -198
- package/dist/Snapshot.d.ts.map +0 -1
- package/dist/Snapshot.js +0 -267
- package/dist/Snapshot.js.map +0 -1
- package/dist/SnapshotUtilities.d.ts +0 -29
- package/dist/SnapshotUtilities.d.ts.map +0 -1
- package/dist/SnapshotUtilities.js +0 -73
- package/dist/SnapshotUtilities.js.map +0 -1
- package/dist/anchored-edits/AnchorResolution.d.ts +0 -144
- package/dist/anchored-edits/AnchorResolution.d.ts.map +0 -1
- package/dist/anchored-edits/AnchorResolution.js +0 -162
- package/dist/anchored-edits/AnchorResolution.js.map +0 -1
- package/dist/anchored-edits/Factory.d.ts +0 -56
- package/dist/anchored-edits/Factory.d.ts.map +0 -1
- package/dist/anchored-edits/Factory.js +0 -79
- package/dist/anchored-edits/Factory.js.map +0 -1
- package/dist/anchored-edits/PersistedTypes.d.ts +0 -245
- package/dist/anchored-edits/PersistedTypes.d.ts.map +0 -1
- package/dist/anchored-edits/PersistedTypes.js +0 -131
- package/dist/anchored-edits/PersistedTypes.js.map +0 -1
- package/dist/anchored-edits/SharedTreeWithAnchors.d.ts +0 -120
- package/dist/anchored-edits/SharedTreeWithAnchors.d.ts.map +0 -1
- package/dist/anchored-edits/SharedTreeWithAnchors.js +0 -115
- package/dist/anchored-edits/SharedTreeWithAnchors.js.map +0 -1
- package/dist/anchored-edits/TransactionWithAnchors.d.ts +0 -28
- package/dist/anchored-edits/TransactionWithAnchors.d.ts.map +0 -1
- package/dist/anchored-edits/TransactionWithAnchors.js +0 -36
- package/dist/anchored-edits/TransactionWithAnchors.js.map +0 -1
- package/dist/anchored-edits/index.d.ts +0 -10
- package/dist/anchored-edits/index.d.ts.map +0 -1
- package/dist/anchored-edits/index.js +0 -34
- package/dist/anchored-edits/index.js.map +0 -1
- package/dist/default-edits/EditUtilities.d.ts +0 -57
- package/dist/default-edits/EditUtilities.d.ts.map +0 -1
- package/dist/default-edits/EditUtilities.js +0 -192
- package/dist/default-edits/EditUtilities.js.map +0 -1
- package/dist/default-edits/Factory.d.ts +0 -56
- package/dist/default-edits/Factory.d.ts.map +0 -1
- package/dist/default-edits/Factory.js +0 -79
- package/dist/default-edits/Factory.js.map +0 -1
- package/dist/default-edits/HistoryEditFactory.d.ts +0 -19
- package/dist/default-edits/HistoryEditFactory.d.ts.map +0 -1
- package/dist/default-edits/HistoryEditFactory.js +0 -187
- package/dist/default-edits/HistoryEditFactory.js.map +0 -1
- package/dist/default-edits/PersistedTypes.d.ts.map +0 -1
- package/dist/default-edits/PersistedTypes.js.map +0 -1
- package/dist/default-edits/SharedTree.d.ts +0 -111
- package/dist/default-edits/SharedTree.d.ts.map +0 -1
- package/dist/default-edits/SharedTree.js +0 -124
- package/dist/default-edits/SharedTree.js.map +0 -1
- package/dist/default-edits/Summary.d.ts +0 -15
- package/dist/default-edits/Summary.d.ts.map +0 -1
- package/dist/default-edits/Summary.js +0 -35
- package/dist/default-edits/Summary.js.map +0 -1
- package/dist/default-edits/Transaction.d.ts +0 -41
- package/dist/default-edits/Transaction.d.ts.map +0 -1
- package/dist/default-edits/Transaction.js +0 -225
- package/dist/default-edits/Transaction.js.map +0 -1
- package/dist/default-edits/UndoRedoHandler.d.ts.map +0 -1
- package/dist/default-edits/UndoRedoHandler.js.map +0 -1
- package/dist/default-edits/index.d.ts +0 -13
- package/dist/default-edits/index.d.ts.map +0 -1
- package/dist/default-edits/index.js +0 -41
- package/dist/default-edits/index.js.map +0 -1
- package/dist/generic/GenericEditUtilities.d.ts +0 -26
- package/dist/generic/GenericEditUtilities.d.ts.map +0 -1
- package/dist/generic/GenericEditUtilities.js +0 -45
- package/dist/generic/GenericEditUtilities.js.map +0 -1
- package/dist/generic/GenericSharedTree.d.ts +0 -221
- package/dist/generic/GenericSharedTree.d.ts.map +0 -1
- package/dist/generic/GenericSharedTree.js +0 -447
- package/dist/generic/GenericSharedTree.js.map +0 -1
- package/dist/generic/GenericTransaction.d.ts +0 -87
- package/dist/generic/GenericTransaction.d.ts.map +0 -1
- package/dist/generic/GenericTransaction.js +0 -144
- package/dist/generic/GenericTransaction.js.map +0 -1
- package/dist/generic/PersistedTypes.d.ts +0 -194
- package/dist/generic/PersistedTypes.d.ts.map +0 -1
- package/dist/generic/PersistedTypes.js +0 -42
- package/dist/generic/PersistedTypes.js.map +0 -1
- package/dist/generic/Summary.d.ts +0 -63
- package/dist/generic/Summary.d.ts.map +0 -1
- package/dist/generic/Summary.js +0 -64
- package/dist/generic/Summary.js.map +0 -1
- package/dist/generic/index.d.ts +0 -10
- package/dist/generic/index.d.ts.map +0 -1
- package/dist/generic/index.js +0 -26
- package/dist/generic/index.js.map +0 -1
- package/docs/Future.md +0 -155
- package/lib/BasicCheckout.d.ts +0 -23
- package/lib/BasicCheckout.d.ts.map +0 -1
- package/lib/BasicCheckout.js.map +0 -1
- package/lib/Snapshot.d.ts +0 -198
- package/lib/Snapshot.d.ts.map +0 -1
- package/lib/Snapshot.js +0 -263
- package/lib/Snapshot.js.map +0 -1
- package/lib/SnapshotUtilities.d.ts +0 -29
- package/lib/SnapshotUtilities.d.ts.map +0 -1
- package/lib/SnapshotUtilities.js +0 -67
- package/lib/SnapshotUtilities.js.map +0 -1
- package/lib/anchored-edits/AnchorResolution.d.ts +0 -144
- package/lib/anchored-edits/AnchorResolution.d.ts.map +0 -1
- package/lib/anchored-edits/AnchorResolution.js +0 -152
- package/lib/anchored-edits/AnchorResolution.js.map +0 -1
- package/lib/anchored-edits/Factory.d.ts +0 -56
- package/lib/anchored-edits/Factory.d.ts.map +0 -1
- package/lib/anchored-edits/Factory.js +0 -74
- package/lib/anchored-edits/Factory.js.map +0 -1
- package/lib/anchored-edits/PersistedTypes.d.ts +0 -245
- package/lib/anchored-edits/PersistedTypes.d.ts.map +0 -1
- package/lib/anchored-edits/PersistedTypes.js +0 -128
- package/lib/anchored-edits/PersistedTypes.js.map +0 -1
- package/lib/anchored-edits/SharedTreeWithAnchors.d.ts +0 -120
- package/lib/anchored-edits/SharedTreeWithAnchors.d.ts.map +0 -1
- package/lib/anchored-edits/SharedTreeWithAnchors.js +0 -110
- package/lib/anchored-edits/SharedTreeWithAnchors.js.map +0 -1
- package/lib/anchored-edits/TransactionWithAnchors.d.ts +0 -28
- package/lib/anchored-edits/TransactionWithAnchors.d.ts.map +0 -1
- package/lib/anchored-edits/TransactionWithAnchors.js +0 -32
- package/lib/anchored-edits/TransactionWithAnchors.js.map +0 -1
- package/lib/anchored-edits/index.d.ts +0 -10
- package/lib/anchored-edits/index.d.ts.map +0 -1
- package/lib/anchored-edits/index.js +0 -11
- package/lib/anchored-edits/index.js.map +0 -1
- package/lib/default-edits/EditUtilities.d.ts +0 -57
- package/lib/default-edits/EditUtilities.d.ts.map +0 -1
- package/lib/default-edits/EditUtilities.js +0 -181
- package/lib/default-edits/EditUtilities.js.map +0 -1
- package/lib/default-edits/Factory.d.ts +0 -56
- package/lib/default-edits/Factory.d.ts.map +0 -1
- package/lib/default-edits/Factory.js +0 -74
- package/lib/default-edits/Factory.js.map +0 -1
- package/lib/default-edits/HistoryEditFactory.d.ts +0 -19
- package/lib/default-edits/HistoryEditFactory.d.ts.map +0 -1
- package/lib/default-edits/HistoryEditFactory.js.map +0 -1
- package/lib/default-edits/PersistedTypes.d.ts.map +0 -1
- package/lib/default-edits/PersistedTypes.js.map +0 -1
- package/lib/default-edits/SharedTree.d.ts +0 -111
- package/lib/default-edits/SharedTree.d.ts.map +0 -1
- package/lib/default-edits/SharedTree.js +0 -100
- package/lib/default-edits/SharedTree.js.map +0 -1
- package/lib/default-edits/Summary.d.ts +0 -15
- package/lib/default-edits/Summary.d.ts.map +0 -1
- package/lib/default-edits/Summary.js +0 -31
- package/lib/default-edits/Summary.js.map +0 -1
- package/lib/default-edits/Transaction.d.ts +0 -41
- package/lib/default-edits/Transaction.d.ts.map +0 -1
- package/lib/default-edits/Transaction.js +0 -221
- package/lib/default-edits/Transaction.js.map +0 -1
- package/lib/default-edits/UndoRedoHandler.d.ts.map +0 -1
- package/lib/default-edits/UndoRedoHandler.js.map +0 -1
- package/lib/default-edits/index.d.ts +0 -13
- package/lib/default-edits/index.d.ts.map +0 -1
- package/lib/default-edits/index.js +0 -14
- package/lib/default-edits/index.js.map +0 -1
- package/lib/generic/GenericEditUtilities.d.ts +0 -26
- package/lib/generic/GenericEditUtilities.d.ts.map +0 -1
- package/lib/generic/GenericEditUtilities.js +0 -38
- package/lib/generic/GenericEditUtilities.js.map +0 -1
- package/lib/generic/GenericSharedTree.d.ts +0 -221
- package/lib/generic/GenericSharedTree.d.ts.map +0 -1
- package/lib/generic/GenericSharedTree.js +0 -443
- package/lib/generic/GenericSharedTree.js.map +0 -1
- package/lib/generic/GenericTransaction.d.ts +0 -87
- package/lib/generic/GenericTransaction.d.ts.map +0 -1
- package/lib/generic/GenericTransaction.js +0 -140
- package/lib/generic/GenericTransaction.js.map +0 -1
- package/lib/generic/PersistedTypes.d.ts +0 -194
- package/lib/generic/PersistedTypes.d.ts.map +0 -1
- package/lib/generic/PersistedTypes.js +0 -39
- package/lib/generic/PersistedTypes.js.map +0 -1
- package/lib/generic/Summary.d.ts +0 -63
- package/lib/generic/Summary.d.ts.map +0 -1
- package/lib/generic/Summary.js +0 -58
- package/lib/generic/Summary.js.map +0 -1
- package/lib/generic/index.d.ts +0 -10
- package/lib/generic/index.d.ts.map +0 -1
- package/lib/generic/index.js +0 -11
- package/lib/generic/index.js.map +0 -1
- package/lib/test/Anchors.glassBox.tests.d.ts.map +0 -1
- package/lib/test/Anchors.glassBox.tests.js +0 -410
- package/lib/test/Anchors.glassBox.tests.js.map +0 -1
- package/lib/test/BasicCheckout.tests.d.ts.map +0 -1
- package/lib/test/BasicCheckout.tests.js +0 -8
- package/lib/test/BasicCheckout.tests.js.map +0 -1
- package/lib/test/GenericTransactionWithAnchors.tests.d.ts.map +0 -1
- package/lib/test/GenericTransactionWithAnchors.tests.js +0 -25
- package/lib/test/GenericTransactionWithAnchors.tests.js.map +0 -1
- package/lib/test/SharedTreeWithAnchors.tests.d.ts.map +0 -1
- package/lib/test/SharedTreeWithAnchors.tests.js +0 -420
- package/lib/test/SharedTreeWithAnchors.tests.js.map +0 -1
- package/lib/test/Snapshot.tests.d.ts.map +0 -1
- package/lib/test/Snapshot.tests.js +0 -96
- package/lib/test/Snapshot.tests.js.map +0 -1
- package/lib/test/SnapshotUtilities.tests.d.ts.map +0 -1
- package/lib/test/SnapshotUtilities.tests.js +0 -168
- package/lib/test/SnapshotUtilities.tests.js.map +0 -1
- package/lib/test/undoRedoStackManager.d.ts +0 -26
- package/lib/test/undoRedoStackManager.d.ts.map +0 -1
- package/lib/test/undoRedoStackManager.js +0 -176
- package/lib/test/undoRedoStackManager.js.map +0 -1
- package/lib/test/utilities/SummaryFormatCompatibilityTests.d.ts +0 -13
- package/lib/test/utilities/SummaryFormatCompatibilityTests.d.ts.map +0 -1
- package/lib/test/utilities/SummaryFormatCompatibilityTests.js +0 -154
- package/lib/test/utilities/SummaryFormatCompatibilityTests.js.map +0 -1
- package/src/BasicCheckout.ts +0 -34
- package/src/Snapshot.ts +0 -363
- package/src/SnapshotUtilities.ts +0 -88
- package/src/anchored-edits/AnchorResolution.ts +0 -442
- package/src/anchored-edits/Factory.ts +0 -94
- package/src/anchored-edits/PersistedTypes.ts +0 -310
- package/src/anchored-edits/SharedTreeWithAnchors.ts +0 -200
- package/src/anchored-edits/TransactionWithAnchors.ts +0 -39
- package/src/anchored-edits/index.ts +0 -21
- package/src/default-edits/EditUtilities.ts +0 -220
- package/src/default-edits/Factory.ts +0 -94
- package/src/default-edits/SharedTree.ts +0 -174
- package/src/default-edits/Summary.ts +0 -44
- package/src/default-edits/Transaction.ts +0 -262
- package/src/default-edits/index.ts +0 -29
- package/src/generic/GenericEditUtilities.ts +0 -46
- package/src/generic/GenericSharedTree.ts +0 -593
- package/src/generic/GenericTransaction.ts +0 -194
- package/src/generic/PersistedTypes.ts +0 -221
- package/src/generic/Summary.ts +0 -113
- package/src/generic/index.ts +0 -41
|
@@ -0,0 +1,476 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
|
+
* Licensed under the MIT License.
|
|
4
|
+
*/
|
|
5
|
+
import { assert, assertNotUndefined, ReplaceRecursive } from '../Common';
|
|
6
|
+
// These are re-exported from a persisted-types file.
|
|
7
|
+
import type {
|
|
8
|
+
IdCreationRange,
|
|
9
|
+
SerializedIdCompressorWithNoSession,
|
|
10
|
+
SerializedIdCompressorWithOngoingSession,
|
|
11
|
+
} from '../id-compressor';
|
|
12
|
+
import type {
|
|
13
|
+
Definition,
|
|
14
|
+
DetachedSequenceId,
|
|
15
|
+
EditId,
|
|
16
|
+
FinalNodeId,
|
|
17
|
+
InternedStringId,
|
|
18
|
+
NodeId,
|
|
19
|
+
OpSpaceNodeId,
|
|
20
|
+
SessionId,
|
|
21
|
+
TraitLabel,
|
|
22
|
+
UuidString,
|
|
23
|
+
} from '../Identifiers';
|
|
24
|
+
import {
|
|
25
|
+
BuildInternal_0_0_2,
|
|
26
|
+
ChangeTypeInternal,
|
|
27
|
+
ConstraintEffect,
|
|
28
|
+
ConstraintInternal_0_0_2,
|
|
29
|
+
DetachInternal_0_0_2,
|
|
30
|
+
Edit,
|
|
31
|
+
EditWithoutId,
|
|
32
|
+
InsertInternal_0_0_2,
|
|
33
|
+
NodeData,
|
|
34
|
+
Payload,
|
|
35
|
+
SetValueInternal_0_0_2,
|
|
36
|
+
SharedTreeNoOp,
|
|
37
|
+
SharedTreeOpType,
|
|
38
|
+
SharedTreeSummaryBase,
|
|
39
|
+
SharedTreeUpdateOp,
|
|
40
|
+
Side,
|
|
41
|
+
StablePlaceInternal_0_0_2,
|
|
42
|
+
TraitLocationInternal_0_0_2,
|
|
43
|
+
TreeNode,
|
|
44
|
+
TreeNodeSequence,
|
|
45
|
+
VersionedOp,
|
|
46
|
+
WriteFormat,
|
|
47
|
+
} from './0.0.2';
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Specifies the location of a trait (a labeled sequence of nodes) within the tree.
|
|
51
|
+
* @public
|
|
52
|
+
*/
|
|
53
|
+
export interface TraitLocationInternal extends Omit<TraitLocationInternal_0_0_2, 'parent'> {
|
|
54
|
+
readonly parent: NodeId;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Alternating list of label then children list under that label.
|
|
59
|
+
* The label may be interned, and children are {@link CompressedPlaceholderTree}.
|
|
60
|
+
*/
|
|
61
|
+
export type CompressedTraits<TId extends OpSpaceNodeId, TPlaceholder extends number | never> = (
|
|
62
|
+
| InternedStringId
|
|
63
|
+
| TraitLabel
|
|
64
|
+
| (CompressedPlaceholderTree<TId, TPlaceholder> | TPlaceholder)[]
|
|
65
|
+
)[];
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* A TreeNode that has been compressed into the following array format:
|
|
69
|
+
* [identifier, definition, traits, payload],
|
|
70
|
+
* where traits is also an array of [label, [trait], label, [trait], ...].
|
|
71
|
+
* Payload is omitted if empty, and traits will be an empty subarray if no traits exist but a payload exists.
|
|
72
|
+
* If both traits and payload does not exist, then both are omitted.
|
|
73
|
+
* All trait labels and node definitions may also be string interned.
|
|
74
|
+
* @internal
|
|
75
|
+
*/
|
|
76
|
+
export type CompressedPlaceholderTree<TId extends OpSpaceNodeId, TPlaceholder extends number | never> =
|
|
77
|
+
| TPlaceholder
|
|
78
|
+
| [InternedStringId | Definition] // The node Definition's interned string ID
|
|
79
|
+
| [InternedStringId | Definition, TId]
|
|
80
|
+
| [
|
|
81
|
+
InternedStringId | Definition,
|
|
82
|
+
[Payload, ...CompressedTraits<TId, TPlaceholder>] | CompressedTraits<TId, TPlaceholder>
|
|
83
|
+
]
|
|
84
|
+
| [
|
|
85
|
+
InternedStringId | Definition,
|
|
86
|
+
TId,
|
|
87
|
+
[Payload, ...CompressedTraits<TId, TPlaceholder>] | CompressedTraits<TId, TPlaceholder>
|
|
88
|
+
];
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* JSON-compatible Node type. Objects of this type will be persisted in internal change objects (under Edits) in the SharedTree history.
|
|
92
|
+
* @public
|
|
93
|
+
*/
|
|
94
|
+
export type ChangeNode = TreeNode<ChangeNode, NodeId>;
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* A ChangeNode that has been compressed into a {@link CompressedPlaceholderTree}.
|
|
98
|
+
*/
|
|
99
|
+
export type CompressedChangeNode<TId extends OpSpaceNodeId> = CompressedPlaceholderTree<TId, never>;
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* The contents of a SharedTree summary for write format 0.1.1.
|
|
103
|
+
* Contains the current tree in a compressed format,
|
|
104
|
+
* the edits needed to get from `initialTree` to the current tree,
|
|
105
|
+
* and the interned strings that can be used to retrieve the interned summary.
|
|
106
|
+
*/
|
|
107
|
+
export interface SharedTreeSummary extends SharedTreeSummaryBase {
|
|
108
|
+
readonly version: WriteFormat.v0_1_1;
|
|
109
|
+
|
|
110
|
+
readonly currentTree?: CompressedChangeNode<FinalNodeId>;
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Information that can populate an edit log.
|
|
114
|
+
*/
|
|
115
|
+
readonly editHistory: EditLogSummary<CompressedChangeInternal<FinalNodeId>, FluidEditHandle>;
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* List of interned strings.
|
|
119
|
+
* In 0.1.1, definitions and trait labels are interned deterministically on sequenced ops,
|
|
120
|
+
* and each client maintains a string interner whose lifetime is tied to the SharedTree.
|
|
121
|
+
*/
|
|
122
|
+
readonly internedStrings: readonly string[];
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Information about all IDs compressed in the summary
|
|
126
|
+
*/
|
|
127
|
+
readonly idCompressor: SerializedIdCompressorWithNoSession | SerializedIdCompressorWithOngoingSession;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* Information used to populate an edit log.
|
|
132
|
+
* In 0.1.1, this is a persisted type only for `EditLogSummary<CompressedChangeInternal, FluidEditHandle>`,
|
|
133
|
+
* where calling `FluidEditHandle.get` returns an array buffer of compressed `editChunk` contents.
|
|
134
|
+
* The type is parameterized to avoid nearly identical type definitions for uncompressed forms of the edit
|
|
135
|
+
* log, and abstracting away the fact that handle fetching needs to invoke decompression.
|
|
136
|
+
* @public
|
|
137
|
+
*/
|
|
138
|
+
export interface EditLogSummary<TChange, THandle> {
|
|
139
|
+
/**
|
|
140
|
+
* A of list of serialized chunks and their corresponding keys.
|
|
141
|
+
* Start revision is the index of the first edit in the chunk in relation to the edit log.
|
|
142
|
+
*/
|
|
143
|
+
readonly editChunks: readonly {
|
|
144
|
+
readonly startRevision: number;
|
|
145
|
+
/**
|
|
146
|
+
* Either a chunk of edits or a handle that can be used to load that chunk.
|
|
147
|
+
*/
|
|
148
|
+
readonly chunk: THandle | readonly EditWithoutId<TChange>[];
|
|
149
|
+
}[];
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* A list of edits IDs for all sequenced edits.
|
|
153
|
+
*/
|
|
154
|
+
readonly editIds: readonly EditId[];
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* FluidEditHandles are used to load edit chunks stored outside of the EditLog.
|
|
159
|
+
* Can be satisfied by IFluidHandle<ArrayBufferLike>.
|
|
160
|
+
* Note that though this is in `PersistedTypes`, it isn't directly serializable (e.g. `get` is a function).
|
|
161
|
+
* Its serialization relies on being encoded via an IFluidSerializer.
|
|
162
|
+
* @public
|
|
163
|
+
*/
|
|
164
|
+
export interface FluidEditHandle {
|
|
165
|
+
readonly get: () => Promise<ArrayBuffer>;
|
|
166
|
+
readonly absolutePath: string;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
// Future write formats should make this a union type and append to it (e.g. `EditChunkContents_0_1_1 | EditChunkContents_2_0_0`).
|
|
170
|
+
export type EditChunkContents = EditChunkContents_0_1_1;
|
|
171
|
+
|
|
172
|
+
export interface EditChunkContents_0_1_1 {
|
|
173
|
+
version: WriteFormat.v0_1_1;
|
|
174
|
+
edits: readonly EditWithoutId<CompressedChangeInternal<FinalNodeId>>[];
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* Edits per edit chunk. This value is in persisted types because it requires consensus to change.
|
|
179
|
+
*/
|
|
180
|
+
export const editsPerChunk = 100;
|
|
181
|
+
|
|
182
|
+
/**
|
|
183
|
+
* Compressed change format type.
|
|
184
|
+
* Encodes the same information as a {@link ChangeInternal}, but uses a more compact object format for `build` changes.
|
|
185
|
+
*/
|
|
186
|
+
export type CompressedChangeInternal<TId extends OpSpaceNodeId> =
|
|
187
|
+
| ReplaceRecursive<Exclude<ChangeInternal, BuildInternal>, NodeId, TId>
|
|
188
|
+
| CompressedBuildInternal<TId>;
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* A compressed version of {@link BuildInternal} where the source is a sequence of compressed nodes.
|
|
192
|
+
*/
|
|
193
|
+
export interface CompressedBuildInternal<TId extends OpSpaceNodeId> {
|
|
194
|
+
/** {@inheritdoc Build.destination } */
|
|
195
|
+
readonly destination: DetachedSequenceId;
|
|
196
|
+
/** A sequence of nodes to build in some compressed format. */
|
|
197
|
+
readonly source: TreeNodeSequence<CompressedBuildNode<TId>>;
|
|
198
|
+
/** {@inheritdoc Build."type" } */
|
|
199
|
+
readonly type: typeof ChangeTypeInternal.CompressedBuild;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
/**
|
|
203
|
+
* A BuildNode that has been compressed into a {@link CompressedPlaceholderTree}.
|
|
204
|
+
*/
|
|
205
|
+
export type CompressedBuildNode<TId extends OpSpaceNodeId> = CompressedPlaceholderTree<TId, DetachedSequenceId>;
|
|
206
|
+
|
|
207
|
+
/**
|
|
208
|
+
* {@inheritdoc (Change:type)}
|
|
209
|
+
* @public
|
|
210
|
+
*/
|
|
211
|
+
export type ChangeInternal = InsertInternal | DetachInternal | BuildInternal | SetValueInternal | ConstraintInternal;
|
|
212
|
+
|
|
213
|
+
/**
|
|
214
|
+
* {@inheritdoc BuildNode}
|
|
215
|
+
* @public
|
|
216
|
+
*/
|
|
217
|
+
export type BuildNodeInternal = TreeNode<BuildNodeInternal, NodeId> | DetachedSequenceId;
|
|
218
|
+
|
|
219
|
+
/**
|
|
220
|
+
* {@inheritdoc Build}
|
|
221
|
+
* @public
|
|
222
|
+
*/
|
|
223
|
+
export interface BuildInternal extends Omit<BuildInternal_0_0_2, 'source'> {
|
|
224
|
+
readonly source: TreeNodeSequence<BuildNodeInternal>;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
/**
|
|
228
|
+
* {@inheritdoc (Insert:interface)}
|
|
229
|
+
* @public
|
|
230
|
+
*/
|
|
231
|
+
export interface InsertInternal extends Omit<InsertInternal_0_0_2, 'destination'> {
|
|
232
|
+
/** {@inheritdoc (Insert:interface).destination } */
|
|
233
|
+
readonly destination: StablePlaceInternal;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
/**
|
|
237
|
+
* {@inheritdoc Detach}
|
|
238
|
+
* @public
|
|
239
|
+
*/
|
|
240
|
+
export interface DetachInternal extends Omit<DetachInternal_0_0_2, 'source'> {
|
|
241
|
+
/** {@inheritdoc Detach.source } */
|
|
242
|
+
readonly source: StableRangeInternal;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
/**
|
|
246
|
+
* {@inheritdoc SetValue}
|
|
247
|
+
* @public
|
|
248
|
+
*/
|
|
249
|
+
export interface SetValueInternal extends Omit<SetValueInternal_0_0_2, 'nodeToModify'> {
|
|
250
|
+
/** {@inheritdoc SetValue.nodeToModify } */
|
|
251
|
+
readonly nodeToModify: NodeId;
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
/**
|
|
255
|
+
* {@inheritdoc Constraint}
|
|
256
|
+
* @public
|
|
257
|
+
*/
|
|
258
|
+
export interface ConstraintInternal extends Omit<ConstraintInternal_0_0_2, 'toConstrain' | 'parentNode'> {
|
|
259
|
+
/** {@inheritdoc Constraint.toConstrain } */
|
|
260
|
+
readonly toConstrain: StableRangeInternal;
|
|
261
|
+
/** {@inheritdoc Constraint.parentNode } */
|
|
262
|
+
readonly parentNode?: NodeId;
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
// Note: Documentation of this constant is merged with documentation of the `ChangeInternal` interface.
|
|
266
|
+
/**
|
|
267
|
+
* @public
|
|
268
|
+
*/
|
|
269
|
+
export const ChangeInternal = {
|
|
270
|
+
build: (source: TreeNodeSequence<BuildNodeInternal>, destination: DetachedSequenceId): BuildInternal => ({
|
|
271
|
+
destination,
|
|
272
|
+
source,
|
|
273
|
+
type: ChangeTypeInternal.Build,
|
|
274
|
+
}),
|
|
275
|
+
|
|
276
|
+
insert: (source: DetachedSequenceId, destination: StablePlaceInternal): InsertInternal => ({
|
|
277
|
+
destination,
|
|
278
|
+
source,
|
|
279
|
+
type: ChangeTypeInternal.Insert,
|
|
280
|
+
}),
|
|
281
|
+
|
|
282
|
+
detach: (source: StableRangeInternal, destination?: DetachedSequenceId): DetachInternal => ({
|
|
283
|
+
destination,
|
|
284
|
+
source,
|
|
285
|
+
type: ChangeTypeInternal.Detach,
|
|
286
|
+
}),
|
|
287
|
+
|
|
288
|
+
setPayload: (nodeToModify: NodeData<NodeId> | NodeId, payload: Payload): SetValueInternal => ({
|
|
289
|
+
nodeToModify: getNodeId(nodeToModify),
|
|
290
|
+
payload,
|
|
291
|
+
type: ChangeTypeInternal.SetValue,
|
|
292
|
+
}),
|
|
293
|
+
|
|
294
|
+
clearPayload: (nodeToModify: NodeData<NodeId> | NodeId): SetValueInternal => ({
|
|
295
|
+
nodeToModify: getNodeId(nodeToModify),
|
|
296
|
+
// Rationale: 'undefined' is reserved for future use (see 'SetValue' interface above.)
|
|
297
|
+
payload: null,
|
|
298
|
+
type: ChangeTypeInternal.SetValue,
|
|
299
|
+
}),
|
|
300
|
+
|
|
301
|
+
constraint: (
|
|
302
|
+
toConstrain: StableRangeInternal,
|
|
303
|
+
effect: ConstraintEffect,
|
|
304
|
+
identityHash?: UuidString,
|
|
305
|
+
length?: number,
|
|
306
|
+
contentHash?: UuidString,
|
|
307
|
+
parentNode?: NodeId,
|
|
308
|
+
label?: TraitLabel
|
|
309
|
+
): ConstraintInternal => ({
|
|
310
|
+
toConstrain,
|
|
311
|
+
effect,
|
|
312
|
+
identityHash,
|
|
313
|
+
length,
|
|
314
|
+
contentHash,
|
|
315
|
+
parentNode,
|
|
316
|
+
label,
|
|
317
|
+
type: ChangeTypeInternal.Constraint,
|
|
318
|
+
}),
|
|
319
|
+
|
|
320
|
+
/** {@inheritdoc (Change:variable).delete } */
|
|
321
|
+
delete: (stableRange: StableRangeInternal): ChangeInternal => ChangeInternal.detach(stableRange),
|
|
322
|
+
|
|
323
|
+
/** {@inheritdoc (Change:variable).insertTree } */
|
|
324
|
+
insertTree: (nodes: TreeNodeSequence<BuildNodeInternal>, destination: StablePlaceInternal): ChangeInternal[] => {
|
|
325
|
+
const build = ChangeInternal.build(nodes, 0 as DetachedSequenceId);
|
|
326
|
+
return [build, ChangeInternal.insert(build.destination, destination)];
|
|
327
|
+
},
|
|
328
|
+
|
|
329
|
+
/** {@inheritdoc (Change:variable).move } */
|
|
330
|
+
move: (source: StableRangeInternal, destination: StablePlaceInternal): ChangeInternal[] => {
|
|
331
|
+
const detach = ChangeInternal.detach(source, 0 as DetachedSequenceId);
|
|
332
|
+
return [detach, ChangeInternal.insert(assertNotUndefined(detach.destination), destination)];
|
|
333
|
+
},
|
|
334
|
+
};
|
|
335
|
+
|
|
336
|
+
/**
|
|
337
|
+
* {@inheritdoc (StablePlace:interface) }
|
|
338
|
+
* @public
|
|
339
|
+
*/
|
|
340
|
+
export interface StablePlaceInternal extends Omit<StablePlaceInternal_0_0_2, 'referenceSibling' | 'referenceTrait'> {
|
|
341
|
+
/**
|
|
342
|
+
* {@inheritdoc (StablePlace:interface).referenceSibling }
|
|
343
|
+
*/
|
|
344
|
+
readonly referenceSibling?: NodeId;
|
|
345
|
+
|
|
346
|
+
/**
|
|
347
|
+
* {@inheritdoc (StablePlace:interface).referenceTrait }
|
|
348
|
+
*/
|
|
349
|
+
readonly referenceTrait?: TraitLocationInternal;
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
/**
|
|
353
|
+
* {@inheritdoc (StableRange:interface) }
|
|
354
|
+
* @public
|
|
355
|
+
*/
|
|
356
|
+
export interface StableRangeInternal {
|
|
357
|
+
/** {@inheritdoc (StableRange:interface).start } */
|
|
358
|
+
readonly start: StablePlaceInternal;
|
|
359
|
+
/** {@inheritdoc (StableRange:interface).end } */
|
|
360
|
+
readonly end: StablePlaceInternal;
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
/**
|
|
364
|
+
* The remainder of this file consists of factory methods duplicated with those for StableRange/StablePlace and are maintained while
|
|
365
|
+
* the new persisted version of SharedTree ops/summaries is rolled out.
|
|
366
|
+
*/
|
|
367
|
+
|
|
368
|
+
/**
|
|
369
|
+
* @public
|
|
370
|
+
*/
|
|
371
|
+
export const StablePlaceInternal = {
|
|
372
|
+
/**
|
|
373
|
+
* @returns The location directly before `node`.
|
|
374
|
+
*/
|
|
375
|
+
before: (node: NodeData<NodeId> | NodeId): StablePlaceInternal => ({
|
|
376
|
+
side: Side.Before,
|
|
377
|
+
referenceSibling: getNodeId(node),
|
|
378
|
+
}),
|
|
379
|
+
/**
|
|
380
|
+
* @returns The location directly after `node`.
|
|
381
|
+
*/
|
|
382
|
+
after: (node: NodeData<NodeId> | NodeId): StablePlaceInternal => ({
|
|
383
|
+
side: Side.After,
|
|
384
|
+
referenceSibling: getNodeId(node),
|
|
385
|
+
}),
|
|
386
|
+
/**
|
|
387
|
+
* @returns The location at the start of `trait`.
|
|
388
|
+
*/
|
|
389
|
+
atStartOf: (trait: TraitLocationInternal): StablePlaceInternal => ({
|
|
390
|
+
side: Side.After,
|
|
391
|
+
referenceTrait: trait,
|
|
392
|
+
}),
|
|
393
|
+
/**
|
|
394
|
+
* @returns The location at the end of `trait`.
|
|
395
|
+
*/
|
|
396
|
+
atEndOf: (trait: TraitLocationInternal): StablePlaceInternal => ({
|
|
397
|
+
side: Side.Before,
|
|
398
|
+
referenceTrait: trait,
|
|
399
|
+
}),
|
|
400
|
+
};
|
|
401
|
+
|
|
402
|
+
/**
|
|
403
|
+
* @public
|
|
404
|
+
*/
|
|
405
|
+
export const StableRangeInternal = {
|
|
406
|
+
/**
|
|
407
|
+
* Factory for producing a `StableRange` from a start `StablePlace` to an end `StablePlace`.
|
|
408
|
+
* @example
|
|
409
|
+
* StableRange.from(StablePlace.before(startNode)).to(StablePlace.after(endNode))
|
|
410
|
+
*/
|
|
411
|
+
from: (start: StablePlaceInternal): { to: (end: StablePlaceInternal) => StableRangeInternal } => ({
|
|
412
|
+
to: (end: StablePlaceInternal): StableRangeInternal => {
|
|
413
|
+
if (start.referenceTrait && end.referenceTrait) {
|
|
414
|
+
const message = 'StableRange must be constructed with endpoints from the same trait';
|
|
415
|
+
assert(start.referenceTrait.parent === end.referenceTrait.parent, message);
|
|
416
|
+
assert(start.referenceTrait.label === end.referenceTrait.label, message);
|
|
417
|
+
}
|
|
418
|
+
return { start, end };
|
|
419
|
+
},
|
|
420
|
+
}),
|
|
421
|
+
/**
|
|
422
|
+
* @returns a `StableRange` which contains only the provided `node`.
|
|
423
|
+
* Both the start and end `StablePlace` objects used to anchor this `StableRange` are in terms of the passed in node.
|
|
424
|
+
*/
|
|
425
|
+
only: (node: NodeData<NodeId> | NodeId): StableRangeInternal => ({
|
|
426
|
+
start: StablePlaceInternal.before(node),
|
|
427
|
+
end: StablePlaceInternal.after(node),
|
|
428
|
+
}),
|
|
429
|
+
/**
|
|
430
|
+
* @returns a `StableRange` which contains everything in the trait.
|
|
431
|
+
* This is anchored using the provided `trait`, and is independent of the actual contents of the trait:
|
|
432
|
+
* it does not use sibling anchoring.
|
|
433
|
+
*/
|
|
434
|
+
all: (trait: TraitLocationInternal): StableRangeInternal => ({
|
|
435
|
+
start: StablePlaceInternal.atStartOf(trait),
|
|
436
|
+
end: StablePlaceInternal.atEndOf(trait),
|
|
437
|
+
}),
|
|
438
|
+
};
|
|
439
|
+
|
|
440
|
+
/**
|
|
441
|
+
* Discriminated union of valid 0.0.1 SharedTree op types.
|
|
442
|
+
*/
|
|
443
|
+
export type SharedTreeOp = SharedTreeEditOp | SharedTreeHandleOp | SharedTreeUpdateOp | SharedTreeNoOp;
|
|
444
|
+
|
|
445
|
+
export interface SharedTreeEditOp extends VersionedOp<WriteFormat.v0_1_1> {
|
|
446
|
+
readonly type: SharedTreeOpType.Edit;
|
|
447
|
+
/** The collection of changes to apply. */
|
|
448
|
+
readonly edit: Edit<CompressedChangeInternal<OpSpaceNodeId>>;
|
|
449
|
+
/** Contains all the IDs generated by the originating client since the last sent op */
|
|
450
|
+
readonly idRange: IdCreationRange;
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
/**
|
|
454
|
+
* A SharedTree op that includes edit handle information.
|
|
455
|
+
* The handle corresponds to an edit chunk in the edit log.
|
|
456
|
+
*/
|
|
457
|
+
export interface SharedTreeHandleOp extends VersionedOp<WriteFormat.v0_1_1> {
|
|
458
|
+
readonly type: SharedTreeOpType.Handle;
|
|
459
|
+
/** The serialized handle to an uploaded edit chunk. */
|
|
460
|
+
readonly editHandle: string;
|
|
461
|
+
/** The index of the first edit in the chunk that corresponds to the handle. */
|
|
462
|
+
readonly startRevision: number;
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
/** The number of IDs that a SharedTree reserves for current or future internal use */
|
|
466
|
+
// This value must never change
|
|
467
|
+
export const reservedIdCount = 10;
|
|
468
|
+
|
|
469
|
+
/** The SessionID of the Upgrade Session */
|
|
470
|
+
// This UUID must never change
|
|
471
|
+
export const ghostSessionId = '79590933-1c70-4fda-817a-adab57c20318' as SessionId;
|
|
472
|
+
|
|
473
|
+
/** Accepts either a node or a node's identifier, and returns the identifier */
|
|
474
|
+
function getNodeId<TId>(node: TId | NodeData<TId>): TId {
|
|
475
|
+
return (node as NodeData<TId>).identifier ?? (node as TId);
|
|
476
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Persisted Types
|
|
2
|
+
|
|
3
|
+
All types imported or exported by this module inherit the requirements below:
|
|
4
|
+
|
|
5
|
+
1. All imports from other modules are safe because they generally consist of type aliases for primitive types,
|
|
6
|
+
and thus have no impact on serialization as long as the primitive type they are an alias for does not change.
|
|
7
|
+
For example, the various UuidString types must remain strings, and must never change their UUID format unless the process for changing
|
|
8
|
+
persisted types (as documented below) is followed.
|
|
9
|
+
2. Imports are allowed from older version modules, but not newer version modules. For example, [0.1.1.ts](./0.1.1.ts) may import from [0.0.2.ts](./0.0.2.ts), but not the other way around.
|
|
10
|
+
3. All types are compatible with Fluid Serializable.
|
|
11
|
+
|
|
12
|
+
## Changing Persisted Types
|
|
13
|
+
|
|
14
|
+
The existing types can only be modified in ways that are both backwards and forwards compatible since they
|
|
15
|
+
are used in edits, and thus are persisted (using Fluid serialization).
|
|
16
|
+
Support for the old format can NEVER be removed: it must be maintained indefinably or old documents will break.
|
|
17
|
+
|
|
18
|
+
### Introducing a new version
|
|
19
|
+
|
|
20
|
+
1. Create a new `major.minor.patch.ts` file where `major`, `minor` and `patch` specify the new version.
|
|
21
|
+
2. Add each of the new types to that new file, referencing types in any of the previous version files as necessary.
|
|
22
|
+
3. Update [index.ts](./index.ts) to properly expose all new and legacy types.
|
package/.mocharc.js
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
|
-
* Licensed under the MIT License.
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
'use strict';
|
|
7
|
-
|
|
8
|
-
const testDriver = process.env.FLUID_TEST_DRIVER ? process.env.FLUID_TEST_DRIVER : 'local';
|
|
9
|
-
const packageDir = `${__dirname}/../..`;
|
|
10
|
-
|
|
11
|
-
const requiredModules = [
|
|
12
|
-
`node_modules/@fluidframework/mocha-test-setup`, // General mocha setup e.g. suppresses console.log
|
|
13
|
-
`node_modules/@fluidframework/test-drivers`, // Inject implementation of getFluidTestDriver, configured via FLUID_TEST_DRIVER
|
|
14
|
-
];
|
|
15
|
-
|
|
16
|
-
if (process.env.FLUID_TEST_LOGGER_PKG_PATH) {
|
|
17
|
-
// Inject implementation of getTestLogger
|
|
18
|
-
requiredModules.push(`${process.env.FLUID_TEST_LOGGER_PKG_PATH}`);
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
const config = {
|
|
22
|
-
exit: true,
|
|
23
|
-
recursive: true,
|
|
24
|
-
require: requiredModules,
|
|
25
|
-
'unhandled-rejections': 'strict',
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
if (process.env.FLUID_TEST_TIMEOUT !== undefined) {
|
|
29
|
-
config['timeout'] = process.env.FLUID_TEST_TIMEOUT;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
if (process.env.FLUID_TEST_REPORT === '1') {
|
|
33
|
-
config['reporter'] = `xunit`;
|
|
34
|
-
config['reporter-options'] = [
|
|
35
|
-
// give the report file a unique name based on driver config
|
|
36
|
-
`output=${packageDir}/nyc/${testDriver}-junit-report.xml`,
|
|
37
|
-
`suiteName="dds tree - ${testDirver}"`,
|
|
38
|
-
];
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
module.exports = config;
|