@fluidframework/odsp-driver 2.1.0-274160 → 2.1.0-276985

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 (252) hide show
  1. package/README.md +3 -1
  2. package/api-report/{odsp-driver.alpha.api.md → odsp-driver.legacy.alpha.api.md} +1 -1
  3. package/dist/checkUrl.d.ts +1 -0
  4. package/dist/checkUrl.d.ts.map +1 -1
  5. package/dist/checkUrl.js +1 -0
  6. package/dist/checkUrl.js.map +1 -1
  7. package/dist/constants.d.ts +2 -0
  8. package/dist/constants.d.ts.map +1 -1
  9. package/dist/constants.js +2 -0
  10. package/dist/constants.js.map +1 -1
  11. package/dist/contractsPublic.d.ts +1 -0
  12. package/dist/contractsPublic.d.ts.map +1 -1
  13. package/dist/contractsPublic.js.map +1 -1
  14. package/dist/createFile.d.ts +3 -3
  15. package/dist/createFile.d.ts.map +1 -1
  16. package/dist/createFile.js +11 -9
  17. package/dist/createFile.js.map +1 -1
  18. package/dist/createNewContainerOnExistingFile.d.ts +1 -1
  19. package/dist/createNewContainerOnExistingFile.d.ts.map +1 -1
  20. package/dist/createNewContainerOnExistingFile.js +2 -2
  21. package/dist/createNewContainerOnExistingFile.js.map +1 -1
  22. package/dist/createNewUtils.d.ts +1 -1
  23. package/dist/createNewUtils.d.ts.map +1 -1
  24. package/dist/createNewUtils.js +24 -18
  25. package/dist/createNewUtils.js.map +1 -1
  26. package/dist/createOdspCreateContainerRequest.d.ts +1 -0
  27. package/dist/createOdspCreateContainerRequest.d.ts.map +1 -1
  28. package/dist/createOdspCreateContainerRequest.js +1 -0
  29. package/dist/createOdspCreateContainerRequest.js.map +1 -1
  30. package/dist/createOdspUrl.d.ts +1 -0
  31. package/dist/createOdspUrl.d.ts.map +1 -1
  32. package/dist/createOdspUrl.js +1 -0
  33. package/dist/createOdspUrl.js.map +1 -1
  34. package/dist/epochTracker.d.ts +4 -0
  35. package/dist/epochTracker.d.ts.map +1 -1
  36. package/dist/epochTracker.js +1 -0
  37. package/dist/epochTracker.js.map +1 -1
  38. package/dist/fetchSnapshot.d.ts +7 -9
  39. package/dist/fetchSnapshot.d.ts.map +1 -1
  40. package/dist/fetchSnapshot.js +23 -21
  41. package/dist/fetchSnapshot.js.map +1 -1
  42. package/dist/getFileLink.js +14 -8
  43. package/dist/getFileLink.js.map +1 -1
  44. package/dist/getUrlAndHeadersWithAuth.d.ts +2 -5
  45. package/dist/getUrlAndHeadersWithAuth.d.ts.map +1 -1
  46. package/dist/getUrlAndHeadersWithAuth.js +7 -28
  47. package/dist/getUrlAndHeadersWithAuth.js.map +1 -1
  48. package/dist/legacy.d.ts +1 -1
  49. package/dist/odspCache.d.ts +4 -0
  50. package/dist/odspCache.d.ts.map +1 -1
  51. package/dist/odspCache.js.map +1 -1
  52. package/dist/odspDelayLoadedDeltaStream.d.ts +3 -4
  53. package/dist/odspDelayLoadedDeltaStream.d.ts.map +1 -1
  54. package/dist/odspDelayLoadedDeltaStream.js +4 -5
  55. package/dist/odspDelayLoadedDeltaStream.js.map +1 -1
  56. package/dist/odspDeltaStorageService.d.ts +2 -2
  57. package/dist/odspDeltaStorageService.d.ts.map +1 -1
  58. package/dist/odspDeltaStorageService.js +9 -8
  59. package/dist/odspDeltaStorageService.js.map +1 -1
  60. package/dist/odspDocumentService.d.ts +4 -4
  61. package/dist/odspDocumentService.d.ts.map +1 -1
  62. package/dist/odspDocumentService.js +9 -9
  63. package/dist/odspDocumentService.js.map +1 -1
  64. package/dist/odspDocumentServiceFactory.d.ts +2 -0
  65. package/dist/odspDocumentServiceFactory.d.ts.map +1 -1
  66. package/dist/odspDocumentServiceFactory.js +2 -0
  67. package/dist/odspDocumentServiceFactory.js.map +1 -1
  68. package/dist/odspDocumentServiceFactoryCore.d.ts +1 -0
  69. package/dist/odspDocumentServiceFactoryCore.d.ts.map +1 -1
  70. package/dist/odspDocumentServiceFactoryCore.js +7 -4
  71. package/dist/odspDocumentServiceFactoryCore.js.map +1 -1
  72. package/dist/odspDocumentStorageManager.d.ts +2 -2
  73. package/dist/odspDocumentStorageManager.d.ts.map +1 -1
  74. package/dist/odspDocumentStorageManager.js +25 -19
  75. package/dist/odspDocumentStorageManager.js.map +1 -1
  76. package/dist/odspDriverUrlResolver.d.ts +9 -0
  77. package/dist/odspDriverUrlResolver.d.ts.map +1 -1
  78. package/dist/odspDriverUrlResolver.js +3 -1
  79. package/dist/odspDriverUrlResolver.js.map +1 -1
  80. package/dist/odspDriverUrlResolverForShareLink.d.ts +2 -0
  81. package/dist/odspDriverUrlResolverForShareLink.d.ts.map +1 -1
  82. package/dist/odspDriverUrlResolverForShareLink.js +1 -0
  83. package/dist/odspDriverUrlResolverForShareLink.js.map +1 -1
  84. package/dist/odspFluidFileLink.d.ts +4 -0
  85. package/dist/odspFluidFileLink.d.ts.map +1 -1
  86. package/dist/odspFluidFileLink.js +4 -0
  87. package/dist/odspFluidFileLink.js.map +1 -1
  88. package/dist/odspPublicUtils.d.ts +2 -0
  89. package/dist/odspPublicUtils.d.ts.map +1 -1
  90. package/dist/odspPublicUtils.js +1 -0
  91. package/dist/odspPublicUtils.js.map +1 -1
  92. package/dist/odspSnapshotParser.js +2 -2
  93. package/dist/odspSnapshotParser.js.map +1 -1
  94. package/dist/odspSummaryUploadManager.d.ts +2 -3
  95. package/dist/odspSummaryUploadManager.d.ts.map +1 -1
  96. package/dist/odspSummaryUploadManager.js +8 -6
  97. package/dist/odspSummaryUploadManager.js.map +1 -1
  98. package/dist/odspUtils.d.ts +12 -3
  99. package/dist/odspUtils.d.ts.map +1 -1
  100. package/dist/odspUtils.js +10 -6
  101. package/dist/odspUtils.js.map +1 -1
  102. package/dist/packageVersion.d.ts +1 -1
  103. package/dist/packageVersion.js +1 -1
  104. package/dist/packageVersion.js.map +1 -1
  105. package/dist/prefetchLatestSnapshot.d.ts +2 -1
  106. package/dist/prefetchLatestSnapshot.d.ts.map +1 -1
  107. package/dist/prefetchLatestSnapshot.js +6 -5
  108. package/dist/prefetchLatestSnapshot.js.map +1 -1
  109. package/dist/vroom.d.ts +2 -2
  110. package/dist/vroom.d.ts.map +1 -1
  111. package/dist/vroom.js +7 -9
  112. package/dist/vroom.js.map +1 -1
  113. package/lib/checkUrl.d.ts +1 -0
  114. package/lib/checkUrl.d.ts.map +1 -1
  115. package/lib/checkUrl.js +1 -0
  116. package/lib/checkUrl.js.map +1 -1
  117. package/lib/constants.d.ts +2 -0
  118. package/lib/constants.d.ts.map +1 -1
  119. package/lib/constants.js +2 -0
  120. package/lib/constants.js.map +1 -1
  121. package/lib/contractsPublic.d.ts +1 -0
  122. package/lib/contractsPublic.d.ts.map +1 -1
  123. package/lib/contractsPublic.js.map +1 -1
  124. package/lib/createFile.d.ts +3 -3
  125. package/lib/createFile.d.ts.map +1 -1
  126. package/lib/createFile.js +12 -10
  127. package/lib/createFile.js.map +1 -1
  128. package/lib/createNewContainerOnExistingFile.d.ts +1 -1
  129. package/lib/createNewContainerOnExistingFile.d.ts.map +1 -1
  130. package/lib/createNewContainerOnExistingFile.js +2 -2
  131. package/lib/createNewContainerOnExistingFile.js.map +1 -1
  132. package/lib/createNewUtils.d.ts +1 -1
  133. package/lib/createNewUtils.d.ts.map +1 -1
  134. package/lib/createNewUtils.js +26 -20
  135. package/lib/createNewUtils.js.map +1 -1
  136. package/lib/createOdspCreateContainerRequest.d.ts +1 -0
  137. package/lib/createOdspCreateContainerRequest.d.ts.map +1 -1
  138. package/lib/createOdspCreateContainerRequest.js +1 -0
  139. package/lib/createOdspCreateContainerRequest.js.map +1 -1
  140. package/lib/createOdspUrl.d.ts +1 -0
  141. package/lib/createOdspUrl.d.ts.map +1 -1
  142. package/lib/createOdspUrl.js +1 -0
  143. package/lib/createOdspUrl.js.map +1 -1
  144. package/lib/epochTracker.d.ts +4 -0
  145. package/lib/epochTracker.d.ts.map +1 -1
  146. package/lib/epochTracker.js +1 -0
  147. package/lib/epochTracker.js.map +1 -1
  148. package/lib/fetchSnapshot.d.ts +7 -9
  149. package/lib/fetchSnapshot.d.ts.map +1 -1
  150. package/lib/fetchSnapshot.js +24 -22
  151. package/lib/fetchSnapshot.js.map +1 -1
  152. package/lib/getFileLink.js +15 -9
  153. package/lib/getFileLink.js.map +1 -1
  154. package/lib/getUrlAndHeadersWithAuth.d.ts +2 -5
  155. package/lib/getUrlAndHeadersWithAuth.d.ts.map +1 -1
  156. package/lib/getUrlAndHeadersWithAuth.js +5 -26
  157. package/lib/getUrlAndHeadersWithAuth.js.map +1 -1
  158. package/lib/legacy.d.ts +1 -1
  159. package/lib/odspCache.d.ts +4 -0
  160. package/lib/odspCache.d.ts.map +1 -1
  161. package/lib/odspCache.js.map +1 -1
  162. package/lib/odspDelayLoadedDeltaStream.d.ts +3 -4
  163. package/lib/odspDelayLoadedDeltaStream.d.ts.map +1 -1
  164. package/lib/odspDelayLoadedDeltaStream.js +4 -5
  165. package/lib/odspDelayLoadedDeltaStream.js.map +1 -1
  166. package/lib/odspDeltaStorageService.d.ts +2 -2
  167. package/lib/odspDeltaStorageService.d.ts.map +1 -1
  168. package/lib/odspDeltaStorageService.js +9 -8
  169. package/lib/odspDeltaStorageService.js.map +1 -1
  170. package/lib/odspDocumentService.d.ts +4 -4
  171. package/lib/odspDocumentService.d.ts.map +1 -1
  172. package/lib/odspDocumentService.js +9 -9
  173. package/lib/odspDocumentService.js.map +1 -1
  174. package/lib/odspDocumentServiceFactory.d.ts +2 -0
  175. package/lib/odspDocumentServiceFactory.d.ts.map +1 -1
  176. package/lib/odspDocumentServiceFactory.js +2 -0
  177. package/lib/odspDocumentServiceFactory.js.map +1 -1
  178. package/lib/odspDocumentServiceFactoryCore.d.ts +1 -0
  179. package/lib/odspDocumentServiceFactoryCore.d.ts.map +1 -1
  180. package/lib/odspDocumentServiceFactoryCore.js +7 -4
  181. package/lib/odspDocumentServiceFactoryCore.js.map +1 -1
  182. package/lib/odspDocumentStorageManager.d.ts +2 -2
  183. package/lib/odspDocumentStorageManager.d.ts.map +1 -1
  184. package/lib/odspDocumentStorageManager.js +26 -20
  185. package/lib/odspDocumentStorageManager.js.map +1 -1
  186. package/lib/odspDriverUrlResolver.d.ts +9 -0
  187. package/lib/odspDriverUrlResolver.d.ts.map +1 -1
  188. package/lib/odspDriverUrlResolver.js +2 -1
  189. package/lib/odspDriverUrlResolver.js.map +1 -1
  190. package/lib/odspDriverUrlResolverForShareLink.d.ts +2 -0
  191. package/lib/odspDriverUrlResolverForShareLink.d.ts.map +1 -1
  192. package/lib/odspDriverUrlResolverForShareLink.js +1 -0
  193. package/lib/odspDriverUrlResolverForShareLink.js.map +1 -1
  194. package/lib/odspFluidFileLink.d.ts +4 -0
  195. package/lib/odspFluidFileLink.d.ts.map +1 -1
  196. package/lib/odspFluidFileLink.js +4 -0
  197. package/lib/odspFluidFileLink.js.map +1 -1
  198. package/lib/odspPublicUtils.d.ts +2 -0
  199. package/lib/odspPublicUtils.d.ts.map +1 -1
  200. package/lib/odspPublicUtils.js +1 -0
  201. package/lib/odspPublicUtils.js.map +1 -1
  202. package/lib/odspSnapshotParser.js +2 -2
  203. package/lib/odspSnapshotParser.js.map +1 -1
  204. package/lib/odspSummaryUploadManager.d.ts +2 -3
  205. package/lib/odspSummaryUploadManager.d.ts.map +1 -1
  206. package/lib/odspSummaryUploadManager.js +9 -7
  207. package/lib/odspSummaryUploadManager.js.map +1 -1
  208. package/lib/odspUtils.d.ts +12 -3
  209. package/lib/odspUtils.d.ts.map +1 -1
  210. package/lib/odspUtils.js +11 -7
  211. package/lib/odspUtils.js.map +1 -1
  212. package/lib/packageVersion.d.ts +1 -1
  213. package/lib/packageVersion.js +1 -1
  214. package/lib/packageVersion.js.map +1 -1
  215. package/lib/prefetchLatestSnapshot.d.ts +2 -1
  216. package/lib/prefetchLatestSnapshot.d.ts.map +1 -1
  217. package/lib/prefetchLatestSnapshot.js +6 -5
  218. package/lib/prefetchLatestSnapshot.js.map +1 -1
  219. package/lib/vroom.d.ts +2 -2
  220. package/lib/vroom.d.ts.map +1 -1
  221. package/lib/vroom.js +7 -9
  222. package/lib/vroom.js.map +1 -1
  223. package/package.json +13 -13
  224. package/src/checkUrl.ts +1 -0
  225. package/src/constants.ts +2 -0
  226. package/src/contractsPublic.ts +1 -0
  227. package/src/createFile.ts +15 -21
  228. package/src/createNewContainerOnExistingFile.ts +2 -2
  229. package/src/createNewUtils.ts +35 -26
  230. package/src/createOdspCreateContainerRequest.ts +1 -0
  231. package/src/createOdspUrl.ts +1 -0
  232. package/src/epochTracker.ts +4 -0
  233. package/src/fetchSnapshot.ts +36 -34
  234. package/src/getFileLink.ts +27 -20
  235. package/src/getUrlAndHeadersWithAuth.ts +6 -31
  236. package/src/odspCache.ts +4 -0
  237. package/src/odspDelayLoadedDeltaStream.ts +4 -5
  238. package/src/odspDeltaStorageService.ts +11 -7
  239. package/src/odspDocumentService.ts +8 -8
  240. package/src/odspDocumentServiceFactory.ts +2 -0
  241. package/src/odspDocumentServiceFactoryCore.ts +6 -3
  242. package/src/odspDocumentStorageManager.ts +36 -33
  243. package/src/odspDriverUrlResolver.ts +2 -1
  244. package/src/odspDriverUrlResolverForShareLink.ts +2 -0
  245. package/src/odspFluidFileLink.ts +4 -0
  246. package/src/odspPublicUtils.ts +2 -0
  247. package/src/odspSnapshotParser.ts +2 -2
  248. package/src/odspSummaryUploadManager.ts +11 -10
  249. package/src/odspUtils.ts +20 -6
  250. package/src/packageVersion.ts +1 -1
  251. package/src/prefetchLatestSnapshot.ts +10 -5
  252. package/src/vroom.ts +11 -11
