@fluidframework/container-loader 0.51.3 → 0.53.0-46105

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.
Files changed (66) hide show
  1. package/dist/connectionStateHandler.d.ts +1 -0
  2. package/dist/connectionStateHandler.d.ts.map +1 -1
  3. package/dist/connectionStateHandler.js +11 -3
  4. package/dist/connectionStateHandler.js.map +1 -1
  5. package/dist/container.d.ts +15 -23
  6. package/dist/container.d.ts.map +1 -1
  7. package/dist/container.js +125 -140
  8. package/dist/container.js.map +1 -1
  9. package/dist/containerContext.d.ts +5 -4
  10. package/dist/containerContext.d.ts.map +1 -1
  11. package/dist/containerContext.js +4 -0
  12. package/dist/containerContext.js.map +1 -1
  13. package/dist/deltaManager.d.ts +0 -7
  14. package/dist/deltaManager.d.ts.map +1 -1
  15. package/dist/deltaManager.js +38 -50
  16. package/dist/deltaManager.js.map +1 -1
  17. package/dist/deltaQueue.d.ts +5 -1
  18. package/dist/deltaQueue.d.ts.map +1 -1
  19. package/dist/deltaQueue.js.map +1 -1
  20. package/dist/loader.d.ts +8 -3
  21. package/dist/loader.d.ts.map +1 -1
  22. package/dist/loader.js +6 -1
  23. package/dist/loader.js.map +1 -1
  24. package/dist/packageVersion.d.ts +1 -1
  25. package/dist/packageVersion.d.ts.map +1 -1
  26. package/dist/packageVersion.js +1 -1
  27. package/dist/packageVersion.js.map +1 -1
  28. package/dist/utils.js +6 -5
  29. package/dist/utils.js.map +1 -1
  30. package/lib/connectionStateHandler.d.ts +1 -0
  31. package/lib/connectionStateHandler.d.ts.map +1 -1
  32. package/lib/connectionStateHandler.js +11 -3
  33. package/lib/connectionStateHandler.js.map +1 -1
  34. package/lib/container.d.ts +15 -23
  35. package/lib/container.d.ts.map +1 -1
  36. package/lib/container.js +127 -142
  37. package/lib/container.js.map +1 -1
  38. package/lib/containerContext.d.ts +5 -4
  39. package/lib/containerContext.d.ts.map +1 -1
  40. package/lib/containerContext.js +4 -0
  41. package/lib/containerContext.js.map +1 -1
  42. package/lib/deltaManager.d.ts +0 -7
  43. package/lib/deltaManager.d.ts.map +1 -1
  44. package/lib/deltaManager.js +38 -50
  45. package/lib/deltaManager.js.map +1 -1
  46. package/lib/deltaQueue.d.ts +5 -1
  47. package/lib/deltaQueue.d.ts.map +1 -1
  48. package/lib/deltaQueue.js.map +1 -1
  49. package/lib/loader.d.ts +8 -3
  50. package/lib/loader.d.ts.map +1 -1
  51. package/lib/loader.js +6 -1
  52. package/lib/loader.js.map +1 -1
  53. package/lib/packageVersion.d.ts +1 -1
  54. package/lib/packageVersion.d.ts.map +1 -1
  55. package/lib/packageVersion.js +1 -1
  56. package/lib/packageVersion.js.map +1 -1
  57. package/lib/utils.js +6 -5
  58. package/lib/utils.js.map +1 -1
  59. package/package.json +11 -11
  60. package/src/connectionStateHandler.ts +14 -4
  61. package/src/container.ts +150 -160
  62. package/src/containerContext.ts +8 -3
  63. package/src/deltaManager.ts +50 -56
  64. package/src/deltaQueue.ts +10 -1
  65. package/src/loader.ts +33 -24
  66. package/src/packageVersion.ts +1 -1
@@ -3,7 +3,7 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
  import { ITelemetryLogger } from "@fluidframework/common-definitions";
6
- import { IFluidObject, IFluidConfiguration, IRequest, IResponse, IFluidCodeDetails } from "@fluidframework/core-interfaces";
6
+ import { IFluidObject, IFluidConfiguration, IRequest, IResponse, IFluidCodeDetails, FluidObject } from "@fluidframework/core-interfaces";
7
7
  import { IAudience, IContainerContext, IDeltaManager, ILoader, ICriticalContainerError, ContainerWarning, AttachState, ILoaderOptions, ICodeLoader } from "@fluidframework/container-definitions";
8
8
  import { IDocumentStorageService } from "@fluidframework/driver-definitions";
9
9
  import { IClientConfiguration, IClientDetails, IDocumentMessage, IQuorum, ISequencedDocumentMessage, ISignalMessage, ISnapshotTree, ITree, MessageType, ISummaryTree, IVersion } from "@fluidframework/protocol-definitions";
@@ -11,7 +11,7 @@ import { Container } from "./container";
11
11
  import { ICodeDetailsLoader } from "./loader";
