@fluidframework/routerlicious-driver 2.102.0 → 2.103.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.
Files changed (72) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/dist/deltaStorageService.d.ts +3 -3
  3. package/dist/deltaStorageService.d.ts.map +1 -1
  4. package/dist/deltaStorageService.js.map +1 -1
  5. package/dist/documentDeltaConnection.d.ts +2 -2
  6. package/dist/documentDeltaConnection.d.ts.map +1 -1
  7. package/dist/documentDeltaConnection.js.map +1 -1
  8. package/dist/documentService.d.ts +2 -2
  9. package/dist/documentService.d.ts.map +1 -1
  10. package/dist/documentService.js.map +1 -1
  11. package/dist/documentStorageService.d.ts +2 -2
  12. package/dist/documentStorageService.d.ts.map +1 -1
  13. package/dist/documentStorageService.js.map +1 -1
  14. package/dist/packageVersion.d.ts +1 -1
  15. package/dist/packageVersion.js +1 -1
  16. package/dist/packageVersion.js.map +1 -1
  17. package/dist/restWrapper.d.ts +6 -6
  18. package/dist/restWrapper.d.ts.map +1 -1
  19. package/dist/restWrapper.js.map +1 -1
  20. package/dist/retriableGitManager.d.ts +2 -2
  21. package/dist/retriableGitManager.d.ts.map +1 -1
  22. package/dist/retriableGitManager.js.map +1 -1
  23. package/dist/sessionInfoManager.d.ts +2 -2
  24. package/dist/sessionInfoManager.d.ts.map +1 -1
  25. package/dist/sessionInfoManager.js.map +1 -1
  26. package/dist/shreddedSummaryDocumentStorageService.d.ts +3 -3
  27. package/dist/shreddedSummaryDocumentStorageService.d.ts.map +1 -1
  28. package/dist/shreddedSummaryDocumentStorageService.js.map +1 -1
  29. package/dist/wholeSummaryDocumentStorageService.d.ts +3 -3
  30. package/dist/wholeSummaryDocumentStorageService.d.ts.map +1 -1
  31. package/dist/wholeSummaryDocumentStorageService.js.map +1 -1
  32. package/lib/deltaStorageService.d.ts +3 -3
  33. package/lib/deltaStorageService.d.ts.map +1 -1
  34. package/lib/deltaStorageService.js.map +1 -1
  35. package/lib/documentDeltaConnection.d.ts +2 -2
  36. package/lib/documentDeltaConnection.d.ts.map +1 -1
  37. package/lib/documentDeltaConnection.js.map +1 -1
  38. package/lib/documentService.d.ts +2 -2
  39. package/lib/documentService.d.ts.map +1 -1
  40. package/lib/documentService.js.map +1 -1
  41. package/lib/documentStorageService.d.ts +2 -2
  42. package/lib/documentStorageService.d.ts.map +1 -1
  43. package/lib/documentStorageService.js.map +1 -1
  44. package/lib/packageVersion.d.ts +1 -1
  45. package/lib/packageVersion.js +1 -1
  46. package/lib/packageVersion.js.map +1 -1
  47. package/lib/restWrapper.d.ts +6 -6
  48. package/lib/restWrapper.d.ts.map +1 -1
  49. package/lib/restWrapper.js.map +1 -1
  50. package/lib/retriableGitManager.d.ts +2 -2
  51. package/lib/retriableGitManager.d.ts.map +1 -1
  52. package/lib/retriableGitManager.js.map +1 -1
  53. package/lib/sessionInfoManager.d.ts +2 -2
  54. package/lib/sessionInfoManager.d.ts.map +1 -1
  55. package/lib/sessionInfoManager.js.map +1 -1
  56. package/lib/shreddedSummaryDocumentStorageService.d.ts +3 -3
  57. package/lib/shreddedSummaryDocumentStorageService.d.ts.map +1 -1
  58. package/lib/shreddedSummaryDocumentStorageService.js.map +1 -1
  59. package/lib/wholeSummaryDocumentStorageService.d.ts +3 -3
  60. package/lib/wholeSummaryDocumentStorageService.d.ts.map +1 -1
  61. package/lib/wholeSummaryDocumentStorageService.js.map +1 -1
  62. package/package.json +9 -9
  63. package/src/deltaStorageService.ts +3 -3
  64. package/src/documentDeltaConnection.ts +3 -3
  65. package/src/documentService.ts +2 -2
  66. package/src/documentStorageService.ts +3 -3
  67. package/src/packageVersion.ts +1 -1
  68. package/src/restWrapper.ts +8 -8
  69. package/src/retriableGitManager.ts +2 -2
  70. package/src/sessionInfoManager.ts +2 -2
  71. package/src/shreddedSummaryDocumentStorageService.ts +2 -2
  72. package/src/wholeSummaryDocumentStorageService.ts +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"documentService.js","sourceRoot":"","sources":["../src/documentService.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 { TypedEventEmitter } from \"@fluid-internal/client-utils\";\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport type { IClient } from \"@fluidframework/driver-definitions\";\nimport type {\n\tIDocumentServiceEvents,\n\tIDocumentServicePolicies,\n\tIDocumentDeltaConnection,\n\tIDocumentDeltaStorageService,\n\tIDocumentService,\n\tIDocumentStorageService,\n\tIDocumentStorageServicePolicies,\n\tIResolvedUrl,\n} from \"@fluidframework/driver-definitions/internal\";\nimport {\n\tNetworkErrorBasic,\n\tRateLimiter,\n\tcanRetryOnError,\n} from \"@fluidframework/driver-utils/internal\";\nimport type { ITelemetryLoggerExt } from \"@fluidframework/telemetry-utils/internal\";\nimport { PerformanceEvent, wrapError } from \"@fluidframework/telemetry-utils/internal\";\n\nimport type { ICache } from \"./cache.js\";\nimport type { INormalizedWholeSnapshot } from \"./contracts.js\";\nimport type { ISnapshotTreeVersion } from \"./definitions.js\";\nimport { DeltaStorageService, DocumentDeltaStorageService } from \"./deltaStorageService.js\";\nimport { R11sDocumentDeltaConnection } from \"./documentDeltaConnection.js\";\nimport { DocumentStorageService } from \"./documentStorageService.js\";\nimport { RouterliciousErrorTypes, type IR11sError } from \"./errorUtils.js\";\nimport { GitManager } from \"./gitManager.js\";\nimport { Historian } from \"./historian.js\";\nimport { NullBlobStorageService } from \"./nullBlobStorageService.js\";\nimport { pkgVersion as driverVersion } from \"./packageVersion.js\";\nimport type { IRouterliciousDriverPolicies } from \"./policies.js\";\nimport type { TokenFetcher } from \"./restWrapper.js\";\nimport {\n\tRouterliciousOrdererRestWrapper,\n\tRouterliciousStorageRestWrapper,\n} from \"./restWrapper.js\";\nimport type { RestWrapper } from \"./restWrapperBase.js\";\nimport type { IGetSessionInfoResponse } from \"./sessionInfoManager.js\";\nimport { SocketIOClientStatic } from \"./socketModule.js\";\nimport type { ITokenProvider } from \"./tokens.js\";\n\n/**\n * The DocumentService manages the Socket.IO connection and manages routing requests to connected\n * clients.\n */\nexport class DocumentService\n\textends TypedEventEmitter<IDocumentServiceEvents>\n\timplements IDocumentService\n{\n\tprivate storageManager: GitManager | undefined;\n\tprivate noCacheStorageManager: GitManager | undefined;\n\n\tprivate _policies: IDocumentServicePolicies | undefined;\n\n\tpublic get resolvedUrl(): IResolvedUrl {\n\t\treturn this._resolvedUrl;\n\t}\n\n\tconstructor(\n\t\tprivate _resolvedUrl: IResolvedUrl,\n\t\tprotected ordererUrl: string,\n\t\tprivate deltaStorageUrl: string,\n\t\tprivate deltaStreamUrl: string,\n\t\tprivate storageUrl: string,\n\t\tprivate readonly logger: ITelemetryLoggerExt,\n\t\tprotected tokenProvider: ITokenProvider,\n\t\tprotected tenantId: string,\n\t\tprotected documentId: string,\n\t\tprotected ordererRestWrapper: RouterliciousOrdererRestWrapper,\n\t\tprivate readonly documentStorageServicePolicies: IDocumentStorageServicePolicies,\n\t\tprivate readonly driverPolicies: IRouterliciousDriverPolicies,\n\t\tprivate readonly blobCache: ICache<ArrayBufferLike>,\n\t\tprivate readonly wholeSnapshotTreeCache: ICache<INormalizedWholeSnapshot>,\n\t\tprivate readonly shreddedSummaryTreeCache: ICache<ISnapshotTreeVersion>,\n\t\tprivate readonly getSessionInfo: () => Promise<IGetSessionInfoResponse>,\n\t\tprivate storageRestWrapper: RouterliciousStorageRestWrapper,\n\t\tprivate readonly storageTokenFetcher: TokenFetcher,\n\t\tprivate readonly ordererTokenFetcher: TokenFetcher,\n\t) {\n\t\tsuper();\n\t}\n\n\tprivate documentStorageService: DocumentStorageService | undefined;\n\n\tpublic get policies(): IDocumentServicePolicies | undefined {\n\t\treturn this._policies;\n\t}\n\n\tpublic dispose(): void {}\n\n\t/**\n\t * Connects to a storage endpoint for snapshot service.\n\t *\n\t * @returns returns the document storage service for routerlicious driver.\n\t */\n\tpublic async connectToStorage(): Promise<IDocumentStorageService> {\n\t\tif (this.documentStorageService !== undefined) {\n\t\t\treturn this.documentStorageService;\n\t\t}\n\n\t\tif (this.storageUrl === undefined) {\n\t\t\treturn new NullBlobStorageService();\n\t\t}\n\n\t\tconst getStorageManager = async (disableCache?: boolean): Promise<GitManager> => {\n\t\t\tconst refreshed = await this.refreshSessionInfoIfNeeded();\n\t\t\tif (!this.storageManager || !this.noCacheStorageManager || refreshed) {\n\t\t\t\tif (refreshed) {\n\t\t\t\t\tconst rateLimiter = new RateLimiter(\n\t\t\t\t\t\tthis.driverPolicies.maxConcurrentStorageRequests,\n\t\t\t\t\t);\n\t\t\t\t\tthis.storageRestWrapper = RouterliciousStorageRestWrapper.load(\n\t\t\t\t\t\tthis.tenantId,\n\t\t\t\t\t\tthis.storageTokenFetcher,\n\t\t\t\t\t\tthis.logger,\n\t\t\t\t\t\trateLimiter,\n\t\t\t\t\t\tthis.driverPolicies.enableRestLess,\n\t\t\t\t\t\tthis.storageUrl /* baseUrl */,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tconst historian = new Historian(true, false, this.storageRestWrapper);\n\t\t\t\tthis.storageManager = new GitManager(historian);\n\t\t\t\tconst noCacheHistorian = new Historian(true, true, this.storageRestWrapper);\n\t\t\t\tthis.noCacheStorageManager = new GitManager(noCacheHistorian);\n\t\t\t}\n\n\t\t\treturn disableCache ? this.noCacheStorageManager : this.storageManager;\n\t\t};\n\t\t// Initialize storageManager and noCacheStorageManager\n\t\tconst storageManager = await getStorageManager();\n\t\tconst noCacheStorageManager = await getStorageManager(true);\n\t\tthis.documentStorageService = new DocumentStorageService(\n\t\t\tthis.documentId,\n\t\t\tstorageManager,\n\t\t\tthis.logger,\n\t\t\tthis.documentStorageServicePolicies,\n\t\t\tthis.driverPolicies,\n\t\t\tthis.blobCache,\n\t\t\tthis.wholeSnapshotTreeCache,\n\t\t\tthis.shreddedSummaryTreeCache,\n\t\t\tnoCacheStorageManager,\n\t\t\tgetStorageManager,\n\t\t);\n\t\treturn this.documentStorageService;\n\t}\n\n\t/**\n\t * Connects to a delta storage endpoint for getting ops between a range.\n\t *\n\t * @returns returns the document delta storage service for routerlicious driver.\n\t */\n\tpublic async connectToDeltaStorage(): Promise<IDocumentDeltaStorageService> {\n\t\tawait this.connectToStorage();\n\t\tassert(!!this.documentStorageService, 0x0b1 /* \"Storage service not initialized\" */);\n\n\t\tconst getRestWrapper = async (): Promise<RestWrapper> => {\n\t\t\tconst refreshed = await this.refreshSessionInfoIfNeeded();\n\n\t\t\tif (refreshed) {\n\t\t\t\tconst rateLimiter = new RateLimiter(this.driverPolicies.maxConcurrentOrdererRequests);\n\t\t\t\tthis.ordererRestWrapper = RouterliciousOrdererRestWrapper.load(\n\t\t\t\t\tthis.ordererTokenFetcher,\n\t\t\t\t\tthis.logger,\n\t\t\t\t\trateLimiter,\n\t\t\t\t\tthis.driverPolicies.enableRestLess,\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn this.ordererRestWrapper;\n\t\t};\n\t\tconst restWrapper = await getRestWrapper();\n\t\tconst deltaStorageService = new DeltaStorageService(\n\t\t\tthis.deltaStorageUrl,\n\t\t\trestWrapper,\n\t\t\tthis.logger,\n\t\t\tgetRestWrapper,\n\t\t\t() => this.deltaStorageUrl,\n\t\t);\n\t\treturn new DocumentDeltaStorageService(\n\t\t\tthis.tenantId,\n\t\t\tthis.documentId,\n\t\t\tdeltaStorageService,\n\t\t\tthis.documentStorageService,\n\t\t\tthis.logger,\n\t\t);\n\t}\n\n\t/**\n\t * Connects to a delta stream endpoint for emitting ops.\n\t *\n\t * @returns returns the document delta stream service for routerlicious driver.\n\t */\n\tpublic async connectToDeltaStream(client: IClient): Promise<IDocumentDeltaConnection> {\n\t\tconst connect = async (refreshToken?: boolean): Promise<IDocumentDeltaConnection> => {\n\t\t\tlet ordererToken = await this.ordererRestWrapper.getToken();\n\t\t\tawait this.refreshSessionInfoIfNeeded();\n\n\t\t\tif (refreshToken) {\n\t\t\t\tordererToken = await PerformanceEvent.timedExecAsync(\n\t\t\t\t\tthis.logger,\n\t\t\t\t\t{\n\t\t\t\t\t\teventName: \"GetDeltaStreamToken\",\n\t\t\t\t\t\tdocId: this.documentId,\n\t\t\t\t\t\tdetails: JSON.stringify({\n\t\t\t\t\t\t\trefreshToken,\n\t\t\t\t\t\t}),\n\t\t\t\t\t},\n\t\t\t\t\tasync () =>\n\t\t\t\t\t\tthis.tokenProvider\n\t\t\t\t\t\t\t.fetchOrdererToken(this.tenantId, this.documentId, refreshToken)\n\t\t\t\t\t\t\t.then(\n\t\t\t\t\t\t\t\t(newOrdererToken) => {\n\t\t\t\t\t\t\t\t\tthis.ordererRestWrapper.setToken(newOrdererToken);\n\t\t\t\t\t\t\t\t\treturn newOrdererToken;\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t(error) => {\n\t\t\t\t\t\t\t\t\tconst tokenError = wrapError(\n\t\t\t\t\t\t\t\t\t\terror,\n\t\t\t\t\t\t\t\t\t\t(errorMessage) =>\n\t\t\t\t\t\t\t\t\t\t\tnew NetworkErrorBasic(\n\t\t\t\t\t\t\t\t\t\t\t\t`The Host-provided token fetcher threw an error`,\n\t\t\t\t\t\t\t\t\t\t\t\tRouterliciousErrorTypes.fetchTokenError,\n\t\t\t\t\t\t\t\t\t\t\t\tcanRetryOnError(error),\n\t\t\t\t\t\t\t\t\t\t\t\t{ errorMessage, driverVersion },\n\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\tthrow tokenError;\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn PerformanceEvent.timedExecAsync(\n\t\t\t\tthis.logger,\n\t\t\t\t{\n\t\t\t\t\teventName: \"ConnectToDeltaStream\",\n\t\t\t\t\tdocId: this.documentId,\n\t\t\t\t},\n\t\t\t\tasync () => {\n\t\t\t\t\treturn R11sDocumentDeltaConnection.create(\n\t\t\t\t\t\tthis.tenantId,\n\t\t\t\t\t\tthis.documentId,\n\t\t\t\t\t\tordererToken.jwt,\n\t\t\t\t\t\tSocketIOClientStatic,\n\t\t\t\t\t\tclient,\n\t\t\t\t\t\tthis.deltaStreamUrl,\n\t\t\t\t\t\tthis.logger,\n\t\t\t\t\t\tundefined /* timeoutMs */,\n\t\t\t\t\t\tthis.driverPolicies.enableLongPollingDowngrade,\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t);\n\t\t};\n\n\t\t// Attempt to establish connection.\n\t\t// Retry with new token on authorization error; otherwise, allow container layer to handle.\n\t\ttry {\n\t\t\tconst connection = await connect();\n\t\t\t// Enable single-commit summaries via driver policy based on the enable_single_commit_summary flag which maybe provided by the service during connection.\n\t\t\t// summarizeProtocolTree flag is used by the loader layer to attach protocol tree along with the summary required in the single-commit summaries.\n\t\t\tconst shouldSummarizeProtocolTree = (connection as R11sDocumentDeltaConnection).details\n\t\t\t\t?.supportedFeatures?.enable_single_commit_summary\n\t\t\t\t? true\n\t\t\t\t: false;\n\t\t\tthis._policies = {\n\t\t\t\t...this._policies,\n\t\t\t\tsummarizeProtocolTree: shouldSummarizeProtocolTree,\n\t\t\t};\n\n\t\t\treturn connection;\n\t\t} catch (error: any) {\n\t\t\tif (\n\t\t\t\ttypeof error === \"object\" &&\n\t\t\t\terror !== null &&\n\t\t\t\t(error as Partial<IR11sError>).errorType === RouterliciousErrorTypes.authorizationError\n\t\t\t) {\n\t\t\t\t// Fetch new token and retry once,\n\t\t\t\t// otherwise 401/403 will be bubbled up as non-retriable AuthorizationError.\n\t\t\t\treturn connect(true /* refreshToken */);\n\t\t\t}\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\t/**\n\t * Refresh session info URLs if necessary.\n\t * @returns boolean - true if session info was refreshed\n\t */\n\tprivate async refreshSessionInfoIfNeeded(): Promise<boolean> {\n\t\tconst response = await this.getSessionInfo();\n\t\tif (!response.refreshed) {\n\t\t\treturn false;\n\t\t}\n\t\tconst fluidResolvedUrl = response.resolvedUrl;\n\t\tthis._resolvedUrl = fluidResolvedUrl;\n\t\tthis.storageUrl = fluidResolvedUrl.endpoints.storageUrl;\n\t\tthis.ordererUrl = fluidResolvedUrl.endpoints.ordererUrl;\n\t\tthis.deltaStorageUrl = fluidResolvedUrl.endpoints.deltaStorageUrl;\n\t\tthis.deltaStreamUrl = fluidResolvedUrl.endpoints.deltaStreamUrl ?? this.ordererUrl;\n\t\treturn true;\n\t}\n}\n"]}