@@ -8,6 +8,7 @@ import { OdspDocumentServiceFactoryCore } from "./odspDocumentServiceFactoryCore
8
8
  /**
9
9
  * Factory for creating the sharepoint document service. Use this if you want to
10
10
  * use the sharepoint implementation.
11
+ * @legacy
11
12
  * @alpha
12
13
  */
13
14
  export class OdspDocumentServiceFactory extends OdspDocumentServiceFactoryCore {
@@ -21,6 +22,7 @@ export class OdspDocumentServiceFactory extends OdspDocumentServiceFactoryCore {
21
22
  * @remarks Use if you don't want to connect to any kind of external/internal storages and want to provide
22
23
  * content directly.
23
24
  *
25
+ * @legacy
24
26
  * @alpha
25
27
  */
26
28
  export function createLocalOdspDocumentServiceFactory(localSnapshot) {
@@ -1 +1 @@
1
- {"version":3,"file":"odspDocumentServiceFactory.js","sourceRoot":"","sources":["../src/odspDocumentServiceFactory.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH,sDAAsD;AACtD,OAAO,EAAE,+BAA+B,EAAE,MAAM,sDAAsD,CAAC;AACvG,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AAErF;;;;GAIG;AACH,MAAM,OAAO,0BAA2B,SAAQ,8BAA8B;IAC7E,YACC,eAA4D,EAC5D,iBAA0E,EAC1E,cAAgC,EAChC,UAA8B;QAE9B,KAAK,CAAC,eAAe,EAAE,iBAAiB,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC;IACvE,CAAC;CACD;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,qCAAqC,CACpD,aAAkC;IAElC,OAAO,IAAI,+BAA+B,CAAC,aAAa,CAAC,CAAC;AAC3D,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { IDocumentServiceFactory } from \"@fluidframework/driver-definitions/internal\";\nimport {\n\tHostStoragePolicy,\n\tIPersistedCache,\n\tOdspResourceTokenFetchOptions,\n\tTokenFetcher,\n} from \"@fluidframework/odsp-driver-definitions/internal\";\n\n// eslint-disable-next-line import/no-internal-modules\nimport { LocalOdspDocumentServiceFactory } from \"./localOdspDriver/localOdspDocumentServiceFactory.js\";\nimport { OdspDocumentServiceFactoryCore } from \"./odspDocumentServiceFactoryCore.js\";\n\n/**\n * Factory for creating the sharepoint document service. Use this if you want to\n * use the sharepoint implementation.\n * @alpha\n */\nexport class OdspDocumentServiceFactory extends OdspDocumentServiceFactoryCore {\n\tconstructor(\n\t\tgetStorageToken: TokenFetcher<OdspResourceTokenFetchOptions>,\n\t\tgetWebsocketToken: TokenFetcher<OdspResourceTokenFetchOptions> | undefined,\n\t\tpersistedCache?: IPersistedCache,\n\t\thostPolicy?: HostStoragePolicy,\n\t) {\n\t\tsuper(getStorageToken, getWebsocketToken, persistedCache, hostPolicy);\n\t}\n}\n\n/**\n * Creates a factory instance for creating a sharepoint document service from a provided snapshot.\n *\n * @remarks Use if you don't want to connect to any kind of external/internal storages and want to provide\n * content directly.\n *\n * @alpha\n */\nexport function createLocalOdspDocumentServiceFactory(\n\tlocalSnapshot: Uint8Array | string,\n): IDocumentServiceFactory {\n\treturn new LocalOdspDocumentServiceFactory(localSnapshot);\n}\n"]}
1
+ {"version":3,"file":"odspDocumentServiceFactory.js","sourceRoot":"","sources":["../src/odspDocumentServiceFactory.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH,sDAAsD;AACtD,OAAO,EAAE,+BAA+B,EAAE,MAAM,sDAAsD,CAAC;AACvG,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AAErF;;;;;GAKG;AACH,MAAM,OAAO,0BAA2B,SAAQ,8BAA8B;IAC7E,YACC,eAA4D,EAC5D,iBAA0E,EAC1E,cAAgC,EAChC,UAA8B;QAE9B,KAAK,CAAC,eAAe,EAAE,iBAAiB,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC;IACvE,CAAC;CACD;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,qCAAqC,CACpD,aAAkC;IAElC,OAAO,IAAI,+BAA+B,CAAC,aAAa,CAAC,CAAC;AAC3D,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { IDocumentServiceFactory } from \"@fluidframework/driver-definitions/internal\";\nimport {\n\tHostStoragePolicy,\n\tIPersistedCache,\n\tOdspResourceTokenFetchOptions,\n\tTokenFetcher,\n} from \"@fluidframework/odsp-driver-definitions/internal\";\n\n// eslint-disable-next-line import/no-internal-modules\nimport { LocalOdspDocumentServiceFactory } from \"./localOdspDriver/localOdspDocumentServiceFactory.js\";\nimport { OdspDocumentServiceFactoryCore } from \"./odspDocumentServiceFactoryCore.js\";\n\n/**\n * Factory for creating the sharepoint document service. Use this if you want to\n * use the sharepoint implementation.\n * @legacy\n * @alpha\n */\nexport class OdspDocumentServiceFactory extends OdspDocumentServiceFactoryCore {\n\tconstructor(\n\t\tgetStorageToken: TokenFetcher<OdspResourceTokenFetchOptions>,\n\t\tgetWebsocketToken: TokenFetcher<OdspResourceTokenFetchOptions> | undefined,\n\t\tpersistedCache?: IPersistedCache,\n\t\thostPolicy?: HostStoragePolicy,\n\t) {\n\t\tsuper(getStorageToken, getWebsocketToken, persistedCache, hostPolicy);\n\t}\n}\n\n/**\n * Creates a factory instance for creating a sharepoint document service from a provided snapshot.\n *\n * @remarks Use if you don't want to connect to any kind of external/internal storages and want to provide\n * content directly.\n *\n * @legacy\n * @alpha\n */\nexport function createLocalOdspDocumentServiceFactory(\n\tlocalSnapshot: Uint8Array | string,\n): IDocumentServiceFactory {\n\treturn new LocalOdspDocumentServiceFactory(localSnapshot);\n}\n"]}
@@ -15,6 +15,7 @@ import { IPrefetchSnapshotContents } from "./odspCache.js";
15
15
  *
16
16
  * This constructor should be used by environments that support dynamic imports and that wish
17
17
  * to leverage code splitting as a means to keep bundles as small as possible.
18
+ * @legacy
18
19
  * @alpha
19
20
  */
20
21
  export declare class OdspDocumentServiceFactoryCore implements IDocumentServiceFactory, IRelaySessionAwareDriverFactory {
@@ -1 +1 @@
1
- {"version":3,"file":"odspDocumentServiceFactoryCore.d.ts","sourceRoot":"","sources":["../src/odspDocumentServiceFactoryCore.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAClE,OAAO,EACN,gBAAgB,EAChB,uBAAuB,EACvB,YAAY,EACZ,MAAM,6CAA6C,CAAC;AAKrD,OAAO,EACN,iBAAiB,EAGjB,eAAe,EACf,+BAA+B,EAE/B,uBAAuB,EACvB,6BAA6B,EAI7B,YAAY,EACZ,MAAM,kDAAkD,CAAC;AAI1D,OAAO,EAAE,gBAAgB,EAA6B,MAAM,mBAAmB,CAAC;AAChF,OAAO,EAEN,yBAAyB,EAGzB,MAAM,gBAAgB,CAAC;AAaxB;;;;;;;GAOG;AACH,qBAAa,8BACZ,YAAW,uBAAuB,EAAE,+BAA+B;IA8KlE,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAGlC,SAAS,CAAC,cAAc,EAAE,eAAe;IACzC,OAAO,CAAC,QAAQ,CAAC,UAAU;IAjL5B,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAiD;IACpF,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAC,CAAS;IAEnD,IAAW,2BAA2B,IAAI,YAAY,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAExF;IAGD,IAAW,+BAA+B,IAAI,IAAI,CAEjD;IAED;;;;;OAKG;IACU,0BAA0B,CACtC,WAAW,EAAE,YAAY,GACvB,OAAO,CAAC,uBAAuB,GAAG,SAAS,CAAC;IAQlC,eAAe,CAC3B,gBAAgB,EAAE,YAAY,GAAG,SAAS,EAC1C,oBAAoB,EAAE,YAAY,EAClC,MAAM,CAAC,EAAE,oBAAoB,EAC7B,kBAAkB,CAAC,EAAE,OAAO,GAC1B,OAAO,CAAC,gBAAgB,CAAC;IAiI5B;;;;;;;;OAQG;gBAEe,eAAe,EAAE,YAAY,CAAC,6BAA6B,CAAC,EAC5D,iBAAiB,EAC/B,YAAY,CAAC,6BAA6B,CAAC,GAC3C,SAAS,EACF,cAAc,GAAE,eAA4C,EACrD,UAAU,GAAE,iBAAsB;IAcvC,qBAAqB,CACjC,WAAW,EAAE,YAAY,EACzB,MAAM,CAAC,EAAE,oBAAoB,EAC7B,kBAAkB,CAAC,EAAE,OAAO,GAC1B,OAAO,CAAC,gBAAgB,CAAC;cASZ,yBAAyB,CACxC,WAAW,EAAE,YAAY,EACzB,UAAU,EAAE,oBAAoB,EAChC,kBAAkB,CAAC,EAAE,gBAAgB,EACrC,kBAAkB,CAAC,EAAE,OAAO,GAC1B,OAAO,CAAC,gBAAgB,CAAC;CAgD5B"}
1
+ {"version":3,"file":"odspDocumentServiceFactoryCore.d.ts","sourceRoot":"","sources":["../src/odspDocumentServiceFactoryCore.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAClE,OAAO,EACN,gBAAgB,EAChB,uBAAuB,EACvB,YAAY,EACZ,MAAM,6CAA6C,CAAC;AAKrD,OAAO,EACN,iBAAiB,EAGjB,eAAe,EACf,+BAA+B,EAE/B,uBAAuB,EACvB,6BAA6B,EAI7B,YAAY,EACZ,MAAM,kDAAkD,CAAC;AAI1D,OAAO,EAAE,gBAAgB,EAA6B,MAAM,mBAAmB,CAAC;AAChF,OAAO,EAEN,yBAAyB,EAGzB,MAAM,gBAAgB,CAAC;AAaxB;;;;;;;;GAQG;AACH,qBAAa,8BACZ,YAAW,uBAAuB,EAAE,+BAA+B;IA8KlE,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAGlC,SAAS,CAAC,cAAc,EAAE,eAAe;IACzC,OAAO,CAAC,QAAQ,CAAC,UAAU;IAjL5B,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAiD;IACpF,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAC,CAAS;IAEnD,IAAW,2BAA2B,IAAI,YAAY,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAExF;IAGD,IAAW,+BAA+B,IAAI,IAAI,CAEjD;IAED;;;;;OAKG;IACU,0BAA0B,CACtC,WAAW,EAAE,YAAY,GACvB,OAAO,CAAC,uBAAuB,GAAG,SAAS,CAAC;IAQlC,eAAe,CAC3B,gBAAgB,EAAE,YAAY,GAAG,SAAS,EAC1C,oBAAoB,EAAE,YAAY,EAClC,MAAM,CAAC,EAAE,oBAAoB,EAC7B,kBAAkB,CAAC,EAAE,OAAO,GAC1B,OAAO,CAAC,gBAAgB,CAAC;IAiI5B;;;;;;;;OAQG;gBAEe,eAAe,EAAE,YAAY,CAAC,6BAA6B,CAAC,EAC5D,iBAAiB,EAC/B,YAAY,CAAC,6BAA6B,CAAC,GAC3C,SAAS,EACF,cAAc,GAAE,eAA4C,EACrD,UAAU,GAAE,iBAAsB;IAcvC,qBAAqB,CACjC,WAAW,EAAE,YAAY,EACzB,MAAM,CAAC,EAAE,oBAAoB,EAC7B,kBAAkB,CAAC,EAAE,OAAO,GAC1B,OAAO,CAAC,gBAAgB,CAAC;cASZ,yBAAyB,CACxC,WAAW,EAAE,YAAY,EACzB,UAAU,EAAE,oBAAoB,EAChC,kBAAkB,CAAC,EAAE,gBAAgB,EACrC,kBAAkB,CAAC,EAAE,OAAO,GAC1B,OAAO,CAAC,gBAAgB,CAAC;CAkD5B"}
@@ -16,6 +16,7 @@ import { createOdspLogger, getJoinSessionCacheKey, getOdspResolvedUrl, isNewFile
16
16
  *
17
17
  * This constructor should be used by environments that support dynamic imports and that wish
18
18
  * to leverage code splitting as a means to keep bundles as small as possible.
19
+ * @legacy
19
20
  * @alpha
20
21
  */
21
22
  export class OdspDocumentServiceFactoryCore {
@@ -94,7 +95,7 @@ export class OdspDocumentServiceFactoryCore {
94
95
  : undefined,
95
96
  enableSingleRequestForShareLinkWithCreate: this.hostPolicy.enableSingleRequestForShareLinkWithCreate,
96
97
  }, async (event) => {
97
- const getStorageToken = toInstrumentedOdspStorageTokenFetcher(odspLogger, resolvedUrlData, this.getStorageToken);
98
+ const getAuthHeader = toInstrumentedOdspStorageTokenFetcher(odspLogger, resolvedUrlData, this.getStorageToken);
98
99
  // We can delay load this module as this path will not be executed in load flows and create flow
99
100
  // while only happens once in lifetime of a document happens in the background after creation of
100
101
  // detached container.
@@ -109,8 +110,8 @@ export class OdspDocumentServiceFactoryCore {
109
110
  throw error;
110
111
  });
111
112
  const _odspResolvedUrl = isNewFileInfo(fileInfo)
112
- ? await module.createNewFluidFile(getStorageToken, fileInfo, odspLogger, createNewSummary, cacheAndTracker.epochTracker, fileEntry, this.hostPolicy.cacheCreateNewSummary ?? true, !!this.hostPolicy.sessionOptions?.forceAccessTokenViaAuthorizationHeader, odspResolvedUrl.isClpCompliantApp, this.hostPolicy.enableSingleRequestForShareLinkWithCreate)
113
- : await module.createNewContainerOnExistingFile(getStorageToken, fileInfo, odspLogger, createNewSummary, cacheAndTracker.epochTracker, fileEntry, this.hostPolicy.cacheCreateNewSummary ?? true, !!this.hostPolicy.sessionOptions?.forceAccessTokenViaAuthorizationHeader, odspResolvedUrl.isClpCompliantApp);
113
+ ? await module.createNewFluidFile(getAuthHeader, fileInfo, odspLogger, createNewSummary, cacheAndTracker.epochTracker, fileEntry, this.hostPolicy.cacheCreateNewSummary ?? true, !!this.hostPolicy.sessionOptions?.forceAccessTokenViaAuthorizationHeader, odspResolvedUrl.isClpCompliantApp, this.hostPolicy.enableSingleRequestForShareLinkWithCreate)
114
+ : await module.createNewContainerOnExistingFile(getAuthHeader, fileInfo, odspLogger, createNewSummary, cacheAndTracker.epochTracker, fileEntry, this.hostPolicy.cacheCreateNewSummary ?? true, !!this.hostPolicy.sessionOptions?.forceAccessTokenViaAuthorizationHeader, odspResolvedUrl.isClpCompliantApp);
114
115
  const docService = this.createDocumentServiceCore(_odspResolvedUrl, odspLogger, cacheAndTracker, clientIsSummarizer);
115
116
  event.end({
116
117
  docId: _odspResolvedUrl.hashedDocumentId,
@@ -160,7 +161,9 @@ export class OdspDocumentServiceFactoryCore {
160
161
  const storageTokenFetcher = toInstrumentedOdspStorageTokenFetcher(extLogger, resolvedUrlData, this.getStorageToken);
161
162
  const webSocketTokenFetcher = this.getWebsocketToken === undefined
162
163
  ? undefined
163
- : async (options) => toInstrumentedOdspTokenFetcher(extLogger, resolvedUrlData, this.getWebsocketToken, false /* throwOnNullToken */)(options, "GetWebsocketToken");
164
+ : async (options) =>
165
+ // websocket expects a plain token
166
+ toInstrumentedOdspTokenFetcher(extLogger, resolvedUrlData, this.getWebsocketToken, false /* throwOnNullToken */, true /* returnPlainToken */)(options, "GetWebsocketToken");
164
167
  return OdspDocumentService.create(resolvedUrl, storageTokenFetcher, webSocketTokenFetcher, extLogger, cacheAndTracker.cache, this.hostPolicy, cacheAndTracker.epochTracker, this.socketReferenceKeyPrefix, clientIsSummarizer);
165
168
  }
166
169
  }
@@ -1 +1 @@
1
- {"version":3,"file":"odspDocumentServiceFactoryCore.js","sourceRoot":"","sources":["../src/odspDocumentServiceFactoryCore.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 { ITelemetryBaseLogger } from \"@fluidframework/core-interfaces\";\nimport { PromiseCache } from \"@fluidframework/core-utils/internal\";\nimport { ISummaryTree } from \"@fluidframework/driver-definitions\";\nimport {\n\tIDocumentService,\n\tIDocumentServiceFactory,\n\tIResolvedUrl,\n} from \"@fluidframework/driver-definitions/internal\";\nimport {\n\tgetDocAttributesFromProtocolSummary,\n\tisCombinedAppAndProtocolSummary,\n} from \"@fluidframework/driver-utils/internal\";\nimport {\n\tHostStoragePolicy,\n\tIFileEntry,\n\tIOdspUrlParts,\n\tIPersistedCache,\n\tIRelaySessionAwareDriverFactory,\n\tISharingLinkKind,\n\tISocketStorageDiscovery,\n\tOdspResourceTokenFetchOptions,\n\tSharingLinkRole,\n\tSharingLinkScope,\n\tTokenFetchOptions,\n\tTokenFetcher,\n} from \"@fluidframework/odsp-driver-definitions/internal\";\nimport { PerformanceEvent, createChildLogger } from \"@fluidframework/telemetry-utils/internal\";\nimport { v4 as uuid } from \"uuid\";\n\nimport { ICacheAndTracker, createOdspCacheAndTracker } from \"./epochTracker.js\";\nimport {\n\tINonPersistentCache,\n\tIPrefetchSnapshotContents,\n\tLocalPersistentCache,\n\tNonPersistentCache,\n} from \"./odspCache.js\";\nimport { OdspDocumentService } from \"./odspDocumentService.js\";\nimport {\n\tIExistingFileInfo,\n\tINewFileInfo,\n\tcreateOdspLogger,\n\tgetJoinSessionCacheKey,\n\tgetOdspResolvedUrl,\n\tisNewFileInfo,\n\ttoInstrumentedOdspStorageTokenFetcher,\n\ttoInstrumentedOdspTokenFetcher,\n} from \"./odspUtils.js\";\n\n/**\n * Factory for creating the sharepoint document service. Use this if you want to\n * use the sharepoint implementation.\n *\n * This constructor should be used by environments that support dynamic imports and that wish\n * to leverage code splitting as a means to keep bundles as small as possible.\n * @alpha\n */\nexport class OdspDocumentServiceFactoryCore\n\timplements IDocumentServiceFactory, IRelaySessionAwareDriverFactory\n{\n\tprivate readonly nonPersistentCache: INonPersistentCache = new NonPersistentCache();\n\tprivate readonly socketReferenceKeyPrefix?: string;\n\n\tpublic get snapshotPrefetchResultCache(): PromiseCache<string, IPrefetchSnapshotContents> {\n\t\treturn this.nonPersistentCache.snapshotPrefetchResultCache;\n\t}\n\n\t// TODO: return `IRelaySessionAwareDriverFactory` instead of `this` (breaking change)\n\tpublic get IRelaySessionAwareDriverFactory(): this {\n\t\treturn this;\n\t}\n\n\t/**\n\t * This function would return info about relay service session only if this factory established (or attempted to\n\t * establish) connection very recently. Otherwise, it will return undefined.\n\t * @param resolvedUrl - resolved url for container\n\t * @returns The current join session response stored in cache. `undefined` if not present.\n\t */\n\tpublic async getRelayServiceSessionInfo(\n\t\tresolvedUrl: IResolvedUrl,\n\t): Promise<ISocketStorageDiscovery | undefined> {\n\t\tconst odspResolvedUrl = getOdspResolvedUrl(resolvedUrl);\n\t\tconst joinSessionResponse = await this.nonPersistentCache.sessionJoinCache.get(\n\t\t\tgetJoinSessionCacheKey(odspResolvedUrl),\n\t\t);\n\t\treturn joinSessionResponse?.joinSessionResponse;\n\t}\n\n\tpublic async createContainer(\n\t\tcreateNewSummary: ISummaryTree | undefined,\n\t\tcreateNewResolvedUrl: IResolvedUrl,\n\t\tlogger?: ITelemetryBaseLogger,\n\t\tclientIsSummarizer?: boolean,\n\t): Promise<IDocumentService> {\n\t\tconst odspResolvedUrl = getOdspResolvedUrl(createNewResolvedUrl);\n\t\tconst resolvedUrlData: IOdspUrlParts = {\n\t\t\tsiteUrl: odspResolvedUrl.siteUrl,\n\t\t\tdriveId: odspResolvedUrl.driveId,\n\t\t\titemId: odspResolvedUrl.itemId,\n\t\t};\n\n\t\tlet fileInfo: INewFileInfo | IExistingFileInfo;\n\t\tlet createShareLinkParam: ISharingLinkKind | undefined;\n\t\tif (odspResolvedUrl.itemId) {\n\t\t\tfileInfo = {\n\t\t\t\ttype: \"Existing\",\n\t\t\t\tdriveId: odspResolvedUrl.driveId,\n\t\t\t\tsiteUrl: odspResolvedUrl.siteUrl,\n\t\t\t\titemId: odspResolvedUrl.itemId,\n\t\t\t};\n\t\t} else if (odspResolvedUrl.fileName) {\n\t\t\tconst [, queryString] = odspResolvedUrl.url.split(\"?\");\n\t\t\tconst searchParams = new URLSearchParams(queryString);\n\t\t\tconst filePath = searchParams.get(\"path\");\n\t\t\tif (filePath === undefined || filePath === null) {\n\t\t\t\tthrow new Error(\"File path should be provided!!\");\n\t\t\t}\n\t\t\tcreateShareLinkParam = getSharingLinkParams(this.hostPolicy, searchParams);\n\t\t\tfileInfo = {\n\t\t\t\ttype: \"New\",\n\t\t\t\tdriveId: odspResolvedUrl.driveId,\n\t\t\t\tsiteUrl: odspResolvedUrl.siteUrl,\n\t\t\t\tfilePath,\n\t\t\t\tfilename: odspResolvedUrl.fileName,\n\t\t\t\tcreateLinkType: createShareLinkParam,\n\t\t\t};\n\t\t} else {\n\t\t\tthrow new Error(\"A new or existing file must be specified to create container!\");\n\t\t}\n\n\t\tif (isCombinedAppAndProtocolSummary(createNewSummary)) {\n\t\t\tconst documentAttributes = getDocAttributesFromProtocolSummary(\n\t\t\t\tcreateNewSummary.tree[\".protocol\"],\n\t\t\t);\n\t\t\tif (documentAttributes?.sequenceNumber !== 0) {\n\t\t\t\tthrow new Error(\"Seq number in detached ODSP container should be 0\");\n\t\t\t}\n\t\t}\n\n\t\tconst odspLogger = createOdspLogger(logger);\n\n\t\tconst fileEntry: IFileEntry = {\n\t\t\tresolvedUrl: odspResolvedUrl,\n\t\t\tdocId: odspResolvedUrl.hashedDocumentId,\n\t\t};\n\t\tconst cacheAndTracker = createOdspCacheAndTracker(\n\t\t\tthis.persistedCache,\n\t\t\tthis.nonPersistentCache,\n\t\t\tfileEntry,\n\t\t\todspLogger,\n\t\t\tclientIsSummarizer,\n\t\t);\n\n\t\treturn PerformanceEvent.timedExecAsync(\n\t\t\todspLogger,\n\t\t\t{\n\t\t\t\teventName: \"CreateNew\",\n\t\t\t\tisWithSummaryUpload: true,\n\t\t\t\tcreateShareLinkParam: createShareLinkParam\n\t\t\t\t\t? JSON.stringify(createShareLinkParam)\n\t\t\t\t\t: undefined,\n\t\t\t\tenableSingleRequestForShareLinkWithCreate:\n\t\t\t\t\tthis.hostPolicy.enableSingleRequestForShareLinkWithCreate,\n\t\t\t},\n\t\t\tasync (event) => {\n\t\t\t\tconst getStorageToken = toInstrumentedOdspStorageTokenFetcher(\n\t\t\t\t\todspLogger,\n\t\t\t\t\tresolvedUrlData,\n\t\t\t\t\tthis.getStorageToken,\n\t\t\t\t);\n\t\t\t\t// We can delay load this module as this path will not be executed in load flows and create flow\n\t\t\t\t// while only happens once in lifetime of a document happens in the background after creation of\n\t\t\t\t// detached container.\n\t\t\t\tconst module = await import(\n\t\t\t\t\t/* webpackChunkName: \"createNewModule\" */ \"./createNewModule.js\"\n\t\t\t\t)\n\t\t\t\t\t.then((m) => {\n\t\t\t\t\t\todspLogger.sendTelemetryEvent({ eventName: \"createNewModuleLoaded\" });\n\t\t\t\t\t\treturn m;\n\t\t\t\t\t})\n\t\t\t\t\t.catch((error) => {\n\t\t\t\t\t\todspLogger.sendErrorEvent({ eventName: \"createNewModuleLoadFailed\" }, error);\n\t\t\t\t\t\tthrow error;\n\t\t\t\t\t});\n\t\t\t\tconst _odspResolvedUrl = isNewFileInfo(fileInfo)\n\t\t\t\t\t? await module.createNewFluidFile(\n\t\t\t\t\t\t\tgetStorageToken,\n\t\t\t\t\t\t\tfileInfo,\n\t\t\t\t\t\t\todspLogger,\n\t\t\t\t\t\t\tcreateNewSummary,\n\t\t\t\t\t\t\tcacheAndTracker.epochTracker,\n\t\t\t\t\t\t\tfileEntry,\n\t\t\t\t\t\t\tthis.hostPolicy.cacheCreateNewSummary ?? true,\n\t\t\t\t\t\t\t!!this.hostPolicy.sessionOptions?.forceAccessTokenViaAuthorizationHeader,\n\t\t\t\t\t\t\todspResolvedUrl.isClpCompliantApp,\n\t\t\t\t\t\t\tthis.hostPolicy.enableSingleRequestForShareLinkWithCreate,\n\t\t\t\t\t\t)\n\t\t\t\t\t: await module.createNewContainerOnExistingFile(\n\t\t\t\t\t\t\tgetStorageToken,\n\t\t\t\t\t\t\tfileInfo,\n\t\t\t\t\t\t\todspLogger,\n\t\t\t\t\t\t\tcreateNewSummary,\n\t\t\t\t\t\t\tcacheAndTracker.epochTracker,\n\t\t\t\t\t\t\tfileEntry,\n\t\t\t\t\t\t\tthis.hostPolicy.cacheCreateNewSummary ?? true,\n\t\t\t\t\t\t\t!!this.hostPolicy.sessionOptions?.forceAccessTokenViaAuthorizationHeader,\n\t\t\t\t\t\t\todspResolvedUrl.isClpCompliantApp,\n\t\t\t\t\t\t);\n\t\t\t\tconst docService = this.createDocumentServiceCore(\n\t\t\t\t\t_odspResolvedUrl,\n\t\t\t\t\todspLogger,\n\t\t\t\t\tcacheAndTracker,\n\t\t\t\t\tclientIsSummarizer,\n\t\t\t\t);\n\t\t\t\tevent.end({\n\t\t\t\t\tdocId: _odspResolvedUrl.hashedDocumentId,\n\t\t\t\t});\n\t\t\t\treturn docService;\n\t\t\t},\n\t\t);\n\t}\n\n\t/**\n\t * @param getStorageToken - function that can provide the storage token for a given site. This is\n\t * is also referred to as the \"Vroom\" token in SPO.\n\t * @param getWebsocketToken - function that can provide a token for accessing the web socket. This is also\n\t * to as the \"Push\" token in SPO. If undefined then websocket token is expected to be returned with joinSession\n\t * response payload.\n\t * @param persistedCache - PersistedCache provided by host for use in this session.\n\t * @param hostPolicy - Policy for storage provided by host.\n\t */\n\tconstructor(\n\t\tprivate readonly getStorageToken: TokenFetcher<OdspResourceTokenFetchOptions>,\n\t\tprivate readonly getWebsocketToken:\n\t\t\t| TokenFetcher<OdspResourceTokenFetchOptions>\n\t\t\t| undefined,\n\t\tprotected persistedCache: IPersistedCache = new LocalPersistentCache(),\n\t\tprivate readonly hostPolicy: HostStoragePolicy = {},\n\t) {\n\t\tif (this.hostPolicy.isolateSocketCache === true) {\n\t\t\t// create the key to separate the socket reuse cache\n\t\t\tthis.socketReferenceKeyPrefix = uuid();\n\t\t}\n\t\t// Set enableRedeemFallback by default as true.\n\t\tthis.hostPolicy.enableRedeemFallback = this.hostPolicy.enableRedeemFallback ?? true;\n\t\tthis.hostPolicy.sessionOptions = {\n\t\t\tforceAccessTokenViaAuthorizationHeader: true,\n\t\t\t...this.hostPolicy.sessionOptions,\n\t\t};\n\t}\n\n\tpublic async createDocumentService(\n\t\tresolvedUrl: IResolvedUrl,\n\t\tlogger?: ITelemetryBaseLogger,\n\t\tclientIsSummarizer?: boolean,\n\t): Promise<IDocumentService> {\n\t\treturn this.createDocumentServiceCore(\n\t\t\tresolvedUrl,\n\t\t\tcreateOdspLogger(logger),\n\t\t\tundefined,\n\t\t\tclientIsSummarizer,\n\t\t);\n\t}\n\n\tprotected async createDocumentServiceCore(\n\t\tresolvedUrl: IResolvedUrl,\n\t\todspLogger: ITelemetryBaseLogger,\n\t\tcacheAndTrackerArg?: ICacheAndTracker,\n\t\tclientIsSummarizer?: boolean,\n\t): Promise<IDocumentService> {\n\t\tconst extLogger = createChildLogger({ logger: odspLogger });\n\t\tconst odspResolvedUrl = getOdspResolvedUrl(resolvedUrl);\n\t\tconst resolvedUrlData: IOdspUrlParts = {\n\t\t\tsiteUrl: odspResolvedUrl.siteUrl,\n\t\t\tdriveId: odspResolvedUrl.driveId,\n\t\t\titemId: odspResolvedUrl.itemId,\n\t\t};\n\n\t\tconst cacheAndTracker =\n\t\t\tcacheAndTrackerArg ??\n\t\t\tcreateOdspCacheAndTracker(\n\t\t\t\tthis.persistedCache,\n\t\t\t\tthis.nonPersistentCache,\n\t\t\t\t{ resolvedUrl: odspResolvedUrl, docId: odspResolvedUrl.hashedDocumentId },\n\t\t\t\textLogger,\n\t\t\t\tclientIsSummarizer,\n\t\t\t);\n\n\t\tconst storageTokenFetcher = toInstrumentedOdspStorageTokenFetcher(\n\t\t\textLogger,\n\t\t\tresolvedUrlData,\n\t\t\tthis.getStorageToken,\n\t\t);\n\n\t\tconst webSocketTokenFetcher =\n\t\t\tthis.getWebsocketToken === undefined\n\t\t\t\t? undefined\n\t\t\t\t: async (options: TokenFetchOptions): Promise<string | null> =>\n\t\t\t\t\t\ttoInstrumentedOdspTokenFetcher(\n\t\t\t\t\t\t\textLogger,\n\t\t\t\t\t\t\tresolvedUrlData,\n\t\t\t\t\t\t\tthis.getWebsocketToken!,\n\t\t\t\t\t\t\tfalse /* throwOnNullToken */,\n\t\t\t\t\t\t)(options, \"GetWebsocketToken\");\n\n\t\treturn OdspDocumentService.create(\n\t\t\tresolvedUrl,\n\t\t\tstorageTokenFetcher,\n\t\t\twebSocketTokenFetcher,\n\t\t\textLogger,\n\t\t\tcacheAndTracker.cache,\n\t\t\tthis.hostPolicy,\n\t\t\tcacheAndTracker.epochTracker,\n\t\t\tthis.socketReferenceKeyPrefix,\n\t\t\tclientIsSummarizer,\n\t\t);\n\t}\n}\n\n/**\n * Extract the sharing link kind from the resolved URL's query paramerters\n */\nfunction getSharingLinkParams(\n\thostPolicy: HostStoragePolicy,\n\tsearchParams: URLSearchParams,\n): ISharingLinkKind | undefined {\n\t// extract request parameters for creation of sharing link (if provided) if the feature is enabled\n\tlet createShareLinkParam: ISharingLinkKind | undefined;\n\tif (hostPolicy.enableSingleRequestForShareLinkWithCreate) {\n\t\tconst createLinkScope = searchParams.get(\"createLinkScope\");\n\t\tconst createLinkRole = searchParams.get(\"createLinkRole\");\n\t\tif (createLinkScope && SharingLinkScope[createLinkScope]) {\n\t\t\tcreateShareLinkParam = {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\t\t\tscope: SharingLinkScope[createLinkScope],\n\t\t\t\t...(createLinkRole && SharingLinkRole[createLinkRole]\n\t\t\t\t\t? // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\t\t\t\t\t{ role: SharingLinkRole[createLinkRole] }\n\t\t\t\t\t: {}),\n\t\t\t};\n\t\t}\n\t}\n\treturn createShareLinkParam;\n}\n"]}
1
+ {"version":3,"file":"odspDocumentServiceFactoryCore.js","sourceRoot":"","sources":["../src/odspDocumentServiceFactoryCore.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 { ITelemetryBaseLogger } from \"@fluidframework/core-interfaces\";\nimport { PromiseCache } from \"@fluidframework/core-utils/internal\";\nimport { ISummaryTree } from \"@fluidframework/driver-definitions\";\nimport {\n\tIDocumentService,\n\tIDocumentServiceFactory,\n\tIResolvedUrl,\n} from \"@fluidframework/driver-definitions/internal\";\nimport {\n\tgetDocAttributesFromProtocolSummary,\n\tisCombinedAppAndProtocolSummary,\n} from \"@fluidframework/driver-utils/internal\";\nimport {\n\tHostStoragePolicy,\n\tIFileEntry,\n\tIOdspUrlParts,\n\tIPersistedCache,\n\tIRelaySessionAwareDriverFactory,\n\tISharingLinkKind,\n\tISocketStorageDiscovery,\n\tOdspResourceTokenFetchOptions,\n\tSharingLinkRole,\n\tSharingLinkScope,\n\tTokenFetchOptions,\n\tTokenFetcher,\n} from \"@fluidframework/odsp-driver-definitions/internal\";\nimport { PerformanceEvent, createChildLogger } from \"@fluidframework/telemetry-utils/internal\";\nimport { v4 as uuid } from \"uuid\";\n\nimport { ICacheAndTracker, createOdspCacheAndTracker } from \"./epochTracker.js\";\nimport {\n\tINonPersistentCache,\n\tIPrefetchSnapshotContents,\n\tLocalPersistentCache,\n\tNonPersistentCache,\n} from \"./odspCache.js\";\nimport { OdspDocumentService } from \"./odspDocumentService.js\";\nimport {\n\tIExistingFileInfo,\n\tINewFileInfo,\n\tcreateOdspLogger,\n\tgetJoinSessionCacheKey,\n\tgetOdspResolvedUrl,\n\tisNewFileInfo,\n\ttoInstrumentedOdspStorageTokenFetcher,\n\ttoInstrumentedOdspTokenFetcher,\n} from \"./odspUtils.js\";\n\n/**\n * Factory for creating the sharepoint document service. Use this if you want to\n * use the sharepoint implementation.\n *\n * This constructor should be used by environments that support dynamic imports and that wish\n * to leverage code splitting as a means to keep bundles as small as possible.\n * @legacy\n * @alpha\n */\nexport class OdspDocumentServiceFactoryCore\n\timplements IDocumentServiceFactory, IRelaySessionAwareDriverFactory\n{\n\tprivate readonly nonPersistentCache: INonPersistentCache = new NonPersistentCache();\n\tprivate readonly socketReferenceKeyPrefix?: string;\n\n\tpublic get snapshotPrefetchResultCache(): PromiseCache<string, IPrefetchSnapshotContents> {\n\t\treturn this.nonPersistentCache.snapshotPrefetchResultCache;\n\t}\n\n\t// TODO: return `IRelaySessionAwareDriverFactory` instead of `this` (breaking change)\n\tpublic get IRelaySessionAwareDriverFactory(): this {\n\t\treturn this;\n\t}\n\n\t/**\n\t * This function would return info about relay service session only if this factory established (or attempted to\n\t * establish) connection very recently. Otherwise, it will return undefined.\n\t * @param resolvedUrl - resolved url for container\n\t * @returns The current join session response stored in cache. `undefined` if not present.\n\t */\n\tpublic async getRelayServiceSessionInfo(\n\t\tresolvedUrl: IResolvedUrl,\n\t): Promise<ISocketStorageDiscovery | undefined> {\n\t\tconst odspResolvedUrl = getOdspResolvedUrl(resolvedUrl);\n\t\tconst joinSessionResponse = await this.nonPersistentCache.sessionJoinCache.get(\n\t\t\tgetJoinSessionCacheKey(odspResolvedUrl),\n\t\t);\n\t\treturn joinSessionResponse?.joinSessionResponse;\n\t}\n\n\tpublic async createContainer(\n\t\tcreateNewSummary: ISummaryTree | undefined,\n\t\tcreateNewResolvedUrl: IResolvedUrl,\n\t\tlogger?: ITelemetryBaseLogger,\n\t\tclientIsSummarizer?: boolean,\n\t): Promise<IDocumentService> {\n\t\tconst odspResolvedUrl = getOdspResolvedUrl(createNewResolvedUrl);\n\t\tconst resolvedUrlData: IOdspUrlParts = {\n\t\t\tsiteUrl: odspResolvedUrl.siteUrl,\n\t\t\tdriveId: odspResolvedUrl.driveId,\n\t\t\titemId: odspResolvedUrl.itemId,\n\t\t};\n\n\t\tlet fileInfo: INewFileInfo | IExistingFileInfo;\n\t\tlet createShareLinkParam: ISharingLinkKind | undefined;\n\t\tif (odspResolvedUrl.itemId) {\n\t\t\tfileInfo = {\n\t\t\t\ttype: \"Existing\",\n\t\t\t\tdriveId: odspResolvedUrl.driveId,\n\t\t\t\tsiteUrl: odspResolvedUrl.siteUrl,\n\t\t\t\titemId: odspResolvedUrl.itemId,\n\t\t\t};\n\t\t} else if (odspResolvedUrl.fileName) {\n\t\t\tconst [, queryString] = odspResolvedUrl.url.split(\"?\");\n\t\t\tconst searchParams = new URLSearchParams(queryString);\n\t\t\tconst filePath = searchParams.get(\"path\");\n\t\t\tif (filePath === undefined || filePath === null) {\n\t\t\t\tthrow new Error(\"File path should be provided!!\");\n\t\t\t}\n\t\t\tcreateShareLinkParam = getSharingLinkParams(this.hostPolicy, searchParams);\n\t\t\tfileInfo = {\n\t\t\t\ttype: \"New\",\n\t\t\t\tdriveId: odspResolvedUrl.driveId,\n\t\t\t\tsiteUrl: odspResolvedUrl.siteUrl,\n\t\t\t\tfilePath,\n\t\t\t\tfilename: odspResolvedUrl.fileName,\n\t\t\t\tcreateLinkType: createShareLinkParam,\n\t\t\t};\n\t\t} else {\n\t\t\tthrow new Error(\"A new or existing file must be specified to create container!\");\n\t\t}\n\n\t\tif (isCombinedAppAndProtocolSummary(createNewSummary)) {\n\t\t\tconst documentAttributes = getDocAttributesFromProtocolSummary(\n\t\t\t\tcreateNewSummary.tree[\".protocol\"],\n\t\t\t);\n\t\t\tif (documentAttributes?.sequenceNumber !== 0) {\n\t\t\t\tthrow new Error(\"Seq number in detached ODSP container should be 0\");\n\t\t\t}\n\t\t}\n\n\t\tconst odspLogger = createOdspLogger(logger);\n\n\t\tconst fileEntry: IFileEntry = {\n\t\t\tresolvedUrl: odspResolvedUrl,\n\t\t\tdocId: odspResolvedUrl.hashedDocumentId,\n\t\t};\n\t\tconst cacheAndTracker = createOdspCacheAndTracker(\n\t\t\tthis.persistedCache,\n\t\t\tthis.nonPersistentCache,\n\t\t\tfileEntry,\n\t\t\todspLogger,\n\t\t\tclientIsSummarizer,\n\t\t);\n\n\t\treturn PerformanceEvent.timedExecAsync(\n\t\t\todspLogger,\n\t\t\t{\n\t\t\t\teventName: \"CreateNew\",\n\t\t\t\tisWithSummaryUpload: true,\n\t\t\t\tcreateShareLinkParam: createShareLinkParam\n\t\t\t\t\t? JSON.stringify(createShareLinkParam)\n\t\t\t\t\t: undefined,\n\t\t\t\tenableSingleRequestForShareLinkWithCreate:\n\t\t\t\t\tthis.hostPolicy.enableSingleRequestForShareLinkWithCreate,\n\t\t\t},\n\t\t\tasync (event) => {\n\t\t\t\tconst getAuthHeader = toInstrumentedOdspStorageTokenFetcher(\n\t\t\t\t\todspLogger,\n\t\t\t\t\tresolvedUrlData,\n\t\t\t\t\tthis.getStorageToken,\n\t\t\t\t);\n\t\t\t\t// We can delay load this module as this path will not be executed in load flows and create flow\n\t\t\t\t// while only happens once in lifetime of a document happens in the background after creation of\n\t\t\t\t// detached container.\n\t\t\t\tconst module = await import(\n\t\t\t\t\t/* webpackChunkName: \"createNewModule\" */ \"./createNewModule.js\"\n\t\t\t\t)\n\t\t\t\t\t.then((m) => {\n\t\t\t\t\t\todspLogger.sendTelemetryEvent({ eventName: \"createNewModuleLoaded\" });\n\t\t\t\t\t\treturn m;\n\t\t\t\t\t})\n\t\t\t\t\t.catch((error) => {\n\t\t\t\t\t\todspLogger.sendErrorEvent({ eventName: \"createNewModuleLoadFailed\" }, error);\n\t\t\t\t\t\tthrow error;\n\t\t\t\t\t});\n\t\t\t\tconst _odspResolvedUrl = isNewFileInfo(fileInfo)\n\t\t\t\t\t? await module.createNewFluidFile(\n\t\t\t\t\t\t\tgetAuthHeader,\n\t\t\t\t\t\t\tfileInfo,\n\t\t\t\t\t\t\todspLogger,\n\t\t\t\t\t\t\tcreateNewSummary,\n\t\t\t\t\t\t\tcacheAndTracker.epochTracker,\n\t\t\t\t\t\t\tfileEntry,\n\t\t\t\t\t\t\tthis.hostPolicy.cacheCreateNewSummary ?? true,\n\t\t\t\t\t\t\t!!this.hostPolicy.sessionOptions?.forceAccessTokenViaAuthorizationHeader,\n\t\t\t\t\t\t\todspResolvedUrl.isClpCompliantApp,\n\t\t\t\t\t\t\tthis.hostPolicy.enableSingleRequestForShareLinkWithCreate,\n\t\t\t\t\t\t)\n\t\t\t\t\t: await module.createNewContainerOnExistingFile(\n\t\t\t\t\t\t\tgetAuthHeader,\n\t\t\t\t\t\t\tfileInfo,\n\t\t\t\t\t\t\todspLogger,\n\t\t\t\t\t\t\tcreateNewSummary,\n\t\t\t\t\t\t\tcacheAndTracker.epochTracker,\n\t\t\t\t\t\t\tfileEntry,\n\t\t\t\t\t\t\tthis.hostPolicy.cacheCreateNewSummary ?? true,\n\t\t\t\t\t\t\t!!this.hostPolicy.sessionOptions?.forceAccessTokenViaAuthorizationHeader,\n\t\t\t\t\t\t\todspResolvedUrl.isClpCompliantApp,\n\t\t\t\t\t\t);\n\t\t\t\tconst docService = this.createDocumentServiceCore(\n\t\t\t\t\t_odspResolvedUrl,\n\t\t\t\t\todspLogger,\n\t\t\t\t\tcacheAndTracker,\n\t\t\t\t\tclientIsSummarizer,\n\t\t\t\t);\n\t\t\t\tevent.end({\n\t\t\t\t\tdocId: _odspResolvedUrl.hashedDocumentId,\n\t\t\t\t});\n\t\t\t\treturn docService;\n\t\t\t},\n\t\t);\n\t}\n\n\t/**\n\t * @param getStorageToken - function that can provide the storage token for a given site. This is\n\t * is also referred to as the \"Vroom\" token in SPO.\n\t * @param getWebsocketToken - function that can provide a token for accessing the web socket. This is also\n\t * to as the \"Push\" token in SPO. If undefined then websocket token is expected to be returned with joinSession\n\t * response payload.\n\t * @param persistedCache - PersistedCache provided by host for use in this session.\n\t * @param hostPolicy - Policy for storage provided by host.\n\t */\n\tconstructor(\n\t\tprivate readonly getStorageToken: TokenFetcher<OdspResourceTokenFetchOptions>,\n\t\tprivate readonly getWebsocketToken:\n\t\t\t| TokenFetcher<OdspResourceTokenFetchOptions>\n\t\t\t| undefined,\n\t\tprotected persistedCache: IPersistedCache = new LocalPersistentCache(),\n\t\tprivate readonly hostPolicy: HostStoragePolicy = {},\n\t) {\n\t\tif (this.hostPolicy.isolateSocketCache === true) {\n\t\t\t// create the key to separate the socket reuse cache\n\t\t\tthis.socketReferenceKeyPrefix = uuid();\n\t\t}\n\t\t// Set enableRedeemFallback by default as true.\n\t\tthis.hostPolicy.enableRedeemFallback = this.hostPolicy.enableRedeemFallback ?? true;\n\t\tthis.hostPolicy.sessionOptions = {\n\t\t\tforceAccessTokenViaAuthorizationHeader: true,\n\t\t\t...this.hostPolicy.sessionOptions,\n\t\t};\n\t}\n\n\tpublic async createDocumentService(\n\t\tresolvedUrl: IResolvedUrl,\n\t\tlogger?: ITelemetryBaseLogger,\n\t\tclientIsSummarizer?: boolean,\n\t): Promise<IDocumentService> {\n\t\treturn this.createDocumentServiceCore(\n\t\t\tresolvedUrl,\n\t\t\tcreateOdspLogger(logger),\n\t\t\tundefined,\n\t\t\tclientIsSummarizer,\n\t\t);\n\t}\n\n\tprotected async createDocumentServiceCore(\n\t\tresolvedUrl: IResolvedUrl,\n\t\todspLogger: ITelemetryBaseLogger,\n\t\tcacheAndTrackerArg?: ICacheAndTracker,\n\t\tclientIsSummarizer?: boolean,\n\t): Promise<IDocumentService> {\n\t\tconst extLogger = createChildLogger({ logger: odspLogger });\n\t\tconst odspResolvedUrl = getOdspResolvedUrl(resolvedUrl);\n\t\tconst resolvedUrlData: IOdspUrlParts = {\n\t\t\tsiteUrl: odspResolvedUrl.siteUrl,\n\t\t\tdriveId: odspResolvedUrl.driveId,\n\t\t\titemId: odspResolvedUrl.itemId,\n\t\t};\n\n\t\tconst cacheAndTracker =\n\t\t\tcacheAndTrackerArg ??\n\t\t\tcreateOdspCacheAndTracker(\n\t\t\t\tthis.persistedCache,\n\t\t\t\tthis.nonPersistentCache,\n\t\t\t\t{ resolvedUrl: odspResolvedUrl, docId: odspResolvedUrl.hashedDocumentId },\n\t\t\t\textLogger,\n\t\t\t\tclientIsSummarizer,\n\t\t\t);\n\n\t\tconst storageTokenFetcher = toInstrumentedOdspStorageTokenFetcher(\n\t\t\textLogger,\n\t\t\tresolvedUrlData,\n\t\t\tthis.getStorageToken,\n\t\t);\n\n\t\tconst webSocketTokenFetcher =\n\t\t\tthis.getWebsocketToken === undefined\n\t\t\t\t? undefined\n\t\t\t\t: async (options: TokenFetchOptions): Promise<string | null> =>\n\t\t\t\t\t\t// websocket expects a plain token\n\t\t\t\t\t\ttoInstrumentedOdspTokenFetcher(\n\t\t\t\t\t\t\textLogger,\n\t\t\t\t\t\t\tresolvedUrlData,\n\t\t\t\t\t\t\tthis.getWebsocketToken!,\n\t\t\t\t\t\t\tfalse /* throwOnNullToken */,\n\t\t\t\t\t\t\ttrue /* returnPlainToken */,\n\t\t\t\t\t\t)(options, \"GetWebsocketToken\");\n\n\t\treturn OdspDocumentService.create(\n\t\t\tresolvedUrl,\n\t\t\tstorageTokenFetcher,\n\t\t\twebSocketTokenFetcher,\n\t\t\textLogger,\n\t\t\tcacheAndTracker.cache,\n\t\t\tthis.hostPolicy,\n\t\t\tcacheAndTracker.epochTracker,\n\t\t\tthis.socketReferenceKeyPrefix,\n\t\t\tclientIsSummarizer,\n\t\t);\n\t}\n}\n\n/**\n * Extract the sharing link kind from the resolved URL's query paramerters\n */\nfunction getSharingLinkParams(\n\thostPolicy: HostStoragePolicy,\n\tsearchParams: URLSearchParams,\n): ISharingLinkKind | undefined {\n\t// extract request parameters for creation of sharing link (if provided) if the feature is enabled\n\tlet createShareLinkParam: ISharingLinkKind | undefined;\n\tif (hostPolicy.enableSingleRequestForShareLinkWithCreate) {\n\t\tconst createLinkScope = searchParams.get(\"createLinkScope\");\n\t\tconst createLinkRole = searchParams.get(\"createLinkRole\");\n\t\tif (createLinkScope && SharingLinkScope[createLinkScope]) {\n\t\t\tcreateShareLinkParam = {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\t\t\tscope: SharingLinkScope[createLinkScope],\n\t\t\t\t...(createLinkRole && SharingLinkRole[createLinkRole]\n\t\t\t\t\t? // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\t\t\t\t\t{ role: SharingLinkRole[createLinkRole] }\n\t\t\t\t\t: {}),\n\t\t\t};\n\t\t}\n\t}\n\treturn createShareLinkParam;\n}\n"]}
@@ -15,7 +15,7 @@ import { OdspDocumentStorageServiceBase } from "./odspDocumentStorageServiceBase
15
15
  export declare const defaultSummarizerCacheExpiryTimeout: number;
16
16
  export declare class OdspDocumentStorageService extends OdspDocumentStorageServiceBase {
17
17
  private readonly odspResolvedUrl;
18
- private readonly getStorageToken;
18
+ private readonly getAuthHeader;
19
19
  private readonly logger;
20
20
  private readonly fetchFullSnapshot;
21
21
  private readonly cache;
@@ -41,7 +41,7 @@ export declare class OdspDocumentStorageService extends OdspDocumentStorageServi
41
41
  private readonly maxSnapshotSizeLimit;
42
42
  private readonly maxSnapshotFetchTimeout;
43
43
  private readonly createBlobRateLimiter;
44
- constructor(odspResolvedUrl: IOdspResolvedUrl, getStorageToken: InstrumentedStorageTokenFetcher, logger: ITelemetryLoggerExt, fetchFullSnapshot: boolean, cache: IOdspCache, hostPolicy: HostStoragePolicyInternal, epochTracker: EpochTracker, flushCallback: () => Promise<FlushResult>, relayServiceTenantAndSessionId: () => string | undefined, snapshotFormatFetchType?: SnapshotFormatSupportType | undefined);
44
+ constructor(odspResolvedUrl: IOdspResolvedUrl, getAuthHeader: InstrumentedStorageTokenFetcher, logger: ITelemetryLoggerExt, fetchFullSnapshot: boolean, cache: IOdspCache, hostPolicy: HostStoragePolicyInternal, epochTracker: EpochTracker, flushCallback: () => Promise<FlushResult>, relayServiceTenantAndSessionId: () => string | undefined, snapshotFormatFetchType?: SnapshotFormatSupportType | undefined);
45
45
  get isFirstSnapshotFromNetwork(): boolean | undefined;
46
46
  createBlob(file: ArrayBufferLike): Promise<ICreateBlobResponse>;
47
47
  protected fetchBlobFromStorage(blobId: string, evicted: boolean): Promise<ArrayBuffer>;
@@ -1 +1 @@
1
- {"version":3,"file":"odspDocumentStorageManager.d.ts","sourceRoot":"","sources":["../src/odspDocumentStorageManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"odspDocumentStorageManager.d.ts","sourceRoot":"","sources":["../src/odspDocumentStorageManager.ts"],"names":[],"mappings":"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"}
@@ -11,16 +11,16 @@ import { NonRetryableError, RateLimiter } from "@fluidframework/driver-utils/int
11
11
  import { OdspErrorTypes, getKeyForCacheEntry, } from "@fluidframework/odsp-driver-definitions/internal";
12
12
  import { PerformanceEvent, generateStack, loggerToMonitoringContext, normalizeError, overwriteStack, } from "@fluidframework/telemetry-utils/internal";
13
13
  import { downloadSnapshot, getTreeStats, fetchSnapshot, fetchSnapshotWithRedeem, } from "./fetchSnapshot.js";
14
- import { getUrlAndHeadersWithAuth } from "./getUrlAndHeadersWithAuth.js";
14
+ import { getHeadersWithAuth } from "./getUrlAndHeadersWithAuth.js";
15
15
  import { OdspDocumentStorageServiceBase } from "./odspDocumentStorageServiceBase.js";
16
16
  import { createCacheSnapshotKey, getWithRetryForTokenRefresh, isInstanceOfISnapshot, isSnapshotFetchForLoadingGroup, useLegacyFlowWithoutGroupsForSnapshotFetch, } from "./odspUtils.js";
17
17
  import { pkgVersion as driverVersion } from "./packageVersion.js";
18
18
  export const defaultSummarizerCacheExpiryTimeout = 60 * 1000; // 60 seconds.
19
19
  export class OdspDocumentStorageService extends OdspDocumentStorageServiceBase {
20
- constructor(odspResolvedUrl, getStorageToken, logger, fetchFullSnapshot, cache, hostPolicy, epochTracker, flushCallback, relayServiceTenantAndSessionId, snapshotFormatFetchType) {
20
+ constructor(odspResolvedUrl, getAuthHeader, logger, fetchFullSnapshot, cache, hostPolicy, epochTracker, flushCallback, relayServiceTenantAndSessionId, snapshotFormatFetchType) {
21
21
  super(loggerToMonitoringContext(logger).config);
22
22
  this.odspResolvedUrl = odspResolvedUrl;
23
- this.getStorageToken = getStorageToken;
23
+ this.getAuthHeader = getAuthHeader;
24
24
  this.logger = logger;
25
25
  this.fetchFullSnapshot = fetchFullSnapshot;
26
26
  this.cache = cache;
@@ -52,8 +52,10 @@ export class OdspDocumentStorageService extends OdspDocumentStorageServiceBase {
52
52
  async createBlob(file) {
53
53
  this.checkAttachmentPOSTUrl();
54
54
  const response = await getWithRetryForTokenRefresh(async (options) => {
55
- const storageToken = await this.getStorageToken(options, "CreateBlob");
56
- const { url, headers } = getUrlAndHeadersWithAuth(`${this.attachmentPOSTUrl}/content`, storageToken, !!this.hostPolicy.sessionOptions?.forceAccessTokenViaAuthorizationHeader);
55
+ const url = `${this.attachmentPOSTUrl}/content`;
56
+ const method = "POST";
57
+ const authHeader = await this.getAuthHeader({ ...options, request: { url, method } }, "CreateBlob");
58
+ const headers = getHeadersWithAuth(authHeader);
57
59
  headers["Content-Type"] = "application/octet-stream";
58
60
  return PerformanceEvent.timedExecAsync(this.logger, {
59
61
  eventName: "createBlob",
@@ -63,7 +65,7 @@ export class OdspDocumentStorageService extends OdspDocumentStorageServiceBase {
63
65
  const res = await this.createBlobRateLimiter.schedule(async () => this.epochTracker.fetchAndParseAsJSON(url, {
64
66
  body: file,
65
67
  headers,
66
- method: "POST",
68
+ method,
67
69
  }, "createBlob"));
68
70
  event.end({
69
71
  blobId: res.content.id,
@@ -77,9 +79,10 @@ export class OdspDocumentStorageService extends OdspDocumentStorageServiceBase {
77
79
  async fetchBlobFromStorage(blobId, evicted) {
78
80
  this.checkAttachmentGETUrl();
79
81
  const blob = await getWithRetryForTokenRefresh(async (options) => {
80
- const storageToken = await this.getStorageToken(options, "GetBlob");
81
- const unAuthedUrl = `${this.attachmentGETUrl}/${encodeURIComponent(blobId)}/content`;
82
- const { url, headers } = getUrlAndHeadersWithAuth(unAuthedUrl, storageToken, !!this.hostPolicy.sessionOptions?.forceAccessTokenViaAuthorizationHeader);
82
+ const url = `${this.attachmentGETUrl}/${encodeURIComponent(blobId)}/content`;
83
+ const method = "GET";
84
+ const authHeader = await this.getAuthHeader({ ...options, request: { url, method } }, "GetBlob");
85
+ const headers = getHeadersWithAuth(authHeader);
83
86
  return PerformanceEvent.timedExecAsync(this.logger, {
84
87
  eventName: "readDataBlob",
85
88
  blobId,
@@ -321,8 +324,10 @@ export class OdspDocumentStorageService extends OdspDocumentStorageServiceBase {
321
324
  return id ? [{ id, treeId: undefined }] : [];
322
325
  }
323
326
  return getWithRetryForTokenRefresh(async (options) => {
324
- const storageToken = await this.getStorageToken(options, "GetVersions");
325
- const { url, headers } = getUrlAndHeadersWithAuth(`${this.snapshotUrl}/versions?top=${count}`, storageToken, !!this.hostPolicy.sessionOptions?.forceAccessTokenViaAuthorizationHeader);
327
+ const url = `${this.snapshotUrl}/versions?top=${count}`;
328
+ const method = "GET";
329
+ const storageToken = await this.getAuthHeader({ ...options, request: { url, method } }, "GetVersions");
330
+ const headers = getHeadersWithAuth(storageToken);
326
331
  // Fetch the latest snapshot versions for the document
327
332
  const response = await PerformanceEvent.timedExecAsync(this.logger, {
328
333
  eventName: "getVersions",
@@ -395,8 +400,8 @@ export class OdspDocumentStorageService extends OdspDocumentStorageServiceBase {
395
400
  snapshotOptions.mds = undefined;
396
401
  snapshotOptions.timeout = undefined;
397
402
  }
398
- const snapshotDownloader = async (finalOdspResolvedUrl, storageToken, loadingGroupId, options, controller) => {
399
- return downloadSnapshot(finalOdspResolvedUrl, storageToken, loadingGroupId, options, this.snapshotFormatFetchType, controller, this.epochTracker, scenarioName);
403
+ const snapshotDownloader = async (finalOdspResolvedUrl, tokenFetcher, tokenFetchOptions, loadingGroupId, options, controller) => {
404
+ return downloadSnapshot(finalOdspResolvedUrl, tokenFetcher, tokenFetchOptions, loadingGroupId, options, this.snapshotFormatFetchType, controller, this.epochTracker, scenarioName);
400
405
  };
401
406
  const putInCache = async (valueWithEpoch) => {
402
407
  return this.cache.persistedCache.put(createCacheSnapshotKey(this.odspResolvedUrl),
@@ -405,7 +410,7 @@ export class OdspDocumentStorageService extends OdspDocumentStorageServiceBase {
405
410
  };
406
411
  const removeEntries = async () => this.cache.persistedCache.removeEntries();
407
412
  try {
408
- const odspSnapshot = await fetchSnapshotWithRedeem(this.odspResolvedUrl, this.getStorageToken, snapshotOptions, !!this.hostPolicy.sessionOptions?.forceAccessTokenViaAuthorizationHeader, this.logger, snapshotDownloader, putInCache, removeEntries, loadingGroupIds, this.hostPolicy.enableRedeemFallback);
413
+ const odspSnapshot = await fetchSnapshotWithRedeem(this.odspResolvedUrl, this.getAuthHeader, snapshotOptions, !!this.hostPolicy.sessionOptions?.forceAccessTokenViaAuthorizationHeader, this.logger, snapshotDownloader, putInCache, removeEntries, loadingGroupIds, this.hostPolicy.enableRedeemFallback);
409
414
  return odspSnapshot;
410
415
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
411
416
  }
@@ -433,7 +438,7 @@ export class OdspDocumentStorageService extends OdspDocumentStorageServiceBase {
433
438
  mds: undefined,
434
439
  timeout: undefined,
435
440
  };
436
- const odspSnapshot = await fetchSnapshotWithRedeem(this.odspResolvedUrl, this.getStorageToken, snapshotOptionsWithoutBlobs, !!this.hostPolicy.sessionOptions?.forceAccessTokenViaAuthorizationHeader, this.logger, snapshotDownloader, putInCache, removeEntries, loadingGroupIds, this.hostPolicy.enableRedeemFallback);
441
+ const odspSnapshot = await fetchSnapshotWithRedeem(this.odspResolvedUrl, this.getAuthHeader, snapshotOptionsWithoutBlobs, !!this.hostPolicy.sessionOptions?.forceAccessTokenViaAuthorizationHeader, this.logger, snapshotDownloader, putInCache, removeEntries, loadingGroupIds, this.hostPolicy.enableRedeemFallback);
437
442
  return odspSnapshot;
438
443
  }
439
444
  throw error;
@@ -500,7 +505,7 @@ export class OdspDocumentStorageService extends OdspDocumentStorageServiceBase {
500
505
  this.logger.sendErrorEvent({ eventName: "SummaryModuleLoadFailed" }, error);
501
506
  throw error;
502
507
  });
503
- this.odspSummaryUploadManager = new module.OdspSummaryUploadManager(this.odspResolvedUrl.endpoints.snapshotStorageUrl, this.getStorageToken, this.logger, this.epochTracker, !!this.hostPolicy.sessionOptions?.forceAccessTokenViaAuthorizationHeader, this.relayServiceTenantAndSessionId);
508
+ this.odspSummaryUploadManager = new module.OdspSummaryUploadManager(this.odspResolvedUrl.endpoints.snapshotStorageUrl, this.getAuthHeader, this.logger, this.epochTracker, this.relayServiceTenantAndSessionId);
504
509
  return this.odspSummaryUploadManager;
505
510
  }
506
511
  checkSnapshotUrl() {
@@ -520,11 +525,12 @@ export class OdspDocumentStorageService extends OdspDocumentStorageServiceBase {
520
525
  }
521
526
  async fetchTreeFromSnapshot(id, scenarioName) {
522
527
  return getWithRetryForTokenRefresh(async (options) => {
523
- const storageToken = await this.getStorageToken(options, "ReadCommit");
524
- const snapshotDownloader = async (url, fetchOptions) => {
525
- return this.epochTracker.fetchAndParseAsJSON(url, fetchOptions, "snapshotTree", undefined, scenarioName);
528
+ const snapshotDownloader = async (url) => {
529
+ const authHeader = await this.getAuthHeader({ ...options, request: { url, method: "GET" } }, "ReadCommit");
530
+ const headers = getHeadersWithAuth(authHeader);
531
+ return this.epochTracker.fetchAndParseAsJSON(url, { headers }, "snapshotTree", undefined, scenarioName);
526
532
  };
527
- const snapshot = await fetchSnapshot(this.snapshotUrl, storageToken, id, this.fetchFullSnapshot, !!this.hostPolicy.sessionOptions?.forceAccessTokenViaAuthorizationHeader, this.logger, snapshotDownloader);
533
+ const snapshot = await fetchSnapshot(this.snapshotUrl, id, this.fetchFullSnapshot, !!this.hostPolicy.sessionOptions?.forceAccessTokenViaAuthorizationHeader, this.logger, snapshotDownloader);
528
534
  let treeId = "";
529
535
  if (snapshot.snapshotTree) {
530
536
  assert(snapshot.snapshotTree.id !== undefined, 0x222 /* "Root tree should contain the id!!" */);