@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
package/src/tokens.ts CHANGED
@@ -6,58 +6,93 @@
6
6
  import { ITokenClaims } from "@fluidframework/protocol-definitions";
7
7
 
8
8
  /**
9
- * The ITokenService abstracts the discovery of claims contained within a token
9
+ * Abstracts the discovery of claims contained within a token.
10
+ * @internal
10
11
  */
11
12
  export interface ITokenService {
12
- extractClaims(token: string): ITokenClaims;
13
+ /**
14
+ * Extracts the {@link @fluidframework/protocol-definitions#ITokenClaims | token claims} from the provided
15
+ * {@link https://jwt.io/introduction/ | JSON Web Token (JWT)} string representation.
16
+ */
17
+ extractClaims(token: string): ITokenClaims;
13
18
  }
14
19
 
20
+ /**
21
+ * @public
22
+ */
15
23
  export interface ITokenResponse {
16
- // JWT value
17
- jwt: string;
24
+ /**
25
+ * {@link https://jwt.io/introduction/ | JSON Web Token (JWT)} value.
26
+ */
27
+ jwt: string;
18
28
 
19
- // Flag indicating whether token was obtained from local cache
20
- fromCache?: boolean;
29
+ /**
30
+ * A flag indicating whether token was obtained from local cache.
31
+ *
32
+ * @remarks `undefined` indicates that the source of the token could not be determined.
33
+ */
34
+ fromCache?: boolean;
21
35
  }
22
36
 
23
37
  /**
24
38
  * Abstracts the token fetching mechanism for a hosting application.
25
39
  * The hosting application is responsible for providing an implementation.
40
+ * @public
26
41
  */
27
42
  export interface ITokenProvider {
28
- /**
29
- * Fetches the orderer token from host.
30
- * @param tenantId - Tenant ID.
31
- * @param documentId - Optional. Document ID is only required for document-scoped requests.
32
- * @param refresh - Optional flag indicating whether token fetch must bypass local cache.
33
- * @returns TokenResponse object representing token value along with flag indicating
34
- * whether token came from cache.
35
- */
36
- fetchOrdererToken(tenantId: string, documentId?: string, refresh?: boolean): Promise<ITokenResponse>;
43
+ /**
44
+ * Fetches the orderer token from host.
45
+ *
46
+ * @param tenantId - Tenant ID.
47
+ * @param documentId - Optional. Document ID is only required for document-scoped requests.
48
+ * @param refresh - Optional flag indicating whether token fetch must bypass local cache.
49
+ * This likely indicates that some previous request failed authorization due to an expired token,
50
+ * and so a fresh token is required.
51
+ *
52
+ * Default: `false`.
53
+ *
54
+ * NOTE: This parameter will be made required in the future.
55
+ */
56
+ fetchOrdererToken(
57
+ tenantId: string,
58
+ documentId?: string,
59
+ refresh?: boolean,
60
+ ): Promise<ITokenResponse>;
37
61
 
38
- /**
39
- * Fetches the storage token from host.
40
- * @param tenantId - Tenant ID.
41
- * @param documentId - Document ID.
42
- * @param refresh - Optional flag indicating whether token fetch must bypass local cache.
43
- * @returns TokenResponse object representing token value along with flag indicating
44
- * whether token came from cache.
45
- */
46
- fetchStorageToken(tenantId: string, documentId: string, refresh?: boolean): Promise<ITokenResponse>;
62
+ /**
63
+ * Fetches the storage token from host.
64
+ *
65
+ * @param tenantId - Tenant ID.
66
+ * @param documentId - Document ID.
67
+ * @param refresh - Optional flag indicating whether token fetch must bypass local cache.
68
+ * This likely indicates that some previous request failed authorization due to an expired token,
69
+ * and so a fresh token is required.
70
+ *
71
+ * Default: `false`.
72
+ *
73
+ * NOTE: This parameter will be made required in the future.
74
+ */
75
+ fetchStorageToken(
76
+ tenantId: string,
77
+ documentId: string,
78
+ refresh?: boolean,
79
+ ): Promise<ITokenResponse>;
47
80
 
48
- /**
49
- * A callback triggered directly after creating the document. In this callback the client has the opportunity, to
50
- * verify against an authorization service, if the user who claims to create the document is the same user who
51
- * created it.
52
- *
53
- * @remarks Notes:
54
- * * Using the callback may have performance impact on the document creation process.
55
- * * Any exceptions thrown in the callback would fail the creation workflow
56
- * (see {@link RouterliciousDocumentServiceFactory.createContainer} for more details).
57
- *
58
- * @param documentId - Document ID.
59
- * @param creationToken - A special token that doesn't provide any kind of access, but it has the user's payload
60
- * and document id. It can be used to validate the identity of the document creator.
61
- */
62
- documentPostCreateCallback?(documentId: string, creationToken: string): Promise<void>;
81
+ /**
82
+ * A callback triggered directly after creating the document. In this callback the client has the opportunity, to
83
+ * verify against an authorization service, if the user who claims to create the document is the same user who
84
+ * created it.
85
+ *
86
+ * @remarks Notes:
87
+ *
88
+ * * Using the callback may have performance impact on the document creation process.
89
+ *
90
+ * * Any exceptions thrown in the callback would fail the creation workflow
91
+ * (see {@link RouterliciousDocumentServiceFactory.createContainer} for more details).
92
+ *
93
+ * @param documentId - Document ID.
94
+ * @param creationToken - A special token that doesn't provide any kind of access, but it has the user's payload
95
+ * and document id. It can be used to validate the identity of the document creator.
96
+ */
97
+ documentPostCreateCallback?(documentId: string, creationToken: string): Promise<void>;
63
98
  }
