@fluidframework/routerlicious-driver 1.4.0-115997 → 2.0.0-dev-rc.1.0.0.224419

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 (365) hide show
  1. package/.eslintrc.js +10 -12
  2. package/.mocharc.js +12 -0
  3. package/CHANGELOG.md +156 -0
  4. package/README.md +39 -1
  5. package/api-extractor-lint.json +4 -0
  6. package/api-extractor.json +2 -2
  7. package/api-report/routerlicious-driver.api.md +108 -0
  8. package/dist/cache.cjs +30 -0
  9. package/dist/cache.cjs.map +1 -0
  10. package/dist/cache.d.ts +7 -0
  11. package/dist/cache.d.ts.map +1 -1
  12. package/dist/{definitions.js → contracts.cjs} +1 -1
  13. package/dist/contracts.cjs.map +1 -0
  14. package/dist/contracts.d.ts +42 -0
  15. package/dist/contracts.d.ts.map +1 -0
  16. package/dist/{createNewUtils.js → createNewUtils.cjs} +7 -5
  17. package/dist/createNewUtils.cjs.map +1 -0
  18. package/dist/createNewUtils.d.ts +1 -1
  19. package/dist/createNewUtils.d.ts.map +1 -1
  20. package/dist/{defaultTokenProvider.js → defaultTokenProvider.cjs} +2 -1
  21. package/dist/defaultTokenProvider.cjs.map +1 -0
  22. package/dist/defaultTokenProvider.d.ts +1 -0
  23. package/dist/defaultTokenProvider.d.ts.map +1 -1
  24. package/dist/definitions.cjs +7 -0
  25. package/dist/definitions.cjs.map +1 -0
  26. package/dist/definitions.d.ts.map +1 -1
  27. package/dist/deltaStorageService.cjs +122 -0
  28. package/dist/deltaStorageService.cjs.map +1 -0
  29. package/dist/deltaStorageService.d.ts +7 -6
  30. package/dist/deltaStorageService.d.ts.map +1 -1
  31. package/dist/{documentDeltaConnection.js → documentDeltaConnection.cjs} +8 -13
  32. package/dist/documentDeltaConnection.cjs.map +1 -0
  33. package/dist/documentDeltaConnection.d.ts +3 -4
  34. package/dist/documentDeltaConnection.d.ts.map +1 -1
  35. package/dist/{documentService.js → documentService.cjs} +61 -64
  36. package/dist/documentService.cjs.map +1 -0
  37. package/dist/documentService.d.ts +12 -4
  38. package/dist/documentService.d.ts.map +1 -1
  39. package/dist/{documentServiceFactory.js → documentServiceFactory.cjs} +87 -33
  40. package/dist/documentServiceFactory.cjs.map +1 -0
  41. package/dist/documentServiceFactory.d.ts +5 -3
  42. package/dist/documentServiceFactory.d.ts.map +1 -1
  43. package/dist/{documentStorageService.js → documentStorageService.cjs} +18 -16
  44. package/dist/documentStorageService.cjs.map +1 -0
  45. package/dist/documentStorageService.d.ts +4 -3
  46. package/dist/documentStorageService.d.ts.map +1 -1
  47. package/dist/errorUtils.cjs +87 -0
  48. package/dist/errorUtils.cjs.map +1 -0
  49. package/dist/errorUtils.d.ts +56 -10
  50. package/dist/errorUtils.d.ts.map +1 -1
  51. package/dist/gitManager.cjs +46 -0
  52. package/dist/gitManager.cjs.map +1 -0
  53. package/dist/gitManager.d.ts +27 -0
  54. package/dist/gitManager.d.ts.map +1 -0
  55. package/dist/historian.cjs +72 -0
  56. package/dist/historian.cjs.map +1 -0
  57. package/dist/historian.d.ts +34 -0
  58. package/dist/historian.d.ts.map +1 -0
  59. package/dist/index.cjs +19 -0
  60. package/dist/index.cjs.map +1 -0
  61. package/dist/index.d.ts +5 -8
  62. package/dist/index.d.ts.map +1 -1
  63. package/dist/mapWithExpiration.cjs +105 -0
  64. package/dist/mapWithExpiration.cjs.map +1 -0
  65. package/dist/mapWithExpiration.d.ts +34 -0
  66. package/dist/mapWithExpiration.d.ts.map +1 -0
  67. package/dist/{nullBlobStorageService.js → nullBlobStorageService.cjs} +5 -5
  68. package/dist/nullBlobStorageService.cjs.map +1 -0
  69. package/dist/nullBlobStorageService.d.ts.map +1 -1
  70. package/dist/{packageVersion.js → packageVersion.cjs} +2 -2
  71. package/dist/packageVersion.cjs.map +1 -0
  72. package/dist/packageVersion.d.ts +1 -1
  73. package/dist/packageVersion.d.ts.map +1 -1
  74. package/dist/{policies.js → policies.cjs} +1 -1
  75. package/dist/policies.cjs.map +1 -0
  76. package/dist/policies.d.ts +22 -9
  77. package/dist/policies.d.ts.map +1 -1
  78. package/dist/r11sSnapshotParser.cjs +73 -0
  79. package/dist/r11sSnapshotParser.cjs.map +1 -0
  80. package/dist/r11sSnapshotParser.d.ts +14 -0
  81. package/dist/r11sSnapshotParser.d.ts.map +1 -0
  82. package/dist/restWrapper.cjs +249 -0
  83. package/dist/restWrapper.cjs.map +1 -0
  84. package/dist/restWrapper.d.ts +32 -12
  85. package/dist/restWrapper.d.ts.map +1 -1
  86. package/dist/restWrapperBase.cjs +89 -0
  87. package/dist/restWrapperBase.cjs.map +1 -0
  88. package/dist/restWrapperBase.d.ts +26 -0
  89. package/dist/restWrapperBase.d.ts.map +1 -0
  90. package/dist/retriableGitManager.cjs +40 -0
  91. package/dist/retriableGitManager.cjs.map +1 -0
  92. package/dist/retriableGitManager.d.ts +13 -23
  93. package/dist/retriableGitManager.d.ts.map +1 -1
  94. package/dist/routerlicious-driver-alpha.d.ts +92 -0
  95. package/dist/routerlicious-driver-beta.d.ts +98 -0
  96. package/dist/routerlicious-driver-public.d.ts +98 -0
  97. package/dist/routerlicious-driver-untrimmed.d.ts +261 -0
  98. package/dist/{shreddedSummaryDocumentStorageService.js → shreddedSummaryDocumentStorageService.cjs} +41 -34
  99. package/dist/shreddedSummaryDocumentStorageService.cjs.map +1 -0
  100. package/dist/shreddedSummaryDocumentStorageService.d.ts +6 -5
  101. package/dist/shreddedSummaryDocumentStorageService.d.ts.map +1 -1
  102. package/dist/storageContracts.cjs +7 -0
  103. package/dist/storageContracts.cjs.map +1 -0
  104. package/dist/storageContracts.d.ts +45 -0
  105. package/dist/storageContracts.d.ts.map +1 -0
  106. package/dist/summaryTreeUploadManager.cjs +110 -0
  107. package/dist/summaryTreeUploadManager.cjs.map +1 -0
  108. package/dist/summaryTreeUploadManager.d.ts +23 -0
  109. package/dist/summaryTreeUploadManager.d.ts.map +1 -0
  110. package/dist/{tokens.js → tokens.cjs} +1 -1
  111. package/dist/tokens.cjs.map +1 -0
  112. package/dist/tokens.d.ts +34 -5
  113. package/dist/tokens.d.ts.map +1 -1
  114. package/dist/treeUtils.cjs +107 -0
  115. package/dist/treeUtils.cjs.map +1 -0
  116. package/dist/treeUtils.d.ts +58 -0
  117. package/dist/treeUtils.d.ts.map +1 -0
  118. package/dist/tsdoc-metadata.json +11 -0
  119. package/dist/{urlUtils.js → urlUtils.cjs} +21 -25
  120. package/dist/urlUtils.cjs.map +1 -0
  121. package/dist/urlUtils.d.ts +2 -2
  122. package/dist/urlUtils.d.ts.map +1 -1
  123. package/dist/wholeSummaryDocumentStorageService.cjs +253 -0
  124. package/dist/wholeSummaryDocumentStorageService.cjs.map +1 -0
  125. package/dist/wholeSummaryDocumentStorageService.d.ts +10 -8
  126. package/dist/wholeSummaryDocumentStorageService.d.ts.map +1 -1
  127. package/dist/wholeSummaryUploadManager.cjs +37 -0
  128. package/dist/wholeSummaryUploadManager.cjs.map +1 -0
  129. package/dist/wholeSummaryUploadManager.d.ts +16 -0
  130. package/dist/wholeSummaryUploadManager.d.ts.map +1 -0
  131. package/lib/{cache.d.ts → cache.d.mts} +7 -0
  132. package/lib/cache.d.mts.map +1 -0
  133. package/lib/cache.mjs +25 -0
  134. package/lib/cache.mjs.map +1 -0
  135. package/lib/contracts.d.mts +42 -0
  136. package/lib/contracts.d.mts.map +1 -0
  137. package/lib/{definitions.js → contracts.mjs} +1 -1
  138. package/lib/contracts.mjs.map +1 -0
  139. package/lib/{createNewUtils.d.ts → createNewUtils.d.mts} +1 -1
  140. package/lib/{createNewUtils.d.ts.map → createNewUtils.d.mts.map} +1 -1
  141. package/lib/{createNewUtils.js → createNewUtils.mjs} +7 -5
  142. package/lib/createNewUtils.mjs.map +1 -0
  143. package/lib/{defaultTokenProvider.d.ts → defaultTokenProvider.d.mts} +2 -1
  144. package/lib/defaultTokenProvider.d.mts.map +1 -0
  145. package/lib/{defaultTokenProvider.js → defaultTokenProvider.mjs} +2 -1
  146. package/lib/defaultTokenProvider.mjs.map +1 -0
  147. package/lib/definitions.d.mts.map +1 -0
  148. package/lib/definitions.mjs +6 -0
  149. package/{dist/definitions.js.map → lib/definitions.mjs.map} +1 -1
  150. package/lib/{deltaStorageService.d.ts → deltaStorageService.d.mts} +8 -7
  151. package/lib/deltaStorageService.d.mts.map +1 -0
  152. package/lib/deltaStorageService.mjs +117 -0
  153. package/lib/deltaStorageService.mjs.map +1 -0
  154. package/lib/{documentDeltaConnection.d.ts → documentDeltaConnection.d.mts} +3 -4
  155. package/lib/documentDeltaConnection.d.mts.map +1 -0
  156. package/lib/{documentDeltaConnection.js → documentDeltaConnection.mjs} +8 -13
  157. package/lib/documentDeltaConnection.mjs.map +1 -0
  158. package/lib/{documentService.d.ts → documentService.d.mts} +16 -8
  159. package/lib/documentService.d.mts.map +1 -0
  160. package/lib/{documentService.js → documentService.mjs} +60 -44
  161. package/lib/documentService.mjs.map +1 -0
  162. package/lib/{documentServiceFactory.d.ts → documentServiceFactory.d.mts} +7 -5
  163. package/lib/documentServiceFactory.d.mts.map +1 -0
  164. package/lib/{documentServiceFactory.js → documentServiceFactory.mjs} +88 -34
  165. package/lib/documentServiceFactory.mjs.map +1 -0
  166. package/lib/{documentStorageService.d.ts → documentStorageService.d.mts} +7 -6
  167. package/lib/documentStorageService.d.mts.map +1 -0
  168. package/lib/{documentStorageService.js → documentStorageService.mjs} +19 -17
  169. package/lib/documentStorageService.mjs.map +1 -0
  170. package/lib/errorUtils.d.mts +93 -0
  171. package/lib/errorUtils.d.mts.map +1 -0
  172. package/lib/errorUtils.mjs +81 -0
  173. package/lib/errorUtils.mjs.map +1 -0
  174. package/lib/gitManager.d.mts +27 -0
  175. package/lib/gitManager.d.mts.map +1 -0
  176. package/lib/gitManager.mjs +42 -0
  177. package/lib/gitManager.mjs.map +1 -0
  178. package/lib/historian.d.mts +34 -0
  179. package/lib/historian.d.mts.map +1 -0
  180. package/lib/historian.mjs +67 -0
  181. package/lib/historian.mjs.map +1 -0
  182. package/lib/index.d.mts +10 -0
  183. package/lib/index.d.mts.map +1 -0
  184. package/lib/index.mjs +8 -0
  185. package/lib/index.mjs.map +1 -0
  186. package/lib/mapWithExpiration.d.mts +34 -0
  187. package/lib/mapWithExpiration.d.mts.map +1 -0
  188. package/lib/mapWithExpiration.mjs +101 -0
  189. package/lib/mapWithExpiration.mjs.map +1 -0
  190. package/lib/nullBlobStorageService.d.mts.map +1 -0
  191. package/lib/{nullBlobStorageService.js → nullBlobStorageService.mjs} +5 -5
  192. package/lib/nullBlobStorageService.mjs.map +1 -0
  193. package/lib/{packageVersion.d.ts → packageVersion.d.mts} +1 -1
  194. package/lib/{packageVersion.d.ts.map → packageVersion.d.mts.map} +1 -1
  195. package/lib/{packageVersion.js → packageVersion.mjs} +2 -2
  196. package/lib/packageVersion.mjs.map +1 -0
  197. package/lib/{policies.d.ts → policies.d.mts} +22 -9
  198. package/lib/policies.d.mts.map +1 -0
  199. package/lib/{policies.js → policies.mjs} +1 -1
  200. package/lib/policies.mjs.map +1 -0
  201. package/lib/r11sSnapshotParser.d.mts +14 -0
  202. package/lib/r11sSnapshotParser.d.mts.map +1 -0
  203. package/lib/r11sSnapshotParser.mjs +69 -0
  204. package/lib/r11sSnapshotParser.mjs.map +1 -0
  205. package/lib/restWrapper.d.mts +53 -0
  206. package/lib/restWrapper.d.mts.map +1 -0
  207. package/lib/restWrapper.mjs +236 -0
  208. package/lib/restWrapper.mjs.map +1 -0
  209. package/lib/restWrapperBase.d.mts +26 -0
  210. package/lib/restWrapperBase.d.mts.map +1 -0
  211. package/lib/restWrapperBase.mjs +84 -0
  212. package/lib/restWrapperBase.mjs.map +1 -0
  213. package/lib/retriableGitManager.d.mts +24 -0
  214. package/lib/retriableGitManager.d.mts.map +1 -0
  215. package/lib/retriableGitManager.mjs +36 -0
  216. package/lib/retriableGitManager.mjs.map +1 -0
  217. package/lib/routerlicious-driver-alpha.d.mts +92 -0
  218. package/lib/routerlicious-driver-beta.d.mts +98 -0
  219. package/lib/routerlicious-driver-public.d.mts +98 -0
  220. package/lib/routerlicious-driver-untrimmed.d.mts +261 -0
  221. package/lib/{shreddedSummaryDocumentStorageService.d.ts → shreddedSummaryDocumentStorageService.d.mts} +9 -8
  222. package/lib/shreddedSummaryDocumentStorageService.d.mts.map +1 -0
  223. package/lib/{shreddedSummaryDocumentStorageService.js → shreddedSummaryDocumentStorageService.mjs} +41 -34
  224. package/lib/shreddedSummaryDocumentStorageService.mjs.map +1 -0
  225. package/lib/storageContracts.d.mts +45 -0
  226. package/lib/storageContracts.d.mts.map +1 -0
  227. package/lib/storageContracts.mjs +6 -0
  228. package/lib/storageContracts.mjs.map +1 -0
  229. package/lib/summaryTreeUploadManager.d.mts +23 -0
  230. package/lib/summaryTreeUploadManager.d.mts.map +1 -0
  231. package/lib/summaryTreeUploadManager.mjs +106 -0
  232. package/lib/summaryTreeUploadManager.mjs.map +1 -0
  233. package/lib/{tokens.d.ts → tokens.d.mts} +34 -5
  234. package/lib/tokens.d.mts.map +1 -0
  235. package/lib/{tokens.js → tokens.mjs} +1 -1
  236. package/lib/tokens.mjs.map +1 -0
  237. package/lib/treeUtils.d.mts +58 -0
  238. package/lib/treeUtils.d.mts.map +1 -0
  239. package/lib/treeUtils.mjs +100 -0
  240. package/lib/treeUtils.mjs.map +1 -0
  241. package/lib/{urlUtils.d.ts → urlUtils.d.mts} +2 -2
  242. package/lib/urlUtils.d.mts.map +1 -0
  243. package/lib/urlUtils.mjs +38 -0
  244. package/lib/urlUtils.mjs.map +1 -0
  245. package/lib/{wholeSummaryDocumentStorageService.d.ts → wholeSummaryDocumentStorageService.d.mts} +12 -10
  246. package/lib/wholeSummaryDocumentStorageService.d.mts.map +1 -0
  247. package/lib/wholeSummaryDocumentStorageService.mjs +249 -0
  248. package/lib/wholeSummaryDocumentStorageService.mjs.map +1 -0
  249. package/lib/wholeSummaryUploadManager.d.mts +16 -0
  250. package/lib/wholeSummaryUploadManager.d.mts.map +1 -0
  251. package/lib/wholeSummaryUploadManager.mjs +33 -0
  252. package/lib/wholeSummaryUploadManager.mjs.map +1 -0
  253. package/package.json +104 -68
  254. package/prettier.config.cjs +8 -0
  255. package/src/cache.ts +25 -9
  256. package/src/contracts.ts +60 -0
  257. package/src/createNewUtils.ts +26 -24
  258. package/src/defaultTokenProvider.ts +14 -15
  259. package/src/definitions.ts +2 -2
  260. package/src/deltaStorageService.ts +145 -91
  261. package/src/documentDeltaConnection.ts +54 -52
  262. package/src/documentService.ts +272 -242
  263. package/src/documentServiceFactory.ts +338 -237
  264. package/src/documentStorageService.ts +92 -84
  265. package/src/errorUtils.ts +117 -79
  266. package/src/gitManager.ts +67 -0
  267. package/src/historian.ts +121 -0
  268. package/src/index.ts +15 -8
  269. package/src/mapWithExpiration.ts +124 -0
  270. package/src/nullBlobStorageService.ts +24 -21
  271. package/src/packageVersion.ts +1 -1
  272. package/src/policies.ts +51 -38
  273. package/src/r11sSnapshotParser.ts +82 -0
  274. package/src/restWrapper.ts +400 -216
  275. package/src/restWrapperBase.ts +146 -0
  276. package/src/retriableGitManager.ts +76 -153
  277. package/src/shreddedSummaryDocumentStorageService.ts +214 -195
  278. package/src/storageContracts.ts +63 -0
  279. package/src/summaryTreeUploadManager.ts +155 -0
  280. package/src/tokens.ts +74 -39
  281. package/src/treeUtils.ts +138 -0
  282. package/src/urlUtils.ts +27 -28
  283. package/src/wholeSummaryDocumentStorageService.ts +352 -252
  284. package/src/wholeSummaryUploadManager.ts +64 -0
  285. package/tsc-multi.test.json +4 -0
  286. package/tsconfig.json +10 -13
  287. package/dist/cache.js +0 -20
  288. package/dist/cache.js.map +0 -1
  289. package/dist/createNewUtils.js.map +0 -1
  290. package/dist/defaultTokenProvider.js.map +0 -1
  291. package/dist/deltaStorageService.js +0 -82
  292. package/dist/deltaStorageService.js.map +0 -1
  293. package/dist/documentDeltaConnection.js.map +0 -1
  294. package/dist/documentService.js.map +0 -1
  295. package/dist/documentServiceFactory.js.map +0 -1
  296. package/dist/documentStorageService.js.map +0 -1
  297. package/dist/errorUtils.js +0 -56
  298. package/dist/errorUtils.js.map +0 -1
  299. package/dist/index.js +0 -25
  300. package/dist/index.js.map +0 -1
  301. package/dist/nullBlobStorageService.js.map +0 -1
  302. package/dist/packageVersion.js.map +0 -1
  303. package/dist/policies.js.map +0 -1
  304. package/dist/restWrapper.js +0 -153
  305. package/dist/restWrapper.js.map +0 -1
  306. package/dist/retriableGitManager.js +0 -76
  307. package/dist/retriableGitManager.js.map +0 -1
  308. package/dist/shreddedSummaryDocumentStorageService.js.map +0 -1
  309. package/dist/tokens.js.map +0 -1
  310. package/dist/urlUtils.js.map +0 -1
  311. package/dist/wholeSummaryDocumentStorageService.js +0 -191
  312. package/dist/wholeSummaryDocumentStorageService.js.map +0 -1
  313. package/lib/cache.d.ts.map +0 -1
  314. package/lib/cache.js +0 -16
  315. package/lib/cache.js.map +0 -1
  316. package/lib/createNewUtils.js.map +0 -1
  317. package/lib/defaultTokenProvider.d.ts.map +0 -1
  318. package/lib/defaultTokenProvider.js.map +0 -1
  319. package/lib/definitions.d.ts.map +0 -1
  320. package/lib/definitions.js.map +0 -1
  321. package/lib/deltaStorageService.d.ts.map +0 -1
  322. package/lib/deltaStorageService.js +0 -77
  323. package/lib/deltaStorageService.js.map +0 -1
  324. package/lib/documentDeltaConnection.d.ts.map +0 -1
  325. package/lib/documentDeltaConnection.js.map +0 -1
  326. package/lib/documentService.d.ts.map +0 -1
  327. package/lib/documentService.js.map +0 -1
  328. package/lib/documentServiceFactory.d.ts.map +0 -1
  329. package/lib/documentServiceFactory.js.map +0 -1
  330. package/lib/documentStorageService.d.ts.map +0 -1
  331. package/lib/documentStorageService.js.map +0 -1
  332. package/lib/errorUtils.d.ts +0 -47
  333. package/lib/errorUtils.d.ts.map +0 -1
  334. package/lib/errorUtils.js +0 -50
  335. package/lib/errorUtils.js.map +0 -1
  336. package/lib/index.d.ts +0 -13
  337. package/lib/index.d.ts.map +0 -1
  338. package/lib/index.js +0 -13
  339. package/lib/index.js.map +0 -1
  340. package/lib/nullBlobStorageService.d.ts.map +0 -1
  341. package/lib/nullBlobStorageService.js.map +0 -1
  342. package/lib/packageVersion.js.map +0 -1
  343. package/lib/policies.d.ts.map +0 -1
  344. package/lib/policies.js.map +0 -1
  345. package/lib/restWrapper.d.ts +0 -33
  346. package/lib/restWrapper.d.ts.map +0 -1
  347. package/lib/restWrapper.js +0 -144
  348. package/lib/restWrapper.js.map +0 -1
  349. package/lib/retriableGitManager.d.ts +0 -34
  350. package/lib/retriableGitManager.d.ts.map +0 -1
  351. package/lib/retriableGitManager.js +0 -72
  352. package/lib/retriableGitManager.js.map +0 -1
  353. package/lib/shreddedSummaryDocumentStorageService.d.ts.map +0 -1
  354. package/lib/shreddedSummaryDocumentStorageService.js.map +0 -1
  355. package/lib/tokens.d.ts.map +0 -1
  356. package/lib/tokens.js.map +0 -1
  357. package/lib/urlUtils.d.ts.map +0 -1
  358. package/lib/urlUtils.js +0 -42
  359. package/lib/urlUtils.js.map +0 -1
  360. package/lib/wholeSummaryDocumentStorageService.d.ts.map +0 -1
  361. package/lib/wholeSummaryDocumentStorageService.js +0 -187
  362. package/lib/wholeSummaryDocumentStorageService.js.map +0 -1
  363. package/tsconfig.esnext.json +0 -7
  364. /package/lib/{definitions.d.ts → definitions.d.mts} +0 -0
  365. /package/lib/{nullBlobStorageService.d.ts → nullBlobStorageService.d.mts} +0 -0