1
+ {"version":3,"file":"documentService.js","sourceRoot":"","sources":["../src/documentService.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,qCAAqC,CAAC;AAY7D,OAAO,EACN,iBAAiB,EACjB,WAAW,EACX,eAAe,GACf,MAAM,uCAAuC,CAAC;AAE/C,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,0CAA0C,CAAC;AAKvF,OAAO,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AAC5F,OAAO,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,uBAAuB,EAAmB,MAAM,iBAAiB,CAAC;AAC3E,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,UAAU,IAAI,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGlE,OAAO,EACN,+BAA+B,EAC/B,+BAA+B,GAC/B,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAGzD;;;GAGG;AACH,MAAM,OAAO,eACZ,SAAQ,iBAAyC;IAQjD,IAAW,WAAW;QACrB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC1B,CAAC;IAED,YACS,YAA0B,EACxB,UAAkB,EACpB,eAAuB,EACvB,cAAsB,EACtB,UAAkB,EACT,MAA0B,EACjC,aAA6B,EAC7B,QAAgB,EAChB,UAAkB,EAClB,kBAAmD,EAC5C,8BAA+D,EAC/D,cAA4C,EAC5C,SAAkC,EAClC,sBAAwD,EACxD,wBAAsD,EACtD,cAAsD,EAC/D,kBAAmD,EAC1C,mBAAiC,EACjC,mBAAiC;QAElD,KAAK,EAAE,CAAC;QApBA,iBAAY,GAAZ,YAAY,CAAc;QACxB,eAAU,GAAV,UAAU,CAAQ;QACpB,oBAAe,GAAf,eAAe,CAAQ;QACvB,mBAAc,GAAd,cAAc,CAAQ;QACtB,eAAU,GAAV,UAAU,CAAQ;QACT,WAAM,GAAN,MAAM,CAAoB;QACjC,kBAAa,GAAb,aAAa,CAAgB;QAC7B,aAAQ,GAAR,QAAQ,CAAQ;QAChB,eAAU,GAAV,UAAU,CAAQ;QAClB,uBAAkB,GAAlB,kBAAkB,CAAiC;QAC5C,mCAA8B,GAA9B,8BAA8B,CAAiC;QAC/D,mBAAc,GAAd,cAAc,CAA8B;QAC5C,cAAS,GAAT,SAAS,CAAyB;QAClC,2BAAsB,GAAtB,sBAAsB,CAAkC;QACxD,6BAAwB,GAAxB,wBAAwB,CAA8B;QACtD,mBAAc,GAAd,cAAc,CAAwC;QAC/D,uBAAkB,GAAlB,kBAAkB,CAAiC;QAC1C,wBAAmB,GAAnB,mBAAmB,CAAc;QACjC,wBAAmB,GAAnB,mBAAmB,CAAc;IAGnD,CAAC;IAID,IAAW,QAAQ;QAClB,OAAO,IAAI,CAAC,SAAS,CAAC;IACvB,CAAC;IAEM,OAAO,KAAU,CAAC;IAEzB;;;;OAIG;IACI,KAAK,CAAC,gBAAgB;QAC5B,IAAI,IAAI,CAAC,sBAAsB,KAAK,SAAS,EAAE,CAAC;YAC/C,OAAO,IAAI,CAAC,sBAAsB,CAAC;QACpC,CAAC;QAED,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACnC,OAAO,IAAI,sBAAsB,EAAE,CAAC;QACrC,CAAC;QAED,MAAM,iBAAiB,GAAG,KAAK,EAAE,YAAsB,EAAuB,EAAE;YAC/E,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,0BAA0B,EAAE,CAAC;YAC1D,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,qBAAqB,IAAI,SAAS,EAAE,CAAC;gBACtE,IAAI,SAAS,EAAE,CAAC;oBACf,MAAM,WAAW,GAAG,IAAI,WAAW,CAClC,IAAI,CAAC,cAAc,CAAC,4BAA4B,CAChD,CAAC;oBACF,IAAI,CAAC,kBAAkB,GAAG,+BAA+B,CAAC,IAAI,CAC7D,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,mBAAmB,EACxB,IAAI,CAAC,MAAM,EACX,WAAW,EACX,IAAI,CAAC,cAAc,CAAC,cAAc,EAClC,IAAI,CAAC,UAAU,CAAC,aAAa,CAC7B,CAAC;gBACH,CAAC;gBACD,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;gBACtE,IAAI,CAAC,cAAc,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC;gBAChD,MAAM,gBAAgB,GAAG,IAAI,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;gBAC5E,IAAI,CAAC,qBAAqB,GAAG,IAAI,UAAU,CAAC,gBAAgB,CAAC,CAAC;YAC/D,CAAC;YAED,OAAO,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;QACxE,CAAC,CAAC;QACF,sDAAsD;QACtD,MAAM,cAAc,GAAG,MAAM,iBAAiB,EAAE,CAAC;QACjD,MAAM,qBAAqB,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAC5D,IAAI,CAAC,sBAAsB,GAAG,IAAI,sBAAsB,CACvD,IAAI,CAAC,UAAU,EACf,cAAc,EACd,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,8BAA8B,EACnC,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,sBAAsB,EAC3B,IAAI,CAAC,wBAAwB,EAC7B,qBAAqB,EACrB,iBAAiB,CACjB,CAAC;QACF,OAAO,IAAI,CAAC,sBAAsB,CAAC;IACpC,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,qBAAqB;QACjC,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC9B,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,sBAAsB,EAAE,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAErF,MAAM,cAAc,GAAG,KAAK,IAA0B,EAAE;YACvD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,0BAA0B,EAAE,CAAC;YAE1D,IAAI,SAAS,EAAE,CAAC;gBACf,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,4BAA4B,CAAC,CAAC;gBACtF,IAAI,CAAC,kBAAkB,GAAG,+BAA+B,CAAC,IAAI,CAC7D,IAAI,CAAC,mBAAmB,EACxB,IAAI,CAAC,MAAM,EACX,WAAW,EACX,IAAI,CAAC,cAAc,CAAC,cAAc,CAClC,CAAC;YACH,CAAC;YACD,OAAO,IAAI,CAAC,kBAAkB,CAAC;QAChC,CAAC,CAAC;QACF,MAAM,WAAW,GAAG,MAAM,cAAc,EAAE,CAAC;QAC3C,MAAM,mBAAmB,GAAG,IAAI,mBAAmB,CAClD,IAAI,CAAC,eAAe,EACpB,WAAW,EACX,IAAI,CAAC,MAAM,EACX,cAAc,EACd,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,CAC1B,CAAC;QACF,OAAO,IAAI,2BAA2B,CACrC,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,UAAU,EACf,mBAAmB,EACnB,IAAI,CAAC,sBAAsB,EAC3B,IAAI,CAAC,MAAM,CACX,CAAC;IACH,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,oBAAoB,CAAC,MAAe;QAChD,MAAM,OAAO,GAAG,KAAK,EAAE,YAAsB,EAAqC,EAAE;YACnF,IAAI,YAAY,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC;YAC5D,MAAM,IAAI,CAAC,0BAA0B,EAAE,CAAC;YAExC,IAAI,YAAY,EAAE,CAAC;gBAClB,YAAY,GAAG,MAAM,gBAAgB,CAAC,cAAc,CACnD,IAAI,CAAC,MAAM,EACX;oBACC,SAAS,EAAE,qBAAqB;oBAChC,KAAK,EAAE,IAAI,CAAC,UAAU;oBACtB,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;wBACvB,YAAY;qBACZ,CAAC;iBACF,EACD,KAAK,IAAI,EAAE,CACV,IAAI,CAAC,aAAa;qBAChB,iBAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC;qBAC/D,IAAI,CACJ,CAAC,eAAe,EAAE,EAAE;oBACnB,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;oBAClD,OAAO,eAAe,CAAC;gBACxB,CAAC,EACD,CAAC,KAAK,EAAE,EAAE;oBACT,MAAM,UAAU,GAAG,SAAS,CAC3B,KAAK,EACL,CAAC,YAAY,EAAE,EAAE,CAChB,IAAI,iBAAiB,CACpB,gDAAgD,EAChD,uBAAuB,CAAC,eAAe,EACvC,eAAe,CAAC,KAAK,CAAC,EACtB,EAAE,YAAY,EAAE,aAAa,EAAE,CAC/B,CACF,CAAC;oBACF,MAAM,UAAU,CAAC;gBAClB,CAAC,CACD,CACH,CAAC;YACH,CAAC;YAED,OAAO,gBAAgB,CAAC,cAAc,CACrC,IAAI,CAAC,MAAM,EACX;gBACC,SAAS,EAAE,sBAAsB;gBACjC,KAAK,EAAE,IAAI,CAAC,UAAU;aACtB,EACD,KAAK,IAAI,EAAE;gBACV,OAAO,2BAA2B,CAAC,MAAM,CACxC,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,UAAU,EACf,YAAY,CAAC,GAAG,EAChB,oBAAoB,EACpB,MAAM,EACN,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,MAAM,EACX,SAAS,CAAC,eAAe,EACzB,IAAI,CAAC,cAAc,CAAC,0BAA0B,CAC9C,CAAC;YACH,CAAC,CACD,CAAC;QACH,CAAC,CAAC;QAEF,mCAAmC;QACnC,2FAA2F;QAC3F,IAAI,CAAC;YACJ,MAAM,UAAU,GAAG,MAAM,OAAO,EAAE,CAAC;YACnC,yJAAyJ;YACzJ,iJAAiJ;YACjJ,MAAM,2BAA2B,GAAI,UAA0C,CAAC,OAAO;gBACtF,EAAE,iBAAiB,EAAE,4BAA4B;gBACjD,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,KAAK,CAAC;YACT,IAAI,CAAC,SAAS,GAAG;gBAChB,GAAG,IAAI,CAAC,SAAS;gBACjB,qBAAqB,EAAE,2BAA2B;aAClD,CAAC;YAEF,OAAO,UAAU,CAAC;QACnB,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACrB,IACC,OAAO,KAAK,KAAK,QAAQ;gBACzB,KAAK,KAAK,IAAI;gBACb,KAA6B,CAAC,SAAS,KAAK,uBAAuB,CAAC,kBAAkB,EACtF,CAAC;gBACF,kCAAkC;gBAClC,4EAA4E;gBAC5E,OAAO,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YACzC,CAAC;YACD,MAAM,KAAK,CAAC;QACb,CAAC;IACF,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,0BAA0B;QACvC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC7C,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;YACzB,OAAO,KAAK,CAAC;QACd,CAAC;QACD,MAAM,gBAAgB,GAAG,QAAQ,CAAC,WAAW,CAAC;QAC9C,IAAI,CAAC,YAAY,GAAG,gBAAgB,CAAC;QACrC,IAAI,CAAC,UAAU,GAAG,gBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC;QACxD,IAAI,CAAC,UAAU,GAAG,gBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC;QACxD,IAAI,CAAC,eAAe,GAAG,gBAAgB,CAAC,SAAS,CAAC,eAAe,CAAC;QAClE,IAAI,CAAC,cAAc,GAAG,gBAAgB,CAAC,SAAS,CAAC,cAAc,IAAI,IAAI,CAAC,UAAU,CAAC;QACnF,OAAO,IAAI,CAAC;IACb,CAAC;CACD","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { TypedEventEmitter } from \"@fluid-internal/client-utils\";\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport type { IClient } from \"@fluidframework/driver-definitions\";\nimport type {\n\tIDocumentServiceEvents,\n\tIDocumentServicePolicies,\n\tIDocumentDeltaConnection,\n\tIDocumentDeltaStorageService,\n\tIDocumentService,\n\tIDocumentStorageService,\n\tIDocumentStorageServicePolicies,\n\tIResolvedUrl,\n} from \"@fluidframework/driver-definitions/internal\";\nimport {\n\tNetworkErrorBasic,\n\tRateLimiter,\n\tcanRetryOnError,\n} from \"@fluidframework/driver-utils/internal\";\nimport type { TelemetryLoggerExt } from \"@fluidframework/telemetry-utils/internal\";\nimport { PerformanceEvent, wrapError } from \"@fluidframework/telemetry-utils/internal\";\n\nimport type { ICache } from \"./cache.js\";\nimport type { INormalizedWholeSnapshot } from \"./contracts.js\";\nimport type { ISnapshotTreeVersion } from \"./definitions.js\";\nimport { DeltaStorageService, DocumentDeltaStorageService } from \"./deltaStorageService.js\";\nimport { R11sDocumentDeltaConnection } from \"./documentDeltaConnection.js\";\nimport { DocumentStorageService } from \"./documentStorageService.js\";\nimport { RouterliciousErrorTypes, type IR11sError } from \"./errorUtils.js\";\nimport { GitManager } from \"./gitManager.js\";\nimport { Historian } from \"./historian.js\";\nimport { NullBlobStorageService } from \"./nullBlobStorageService.js\";\nimport { pkgVersion as driverVersion } from \"./packageVersion.js\";\nimport type { IRouterliciousDriverPolicies } from \"./policies.js\";\nimport type { TokenFetcher } from \"./restWrapper.js\";\nimport {\n\tRouterliciousOrdererRestWrapper,\n\tRouterliciousStorageRestWrapper,\n} from \"./restWrapper.js\";\nimport type { RestWrapper } from \"./restWrapperBase.js\";\nimport type { IGetSessionInfoResponse } from \"./sessionInfoManager.js\";\nimport { SocketIOClientStatic } from \"./socketModule.js\";\nimport type { ITokenProvider } from \"./tokens.js\";\n\n/**\n * The DocumentService manages the Socket.IO connection and manages routing requests to connected\n * clients.\n */\nexport class DocumentService\n\textends TypedEventEmitter<IDocumentServiceEvents>\n\timplements IDocumentService\n{\n\tprivate storageManager: GitManager | undefined;\n\tprivate noCacheStorageManager: GitManager | undefined;\n\n\tprivate _policies: IDocumentServicePolicies | undefined;\n\n\tpublic get resolvedUrl(): IResolvedUrl {\n\t\treturn this._resolvedUrl;\n\t}\n\n\tconstructor(\n\t\tprivate _resolvedUrl: IResolvedUrl,\n\t\tprotected ordererUrl: string,\n\t\tprivate deltaStorageUrl: string,\n\t\tprivate deltaStreamUrl: string,\n\t\tprivate storageUrl: string,\n\t\tprivate readonly logger: TelemetryLoggerExt,\n\t\tprotected tokenProvider: ITokenProvider,\n\t\tprotected tenantId: string,\n\t\tprotected documentId: string,\n\t\tprotected ordererRestWrapper: RouterliciousOrdererRestWrapper,\n\t\tprivate readonly documentStorageServicePolicies: IDocumentStorageServicePolicies,\n\t\tprivate readonly driverPolicies: IRouterliciousDriverPolicies,\n\t\tprivate readonly blobCache: ICache<ArrayBufferLike>,\n\t\tprivate readonly wholeSnapshotTreeCache: ICache<INormalizedWholeSnapshot>,\n\t\tprivate readonly shreddedSummaryTreeCache: ICache<ISnapshotTreeVersion>,\n\t\tprivate readonly getSessionInfo: () => Promise<IGetSessionInfoResponse>,\n\t\tprivate storageRestWrapper: RouterliciousStorageRestWrapper,\n\t\tprivate readonly storageTokenFetcher: TokenFetcher,\n\t\tprivate readonly ordererTokenFetcher: TokenFetcher,\n\t) {\n\t\tsuper();\n\t}\n\n\tprivate documentStorageService: DocumentStorageService | undefined;\n\n\tpublic get policies(): IDocumentServicePolicies | undefined {\n\t\treturn this._policies;\n\t}\n\n\tpublic dispose(): void {}\n\n\t/**\n\t * Connects to a storage endpoint for snapshot service.\n\t *\n\t * @returns returns the document storage service for routerlicious driver.\n\t */\n\tpublic async connectToStorage(): Promise<IDocumentStorageService> {\n\t\tif (this.documentStorageService !== undefined) {\n\t\t\treturn this.documentStorageService;\n\t\t}\n\n\t\tif (this.storageUrl === undefined) {\n\t\t\treturn new NullBlobStorageService();\n\t\t}\n\n\t\tconst getStorageManager = async (disableCache?: boolean): Promise<GitManager> => {\n\t\t\tconst refreshed = await this.refreshSessionInfoIfNeeded();\n\t\t\tif (!this.storageManager || !this.noCacheStorageManager || refreshed) {\n\t\t\t\tif (refreshed) {\n\t\t\t\t\tconst rateLimiter = new RateLimiter(\n\t\t\t\t\t\tthis.driverPolicies.maxConcurrentStorageRequests,\n\t\t\t\t\t);\n\t\t\t\t\tthis.storageRestWrapper = RouterliciousStorageRestWrapper.load(\n\t\t\t\t\t\tthis.tenantId,\n\t\t\t\t\t\tthis.storageTokenFetcher,\n\t\t\t\t\t\tthis.logger,\n\t\t\t\t\t\trateLimiter,\n\t\t\t\t\t\tthis.driverPolicies.enableRestLess,\n\t\t\t\t\t\tthis.storageUrl /* baseUrl */,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tconst historian = new Historian(true, false, this.storageRestWrapper);\n\t\t\t\tthis.storageManager = new GitManager(historian);\n\t\t\t\tconst noCacheHistorian = new Historian(true, true, this.storageRestWrapper);\n\t\t\t\tthis.noCacheStorageManager = new GitManager(noCacheHistorian);\n\t\t\t}\n\n\t\t\treturn disableCache ? this.noCacheStorageManager : this.storageManager;\n\t\t};\n\t\t// Initialize storageManager and noCacheStorageManager\n\t\tconst storageManager = await getStorageManager();\n\t\tconst noCacheStorageManager = await getStorageManager(true);\n\t\tthis.documentStorageService = new DocumentStorageService(\n\t\t\tthis.documentId,\n\t\t\tstorageManager,\n\t\t\tthis.logger,\n\t\t\tthis.documentStorageServicePolicies,\n\t\t\tthis.driverPolicies,\n\t\t\tthis.blobCache,\n\t\t\tthis.wholeSnapshotTreeCache,\n\t\t\tthis.shreddedSummaryTreeCache,\n\t\t\tnoCacheStorageManager,\n\t\t\tgetStorageManager,\n\t\t);\n\t\treturn this.documentStorageService;\n\t}\n\n\t/**\n\t * Connects to a delta storage endpoint for getting ops between a range.\n\t *\n\t * @returns returns the document delta storage service for routerlicious driver.\n\t */\n\tpublic async connectToDeltaStorage(): Promise<IDocumentDeltaStorageService> {\n\t\tawait this.connectToStorage();\n\t\tassert(!!this.documentStorageService, 0x0b1 /* \"Storage service not initialized\" */);\n\n\t\tconst getRestWrapper = async (): Promise<RestWrapper> => {\n\t\t\tconst refreshed = await this.refreshSessionInfoIfNeeded();\n\n\t\t\tif (refreshed) {\n\t\t\t\tconst rateLimiter = new RateLimiter(this.driverPolicies.maxConcurrentOrdererRequests);\n\t\t\t\tthis.ordererRestWrapper = RouterliciousOrdererRestWrapper.load(\n\t\t\t\t\tthis.ordererTokenFetcher,\n\t\t\t\t\tthis.logger,\n\t\t\t\t\trateLimiter,\n\t\t\t\t\tthis.driverPolicies.enableRestLess,\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn this.ordererRestWrapper;\n\t\t};\n\t\tconst restWrapper = await getRestWrapper();\n\t\tconst deltaStorageService = new DeltaStorageService(\n\t\t\tthis.deltaStorageUrl,\n\t\t\trestWrapper,\n\t\t\tthis.logger,\n\t\t\tgetRestWrapper,\n\t\t\t() => this.deltaStorageUrl,\n\t\t);\n\t\treturn new DocumentDeltaStorageService(\n\t\t\tthis.tenantId,\n\t\t\tthis.documentId,\n\t\t\tdeltaStorageService,\n\t\t\tthis.documentStorageService,\n\t\t\tthis.logger,\n\t\t);\n\t}\n\n\t/**\n\t * Connects to a delta stream endpoint for emitting ops.\n\t *\n\t * @returns returns the document delta stream service for routerlicious driver.\n\t */\n\tpublic async connectToDeltaStream(client: IClient): Promise<IDocumentDeltaConnection> {\n\t\tconst connect = async (refreshToken?: boolean): Promise<IDocumentDeltaConnection> => {\n\t\t\tlet ordererToken = await this.ordererRestWrapper.getToken();\n\t\t\tawait this.refreshSessionInfoIfNeeded();\n\n\t\t\tif (refreshToken) {\n\t\t\t\tordererToken = await PerformanceEvent.timedExecAsync(\n\t\t\t\t\tthis.logger,\n\t\t\t\t\t{\n\t\t\t\t\t\teventName: \"GetDeltaStreamToken\",\n\t\t\t\t\t\tdocId: this.documentId,\n\t\t\t\t\t\tdetails: JSON.stringify({\n\t\t\t\t\t\t\trefreshToken,\n\t\t\t\t\t\t}),\n\t\t\t\t\t},\n\t\t\t\t\tasync () =>\n\t\t\t\t\t\tthis.tokenProvider\n\t\t\t\t\t\t\t.fetchOrdererToken(this.tenantId, this.documentId, refreshToken)\n\t\t\t\t\t\t\t.then(\n\t\t\t\t\t\t\t\t(newOrdererToken) => {\n\t\t\t\t\t\t\t\t\tthis.ordererRestWrapper.setToken(newOrdererToken);\n\t\t\t\t\t\t\t\t\treturn newOrdererToken;\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t(error) => {\n\t\t\t\t\t\t\t\t\tconst tokenError = wrapError(\n\t\t\t\t\t\t\t\t\t\terror,\n\t\t\t\t\t\t\t\t\t\t(errorMessage) =>\n\t\t\t\t\t\t\t\t\t\t\tnew NetworkErrorBasic(\n\t\t\t\t\t\t\t\t\t\t\t\t`The Host-provided token fetcher threw an error`,\n\t\t\t\t\t\t\t\t\t\t\t\tRouterliciousErrorTypes.fetchTokenError,\n\t\t\t\t\t\t\t\t\t\t\t\tcanRetryOnError(error),\n\t\t\t\t\t\t\t\t\t\t\t\t{ errorMessage, driverVersion },\n\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\tthrow tokenError;\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn PerformanceEvent.timedExecAsync(\n\t\t\t\tthis.logger,\n\t\t\t\t{\n\t\t\t\t\teventName: \"ConnectToDeltaStream\",\n\t\t\t\t\tdocId: this.documentId,\n\t\t\t\t},\n\t\t\t\tasync () => {\n\t\t\t\t\treturn R11sDocumentDeltaConnection.create(\n\t\t\t\t\t\tthis.tenantId,\n\t\t\t\t\t\tthis.documentId,\n\t\t\t\t\t\tordererToken.jwt,\n\t\t\t\t\t\tSocketIOClientStatic,\n\t\t\t\t\t\tclient,\n\t\t\t\t\t\tthis.deltaStreamUrl,\n\t\t\t\t\t\tthis.logger,\n\t\t\t\t\t\tundefined /* timeoutMs */,\n\t\t\t\t\t\tthis.driverPolicies.enableLongPollingDowngrade,\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t);\n\t\t};\n\n\t\t// Attempt to establish connection.\n\t\t// Retry with new token on authorization error; otherwise, allow container layer to handle.\n\t\ttry {\n\t\t\tconst connection = await connect();\n\t\t\t// Enable single-commit summaries via driver policy based on the enable_single_commit_summary flag which maybe provided by the service during connection.\n\t\t\t// summarizeProtocolTree flag is used by the loader layer to attach protocol tree along with the summary required in the single-commit summaries.\n\t\t\tconst shouldSummarizeProtocolTree = (connection as R11sDocumentDeltaConnection).details\n\t\t\t\t?.supportedFeatures?.enable_single_commit_summary\n\t\t\t\t? true\n\t\t\t\t: false;\n\t\t\tthis._policies = {\n\t\t\t\t...this._policies,\n\t\t\t\tsummarizeProtocolTree: shouldSummarizeProtocolTree,\n\t\t\t};\n\n\t\t\treturn connection;\n\t\t} catch (error: any) {\n\t\t\tif (\n\t\t\t\ttypeof error === \"object\" &&\n\t\t\t\terror !== null &&\n\t\t\t\t(error as Partial<IR11sError>).errorType === RouterliciousErrorTypes.authorizationError\n\t\t\t) {\n\t\t\t\t// Fetch new token and retry once,\n\t\t\t\t// otherwise 401/403 will be bubbled up as non-retriable AuthorizationError.\n\t\t\t\treturn connect(true /* refreshToken */);\n\t\t\t}\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\t/**\n\t * Refresh session info URLs if necessary.\n\t * @returns boolean - true if session info was refreshed\n\t */\n\tprivate async refreshSessionInfoIfNeeded(): Promise<boolean> {\n\t\tconst response = await this.getSessionInfo();\n\t\tif (!response.refreshed) {\n\t\t\treturn false;\n\t\t}\n\t\tconst fluidResolvedUrl = response.resolvedUrl;\n\t\tthis._resolvedUrl = fluidResolvedUrl;\n\t\tthis.storageUrl = fluidResolvedUrl.endpoints.storageUrl;\n\t\tthis.ordererUrl = fluidResolvedUrl.endpoints.ordererUrl;\n\t\tthis.deltaStorageUrl = fluidResolvedUrl.endpoints.deltaStorageUrl;\n\t\tthis.deltaStreamUrl = fluidResolvedUrl.endpoints.deltaStreamUrl ?? this.ordererUrl;\n\t\treturn true;\n\t}\n}\n"]}
@@ -4,7 +4,7 @@
4
4
  */
