@fluidframework/test-runtime-utils 2.74.0 → 2.80.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/CHANGELOG.md +12 -0
- package/api-report/test-runtime-utils.legacy.beta.api.md +3 -3
- package/dist/assertionShortCodesMap.d.ts +4 -6
- package/dist/assertionShortCodesMap.d.ts.map +1 -1
- package/dist/assertionShortCodesMap.js +5 -7
- package/dist/assertionShortCodesMap.js.map +1 -1
- package/dist/mocks.d.ts +3 -2
- package/dist/mocks.d.ts.map +1 -1
- package/dist/mocks.js +2 -1
- package/dist/mocks.js.map +1 -1
- package/dist/validateAssertionError.d.ts.map +1 -1
- package/dist/validateAssertionError.js +4 -4
- package/dist/validateAssertionError.js.map +1 -1
- package/lib/assertionShortCodesMap.d.ts +4 -6
- package/lib/assertionShortCodesMap.d.ts.map +1 -1
- package/lib/assertionShortCodesMap.js +5 -7
- package/lib/assertionShortCodesMap.js.map +1 -1
- package/lib/mocks.d.ts +3 -2
- package/lib/mocks.d.ts.map +1 -1
- package/lib/mocks.js +2 -1
- package/lib/mocks.js.map +1 -1
- package/lib/validateAssertionError.d.ts.map +1 -1
- package/lib/validateAssertionError.js +1 -1
- package/lib/validateAssertionError.js.map +1 -1
- package/package.json +24 -24
- package/src/assertionShortCodesMap.ts +5 -7
- package/src/mocks.ts +8 -3
- package/src/validateAssertionError.ts +2 -1
package/dist/mocks.d.ts
CHANGED
|
@@ -32,7 +32,7 @@ export declare class MockDeltaConnection implements IDeltaConnection {
|
|
|
32
32
|
dirty(): void;
|
|
33
33
|
setConnectionState(connected: boolean): void;
|
|
34
34
|
processMessages(messageCollection: IRuntimeMessageCollection): void;
|
|
35
|
-
reSubmit(content: any, localOpMetadata: unknown, squash
|
|
35
|
+
reSubmit(content: any, localOpMetadata: unknown, squash: boolean): void;
|
|
36
36
|
applyStashedOp(content: any): unknown;
|
|
37
37
|
rollback?(message: any, localOpMetadata: unknown): void;
|
|
38
38
|
}
|
|
@@ -258,6 +258,7 @@ export declare class MockAudience extends TypedEventEmitter<IAudienceEvents> imp
|
|
|
258
258
|
/**
|
|
259
259
|
* Mock implementation of IRuntime for testing that does nothing
|
|
260
260
|
* @legacy @beta
|
|
261
|
+
* @sealed
|
|
261
262
|
*/
|
|
262
263
|
export declare class MockFluidDataStoreRuntime extends EventEmitter implements IFluidDataStoreRuntime, IFluidDataStoreChannel, IFluidHandleContext {
|
|
263
264
|
constructor(overrides?: {
|
|
@@ -350,7 +351,7 @@ export declare class MockFluidDataStoreRuntime extends EventEmitter implements I
|
|
|
350
351
|
setAttachState(attachState: AttachState.Attaching | AttachState.Attached): void;
|
|
351
352
|
waitAttached(): Promise<void>;
|
|
352
353
|
requestDataStore(request: IRequest): Promise<IResponse>;
|
|
353
|
-
reSubmit(content: any, localOpMetadata: unknown, squash
|
|
354
|
+
reSubmit(content: any, localOpMetadata: unknown, squash: boolean): void;
|
|
354
355
|
applyStashedOp(content: any): Promise<unknown>;
|
|
355
356
|
rollback?(message: any, localOpMetadata: unknown): void;
|
|
356
357
|
}
|
package/dist/mocks.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mocks.d.ts","sourceRoot":"","sources":["../src/mocks.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAkB,MAAM,8BAA8B,CAAC;AAC/F,OAAO,EACN,WAAW,EACX,SAAS,EACT,eAAe,EACf,KAAK,EACL,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,gDAAgD,CAAC;AACzF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wDAAwD,CAAC;AACtG,OAAO,EACN,WAAW,EACX,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,KAAK,oBAAoB,EACzB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACN,mBAAmB,EACnB,KAAK,oBAAoB,EACzB,MAAM,0CAA0C,CAAC;AAElD,OAAO,EACN,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,EAChB,aAAa,EACb,QAAQ,EACR,sBAAsB,EACtB,eAAe,EACf,KAAK,mBAAmB,EACxB,MAAM,gDAAgD,CAAC;AACxD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oCAAoC,CAAC;AAClE,OAAO,EACN,cAAc,EACd,gBAAgB,EAChB,YAAY,EAEZ,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACN,UAAU,EAEV,yBAAyB,EACzB,KAAK,aAAa,EAClB,MAAM,6CAA6C,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,EACX,iBAAiB,EACjB,eAAe,EACf,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACN,qBAAqB,EACrB,sBAAsB,EACtB,SAAS,EACT,sBAAsB,EACtB,eAAe,EACf,KAAK,iBAAiB,EACtB,KAAK,yBAAyB,EAE9B,KAAK,uBAAuB,EAC5B,MAAM,8CAA8C,CAAC;AAWtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGnD;;;GAGG;AACH,qBAAa,mBAAoB,YAAW,gBAAgB;IAS1D,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO;IATzB,IAAW,SAAS,IAAI,OAAO,CAE9B;IAED,OAAO,CAAC,UAAU,CAAQ;IACnB,OAAO,EAAE,aAAa,GAAG,SAAS,CAAC;gBAGxB,QAAQ,EAAE,CAAC,cAAc,EAAE,GAAG,EAAE,eAAe,EAAE,OAAO,KAAK,MAAM,EACnE,OAAO,EAAE,MAAM,IAAI;IAG9B,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAKpC,MAAM,CAAC,cAAc,EAAE,GAAG,EAAE,eAAe,EAAE,OAAO,GAAG,MAAM;IAI7D,KAAK,IAAI,IAAI;IAIb,kBAAkB,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI;IAK5C,eAAe,CAAC,iBAAiB,EAAE,yBAAyB,GAAG,IAAI;IAInE,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI;IAIxE,cAAc,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO;IAIrC,QAAQ,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,eAAe,EAAE,OAAO,GAAG,IAAI;CAG9D;AAGD;;GAEG;AACH,MAAM,WAAW,mCAAmC;IACnD,OAAO,EAAE,GAAG,CAAC;IACb,uBAAuB,EAAE,MAAM,CAAC;IAChC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,eAAe,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,wCAAwC;IACxD,IAAI,EAAE,cAAc,CAAC;IACrB,QAAQ,EAAE,eAAe,CAAC;CAC1B;AAED;;;GAGG;AACH,MAAM,WAAW,4BAA4B;IAC5C;;;;;;OAMG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;IAC/B;;;;;OAKG;IACH,QAAQ,CAAC,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACzC;AAcD;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC3C,OAAO,EAAE,GAAG,CAAC;IACb,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,uBAAuB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED;;;;;GAKG;AACH,qBAAa,oBAAqB,SAAQ,iBAAiB,CAAC,uBAAuB,CAAC;;IAgBlF,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,yBAAyB;IAC9D,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,2BAA2B;IAEvD,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC;gCAA4B,MAAM,GAAG,SAAS;;IAlBrE,QAAQ,EAAE,MAAM,CAAC;IACxB,SAAgB,YAAY,EAAE,gBAAgB,CAAC;IAC/C;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,mBAAmB,EAAE,CAAM;IAChE,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,mCAAmC,EAAE,CAAM;IAC/E,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,2BAA2B,EAAE,CAAM;IAC9D,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqC;IACxE;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,QAAQ,CAAC,4BAA4B,CAAC,CAAC;gBAGtD,gBAAgB,EAAE,yBAAyB,EAC3C,OAAO,EAAE,2BAA2B,EACvD,2BAA2B,GAAE,4BAAiE,EAC3E,SAAS,CAAC;gCAA4B,MAAM,GAAG,SAAS;iBAAE;IA4B9E;;OAEG;IACI,qBAAqB,IAAI,mBAAmB;IAM5C,eAAe,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI;IAWvC,kBAAkB,CAAC,GAAG,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IASxE,MAAM,CAAC,cAAc,EAAE,GAAG,EAAE,eAAe,CAAC,EAAE,OAAO,GAAG,MAAM;IA0CrE;;;OAGG;IACH,SAAS,CAAC,+BAA+B,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO;IAQtF,OAAO,CAAC,mBAAmB;IASpB,KAAK,IAAI,IAAI;IACpB,IAAW,OAAO,IAAI,OAAO,CAE5B;IAED;;;OAGG;IACI,KAAK,IAAI,IAAI;IAIpB;;;;OAIG;IACI,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAqCnD;;;;;OAKG;IACI,MAAM,IAAI,IAAI;IAkBrB,SAAS,CAAC,gBAAgB,CACzB,kBAAkB,EAAE;QAAE,OAAO,EAAE,GAAG,CAAC;QAAC,eAAe,CAAC,EAAE,OAAO,CAAA;KAAE,EAAE,GAC/D,IAAI;IAkBP;;;;;;OAMG;IACI,QAAQ,CAAC,IAAI,IAAI;IAQxB,OAAO,CAAC,sBAAsB;IAe9B,OAAO,CAAC,cAAc;IAiBf,OAAO,CAAC,OAAO,EAAE,yBAAyB,GAAG,IAAI;IAkBxD,SAAS,CAAC,iBAAiB,CAC1B,OAAO,EAAE,GAAG,EACZ,eAAe,EAAE,OAAO,EACxB,oBAAoB,EAAE,MAAM,GAC1B,IAAI;IAUP,SAAS,CAAC,eAAe,CAAC,OAAO,EAAE,yBAAyB,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC;IAcpE,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC;CAKpE;AAED;;;;;;;GAOG;AACH,qBAAa,2BAA2B;IAChC,cAAc,SAAK;IACnB,MAAM,sBAA6B;IAC1C,SAAgB,MAAM,oBAA2B;IACjD;;;;;OAKG;IACH,SAAS,CAAC,QAAQ,EAAE,yBAAyB,EAAE,CAAM;IACrD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,oBAAoB,CAAC,CAAa;IAEnE;;;;;OAKG;IACH,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,QAAQ,CAAC,4BAA4B,CAAC,CAAC;gBAGzE,2BAA2B,GAAE,4BAAiE;IAK/F,IAAW,uBAAuB,IAAI,MAAM,CAE3C;IAED;;OAEG;IACI,SAAS,IAAI,MAAM;IAmBnB,sBAAsB,CAC5B,gBAAgB,EAAE,yBAAyB,GACzC,oBAAoB;IAUhB,sBAAsB,CAAC,gBAAgB,EAAE,oBAAoB,GAAG,IAAI;IAIpE,WAAW,CAAC,GAAG,EAAE,OAAO,CAAC,yBAAyB,CAAC,GAAG,IAAI;IAYjE,SAAS,CAAC,oBAAoB,EAAE,yBAAyB,GAAG,SAAS,CAAC;IACtE,SAAS,CAAC,wBAAwB,IAAI,yBAAyB;IAsB/D,OAAO,CAAC,mBAAmB;IAO3B;;OAEG;IACI,iBAAiB,IAAI,IAAI;IAShC;;;OAGG;IACI,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAY/C;;OAEG;IACI,kBAAkB,IAAI,IAAI;CAMjC;AAED;;GAEG;AACH,qBAAa,iBAAkB,YAAW,cAAc,EAAE,YAAY;IACrE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgC;IACxD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsB;gBAEvC,GAAG,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC,EAAE;IAI7D,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,IAAI;IAK9D,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAM9B,UAAU,IAAI,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAM3C,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAGzD,QAAQ,EAAE,OAAO,CAAS;IAE1B,OAAO,IAAI,IAAI;IAIf,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI;IAG7E,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI;IAepE,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI;IAGtE,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI;IAGjF,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI;IAGrF,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI;IAIhF,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI;IAIrE,kBAAkB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI;IAG7D,eAAe,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAGhC,eAAe,IAAI,MAAM;IAGzB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;IAGxE,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;IAG9E,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO;IAGrD,UAAU,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE;IAGjC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM;CAG5C;AAED;;GAEG;AACH,qBAAa,YACZ,SAAQ,iBAAiB,CAAC,eAAe,CACzC,YAAW,cAAc;IAEzB,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAuB;IACvD,OAAO,CAAC,gBAAgB,CAAqB;;IAOtC,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI;IAKlD,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAOvC,UAAU,IAAI,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAGlC,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAIhD,OAAO,IAAI,KAAK,GAAG,SAAS;IAQ5B,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;CAWjD;AAQD;;;GAGG;AACH,qBAAa,yBACZ,SAAQ,YACR,YAAW,sBAAsB,EAAE,sBAAsB,EAAE,mBAAmB;gBAElE,SAAS,CAAC,EAAE;QACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,UAAU,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC;QACvC,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,MAAM,CAAC,EAAE,oBAAoB,CAAC;QAC9B,YAAY,CAAC,EAAE,aAAa,GAAG,iBAAiB,CAAC;QACjD,WAAW,CAAC,EAAE,WAAW,CAAC;QAC1B,QAAQ,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;QACtC,mBAAmB,CAAC,EAAE,uBAAuB,CAAC;KAC9C;IA0BD,OAAO,CAAC,QAAQ,CAAkB;IAClC,SAAgB,UAAU,QAAO,OAAO,CAAkB;IAE1D,SAAgB,UAAU,EAAE,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAE9D;;OAEG;IACH,SAAgB,mBAAmB,EAAE,uBAAuB,GAAG,SAAS,CAAC;IAEzE,IAAW,mBAAmB,IAAI,mBAAmB,CAEpD;IACD,IAAW,kBAAkB,IAAI,mBAAmB,CAEnD;IACD,IAAW,sBAAsB,IAAI,mBAAmB,CAEvD;IACD,IAAW,qBAAqB,IAAI,mBAAmB,CAEtD;IAED,SAAgB,UAAU,EAAE,MAAM,CAAoB;IACtD,SAAgB,EAAE,EAAE,MAAM,CAAC;IAC3B,SAAgB,QAAQ,EAAE,OAAO,CAAoB;IAC9C,OAAO,EAAE,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,GAAG,CAAC,CAAM;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACxB,SAAgB,IAAI,MAAM;IAC1B,SAAgB,SAAS,QAAQ;IAC1B,oBAAoB,mBAA0B;IACrD,IAAW,YAAY,IAAI,mBAAmB,CAE7C;IACD,SAAgB,MAAM,EAAE,OAAO,CAAoB;IACnD,SAAgB,MAAM,EAAE,oBAAoB,CAAC;IACtC,MAAM,oBAA2B;IACxC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsB;IACxC,gBAAgB,CAAC,EAAE,oBAAoB,CAAC;IACxC,YAAY,EAAE,CAAC,aAAa,GAAG,iBAAiB,CAAC,GAAG,SAAS,CAAC;IACrE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA6B;IAC9D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAuC;IAE1D,qBAAqB,IAAI,mBAAmB;IAUnD,IAAW,YAAY,IAAI,MAAM,CAEhC;IAED;;;;OAIG;IACH,IAAW,KAAK,IAAI,OAAO,CAE1B;IACD,IAAW,KAAK,CAAC,KAAK,EAAE,OAAO,EAK9B;IAED,OAAO,CAAC,SAAS,CAAS;IAE1B,IAAW,QAAQ,IAAI,OAAO,CAE7B;IAEM,OAAO,IAAI,IAAI;IAIT,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAG/C,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ;IAWpE;;OAEG;IACI,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B,UAAU,CAAC,OAAO,EAAE,QAAQ,GAAG,IAAI;IAE1C,IAAW,UAAU,IAAI,OAAO,CAE/B;IAED,OAAO,CAAC,YAAY,CAAc;IAClC,IAAW,WAAW,IAAI,WAAW,CAEpC;IAED,IAAW,eAAe,IAAI,eAAe,CAE5C;IAEM,WAAW,CAAC,OAAO,EAAE,QAAQ,GAAG,IAAI;IAIpC,WAAW,IAAI,IAAI;IAInB,yBAAyB,IAAI,IAAI;IAIjC,IAAI,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAIhC,SAAS,IAAI,cAAc;IAI3B,WAAW,IAAI,SAAS;IAIxB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIrB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,UAAU,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;IAIzE,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAIlD,OAAO,CAAC,qBAAqB;IAQ7B,OAAO,CAAC,eAAe;IAQhB,YAAY,EAAE,sBAAsB,CAAC,cAAc,CAAC,CAAc;IAElE,eAAe,CAAC,iBAAiB,EAAE,yBAAyB,GAAG,IAAI;IASnE,aAAa,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAIjD,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI5C,kBAAkB,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAQ/D,mBAAmB,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI;IAItC,aAAa,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC;IAWpD,OAAO,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC;IAI9C,SAAS,CACrB,QAAQ,CAAC,EAAE,OAAO,EAClB,UAAU,CAAC,EAAE,OAAO,GAClB,OAAO,CAAC,qBAAqB,CAAC;IAYpB,SAAS,IAAI,OAAO,CAAC,sBAAsB,CAAC;IAMlD,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,IAAI;IAE5C,iBAAiB,IAAI,UAAU,EAAE;IAIjC,gBAAgB,IAAI,qBAAqB;IAYzC,eAAe,CACrB,gBAAgB,CAAC,EAAE,iBAAiB,GAAG,SAAS,GAC9C,sBAAsB;IAMlB,cAAc,CAAC,WAAW,EAAE,WAAW,CAAC,SAAS,GAAG,WAAW,CAAC,QAAQ,GAAG,IAAI;IA2BzE,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAI7B,gBAAgB,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC;IAI7D,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI;IAMlE,cAAc,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC;IAIpD,QAAQ,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,eAAe,EAAE,OAAO,GAAG,IAAI;CAK9D;AAED;;;GAGG;AACH,qBAAa,wBAAyB,YAAW,gBAAgB;IACzD,SAAS,UAAS;IAElB,MAAM,CAAC,OAAO,KAAA,GAAG,IAAI;IAErB,MAAM,CAAC,cAAc,EAAE,GAAG,GAAG,MAAM;IAInC,KAAK,IAAI,IAAI;CACpB;AAED;;;GAGG;AACH,qBAAa,wBAAyB,YAAW,sBAAsB;IAWnD,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAV5C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAgB;IAE7C;;;;;;;OAOG;gBACiC,QAAQ,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE;IAI1D,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAGhD,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAGxC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAO3C,eAAe,IAAI,aAAa;CAGvC;AAED;;;GAGG;AACH,qBAAa,wBAAyB,YAAW,gBAAgB;WAClD,iBAAiB,CAAC,WAAW,EAAE,YAAY,GAAG,wBAAwB;IAM7E,eAAe,EAAE,gBAAgB,CAAkC;IACnE,aAAa,EAAE,wBAAwB,CAAC;gBAE5B,QAAQ,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE;CAGtD;AA4BD;;;;GAIG;AACH,wBAAgB,8BAA8B,CAAC,QAAQ,EAAE;IACxD,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;CACtB,GAAG,aAAa,CA+BhB"}
|
|
1
|
+
{"version":3,"file":"mocks.d.ts","sourceRoot":"","sources":["../src/mocks.ts"],"names":[],"mappings":"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"}
|
package/dist/mocks.js
CHANGED
|
@@ -268,7 +268,7 @@ class MockContainerRuntime extends client_utils_1.TypedEventEmitter {
|
|
|
268
268
|
this.submit(pendingMessage.content, pendingMessage.localOpMetadata);
|
|
269
269
|
}
|
|
270
270
|
else {
|
|
271
|
-
this.dataStoreRuntime.reSubmit(pendingMessage.content, pendingMessage.localOpMetadata);
|
|
271
|
+
this.dataStoreRuntime.reSubmit(pendingMessage.content, pendingMessage.localOpMetadata, false);
|
|
272
272
|
}
|
|
273
273
|
});
|
|
274
274
|
}
|
|
@@ -613,6 +613,7 @@ const attachStatesToComparableNumbers = {
|
|
|
613
613
|
/**
|
|
614
614
|
* Mock implementation of IRuntime for testing that does nothing
|
|
615
615
|
* @legacy @beta
|
|
616
|
+
* @sealed
|
|
616
617
|
*/
|
|
617
618
|
class MockFluidDataStoreRuntime extends client_utils_1.EventEmitter {
|
|
618
619
|
constructor(overrides) {
|
package/dist/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): void {\n\t\tthis._connected = connected;\n\t\tthis.handler?.setConnectionState(connected);\n\t}\n\n\tpublic processMessages(messageCollection: IRuntimeMessageCollection): void {\n\t\tthis.handler?.processMessages?.(messageCollection);\n\t}\n\n\tpublic reSubmit(content: any, localOpMetadata: unknown, squash?: boolean): void {\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): void {\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>): 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(): boolean {\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(): void {\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(): void {\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(\n\t\tmessage: IInternalMockRuntimeMessage,\n\t\tclientSequenceNumber: number,\n\t): void {\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): void {\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): void {\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): Promise<IResponse> {\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(): number {\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): void {\n\t\tthis.runtimes.delete(containerRuntime);\n\t}\n\n\tpublic pushMessage(msg: Partial<ISequencedDocumentMessage>): void {\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(): ISequencedDocumentMessage {\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(): void {\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(): void {\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): void {\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(): void {\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>): void {\n\t\tthis.members.set(id, client as ISequencedClient);\n\t\tthis.eventEmitter.emit(\"addMember\", id, client);\n\t}\n\n\tremoveMember(id: string): void {\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 = (): boolean => 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): number =>\n\t\t\t\tthis.submitMessageInternal(messageContent, localOpMetadata),\n\t\t\t(): void => this.setChannelDirty(),\n\t\t);\n\t\tthis.deltaConnections.push(deltaConnection);\n\t\treturn deltaConnection;\n\t}\n\n\tpublic get absolutePath(): string {\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(): boolean {\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): void {\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): void {\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): void {\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): void {\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[]): void {}\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): void {\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): Promise<unknown> {\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): void {}\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): MockSharedObjectServices {\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): void {\n\t\tthis._connected = connected;\n\t\tthis.handler?.setConnectionState(connected);\n\t}\n\n\tpublic processMessages(messageCollection: IRuntimeMessageCollection): void {\n\t\tthis.handler?.processMessages?.(messageCollection);\n\t}\n\n\tpublic reSubmit(content: any, localOpMetadata: unknown, squash: boolean): void {\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): void {\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>): 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(): boolean {\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(): void {\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(): void {\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(\n\t\t\t\t\tpendingMessage.content,\n\t\t\t\t\tpendingMessage.localOpMetadata,\n\t\t\t\t\tfalse,\n\t\t\t\t);\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(\n\t\tmessage: IInternalMockRuntimeMessage,\n\t\tclientSequenceNumber: number,\n\t): void {\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): void {\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): void {\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): Promise<IResponse> {\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(): number {\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): void {\n\t\tthis.runtimes.delete(containerRuntime);\n\t}\n\n\tpublic pushMessage(msg: Partial<ISequencedDocumentMessage>): void {\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(): ISequencedDocumentMessage {\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(): void {\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(): void {\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): void {\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(): void {\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>): void {\n\t\tthis.members.set(id, client as ISequencedClient);\n\t\tthis.eventEmitter.emit(\"addMember\", id, client);\n\t}\n\n\tremoveMember(id: string): void {\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 * @sealed\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 = (): boolean => 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): number =>\n\t\t\t\tthis.submitMessageInternal(messageContent, localOpMetadata),\n\t\t\t(): void => this.setChannelDirty(),\n\t\t);\n\t\tthis.deltaConnections.push(deltaConnection);\n\t\treturn deltaConnection;\n\t}\n\n\tpublic get absolutePath(): string {\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(): boolean {\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): void {\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): void {\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): void {\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): void {\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[]): void {}\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): void {\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): Promise<unknown> {\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): void {}\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): MockSharedObjectServices {\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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validateAssertionError.d.ts","sourceRoot":"","sources":["../src/validateAssertionError.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"validateAssertionError.d.ts","sourceRoot":"","sources":["../src/validateAssertionError.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,sBAAsB,CACrC,gBAAgB,EAAE,MAAM,GAAG,MAAM,GAC/B,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAmBxB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,gBAAgB,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAE5F;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,gBAAgB,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAE3F;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC5B,gBAAgB,EAAE,MAAM,GAAG,MAAM,EACjC,SAAS,GAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,KAAa,GAC9C,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAaxB"}
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
7
|
exports.validateError = exports.validateTypeError = exports.validateUsageError = exports.validateAssertionError = void 0;
|
|
8
|
-
const internal_1 = require("@fluidframework/
|
|
9
|
-
const internal_2 = require("@fluidframework/
|
|
8
|
+
const internal_1 = require("@fluidframework/core-utils/internal");
|
|
9
|
+
const internal_2 = require("@fluidframework/telemetry-utils/internal");
|
|
10
10
|
const assertionShortCodesMap_js_1 = require("./assertionShortCodesMap.js");
|
|
11
11
|
/**
|
|
12
12
|
* Validates that an error thrown by our `assert()` function has the expected message, or a
|
|
@@ -48,7 +48,7 @@ exports.validateAssertionError = validateAssertionError;
|
|
|
48
48
|
* @internal
|
|
49
49
|
*/
|
|
50
50
|
function validateUsageError(expectedErrorMsg) {
|
|
51
|
-
return validateError(expectedErrorMsg,
|
|
51
|
+
return validateError(expectedErrorMsg, internal_2.UsageError);
|
|
52
52
|
}
|
|
53
53
|
exports.validateUsageError = validateUsageError;
|
|
54
54
|
/**
|
|
@@ -69,7 +69,7 @@ exports.validateTypeError = validateTypeError;
|
|
|
69
69
|
*/
|
|
70
70
|
function validateError(expectedErrorMsg, errorType = Error) {
|
|
71
71
|
return (error) => {
|
|
72
|
-
(0,
|
|
72
|
+
(0, internal_1.assert)(error instanceof errorType, `Expected an error of type "${errorType.name}", but got "${error}"`);
|
|
73
73
|
if (testErrorMessage(error.message, expectedErrorMsg)) {
|
|
74
74
|
throw new Error(`Unexpected ${errorType.name} thrown\nActual: ${error.message}\nExpected: ${expectedErrorMsg}`);
|
|
75
75
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validateAssertionError.js","sourceRoot":"","sources":["../src/validateAssertionError.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,
|
|
1
|
+
{"version":3,"file":"validateAssertionError.js","sourceRoot":"","sources":["../src/validateAssertionError.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,kEAA6D;AAC7D,uEAAsE;AAEtE,2EAA2D;AAE3D;;;;;;;;;;;;;;GAcG;AACH,SAAgB,sBAAsB,CACrC,gBAAiC;IAEjC,OAAO,CAAC,KAAY,EAAE,EAAE;QACvB,iHAAiH;QACjH,oIAAoI;QACpI,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACxC,MAAM,iBAAiB,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC1C,IAAI,iBAAiB,IAAI,wCAAY,EAAE,CAAC;YACvC,KAAK,CAAC,CAAC,CAAC,GAAG,wCAAY,CAAC,iBAAiB,CAAC,CAAC;QAC5C,CAAC;QACD,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEnC,IAAI,gBAAgB,CAAC,SAAS,EAAE,gBAAgB,CAAC,EAAE,CAAC;YACnD,6GAA6G;YAC7G,oGAAoG;YACpG,MAAM,OAAO,GAAG,wCAAwC,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,MAAM,SAAS,KAAK,eAAe,gBAAgB,EAAE,CAAC;YAC5K,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;QAC1B,CAAC;QACD,OAAO,IAAI,CAAC;IACb,CAAC,CAAC;AACH,CAAC;AArBD,wDAqBC;AAED;;;GAGG;AACH,SAAgB,kBAAkB,CAAC,gBAAiC;IACnE,OAAO,aAAa,CAAC,gBAAgB,EAAE,qBAAU,CAAC,CAAC;AACpD,CAAC;AAFD,gDAEC;AAED;;;GAGG;AACH,SAAgB,iBAAiB,CAAC,gBAAiC;IAClE,OAAO,aAAa,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;AACnD,CAAC;AAFD,8CAEC;AAED;;;;;;;GAOG;AACH,SAAgB,aAAa,CAC5B,gBAAiC,EACjC,YAA2C,KAAK;IAEhD,OAAO,CAAC,KAAY,EAAE,EAAE;QACvB,IAAA,iBAAM,EACL,KAAK,YAAY,SAAS,EAC1B,8BAA8B,SAAS,CAAC,IAAI,eAAe,KAAK,GAAG,CACnE,CAAC;QACF,IAAI,gBAAgB,CAAC,KAAK,CAAC,OAAO,EAAE,gBAAgB,CAAC,EAAE,CAAC;YACvD,MAAM,IAAI,KAAK,CACd,cAAc,SAAS,CAAC,IAAI,oBAAoB,KAAK,CAAC,OAAO,eAAe,gBAAgB,EAAE,CAC9F,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACb,CAAC,CAAC;AACH,CAAC;AAhBD,sCAgBC;AAED,SAAS,gBAAgB,CAAC,aAAqB,EAAE,gBAAiC;IACjF,OAAO,OAAO,gBAAgB,KAAK,QAAQ;QAC1C,CAAC,CAAC,aAAa,KAAK,gBAAgB;QACpC,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAC1C,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { UsageError } from \"@fluidframework/telemetry-utils/internal\";\n\nimport { shortCodeMap } from \"./assertionShortCodesMap.js\";\n\n/**\n * Validates that an error thrown by our `assert()` function has the expected message, or a\n * short code that corresponds to that message.\n *\n * @remarks\n * The main use case for this is so tests that expect specific assert() calls to fail can\n * always do comparisons based on the original string message, and work whether they run\n * before the policy-check tool replaces those strings with short codes, or after. Note that\n * it either returns true or throws an error (the behavior expected by NodeJS' `assert.throws()`).\n *\n * @param expectedErrorMessage - The message that the error object should match (either explicitly,\n * or because it contains a short code which maps to that message).\n * @returns an error validation function suitable for use with NodeJS's `assert.throws()`.\n * @internal\n */\nexport function validateAssertionError(\n\texpectedErrorMsg: string | RegExp,\n): (error: Error) => true {\n\treturn (error: Error) => {\n\t\t// Asserts with custom debugMessageBuilder put extra content on the second line of the message, even when tagged.\n\t\t// Thus extract the first line, which will be the assert tag if there is one, and replace it with the message from the shortCodeMap.\n\t\tconst split = error.message.split(\"\\n\");\n\t\tconst possibleShortCode = split[0].trim();\n\t\tif (possibleShortCode in shortCodeMap) {\n\t\t\tsplit[0] = shortCodeMap[possibleShortCode];\n\t\t}\n\t\tconst mappedMsg = split.join(\"\\n\");\n\n\t\tif (testErrorMessage(mappedMsg, expectedErrorMsg)) {\n\t\t\t// This throws an Error instead of an AssertionError because AssertionError would require a dependency on the\n\t\t\t// node assert library, which we don't want to do for this library because it's used in the browser.\n\t\t\tconst message = `Unexpected assertion thrown\\nActual: ${error.message === mappedMsg ? error.message : `${error.message} ('${mappedMsg}')}`}\\nExpected: ${expectedErrorMsg}`;\n\t\t\tthrow new Error(message);\n\t\t}\n\t\treturn true;\n\t};\n}\n\n/**\n * {@link validateError} for `UsageError`.\n * @internal\n */\nexport function validateUsageError(expectedErrorMsg: string | RegExp): (error: Error) => true {\n\treturn validateError(expectedErrorMsg, UsageError);\n}\n\n/**\n * {@link validateError} for `TypeError`.\n * @internal\n */\nexport function validateTypeError(expectedErrorMsg: string | RegExp): (error: Error) => true {\n\treturn validateError(expectedErrorMsg, TypeError);\n}\n\n/**\n * Validates that a specific kind of error was thrown with the expected message.\n * @remarks\n * Intended for use with NodeJS's `assert.throws`.\n * @see {@link validateAssertionError}, {@link validateUsageError}, {@link validateTypeError} for more specialized versions.\n * @returns an error validation function suitable for use with NodeJS's `assert.throws()`.\n * @internal\n */\nexport function validateError(\n\texpectedErrorMsg: string | RegExp,\n\terrorType: new (...args: any[]) => Error = Error,\n): (error: Error) => true {\n\treturn (error: Error) => {\n\t\tassert(\n\t\t\terror instanceof errorType,\n\t\t\t`Expected an error of type \"${errorType.name}\", but got \"${error}\"`,\n\t\t);\n\t\tif (testErrorMessage(error.message, expectedErrorMsg)) {\n\t\t\tthrow new Error(\n\t\t\t\t`Unexpected ${errorType.name} thrown\\nActual: ${error.message}\\nExpected: ${expectedErrorMsg}`,\n\t\t\t);\n\t\t}\n\t\treturn true;\n\t};\n}\n\nfunction testErrorMessage(actualMessage: string, expectedErrorMsg: string | RegExp): boolean {\n\treturn typeof expectedErrorMsg === \"string\"\n\t\t? actualMessage !== expectedErrorMsg\n\t\t: !expectedErrorMsg.test(actualMessage);\n}\n"]}
|
|
@@ -1006,7 +1006,6 @@ export declare const shortCodeMap: {
|
|
|
1006
1006
|
"0x7a2": string;
|
|
1007
1007
|
"0x7a5": string;
|
|
1008
1008
|
"0x7a8": string;
|
|
1009
|
-
"0x7a9": string;
|
|
1010
1009
|
"0x7aa": string;
|
|
1011
1010
|
"0x7af": string;
|
|
1012
1011
|
"0x7b6": string;
|
|
@@ -1284,14 +1283,10 @@ export declare const shortCodeMap: {
|
|
|
1284
1283
|
"0x9aa": string;
|
|
1285
1284
|
"0x9ab": string;
|
|
1286
1285
|
"0x9ad": string;
|
|
1287
|
-
"0x9af": string;
|
|
1288
|
-
"0x9b0": string;
|
|
1289
1286
|
"0x9b1": string;
|
|
1290
1287
|
"0x9b4": string;
|
|
1291
1288
|
"0x9b5": string;
|
|
1292
1289
|
"0x9b6": string;
|
|
1293
|
-
"0x9b8": string;
|
|
1294
|
-
"0x9b9": string;
|
|
1295
1290
|
"0x9ba": string;
|
|
1296
1291
|
"0x9bb": string;
|
|
1297
1292
|
"0x9bc": string;
|
|
@@ -1437,7 +1432,6 @@ export declare const shortCodeMap: {
|
|
|
1437
1432
|
"0xa94": string;
|
|
1438
1433
|
"0xa95": string;
|
|
1439
1434
|
"0xa97": string;
|
|
1440
|
-
"0xa98": string;
|
|
1441
1435
|
"0xa99": string;
|
|
1442
1436
|
"0xa9a": string;
|
|
1443
1437
|
"0xa9b": string;
|
|
@@ -1893,5 +1887,9 @@ export declare const shortCodeMap: {
|
|
|
1893
1887
|
"0xca9": string;
|
|
1894
1888
|
"0xcaa": string;
|
|
1895
1889
|
"0xcab": string;
|
|
1890
|
+
"0xcac": string;
|
|
1891
|
+
"0xcad": string;
|
|
1892
|
+
"0xcae": string;
|
|
1893
|
+
"0xcaf": string;
|
|
1896
1894
|
};
|
|
1897
1895
|
//# sourceMappingURL=assertionShortCodesMap.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assertionShortCodesMap.d.ts","sourceRoot":"","sources":["../src/assertionShortCodesMap.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,eAAO,MAAM,YAAY
|
|
1
|
+
{"version":3,"file":"assertionShortCodesMap.d.ts","sourceRoot":"","sources":["../src/assertionShortCodesMap.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+1DxB,CAAC"}
|
|
@@ -1007,7 +1007,6 @@ export const shortCodeMap = {
|
|
|
1007
1007
|
"0x7a2": "Must be in a field in order to attach",
|
|
1008
1008
|
"0x7a5": "Must be in a field in order to detach",
|
|
1009
1009
|
"0x7a8": "should be in fields",
|
|
1010
|
-
"0x7a9": "Collision during index update",
|
|
1011
1010
|
"0x7aa": "Unknown removed node ID",
|
|
1012
1011
|
"0x7af": "Destination must be a new empty detached field",
|
|
1013
1012
|
"0x7b6": "Attach source field must be different from current field",
|
|
@@ -1285,14 +1284,10 @@ export const shortCodeMap = {
|
|
|
1285
1284
|
"0x9aa": "identifier must be type string",
|
|
1286
1285
|
"0x9ab": "childId is undefined in unpackChildNodesUsedRoutes",
|
|
1287
1286
|
"0x9ad": "previous ordinal should not be empty",
|
|
1288
|
-
"0x9af": "A view cannot be rebased while it has a pending transaction",
|
|
1289
|
-
"0x9b0": "Views cannot be merged into a view while it has a pending transaction",
|
|
1290
1287
|
"0x9b1": "Expected tree node to have kernel",
|
|
1291
1288
|
"0x9b4": "Unexpected flex node implementation",
|
|
1292
1289
|
"0x9b5": "Inheritance should work",
|
|
1293
1290
|
"0x9b6": "No error to clear",
|
|
1294
|
-
"0x9b8": "Inconsistent data: missing detached node entry",
|
|
1295
|
-
"0x9b9": "Inconsistent data: missing node entry in latestRelevantRevision",
|
|
1296
1291
|
"0x9ba": "Unable to delete unknown entry",
|
|
1297
1292
|
"0x9bb": "Unable to delete unknown entry",
|
|
1298
1293
|
"0x9bc": "detached node id does not exist in the detached field index",
|
|
@@ -1438,7 +1433,6 @@ export const shortCodeMap = {
|
|
|
1438
1433
|
"0xa94": "invalid forbidden field",
|
|
1439
1434
|
"0xa95": "Invalid map schema",
|
|
1440
1435
|
"0xa97": "Not in transaction",
|
|
1441
|
-
"0xa98": "Expected transaction branch",
|
|
1442
1436
|
"0xa99": "must have a parent",
|
|
1443
1437
|
"0xa9a": "must have a parent",
|
|
1444
1438
|
"0xa9b": "attach should happen in a node",
|
|
@@ -1893,6 +1887,10 @@ export const shortCodeMap = {
|
|
|
1893
1887
|
"0xca8": "missing schema",
|
|
1894
1888
|
"0xca9": "missing schema",
|
|
1895
1889
|
"0xcaa": "Reachable schema missing from input TreeSchema",
|
|
1896
|
-
"0xcab": "missing kind"
|
|
1890
|
+
"0xcab": "missing kind",
|
|
1891
|
+
"0xcac": "Unexpected branch implementation",
|
|
1892
|
+
"0xcad": "Unexpected branch implementation",
|
|
1893
|
+
"0xcae": "The outer transaction should be ending",
|
|
1894
|
+
"0xcaf": "Unexpected commit in transaction"
|
|
1897
1895
|
};
|
|
1898
1896
|
//# sourceMappingURL=assertionShortCodesMap.js.map
|