@@ -3,270 +3,368 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import { assert } from "@fluidframework/common-utils";
6
+ import { assert } from "@fluidframework/core-utils";
7
+ import { getW3CData } from "@fluidframework/driver-base";
7
8
  import {
8
- IDocumentService,
9
- IDocumentServiceFactory,
10
- IFluidResolvedUrl,
11
- IResolvedUrl,
9
+ FiveDaysMs,
10
+ IDocumentService,
11
+ IDocumentServiceFactory,
12
+ IDocumentStorageServicePolicies,
13
+ IResolvedUrl,
14
+ LoaderCachingPolicy,
12
15
  } from "@fluidframework/driver-definitions";
13
- import { ITelemetryBaseLogger } from "@fluidframework/common-definitions";
16
+ import { ITelemetryBaseLogger } from "@fluidframework/core-interfaces";
14
17
  import { ISummaryTree } from "@fluidframework/protocol-definitions";
15
18
  import {
16
- ensureFluidResolvedUrl,
17
- getDocAttributesFromProtocolSummary,
18
- getQuorumValuesFromProtocolSummary,
19
- RateLimiter,
19
+ getDocAttributesFromProtocolSummary,
20
+ getQuorumValuesFromProtocolSummary,
21
+ isCombinedAppAndProtocolSummary,
22
+ RateLimiter,
20
23
  } from "@fluidframework/driver-utils";