@@ -0,0 +1,138 @@
1
+ /*!
2
+ * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+
6
+ import { IsoBuffer } from "@fluid-internal/client-utils";
7
+ import { assert } from "@fluidframework/core-utils";
8
+ import {
9
+ SummaryType,
10
+ ISnapshotTree,
11
+ ISummaryTree,
12
+ SummaryObject,
13
+ } from "@fluidframework/protocol-definitions";
14
+ import { INormalizedWholeSnapshot } from "./contracts";
15
+
16
+ /**
17
+ * Summary tree assembler props
18
+ */
19
+ export interface ISummaryTreeAssemblerProps {
20
+ /**
21
+ * Indicates that this tree is unreferenced. If this is not present, the tree is considered referenced.
22
+ */
23
+ unreferenced?: true;
24
+ }
25
+
26
+ /**
27
+ * Summary tree assembler (without stats collection).
28
+ */
29
+ export class SummaryTreeAssembler {
30
+ private attachmentCounter: number = 0;
31
+ private readonly summaryTree: { [path: string]: SummaryObject } = {};
32
+
33
+ constructor(private readonly props?: ISummaryTreeAssemblerProps) {}
34
+
35
+ /**
36
+ * Get final summary
37
+ */
38
+ public get summary(): ISummaryTree {
39
+ return {
40
+ type: SummaryType.Tree,
41
+ tree: { ...this.summaryTree },
42
+ unreferenced: this.props?.unreferenced,
43
+ };
44
+ }
45
+
46
+ /**
47
+ * Add blob to summary
48
+ */
49
+ public addBlob(key: string, content: string | Uint8Array): void {
50
+ this.summaryTree[key] = {
51
+ type: SummaryType.Blob,
52
+ content,
53
+ };
54
+ }
55
+
56
+ /**
57
+ * Add handle to summary
58
+ */
59
+ public addHandle(
60
+ key: string,
61
+ handleType: SummaryType.Tree | SummaryType.Blob | SummaryType.Attachment,
62
+ handle: string,
63
+ ): void {
64
+ this.summaryTree[key] = {
65
+ type: SummaryType.Handle,
66
+ handleType,
67
+ handle,
68
+ };
69
+ }
70
+
71
+ /**
72
+ * Add tree to summary
73
+ */
74
+ public addTree(key: string, summary: ISummaryTree): void {
75
+ this.summaryTree[key] = summary;
76
+ }
77
+
78
+ /**
79
+ * Add attachment to summary
80
+ */
81
+ public addAttachment(id: string) {
82
+ this.summaryTree[this.attachmentCounter++] = { id, type: SummaryType.Attachment };
83
+ }
84
+ }
85
+
86
+ /**
87
+ * Helper function that converts ISnapshotTree and blobs to ISummaryTree
88
+ * @param snapshot - Source snapshot tree
89
+ * @param blobs - Blobs cache
90
+ * @returns Converted snapshot in ISummaryTree format
91
+ */
92
+ export function convertSnapshotAndBlobsToSummaryTree(
93
+ snapshot: ISnapshotTree,
94
+ blobs: Map<string, ArrayBuffer>,
95
+ ): ISummaryTree {
96
+ const assembler = new SummaryTreeAssembler({
97
+ unreferenced: snapshot.unreferenced,
98
+ });
99
+ for (const [path, id] of Object.entries(snapshot.blobs)) {
100
+ const blob = blobs.get(id);
101
+ assert(blob !== undefined, 0x2dd /* "Cannot find blob for a given id" */);
102
+ assembler.addBlob(path, IsoBuffer.from(blob).toString("utf-8"));
103
+ }
104
+ for (const [key, tree] of Object.entries(snapshot.trees)) {
105
+ const subtree = convertSnapshotAndBlobsToSummaryTree(tree, blobs);
106
+ assembler.addTree(key, subtree);
107
+ }
108
+ return assembler.summary;
109
+ }
110
+
111
+ export function evalBlobsAndTrees(snapshot: INormalizedWholeSnapshot) {
112
+ const trees = countTreesInSnapshotTree(snapshot.snapshotTree);
113
+ const numBlobs = snapshot.blobs.size;
114
+ let encodedBlobsSize = 0;
115
+ for (const [_, blobContent] of snapshot.blobs) {
116
+ encodedBlobsSize += blobContent.byteLength;
117
+ }
118
+ return { trees, numBlobs, encodedBlobsSize };
119
+ }
120
+
121
+ export function validateBlobsAndTrees(snapshot: ISnapshotTree) {
122
+ assert(
123
+ snapshot.trees !== undefined,
124
+ 0x5d0 /* Returned r11s snapshot is malformed. No trees! */,
125
+ );
126
+ assert(
127
+ snapshot.blobs !== undefined,
128
+ 0x5d1 /* Returned r11s snapshot is malformed. No blobs! */,
129
+ );
130
+ }
131
+
132
+ function countTreesInSnapshotTree(snapshotTree: ISnapshotTree): number {
133
+ let numTrees = 0;
134
+ for (const [_, tree] of Object.entries(snapshotTree.trees)) {
135
+ numTrees += 1 + countTreesInSnapshotTree(tree);
136
+ }
137
+ return numTrees;
138
+ }
package/src/urlUtils.ts CHANGED
@@ -3,12 +3,12 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import { IFluidResolvedUrl } from "@fluidframework/driver-definitions";
6
+ import { IResolvedUrl } from "@fluidframework/driver-definitions";
7
7
  import URLParse from "url-parse";