12
12
  export declare class ContainerContext implements IContainerContext {
13
13
  private readonly container;
14
- readonly scope: IFluidObject;
14
+ readonly scope: IFluidObject & FluidObject;
15
15
  private readonly codeLoader;
16
16
  private readonly _codeDetails;
17
17
  private readonly _baseSnapshot;
@@ -26,7 +26,7 @@ export declare class ContainerContext implements IContainerContext {
26
26
  readonly updateDirtyContainerState: (dirty: boolean) => void;
27
27
  readonly existing: boolean;
28
28
  readonly pendingLocalState?: unknown;
29
- static createOrLoad(container: Container, scope: IFluidObject, codeLoader: ICodeDetailsLoader | ICodeLoader, codeDetails: IFluidCodeDetails, baseSnapshot: ISnapshotTree | undefined, deltaManager: IDeltaManager<ISequencedDocumentMessage, IDocumentMessage>, quorum: IQuorum, loader: ILoader, raiseContainerWarning: (warning: ContainerWarning) => void, submitFn: (type: MessageType, contents: any, batch: boolean, appData: any) => number, submitSignalFn: (contents: any) => void, closeFn: (error?: ICriticalContainerError) => void, version: string, updateDirtyContainerState: (dirty: boolean) => void, existing: boolean, pendingLocalState?: unknown): Promise<ContainerContext>;
29
+ static createOrLoad(container: Container, scope: FluidObject, codeLoader: ICodeDetailsLoader | ICodeLoader, codeDetails: IFluidCodeDetails, baseSnapshot: ISnapshotTree | undefined, deltaManager: IDeltaManager<ISequencedDocumentMessage, IDocumentMessage>, quorum: IQuorum, loader: ILoader, raiseContainerWarning: (warning: ContainerWarning) => void, submitFn: (type: MessageType, contents: any, batch: boolean, appData: any) => number, submitSignalFn: (contents: any) => void, closeFn: (error?: ICriticalContainerError) => void, version: string, updateDirtyContainerState: (dirty: boolean) => void, existing: boolean, pendingLocalState?: unknown): Promise<ContainerContext>;
30
30
  readonly taggedLogger: ITelemetryLogger;
31
31
  /**
32
32
  * Subtlety: returns this.taggedLogger since vanilla this.logger is now deprecated. See IContainerContext for more
@@ -51,7 +51,8 @@ export declare class ContainerContext implements IContainerContext {
51
51
  get disposed(): boolean;
52
52
  get codeDetails(): IFluidCodeDetails;
53
53
  private readonly _fluidModuleP;
54
- constructor(container: Container, scope: IFluidObject, codeLoader: ICodeDetailsLoader | ICodeLoader, _codeDetails: IFluidCodeDetails, _baseSnapshot: ISnapshotTree | undefined, deltaManager: IDeltaManager<ISequencedDocumentMessage, IDocumentMessage>, quorum: IQuorum, loader: ILoader, raiseContainerWarning: (warning: ContainerWarning) => void, submitFn: (type: MessageType, contents: any, batch: boolean, appData: any) => number, submitSignalFn: (contents: any) => void, closeFn: (error?: ICriticalContainerError) => void, version: string, updateDirtyContainerState: (dirty: boolean) => void, existing: boolean, pendingLocalState?: unknown);
54
+ constructor(container: Container, scope: IFluidObject & FluidObject, codeLoader: ICodeDetailsLoader | ICodeLoader, _codeDetails: IFluidCodeDetails, _baseSnapshot: ISnapshotTree | undefined, deltaManager: IDeltaManager<ISequencedDocumentMessage, IDocumentMessage>, quorum: IQuorum, loader: ILoader, raiseContainerWarning: (warning: ContainerWarning) => void, submitFn: (type: MessageType, contents: any, batch: boolean, appData: any) => number, submitSignalFn: (contents: any) => void, closeFn: (error?: ICriticalContainerError) => void, version: string, updateDirtyContainerState: (dirty: boolean) => void, existing: boolean, pendingLocalState?: unknown);
55
+ getSpecifiedCodeDetails(): IFluidCodeDetails | undefined;
55
56
  dispose(error?: Error): void;
56
57
  snapshot(tagMessage?: string, fullTree?: boolean): Promise<ITree | null>;
57
58
  getLoadedFromVersion(): IVersion | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"containerContext.d.ts","sourceRoot":"","sources":["../src/containerContext.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"containerContext.d.ts","sourceRoot":"","sources":["../src/containerContext.ts"],"names":[],"mappings":"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"}
@@ -91,6 +91,10 @@ class ContainerContext {
91
91
  return this._disposed;
92
92
  }
93
93
  get codeDetails() { return this._codeDetails; }
94
+ getSpecifiedCodeDetails() {
95
+ var _a;
96
+ return ((_a = this.quorum.get("code")) !== null && _a !== void 0 ? _a : this.quorum.get("code2"));
97
+ }
94
98
  dispose(error) {
95
99
  if (this._disposed) {
96
100
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"containerContext.js","sourceRoot":"","sources":["../src/containerContext.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 { ITelemetryLogger } from \"@fluidframework/common-definitions\";\nimport {\n IFluidObject,\n IFluidConfiguration,\n IRequest,\n IResponse,\n IFluidCodeDetails,\n IFluidCodeDetailsComparer,\n IProvideFluidCodeDetailsComparer,\n} from \"@fluidframework/core-interfaces\";\nimport {\n IAudience,\n IContainerContext,\n IDeltaManager,\n ILoader,\n IRuntime,\n ICriticalContainerError,\n ContainerWarning,\n AttachState,\n ILoaderOptions,\n IRuntimeFactory,\n ICodeLoader,\n IProvideRuntimeFactory,\n} from \"@fluidframework/container-definitions\";\nimport { IDocumentStorageService } from \"@fluidframework/driver-definitions\";\nimport {\n IClientConfiguration,\n IClientDetails,\n IDocumentMessage,\n IQuorum,\n ISequencedDocumentMessage,\n ISignalMessage,\n ISnapshotTree,\n ITree,\n MessageType,\n ISummaryTree,\n IVersion,\n} from \"@fluidframework/protocol-definitions\";\nimport { PerformanceEvent } from \"@fluidframework/telemetry-utils\";\nimport { assert, LazyPromise } from \"@fluidframework/common-utils\";\nimport { Container } from \"./container\";\nimport { ICodeDetailsLoader, IFluidModuleWithDetails } from \"./loader\";\n\nconst PackageNotFactoryError = \"Code package does not implement IRuntimeFactory\";\n\nexport class ContainerContext implements IContainerContext {\n public static async createOrLoad(\n container: Container,\n scope: IFluidObject,\n codeLoader: ICodeDetailsLoader | ICodeLoader,\n codeDetails: IFluidCodeDetails,\n baseSnapshot: ISnapshotTree | undefined,\n deltaManager: IDeltaManager<ISequencedDocumentMessage, IDocumentMessage>,\n quorum: IQuorum,\n loader: ILoader,\n raiseContainerWarning: (warning: ContainerWarning) => void,\n submitFn: (type: MessageType, contents: any, batch: boolean, appData: any) => number,\n submitSignalFn: (contents: any) => void,\n closeFn: (error?: ICriticalContainerError) => void,\n version: string,\n updateDirtyContainerState: (dirty: boolean) => void,\n existing: boolean,\n pendingLocalState?: unknown,\n ): Promise<ContainerContext> {\n const context = new ContainerContext(\n container,\n scope,\n codeLoader,\n codeDetails,\n baseSnapshot,\n deltaManager,\n quorum,\n loader,\n raiseContainerWarning,\n submitFn,\n submitSignalFn,\n closeFn,\n version,\n updateDirtyContainerState,\n existing,\n pendingLocalState);\n await context.instantiateRuntime(existing);\n return context;\n }\n\n public readonly taggedLogger: ITelemetryLogger;\n\n /**\n * Subtlety: returns this.taggedLogger since vanilla this.logger is now deprecated. See IContainerContext for more\n * details.\n */\n /** @deprecated See IContainerContext for more details. */\n public get logger(): ITelemetryLogger {\n return this.taggedLogger;\n }\n\n public get id(): string {\n return this.container.id;\n }\n\n public get clientId(): string | undefined {\n return this.container.clientId;\n }\n\n public get clientDetails(): IClientDetails {\n return this.container.clientDetails;\n }\n\n public get connected(): boolean {\n return this.container.connected;\n }\n\n public get canSummarize(): boolean {\n return \"summarize\" in this.runtime;\n }\n\n public get serviceConfiguration(): IClientConfiguration | undefined {\n return this.container.serviceConfiguration;\n }\n\n public get audience(): IAudience {\n return this.container.audience;\n }\n\n public get options(): ILoaderOptions {\n return this.container.options;\n }\n\n public get configuration(): IFluidConfiguration {\n const config: Partial<IFluidConfiguration> = {\n scopes: this.container.scopes,\n };\n return config as IFluidConfiguration;\n }\n\n public get baseSnapshot() {\n return this._baseSnapshot;\n }\n\n public get storage(): IDocumentStorageService {\n return this.container.storage;\n }\n\n private _runtime: IRuntime | undefined;\n private get runtime() {\n if (this._runtime === undefined) {\n throw new Error(\"Attempted to access runtime before it was defined\");\n }\n return this._runtime;\n }\n\n private _disposed = false;\n\n public get disposed() {\n return this._disposed;\n }\n\n public get codeDetails() { return this._codeDetails; }\n\n private readonly _fluidModuleP: Promise<IFluidModuleWithDetails>;\n\n constructor(\n private readonly container: Container,\n public readonly scope: IFluidObject,\n private readonly codeLoader: ICodeDetailsLoader | ICodeLoader,\n private readonly _codeDetails: IFluidCodeDetails,\n private readonly _baseSnapshot: ISnapshotTree | undefined,\n public readonly deltaManager: IDeltaManager<ISequencedDocumentMessage, IDocumentMessage>,\n public readonly quorum: IQuorum,\n public readonly loader: ILoader,\n public readonly raiseContainerWarning: (warning: ContainerWarning) => void,\n public readonly submitFn: (type: MessageType, contents: any, batch: boolean, appData: any) => number,\n public readonly submitSignalFn: (contents: any) => void,\n public readonly closeFn: (error?: ICriticalContainerError) => void,\n public readonly version: string,\n public readonly updateDirtyContainerState: (dirty: boolean) => void,\n public readonly existing: boolean,\n public readonly pendingLocalState?: unknown,\n\n ) {\n this.taggedLogger = container.subLogger;\n this._fluidModuleP = new LazyPromise<IFluidModuleWithDetails>(\n async () => this.loadCodeModule(_codeDetails),\n );\n this.attachListener();\n }\n\n public dispose(error?: Error): void {\n if (this._disposed) {\n return;\n }\n this._disposed = true;\n\n this.runtime.dispose(error);\n this.quorum.dispose();\n this.deltaManager.dispose();\n }\n\n public async snapshot(tagMessage: string = \"\", fullTree: boolean = false): Promise<ITree | null> {\n return this.runtime.snapshot(tagMessage, fullTree);\n }\n\n public getLoadedFromVersion(): IVersion | undefined {\n return this.container.loadedFromVersion;\n }\n\n public get attachState(): AttachState {\n return this.container.attachState;\n }\n\n /**\n * Create a summary. Used when attaching or serializing a detached container.\n *\n * @param blobRedirectTable - A table passed during the attach process. While detached, blob upload is supported\n * using IDs generated locally. After attach, these IDs cannot be used, so this table maps the old local IDs to the\n * new storage IDs so requests can be redirected.\n */\n public createSummary(blobRedirectTable?: Map<string, string>): ISummaryTree {\n return this.runtime.createSummary(blobRedirectTable);\n }\n\n public setConnectionState(connected: boolean, clientId?: string) {\n const runtime = this.runtime;\n\n assert(connected === this.connected, 0x0de /* \"Mismatch in connection state while setting\" */);\n\n runtime.setConnectionState(connected, clientId);\n }\n\n public process(message: ISequencedDocumentMessage, local: boolean, context: any) {\n this.runtime.process(message, local, context);\n }\n\n public processSignal(message: ISignalMessage, local: boolean) {\n this.runtime.processSignal(message, local);\n }\n\n public async request(path: IRequest): Promise<IResponse> {\n return this.runtime.request(path);\n }\n\n public async getAbsoluteUrl(relativeUrl: string): Promise<string | undefined> {\n return this.container.getAbsoluteUrl(relativeUrl);\n }\n\n public getPendingLocalState(): unknown {\n return this.runtime.getPendingLocalState();\n }\n\n /**\n * Determines if the current code details of the context\n * satisfy the incoming constraint code details\n */\n public async satisfies(constraintCodeDetails: IFluidCodeDetails) {\n const comparers: IFluidCodeDetailsComparer[] = [];\n\n const maybeCompareCodeLoader = this.codeLoader;\n if (maybeCompareCodeLoader.IFluidCodeDetailsComparer !== undefined) {\n comparers.push(maybeCompareCodeLoader.IFluidCodeDetailsComparer);\n }\n\n const moduleWithDetails = await this._fluidModuleP;\n const maybeCompareExport: Partial<IProvideFluidCodeDetailsComparer> | undefined =\n moduleWithDetails.module?.fluidExport;\n if (maybeCompareExport?.IFluidCodeDetailsComparer !== undefined) {\n comparers.push(maybeCompareExport.IFluidCodeDetailsComparer);\n }\n\n // if there are not comparers it is not possible to know\n // if the current satisfy the incoming, so return false,\n // as assuming they do not satisfy is safer .e.g we will\n // reload, rather than potentially running with\n // incompatible code\n if (comparers.length === 0) {\n return false;\n }\n\n for (const comparer of comparers) {\n const satisfies = await comparer.satisfies(\n moduleWithDetails.details,\n constraintCodeDetails,\n );\n if (satisfies === false) {\n return false;\n }\n }\n return true;\n }\n\n public notifyAttaching() {\n this.runtime.setAttachState(AttachState.Attaching);\n }\n\n // #region private\n\n private async getRuntimeFactory(): Promise<IRuntimeFactory> {\n const fluidExport: Partial<IProvideRuntimeFactory> | undefined =\n (await this._fluidModuleP).module?.fluidExport;\n const runtimeFactory = fluidExport?.IRuntimeFactory;\n if (runtimeFactory === undefined) {\n throw new Error(PackageNotFactoryError);\n }\n\n return runtimeFactory;\n }\n\n private async instantiateRuntime(existing: boolean) {\n const runtimeFactory = await this.getRuntimeFactory();\n this._runtime = await runtimeFactory.instantiateRuntime(this, existing);\n }\n\n private attachListener() {\n this.container.once(\"attached\", () => {\n this.runtime.setAttachState(AttachState.Attached);\n });\n }\n\n private async loadCodeModule(codeDetails: IFluidCodeDetails) {\n const loadCodeResult = await PerformanceEvent.timedExecAsync(\n this.taggedLogger,\n { eventName: \"CodeLoad\" },\n async () => this.codeLoader.load(codeDetails),\n );\n\n if (\"module\" in loadCodeResult) {\n const { module, details } = loadCodeResult;\n return {\n module,\n details: details ?? codeDetails,\n };\n } else {\n return { module: loadCodeResult, details: codeDetails };\n }\n }\n // #endregion\n}\n"]}
1
+ {"version":3,"file":"containerContext.js","sourceRoot":"","sources":["../src/containerContext.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAaH,iFAa+C;AAe/C,qEAAmE;AACnE,+DAAmE;AAInE,MAAM,sBAAsB,GAAG,iDAAiD,CAAC;AAEjF,MAAa,gBAAgB;IAoHzB,YACqB,SAAoB,EACrB,KAAiC,EAChC,UAA4C,EAC5C,YAA+B,EAC/B,aAAwC,EACzC,YAAwE,EACxE,MAAe,EACf,MAAe,EACf,qBAA0D,EAC1D,QAAoF,EACpF,cAAuC,EACvC,OAAkD,EAClD,OAAe,EACf,yBAAmD,EACnD,QAAiB,EACjB,iBAA2B;QAf1B,cAAS,GAAT,SAAS,CAAW;QACrB,UAAK,GAAL,KAAK,CAA4B;QAChC,eAAU,GAAV,UAAU,CAAkC;QAC5C,iBAAY,GAAZ,YAAY,CAAmB;QAC/B,kBAAa,GAAb,aAAa,CAA2B;QACzC,iBAAY,GAAZ,YAAY,CAA4D;QACxE,WAAM,GAAN,MAAM,CAAS;QACf,WAAM,GAAN,MAAM,CAAS;QACf,0BAAqB,GAArB,qBAAqB,CAAqC;QAC1D,aAAQ,GAAR,QAAQ,CAA4E;QACpF,mBAAc,GAAd,cAAc,CAAyB;QACvC,YAAO,GAAP,OAAO,CAA2C;QAClD,YAAO,GAAP,OAAO,CAAQ;QACf,8BAAyB,GAAzB,yBAAyB,CAA0B;QACnD,aAAQ,GAAR,QAAQ,CAAS;QACjB,sBAAiB,GAAjB,iBAAiB,CAAU;QA1BvC,cAAS,GAAG,KAAK,CAAC;QA6BtB,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC,SAAS,CAAC;QACxC,IAAI,CAAC,aAAa,GAAG,IAAI,0BAAW,CAChC,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAChD,CAAC;QACF,IAAI,CAAC,cAAc,EAAE,CAAC;IAC1B,CAAC;IA3IM,MAAM,CAAC,KAAK,CAAC,YAAY,CAC5B,SAAoB,EACpB,KAAkB,EAClB,UAA4C,EAC5C,WAA8B,EAC9B,YAAuC,EACvC,YAAwE,EACxE,MAAe,EACf,MAAe,EACf,qBAA0D,EAC1D,QAAoF,EACpF,cAAuC,EACvC,OAAkD,EAClD,OAAe,EACf,yBAAmD,EACnD,QAAiB,EACjB,iBAA2B;QAE3B,MAAM,OAAO,GAAG,IAAI,gBAAgB,CAChC,SAAS,EACT,KAAK,EACL,UAAU,EACV,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,MAAM,EACN,MAAM,EACN,qBAAqB,EACrB,QAAQ,EACR,cAAc,EACd,OAAO,EACP,OAAO,EACP,yBAAyB,EACzB,QAAQ,EACR,iBAAiB,CAAC,CAAC;QACvB,MAAM,OAAO,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAC3C,OAAO,OAAO,CAAC;IACnB,CAAC;IAID;;;MAGE;IACF,0DAA0D;IAC1D,IAAW,MAAM;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;IAC7B,CAAC;IAED,IAAW,EAAE;QACT,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;IAC7B,CAAC;IAED,IAAW,QAAQ;QACf,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;IACnC,CAAC;IAED,IAAW,aAAa;QACpB,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;IACxC,CAAC;IAED,IAAW,SAAS;QAChB,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;IACpC,CAAC;IAED,IAAW,YAAY;QACnB,OAAO,WAAW,IAAI,IAAI,CAAC,OAAO,CAAC;IACvC,CAAC;IAED,IAAW,oBAAoB;QAC3B,OAAO,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC;IAC/C,CAAC;IAED,IAAW,QAAQ;QACf,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;IACnC,CAAC;IAED,IAAW,OAAO;QACd,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;IAClC,CAAC;IAED,IAAW,aAAa;QACpB,MAAM,MAAM,GAAiC;YACzC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM;SAChC,CAAC;QACF,OAAO,MAA6B,CAAC;IACzC,CAAC;IAED,IAAW,YAAY;QACnB,OAAO,IAAI,CAAC,aAAa,CAAC;IAC9B,CAAC;IAED,IAAW,OAAO;QACd,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;IAClC,CAAC;IAGD,IAAY,OAAO;QACf,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE;YAC7B,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;SACxE;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAID,IAAW,QAAQ;QACf,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAED,IAAW,WAAW,KAAK,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;IA8B/C,uBAAuB;;QAC1B,OAAO,OAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,mCAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAkC,CAAC;IAClG,CAAC;IAEM,OAAO,CAAC,KAAa;QACxB,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,OAAO;SACV;QACD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QAEtB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACtB,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;IAChC,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAC,aAAqB,EAAE,EAAE,WAAoB,KAAK;QACpE,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IACvD,CAAC;IAEM,oBAAoB;QACvB,OAAO,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC;IAC5C,CAAC;IAED,IAAW,WAAW;QAClB,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;IACtC,CAAC;IAED;;;;;;OAMG;IACI,aAAa,CAAC,iBAAuC;QACxD,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;IACzD,CAAC;IAEM,kBAAkB,CAAC,SAAkB,EAAE,QAAiB;QAC3D,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAE7B,qBAAM,CAAC,SAAS,KAAK,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,kDAAkD,CAAC,CAAC;QAE/F,OAAO,CAAC,kBAAkB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACpD,CAAC;IAEM,OAAO,CAAC,OAAkC,EAAE,KAAc,EAAE,OAAY;QAC3E,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAClD,CAAC;IAEM,aAAa,CAAC,OAAuB,EAAE,KAAc;QACxD,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC/C,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,IAAc;QAC/B,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,WAAmB;QAC3C,OAAO,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;IACtD,CAAC;IAEM,oBAAoB;QACvB,OAAO,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAC/C,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,SAAS,CAAC,qBAAwC;;QAC3D,MAAM,SAAS,GAAgC,EAAE,CAAC;QAElD,MAAM,sBAAsB,GAAG,IAAI,CAAC,UAAU,CAAC;QAC/C,IAAI,sBAAsB,CAAC,yBAAyB,KAAK,SAAS,EAAE;YAChE,SAAS,CAAC,IAAI,CAAC,sBAAsB,CAAC,yBAAyB,CAAC,CAAC;SACpE;QAED,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC;QACnD,MAAM,kBAAkB,SACpB,iBAAiB,CAAC,MAAM,0CAAE,WAAW,CAAC;QAC1C,IAAI,CAAA,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,yBAAyB,MAAK,SAAS,EAAE;YAC7D,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,yBAAyB,CAAC,CAAC;SAChE;QAED,wDAAwD;QACxD,wDAAwD;QACxD,wDAAwD;QACxD,+CAA+C;QAC/C,oBAAoB;QACpB,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;YACxB,OAAO,KAAK,CAAC;SAChB;QAED,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;YAC9B,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,SAAS,CACtC,iBAAiB,CAAC,OAAO,EACzB,qBAAqB,CACxB,CAAC;YACF,IAAI,SAAS,KAAK,KAAK,EAAE;gBACrB,OAAO,KAAK,CAAC;aAChB;SACJ;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,eAAe;QAClB,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,mCAAW,CAAC,SAAS,CAAC,CAAC;IACvD,CAAC;IAED,kBAAkB;IAEV,KAAK,CAAC,iBAAiB;;QAC3B,MAAM,WAAW,SACb,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,0CAAE,WAAW,CAAC;QACnD,MAAM,cAAc,GAAG,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,eAAe,CAAC;QACpD,IAAI,cAAc,KAAK,SAAS,EAAE;YAC9B,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;SAC3C;QAED,OAAO,cAAc,CAAC;IAC1B,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,QAAiB;QAC9C,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACtD,IAAI,CAAC,QAAQ,GAAG,MAAM,cAAc,CAAC,kBAAkB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC5E,CAAC;IAEO,cAAc;QAClB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE;YACjC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,mCAAW,CAAC,QAAQ,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,WAA8B;QACvD,MAAM,cAAc,GAAG,MAAM,kCAAgB,CAAC,cAAc,CACxD,IAAI,CAAC,YAAY,EACjB,EAAE,SAAS,EAAE,UAAU,EAAE,EACzB,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAChD,CAAC;QAEF,IAAI,QAAQ,IAAI,cAAc,EAAE;YAC5B,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,cAAc,CAAC;YAC3C,OAAO;gBACH,MAAM;gBACN,OAAO,EAAE,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,WAAW;aAClC,CAAC;SACL;aAAM;YACH,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;SAC3D;IACL,CAAC;CAEJ;AAtSD,4CAsSC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ITelemetryLogger } from \"@fluidframework/common-definitions\";\nimport {\n IFluidObject,\n IFluidConfiguration,\n IRequest,\n IResponse,\n IFluidCodeDetails,\n IFluidCodeDetailsComparer,\n IProvideFluidCodeDetailsComparer,\n FluidObject,\n} from \"@fluidframework/core-interfaces\";\nimport {\n IAudience,\n IContainerContext,\n IDeltaManager,\n ILoader,\n IRuntime,\n ICriticalContainerError,\n ContainerWarning,\n AttachState,\n ILoaderOptions,\n IRuntimeFactory,\n ICodeLoader,\n IProvideRuntimeFactory,\n} from \"@fluidframework/container-definitions\";\nimport { IDocumentStorageService } from \"@fluidframework/driver-definitions\";\nimport {\n IClientConfiguration,\n IClientDetails,\n IDocumentMessage,\n IQuorum,\n ISequencedDocumentMessage,\n ISignalMessage,\n ISnapshotTree,\n ITree,\n MessageType,\n ISummaryTree,\n IVersion,\n} from \"@fluidframework/protocol-definitions\";\nimport { PerformanceEvent } from \"@fluidframework/telemetry-utils\";\nimport { assert, LazyPromise } from \"@fluidframework/common-utils\";\nimport { Container } from \"./container\";\nimport { ICodeDetailsLoader, IFluidModuleWithDetails } from \"./loader\";\n\nconst PackageNotFactoryError = \"Code package does not implement IRuntimeFactory\";\n\nexport class ContainerContext implements IContainerContext {\n public static async createOrLoad(\n container: Container,\n scope: FluidObject,\n codeLoader: ICodeDetailsLoader | ICodeLoader,\n codeDetails: IFluidCodeDetails,\n baseSnapshot: ISnapshotTree | undefined,\n deltaManager: IDeltaManager<ISequencedDocumentMessage, IDocumentMessage>,\n quorum: IQuorum,\n loader: ILoader,\n raiseContainerWarning: (warning: ContainerWarning) => void,\n submitFn: (type: MessageType, contents: any, batch: boolean, appData: any) => number,\n submitSignalFn: (contents: any) => void,\n closeFn: (error?: ICriticalContainerError) => void,\n version: string,\n updateDirtyContainerState: (dirty: boolean) => void,\n existing: boolean,\n pendingLocalState?: unknown,\n ): Promise<ContainerContext> {\n const context = new ContainerContext(\n container,\n scope,\n codeLoader,\n codeDetails,\n baseSnapshot,\n deltaManager,\n quorum,\n loader,\n raiseContainerWarning,\n submitFn,\n submitSignalFn,\n closeFn,\n version,\n updateDirtyContainerState,\n existing,\n pendingLocalState);\n await context.instantiateRuntime(existing);\n return context;\n }\n\n public readonly taggedLogger: ITelemetryLogger;\n\n /**\n * Subtlety: returns this.taggedLogger since vanilla this.logger is now deprecated. See IContainerContext for more\n * details.\n */\n /** @deprecated See IContainerContext for more details. */\n public get logger(): ITelemetryLogger {\n return this.taggedLogger;\n }\n\n public get id(): string {\n return this.container.id;\n }\n\n public get clientId(): string | undefined {\n return this.container.clientId;\n }\n\n public get clientDetails(): IClientDetails {\n return this.container.clientDetails;\n }\n\n public get connected(): boolean {\n return this.container.connected;\n }\n\n public get canSummarize(): boolean {\n return \"summarize\" in this.runtime;\n }\n\n public get serviceConfiguration(): IClientConfiguration | undefined {\n return this.container.serviceConfiguration;\n }\n\n public get audience(): IAudience {\n return this.container.audience;\n }\n\n public get options(): ILoaderOptions {\n return this.container.options;\n }\n\n public get configuration(): IFluidConfiguration {\n const config: Partial<IFluidConfiguration> = {\n scopes: this.container.scopes,\n };\n return config as IFluidConfiguration;\n }\n\n public get baseSnapshot() {\n return this._baseSnapshot;\n }\n\n public get storage(): IDocumentStorageService {\n return this.container.storage;\n }\n\n private _runtime: IRuntime | undefined;\n private get runtime() {\n if (this._runtime === undefined) {\n throw new Error(\"Attempted to access runtime before it was defined\");\n }\n return this._runtime;\n }\n\n private _disposed = false;\n\n public get disposed() {\n return this._disposed;\n }\n\n public get codeDetails() { return this._codeDetails; }\n\n private readonly _fluidModuleP: Promise<IFluidModuleWithDetails>;\n\n constructor(\n private readonly container: Container,\n public readonly scope: IFluidObject & FluidObject,\n private readonly codeLoader: ICodeDetailsLoader | ICodeLoader,\n private readonly _codeDetails: IFluidCodeDetails,\n private readonly _baseSnapshot: ISnapshotTree | undefined,\n public readonly deltaManager: IDeltaManager<ISequencedDocumentMessage, IDocumentMessage>,\n public readonly quorum: IQuorum,\n public readonly loader: ILoader,\n public readonly raiseContainerWarning: (warning: ContainerWarning) => void,\n public readonly submitFn: (type: MessageType, contents: any, batch: boolean, appData: any) => number,\n public readonly submitSignalFn: (contents: any) => void,\n public readonly closeFn: (error?: ICriticalContainerError) => void,\n public readonly version: string,\n public readonly updateDirtyContainerState: (dirty: boolean) => void,\n public readonly existing: boolean,\n public readonly pendingLocalState?: unknown,\n\n ) {\n this.taggedLogger = container.subLogger;\n this._fluidModuleP = new LazyPromise<IFluidModuleWithDetails>(\n async () => this.loadCodeModule(_codeDetails),\n );\n this.attachListener();\n }\n\n public getSpecifiedCodeDetails(): IFluidCodeDetails | undefined {\n return (this.quorum.get(\"code\") ?? this.quorum.get(\"code2\")) as IFluidCodeDetails | undefined;\n }\n\n public dispose(error?: Error): void {\n if (this._disposed) {\n return;\n }\n this._disposed = true;\n\n this.runtime.dispose(error);\n this.quorum.dispose();\n this.deltaManager.dispose();\n }\n\n public async snapshot(tagMessage: string = \"\", fullTree: boolean = false): Promise<ITree | null> {\n return this.runtime.snapshot(tagMessage, fullTree);\n }\n\n public getLoadedFromVersion(): IVersion | undefined {\n return this.container.loadedFromVersion;\n }\n\n public get attachState(): AttachState {\n return this.container.attachState;\n }\n\n /**\n * Create a summary. Used when attaching or serializing a detached container.\n *\n * @param blobRedirectTable - A table passed during the attach process. While detached, blob upload is supported\n * using IDs generated locally. After attach, these IDs cannot be used, so this table maps the old local IDs to the\n * new storage IDs so requests can be redirected.\n */\n public createSummary(blobRedirectTable?: Map<string, string>): ISummaryTree {\n return this.runtime.createSummary(blobRedirectTable);\n }\n\n public setConnectionState(connected: boolean, clientId?: string) {\n const runtime = this.runtime;\n\n assert(connected === this.connected, 0x0de /* \"Mismatch in connection state while setting\" */);\n\n runtime.setConnectionState(connected, clientId);\n }\n\n public process(message: ISequencedDocumentMessage, local: boolean, context: any) {\n this.runtime.process(message, local, context);\n }\n\n public processSignal(message: ISignalMessage, local: boolean) {\n this.runtime.processSignal(message, local);\n }\n\n public async request(path: IRequest): Promise<IResponse> {\n return this.runtime.request(path);\n }\n\n public async getAbsoluteUrl(relativeUrl: string): Promise<string | undefined> {\n return this.container.getAbsoluteUrl(relativeUrl);\n }\n\n public getPendingLocalState(): unknown {\n return this.runtime.getPendingLocalState();\n }\n\n /**\n * Determines if the current code details of the context\n * satisfy the incoming constraint code details\n */\n public async satisfies(constraintCodeDetails: IFluidCodeDetails) {\n const comparers: IFluidCodeDetailsComparer[] = [];\n\n const maybeCompareCodeLoader = this.codeLoader;\n if (maybeCompareCodeLoader.IFluidCodeDetailsComparer !== undefined) {\n comparers.push(maybeCompareCodeLoader.IFluidCodeDetailsComparer);\n }\n\n const moduleWithDetails = await this._fluidModuleP;\n const maybeCompareExport: Partial<IProvideFluidCodeDetailsComparer> | undefined =\n moduleWithDetails.module?.fluidExport;\n if (maybeCompareExport?.IFluidCodeDetailsComparer !== undefined) {\n comparers.push(maybeCompareExport.IFluidCodeDetailsComparer);\n }\n\n // if there are not comparers it is not possible to know\n // if the current satisfy the incoming, so return false,\n // as assuming they do not satisfy is safer .e.g we will\n // reload, rather than potentially running with\n // incompatible code\n if (comparers.length === 0) {\n return false;\n }\n\n for (const comparer of comparers) {\n const satisfies = await comparer.satisfies(\n moduleWithDetails.details,\n constraintCodeDetails,\n );\n if (satisfies === false) {\n return false;\n }\n }\n return true;\n }\n\n public notifyAttaching() {\n this.runtime.setAttachState(AttachState.Attaching);\n }\n\n // #region private\n\n private async getRuntimeFactory(): Promise<IRuntimeFactory> {\n const fluidExport: FluidObject<IProvideRuntimeFactory> | undefined =\n (await this._fluidModuleP).module?.fluidExport;\n const runtimeFactory = fluidExport?.IRuntimeFactory;\n if (runtimeFactory === undefined) {\n throw new Error(PackageNotFactoryError);\n }\n\n return runtimeFactory;\n }\n\n private async instantiateRuntime(existing: boolean) {\n const runtimeFactory = await this.getRuntimeFactory();\n this._runtime = await runtimeFactory.instantiateRuntime(this, existing);\n }\n\n private attachListener() {\n this.container.once(\"attached\", () => {\n this.runtime.setAttachState(AttachState.Attached);\n });\n }\n\n private async loadCodeModule(codeDetails: IFluidCodeDetails) {\n const loadCodeResult = await PerformanceEvent.timedExecAsync(\n this.taggedLogger,\n { eventName: \"CodeLoad\" },\n async () => this.codeLoader.load(codeDetails),\n );\n\n if (\"module\" in loadCodeResult) {\n const { module, details } = loadCodeResult;\n return {\n module,\n details: details ?? codeDetails,\n };\n } else {\n return { module: loadCodeResult, details: codeDetails };\n }\n }\n // #endregion\n}\n"]}
@@ -113,13 +113,6 @@ export declare class DeltaManager extends TypedEventEmitter<IDeltaManagerInterna
113
113
  * @deprecated - use readOnlyInfo
114
114
  */
115
115
  get readonly(): boolean | undefined;
116
- /**
117
- * Tells if user has no write permissions for file in storage
118
- * It is undefined if we have not yet established websocket connection
119
- * and do not know if user has write access to a file.
120
- * @deprecated - use readOnlyInfo
121
- */
122
- get readonlyPermissions(): boolean | undefined;
123
116
  get readOnlyInfo(): ReadOnlyInfo;
124
117
  /**
125
118
  * Automatic reconnecting enabled or disabled.
@@ -1 +1 @@
1
- {"version":3,"file":"deltaManager.d.ts","sourceRoot":"","sources":["../src/deltaManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deltaManager.d.ts","sourceRoot":"","sources":["../src/deltaManager.ts"],"names":[],"mappings":"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"}
@@ -28,6 +28,7 @@ function getNackReconnectInfo(nackContent) {
28
28
  return driver_utils_1.createGenericNetworkError(`nack [${nackContent.code}]`, message, canRetry, retryAfterMs, { statusCode: nackContent.code });
29
29
  }
30
30
  const createReconnectError = (fluidErrorCode, err) => telemetry_utils_1.wrapError(err, (errorMessage) => new driver_utils_1.GenericNetworkError(fluidErrorCode, errorMessage, true /* canRetry */));