21
- import { ChildLogger, PerformanceEvent } from "@fluidframework/telemetry-utils";
22
- import { ISession } from "@fluidframework/server-services-client";
24
+ import { createChildLogger, PerformanceEvent } from "@fluidframework/telemetry-utils";
25
+ import {
26
+ ISession,
27
+ convertSummaryTreeToWholeSummaryTree,
28
+ } from "@fluidframework/server-services-client";
23
29
  import { DocumentService } from "./documentService";
24
30
  import { IRouterliciousDriverPolicies } from "./policies";
25
31
  import { ITokenProvider } from "./tokens";
26
- import { RouterliciousOrdererRestWrapper } from "./restWrapper";
27
- import { convertSummaryToCreateNewSummary } from "./createNewUtils";
32
+ import {
33
+ RouterliciousOrdererRestWrapper,
34
+ RouterliciousStorageRestWrapper,
35
+ toInstrumentedR11sOrdererTokenFetcher,
36
+ toInstrumentedR11sStorageTokenFetcher,
37
+ } from "./restWrapper";
28
38
  import { parseFluidUrl, replaceDocumentIdInPath, getDiscoveredFluidResolvedUrl } from "./urlUtils";
29
- import { InMemoryCache } from "./cache";
39
+ import { ICache, InMemoryCache, NullCache } from "./cache";
30
40
  import { pkgVersion as driverVersion } from "./packageVersion";
