@fluidframework/container-runtime 2.0.0-rc.1.0.6 → 2.0.0-rc.2.0.1
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.js → .eslintrc.cjs} +5 -5
- package/{.mocharc.js → .mocharc.cjs} +1 -1
- package/CHANGELOG.md +54 -0
- package/README.md +45 -0
- package/{api-extractor-esm.json → api-extractor-cjs.json} +5 -1
- package/api-extractor-lint.json +1 -1
- package/api-extractor.json +1 -1
- package/api-report/container-runtime.api.md +63 -29
- package/dist/batchTracker.d.ts +1 -2
- package/dist/batchTracker.d.ts.map +1 -1
- package/dist/batchTracker.js.map +1 -1
- package/dist/blobManager.js.map +1 -1
- package/{lib/dataStores.d.mts → dist/channelCollection.d.ts} +94 -27
- package/dist/channelCollection.d.ts.map +1 -0
- package/dist/{dataStores.js → channelCollection.js} +359 -84
- package/dist/channelCollection.js.map +1 -0
- package/dist/connectionTelemetry.d.ts +11 -1
- package/dist/connectionTelemetry.d.ts.map +1 -1
- package/dist/connectionTelemetry.js +42 -4
- package/dist/connectionTelemetry.js.map +1 -1
- package/dist/container-runtime-alpha.d.ts +93 -39
- package/dist/container-runtime-beta.d.ts +27 -9
- package/dist/container-runtime-public.d.ts +27 -9
- package/dist/container-runtime-untrimmed.d.ts +118 -39
- 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 +74 -54
- package/dist/containerRuntime.d.ts.map +1 -1
- package/dist/containerRuntime.js +534 -410
- package/dist/containerRuntime.js.map +1 -1
- package/dist/dataStore.d.ts +2 -3
- package/dist/dataStore.d.ts.map +1 -1
- package/dist/dataStore.js +12 -11
- package/dist/dataStore.js.map +1 -1
- package/dist/dataStoreContext.d.ts +34 -29
- package/dist/dataStoreContext.d.ts.map +1 -1
- package/dist/dataStoreContext.js +157 -133
- package/dist/dataStoreContext.js.map +1 -1
- package/dist/dataStoreContexts.d.ts +1 -1
- package/dist/dataStoreContexts.d.ts.map +1 -1
- package/dist/dataStoreContexts.js.map +1 -1
- package/dist/deltaManagerSummarizerProxy.d.ts +29 -4
- package/dist/deltaManagerSummarizerProxy.d.ts.map +1 -1
- package/dist/deltaManagerSummarizerProxy.js +91 -5
- package/dist/deltaManagerSummarizerProxy.js.map +1 -1
- package/dist/gc/garbageCollection.d.ts +5 -4
- package/dist/gc/garbageCollection.d.ts.map +1 -1
- package/dist/gc/garbageCollection.js +64 -53
- package/dist/gc/garbageCollection.js.map +1 -1
- package/dist/gc/gcConfigs.d.ts +2 -2
- package/dist/gc/gcConfigs.d.ts.map +1 -1
- package/dist/gc/gcConfigs.js +21 -21
- package/dist/gc/gcConfigs.js.map +1 -1
- package/dist/gc/gcDefinitions.d.ts +10 -3
- package/dist/gc/gcDefinitions.d.ts.map +1 -1
- package/dist/gc/gcDefinitions.js.map +1 -1
- package/dist/gc/gcHelpers.d.ts +2 -2
- package/dist/gc/gcHelpers.d.ts.map +1 -1
- package/dist/gc/gcHelpers.js.map +1 -1
- package/dist/gc/gcReferenceGraphAlgorithm.d.ts +1 -1
- package/dist/gc/gcReferenceGraphAlgorithm.d.ts.map +1 -1
- package/dist/gc/gcReferenceGraphAlgorithm.js.map +1 -1
- package/dist/gc/gcSummaryStateTracker.d.ts +4 -4
- package/dist/gc/gcSummaryStateTracker.d.ts.map +1 -1
- package/dist/gc/gcSummaryStateTracker.js +5 -5
- package/dist/gc/gcSummaryStateTracker.js.map +1 -1
- package/dist/gc/gcTelemetry.d.ts +6 -7
- package/dist/gc/gcTelemetry.d.ts.map +1 -1
- package/dist/gc/gcTelemetry.js +17 -17
- package/dist/gc/gcTelemetry.js.map +1 -1
- package/dist/gc/gcUnreferencedStateTracker.d.ts +1 -1
- package/dist/gc/gcUnreferencedStateTracker.d.ts.map +1 -1
- package/dist/gc/gcUnreferencedStateTracker.js +10 -10
- package/dist/gc/gcUnreferencedStateTracker.js.map +1 -1
- package/dist/gc/index.d.ts +8 -8
- package/dist/gc/index.d.ts.map +1 -1
- package/dist/gc/index.js +39 -39
- package/dist/gc/index.js.map +1 -1
- package/dist/index.d.ts +8 -20
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +28 -40
- package/dist/index.js.map +1 -1
- package/dist/messageTypes.d.ts +4 -4
- package/dist/messageTypes.d.ts.map +1 -1
- package/dist/messageTypes.js.map +1 -1
- package/dist/opLifecycle/batchManager.d.ts +2 -2
- package/dist/opLifecycle/batchManager.d.ts.map +1 -1
- package/dist/opLifecycle/batchManager.js.map +1 -1
- package/dist/opLifecycle/definitions.d.ts +2 -2
- package/dist/opLifecycle/definitions.d.ts.map +1 -1
- package/dist/opLifecycle/definitions.js.map +1 -1
- package/dist/opLifecycle/index.d.ts +8 -8
- package/dist/opLifecycle/index.d.ts.map +1 -1
- package/dist/opLifecycle/index.js +18 -18
- package/dist/opLifecycle/index.js.map +1 -1
- package/dist/opLifecycle/opCompressor.d.ts +1 -1
- package/dist/opLifecycle/opCompressor.d.ts.map +1 -1
- package/dist/opLifecycle/opCompressor.js +4 -4
- package/dist/opLifecycle/opCompressor.js.map +1 -1
- package/dist/opLifecycle/opDecompressor.d.ts +1 -1
- package/dist/opLifecycle/opDecompressor.d.ts.map +1 -1
- package/dist/opLifecycle/opDecompressor.js +3 -3
- package/dist/opLifecycle/opDecompressor.js.map +1 -1
- package/dist/opLifecycle/opGroupingManager.d.ts +1 -1
- package/dist/opLifecycle/opGroupingManager.d.ts.map +1 -1
- package/dist/opLifecycle/opGroupingManager.js +1 -10
- package/dist/opLifecycle/opGroupingManager.js.map +1 -1
- package/dist/opLifecycle/opSplitter.d.ts +1 -1
- package/dist/opLifecycle/opSplitter.d.ts.map +1 -1
- package/dist/opLifecycle/opSplitter.js +5 -5
- package/dist/opLifecycle/opSplitter.js.map +1 -1
- package/dist/opLifecycle/outbox.d.ts +7 -7
- package/dist/opLifecycle/outbox.d.ts.map +1 -1
- package/dist/opLifecycle/outbox.js +20 -12
- package/dist/opLifecycle/outbox.js.map +1 -1
- package/dist/opLifecycle/remoteMessageProcessor.d.ts +4 -4
- package/dist/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
- package/dist/opLifecycle/remoteMessageProcessor.js +2 -2
- package/dist/opLifecycle/remoteMessageProcessor.js.map +1 -1
- package/dist/package.json +3 -0
- 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 +2 -1
- package/dist/pendingStateManager.d.ts.map +1 -1
- package/dist/pendingStateManager.js +18 -10
- package/dist/pendingStateManager.js.map +1 -1
- package/dist/scheduleManager.d.ts +1 -2
- package/dist/scheduleManager.d.ts.map +1 -1
- package/dist/scheduleManager.js +5 -5
- package/dist/scheduleManager.js.map +1 -1
- package/dist/summary/index.d.ts +12 -12
- package/dist/summary/index.d.ts.map +1 -1
- package/dist/summary/index.js +43 -43
- package/dist/summary/index.js.map +1 -1
- package/dist/summary/orderedClientElection.js +8 -8
- package/dist/summary/orderedClientElection.js.map +1 -1
- package/dist/summary/runWhileConnectedCoordinator.d.ts +1 -1
- package/dist/summary/runWhileConnectedCoordinator.d.ts.map +1 -1
- package/dist/summary/runWhileConnectedCoordinator.js.map +1 -1
- package/dist/summary/runningSummarizer.d.ts +11 -10
- package/dist/summary/runningSummarizer.d.ts.map +1 -1
- package/dist/summary/runningSummarizer.js +114 -81
- package/dist/summary/runningSummarizer.js.map +1 -1
- package/dist/summary/summarizer.d.ts +4 -4
- package/dist/summary/summarizer.d.ts.map +1 -1
- package/dist/summary/summarizer.js +6 -6
- package/dist/summary/summarizer.js.map +1 -1
- package/dist/summary/summarizerClientElection.d.ts +2 -2
- package/dist/summary/summarizerClientElection.d.ts.map +1 -1
- package/dist/summary/summarizerClientElection.js.map +1 -1
- package/dist/summary/summarizerHeuristics.d.ts +3 -3
- package/dist/summary/summarizerHeuristics.d.ts.map +1 -1
- package/dist/summary/summarizerHeuristics.js.map +1 -1
- package/dist/summary/summarizerNode/index.d.ts +3 -3
- package/dist/summary/summarizerNode/index.d.ts.map +1 -1
- package/dist/summary/summarizerNode/index.js +4 -4
- package/dist/summary/summarizerNode/index.js.map +1 -1
- package/dist/summary/summarizerNode/summarizerNode.d.ts +17 -7
- package/dist/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
- package/dist/summary/summarizerNode/summarizerNode.js +45 -57
- package/dist/summary/summarizerNode/summarizerNode.js.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts +10 -19
- package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeUtils.js +1 -21
- package/dist/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts +5 -6
- package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeWithGc.js +16 -16
- package/dist/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
- package/dist/summary/summarizerTypes.d.ts +10 -21
- package/dist/summary/summarizerTypes.d.ts.map +1 -1
- package/dist/summary/summarizerTypes.js.map +1 -1
- package/dist/summary/summaryFormat.d.ts +15 -2
- package/dist/summary/summaryFormat.d.ts.map +1 -1
- package/dist/summary/summaryFormat.js.map +1 -1
- package/dist/summary/summaryGenerator.d.ts +6 -5
- package/dist/summary/summaryGenerator.d.ts.map +1 -1
- package/dist/summary/summaryGenerator.js +10 -1
- package/dist/summary/summaryGenerator.js.map +1 -1
- package/dist/summary/summaryManager.d.ts +5 -6
- package/dist/summary/summaryManager.d.ts.map +1 -1
- package/dist/summary/summaryManager.js +4 -5
- package/dist/summary/summaryManager.js.map +1 -1
- package/dist/tsdoc-metadata.json +1 -1
- package/lib/{batchTracker.d.mts → batchTracker.d.ts} +2 -3
- package/lib/batchTracker.d.ts.map +1 -0
- package/lib/{batchTracker.mjs → batchTracker.js} +1 -1
- package/lib/batchTracker.js.map +1 -0
- package/lib/{blobManager.d.mts → blobManager.d.ts} +1 -1
- package/lib/blobManager.d.ts.map +1 -0
- package/lib/{blobManager.mjs → blobManager.js} +1 -1
- package/lib/blobManager.js.map +1 -0
- package/{dist/dataStores.d.ts → lib/channelCollection.d.ts} +94 -27
- package/lib/channelCollection.d.ts.map +1 -0
- package/lib/{dataStores.mjs → channelCollection.js} +345 -73
- package/lib/channelCollection.js.map +1 -0
- package/lib/{connectionTelemetry.d.mts → connectionTelemetry.d.ts} +12 -2
- package/lib/connectionTelemetry.d.ts.map +1 -0
- package/lib/{connectionTelemetry.mjs → connectionTelemetry.js} +43 -5
- package/lib/connectionTelemetry.js.map +1 -0
- package/lib/{container-runtime-alpha.d.mts → container-runtime-alpha.d.ts} +93 -39
- package/lib/{container-runtime-public.d.mts → container-runtime-beta.d.ts} +27 -9
- package/lib/{container-runtime-beta.d.mts → container-runtime-public.d.ts} +27 -9
- package/lib/{container-runtime-untrimmed.d.mts → container-runtime-untrimmed.d.ts} +118 -39
- package/lib/{containerHandleContext.d.mts → containerHandleContext.d.ts} +2 -2
- package/lib/containerHandleContext.d.ts.map +1 -0
- package/lib/{containerHandleContext.mjs → containerHandleContext.js} +1 -1
- package/lib/containerHandleContext.js.map +1 -0
- package/lib/{containerRuntime.d.mts → containerRuntime.d.ts} +79 -55
- package/lib/containerRuntime.d.ts.map +1 -0
- package/lib/{containerRuntime.mjs → containerRuntime.js} +453 -331
- package/lib/containerRuntime.js.map +1 -0
- package/lib/{dataStore.d.mts → dataStore.d.ts} +3 -4
- package/lib/dataStore.d.ts.map +1 -0
- package/lib/{dataStore.mjs → dataStore.js} +13 -12
- package/lib/dataStore.js.map +1 -0
- package/lib/{dataStoreContext.d.mts → dataStoreContext.d.ts} +35 -30
- package/lib/dataStoreContext.d.ts.map +1 -0
- package/lib/{dataStoreContext.mjs → dataStoreContext.js} +146 -122
- package/lib/dataStoreContext.js.map +1 -0
- package/lib/{dataStoreContexts.d.mts → dataStoreContexts.d.ts} +2 -2
- package/lib/dataStoreContexts.d.ts.map +1 -0
- package/lib/{dataStoreContexts.mjs → dataStoreContexts.js} +1 -1
- package/lib/dataStoreContexts.js.map +1 -0
- package/lib/{dataStoreRegistry.d.mts → dataStoreRegistry.d.ts} +1 -1
- package/lib/dataStoreRegistry.d.ts.map +1 -0
- package/lib/{dataStoreRegistry.mjs → dataStoreRegistry.js} +5 -1
- package/lib/dataStoreRegistry.js.map +1 -0
- package/{dist/deltaManagerProxyBase.d.ts → lib/deltaManagerSummarizerProxy.d.ts} +16 -7
- package/lib/deltaManagerSummarizerProxy.d.ts.map +1 -0
- package/lib/deltaManagerSummarizerProxy.js +124 -0
- package/lib/deltaManagerSummarizerProxy.js.map +1 -0
- package/lib/{deltaScheduler.d.mts → deltaScheduler.d.ts} +1 -1
- package/lib/deltaScheduler.d.ts.map +1 -0
- package/lib/{deltaScheduler.mjs → deltaScheduler.js} +1 -1
- package/lib/deltaScheduler.js.map +1 -0
- package/lib/{error.d.mts → error.d.ts} +1 -1
- package/lib/error.d.ts.map +1 -0
- package/lib/{error.mjs → error.js} +1 -1
- package/lib/error.js.map +1 -0
- package/lib/gc/{garbageCollection.d.mts → garbageCollection.d.ts} +6 -5
- package/lib/gc/garbageCollection.d.ts.map +1 -0
- package/lib/gc/{garbageCollection.mjs → garbageCollection.js} +25 -14
- package/lib/gc/garbageCollection.js.map +1 -0
- package/lib/gc/{gcConfigs.d.mts → gcConfigs.d.ts} +3 -3
- package/lib/gc/gcConfigs.d.ts.map +1 -0
- package/lib/gc/{gcConfigs.mjs → gcConfigs.js} +3 -3
- package/lib/gc/gcConfigs.js.map +1 -0
- package/lib/gc/{gcDefinitions.d.mts → gcDefinitions.d.ts} +11 -4
- package/lib/gc/gcDefinitions.d.ts.map +1 -0
- package/lib/gc/{gcDefinitions.mjs → gcDefinitions.js} +1 -1
- package/lib/gc/gcDefinitions.js.map +1 -0
- package/lib/gc/{gcHelpers.d.mts → gcHelpers.d.ts} +3 -3
- package/lib/gc/{gcHelpers.d.mts.map → gcHelpers.d.ts.map} +1 -1
- package/lib/gc/{gcHelpers.mjs → gcHelpers.js} +1 -1
- package/lib/gc/gcHelpers.js.map +1 -0
- package/lib/gc/{gcReferenceGraphAlgorithm.d.mts → gcReferenceGraphAlgorithm.d.ts} +2 -2
- package/lib/gc/gcReferenceGraphAlgorithm.d.ts.map +1 -0
- package/lib/gc/{gcReferenceGraphAlgorithm.mjs → gcReferenceGraphAlgorithm.js} +1 -1
- package/lib/gc/gcReferenceGraphAlgorithm.js.map +1 -0
- package/lib/gc/{gcSummaryDefinitions.d.mts → gcSummaryDefinitions.d.ts} +1 -1
- package/lib/gc/gcSummaryDefinitions.d.ts.map +1 -0
- package/lib/gc/{gcSummaryDefinitions.mjs → gcSummaryDefinitions.js} +1 -1
- package/lib/gc/gcSummaryDefinitions.js.map +1 -0
- package/lib/gc/{gcSummaryStateTracker.d.mts → gcSummaryStateTracker.d.ts} +5 -5
- package/lib/gc/gcSummaryStateTracker.d.ts.map +1 -0
- package/lib/gc/{gcSummaryStateTracker.mjs → gcSummaryStateTracker.js} +4 -4
- package/lib/gc/gcSummaryStateTracker.js.map +1 -0
- package/lib/gc/{gcTelemetry.d.mts → gcTelemetry.d.ts} +7 -8
- package/lib/gc/gcTelemetry.d.ts.map +1 -0
- package/lib/gc/{gcTelemetry.mjs → gcTelemetry.js} +2 -2
- package/lib/gc/gcTelemetry.js.map +1 -0
- package/lib/gc/{gcUnreferencedStateTracker.d.mts → gcUnreferencedStateTracker.d.ts} +2 -2
- package/lib/gc/gcUnreferencedStateTracker.d.ts.map +1 -0
- package/lib/gc/{gcUnreferencedStateTracker.mjs → gcUnreferencedStateTracker.js} +2 -2
- package/lib/gc/gcUnreferencedStateTracker.js.map +1 -0
- package/lib/gc/{index.d.mts → index.d.ts} +9 -9
- package/lib/gc/index.d.ts.map +1 -0
- package/lib/gc/{index.mjs → index.js} +8 -8
- package/lib/gc/index.js.map +1 -0
- package/lib/{index.d.mts → index.d.ts} +9 -21
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +12 -0
- package/lib/index.js.map +1 -0
- package/lib/{messageTypes.d.mts → messageTypes.d.ts} +5 -5
- package/lib/messageTypes.d.ts.map +1 -0
- package/lib/{messageTypes.mjs → messageTypes.js} +1 -1
- package/lib/messageTypes.js.map +1 -0
- package/lib/{metadata.d.mts → metadata.d.ts} +1 -1
- package/lib/metadata.d.ts.map +1 -0
- package/lib/{metadata.mjs → metadata.js} +1 -1
- package/lib/metadata.js.map +1 -0
- package/lib/opLifecycle/{batchManager.d.mts → batchManager.d.ts} +3 -3
- package/lib/opLifecycle/batchManager.d.ts.map +1 -0
- package/lib/opLifecycle/{batchManager.mjs → batchManager.js} +1 -1
- package/lib/opLifecycle/batchManager.js.map +1 -0
- package/lib/opLifecycle/{definitions.d.mts → definitions.d.ts} +3 -3
- package/lib/opLifecycle/definitions.d.ts.map +1 -0
- package/lib/opLifecycle/{definitions.mjs → definitions.js} +1 -1
- package/lib/opLifecycle/definitions.js.map +1 -0
- package/lib/opLifecycle/index.d.ts +13 -0
- package/lib/opLifecycle/index.d.ts.map +1 -0
- package/lib/opLifecycle/index.js +12 -0
- package/lib/opLifecycle/index.js.map +1 -0
- package/lib/opLifecycle/{opCompressor.d.mts → opCompressor.d.ts} +2 -2
- package/lib/opLifecycle/opCompressor.d.ts.map +1 -0
- package/lib/opLifecycle/{opCompressor.mjs → opCompressor.js} +3 -3
- package/lib/opLifecycle/opCompressor.js.map +1 -0
- package/lib/opLifecycle/{opDecompressor.d.mts → opDecompressor.d.ts} +2 -2
- package/lib/opLifecycle/opDecompressor.d.ts.map +1 -0
- package/lib/opLifecycle/{opDecompressor.mjs → opDecompressor.js} +2 -2
- package/lib/opLifecycle/opDecompressor.js.map +1 -0
- package/lib/opLifecycle/{opGroupingManager.d.mts → opGroupingManager.d.ts} +2 -2
- package/lib/opLifecycle/opGroupingManager.d.ts.map +1 -0
- package/lib/opLifecycle/{opGroupingManager.mjs → opGroupingManager.js} +2 -11
- package/lib/opLifecycle/opGroupingManager.js.map +1 -0
- package/lib/opLifecycle/{opSplitter.d.mts → opSplitter.d.ts} +2 -2
- package/lib/opLifecycle/opSplitter.d.ts.map +1 -0
- package/lib/opLifecycle/{opSplitter.mjs → opSplitter.js} +3 -3
- package/lib/opLifecycle/opSplitter.js.map +1 -0
- package/lib/opLifecycle/{outbox.d.mts → outbox.d.ts} +8 -8
- package/lib/opLifecycle/outbox.d.ts.map +1 -0
- package/lib/opLifecycle/{outbox.mjs → outbox.js} +12 -4
- package/lib/opLifecycle/outbox.js.map +1 -0
- package/lib/opLifecycle/{remoteMessageProcessor.d.mts → remoteMessageProcessor.d.ts} +5 -5
- package/lib/opLifecycle/remoteMessageProcessor.d.ts.map +1 -0
- package/lib/opLifecycle/{remoteMessageProcessor.mjs → remoteMessageProcessor.js} +2 -2
- package/lib/opLifecycle/remoteMessageProcessor.js.map +1 -0
- package/lib/{opProperties.d.mts → opProperties.d.ts} +1 -1
- package/lib/opProperties.d.ts.map +1 -0
- package/lib/{opProperties.mjs → opProperties.js} +1 -1
- package/lib/opProperties.js.map +1 -0
- package/lib/{packageVersion.d.mts → packageVersion.d.ts} +2 -2
- package/lib/packageVersion.d.ts.map +1 -0
- package/lib/{packageVersion.mjs → packageVersion.js} +2 -2
- package/lib/packageVersion.js.map +1 -0
- package/lib/{pendingStateManager.d.mts → pendingStateManager.d.ts} +3 -2
- package/lib/pendingStateManager.d.ts.map +1 -0
- package/lib/{pendingStateManager.mjs → pendingStateManager.js} +18 -10
- package/lib/pendingStateManager.js.map +1 -0
- package/lib/{scheduleManager.d.mts → scheduleManager.d.ts} +6 -3
- package/lib/scheduleManager.d.ts.map +1 -0
- package/lib/{scheduleManager.mjs → scheduleManager.js} +3 -3
- package/lib/scheduleManager.js.map +1 -0
- package/lib/{storageServiceWithAttachBlobs.d.mts → storageServiceWithAttachBlobs.d.ts} +1 -1
- package/lib/storageServiceWithAttachBlobs.d.ts.map +1 -0
- package/lib/{storageServiceWithAttachBlobs.mjs → storageServiceWithAttachBlobs.js} +1 -1
- package/lib/storageServiceWithAttachBlobs.js.map +1 -0
- package/lib/summary/{index.d.mts → index.d.ts} +13 -13
- package/lib/summary/index.d.ts.map +1 -0
- package/lib/summary/{index.mjs → index.js} +12 -12
- package/lib/summary/index.js.map +1 -0
- package/lib/summary/{orderedClientElection.d.mts → orderedClientElection.d.ts} +5 -1
- package/lib/summary/orderedClientElection.d.ts.map +1 -0
- package/lib/summary/{orderedClientElection.mjs → orderedClientElection.js} +2 -2
- package/lib/summary/orderedClientElection.js.map +1 -0
- package/lib/summary/{runWhileConnectedCoordinator.d.mts → runWhileConnectedCoordinator.d.ts} +2 -2
- package/lib/summary/runWhileConnectedCoordinator.d.ts.map +1 -0
- package/lib/summary/{runWhileConnectedCoordinator.mjs → runWhileConnectedCoordinator.js} +1 -1
- package/lib/summary/runWhileConnectedCoordinator.js.map +1 -0
- package/lib/summary/{runningSummarizer.d.mts → runningSummarizer.d.ts} +12 -11
- package/lib/summary/runningSummarizer.d.ts.map +1 -0
- package/lib/summary/{runningSummarizer.mjs → runningSummarizer.js} +108 -75
- package/lib/summary/runningSummarizer.js.map +1 -0
- package/lib/summary/{summarizer.d.mts → summarizer.d.ts} +5 -5
- package/lib/summary/summarizer.d.ts.map +1 -0
- package/lib/summary/{summarizer.mjs → summarizer.js} +4 -4
- package/lib/summary/summarizer.js.map +1 -0
- package/lib/summary/{summarizerClientElection.d.mts → summarizerClientElection.d.ts} +3 -3
- package/lib/summary/summarizerClientElection.d.ts.map +1 -0
- package/lib/summary/{summarizerClientElection.mjs → summarizerClientElection.js} +1 -1
- package/lib/summary/summarizerClientElection.js.map +1 -0
- package/lib/summary/{summarizerHeuristics.d.mts → summarizerHeuristics.d.ts} +4 -4
- package/lib/summary/summarizerHeuristics.d.ts.map +1 -0
- package/lib/summary/{summarizerHeuristics.mjs → summarizerHeuristics.js} +1 -1
- package/lib/summary/summarizerHeuristics.js.map +1 -0
- package/lib/summary/summarizerNode/{index.d.mts → index.d.ts} +4 -4
- package/lib/summary/summarizerNode/index.d.ts.map +1 -0
- package/lib/summary/summarizerNode/index.js +7 -0
- package/lib/summary/summarizerNode/index.js.map +1 -0
- package/lib/summary/summarizerNode/{summarizerNode.d.mts → summarizerNode.d.ts} +18 -8
- package/lib/summary/summarizerNode/summarizerNode.d.ts.map +1 -0
- package/lib/summary/summarizerNode/{summarizerNode.mjs → summarizerNode.js} +41 -53
- package/lib/summary/summarizerNode/summarizerNode.js.map +1 -0
- package/lib/summary/summarizerNode/{summarizerNodeUtils.d.mts → summarizerNodeUtils.d.ts} +11 -20
- package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -0
- package/lib/summary/summarizerNode/{summarizerNodeUtils.mjs → summarizerNodeUtils.js} +1 -20
- package/lib/summary/summarizerNode/summarizerNodeUtils.js.map +1 -0
- package/lib/summary/summarizerNode/{summarizerNodeWithGc.d.mts → summarizerNodeWithGc.d.ts} +6 -7
- package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -0
- package/lib/summary/summarizerNode/{summarizerNodeWithGc.mjs → summarizerNodeWithGc.js} +12 -12
- package/lib/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -0
- package/lib/summary/{summarizerTypes.d.mts → summarizerTypes.d.ts} +11 -22
- package/lib/summary/summarizerTypes.d.ts.map +1 -0
- package/lib/summary/{summarizerTypes.mjs → summarizerTypes.js} +1 -1
- package/lib/summary/summarizerTypes.js.map +1 -0
- package/lib/summary/{summaryCollection.d.mts → summaryCollection.d.ts} +1 -1
- package/lib/summary/summaryCollection.d.ts.map +1 -0
- package/lib/summary/{summaryCollection.mjs → summaryCollection.js} +1 -1
- package/lib/summary/summaryCollection.js.map +1 -0
- package/lib/summary/{summaryFormat.d.mts → summaryFormat.d.ts} +16 -3
- package/lib/summary/summaryFormat.d.ts.map +1 -0
- package/lib/summary/{summaryFormat.mjs → summaryFormat.js} +1 -1
- package/lib/summary/summaryFormat.js.map +1 -0
- package/lib/summary/{summaryGenerator.d.mts → summaryGenerator.d.ts} +7 -6
- package/lib/summary/summaryGenerator.d.ts.map +1 -0
- package/lib/summary/{summaryGenerator.mjs → summaryGenerator.js} +11 -2
- package/lib/summary/summaryGenerator.js.map +1 -0
- package/lib/summary/{summaryManager.d.mts → summaryManager.d.ts} +6 -7
- package/lib/summary/summaryManager.d.ts.map +1 -0
- package/lib/summary/{summaryManager.mjs → summaryManager.js} +4 -5
- package/lib/summary/summaryManager.js.map +1 -0
- package/lib/test/batchTracker.spec.js +88 -0
- package/lib/test/batchTracker.spec.js.map +1 -0
- package/lib/test/blobManager.spec.js +835 -0
- package/lib/test/blobManager.spec.js.map +1 -0
- package/lib/test/channelCollection.spec.js +141 -0
- package/lib/test/channelCollection.spec.js.map +1 -0
- package/lib/test/containerRuntime.spec.js +1748 -0
- package/lib/test/containerRuntime.spec.js.map +1 -0
- package/lib/test/dataStoreContext.spec.js +801 -0
- package/lib/test/dataStoreContext.spec.js.map +1 -0
- package/lib/test/dataStoreCreation.spec.js +312 -0
- package/lib/test/dataStoreCreation.spec.js.map +1 -0
- package/lib/test/dataStoreRegistry.spec.js +26 -0
- package/lib/test/dataStoreRegistry.spec.js.map +1 -0
- package/lib/test/fuzz/fuzzUtils.js +66 -0
- package/lib/test/fuzz/fuzzUtils.js.map +1 -0
- package/lib/test/fuzz/summarizer.fuzz.spec.js +31 -0
- package/lib/test/fuzz/summarizer.fuzz.spec.js.map +1 -0
- package/lib/test/fuzz/summarizerFuzzMocks.js +162 -0
- package/lib/test/fuzz/summarizerFuzzMocks.js.map +1 -0
- package/lib/test/fuzz/summarizerFuzzSuite.js +106 -0
- package/lib/test/fuzz/summarizerFuzzSuite.js.map +1 -0
- package/lib/test/gc/garbageCollection.spec.js +1465 -0
- package/lib/test/gc/garbageCollection.spec.js.map +1 -0
- package/lib/test/gc/gcConfigs.spec.js +690 -0
- package/lib/test/gc/gcConfigs.spec.js.map +1 -0
- package/lib/test/gc/gcHelpers.spec.js +110 -0
- package/lib/test/gc/gcHelpers.spec.js.map +1 -0
- package/lib/test/gc/gcReferenceGraphAlgorithm.spec.js +68 -0
- package/lib/test/gc/gcReferenceGraphAlgorithm.spec.js.map +1 -0
- package/lib/test/gc/gcStats.spec.js +391 -0
- package/lib/test/gc/gcStats.spec.js.map +1 -0
- package/lib/test/gc/gcSummaryStateTracker.spec.js +228 -0
- package/lib/test/gc/gcSummaryStateTracker.spec.js.map +1 -0
- package/lib/test/gc/gcTelemetry.spec.js +530 -0
- package/lib/test/gc/gcTelemetry.spec.js.map +1 -0
- package/lib/test/gc/gcUnitTestHelpers.js +29 -0
- package/lib/test/gc/gcUnitTestHelpers.js.map +1 -0
- package/lib/test/gc/gcUnreferencedStateTracker.spec.js +192 -0
- package/lib/test/gc/gcUnreferencedStateTracker.spec.js.map +1 -0
- package/lib/test/getPendingBlobs.spec.js +193 -0
- package/lib/test/getPendingBlobs.spec.js.map +1 -0
- package/lib/test/hardwareStats.spec.js +93 -0
- package/lib/test/hardwareStats.spec.js.map +1 -0
- package/lib/test/index.js +6 -0
- package/lib/test/index.js.map +1 -0
- package/lib/test/opLifecycle/OpGroupingManager.spec.js +225 -0
- package/lib/test/opLifecycle/OpGroupingManager.spec.js.map +1 -0
- package/lib/test/opLifecycle/batchManager.spec.js +189 -0
- package/lib/test/opLifecycle/batchManager.spec.js.map +1 -0
- package/lib/test/opLifecycle/opCompressor.spec.js +74 -0
- package/lib/test/opLifecycle/opCompressor.spec.js.map +1 -0
- package/lib/test/opLifecycle/opDecompressor.spec.js +218 -0
- package/lib/test/opLifecycle/opDecompressor.spec.js.map +1 -0
- package/lib/test/opLifecycle/opSplitter.spec.js +272 -0
- package/lib/test/opLifecycle/opSplitter.spec.js.map +1 -0
- package/lib/test/opLifecycle/outbox.spec.js +675 -0
- package/lib/test/opLifecycle/outbox.spec.js.map +1 -0
- package/lib/test/opLifecycle/remoteMessageProcessor.spec.js +196 -0
- package/lib/test/opLifecycle/remoteMessageProcessor.spec.js.map +1 -0
- package/lib/test/pendingStateManager.spec.js +329 -0
- package/lib/test/pendingStateManager.spec.js.map +1 -0
- package/lib/test/scheduleManager.spec.js +270 -0
- package/lib/test/scheduleManager.spec.js.map +1 -0
- package/lib/test/summarizerNode.spec.js +326 -0
- package/lib/test/summarizerNode.spec.js.map +1 -0
- package/lib/test/summarizerNodeWithGc.spec.js +318 -0
- package/lib/test/summarizerNodeWithGc.spec.js.map +1 -0
- package/lib/test/summary/orderedClientElection.spec.js +535 -0
- package/lib/test/summary/orderedClientElection.spec.js.map +1 -0
- package/lib/test/summary/runningSummarizer.spec.js +1349 -0
- package/lib/test/summary/runningSummarizer.spec.js.map +1 -0
- package/lib/test/summary/summarizer.spec.js +29 -0
- package/lib/test/summary/summarizer.spec.js.map +1 -0
- package/lib/test/summary/summarizerClientElection.spec.js +436 -0
- package/lib/test/summary/summarizerClientElection.spec.js.map +1 -0
- package/lib/test/summary/summarizerHeuristics.spec.js +289 -0
- package/lib/test/summary/summarizerHeuristics.spec.js.map +1 -0
- package/lib/test/summary/summaryCollection.spec.js +200 -0
- package/lib/test/summary/summaryCollection.spec.js.map +1 -0
- package/lib/test/summary/summaryManager.spec.js +430 -0
- package/lib/test/summary/summaryManager.spec.js.map +1 -0
- package/lib/test/summary/testQuorumClients.js +34 -0
- package/lib/test/summary/testQuorumClients.js.map +1 -0
- package/lib/test/throttler.spec.js +175 -0
- package/lib/test/throttler.spec.js.map +1 -0
- package/lib/test/types/validateContainerRuntimePrevious.generated.js +180 -0
- package/lib/test/types/validateContainerRuntimePrevious.generated.js.map +1 -0
- package/lib/{throttler.d.mts → throttler.d.ts} +1 -1
- package/lib/throttler.d.ts.map +1 -0
- package/lib/{throttler.mjs → throttler.js} +1 -1
- package/lib/throttler.js.map +1 -0
- package/package.json +99 -88
- package/src/batchTracker.ts +1 -1
- package/src/blobManager.ts +1 -1
- package/src/{dataStores.ts → channelCollection.ts} +467 -88
- package/src/connectionTelemetry.ts +42 -3
- package/src/containerHandleContext.ts +1 -1
- package/src/containerRuntime.ts +649 -462
- package/src/dataStore.ts +13 -15
- package/src/dataStoreContext.ts +203 -173
- package/src/dataStoreContexts.ts +1 -1
- package/src/deltaManagerSummarizerProxy.ts +132 -7
- package/src/gc/garbageCollection.ts +29 -16
- package/src/gc/gcConfigs.ts +3 -3
- package/src/gc/gcDefinitions.ts +10 -3
- package/src/gc/gcHelpers.ts +2 -2
- package/src/gc/gcReferenceGraphAlgorithm.ts +1 -1
- package/src/gc/gcSummaryStateTracker.ts +5 -6
- package/src/gc/gcTelemetry.ts +6 -6
- package/src/gc/gcUnreferencedStateTracker.ts +1 -1
- package/src/gc/index.ts +8 -8
- package/src/index.ts +16 -27
- package/src/messageTypes.ts +4 -4
- package/src/opLifecycle/README.md +2 -4
- package/src/opLifecycle/batchManager.ts +2 -2
- package/src/opLifecycle/definitions.ts +2 -2
- package/src/opLifecycle/index.ts +8 -8
- package/src/opLifecycle/opCompressor.ts +3 -3
- package/src/opLifecycle/opDecompressor.ts +3 -3
- package/src/opLifecycle/opGroupingManager.ts +3 -12
- package/src/opLifecycle/opSplitter.ts +3 -3
- package/src/opLifecycle/outbox.ts +29 -9
- package/src/opLifecycle/remoteMessageProcessor.ts +4 -4
- package/src/packageVersion.ts +1 -1
- package/src/pendingStateManager.ts +19 -13
- package/src/scheduleManager.ts +4 -4
- package/src/summary/index.ts +13 -12
- package/src/summary/orderedClientElection.ts +1 -1
- package/src/summary/runWhileConnectedCoordinator.ts +1 -1
- package/src/summary/runningSummarizer.ts +141 -93
- package/src/summary/summarizer.ts +7 -7
- package/src/summary/summarizerClientElection.ts +2 -2
- package/src/summary/summarizerHeuristics.ts +3 -3
- package/src/summary/summarizerNode/index.ts +6 -3
- package/src/summary/summarizerNode/summarizerNode.ts +54 -69
- package/src/summary/summarizerNode/summarizerNodeUtils.ts +16 -34
- package/src/summary/summarizerNode/summarizerNodeWithGc.ts +11 -17
- package/src/summary/summarizerTypes.ts +12 -24
- package/src/summary/summaryFormat.ts +16 -2
- package/src/summary/summaryGenerator.ts +16 -4
- package/src/summary/summaryManager.ts +6 -7
- package/tsconfig.cjs.json +7 -0
- package/tsconfig.json +2 -5
- package/dist/dataStores.d.ts.map +0 -1
- package/dist/dataStores.js.map +0 -1
- package/dist/deltaManagerProxyBase.d.ts.map +0 -1
- package/dist/deltaManagerProxyBase.js +0 -77
- package/dist/deltaManagerProxyBase.js.map +0 -1
- package/lib/batchTracker.d.mts.map +0 -1
- package/lib/batchTracker.mjs.map +0 -1
- package/lib/blobManager.d.mts.map +0 -1
- package/lib/blobManager.mjs.map +0 -1
- package/lib/connectionTelemetry.d.mts.map +0 -1
- package/lib/connectionTelemetry.mjs.map +0 -1
- package/lib/containerHandleContext.d.mts.map +0 -1
- package/lib/containerHandleContext.mjs.map +0 -1
- package/lib/containerRuntime.d.mts.map +0 -1
- package/lib/containerRuntime.mjs.map +0 -1
- package/lib/dataStore.d.mts.map +0 -1
- package/lib/dataStore.mjs.map +0 -1
- package/lib/dataStoreContext.d.mts.map +0 -1
- package/lib/dataStoreContext.mjs.map +0 -1
- package/lib/dataStoreContexts.d.mts.map +0 -1
- package/lib/dataStoreContexts.mjs.map +0 -1
- package/lib/dataStoreRegistry.d.mts.map +0 -1
- package/lib/dataStoreRegistry.mjs.map +0 -1
- package/lib/dataStores.d.mts.map +0 -1
- package/lib/dataStores.mjs.map +0 -1
- package/lib/deltaManagerProxyBase.d.mts +0 -35
- package/lib/deltaManagerProxyBase.d.mts.map +0 -1
- package/lib/deltaManagerProxyBase.mjs +0 -73
- package/lib/deltaManagerProxyBase.mjs.map +0 -1
- package/lib/deltaManagerSummarizerProxy.d.mts +0 -19
- package/lib/deltaManagerSummarizerProxy.d.mts.map +0 -1
- package/lib/deltaManagerSummarizerProxy.mjs +0 -38
- package/lib/deltaManagerSummarizerProxy.mjs.map +0 -1
- package/lib/deltaScheduler.d.mts.map +0 -1
- package/lib/deltaScheduler.mjs.map +0 -1
- package/lib/error.d.mts.map +0 -1
- package/lib/error.mjs.map +0 -1
- package/lib/gc/garbageCollection.d.mts.map +0 -1
- package/lib/gc/garbageCollection.mjs.map +0 -1
- package/lib/gc/gcConfigs.d.mts.map +0 -1
- package/lib/gc/gcConfigs.mjs.map +0 -1
- package/lib/gc/gcDefinitions.d.mts.map +0 -1
- package/lib/gc/gcDefinitions.mjs.map +0 -1
- package/lib/gc/gcHelpers.mjs.map +0 -1
- package/lib/gc/gcReferenceGraphAlgorithm.d.mts.map +0 -1
- package/lib/gc/gcReferenceGraphAlgorithm.mjs.map +0 -1
- package/lib/gc/gcSummaryDefinitions.d.mts.map +0 -1
- package/lib/gc/gcSummaryDefinitions.mjs.map +0 -1
- package/lib/gc/gcSummaryStateTracker.d.mts.map +0 -1
- package/lib/gc/gcSummaryStateTracker.mjs.map +0 -1
- package/lib/gc/gcTelemetry.d.mts.map +0 -1
- package/lib/gc/gcTelemetry.mjs.map +0 -1
- package/lib/gc/gcUnreferencedStateTracker.d.mts.map +0 -1
- package/lib/gc/gcUnreferencedStateTracker.mjs.map +0 -1
- package/lib/gc/index.d.mts.map +0 -1
- package/lib/gc/index.mjs.map +0 -1
- package/lib/index.d.mts.map +0 -1
- package/lib/index.mjs +0 -24
- package/lib/index.mjs.map +0 -1
- package/lib/messageTypes.d.mts.map +0 -1
- package/lib/messageTypes.mjs.map +0 -1
- package/lib/metadata.d.mts.map +0 -1
- package/lib/metadata.mjs.map +0 -1
- package/lib/opLifecycle/batchManager.d.mts.map +0 -1
- package/lib/opLifecycle/batchManager.mjs.map +0 -1
- package/lib/opLifecycle/definitions.d.mts.map +0 -1
- package/lib/opLifecycle/definitions.mjs.map +0 -1
- package/lib/opLifecycle/index.d.mts +0 -13
- package/lib/opLifecycle/index.d.mts.map +0 -1
- package/lib/opLifecycle/index.mjs +0 -12
- package/lib/opLifecycle/index.mjs.map +0 -1
- package/lib/opLifecycle/opCompressor.d.mts.map +0 -1
- package/lib/opLifecycle/opCompressor.mjs.map +0 -1
- package/lib/opLifecycle/opDecompressor.d.mts.map +0 -1
- package/lib/opLifecycle/opDecompressor.mjs.map +0 -1
- package/lib/opLifecycle/opGroupingManager.d.mts.map +0 -1
- package/lib/opLifecycle/opGroupingManager.mjs.map +0 -1
- package/lib/opLifecycle/opSplitter.d.mts.map +0 -1
- package/lib/opLifecycle/opSplitter.mjs.map +0 -1
- package/lib/opLifecycle/outbox.d.mts.map +0 -1
- package/lib/opLifecycle/outbox.mjs.map +0 -1
- package/lib/opLifecycle/remoteMessageProcessor.d.mts.map +0 -1
- package/lib/opLifecycle/remoteMessageProcessor.mjs.map +0 -1
- package/lib/opProperties.d.mts.map +0 -1
- package/lib/opProperties.mjs.map +0 -1
- package/lib/packageVersion.d.mts.map +0 -1
- package/lib/packageVersion.mjs.map +0 -1
- package/lib/pendingStateManager.d.mts.map +0 -1
- package/lib/pendingStateManager.mjs.map +0 -1
- package/lib/scheduleManager.d.mts.map +0 -1
- package/lib/scheduleManager.mjs.map +0 -1
- package/lib/storageServiceWithAttachBlobs.d.mts.map +0 -1
- package/lib/storageServiceWithAttachBlobs.mjs.map +0 -1
- package/lib/summary/index.d.mts.map +0 -1
- package/lib/summary/index.mjs.map +0 -1
- package/lib/summary/orderedClientElection.d.mts.map +0 -1
- package/lib/summary/orderedClientElection.mjs.map +0 -1
- package/lib/summary/runWhileConnectedCoordinator.d.mts.map +0 -1
- package/lib/summary/runWhileConnectedCoordinator.mjs.map +0 -1
- package/lib/summary/runningSummarizer.d.mts.map +0 -1
- package/lib/summary/runningSummarizer.mjs.map +0 -1
- package/lib/summary/summarizer.d.mts.map +0 -1
- package/lib/summary/summarizer.mjs.map +0 -1
- package/lib/summary/summarizerClientElection.d.mts.map +0 -1
- package/lib/summary/summarizerClientElection.mjs.map +0 -1
- package/lib/summary/summarizerHeuristics.d.mts.map +0 -1
- package/lib/summary/summarizerHeuristics.mjs.map +0 -1
- package/lib/summary/summarizerNode/index.d.mts.map +0 -1
- package/lib/summary/summarizerNode/index.mjs +0 -7
- package/lib/summary/summarizerNode/index.mjs.map +0 -1
- package/lib/summary/summarizerNode/summarizerNode.d.mts.map +0 -1
- package/lib/summary/summarizerNode/summarizerNode.mjs.map +0 -1
- package/lib/summary/summarizerNode/summarizerNodeUtils.d.mts.map +0 -1
- package/lib/summary/summarizerNode/summarizerNodeUtils.mjs.map +0 -1
- package/lib/summary/summarizerNode/summarizerNodeWithGc.d.mts.map +0 -1
- package/lib/summary/summarizerNode/summarizerNodeWithGc.mjs.map +0 -1
- package/lib/summary/summarizerTypes.d.mts.map +0 -1
- package/lib/summary/summarizerTypes.mjs.map +0 -1
- package/lib/summary/summaryCollection.d.mts.map +0 -1
- package/lib/summary/summaryCollection.mjs.map +0 -1
- package/lib/summary/summaryFormat.d.mts.map +0 -1
- package/lib/summary/summaryFormat.mjs.map +0 -1
- package/lib/summary/summaryGenerator.d.mts.map +0 -1
- package/lib/summary/summaryGenerator.mjs.map +0 -1
- package/lib/summary/summaryManager.d.mts.map +0 -1
- package/lib/summary/summaryManager.mjs.map +0 -1
- package/lib/throttler.d.mts.map +0 -1
- package/lib/throttler.mjs.map +0 -1
- package/src/deltaManagerProxyBase.ts +0 -111
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Licensed under the MIT License.
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.detectOutboundReferences = exports.getSummaryForDatastores = exports.
|
|
7
|
+
exports.ChannelCollectionFactory = exports.detectOutboundReferences = exports.getSummaryForDatastores = exports.ChannelCollection = exports.wrapContextForInnerChannel = exports.wrapContext = exports.AllowInactiveRequestHeaderKey = exports.AllowTombstoneRequestHeaderKey = exports.RuntimeHeaders = void 0;
|
|
8
8
|
const datastore_1 = require("@fluidframework/datastore");
|
|
9
9
|
const runtime_definitions_1 = require("@fluidframework/runtime-definitions");
|
|
10
10
|
const runtime_utils_1 = require("@fluidframework/runtime-utils");
|
|
@@ -12,29 +12,147 @@ const telemetry_utils_1 = require("@fluidframework/telemetry-utils");
|
|
|
12
12
|
const container_definitions_1 = require("@fluidframework/container-definitions");
|
|
13
13
|
const driver_utils_1 = require("@fluidframework/driver-utils");
|
|
14
14
|
const core_utils_1 = require("@fluidframework/core-utils");
|
|
15
|
-
const
|
|
16
|
-
const
|
|
17
|
-
const
|
|
18
|
-
const
|
|
19
|
-
const
|
|
20
|
-
const
|
|
21
|
-
const
|
|
22
|
-
const
|
|
15
|
+
const dataStoreContexts_js_1 = require("./dataStoreContexts.js");
|
|
16
|
+
const containerRuntime_js_1 = require("./containerRuntime.js");
|
|
17
|
+
const dataStoreContext_js_1 = require("./dataStoreContext.js");
|
|
18
|
+
const storageServiceWithAttachBlobs_js_1 = require("./storageServiceWithAttachBlobs.js");
|
|
19
|
+
const dataStore_js_1 = require("./dataStore.js");
|
|
20
|
+
const index_js_1 = require("./gc/index.js");
|
|
21
|
+
const index_js_2 = require("./summary/index.js");
|
|
22
|
+
const messageTypes_js_1 = require("./messageTypes.js");
|
|
23
|
+
const dataStoreRegistry_js_1 = require("./dataStoreRegistry.js");
|
|
24
|
+
/**
|
|
25
|
+
* Accepted header keys for requests coming to the runtime.
|
|
26
|
+
* @internal
|
|
27
|
+
*/
|
|
28
|
+
var RuntimeHeaders;
|
|
29
|
+
(function (RuntimeHeaders) {
|
|
30
|
+
/** True to wait for a data store to be created and loaded before returning it. */
|
|
31
|
+
RuntimeHeaders["wait"] = "wait";
|
|
32
|
+
/** True if the request is coming from an IFluidHandle. */
|
|
33
|
+
RuntimeHeaders["viaHandle"] = "viaHandle";
|
|
34
|
+
})(RuntimeHeaders || (exports.RuntimeHeaders = RuntimeHeaders = {}));
|
|
35
|
+
/** True if a tombstoned object should be returned without erroring
|
|
36
|
+
* @alpha
|
|
37
|
+
*/
|
|
38
|
+
exports.AllowTombstoneRequestHeaderKey = "allowTombstone"; // Belongs in the enum above, but avoiding the breaking change
|
|
39
|
+
/**
|
|
40
|
+
* [IRRELEVANT IF throwOnInactiveLoad OPTION NOT SET] True if an inactive object should be returned without erroring
|
|
41
|
+
* @internal
|
|
42
|
+
*/
|
|
43
|
+
exports.AllowInactiveRequestHeaderKey = "allowInactive"; // Belongs in the enum above, but avoiding the breaking change
|
|
44
|
+
/**
|
|
45
|
+
* Creates a shallow wrapper of {@link IFluidParentContext}. The wrapper can then have its methods overwritten as needed
|
|
46
|
+
*/
|
|
47
|
+
function wrapContext(context) {
|
|
48
|
+
return {
|
|
49
|
+
get IFluidDataStoreRegistry() {
|
|
50
|
+
return context.IFluidDataStoreRegistry;
|
|
51
|
+
},
|
|
52
|
+
IFluidHandleContext: context.IFluidHandleContext,
|
|
53
|
+
options: context.options,
|
|
54
|
+
get clientId() {
|
|
55
|
+
return context.clientId;
|
|
56
|
+
},
|
|
57
|
+
get connected() {
|
|
58
|
+
return context.connected;
|
|
59
|
+
},
|
|
60
|
+
deltaManager: context.deltaManager,
|
|
61
|
+
storage: context.storage,
|
|
62
|
+
logger: context.logger,
|
|
63
|
+
get clientDetails() {
|
|
64
|
+
return context.clientDetails;
|
|
65
|
+
},
|
|
66
|
+
get idCompressor() {
|
|
67
|
+
return context.idCompressor;
|
|
68
|
+
},
|
|
69
|
+
loadingGroupId: context.loadingGroupId,
|
|
70
|
+
get attachState() {
|
|
71
|
+
return context.attachState;
|
|
72
|
+
},
|
|
73
|
+
containerRuntime: context.containerRuntime,
|
|
74
|
+
scope: context.scope,
|
|
75
|
+
gcThrowOnTombstoneUsage: context.gcThrowOnTombstoneUsage,
|
|
76
|
+
gcTombstoneEnforcementAllowed: context.gcTombstoneEnforcementAllowed,
|
|
77
|
+
getAbsoluteUrl: async (...args) => {
|
|
78
|
+
return context.getAbsoluteUrl(...args);
|
|
79
|
+
},
|
|
80
|
+
getQuorum: (...args) => {
|
|
81
|
+
return context.getQuorum(...args);
|
|
82
|
+
},
|
|
83
|
+
getAudience: (...args) => {
|
|
84
|
+
return context.getAudience(...args);
|
|
85
|
+
},
|
|
86
|
+
ensureNoDataModelChanges: (...args) => {
|
|
87
|
+
return context.ensureNoDataModelChanges(...args);
|
|
88
|
+
},
|
|
89
|
+
submitMessage: (...args) => {
|
|
90
|
+
return context.submitMessage(...args);
|
|
91
|
+
},
|
|
92
|
+
submitSignal: (...args) => {
|
|
93
|
+
return context.submitSignal(...args);
|
|
94
|
+
},
|
|
95
|
+
makeLocallyVisible: (...args) => {
|
|
96
|
+
return context.makeLocallyVisible(...args);
|
|
97
|
+
},
|
|
98
|
+
uploadBlob: async (...args) => {
|
|
99
|
+
return context.uploadBlob(...args);
|
|
100
|
+
},
|
|
101
|
+
addedGCOutboundReference: (...args) => {
|
|
102
|
+
return context.addedGCOutboundReference?.(...args);
|
|
103
|
+
},
|
|
104
|
+
getCreateChildSummarizerNodeFn: (...args) => {
|
|
105
|
+
return context.getCreateChildSummarizerNodeFn?.(...args);
|
|
106
|
+
},
|
|
107
|
+
deleteChildSummarizerNode: (...args) => {
|
|
108
|
+
return context.deleteChildSummarizerNode?.(...args);
|
|
109
|
+
},
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
exports.wrapContext = wrapContext;
|
|
113
|
+
/**
|
|
114
|
+
* Creates a wrapper of a {@link IFluidParentContext} to be provided to the inner datastore channels.
|
|
115
|
+
* The wrapper will have the submit methods overwritten with the appropriate id as the destination address.
|
|
116
|
+
*
|
|
117
|
+
* @param id - the id of the channel
|
|
118
|
+
* @param parentContext - the {@link IFluidParentContext} to wrap
|
|
119
|
+
* @returns A wrapped {@link IFluidParentContext}
|
|
120
|
+
*/
|
|
121
|
+
function wrapContextForInnerChannel(id, parentContext) {
|
|
122
|
+
const context = wrapContext(parentContext);
|
|
123
|
+
context.submitMessage = (type, content, localOpMetadata) => {
|
|
124
|
+
const fluidDataStoreContent = {
|
|
125
|
+
content,
|
|
126
|
+
type,
|
|
127
|
+
};
|
|
128
|
+
const envelope = {
|
|
129
|
+
address: id,
|
|
130
|
+
contents: fluidDataStoreContent,
|
|
131
|
+
};
|
|
132
|
+
parentContext.submitMessage(messageTypes_js_1.ContainerMessageType.FluidDataStoreOp, envelope, localOpMetadata);
|
|
133
|
+
};
|
|
134
|
+
context.submitSignal = (type, contents, targetClientId) => {
|
|
135
|
+
const envelope = {
|
|
136
|
+
address: id,
|
|
137
|
+
contents,
|
|
138
|
+
};
|
|
139
|
+
parentContext.submitSignal(type, envelope, targetClientId);
|
|
140
|
+
};
|
|
141
|
+
return context;
|
|
142
|
+
}
|
|
143
|
+
exports.wrapContextForInnerChannel = wrapContextForInnerChannel;
|
|
23
144
|
/**
|
|
24
145
|
* This class encapsulates data store handling. Currently it is only used by the container runtime,
|
|
25
146
|
* but eventually could be hosted on any channel once we formalize the channel api boundary.
|
|
147
|
+
* @internal
|
|
26
148
|
*/
|
|
27
|
-
class
|
|
28
|
-
constructor(baseSnapshot,
|
|
149
|
+
class ChannelCollection {
|
|
150
|
+
constructor(baseSnapshot, parentContext, baseLogger, gcNodeUpdated, isDataStoreDeleted, aliasMap, provideEntryPoint) {
|
|
29
151
|
this.baseSnapshot = baseSnapshot;
|
|
30
|
-
this.
|
|
31
|
-
this.submitAttachFn = submitAttachFn;
|
|
32
|
-
this.getCreateChildSummarizerNodeFn = getCreateChildSummarizerNodeFn;
|
|
33
|
-
this.deleteChildSummarizerNodeFn = deleteChildSummarizerNodeFn;
|
|
152
|
+
this.parentContext = parentContext;
|
|
34
153
|
this.gcNodeUpdated = gcNodeUpdated;
|
|
35
154
|
this.isDataStoreDeleted = isDataStoreDeleted;
|
|
36
155
|
this.aliasMap = aliasMap;
|
|
37
|
-
this.contexts = contexts;
|
|
38
156
|
// Stores tracked by the Domain
|
|
39
157
|
this.pendingAttach = new Map();
|
|
40
158
|
// 0.24 back-compat attachingBeforeSummary
|
|
@@ -48,7 +166,9 @@ class DataStores {
|
|
|
48
166
|
this.shouldSendAttachLog = true;
|
|
49
167
|
this.dispose = () => this.disposeOnce.value;
|
|
50
168
|
this.mc = (0, telemetry_utils_1.createChildMonitoringContext)({ logger: baseLogger });
|
|
51
|
-
this.
|
|
169
|
+
this.contexts = new dataStoreContexts_js_1.DataStoreContexts(baseLogger);
|
|
170
|
+
this.containerRuntimeHandle = new datastore_1.FluidObjectHandle(this.parentContext, "/", this.parentContext.IFluidHandleContext);
|
|
171
|
+
this.entryPoint = new datastore_1.FluidObjectHandle(new core_utils_1.LazyPromise(async () => provideEntryPoint(this)), "", this.parentContext.IFluidHandleContext);
|
|
52
172
|
// Extract stores stored inside the snapshot
|
|
53
173
|
const fluidDataStores = new Map();
|
|
54
174
|
if (baseSnapshot) {
|
|
@@ -65,16 +185,17 @@ class DataStores {
|
|
|
65
185
|
unreferencedDataStoreCount++;
|
|
66
186
|
}
|
|
67
187
|
// If we have a detached container, then create local data store contexts.
|
|
68
|
-
if (this.
|
|
69
|
-
dataStoreContext = new
|
|
188
|
+
if (this.parentContext.attachState !== container_definitions_1.AttachState.Detached) {
|
|
189
|
+
dataStoreContext = new dataStoreContext_js_1.RemoteFluidDataStoreContext({
|
|
70
190
|
id: key,
|
|
71
191
|
snapshotTree: value,
|
|
72
|
-
|
|
73
|
-
storage: this.
|
|
74
|
-
scope: this.
|
|
75
|
-
createSummarizerNodeFn: this.getCreateChildSummarizerNodeFn(key, {
|
|
192
|
+
parentContext: this.wrapContextForInnerChannel(key),
|
|
193
|
+
storage: this.parentContext.storage,
|
|
194
|
+
scope: this.parentContext.scope,
|
|
195
|
+
createSummarizerNodeFn: this.parentContext.getCreateChildSummarizerNodeFn(key, {
|
|
76
196
|
type: runtime_definitions_1.CreateSummarizerNodeSource.FromSummary,
|
|
77
197
|
}),
|
|
198
|
+
loadingGroupId: value.groupId,
|
|
78
199
|
});
|
|
79
200
|
}
|
|
80
201
|
else {
|
|
@@ -82,13 +203,13 @@ class DataStores {
|
|
|
82
203
|
throw new telemetry_utils_1.LoggingError("Snapshot should be there to load from!!");
|
|
83
204
|
}
|
|
84
205
|
const snapshotTree = value;
|
|
85
|
-
dataStoreContext = new
|
|
206
|
+
dataStoreContext = new dataStoreContext_js_1.LocalFluidDataStoreContext({
|
|
86
207
|
id: key,
|
|
87
208
|
pkg: undefined,
|
|
88
|
-
|
|
89
|
-
storage: this.
|
|
90
|
-
scope: this.
|
|
91
|
-
createSummarizerNodeFn: this.getCreateChildSummarizerNodeFn(key, {
|
|
209
|
+
parentContext: this.wrapContextForInnerChannel(key),
|
|
210
|
+
storage: this.parentContext.storage,
|
|
211
|
+
scope: this.parentContext.scope,
|
|
212
|
+
createSummarizerNodeFn: this.parentContext.getCreateChildSummarizerNodeFn(key, {
|
|
92
213
|
type: runtime_definitions_1.CreateSummarizerNodeSource.FromSummary,
|
|
93
214
|
}),
|
|
94
215
|
makeLocallyVisibleFn: () => this.makeDataStoreLocallyVisible(key),
|
|
@@ -113,6 +234,17 @@ class DataStores {
|
|
|
113
234
|
const pendingAliasPromise = this.pendingAliases.get(maybeAlias);
|
|
114
235
|
return pendingAliasPromise ?? "Success";
|
|
115
236
|
}
|
|
237
|
+
wrapContextForInnerChannel(id) {
|
|
238
|
+
return wrapContextForInnerChannel(id, this.parentContext);
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* IFluidDataStoreChannel.makeVisibleAndAttachGraph implementation
|
|
242
|
+
* Not clear when it would be called and what it should do.
|
|
243
|
+
* Currently this API is called by context only for root data stores.
|
|
244
|
+
*/
|
|
245
|
+
makeVisibleAndAttachGraph() {
|
|
246
|
+
this.parentContext.makeLocallyVisible();
|
|
247
|
+
}
|
|
116
248
|
processAttachMessage(message, local) {
|
|
117
249
|
const attachMessage = message.contents;
|
|
118
250
|
this.dataStoresSinceLastGC.push(attachMessage.id);
|
|
@@ -120,7 +252,7 @@ class DataStores {
|
|
|
120
252
|
const foundGCData = (0, runtime_utils_1.processAttachMessageGCData)(attachMessage.snapshot, (nodeId, toPath) => {
|
|
121
253
|
// nodeId is the relative path under the node being attached. Always starts with "/", but no trailing "/" after an id
|
|
122
254
|
const fromPath = `/${attachMessage.id}${nodeId === "/" ? "" : nodeId}`;
|
|
123
|
-
this.
|
|
255
|
+
this.parentContext.addedGCOutboundReference?.({ absolutePath: fromPath }, { absolutePath: toPath });
|
|
124
256
|
});
|
|
125
257
|
// Only log once per container to avoid noise/cost.
|
|
126
258
|
// Allows longitudinal tracking of various state (e.g. foundGCData), and some sampled details
|
|
@@ -163,17 +295,18 @@ class DataStores {
|
|
|
163
295
|
// Include the type of attach message which is the pkg of the store to be
|
|
164
296
|
// used by RemoteFluidDataStoreContext in case it is not in the snapshot.
|
|
165
297
|
const pkg = [attachMessage.type];
|
|
166
|
-
const remoteFluidDataStoreContext = new
|
|
298
|
+
const remoteFluidDataStoreContext = new dataStoreContext_js_1.RemoteFluidDataStoreContext({
|
|
167
299
|
id: attachMessage.id,
|
|
168
300
|
snapshotTree,
|
|
169
|
-
|
|
170
|
-
storage: new
|
|
171
|
-
scope: this.
|
|
172
|
-
|
|
301
|
+
parentContext: this.wrapContextForInnerChannel(attachMessage.id),
|
|
302
|
+
storage: new storageServiceWithAttachBlobs_js_1.StorageServiceWithAttachBlobs(this.parentContext.storage, flatAttachBlobs),
|
|
303
|
+
scope: this.parentContext.scope,
|
|
304
|
+
loadingGroupId: attachMessage.snapshot?.groupId,
|
|
305
|
+
createSummarizerNodeFn: this.parentContext.getCreateChildSummarizerNodeFn(attachMessage.id, {
|
|
173
306
|
type: runtime_definitions_1.CreateSummarizerNodeSource.FromAttach,
|
|
174
307
|
sequenceNumber: message.sequenceNumber,
|
|
175
308
|
snapshot: attachMessage.snapshot ?? {
|
|
176
|
-
entries: [(0,
|
|
309
|
+
entries: [(0, dataStoreContext_js_1.createAttributesBlob)(pkg, true /* isRootDataStore */)],
|
|
177
310
|
},
|
|
178
311
|
}),
|
|
179
312
|
pkg,
|
|
@@ -182,7 +315,7 @@ class DataStores {
|
|
|
182
315
|
}
|
|
183
316
|
processAliasMessage(message, localOpMetadata, local) {
|
|
184
317
|
const aliasMessage = message.contents;
|
|
185
|
-
if (!(0,
|
|
318
|
+
if (!(0, dataStore_js_1.isDataStoreAliasMessage)(aliasMessage)) {
|
|
186
319
|
throw new telemetry_utils_1.DataCorruptionError("malformedDataStoreAliasMessage", {
|
|
187
320
|
...(0, telemetry_utils_1.extractSafePropertiesFromMessage)(message),
|
|
188
321
|
});
|
|
@@ -210,8 +343,8 @@ class DataStores {
|
|
|
210
343
|
});
|
|
211
344
|
return false;
|
|
212
345
|
}
|
|
213
|
-
const handle = new datastore_1.FluidObjectHandle(context, aliasMessage.internalId, this.
|
|
214
|
-
this.
|
|
346
|
+
const handle = new datastore_1.FluidObjectHandle(context, aliasMessage.internalId, this.parentContext.IFluidHandleContext);
|
|
347
|
+
this.parentContext.addedGCOutboundReference?.(this.containerRuntimeHandle, handle);
|
|
215
348
|
this.aliasMap.set(aliasMessage.alias, context.id);
|
|
216
349
|
context.setInMemoryRoot();
|
|
217
350
|
return true;
|
|
@@ -221,11 +354,8 @@ class DataStores {
|
|
|
221
354
|
}
|
|
222
355
|
/** Package up the context's attach summary etc into an IAttachMessage */
|
|
223
356
|
generateAttachMessage(localContext) {
|
|
224
|
-
const { attachSummary
|
|
225
|
-
|
|
226
|
-
if (gcData !== undefined) {
|
|
227
|
-
(0, runtime_utils_1.addBlobToSummary)(attachSummary, runtime_definitions_1.gcDataBlobKey, JSON.stringify(gcData));
|
|
228
|
-
}
|
|
357
|
+
const { attachSummary } = localContext.getAttachData(/* includeGCData: */ true);
|
|
358
|
+
const type = localContext.packagePath[localContext.packagePath.length - 1];
|
|
229
359
|
// Attach message needs the summary in ITree format. Convert the ISummaryTree into an ITree.
|
|
230
360
|
const snapshot = (0, runtime_utils_1.convertSummaryTreeToITree)(attachSummary.summary);
|
|
231
361
|
return {
|
|
@@ -247,48 +377,83 @@ class DataStores {
|
|
|
247
377
|
* globally visible. Move it to attaching state and send an "attach" op for it.
|
|
248
378
|
* If the container is detached, this data store will be part of the summary that makes the container attached.
|
|
249
379
|
*/
|
|
250
|
-
if (this.
|
|
380
|
+
if (this.parentContext.attachState !== container_definitions_1.AttachState.Detached) {
|
|
251
381
|
localContext.emit("attaching");
|
|
252
382
|
const message = this.generateAttachMessage(localContext);
|
|
253
383
|
this.pendingAttach.set(id, message);
|
|
254
|
-
this.
|
|
384
|
+
this.parentContext.submitMessage(messageTypes_js_1.ContainerMessageType.Attach, message, undefined);
|
|
255
385
|
this.attachOpFiredForDataStore.add(id);
|
|
256
386
|
}
|
|
257
387
|
this.contexts.bind(id);
|
|
258
388
|
}
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
389
|
+
/**
|
|
390
|
+
* Generate compact internal DataStore ID.
|
|
391
|
+
*
|
|
392
|
+
* A note about namespace and name collisions:
|
|
393
|
+
* This code assumes that that's the only way to generate internal IDs, and that it's Ok for this namespace to overlap with
|
|
394
|
+
* user-provided alias names namespace.
|
|
395
|
+
* There are two scenarios where it could cause trouble:
|
|
396
|
+
* 1) Old files, where (already removed) CreateRoot*DataStore*() API was used, and thus internal name of data store
|
|
397
|
+
* was provided by user. Such files may experience name collision with future data stores that receive a name generated
|
|
398
|
+
* by this function.
|
|
399
|
+
* 2) Much less likely, but if it happen that internal ID (generated by this function) is exactly the same as alias name
|
|
400
|
+
* that user might use in the future, them ContainerRuntime.getAliasedDataStoreEntryPoint() or
|
|
401
|
+
* ContainerRuntime.getDataStoreFromRequest() could return a data store with internalID matching user request, even though
|
|
402
|
+
* user expected some other data store (that would receive alias later).
|
|
403
|
+
* Please note that above mentioned functions have the implementation they have (allowing #2) due to #1.
|
|
404
|
+
*/
|
|
405
|
+
createDataStoreId() {
|
|
406
|
+
// We use three non-overlapping namespaces:
|
|
407
|
+
// - detached state: even numbers
|
|
408
|
+
// - attached state: odd numbers
|
|
409
|
+
// - uuids
|
|
410
|
+
// In first two cases we will encode result as strings in more compact form.
|
|
411
|
+
if (this.parentContext.attachState === container_definitions_1.AttachState.Detached) {
|
|
412
|
+
// container is detached, only one client observes content, no way to hit collisions with other clients.
|
|
413
|
+
return (0, runtime_utils_1.encodeCompactIdToString)(2 * this.contexts.size);
|
|
414
|
+
}
|
|
415
|
+
const id = this.parentContext.containerRuntime.generateDocumentUniqueId();
|
|
416
|
+
if (typeof id === "number") {
|
|
417
|
+
return (0, runtime_utils_1.encodeCompactIdToString)(2 * id + 1);
|
|
418
|
+
}
|
|
419
|
+
return id;
|
|
420
|
+
}
|
|
421
|
+
createDetachedDataStoreCore(pkg, loadingGroupId) {
|
|
422
|
+
const id = this.createDataStoreId();
|
|
423
|
+
const context = new dataStoreContext_js_1.LocalDetachedFluidDataStoreContext({
|
|
262
424
|
id,
|
|
263
425
|
pkg,
|
|
264
|
-
|
|
265
|
-
storage: this.
|
|
266
|
-
scope: this.
|
|
267
|
-
createSummarizerNodeFn: this.getCreateChildSummarizerNodeFn(id, {
|
|
426
|
+
parentContext: this.wrapContextForInnerChannel(id),
|
|
427
|
+
storage: this.parentContext.storage,
|
|
428
|
+
scope: this.parentContext.scope,
|
|
429
|
+
createSummarizerNodeFn: this.parentContext.getCreateChildSummarizerNodeFn(id, {
|
|
268
430
|
type: runtime_definitions_1.CreateSummarizerNodeSource.Local,
|
|
269
431
|
}),
|
|
270
432
|
makeLocallyVisibleFn: () => this.makeDataStoreLocallyVisible(id),
|
|
271
433
|
snapshotTree: undefined,
|
|
272
|
-
isRootDataStore:
|
|
434
|
+
isRootDataStore: false,
|
|
435
|
+
loadingGroupId,
|
|
436
|
+
channelToDataStoreFn: (channel) => (0, dataStore_js_1.channelToDataStore)(channel, id, this, (0, telemetry_utils_1.createChildLogger)({ logger: this.parentContext.logger })),
|
|
273
437
|
});
|
|
274
438
|
this.contexts.addUnbound(context);
|
|
275
439
|
return context;
|
|
276
440
|
}
|
|
277
|
-
_createFluidDataStoreContext(pkg,
|
|
278
|
-
|
|
279
|
-
const context = new
|
|
441
|
+
_createFluidDataStoreContext(pkg, props, loadingGroupId) {
|
|
442
|
+
const id = this.createDataStoreId();
|
|
443
|
+
const context = new dataStoreContext_js_1.LocalFluidDataStoreContext({
|
|
280
444
|
id,
|
|
281
445
|
pkg,
|
|
282
|
-
|
|
283
|
-
storage: this.
|
|
284
|
-
scope: this.
|
|
285
|
-
createSummarizerNodeFn: this.getCreateChildSummarizerNodeFn(id, {
|
|
446
|
+
parentContext: this.wrapContextForInnerChannel(id),
|
|
447
|
+
storage: this.parentContext.storage,
|
|
448
|
+
scope: this.parentContext.scope,
|
|
449
|
+
createSummarizerNodeFn: this.parentContext.getCreateChildSummarizerNodeFn(id, {
|
|
286
450
|
type: runtime_definitions_1.CreateSummarizerNodeSource.Local,
|
|
287
451
|
}),
|
|
288
452
|
makeLocallyVisibleFn: () => this.makeDataStoreLocallyVisible(id),
|
|
289
453
|
snapshotTree: undefined,
|
|
290
454
|
isRootDataStore: false,
|
|
291
455
|
createProps: props,
|
|
456
|
+
loadingGroupId,
|
|
292
457
|
});
|
|
293
458
|
this.contexts.addUnbound(context);
|
|
294
459
|
return context;
|
|
@@ -296,7 +461,16 @@ class DataStores {
|
|
|
296
461
|
get disposed() {
|
|
297
462
|
return this.disposeOnce.evaluated;
|
|
298
463
|
}
|
|
299
|
-
|
|
464
|
+
reSubmit(type, content, localOpMetadata) {
|
|
465
|
+
switch (type) {
|
|
466
|
+
case messageTypes_js_1.ContainerMessageType.Attach:
|
|
467
|
+
case messageTypes_js_1.ContainerMessageType.Alias:
|
|
468
|
+
this.parentContext.submitMessage(type, content, localOpMetadata);
|
|
469
|
+
return;
|
|
470
|
+
default:
|
|
471
|
+
}
|
|
472
|
+
(0, core_utils_1.assert)(type === messageTypes_js_1.ContainerMessageType.FluidDataStoreOp, 0x8e7 /* type */);
|
|
473
|
+
const envelope = content;
|
|
300
474
|
const context = this.contexts.get(envelope.address);
|
|
301
475
|
// If the data store has been deleted, log an error and throw an error. If there are local changes for a
|
|
302
476
|
// deleted data store, it can otherwise lead to inconsistent state when compared to other clients.
|
|
@@ -307,9 +481,12 @@ class DataStores {
|
|
|
307
481
|
});
|
|
308
482
|
}
|
|
309
483
|
(0, core_utils_1.assert)(!!context, 0x160 /* "There should be a store context for the op" */);
|
|
310
|
-
|
|
484
|
+
const innerContents = envelope.contents;
|
|
485
|
+
context.reSubmit(innerContents.type, innerContents.content, localOpMetadata);
|
|
311
486
|
}
|
|
312
|
-
|
|
487
|
+
rollback(type, content, localOpMetadata) {
|
|
488
|
+
(0, core_utils_1.assert)(type === messageTypes_js_1.ContainerMessageType.FluidDataStoreOp, 0x8e8 /* type */);
|
|
489
|
+
const envelope = content;
|
|
313
490
|
const context = this.contexts.get(envelope.address);
|
|
314
491
|
// If the data store has been deleted, log an error and throw an error. If there are local changes for a
|
|
315
492
|
// deleted data store, it can otherwise lead to inconsistent state when compared to other clients.
|
|
@@ -320,9 +497,19 @@ class DataStores {
|
|
|
320
497
|
});
|
|
321
498
|
}
|
|
322
499
|
(0, core_utils_1.assert)(!!context, 0x2e8 /* "There should be a store context for the op" */);
|
|
323
|
-
|
|
500
|
+
const innerContents = envelope.contents;
|
|
501
|
+
context.rollback(innerContents.type, innerContents.content, localOpMetadata);
|
|
324
502
|
}
|
|
325
|
-
async applyStashedOp(
|
|
503
|
+
async applyStashedOp(content) {
|
|
504
|
+
const opContents = content;
|
|
505
|
+
switch (opContents.type) {
|
|
506
|
+
case messageTypes_js_1.ContainerMessageType.Attach:
|
|
507
|
+
return this.applyStashedAttachOp(opContents.contents);
|
|
508
|
+
case messageTypes_js_1.ContainerMessageType.Alias:
|
|
509
|
+
return;
|
|
510
|
+
default:
|
|
511
|
+
}
|
|
512
|
+
const envelope = opContents.contents;
|
|
326
513
|
const context = this.contexts.get(envelope.address);
|
|
327
514
|
// If the data store has been deleted, log an error and ignore this message. This helps prevent document
|
|
328
515
|
// corruption in case the data store that stashed the op is deleted.
|
|
@@ -337,9 +524,26 @@ class DataStores {
|
|
|
337
524
|
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
338
525
|
this.processAttachMessage({ contents: message }, false);
|
|
339
526
|
}
|
|
340
|
-
|
|
527
|
+
process(message, local, localMessageMetadata, addedOutboundReference) {
|
|
528
|
+
switch (message.type) {
|
|
529
|
+
case messageTypes_js_1.ContainerMessageType.Attach:
|
|
530
|
+
this.processAttachMessage(message, local);
|
|
531
|
+
return;
|
|
532
|
+
case messageTypes_js_1.ContainerMessageType.Alias:
|
|
533
|
+
this.processAliasMessage(message, localMessageMetadata, local);
|
|
534
|
+
return;
|
|
535
|
+
case messageTypes_js_1.ContainerMessageType.FluidDataStoreOp:
|
|
536
|
+
break;
|
|
537
|
+
default:
|
|
538
|
+
(0, core_utils_1.assert)(false, 0x8e9 /* unreached */);
|
|
539
|
+
}
|
|
341
540
|
const envelope = message.contents;
|
|
342
|
-
const
|
|
541
|
+
const innerContents = envelope.contents;
|
|
542
|
+
const transformed = {
|
|
543
|
+
...message,
|
|
544
|
+
type: innerContents.type,
|
|
545
|
+
contents: innerContents.content,
|
|
546
|
+
};
|
|
343
547
|
const context = this.contexts.get(envelope.address);
|
|
344
548
|
// If the data store has been deleted, log an error and ignore this message. This helps prevent document
|
|
345
549
|
// corruption in case a deleted data store accidentally submitted an op.
|
|
@@ -360,16 +564,17 @@ class DataStores {
|
|
|
360
564
|
context.process(transformed, local, localMessageMetadata);
|
|
361
565
|
// By default, we use the new behavior of detecting outbound routes here.
|
|
362
566
|
// If this setting is true, then DataStoreContext would be notifying GC instead.
|
|
363
|
-
if (this.mc.config.getBoolean(
|
|
567
|
+
if (this.mc.config.getBoolean(index_js_1.detectOutboundRoutesViaDDSKey) !== true &&
|
|
568
|
+
addedOutboundReference !== undefined) {
|
|
364
569
|
// Notify GC of any outbound references that were added by this op.
|
|
365
570
|
detectOutboundReferences(envelope, addedOutboundReference);
|
|
366
571
|
}
|
|
367
572
|
// Notify that a GC node for the data store changed. This is used to detect if a deleted data store is
|
|
368
573
|
// being used.
|
|
369
|
-
this.gcNodeUpdated(`/${envelope.address}`, message.timestamp, context.isLoaded ? context.packagePath : undefined);
|
|
574
|
+
this.gcNodeUpdated(`/${envelope.address}`, "Changed", message.timestamp, context.isLoaded ? context.packagePath : undefined);
|
|
370
575
|
}
|
|
371
576
|
async getDataStore(id, requestHeaderData) {
|
|
372
|
-
const headerData = { ...
|
|
577
|
+
const headerData = { ...containerRuntime_js_1.defaultRuntimeHeaderData, ...requestHeaderData };
|
|
373
578
|
if (this.checkAndLogIfDeleted(id, this.contexts.get(id), "Requested", "getDataStore", requestHeaderData)) {
|
|
374
579
|
// The requested data store has been deleted by gc. Create a 404 response exception.
|
|
375
580
|
const request = { url: id };
|
|
@@ -391,7 +596,7 @@ class DataStores {
|
|
|
391
596
|
if (this.checkAndLogIfDeleted(id, this.contexts.get(id), "Requested", "getDataStoreIfAvailable", requestHeaderData)) {
|
|
392
597
|
return undefined;
|
|
393
598
|
}
|
|
394
|
-
const headerData = { ...
|
|
599
|
+
const headerData = { ...containerRuntime_js_1.defaultRuntimeHeaderData, ...requestHeaderData };
|
|
395
600
|
const context = await this.contexts.getBoundOrRemoted(id, headerData.wait);
|
|
396
601
|
if (context === undefined) {
|
|
397
602
|
return undefined;
|
|
@@ -420,7 +625,10 @@ class DataStores {
|
|
|
420
625
|
});
|
|
421
626
|
return true;
|
|
422
627
|
}
|
|
423
|
-
processSignal(
|
|
628
|
+
processSignal(messageArg, local) {
|
|
629
|
+
const envelope = messageArg.content;
|
|
630
|
+
const fluidDataStoreId = envelope.address;
|
|
631
|
+
const message = { ...messageArg, content: envelope.contents };
|
|
424
632
|
const context = this.contexts.get(fluidDataStoreId);
|
|
425
633
|
// If the data store has been deleted, log an error and ignore this message. This helps prevent document
|
|
426
634
|
// corruption in case a deleted data store accidentally submitted a signal.
|
|
@@ -453,7 +661,7 @@ class DataStores {
|
|
|
453
661
|
fluidDataStoreId,
|
|
454
662
|
}),
|
|
455
663
|
details: JSON.stringify({
|
|
456
|
-
runtimeConnected: this.
|
|
664
|
+
runtimeConnected: this.parentContext.connected,
|
|
457
665
|
connected,
|
|
458
666
|
}),
|
|
459
667
|
}, error);
|
|
@@ -496,7 +704,7 @@ class DataStores {
|
|
|
496
704
|
/**
|
|
497
705
|
* Create a summary. Used when attaching or serializing a detached container.
|
|
498
706
|
*/
|
|
499
|
-
|
|
707
|
+
getAttachSummary(telemetryContext) {
|
|
500
708
|
const builder = new runtime_utils_1.SummaryTreeBuilder();
|
|
501
709
|
// Attaching graph of some stores can cause other stores to get bound too.
|
|
502
710
|
// So keep taking summary until no new stores get bound.
|
|
@@ -541,8 +749,8 @@ class DataStores {
|
|
|
541
749
|
(0, core_utils_1.assert)(context !== undefined, 0x2b6 /* Missing data store context */);
|
|
542
750
|
if (await context.isRoot()) {
|
|
543
751
|
// A root data store is basically a reference from the container runtime to the data store.
|
|
544
|
-
const handle = new datastore_1.FluidObjectHandle(context, id, this.
|
|
545
|
-
this.
|
|
752
|
+
const handle = new datastore_1.FluidObjectHandle(context, id, this.parentContext.IFluidHandleContext);
|
|
753
|
+
this.parentContext.addedGCOutboundReference?.(this.containerRuntimeHandle, handle);
|
|
546
754
|
}
|
|
547
755
|
}
|
|
548
756
|
this.dataStoresSinceLastGC = [];
|
|
@@ -618,7 +826,7 @@ class DataStores {
|
|
|
618
826
|
// Delete the contexts of unused data stores.
|
|
619
827
|
this.contexts.delete(dataStoreId);
|
|
620
828
|
// Delete the summarizer node of the unused data stores.
|
|
621
|
-
this.
|
|
829
|
+
this.parentContext.deleteChildSummarizerNode?.(dataStoreId);
|
|
622
830
|
}
|
|
623
831
|
}
|
|
624
832
|
/**
|
|
@@ -655,7 +863,7 @@ class DataStores {
|
|
|
655
863
|
// Delete the contexts of sweep ready data stores.
|
|
656
864
|
this.contexts.delete(dataStoreId);
|
|
657
865
|
// Delete the summarizer node of the sweep ready data stores.
|
|
658
|
-
this.
|
|
866
|
+
this.parentContext.deleteChildSummarizerNode?.(dataStoreId);
|
|
659
867
|
}
|
|
660
868
|
return Array.from(sweepReadyDataStoreRoutes);
|
|
661
869
|
}
|
|
@@ -719,17 +927,60 @@ class DataStores {
|
|
|
719
927
|
// Data stores paths are of the format "/dataStoreId".
|
|
720
928
|
// Sub data store paths are of the format "/dataStoreId/subPath/...".
|
|
721
929
|
if (pathParts.length === 2) {
|
|
722
|
-
return
|
|
930
|
+
return index_js_1.GCNodeType.DataStore;
|
|
723
931
|
}
|
|
724
|
-
return
|
|
932
|
+
return index_js_1.GCNodeType.SubDataStore;
|
|
933
|
+
}
|
|
934
|
+
internalId(maybeAlias) {
|
|
935
|
+
return this.aliases.get(maybeAlias) ?? maybeAlias;
|
|
936
|
+
}
|
|
937
|
+
async request(request) {
|
|
938
|
+
const requestParser = runtime_utils_1.RequestParser.create(request);
|
|
939
|
+
const id = requestParser.pathParts[0];
|
|
940
|
+
// Differentiate between requesting the dataStore directly, or one of its children
|
|
941
|
+
const requestForChild = !requestParser.isLeaf(1);
|
|
942
|
+
const headerData = {};
|
|
943
|
+
if (typeof request.headers?.[RuntimeHeaders.wait] === "boolean") {
|
|
944
|
+
headerData.wait = request.headers[RuntimeHeaders.wait];
|
|
945
|
+
}
|
|
946
|
+
if (typeof request.headers?.[RuntimeHeaders.viaHandle] === "boolean") {
|
|
947
|
+
headerData.viaHandle = request.headers[RuntimeHeaders.viaHandle];
|
|
948
|
+
}
|
|
949
|
+
if (typeof request.headers?.[exports.AllowTombstoneRequestHeaderKey] === "boolean") {
|
|
950
|
+
headerData.allowTombstone = request.headers[exports.AllowTombstoneRequestHeaderKey];
|
|
951
|
+
}
|
|
952
|
+
if (typeof request.headers?.[exports.AllowInactiveRequestHeaderKey] === "boolean") {
|
|
953
|
+
headerData.allowInactive = request.headers[exports.AllowInactiveRequestHeaderKey];
|
|
954
|
+
}
|
|
955
|
+
// We allow Tombstone requests for sub-DataStore objects
|
|
956
|
+
if (requestForChild) {
|
|
957
|
+
headerData.allowTombstone = true;
|
|
958
|
+
}
|
|
959
|
+
await this.waitIfPendingAlias(id);
|
|
960
|
+
const internalId = this.internalId(id);
|
|
961
|
+
const dataStoreContext = await this.getDataStore(internalId, headerData);
|
|
962
|
+
// Remove query params, leading and trailing slashes from the url. This is done to make sure the format is
|
|
963
|
+
// the same as GC nodes id.
|
|
964
|
+
const urlWithoutQuery = (0, index_js_1.trimLeadingAndTrailingSlashes)(request.url.split("?")[0]);
|
|
965
|
+
// Get the initial snapshot details which contain the data store package path.
|
|
966
|
+
const details = await dataStoreContext.getInitialSnapshotDetails();
|
|
967
|
+
// Note that this will throw if the data store is inactive or tombstoned and throwing on incorrect usage
|
|
968
|
+
// is configured.
|
|
969
|
+
this.gcNodeUpdated(`/${urlWithoutQuery}`, "Loaded", undefined /* timestampMs */, details.pkg, request, headerData);
|
|
970
|
+
const dataStore = await dataStoreContext.realize();
|
|
971
|
+
const subRequest = requestParser.createSubRequest(1);
|
|
972
|
+
// We always expect createSubRequest to include a leading slash, but asserting here to protect against
|
|
973
|
+
// unintentionally modifying the url if that changes.
|
|
974
|
+
(0, core_utils_1.assert)(subRequest.url.startsWith("/"), 0x126 /* "Expected createSubRequest url to include a leading slash" */);
|
|
975
|
+
return dataStore.request(subRequest);
|
|
725
976
|
}
|
|
726
977
|
}
|
|
727
|
-
exports.
|
|
978
|
+
exports.ChannelCollection = ChannelCollection;
|
|
728
979
|
function getSummaryForDatastores(snapshot, metadata) {
|
|
729
980
|
if (!snapshot) {
|
|
730
981
|
return undefined;
|
|
731
982
|
}
|
|
732
|
-
if ((0,
|
|
983
|
+
if ((0, index_js_2.rootHasIsolatedChannels)(metadata)) {
|
|
733
984
|
const datastoresSnapshot = snapshot.trees[runtime_definitions_1.channelsTreeName];
|
|
734
985
|
(0, core_utils_1.assert)(!!datastoresSnapshot, 0x168 /* Expected tree in snapshot not found */);
|
|
735
986
|
return datastoresSnapshot;
|
|
@@ -738,7 +989,7 @@ function getSummaryForDatastores(snapshot, metadata) {
|
|
|
738
989
|
// back-compat: strip out all non-datastore paths before giving to DataStores object.
|
|
739
990
|
const datastoresTrees = {};
|
|
740
991
|
for (const [key, value] of Object.entries(snapshot.trees)) {
|
|
741
|
-
if (!
|
|
992
|
+
if (!index_js_2.nonDataStorePaths.includes(key)) {
|
|
742
993
|
datastoresTrees[key] = value;
|
|
743
994
|
}
|
|
744
995
|
}
|
|
@@ -751,6 +1002,8 @@ function getSummaryForDatastores(snapshot, metadata) {
|
|
|
751
1002
|
exports.getSummaryForDatastores = getSummaryForDatastores;
|
|
752
1003
|
/**
|
|
753
1004
|
* Traverse this op's contents and detect any outbound routes that were added by this op.
|
|
1005
|
+
*
|
|
1006
|
+
* @internal
|
|
754
1007
|
*/
|
|
755
1008
|
function detectOutboundReferences(envelope, addedOutboundReference) {
|
|
756
1009
|
// These will be built up as we traverse the envelope contents
|
|
@@ -780,4 +1033,26 @@ function detectOutboundReferences(envelope, addedOutboundReference) {
|
|
|
780
1033
|
outboundPaths.forEach((toPath) => addedOutboundReference(fromPath, toPath));
|
|
781
1034
|
}
|
|
782
1035
|
exports.detectOutboundReferences = detectOutboundReferences;
|
|
783
|
-
|
|
1036
|
+
/** @internal */
|
|
1037
|
+
class ChannelCollectionFactory {
|
|
1038
|
+
constructor(registryEntries,
|
|
1039
|
+
// ADO:7302 We need a better type here
|
|
1040
|
+
provideEntryPoint) {
|
|
1041
|
+
this.provideEntryPoint = provideEntryPoint;
|
|
1042
|
+
this.type = "ChannelCollectionChannel";
|
|
1043
|
+
this.IFluidDataStoreRegistry = new dataStoreRegistry_js_1.FluidDataStoreRegistry(registryEntries);
|
|
1044
|
+
}
|
|
1045
|
+
get IFluidDataStoreFactory() {
|
|
1046
|
+
return this;
|
|
1047
|
+
}
|
|
1048
|
+
async instantiateDataStore(context, _existing) {
|
|
1049
|
+
const runtime = new ChannelCollection(context.baseSnapshot, context, // parentContext
|
|
1050
|
+
context.logger, () => { }, // gcNodeUpdated
|
|
1051
|
+
(_nodePath) => false, // isDataStoreDeleted
|
|
1052
|
+
new Map(), // aliasMap
|
|
1053
|
+
this.provideEntryPoint);
|
|
1054
|
+
return runtime;
|
|
1055
|
+
}
|
|
1056
|
+
}
|
|
1057
|
+
exports.ChannelCollectionFactory = ChannelCollectionFactory;
|
|
1058
|
+
//# sourceMappingURL=channelCollection.js.map
|