31
+ const fatalConnectErrorProp = { fatalConnectError: true };
31
32
  var ReconnectMode;
32
33
  (function (ReconnectMode) {
33
34
  ReconnectMode["Never"] = "Never";
@@ -76,8 +77,6 @@ class NoDeltaStream extends common_utils_1.TypedEventEmitter {
76
77
  }
77
78
  get disposed() { return this._disposed; }
78
79
  dispose() { this._disposed = true; }
79
- // back-compat: became @deprecated in 0.45 / driver-definitions 0.40
80
- close() { this.dispose(); }
81
80
  }
82
81
  /**
83
82
  * Manages the flow of both inbound and outbound messages. This class ensures that shared objects receive delta
@@ -158,10 +157,6 @@ class DeltaManager extends common_utils_1.TypedEventEmitter {
158
157
  this.reconnectOnError(this.defaultReconnectionMode, createReconnectError("dmDocumentDeltaConnectionDisconnected", disconnectReason));
159
158
  };
160
159
  this.errorHandler = (error) => {
161
- // Observation based on early pre-production telemetry:
162
- // We are getting transport errors from WebSocket here, right before or after "disconnect".
163
- // This happens only in Firefox.
164
- driver_utils_1.logNetworkFailure(this.logger, { eventName: "DeltaConnectionError" }, error);
165
160
  // eslint-disable-next-line @typescript-eslint/no-floating-promises
166
161
  this.reconnectOnError(this.defaultReconnectionMode, createReconnectError("dmDocumentDeltaConnectionError", error));
167
162
  };
@@ -272,7 +267,7 @@ class DeltaManager extends common_utils_1.TypedEventEmitter {
272
267
  get connectionMode() {
273
268
  var _a;
274
269
  common_utils_1.assert(!this.downgradedConnection || ((_a = this.connection) === null || _a === void 0 ? void 0 : _a.mode) === "write", 0x277 /* "Did we forget to reset downgradedConnection on new connection?" */);