31
41
  import { ISnapshotTreeVersion } from "./definitions";
42
+ import { INormalizedWholeSnapshot } from "./contracts";
43
+
44
+ const maximumSnapshotCacheDurationMs: FiveDaysMs = 432_000_000; // 5 days in ms
32
45
 
33
46
  const defaultRouterliciousDriverPolicies: IRouterliciousDriverPolicies = {
34
- enablePrefetch: true,
35
- maxConcurrentStorageRequests: 100,
36
- maxConcurrentOrdererRequests: 100,
37
- aggregateBlobsSmallerThanBytes: undefined,
38
- enableDiscovery: false,
39
- enableWholeSummaryUpload: false,
40
- enableRestLess: true,
47
+ enablePrefetch: true,
48
+ maxConcurrentStorageRequests: 100,
49
+ maxConcurrentOrdererRequests: 100,
50
+ enableDiscovery: false,
51
+ enableWholeSummaryUpload: false,
52
+ enableRestLess: true,
53
+ enableInternalSummaryCaching: true,
54
+ enableLongPollingDowngrade: true,
55
+ isEphemeralContainer: false,
41
56
  };
42
57
 
43
58
  /**
44
59
  * Factory for creating the routerlicious document service. Use this if you want to
45
60
  * use the routerlicious implementation.
61
+ * @internal
46
62
  */