5
5
  import type { IDocumentStorageServicePolicies, ISnapshotTree, IVersion } from "@fluidframework/driver-definitions/internal";
6
6
  import { DocumentStorageServiceProxy } from "@fluidframework/driver-utils/internal";
7
- import type { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils/internal";
7
+ import type { TelemetryLoggerExt } from "@fluidframework/telemetry-utils/internal";
8
8
  import type { ICache } from "./cache.js";
9
9
  import type { INormalizedWholeSnapshot } from "./contracts.js";
10
10
  import type { ISnapshotTreeVersion } from "./definitions.js";
@@ -17,7 +17,7 @@ export declare class DocumentStorageService extends DocumentStorageServiceProxy
17
17
  private _logTailSha;
18
18
  get logTailSha(): string | undefined;
19
19
  private static loadInternalDocumentStorageService;
20
- constructor(id: string, manager: GitManager, logger: ITelemetryLoggerExt, policies: IDocumentStorageServicePolicies, driverPolicies?: IRouterliciousDriverPolicies, blobCache?: ICache<ArrayBufferLike>, snapshotTreeCache?: ICache<INormalizedWholeSnapshot>, shreddedSummaryTreeCache?: ICache<ISnapshotTreeVersion>, noCacheGitManager?: GitManager | undefined, getStorageManager?: (disableCache?: boolean) => Promise<GitManager>);
20
+ constructor(id: string, manager: GitManager, logger: TelemetryLoggerExt, policies: IDocumentStorageServicePolicies, driverPolicies?: IRouterliciousDriverPolicies, blobCache?: ICache<ArrayBufferLike>, snapshotTreeCache?: ICache<INormalizedWholeSnapshot>, shreddedSummaryTreeCache?: ICache<ISnapshotTreeVersion>, noCacheGitManager?: GitManager | undefined, getStorageManager?: (disableCache?: boolean) => Promise<GitManager>);
21
21
  getSnapshotTree(version?: IVersion): Promise<ISnapshotTree | null>;
22
22
  }
23
23
  //# sourceMappingURL=documentStorageService.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"documentStorageService.d.ts","sourceRoot":"","sources":["../src/documentStorageService.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAEX,+BAA+B,EAC/B,aAAa,EACb,QAAQ,EACR,MAAM,6CAA6C,CAAC;AAErD,OAAO,EACN,2BAA2B,EAE3B,MAAM,uCAAuC,CAAC;AAC/C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAEpF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAC;AAIlE,qBAAa,sBAAuB,SAAQ,2BAA2B;aAoDrD,EAAE,EAAE,MAAM;IACnB,OAAO,EAAE,UAAU;IAOnB,iBAAiB,CAAC;IA3D1B,OAAO,CAAC,WAAW,CAAiC;IAEpD,IAAW,UAAU,IAAI,MAAM,GAAG,SAAS,CAE1C;IAED,OAAO,CAAC,MAAM,CAAC,kCAAkC;gBA6ChC,EAAE,EAAE,MAAM,EACnB,OAAO,EAAE,UAAU,EAC1B,MAAM,EAAE,mBAAmB,EAC3B,QAAQ,EAAE,+BAA+B,EACzC,cAAc,CAAC,EAAE,4BAA4B,EAC7C,SAAS,CAAC,EAAE,MAAM,CAAC,eAAe,CAAC,EACnC,iBAAiB,CAAC,EAAE,MAAM,CAAC,wBAAwB,CAAC,EACpD,wBAAwB,CAAC,EAAE,MAAM,CAAC,oBAAoB,CAAC,EAChD,iBAAiB,CAAC,wBAAY,EACrC,iBAAiB,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,UAAU,CAAC;IAkBvD,eAAe,CAAC,OAAO,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;CAQ/E"}