275
- if (this.connection === undefined || this.downgradedConnection) {
270
+ if (this.connection === undefined) {
276
271
  return "read";
277
272
  }
278
273
  return this.connection.mode;
@@ -293,15 +288,6 @@ class DeltaManager extends common_utils_1.TypedEventEmitter {
293
288
  }
294
289
  return this._readonlyPermissions;
295
290
  }
296
- /**
297
- * Tells if user has no write permissions for file in storage
298
- * It is undefined if we have not yet established websocket connection
299
- * and do not know if user has write access to a file.
300
- * @deprecated - use readOnlyInfo
301
- */
302
- get readonlyPermissions() {
303
- return this._readonlyPermissions;
304
- }
305
291
  get readOnlyInfo() {
306
292
  const storageOnly = this.connection !== undefined && this.connection instanceof NoDeltaStream;
307
293
  if (storageOnly || this._forceReadonly || this._readonlyPermissions === true) {
@@ -334,7 +320,7 @@ class DeltaManager extends common_utils_1.TypedEventEmitter {
334
320
  sequenceNumber: this.lastSequenceNumber,
335
321
  };
336
322
  if (this.connection !== undefined) {
337
- return Object.assign(Object.assign({}, common), { connectionMode: this.connectionMode });
323
+ return Object.assign(Object.assign({}, common), { connectionMode: this.connectionMode, relayServiceAgent: this.connection.relayServiceAgent });
338
324
  }
339
325
  else {
340
326
  return Object.assign(Object.assign({}, common), {
@@ -378,12 +364,12 @@ class DeltaManager extends common_utils_1.TypedEventEmitter {
378
364
  value: readonly,
379
365
  });
380
366
  }
381
- const oldValue = this.readonly;
367
+ const oldValue = this.readOnlyInfo.readonly;
382
368
  this._forceReadonly = readonly;
383
- if (oldValue !== this.readonly) {
369
+ if (oldValue !== this.readOnlyInfo.readonly) {
384
370
  common_utils_1.assert(this._reconnectMode !== ReconnectMode.Never, 0x279 /* "API is not supported for non-connecting or closed container" */);
385
371
  let reconnect = false;
386
- if (this.readonly === true) {
372
+ if (this.readOnlyInfo.readonly === true) {
387
373
  // If we switch to readonly while connected, we should disconnect first
388
374
  // See comment in the "readonly" event handler to deltaManager set up by
389
375
  // the ContainerRuntime constructor
@@ -394,7 +380,7 @@ class DeltaManager extends common_utils_1.TypedEventEmitter {
394
380
  }
395
381
  reconnect = this.disconnectFromDeltaStream("Force readonly");
396
382
  }
397
- telemetry_utils_1.safeRaiseEvent(this, this.logger, "readonly", this.readonly);
383
+ telemetry_utils_1.safeRaiseEvent(this, this.logger, "readonly", this.readOnlyInfo.readonly);
398
384
  if (reconnect) {
399
385
  // reconnect if we disconnected from before.
400
386
  this.triggerConnect({ reason: "forceReadonly", mode: "read", fetchOpsFromStorage: false });
@@ -416,13 +402,13 @@ class DeltaManager extends common_utils_1.TypedEventEmitter {
416
402
  // stalled op processing
417
403
  fetchReason: this.fetchReason,
418
404
  // A bunch of useful sequence numbers to understand if we are holding some ops from processing
419
- lastQueuedSequenceNumber: this.lastQueuedSequenceNumber, lastProcessedSequenceNumber: this.lastProcessedSequenceNumber, lastObserved: this.lastObservedSeqNumber }), this.connectionStateProps), { pendingOps: this.pending.length, pendingFirst: (_a = pendingSorted[0]) === null || _a === void 0 ? void 0 : _a.sequenceNumber, haveHandler: this.handler !== undefined, closed: this.closed }));
405
+ lastQueuedSequenceNumber: this.lastQueuedSequenceNumber, lastProcessedSequenceNumber: this.lastProcessedSequenceNumber, lastObserved: this.lastObservedSeqNumber }), this.connectionStateProps), { pendingOps: this.pending.length, pendingFirst: (_a = pendingSorted[0]) === null || _a === void 0 ? void 0 : _a.sequenceNumber, haveHandler: this.handler !== undefined, inboundLength: this.inbound.length, inboundPaused: this.inbound.paused }));
420
406
  }