47
63
  export class RouterliciousDocumentServiceFactory implements IDocumentServiceFactory {
48
- public readonly protocolName = "fluid:";
49
- private readonly driverPolicies: IRouterliciousDriverPolicies;
50
- private readonly blobCache = new InMemoryCache<ArrayBufferLike>();
51
- private readonly snapshotTreeCache = new InMemoryCache<ISnapshotTreeVersion>();
64
+ private readonly driverPolicies: IRouterliciousDriverPolicies;
65
+ private readonly blobCache: ICache<ArrayBufferLike>;
66
+ private readonly wholeSnapshotTreeCache: ICache<INormalizedWholeSnapshot> = new NullCache();
67
+ private readonly shreddedSummaryTreeCache: ICache<ISnapshotTreeVersion> = new NullCache();
68
+
69
+ constructor(
70
+ private readonly tokenProvider: ITokenProvider,
71
+ driverPolicies: Partial<IRouterliciousDriverPolicies> = {},
72
+ ) {
73
+ // Use the maximum allowed by the policy (IDocumentStorageServicePolicies.maximumCacheDurationMs set below)
74
+ const snapshotCacheExpiryMs: FiveDaysMs = maximumSnapshotCacheDurationMs;
75
+
76
+ this.driverPolicies = {
77
+ ...defaultRouterliciousDriverPolicies,
78
+ ...driverPolicies,
79
+ };
80
+ this.blobCache = new InMemoryCache<ArrayBufferLike>();
81
+ if (this.driverPolicies.enableInternalSummaryCaching) {
82
+ if (this.driverPolicies.enableWholeSummaryUpload) {
83
+ this.wholeSnapshotTreeCache = new InMemoryCache<INormalizedWholeSnapshot>(
84
+ snapshotCacheExpiryMs,
85
+ );
86
+ } else {
87
+ this.shreddedSummaryTreeCache = new InMemoryCache<ISnapshotTreeVersion>(
88
+ snapshotCacheExpiryMs,
89
+ );
90
+ }
91
+ }
92
+ }
93
+
94
+ /**
95
+ * {@inheritDoc @fluidframework/driver-definitions#IDocumentServiceFactory.createContainer}
96
+ *
97
+ * @throws {@link DocumentPostCreateError}
98
+ * If an exception is thrown while invoking the provided {@link ITokenProvider.documentPostCreateCallback}.
99
+ */
100
+ public async createContainer(
101
+ createNewSummary: ISummaryTree | undefined,
102
+ resolvedUrl: IResolvedUrl,
103
+ logger?: ITelemetryBaseLogger,
104
+ clientIsSummarizer?: boolean,
105
+ ): Promise<IDocumentService> {
106
+ if (createNewSummary === undefined) {
107
+ throw new Error("Empty file summary creation isn't supported in this driver.");
108
+ }
109
+ assert(!!resolvedUrl.endpoints.ordererUrl, 0x0b2 /* "Missing orderer URL!" */);
110
+ let parsedUrl = parseFluidUrl(resolvedUrl.url);
111
+ if (!parsedUrl.pathname) {
112
+ throw new Error("Parsed url should contain tenant and doc Id!!");
113
+ }
114
+ const [, tenantId] = parsedUrl.pathname.split("/");
115
+
116
+ if (!isCombinedAppAndProtocolSummary(createNewSummary)) {
117
+ throw new Error("Protocol and App Summary required in the full summary");
118
+ }
119
+ const protocolSummary = createNewSummary.tree[".protocol"];
120
+ const appSummary = createNewSummary.tree[".app"];
121
+
122
+ const documentAttributes = getDocAttributesFromProtocolSummary(protocolSummary);
123
+ const quorumValues = getQuorumValuesFromProtocolSummary(protocolSummary);
52
124
 
53
- constructor(
54
- private readonly tokenProvider: ITokenProvider,
55
- driverPolicies: Partial<IRouterliciousDriverPolicies> = {},
56
- ) {
57
- this.driverPolicies = {
58
- ...defaultRouterliciousDriverPolicies,
59
- ...driverPolicies,
60
- };
61
- }
125
+ const logger2 = createChildLogger({ logger, namespace: "RouterliciousDriver" });
126
+ const ordererTokenFetcher = toInstrumentedR11sOrdererTokenFetcher(
127
+ tenantId,
128
+ undefined /* documentId */,
129
+ this.tokenProvider,
130
+ logger2,
131
+ );
132
+ const rateLimiter = new RateLimiter(this.driverPolicies.maxConcurrentOrdererRequests);
133
+ const ordererRestWrapper = await RouterliciousOrdererRestWrapper.load(
134
+ ordererTokenFetcher,
135
+ logger2,
136
+ rateLimiter,
137
+ this.driverPolicies.enableRestLess,
138
+ resolvedUrl.endpoints.ordererUrl,
139
+ );
62
140
 
63
- /**
64
- * {@inheritDoc @fluidframework/driver-definitions#IDocumentServiceFactory.createContainer}
65
- *
66
- * @throws {@link DocumentPostCreateError}
67
- * If an exception is thrown while invoking the provided {@link ITokenProvider.documentPostCreateCallback}.
68
- */
69
- public async createContainer(
70
- createNewSummary: ISummaryTree | undefined,
71
- resolvedUrl: IResolvedUrl,
72
- logger?: ITelemetryBaseLogger,
73
- clientIsSummarizer?: boolean,
74
- ): Promise<IDocumentService> {
75
- ensureFluidResolvedUrl(resolvedUrl);
76
- if (createNewSummary === undefined) {
77
- throw new Error("Empty file summary creation isn't supported in this driver.");
78
- }
79
- assert(!!resolvedUrl.endpoints.ordererUrl, 0x0b2 /* "Missing orderer URL!" */);
80
- let parsedUrl = parseFluidUrl(resolvedUrl.url);
81
- if (!parsedUrl.pathname) {
82
- throw new Error("Parsed url should contain tenant and doc Id!!");
83
- }
84
- const [, tenantId] = parsedUrl.pathname.split("/");
141
+ const res = await PerformanceEvent.timedExecAsync(
142
+ logger2,
143
+ {
144
+ eventName: "CreateNew",
145
+ details: JSON.stringify({
146
+ enableDiscovery: this.driverPolicies.enableDiscovery,
147
+ sequenceNumber: documentAttributes.sequenceNumber,
148
+ isEphemeralContainer: this.driverPolicies.isEphemeralContainer,
149
+ }),
150
+ },
151
+ async (event) => {
152
+ // @TODO: Remove returned "string" type when removing back-compat code
153
+ const postRes = (
154
+ await ordererRestWrapper.post<
155
+ { id: string; token?: string; session?: ISession } | string
156
+ >(`/documents/${tenantId}`, {
157
+ summary: convertSummaryTreeToWholeSummaryTree(undefined, appSummary),
158
+ sequenceNumber: documentAttributes.sequenceNumber,
159
+ values: quorumValues,
160
+ enableDiscovery: this.driverPolicies.enableDiscovery,
161
+ generateToken: this.tokenProvider.documentPostCreateCallback !== undefined,
162
+ isEphemeralContainer: this.driverPolicies.isEphemeralContainer,
163
+ enableAnyBinaryBlobOnFirstSummary: true,
164
+ })
165
+ ).content;
85
166
 
86
- const protocolSummary = createNewSummary.tree[".protocol"] as ISummaryTree;
87
- const appSummary = createNewSummary.tree[".app"] as ISummaryTree;
88
- if (!(protocolSummary && appSummary)) {
89
- throw new Error("Protocol and App Summary required in the full summary");
90
- }
91
- const documentAttributes = getDocAttributesFromProtocolSummary(protocolSummary);
92
- const quorumValues = getQuorumValuesFromProtocolSummary(protocolSummary);
167
+ event.end({
168
+ docId: typeof postRes === "string" ? postRes : postRes.id,
169
+ });
170
+ return postRes;
171
+ },
172
+ );
93
173
 
94
- const logger2 = ChildLogger.create(logger, "RouterliciousDriver");
95
- const rateLimiter = new RateLimiter(this.driverPolicies.maxConcurrentOrdererRequests);
96
- const ordererRestWrapper = await RouterliciousOrdererRestWrapper.load(
97
- tenantId,
98
- undefined,
99
- this.tokenProvider,
100
- logger2,
101
- rateLimiter,
102
- this.driverPolicies.enableRestLess,
103
- resolvedUrl.endpoints.ordererUrl,
104
- );
174
+ // For supporting backward compatibility, when the request has generateToken === true, it will return
175
+ // an object instead of string
176
+ // @TODO: Remove the logic when no need to support back-compat
105
177
 
106
- const res = await PerformanceEvent.timedExecAsync(
107
- logger2,
108
- {
109
- eventName: "CreateNew",
110
- details: JSON.stringify({
111
- enableDiscovery: this.driverPolicies.enableDiscovery,
112
- sequenceNumber: documentAttributes.sequenceNumber,
113
- }),
114
- },
115
- async (event) => {
116
- // @TODO: Remove returned "string" type when removing back-compat code
117
- const postRes = await ordererRestWrapper.post<
118
- { id: string; token?: string; session?: ISession; } | string
119
- >(`/documents/${tenantId}`, {
120
- summary: convertSummaryToCreateNewSummary(appSummary),
121
- sequenceNumber: documentAttributes.sequenceNumber,
122
- values: quorumValues,
123
- enableDiscovery: this.driverPolicies.enableDiscovery,
124
- generateToken:
125
- this.tokenProvider.documentPostCreateCallback !==
126
- undefined,
127
- });
178
+ let documentId: string;
179
+ let token: string | undefined;
180
+ let session: ISession | undefined;
181
+ if (typeof res === "string") {
182
+ documentId = res;
183
+ } else {
184
+ documentId = res.id;
185
+ token = res.token;
186
+ session = this.driverPolicies.enableDiscovery ? res.session : undefined;
187
+ }
188
+ parsedUrl = parseFluidUrl(resolvedUrl.url);
128
189
 
129
- event.end({
130
- docId: typeof postRes === "string" ? postRes : postRes.id,
131
- });
132
- return postRes;
133
- },
134
- );
190
+ // @TODO: Remove token from the condition, checking the documentPostCreateCallback !== undefined
191
+ // is sufficient to determine if the token will be undefined or not.
192
+ try {
193
+ await PerformanceEvent.timedExecAsync(
194
+ logger2,
195
+ {
196
+ eventName: "DocPostCreateCallback",
197
+ docId: documentId,
198
+ },
199
+ async () => {
200
+ if (token && this.tokenProvider.documentPostCreateCallback !== undefined) {
201
+ return this.tokenProvider.documentPostCreateCallback(documentId, token);
202
+ }
203
+ },
204
+ );
205
+ } catch (error: any) {
206
+ throw new DocumentPostCreateError(error);
207
+ }
135
208
 
136
- // For supporting backward compatibility, when the request has generateToken === true, it will return
137
- // an object instead of string
138
- // @TODO: Remove the logic when no need to support back-compat
209
+ parsedUrl.set("pathname", replaceDocumentIdInPath(parsedUrl.pathname, documentId));
210
+ const deltaStorageUrl = resolvedUrl.endpoints.deltaStorageUrl;
211
+ if (!deltaStorageUrl) {
212
+ throw new Error(
213
+ `All endpoints urls must be provided. [deltaStorageUrl:${deltaStorageUrl}]`,
214
+ );
215
+ }
216
+ const parsedDeltaStorageUrl = new URL(deltaStorageUrl);
217
+ parsedDeltaStorageUrl.pathname = replaceDocumentIdInPath(
218
+ parsedDeltaStorageUrl.pathname,
219
+ documentId,
220
+ );
139
221
 
140
- let documentId: string;
141
- let token: string | undefined;
142
- let session: ISession | undefined;
143
- if (typeof res === "string") {
144
- documentId = res;
145
- } else {
146
- documentId = res.id;
147
- token = res.token;
148
- session = this.driverPolicies.enableDiscovery ? res.session : undefined;
149
- }
150
- parsedUrl = parseFluidUrl(resolvedUrl.url);
222
+ return this.createDocumentService(
223
+ {
224
+ ...resolvedUrl,
225
+ url: parsedUrl.toString(),
226
+ id: documentId,
227
+ endpoints: {
228
+ ...resolvedUrl.endpoints,
229
+ deltaStorageUrl: parsedDeltaStorageUrl.toString(),
230
+ },
231
+ },
232
+ logger,
233
+ clientIsSummarizer,
234
+ session,
235
+ );
236
+ }
151
237
 
152
- // @TODO: Remove token from the condition, checking the documentPostCreateCallback !== undefined
153
- // is sufficient to determine if the token will be undefined or not.
154
- try {
155
- await PerformanceEvent.timedExecAsync(
156
- logger2,
157
- {
158
- eventName: "DocPostCreateCallback",
159
- docId: documentId,
160
- },
161
- async () => {
162
- if (token && this.tokenProvider.documentPostCreateCallback !== undefined) {
163
- return this.tokenProvider.documentPostCreateCallback(documentId, token);
164
- }
165
- });
166
- } catch (error: any) {
167
- throw new DocumentPostCreateError(error);
168
- }
238
+ /**
239
+ * {@inheritDoc @fluidframework/driver-definitions#IDocumentServiceFactory.createDocumentService}
240
+ *
241
+ * @returns Routerlicious document service.
242
+ */
243
+ public async createDocumentService(
244
+ resolvedUrl: IResolvedUrl,
245
+ logger?: ITelemetryBaseLogger,
246
+ clientIsSummarizer?: boolean,
247
+ session?: ISession,
248
+ ): Promise<IDocumentService> {
249
+ const parsedUrl = parseFluidUrl(resolvedUrl.url);
250
+ const [, tenantId, documentId] = parsedUrl.pathname.split("/");
251
+ if (!documentId || !tenantId) {
252
+ throw new Error(
253
+ `Couldn't parse documentId and/or tenantId. [documentId:${documentId}][tenantId:${tenantId}]`,
254
+ );
255
+ }
256
+ const logger2 = createChildLogger({
257
+ logger,
258
+ namespace: "RouterliciousDriver",
259
+ properties: {
260
+ all: { driverVersion },
261
+ },
262
+ });
169
263
 
170
- parsedUrl.set("pathname", replaceDocumentIdInPath(parsedUrl.pathname, documentId));
171
- const deltaStorageUrl = resolvedUrl.endpoints.deltaStorageUrl;
172
- if (!deltaStorageUrl) {
173
- throw new Error(
174
- `All endpoints urls must be provided. [deltaStorageUrl:${deltaStorageUrl}]`);
175
- }
176
- const parsedDeltaStorageUrl = new URL(deltaStorageUrl);
177
- parsedDeltaStorageUrl.pathname = replaceDocumentIdInPath(parsedDeltaStorageUrl.pathname, documentId);
264
+ const ordererTokenFetcher = toInstrumentedR11sOrdererTokenFetcher(
265
+ tenantId,
266
+ documentId,
267
+ this.tokenProvider,
268
+ logger2,
269
+ );
270
+ const storageTokenFetcher = toInstrumentedR11sStorageTokenFetcher(
271
+ tenantId,
272
+ documentId,
273
+ this.tokenProvider,
274
+ logger2,
275
+ );
276
+ const ordererTokenP = ordererTokenFetcher();
277
+ const storageTokenP = storageTokenFetcher();
178
278
 
179
- return this.createDocumentService(
180
- {
181
- ...resolvedUrl,
182
- url: parsedUrl.toString(),
183
- id: documentId,
184
- endpoints: {
185
- ...resolvedUrl.endpoints,
186
- deltaStorageUrl: parsedDeltaStorageUrl.toString(),
187
- },
188
- },
189
- logger,
190
- clientIsSummarizer,
191
- session,
192
- );
193
- }
279
+ const rateLimiter = new RateLimiter(this.driverPolicies.maxConcurrentOrdererRequests);
280
+ const ordererRestWrapper = await RouterliciousOrdererRestWrapper.load(
281
+ ordererTokenFetcher,
282
+ logger2,
283
+ rateLimiter,
284
+ this.driverPolicies.enableRestLess,
285
+ undefined /* baseUrl */,
286
+ ordererTokenP,
287
+ );
194
288
 
195
- /**
196
- * {@inheritDoc @fluidframework/driver-definitions#IDocumentServiceFactory.createDocumentService}
197
- *
198
- * @returns Routerlicious document service.
199
- */
200
- public async createDocumentService(
201
- resolvedUrl: IResolvedUrl,
202
- logger?: ITelemetryBaseLogger,
203
- clientIsSummarizer?: boolean,
204
- session?: ISession,
205
- ): Promise<IDocumentService> {
206
- ensureFluidResolvedUrl(resolvedUrl);
289
+ const discoverFluidResolvedUrl = async (): Promise<IResolvedUrl> => {
290
+ if (!this.driverPolicies.enableDiscovery) {
291
+ return resolvedUrl;
292
+ }
207
293
 
208
- const parsedUrl = parseFluidUrl(resolvedUrl.url);
209
- const [, tenantId, documentId] = parsedUrl.pathname.split("/");
210
- if (!documentId || !tenantId) {
211
- throw new Error(
212
- `Couldn't parse documentId and/or tenantId. [documentId:${documentId}][tenantId:${tenantId}]`);
213
- }
214
- const logger2 = ChildLogger.create(logger, "RouterliciousDriver", { all: { driverVersion } });
294
+ const discoveredSession = await PerformanceEvent.timedExecAsync(
295
+ logger2,
296
+ {
297
+ eventName: "DiscoverSession",
298
+ docId: documentId,
299
+ },
300
+ async (event) => {
301
+ // The service responds with the current document session associated with the container.
302
+ const response = await ordererRestWrapper.get<ISession>(
303
+ `${resolvedUrl.endpoints.ordererUrl}/documents/${tenantId}/session/${documentId}`,
304
+ );
305
+ event.end({
306
+ ...response.propsToLog,
307
+ ...getW3CData(response.requestUrl, "xmlhttprequest"),
308
+ });
309
+ return response.content;
310
+ },
311
+ );
312
+ return getDiscoveredFluidResolvedUrl(resolvedUrl, discoveredSession);
313
+ };
314
+ const fluidResolvedUrl: IResolvedUrl =
315
+ session !== undefined
316
+ ? getDiscoveredFluidResolvedUrl(resolvedUrl, session)
317
+ : await discoverFluidResolvedUrl();
215
318
 
216
- const discoverFluidResolvedUrl = async (): Promise<IFluidResolvedUrl> => {
217
- if (!this.driverPolicies.enableDiscovery) {
218
- return resolvedUrl;
219
- }
220
- const rateLimiter = new RateLimiter(this.driverPolicies.maxConcurrentOrdererRequests);
221
- const ordererRestWrapper = await RouterliciousOrdererRestWrapper.load(
222
- tenantId,
223
- documentId,
224
- this.tokenProvider,
225
- logger2,
226
- rateLimiter,
227
- this.driverPolicies.enableRestLess,
228
- resolvedUrl.endpoints.ordererUrl,
229
- );
319
+ const storageUrl = fluidResolvedUrl.endpoints.storageUrl;
320
+ const ordererUrl = fluidResolvedUrl.endpoints.ordererUrl;
321
+ const deltaStorageUrl = fluidResolvedUrl.endpoints.deltaStorageUrl;
322
+ const deltaStreamUrl = fluidResolvedUrl.endpoints.deltaStreamUrl || ordererUrl; // backward compatibility
323
+ if (!ordererUrl || !deltaStorageUrl) {
324
+ throw new Error(
325
+ `All endpoints urls must be provided. [ordererUrl:${ordererUrl}][deltaStorageUrl:${deltaStorageUrl}]`,
326
+ );
327
+ }
230
328
 
231
- const discoveredSession = await PerformanceEvent.timedExecAsync(
232
- logger2,
233
- {
234
- eventName: "DiscoverSession",
235
- docId: documentId,
236
- },
237
- async () => {
238
- // The service responds with the current document session associated with the container.
239
- return ordererRestWrapper.get<ISession>(
240
- `/documents/${tenantId}/session/${documentId}`);
241
- });
242
- return getDiscoveredFluidResolvedUrl(resolvedUrl, discoveredSession);
243
- };
244
- const fluidResolvedUrl: IFluidResolvedUrl = session !== undefined
245
- ? getDiscoveredFluidResolvedUrl(resolvedUrl, session)
246
- : await discoverFluidResolvedUrl();
329
+ const storageRestWrapper = await RouterliciousStorageRestWrapper.load(
330
+ tenantId,
331
+ storageTokenFetcher,
332
+ logger2,
333
+ new RateLimiter(this.driverPolicies.maxConcurrentStorageRequests),
334
+ this.driverPolicies.enableRestLess,
335
+ storageUrl,
336
+ storageTokenP,
337
+ );
247
338
 
248
- const storageUrl = fluidResolvedUrl.endpoints.storageUrl;
249
- const ordererUrl = fluidResolvedUrl.endpoints.ordererUrl;
250
- const deltaStorageUrl = fluidResolvedUrl.endpoints.deltaStorageUrl;
251
- if (!ordererUrl || !deltaStorageUrl) {
252
- throw new Error(
253
- `All endpoints urls must be provided. [ordererUrl:${ordererUrl}][deltaStorageUrl:${deltaStorageUrl}]`);
254
- }
339
+ const documentStorageServicePolicies: IDocumentStorageServicePolicies = {
340
+ caching: this.driverPolicies.enablePrefetch
341
+ ? LoaderCachingPolicy.Prefetch
342
+ : LoaderCachingPolicy.NoCaching,
343
+ maximumCacheDurationMs: maximumSnapshotCacheDurationMs,
344
+ };
255
345
 
256
- return new DocumentService(
257
- fluidResolvedUrl,
258
- ordererUrl,
259
- deltaStorageUrl,
260
- storageUrl,
261
- logger2,
262
- this.tokenProvider,
263
- tenantId,
264
- documentId,
265
- this.driverPolicies,
266
- this.blobCache,
267
- this.snapshotTreeCache,
268
- discoverFluidResolvedUrl);
269
- }
346
+ return new DocumentService(
347
+ fluidResolvedUrl,
348
+ ordererUrl,
349
+ deltaStorageUrl,
350
+ deltaStreamUrl,
351
+ storageUrl,
352
+ logger2,
353
+ this.tokenProvider,
354
+ tenantId,
355
+ documentId,
356
+ ordererRestWrapper,
357
+ documentStorageServicePolicies,
358
+ this.driverPolicies,
359
+ this.blobCache,
360
+ this.wholeSnapshotTreeCache,
361
+ this.shreddedSummaryTreeCache,
362
+ discoverFluidResolvedUrl,
363
+ storageRestWrapper,
364
+ storageTokenFetcher,
365
+ ordererTokenFetcher,
366
+ );
367
+ }
270
368
  }
271
369
 
272
370
  /**
@@ -279,18 +377,21 @@ export class RouterliciousDocumentServiceFactory implements IDocumentServiceFact
279
377
  * @remarks TODO: examples of suggested actions for recovery.
280
378
  * - How would a user delete the created document?
281
379
  * - What would a retry pattern look like here?
380
+ * @internal
282
381
  */
283
382
  export class DocumentPostCreateError extends Error {
284
- public constructor(
285
- /**
286
- * Inner error being wrapped.
287
- */
288
- private readonly innerError: Error,
289
- ) {
290
- super(innerError.message);
291
- }
383
+ public constructor(
384
+ /**
385
+ * Inner error being wrapped.
386
+ */
387
+ private readonly innerError: Error,
388
+ ) {
389
+ super(innerError.message);
390
+ }
292
391
 
293
- public readonly name = "DocumentPostCreateError";
392
+ public readonly name = "DocumentPostCreateError";
294
393
 
295
- public get stack() { return this.innerError.stack; }
394
+ public get stack() {
395
+ return this.innerError.stack;
396
+ }
296
397
  }