1
+ {"version":3,"file":"documentStorageService.d.ts","sourceRoot":"","sources":["../src/documentStorageService.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAEX,+BAA+B,EAC/B,aAAa,EACb,QAAQ,EACR,MAAM,6CAA6C,CAAC;AAErD,OAAO,EACN,2BAA2B,EAE3B,MAAM,uCAAuC,CAAC;AAC/C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AAEnF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAC;AAIlE,qBAAa,sBAAuB,SAAQ,2BAA2B;aAoDrD,EAAE,EAAE,MAAM;IACnB,OAAO,EAAE,UAAU;IAOnB,iBAAiB,CAAC;IA3D1B,OAAO,CAAC,WAAW,CAAiC;IAEpD,IAAW,UAAU,IAAI,MAAM,GAAG,SAAS,CAE1C;IAED,OAAO,CAAC,MAAM,CAAC,kCAAkC;gBA6ChC,EAAE,EAAE,MAAM,EACnB,OAAO,EAAE,UAAU,EAC1B,MAAM,EAAE,kBAAkB,EAC1B,QAAQ,EAAE,+BAA+B,EACzC,cAAc,CAAC,EAAE,4BAA4B,EAC7C,SAAS,CAAC,EAAE,MAAM,CAAC,eAAe,CAAC,EACnC,iBAAiB,CAAC,EAAE,MAAM,CAAC,wBAAwB,CAAC,EACpD,wBAAwB,CAAC,EAAE,MAAM,CAAC,oBAAoB,CAAC,EAChD,iBAAiB,CAAC,wBAAY,EACrC,iBAAiB,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,UAAU,CAAC;IAkBvD,eAAe,CAAC,OAAO,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;CAQ/E"}
@@ -1 +1 @@
1
- {"version":3,"file":"documentStorageService.js","sourceRoot":"","sources":["../src/documentStorageService.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,OAAO,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AAClF,OAAO,EACN,2BAA2B,EAC3B,8BAA8B,GAC9B,MAAM,uCAAuC,CAAC;AAQ/C,OAAO,EAAE,qCAAqC,EAAE,MAAM,4CAA4C,CAAC;AACnG,OAAO,EAAE,kCAAkC,EAAE,MAAM,yCAAyC,CAAC;AAE7F,MAAM,OAAO,sBAAuB,SAAQ,2BAA2B;IAGtE,IAAW,UAAU;QACpB,OAAO,IAAI,CAAC,WAAW,CAAC;IACzB,CAAC;IAEO,MAAM,CAAC,kCAAkC,CAChD,EAAU,EACV,OAAmB,EACnB,MAA2B,EAC3B,QAAyC,EACzC,cAA6C,EAC7C,SAAmC,EACnC,iBAAoD,EACpD,wBAAuD,EACvD,iBAA8B,EAC9B,iBAAmE;QAEnE,MAAM,cAAc,GAAG,cAAc,EAAE,wBAAwB;YAC9D,CAAC,CAAC,IAAI,kCAAkC,CACtC,EAAE,EACF,OAAO,EACP,MAAM,EACN,QAAQ,EACR,cAAc,EACd,SAAS,EACT,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,CACjB;YACF,CAAC,CAAC,IAAI,qCAAqC,CACzC,EAAE,EACF,OAAO,EACP,MAAM,EACN,QAAQ,EACR,cAAc,EACd,SAAS,EACT,wBAAwB,EACxB,iBAAiB,CACjB,CAAC;QACJ,mGAAmG;QACnG,IACC,CAAC,cAAc,EAAE,wBAAwB;YACzC,QAAQ,CAAC,OAAO,KAAK,mBAAmB,CAAC,QAAQ,EAChD,CAAC;YACF,OAAO,IAAI,8BAA8B,CAAC,cAAc,CAAC,CAAC;QAC3D,CAAC;QACD,OAAO,cAAc,CAAC;IACvB,CAAC;IAED,YACiB,EAAU,EACnB,OAAmB,EAC1B,MAA2B,EAC3B,QAAyC,EACzC,cAA6C,EAC7C,SAAmC,EACnC,iBAAoD,EACpD,wBAAuD,EAChD,iBAA8B,EACrC,iBAAmE;QAEnE,KAAK,CACJ,sBAAsB,CAAC,kCAAkC,CACxD,EAAE,EACF,OAAO,EACP,MAAM,EACN,QAAQ,EACR,cAAc,EACd,SAAS,EACT,iBAAiB,EACjB,wBAAwB,EACxB,iBAAiB,EACjB,iBAAiB,CACjB,CACD,CAAC;QAxBc,OAAE,GAAF,EAAE,CAAQ;QACnB,YAAO,GAAP,OAAO,CAAY;QAOnB,sBAAiB,GAAjB,iBAAiB,CAAa;QA3D9B,gBAAW,GAAuB,SAAS,CAAC;IA4EpD,CAAC;IAEM,KAAK,CAAC,eAAe,CAAC,OAAkB;QAC9C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QACxE,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YACnB,IAAI,CAAC,WAAW;gBACf,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9E,CAAC;QACD,OAAO,IAAI,CAAC;IACb,CAAC;CACD","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport type {\n\tIDocumentStorageService,\n\tIDocumentStorageServicePolicies,\n\tISnapshotTree,\n\tIVersion,\n} from \"@fluidframework/driver-definitions/internal\";\nimport { LoaderCachingPolicy } from \"@fluidframework/driver-definitions/internal\";\nimport {\n\tDocumentStorageServiceProxy,\n\tPrefetchDocumentStorageService,\n} from \"@fluidframework/driver-utils/internal\";\nimport type { ITelemetryLoggerExt } from \"@fluidframework/telemetry-utils/internal\";\n\nimport type { ICache } from \"./cache.js\";\nimport type { INormalizedWholeSnapshot } from \"./contracts.js\";\nimport type { ISnapshotTreeVersion } from \"./definitions.js\";\nimport type { GitManager } from \"./gitManager.js\";\nimport type { IRouterliciousDriverPolicies } from \"./policies.js\";\nimport { ShreddedSummaryDocumentStorageService } from \"./shreddedSummaryDocumentStorageService.js\";\nimport { WholeSummaryDocumentStorageService } from \"./wholeSummaryDocumentStorageService.js\";\n\nexport class DocumentStorageService extends DocumentStorageServiceProxy {\n\tprivate _logTailSha: string | undefined = undefined;\n\n\tpublic get logTailSha(): string | undefined {\n\t\treturn this._logTailSha;\n\t}\n\n\tprivate static loadInternalDocumentStorageService(\n\t\tid: string,\n\t\tmanager: GitManager,\n\t\tlogger: ITelemetryLoggerExt,\n\t\tpolicies: IDocumentStorageServicePolicies,\n\t\tdriverPolicies?: IRouterliciousDriverPolicies,\n\t\tblobCache?: ICache<ArrayBufferLike>,\n\t\tsnapshotTreeCache?: ICache<INormalizedWholeSnapshot>,\n\t\tshreddedSummaryTreeCache?: ICache<ISnapshotTreeVersion>,\n\t\tnoCacheGitManager?: GitManager,\n\t\tgetStorageManager?: (disableCache?: boolean) => Promise<GitManager>,\n\t): IDocumentStorageService {\n\t\tconst storageService = driverPolicies?.enableWholeSummaryUpload\n\t\t\t? new WholeSummaryDocumentStorageService(\n\t\t\t\t\tid,\n\t\t\t\t\tmanager,\n\t\t\t\t\tlogger,\n\t\t\t\t\tpolicies,\n\t\t\t\t\tdriverPolicies,\n\t\t\t\t\tblobCache,\n\t\t\t\t\tsnapshotTreeCache,\n\t\t\t\t\tnoCacheGitManager,\n\t\t\t\t\tgetStorageManager,\n\t\t\t\t)\n\t\t\t: new ShreddedSummaryDocumentStorageService(\n\t\t\t\t\tid,\n\t\t\t\t\tmanager,\n\t\t\t\t\tlogger,\n\t\t\t\t\tpolicies,\n\t\t\t\t\tdriverPolicies,\n\t\t\t\t\tblobCache,\n\t\t\t\t\tshreddedSummaryTreeCache,\n\t\t\t\t\tgetStorageManager,\n\t\t\t\t);\n\t\t// TODO: worth prefetching latest summary making version + snapshot call with WholeSummary storage?\n\t\tif (\n\t\t\t!driverPolicies?.enableWholeSummaryUpload &&\n\t\t\tpolicies.caching === LoaderCachingPolicy.Prefetch\n\t\t) {\n\t\t\treturn new PrefetchDocumentStorageService(storageService);\n\t\t}\n\t\treturn storageService;\n\t}\n\n\tconstructor(\n\t\tpublic readonly id: string,\n\t\tpublic manager: GitManager,\n\t\tlogger: ITelemetryLoggerExt,\n\t\tpolicies: IDocumentStorageServicePolicies,\n\t\tdriverPolicies?: IRouterliciousDriverPolicies,\n\t\tblobCache?: ICache<ArrayBufferLike>,\n\t\tsnapshotTreeCache?: ICache<INormalizedWholeSnapshot>,\n\t\tshreddedSummaryTreeCache?: ICache<ISnapshotTreeVersion>,\n\t\tpublic noCacheGitManager?: GitManager,\n\t\tgetStorageManager?: (disableCache?: boolean) => Promise<GitManager>,\n\t) {\n\t\tsuper(\n\t\t\tDocumentStorageService.loadInternalDocumentStorageService(\n\t\t\t\tid,\n\t\t\t\tmanager,\n\t\t\t\tlogger,\n\t\t\t\tpolicies,\n\t\t\t\tdriverPolicies,\n\t\t\t\tblobCache,\n\t\t\t\tsnapshotTreeCache,\n\t\t\t\tshreddedSummaryTreeCache,\n\t\t\t\tnoCacheGitManager,\n\t\t\t\tgetStorageManager,\n\t\t\t),\n\t\t);\n\t}\n\n\tpublic async getSnapshotTree(version?: IVersion): Promise<ISnapshotTree | null> {\n\t\tconst tree = await this.internalStorageService.getSnapshotTree(version);\n\t\tif (tree !== null) {\n\t\t\tthis._logTailSha =\n\t\t\t\t\".logTail\" in tree.trees ? tree.trees[\".logTail\"].blobs.logTail : undefined;\n\t\t}\n\t\treturn tree;\n\t}\n}\n"]}
1
+ {"version":3,"file":"documentStorageService.js","sourceRoot":"","sources":["../src/documentStorageService.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,OAAO,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AAClF,OAAO,EACN,2BAA2B,EAC3B,8BAA8B,GAC9B,MAAM,uCAAuC,CAAC;AAQ/C,OAAO,EAAE,qCAAqC,EAAE,MAAM,4CAA4C,CAAC;AACnG,OAAO,EAAE,kCAAkC,EAAE,MAAM,yCAAyC,CAAC;AAE7F,MAAM,OAAO,sBAAuB,SAAQ,2BAA2B;IAGtE,IAAW,UAAU;QACpB,OAAO,IAAI,CAAC,WAAW,CAAC;IACzB,CAAC;IAEO,MAAM,CAAC,kCAAkC,CAChD,EAAU,EACV,OAAmB,EACnB,MAA0B,EAC1B,QAAyC,EACzC,cAA6C,EAC7C,SAAmC,EACnC,iBAAoD,EACpD,wBAAuD,EACvD,iBAA8B,EAC9B,iBAAmE;QAEnE,MAAM,cAAc,GAAG,cAAc,EAAE,wBAAwB;YAC9D,CAAC,CAAC,IAAI,kCAAkC,CACtC,EAAE,EACF,OAAO,EACP,MAAM,EACN,QAAQ,EACR,cAAc,EACd,SAAS,EACT,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,CACjB;YACF,CAAC,CAAC,IAAI,qCAAqC,CACzC,EAAE,EACF,OAAO,EACP,MAAM,EACN,QAAQ,EACR,cAAc,EACd,SAAS,EACT,wBAAwB,EACxB,iBAAiB,CACjB,CAAC;QACJ,mGAAmG;QACnG,IACC,CAAC,cAAc,EAAE,wBAAwB;YACzC,QAAQ,CAAC,OAAO,KAAK,mBAAmB,CAAC,QAAQ,EAChD,CAAC;YACF,OAAO,IAAI,8BAA8B,CAAC,cAAc,CAAC,CAAC;QAC3D,CAAC;QACD,OAAO,cAAc,CAAC;IACvB,CAAC;IAED,YACiB,EAAU,EACnB,OAAmB,EAC1B,MAA0B,EAC1B,QAAyC,EACzC,cAA6C,EAC7C,SAAmC,EACnC,iBAAoD,EACpD,wBAAuD,EAChD,iBAA8B,EACrC,iBAAmE;QAEnE,KAAK,CACJ,sBAAsB,CAAC,kCAAkC,CACxD,EAAE,EACF,OAAO,EACP,MAAM,EACN,QAAQ,EACR,cAAc,EACd,SAAS,EACT,iBAAiB,EACjB,wBAAwB,EACxB,iBAAiB,EACjB,iBAAiB,CACjB,CACD,CAAC;QAxBc,OAAE,GAAF,EAAE,CAAQ;QACnB,YAAO,GAAP,OAAO,CAAY;QAOnB,sBAAiB,GAAjB,iBAAiB,CAAa;QA3D9B,gBAAW,GAAuB,SAAS,CAAC;IA4EpD,CAAC;IAEM,KAAK,CAAC,eAAe,CAAC,OAAkB;QAC9C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QACxE,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YACnB,IAAI,CAAC,WAAW;gBACf,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9E,CAAC;QACD,OAAO,IAAI,CAAC;IACb,CAAC;CACD","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport type {\n\tIDocumentStorageService,\n\tIDocumentStorageServicePolicies,\n\tISnapshotTree,\n\tIVersion,\n} from \"@fluidframework/driver-definitions/internal\";\nimport { LoaderCachingPolicy } from \"@fluidframework/driver-definitions/internal\";\nimport {\n\tDocumentStorageServiceProxy,\n\tPrefetchDocumentStorageService,\n} from \"@fluidframework/driver-utils/internal\";\nimport type { TelemetryLoggerExt } from \"@fluidframework/telemetry-utils/internal\";\n\nimport type { ICache } from \"./cache.js\";\nimport type { INormalizedWholeSnapshot } from \"./contracts.js\";\nimport type { ISnapshotTreeVersion } from \"./definitions.js\";\nimport type { GitManager } from \"./gitManager.js\";\nimport type { IRouterliciousDriverPolicies } from \"./policies.js\";\nimport { ShreddedSummaryDocumentStorageService } from \"./shreddedSummaryDocumentStorageService.js\";\nimport { WholeSummaryDocumentStorageService } from \"./wholeSummaryDocumentStorageService.js\";\n\nexport class DocumentStorageService extends DocumentStorageServiceProxy {\n\tprivate _logTailSha: string | undefined = undefined;\n\n\tpublic get logTailSha(): string | undefined {\n\t\treturn this._logTailSha;\n\t}\n\n\tprivate static loadInternalDocumentStorageService(\n\t\tid: string,\n\t\tmanager: GitManager,\n\t\tlogger: TelemetryLoggerExt,\n\t\tpolicies: IDocumentStorageServicePolicies,\n\t\tdriverPolicies?: IRouterliciousDriverPolicies,\n\t\tblobCache?: ICache<ArrayBufferLike>,\n\t\tsnapshotTreeCache?: ICache<INormalizedWholeSnapshot>,\n\t\tshreddedSummaryTreeCache?: ICache<ISnapshotTreeVersion>,\n\t\tnoCacheGitManager?: GitManager,\n\t\tgetStorageManager?: (disableCache?: boolean) => Promise<GitManager>,\n\t): IDocumentStorageService {\n\t\tconst storageService = driverPolicies?.enableWholeSummaryUpload\n\t\t\t? new WholeSummaryDocumentStorageService(\n\t\t\t\t\tid,\n\t\t\t\t\tmanager,\n\t\t\t\t\tlogger,\n\t\t\t\t\tpolicies,\n\t\t\t\t\tdriverPolicies,\n\t\t\t\t\tblobCache,\n\t\t\t\t\tsnapshotTreeCache,\n\t\t\t\t\tnoCacheGitManager,\n\t\t\t\t\tgetStorageManager,\n\t\t\t\t)\n\t\t\t: new ShreddedSummaryDocumentStorageService(\n\t\t\t\t\tid,\n\t\t\t\t\tmanager,\n\t\t\t\t\tlogger,\n\t\t\t\t\tpolicies,\n\t\t\t\t\tdriverPolicies,\n\t\t\t\t\tblobCache,\n\t\t\t\t\tshreddedSummaryTreeCache,\n\t\t\t\t\tgetStorageManager,\n\t\t\t\t);\n\t\t// TODO: worth prefetching latest summary making version + snapshot call with WholeSummary storage?\n\t\tif (\n\t\t\t!driverPolicies?.enableWholeSummaryUpload &&\n\t\t\tpolicies.caching === LoaderCachingPolicy.Prefetch\n\t\t) {\n\t\t\treturn new PrefetchDocumentStorageService(storageService);\n\t\t}\n\t\treturn storageService;\n\t}\n\n\tconstructor(\n\t\tpublic readonly id: string,\n\t\tpublic manager: GitManager,\n\t\tlogger: TelemetryLoggerExt,\n\t\tpolicies: IDocumentStorageServicePolicies,\n\t\tdriverPolicies?: IRouterliciousDriverPolicies,\n\t\tblobCache?: ICache<ArrayBufferLike>,\n\t\tsnapshotTreeCache?: ICache<INormalizedWholeSnapshot>,\n\t\tshreddedSummaryTreeCache?: ICache<ISnapshotTreeVersion>,\n\t\tpublic noCacheGitManager?: GitManager,\n\t\tgetStorageManager?: (disableCache?: boolean) => Promise<GitManager>,\n\t) {\n\t\tsuper(\n\t\t\tDocumentStorageService.loadInternalDocumentStorageService(\n\t\t\t\tid,\n\t\t\t\tmanager,\n\t\t\t\tlogger,\n\t\t\t\tpolicies,\n\t\t\t\tdriverPolicies,\n\t\t\t\tblobCache,\n\t\t\t\tsnapshotTreeCache,\n\t\t\t\tshreddedSummaryTreeCache,\n\t\t\t\tnoCacheGitManager,\n\t\t\t\tgetStorageManager,\n\t\t\t),\n\t\t);\n\t}\n\n\tpublic async getSnapshotTree(version?: IVersion): Promise<ISnapshotTree | null> {\n\t\tconst tree = await this.internalStorageService.getSnapshotTree(version);\n\t\tif (tree !== null) {\n\t\t\tthis._logTailSha =\n\t\t\t\t\".logTail\" in tree.trees ? tree.trees[\".logTail\"].blobs.logTail : undefined;\n\t\t}\n\t\treturn tree;\n\t}\n}\n"]}
@@ -5,5 +5,5 @@
5
5
  * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY
6
6
  */
7
7
  export declare const pkgName = "@fluidframework/routerlicious-driver";
8
- export declare const pkgVersion = "2.102.0";
8
+ export declare const pkgVersion = "2.103.0";
9
9
  //# sourceMappingURL=packageVersion.d.ts.map
@@ -5,5 +5,5 @@
5
5
  * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY
6
6
  */
7
7
  export const pkgName = "@fluidframework/routerlicious-driver";
8
- export const pkgVersion = "2.102.0";
8
+ export const pkgVersion = "2.103.0";
9
9
  //# sourceMappingURL=packageVersion.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"packageVersion.js","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,OAAO,GAAG,sCAAsC,CAAC;AAC9D,MAAM,CAAC,MAAM,UAAU,GAAG,SAAS,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n *\n * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY\n */\n\nexport const pkgName = \"@fluidframework/routerlicious-driver\";\nexport const pkgVersion = \"2.102.0\";\n"]}
1
+ {"version":3,"file":"packageVersion.js","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,OAAO,GAAG,sCAAsC,CAAC;AAC9D,MAAM,CAAC,MAAM,UAAU,GAAG,SAAS,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n *\n * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY\n */\n\nexport const pkgName = \"@fluidframework/routerlicious-driver\";\nexport const pkgVersion = \"2.103.0\";\n"]}
@@ -4,7 +4,7 @@
4
4
  */
5
5
  import type { ITelemetryBaseProperties } from "@fluidframework/core-interfaces";
6
6
  import type { RateLimiter } from "@fluidframework/driver-utils/internal";