8
8
  import { ISession } from "@fluidframework/server-services-client";
9
9
 
10
10
  export const parseFluidUrl = (fluidUrl: string): URLParse => {
11
- return new URLParse(fluidUrl, true);
11
+ return new URLParse(fluidUrl, true);
12
12
  };
13
13
 
14
14
  /**
@@ -18,33 +18,32 @@ export const parseFluidUrl = (fluidUrl: string): URLParse => {
18
18
  * TODO: Ideally we would be able to regenerate the resolvedUrl, rather than patching the current one.
19
19
  */
20
20
  export const replaceDocumentIdInPath = (urlPath: string, documentId: string): string =>
21
- urlPath.split("/").slice(0, -1).concat([documentId]).join("/");
21
+ urlPath.split("/").slice(0, -1).concat([documentId]).join("/");
22
22
 
23
- export const getDiscoveredFluidResolvedUrl = (resolvedUrl: IFluidResolvedUrl, session: ISession): IFluidResolvedUrl => {
24
- if (session) {
25
- const discoveredOrdererUrl = new URLParse(session.ordererUrl);
26
- const deltaStorageUrl = new URLParse(resolvedUrl.endpoints.deltaStorageUrl);
27
- deltaStorageUrl.set("host", discoveredOrdererUrl.host);
23
+ export const getDiscoveredFluidResolvedUrl = (
24
+ resolvedUrl: IResolvedUrl,
25
+ session: ISession,
26
+ ): IResolvedUrl => {
27
+ const discoveredOrdererUrl = new URLParse(session.ordererUrl);
28
+ const deltaStorageUrl = new URLParse(resolvedUrl.endpoints.deltaStorageUrl);
29
+ deltaStorageUrl.set("host", discoveredOrdererUrl.host);
28
30
 
29
- const discoveredStorageUrl = new URLParse(session.historianUrl);
30
- const storageUrl = new URLParse(resolvedUrl.endpoints.storageUrl);
31
- storageUrl.set("host", discoveredStorageUrl.host);
31
+ const discoveredStorageUrl = new URLParse(session.historianUrl);
32
+ const storageUrl = new URLParse(resolvedUrl.endpoints.storageUrl);
33
+ storageUrl.set("host", discoveredStorageUrl.host);
32
34
 
33
- const parsedUrl = parseFluidUrl(resolvedUrl.url);
34
- const discoveredResolvedUrl: IFluidResolvedUrl = {
35
- endpoints: {
36
- deltaStorageUrl: deltaStorageUrl.toString(),
37
- ordererUrl: session.ordererUrl,
38
- storageUrl: storageUrl.toString(),
39
- },
40
- id: resolvedUrl.id,
41
- tokens: resolvedUrl.tokens,
42
- type: resolvedUrl.type,
43
- url: new URLParse(`fluid://${discoveredOrdererUrl.host}${parsedUrl.pathname}`).toString(),
44
- };
45
-
46
- return discoveredResolvedUrl;
47
- } else {
48
- return resolvedUrl;
49
- }
35
+ const parsedUrl = parseFluidUrl(resolvedUrl.url);
36
+ const discoveredResolvedUrl: IResolvedUrl = {
37
+ endpoints: {
38
+ deltaStorageUrl: deltaStorageUrl.toString(),
39
+ ordererUrl: session.ordererUrl,
40
+ deltaStreamUrl: session.deltaStreamUrl,
41
+ storageUrl: storageUrl.toString(),
42
+ },
43
+ id: resolvedUrl.id,
44
+ tokens: resolvedUrl.tokens,
45
+ type: resolvedUrl.type,
46
+ url: new URLParse(`fluid://${discoveredOrdererUrl.host}${parsedUrl.pathname}`).toString(),
47
+ };
48
+ return discoveredResolvedUrl;
50
49
  };