421
407
  set_readonlyPermissions(readonly) {
422
- const oldValue = this.readonly;
408
+ const oldValue = this.readOnlyInfo.readonly;
423
409
  this._readonlyPermissions = readonly;
424
- if (oldValue !== this.readonly) {
425
- telemetry_utils_1.safeRaiseEvent(this, this.logger, "readonly", this.readonly);
410
+ if (oldValue !== this.readOnlyInfo.readonly) {
411
+ telemetry_utils_1.safeRaiseEvent(this, this.logger, "readonly", this.readOnlyInfo.readonly);
426
412
  }
427
413
  }
428
414
  dispose() {
@@ -538,9 +524,7 @@ class DeltaManager extends common_utils_1.TypedEventEmitter {
538
524
  this.fetchMissingDeltas(args.reason, this.lastQueuedSequenceNumber);
539
525
  }
540
526
  const docService = this.serviceProvider();
541
- if (docService === undefined) {
542
- throw new Error("Container is not attached");
543
- }
527
+ common_utils_1.assert(docService !== undefined, 0x2a7 /* "Container is not attached" */);
544
528
  if (((_c = docService.policies) === null || _c === void 0 ? void 0 : _c.storageOnly) === true) {
545
529
  const connection = new NoDeltaStream();
546
530
  this.connectionP = Promise.resolve(connection); // to keep setupNewSuccessfulConnection happy
@@ -553,6 +537,7 @@ class DeltaManager extends common_utils_1.TypedEventEmitter {
553
537
  let delayMs = InitialReconnectDelayInMs;
554
538
  let connectRepeatCount = 0;
555
539
  const connectStartTime = common_utils_1.performance.now();
540
+ let lastError;
556
541
  // This loop will keep trying to connect until successful, with a delay between each iteration.
557
542
  while (connection === undefined) {
558
543
  if (this.closed) {
@@ -577,9 +562,8 @@ class DeltaManager extends common_utils_1.TypedEventEmitter {
577
562
  }
578
563
  // Socket.io error when we connect to wrong socket, or hit some multiplexing bug
579
564
  if (!driver_utils_1.canRetryOnError(origError)) {
580
- const error = telemetry_utils_1.normalizeError(origError);
565
+ const error = telemetry_utils_1.normalizeError(origError, { props: fatalConnectErrorProp });
581
566
  this.close(error);
582
- // eslint-disable-next-line @typescript-eslint/no-throw-literal
583
567
  throw error;
584
568
  }
585
569
  // Log error once - we get too many errors in logs when we are offline,
@@ -588,8 +572,10 @@ class DeltaManager extends common_utils_1.TypedEventEmitter {
588
572
  driver_utils_1.logNetworkFailure(this.logger, {
589
573
  delay: delayMs,
590
574
  eventName: "DeltaConnectionFailureToConnect",
575
+ duration: telemetry_utils_1.TelemetryLogger.formatTick(common_utils_1.performance.now() - connectStartTime),
591
576
  }, origError);
592
577
  }
578
+ lastError = origError;
593
579
  const retryDelayFromError = driver_utils_1.getRetryDelayFromError(origError);
594
580
  delayMs = retryDelayFromError !== null && retryDelayFromError !== void 0 ? retryDelayFromError : Math.min(delayMs * 2, MaxReconnectDelayInMs);
595
581
  if (retryDelayFromError !== undefined) {
@@ -601,10 +587,10 @@ class DeltaManager extends common_utils_1.TypedEventEmitter {
601
587
  // If we retried more than once, log an event about how long it took
602
588
  if (connectRepeatCount > 1) {
603
589
  this.logger.sendTelemetryEvent({
590
+ eventName: "MultipleDeltaConnectionFailures",
604
591
  attempts: connectRepeatCount,
605
592
  duration: telemetry_utils_1.TelemetryLogger.formatTick(common_utils_1.performance.now() - connectStartTime),
606
- eventName: "MultipleDeltaConnectionFailures",
607
- });
593
+ }, lastError);
608
594
  }
609
595
  this.setupNewSuccessfulConnection(connection, requestedMode);
610
596
  return connection;
@@ -621,8 +607,9 @@ class DeltaManager extends common_utils_1.TypedEventEmitter {
621
607
  this.connectionP = undefined;
622
608
  this.removeListener("closed", cleanupAndReject);
623
609
  // This error came from some logic error in this file. Fail-fast to learn and fix the issue faster
624
- this.close(error);
625
- deferred.reject(error);
610
+ const normalizedError = telemetry_utils_1.normalizeError(error, { props: fatalConnectErrorProp });
611
+ this.close(normalizedError);
612
+ deferred.reject(normalizedError);
626
613
  };
627
614
  this.on("closed", cleanupAndReject);
628
615
  // Attempt the connection
@@ -654,7 +641,7 @@ class DeltaManager extends common_utils_1.TypedEventEmitter {
654
641
  // const serializedContent = JSON.stringify(this.messageBuffer);
655
642
  // const maxOpSize = this.context.deltaManager.maxMessageSize;
656
643
  var _a, _b;
657
- if (this.readonly === true) {
644
+ if (this.readOnlyInfo.readonly === true) {
658
645
  common_utils_1.assert(this.readOnlyInfo.readonly === true, 0x1f0 /* "Unexpected mismatch in readonly" */);
659
646
  const error = new container_utils_1.GenericError("deltaManagerReadonlySubmit", undefined /* error */, {
660
647
  readonly: this.readOnlyInfo.readonly,
@@ -680,7 +667,7 @@ class DeltaManager extends common_utils_1.TypedEventEmitter {
680
667
  // Note that we also want nacks to be rare and be treated as catastrophic failures.
681
668
  // Be careful with reentrancy though - disconnected event should not be be raised in the
682
669
  // middle of the current workflow, but rather on clean stack!
683
- if (this.connectionMode === "read") {
670
+ if (this.connectionMode === "read" || this.downgradedConnection) {
684
671
  if (!this.pendingReconnect) {
685
672
  this.pendingReconnect = true;
686
673
  Promise.resolve().then(async () => {
@@ -791,7 +778,7 @@ class DeltaManager extends common_utils_1.TypedEventEmitter {
791
778
  try {
792
779
  const stream = this.deltaStorage.fetchMessages(from, // inclusive
793
780
  to, // exclusive
794
- controller.signal, cacheOnly);
781
+ controller.signal, cacheOnly, this.fetchReason);
795
782
  // eslint-disable-next-line no-constant-condition
796
783
  while (true) {
797
784
  const result = await stream.read();
@@ -824,8 +811,11 @@ class DeltaManager extends common_utils_1.TypedEventEmitter {
824
811
  // Ensure that things like triggerConnect() will short circuit
825
812
  this._reconnectMode = ReconnectMode.Never;
826
813
  this.closeAbortController.abort();
814
+ const disconnectReason = error !== undefined
815
+ ? `Closing DeltaManager (${error.message})`
816
+ : "Closing DeltaManager";
827
817
  // This raises "disconnect" event if we have active connection.
828
- this.disconnectFromDeltaStream(error !== undefined ? `${error.message}` : "Container closed");
818
+ this.disconnectFromDeltaStream(disconnectReason);
829
819
  this._inbound.clear();
830
820
  this._outbound.clear();
831
821
  this._inboundSignal.clear();
@@ -890,7 +880,7 @@ class DeltaManager extends common_utils_1.TypedEventEmitter {
890
880
  this.refreshDelayInfo(this.deltaStreamDelayId);
891
881
  if (this.closed) {
892
882
  // Raise proper events, Log telemetry event and close connection.
893
- this.disconnectFromDeltaStream(`Disconnect on close`);
883
+ this.disconnectFromDeltaStream("DeltaManager already closed");
894
884
  return;
895
885
  }
896
886
  // We cancel all ops on lost of connectivity, and rely on DDSes to resubmit them.
@@ -917,6 +907,9 @@ class DeltaManager extends common_utils_1.TypedEventEmitter {
917
907
  clientId: connection.clientId,
918
908
  mode: connection.mode,
919
909
  };
910
+ if (connection.relayServiceAgent !== undefined) {
911
+ this.connectionStateProps.relayServiceAgent = connection.relayServiceAgent;
912
+ }
920
913
  this._hasCheckpointSequenceNumber = false;
921
914
  // Some storages may provide checkpointSequenceNumber to identify how far client is behind.
922
915
  const checkpointSequenceNumber = connection.checkpointSequenceNumber;
@@ -989,14 +982,7 @@ class DeltaManager extends common_utils_1.TypedEventEmitter {
989
982
  this._outbound.pause();
990
983
  this._outbound.clear();
991
984
  this.emit("disconnect", reason);
992
- // back-compat: added in 0.45. Make it unconditional (i.e. use connection.dispose()) in some future.
993
- const disposable = connection;
994
- if (disposable.dispose !== undefined) {
995
- disposable.dispose();
996
- }
997
- else {
998
- connection.close();
999
- }
985
+ connection.dispose();
1000
986
  this.connectionStateProps = {};
1001
987
  return true;
1002
988
  }
@@ -1025,11 +1011,14 @@ class DeltaManager extends common_utils_1.TypedEventEmitter {
1025
1011
  this.disconnectFromDeltaStream(disconnectMessage);
1026
1012
  const canRetry = error !== undefined ? driver_utils_1.canRetryOnError(error) : true;
1027
1013
  // If reconnection is not an option, close the DeltaManager
1028
- if (this.reconnectMode === ReconnectMode.Never || !canRetry) {
1014
+ if (!canRetry) {
1015
+ this.close(telemetry_utils_1.normalizeError(error, { props: fatalConnectErrorProp }));
1016
+ }
1017
+ else if (this.reconnectMode === ReconnectMode.Never) {
1029
1018
  // Do not raise container error if we are closing just because we lost connection.
1030
1019
  // Those errors (like IdleDisconnect) would show up in telemetry dashboards and
1031
1020
  // are very misleading, as first initial reaction - some logic is broken.
1032
- this.close(canRetry ? undefined : error);
1021
+ this.close();
1033
1022
  }
1034
1023
  // If closed then we can't reconnect
1035
1024
  if (this.closed) {
@@ -1186,7 +1175,6 @@ class DeltaManager extends common_utils_1.TypedEventEmitter {
1186
1175
  // We have been kicked out from quorum
1187
1176
  this.logger.sendPerformanceEvent({ eventName: "ReadConnectionTransition" });
1188
1177
  this.downgradedConnection = true;
1189
- common_utils_1.assert(this.connectionMode === "read", 0x27c /* "effective connectionMode should be 'read' after downgrade" */);
1190
1178
  }
1191
1179
  }
1192
1180
  // Add final ack trace.