7
- import type { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils/internal";
7
+ import type { TelemetryLoggerExt } from "@fluidframework/telemetry-utils/internal";
8
8
  import { type QueryStringType } from "./queryStringUtils.js";
9
9
  import type { RequestConfig } from "./request.cjs";
10
10
  import { RestWrapper } from "./restWrapperBase.js";
@@ -40,7 +40,7 @@ declare class RouterliciousRestWrapper extends RestWrapper {
40
40
  * This feature is added to enable FRS to have more telemetry insights into whether the requests are being retried from same client or multiple.
41
41
  */
42
42
  private readonly retryCounter;
43
- constructor(logger: ITelemetryLoggerExt, rateLimiter: RateLimiter, fetchRefreshedToken: TokenFetcher, getAuthorizationHeader: AuthorizationHeaderGetter, useRestLess: boolean, baseurl?: string, tokenP?: Promise<ITokenResponse> | undefined, defaultQueryString?: QueryStringType);
43
+ constructor(logger: TelemetryLoggerExt, rateLimiter: RateLimiter, fetchRefreshedToken: TokenFetcher, getAuthorizationHeader: AuthorizationHeaderGetter, useRestLess: boolean, baseurl?: string, tokenP?: Promise<ITokenResponse> | undefined, defaultQueryString?: QueryStringType);
44
44
  protected request<T>(requestConfig: RequestConfig, statusCode: number, canRetry?: boolean): Promise<IR11sResponse<T>>;
45
45
  private generateHeaders;
46
46
  getToken(): Promise<ITokenResponse>;
@@ -48,13 +48,13 @@ declare class RouterliciousRestWrapper extends RestWrapper {
48
48
  }
49
49
  export declare class RouterliciousStorageRestWrapper extends RouterliciousRestWrapper {
50
50
  private constructor();
51
- static load(tenantId: string, tokenFetcher: TokenFetcher, logger: ITelemetryLoggerExt, rateLimiter: RateLimiter, useRestLess: boolean, baseurl?: string, initialTokenP?: Promise<ITokenResponse>): RouterliciousStorageRestWrapper;
51
+ static load(tenantId: string, tokenFetcher: TokenFetcher, logger: TelemetryLoggerExt, rateLimiter: RateLimiter, useRestLess: boolean, baseurl?: string, initialTokenP?: Promise<ITokenResponse>): RouterliciousStorageRestWrapper;
52
52
  }
53
53
  export declare class RouterliciousOrdererRestWrapper extends RouterliciousRestWrapper {
54
54
  private constructor();
55
- static load(tokenFetcher: TokenFetcher, logger: ITelemetryLoggerExt, rateLimiter: RateLimiter, useRestLess: boolean, baseurl?: string, initialTokenP?: Promise<ITokenResponse>): RouterliciousOrdererRestWrapper;
55
+ static load(tokenFetcher: TokenFetcher, logger: TelemetryLoggerExt, rateLimiter: RateLimiter, useRestLess: boolean, baseurl?: string, initialTokenP?: Promise<ITokenResponse>): RouterliciousOrdererRestWrapper;
56
56
  }
57
- export declare function toInstrumentedR11sOrdererTokenFetcher(tenantId: string, documentId: string | undefined, tokenProvider: ITokenProvider, logger: ITelemetryLoggerExt): TokenFetcher;
58
- export declare function toInstrumentedR11sStorageTokenFetcher(tenantId: string, documentId: string, tokenProvider: ITokenProvider, logger: ITelemetryLoggerExt): TokenFetcher;
57
+ export declare function toInstrumentedR11sOrdererTokenFetcher(tenantId: string, documentId: string | undefined, tokenProvider: ITokenProvider, logger: TelemetryLoggerExt): TokenFetcher;
58
+ export declare function toInstrumentedR11sStorageTokenFetcher(tenantId: string, documentId: string, tokenProvider: ITokenProvider, logger: TelemetryLoggerExt): TokenFetcher;
59
59
  export {};
60
60
  //# sourceMappingURL=restWrapper.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"restWrapper.d.ts","sourceRoot":"","sources":["../src/restWrapper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"restWrapper.d.ts","sourceRoot":"","sources":["../src/restWrapper.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"restWrapper.js","sourceRoot":"","sources":["../src/restWrapper.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 { performanceNow } from \"@fluid-internal/client-utils\";\nimport type { ITelemetryBaseProperties } from \"@fluidframework/core-interfaces\";\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport type { RateLimiter } from \"@fluidframework/driver-utils/internal\";\nimport { GenericNetworkError, NonRetryableError } from \"@fluidframework/driver-utils/internal\";\nimport {\n\tCorrelationIdHeaderName,\n\tDriverVersionHeaderName,\n\tRestLessClient,\n\tgetAuthorizationTokenFromCredentials,\n} from \"@fluidframework/server-services-client\";\nimport type { ITelemetryLoggerExt } from \"@fluidframework/telemetry-utils/internal\";\nimport { PerformanceEvent, numberFromString } from \"@fluidframework/telemetry-utils/internal\";\nimport safeStringify from \"json-stringify-safe\";\n\nimport {\n\tgetUrlForTelemetry,\n\tRouterliciousErrorTypes,\n\tthrowR11sNetworkError,\n} from \"./errorUtils.js\";\nimport { pkgVersion as driverVersion } from \"./packageVersion.js\";\nimport { addOrUpdateQueryParams, type QueryStringType } from \"./queryStringUtils.js\";\nimport type { RequestConfig, RawRequestHeaders } from \"./request.cjs\";\nimport { RestWrapper } from \"./restWrapperBase.js\";\nimport type { ITokenProvider, ITokenResponse } from \"./tokens.js\";\n\ntype AuthorizationHeaderGetter = (token: ITokenResponse) => string;\nexport type TokenFetcher = (refresh?: boolean) => Promise<ITokenResponse>;\n\nconst buildRequestUrl = (requestConfig: RequestConfig): string =>\n\trequestConfig.baseURL === undefined\n\t\t? (requestConfig.url ?? \"\")\n\t\t: `${requestConfig.baseURL ?? \"\"}${requestConfig.url ?? \"\"}`;\n\nconst buildRequestInitConfig = (requestConfig: RequestConfig): RequestInit => {\n\tconst requestInit: RequestInit = {\n\t\tmethod: requestConfig.method,\n\t\t// NOTE: Although the RequestHeaders type permits non-string values in the header, here we are\n\t\t// guaranteed the requestConfig only has string values in its header.\n\t\theaders: requestConfig.headers as Record<string, string>,\n\t\tbody: requestConfig.data,\n\t};\n\treturn requestInit;\n};\n\nexport interface IR11sResponse<T> {\n\tcontent: T;\n\theaders: Map<string, string>;\n\tpropsToLog: ITelemetryBaseProperties;\n\trequestUrl: string;\n}\n\n/**\n * A utility function to create a Routerlicious response without any additional props as we might not have them always.\n * @param content - Response which is equivalent to content.\n * @returns A Routerlicious response without any extra props.\n */\nexport function createR11sResponseFromContent<T>(content: T): IR11sResponse<T> {\n\treturn {\n\t\tcontent,\n\t\theaders: new Map(),\n\t\tpropsToLog: {},\n\t\trequestUrl: \"\",\n\t};\n}\n\nfunction headersToMap(headers: Headers): Map<string, string> {\n\tconst newHeaders = new Map<string, string>();\n\tfor (const [key, value] of headers.entries()) {\n\t\tnewHeaders.set(key, value);\n\t}\n\treturn newHeaders;\n}\n\nexport function getPropsToLogFromResponse(headers: {\n\t// eslint-disable-next-line @rushstack/no-new-null\n\tget: (id: string) => string | undefined | null;\n}): ITelemetryBaseProperties {\n\tinterface LoggingHeader {\n\t\theaderName: string;\n\t\tlogName: string;\n\t}\n\n\t// We rename headers so that otel doesn't scrub them away. Otel doesn't allow\n\t// certain characters in headers including '-'\n\tconst headersToLog: LoggingHeader[] = [\n\t\t{ headerName: CorrelationIdHeaderName, logName: \"requestCorrelationId\" },\n\t\t{ headerName: \"content-encoding\", logName: \"contentEncoding\" },\n\t\t{ headerName: \"content-type\", logName: \"contentType\" },\n\t];\n\tconst additionalProps: ITelemetryBaseProperties = {\n\t\tcontentsize: numberFromString(headers.get(\"content-length\")),\n\t};\n\tfor (const header of headersToLog) {\n\t\tconst headerValue = headers.get(header.headerName);\n\t\tif (headerValue !== undefined && headerValue !== null) {\n\t\t\tadditionalProps[header.logName] = headerValue;\n\t\t}\n\t}\n\n\treturn additionalProps;\n}\n\nclass RouterliciousRestWrapper extends RestWrapper {\n\tprivate readonly restLess = new RestLessClient();\n\tprivate token: ITokenResponse | undefined;\n\n\t/**\n\t * A locally maintained map which saves the number of retries for any REST api call made through restWrapper.\n\t * It uses the href of the request url as a key against which it saves the retry counts. Retries are only counted in case of failures.\n\t * This feature is added to enable FRS to have more telemetry insights into whether the requests are being retried from same client or multiple.\n\t */\n\tprivate readonly retryCounter = new Map<string, number>();\n\n\tconstructor(\n\t\tlogger: ITelemetryLoggerExt,\n\t\tprivate readonly rateLimiter: RateLimiter,\n\t\tprivate readonly fetchRefreshedToken: TokenFetcher,\n\t\tprivate readonly getAuthorizationHeader: AuthorizationHeaderGetter,\n\t\tprivate readonly useRestLess: boolean,\n\t\tbaseurl?: string,\n\t\tprivate tokenP?: Promise<ITokenResponse>,\n\t\tdefaultQueryString: QueryStringType = {},\n\t) {\n\t\tsuper(baseurl, defaultQueryString);\n\t}\n\n\tprotected async request<T>(\n\t\trequestConfig: RequestConfig,\n\t\tstatusCode: number,\n\t\tcanRetry = true,\n\t): Promise<IR11sResponse<T>> {\n\t\tif (requestConfig.params) {\n\t\t\t// delete the retry param, if any. We do this to ensure there is no retry added by any of callers, which would conflict with the one we maintain here in the retryCounter map.\n\t\t\tdelete requestConfig.params.retry;\n\t\t}\n\n\t\t// Build the complete request url including baseUrl, url and query params. (all except 'retry' query param)\n\t\tlet completeRequestUrl = addOrUpdateQueryParams(\n\t\t\tbuildRequestUrl(requestConfig),\n\t\t\trequestConfig.params ?? {},\n\t\t);\n\n\t\t// Check whether this request has been made before or if it is a retry.\n\t\t// requestKey is built using the HTTP method appended with the complete URL ommitting the 'retry' param\n\t\tconst requestKey = `${requestConfig.method ?? \"\"}|${completeRequestUrl.href}`;\n\t\tconst requestRetryCount = this.retryCounter.get(requestKey);\n\t\tif (requestRetryCount) {\n\t\t\tcompleteRequestUrl = addOrUpdateQueryParams(completeRequestUrl, {\n\t\t\t\tretry: requestRetryCount,\n\t\t\t});\n\t\t}\n\n\t\tconst config: RequestConfig = {\n\t\t\t...requestConfig,\n\t\t\theaders: await this.generateHeaders(requestConfig.headers),\n\t\t};\n\n\t\t// RestLessClient.translate() returns AxiosRequestConfig (from server-services-client),\n\t\t// which is structurally compatible with our RequestConfig type.\n\t\tconst translatedConfig: RequestConfig = this.useRestLess\n\t\t\t? (this.restLess.translate(config) as RequestConfig)\n\t\t\t: config;\n\t\tconst fetchRequestConfig = buildRequestInitConfig(translatedConfig);\n\n\t\tconst res = await this.rateLimiter.schedule(async () => {\n\t\t\tconst perfStart = performanceNow();\n\t\t\tconst result = await fetch(completeRequestUrl, fetchRequestConfig).catch(\n\t\t\t\tasync (error) => {\n\t\t\t\t\t// on failure, add the request entry into the retryCounter map to count the subsequent retries, if any\n\t\t\t\t\tthis.retryCounter.set(requestKey, requestRetryCount ? requestRetryCount + 1 : 1);\n\n\t\t\t\t\tconst telemetryProps = {\n\t\t\t\t\t\tdriverVersion,\n\t\t\t\t\t\tretryCount: requestRetryCount,\n\t\t\t\t\t\turl: getUrlForTelemetry(completeRequestUrl.hostname, completeRequestUrl.pathname),\n\t\t\t\t\t\trequestMethod: fetchRequestConfig.method,\n\t\t\t\t\t};\n\n\t\t\t\t\t// Browser Fetch throws a TypeError on network error, `node-fetch` throws a FetchError\n\t\t\t\t\tconst isNetworkError = [\"TypeError\", \"FetchError\"].includes(error?.name);\n\t\t\t\t\tconst errorMessage = isNetworkError\n\t\t\t\t\t\t? `NetworkError: ${error.message}`\n\t\t\t\t\t\t: safeStringify(error);\n\t\t\t\t\t// If a service is temporarily down or a browser resource limit is reached, RestWrapper will throw\n\t\t\t\t\t// a network error with no status code (e.g. err:ERR_CONN_REFUSED or err:ERR_FAILED) and\n\t\t\t\t\t// the error message will start with NetworkError as defined in restWrapper.ts\n\t\t\t\t\t// If there exists a self-signed SSL certificates error, throw a NonRetryableError\n\t\t\t\t\t// TODO: instead of relying on string matching, filter error based on the error code like we do for websocket connections\n\t\t\t\t\tconst err = errorMessage.includes(\"failed, reason: self signed certificate\")\n\t\t\t\t\t\t? new NonRetryableError(\n\t\t\t\t\t\t\t\terrorMessage,\n\t\t\t\t\t\t\t\tRouterliciousErrorTypes.sslCertError,\n\t\t\t\t\t\t\t\ttelemetryProps,\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t: new GenericNetworkError(\n\t\t\t\t\t\t\t\terrorMessage,\n\t\t\t\t\t\t\t\terrorMessage.startsWith(\"NetworkError\"),\n\t\t\t\t\t\t\t\ttelemetryProps,\n\t\t\t\t\t\t\t);\n\t\t\t\t\tthrow err;\n\t\t\t\t},\n\t\t\t);\n\t\t\treturn {\n\t\t\t\tresponse: result,\n\t\t\t\tduration: performanceNow() - perfStart,\n\t\t\t};\n\t\t});\n\n\t\tconst response = res.response;\n\t\tconst headers = headersToMap(response.headers);\n\n\t\tlet start = performanceNow();\n\t\tconst text = await response.text();\n\t\tconst receiveContentTime = performanceNow() - start;\n\n\t\tconst bodySize = text.length;\n\t\tstart = performanceNow();\n\t\tconst responseBody: any = response.headers\n\t\t\t.get(\"content-type\")\n\t\t\t?.includes(\"application/json\")\n\t\t\t? JSON.parse(text)\n\t\t\t: text;\n\t\tconst parseTime = performanceNow() - start;\n\n\t\t// Success\n\t\tif (response.ok || response.status === statusCode) {\n\t\t\t// on successful response, remove the entry from the retryCounter map\n\t\t\tthis.retryCounter.delete(requestKey);\n\t\t\tconst result = responseBody as T;\n\t\t\treturn {\n\t\t\t\tcontent: result,\n\t\t\t\theaders,\n\t\t\t\trequestUrl: completeRequestUrl.href,\n\t\t\t\tpropsToLog: {\n\t\t\t\t\t...getPropsToLogFromResponse(headers),\n\t\t\t\t\tbodySize,\n\t\t\t\t\treceiveContentTime,\n\t\t\t\t\tparseTime,\n\t\t\t\t\tfetchTime: res.duration,\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\t// Failure\n\t\t// on failure, add the request entry into the retryCounter map to count the subsequent retries\n\t\tthis.retryCounter.set(requestKey, requestRetryCount ? requestRetryCount + 1 : 1);\n\n\t\tif (response.status === 401 && canRetry) {\n\t\t\t// Refresh Authorization header and retry once\n\t\t\tthis.token = await this.fetchRefreshedToken(true /* refreshToken */);\n\t\t\treturn this.request<T>({ ...config }, statusCode, false);\n\t\t}\n\t\tif (response.status === 429 && responseBody?.retryAfter > 0) {\n\t\t\t// Retry based on retryAfter[Seconds]\n\t\t\treturn new Promise<IR11sResponse<T>>((resolve, reject) =>\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t// use the original request URL without the retryCount appended\n\t\t\t\t\tthis.request<T>({ ...config }, statusCode)\n\t\t\t\t\t\t.then(resolve)\n\t\t\t\t\t\t.catch(reject);\n\t\t\t\t}, responseBody.retryAfter * 1000),\n\t\t\t);\n\t\t}\n\n\t\tconst responseSummary =\n\t\t\tresponseBody === undefined\n\t\t\t\t? response.statusText\n\t\t\t\t: typeof responseBody === \"string\"\n\t\t\t\t\t? responseBody\n\t\t\t\t\t: safeStringify(responseBody);\n\t\tthrowR11sNetworkError(\n\t\t\t`R11s fetch error: ${responseSummary}`,\n\t\t\tresponse.status,\n\t\t\tresponseBody?.retryAfter,\n\t\t\t{\n\t\t\t\t...getPropsToLogFromResponse(headers),\n\t\t\t\tdriverVersion,\n\t\t\t\turl: getUrlForTelemetry(completeRequestUrl.hostname, completeRequestUrl.pathname),\n\t\t\t\trequestMethod: fetchRequestConfig.method,\n\t\t\t},\n\t\t);\n\t}\n\n\tprivate async generateHeaders(\n\t\trequestHeaders?: RawRequestHeaders | undefined,\n\t): Promise<RawRequestHeaders> {\n\t\tconst token = await this.getToken();\n\t\tassert(token !== undefined, 0x679 /* token should be present */);\n\t\tconst headers: RawRequestHeaders = {\n\t\t\t...requestHeaders,\n\t\t\t[DriverVersionHeaderName]: driverVersion,\n\t\t\t// NOTE: If this.authorizationHeader is undefined, should \"Authorization\" be removed entirely?\n\t\t\tAuthorization: this.getAuthorizationHeader(token),\n\t\t};\n\t\treturn headers;\n\t}\n\n\tpublic async getToken(): Promise<ITokenResponse> {\n\t\tif (this.token !== undefined) {\n\t\t\treturn this.token;\n\t\t}\n\t\tconst token = await (this.tokenP ?? this.fetchRefreshedToken());\n\t\tthis.setToken(token);\n\t\tthis.tokenP = undefined;\n\t\treturn token;\n\t}\n\n\tpublic setToken(token: ITokenResponse): void {\n\t\tthis.token = token;\n\t}\n}\n\nexport class RouterliciousStorageRestWrapper extends RouterliciousRestWrapper {\n\tprivate constructor(\n\t\tlogger: ITelemetryLoggerExt,\n\t\trateLimiter: RateLimiter,\n\t\tfetchToken: TokenFetcher,\n\t\tgetAuthorizationHeader: AuthorizationHeaderGetter,\n\t\tuseRestLess: boolean,\n\t\tbaseurl?: string,\n\t\tinitialTokenP?: Promise<ITokenResponse>,\n\t\tdefaultQueryString: QueryStringType = {},\n\t) {\n\t\tsuper(\n\t\t\tlogger,\n\t\t\trateLimiter,\n\t\t\tfetchToken,\n\t\t\tgetAuthorizationHeader,\n\t\t\tuseRestLess,\n\t\t\tbaseurl,\n\t\t\tinitialTokenP,\n\t\t\tdefaultQueryString,\n\t\t);\n\t}\n\n\tpublic static load(\n\t\ttenantId: string,\n\t\ttokenFetcher: TokenFetcher,\n\t\tlogger: ITelemetryLoggerExt,\n\t\trateLimiter: RateLimiter,\n\t\tuseRestLess: boolean,\n\t\tbaseurl?: string,\n\t\tinitialTokenP?: Promise<ITokenResponse>,\n\t): RouterliciousStorageRestWrapper {\n\t\tconst defaultQueryString = {};\n\n\t\tconst getAuthorizationHeader: AuthorizationHeaderGetter = (\n\t\t\ttoken: ITokenResponse,\n\t\t): string => {\n\t\t\tconst credentials = {\n\t\t\t\tpassword: token.jwt,\n\t\t\t\tuser: tenantId,\n\t\t\t};\n\t\t\treturn getAuthorizationTokenFromCredentials(credentials);\n\t\t};\n\n\t\tconst restWrapper = new RouterliciousStorageRestWrapper(\n\t\t\tlogger,\n\t\t\trateLimiter,\n\t\t\ttokenFetcher,\n\t\t\tgetAuthorizationHeader,\n\t\t\tuseRestLess,\n\t\t\tbaseurl,\n\t\t\tinitialTokenP,\n\t\t\tdefaultQueryString,\n\t\t);\n\n\t\treturn restWrapper;\n\t}\n}\n\nexport class RouterliciousOrdererRestWrapper extends RouterliciousRestWrapper {\n\tprivate constructor(\n\t\tlogger: ITelemetryLoggerExt,\n\t\trateLimiter: RateLimiter,\n\t\tfetchToken: TokenFetcher,\n\t\tgetAuthorizationHeader: AuthorizationHeaderGetter,\n\t\tuseRestLess: boolean,\n\t\tbaseurl?: string,\n\t\tinitialTokenP?: Promise<ITokenResponse>,\n\t\tdefaultQueryString: QueryStringType = {},\n\t) {\n\t\tsuper(\n\t\t\tlogger,\n\t\t\trateLimiter,\n\t\t\tfetchToken,\n\t\t\tgetAuthorizationHeader,\n\t\t\tuseRestLess,\n\t\t\tbaseurl,\n\t\t\tinitialTokenP,\n\t\t\tdefaultQueryString,\n\t\t);\n\t}\n\n\tpublic static load(\n\t\ttokenFetcher: TokenFetcher,\n\t\tlogger: ITelemetryLoggerExt,\n\t\trateLimiter: RateLimiter,\n\t\tuseRestLess: boolean,\n\t\tbaseurl?: string,\n\t\tinitialTokenP?: Promise<ITokenResponse>,\n\t): RouterliciousOrdererRestWrapper {\n\t\tconst getAuthorizationHeader: AuthorizationHeaderGetter = (\n\t\t\ttoken: ITokenResponse,\n\t\t): string => {\n\t\t\treturn `Basic ${token.jwt}`;\n\t\t};\n\n\t\tconst restWrapper = new RouterliciousOrdererRestWrapper(\n\t\t\tlogger,\n\t\t\trateLimiter,\n\t\t\ttokenFetcher,\n\t\t\tgetAuthorizationHeader,\n\t\t\tuseRestLess,\n\t\t\tbaseurl,\n\t\t\tinitialTokenP,\n\t\t);\n\n\t\treturn restWrapper;\n\t}\n}\n\nexport function toInstrumentedR11sOrdererTokenFetcher(\n\ttenantId: string,\n\tdocumentId: string | undefined,\n\ttokenProvider: ITokenProvider,\n\tlogger: ITelemetryLoggerExt,\n): TokenFetcher {\n\tconst fetchOrdererToken = async (refreshToken?: boolean): Promise<ITokenResponse> => {\n\t\treturn PerformanceEvent.timedExecAsync(\n\t\t\tlogger,\n\t\t\t{\n\t\t\t\teventName: \"FetchOrdererToken\",\n\t\t\t\tdocId: documentId,\n\t\t\t},\n\t\t\tasync () => {\n\t\t\t\tconst ordererToken = await tokenProvider.fetchOrdererToken(\n\t\t\t\t\ttenantId,\n\t\t\t\t\tdocumentId,\n\t\t\t\t\trefreshToken,\n\t\t\t\t);\n\n\t\t\t\treturn ordererToken;\n\t\t\t},\n\t\t);\n\t};\n\treturn fetchOrdererToken;\n}\n\nexport function toInstrumentedR11sStorageTokenFetcher(\n\ttenantId: string,\n\tdocumentId: string,\n\ttokenProvider: ITokenProvider,\n\tlogger: ITelemetryLoggerExt,\n): TokenFetcher {\n\tconst fetchStorageToken = async (refreshToken?: boolean): Promise<ITokenResponse> => {\n\t\treturn PerformanceEvent.timedExecAsync(\n\t\t\tlogger,\n\t\t\t{\n\t\t\t\teventName: \"FetchStorageToken\",\n\t\t\t\tdocId: documentId,\n\t\t\t},\n\t\t\tasync () => {\n\t\t\t\t// Craft credentials using tenant id and token\n\t\t\t\tconst storageToken = await tokenProvider.fetchStorageToken(\n\t\t\t\t\ttenantId,\n\t\t\t\t\tdocumentId,\n\t\t\t\t\trefreshToken,\n\t\t\t\t);\n\n\t\t\t\treturn storageToken;\n\t\t\t},\n\t\t);\n\t};\n\treturn fetchStorageToken;\n}\n"]}
1
+ {"version":3,"file":"restWrapper.js","sourceRoot":"","sources":["../src/restWrapper.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 { performanceNow } from \"@fluid-internal/client-utils\";\nimport type { ITelemetryBaseProperties } from \"@fluidframework/core-interfaces\";\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport type { RateLimiter } from \"@fluidframework/driver-utils/internal\";\nimport { GenericNetworkError, NonRetryableError } from \"@fluidframework/driver-utils/internal\";\nimport {\n\tCorrelationIdHeaderName,\n\tDriverVersionHeaderName,\n\tRestLessClient,\n\tgetAuthorizationTokenFromCredentials,\n} from \"@fluidframework/server-services-client\";\nimport type { TelemetryLoggerExt } from \"@fluidframework/telemetry-utils/internal\";\nimport { PerformanceEvent, numberFromString } from \"@fluidframework/telemetry-utils/internal\";\nimport safeStringify from \"json-stringify-safe\";\n\nimport {\n\tgetUrlForTelemetry,\n\tRouterliciousErrorTypes,\n\tthrowR11sNetworkError,\n} from \"./errorUtils.js\";\nimport { pkgVersion as driverVersion } from \"./packageVersion.js\";\nimport { addOrUpdateQueryParams, type QueryStringType } from \"./queryStringUtils.js\";\nimport type { RequestConfig, RawRequestHeaders } from \"./request.cjs\";\nimport { RestWrapper } from \"./restWrapperBase.js\";\nimport type { ITokenProvider, ITokenResponse } from \"./tokens.js\";\n\ntype AuthorizationHeaderGetter = (token: ITokenResponse) => string;\nexport type TokenFetcher = (refresh?: boolean) => Promise<ITokenResponse>;\n\nconst buildRequestUrl = (requestConfig: RequestConfig): string =>\n\trequestConfig.baseURL === undefined\n\t\t? (requestConfig.url ?? \"\")\n\t\t: `${requestConfig.baseURL ?? \"\"}${requestConfig.url ?? \"\"}`;\n\nconst buildRequestInitConfig = (requestConfig: RequestConfig): RequestInit => {\n\tconst requestInit: RequestInit = {\n\t\tmethod: requestConfig.method,\n\t\t// NOTE: Although the RequestHeaders type permits non-string values in the header, here we are\n\t\t// guaranteed the requestConfig only has string values in its header.\n\t\theaders: requestConfig.headers as Record<string, string>,\n\t\tbody: requestConfig.data,\n\t};\n\treturn requestInit;\n};\n\nexport interface IR11sResponse<T> {\n\tcontent: T;\n\theaders: Map<string, string>;\n\tpropsToLog: ITelemetryBaseProperties;\n\trequestUrl: string;\n}\n\n/**\n * A utility function to create a Routerlicious response without any additional props as we might not have them always.\n * @param content - Response which is equivalent to content.\n * @returns A Routerlicious response without any extra props.\n */\nexport function createR11sResponseFromContent<T>(content: T): IR11sResponse<T> {\n\treturn {\n\t\tcontent,\n\t\theaders: new Map(),\n\t\tpropsToLog: {},\n\t\trequestUrl: \"\",\n\t};\n}\n\nfunction headersToMap(headers: Headers): Map<string, string> {\n\tconst newHeaders = new Map<string, string>();\n\tfor (const [key, value] of headers.entries()) {\n\t\tnewHeaders.set(key, value);\n\t}\n\treturn newHeaders;\n}\n\nexport function getPropsToLogFromResponse(headers: {\n\t// eslint-disable-next-line @rushstack/no-new-null\n\tget: (id: string) => string | undefined | null;\n}): ITelemetryBaseProperties {\n\tinterface LoggingHeader {\n\t\theaderName: string;\n\t\tlogName: string;\n\t}\n\n\t// We rename headers so that otel doesn't scrub them away. Otel doesn't allow\n\t// certain characters in headers including '-'\n\tconst headersToLog: LoggingHeader[] = [\n\t\t{ headerName: CorrelationIdHeaderName, logName: \"requestCorrelationId\" },\n\t\t{ headerName: \"content-encoding\", logName: \"contentEncoding\" },\n\t\t{ headerName: \"content-type\", logName: \"contentType\" },\n\t];\n\tconst additionalProps: ITelemetryBaseProperties = {\n\t\tcontentsize: numberFromString(headers.get(\"content-length\")),\n\t};\n\tfor (const header of headersToLog) {\n\t\tconst headerValue = headers.get(header.headerName);\n\t\tif (headerValue !== undefined && headerValue !== null) {\n\t\t\tadditionalProps[header.logName] = headerValue;\n\t\t}\n\t}\n\n\treturn additionalProps;\n}\n\nclass RouterliciousRestWrapper extends RestWrapper {\n\tprivate readonly restLess = new RestLessClient();\n\tprivate token: ITokenResponse | undefined;\n\n\t/**\n\t * A locally maintained map which saves the number of retries for any REST api call made through restWrapper.\n\t * It uses the href of the request url as a key against which it saves the retry counts. Retries are only counted in case of failures.\n\t * This feature is added to enable FRS to have more telemetry insights into whether the requests are being retried from same client or multiple.\n\t */\n\tprivate readonly retryCounter = new Map<string, number>();\n\n\tconstructor(\n\t\tlogger: TelemetryLoggerExt,\n\t\tprivate readonly rateLimiter: RateLimiter,\n\t\tprivate readonly fetchRefreshedToken: TokenFetcher,\n\t\tprivate readonly getAuthorizationHeader: AuthorizationHeaderGetter,\n\t\tprivate readonly useRestLess: boolean,\n\t\tbaseurl?: string,\n\t\tprivate tokenP?: Promise<ITokenResponse>,\n\t\tdefaultQueryString: QueryStringType = {},\n\t) {\n\t\tsuper(baseurl, defaultQueryString);\n\t}\n\n\tprotected async request<T>(\n\t\trequestConfig: RequestConfig,\n\t\tstatusCode: number,\n\t\tcanRetry = true,\n\t): Promise<IR11sResponse<T>> {\n\t\tif (requestConfig.params) {\n\t\t\t// delete the retry param, if any. We do this to ensure there is no retry added by any of callers, which would conflict with the one we maintain here in the retryCounter map.\n\t\t\tdelete requestConfig.params.retry;\n\t\t}\n\n\t\t// Build the complete request url including baseUrl, url and query params. (all except 'retry' query param)\n\t\tlet completeRequestUrl = addOrUpdateQueryParams(\n\t\t\tbuildRequestUrl(requestConfig),\n\t\t\trequestConfig.params ?? {},\n\t\t);\n\n\t\t// Check whether this request has been made before or if it is a retry.\n\t\t// requestKey is built using the HTTP method appended with the complete URL ommitting the 'retry' param\n\t\tconst requestKey = `${requestConfig.method ?? \"\"}|${completeRequestUrl.href}`;\n\t\tconst requestRetryCount = this.retryCounter.get(requestKey);\n\t\tif (requestRetryCount) {\n\t\t\tcompleteRequestUrl = addOrUpdateQueryParams(completeRequestUrl, {\n\t\t\t\tretry: requestRetryCount,\n\t\t\t});\n\t\t}\n\n\t\tconst config: RequestConfig = {\n\t\t\t...requestConfig,\n\t\t\theaders: await this.generateHeaders(requestConfig.headers),\n\t\t};\n\n\t\t// RestLessClient.translate() returns AxiosRequestConfig (from server-services-client),\n\t\t// which is structurally compatible with our RequestConfig type.\n\t\tconst translatedConfig: RequestConfig = this.useRestLess\n\t\t\t? (this.restLess.translate(config) as RequestConfig)\n\t\t\t: config;\n\t\tconst fetchRequestConfig = buildRequestInitConfig(translatedConfig);\n\n\t\tconst res = await this.rateLimiter.schedule(async () => {\n\t\t\tconst perfStart = performanceNow();\n\t\t\tconst result = await fetch(completeRequestUrl, fetchRequestConfig).catch(\n\t\t\t\tasync (error) => {\n\t\t\t\t\t// on failure, add the request entry into the retryCounter map to count the subsequent retries, if any\n\t\t\t\t\tthis.retryCounter.set(requestKey, requestRetryCount ? requestRetryCount + 1 : 1);\n\n\t\t\t\t\tconst telemetryProps = {\n\t\t\t\t\t\tdriverVersion,\n\t\t\t\t\t\tretryCount: requestRetryCount,\n\t\t\t\t\t\turl: getUrlForTelemetry(completeRequestUrl.hostname, completeRequestUrl.pathname),\n\t\t\t\t\t\trequestMethod: fetchRequestConfig.method,\n\t\t\t\t\t};\n\n\t\t\t\t\t// Browser Fetch throws a TypeError on network error, `node-fetch` throws a FetchError\n\t\t\t\t\tconst isNetworkError = [\"TypeError\", \"FetchError\"].includes(error?.name);\n\t\t\t\t\tconst errorMessage = isNetworkError\n\t\t\t\t\t\t? `NetworkError: ${error.message}`\n\t\t\t\t\t\t: safeStringify(error);\n\t\t\t\t\t// If a service is temporarily down or a browser resource limit is reached, RestWrapper will throw\n\t\t\t\t\t// a network error with no status code (e.g. err:ERR_CONN_REFUSED or err:ERR_FAILED) and\n\t\t\t\t\t// the error message will start with NetworkError as defined in restWrapper.ts\n\t\t\t\t\t// If there exists a self-signed SSL certificates error, throw a NonRetryableError\n\t\t\t\t\t// TODO: instead of relying on string matching, filter error based on the error code like we do for websocket connections\n\t\t\t\t\tconst err = errorMessage.includes(\"failed, reason: self signed certificate\")\n\t\t\t\t\t\t? new NonRetryableError(\n\t\t\t\t\t\t\t\terrorMessage,\n\t\t\t\t\t\t\t\tRouterliciousErrorTypes.sslCertError,\n\t\t\t\t\t\t\t\ttelemetryProps,\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t: new GenericNetworkError(\n\t\t\t\t\t\t\t\terrorMessage,\n\t\t\t\t\t\t\t\terrorMessage.startsWith(\"NetworkError\"),\n\t\t\t\t\t\t\t\ttelemetryProps,\n\t\t\t\t\t\t\t);\n\t\t\t\t\tthrow err;\n\t\t\t\t},\n\t\t\t);\n\t\t\treturn {\n\t\t\t\tresponse: result,\n\t\t\t\tduration: performanceNow() - perfStart,\n\t\t\t};\n\t\t});\n\n\t\tconst response = res.response;\n\t\tconst headers = headersToMap(response.headers);\n\n\t\tlet start = performanceNow();\n\t\tconst text = await response.text();\n\t\tconst receiveContentTime = performanceNow() - start;\n\n\t\tconst bodySize = text.length;\n\t\tstart = performanceNow();\n\t\tconst responseBody: any = response.headers\n\t\t\t.get(\"content-type\")\n\t\t\t?.includes(\"application/json\")\n\t\t\t? JSON.parse(text)\n\t\t\t: text;\n\t\tconst parseTime = performanceNow() - start;\n\n\t\t// Success\n\t\tif (response.ok || response.status === statusCode) {\n\t\t\t// on successful response, remove the entry from the retryCounter map\n\t\t\tthis.retryCounter.delete(requestKey);\n\t\t\tconst result = responseBody as T;\n\t\t\treturn {\n\t\t\t\tcontent: result,\n\t\t\t\theaders,\n\t\t\t\trequestUrl: completeRequestUrl.href,\n\t\t\t\tpropsToLog: {\n\t\t\t\t\t...getPropsToLogFromResponse(headers),\n\t\t\t\t\tbodySize,\n\t\t\t\t\treceiveContentTime,\n\t\t\t\t\tparseTime,\n\t\t\t\t\tfetchTime: res.duration,\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\t// Failure\n\t\t// on failure, add the request entry into the retryCounter map to count the subsequent retries\n\t\tthis.retryCounter.set(requestKey, requestRetryCount ? requestRetryCount + 1 : 1);\n\n\t\tif (response.status === 401 && canRetry) {\n\t\t\t// Refresh Authorization header and retry once\n\t\t\tthis.token = await this.fetchRefreshedToken(true /* refreshToken */);\n\t\t\treturn this.request<T>({ ...config }, statusCode, false);\n\t\t}\n\t\tif (response.status === 429 && responseBody?.retryAfter > 0) {\n\t\t\t// Retry based on retryAfter[Seconds]\n\t\t\treturn new Promise<IR11sResponse<T>>((resolve, reject) =>\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t// use the original request URL without the retryCount appended\n\t\t\t\t\tthis.request<T>({ ...config }, statusCode)\n\t\t\t\t\t\t.then(resolve)\n\t\t\t\t\t\t.catch(reject);\n\t\t\t\t}, responseBody.retryAfter * 1000),\n\t\t\t);\n\t\t}\n\n\t\tconst responseSummary =\n\t\t\tresponseBody === undefined\n\t\t\t\t? response.statusText\n\t\t\t\t: typeof responseBody === \"string\"\n\t\t\t\t\t? responseBody\n\t\t\t\t\t: safeStringify(responseBody);\n\t\tthrowR11sNetworkError(\n\t\t\t`R11s fetch error: ${responseSummary}`,\n\t\t\tresponse.status,\n\t\t\tresponseBody?.retryAfter,\n\t\t\t{\n\t\t\t\t...getPropsToLogFromResponse(headers),\n\t\t\t\tdriverVersion,\n\t\t\t\turl: getUrlForTelemetry(completeRequestUrl.hostname, completeRequestUrl.pathname),\n\t\t\t\trequestMethod: fetchRequestConfig.method,\n\t\t\t},\n\t\t);\n\t}\n\n\tprivate async generateHeaders(\n\t\trequestHeaders?: RawRequestHeaders | undefined,\n\t): Promise<RawRequestHeaders> {\n\t\tconst token = await this.getToken();\n\t\tassert(token !== undefined, 0x679 /* token should be present */);\n\t\tconst headers: RawRequestHeaders = {\n\t\t\t...requestHeaders,\n\t\t\t[DriverVersionHeaderName]: driverVersion,\n\t\t\t// NOTE: If this.authorizationHeader is undefined, should \"Authorization\" be removed entirely?\n\t\t\tAuthorization: this.getAuthorizationHeader(token),\n\t\t};\n\t\treturn headers;\n\t}\n\n\tpublic async getToken(): Promise<ITokenResponse> {\n\t\tif (this.token !== undefined) {\n\t\t\treturn this.token;\n\t\t}\n\t\tconst token = await (this.tokenP ?? this.fetchRefreshedToken());\n\t\tthis.setToken(token);\n\t\tthis.tokenP = undefined;\n\t\treturn token;\n\t}\n\n\tpublic setToken(token: ITokenResponse): void {\n\t\tthis.token = token;\n\t}\n}\n\nexport class RouterliciousStorageRestWrapper extends RouterliciousRestWrapper {\n\tprivate constructor(\n\t\tlogger: TelemetryLoggerExt,\n\t\trateLimiter: RateLimiter,\n\t\tfetchToken: TokenFetcher,\n\t\tgetAuthorizationHeader: AuthorizationHeaderGetter,\n\t\tuseRestLess: boolean,\n\t\tbaseurl?: string,\n\t\tinitialTokenP?: Promise<ITokenResponse>,\n\t\tdefaultQueryString: QueryStringType = {},\n\t) {\n\t\tsuper(\n\t\t\tlogger,\n\t\t\trateLimiter,\n\t\t\tfetchToken,\n\t\t\tgetAuthorizationHeader,\n\t\t\tuseRestLess,\n\t\t\tbaseurl,\n\t\t\tinitialTokenP,\n\t\t\tdefaultQueryString,\n\t\t);\n\t}\n\n\tpublic static load(\n\t\ttenantId: string,\n\t\ttokenFetcher: TokenFetcher,\n\t\tlogger: TelemetryLoggerExt,\n\t\trateLimiter: RateLimiter,\n\t\tuseRestLess: boolean,\n\t\tbaseurl?: string,\n\t\tinitialTokenP?: Promise<ITokenResponse>,\n\t): RouterliciousStorageRestWrapper {\n\t\tconst defaultQueryString = {};\n\n\t\tconst getAuthorizationHeader: AuthorizationHeaderGetter = (\n\t\t\ttoken: ITokenResponse,\n\t\t): string => {\n\t\t\tconst credentials = {\n\t\t\t\tpassword: token.jwt,\n\t\t\t\tuser: tenantId,\n\t\t\t};\n\t\t\treturn getAuthorizationTokenFromCredentials(credentials);\n\t\t};\n\n\t\tconst restWrapper = new RouterliciousStorageRestWrapper(\n\t\t\tlogger,\n\t\t\trateLimiter,\n\t\t\ttokenFetcher,\n\t\t\tgetAuthorizationHeader,\n\t\t\tuseRestLess,\n\t\t\tbaseurl,\n\t\t\tinitialTokenP,\n\t\t\tdefaultQueryString,\n\t\t);\n\n\t\treturn restWrapper;\n\t}\n}\n\nexport class RouterliciousOrdererRestWrapper extends RouterliciousRestWrapper {\n\tprivate constructor(\n\t\tlogger: TelemetryLoggerExt,\n\t\trateLimiter: RateLimiter,\n\t\tfetchToken: TokenFetcher,\n\t\tgetAuthorizationHeader: AuthorizationHeaderGetter,\n\t\tuseRestLess: boolean,\n\t\tbaseurl?: string,\n\t\tinitialTokenP?: Promise<ITokenResponse>,\n\t\tdefaultQueryString: QueryStringType = {},\n\t) {\n\t\tsuper(\n\t\t\tlogger,\n\t\t\trateLimiter,\n\t\t\tfetchToken,\n\t\t\tgetAuthorizationHeader,\n\t\t\tuseRestLess,\n\t\t\tbaseurl,\n\t\t\tinitialTokenP,\n\t\t\tdefaultQueryString,\n\t\t);\n\t}\n\n\tpublic static load(\n\t\ttokenFetcher: TokenFetcher,\n\t\tlogger: TelemetryLoggerExt,\n\t\trateLimiter: RateLimiter,\n\t\tuseRestLess: boolean,\n\t\tbaseurl?: string,\n\t\tinitialTokenP?: Promise<ITokenResponse>,\n\t): RouterliciousOrdererRestWrapper {\n\t\tconst getAuthorizationHeader: AuthorizationHeaderGetter = (\n\t\t\ttoken: ITokenResponse,\n\t\t): string => {\n\t\t\treturn `Basic ${token.jwt}`;\n\t\t};\n\n\t\tconst restWrapper = new RouterliciousOrdererRestWrapper(\n\t\t\tlogger,\n\t\t\trateLimiter,\n\t\t\ttokenFetcher,\n\t\t\tgetAuthorizationHeader,\n\t\t\tuseRestLess,\n\t\t\tbaseurl,\n\t\t\tinitialTokenP,\n\t\t);\n\n\t\treturn restWrapper;\n\t}\n}\n\nexport function toInstrumentedR11sOrdererTokenFetcher(\n\ttenantId: string,\n\tdocumentId: string | undefined,\n\ttokenProvider: ITokenProvider,\n\tlogger: TelemetryLoggerExt,\n): TokenFetcher {\n\tconst fetchOrdererToken = async (refreshToken?: boolean): Promise<ITokenResponse> => {\n\t\treturn PerformanceEvent.timedExecAsync(\n\t\t\tlogger,\n\t\t\t{\n\t\t\t\teventName: \"FetchOrdererToken\",\n\t\t\t\tdocId: documentId,\n\t\t\t},\n\t\t\tasync () => {\n\t\t\t\tconst ordererToken = await tokenProvider.fetchOrdererToken(\n\t\t\t\t\ttenantId,\n\t\t\t\t\tdocumentId,\n\t\t\t\t\trefreshToken,\n\t\t\t\t);\n\n\t\t\t\treturn ordererToken;\n\t\t\t},\n\t\t);\n\t};\n\treturn fetchOrdererToken;\n}\n\nexport function toInstrumentedR11sStorageTokenFetcher(\n\ttenantId: string,\n\tdocumentId: string,\n\ttokenProvider: ITokenProvider,\n\tlogger: TelemetryLoggerExt,\n): TokenFetcher {\n\tconst fetchStorageToken = async (refreshToken?: boolean): Promise<ITokenResponse> => {\n\t\treturn PerformanceEvent.timedExecAsync(\n\t\t\tlogger,\n\t\t\t{\n\t\t\t\teventName: \"FetchStorageToken\",\n\t\t\t\tdocId: documentId,\n\t\t\t},\n\t\t\tasync () => {\n\t\t\t\t// Craft credentials using tenant id and token\n\t\t\t\tconst storageToken = await tokenProvider.fetchStorageToken(\n\t\t\t\t\ttenantId,\n\t\t\t\t\tdocumentId,\n\t\t\t\t\trefreshToken,\n\t\t\t\t);\n\n\t\t\t\treturn storageToken;\n\t\t\t},\n\t\t);\n\t};\n\treturn fetchStorageToken;\n}\n"]}
@@ -4,14 +4,14 @@
4
4
  */
5
5
  import type { IGitCommitDetails, IGitBlob, IGitCreateBlobResponse, IGitCreateTreeParams, IGitTree } from "@fluidframework/driver-definitions/internal";
6
6
  import type { IWholeSummaryPayload, IWriteSummaryResponse } from "@fluidframework/server-services-client";
7
- import type { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils/internal";
7
+ import type { TelemetryLoggerExt } from "@fluidframework/telemetry-utils/internal";
8
8
  import type { IWholeFlatSnapshot } from "./contracts.js";
9
9
  import type { IR11sResponse } from "./restWrapper.js";
10
10
  import type { IGitManager } from "./storageContracts.js";
11
11
  export declare class RetriableGitManager implements IGitManager {
12
12
  private readonly internalGitManager;
13
13
  private readonly logger;
14
- constructor(internalGitManager: IGitManager, logger: ITelemetryLoggerExt);
14
+ constructor(internalGitManager: IGitManager, logger: TelemetryLoggerExt);
15
15
  getCommits(sha: string, count: number): Promise<IR11sResponse<IGitCommitDetails[]>>;
16
16
  getTree(root: string, recursive: boolean): Promise<IR11sResponse<IGitTree>>;
17
17
  getBlob(sha: string): Promise<IR11sResponse<IGitBlob>>;
@@ -1 +1 @@
1
- {"version":3,"file":"retriableGitManager.d.ts","sourceRoot":"","sources":["../src/retriableGitManager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACX,iBAAiB,EACjB,QAAQ,EACR,sBAAsB,EACtB,oBAAoB,EACpB,QAAQ,EACR,MAAM,6CAA6C,CAAC;AAErD,OAAO,KAAK,EACX,oBAAoB,EACpB,qBAAqB,EACrB,MAAM,wCAAwC,CAAC;AAChD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAEpF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,qBAAa,mBAAoB,YAAW,WAAW;IAErD,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADN,kBAAkB,EAAE,WAAW,EAC/B,MAAM,EAAE,mBAAmB;IAGhC,UAAU,CACtB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GACX,OAAO,CAAC,aAAa,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAOjC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAO3E,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAOtD,UAAU,CACtB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACd,OAAO,CAAC,aAAa,CAAC,sBAAsB,CAAC,CAAC;IAOpC,aAAa,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAO7E,aAAa,CACzB,OAAO,EAAE,oBAAoB,GAC3B,OAAO,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC;IAOnC,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;YAOnE,YAAY;CAQ1B"}
1
+ {"version":3,"file":"retriableGitManager.d.ts","sourceRoot":"","sources":["../src/retriableGitManager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACX,iBAAiB,EACjB,QAAQ,EACR,sBAAsB,EACtB,oBAAoB,EACpB,QAAQ,EACR,MAAM,6CAA6C,CAAC;AAErD,OAAO,KAAK,EACX,oBAAoB,EACpB,qBAAqB,EACrB,MAAM,wCAAwC,CAAC;AAChD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AAEnF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,qBAAa,mBAAoB,YAAW,WAAW;IAErD,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADN,kBAAkB,EAAE,WAAW,EAC/B,MAAM,EAAE,kBAAkB;IAG/B,UAAU,CACtB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GACX,OAAO,CAAC,aAAa,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAOjC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAO3E,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAOtD,UAAU,CACtB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACd,OAAO,CAAC,aAAa,CAAC,sBAAsB,CAAC,CAAC;IAOpC,aAAa,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAO7E,aAAa,CACzB,OAAO,EAAE,oBAAoB,GAC3B,OAAO,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC;IAOnC,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;YAOnE,YAAY;CAQ1B"}
@@ -1 +1 @@
1
- {"version":3,"file":"retriableGitManager.js","sourceRoot":"","sources":["../src/retriableGitManager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,OAAO,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAWrE,MAAM,OAAO,mBAAmB;IAC/B,YACkB,kBAA+B,EAC/B,MAA2B;QAD3B,uBAAkB,GAAlB,kBAAkB,CAAa;QAC/B,WAAM,GAAN,MAAM,CAAqB;IAC1C,CAAC;IAEG,KAAK,CAAC,UAAU,CACtB,GAAW,EACX,KAAa;QAEb,OAAO,IAAI,CAAC,YAAY,CACvB,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,EAC1D,uBAAuB,CACvB,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,IAAY,EAAE,SAAkB;QACpD,OAAO,IAAI,CAAC,YAAY,CACvB,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,EAC5D,oBAAoB,CACpB,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,GAAW;QAC/B,OAAO,IAAI,CAAC,YAAY,CACvB,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,GAAG,CAAC,EAChD,oBAAoB,CACpB,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,UAAU,CACtB,OAAe,EACf,QAAgB;QAEhB,OAAO,IAAI,CAAC,YAAY,CACvB,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,EACjE,uBAAuB,CACvB,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,aAAa,CAAC,MAA4B;QACtD,OAAO,IAAI,CAAC,YAAY,CACvB,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,MAAM,CAAC,EACzD,0BAA0B,CAC1B,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,aAAa,CACzB,OAA6B;QAE7B,OAAO,IAAI,CAAC,YAAY,CACvB,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,OAAO,CAAC,EAC1D,0BAA0B,CAC1B,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,GAAW;QACnC,OAAO,IAAI,CAAC,YAAY,CACvB,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,GAAG,CAAC,EACpD,uBAAuB,CACvB,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,YAAY,CAAI,GAAqB,EAAE,QAAgB;QACpE,OAAO,YAAY,CAClB,GAAG,EACH,QAAQ,EACR,IAAI,CAAC,MAAM,EACX,EAAE,CACF,CAAC;IACH,CAAC;CACD","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport type {\n\tIGitCommitDetails,\n\tIGitBlob,\n\tIGitCreateBlobResponse,\n\tIGitCreateTreeParams,\n\tIGitTree,\n} from \"@fluidframework/driver-definitions/internal\";\nimport { runWithRetry } from \"@fluidframework/driver-utils/internal\";\nimport type {\n\tIWholeSummaryPayload,\n\tIWriteSummaryResponse,\n} from \"@fluidframework/server-services-client\";\nimport type { ITelemetryLoggerExt } from \"@fluidframework/telemetry-utils/internal\";\n\nimport type { IWholeFlatSnapshot } from \"./contracts.js\";\nimport type { IR11sResponse } from \"./restWrapper.js\";\nimport type { IGitManager } from \"./storageContracts.js\";\n\nexport class RetriableGitManager implements IGitManager {\n\tconstructor(\n\t\tprivate readonly internalGitManager: IGitManager,\n\t\tprivate readonly logger: ITelemetryLoggerExt,\n\t) {}\n\n\tpublic async getCommits(\n\t\tsha: string,\n\t\tcount: number,\n\t): Promise<IR11sResponse<IGitCommitDetails[]>> {\n\t\treturn this.runWithRetry(\n\t\t\tasync () => this.internalGitManager.getCommits(sha, count),\n\t\t\t\"gitManager_getCommits\",\n\t\t);\n\t}\n\n\tpublic async getTree(root: string, recursive: boolean): Promise<IR11sResponse<IGitTree>> {\n\t\treturn this.runWithRetry(\n\t\t\tasync () => this.internalGitManager.getTree(root, recursive),\n\t\t\t\"gitManager_getTree\",\n\t\t);\n\t}\n\n\tpublic async getBlob(sha: string): Promise<IR11sResponse<IGitBlob>> {\n\t\treturn this.runWithRetry(\n\t\t\tasync () => this.internalGitManager.getBlob(sha),\n\t\t\t\"gitManager_getBlob\",\n\t\t);\n\t}\n\n\tpublic async createBlob(\n\t\tcontent: string,\n\t\tencoding: string,\n\t): Promise<IR11sResponse<IGitCreateBlobResponse>> {\n\t\treturn this.runWithRetry(\n\t\t\tasync () => this.internalGitManager.createBlob(content, encoding),\n\t\t\t\"gitManager_createBlob\",\n\t\t);\n\t}\n\n\tpublic async createGitTree(params: IGitCreateTreeParams): Promise<IR11sResponse<IGitTree>> {\n\t\treturn this.runWithRetry(\n\t\t\tasync () => this.internalGitManager.createGitTree(params),\n\t\t\t\"gitManager_createGitTree\",\n\t\t);\n\t}\n\n\tpublic async createSummary(\n\t\tsummary: IWholeSummaryPayload,\n\t): Promise<IR11sResponse<IWriteSummaryResponse>> {\n\t\treturn this.runWithRetry(\n\t\t\tasync () => this.internalGitManager.createSummary(summary),\n\t\t\t\"gitManager_createSummary\",\n\t\t);\n\t}\n\n\tpublic async getSnapshot(sha: string): Promise<IR11sResponse<IWholeFlatSnapshot>> {\n\t\treturn this.runWithRetry(\n\t\t\tasync () => this.internalGitManager.getSnapshot(sha),\n\t\t\t\"gitManager_getSummary\",\n\t\t);\n\t}\n\n\tprivate async runWithRetry<T>(api: () => Promise<T>, callName: string): Promise<T> {\n\t\treturn runWithRetry(\n\t\t\tapi,\n\t\t\tcallName,\n\t\t\tthis.logger,\n\t\t\t{}, // progress\n\t\t);\n\t}\n}\n"]}
1
+ {"version":3,"file":"retriableGitManager.js","sourceRoot":"","sources":["../src/retriableGitManager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,OAAO,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAWrE,MAAM,OAAO,mBAAmB;IAC/B,YACkB,kBAA+B,EAC/B,MAA0B;QAD1B,uBAAkB,GAAlB,kBAAkB,CAAa;QAC/B,WAAM,GAAN,MAAM,CAAoB;IACzC,CAAC;IAEG,KAAK,CAAC,UAAU,CACtB,GAAW,EACX,KAAa;QAEb,OAAO,IAAI,CAAC,YAAY,CACvB,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,EAC1D,uBAAuB,CACvB,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,IAAY,EAAE,SAAkB;QACpD,OAAO,IAAI,CAAC,YAAY,CACvB,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,EAC5D,oBAAoB,CACpB,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,GAAW;QAC/B,OAAO,IAAI,CAAC,YAAY,CACvB,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,GAAG,CAAC,EAChD,oBAAoB,CACpB,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,UAAU,CACtB,OAAe,EACf,QAAgB;QAEhB,OAAO,IAAI,CAAC,YAAY,CACvB,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,EACjE,uBAAuB,CACvB,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,aAAa,CAAC,MAA4B;QACtD,OAAO,IAAI,CAAC,YAAY,CACvB,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,MAAM,CAAC,EACzD,0BAA0B,CAC1B,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,aAAa,CACzB,OAA6B;QAE7B,OAAO,IAAI,CAAC,YAAY,CACvB,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,OAAO,CAAC,EAC1D,0BAA0B,CAC1B,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,GAAW;QACnC,OAAO,IAAI,CAAC,YAAY,CACvB,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,GAAG,CAAC,EACpD,uBAAuB,CACvB,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,YAAY,CAAI,GAAqB,EAAE,QAAgB;QACpE,OAAO,YAAY,CAClB,GAAG,EACH,QAAQ,EACR,IAAI,CAAC,MAAM,EACX,EAAE,CACF,CAAC;IACH,CAAC;CACD","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport type {\n\tIGitCommitDetails,\n\tIGitBlob,\n\tIGitCreateBlobResponse,\n\tIGitCreateTreeParams,\n\tIGitTree,\n} from \"@fluidframework/driver-definitions/internal\";\nimport { runWithRetry } from \"@fluidframework/driver-utils/internal\";\nimport type {\n\tIWholeSummaryPayload,\n\tIWriteSummaryResponse,\n} from \"@fluidframework/server-services-client\";\nimport type { TelemetryLoggerExt } from \"@fluidframework/telemetry-utils/internal\";\n\nimport type { IWholeFlatSnapshot } from \"./contracts.js\";\nimport type { IR11sResponse } from \"./restWrapper.js\";\nimport type { IGitManager } from \"./storageContracts.js\";\n\nexport class RetriableGitManager implements IGitManager {\n\tconstructor(\n\t\tprivate readonly internalGitManager: IGitManager,\n\t\tprivate readonly logger: TelemetryLoggerExt,\n\t) {}\n\n\tpublic async getCommits(\n\t\tsha: string,\n\t\tcount: number,\n\t): Promise<IR11sResponse<IGitCommitDetails[]>> {\n\t\treturn this.runWithRetry(\n\t\t\tasync () => this.internalGitManager.getCommits(sha, count),\n\t\t\t\"gitManager_getCommits\",\n\t\t);\n\t}\n\n\tpublic async getTree(root: string, recursive: boolean): Promise<IR11sResponse<IGitTree>> {\n\t\treturn this.runWithRetry(\n\t\t\tasync () => this.internalGitManager.getTree(root, recursive),\n\t\t\t\"gitManager_getTree\",\n\t\t);\n\t}\n\n\tpublic async getBlob(sha: string): Promise<IR11sResponse<IGitBlob>> {\n\t\treturn this.runWithRetry(\n\t\t\tasync () => this.internalGitManager.getBlob(sha),\n\t\t\t\"gitManager_getBlob\",\n\t\t);\n\t}\n\n\tpublic async createBlob(\n\t\tcontent: string,\n\t\tencoding: string,\n\t): Promise<IR11sResponse<IGitCreateBlobResponse>> {\n\t\treturn this.runWithRetry(\n\t\t\tasync () => this.internalGitManager.createBlob(content, encoding),\n\t\t\t\"gitManager_createBlob\",\n\t\t);\n\t}\n\n\tpublic async createGitTree(params: IGitCreateTreeParams): Promise<IR11sResponse<IGitTree>> {\n\t\treturn this.runWithRetry(\n\t\t\tasync () => this.internalGitManager.createGitTree(params),\n\t\t\t\"gitManager_createGitTree\",\n\t\t);\n\t}\n\n\tpublic async createSummary(\n\t\tsummary: IWholeSummaryPayload,\n\t): Promise<IR11sResponse<IWriteSummaryResponse>> {\n\t\treturn this.runWithRetry(\n\t\t\tasync () => this.internalGitManager.createSummary(summary),\n\t\t\t\"gitManager_createSummary\",\n\t\t);\n\t}\n\n\tpublic async getSnapshot(sha: string): Promise<IR11sResponse<IWholeFlatSnapshot>> {\n\t\treturn this.runWithRetry(\n\t\t\tasync () => this.internalGitManager.getSnapshot(sha),\n\t\t\t\"gitManager_getSummary\",\n\t\t);\n\t}\n\n\tprivate async runWithRetry<T>(api: () => Promise<T>, callName: string): Promise<T> {\n\t\treturn runWithRetry(\n\t\t\tapi,\n\t\t\tcallName,\n\t\t\tthis.logger,\n\t\t\t{}, // progress\n\t\t);\n\t}\n}\n"]}
@@ -4,7 +4,7 @@
4
4
  */
5
5
  import type { IResolvedUrl } from "@fluidframework/driver-definitions/internal";
6
6
  import type { ISession } from "@fluidframework/server-services-client";
7
- import type { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils/internal";
7
+ import type { TelemetryLoggerExt } from "@fluidframework/telemetry-utils/internal";
8
8
  import type { RouterliciousOrdererRestWrapper } from "./restWrapper.js";
9
9
  /**
10
10
  * Amount of time between discoveries within which we don't need to rediscover on re-connect.
@@ -18,7 +18,7 @@ interface IGetSessionInfoParams {
18
18
  documentId: string;
19
19
  tenantId: string;
20
20
  ordererRestWrapper: RouterliciousOrdererRestWrapper;
21
- logger: ITelemetryLoggerExt;
21
+ logger: TelemetryLoggerExt;
22
22
  }
23
23
  export interface IGetSessionInfoResponse {
24
24
  refreshed: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"sessionInfoManager.d.ts","sourceRoot":"","sources":["../src/sessionInfoManager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6CAA6C,CAAC;AAChF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AACvE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAGpF,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,kBAAkB,CAAC;AAGxE;;;;;GAKG;AACH,eAAO,MAAM,mCAAmC,QAAY,CAAC;AAE7D,UAAU,qBAAqB;IAC9B,WAAW,EAAE,YAAY,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,+BAA+B,CAAC;IACpD,MAAM,EAAE,mBAAmB,CAAC;CAC5B;AAED,MAAM,WAAW,uBAAuB;IACvC,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,YAAY,CAAC;CAC1B;AAED,qBAAa,kBAAkB;IAelB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAd5C;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAwC;IAEvE;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAkC;gBAE9C,eAAe,EAAE,OAAO;IAErD;;OAEG;IACU,qBAAqB,CACjC,MAAM,EAAE,qBAAqB,GAAG;QAAE,OAAO,EAAE,QAAQ,GAAG,SAAS,CAAA;KAAE,GAC/D,OAAO,CAAC,YAAY,CAAC;IAqBxB;;OAEG;IACU,cAAc,CAC1B,MAAM,EAAE,qBAAqB,GAC3B,OAAO,CAAC,uBAAuB,CAAC;YA0BrB,yBAAyB;CA0BvC"}
1
+ {"version":3,"file":"sessionInfoManager.d.ts","sourceRoot":"","sources":["../src/sessionInfoManager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6CAA6C,CAAC;AAChF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AACvE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AAGnF,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,kBAAkB,CAAC;AAGxE;;;;;GAKG;AACH,eAAO,MAAM,mCAAmC,QAAY,CAAC;AAE7D,UAAU,qBAAqB;IAC9B,WAAW,EAAE,YAAY,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,+BAA+B,CAAC;IACpD,MAAM,EAAE,kBAAkB,CAAC;CAC3B;AAED,MAAM,WAAW,uBAAuB;IACvC,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,YAAY,CAAC;CAC1B;AAED,qBAAa,kBAAkB;IAelB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAd5C;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAwC;IAEvE;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAkC;gBAE9C,eAAe,EAAE,OAAO;IAErD;;OAEG;IACU,qBAAqB,CACjC,MAAM,EAAE,qBAAqB,GAAG;QAAE,OAAO,EAAE,QAAQ,GAAG,SAAS,CAAA;KAAE,GAC/D,OAAO,CAAC,YAAY,CAAC;IAqBxB;;OAEG;IACU,cAAc,CAC1B,MAAM,EAAE,qBAAqB,GAC3B,OAAO,CAAC,uBAAuB,CAAC;YA0BrB,yBAAyB;CA0BvC"}
@@ -1 +1 @@
1
- {"version":3,"file":"sessionInfoManager.js","sourceRoot":"","sources":["../src/sessionInfoManager.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 { assert } from \"@fluidframework/core-utils/internal\";\nimport { getW3CData } from \"@fluidframework/driver-base/internal\";\nimport type { IResolvedUrl } from \"@fluidframework/driver-definitions/internal\";\nimport type { ISession } from \"@fluidframework/server-services-client\";\nimport type { ITelemetryLoggerExt } from \"@fluidframework/telemetry-utils/internal\";\nimport { PerformanceEvent } from \"@fluidframework/telemetry-utils/internal\";\n\nimport type { RouterliciousOrdererRestWrapper } from \"./restWrapper.js\";\nimport { getDiscoveredFluidResolvedUrl } from \"./urlUtils.js\";\n\n/**\n * Amount of time between discoveries within which we don't need to rediscover on re-connect.\n * Currently, R11s defines session length at 10 minutes. To avoid any weird unknown edge-cases though,\n * we set the limit to 5 minutes here.\n * In the future, we likely want to retrieve this information from service's \"inactive session\" definition.\n */\nexport const RediscoverAfterTimeSinceDiscoveryMs = 5 * 60000; // 5 minutes\n\ninterface IGetSessionInfoParams {\n\tresolvedUrl: IResolvedUrl;\n\tdocumentId: string;\n\ttenantId: string;\n\tordererRestWrapper: RouterliciousOrdererRestWrapper;\n\tlogger: ITelemetryLoggerExt;\n}\n\nexport interface IGetSessionInfoResponse {\n\trefreshed: boolean;\n\tresolvedUrl: IResolvedUrl;\n}\n\nexport class SessionInfoManager {\n\t/**\n\t * Stored session info\n\t * Key: URL for given session (see \"getDiscoverSessionUrl\")\n\t * Value: session info stored as an IResolvedUrl\n\t */\n\tprivate readonly sessionInfoMap: Map<string, IResolvedUrl> = new Map();\n\n\t/**\n\t * Stored dates of when a session was last discovered/refreshed\n\t * Key: URL for given session (see \"getDiscoverSessionUrl\")\n\t * Value: date last discovered\n\t */\n\tprivate readonly sessionLastDiscoveredMap: Map<string, number> = new Map();\n\n\tconstructor(private readonly enableDiscovery: boolean) {}\n\n\t/**\n\t * Start tracking info for a given session\n\t */\n\tpublic async initializeSessionInfo(\n\t\tparams: IGetSessionInfoParams & { session: ISession | undefined },\n\t): Promise<IResolvedUrl> {\n\t\tconst { resolvedUrl, session } = params;\n\n\t\tconst url = getDiscoverSessionUrl(params);\n\t\tassert(\n\t\t\tthis.sessionInfoMap.has(url) === this.sessionLastDiscoveredMap.has(url),\n\t\t\t0xa2d /* Session map state mismatch */,\n\t\t);\n\n\t\tif (session !== undefined) {\n\t\t\tthis.sessionInfoMap.set(url, getDiscoveredFluidResolvedUrl(resolvedUrl, session));\n\t\t\tthis.sessionLastDiscoveredMap.set(url, Date.now());\n\t\t} else if (!this.sessionInfoMap.has(url)) {\n\t\t\tthis.sessionInfoMap.set(url, resolvedUrl);\n\t\t\t// Force a refresh\n\t\t\tthis.sessionLastDiscoveredMap.set(url, 0);\n\t\t}\n\n\t\treturn (await this.getSessionInfo(params)).resolvedUrl;\n\t}\n\n\t/**\n\t * Retrieve, and potentially refresh, info of a given session\n\t */\n\tpublic async getSessionInfo(\n\t\tparams: IGetSessionInfoParams,\n\t): Promise<IGetSessionInfoResponse> {\n\t\tconst url = getDiscoverSessionUrl(params);\n\t\tassert(\n\t\t\tthis.sessionInfoMap.has(url) && this.sessionLastDiscoveredMap.has(url),\n\t\t\t0xa2e /* Unexpected discover session URL */,\n\t\t);\n\n\t\tlet refreshed = false;\n\t\tconst shouldRediscover =\n\t\t\tDate.now() - this.sessionLastDiscoveredMap.get(url)! >\n\t\t\tRediscoverAfterTimeSinceDiscoveryMs;\n\t\tif (this.enableDiscovery && shouldRediscover) {\n\t\t\tawait this.fetchAndUpdateSessionInfo(params).catch((error) => {\n\t\t\t\t// Undo discovery time set on failure, so that next check refreshes.\n\t\t\t\tthis.sessionLastDiscoveredMap.set(url, 0);\n\t\t\t\tthrow error;\n\t\t\t});\n\t\t\trefreshed = true;\n\t\t}\n\t\treturn {\n\t\t\trefreshed,\n\t\t\t// ! Shallow copy is important as some mechanisms may rely on object comparison\n\t\t\tresolvedUrl: { ...this.sessionInfoMap.get(url)! },\n\t\t};\n\t}\n\n\tprivate async fetchAndUpdateSessionInfo(params: IGetSessionInfoParams): Promise<void> {\n\t\tconst { documentId, ordererRestWrapper, logger, resolvedUrl } = params;\n\n\t\tconst url = getDiscoverSessionUrl(params);\n\t\tconst discoveredSession = await PerformanceEvent.timedExecAsync(\n\t\t\tlogger,\n\t\t\t{\n\t\t\t\teventName: \"DiscoverSession\",\n\t\t\t\tdocId: documentId,\n\t\t\t},\n\t\t\tasync (event) => {\n\t\t\t\t// The service responds with the current document session associated with the container.\n\t\t\t\tconst response = await ordererRestWrapper.get<ISession>(url);\n\t\t\t\tevent.end({\n\t\t\t\t\t...response.propsToLog,\n\t\t\t\t\t...getW3CData(response.requestUrl, \"xmlhttprequest\"),\n\t\t\t\t});\n\t\t\t\treturn response.content;\n\t\t\t},\n\t\t);\n\t\tthis.sessionInfoMap.set(\n\t\t\turl,\n\t\t\tgetDiscoveredFluidResolvedUrl(resolvedUrl, discoveredSession),\n\t\t);\n\t\tthis.sessionLastDiscoveredMap.set(url, Date.now());\n\t}\n}\n\nfunction getDiscoverSessionUrl(params: {\n\tresolvedUrl: IResolvedUrl;\n\ttenantId: string;\n\tdocumentId: string;\n}): string {\n\tconst { resolvedUrl, tenantId, documentId } = params;\n\treturn `${resolvedUrl.endpoints.ordererUrl}/documents/${tenantId}/session/${documentId}`;\n}\n"]}
1
+ {"version":3,"file":"sessionInfoManager.js","sourceRoot":"","sources":["../src/sessionInfoManager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,qCAAqC,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAC;AAIlE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAG5E,OAAO,EAAE,6BAA6B,EAAE,MAAM,eAAe,CAAC;AAE9D;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,YAAY;AAe1E,MAAM,OAAO,kBAAkB;IAe9B,YAA6B,eAAwB;QAAxB,oBAAe,GAAf,eAAe,CAAS;QAdrD;;;;WAIG;QACc,mBAAc,GAA8B,IAAI,GAAG,EAAE,CAAC;QAEvE;;;;WAIG;QACc,6BAAwB,GAAwB,IAAI,GAAG,EAAE,CAAC;IAEnB,CAAC;IAEzD;;OAEG;IACI,KAAK,CAAC,qBAAqB,CACjC,MAAiE;QAEjE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;QAExC,MAAM,GAAG,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAC1C,MAAM,CACL,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,GAAG,CAAC,EACvE,KAAK,CAAC,gCAAgC,CACtC,CAAC;QAEF,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC3B,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,6BAA6B,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;YAClF,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACpD,CAAC;aAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1C,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;YAC1C,kBAAkB;YAClB,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAC3C,CAAC;QAED,OAAO,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC;IACxD,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,cAAc,CAC1B,MAA6B;QAE7B,MAAM,GAAG,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAC1C,MAAM,CACL,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,GAAG,CAAC,EACtE,KAAK,CAAC,qCAAqC,CAC3C,CAAC;QAEF,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,MAAM,gBAAgB,GACrB,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,GAAG,CAAE;YACpD,mCAAmC,CAAC;QACrC,IAAI,IAAI,CAAC,eAAe,IAAI,gBAAgB,EAAE,CAAC;YAC9C,MAAM,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBAC5D,oEAAoE;gBACpE,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBAC1C,MAAM,KAAK,CAAC;YACb,CAAC,CAAC,CAAC;YACH,SAAS,GAAG,IAAI,CAAC;QAClB,CAAC;QACD,OAAO;YACN,SAAS;YACT,+EAA+E;YAC/E,WAAW,EAAE,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAE,EAAE;SACjD,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,yBAAyB,CAAC,MAA6B;QACpE,MAAM,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;QAEvE,MAAM,GAAG,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAC1C,MAAM,iBAAiB,GAAG,MAAM,gBAAgB,CAAC,cAAc,CAC9D,MAAM,EACN;YACC,SAAS,EAAE,iBAAiB;YAC5B,KAAK,EAAE,UAAU;SACjB,EACD,KAAK,EAAE,KAAK,EAAE,EAAE;YACf,wFAAwF;YACxF,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,GAAG,CAAW,GAAG,CAAC,CAAC;YAC7D,KAAK,CAAC,GAAG,CAAC;gBACT,GAAG,QAAQ,CAAC,UAAU;gBACtB,GAAG,UAAU,CAAC,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAC;aACpD,CAAC,CAAC;YACH,OAAO,QAAQ,CAAC,OAAO,CAAC;QACzB,CAAC,CACD,CAAC;QACF,IAAI,CAAC,cAAc,CAAC,GAAG,CACtB,GAAG,EACH,6BAA6B,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAC7D,CAAC;QACF,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IACpD,CAAC;CACD;AAED,SAAS,qBAAqB,CAAC,MAI9B;IACA,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;IACrD,OAAO,GAAG,WAAW,CAAC,SAAS,CAAC,UAAU,cAAc,QAAQ,YAAY,UAAU,EAAE,CAAC;AAC1F,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 { getW3CData } from \"@fluidframework/driver-base/internal\";\nimport type { IResolvedUrl } from \"@fluidframework/driver-definitions/internal\";\nimport type { ISession } from \"@fluidframework/server-services-client\";\nimport type { TelemetryLoggerExt } from \"@fluidframework/telemetry-utils/internal\";\nimport { PerformanceEvent } from \"@fluidframework/telemetry-utils/internal\";\n\nimport type { RouterliciousOrdererRestWrapper } from \"./restWrapper.js\";\nimport { getDiscoveredFluidResolvedUrl } from \"./urlUtils.js\";\n\n/**\n * Amount of time between discoveries within which we don't need to rediscover on re-connect.\n * Currently, R11s defines session length at 10 minutes. To avoid any weird unknown edge-cases though,\n * we set the limit to 5 minutes here.\n * In the future, we likely want to retrieve this information from service's \"inactive session\" definition.\n */\nexport const RediscoverAfterTimeSinceDiscoveryMs = 5 * 60000; // 5 minutes\n\ninterface IGetSessionInfoParams {\n\tresolvedUrl: IResolvedUrl;\n\tdocumentId: string;\n\ttenantId: string;\n\tordererRestWrapper: RouterliciousOrdererRestWrapper;\n\tlogger: TelemetryLoggerExt;\n}\n\nexport interface IGetSessionInfoResponse {\n\trefreshed: boolean;\n\tresolvedUrl: IResolvedUrl;\n}\n\nexport class SessionInfoManager {\n\t/**\n\t * Stored session info\n\t * Key: URL for given session (see \"getDiscoverSessionUrl\")\n\t * Value: session info stored as an IResolvedUrl\n\t */\n\tprivate readonly sessionInfoMap: Map<string, IResolvedUrl> = new Map();\n\n\t/**\n\t * Stored dates of when a session was last discovered/refreshed\n\t * Key: URL for given session (see \"getDiscoverSessionUrl\")\n\t * Value: date last discovered\n\t */\n\tprivate readonly sessionLastDiscoveredMap: Map<string, number> = new Map();\n\n\tconstructor(private readonly enableDiscovery: boolean) {}\n\n\t/**\n\t * Start tracking info for a given session\n\t */\n\tpublic async initializeSessionInfo(\n\t\tparams: IGetSessionInfoParams & { session: ISession | undefined },\n\t): Promise<IResolvedUrl> {\n\t\tconst { resolvedUrl, session } = params;\n\n\t\tconst url = getDiscoverSessionUrl(params);\n\t\tassert(\n\t\t\tthis.sessionInfoMap.has(url) === this.sessionLastDiscoveredMap.has(url),\n\t\t\t0xa2d /* Session map state mismatch */,\n\t\t);\n\n\t\tif (session !== undefined) {\n\t\t\tthis.sessionInfoMap.set(url, getDiscoveredFluidResolvedUrl(resolvedUrl, session));\n\t\t\tthis.sessionLastDiscoveredMap.set(url, Date.now());\n\t\t} else if (!this.sessionInfoMap.has(url)) {\n\t\t\tthis.sessionInfoMap.set(url, resolvedUrl);\n\t\t\t// Force a refresh\n\t\t\tthis.sessionLastDiscoveredMap.set(url, 0);\n\t\t}\n\n\t\treturn (await this.getSessionInfo(params)).resolvedUrl;\n\t}\n\n\t/**\n\t * Retrieve, and potentially refresh, info of a given session\n\t */\n\tpublic async getSessionInfo(\n\t\tparams: IGetSessionInfoParams,\n\t): Promise<IGetSessionInfoResponse> {\n\t\tconst url = getDiscoverSessionUrl(params);\n\t\tassert(\n\t\t\tthis.sessionInfoMap.has(url) && this.sessionLastDiscoveredMap.has(url),\n\t\t\t0xa2e /* Unexpected discover session URL */,\n\t\t);\n\n\t\tlet refreshed = false;\n\t\tconst shouldRediscover =\n\t\t\tDate.now() - this.sessionLastDiscoveredMap.get(url)! >\n\t\t\tRediscoverAfterTimeSinceDiscoveryMs;\n\t\tif (this.enableDiscovery && shouldRediscover) {\n\t\t\tawait this.fetchAndUpdateSessionInfo(params).catch((error) => {\n\t\t\t\t// Undo discovery time set on failure, so that next check refreshes.\n\t\t\t\tthis.sessionLastDiscoveredMap.set(url, 0);\n\t\t\t\tthrow error;\n\t\t\t});\n\t\t\trefreshed = true;\n\t\t}\n\t\treturn {\n\t\t\trefreshed,\n\t\t\t// ! Shallow copy is important as some mechanisms may rely on object comparison\n\t\t\tresolvedUrl: { ...this.sessionInfoMap.get(url)! },\n\t\t};\n\t}\n\n\tprivate async fetchAndUpdateSessionInfo(params: IGetSessionInfoParams): Promise<void> {\n\t\tconst { documentId, ordererRestWrapper, logger, resolvedUrl } = params;\n\n\t\tconst url = getDiscoverSessionUrl(params);\n\t\tconst discoveredSession = await PerformanceEvent.timedExecAsync(\n\t\t\tlogger,\n\t\t\t{\n\t\t\t\teventName: \"DiscoverSession\",\n\t\t\t\tdocId: documentId,\n\t\t\t},\n\t\t\tasync (event) => {\n\t\t\t\t// The service responds with the current document session associated with the container.\n\t\t\t\tconst response = await ordererRestWrapper.get<ISession>(url);\n\t\t\t\tevent.end({\n\t\t\t\t\t...response.propsToLog,\n\t\t\t\t\t...getW3CData(response.requestUrl, \"xmlhttprequest\"),\n\t\t\t\t});\n\t\t\t\treturn response.content;\n\t\t\t},\n\t\t);\n\t\tthis.sessionInfoMap.set(\n\t\t\turl,\n\t\t\tgetDiscoveredFluidResolvedUrl(resolvedUrl, discoveredSession),\n\t\t);\n\t\tthis.sessionLastDiscoveredMap.set(url, Date.now());\n\t}\n}\n\nfunction getDiscoverSessionUrl(params: {\n\tresolvedUrl: IResolvedUrl;\n\ttenantId: string;\n\tdocumentId: string;\n}): string {\n\tconst { resolvedUrl, tenantId, documentId } = params;\n\treturn `${resolvedUrl.endpoints.ordererUrl}/documents/${tenantId}/session/${documentId}`;\n}\n"]}
@@ -4,7 +4,7 @@
4
4
  */
5
5
  import type { ISummaryHandle, ISummaryTree } from "@fluidframework/driver-definitions";
6
6
  import type { IDocumentStorageService, IDocumentStorageServicePolicies, ISummaryContext, ICreateBlobResponse, ISnapshotTreeEx, IVersion } from "@fluidframework/driver-definitions/internal";
7
- import type { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils/internal";
7
+ import type { TelemetryLoggerExt } from "@fluidframework/telemetry-utils/internal";
8
8
  import type { ICache } from "./cache.js";
9
9
  import type { ISnapshotTreeVersion } from "./definitions.js";
10
10
  import type { GitManager } from "./gitManager.js";
@@ -17,7 +17,7 @@ import type { IRouterliciousDriverPolicies } from "./policies.js";
17
17
  export declare class ShreddedSummaryDocumentStorageService implements IDocumentStorageService {
18
18
  protected readonly id: string;
19
19
  protected readonly manager: GitManager;
20
- protected readonly logger: ITelemetryLoggerExt;
20
+ protected readonly logger: TelemetryLoggerExt;
21
21
  readonly policies: IDocumentStorageServicePolicies;
22
22
  private readonly getStorageManager;
23
23
  private readonly mc;
@@ -25,7 +25,7 @@ export declare class ShreddedSummaryDocumentStorageService implements IDocumentS
25
25
  private readonly blobCache;
26
26
  private readonly snapshotTreeCache;
27
27
  private getSummaryUploadManager;
28
- constructor(id: string, manager: GitManager, logger: ITelemetryLoggerExt, policies: IDocumentStorageServicePolicies, driverPolicies?: IRouterliciousDriverPolicies, blobCache?: ICache<ArrayBufferLike>, snapshotTreeCache?: ICache<ISnapshotTreeVersion>, getStorageManager?: (disableCache?: boolean) => Promise<GitManager>);
28
+ constructor(id: string, manager: GitManager, logger: TelemetryLoggerExt, policies: IDocumentStorageServicePolicies, driverPolicies?: IRouterliciousDriverPolicies, blobCache?: ICache<ArrayBufferLike>, snapshotTreeCache?: ICache<ISnapshotTreeVersion>, getStorageManager?: (disableCache?: boolean) => Promise<GitManager>);
29
29
  getVersions(versionId: string | null, count: number): Promise<IVersion[]>;
30
30
  getSnapshotTree(version?: IVersion): Promise<ISnapshotTreeEx | null>;
31
31
  readBlob(blobId: string): Promise<ArrayBufferLike>;
@@ -1 +1 @@
1
- {"version":3,"file":"shreddedSummaryDocumentStorageService.d.ts","sourceRoot":"","sources":["../src/shreddedSummaryDocumentStorageService.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AACvF,OAAO,KAAK,EACX,uBAAuB,EACvB,+BAA+B,EAC/B,eAAe,EACf,mBAAmB,EACnB,eAAe,EACf,QAAQ,EACR,MAAM,6CAA6C,CAAC;AAErD,OAAO,KAAK,EACX,mBAAmB,EAEnB,MAAM,0CAA0C,CAAC;AAMlD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAC;AAOlE;;;;GAIG;AACH,qBAAa,qCAAsC,YAAW,uBAAuB;IAkBnF,SAAS,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM;IAC7B,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,UAAU;IACtC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,mBAAmB;aAC9B,QAAQ,EAAE,+BAA+B;IAIzD,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAxBnC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAoB;IAGvC,SAAS,CAAC,QAAQ,CAAC,aAAa,sBAA6B;IAC7D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAsC;IAChE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA2C;YAE/D,uBAAuB;gBAUjB,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,UAAU,EACnB,MAAM,EAAE,mBAAmB,EAC9B,QAAQ,EAAE,+BAA+B,EACzD,cAAc,CAAC,EAAE,4BAA4B,EAC7C,SAAS,CAAC,EAAE,MAAM,CAAC,eAAe,CAAC,EACnC,iBAAiB,CAAC,EAAE,MAAM,CAAC,oBAAoB,CAAC,EAC/B,iBAAiB,GAAE,CACnC,YAAY,CAAC,EAAE,OAAO,KAClB,OAAO,CAAC,UAAU,CAA4B;IAYvC,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAsBzE,eAAe,CAAC,OAAO,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAyCpE,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IA6BlD,wBAAwB,CACpC,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,eAAe,GACtB,OAAO,CAAC,MAAM,CAAC;IAqBL,eAAe,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,YAAY,CAAC;IAI9D,UAAU,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,mBAAmB,CAAC;YAqB9D,uBAAuB;IAYrC,OAAO,CAAC,WAAW;CAGnB"}
1
+ {"version":3,"file":"shreddedSummaryDocumentStorageService.d.ts","sourceRoot":"","sources":["../src/shreddedSummaryDocumentStorageService.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AACvF,OAAO,KAAK,EACX,uBAAuB,EACvB,+BAA+B,EAC/B,eAAe,EACf,mBAAmB,EACnB,eAAe,EACf,QAAQ,EACR,MAAM,6CAA6C,CAAC;AAErD,OAAO,KAAK,EACX,kBAAkB,EAElB,MAAM,0CAA0C,CAAC;AAMlD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAC;AAOlE;;;;GAIG;AACH,qBAAa,qCAAsC,YAAW,uBAAuB;IAkBnF,SAAS,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM;IAC7B,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,UAAU;IACtC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,kBAAkB;aAC7B,QAAQ,EAAE,+BAA+B;IAIzD,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAxBnC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAoB;IAGvC,SAAS,CAAC,QAAQ,CAAC,aAAa,sBAA6B;IAC7D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAsC;IAChE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA2C;YAE/D,uBAAuB;gBAUjB,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,UAAU,EACnB,MAAM,EAAE,kBAAkB,EAC7B,QAAQ,EAAE,+BAA+B,EACzD,cAAc,CAAC,EAAE,4BAA4B,EAC7C,SAAS,CAAC,EAAE,MAAM,CAAC,eAAe,CAAC,EACnC,iBAAiB,CAAC,EAAE,MAAM,CAAC,oBAAoB,CAAC,EAC/B,iBAAiB,GAAE,CACnC,YAAY,CAAC,EAAE,OAAO,KAClB,OAAO,CAAC,UAAU,CAA4B;IAYvC,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAsBzE,eAAe,CAAC,OAAO,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAyCpE,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IA6BlD,wBAAwB,CACpC,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,eAAe,GACtB,OAAO,CAAC,MAAM,CAAC;IAqBL,eAAe,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,YAAY,CAAC;IAI9D,UAAU,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,mBAAmB,CAAC;YAqB9D,uBAAuB;IAYrC,OAAO,CAAC,WAAW;CAGnB"}