@fluidframework/container-runtime 2.13.0 → 2.21.0
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/.eslintrc.cjs +71 -5
- package/CHANGELOG.md +84 -0
- package/api-report/container-runtime.legacy.alpha.api.md +38 -232
- package/dist/batchTracker.d.ts +1 -2
- package/dist/batchTracker.d.ts.map +1 -1
- package/dist/batchTracker.js +1 -1
- package/dist/batchTracker.js.map +1 -1
- package/dist/blobManager/blobManager.d.ts +5 -1
- package/dist/blobManager/blobManager.d.ts.map +1 -1
- package/dist/blobManager/blobManager.js +30 -13
- package/dist/blobManager/blobManager.js.map +1 -1
- package/dist/blobManager/blobManagerSnapSum.d.ts +1 -0
- package/dist/blobManager/blobManagerSnapSum.d.ts.map +1 -1
- package/dist/blobManager/blobManagerSnapSum.js +7 -5
- package/dist/blobManager/blobManagerSnapSum.js.map +1 -1
- package/dist/channelCollection.d.ts +23 -12
- package/dist/channelCollection.d.ts.map +1 -1
- package/dist/channelCollection.js +85 -53
- package/dist/channelCollection.js.map +1 -1
- package/dist/connectionTelemetry.d.ts +2 -2
- package/dist/connectionTelemetry.d.ts.map +1 -1
- package/dist/connectionTelemetry.js +10 -6
- package/dist/connectionTelemetry.js.map +1 -1
- package/dist/containerHandleContext.d.ts +1 -1
- package/dist/containerHandleContext.d.ts.map +1 -1
- package/dist/containerHandleContext.js.map +1 -1
- package/dist/containerRuntime.d.ts +87 -94
- package/dist/containerRuntime.d.ts.map +1 -1
- package/dist/containerRuntime.js +312 -226
- package/dist/containerRuntime.js.map +1 -1
- package/dist/dataStore.d.ts +7 -3
- package/dist/dataStore.d.ts.map +1 -1
- package/dist/dataStore.js +8 -4
- package/dist/dataStore.js.map +1 -1
- package/dist/dataStoreContext.d.ts +41 -25
- package/dist/dataStoreContext.d.ts.map +1 -1
- package/dist/dataStoreContext.js +47 -29
- package/dist/dataStoreContext.js.map +1 -1
- package/dist/dataStoreContexts.d.ts +6 -2
- package/dist/dataStoreContexts.d.ts.map +1 -1
- package/dist/dataStoreContexts.js +7 -2
- package/dist/dataStoreContexts.js.map +1 -1
- package/dist/dataStoreRegistry.d.ts +1 -1
- package/dist/dataStoreRegistry.d.ts.map +1 -1
- package/dist/dataStoreRegistry.js.map +1 -1
- package/dist/deltaManagerProxies.d.ts +1 -17
- package/dist/deltaManagerProxies.d.ts.map +1 -1
- package/dist/deltaManagerProxies.js.map +1 -1
- package/dist/deltaScheduler.d.ts +9 -6
- package/dist/deltaScheduler.d.ts.map +1 -1
- package/dist/deltaScheduler.js +95 -89
- package/dist/deltaScheduler.js.map +1 -1
- package/dist/gc/garbageCollection.d.ts +21 -7
- package/dist/gc/garbageCollection.d.ts.map +1 -1
- package/dist/gc/garbageCollection.js +48 -19
- package/dist/gc/garbageCollection.js.map +1 -1
- package/dist/gc/gcConfigs.d.ts +11 -0
- package/dist/gc/gcConfigs.d.ts.map +1 -1
- package/dist/gc/gcConfigs.js +5 -2
- package/dist/gc/gcConfigs.js.map +1 -1
- package/dist/gc/gcDefinitions.d.ts +218 -70
- package/dist/gc/gcDefinitions.d.ts.map +1 -1
- package/dist/gc/gcDefinitions.js +40 -13
- package/dist/gc/gcDefinitions.js.map +1 -1
- package/dist/gc/gcHelpers.d.ts +6 -2
- package/dist/gc/gcHelpers.d.ts.map +1 -1
- package/dist/gc/gcHelpers.js +14 -7
- package/dist/gc/gcHelpers.js.map +1 -1
- package/dist/gc/gcReferenceGraphAlgorithm.js.map +1 -1
- package/dist/gc/gcSummaryDefinitions.d.ts +18 -6
- package/dist/gc/gcSummaryDefinitions.d.ts.map +1 -1
- package/dist/gc/gcSummaryDefinitions.js.map +1 -1
- package/dist/gc/gcSummaryStateTracker.d.ts.map +1 -1
- package/dist/gc/gcSummaryStateTracker.js +2 -1
- package/dist/gc/gcSummaryStateTracker.js.map +1 -1
- package/dist/gc/gcTelemetry.d.ts +33 -11
- package/dist/gc/gcTelemetry.d.ts.map +1 -1
- package/dist/gc/gcTelemetry.js +35 -17
- package/dist/gc/gcTelemetry.js.map +1 -1
- package/dist/gc/gcUnreferencedStateTracker.d.ts +42 -13
- package/dist/gc/gcUnreferencedStateTracker.d.ts.map +1 -1
- package/dist/gc/gcUnreferencedStateTracker.js +27 -9
- package/dist/gc/gcUnreferencedStateTracker.js.map +1 -1
- package/dist/gc/index.d.ts +1 -0
- package/dist/gc/index.d.ts.map +1 -1
- package/dist/gc/index.js +3 -1
- package/dist/gc/index.js.map +1 -1
- package/dist/inboundBatchAggregator.d.ts +34 -0
- package/dist/inboundBatchAggregator.d.ts.map +1 -0
- package/dist/inboundBatchAggregator.js +185 -0
- package/dist/inboundBatchAggregator.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/layerCompatState.d.ts +19 -0
- package/dist/layerCompatState.d.ts.map +1 -0
- package/dist/layerCompatState.js +64 -0
- package/dist/layerCompatState.js.map +1 -0
- package/dist/legacy.d.ts +0 -4
- package/dist/messageTypes.d.ts +14 -5
- package/dist/messageTypes.d.ts.map +1 -1
- package/dist/messageTypes.js.map +1 -1
- package/dist/metadata.d.ts +12 -4
- package/dist/metadata.d.ts.map +1 -1
- package/dist/metadata.js +6 -2
- package/dist/metadata.js.map +1 -1
- package/dist/opLifecycle/batchManager.d.ts +9 -3
- package/dist/opLifecycle/batchManager.d.ts.map +1 -1
- package/dist/opLifecycle/batchManager.js +3 -1
- package/dist/opLifecycle/batchManager.js.map +1 -1
- package/dist/opLifecycle/duplicateBatchDetector.d.ts +9 -3
- package/dist/opLifecycle/duplicateBatchDetector.d.ts.map +1 -1
- package/dist/opLifecycle/duplicateBatchDetector.js +11 -5
- package/dist/opLifecycle/duplicateBatchDetector.js.map +1 -1
- package/dist/opLifecycle/opCompressor.d.ts +3 -2
- package/dist/opLifecycle/opCompressor.d.ts.map +1 -1
- package/dist/opLifecycle/opCompressor.js +13 -19
- package/dist/opLifecycle/opCompressor.js.map +1 -1
- package/dist/opLifecycle/opDecompressor.d.ts +6 -1
- package/dist/opLifecycle/opDecompressor.d.ts.map +1 -1
- package/dist/opLifecycle/opDecompressor.js +16 -8
- package/dist/opLifecycle/opDecompressor.js.map +1 -1
- package/dist/opLifecycle/opGroupingManager.d.ts +1 -2
- package/dist/opLifecycle/opGroupingManager.d.ts.map +1 -1
- package/dist/opLifecycle/opGroupingManager.js +9 -6
- package/dist/opLifecycle/opGroupingManager.js.map +1 -1
- package/dist/opLifecycle/opSplitter.d.ts +13 -10
- package/dist/opLifecycle/opSplitter.d.ts.map +1 -1
- package/dist/opLifecycle/opSplitter.js +16 -11
- package/dist/opLifecycle/opSplitter.js.map +1 -1
- package/dist/opLifecycle/outbox.d.ts +4 -4
- package/dist/opLifecycle/outbox.d.ts.map +1 -1
- package/dist/opLifecycle/outbox.js +17 -16
- package/dist/opLifecycle/outbox.js.map +1 -1
- package/dist/opLifecycle/remoteMessageProcessor.d.ts +9 -3
- package/dist/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
- package/dist/opLifecycle/remoteMessageProcessor.js +3 -1
- package/dist/opLifecycle/remoteMessageProcessor.js.map +1 -1
- package/dist/package.json +2 -1
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/pendingStateManager.d.ts +22 -11
- package/dist/pendingStateManager.d.ts.map +1 -1
- package/dist/pendingStateManager.js +24 -15
- package/dist/pendingStateManager.js.map +1 -1
- package/dist/summary/documentSchema.d.ts +7 -0
- package/dist/summary/documentSchema.d.ts.map +1 -1
- package/dist/summary/documentSchema.js +8 -4
- package/dist/summary/documentSchema.js.map +1 -1
- package/dist/summary/index.d.ts +1 -1
- package/dist/summary/index.d.ts.map +1 -1
- package/dist/summary/index.js.map +1 -1
- package/dist/summary/orderedClientElection.d.ts +94 -31
- package/dist/summary/orderedClientElection.d.ts.map +1 -1
- package/dist/summary/orderedClientElection.js +28 -16
- package/dist/summary/orderedClientElection.js.map +1 -1
- package/dist/summary/runWhileConnectedCoordinator.d.ts +1 -0
- package/dist/summary/runWhileConnectedCoordinator.d.ts.map +1 -1
- package/dist/summary/runWhileConnectedCoordinator.js +7 -2
- package/dist/summary/runWhileConnectedCoordinator.js.map +1 -1
- package/dist/summary/runningSummarizer.d.ts +17 -6
- package/dist/summary/runningSummarizer.d.ts.map +1 -1
- package/dist/summary/runningSummarizer.js +48 -19
- package/dist/summary/runningSummarizer.js.map +1 -1
- package/dist/summary/summarizer.d.ts +10 -5
- package/dist/summary/summarizer.d.ts.map +1 -1
- package/dist/summary/summarizer.js +26 -11
- package/dist/summary/summarizer.js.map +1 -1
- package/dist/summary/summarizerClientElection.d.ts.map +1 -1
- package/dist/summary/summarizerClientElection.js +1 -0
- package/dist/summary/summarizerClientElection.js.map +1 -1
- package/dist/summary/summarizerHeuristics.d.ts +6 -2
- package/dist/summary/summarizerHeuristics.d.ts.map +1 -1
- package/dist/summary/summarizerHeuristics.js +13 -5
- package/dist/summary/summarizerHeuristics.js.map +1 -1
- package/dist/summary/summarizerNode/index.d.ts.map +1 -1
- package/dist/summary/summarizerNode/index.js.map +1 -1
- package/dist/summary/summarizerNode/summarizerNode.d.ts +24 -8
- package/dist/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
- package/dist/summary/summarizerNode/summarizerNode.js +45 -36
- package/dist/summary/summarizerNode/summarizerNode.js.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts +48 -16
- package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeUtils.js +3 -1
- package/dist/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts +13 -5
- package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeWithGc.js +15 -7
- package/dist/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
- package/dist/summary/summarizerTypes.d.ts +253 -135
- package/dist/summary/summarizerTypes.d.ts.map +1 -1
- package/dist/summary/summarizerTypes.js.map +1 -1
- package/dist/summary/summaryCollection.d.ts +3 -4
- package/dist/summary/summaryCollection.d.ts.map +1 -1
- package/dist/summary/summaryCollection.js +10 -8
- package/dist/summary/summaryCollection.js.map +1 -1
- package/dist/summary/summaryFormat.d.ts +28 -9
- package/dist/summary/summaryFormat.d.ts.map +1 -1
- package/dist/summary/summaryFormat.js +3 -2
- package/dist/summary/summaryFormat.js.map +1 -1
- package/dist/summary/summaryGenerator.d.ts +9 -3
- package/dist/summary/summaryGenerator.d.ts.map +1 -1
- package/dist/summary/summaryGenerator.js +22 -9
- package/dist/summary/summaryGenerator.js.map +1 -1
- package/dist/summary/summaryManager.d.ts +8 -4
- package/dist/summary/summaryManager.d.ts.map +1 -1
- package/dist/summary/summaryManager.js +20 -9
- package/dist/summary/summaryManager.js.map +1 -1
- package/dist/throttler.d.ts +26 -10
- package/dist/throttler.d.ts.map +1 -1
- package/dist/throttler.js +12 -4
- package/dist/throttler.js.map +1 -1
- package/lib/batchTracker.d.ts +1 -2
- package/lib/batchTracker.d.ts.map +1 -1
- package/lib/batchTracker.js +2 -2
- package/lib/batchTracker.js.map +1 -1
- package/lib/blobManager/blobManager.d.ts +5 -1
- package/lib/blobManager/blobManager.d.ts.map +1 -1
- package/lib/blobManager/blobManager.js +30 -13
- package/lib/blobManager/blobManager.js.map +1 -1
- package/lib/blobManager/blobManagerSnapSum.d.ts +1 -0
- package/lib/blobManager/blobManagerSnapSum.d.ts.map +1 -1
- package/lib/blobManager/blobManagerSnapSum.js +7 -5
- package/lib/blobManager/blobManagerSnapSum.js.map +1 -1
- package/lib/channelCollection.d.ts +23 -12
- package/lib/channelCollection.d.ts.map +1 -1
- package/lib/channelCollection.js +88 -54
- package/lib/channelCollection.js.map +1 -1
- package/lib/connectionTelemetry.d.ts +2 -2
- package/lib/connectionTelemetry.d.ts.map +1 -1
- package/lib/connectionTelemetry.js +11 -7
- package/lib/connectionTelemetry.js.map +1 -1
- package/lib/containerHandleContext.d.ts +1 -1
- package/lib/containerHandleContext.d.ts.map +1 -1
- package/lib/containerHandleContext.js.map +1 -1
- package/lib/containerRuntime.d.ts +87 -94
- package/lib/containerRuntime.d.ts.map +1 -1
- package/lib/containerRuntime.js +319 -228
- package/lib/containerRuntime.js.map +1 -1
- package/lib/dataStore.d.ts +7 -3
- package/lib/dataStore.d.ts.map +1 -1
- package/lib/dataStore.js +8 -4
- package/lib/dataStore.js.map +1 -1
- package/lib/dataStoreContext.d.ts +41 -25
- package/lib/dataStoreContext.d.ts.map +1 -1
- package/lib/dataStoreContext.js +47 -29
- package/lib/dataStoreContext.js.map +1 -1
- package/lib/dataStoreContexts.d.ts +6 -2
- package/lib/dataStoreContexts.d.ts.map +1 -1
- package/lib/dataStoreContexts.js +7 -2
- package/lib/dataStoreContexts.js.map +1 -1
- package/lib/dataStoreRegistry.d.ts +1 -1
- package/lib/dataStoreRegistry.d.ts.map +1 -1
- package/lib/dataStoreRegistry.js.map +1 -1
- package/lib/deltaManagerProxies.d.ts +1 -17
- package/lib/deltaManagerProxies.d.ts.map +1 -1
- package/lib/deltaManagerProxies.js.map +1 -1
- package/lib/deltaScheduler.d.ts +9 -6
- package/lib/deltaScheduler.d.ts.map +1 -1
- package/lib/deltaScheduler.js +96 -90
- package/lib/deltaScheduler.js.map +1 -1
- package/lib/gc/garbageCollection.d.ts +21 -7
- package/lib/gc/garbageCollection.d.ts.map +1 -1
- package/lib/gc/garbageCollection.js +51 -20
- package/lib/gc/garbageCollection.js.map +1 -1
- package/lib/gc/gcConfigs.d.ts +11 -0
- package/lib/gc/gcConfigs.d.ts.map +1 -1
- package/lib/gc/gcConfigs.js +4 -2
- package/lib/gc/gcConfigs.js.map +1 -1
- package/lib/gc/gcDefinitions.d.ts +218 -70
- package/lib/gc/gcDefinitions.d.ts.map +1 -1
- package/lib/gc/gcDefinitions.js +40 -13
- package/lib/gc/gcDefinitions.js.map +1 -1
- package/lib/gc/gcHelpers.d.ts +6 -2
- package/lib/gc/gcHelpers.d.ts.map +1 -1
- package/lib/gc/gcHelpers.js +14 -7
- package/lib/gc/gcHelpers.js.map +1 -1
- package/lib/gc/gcReferenceGraphAlgorithm.js.map +1 -1
- package/lib/gc/gcSummaryDefinitions.d.ts +18 -6
- package/lib/gc/gcSummaryDefinitions.d.ts.map +1 -1
- package/lib/gc/gcSummaryDefinitions.js.map +1 -1
- package/lib/gc/gcSummaryStateTracker.d.ts.map +1 -1
- package/lib/gc/gcSummaryStateTracker.js +2 -1
- package/lib/gc/gcSummaryStateTracker.js.map +1 -1
- package/lib/gc/gcTelemetry.d.ts +33 -11
- package/lib/gc/gcTelemetry.d.ts.map +1 -1
- package/lib/gc/gcTelemetry.js +38 -18
- package/lib/gc/gcTelemetry.js.map +1 -1
- package/lib/gc/gcUnreferencedStateTracker.d.ts +42 -13
- package/lib/gc/gcUnreferencedStateTracker.d.ts.map +1 -1
- package/lib/gc/gcUnreferencedStateTracker.js +27 -9
- package/lib/gc/gcUnreferencedStateTracker.js.map +1 -1
- package/lib/gc/index.d.ts +1 -0
- package/lib/gc/index.d.ts.map +1 -1
- package/lib/gc/index.js +1 -0
- package/lib/gc/index.js.map +1 -1
- package/lib/inboundBatchAggregator.d.ts +34 -0
- package/lib/inboundBatchAggregator.d.ts.map +1 -0
- package/lib/inboundBatchAggregator.js +181 -0
- package/lib/inboundBatchAggregator.js.map +1 -0
- package/lib/index.d.ts +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js.map +1 -1
- package/lib/layerCompatState.d.ts +19 -0
- package/lib/layerCompatState.d.ts.map +1 -0
- package/lib/layerCompatState.js +60 -0
- package/lib/layerCompatState.js.map +1 -0
- package/lib/legacy.d.ts +0 -4
- package/lib/messageTypes.d.ts +14 -5
- package/lib/messageTypes.d.ts.map +1 -1
- package/lib/messageTypes.js.map +1 -1
- package/lib/metadata.d.ts +12 -4
- package/lib/metadata.d.ts.map +1 -1
- package/lib/metadata.js +6 -2
- package/lib/metadata.js.map +1 -1
- package/lib/opLifecycle/batchManager.d.ts +9 -3
- package/lib/opLifecycle/batchManager.d.ts.map +1 -1
- package/lib/opLifecycle/batchManager.js +3 -1
- package/lib/opLifecycle/batchManager.js.map +1 -1
- package/lib/opLifecycle/duplicateBatchDetector.d.ts +9 -3
- package/lib/opLifecycle/duplicateBatchDetector.d.ts.map +1 -1
- package/lib/opLifecycle/duplicateBatchDetector.js +11 -5
- package/lib/opLifecycle/duplicateBatchDetector.js.map +1 -1
- package/lib/opLifecycle/opCompressor.d.ts +3 -2
- package/lib/opLifecycle/opCompressor.d.ts.map +1 -1
- package/lib/opLifecycle/opCompressor.js +14 -20
- package/lib/opLifecycle/opCompressor.js.map +1 -1
- package/lib/opLifecycle/opDecompressor.d.ts +6 -1
- package/lib/opLifecycle/opDecompressor.d.ts.map +1 -1
- package/lib/opLifecycle/opDecompressor.js +17 -9
- package/lib/opLifecycle/opDecompressor.js.map +1 -1
- package/lib/opLifecycle/opGroupingManager.d.ts +1 -2
- package/lib/opLifecycle/opGroupingManager.d.ts.map +1 -1
- package/lib/opLifecycle/opGroupingManager.js +10 -7
- package/lib/opLifecycle/opGroupingManager.js.map +1 -1
- package/lib/opLifecycle/opSplitter.d.ts +13 -10
- package/lib/opLifecycle/opSplitter.d.ts.map +1 -1
- package/lib/opLifecycle/opSplitter.js +16 -11
- package/lib/opLifecycle/opSplitter.js.map +1 -1
- package/lib/opLifecycle/outbox.d.ts +4 -4
- package/lib/opLifecycle/outbox.d.ts.map +1 -1
- package/lib/opLifecycle/outbox.js +17 -16
- package/lib/opLifecycle/outbox.js.map +1 -1
- package/lib/opLifecycle/remoteMessageProcessor.d.ts +9 -3
- package/lib/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
- package/lib/opLifecycle/remoteMessageProcessor.js +3 -1
- package/lib/opLifecycle/remoteMessageProcessor.js.map +1 -1
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/pendingStateManager.d.ts +22 -11
- package/lib/pendingStateManager.d.ts.map +1 -1
- package/lib/pendingStateManager.js +25 -16
- package/lib/pendingStateManager.js.map +1 -1
- package/lib/summary/documentSchema.d.ts +7 -0
- package/lib/summary/documentSchema.d.ts.map +1 -1
- package/lib/summary/documentSchema.js +8 -4
- package/lib/summary/documentSchema.js.map +1 -1
- package/lib/summary/index.d.ts +1 -1
- package/lib/summary/index.d.ts.map +1 -1
- package/lib/summary/index.js.map +1 -1
- package/lib/summary/orderedClientElection.d.ts +94 -31
- package/lib/summary/orderedClientElection.d.ts.map +1 -1
- package/lib/summary/orderedClientElection.js +28 -16
- package/lib/summary/orderedClientElection.js.map +1 -1
- package/lib/summary/runWhileConnectedCoordinator.d.ts +1 -0
- package/lib/summary/runWhileConnectedCoordinator.d.ts.map +1 -1
- package/lib/summary/runWhileConnectedCoordinator.js +7 -2
- package/lib/summary/runWhileConnectedCoordinator.js.map +1 -1
- package/lib/summary/runningSummarizer.d.ts +17 -6
- package/lib/summary/runningSummarizer.d.ts.map +1 -1
- package/lib/summary/runningSummarizer.js +48 -19
- package/lib/summary/runningSummarizer.js.map +1 -1
- package/lib/summary/summarizer.d.ts +10 -5
- package/lib/summary/summarizer.d.ts.map +1 -1
- package/lib/summary/summarizer.js +26 -11
- package/lib/summary/summarizer.js.map +1 -1
- package/lib/summary/summarizerClientElection.d.ts.map +1 -1
- package/lib/summary/summarizerClientElection.js +1 -0
- package/lib/summary/summarizerClientElection.js.map +1 -1
- package/lib/summary/summarizerHeuristics.d.ts +6 -2
- package/lib/summary/summarizerHeuristics.d.ts.map +1 -1
- package/lib/summary/summarizerHeuristics.js +13 -5
- package/lib/summary/summarizerHeuristics.js.map +1 -1
- package/lib/summary/summarizerNode/index.d.ts.map +1 -1
- package/lib/summary/summarizerNode/index.js.map +1 -1
- package/lib/summary/summarizerNode/summarizerNode.d.ts +24 -8
- package/lib/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
- package/lib/summary/summarizerNode/summarizerNode.js +45 -36
- package/lib/summary/summarizerNode/summarizerNode.js.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts +48 -16
- package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeUtils.js +3 -1
- package/lib/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts +13 -5
- package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeWithGc.js +15 -7
- package/lib/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
- package/lib/summary/summarizerTypes.d.ts +253 -135
- package/lib/summary/summarizerTypes.d.ts.map +1 -1
- package/lib/summary/summarizerTypes.js.map +1 -1
- package/lib/summary/summaryCollection.d.ts +3 -4
- package/lib/summary/summaryCollection.d.ts.map +1 -1
- package/lib/summary/summaryCollection.js +10 -8
- package/lib/summary/summaryCollection.js.map +1 -1
- package/lib/summary/summaryFormat.d.ts +28 -9
- package/lib/summary/summaryFormat.d.ts.map +1 -1
- package/lib/summary/summaryFormat.js +2 -2
- package/lib/summary/summaryFormat.js.map +1 -1
- package/lib/summary/summaryGenerator.d.ts +9 -3
- package/lib/summary/summaryGenerator.d.ts.map +1 -1
- package/lib/summary/summaryGenerator.js +22 -9
- package/lib/summary/summaryGenerator.js.map +1 -1
- package/lib/summary/summaryManager.d.ts +8 -4
- package/lib/summary/summaryManager.d.ts.map +1 -1
- package/lib/summary/summaryManager.js +20 -9
- package/lib/summary/summaryManager.js.map +1 -1
- package/lib/throttler.d.ts +26 -10
- package/lib/throttler.d.ts.map +1 -1
- package/lib/throttler.js +12 -4
- package/lib/throttler.js.map +1 -1
- package/package.json +22 -31
- package/src/batchTracker.ts +34 -36
- package/src/blobManager/blobManager.ts +54 -33
- package/src/blobManager/blobManagerSnapSum.ts +10 -10
- package/src/channelCollection.ts +108 -82
- package/src/connectionTelemetry.ts +43 -19
- package/src/containerHandleContext.ts +2 -2
- package/src/containerRuntime.ts +492 -364
- package/src/dataStore.ts +17 -9
- package/src/dataStoreContext.ts +94 -73
- package/src/dataStoreContexts.ts +17 -12
- package/src/dataStoreRegistry.ts +1 -1
- package/src/deltaManagerProxies.ts +5 -5
- package/src/deltaScheduler.ts +24 -18
- package/src/gc/garbageCollection.ts +89 -40
- package/src/gc/gcConfigs.ts +13 -5
- package/src/gc/gcDefinitions.ts +224 -70
- package/src/gc/gcHelpers.ts +22 -11
- package/src/gc/gcReferenceGraphAlgorithm.ts +1 -1
- package/src/gc/gcSummaryDefinitions.ts +18 -6
- package/src/gc/gcSummaryStateTracker.ts +7 -3
- package/src/gc/gcTelemetry.ts +73 -30
- package/src/gc/gcUnreferencedStateTracker.ts +40 -16
- package/src/gc/index.ts +1 -0
- package/src/{scheduleManager.ts → inboundBatchAggregator.ts} +55 -122
- package/src/index.ts +0 -3
- package/src/layerCompatState.ts +75 -0
- package/src/messageTypes.ts +16 -5
- package/src/metadata.ts +12 -4
- package/src/opLifecycle/README.md +43 -34
- package/src/opLifecycle/batchManager.ts +12 -6
- package/src/opLifecycle/duplicateBatchDetector.ts +12 -6
- package/src/opLifecycle/opCompressor.ts +22 -25
- package/src/opLifecycle/opDecompressor.ts +23 -11
- package/src/opLifecycle/opGroupingManager.ts +16 -11
- package/src/opLifecycle/opSplitter.ts +24 -18
- package/src/opLifecycle/outbox.ts +35 -33
- package/src/opLifecycle/remoteMessageProcessor.ts +13 -5
- package/src/packageVersion.ts +1 -1
- package/src/pendingStateManager.ts +49 -26
- package/src/summary/documentSchema.ts +41 -22
- package/src/summary/index.ts +0 -3
- package/src/summary/orderedClientElection.ts +114 -49
- package/src/summary/runWhileConnectedCoordinator.ts +12 -3
- package/src/summary/runningSummarizer.ts +79 -36
- package/src/summary/summarizer.ts +51 -25
- package/src/summary/summarizerClientElection.ts +4 -2
- package/src/summary/summarizerHeuristics.ts +23 -12
- package/src/summary/summarizerNode/index.ts +1 -0
- package/src/summary/summarizerNode/summarizerNode.ts +54 -43
- package/src/summary/summarizerNode/summarizerNodeUtils.ts +48 -16
- package/src/summary/summarizerNode/summarizerNodeWithGc.ts +25 -15
- package/src/summary/summarizerTypes.ts +253 -139
- package/src/summary/summaryCollection.ts +41 -31
- package/src/summary/summaryFormat.ts +34 -13
- package/src/summary/summaryGenerator.ts +39 -18
- package/src/summary/summaryManager.ts +36 -24
- package/src/throttler.ts +23 -11
- package/container-runtime.test-files.tar +0 -0
- package/dist/scheduleManager.d.ts +0 -28
- package/dist/scheduleManager.d.ts.map +0 -1
- package/dist/scheduleManager.js +0 -233
- package/dist/scheduleManager.js.map +0 -1
- package/lib/scheduleManager.d.ts +0 -28
- package/lib/scheduleManager.d.ts.map +0 -1
- package/lib/scheduleManager.js +0 -229
- package/lib/scheduleManager.js.map +0 -1
|
@@ -3,13 +3,14 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { IDisposable } from "@fluidframework/core-interfaces";
|
|
6
|
+
import { IDisposable, type ITelemetryBaseLogger } from "@fluidframework/core-interfaces";
|
|
7
7
|
import { assert, Lazy } from "@fluidframework/core-utils/internal";
|
|
8
8
|
import {
|
|
9
9
|
ITelemetryLoggerExt,
|
|
10
10
|
DataProcessingError,
|
|
11
11
|
LoggingError,
|
|
12
12
|
extractSafePropertiesFromMessage,
|
|
13
|
+
createChildLogger,
|
|
13
14
|
} from "@fluidframework/telemetry-utils/internal";
|
|
14
15
|
import Deque from "double-ended-queue";
|
|
15
16
|
import { v4 as uuid } from "uuid";
|
|
@@ -56,16 +57,22 @@ export interface IPendingMessage {
|
|
|
56
57
|
* Or, -1 if it was never submitted (and clientId will be a random uuid)
|
|
57
58
|
*/
|
|
58
59
|
batchStartCsn: number;
|
|
59
|
-
/**
|
|
60
|
+
/**
|
|
61
|
+
* length of the batch (how many runtime messages here)
|
|
62
|
+
*/
|
|
60
63
|
length: number;
|
|
61
|
-
/**
|
|
64
|
+
/**
|
|
65
|
+
* If true, don't compare batchID of incoming batches to this. e.g. ID Allocation Batch IDs should be ignored
|
|
66
|
+
*/
|
|
62
67
|
ignoreBatchId?: boolean;
|
|
63
68
|
};
|
|
64
69
|
}
|
|
65
70
|
|
|
66
71
|
type Patch<T, U> = U & Omit<T, keyof U>;
|
|
67
72
|
|
|
68
|
-
/**
|
|
73
|
+
/**
|
|
74
|
+
* First version of the type (pre-dates batchInfo)
|
|
75
|
+
*/
|
|
69
76
|
type IPendingMessageV0 = Patch<IPendingMessage, { batchInfo?: undefined }>;
|
|
70
77
|
|
|
71
78
|
/**
|
|
@@ -82,7 +89,9 @@ export interface IPendingLocalState {
|
|
|
82
89
|
pendingStates: IPendingMessage[];
|
|
83
90
|
}
|
|
84
91
|
|
|
85
|
-
/**
|
|
92
|
+
/**
|
|
93
|
+
* Info needed to replay/resubmit a pending message
|
|
94
|
+
*/
|
|
86
95
|
export type PendingMessageResubmitData = Pick<
|
|
87
96
|
IPendingMessage,
|
|
88
97
|
"content" | "localOpMetadata" | "opMetadata"
|
|
@@ -98,7 +107,9 @@ export interface IRuntimeStateHandler {
|
|
|
98
107
|
}
|
|
99
108
|
|
|
100
109
|
function isEmptyBatchPendingMessage(message: IPendingMessageFromStash): boolean {
|
|
110
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
101
111
|
const content = JSON.parse(message.content);
|
|
112
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
102
113
|
return content.type === "groupedBatch" && content.contents?.length === 0;
|
|
103
114
|
}
|
|
104
115
|
|
|
@@ -132,7 +143,7 @@ function scrubAndStringify(
|
|
|
132
143
|
}
|
|
133
144
|
|
|
134
145
|
/**
|
|
135
|
-
*
|
|
146
|
+
* Finds and returns the index where the strings diverge, and the character at that index in each string (or undefined if not applicable)
|
|
136
147
|
*/
|
|
137
148
|
export function findFirstCharacterMismatched(
|
|
138
149
|
a: string,
|
|
@@ -170,9 +181,13 @@ function withoutLocalOpMetadata(message: IPendingMessage): IPendingMessage {
|
|
|
170
181
|
* It verifies that all the ops are acked, are received in the right order and batch information is correct.
|
|
171
182
|
*/
|
|
172
183
|
export class PendingStateManager implements IDisposable {
|
|
173
|
-
/**
|
|
184
|
+
/**
|
|
185
|
+
* Messages that will need to be resubmitted if not ack'd before the next reconnection
|
|
186
|
+
*/
|
|
174
187
|
private readonly pendingMessages = new Deque<IPendingMessage>();
|
|
175
|
-
/**
|
|
188
|
+
/**
|
|
189
|
+
* Messages stashed from a previous container, now being rehydrated. Need to be resubmitted.
|
|
190
|
+
*/
|
|
176
191
|
private readonly initialMessages = new Deque<IPendingMessageFromStash>();
|
|
177
192
|
|
|
178
193
|
/**
|
|
@@ -180,12 +195,15 @@ export class PendingStateManager implements IDisposable {
|
|
|
180
195
|
*/
|
|
181
196
|
private savedOps: IPendingMessage[] = [];
|
|
182
197
|
|
|
198
|
+
// eslint-disable-next-line unicorn/consistent-function-scoping -- Property is defined once; no need to extract inner lambda
|
|
183
199
|
private readonly disposeOnce = new Lazy<void>(() => {
|
|
184
200
|
this.initialMessages.clear();
|
|
185
201
|
this.pendingMessages.clear();
|
|
186
202
|
});
|
|
187
203
|
|
|
188
|
-
/**
|
|
204
|
+
/**
|
|
205
|
+
* Used to ensure we don't replay ops on the same connection twice
|
|
206
|
+
*/
|
|
189
207
|
private clientIdFromLastReplay: string | undefined;
|
|
190
208
|
|
|
191
209
|
/**
|
|
@@ -228,36 +246,39 @@ export class PendingStateManager implements IDisposable {
|
|
|
228
246
|
);
|
|
229
247
|
return message.sequenceNumber > (snapshotSequenceNumber ?? 0);
|
|
230
248
|
});
|
|
231
|
-
this.pendingMessages.toArray()
|
|
249
|
+
for (const message of this.pendingMessages.toArray()) {
|
|
232
250
|
if (
|
|
233
251
|
snapshotSequenceNumber !== undefined &&
|
|
234
252
|
message.referenceSequenceNumber < snapshotSequenceNumber
|
|
235
253
|
) {
|
|
236
254
|
throw new LoggingError("trying to stash ops older than our latest snapshot");
|
|
237
255
|
}
|
|
238
|
-
}
|
|
256
|
+
}
|
|
239
257
|
return {
|
|
240
258
|
pendingStates: [
|
|
241
259
|
...newSavedOps,
|
|
242
|
-
...this.pendingMessages.toArray().map(withoutLocalOpMetadata),
|
|
260
|
+
...this.pendingMessages.toArray().map((message) => withoutLocalOpMetadata(message)),
|
|
243
261
|
],
|
|
244
262
|
};
|
|
245
263
|
}
|
|
246
264
|
|
|
265
|
+
private readonly logger: ITelemetryLoggerExt;
|
|
266
|
+
|
|
247
267
|
constructor(
|
|
248
268
|
private readonly stateHandler: IRuntimeStateHandler,
|
|
249
269
|
stashedLocalState: IPendingLocalState | undefined,
|
|
250
|
-
|
|
270
|
+
logger: ITelemetryBaseLogger,
|
|
251
271
|
) {
|
|
272
|
+
this.logger = createChildLogger({ logger });
|
|
252
273
|
if (stashedLocalState?.pendingStates) {
|
|
253
274
|
this.initialMessages.push(...stashedLocalState.pendingStates);
|
|
254
275
|
}
|
|
255
276
|
}
|
|
256
277
|
|
|
257
|
-
public get disposed() {
|
|
278
|
+
public get disposed(): boolean {
|
|
258
279
|
return this.disposeOnce.evaluated;
|
|
259
280
|
}
|
|
260
|
-
public readonly dispose = () => this.disposeOnce.value;
|
|
281
|
+
public readonly dispose = (): void => this.disposeOnce.value;
|
|
261
282
|
|
|
262
283
|
/**
|
|
263
284
|
* The given batch has been flushed, and needs to be tracked locally until the corresponding
|
|
@@ -271,7 +292,7 @@ export class PendingStateManager implements IDisposable {
|
|
|
271
292
|
batch: BatchMessage[],
|
|
272
293
|
clientSequenceNumber: number | undefined,
|
|
273
294
|
ignoreBatchId?: boolean,
|
|
274
|
-
) {
|
|
295
|
+
): void {
|
|
275
296
|
// clientId and batchStartCsn are used for generating the batchId so we can detect container forks
|
|
276
297
|
// where this batch was submitted by two different clients rehydrating from the same local state.
|
|
277
298
|
// In the typical case where the batch was actually sent, use the clientId and clientSequenceNumber.
|
|
@@ -310,7 +331,7 @@ export class PendingStateManager implements IDisposable {
|
|
|
310
331
|
* Applies stashed ops at their reference sequence number so they are ready to be ACKed or resubmitted
|
|
311
332
|
* @param seqNum - Sequence number at which to apply ops. Will apply all ops if seqNum is undefined.
|
|
312
333
|
*/
|
|
313
|
-
public async applyStashedOpsAt(seqNum?: number) {
|
|
334
|
+
public async applyStashedOpsAt(seqNum?: number): Promise<void> {
|
|
314
335
|
// apply stashed ops at sequence number
|
|
315
336
|
while (!this.initialMessages.isEmpty()) {
|
|
316
337
|
if (seqNum !== undefined) {
|
|
@@ -336,15 +357,15 @@ export class PendingStateManager implements IDisposable {
|
|
|
336
357
|
}
|
|
337
358
|
// applyStashedOp will cause the DDS to behave as if it has sent the op but not actually send it
|
|
338
359
|
const localOpMetadata = await this.stateHandler.applyStashedOp(nextMessage.content);
|
|
339
|
-
if (
|
|
340
|
-
if (localOpMetadata !== undefined) {
|
|
341
|
-
throw new Error("Local Op Metadata must be undefined when not attached");
|
|
342
|
-
}
|
|
343
|
-
} else {
|
|
360
|
+
if (this.stateHandler.isAttached()) {
|
|
344
361
|
nextMessage.localOpMetadata = localOpMetadata;
|
|
345
362
|
// then we push onto pendingMessages which will cause PendingStateManager to resubmit when we connect
|
|
346
363
|
patchbatchInfo(nextMessage); // Back compat
|
|
347
364
|
this.pendingMessages.push(nextMessage);
|
|
365
|
+
} else {
|
|
366
|
+
if (localOpMetadata !== undefined) {
|
|
367
|
+
throw new Error("Local Op Metadata must be undefined when not attached");
|
|
368
|
+
}
|
|
348
369
|
}
|
|
349
370
|
} catch (error) {
|
|
350
371
|
throw DataProcessingError.wrapIfUnrecognized(error, "applyStashedOp", nextMessage);
|
|
@@ -535,7 +556,7 @@ export class PendingStateManager implements IDisposable {
|
|
|
535
556
|
/**
|
|
536
557
|
* Check if the incoming batch matches the batch info for the next pending message.
|
|
537
558
|
*/
|
|
538
|
-
private onLocalBatchBegin(batchStart: BatchStartInfo, batchLength?: number) {
|
|
559
|
+
private onLocalBatchBegin(batchStart: BatchStartInfo, batchLength?: number): void {
|
|
539
560
|
// Get the next message from the pending queue. Verify a message exists.
|
|
540
561
|
const pendingMessage = this.pendingMessages.peekFront();
|
|
541
562
|
assert(
|
|
@@ -594,7 +615,7 @@ export class PendingStateManager implements IDisposable {
|
|
|
594
615
|
* states in its queue. This includes triggering resubmission of unacked ops.
|
|
595
616
|
* ! Note: successfully resubmitting an op that has been successfully sequenced is not possible due to checks in the ConnectionStateHandler (Loader layer)
|
|
596
617
|
*/
|
|
597
|
-
public replayPendingStates() {
|
|
618
|
+
public replayPendingStates(): void {
|
|
598
619
|
assert(
|
|
599
620
|
this.stateHandler.connected(),
|
|
600
621
|
0x172 /* "The connection state is not consistent with the runtime" */,
|
|
@@ -638,7 +659,7 @@ export class PendingStateManager implements IDisposable {
|
|
|
638
659
|
/**
|
|
639
660
|
* We must preserve the distinct batches on resubmit.
|
|
640
661
|
* Note: It is not possible for the PendingStateManager to receive a partially acked batch. It will
|
|
641
|
-
* either receive the whole batch ack or nothing at all.
|
|
662
|
+
* either receive the whole batch ack or nothing at all. See {@link InboundBatchAggregator} for how this works.
|
|
642
663
|
*/
|
|
643
664
|
if (batchMetadataFlag === undefined) {
|
|
644
665
|
// Single-message batch
|
|
@@ -705,7 +726,9 @@ export class PendingStateManager implements IDisposable {
|
|
|
705
726
|
}
|
|
706
727
|
}
|
|
707
728
|
|
|
708
|
-
/**
|
|
729
|
+
/**
|
|
730
|
+
* For back-compat if trying to apply stashed ops that pre-date batchInfo
|
|
731
|
+
*/
|
|
709
732
|
function patchbatchInfo(
|
|
710
733
|
message: IPendingMessageFromStash,
|
|
711
734
|
): asserts message is IPendingMessage {
|
|
@@ -15,6 +15,7 @@ import { pkgVersion } from "../packageVersion.js";
|
|
|
15
15
|
* we want them to continue to collaborate alongside clients who support that capability, but such capability is shipping dark for now.
|
|
16
16
|
* @legacy
|
|
17
17
|
* @alpha
|
|
18
|
+
* @deprecated This type will be moved to internal in 2.30. External usage is not necessary or supported.
|
|
18
19
|
*/
|
|
19
20
|
export type DocumentSchemaValueType = string | string[] | true | number | undefined;
|
|
20
21
|
|
|
@@ -59,6 +60,7 @@ export type IdCompressorMode = "on" | "delayed" | undefined;
|
|
|
59
60
|
*
|
|
60
61
|
* @legacy
|
|
61
62
|
* @alpha
|
|
63
|
+
* @deprecated This type will be moved to internal in 2.30. External usage is not necessary or supported.
|
|
62
64
|
*/
|
|
63
65
|
export interface IDocumentSchema {
|
|
64
66
|
// version that describes how data is stored in this structure.
|
|
@@ -80,6 +82,7 @@ export interface IDocumentSchema {
|
|
|
80
82
|
* @see ContainerRuntimeDocumentSchemaMessage
|
|
81
83
|
* @legacy
|
|
82
84
|
* @alpha
|
|
85
|
+
* @deprecated This type will be moved to internal in 2.30. External usage is not necessary or supported.
|
|
83
86
|
*/
|
|
84
87
|
export type IDocumentSchemaChangeMessage = IDocumentSchema;
|
|
85
88
|
|
|
@@ -91,6 +94,7 @@ export type IDocumentSchemaChangeMessage = IDocumentSchema;
|
|
|
91
94
|
*
|
|
92
95
|
* @legacy
|
|
93
96
|
* @alpha
|
|
97
|
+
* @deprecated This type will be moved to internal in 2.30. External usage is not necessary or supported.
|
|
94
98
|
*/
|
|
95
99
|
export interface IDocumentSchemaFeatures {
|
|
96
100
|
// Tells if client uses legacy behavior of changing schema.
|
|
@@ -121,6 +125,7 @@ export interface IDocumentSchemaFeatures {
|
|
|
121
125
|
* Ex: Changing the 'document schema acceptance' mechanism from convert-and-swap to one requiring consensus does require changing this version.
|
|
122
126
|
* @legacy
|
|
123
127
|
* @alpha
|
|
128
|
+
* @deprecated This type will be moved to internal in 2.30. External usage is not necessary or supported.
|
|
124
129
|
*/
|
|
125
130
|
export const currentDocumentVersionSchema = 1;
|
|
126
131
|
|
|
@@ -128,6 +133,7 @@ export const currentDocumentVersionSchema = 1;
|
|
|
128
133
|
* Current document schema.
|
|
129
134
|
* @legacy
|
|
130
135
|
* @alpha
|
|
136
|
+
* @deprecated This type will be moved to internal in 2.30. External usage is not necessary or supported.
|
|
131
137
|
*/
|
|
132
138
|
// eslint-disable-next-line @typescript-eslint/consistent-type-definitions
|
|
133
139
|
export type IDocumentSchemaCurrent = {
|
|
@@ -148,21 +154,21 @@ interface IProperty<T = unknown> {
|
|
|
148
154
|
}
|
|
149
155
|
|
|
150
156
|
class TrueOrUndefined implements IProperty<true | undefined> {
|
|
151
|
-
public and(currentDocSchema?: true, desiredDocSchema?: true) {
|
|
157
|
+
public and(currentDocSchema?: true, desiredDocSchema?: true): true | undefined {
|
|
152
158
|
return currentDocSchema === true && desiredDocSchema === true ? true : undefined;
|
|
153
159
|
}
|
|
154
160
|
|
|
155
|
-
public or(currentDocSchema?: true, desiredDocSchema?: true) {
|
|
161
|
+
public or(currentDocSchema?: true, desiredDocSchema?: true): true | undefined {
|
|
156
162
|
return currentDocSchema === true || desiredDocSchema === true ? true : undefined;
|
|
157
163
|
}
|
|
158
164
|
|
|
159
|
-
public validate(t: unknown) {
|
|
165
|
+
public validate(t: unknown): t is true | undefined {
|
|
160
166
|
return t === undefined || t === true;
|
|
161
167
|
}
|
|
162
168
|
}
|
|
163
169
|
|
|
164
170
|
class TrueOrUndefinedMax extends TrueOrUndefined {
|
|
165
|
-
public and(currentDocSchema?: true, desiredDocSchema?: true) {
|
|
171
|
+
public and(currentDocSchema?: true, desiredDocSchema?: true): true | undefined {
|
|
166
172
|
return this.or(currentDocSchema, desiredDocSchema);
|
|
167
173
|
}
|
|
168
174
|
}
|
|
@@ -170,7 +176,7 @@ class TrueOrUndefinedMax extends TrueOrUndefined {
|
|
|
170
176
|
class MultiChoice implements IProperty<string | undefined> {
|
|
171
177
|
constructor(private readonly choices: string[]) {}
|
|
172
178
|
|
|
173
|
-
public and(currentDocSchema?: string, desiredDocSchema?: string) {
|
|
179
|
+
public and(currentDocSchema?: string, desiredDocSchema?: string): string | undefined {
|
|
174
180
|
if (currentDocSchema === undefined || desiredDocSchema === undefined) {
|
|
175
181
|
return undefined;
|
|
176
182
|
}
|
|
@@ -179,7 +185,7 @@ class MultiChoice implements IProperty<string | undefined> {
|
|
|
179
185
|
];
|
|
180
186
|
}
|
|
181
187
|
|
|
182
|
-
public or(currentDocSchema?: string, desiredDocSchema?: string) {
|
|
188
|
+
public or(currentDocSchema?: string, desiredDocSchema?: string): string | undefined {
|
|
183
189
|
if (currentDocSchema === undefined) {
|
|
184
190
|
return desiredDocSchema;
|
|
185
191
|
}
|
|
@@ -191,30 +197,36 @@ class MultiChoice implements IProperty<string | undefined> {
|
|
|
191
197
|
];
|
|
192
198
|
}
|
|
193
199
|
|
|
194
|
-
public validate(t: unknown) {
|
|
200
|
+
public validate(t: unknown): boolean {
|
|
195
201
|
return t === undefined || (typeof t === "string" && this.choices.includes(t));
|
|
196
202
|
}
|
|
197
203
|
}
|
|
198
204
|
|
|
199
205
|
class IdCompressorProperty extends MultiChoice {
|
|
200
206
|
// document schema always wins!
|
|
201
|
-
public and(currentDocSchema?: string, desiredDocSchema?: string) {
|
|
207
|
+
public and(currentDocSchema?: string, desiredDocSchema?: string): string | undefined {
|
|
202
208
|
return currentDocSchema;
|
|
203
209
|
}
|
|
204
210
|
}
|
|
205
211
|
|
|
206
212
|
class CheckVersions implements IProperty<string[] | undefined> {
|
|
207
|
-
public or(
|
|
213
|
+
public or(
|
|
214
|
+
currentDocSchema: string[] = [],
|
|
215
|
+
desiredDocSchema: string[] = [],
|
|
216
|
+
): string[] | undefined {
|
|
208
217
|
const set = new Set<string>([...currentDocSchema, ...desiredDocSchema]);
|
|
209
218
|
return arrayToProp([...set.values()]);
|
|
210
219
|
}
|
|
211
220
|
|
|
212
221
|
// Once version is there, it stays there forever.
|
|
213
|
-
public and(
|
|
222
|
+
public and(
|
|
223
|
+
currentDocSchema: string[] = [],
|
|
224
|
+
desiredDocSchema: string[] = [],
|
|
225
|
+
): string[] | undefined {
|
|
214
226
|
return this.or(currentDocSchema, desiredDocSchema);
|
|
215
227
|
}
|
|
216
228
|
|
|
217
|
-
public validate(t: unknown) {
|
|
229
|
+
public validate(t: unknown): boolean {
|
|
218
230
|
return t === undefined || (Array.isArray(t) && !t.includes(pkgVersion));
|
|
219
231
|
}
|
|
220
232
|
}
|
|
@@ -238,7 +250,7 @@ const documentSchemaSupportedConfigs = {
|
|
|
238
250
|
function checkRuntimeCompatibility(
|
|
239
251
|
documentSchema: IDocumentSchema | undefined,
|
|
240
252
|
schemaName: string,
|
|
241
|
-
) {
|
|
253
|
+
): void {
|
|
242
254
|
// Back-compat - we can't do anything about legacy documents.
|
|
243
255
|
// There is no way to validate them, so we are taking a guess that safe deployment processes used by a given app
|
|
244
256
|
// do not run into compat problems.
|
|
@@ -278,6 +290,7 @@ function checkRuntimeCompatibility(
|
|
|
278
290
|
}
|
|
279
291
|
|
|
280
292
|
if (unknownProperty !== undefined) {
|
|
293
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
281
294
|
const value = documentSchema[unknownProperty];
|
|
282
295
|
throw DataProcessingError.create(
|
|
283
296
|
msg,
|
|
@@ -286,6 +299,7 @@ function checkRuntimeCompatibility(
|
|
|
286
299
|
{
|
|
287
300
|
codeVersion: currentDocumentVersionSchema,
|
|
288
301
|
property: unknownProperty,
|
|
302
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
289
303
|
value,
|
|
290
304
|
schemaName,
|
|
291
305
|
},
|
|
@@ -354,11 +368,11 @@ function same(
|
|
|
354
368
|
return true;
|
|
355
369
|
}
|
|
356
370
|
|
|
357
|
-
function boolToProp(b: boolean) {
|
|
371
|
+
function boolToProp(b: boolean): true | undefined {
|
|
358
372
|
return b ? true : undefined;
|
|
359
373
|
}
|
|
360
374
|
|
|
361
|
-
function arrayToProp(arr: string[]) {
|
|
375
|
+
function arrayToProp(arr: string[]): string[] | undefined {
|
|
362
376
|
return arr.length === 0 ? undefined : arr;
|
|
363
377
|
}
|
|
364
378
|
|
|
@@ -429,6 +443,7 @@ function arrayToProp(arr: string[]) {
|
|
|
429
443
|
*
|
|
430
444
|
* @legacy
|
|
431
445
|
* @alpha
|
|
446
|
+
* @deprecated This type will be moved to internal in 2.30. External usage is not necessary or supported.
|
|
432
447
|
* @sealed
|
|
433
448
|
*/
|
|
434
449
|
export class DocumentsSchemaController {
|
|
@@ -488,9 +503,8 @@ export class DocumentsSchemaController {
|
|
|
488
503
|
// Schema coming from document metadata (snapshot we loaded from), or if no document exists
|
|
489
504
|
// (this is a new document) then this is the same as desiredSchema (same as session schema in such case).
|
|
490
505
|
// Latter is importnat sure that's what will go into summary.
|
|
491
|
-
this.documentSchema =
|
|
492
|
-
?
|
|
493
|
-
: ((documentMetadataSchema as IDocumentSchemaCurrent) ??
|
|
506
|
+
this.documentSchema = existing
|
|
507
|
+
? ((documentMetadataSchema as IDocumentSchemaCurrent) ??
|
|
494
508
|
({
|
|
495
509
|
version: currentDocumentVersionSchema,
|
|
496
510
|
// see comment in summarizeDocumentSchema() on why it has to stay zero
|
|
@@ -500,7 +514,8 @@ export class DocumentsSchemaController {
|
|
|
500
514
|
runtime: {
|
|
501
515
|
explicitSchemaControl: boolToProp(!existing && features.explicitSchemaControl),
|
|
502
516
|
},
|
|
503
|
-
} satisfies IDocumentSchemaCurrent))
|
|
517
|
+
} satisfies IDocumentSchemaCurrent))
|
|
518
|
+
: this.desiredSchema;
|
|
504
519
|
|
|
505
520
|
checkRuntimeCompatibility(this.documentSchema, "document");
|
|
506
521
|
this.validateSeqNumber(this.documentSchema.refSeq, snapshotSequenceNumber, "summary");
|
|
@@ -580,7 +595,11 @@ export class DocumentsSchemaController {
|
|
|
580
595
|
}
|
|
581
596
|
}
|
|
582
597
|
|
|
583
|
-
private validateSeqNumber(
|
|
598
|
+
private validateSeqNumber(
|
|
599
|
+
schemaSeqNumber: number,
|
|
600
|
+
lastKnowSeqNumber: number,
|
|
601
|
+
message: string,
|
|
602
|
+
): void {
|
|
584
603
|
if (!Number.isInteger(schemaSeqNumber) || !(schemaSeqNumber <= lastKnowSeqNumber)) {
|
|
585
604
|
throw DataProcessingError.create(
|
|
586
605
|
"DocSchema: Incorrect sequence number",
|
|
@@ -608,7 +627,7 @@ export class DocumentsSchemaController {
|
|
|
608
627
|
content: IDocumentSchemaChangeMessage,
|
|
609
628
|
local: boolean,
|
|
610
629
|
sequenceNumber: number,
|
|
611
|
-
) {
|
|
630
|
+
): boolean {
|
|
612
631
|
return this.processDocumentSchemaMessages([content], local, sequenceNumber);
|
|
613
632
|
}
|
|
614
633
|
|
|
@@ -624,7 +643,7 @@ export class DocumentsSchemaController {
|
|
|
624
643
|
contents: IDocumentSchemaChangeMessage[],
|
|
625
644
|
local: boolean,
|
|
626
645
|
sequenceNumber: number,
|
|
627
|
-
) {
|
|
646
|
+
): boolean {
|
|
628
647
|
for (const content of contents) {
|
|
629
648
|
this.validateSeqNumber(content.refSeq, this.documentSchema.refSeq, "content.refSeq");
|
|
630
649
|
this.validateSeqNumber(this.documentSchema.refSeq, sequenceNumber, "refSeq");
|
|
@@ -672,7 +691,7 @@ export class DocumentsSchemaController {
|
|
|
672
691
|
return true;
|
|
673
692
|
}
|
|
674
693
|
|
|
675
|
-
public onDisconnect() {
|
|
694
|
+
public onDisconnect(): void {
|
|
676
695
|
this.sendOp = true;
|
|
677
696
|
}
|
|
678
697
|
}
|
package/src/summary/index.ts
CHANGED
|
@@ -44,12 +44,10 @@ export {
|
|
|
44
44
|
ISummarizeHeuristicData,
|
|
45
45
|
ISummarizer,
|
|
46
46
|
ISummarizeResults,
|
|
47
|
-
ISummarizerEvents,
|
|
48
47
|
ISummarizerInternalsProvider,
|
|
49
48
|
ISummarizerRuntime,
|
|
50
49
|
ISummaryCancellationToken,
|
|
51
50
|
SubmitSummaryResult,
|
|
52
|
-
SummarizerStopReason,
|
|
53
51
|
EnqueueSummarizeResult,
|
|
54
52
|
IAckSummaryResult,
|
|
55
53
|
IBaseSummarizeResult,
|
|
@@ -67,7 +65,6 @@ export {
|
|
|
67
65
|
SubmitSummaryFailureData,
|
|
68
66
|
SummaryStage,
|
|
69
67
|
IRetriableFailureError,
|
|
70
|
-
ISummarizeEventProps,
|
|
71
68
|
} from "./summarizerTypes.js";
|
|
72
69
|
export {
|
|
73
70
|
IAckedSummary,
|