@fluidframework/test-runtime-utils 2.70.0-361788 → 2.71.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/lib/mocks.d.ts CHANGED
@@ -333,7 +333,7 @@ export declare class MockFluidDataStoreRuntime extends EventEmitter implements I
333
333
  getBlob(blobId: string): Promise<any>;
334
334
  private submitMessageInternal;
335
335
  private setChannelDirty;
336
- submitSignal(type: string, content: any): null;
336
+ submitSignal: IFluidDataStoreRuntime["submitSignal"];
337
337
  processMessages(messageCollection: IRuntimeMessageCollection): void;
338
338
  processSignal(message: any, local: boolean): void;
339
339
  updateMinSequenceNumber(value: number): void;
@@ -1 +1 @@
1
- {"version":3,"file":"mocks.d.ts","sourceRoot":"","sources":["../src/mocks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mocks.d.ts","sourceRoot":"","sources":["../src/mocks.ts"],"names":[],"mappings":"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"}
package/lib/mocks.js CHANGED
@@ -622,6 +622,7 @@ export class MockFluidDataStoreRuntime extends EventEmitter {
622
622
  this.audience = new MockAudience();
623
623
  this.deltaConnections = [];
624
624
  this._disposed = false;
625
+ this.submitSignal = () => null;
625
626
  this.clientId = overrides?.clientId ?? uuid();
626
627
  this.entryPoint = toFluidHandleInternal(overrides?.entryPoint ?? new MockHandle(null, "", ""));
627
628
  this.id = overrides?.id ?? uuid();
@@ -744,9 +745,6 @@ export class MockFluidDataStoreRuntime extends EventEmitter {
744
745
  assert(this.containerRuntime !== undefined, "The container runtime has not been initialized");
745
746
  return this.containerRuntime.dirty();
746
747
  }
747
- submitSignal(type, content) {
748
- return null;
749
- }
750
748
  processMessages(messageCollection) {
751
749
  if (this.disposed) {
752
750
  return;
package/lib/mocks.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"mocks.js","sourceRoot":"","sources":["../src/mocks.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { EventEmitter, TypedEventEmitter, stringToBuffer } from \"@fluid-internal/client-utils\";\nimport {\n\tAttachState,\n\tIAudience,\n\tIAudienceEvents,\n\tISelf,\n} from \"@fluidframework/container-definitions\";\nimport { ILoader, IAudienceOwner } from \"@fluidframework/container-definitions/internal\";\nimport type { IContainerRuntimeEvents } from \"@fluidframework/container-runtime-definitions/internal\";\nimport {\n\tFluidObject,\n\tIFluidHandle,\n\tIRequest,\n\tIResponse,\n\ttype ITelemetryBaseLogger,\n} from \"@fluidframework/core-interfaces\";\nimport {\n\tIFluidHandleContext,\n\ttype IFluidHandleInternal,\n} from \"@fluidframework/core-interfaces/internal\";\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport {\n\tIChannelServices,\n\tIChannelStorageService,\n\tIDeltaConnection,\n\tIDeltaHandler,\n\tIChannel,\n\tIFluidDataStoreRuntime,\n\tIChannelFactory,\n\ttype IDeltaManagerErased,\n} from \"@fluidframework/datastore-definitions/internal\";\nimport type { IClient } from \"@fluidframework/driver-definitions\";\nimport {\n\tIQuorumClients,\n\tISequencedClient,\n\tISummaryTree,\n\tSummaryType,\n} from \"@fluidframework/driver-definitions\";\nimport {\n\tITreeEntry,\n\tMessageType,\n\tISequencedDocumentMessage,\n\ttype ISnapshotTree,\n} from \"@fluidframework/driver-definitions/internal\";\nimport type { IIdCompressor } from \"@fluidframework/id-compressor\";\nimport type {\n\tIIdCompressorCore,\n\tIdCreationRange,\n} from \"@fluidframework/id-compressor/internal\";\nimport {\n\tISummaryTreeWithStats,\n\tIGarbageCollectionData,\n\tFlushMode,\n\tIFluidDataStoreChannel,\n\tVisibilityState,\n\ttype ITelemetryContext,\n\ttype IRuntimeMessageCollection,\n\ttype IRuntimeMessagesContent,\n\ttype MinimumVersionForCollab,\n} from \"@fluidframework/runtime-definitions/internal\";\nimport {\n\tgetNormalizedObjectStoragePathParts,\n\tmergeStats,\n\ttoDeltaManagerErased,\n\ttoFluidHandleInternal,\n} from \"@fluidframework/runtime-utils/internal\";\nimport { createChildLogger } from \"@fluidframework/telemetry-utils/internal\";\nimport { v4 as uuid } from \"uuid\";\n\nimport { deepFreeze } from \"./deepFreeze.js\";\nimport { MockDeltaManager } from \"./mockDeltas.js\";\nimport { MockHandle } from \"./mockHandle.js\";\n\n/**\n * Mock implementation of IDeltaConnection for testing\n * @legacy @beta\n */\nexport class MockDeltaConnection implements IDeltaConnection {\n\tpublic get connected(): boolean {\n\t\treturn this._connected;\n\t}\n\n\tprivate _connected = true;\n\tpublic handler: IDeltaHandler | undefined;\n\n\tconstructor(\n\t\tprivate readonly submitFn: (messageContent: any, localOpMetadata: unknown) => number,\n\t\tprivate readonly dirtyFn: () => void,\n\t) {}\n\n\tpublic attach(handler: IDeltaHandler): void {\n\t\tthis.handler = handler;\n\t\thandler.setConnectionState(this.connected);\n\t}\n\n\tpublic submit(messageContent: any, localOpMetadata: unknown): number {\n\t\treturn this.submitFn(messageContent, localOpMetadata);\n\t}\n\n\tpublic dirty(): void {\n\t\tthis.dirtyFn();\n\t}\n\n\tpublic setConnectionState(connected: boolean) {\n\t\tthis._connected = connected;\n\t\tthis.handler?.setConnectionState(connected);\n\t}\n\n\tpublic processMessages(messageCollection: IRuntimeMessageCollection) {\n\t\tthis.handler?.processMessages?.(messageCollection);\n\t}\n\n\tpublic reSubmit(content: any, localOpMetadata: unknown, squash?: boolean) {\n\t\tthis.handler?.reSubmit(content, localOpMetadata, squash);\n\t}\n\n\tpublic applyStashedOp(content: any): unknown {\n\t\treturn this.handler?.applyStashedOp(content);\n\t}\n\n\tpublic rollback?(message: any, localOpMetadata: unknown): void {\n\t\tthis.handler?.rollback?.(message, localOpMetadata);\n\t}\n}\n\n// Represents the structure of a pending message stored by the MockContainerRuntime.\n/**\n * @legacy @beta\n */\nexport interface IMockContainerRuntimePendingMessage {\n\tcontent: any;\n\treferenceSequenceNumber: number;\n\tclientSequenceNumber: number;\n\tlocalOpMetadata: unknown;\n}\n\nexport interface IMockContainerRuntimeIdAllocationMessage {\n\ttype: \"idAllocation\";\n\tcontents: IdCreationRange;\n}\n\n/**\n * Options for the container runtime mock.\n * @legacy @beta\n */\nexport interface IMockContainerRuntimeOptions {\n\t/**\n\t * Configures the flush mode for the runtime. In Immediate flush mode the runtime will immediately\n\t * send all operations to the driver layer, while in TurnBased the operations will be buffered\n\t * and then sent them as a single batch when `flush()` is called on the runtime.\n\t *\n\t * By default, flush mode is Immediate.\n\t */\n\treadonly flushMode?: FlushMode;\n\t/**\n\t * If configured, it will simulate group batching by forcing all ops within a batch to have\n\t * the same sequence number.\n\t *\n\t * By default, the value is `false`\n\t */\n\treadonly enableGroupedBatching?: boolean;\n}\n\nconst defaultMockContainerRuntimeOptions: Required<IMockContainerRuntimeOptions> = {\n\tflushMode: FlushMode.Immediate,\n\tenableGroupedBatching: false,\n};\n\nconst makeContainerRuntimeOptions = (\n\tmockContainerRuntimeOptions: IMockContainerRuntimeOptions,\n): Required<IMockContainerRuntimeOptions> => ({\n\t...defaultMockContainerRuntimeOptions,\n\t...mockContainerRuntimeOptions,\n});\n\n/**\n * @legacy @beta\n */\nexport interface IInternalMockRuntimeMessage {\n\tcontent: any;\n\tlocalOpMetadata?: unknown;\n\treferenceSequenceNumber?: number;\n}\n\n/**\n * Mock implementation of IContainerRuntime for testing basic submitting and processing of messages.\n * If test specific logic is required, extend this class and add the logic there. For an example, take a look\n * at MockContainerRuntimeForReconnection.\n * @legacy @beta\n */\nexport class MockContainerRuntime extends TypedEventEmitter<IContainerRuntimeEvents> {\n\tpublic clientId: string;\n\tpublic readonly deltaManager: MockDeltaManager;\n\t/**\n\t * @deprecated use the associated datastore to create the delta connection\n\t */\n\tprotected readonly deltaConnections: MockDeltaConnection[] = [];\n\tprotected readonly pendingMessages: IMockContainerRuntimePendingMessage[] = [];\n\tprotected readonly outbox: IInternalMockRuntimeMessage[] = [];\n\tprivate readonly idAllocationOutbox: IInternalMockRuntimeMessage[] = [];\n\t/**\n\t * The runtime options this instance is using. See {@link IMockContainerRuntimeOptions}.\n\t */\n\tprotected readonly runtimeOptions: Required<IMockContainerRuntimeOptions>;\n\n\tconstructor(\n\t\tprotected readonly dataStoreRuntime: MockFluidDataStoreRuntime,\n\t\tprotected readonly factory: MockContainerRuntimeFactory,\n\t\tmockContainerRuntimeOptions: IMockContainerRuntimeOptions = defaultMockContainerRuntimeOptions,\n\t\tprotected readonly overrides?: { minimumSequenceNumber?: number | undefined },\n\t) {\n\t\tsuper();\n\t\tthis.deltaManager = new MockDeltaManager(() => this.clientId);\n\t\tthis.deltaManager.inbound.on(\"push\", (message: ISequencedDocumentMessage) => {\n\t\t\tthis.factory.pushMessage(message);\n\t\t});\n\n\t\tconst msn = overrides?.minimumSequenceNumber;\n\t\tif (msn !== undefined) {\n\t\t\tthis.deltaManager.lastSequenceNumber = msn;\n\t\t\tthis.deltaManager.minimumSequenceNumber = msn;\n\t\t}\n\t\t// Set FluidDataStoreRuntime's deltaManager to ours so that they are in sync.\n\t\tthis.dataStoreRuntime.deltaManagerInternal = this.deltaManager;\n\t\tthis.dataStoreRuntime.quorum = factory.quorum;\n\t\tthis.dataStoreRuntime.containerRuntime = this;\n\t\t// FluidDataStoreRuntime already creates a clientId, reuse that so they are in sync.\n\t\tthis.clientId = this.dataStoreRuntime.clientId ?? uuid();\n\t\tfactory.quorum.addMember(this.clientId, {});\n\t\tthis.runtimeOptions = makeContainerRuntimeOptions(mockContainerRuntimeOptions);\n\t\tassert(\n\t\t\tthis.runtimeOptions.flushMode !== FlushMode.Immediate ||\n\t\t\t\t!this.runtimeOptions.enableGroupedBatching,\n\t\t\t\"Grouped batching is not compatible with FlushMode.Immediate\",\n\t\t);\n\t}\n\n\t/**\n\t * @deprecated use the associated datastore to create the delta connection\n\t */\n\tpublic createDeltaConnection(): MockDeltaConnection {\n\t\tconst deltaConnection = this.dataStoreRuntime.createDeltaConnection();\n\t\tthis.deltaConnections.push(deltaConnection);\n\t\treturn deltaConnection;\n\t}\n\n\tpublic finalizeIdRange(range: IdCreationRange) {\n\t\tassert(\n\t\t\tthis.dataStoreRuntime.idCompressor !== undefined,\n\t\t\t\"Shouldn't try to finalize IdRanges without an IdCompressor\",\n\t\t);\n\t\tthis.dataStoreRuntime.idCompressor.finalizeCreationRange(range);\n\t}\n\n\t// This enables manual control over flush mode, allowing operations like rollback to be executed in a controlled environment.\n\t#manualFlushCalls: number = 0;\n\n\tpublic async runWithManualFlush(act: () => void | Promise<void>) {\n\t\tthis.#manualFlushCalls++;\n\t\ttry {\n\t\t\tawait act();\n\t\t} finally {\n\t\t\tthis.#manualFlushCalls--;\n\t\t}\n\t}\n\n\tpublic submit(messageContent: any, localOpMetadata?: unknown): number {\n\t\tconst clientSequenceNumber = ++this.deltaManager.clientSequenceNumber;\n\t\tconst message: IInternalMockRuntimeMessage = {\n\t\t\tcontent: messageContent,\n\t\t\tlocalOpMetadata,\n\t\t\treferenceSequenceNumber: this.deltaManager.lastSequenceNumber,\n\t\t};\n\n\t\tconst isAllocationMessage = this.isAllocationMessage(message.content);\n\n\t\tconst currentFlushMode =\n\t\t\tthis.#manualFlushCalls > 0 ? FlushMode.TurnBased : this.runtimeOptions.flushMode;\n\n\t\tswitch (currentFlushMode) {\n\t\t\tcase FlushMode.Immediate: {\n\t\t\t\tif (!isAllocationMessage) {\n\t\t\t\t\tconst idAllocationOp = this.generateIdAllocationOp();\n\t\t\t\t\tif (idAllocationOp !== undefined) {\n\t\t\t\t\t\tthis.submitInternal(idAllocationOp, clientSequenceNumber);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.submitInternal(message, clientSequenceNumber);\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase FlushMode.TurnBased: {\n\t\t\t\t// Id allocation messages are directly submitted during the resubmit path\n\t\t\t\tif (isAllocationMessage) {\n\t\t\t\t\tthis.idAllocationOutbox.push(message);\n\t\t\t\t} else {\n\t\t\t\t\tthis.outbox.push(message);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tdefault:\n\t\t\t\tthrow new Error(`Unsupported FlushMode ${this.runtimeOptions.flushMode}`);\n\t\t}\n\n\t\treturn clientSequenceNumber;\n\t}\n\n\t/**\n\t * If the message is an idAllocation message, it will finalize the id range and return true.\n\t * Otherwise, it will return false.\n\t */\n\tprotected maybeProcessIdAllocationMessage(message: ISequencedDocumentMessage): boolean {\n\t\tif (this.isAllocationMessage(message.contents)) {\n\t\t\tthis.finalizeIdRange(message.contents.contents);\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tprivate isAllocationMessage(\n\t\tmessage: any,\n\t): message is IMockContainerRuntimeIdAllocationMessage {\n\t\treturn (\n\t\t\tmessage !== undefined &&\n\t\t\t(message as IMockContainerRuntimeIdAllocationMessage).type === \"idAllocation\"\n\t\t);\n\t}\n\n\tpublic dirty(): void {}\n\tpublic get isDirty() {\n\t\treturn this.pendingMessages.length > 0;\n\t}\n\n\t/**\n\t * If flush mode is set to FlushMode.TurnBased, it will send all messages queued since the last time\n\t * this method (or `flushSomeMessages`) was called. Otherwise, calling the method does nothing.\n\t */\n\tpublic flush() {\n\t\tthis.flushSomeMessages(this.outbox.length);\n\t}\n\n\t/**\n\t * If flush mode is set to FlushMode.TurnBased, it will send the specified number of messages from the outbox\n\t * queued since the last time this (or `flush`) was called. Otherwise, calling the method does nothing.\n\t * This can be useful when simulating staging mode, and we only want to flush certain messages.\n\t */\n\tpublic flushSomeMessages(numMessages: number): void {\n\t\tif (!Number.isInteger(numMessages) || numMessages < 0) {\n\t\t\tthrow new Error(\"flushSomeMessages: numMessages must be a non-negative integer\");\n\t\t}\n\t\tif (this.runtimeOptions.flushMode !== FlushMode.TurnBased) {\n\t\t\treturn;\n\t\t}\n\n\t\t// This mimics the runtime behavior of the IdCompressor by generating an IdAllocationOp\n\t\t// and sticking it in front of any op that might rely on that id. It differs slightly in that\n\t\t// in the actual runtime it would get put in its own separate batch\n\t\tconst idAllocationOp = this.generateIdAllocationOp();\n\t\tif (idAllocationOp !== undefined) {\n\t\t\tthis.idAllocationOutbox.push(idAllocationOp);\n\t\t}\n\n\t\tconst actualMessagesToSubmit = this.outbox.splice(0, numMessages);\n\n\t\t// As with the runtime behavior, we need to send the idAllocationOps first\n\t\tconst messagesToSubmit = this.idAllocationOutbox.concat(actualMessagesToSubmit);\n\t\tthis.idAllocationOutbox.length = 0;\n\n\t\tlet fakeClientSequenceNumber = 1;\n\t\tmessagesToSubmit.forEach((message) => {\n\t\t\tthis.submitInternal(\n\t\t\t\tmessage,\n\t\t\t\t// When grouped batching is used, the ops within the same grouped batch will have\n\t\t\t\t// fake sequence numbers when they're ungrouped. The submit function will still\n\t\t\t\t// return the clientSequenceNumber but this will ensure that the readers will always\n\t\t\t\t// read the fake client sequence numbers.\n\t\t\t\tthis.runtimeOptions.enableGroupedBatching\n\t\t\t\t\t? fakeClientSequenceNumber++\n\t\t\t\t\t: this.deltaManager.clientSequenceNumber,\n\t\t\t);\n\t\t});\n\t}\n\n\t/**\n\t * If flush mode is set to FlushMode.TurnBased, it will rebase the current batch by resubmitting them\n\t * to the data stores. Otherwise, calling the method does nothing.\n\t *\n\t * The method requires `runtimeOptions.enableGroupedBatching` to be enabled.\n\t */\n\tpublic rebase() {\n\t\tif (this.runtimeOptions.flushMode !== FlushMode.TurnBased) {\n\t\t\treturn;\n\t\t}\n\n\t\tassert(\n\t\t\tthis.runtimeOptions.enableGroupedBatching,\n\t\t\t\"Rebasing is not supported when group batching is disabled\",\n\t\t);\n\n\t\t// Only outbox needs to be rebased. The idAllocationOutbox is not rebased, as that\n\t\t// is a no-op (though resubmitting the other ops may generate new IDs)\n\t\tconst messagesToRebase = this.outbox.slice();\n\t\tthis.outbox.length = 0;\n\n\t\tthis.reSubmitMessages(messagesToRebase);\n\t}\n\n\tprotected reSubmitMessages(\n\t\tmessagesToResubmit: { content: any; localOpMetadata?: unknown }[],\n\t): void {\n\t\t// Sort the messages so that idAllocation messages are submitted first\n\t\t// When resubmitting non-idAllocation messages, they may generate new IDs.\n\t\t// This sort ensures that all ID ranges are finalized before they are\n\t\t// needed (i.e. before the messages that rely on them are processed)\n\t\t// and in the order they were allocated\n\t\tconst orderedMessages = messagesToResubmit\n\t\t\t.filter((message) => message.content.type === \"idAllocation\")\n\t\t\t.concat(messagesToResubmit.filter((message) => message.content.type !== \"idAllocation\"));\n\t\torderedMessages.forEach((pendingMessage) => {\n\t\t\tif (pendingMessage.content.type === \"idAllocation\") {\n\t\t\t\tthis.submit(pendingMessage.content, pendingMessage.localOpMetadata);\n\t\t\t} else {\n\t\t\t\tthis.dataStoreRuntime.reSubmit(pendingMessage.content, pendingMessage.localOpMetadata);\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Rolls back all pending messages.\n\t * @remarks\n\t * This only works when the FlushMode is not immediate as immediate\n\t * flush mode send the ops to the mock runtime factory for processing/sequencing, and so those\n\t * ops are no longer local, so not available for rollback.\n\t */\n\tpublic rollback?(): void {\n\t\tconst messagesToRollback = this.outbox.slice().reverse();\n\t\tthis.outbox.length = 0;\n\t\tmessagesToRollback.forEach((pm) => {\n\t\t\tthis.dataStoreRuntime.rollback?.(pm.content, pm.localOpMetadata);\n\t\t});\n\t}\n\n\tprivate generateIdAllocationOp(): IInternalMockRuntimeMessage | undefined {\n\t\tconst idRange = this.dataStoreRuntime.idCompressor?.takeNextCreationRange();\n\t\tif (idRange?.ids !== undefined) {\n\t\t\tconst allocationOp: IMockContainerRuntimeIdAllocationMessage = {\n\t\t\t\ttype: \"idAllocation\",\n\t\t\t\tcontents: idRange,\n\t\t\t};\n\t\t\treturn {\n\t\t\t\tcontent: allocationOp,\n\t\t\t\treferenceSequenceNumber: this.deltaManager.lastSequenceNumber,\n\t\t\t};\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tprivate submitInternal(message: IInternalMockRuntimeMessage, clientSequenceNumber: number) {\n\t\t// Here, we should instead push to the DeltaManager. And the DeltaManager will push things into the factory's messages\n\t\tthis.deltaManager.outbound.push([\n\t\t\t{\n\t\t\t\tclientSequenceNumber,\n\t\t\t\tcontents: message.content,\n\t\t\t\treferenceSequenceNumber:\n\t\t\t\t\tmessage.referenceSequenceNumber ?? this.deltaManager.lastSequenceNumber,\n\t\t\t\ttype: MessageType.Operation,\n\t\t\t},\n\t\t]);\n\t\tthis.addPendingMessage(message.content, message.localOpMetadata, clientSequenceNumber);\n\t}\n\n\tpublic process(message: ISequencedDocumentMessage) {\n\t\tthis.deltaManager.process(message);\n\t\tconst [local, localOpMetadata] = this.processInternal(message);\n\n\t\tif (this.isAllocationMessage(message.contents)) {\n\t\t\tthis.finalizeIdRange(message.contents.contents);\n\t\t} else {\n\t\t\tconst messagesContent: IRuntimeMessagesContent[] = [\n\t\t\t\t{\n\t\t\t\t\tcontents: message.contents,\n\t\t\t\t\tclientSequenceNumber: message.clientSequenceNumber,\n\t\t\t\t\tlocalOpMetadata,\n\t\t\t\t},\n\t\t\t];\n\t\t\tthis.dataStoreRuntime.processMessages({ envelope: message, local, messagesContent });\n\t\t}\n\t}\n\n\tprotected addPendingMessage(\n\t\tcontent: any,\n\t\tlocalOpMetadata: unknown,\n\t\tclientSequenceNumber: number,\n\t) {\n\t\tconst pendingMessage: IMockContainerRuntimePendingMessage = {\n\t\t\treferenceSequenceNumber: this.deltaManager.lastSequenceNumber,\n\t\t\tcontent,\n\t\t\tclientSequenceNumber,\n\t\t\tlocalOpMetadata,\n\t\t};\n\t\tthis.pendingMessages.push(pendingMessage);\n\t}\n\n\tprotected processInternal(message: ISequencedDocumentMessage): [boolean, unknown] {\n\t\tlet localOpMetadata: unknown;\n\t\tconst local = this.clientId === message.clientId;\n\t\tif (local) {\n\t\t\tconst pendingMessage = this.pendingMessages.shift();\n\t\t\tassert(\n\t\t\t\tpendingMessage?.clientSequenceNumber === message.clientSequenceNumber,\n\t\t\t\t\"Unexpected message\",\n\t\t\t);\n\t\t\tlocalOpMetadata = pendingMessage.localOpMetadata;\n\t\t}\n\t\treturn [local, localOpMetadata];\n\t}\n\n\tpublic async resolveHandle(handle: IFluidHandle) {\n\t\treturn this.dataStoreRuntime.resolveHandle({\n\t\t\turl: toFluidHandleInternal(handle).absolutePath,\n\t\t});\n\t}\n}\n\n/**\n * Factory to create MockContainerRuntime for testing basic submitting and processing of messages.\n * This also acts as a very basic server that stores the messages from all the MockContainerRuntimes and\n * processes them when asked.\n * If test specific logic is required, extend this class and add the logic there. For an example, take a look\n * at MockContainerRuntimeFactoryForReconnection.\n * @legacy @beta\n */\nexport class MockContainerRuntimeFactory {\n\tpublic sequenceNumber = 0;\n\tpublic minSeq = new Map<string, number>();\n\tpublic readonly quorum = new MockQuorumClients();\n\t/**\n\t * The MockContainerRuntimes we produce will push messages into this queue as they are submitted.\n\t * This is playing the role of the orderer, establishing a single universal order for the messages generated.\n\t * They are held in this queue until we explicitly choose to process them, at which time they are \"broadcast\" to\n\t * each of the runtimes.\n\t */\n\tprotected messages: ISequencedDocumentMessage[] = [];\n\tprotected readonly runtimes: Set<MockContainerRuntime> = new Set();\n\n\t/**\n\t * The container runtime options which will be provided to the all runtimes\n\t * created by this factory and also drive the way the ops are processed.\n\t *\n\t * See {@link IMockContainerRuntimeOptions}\n\t */\n\tprotected readonly runtimeOptions: Required<IMockContainerRuntimeOptions>;\n\n\tconstructor(\n\t\tmockContainerRuntimeOptions: IMockContainerRuntimeOptions = defaultMockContainerRuntimeOptions,\n\t) {\n\t\tthis.runtimeOptions = makeContainerRuntimeOptions(mockContainerRuntimeOptions);\n\t}\n\n\tpublic get outstandingMessageCount() {\n\t\treturn this.messages.length;\n\t}\n\n\t/**\n\t * @returns a minimum sequence number for all connected clients.\n\t */\n\tpublic getMinSeq(): number {\n\t\tlet minimumSequenceNumber: number | undefined;\n\t\tfor (const [client, clientSequenceNumber] of this.minSeq) {\n\t\t\t// We have to make sure, a client is part of the quorum, when\n\t\t\t// we compute the msn. We assume that the quorum accurately\n\t\t\t// represents the currently connected clients. In some tests\n\t\t\t// for reconnects, we will remove clients from the quorum\n\t\t\t// to indicate they are currently not connected. In that case,\n\t\t\t// they must no longer contribute to the msn computation.\n\t\t\tif (this.quorum.getMember(client) !== undefined) {\n\t\t\t\tminimumSequenceNumber =\n\t\t\t\t\tminimumSequenceNumber === undefined\n\t\t\t\t\t\t? clientSequenceNumber\n\t\t\t\t\t\t: Math.min(minimumSequenceNumber, clientSequenceNumber);\n\t\t\t}\n\t\t}\n\t\treturn minimumSequenceNumber ?? 0;\n\t}\n\n\tpublic createContainerRuntime(\n\t\tdataStoreRuntime: MockFluidDataStoreRuntime,\n\t): MockContainerRuntime {\n\t\tconst containerRuntime = new MockContainerRuntime(\n\t\t\tdataStoreRuntime,\n\t\t\tthis,\n\t\t\tthis.runtimeOptions,\n\t\t);\n\t\tthis.runtimes.add(containerRuntime);\n\t\treturn containerRuntime;\n\t}\n\n\tpublic removeContainerRuntime(containerRuntime: MockContainerRuntime) {\n\t\tthis.runtimes.delete(containerRuntime);\n\t}\n\n\tpublic pushMessage(msg: Partial<ISequencedDocumentMessage>) {\n\t\tdeepFreeze(msg);\n\t\tif (\n\t\t\tmsg.clientId &&\n\t\t\tmsg.referenceSequenceNumber !== undefined &&\n\t\t\t!this.minSeq.has(msg.clientId)\n\t\t) {\n\t\t\tthis.minSeq.set(msg.clientId, msg.referenceSequenceNumber);\n\t\t}\n\t\tthis.messages.push(msg as ISequencedDocumentMessage);\n\t}\n\n\tprotected lastProcessedMessage: ISequencedDocumentMessage | undefined;\n\tprotected getFirstMessageToProcess() {\n\t\tassert(this.messages.length > 0, \"The message queue should not be empty\");\n\n\t\t// Explicitly JSON clone the value to match the behavior of going thru the wire.\n\t\tconst message = JSON.parse(\n\t\t\tJSON.stringify(this.messages.shift()),\n\t\t) as ISequencedDocumentMessage;\n\n\t\t// TODO: Determine if this needs to be adapted for handling server-generated messages (which have null clientId and referenceSequenceNumber of -1).\n\t\tthis.minSeq.set(message.clientId as string, message.referenceSequenceNumber);\n\t\tif (\n\t\t\tthis.runtimeOptions.flushMode === FlushMode.Immediate ||\n\t\t\tthis.lastProcessedMessage?.clientId !== message.clientId\n\t\t) {\n\t\t\tthis.sequenceNumber++;\n\t\t}\n\t\tmessage.sequenceNumber = this.sequenceNumber;\n\t\tmessage.minimumSequenceNumber = this.getMinSeq();\n\t\tthis.lastProcessedMessage = message;\n\t\treturn message;\n\t}\n\n\tprivate processFirstMessage() {\n\t\tconst message = this.getFirstMessageToProcess();\n\t\tfor (const runtime of this.runtimes) {\n\t\t\truntime.process(message);\n\t\t}\n\t}\n\n\t/**\n\t * Process one of the queued messages. Throws if no messages are queued.\n\t */\n\tpublic processOneMessage() {\n\t\tif (this.messages.length === 0) {\n\t\t\tthrow new Error(\"Tried to process a message that did not exist\");\n\t\t}\n\t\tthis.lastProcessedMessage = undefined;\n\n\t\tthis.processFirstMessage();\n\t}\n\n\t/**\n\t * Process a given number of queued messages. Throws if there are fewer messages queued than requested.\n\t * @param count - the number of messages to process\n\t */\n\tpublic processSomeMessages(count: number) {\n\t\tif (count > this.messages.length) {\n\t\t\tthrow new Error(\"Tried to process more messages than exist\");\n\t\t}\n\n\t\tthis.lastProcessedMessage = undefined;\n\n\t\tfor (let i = 0; i < count; i++) {\n\t\t\tthis.processFirstMessage();\n\t\t}\n\t}\n\n\t/**\n\t * Process all remaining messages in the queue.\n\t */\n\tpublic processAllMessages() {\n\t\tthis.lastProcessedMessage = undefined;\n\t\twhile (this.messages.length > 0) {\n\t\t\tthis.processFirstMessage();\n\t\t}\n\t}\n}\n\n/**\n * @legacy @beta\n */\nexport class MockQuorumClients implements IQuorumClients, EventEmitter {\n\tprivate readonly members: Map<string, ISequencedClient>;\n\tprivate readonly eventEmitter = new EventEmitter();\n\n\tconstructor(...members: [string, Partial<ISequencedClient>][]) {\n\t\tthis.members = new Map((members as [string, ISequencedClient][]) ?? []);\n\t}\n\n\taddMember(id: string, client: Partial<ISequencedClient>) {\n\t\tthis.members.set(id, client as ISequencedClient);\n\t\tthis.eventEmitter.emit(\"addMember\", id, client);\n\t}\n\n\tremoveMember(id: string) {\n\t\tif (this.members.delete(id)) {\n\t\t\tthis.eventEmitter.emit(\"removeMember\", id);\n\t\t}\n\t}\n\n\tgetMembers(): Map<string, ISequencedClient> {\n\t\t// Implementation always generates a new Map.\n\t\t// Mock should as well in case any callers rely on being able to modify\n\t\t// the returned Map.\n\t\treturn new Map(this.members);\n\t}\n\tgetMember(clientId: string): ISequencedClient | undefined {\n\t\treturn this.getMembers().get(clientId);\n\t}\n\tdisposed: boolean = false;\n\n\tdispose(): void {\n\t\tthrow new Error(\"Method not implemented.\");\n\t}\n\n\taddListener(event: string | number, listener: (...args: any[]) => void): this {\n\t\tthrow new Error(\"Method not implemented.\");\n\t}\n\ton(event: string | number, listener: (...args: any[]) => void): this {\n\t\tswitch (event) {\n\t\t\tcase \"afterOn\":\n\t\t\t\tthis.eventEmitter.on(event, listener);\n\t\t\t\treturn this;\n\n\t\t\tcase \"addMember\":\n\t\t\tcase \"removeMember\":\n\t\t\t\tthis.eventEmitter.on(event, listener);\n\t\t\t\tthis.eventEmitter.emit(\"afterOn\", event);\n\t\t\t\treturn this;\n\t\t\tdefault:\n\t\t\t\tthrow new Error(\"Method not implemented.\");\n\t\t}\n\t}\n\tonce(event: string | number, listener: (...args: any[]) => void): this {\n\t\tthrow new Error(\"Method not implemented.\");\n\t}\n\tprependListener(event: string | number, listener: (...args: any[]) => void): this {\n\t\tthrow new Error(\"Method not implemented.\");\n\t}\n\tprependOnceListener(event: string | number, listener: (...args: any[]) => void): this {\n\t\tthrow new Error(\"Method not implemented.\");\n\t}\n\tremoveListener(event: string | number, listener: (...args: any[]) => void): this {\n\t\tthis.eventEmitter.removeListener(event, listener);\n\t\treturn this;\n\t}\n\toff(event: string | number, listener: (...args: any[]) => void): this {\n\t\tthis.eventEmitter.off(event, listener);\n\t\treturn this;\n\t}\n\tremoveAllListeners(event?: string | number | undefined): this {\n\t\tthrow new Error(\"Method not implemented.\");\n\t}\n\tsetMaxListeners(n: number): this {\n\t\tthrow new Error(\"Method not implemented.\");\n\t}\n\tgetMaxListeners(): number {\n\t\tthrow new Error(\"Method not implemented.\");\n\t}\n\tlisteners(event: string | number): ReturnType<EventEmitter[\"listeners\"]> {\n\t\tthrow new Error(\"Method not implemented.\");\n\t}\n\trawListeners(event: string | number): ReturnType<EventEmitter[\"rawListeners\"]> {\n\t\tthrow new Error(\"Method not implemented.\");\n\t}\n\temit(event: string | number, ...args: any[]): boolean {\n\t\tthrow new Error(\"Method not implemented.\");\n\t}\n\teventNames(): (string | number)[] {\n\t\tthrow new Error(\"Method not implemented.\");\n\t}\n\tlistenerCount(type: string | number): number {\n\t\tthrow new Error(\"Method not implemented.\");\n\t}\n}\n\n/**\n * @legacy @beta\n */\nexport class MockAudience\n\textends TypedEventEmitter<IAudienceEvents>\n\timplements IAudienceOwner\n{\n\tprivate readonly audienceMembers: Map<string, IClient>;\n\tprivate _currentClientId: string | undefined;\n\n\tpublic constructor() {\n\t\tsuper();\n\t\tthis.audienceMembers = new Map<string, IClient>();\n\t}\n\n\tpublic addMember(clientId: string, member: IClient): void {\n\t\tthis.audienceMembers.set(clientId, member);\n\t\tthis.emit(\"addMember\", clientId, member);\n\t}\n\n\tpublic removeMember(clientId: string): boolean {\n\t\tconst member = this.audienceMembers.get(clientId);\n\t\tconst deleteResult = this.audienceMembers.delete(clientId);\n\t\tthis.emit(\"removeMember\", clientId, member);\n\t\treturn deleteResult;\n\t}\n\n\tpublic getMembers(): Map<string, IClient> {\n\t\treturn new Map<string, IClient>(this.audienceMembers.entries());\n\t}\n\tpublic getMember(clientId: string): IClient | undefined {\n\t\treturn this.audienceMembers.get(clientId);\n\t}\n\n\tpublic getSelf(): ISelf | undefined {\n\t\treturn this._currentClientId === undefined\n\t\t\t? undefined\n\t\t\t: {\n\t\t\t\t\tclientId: this._currentClientId,\n\t\t\t\t};\n\t}\n\n\tpublic setCurrentClientId(clientId: string): void {\n\t\tif (this._currentClientId !== clientId) {\n\t\t\tconst oldId = this._currentClientId;\n\t\t\tthis._currentClientId = clientId;\n\t\t\tthis.emit(\n\t\t\t\t\"selfChanged\",\n\t\t\t\toldId === undefined ? undefined : ({ clientId: oldId } satisfies ISelf),\n\t\t\t\t{ clientId } satisfies ISelf,\n\t\t\t);\n\t\t}\n\t}\n}\n\nconst attachStatesToComparableNumbers = {\n\t[AttachState.Detached]: 0,\n\t[AttachState.Attaching]: 1,\n\t[AttachState.Attached]: 2,\n} as const;\n\n/**\n * Mock implementation of IRuntime for testing that does nothing\n * @legacy @beta\n */\nexport class MockFluidDataStoreRuntime\n\textends EventEmitter\n\timplements IFluidDataStoreRuntime, IFluidDataStoreChannel, IFluidHandleContext\n{\n\tconstructor(overrides?: {\n\t\tclientId?: string;\n\t\tentryPoint?: IFluidHandle<FluidObject>;\n\t\tid?: string;\n\t\tlogger?: ITelemetryBaseLogger;\n\t\tidCompressor?: IIdCompressor & IIdCompressorCore;\n\t\tattachState?: AttachState;\n\t\tregistry?: readonly IChannelFactory[];\n\t\tminVersionForCollab?: MinimumVersionForCollab;\n\t}) {\n\t\tsuper();\n\t\tthis.clientId = overrides?.clientId ?? uuid();\n\t\tthis.entryPoint = toFluidHandleInternal(\n\t\t\toverrides?.entryPoint ?? new MockHandle(null as unknown as FluidObject, \"\", \"\"),\n\t\t);\n\t\tthis.id = overrides?.id ?? uuid();\n\t\tconst childLoggerProps: Parameters<typeof createChildLogger>[0] = {\n\t\t\tnamespace: \"fluid:MockFluidDataStoreRuntime\",\n\t\t};\n\t\tconst logger = overrides?.logger;\n\t\tif (logger !== undefined) {\n\t\t\tchildLoggerProps.logger = logger;\n\t\t}\n\t\tthis.logger = createChildLogger(childLoggerProps);\n\t\tthis.idCompressor = overrides?.idCompressor;\n\t\tthis._attachState = overrides?.attachState ?? AttachState.Attached;\n\n\t\tconst registry = overrides?.registry;\n\t\tif (registry) {\n\t\t\tthis.registry = new Map(registry.map((factory) => [factory.type, factory]));\n\t\t}\n\n\t\tthis.minVersionForCollab = overrides?.minVersionForCollab;\n\t}\n\n\tprivate readonly: boolean = false;\n\tpublic readonly isReadOnly = () => this.readonly;\n\n\tpublic readonly entryPoint: IFluidHandleInternal<FluidObject>;\n\n\t/**\n\t * @see IFluidDataStoreRuntimeInternalConfig.minVersionForCollab\n\t */\n\tpublic readonly minVersionForCollab: MinimumVersionForCollab | undefined;\n\n\tpublic get IFluidHandleContext(): IFluidHandleContext {\n\t\treturn this;\n\t}\n\tpublic get rootRoutingContext(): IFluidHandleContext {\n\t\treturn this;\n\t}\n\tpublic get channelsRoutingContext(): IFluidHandleContext {\n\t\treturn this;\n\t}\n\tpublic get objectsRoutingContext(): IFluidHandleContext {\n\t\treturn this;\n\t}\n\n\tpublic readonly documentId: string = undefined as any;\n\tpublic readonly id: string;\n\tpublic readonly existing: boolean = undefined as any;\n\tpublic options: Record<string | number, any> = {};\n\tpublic clientId: string;\n\tpublic readonly path = \"\";\n\tpublic readonly connected = true;\n\tpublic deltaManagerInternal = new MockDeltaManager();\n\tpublic get deltaManager(): IDeltaManagerErased {\n\t\treturn toDeltaManagerErased(this.deltaManagerInternal);\n\t}\n\tpublic readonly loader: ILoader = undefined as any;\n\tpublic readonly logger: ITelemetryBaseLogger;\n\tpublic quorum = new MockQuorumClients();\n\tprivate readonly audience = new MockAudience();\n\tpublic containerRuntime?: MockContainerRuntime;\n\tpublic idCompressor: (IIdCompressor & IIdCompressorCore) | undefined;\n\tprivate readonly deltaConnections: MockDeltaConnection[] = [];\n\tprivate readonly registry?: ReadonlyMap<string, IChannelFactory>;\n\n\tpublic createDeltaConnection(): MockDeltaConnection {\n\t\tconst deltaConnection = new MockDeltaConnection(\n\t\t\t(messageContent: any, localOpMetadata: unknown) =>\n\t\t\t\tthis.submitMessageInternal(messageContent, localOpMetadata),\n\t\t\t() => this.setChannelDirty(),\n\t\t);\n\t\tthis.deltaConnections.push(deltaConnection);\n\t\treturn deltaConnection;\n\t}\n\n\tpublic get absolutePath() {\n\t\treturn `/${this.id}`;\n\t}\n\n\t/**\n\t * @deprecated Use `attachState` instead\n\t *\n\t * @privateRemarks Also remove the setter when this is removed. setters don't get their own doc tags.\n\t */\n\tpublic get local(): boolean {\n\t\treturn !this.isAttached;\n\t}\n\tpublic set local(local: boolean) {\n\t\t// this does not validate attach state orders, or fire events to maintain\n\t\t// the existing behavior. due to this, this method is deprecated and will\n\t\t// be removed\n\t\tthis._attachState = local ? AttachState.Detached : AttachState.Attached;\n\t}\n\n\tprivate _disposed = false;\n\n\tpublic get disposed() {\n\t\treturn this._disposed;\n\t}\n\n\tpublic dispose(): void {\n\t\tthis._disposed = true;\n\t}\n\n\tpublic async getChannel(id: string): Promise<IChannel> {\n\t\treturn null as any as IChannel;\n\t}\n\tpublic createChannel(id: string | undefined, type: string): IChannel {\n\t\tif (this.registry === undefined) {\n\t\t\t// This preserves the behavior of this mock from before registry support was added.\n\t\t\treturn null as any as IChannel;\n\t\t}\n\n\t\tconst factory = this.registry.get(type);\n\t\tassert(factory !== undefined, \"type missing from registry\");\n\t\treturn factory.create(this, id ?? uuid());\n\t}\n\n\t/**\n\t * @remarks This is for internal use only.\n\t */\n\tpublic ILayerCompatDetails?: unknown;\n\n\tpublic addChannel(channel: IChannel): void {}\n\n\tpublic get isAttached(): boolean {\n\t\treturn this.attachState !== AttachState.Detached;\n\t}\n\n\tprivate _attachState: AttachState;\n\tpublic get attachState(): AttachState {\n\t\treturn this._attachState;\n\t}\n\n\tpublic get visibilityState(): VisibilityState {\n\t\treturn this.isAttached ? VisibilityState.GloballyVisible : VisibilityState.NotVisible;\n\t}\n\n\tpublic bindChannel(channel: IChannel): void {\n\t\treturn;\n\t}\n\n\tpublic attachGraph(): void {\n\t\treturn;\n\t}\n\n\tpublic makeVisibleAndAttachGraph(): void {\n\t\treturn;\n\t}\n\n\tpublic bind(handle: IFluidHandle): void {\n\t\treturn;\n\t}\n\n\tpublic getQuorum(): IQuorumClients {\n\t\treturn this.quorum;\n\t}\n\n\tpublic getAudience(): IAudience {\n\t\treturn this.audience;\n\t}\n\n\tpublic save(message: string) {\n\t\treturn;\n\t}\n\n\tpublic async close(): Promise<void> {\n\t\treturn;\n\t}\n\n\tpublic async uploadBlob(blob: ArrayBufferLike): Promise<IFluidHandle<ArrayBufferLike>> {\n\t\treturn null as any as IFluidHandle<ArrayBufferLike>;\n\t}\n\n\tpublic async getBlob(blobId: string): Promise<any> {\n\t\treturn null;\n\t}\n\n\tprivate submitMessageInternal(messageContent: any, localOpMetadata: unknown): number {\n\t\tassert(\n\t\t\tthis.containerRuntime !== undefined,\n\t\t\t\"The container runtime has not been initialized\",\n\t\t);\n\t\treturn this.containerRuntime.submit(messageContent, localOpMetadata);\n\t}\n\n\tprivate setChannelDirty(): void {\n\t\tassert(\n\t\t\tthis.containerRuntime !== undefined,\n\t\t\t\"The container runtime has not been initialized\",\n\t\t);\n\t\treturn this.containerRuntime.dirty();\n\t}\n\n\tpublic submitSignal(type: string, content: any) {\n\t\treturn null;\n\t}\n\n\tpublic processMessages(messageCollection: IRuntimeMessageCollection) {\n\t\tif (this.disposed) {\n\t\t\treturn;\n\t\t}\n\t\tthis.deltaConnections.forEach((dc) => {\n\t\t\tdc.processMessages(messageCollection);\n\t\t});\n\t}\n\n\tpublic processSignal(message: any, local: boolean) {\n\t\treturn;\n\t}\n\n\tpublic updateMinSequenceNumber(value: number): void {\n\t\treturn;\n\t}\n\n\tpublic setConnectionState(connected: boolean, clientId?: string) {\n\t\tif (connected && clientId !== undefined) {\n\t\t\tthis.clientId = clientId;\n\t\t}\n\t\tthis.deltaConnections.forEach((dc) => dc.setConnectionState(connected));\n\t\treturn;\n\t}\n\n\tpublic notifyReadOnlyState(readonly: boolean): void {\n\t\tthis.readonly = readonly;\n\t}\n\n\tpublic async resolveHandle(request: IRequest): Promise<IResponse> {\n\t\tif (request.url !== undefined) {\n\t\t\treturn {\n\t\t\t\tstatus: 200,\n\t\t\t\tmimeType: \"fluid/object\",\n\t\t\t\tvalue: request.url,\n\t\t\t};\n\t\t}\n\t\treturn this.request(request);\n\t}\n\n\tpublic async request(request: IRequest): Promise<IResponse> {\n\t\treturn null as any as IResponse;\n\t}\n\n\tpublic async summarize(\n\t\tfullTree?: boolean,\n\t\ttrackState?: boolean,\n\t): Promise<ISummaryTreeWithStats> {\n\t\tconst stats = mergeStats();\n\t\tstats.treeNodeCount++;\n\t\treturn {\n\t\t\tsummary: {\n\t\t\t\ttype: SummaryType.Tree,\n\t\t\t\ttree: {},\n\t\t\t},\n\t\t\tstats,\n\t\t};\n\t}\n\n\tpublic async getGCData(): Promise<IGarbageCollectionData> {\n\t\treturn {\n\t\t\tgcNodes: {},\n\t\t};\n\t}\n\n\tpublic updateUsedRoutes(usedRoutes: string[]) {}\n\n\tpublic getAttachSnapshot(): ITreeEntry[] {\n\t\treturn [];\n\t}\n\n\tpublic getAttachSummary(): ISummaryTreeWithStats {\n\t\tconst stats = mergeStats();\n\t\tstats.treeNodeCount++;\n\t\treturn {\n\t\t\tsummary: {\n\t\t\t\ttype: SummaryType.Tree,\n\t\t\t\ttree: {},\n\t\t\t},\n\t\t\tstats,\n\t\t};\n\t}\n\n\tpublic getAttachGCData(\n\t\ttelemetryContext?: ITelemetryContext | undefined,\n\t): IGarbageCollectionData {\n\t\treturn {\n\t\t\tgcNodes: {},\n\t\t};\n\t}\n\n\tpublic setAttachState(attachState: AttachState.Attaching | AttachState.Attached): void {\n\t\tif (attachState === this._attachState) {\n\t\t\treturn;\n\t\t}\n\t\tconst proposedState = attachStatesToComparableNumbers[attachState];\n\t\tconst startingState = attachStatesToComparableNumbers[this._attachState];\n\t\tif (proposedState < startingState) {\n\t\t\tthrow new Error(`cannot transition back to ${attachState} from ${this.attachState}`);\n\t\t}\n\n\t\tif (\n\t\t\tstartingState < attachStatesToComparableNumbers[AttachState.Attaching] &&\n\t\t\tproposedState >= attachStatesToComparableNumbers[AttachState.Attaching]\n\t\t) {\n\t\t\tthis._attachState = AttachState.Attaching;\n\t\t\tthis.emit(\"attaching\");\n\t\t}\n\n\t\tif (\n\t\t\tstartingState < attachStatesToComparableNumbers[AttachState.Attached] &&\n\t\t\tproposedState >= attachStatesToComparableNumbers[AttachState.Attached]\n\t\t) {\n\t\t\tthis._attachState = AttachState.Attached;\n\t\t\tthis.emit(\"attached\");\n\t\t}\n\t}\n\n\tpublic async waitAttached(): Promise<void> {\n\t\treturn;\n\t}\n\n\tpublic async requestDataStore(request: IRequest): Promise<IResponse> {\n\t\treturn null as any as IResponse;\n\t}\n\n\tpublic reSubmit(content: any, localOpMetadata: unknown, squash?: boolean) {\n\t\tthis.deltaConnections.forEach((dc) => {\n\t\t\tdc.reSubmit(content, localOpMetadata, squash);\n\t\t});\n\t}\n\n\tpublic async applyStashedOp(content: any) {\n\t\treturn this.deltaConnections.map((dc) => dc.applyStashedOp(content))[0];\n\t}\n\n\tpublic rollback?(message: any, localOpMetadata: unknown): void {\n\t\tthis.deltaConnections.forEach((dc) => {\n\t\t\tdc.rollback?.(message, localOpMetadata);\n\t\t});\n\t}\n}\n\n/**\n * Mock implementation of IDeltaConnection\n * @internal\n */\nexport class MockEmptyDeltaConnection implements IDeltaConnection {\n\tpublic connected = false;\n\n\tpublic attach(handler) {}\n\n\tpublic submit(messageContent: any): number {\n\t\tassert(false, \"Throw submit error on mock empty delta connection\");\n\t}\n\n\tpublic dirty(): void {}\n}\n\n/**\n * Mock implementation of IChannelStorageService\n * @legacy @beta\n */\nexport class MockObjectStorageService implements IChannelStorageService {\n\tprivate readonly snapshotTree: ISnapshotTree;\n\n\t/**\n\t * @param contents - Key value pairs that represent a snapshot.\n\t * The keys are the path to the contents of a blob in the snapshot tree. The corresponding values are its contents.\n\t *\n\t * @remarks\n\t * The snapshot contents must not change after it has been passed here as the changes will not be reflected\n\t * in the snapshot tree retrieved via `getSnapshotTree`.\n\t */\n\tpublic constructor(private readonly contents: { [key: string]: string }) {\n\t\tthis.snapshotTree = createSnapshotTreeFromContents(contents);\n\t}\n\n\tpublic async readBlob(path: string): Promise<ArrayBufferLike> {\n\t\treturn stringToBuffer(this.contents[path], \"utf8\");\n\t}\n\tpublic async contains(path: string): Promise<boolean> {\n\t\treturn this.contents[path] !== undefined;\n\t}\n\tpublic async list(path: string): Promise<string[]> {\n\t\tconst pathPartsLength = getNormalizedObjectStoragePathParts(path).length;\n\t\treturn Object.keys(this.contents).filter(\n\t\t\t(key) => key.startsWith(path) && key.split(\"/\").length === pathPartsLength + 1,\n\t\t);\n\t}\n\n\tpublic getSnapshotTree(): ISnapshotTree {\n\t\treturn this.snapshotTree;\n\t}\n}\n\n/**\n * Mock implementation of IChannelServices\n * @legacy @beta\n */\nexport class MockSharedObjectServices implements IChannelServices {\n\tpublic static createFromSummary(summaryTree: ISummaryTree) {\n\t\tconst contents: { [key: string]: string } = {};\n\t\tsetContentsFromSummaryTree(summaryTree, \"\", contents);\n\t\treturn new MockSharedObjectServices(contents);\n\t}\n\n\tpublic deltaConnection: IDeltaConnection = new MockEmptyDeltaConnection();\n\tpublic objectStorage: MockObjectStorageService;\n\n\tpublic constructor(contents: { [key: string]: string }) {\n\t\tthis.objectStorage = new MockObjectStorageService(contents);\n\t}\n}\n\n/**\n * Populate the given `contents` object with all paths/values in a summary tree\n */\nfunction setContentsFromSummaryTree(\n\t{ tree }: ISummaryTree,\n\tpath: string,\n\tcontents: { [key: string]: string },\n): void {\n\tfor (const [key, value] of Object.entries(tree)) {\n\t\tswitch (value.type) {\n\t\t\tcase SummaryType.Blob:\n\t\t\t\tassert(\n\t\t\t\t\ttypeof value.content === \"string\",\n\t\t\t\t\t\"Unexpected blob value on mock createFromSummary\",\n\t\t\t\t);\n\t\t\t\tcontents[`${path}${key}`] = value.content;\n\t\t\t\tbreak;\n\t\t\tcase SummaryType.Tree:\n\t\t\t\tsetContentsFromSummaryTree(value, `${path}${key}/`, contents);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tassert(false, \"Unexpected summary type on mock createFromSummary\");\n\t\t}\n\t}\n}\n\n/**\n * Create an ISnapshotTree from contents object (reverse of setContentsFromSummaryTree)\n * @param contents - Object with path/value pairs\n * @returns ISnapshotTree representing the hierarchical structure\n */\nexport function createSnapshotTreeFromContents(contents: {\n\t[key: string]: string;\n}): ISnapshotTree {\n\tconst tree: ISnapshotTree = {\n\t\ttrees: {},\n\t\tblobs: {},\n\t};\n\n\tfor (const [path, content] of Object.entries(contents)) {\n\t\t// Remove empty strings to handle leading, trailing, or consecutive slashes in the path.\n\t\tconst pathParts = path.split(\"/\").filter((part) => part !== \"\");\n\t\tlet currentTree = tree;\n\n\t\t// Navigate/create the tree structure for all but the last part\n\t\tfor (let i = 0; i < pathParts.length - 1; i++) {\n\t\t\tconst part = pathParts[i];\n\t\t\tif (!currentTree.trees[part]) {\n\t\t\t\tcurrentTree.trees[part] = {\n\t\t\t\t\ttrees: {},\n\t\t\t\t\tblobs: {},\n\t\t\t\t};\n\t\t\t}\n\t\t\tcurrentTree = currentTree.trees[part];\n\t\t}\n\n\t\t// Add the blob at the final location\n\t\tconst blobName = pathParts[pathParts.length - 1];\n\t\tif (blobName !== undefined) {\n\t\t\tcurrentTree.blobs[blobName] = content;\n\t\t}\n\t}\n\n\treturn tree;\n}\n"]}
1
+ {"version":3,"file":"mocks.js","sourceRoot":"","sources":["../src/mocks.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { EventEmitter, TypedEventEmitter, stringToBuffer } from \"@fluid-internal/client-utils\";\nimport {\n\tAttachState,\n\tIAudience,\n\tIAudienceEvents,\n\tISelf,\n} from \"@fluidframework/container-definitions\";\nimport { ILoader, IAudienceOwner } from \"@fluidframework/container-definitions/internal\";\nimport type { IContainerRuntimeEvents } from \"@fluidframework/container-runtime-definitions/internal\";\nimport {\n\tFluidObject,\n\tIFluidHandle,\n\tIRequest,\n\tIResponse,\n\ttype ITelemetryBaseLogger,\n} from \"@fluidframework/core-interfaces\";\nimport {\n\tIFluidHandleContext,\n\ttype IFluidHandleInternal,\n} from \"@fluidframework/core-interfaces/internal\";\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport {\n\tIChannelServices,\n\tIChannelStorageService,\n\tIDeltaConnection,\n\tIDeltaHandler,\n\tIChannel,\n\tIFluidDataStoreRuntime,\n\tIChannelFactory,\n\ttype IDeltaManagerErased,\n} from \"@fluidframework/datastore-definitions/internal\";\nimport type { IClient } from \"@fluidframework/driver-definitions\";\nimport {\n\tIQuorumClients,\n\tISequencedClient,\n\tISummaryTree,\n\tSummaryType,\n} from \"@fluidframework/driver-definitions\";\nimport {\n\tITreeEntry,\n\tMessageType,\n\tISequencedDocumentMessage,\n\ttype ISnapshotTree,\n} from \"@fluidframework/driver-definitions/internal\";\nimport type { IIdCompressor } from \"@fluidframework/id-compressor\";\nimport type {\n\tIIdCompressorCore,\n\tIdCreationRange,\n} from \"@fluidframework/id-compressor/internal\";\nimport {\n\tISummaryTreeWithStats,\n\tIGarbageCollectionData,\n\tFlushMode,\n\tIFluidDataStoreChannel,\n\tVisibilityState,\n\ttype ITelemetryContext,\n\ttype IRuntimeMessageCollection,\n\ttype IRuntimeMessagesContent,\n\ttype MinimumVersionForCollab,\n} from \"@fluidframework/runtime-definitions/internal\";\nimport {\n\tgetNormalizedObjectStoragePathParts,\n\tmergeStats,\n\ttoDeltaManagerErased,\n\ttoFluidHandleInternal,\n} from \"@fluidframework/runtime-utils/internal\";\nimport { createChildLogger } from \"@fluidframework/telemetry-utils/internal\";\nimport { v4 as uuid } from \"uuid\";\n\nimport { deepFreeze } from \"./deepFreeze.js\";\nimport { MockDeltaManager } from \"./mockDeltas.js\";\nimport { MockHandle } from \"./mockHandle.js\";\n\n/**\n * Mock implementation of IDeltaConnection for testing\n * @legacy @beta\n */\nexport class MockDeltaConnection implements IDeltaConnection {\n\tpublic get connected(): boolean {\n\t\treturn this._connected;\n\t}\n\n\tprivate _connected = true;\n\tpublic handler: IDeltaHandler | undefined;\n\n\tconstructor(\n\t\tprivate readonly submitFn: (messageContent: any, localOpMetadata: unknown) => number,\n\t\tprivate readonly dirtyFn: () => void,\n\t) {}\n\n\tpublic attach(handler: IDeltaHandler): void {\n\t\tthis.handler = handler;\n\t\thandler.setConnectionState(this.connected);\n\t}\n\n\tpublic submit(messageContent: any, localOpMetadata: unknown): number {\n\t\treturn this.submitFn(messageContent, localOpMetadata);\n\t}\n\n\tpublic dirty(): void {\n\t\tthis.dirtyFn();\n\t}\n\n\tpublic setConnectionState(connected: boolean) {\n\t\tthis._connected = connected;\n\t\tthis.handler?.setConnectionState(connected);\n\t}\n\n\tpublic processMessages(messageCollection: IRuntimeMessageCollection) {\n\t\tthis.handler?.processMessages?.(messageCollection);\n\t}\n\n\tpublic reSubmit(content: any, localOpMetadata: unknown, squash?: boolean) {\n\t\tthis.handler?.reSubmit(content, localOpMetadata, squash);\n\t}\n\n\tpublic applyStashedOp(content: any): unknown {\n\t\treturn this.handler?.applyStashedOp(content);\n\t}\n\n\tpublic rollback?(message: any, localOpMetadata: unknown): void {\n\t\tthis.handler?.rollback?.(message, localOpMetadata);\n\t}\n}\n\n// Represents the structure of a pending message stored by the MockContainerRuntime.\n/**\n * @legacy @beta\n */\nexport interface IMockContainerRuntimePendingMessage {\n\tcontent: any;\n\treferenceSequenceNumber: number;\n\tclientSequenceNumber: number;\n\tlocalOpMetadata: unknown;\n}\n\nexport interface IMockContainerRuntimeIdAllocationMessage {\n\ttype: \"idAllocation\";\n\tcontents: IdCreationRange;\n}\n\n/**\n * Options for the container runtime mock.\n * @legacy @beta\n */\nexport interface IMockContainerRuntimeOptions {\n\t/**\n\t * Configures the flush mode for the runtime. In Immediate flush mode the runtime will immediately\n\t * send all operations to the driver layer, while in TurnBased the operations will be buffered\n\t * and then sent them as a single batch when `flush()` is called on the runtime.\n\t *\n\t * By default, flush mode is Immediate.\n\t */\n\treadonly flushMode?: FlushMode;\n\t/**\n\t * If configured, it will simulate group batching by forcing all ops within a batch to have\n\t * the same sequence number.\n\t *\n\t * By default, the value is `false`\n\t */\n\treadonly enableGroupedBatching?: boolean;\n}\n\nconst defaultMockContainerRuntimeOptions: Required<IMockContainerRuntimeOptions> = {\n\tflushMode: FlushMode.Immediate,\n\tenableGroupedBatching: false,\n};\n\nconst makeContainerRuntimeOptions = (\n\tmockContainerRuntimeOptions: IMockContainerRuntimeOptions,\n): Required<IMockContainerRuntimeOptions> => ({\n\t...defaultMockContainerRuntimeOptions,\n\t...mockContainerRuntimeOptions,\n});\n\n/**\n * @legacy @beta\n */\nexport interface IInternalMockRuntimeMessage {\n\tcontent: any;\n\tlocalOpMetadata?: unknown;\n\treferenceSequenceNumber?: number;\n}\n\n/**\n * Mock implementation of IContainerRuntime for testing basic submitting and processing of messages.\n * If test specific logic is required, extend this class and add the logic there. For an example, take a look\n * at MockContainerRuntimeForReconnection.\n * @legacy @beta\n */\nexport class MockContainerRuntime extends TypedEventEmitter<IContainerRuntimeEvents> {\n\tpublic clientId: string;\n\tpublic readonly deltaManager: MockDeltaManager;\n\t/**\n\t * @deprecated use the associated datastore to create the delta connection\n\t */\n\tprotected readonly deltaConnections: MockDeltaConnection[] = [];\n\tprotected readonly pendingMessages: IMockContainerRuntimePendingMessage[] = [];\n\tprotected readonly outbox: IInternalMockRuntimeMessage[] = [];\n\tprivate readonly idAllocationOutbox: IInternalMockRuntimeMessage[] = [];\n\t/**\n\t * The runtime options this instance is using. See {@link IMockContainerRuntimeOptions}.\n\t */\n\tprotected readonly runtimeOptions: Required<IMockContainerRuntimeOptions>;\n\n\tconstructor(\n\t\tprotected readonly dataStoreRuntime: MockFluidDataStoreRuntime,\n\t\tprotected readonly factory: MockContainerRuntimeFactory,\n\t\tmockContainerRuntimeOptions: IMockContainerRuntimeOptions = defaultMockContainerRuntimeOptions,\n\t\tprotected readonly overrides?: { minimumSequenceNumber?: number | undefined },\n\t) {\n\t\tsuper();\n\t\tthis.deltaManager = new MockDeltaManager(() => this.clientId);\n\t\tthis.deltaManager.inbound.on(\"push\", (message: ISequencedDocumentMessage) => {\n\t\t\tthis.factory.pushMessage(message);\n\t\t});\n\n\t\tconst msn = overrides?.minimumSequenceNumber;\n\t\tif (msn !== undefined) {\n\t\t\tthis.deltaManager.lastSequenceNumber = msn;\n\t\t\tthis.deltaManager.minimumSequenceNumber = msn;\n\t\t}\n\t\t// Set FluidDataStoreRuntime's deltaManager to ours so that they are in sync.\n\t\tthis.dataStoreRuntime.deltaManagerInternal = this.deltaManager;\n\t\tthis.dataStoreRuntime.quorum = factory.quorum;\n\t\tthis.dataStoreRuntime.containerRuntime = this;\n\t\t// FluidDataStoreRuntime already creates a clientId, reuse that so they are in sync.\n\t\tthis.clientId = this.dataStoreRuntime.clientId ?? uuid();\n\t\tfactory.quorum.addMember(this.clientId, {});\n\t\tthis.runtimeOptions = makeContainerRuntimeOptions(mockContainerRuntimeOptions);\n\t\tassert(\n\t\t\tthis.runtimeOptions.flushMode !== FlushMode.Immediate ||\n\t\t\t\t!this.runtimeOptions.enableGroupedBatching,\n\t\t\t\"Grouped batching is not compatible with FlushMode.Immediate\",\n\t\t);\n\t}\n\n\t/**\n\t * @deprecated use the associated datastore to create the delta connection\n\t */\n\tpublic createDeltaConnection(): MockDeltaConnection {\n\t\tconst deltaConnection = this.dataStoreRuntime.createDeltaConnection();\n\t\tthis.deltaConnections.push(deltaConnection);\n\t\treturn deltaConnection;\n\t}\n\n\tpublic finalizeIdRange(range: IdCreationRange) {\n\t\tassert(\n\t\t\tthis.dataStoreRuntime.idCompressor !== undefined,\n\t\t\t\"Shouldn't try to finalize IdRanges without an IdCompressor\",\n\t\t);\n\t\tthis.dataStoreRuntime.idCompressor.finalizeCreationRange(range);\n\t}\n\n\t// This enables manual control over flush mode, allowing operations like rollback to be executed in a controlled environment.\n\t#manualFlushCalls: number = 0;\n\n\tpublic async runWithManualFlush(act: () => void | Promise<void>) {\n\t\tthis.#manualFlushCalls++;\n\t\ttry {\n\t\t\tawait act();\n\t\t} finally {\n\t\t\tthis.#manualFlushCalls--;\n\t\t}\n\t}\n\n\tpublic submit(messageContent: any, localOpMetadata?: unknown): number {\n\t\tconst clientSequenceNumber = ++this.deltaManager.clientSequenceNumber;\n\t\tconst message: IInternalMockRuntimeMessage = {\n\t\t\tcontent: messageContent,\n\t\t\tlocalOpMetadata,\n\t\t\treferenceSequenceNumber: this.deltaManager.lastSequenceNumber,\n\t\t};\n\n\t\tconst isAllocationMessage = this.isAllocationMessage(message.content);\n\n\t\tconst currentFlushMode =\n\t\t\tthis.#manualFlushCalls > 0 ? FlushMode.TurnBased : this.runtimeOptions.flushMode;\n\n\t\tswitch (currentFlushMode) {\n\t\t\tcase FlushMode.Immediate: {\n\t\t\t\tif (!isAllocationMessage) {\n\t\t\t\t\tconst idAllocationOp = this.generateIdAllocationOp();\n\t\t\t\t\tif (idAllocationOp !== undefined) {\n\t\t\t\t\t\tthis.submitInternal(idAllocationOp, clientSequenceNumber);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.submitInternal(message, clientSequenceNumber);\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase FlushMode.TurnBased: {\n\t\t\t\t// Id allocation messages are directly submitted during the resubmit path\n\t\t\t\tif (isAllocationMessage) {\n\t\t\t\t\tthis.idAllocationOutbox.push(message);\n\t\t\t\t} else {\n\t\t\t\t\tthis.outbox.push(message);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tdefault:\n\t\t\t\tthrow new Error(`Unsupported FlushMode ${this.runtimeOptions.flushMode}`);\n\t\t}\n\n\t\treturn clientSequenceNumber;\n\t}\n\n\t/**\n\t * If the message is an idAllocation message, it will finalize the id range and return true.\n\t * Otherwise, it will return false.\n\t */\n\tprotected maybeProcessIdAllocationMessage(message: ISequencedDocumentMessage): boolean {\n\t\tif (this.isAllocationMessage(message.contents)) {\n\t\t\tthis.finalizeIdRange(message.contents.contents);\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tprivate isAllocationMessage(\n\t\tmessage: any,\n\t): message is IMockContainerRuntimeIdAllocationMessage {\n\t\treturn (\n\t\t\tmessage !== undefined &&\n\t\t\t(message as IMockContainerRuntimeIdAllocationMessage).type === \"idAllocation\"\n\t\t);\n\t}\n\n\tpublic dirty(): void {}\n\tpublic get isDirty() {\n\t\treturn this.pendingMessages.length > 0;\n\t}\n\n\t/**\n\t * If flush mode is set to FlushMode.TurnBased, it will send all messages queued since the last time\n\t * this method (or `flushSomeMessages`) was called. Otherwise, calling the method does nothing.\n\t */\n\tpublic flush() {\n\t\tthis.flushSomeMessages(this.outbox.length);\n\t}\n\n\t/**\n\t * If flush mode is set to FlushMode.TurnBased, it will send the specified number of messages from the outbox\n\t * queued since the last time this (or `flush`) was called. Otherwise, calling the method does nothing.\n\t * This can be useful when simulating staging mode, and we only want to flush certain messages.\n\t */\n\tpublic flushSomeMessages(numMessages: number): void {\n\t\tif (!Number.isInteger(numMessages) || numMessages < 0) {\n\t\t\tthrow new Error(\"flushSomeMessages: numMessages must be a non-negative integer\");\n\t\t}\n\t\tif (this.runtimeOptions.flushMode !== FlushMode.TurnBased) {\n\t\t\treturn;\n\t\t}\n\n\t\t// This mimics the runtime behavior of the IdCompressor by generating an IdAllocationOp\n\t\t// and sticking it in front of any op that might rely on that id. It differs slightly in that\n\t\t// in the actual runtime it would get put in its own separate batch\n\t\tconst idAllocationOp = this.generateIdAllocationOp();\n\t\tif (idAllocationOp !== undefined) {\n\t\t\tthis.idAllocationOutbox.push(idAllocationOp);\n\t\t}\n\n\t\tconst actualMessagesToSubmit = this.outbox.splice(0, numMessages);\n\n\t\t// As with the runtime behavior, we need to send the idAllocationOps first\n\t\tconst messagesToSubmit = this.idAllocationOutbox.concat(actualMessagesToSubmit);\n\t\tthis.idAllocationOutbox.length = 0;\n\n\t\tlet fakeClientSequenceNumber = 1;\n\t\tmessagesToSubmit.forEach((message) => {\n\t\t\tthis.submitInternal(\n\t\t\t\tmessage,\n\t\t\t\t// When grouped batching is used, the ops within the same grouped batch will have\n\t\t\t\t// fake sequence numbers when they're ungrouped. The submit function will still\n\t\t\t\t// return the clientSequenceNumber but this will ensure that the readers will always\n\t\t\t\t// read the fake client sequence numbers.\n\t\t\t\tthis.runtimeOptions.enableGroupedBatching\n\t\t\t\t\t? fakeClientSequenceNumber++\n\t\t\t\t\t: this.deltaManager.clientSequenceNumber,\n\t\t\t);\n\t\t});\n\t}\n\n\t/**\n\t * If flush mode is set to FlushMode.TurnBased, it will rebase the current batch by resubmitting them\n\t * to the data stores. Otherwise, calling the method does nothing.\n\t *\n\t * The method requires `runtimeOptions.enableGroupedBatching` to be enabled.\n\t */\n\tpublic rebase() {\n\t\tif (this.runtimeOptions.flushMode !== FlushMode.TurnBased) {\n\t\t\treturn;\n\t\t}\n\n\t\tassert(\n\t\t\tthis.runtimeOptions.enableGroupedBatching,\n\t\t\t\"Rebasing is not supported when group batching is disabled\",\n\t\t);\n\n\t\t// Only outbox needs to be rebased. The idAllocationOutbox is not rebased, as that\n\t\t// is a no-op (though resubmitting the other ops may generate new IDs)\n\t\tconst messagesToRebase = this.outbox.slice();\n\t\tthis.outbox.length = 0;\n\n\t\tthis.reSubmitMessages(messagesToRebase);\n\t}\n\n\tprotected reSubmitMessages(\n\t\tmessagesToResubmit: { content: any; localOpMetadata?: unknown }[],\n\t): void {\n\t\t// Sort the messages so that idAllocation messages are submitted first\n\t\t// When resubmitting non-idAllocation messages, they may generate new IDs.\n\t\t// This sort ensures that all ID ranges are finalized before they are\n\t\t// needed (i.e. before the messages that rely on them are processed)\n\t\t// and in the order they were allocated\n\t\tconst orderedMessages = messagesToResubmit\n\t\t\t.filter((message) => message.content.type === \"idAllocation\")\n\t\t\t.concat(messagesToResubmit.filter((message) => message.content.type !== \"idAllocation\"));\n\t\torderedMessages.forEach((pendingMessage) => {\n\t\t\tif (pendingMessage.content.type === \"idAllocation\") {\n\t\t\t\tthis.submit(pendingMessage.content, pendingMessage.localOpMetadata);\n\t\t\t} else {\n\t\t\t\tthis.dataStoreRuntime.reSubmit(pendingMessage.content, pendingMessage.localOpMetadata);\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Rolls back all pending messages.\n\t * @remarks\n\t * This only works when the FlushMode is not immediate as immediate\n\t * flush mode send the ops to the mock runtime factory for processing/sequencing, and so those\n\t * ops are no longer local, so not available for rollback.\n\t */\n\tpublic rollback?(): void {\n\t\tconst messagesToRollback = this.outbox.slice().reverse();\n\t\tthis.outbox.length = 0;\n\t\tmessagesToRollback.forEach((pm) => {\n\t\t\tthis.dataStoreRuntime.rollback?.(pm.content, pm.localOpMetadata);\n\t\t});\n\t}\n\n\tprivate generateIdAllocationOp(): IInternalMockRuntimeMessage | undefined {\n\t\tconst idRange = this.dataStoreRuntime.idCompressor?.takeNextCreationRange();\n\t\tif (idRange?.ids !== undefined) {\n\t\t\tconst allocationOp: IMockContainerRuntimeIdAllocationMessage = {\n\t\t\t\ttype: \"idAllocation\",\n\t\t\t\tcontents: idRange,\n\t\t\t};\n\t\t\treturn {\n\t\t\t\tcontent: allocationOp,\n\t\t\t\treferenceSequenceNumber: this.deltaManager.lastSequenceNumber,\n\t\t\t};\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tprivate submitInternal(message: IInternalMockRuntimeMessage, clientSequenceNumber: number) {\n\t\t// Here, we should instead push to the DeltaManager. And the DeltaManager will push things into the factory's messages\n\t\tthis.deltaManager.outbound.push([\n\t\t\t{\n\t\t\t\tclientSequenceNumber,\n\t\t\t\tcontents: message.content,\n\t\t\t\treferenceSequenceNumber:\n\t\t\t\t\tmessage.referenceSequenceNumber ?? this.deltaManager.lastSequenceNumber,\n\t\t\t\ttype: MessageType.Operation,\n\t\t\t},\n\t\t]);\n\t\tthis.addPendingMessage(message.content, message.localOpMetadata, clientSequenceNumber);\n\t}\n\n\tpublic process(message: ISequencedDocumentMessage) {\n\t\tthis.deltaManager.process(message);\n\t\tconst [local, localOpMetadata] = this.processInternal(message);\n\n\t\tif (this.isAllocationMessage(message.contents)) {\n\t\t\tthis.finalizeIdRange(message.contents.contents);\n\t\t} else {\n\t\t\tconst messagesContent: IRuntimeMessagesContent[] = [\n\t\t\t\t{\n\t\t\t\t\tcontents: message.contents,\n\t\t\t\t\tclientSequenceNumber: message.clientSequenceNumber,\n\t\t\t\t\tlocalOpMetadata,\n\t\t\t\t},\n\t\t\t];\n\t\t\tthis.dataStoreRuntime.processMessages({ envelope: message, local, messagesContent });\n\t\t}\n\t}\n\n\tprotected addPendingMessage(\n\t\tcontent: any,\n\t\tlocalOpMetadata: unknown,\n\t\tclientSequenceNumber: number,\n\t) {\n\t\tconst pendingMessage: IMockContainerRuntimePendingMessage = {\n\t\t\treferenceSequenceNumber: this.deltaManager.lastSequenceNumber,\n\t\t\tcontent,\n\t\t\tclientSequenceNumber,\n\t\t\tlocalOpMetadata,\n\t\t};\n\t\tthis.pendingMessages.push(pendingMessage);\n\t}\n\n\tprotected processInternal(message: ISequencedDocumentMessage): [boolean, unknown] {\n\t\tlet localOpMetadata: unknown;\n\t\tconst local = this.clientId === message.clientId;\n\t\tif (local) {\n\t\t\tconst pendingMessage = this.pendingMessages.shift();\n\t\t\tassert(\n\t\t\t\tpendingMessage?.clientSequenceNumber === message.clientSequenceNumber,\n\t\t\t\t\"Unexpected message\",\n\t\t\t);\n\t\t\tlocalOpMetadata = pendingMessage.localOpMetadata;\n\t\t}\n\t\treturn [local, localOpMetadata];\n\t}\n\n\tpublic async resolveHandle(handle: IFluidHandle) {\n\t\treturn this.dataStoreRuntime.resolveHandle({\n\t\t\turl: toFluidHandleInternal(handle).absolutePath,\n\t\t});\n\t}\n}\n\n/**\n * Factory to create MockContainerRuntime for testing basic submitting and processing of messages.\n * This also acts as a very basic server that stores the messages from all the MockContainerRuntimes and\n * processes them when asked.\n * If test specific logic is required, extend this class and add the logic there. For an example, take a look\n * at MockContainerRuntimeFactoryForReconnection.\n * @legacy @beta\n */\nexport class MockContainerRuntimeFactory {\n\tpublic sequenceNumber = 0;\n\tpublic minSeq = new Map<string, number>();\n\tpublic readonly quorum = new MockQuorumClients();\n\t/**\n\t * The MockContainerRuntimes we produce will push messages into this queue as they are submitted.\n\t * This is playing the role of the orderer, establishing a single universal order for the messages generated.\n\t * They are held in this queue until we explicitly choose to process them, at which time they are \"broadcast\" to\n\t * each of the runtimes.\n\t */\n\tprotected messages: ISequencedDocumentMessage[] = [];\n\tprotected readonly runtimes: Set<MockContainerRuntime> = new Set();\n\n\t/**\n\t * The container runtime options which will be provided to the all runtimes\n\t * created by this factory and also drive the way the ops are processed.\n\t *\n\t * See {@link IMockContainerRuntimeOptions}\n\t */\n\tprotected readonly runtimeOptions: Required<IMockContainerRuntimeOptions>;\n\n\tconstructor(\n\t\tmockContainerRuntimeOptions: IMockContainerRuntimeOptions = defaultMockContainerRuntimeOptions,\n\t) {\n\t\tthis.runtimeOptions = makeContainerRuntimeOptions(mockContainerRuntimeOptions);\n\t}\n\n\tpublic get outstandingMessageCount() {\n\t\treturn this.messages.length;\n\t}\n\n\t/**\n\t * @returns a minimum sequence number for all connected clients.\n\t */\n\tpublic getMinSeq(): number {\n\t\tlet minimumSequenceNumber: number | undefined;\n\t\tfor (const [client, clientSequenceNumber] of this.minSeq) {\n\t\t\t// We have to make sure, a client is part of the quorum, when\n\t\t\t// we compute the msn. We assume that the quorum accurately\n\t\t\t// represents the currently connected clients. In some tests\n\t\t\t// for reconnects, we will remove clients from the quorum\n\t\t\t// to indicate they are currently not connected. In that case,\n\t\t\t// they must no longer contribute to the msn computation.\n\t\t\tif (this.quorum.getMember(client) !== undefined) {\n\t\t\t\tminimumSequenceNumber =\n\t\t\t\t\tminimumSequenceNumber === undefined\n\t\t\t\t\t\t? clientSequenceNumber\n\t\t\t\t\t\t: Math.min(minimumSequenceNumber, clientSequenceNumber);\n\t\t\t}\n\t\t}\n\t\treturn minimumSequenceNumber ?? 0;\n\t}\n\n\tpublic createContainerRuntime(\n\t\tdataStoreRuntime: MockFluidDataStoreRuntime,\n\t): MockContainerRuntime {\n\t\tconst containerRuntime = new MockContainerRuntime(\n\t\t\tdataStoreRuntime,\n\t\t\tthis,\n\t\t\tthis.runtimeOptions,\n\t\t);\n\t\tthis.runtimes.add(containerRuntime);\n\t\treturn containerRuntime;\n\t}\n\n\tpublic removeContainerRuntime(containerRuntime: MockContainerRuntime) {\n\t\tthis.runtimes.delete(containerRuntime);\n\t}\n\n\tpublic pushMessage(msg: Partial<ISequencedDocumentMessage>) {\n\t\tdeepFreeze(msg);\n\t\tif (\n\t\t\tmsg.clientId &&\n\t\t\tmsg.referenceSequenceNumber !== undefined &&\n\t\t\t!this.minSeq.has(msg.clientId)\n\t\t) {\n\t\t\tthis.minSeq.set(msg.clientId, msg.referenceSequenceNumber);\n\t\t}\n\t\tthis.messages.push(msg as ISequencedDocumentMessage);\n\t}\n\n\tprotected lastProcessedMessage: ISequencedDocumentMessage | undefined;\n\tprotected getFirstMessageToProcess() {\n\t\tassert(this.messages.length > 0, \"The message queue should not be empty\");\n\n\t\t// Explicitly JSON clone the value to match the behavior of going thru the wire.\n\t\tconst message = JSON.parse(\n\t\t\tJSON.stringify(this.messages.shift()),\n\t\t) as ISequencedDocumentMessage;\n\n\t\t// TODO: Determine if this needs to be adapted for handling server-generated messages (which have null clientId and referenceSequenceNumber of -1).\n\t\tthis.minSeq.set(message.clientId as string, message.referenceSequenceNumber);\n\t\tif (\n\t\t\tthis.runtimeOptions.flushMode === FlushMode.Immediate ||\n\t\t\tthis.lastProcessedMessage?.clientId !== message.clientId\n\t\t) {\n\t\t\tthis.sequenceNumber++;\n\t\t}\n\t\tmessage.sequenceNumber = this.sequenceNumber;\n\t\tmessage.minimumSequenceNumber = this.getMinSeq();\n\t\tthis.lastProcessedMessage = message;\n\t\treturn message;\n\t}\n\n\tprivate processFirstMessage() {\n\t\tconst message = this.getFirstMessageToProcess();\n\t\tfor (const runtime of this.runtimes) {\n\t\t\truntime.process(message);\n\t\t}\n\t}\n\n\t/**\n\t * Process one of the queued messages. Throws if no messages are queued.\n\t */\n\tpublic processOneMessage() {\n\t\tif (this.messages.length === 0) {\n\t\t\tthrow new Error(\"Tried to process a message that did not exist\");\n\t\t}\n\t\tthis.lastProcessedMessage = undefined;\n\n\t\tthis.processFirstMessage();\n\t}\n\n\t/**\n\t * Process a given number of queued messages. Throws if there are fewer messages queued than requested.\n\t * @param count - the number of messages to process\n\t */\n\tpublic processSomeMessages(count: number) {\n\t\tif (count > this.messages.length) {\n\t\t\tthrow new Error(\"Tried to process more messages than exist\");\n\t\t}\n\n\t\tthis.lastProcessedMessage = undefined;\n\n\t\tfor (let i = 0; i < count; i++) {\n\t\t\tthis.processFirstMessage();\n\t\t}\n\t}\n\n\t/**\n\t * Process all remaining messages in the queue.\n\t */\n\tpublic processAllMessages() {\n\t\tthis.lastProcessedMessage = undefined;\n\t\twhile (this.messages.length > 0) {\n\t\t\tthis.processFirstMessage();\n\t\t}\n\t}\n}\n\n/**\n * @legacy @beta\n */\nexport class MockQuorumClients implements IQuorumClients, EventEmitter {\n\tprivate readonly members: Map<string, ISequencedClient>;\n\tprivate readonly eventEmitter = new EventEmitter();\n\n\tconstructor(...members: [string, Partial<ISequencedClient>][]) {\n\t\tthis.members = new Map((members as [string, ISequencedClient][]) ?? []);\n\t}\n\n\taddMember(id: string, client: Partial<ISequencedClient>) {\n\t\tthis.members.set(id, client as ISequencedClient);\n\t\tthis.eventEmitter.emit(\"addMember\", id, client);\n\t}\n\n\tremoveMember(id: string) {\n\t\tif (this.members.delete(id)) {\n\t\t\tthis.eventEmitter.emit(\"removeMember\", id);\n\t\t}\n\t}\n\n\tgetMembers(): Map<string, ISequencedClient> {\n\t\t// Implementation always generates a new Map.\n\t\t// Mock should as well in case any callers rely on being able to modify\n\t\t// the returned Map.\n\t\treturn new Map(this.members);\n\t}\n\tgetMember(clientId: string): ISequencedClient | undefined {\n\t\treturn this.getMembers().get(clientId);\n\t}\n\tdisposed: boolean = false;\n\n\tdispose(): void {\n\t\tthrow new Error(\"Method not implemented.\");\n\t}\n\n\taddListener(event: string | number, listener: (...args: any[]) => void): this {\n\t\tthrow new Error(\"Method not implemented.\");\n\t}\n\ton(event: string | number, listener: (...args: any[]) => void): this {\n\t\tswitch (event) {\n\t\t\tcase \"afterOn\":\n\t\t\t\tthis.eventEmitter.on(event, listener);\n\t\t\t\treturn this;\n\n\t\t\tcase \"addMember\":\n\t\t\tcase \"removeMember\":\n\t\t\t\tthis.eventEmitter.on(event, listener);\n\t\t\t\tthis.eventEmitter.emit(\"afterOn\", event);\n\t\t\t\treturn this;\n\t\t\tdefault:\n\t\t\t\tthrow new Error(\"Method not implemented.\");\n\t\t}\n\t}\n\tonce(event: string | number, listener: (...args: any[]) => void): this {\n\t\tthrow new Error(\"Method not implemented.\");\n\t}\n\tprependListener(event: string | number, listener: (...args: any[]) => void): this {\n\t\tthrow new Error(\"Method not implemented.\");\n\t}\n\tprependOnceListener(event: string | number, listener: (...args: any[]) => void): this {\n\t\tthrow new Error(\"Method not implemented.\");\n\t}\n\tremoveListener(event: string | number, listener: (...args: any[]) => void): this {\n\t\tthis.eventEmitter.removeListener(event, listener);\n\t\treturn this;\n\t}\n\toff(event: string | number, listener: (...args: any[]) => void): this {\n\t\tthis.eventEmitter.off(event, listener);\n\t\treturn this;\n\t}\n\tremoveAllListeners(event?: string | number | undefined): this {\n\t\tthrow new Error(\"Method not implemented.\");\n\t}\n\tsetMaxListeners(n: number): this {\n\t\tthrow new Error(\"Method not implemented.\");\n\t}\n\tgetMaxListeners(): number {\n\t\tthrow new Error(\"Method not implemented.\");\n\t}\n\tlisteners(event: string | number): ReturnType<EventEmitter[\"listeners\"]> {\n\t\tthrow new Error(\"Method not implemented.\");\n\t}\n\trawListeners(event: string | number): ReturnType<EventEmitter[\"rawListeners\"]> {\n\t\tthrow new Error(\"Method not implemented.\");\n\t}\n\temit(event: string | number, ...args: any[]): boolean {\n\t\tthrow new Error(\"Method not implemented.\");\n\t}\n\teventNames(): (string | number)[] {\n\t\tthrow new Error(\"Method not implemented.\");\n\t}\n\tlistenerCount(type: string | number): number {\n\t\tthrow new Error(\"Method not implemented.\");\n\t}\n}\n\n/**\n * @legacy @beta\n */\nexport class MockAudience\n\textends TypedEventEmitter<IAudienceEvents>\n\timplements IAudienceOwner\n{\n\tprivate readonly audienceMembers: Map<string, IClient>;\n\tprivate _currentClientId: string | undefined;\n\n\tpublic constructor() {\n\t\tsuper();\n\t\tthis.audienceMembers = new Map<string, IClient>();\n\t}\n\n\tpublic addMember(clientId: string, member: IClient): void {\n\t\tthis.audienceMembers.set(clientId, member);\n\t\tthis.emit(\"addMember\", clientId, member);\n\t}\n\n\tpublic removeMember(clientId: string): boolean {\n\t\tconst member = this.audienceMembers.get(clientId);\n\t\tconst deleteResult = this.audienceMembers.delete(clientId);\n\t\tthis.emit(\"removeMember\", clientId, member);\n\t\treturn deleteResult;\n\t}\n\n\tpublic getMembers(): Map<string, IClient> {\n\t\treturn new Map<string, IClient>(this.audienceMembers.entries());\n\t}\n\tpublic getMember(clientId: string): IClient | undefined {\n\t\treturn this.audienceMembers.get(clientId);\n\t}\n\n\tpublic getSelf(): ISelf | undefined {\n\t\treturn this._currentClientId === undefined\n\t\t\t? undefined\n\t\t\t: {\n\t\t\t\t\tclientId: this._currentClientId,\n\t\t\t\t};\n\t}\n\n\tpublic setCurrentClientId(clientId: string): void {\n\t\tif (this._currentClientId !== clientId) {\n\t\t\tconst oldId = this._currentClientId;\n\t\t\tthis._currentClientId = clientId;\n\t\t\tthis.emit(\n\t\t\t\t\"selfChanged\",\n\t\t\t\toldId === undefined ? undefined : ({ clientId: oldId } satisfies ISelf),\n\t\t\t\t{ clientId } satisfies ISelf,\n\t\t\t);\n\t\t}\n\t}\n}\n\nconst attachStatesToComparableNumbers = {\n\t[AttachState.Detached]: 0,\n\t[AttachState.Attaching]: 1,\n\t[AttachState.Attached]: 2,\n} as const;\n\n/**\n * Mock implementation of IRuntime for testing that does nothing\n * @legacy @beta\n */\nexport class MockFluidDataStoreRuntime\n\textends EventEmitter\n\timplements IFluidDataStoreRuntime, IFluidDataStoreChannel, IFluidHandleContext\n{\n\tconstructor(overrides?: {\n\t\tclientId?: string;\n\t\tentryPoint?: IFluidHandle<FluidObject>;\n\t\tid?: string;\n\t\tlogger?: ITelemetryBaseLogger;\n\t\tidCompressor?: IIdCompressor & IIdCompressorCore;\n\t\tattachState?: AttachState;\n\t\tregistry?: readonly IChannelFactory[];\n\t\tminVersionForCollab?: MinimumVersionForCollab;\n\t}) {\n\t\tsuper();\n\t\tthis.clientId = overrides?.clientId ?? uuid();\n\t\tthis.entryPoint = toFluidHandleInternal(\n\t\t\toverrides?.entryPoint ?? new MockHandle(null as unknown as FluidObject, \"\", \"\"),\n\t\t);\n\t\tthis.id = overrides?.id ?? uuid();\n\t\tconst childLoggerProps: Parameters<typeof createChildLogger>[0] = {\n\t\t\tnamespace: \"fluid:MockFluidDataStoreRuntime\",\n\t\t};\n\t\tconst logger = overrides?.logger;\n\t\tif (logger !== undefined) {\n\t\t\tchildLoggerProps.logger = logger;\n\t\t}\n\t\tthis.logger = createChildLogger(childLoggerProps);\n\t\tthis.idCompressor = overrides?.idCompressor;\n\t\tthis._attachState = overrides?.attachState ?? AttachState.Attached;\n\n\t\tconst registry = overrides?.registry;\n\t\tif (registry) {\n\t\t\tthis.registry = new Map(registry.map((factory) => [factory.type, factory]));\n\t\t}\n\n\t\tthis.minVersionForCollab = overrides?.minVersionForCollab;\n\t}\n\n\tprivate readonly: boolean = false;\n\tpublic readonly isReadOnly = () => this.readonly;\n\n\tpublic readonly entryPoint: IFluidHandleInternal<FluidObject>;\n\n\t/**\n\t * @see IFluidDataStoreRuntimeInternalConfig.minVersionForCollab\n\t */\n\tpublic readonly minVersionForCollab: MinimumVersionForCollab | undefined;\n\n\tpublic get IFluidHandleContext(): IFluidHandleContext {\n\t\treturn this;\n\t}\n\tpublic get rootRoutingContext(): IFluidHandleContext {\n\t\treturn this;\n\t}\n\tpublic get channelsRoutingContext(): IFluidHandleContext {\n\t\treturn this;\n\t}\n\tpublic get objectsRoutingContext(): IFluidHandleContext {\n\t\treturn this;\n\t}\n\n\tpublic readonly documentId: string = undefined as any;\n\tpublic readonly id: string;\n\tpublic readonly existing: boolean = undefined as any;\n\tpublic options: Record<string | number, any> = {};\n\tpublic clientId: string;\n\tpublic readonly path = \"\";\n\tpublic readonly connected = true;\n\tpublic deltaManagerInternal = new MockDeltaManager();\n\tpublic get deltaManager(): IDeltaManagerErased {\n\t\treturn toDeltaManagerErased(this.deltaManagerInternal);\n\t}\n\tpublic readonly loader: ILoader = undefined as any;\n\tpublic readonly logger: ITelemetryBaseLogger;\n\tpublic quorum = new MockQuorumClients();\n\tprivate readonly audience = new MockAudience();\n\tpublic containerRuntime?: MockContainerRuntime;\n\tpublic idCompressor: (IIdCompressor & IIdCompressorCore) | undefined;\n\tprivate readonly deltaConnections: MockDeltaConnection[] = [];\n\tprivate readonly registry?: ReadonlyMap<string, IChannelFactory>;\n\n\tpublic createDeltaConnection(): MockDeltaConnection {\n\t\tconst deltaConnection = new MockDeltaConnection(\n\t\t\t(messageContent: any, localOpMetadata: unknown) =>\n\t\t\t\tthis.submitMessageInternal(messageContent, localOpMetadata),\n\t\t\t() => this.setChannelDirty(),\n\t\t);\n\t\tthis.deltaConnections.push(deltaConnection);\n\t\treturn deltaConnection;\n\t}\n\n\tpublic get absolutePath() {\n\t\treturn `/${this.id}`;\n\t}\n\n\t/**\n\t * @deprecated Use `attachState` instead\n\t *\n\t * @privateRemarks Also remove the setter when this is removed. setters don't get their own doc tags.\n\t */\n\tpublic get local(): boolean {\n\t\treturn !this.isAttached;\n\t}\n\tpublic set local(local: boolean) {\n\t\t// this does not validate attach state orders, or fire events to maintain\n\t\t// the existing behavior. due to this, this method is deprecated and will\n\t\t// be removed\n\t\tthis._attachState = local ? AttachState.Detached : AttachState.Attached;\n\t}\n\n\tprivate _disposed = false;\n\n\tpublic get disposed() {\n\t\treturn this._disposed;\n\t}\n\n\tpublic dispose(): void {\n\t\tthis._disposed = true;\n\t}\n\n\tpublic async getChannel(id: string): Promise<IChannel> {\n\t\treturn null as any as IChannel;\n\t}\n\tpublic createChannel(id: string | undefined, type: string): IChannel {\n\t\tif (this.registry === undefined) {\n\t\t\t// This preserves the behavior of this mock from before registry support was added.\n\t\t\treturn null as any as IChannel;\n\t\t}\n\n\t\tconst factory = this.registry.get(type);\n\t\tassert(factory !== undefined, \"type missing from registry\");\n\t\treturn factory.create(this, id ?? uuid());\n\t}\n\n\t/**\n\t * @remarks This is for internal use only.\n\t */\n\tpublic ILayerCompatDetails?: unknown;\n\n\tpublic addChannel(channel: IChannel): void {}\n\n\tpublic get isAttached(): boolean {\n\t\treturn this.attachState !== AttachState.Detached;\n\t}\n\n\tprivate _attachState: AttachState;\n\tpublic get attachState(): AttachState {\n\t\treturn this._attachState;\n\t}\n\n\tpublic get visibilityState(): VisibilityState {\n\t\treturn this.isAttached ? VisibilityState.GloballyVisible : VisibilityState.NotVisible;\n\t}\n\n\tpublic bindChannel(channel: IChannel): void {\n\t\treturn;\n\t}\n\n\tpublic attachGraph(): void {\n\t\treturn;\n\t}\n\n\tpublic makeVisibleAndAttachGraph(): void {\n\t\treturn;\n\t}\n\n\tpublic bind(handle: IFluidHandle): void {\n\t\treturn;\n\t}\n\n\tpublic getQuorum(): IQuorumClients {\n\t\treturn this.quorum;\n\t}\n\n\tpublic getAudience(): IAudience {\n\t\treturn this.audience;\n\t}\n\n\tpublic save(message: string) {\n\t\treturn;\n\t}\n\n\tpublic async close(): Promise<void> {\n\t\treturn;\n\t}\n\n\tpublic async uploadBlob(blob: ArrayBufferLike): Promise<IFluidHandle<ArrayBufferLike>> {\n\t\treturn null as any as IFluidHandle<ArrayBufferLike>;\n\t}\n\n\tpublic async getBlob(blobId: string): Promise<any> {\n\t\treturn null;\n\t}\n\n\tprivate submitMessageInternal(messageContent: any, localOpMetadata: unknown): number {\n\t\tassert(\n\t\t\tthis.containerRuntime !== undefined,\n\t\t\t\"The container runtime has not been initialized\",\n\t\t);\n\t\treturn this.containerRuntime.submit(messageContent, localOpMetadata);\n\t}\n\n\tprivate setChannelDirty(): void {\n\t\tassert(\n\t\t\tthis.containerRuntime !== undefined,\n\t\t\t\"The container runtime has not been initialized\",\n\t\t);\n\t\treturn this.containerRuntime.dirty();\n\t}\n\n\tpublic submitSignal: IFluidDataStoreRuntime[\"submitSignal\"] = () => null;\n\n\tpublic processMessages(messageCollection: IRuntimeMessageCollection) {\n\t\tif (this.disposed) {\n\t\t\treturn;\n\t\t}\n\t\tthis.deltaConnections.forEach((dc) => {\n\t\t\tdc.processMessages(messageCollection);\n\t\t});\n\t}\n\n\tpublic processSignal(message: any, local: boolean) {\n\t\treturn;\n\t}\n\n\tpublic updateMinSequenceNumber(value: number): void {\n\t\treturn;\n\t}\n\n\tpublic setConnectionState(connected: boolean, clientId?: string) {\n\t\tif (connected && clientId !== undefined) {\n\t\t\tthis.clientId = clientId;\n\t\t}\n\t\tthis.deltaConnections.forEach((dc) => dc.setConnectionState(connected));\n\t\treturn;\n\t}\n\n\tpublic notifyReadOnlyState(readonly: boolean): void {\n\t\tthis.readonly = readonly;\n\t}\n\n\tpublic async resolveHandle(request: IRequest): Promise<IResponse> {\n\t\tif (request.url !== undefined) {\n\t\t\treturn {\n\t\t\t\tstatus: 200,\n\t\t\t\tmimeType: \"fluid/object\",\n\t\t\t\tvalue: request.url,\n\t\t\t};\n\t\t}\n\t\treturn this.request(request);\n\t}\n\n\tpublic async request(request: IRequest): Promise<IResponse> {\n\t\treturn null as any as IResponse;\n\t}\n\n\tpublic async summarize(\n\t\tfullTree?: boolean,\n\t\ttrackState?: boolean,\n\t): Promise<ISummaryTreeWithStats> {\n\t\tconst stats = mergeStats();\n\t\tstats.treeNodeCount++;\n\t\treturn {\n\t\t\tsummary: {\n\t\t\t\ttype: SummaryType.Tree,\n\t\t\t\ttree: {},\n\t\t\t},\n\t\t\tstats,\n\t\t};\n\t}\n\n\tpublic async getGCData(): Promise<IGarbageCollectionData> {\n\t\treturn {\n\t\t\tgcNodes: {},\n\t\t};\n\t}\n\n\tpublic updateUsedRoutes(usedRoutes: string[]) {}\n\n\tpublic getAttachSnapshot(): ITreeEntry[] {\n\t\treturn [];\n\t}\n\n\tpublic getAttachSummary(): ISummaryTreeWithStats {\n\t\tconst stats = mergeStats();\n\t\tstats.treeNodeCount++;\n\t\treturn {\n\t\t\tsummary: {\n\t\t\t\ttype: SummaryType.Tree,\n\t\t\t\ttree: {},\n\t\t\t},\n\t\t\tstats,\n\t\t};\n\t}\n\n\tpublic getAttachGCData(\n\t\ttelemetryContext?: ITelemetryContext | undefined,\n\t): IGarbageCollectionData {\n\t\treturn {\n\t\t\tgcNodes: {},\n\t\t};\n\t}\n\n\tpublic setAttachState(attachState: AttachState.Attaching | AttachState.Attached): void {\n\t\tif (attachState === this._attachState) {\n\t\t\treturn;\n\t\t}\n\t\tconst proposedState = attachStatesToComparableNumbers[attachState];\n\t\tconst startingState = attachStatesToComparableNumbers[this._attachState];\n\t\tif (proposedState < startingState) {\n\t\t\tthrow new Error(`cannot transition back to ${attachState} from ${this.attachState}`);\n\t\t}\n\n\t\tif (\n\t\t\tstartingState < attachStatesToComparableNumbers[AttachState.Attaching] &&\n\t\t\tproposedState >= attachStatesToComparableNumbers[AttachState.Attaching]\n\t\t) {\n\t\t\tthis._attachState = AttachState.Attaching;\n\t\t\tthis.emit(\"attaching\");\n\t\t}\n\n\t\tif (\n\t\t\tstartingState < attachStatesToComparableNumbers[AttachState.Attached] &&\n\t\t\tproposedState >= attachStatesToComparableNumbers[AttachState.Attached]\n\t\t) {\n\t\t\tthis._attachState = AttachState.Attached;\n\t\t\tthis.emit(\"attached\");\n\t\t}\n\t}\n\n\tpublic async waitAttached(): Promise<void> {\n\t\treturn;\n\t}\n\n\tpublic async requestDataStore(request: IRequest): Promise<IResponse> {\n\t\treturn null as any as IResponse;\n\t}\n\n\tpublic reSubmit(content: any, localOpMetadata: unknown, squash?: boolean) {\n\t\tthis.deltaConnections.forEach((dc) => {\n\t\t\tdc.reSubmit(content, localOpMetadata, squash);\n\t\t});\n\t}\n\n\tpublic async applyStashedOp(content: any) {\n\t\treturn this.deltaConnections.map((dc) => dc.applyStashedOp(content))[0];\n\t}\n\n\tpublic rollback?(message: any, localOpMetadata: unknown): void {\n\t\tthis.deltaConnections.forEach((dc) => {\n\t\t\tdc.rollback?.(message, localOpMetadata);\n\t\t});\n\t}\n}\n\n/**\n * Mock implementation of IDeltaConnection\n * @internal\n */\nexport class MockEmptyDeltaConnection implements IDeltaConnection {\n\tpublic connected = false;\n\n\tpublic attach(handler) {}\n\n\tpublic submit(messageContent: any): number {\n\t\tassert(false, \"Throw submit error on mock empty delta connection\");\n\t}\n\n\tpublic dirty(): void {}\n}\n\n/**\n * Mock implementation of IChannelStorageService\n * @legacy @beta\n */\nexport class MockObjectStorageService implements IChannelStorageService {\n\tprivate readonly snapshotTree: ISnapshotTree;\n\n\t/**\n\t * @param contents - Key value pairs that represent a snapshot.\n\t * The keys are the path to the contents of a blob in the snapshot tree. The corresponding values are its contents.\n\t *\n\t * @remarks\n\t * The snapshot contents must not change after it has been passed here as the changes will not be reflected\n\t * in the snapshot tree retrieved via `getSnapshotTree`.\n\t */\n\tpublic constructor(private readonly contents: { [key: string]: string }) {\n\t\tthis.snapshotTree = createSnapshotTreeFromContents(contents);\n\t}\n\n\tpublic async readBlob(path: string): Promise<ArrayBufferLike> {\n\t\treturn stringToBuffer(this.contents[path], \"utf8\");\n\t}\n\tpublic async contains(path: string): Promise<boolean> {\n\t\treturn this.contents[path] !== undefined;\n\t}\n\tpublic async list(path: string): Promise<string[]> {\n\t\tconst pathPartsLength = getNormalizedObjectStoragePathParts(path).length;\n\t\treturn Object.keys(this.contents).filter(\n\t\t\t(key) => key.startsWith(path) && key.split(\"/\").length === pathPartsLength + 1,\n\t\t);\n\t}\n\n\tpublic getSnapshotTree(): ISnapshotTree {\n\t\treturn this.snapshotTree;\n\t}\n}\n\n/**\n * Mock implementation of IChannelServices\n * @legacy @beta\n */\nexport class MockSharedObjectServices implements IChannelServices {\n\tpublic static createFromSummary(summaryTree: ISummaryTree) {\n\t\tconst contents: { [key: string]: string } = {};\n\t\tsetContentsFromSummaryTree(summaryTree, \"\", contents);\n\t\treturn new MockSharedObjectServices(contents);\n\t}\n\n\tpublic deltaConnection: IDeltaConnection = new MockEmptyDeltaConnection();\n\tpublic objectStorage: MockObjectStorageService;\n\n\tpublic constructor(contents: { [key: string]: string }) {\n\t\tthis.objectStorage = new MockObjectStorageService(contents);\n\t}\n}\n\n/**\n * Populate the given `contents` object with all paths/values in a summary tree\n */\nfunction setContentsFromSummaryTree(\n\t{ tree }: ISummaryTree,\n\tpath: string,\n\tcontents: { [key: string]: string },\n): void {\n\tfor (const [key, value] of Object.entries(tree)) {\n\t\tswitch (value.type) {\n\t\t\tcase SummaryType.Blob:\n\t\t\t\tassert(\n\t\t\t\t\ttypeof value.content === \"string\",\n\t\t\t\t\t\"Unexpected blob value on mock createFromSummary\",\n\t\t\t\t);\n\t\t\t\tcontents[`${path}${key}`] = value.content;\n\t\t\t\tbreak;\n\t\t\tcase SummaryType.Tree:\n\t\t\t\tsetContentsFromSummaryTree(value, `${path}${key}/`, contents);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tassert(false, \"Unexpected summary type on mock createFromSummary\");\n\t\t}\n\t}\n}\n\n/**\n * Create an ISnapshotTree from contents object (reverse of setContentsFromSummaryTree)\n * @param contents - Object with path/value pairs\n * @returns ISnapshotTree representing the hierarchical structure\n */\nexport function createSnapshotTreeFromContents(contents: {\n\t[key: string]: string;\n}): ISnapshotTree {\n\tconst tree: ISnapshotTree = {\n\t\ttrees: {},\n\t\tblobs: {},\n\t};\n\n\tfor (const [path, content] of Object.entries(contents)) {\n\t\t// Remove empty strings to handle leading, trailing, or consecutive slashes in the path.\n\t\tconst pathParts = path.split(\"/\").filter((part) => part !== \"\");\n\t\tlet currentTree = tree;\n\n\t\t// Navigate/create the tree structure for all but the last part\n\t\tfor (let i = 0; i < pathParts.length - 1; i++) {\n\t\t\tconst part = pathParts[i];\n\t\t\tif (!currentTree.trees[part]) {\n\t\t\t\tcurrentTree.trees[part] = {\n\t\t\t\t\ttrees: {},\n\t\t\t\t\tblobs: {},\n\t\t\t\t};\n\t\t\t}\n\t\t\tcurrentTree = currentTree.trees[part];\n\t\t}\n\n\t\t// Add the blob at the final location\n\t\tconst blobName = pathParts[pathParts.length - 1];\n\t\tif (blobName !== undefined) {\n\t\t\tcurrentTree.blobs[blobName] = content;\n\t\t}\n\t}\n\n\treturn tree;\n}\n"]}
@@ -58,8 +58,8 @@ export declare class MockFluidDataStoreContext implements IFluidDataStoreContext
58
58
  off(event: string | symbol, listener: (...args: any[]) => void): this;
59
59
  getQuorum(): IQuorumClients;
60
60
  getAudience(): IAudience;
61
- submitMessage(type: string, content: any, localOpMetadata: unknown): void;
62
- submitSignal(type: string, content: any): void;
61
+ submitMessage(): void;
62
+ submitSignal(): void;
63
63
  makeLocallyVisible(): void;
64
64
  setChannelDirty(address: string): void;
65
65
  getAbsoluteUrl(relativeUrl: string): Promise<string | undefined>;
@@ -1 +1 @@
1
- {"version":3,"file":"mocksDataStoreContext.d.ts","sourceRoot":"","sources":["../src/mocksDataStoreContext.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mocksDataStoreContext.d.ts","sourceRoot":"","sources":["../src/mocksDataStoreContext.ts"],"names":[],"mappings":"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"}
@@ -62,10 +62,10 @@ export class MockFluidDataStoreContext {
62
62
  getAudience() {
63
63
  return undefined;
64
64
  }
65
- submitMessage(type, content, localOpMetadata) {
65
+ submitMessage() {
66
66
  // No-op for mock context
67
67
  }
68
- submitSignal(type, content) {
68
+ submitSignal() {
69
69
  throw new Error("Method not implemented.");
70
70
  }
71
71
  makeLocallyVisible() {
@@ -1 +1 @@
1
- {"version":3,"file":"mocksDataStoreContext.js","sourceRoot":"","sources":["../src/mocksDataStoreContext.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AttachState, IAudience } from \"@fluidframework/container-definitions\";\nimport { IDeltaManager } from \"@fluidframework/container-definitions/internal\";\nimport { FluidObject } from \"@fluidframework/core-interfaces\";\nimport {\n\tIFluidHandleContext,\n\ttype IFluidHandleInternal,\n} from \"@fluidframework/core-interfaces/internal\";\nimport { IClientDetails, IQuorumClients } from \"@fluidframework/driver-definitions\";\nimport {\n\tIDocumentMessage,\n\tISnapshotTree,\n\tISequencedDocumentMessage,\n} from \"@fluidframework/driver-definitions/internal\";\nimport type { IIdCompressor } from \"@fluidframework/id-compressor\";\nimport type { IIdCompressorCore } from \"@fluidframework/id-compressor/internal\";\nimport {\n\tCreateChildSummarizerNodeFn,\n\tCreateChildSummarizerNodeParam,\n\tIContainerRuntimeBase,\n\tIFluidDataStoreContext,\n\tIFluidDataStoreRegistry,\n\tIGarbageCollectionDetailsBase,\n\ttype IRuntimeStorageService,\n\ttype MinimumVersionForCollab,\n} from \"@fluidframework/runtime-definitions/internal\";\nimport { defaultMinVersionForCollab } from \"@fluidframework/runtime-utils/internal\";\nimport {\n\tITelemetryLoggerExt,\n\tcreateChildLogger,\n} from \"@fluidframework/telemetry-utils/internal\";\nimport { v4 as uuid } from \"uuid\";\n\nimport { MockDeltaManager } from \"./mockDeltas.js\";\n\n/**\n * @legacy @beta\n */\nexport class MockFluidDataStoreContext implements IFluidDataStoreContext {\n\tpublic isLocalDataStore: boolean = true;\n\tpublic packagePath: readonly string[] = undefined as any;\n\n\tpublic options: Record<string | number, any> = {};\n\tpublic clientId: string | undefined = uuid();\n\tpublic clientDetails: IClientDetails;\n\tpublic connected: boolean = true;\n\tpublic readonly: boolean = false;\n\tpublic baseSnapshot: ISnapshotTree | undefined;\n\tpublic deltaManager: IDeltaManager<ISequencedDocumentMessage, IDocumentMessage> =\n\t\tnew MockDeltaManager(() => this.clientId);\n\n\tpublic containerRuntime: IContainerRuntimeBase = undefined as any;\n\tpublic storage: IRuntimeStorageService = undefined as any;\n\tpublic IFluidDataStoreRegistry: IFluidDataStoreRegistry = undefined as any;\n\tpublic IFluidHandleContext: IFluidHandleContext = undefined as any;\n\tpublic idCompressor: IIdCompressorCore & IIdCompressor = undefined as any;\n\tpublic readonly gcThrowOnTombstoneUsage = false;\n\tpublic readonly gcTombstoneEnforcementAllowed = false;\n\n\t/**\n\t * @remarks This is for internal use only.\n\t */\n\tpublic ILayerCompatDetails?: unknown;\n\n\t/**\n\t * Indicates the attachment state of the data store to a host service.\n\t */\n\tpublic attachState: AttachState = undefined as any;\n\n\t/**\n\t * @deprecated 0.16 Issue #1635, #3631\n\t */\n\tpublic createProps?: any;\n\tpublic scope: FluidObject = undefined as any;\n\n\t/**\n\t * {@inheritdoc @fluidframework/runtime-definitions#IFluidDataStoreContext.minVersionForCollab}\n\t */\n\tpublic minVersionForCollab: MinimumVersionForCollab = defaultMinVersionForCollab;\n\n\tconstructor(\n\t\tpublic readonly id: string = uuid(),\n\t\tpublic readonly existing: boolean = false,\n\t\tpublic readonly baseLogger: ITelemetryLoggerExt = createChildLogger({\n\t\t\tnamespace: \"fluid:MockFluidDataStoreContext\",\n\t\t}),\n\t\tinteractive: boolean = true,\n\t) {\n\t\tthis.clientDetails = { capabilities: { interactive } };\n\t}\n\n\ton(event: string | symbol, listener: (...args: any[]) => void): this {\n\t\tswitch (event) {\n\t\t\tcase \"attaching\":\n\t\t\tcase \"attached\":\n\t\t\t\treturn this;\n\t\t\tdefault:\n\t\t\t\tthrow new Error(\"Method not implemented.\");\n\t\t}\n\t}\n\n\tonce(event: string | symbol, listener: (...args: any[]) => void): this {\n\t\treturn this;\n\t}\n\n\toff(event: string | symbol, listener: (...args: any[]) => void): this {\n\t\tthrow new Error(\"Method not implemented.\");\n\t}\n\n\tpublic getQuorum(): IQuorumClients {\n\t\treturn undefined as any as IQuorumClients;\n\t}\n\n\tpublic getAudience(): IAudience {\n\t\treturn undefined as any as IAudience;\n\t}\n\n\tpublic submitMessage(type: string, content: any, localOpMetadata: unknown): void {\n\t\t// No-op for mock context\n\t}\n\n\tpublic submitSignal(type: string, content: any): void {\n\t\tthrow new Error(\"Method not implemented.\");\n\t}\n\n\tpublic makeLocallyVisible(): void {\n\t\tthrow new Error(\"Method not implemented.\");\n\t}\n\n\tpublic setChannelDirty(address: string): void {\n\t\tthrow new Error(\"Method not implemented.\");\n\t}\n\n\tpublic async getAbsoluteUrl(relativeUrl: string): Promise<string | undefined> {\n\t\tthrow new Error(\"Method not implemented.\");\n\t}\n\n\tpublic getCreateChildSummarizerNodeFn(\n\t\tid: string,\n\t\tcreateParam: CreateChildSummarizerNodeParam,\n\t): CreateChildSummarizerNodeFn {\n\t\tthrow new Error(\"Method not implemented.\");\n\t}\n\n\tpublic deleteChildSummarizerNode(id: string): void {\n\t\tthrow new Error(\"Method not implemented.\");\n\t}\n\n\tpublic async uploadBlob(\n\t\tblob: ArrayBufferLike,\n\t): Promise<IFluidHandleInternal<ArrayBufferLike>> {\n\t\tthrow new Error(\"Method not implemented.\");\n\t}\n\n\tpublic async getBaseGCDetails(): Promise<IGarbageCollectionDetailsBase> {\n\t\tthrow new Error(\"Method not implemented.\");\n\t}\n\n\tpublic addedGCOutboundRoute(fromPath: string, toPath: string, messageTimestampMs?: number) {\n\t\tthrow new Error(\"Method not implemented.\");\n\t}\n}\n"]}
1
+ {"version":3,"file":"mocksDataStoreContext.js","sourceRoot":"","sources":["../src/mocksDataStoreContext.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AttachState, IAudience } from \"@fluidframework/container-definitions\";\nimport { IDeltaManager } from \"@fluidframework/container-definitions/internal\";\nimport { FluidObject } from \"@fluidframework/core-interfaces\";\nimport {\n\tIFluidHandleContext,\n\ttype IFluidHandleInternal,\n} from \"@fluidframework/core-interfaces/internal\";\nimport { IClientDetails, IQuorumClients } from \"@fluidframework/driver-definitions\";\nimport {\n\tIDocumentMessage,\n\tISnapshotTree,\n\tISequencedDocumentMessage,\n} from \"@fluidframework/driver-definitions/internal\";\nimport type { IIdCompressor } from \"@fluidframework/id-compressor\";\nimport type { IIdCompressorCore } from \"@fluidframework/id-compressor/internal\";\nimport {\n\tCreateChildSummarizerNodeFn,\n\tCreateChildSummarizerNodeParam,\n\tIContainerRuntimeBase,\n\tIFluidDataStoreContext,\n\tIFluidDataStoreRegistry,\n\tIGarbageCollectionDetailsBase,\n\ttype IRuntimeStorageService,\n\ttype MinimumVersionForCollab,\n} from \"@fluidframework/runtime-definitions/internal\";\nimport { defaultMinVersionForCollab } from \"@fluidframework/runtime-utils/internal\";\nimport {\n\tITelemetryLoggerExt,\n\tcreateChildLogger,\n} from \"@fluidframework/telemetry-utils/internal\";\nimport { v4 as uuid } from \"uuid\";\n\nimport { MockDeltaManager } from \"./mockDeltas.js\";\n\n/**\n * @legacy @beta\n */\nexport class MockFluidDataStoreContext implements IFluidDataStoreContext {\n\tpublic isLocalDataStore: boolean = true;\n\tpublic packagePath: readonly string[] = undefined as any;\n\n\tpublic options: Record<string | number, any> = {};\n\tpublic clientId: string | undefined = uuid();\n\tpublic clientDetails: IClientDetails;\n\tpublic connected: boolean = true;\n\tpublic readonly: boolean = false;\n\tpublic baseSnapshot: ISnapshotTree | undefined;\n\tpublic deltaManager: IDeltaManager<ISequencedDocumentMessage, IDocumentMessage> =\n\t\tnew MockDeltaManager(() => this.clientId);\n\n\tpublic containerRuntime: IContainerRuntimeBase = undefined as any;\n\tpublic storage: IRuntimeStorageService = undefined as any;\n\tpublic IFluidDataStoreRegistry: IFluidDataStoreRegistry = undefined as any;\n\tpublic IFluidHandleContext: IFluidHandleContext = undefined as any;\n\tpublic idCompressor: IIdCompressorCore & IIdCompressor = undefined as any;\n\tpublic readonly gcThrowOnTombstoneUsage = false;\n\tpublic readonly gcTombstoneEnforcementAllowed = false;\n\n\t/**\n\t * @remarks This is for internal use only.\n\t */\n\tpublic ILayerCompatDetails?: unknown;\n\n\t/**\n\t * Indicates the attachment state of the data store to a host service.\n\t */\n\tpublic attachState: AttachState = undefined as any;\n\n\t/**\n\t * @deprecated 0.16 Issue #1635, #3631\n\t */\n\tpublic createProps?: any;\n\tpublic scope: FluidObject = undefined as any;\n\n\t/**\n\t * {@inheritdoc @fluidframework/runtime-definitions#IFluidDataStoreContext.minVersionForCollab}\n\t */\n\tpublic minVersionForCollab: MinimumVersionForCollab = defaultMinVersionForCollab;\n\n\tconstructor(\n\t\tpublic readonly id: string = uuid(),\n\t\tpublic readonly existing: boolean = false,\n\t\tpublic readonly baseLogger: ITelemetryLoggerExt = createChildLogger({\n\t\t\tnamespace: \"fluid:MockFluidDataStoreContext\",\n\t\t}),\n\t\tinteractive: boolean = true,\n\t) {\n\t\tthis.clientDetails = { capabilities: { interactive } };\n\t}\n\n\ton(event: string | symbol, listener: (...args: any[]) => void): this {\n\t\tswitch (event) {\n\t\t\tcase \"attaching\":\n\t\t\tcase \"attached\":\n\t\t\t\treturn this;\n\t\t\tdefault:\n\t\t\t\tthrow new Error(\"Method not implemented.\");\n\t\t}\n\t}\n\n\tonce(event: string | symbol, listener: (...args: any[]) => void): this {\n\t\treturn this;\n\t}\n\n\toff(event: string | symbol, listener: (...args: any[]) => void): this {\n\t\tthrow new Error(\"Method not implemented.\");\n\t}\n\n\tpublic getQuorum(): IQuorumClients {\n\t\treturn undefined as any as IQuorumClients;\n\t}\n\n\tpublic getAudience(): IAudience {\n\t\treturn undefined as any as IAudience;\n\t}\n\n\tpublic submitMessage(): void {\n\t\t// No-op for mock context\n\t}\n\n\tpublic submitSignal(): void {\n\t\tthrow new Error(\"Method not implemented.\");\n\t}\n\n\tpublic makeLocallyVisible(): void {\n\t\tthrow new Error(\"Method not implemented.\");\n\t}\n\n\tpublic setChannelDirty(address: string): void {\n\t\tthrow new Error(\"Method not implemented.\");\n\t}\n\n\tpublic async getAbsoluteUrl(relativeUrl: string): Promise<string | undefined> {\n\t\tthrow new Error(\"Method not implemented.\");\n\t}\n\n\tpublic getCreateChildSummarizerNodeFn(\n\t\tid: string,\n\t\tcreateParam: CreateChildSummarizerNodeParam,\n\t): CreateChildSummarizerNodeFn {\n\t\tthrow new Error(\"Method not implemented.\");\n\t}\n\n\tpublic deleteChildSummarizerNode(id: string): void {\n\t\tthrow new Error(\"Method not implemented.\");\n\t}\n\n\tpublic async uploadBlob(\n\t\tblob: ArrayBufferLike,\n\t): Promise<IFluidHandleInternal<ArrayBufferLike>> {\n\t\tthrow new Error(\"Method not implemented.\");\n\t}\n\n\tpublic async getBaseGCDetails(): Promise<IGarbageCollectionDetailsBase> {\n\t\tthrow new Error(\"Method not implemented.\");\n\t}\n\n\tpublic addedGCOutboundRoute(fromPath: string, toPath: string, messageTimestampMs?: number) {\n\t\tthrow new Error(\"Method not implemented.\");\n\t}\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluidframework/test-runtime-utils",
3
- "version": "2.70.0-361788",
3
+ "version": "2.71.0",
4
4
  "description": "Fluid runtime test utilities",
5
5
  "homepage": "https://fluidframework.com",
6
6
  "repository": {
@@ -69,31 +69,31 @@
69
69
  "temp-directory": "nyc/.nyc_output"
70
70
  },
71
71
  "dependencies": {
72
- "@fluid-internal/client-utils": "2.70.0-361788",
73
- "@fluidframework/container-definitions": "2.70.0-361788",
74
- "@fluidframework/container-runtime-definitions": "2.70.0-361788",
75
- "@fluidframework/core-interfaces": "2.70.0-361788",
76
- "@fluidframework/core-utils": "2.70.0-361788",
77
- "@fluidframework/datastore-definitions": "2.70.0-361788",
78
- "@fluidframework/driver-definitions": "2.70.0-361788",
79
- "@fluidframework/driver-utils": "2.70.0-361788",
80
- "@fluidframework/id-compressor": "2.70.0-361788",
81
- "@fluidframework/routerlicious-driver": "2.70.0-361788",
82
- "@fluidframework/runtime-definitions": "2.70.0-361788",
83
- "@fluidframework/runtime-utils": "2.70.0-361788",
84
- "@fluidframework/telemetry-utils": "2.70.0-361788",
72
+ "@fluid-internal/client-utils": "~2.71.0",
73
+ "@fluidframework/container-definitions": "~2.71.0",
74
+ "@fluidframework/container-runtime-definitions": "~2.71.0",
75
+ "@fluidframework/core-interfaces": "~2.71.0",
76
+ "@fluidframework/core-utils": "~2.71.0",
77
+ "@fluidframework/datastore-definitions": "~2.71.0",
78
+ "@fluidframework/driver-definitions": "~2.71.0",
79
+ "@fluidframework/driver-utils": "~2.71.0",
80
+ "@fluidframework/id-compressor": "~2.71.0",
81
+ "@fluidframework/routerlicious-driver": "~2.71.0",
82
+ "@fluidframework/runtime-definitions": "~2.71.0",
83
+ "@fluidframework/runtime-utils": "~2.71.0",
84
+ "@fluidframework/telemetry-utils": "~2.71.0",
85
85
  "jsrsasign": "^11.0.0",
86
86
  "uuid": "^11.1.0"
87
87
  },
88
88
  "devDependencies": {
89
89
  "@arethetypeswrong/cli": "^0.17.1",
90
90
  "@biomejs/biome": "~1.9.3",
91
- "@fluid-internal/mocha-test-setup": "2.70.0-361788",
91
+ "@fluid-internal/mocha-test-setup": "~2.71.0",
92
92
  "@fluid-tools/build-cli": "^0.58.3",
93
93
  "@fluidframework/build-common": "^2.0.3",
94
94
  "@fluidframework/build-tools": "^0.58.3",
95
- "@fluidframework/eslint-config-fluid": "^6.1.0",
96
- "@fluidframework/test-runtime-utils-previous": "npm:@fluidframework/test-runtime-utils@2.63.0",
95
+ "@fluidframework/eslint-config-fluid": "^7.0.0",
96
+ "@fluidframework/test-runtime-utils-previous": "npm:@fluidframework/test-runtime-utils@2.70.0",
97
97
  "@microsoft/api-extractor": "7.52.11",
98
98
  "@types/jsrsasign": "^10.5.12",
99
99
  "@types/mocha": "^10.0.10",
@@ -109,26 +109,7 @@
109
109
  "typescript": "~5.4.5"
110
110
  },
111
111
  "typeValidation": {
112
- "broken": {
113
- "Class_MockFluidDataStoreContext": {
114
- "backCompat": false
115
- },
116
- "Class_MockFluidDataStoreRuntime": {
117
- "backCompat": false
118
- },
119
- "ClassStatics_MockFluidDataStoreContext": {
120
- "backCompat": false
121
- },
122
- "ClassStatics_MockFluidDataStoreRuntime": {
123
- "backCompat": false
124
- },
125
- "Class_MockObjectStorageService": {
126
- "forwardCompat": false
127
- },
128
- "Class_MockSharedObjectServices": {
129
- "forwardCompat": false
130
- }
131
- },
112
+ "broken": {},
132
113
  "entrypoint": "legacy"
133
114
  },
134
115
  "scripts": {
@@ -159,8 +140,8 @@
159
140
  "ci:build:api-reports:legacy": "api-extractor run --config api-extractor/api-extractor.legacy.json",
160
141
  "ci:build:docs": "api-extractor run",
161
142
  "clean": "rimraf --glob dist lib {alpha,beta,internal,legacy}.d.ts \"**/*.tsbuildinfo\" \"**/*.build.log\" _api-extractor-temp nyc",
162
- "eslint": "eslint --format stylish src",
163
- "eslint:fix": "eslint --format stylish src --fix --fix-type problem,suggestion,layout",
143
+ "eslint": "eslint --quiet --format stylish src",
144
+ "eslint:fix": "eslint --quiet --format stylish src --fix --fix-type problem,suggestion,layout",
164
145
  "format": "npm run format:biome",
165
146
  "format:biome": "biome check . --write",
166
147
  "lint": "fluid-build . --task lint",