@fluidframework/routerlicious-driver 2.0.0-dev-rc.2.0.0.245554 → 2.0.0-dev-rc.3.0.0.250606

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 (317) hide show
  1. package/{api-extractor-esm.json → api-extractor-cjs.json} +5 -1
  2. package/api-extractor-lint.json +1 -1
  3. package/api-extractor.json +1 -1
  4. package/{lib/storageContracts.mjs → dist/axios.cjs} +3 -2
  5. package/dist/axios.cjs.map +1 -0
  6. package/dist/axios.d.cts +7 -0
  7. package/dist/axios.d.cts.map +1 -0
  8. package/dist/cache.js +2 -2
  9. package/dist/cache.js.map +1 -1
  10. package/dist/defaultTokenProvider.d.ts +1 -1
  11. package/dist/defaultTokenProvider.d.ts.map +1 -1
  12. package/dist/defaultTokenProvider.js.map +1 -1
  13. package/dist/deltaStorageService.d.ts +3 -3
  14. package/dist/deltaStorageService.d.ts.map +1 -1
  15. package/dist/deltaStorageService.js.map +1 -1
  16. package/dist/documentDeltaConnection.d.ts +1 -1
  17. package/dist/documentDeltaConnection.d.ts.map +1 -1
  18. package/dist/documentDeltaConnection.js +4 -4
  19. package/dist/documentDeltaConnection.js.map +1 -1
  20. package/dist/documentService.d.ts +6 -6
  21. package/dist/documentService.d.ts.map +1 -1
  22. package/dist/documentService.js +22 -22
  23. package/dist/documentService.js.map +1 -1
  24. package/dist/documentServiceFactory.d.ts +3 -3
  25. package/dist/documentServiceFactory.d.ts.map +1 -1
  26. package/dist/documentServiceFactory.js +25 -25
  27. package/dist/documentServiceFactory.js.map +1 -1
  28. package/dist/documentStorageService.d.ts +7 -7
  29. package/dist/documentStorageService.d.ts.map +1 -1
  30. package/dist/documentStorageService.js +4 -4
  31. package/dist/documentStorageService.js.map +1 -1
  32. package/dist/errorUtils.d.ts +1 -1
  33. package/dist/errorUtils.d.ts.map +1 -1
  34. package/dist/errorUtils.js +2 -3
  35. package/dist/errorUtils.js.map +1 -1
  36. package/dist/gitManager.d.ts +3 -3
  37. package/dist/gitManager.d.ts.map +1 -1
  38. package/dist/gitManager.js.map +1 -1
  39. package/dist/historian.d.ts +4 -4
  40. package/dist/historian.d.ts.map +1 -1
  41. package/dist/historian.js.map +1 -1
  42. package/dist/index.d.ts +6 -6
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js +7 -7
  45. package/dist/index.js.map +1 -1
  46. package/dist/package.json +3 -0
  47. package/dist/packageVersion.d.ts +1 -1
  48. package/dist/packageVersion.js +1 -1
  49. package/dist/packageVersion.js.map +1 -1
  50. package/dist/r11sSnapshotParser.d.ts +1 -1
  51. package/dist/r11sSnapshotParser.d.ts.map +1 -1
  52. package/dist/r11sSnapshotParser.js.map +1 -1
  53. package/dist/restWrapper.d.ts +4 -4
  54. package/dist/restWrapper.d.ts.map +1 -1
  55. package/dist/restWrapper.js +11 -11
  56. package/dist/restWrapper.js.map +1 -1
  57. package/dist/restWrapperBase.d.ts +2 -2
  58. package/dist/restWrapperBase.d.ts.map +1 -1
  59. package/dist/restWrapperBase.js.map +1 -1
  60. package/dist/retriableGitManager.d.ts +3 -3
  61. package/dist/retriableGitManager.d.ts.map +1 -1
  62. package/dist/retriableGitManager.js.map +1 -1
  63. package/dist/shreddedSummaryDocumentStorageService.d.ts +6 -6
  64. package/dist/shreddedSummaryDocumentStorageService.d.ts.map +1 -1
  65. package/dist/shreddedSummaryDocumentStorageService.js +7 -7
  66. package/dist/shreddedSummaryDocumentStorageService.js.map +1 -1
  67. package/dist/storageContracts.d.ts +2 -2
  68. package/dist/storageContracts.d.ts.map +1 -1
  69. package/dist/storageContracts.js.map +1 -1
  70. package/dist/summaryTreeUploadManager.d.ts +1 -1
  71. package/dist/summaryTreeUploadManager.d.ts.map +1 -1
  72. package/dist/summaryTreeUploadManager.js.map +1 -1
  73. package/dist/treeUtils.d.ts +2 -2
  74. package/dist/treeUtils.d.ts.map +1 -1
  75. package/dist/treeUtils.js.map +1 -1
  76. package/dist/wholeSummaryDocumentStorageService.d.ts +6 -6
  77. package/dist/wholeSummaryDocumentStorageService.d.ts.map +1 -1
  78. package/dist/wholeSummaryDocumentStorageService.js +12 -12
  79. package/dist/wholeSummaryDocumentStorageService.js.map +1 -1
  80. package/dist/wholeSummaryUploadManager.d.ts +1 -1
  81. package/dist/wholeSummaryUploadManager.d.ts.map +1 -1
  82. package/dist/wholeSummaryUploadManager.js.map +1 -1
  83. package/lib/axios.cjs +7 -0
  84. package/lib/axios.cjs.map +1 -0
  85. package/lib/axios.d.cts +7 -0
  86. package/lib/axios.d.cts.map +1 -0
  87. package/lib/{cache.d.mts → cache.d.ts} +1 -1
  88. package/lib/cache.d.ts.map +1 -0
  89. package/lib/{cache.mjs → cache.js} +2 -2
  90. package/lib/cache.js.map +1 -0
  91. package/lib/{contracts.d.mts → contracts.d.ts} +1 -1
  92. package/lib/contracts.d.ts.map +1 -0
  93. package/lib/{policies.mjs → contracts.js} +1 -1
  94. package/lib/contracts.js.map +1 -0
  95. package/lib/{createNewUtils.d.mts → createNewUtils.d.ts} +1 -1
  96. package/lib/createNewUtils.d.ts.map +1 -0
  97. package/lib/{createNewUtils.mjs → createNewUtils.js} +1 -1
  98. package/lib/createNewUtils.js.map +1 -0
  99. package/lib/{defaultTokenProvider.d.mts → defaultTokenProvider.d.ts} +2 -2
  100. package/lib/defaultTokenProvider.d.ts.map +1 -0
  101. package/lib/{defaultTokenProvider.mjs → defaultTokenProvider.js} +1 -1
  102. package/lib/defaultTokenProvider.js.map +1 -0
  103. package/lib/{definitions.d.mts → definitions.d.ts} +1 -1
  104. package/lib/definitions.d.ts.map +1 -0
  105. package/lib/{definitions.mjs → definitions.js} +1 -1
  106. package/lib/definitions.js.map +1 -0
  107. package/lib/{deltaStorageService.d.mts → deltaStorageService.d.ts} +4 -4
  108. package/lib/deltaStorageService.d.ts.map +1 -0
  109. package/lib/{deltaStorageService.mjs → deltaStorageService.js} +2 -2
  110. package/lib/deltaStorageService.js.map +1 -0
  111. package/lib/{documentDeltaConnection.d.mts → documentDeltaConnection.d.ts} +2 -2
  112. package/lib/documentDeltaConnection.d.ts.map +1 -0
  113. package/lib/{documentDeltaConnection.mjs → documentDeltaConnection.js} +3 -3
  114. package/lib/documentDeltaConnection.js.map +1 -0
  115. package/lib/{documentService.d.mts → documentService.d.ts} +7 -7
  116. package/lib/documentService.d.ts.map +1 -0
  117. package/lib/{documentService.mjs → documentService.js} +12 -12
  118. package/lib/documentService.js.map +1 -0
  119. package/lib/{documentServiceFactory.d.mts → documentServiceFactory.d.ts} +4 -4
  120. package/lib/documentServiceFactory.d.ts.map +1 -0
  121. package/lib/{documentServiceFactory.mjs → documentServiceFactory.js} +9 -9
  122. package/lib/documentServiceFactory.js.map +1 -0
  123. package/lib/{documentStorageService.d.mts → documentStorageService.d.ts} +8 -8
  124. package/lib/documentStorageService.d.ts.map +1 -0
  125. package/lib/{documentStorageService.mjs → documentStorageService.js} +3 -3
  126. package/lib/documentStorageService.js.map +1 -0
  127. package/lib/{errorUtils.d.mts → errorUtils.d.ts} +2 -2
  128. package/lib/errorUtils.d.ts.map +1 -0
  129. package/lib/{errorUtils.mjs → errorUtils.js} +3 -4
  130. package/lib/errorUtils.js.map +1 -0
  131. package/lib/{gitManager.d.mts → gitManager.d.ts} +4 -4
  132. package/lib/gitManager.d.ts.map +1 -0
  133. package/lib/{gitManager.mjs → gitManager.js} +1 -1
  134. package/lib/gitManager.js.map +1 -0
  135. package/lib/{historian.d.mts → historian.d.ts} +5 -5
  136. package/lib/historian.d.ts.map +1 -0
  137. package/lib/{historian.mjs → historian.js} +1 -1
  138. package/lib/historian.js.map +1 -0
  139. package/lib/{index.d.mts → index.d.ts} +7 -7
  140. package/lib/index.d.ts.map +1 -0
  141. package/lib/index.js +11 -0
  142. package/lib/index.js.map +1 -0
  143. package/lib/{mapWithExpiration.d.mts → mapWithExpiration.d.ts} +1 -1
  144. package/lib/mapWithExpiration.d.ts.map +1 -0
  145. package/lib/{mapWithExpiration.mjs → mapWithExpiration.js} +1 -1
  146. package/lib/mapWithExpiration.js.map +1 -0
  147. package/lib/{nullBlobStorageService.d.mts → nullBlobStorageService.d.ts} +1 -1
  148. package/lib/nullBlobStorageService.d.ts.map +1 -0
  149. package/lib/{nullBlobStorageService.mjs → nullBlobStorageService.js} +1 -1
  150. package/lib/nullBlobStorageService.js.map +1 -0
  151. package/lib/{packageVersion.d.mts → packageVersion.d.ts} +2 -2
  152. package/lib/packageVersion.d.ts.map +1 -0
  153. package/lib/{packageVersion.mjs → packageVersion.js} +2 -2
  154. package/lib/packageVersion.js.map +1 -0
  155. package/lib/{policies.d.mts → policies.d.ts} +1 -1
  156. package/lib/policies.d.ts.map +1 -0
  157. package/lib/{contracts.mjs → policies.js} +1 -1
  158. package/lib/policies.js.map +1 -0
  159. package/lib/{r11sSnapshotParser.d.mts → r11sSnapshotParser.d.ts} +2 -2
  160. package/lib/r11sSnapshotParser.d.ts.map +1 -0
  161. package/lib/{r11sSnapshotParser.mjs → r11sSnapshotParser.js} +1 -1
  162. package/lib/r11sSnapshotParser.js.map +1 -0
  163. package/lib/{restWrapper.d.mts → restWrapper.d.ts} +5 -5
  164. package/lib/restWrapper.d.ts.map +1 -0
  165. package/lib/{restWrapper.mjs → restWrapper.js} +7 -7
  166. package/lib/restWrapper.js.map +1 -0
  167. package/lib/{restWrapperBase.d.mts → restWrapperBase.d.ts} +3 -3
  168. package/lib/restWrapperBase.d.ts.map +1 -0
  169. package/lib/{restWrapperBase.mjs → restWrapperBase.js} +1 -1
  170. package/lib/restWrapperBase.js.map +1 -0
  171. package/lib/{retriableGitManager.d.mts → retriableGitManager.d.ts} +4 -4
  172. package/lib/retriableGitManager.d.ts.map +1 -0
  173. package/lib/{retriableGitManager.mjs → retriableGitManager.js} +1 -1
  174. package/lib/retriableGitManager.js.map +1 -0
  175. package/lib/{routerliciousResolvedUrl.d.mts → routerliciousResolvedUrl.d.ts} +1 -1
  176. package/lib/routerliciousResolvedUrl.d.ts.map +1 -0
  177. package/lib/{routerliciousResolvedUrl.mjs → routerliciousResolvedUrl.js} +1 -1
  178. package/lib/routerliciousResolvedUrl.js.map +1 -0
  179. package/lib/{shreddedSummaryDocumentStorageService.d.mts → shreddedSummaryDocumentStorageService.d.ts} +7 -7
  180. package/lib/shreddedSummaryDocumentStorageService.d.ts.map +1 -0
  181. package/lib/{shreddedSummaryDocumentStorageService.mjs → shreddedSummaryDocumentStorageService.js} +6 -6
  182. package/lib/shreddedSummaryDocumentStorageService.js.map +1 -0
  183. package/lib/{storageContracts.d.mts → storageContracts.d.ts} +3 -3
  184. package/lib/storageContracts.d.ts.map +1 -0
  185. package/lib/storageContracts.js +6 -0
  186. package/lib/storageContracts.js.map +1 -0
  187. package/lib/{summaryTreeUploadManager.d.mts → summaryTreeUploadManager.d.ts} +2 -2
  188. package/lib/summaryTreeUploadManager.d.ts.map +1 -0
  189. package/lib/{summaryTreeUploadManager.mjs → summaryTreeUploadManager.js} +2 -2
  190. package/lib/summaryTreeUploadManager.js.map +1 -0
  191. package/lib/test/cache.spec.js +43 -0
  192. package/lib/test/cache.spec.js.map +1 -0
  193. package/lib/test/errorUtils.spec.js +227 -0
  194. package/lib/test/errorUtils.spec.js.map +1 -0
  195. package/lib/test/mapWithExpiration.spec.js +205 -0
  196. package/lib/test/mapWithExpiration.spec.js.map +1 -0
  197. package/lib/test/restWrapper.spec.js +309 -0
  198. package/lib/test/restWrapper.spec.js.map +1 -0
  199. package/lib/test/types/validateRouterliciousDriverPrevious.generated.js +22 -0
  200. package/lib/test/types/validateRouterliciousDriverPrevious.generated.js.map +1 -0
  201. package/lib/test/urlUtils.spec.js +62 -0
  202. package/lib/test/urlUtils.spec.js.map +1 -0
  203. package/lib/test/wholeSummaryDocumentStorageService.spec.js +144 -0
  204. package/lib/test/wholeSummaryDocumentStorageService.spec.js.map +1 -0
  205. package/lib/{tokens.d.mts → tokens.d.ts} +1 -1
  206. package/lib/tokens.d.ts.map +1 -0
  207. package/lib/{tokens.mjs → tokens.js} +1 -1
  208. package/lib/tokens.js.map +1 -0
  209. package/lib/{treeUtils.d.mts → treeUtils.d.ts} +3 -3
  210. package/lib/treeUtils.d.ts.map +1 -0
  211. package/lib/{treeUtils.mjs → treeUtils.js} +1 -1
  212. package/lib/treeUtils.js.map +1 -0
  213. package/lib/{urlUtils.d.mts → urlUtils.d.ts} +1 -1
  214. package/lib/urlUtils.d.ts.map +1 -0
  215. package/lib/{urlUtils.mjs → urlUtils.js} +1 -1
  216. package/lib/urlUtils.js.map +1 -0
  217. package/lib/{wholeSummaryDocumentStorageService.d.mts → wholeSummaryDocumentStorageService.d.ts} +7 -7
  218. package/lib/wholeSummaryDocumentStorageService.d.ts.map +1 -0
  219. package/lib/{wholeSummaryDocumentStorageService.mjs → wholeSummaryDocumentStorageService.js} +7 -7
  220. package/lib/wholeSummaryDocumentStorageService.js.map +1 -0
  221. package/lib/{wholeSummaryUploadManager.d.mts → wholeSummaryUploadManager.d.ts} +2 -2
  222. package/lib/wholeSummaryUploadManager.d.ts.map +1 -0
  223. package/lib/{wholeSummaryUploadManager.mjs → wholeSummaryUploadManager.js} +1 -1
  224. package/lib/wholeSummaryUploadManager.js.map +1 -0
  225. package/package.json +46 -40
  226. package/src/axios.cts +8 -0
  227. package/src/cache.ts +1 -1
  228. package/src/defaultTokenProvider.ts +1 -1
  229. package/src/deltaStorageService.ts +5 -5
  230. package/src/documentDeltaConnection.ts +3 -3
  231. package/src/documentService.ts +17 -17
  232. package/src/documentServiceFactory.ts +14 -14
  233. package/src/documentStorageService.ts +9 -9
  234. package/src/errorUtils.ts +5 -6
  235. package/src/gitManager.ts +3 -3
  236. package/src/historian.ts +4 -4
  237. package/src/index.ts +6 -6
  238. package/src/packageVersion.ts +1 -1
  239. package/src/r11sSnapshotParser.ts +6 -2
  240. package/src/restWrapper.ts +12 -12
  241. package/src/restWrapperBase.ts +2 -2
  242. package/src/retriableGitManager.ts +4 -4
  243. package/src/shreddedSummaryDocumentStorageService.ts +15 -15
  244. package/src/storageContracts.ts +2 -2
  245. package/src/summaryTreeUploadManager.ts +2 -2
  246. package/src/treeUtils.ts +2 -2
  247. package/src/wholeSummaryDocumentStorageService.ts +17 -17
  248. package/src/wholeSummaryUploadManager.ts +1 -1
  249. package/tsconfig.cjs.json +7 -0
  250. package/tsconfig.json +2 -5
  251. package/lib/cache.d.mts.map +0 -1
  252. package/lib/cache.mjs.map +0 -1
  253. package/lib/contracts.d.mts.map +0 -1
  254. package/lib/contracts.mjs.map +0 -1
  255. package/lib/createNewUtils.d.mts.map +0 -1
  256. package/lib/createNewUtils.mjs.map +0 -1
  257. package/lib/defaultTokenProvider.d.mts.map +0 -1
  258. package/lib/defaultTokenProvider.mjs.map +0 -1
  259. package/lib/definitions.d.mts.map +0 -1
  260. package/lib/definitions.mjs.map +0 -1
  261. package/lib/deltaStorageService.d.mts.map +0 -1
  262. package/lib/deltaStorageService.mjs.map +0 -1
  263. package/lib/documentDeltaConnection.d.mts.map +0 -1
  264. package/lib/documentDeltaConnection.mjs.map +0 -1
  265. package/lib/documentService.d.mts.map +0 -1
  266. package/lib/documentService.mjs.map +0 -1
  267. package/lib/documentServiceFactory.d.mts.map +0 -1
  268. package/lib/documentServiceFactory.mjs.map +0 -1
  269. package/lib/documentStorageService.d.mts.map +0 -1
  270. package/lib/documentStorageService.mjs.map +0 -1
  271. package/lib/errorUtils.d.mts.map +0 -1
  272. package/lib/errorUtils.mjs.map +0 -1
  273. package/lib/gitManager.d.mts.map +0 -1
  274. package/lib/gitManager.mjs.map +0 -1
  275. package/lib/historian.d.mts.map +0 -1
  276. package/lib/historian.mjs.map +0 -1
  277. package/lib/index.d.mts.map +0 -1
  278. package/lib/index.mjs +0 -8
  279. package/lib/index.mjs.map +0 -1
  280. package/lib/mapWithExpiration.d.mts.map +0 -1
  281. package/lib/mapWithExpiration.mjs.map +0 -1
  282. package/lib/nullBlobStorageService.d.mts.map +0 -1
  283. package/lib/nullBlobStorageService.mjs.map +0 -1
  284. package/lib/packageVersion.d.mts.map +0 -1
  285. package/lib/packageVersion.mjs.map +0 -1
  286. package/lib/policies.d.mts.map +0 -1
  287. package/lib/policies.mjs.map +0 -1
  288. package/lib/r11sSnapshotParser.d.mts.map +0 -1
  289. package/lib/r11sSnapshotParser.mjs.map +0 -1
  290. package/lib/restWrapper.d.mts.map +0 -1
  291. package/lib/restWrapper.mjs.map +0 -1
  292. package/lib/restWrapperBase.d.mts.map +0 -1
  293. package/lib/restWrapperBase.mjs.map +0 -1
  294. package/lib/retriableGitManager.d.mts.map +0 -1
  295. package/lib/retriableGitManager.mjs.map +0 -1
  296. package/lib/routerliciousResolvedUrl.d.mts.map +0 -1
  297. package/lib/routerliciousResolvedUrl.mjs.map +0 -1
  298. package/lib/shreddedSummaryDocumentStorageService.d.mts.map +0 -1
  299. package/lib/shreddedSummaryDocumentStorageService.mjs.map +0 -1
  300. package/lib/storageContracts.d.mts.map +0 -1
  301. package/lib/storageContracts.mjs.map +0 -1
  302. package/lib/summaryTreeUploadManager.d.mts.map +0 -1
  303. package/lib/summaryTreeUploadManager.mjs.map +0 -1
  304. package/lib/tokens.d.mts.map +0 -1
  305. package/lib/tokens.mjs.map +0 -1
  306. package/lib/treeUtils.d.mts.map +0 -1
  307. package/lib/treeUtils.mjs.map +0 -1
  308. package/lib/urlUtils.d.mts.map +0 -1
  309. package/lib/urlUtils.mjs.map +0 -1
  310. package/lib/wholeSummaryDocumentStorageService.d.mts.map +0 -1
  311. package/lib/wholeSummaryDocumentStorageService.mjs.map +0 -1
  312. package/lib/wholeSummaryUploadManager.d.mts.map +0 -1
  313. package/lib/wholeSummaryUploadManager.mjs.map +0 -1
  314. /package/lib/{routerlicious-driver-alpha.d.mts → routerlicious-driver-alpha.d.ts} +0 -0
  315. /package/lib/{routerlicious-driver-beta.d.mts → routerlicious-driver-beta.d.ts} +0 -0
  316. /package/lib/{routerlicious-driver-public.d.mts → routerlicious-driver-public.d.ts} +0 -0
  317. /package/lib/{routerlicious-driver-untrimmed.d.mts → routerlicious-driver-untrimmed.d.ts} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapWithExpiration.js","sourceRoot":"","sources":["../src/mapWithExpiration.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { assert } from \"@fluidframework/core-utils\";\n\n/**\n * An extension of Map that expires (deletes) entries after a period of inactivity.\n * The policy is based on the last time a key was written to.\n */\nexport class MapWithExpiration<TKey = any, TValue = any> extends Map<TKey, TValue> {\n\t/** Timestamps (as epoch ms numbers) of when each key was last refreshed */\n\tprivate readonly lastRefreshedTimes = new Map<TKey, number>();\n\n\tconstructor(private readonly expiryMs: number) {\n\t\tsuper();\n\t}\n\n\tprivate refresh(key: TKey): void {\n\t\tthis.lastRefreshedTimes.set(key, new Date().valueOf());\n\t}\n\n\t/**\n\t * Returns true if the key is present and expired, false if it's not expired, and undefined if it's not found\n\t * If cleanUp is passed as true, then delete any expired entry before returning.\n\t */\n\tprivate checkExpiry(key: TKey, cleanUp: boolean = false): boolean | undefined {\n\t\tconst refreshTime = this.lastRefreshedTimes.get(key);\n\t\tassert(\n\t\t\t(refreshTime !== undefined) === super.has(key),\n\t\t\t0x50c /* freshness map out of sync */,\n\t\t);\n\n\t\tif (refreshTime === undefined) {\n\t\t\treturn undefined;\n\t\t}\n\t\tconst expired = new Date().valueOf() - refreshTime >= this.expiryMs;\n\t\tif (expired && cleanUp) {\n\t\t\tthis.delete(key);\n\t\t}\n\t\treturn expired;\n\t}\n\n\tprivate clearExpiredEntries() {\n\t\t// forEach clears out any expired entries\n\t\tthis.forEach(() => {});\n\t}\n\n\tget size(): number {\n\t\tthis.clearExpiredEntries();\n\t\treturn super.size;\n\t}\n\n\thas(key: TKey): boolean {\n\t\tthis.checkExpiry(key, true /* cleanUp */);\n\t\treturn super.has(key);\n\t}\n\n\tget(key: TKey): TValue | undefined {\n\t\tthis.checkExpiry(key, true /* cleanUp */);\n\t\treturn super.get(key);\n\t}\n\n\tset(key: TKey, value: TValue): this {\n\t\t// Sliding window expiration policy (on write)\n\t\tthis.refresh(key);\n\t\treturn super.set(key, value);\n\t}\n\n\tdelete(key: TKey): boolean {\n\t\tthis.lastRefreshedTimes.delete(key);\n\t\treturn super.delete(key);\n\t}\n\n\tclear(): void {\n\t\tthis.lastRefreshedTimes.clear();\n\t\tsuper.clear();\n\t}\n\n\tforEach(\n\t\tcallbackfn: (value: TValue, key: TKey, map: Map<TKey, TValue>) => void,\n\t\tthisArg?: any,\n\t): void {\n\t\tconst expiredKeys: TKey[] = [];\n\t\tsuper.forEach(\n\t\t\t(v, k, m) => {\n\t\t\t\tif (this.checkExpiry(k) === true) {\n\t\t\t\t\texpiredKeys.push(k);\n\t\t\t\t} else {\n\t\t\t\t\tcallbackfn.bind(thisArg)(v, k, m);\n\t\t\t\t}\n\t\t\t},\n\t\t\t// Note we don't pass thisArg here, since we bind it directly to callbackFn and don't need it otherwise\n\t\t);\n\n\t\t// Clean up keys we know are expired now that we're done iterating\n\t\texpiredKeys.forEach((key: TKey) => {\n\t\t\tthis.delete(key);\n\t\t});\n\t}\n\n\tentries(): IterableIterator<[TKey, TValue]> {\n\t\tthis.clearExpiredEntries();\n\t\treturn super.entries();\n\t}\n\tkeys(): IterableIterator<TKey> {\n\t\tthis.clearExpiredEntries();\n\t\treturn super.keys();\n\t}\n\tvalues(): IterableIterator<TValue> {\n\t\tthis.clearExpiredEntries();\n\t\treturn super.values();\n\t}\n\t[Symbol.iterator](): IterableIterator<[TKey, TValue]> {\n\t\tthis.clearExpiredEntries();\n\t\treturn super[Symbol.iterator]();\n\t}\n\n\tvalueOf() {\n\t\tthis.clearExpiredEntries();\n\t\treturn super.valueOf();\n\t}\n}\n"]}
@@ -16,4 +16,4 @@ export declare class NullBlobStorageService implements IDocumentStorageService {
16
16
  createBlob(file: ArrayBufferLike): Promise<api.ICreateBlobResponse>;
17
17
  readBlob(blobId: string): Promise<ArrayBufferLike>;
18
18
  }
19
- //# sourceMappingURL=nullBlobStorageService.d.mts.map
19
+ //# sourceMappingURL=nullBlobStorageService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nullBlobStorageService.d.ts","sourceRoot":"","sources":["../src/nullBlobStorageService.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,uBAAuB,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAC9F,OAAO,KAAK,GAAG,MAAM,sCAAsC,CAAC;AAE5D;;;GAGG;AACH,qBAAa,sBAAuB,YAAW,uBAAuB;IACxD,eAAe,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,GAAG,IAAI,CAAC;IAI1E,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;IAI7E,wBAAwB,CACpC,OAAO,EAAE,GAAG,CAAC,YAAY,EACzB,OAAO,EAAE,eAAe,GACtB,OAAO,CAAC,MAAM,CAAC;IAIL,eAAe,CAAC,MAAM,EAAE,GAAG,CAAC,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;IAItE,UAAU,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;IAGnE,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;CAG/D"}
@@ -26,4 +26,4 @@ export class NullBlobStorageService {
26
26
  throw new Error("Null blob storage can not read blob");
27
27
  }
28
28
  }
29
- //# sourceMappingURL=nullBlobStorageService.mjs.map
29
+ //# sourceMappingURL=nullBlobStorageService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nullBlobStorageService.js","sourceRoot":"","sources":["../src/nullBlobStorageService.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH;;;GAGG;AACH,MAAM,OAAO,sBAAsB;IAC3B,KAAK,CAAC,eAAe,CAAC,OAAsB;QAClD,OAAO,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACxE,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,SAAwB,EAAE,KAAa;QAC/D,OAAO,EAAE,CAAC;IACX,CAAC;IAEM,KAAK,CAAC,wBAAwB,CACpC,OAAyB,EACzB,OAAwB;QAExB,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACtC,CAAC;IAEM,KAAK,CAAC,eAAe,CAAC,MAA0B;QACtD,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACtC,CAAC;IAEM,KAAK,CAAC,UAAU,CAAC,IAAqB;QAC5C,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC1D,CAAC;IACM,KAAK,CAAC,QAAQ,CAAC,MAAc;QACnC,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACxD,CAAC;CACD","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { IDocumentStorageService, ISummaryContext } from \"@fluidframework/driver-definitions\";\nimport * as api from \"@fluidframework/protocol-definitions\";\n\n/**\n * Document access to underlying storage. It is default implementation of a storage service.\n * Does not read/write anything.\n */\nexport class NullBlobStorageService implements IDocumentStorageService {\n\tpublic async getSnapshotTree(version?: api.IVersion): Promise<api.ISnapshotTree | null> {\n\t\treturn version ? Promise.reject(new Error(\"Invalid operation\")) : null;\n\t}\n\n\tpublic async getVersions(versionId: string | null, count: number): Promise<api.IVersion[]> {\n\t\treturn [];\n\t}\n\n\tpublic async uploadSummaryWithContext(\n\t\tsummary: api.ISummaryTree,\n\t\tcontext: ISummaryContext,\n\t): Promise<string> {\n\t\tthrow new Error(\"Invalid operation\");\n\t}\n\n\tpublic async downloadSummary(handle: api.ISummaryHandle): Promise<api.ISummaryTree> {\n\t\tthrow new Error(\"Invalid operation\");\n\t}\n\n\tpublic async createBlob(file: ArrayBufferLike): Promise<api.ICreateBlobResponse> {\n\t\tthrow new Error(\"Null blob storage can not create blob\");\n\t}\n\tpublic async readBlob(blobId: string): Promise<ArrayBufferLike> {\n\t\tthrow new Error(\"Null blob storage can not read blob\");\n\t}\n}\n"]}
@@ -5,5 +5,5 @@
5
5
  * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY
6
6
  */
7
7
  export declare const pkgName = "@fluidframework/routerlicious-driver";
8
- export declare const pkgVersion = "2.0.0-dev-rc.2.0.0.245554";
9
- //# sourceMappingURL=packageVersion.d.mts.map
8
+ export declare const pkgVersion = "2.0.0-dev-rc.3.0.0.250606";
9
+ //# sourceMappingURL=packageVersion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"packageVersion.d.ts","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,OAAO,yCAAyC,CAAC;AAC9D,eAAO,MAAM,UAAU,8BAA8B,CAAC"}
@@ -5,5 +5,5 @@
5
5
  * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY
6
6
  */
7
7
  export const pkgName = "@fluidframework/routerlicious-driver";
8
- export const pkgVersion = "2.0.0-dev-rc.2.0.0.245554";
9
- //# sourceMappingURL=packageVersion.mjs.map
8
+ export const pkgVersion = "2.0.0-dev-rc.3.0.0.250606";
9
+ //# sourceMappingURL=packageVersion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"packageVersion.js","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,OAAO,GAAG,sCAAsC,CAAC;AAC9D,MAAM,CAAC,MAAM,UAAU,GAAG,2BAA2B,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n *\n * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY\n */\n\nexport const pkgName = \"@fluidframework/routerlicious-driver\";\nexport const pkgVersion = \"2.0.0-dev-rc.3.0.0.250606\";\n"]}
@@ -49,4 +49,4 @@ export interface IRouterliciousDriverPolicies {
49
49
  */
50
50
  enableLongPollingDowngrade: boolean;
51
51
  }
52
- //# sourceMappingURL=policies.d.mts.map
52
+ //# sourceMappingURL=policies.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policies.d.ts","sourceRoot":"","sources":["../src/policies.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC5C;;;OAGG;IACH,cAAc,EAAE,OAAO,CAAC;IACxB;;;OAGG;IACH,4BAA4B,EAAE,MAAM,CAAC;IACrC;;;OAGG;IACH,4BAA4B,EAAE,MAAM,CAAC;IACrC;;;OAGG;IACH,wBAAwB,EAAE,OAAO,CAAC;IAClC;;;OAGG;IACH,eAAe,EAAE,OAAO,CAAC;IACzB;;;OAGG;IACH,cAAc,EAAE,OAAO,CAAC;IACxB;;;;OAIG;IACH,4BAA4B,EAAE,OAAO,CAAC;IACtC;;;;OAIG;IACH,0BAA0B,EAAE,OAAO,CAAC;CACpC"}
@@ -3,4 +3,4 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
  export {};
6
- //# sourceMappingURL=contracts.mjs.map
6
+ //# sourceMappingURL=policies.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policies.js","sourceRoot":"","sources":["../src/policies.ts"],"names":[],"mappings":"AAAA;;;GAGG","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * @internal\n */\nexport interface IRouterliciousDriverPolicies {\n\t/**\n\t * Enable prefetching entire snapshot tree into memory before it is loaded by the runtime.\n\t * Default: true\n\t */\n\tenablePrefetch: boolean;\n\t/**\n\t * Rate limit concurrent storage requests.\n\t * Default: 100\n\t */\n\tmaxConcurrentStorageRequests: number;\n\t/**\n\t * Rate limit concurrent orderer requests.\n\t * Default: 100\n\t */\n\tmaxConcurrentOrdererRequests: number;\n\t/**\n\t * Enable uploading entire summary tree as a IWholeSummaryPayload to storage.\n\t * Default: false\n\t */\n\tenableWholeSummaryUpload: boolean;\n\t/**\n\t * Enable service endpoint discovery when creating or joining a session.\n\t * Default: false\n\t */\n\tenableDiscovery: boolean;\n\t/**\n\t * Enable using RestLess which avoids CORS preflight requests.\n\t * Default: true\n\t */\n\tenableRestLess: boolean;\n\t/**\n\t * Enable internal cache of summaries/snapshots.\n\t * Reduces Summarizer boot time and reduces server load in E2E tests.\n\t * Default: true\n\t */\n\tenableInternalSummaryCaching: boolean;\n\t/**\n\t * Enable downgrading socket connection to long-polling\n\t * when websocket connection cannot be established.\n\t * Default: true\n\t */\n\tenableLongPollingDowngrade: boolean;\n}\n"]}
@@ -2,7 +2,7 @@
2
2
  * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
3
  * Licensed under the MIT License.
4
4
  */
5
- import { INormalizedWholeSnapshot, IWholeFlatSnapshot } from "./contracts.mjs";
5
+ import { INormalizedWholeSnapshot, IWholeFlatSnapshot } from "./contracts.js";
6
6
  /**
7
7
  * Converts existing IWholeFlatSnapshot to snapshot tree, blob array, and sequence number.
8
8
  *
@@ -11,4 +11,4 @@ import { INormalizedWholeSnapshot, IWholeFlatSnapshot } from "./contracts.mjs";
11
11
  * @returns snapshot tree, blob array, and sequence number
12
12
  */
13
13
  export declare function convertWholeFlatSnapshotToSnapshotTreeAndBlobs(flatSnapshot: IWholeFlatSnapshot, treePrefixToRemove?: string): INormalizedWholeSnapshot;
14
- //# sourceMappingURL=r11sSnapshotParser.d.mts.map
14
+ //# sourceMappingURL=r11sSnapshotParser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"r11sSnapshotParser.d.ts","sourceRoot":"","sources":["../src/r11sSnapshotParser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EACN,wBAAwB,EACxB,kBAAkB,EAElB,MAAM,gBAAgB,CAAC;AAgDxB;;;;;;GAMG;AACH,wBAAgB,8CAA8C,CAC7D,YAAY,EAAE,kBAAkB,EAChC,kBAAkB,GAAE,MAAe,GACjC,wBAAwB,CAiB1B"}
@@ -67,4 +67,4 @@ export function convertWholeFlatSnapshotToSnapshotTreeAndBlobs(flatSnapshot, tre
67
67
  id: flatSnapshot.id,
68
68
  };
69
69
  }
70
- //# sourceMappingURL=r11sSnapshotParser.mjs.map
70
+ //# sourceMappingURL=r11sSnapshotParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"r11sSnapshotParser.js","sourceRoot":"","sources":["../src/r11sSnapshotParser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAQ9D;;;;;;GAMG;AACH,SAAS,cAAc,CACtB,QAAgC,EAChC,kBAA0B;IAE1B,MAAM,MAAM,GAAsC,EAAE,CAAC;IACrD,uEAAuE;IACvE,MAAM,IAAI,GAAkB,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IACtE,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;IAElB,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,OAAO,EAAE;QACrC,8FAA8F;QAC9F,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,IAAI,kBAAkB,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;QAChF,MAAM,SAAS,GAAG,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAC7C,MAAM,YAAY,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;QAChE,MAAM,aAAa,GAAG,SAAS,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;QAErD,8FAA8F;QAC9F,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;QAElC,iCAAiC;QACjC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE;YAC1B,MAAM,OAAO,GAAkB;gBAC9B,KAAK,EAAE,EAAE;gBACT,KAAK,EAAE,EAAE;gBACT,YAAY,EAAE,KAAK,CAAC,YAAY;gBAChC,OAAO,EAAE,KAAK,CAAC,OAAO;aACtB,CAAC;YACF,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC,GAAG,OAAO,CAAC;YACxD,MAAM,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC;SAC5B;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE;YACjC,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC;SACzD;aAAM;YACN,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;SACxC;KACD;IAED,OAAO,IAAI,CAAC;AACb,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,8CAA8C,CAC7D,YAAgC,EAChC,qBAA6B,MAAM;IAEnC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC7C,IAAI,YAAY,CAAC,KAAK,EAAE;QACvB,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACnC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC;QAC5E,CAAC,CAAC,CAAC;KACH;IACD,MAAM,gBAAgB,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;IACjD,MAAM,cAAc,GAAG,gBAAgB,EAAE,cAAc,CAAC;IACxD,MAAM,YAAY,GAAG,cAAc,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,CAAC;IAE1E,OAAO;QACN,KAAK;QACL,YAAY;QACZ,cAAc;QACd,EAAE,EAAE,YAAY,CAAC,EAAE;KACnB,CAAC;AACH,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { stringToBuffer } from \"@fluid-internal/client-utils\";\nimport { ISnapshotTree } from \"@fluidframework/protocol-definitions\";\nimport {\n\tINormalizedWholeSnapshot,\n\tIWholeFlatSnapshot,\n\tIWholeFlatSnapshotTree,\n} from \"./contracts.js\";\n\n/**\n * Build a tree hierarchy from a flat tree.\n *\n * @param flatTree - a flat tree\n * @param treePrefixToRemove - tree prefix to strip\n * @returns the heirarchical tree\n */\nfunction buildHierarchy(\n\tflatTree: IWholeFlatSnapshotTree,\n\ttreePrefixToRemove: string,\n): ISnapshotTree {\n\tconst lookup: { [path: string]: ISnapshotTree } = {};\n\t// Root tree id will be used to determine which version was downloaded.\n\tconst root: ISnapshotTree = { id: flatTree.id, blobs: {}, trees: {} };\n\tlookup[\"\"] = root;\n\n\tfor (const entry of flatTree.entries) {\n\t\t// Strip the `treePrefixToRemove` path from tree entries such that they are stored under root.\n\t\tconst entryPath = entry.path.replace(new RegExp(`^${treePrefixToRemove}/`), \"\");\n\t\tconst lastIndex = entryPath.lastIndexOf(\"/\");\n\t\tconst entryPathDir = entryPath.slice(0, Math.max(0, lastIndex));\n\t\tconst entryPathBase = entryPath.slice(lastIndex + 1);\n\n\t\t// The flat output is breadth-first so we can assume we see tree nodes prior to their contents\n\t\tconst node = lookup[entryPathDir];\n\n\t\t// Add in either the blob or tree\n\t\tif (entry.type === \"tree\") {\n\t\t\tconst newTree: ISnapshotTree = {\n\t\t\t\tblobs: {},\n\t\t\t\ttrees: {},\n\t\t\t\tunreferenced: entry.unreferenced,\n\t\t\t\tgroupId: entry.groupId,\n\t\t\t};\n\t\t\tnode.trees[decodeURIComponent(entryPathBase)] = newTree;\n\t\t\tlookup[entryPath] = newTree;\n\t\t} else if (entry.type === \"blob\") {\n\t\t\tnode.blobs[decodeURIComponent(entryPathBase)] = entry.id;\n\t\t} else {\n\t\t\tthrow new Error(`Unknown entry type!!`);\n\t\t}\n\t}\n\n\treturn root;\n}\n\n/**\n * Converts existing IWholeFlatSnapshot to snapshot tree, blob array, and sequence number.\n *\n * @param flatSnapshot - flat snapshot\n * @param treePrefixToRemove - tree prefix to strip. By default we are stripping \".app\" prefix\n * @returns snapshot tree, blob array, and sequence number\n */\nexport function convertWholeFlatSnapshotToSnapshotTreeAndBlobs(\n\tflatSnapshot: IWholeFlatSnapshot,\n\ttreePrefixToRemove: string = \".app\",\n): INormalizedWholeSnapshot {\n\tconst blobs = new Map<string, ArrayBuffer>();\n\tif (flatSnapshot.blobs) {\n\t\tflatSnapshot.blobs.forEach((blob) => {\n\t\t\tblobs.set(blob.id, stringToBuffer(blob.content, blob.encoding ?? \"utf-8\"));\n\t\t});\n\t}\n\tconst flatSnapshotTree = flatSnapshot.trees?.[0];\n\tconst sequenceNumber = flatSnapshotTree?.sequenceNumber;\n\tconst snapshotTree = buildHierarchy(flatSnapshotTree, treePrefixToRemove);\n\n\treturn {\n\t\tblobs,\n\t\tsnapshotTree,\n\t\tsequenceNumber,\n\t\tid: flatSnapshot.id,\n\t};\n}\n"]}
@@ -3,11 +3,11 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
  import { ITelemetryBaseProperties } from "@fluidframework/core-interfaces";
6
- import { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils";
7
6
  import { RateLimiter } from "@fluidframework/driver-utils";
8
- import type { AxiosRequestConfig } from "axios";
9
- import { ITokenProvider, ITokenResponse } from "./tokens.mjs";
10
- import { QueryStringType, RestWrapper } from "./restWrapperBase.mjs";
7
+ import { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils";
8
+ import type { AxiosRequestConfig } from "./axios.cjs";
9
+ import { QueryStringType, RestWrapper } from "./restWrapperBase.js";
10
+ import { ITokenProvider, ITokenResponse } from "./tokens.js";
11
11
  type AuthorizationHeaderGetter = (token: ITokenResponse) => string;
12
12
  export type TokenFetcher = (refresh?: boolean) => Promise<ITokenResponse>;
13
13
  export interface IR11sResponse<T> {
@@ -50,4 +50,4 @@ export declare class RouterliciousOrdererRestWrapper extends RouterliciousRestWr
50
50
  export declare function toInstrumentedR11sOrdererTokenFetcher(tenantId: string, documentId: string | undefined, tokenProvider: ITokenProvider, logger: ITelemetryLoggerExt): TokenFetcher;
51
51
  export declare function toInstrumentedR11sStorageTokenFetcher(tenantId: string, documentId: string, tokenProvider: ITokenProvider, logger: ITelemetryLoggerExt): TokenFetcher;
52
52
  export {};
53
- //# sourceMappingURL=restWrapper.d.mts.map
53
+ //# sourceMappingURL=restWrapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"restWrapper.d.ts","sourceRoot":"","sources":["../src/restWrapper.ts"],"names":[],"mappings":"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"}
@@ -2,16 +2,16 @@
2
2
  * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
3
  * Licensed under the MIT License.
4
4
  */
5
- import { PerformanceEvent, numberFromString, } from "@fluidframework/telemetry-utils";
6
- import { assert } from "@fluidframework/core-utils";
7
5
  import { fromUtf8ToBase64, performance } from "@fluid-internal/client-utils";
6
+ import { assert } from "@fluidframework/core-utils";
8
7
  import { GenericNetworkError, NonRetryableError } from "@fluidframework/driver-utils";
9
- import { CorrelationIdHeaderName, DriverVersionHeaderName, getAuthorizationTokenFromCredentials, RestLessClient, } from "@fluidframework/server-services-client";
8
+ import { CorrelationIdHeaderName, DriverVersionHeaderName, RestLessClient, getAuthorizationTokenFromCredentials, } from "@fluidframework/server-services-client";
9
+ import { PerformanceEvent, numberFromString, } from "@fluidframework/telemetry-utils";
10
10
  import fetch from "cross-fetch";
11
11
  import safeStringify from "json-stringify-safe";
12
- import { RouterliciousErrorTypes, throwR11sNetworkError } from "./errorUtils.mjs";
13
- import { pkgVersion as driverVersion } from "./packageVersion.mjs";
14
- import { RestWrapper } from "./restWrapperBase.mjs";
12
+ import { RouterliciousErrorTypes, throwR11sNetworkError } from "./errorUtils.js";
13
+ import { pkgVersion as driverVersion } from "./packageVersion.js";
14
+ import { RestWrapper } from "./restWrapperBase.js";
15
15
  const axiosRequestConfigToFetchRequestConfig = (requestConfig) => {
16
16
  const requestInfo = requestConfig.baseURL !== undefined
17
17
  ? `${requestConfig.baseURL}${requestConfig.url ?? ""}`
@@ -233,4 +233,4 @@ export function toInstrumentedR11sStorageTokenFetcher(tenantId, documentId, toke
233
233
  };
234
234
  return fetchStorageToken;
235
235
  }
236
- //# sourceMappingURL=restWrapper.mjs.map
236
+ //# sourceMappingURL=restWrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"restWrapper.js","sourceRoot":"","sources":["../src/restWrapper.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { fromUtf8ToBase64, performance } from \"@fluid-internal/client-utils\";\nimport { ITelemetryBaseProperties } from \"@fluidframework/core-interfaces\";\nimport { assert } from \"@fluidframework/core-utils\";\nimport { GenericNetworkError, NonRetryableError, RateLimiter } from \"@fluidframework/driver-utils\";\nimport {\n\tCorrelationIdHeaderName,\n\tDriverVersionHeaderName,\n\tRestLessClient,\n\tgetAuthorizationTokenFromCredentials,\n} from \"@fluidframework/server-services-client\";\nimport {\n\tITelemetryLoggerExt,\n\tPerformanceEvent,\n\tnumberFromString,\n} from \"@fluidframework/telemetry-utils\";\nimport fetch from \"cross-fetch\";\nimport safeStringify from \"json-stringify-safe\";\nimport type { AxiosRequestConfig, RawAxiosRequestHeaders } from \"./axios.cjs\";\nimport { RouterliciousErrorTypes, throwR11sNetworkError } from \"./errorUtils.js\";\nimport { pkgVersion as driverVersion } from \"./packageVersion.js\";\nimport { QueryStringType, RestWrapper } from \"./restWrapperBase.js\";\nimport { ITokenProvider, ITokenResponse } from \"./tokens.js\";\n\ntype AuthorizationHeaderGetter = (token: ITokenResponse) => string;\nexport type TokenFetcher = (refresh?: boolean) => Promise<ITokenResponse>;\n\nconst axiosRequestConfigToFetchRequestConfig = (\n\trequestConfig: AxiosRequestConfig,\n): [RequestInfo, RequestInit] => {\n\tconst requestInfo: string =\n\t\trequestConfig.baseURL !== undefined\n\t\t\t? `${requestConfig.baseURL}${requestConfig.url ?? \"\"}`\n\t\t\t: requestConfig.url ?? \"\";\n\tconst requestInit: RequestInit = {\n\t\tmethod: requestConfig.method,\n\t\t// NOTE: I believe that although the Axios type permits non-string values in the header, here we are\n\t\t// guaranteed the requestConfig only has string values in its header.\n\t\theaders: requestConfig.headers as Record<string, string>,\n\t\tbody: requestConfig.data,\n\t};\n\treturn [requestInfo, requestInit];\n};\n\nexport interface IR11sResponse<T> {\n\tcontent: T;\n\theaders: Map<string, string>;\n\tpropsToLog: ITelemetryBaseProperties;\n\trequestUrl: string;\n}\n\n/**\n * A utility function to create a Routerlicious response without any additional props as we might not have them always.\n * @param content - Response which is equivalent to content.\n * @returns A Routerlicious response without any extra props.\n */\nexport function createR11sResponseFromContent<T>(content: T): IR11sResponse<T> {\n\treturn {\n\t\tcontent,\n\t\theaders: new Map(),\n\t\tpropsToLog: {},\n\t\trequestUrl: \"\",\n\t};\n}\n\nfunction headersToMap(headers: Headers) {\n\tconst newHeaders = new Map<string, string>();\n\tfor (const [key, value] of headers.entries()) {\n\t\tnewHeaders.set(key, value);\n\t}\n\treturn newHeaders;\n}\n\nexport function getPropsToLogFromResponse(headers: {\n\t// eslint-disable-next-line @rushstack/no-new-null\n\tget: (id: string) => string | undefined | null;\n}) {\n\tinterface LoggingHeader {\n\t\theaderName: string;\n\t\tlogName: string;\n\t}\n\n\t// We rename headers so that otel doesn't scrub them away. Otel doesn't allow\n\t// certain characters in headers including '-'\n\tconst headersToLog: LoggingHeader[] = [\n\t\t{ headerName: CorrelationIdHeaderName, logName: \"requestCorrelationId\" },\n\t\t{ headerName: \"content-encoding\", logName: \"contentEncoding\" },\n\t\t{ headerName: \"content-type\", logName: \"contentType\" },\n\t];\n\tconst additionalProps: ITelemetryBaseProperties = {\n\t\tcontentsize: numberFromString(headers.get(\"content-length\")),\n\t};\n\theadersToLog.forEach((header) => {\n\t\tconst headerValue = headers.get(header.headerName);\n\t\tif (headerValue !== undefined && headerValue !== null) {\n\t\t\tadditionalProps[header.logName] = headerValue;\n\t\t}\n\t});\n\n\treturn additionalProps;\n}\n\nexport class RouterliciousRestWrapper extends RestWrapper {\n\tprivate readonly restLess = new RestLessClient();\n\tprivate token: ITokenResponse | undefined;\n\n\tconstructor(\n\t\tlogger: ITelemetryLoggerExt,\n\t\tprivate readonly rateLimiter: RateLimiter,\n\t\tprivate readonly fetchRefreshedToken: TokenFetcher,\n\t\tprivate readonly getAuthorizationHeader: AuthorizationHeaderGetter,\n\t\tprivate readonly useRestLess: boolean,\n\t\tbaseurl?: string,\n\t\tprivate tokenP?: Promise<ITokenResponse>,\n\t\tdefaultQueryString: QueryStringType = {},\n\t) {\n\t\tsuper(baseurl, defaultQueryString);\n\t}\n\n\tprotected async request<T>(\n\t\trequestConfig: AxiosRequestConfig,\n\t\tstatusCode: number,\n\t\tcanRetry = true,\n\t): Promise<IR11sResponse<T>> {\n\t\tconst config = {\n\t\t\t...requestConfig,\n\t\t\theaders: await this.generateHeaders(requestConfig.headers),\n\t\t};\n\n\t\tconst translatedConfig = this.useRestLess ? this.restLess.translate(config) : config;\n\t\tconst fetchRequestConfig = axiosRequestConfigToFetchRequestConfig(translatedConfig);\n\n\t\tconst res = await this.rateLimiter.schedule(async () => {\n\t\t\tconst perfStart = performance.now();\n\t\t\tconst result = await fetch(...fetchRequestConfig).catch(async (error) => {\n\t\t\t\t// Browser Fetch throws a TypeError on network error, `node-fetch` throws a FetchError\n\t\t\t\tconst isNetworkError = [\"TypeError\", \"FetchError\"].includes(error?.name);\n\t\t\t\tconst errorMessage = isNetworkError\n\t\t\t\t\t? `NetworkError: ${error.message}`\n\t\t\t\t\t: safeStringify(error);\n\t\t\t\t// If a service is temporarily down or a browser resource limit is reached, RestWrapper will throw\n\t\t\t\t// a network error with no status code (e.g. err:ERR_CONN_REFUSED or err:ERR_FAILED) and\n\t\t\t\t// the error message will start with NetworkError as defined in restWrapper.ts\n\t\t\t\t// If there exists a self-signed SSL certificates error, throw a NonRetryableError\n\t\t\t\t// TODO: instead of relying on string matching, filter error based on the error code like we do for websocket connections\n\t\t\t\tconst err = errorMessage.includes(\"failed, reason: self signed certificate\")\n\t\t\t\t\t? new NonRetryableError(errorMessage, RouterliciousErrorTypes.sslCertError, {\n\t\t\t\t\t\t\tdriverVersion,\n\t\t\t\t\t })\n\t\t\t\t\t: new GenericNetworkError(\n\t\t\t\t\t\t\terrorMessage,\n\t\t\t\t\t\t\terrorMessage.startsWith(\"NetworkError\"),\n\t\t\t\t\t\t\t{ driverVersion },\n\t\t\t\t\t );\n\t\t\t\tthrow err;\n\t\t\t});\n\t\t\treturn {\n\t\t\t\tresponse: result,\n\t\t\t\tduration: performance.now() - perfStart,\n\t\t\t};\n\t\t});\n\n\t\tconst response = res.response;\n\n\t\tlet start = performance.now();\n\t\tconst text = await response.text();\n\t\tconst receiveContentTime = performance.now() - start;\n\n\t\tconst bodySize = text.length;\n\t\tstart = performance.now();\n\t\tconst responseBody: any = response.headers.get(\"content-type\")?.includes(\"application/json\")\n\t\t\t? JSON.parse(text)\n\t\t\t: text;\n\t\tconst parseTime = performance.now() - start;\n\n\t\t// Success\n\t\tif (response.ok || response.status === statusCode) {\n\t\t\tconst result = responseBody as T;\n\t\t\tconst headers = headersToMap(response.headers);\n\t\t\treturn {\n\t\t\t\tcontent: result,\n\t\t\t\theaders,\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-base-to-string\n\t\t\t\trequestUrl: fetchRequestConfig[0].toString(),\n\t\t\t\tpropsToLog: {\n\t\t\t\t\t...getPropsToLogFromResponse(headers),\n\t\t\t\t\tbodySize,\n\t\t\t\t\treceiveContentTime,\n\t\t\t\t\tparseTime,\n\t\t\t\t\tfetchTime: res.duration,\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t\t// Failure\n\t\tif (response.status === 401 && canRetry) {\n\t\t\t// Refresh Authorization header and retry once\n\t\t\tthis.token = await this.fetchRefreshedToken(true /* refreshToken */);\n\t\t\treturn this.request<T>(config, statusCode, false);\n\t\t}\n\t\tif (response.status === 429 && responseBody?.retryAfter > 0) {\n\t\t\t// Retry based on retryAfter[Seconds]\n\t\t\treturn new Promise<IR11sResponse<T>>((resolve, reject) =>\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.request<T>(config, statusCode).then(resolve).catch(reject);\n\t\t\t\t}, responseBody.retryAfter * 1000),\n\t\t\t);\n\t\t}\n\n\t\tconst responseSummary =\n\t\t\tresponseBody !== undefined\n\t\t\t\t? typeof responseBody === \"string\"\n\t\t\t\t\t? responseBody\n\t\t\t\t\t: safeStringify(responseBody)\n\t\t\t\t: response.statusText;\n\t\tthrowR11sNetworkError(\n\t\t\t`R11s fetch error: ${responseSummary}`,\n\t\t\tresponse.status,\n\t\t\tresponseBody?.retryAfter,\n\t\t);\n\t}\n\n\tprivate async generateHeaders(\n\t\trequestHeaders?: RawAxiosRequestHeaders | undefined,\n\t): Promise<RawAxiosRequestHeaders> {\n\t\tconst token = await this.getToken();\n\t\tassert(token !== undefined, 0x679 /* token should be present */);\n\t\tconst headers: RawAxiosRequestHeaders = {\n\t\t\t...requestHeaders,\n\t\t\t[DriverVersionHeaderName]: driverVersion,\n\t\t\t// NOTE: If this.authorizationHeader is undefined, should \"Authorization\" be removed entirely?\n\t\t\tAuthorization: this.getAuthorizationHeader(token),\n\t\t};\n\t\treturn headers;\n\t}\n\n\tpublic async getToken(): Promise<ITokenResponse> {\n\t\tif (this.token !== undefined) {\n\t\t\treturn this.token;\n\t\t}\n\t\tconst token = await (this.tokenP ?? this.fetchRefreshedToken());\n\t\tthis.setToken(token);\n\t\tthis.tokenP = undefined;\n\t\treturn token;\n\t}\n\n\tpublic setToken(token: ITokenResponse) {\n\t\tthis.token = token;\n\t}\n}\n\nexport class RouterliciousStorageRestWrapper extends RouterliciousRestWrapper {\n\tprivate constructor(\n\t\tlogger: ITelemetryLoggerExt,\n\t\trateLimiter: RateLimiter,\n\t\tfetchToken: TokenFetcher,\n\t\tgetAuthorizationHeader: AuthorizationHeaderGetter,\n\t\tuseRestLess: boolean,\n\t\tbaseurl?: string,\n\t\tinitialTokenP?: Promise<ITokenResponse>,\n\t\tdefaultQueryString: QueryStringType = {},\n\t) {\n\t\tsuper(\n\t\t\tlogger,\n\t\t\trateLimiter,\n\t\t\tfetchToken,\n\t\t\tgetAuthorizationHeader,\n\t\t\tuseRestLess,\n\t\t\tbaseurl,\n\t\t\tinitialTokenP,\n\t\t\tdefaultQueryString,\n\t\t);\n\t}\n\n\tpublic static async load(\n\t\ttenantId: string,\n\t\ttokenFetcher: TokenFetcher,\n\t\tlogger: ITelemetryLoggerExt,\n\t\trateLimiter: RateLimiter,\n\t\tuseRestLess: boolean,\n\t\tbaseurl?: string,\n\t\tinitialTokenP?: Promise<ITokenResponse>,\n\t): Promise<RouterliciousStorageRestWrapper> {\n\t\tconst defaultQueryString = {\n\t\t\ttoken: `${fromUtf8ToBase64(tenantId)}`,\n\t\t};\n\n\t\tconst getAuthorizationHeader: AuthorizationHeaderGetter = (\n\t\t\ttoken: ITokenResponse,\n\t\t): string => {\n\t\t\tconst credentials = {\n\t\t\t\tpassword: token.jwt,\n\t\t\t\tuser: tenantId,\n\t\t\t};\n\t\t\treturn getAuthorizationTokenFromCredentials(credentials);\n\t\t};\n\n\t\tconst restWrapper = new RouterliciousStorageRestWrapper(\n\t\t\tlogger,\n\t\t\trateLimiter,\n\t\t\ttokenFetcher,\n\t\t\tgetAuthorizationHeader,\n\t\t\tuseRestLess,\n\t\t\tbaseurl,\n\t\t\tinitialTokenP,\n\t\t\tdefaultQueryString,\n\t\t);\n\n\t\treturn restWrapper;\n\t}\n}\n\nexport class RouterliciousOrdererRestWrapper extends RouterliciousRestWrapper {\n\tprivate constructor(\n\t\tlogger: ITelemetryLoggerExt,\n\t\trateLimiter: RateLimiter,\n\t\tfetchToken: TokenFetcher,\n\t\tgetAuthorizationHeader: AuthorizationHeaderGetter,\n\t\tuseRestLess: boolean,\n\t\tbaseurl?: string,\n\t\tinitialTokenP?: Promise<ITokenResponse>,\n\t\tdefaultQueryString: QueryStringType = {},\n\t) {\n\t\tsuper(\n\t\t\tlogger,\n\t\t\trateLimiter,\n\t\t\tfetchToken,\n\t\t\tgetAuthorizationHeader,\n\t\t\tuseRestLess,\n\t\t\tbaseurl,\n\t\t\tinitialTokenP,\n\t\t\tdefaultQueryString,\n\t\t);\n\t}\n\n\tpublic static async load(\n\t\ttokenFetcher: TokenFetcher,\n\t\tlogger: ITelemetryLoggerExt,\n\t\trateLimiter: RateLimiter,\n\t\tuseRestLess: boolean,\n\t\tbaseurl?: string,\n\t\tinitialTokenP?: Promise<ITokenResponse>,\n\t): Promise<RouterliciousOrdererRestWrapper> {\n\t\tconst getAuthorizationHeader: AuthorizationHeaderGetter = (\n\t\t\ttoken: ITokenResponse,\n\t\t): string => {\n\t\t\treturn `Basic ${token.jwt}`;\n\t\t};\n\n\t\tconst restWrapper = new RouterliciousOrdererRestWrapper(\n\t\t\tlogger,\n\t\t\trateLimiter,\n\t\t\ttokenFetcher,\n\t\t\tgetAuthorizationHeader,\n\t\t\tuseRestLess,\n\t\t\tbaseurl,\n\t\t\tinitialTokenP,\n\t\t);\n\n\t\treturn restWrapper;\n\t}\n}\n\nexport function toInstrumentedR11sOrdererTokenFetcher(\n\ttenantId: string,\n\tdocumentId: string | undefined,\n\ttokenProvider: ITokenProvider,\n\tlogger: ITelemetryLoggerExt,\n): TokenFetcher {\n\tconst fetchOrdererToken = async (refreshToken?: boolean): Promise<ITokenResponse> => {\n\t\treturn PerformanceEvent.timedExecAsync(\n\t\t\tlogger,\n\t\t\t{\n\t\t\t\teventName: \"FetchOrdererToken\",\n\t\t\t\tdocId: documentId,\n\t\t\t},\n\t\t\tasync () => {\n\t\t\t\tconst ordererToken = await tokenProvider.fetchOrdererToken(\n\t\t\t\t\ttenantId,\n\t\t\t\t\tdocumentId,\n\t\t\t\t\trefreshToken,\n\t\t\t\t);\n\n\t\t\t\treturn ordererToken;\n\t\t\t},\n\t\t);\n\t};\n\treturn fetchOrdererToken;\n}\n\nexport function toInstrumentedR11sStorageTokenFetcher(\n\ttenantId: string,\n\tdocumentId: string,\n\ttokenProvider: ITokenProvider,\n\tlogger: ITelemetryLoggerExt,\n): TokenFetcher {\n\tconst fetchStorageToken = async (refreshToken?: boolean): Promise<ITokenResponse> => {\n\t\treturn PerformanceEvent.timedExecAsync(\n\t\t\tlogger,\n\t\t\t{\n\t\t\t\teventName: \"FetchStorageToken\",\n\t\t\t\tdocId: documentId,\n\t\t\t},\n\t\t\tasync () => {\n\t\t\t\t// Craft credentials using tenant id and token\n\t\t\t\tconst storageToken = await tokenProvider.fetchStorageToken(\n\t\t\t\t\ttenantId,\n\t\t\t\t\tdocumentId,\n\t\t\t\t\trefreshToken,\n\t\t\t\t);\n\n\t\t\t\treturn storageToken;\n\t\t\t},\n\t\t);\n\t};\n\treturn fetchStorageToken;\n}\n"]}
@@ -2,8 +2,8 @@
2
2
  * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
3
  * Licensed under the MIT License.
4
4
  */
5
- import type { AxiosRequestConfig, AxiosRequestHeaders } from "axios";
6
- import { IR11sResponse } from "./restWrapper.mjs";
5
+ import type { AxiosRequestConfig, AxiosRequestHeaders } from "./axios.cjs";
6
+ import { IR11sResponse } from "./restWrapper.js";
7
7
  export declare abstract class RestWrapper {
8
8
  protected readonly baseurl?: string | undefined;
9
9
  protected defaultQueryString: QueryStringType;
@@ -23,4 +23,4 @@ export declare abstract class RestWrapper {
23
23
  */
24
24
  export declare function getQueryString(queryParams: QueryStringType): string;
25
25
  export type QueryStringType = Record<string, string | number | boolean>;
26
- //# sourceMappingURL=restWrapperBase.d.mts.map
26
+ //# sourceMappingURL=restWrapperBase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"restWrapperBase.d.ts","sourceRoot":"","sources":["../src/restWrapperBase.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,8BAAsB,WAAW;IAE/B,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC;IAC3B,SAAS,CAAC,kBAAkB,EAAE,eAAe;IAC7C,SAAS,CAAC,QAAQ,CAAC,aAAa;IAChC,SAAS,CAAC,QAAQ,CAAC,gBAAgB;gBAHhB,OAAO,CAAC,oBAAQ,EACzB,kBAAkB,GAAE,eAAoB,EAC/B,aAAa,SAAqB,EAClC,gBAAgB,SAAqB;IAG5C,GAAG,CAAC,CAAC,EACjB,GAAG,EAAE,MAAM,EACX,WAAW,CAAC,EAAE,eAAe,EAC7B,OAAO,CAAC,EAAE,mBAAmB,EAC7B,iBAAiB,CAAC,EAAE,OAAO,CAC1B,IAAI,CACH,kBAAkB,EAClB,SAAS,GAAG,SAAS,GAAG,eAAe,GAAG,kBAAkB,GAAG,QAAQ,GAAG,KAAK,CAC/E,CACD,GACC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAaf,IAAI,CAAC,CAAC,EAClB,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,GAAG,EAChB,WAAW,CAAC,EAAE,eAAe,EAC7B,OAAO,CAAC,EAAE,mBAAmB,EAC7B,iBAAiB,CAAC,EAAE,OAAO,CAC1B,IAAI,CACH,kBAAkB,EAClB,SAAS,GAAG,SAAS,GAAG,eAAe,GAAG,kBAAkB,GAAG,QAAQ,GAAG,KAAK,CAC/E,CACD,GACC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAcf,MAAM,CAAC,CAAC,EACpB,GAAG,EAAE,MAAM,EACX,WAAW,CAAC,EAAE,eAAe,EAC7B,OAAO,CAAC,EAAE,mBAAmB,EAC7B,iBAAiB,CAAC,EAAE,OAAO,CAC1B,IAAI,CACH,kBAAkB,EAClB,SAAS,GAAG,SAAS,GAAG,eAAe,GAAG,kBAAkB,GAAG,QAAQ,GAAG,KAAK,CAC/E,CACD,GACC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAaf,KAAK,CAAC,CAAC,EACnB,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,GAAG,EAChB,WAAW,CAAC,EAAE,eAAe,EAC7B,OAAO,CAAC,EAAE,mBAAmB,EAC7B,iBAAiB,CAAC,EAAE,OAAO,CAC1B,IAAI,CACH,kBAAkB,EAClB,SAAS,GAAG,SAAS,GAAG,eAAe,GAAG,kBAAkB,GAAG,QAAQ,GAAG,KAAK,CAC/E,CACD,GACC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAc5B,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAC3B,OAAO,EAAE,kBAAkB,EAC3B,UAAU,EAAE,MAAM,EAClB,mBAAmB,CAAC,EAAE,OAAO,GAC3B,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAE5B,SAAS,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,EAAE,eAAe;CASjE;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,eAAe,GAAG,MAAM,CAUnE;AAED,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC"}
@@ -81,4 +81,4 @@ export function getQueryString(queryParams) {
81
81
  }
82
82
  return queryString;
83
83
  }
84
- //# sourceMappingURL=restWrapperBase.mjs.map
84
+ //# sourceMappingURL=restWrapperBase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"restWrapperBase.js","sourceRoot":"","sources":["../src/restWrapperBase.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 type { AxiosRequestConfig, AxiosRequestHeaders } from \"./axios.cjs\";\nimport { IR11sResponse } from \"./restWrapper.js\";\n\nexport abstract class RestWrapper {\n\tconstructor(\n\t\tprotected readonly baseurl?: string,\n\t\tprotected defaultQueryString: QueryStringType = {},\n\t\tprotected readonly maxBodyLength = 1000 * 1024 * 1024,\n\t\tprotected readonly maxContentLength = 1000 * 1024 * 1024,\n\t) {}\n\n\tpublic async get<T>(\n\t\turl: string,\n\t\tqueryString?: QueryStringType,\n\t\theaders?: AxiosRequestHeaders,\n\t\tadditionalOptions?: Partial<\n\t\t\tOmit<\n\t\t\t\tAxiosRequestConfig,\n\t\t\t\t\"baseURL\" | \"headers\" | \"maxBodyLength\" | \"maxContentLength\" | \"method\" | \"url\"\n\t\t\t>\n\t\t>,\n\t): Promise<IR11sResponse<T>> {\n\t\tconst options: AxiosRequestConfig = {\n\t\t\t...additionalOptions,\n\t\t\tbaseURL: this.baseurl,\n\t\t\theaders,\n\t\t\tmaxBodyLength: this.maxBodyLength,\n\t\t\tmaxContentLength: this.maxContentLength,\n\t\t\tmethod: \"GET\",\n\t\t\turl: `${url}${this.generateQueryString(queryString)}`,\n\t\t};\n\t\treturn this.request<T>(options, 200);\n\t}\n\n\tpublic async post<T>(\n\t\turl: string,\n\t\trequestBody: any,\n\t\tqueryString?: QueryStringType,\n\t\theaders?: AxiosRequestHeaders,\n\t\tadditionalOptions?: Partial<\n\t\t\tOmit<\n\t\t\t\tAxiosRequestConfig,\n\t\t\t\t\"baseURL\" | \"headers\" | \"maxBodyLength\" | \"maxContentLength\" | \"method\" | \"url\"\n\t\t\t>\n\t\t>,\n\t): Promise<IR11sResponse<T>> {\n\t\tconst options: AxiosRequestConfig = {\n\t\t\t...additionalOptions,\n\t\t\tbaseURL: this.baseurl,\n\t\t\tdata: requestBody,\n\t\t\theaders,\n\t\t\tmaxBodyLength: this.maxBodyLength,\n\t\t\tmaxContentLength: this.maxContentLength,\n\t\t\tmethod: \"POST\",\n\t\t\turl: `${url}${this.generateQueryString(queryString)}`,\n\t\t};\n\t\treturn this.request<T>(options, 201);\n\t}\n\n\tpublic async delete<T>(\n\t\turl: string,\n\t\tqueryString?: QueryStringType,\n\t\theaders?: AxiosRequestHeaders,\n\t\tadditionalOptions?: Partial<\n\t\t\tOmit<\n\t\t\t\tAxiosRequestConfig,\n\t\t\t\t\"baseURL\" | \"headers\" | \"maxBodyLength\" | \"maxContentLength\" | \"method\" | \"url\"\n\t\t\t>\n\t\t>,\n\t): Promise<IR11sResponse<T>> {\n\t\tconst options: AxiosRequestConfig = {\n\t\t\t...additionalOptions,\n\t\t\tbaseURL: this.baseurl,\n\t\t\theaders,\n\t\t\tmaxBodyLength: this.maxBodyLength,\n\t\t\tmaxContentLength: this.maxContentLength,\n\t\t\tmethod: \"DELETE\",\n\t\t\turl: `${url}${this.generateQueryString(queryString)}`,\n\t\t};\n\t\treturn this.request<T>(options, 204);\n\t}\n\n\tpublic async patch<T>(\n\t\turl: string,\n\t\trequestBody: any,\n\t\tqueryString?: QueryStringType,\n\t\theaders?: AxiosRequestHeaders,\n\t\tadditionalOptions?: Partial<\n\t\t\tOmit<\n\t\t\t\tAxiosRequestConfig,\n\t\t\t\t\"baseURL\" | \"headers\" | \"maxBodyLength\" | \"maxContentLength\" | \"method\" | \"url\"\n\t\t\t>\n\t\t>,\n\t): Promise<IR11sResponse<T>> {\n\t\tconst options: AxiosRequestConfig = {\n\t\t\t...additionalOptions,\n\t\t\tbaseURL: this.baseurl,\n\t\t\tdata: requestBody,\n\t\t\theaders,\n\t\t\tmaxBodyLength: this.maxBodyLength,\n\t\t\tmaxContentLength: this.maxContentLength,\n\t\t\tmethod: \"PATCH\",\n\t\t\turl: `${url}${this.generateQueryString(queryString)}`,\n\t\t};\n\t\treturn this.request<T>(options, 200);\n\t}\n\n\tprotected abstract request<T>(\n\t\toptions: AxiosRequestConfig,\n\t\tstatusCode: number,\n\t\taddNetworkCallProps?: boolean,\n\t): Promise<IR11sResponse<T>>;\n\n\tprotected generateQueryString(queryStringValues?: QueryStringType) {\n\t\tif (this.defaultQueryString || queryStringValues) {\n\t\t\tconst queryStringMap = { ...this.defaultQueryString, ...queryStringValues };\n\n\t\t\treturn getQueryString(queryStringMap);\n\t\t}\n\n\t\treturn \"\";\n\t}\n}\n\n/**\n * Generates query string from the given query parameters.\n * @param queryParams - Query parameters from which to create a query.\n */\nexport function getQueryString(queryParams: QueryStringType): string {\n\tlet queryString = \"\";\n\tfor (const key of Object.keys(queryParams)) {\n\t\tif (queryParams[key] !== undefined) {\n\t\t\tconst startChar = queryString === \"\" ? \"?\" : \"&\";\n\t\t\tqueryString += `${startChar}${key}=${encodeURIComponent(queryParams[key])}`;\n\t\t}\n\t}\n\n\treturn queryString;\n}\n\nexport type QueryStringType = Record<string, string | number | boolean>;\n"]}
@@ -5,9 +5,9 @@
5
5
  import type * as git from "@fluidframework/gitresources";
6
6
  import { IWholeSummaryPayload, IWriteSummaryResponse } from "@fluidframework/server-services-client";
7
7
  import { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils";
8
- import { IGitManager } from "./storageContracts.mjs";
9
- import { IR11sResponse } from "./restWrapper.mjs";
10
- import { IWholeFlatSnapshot } from "./contracts.mjs";
8
+ import { IWholeFlatSnapshot } from "./contracts.js";
9
+ import { IR11sResponse } from "./restWrapper.js";
10
+ import { IGitManager } from "./storageContracts.js";
11
11
  export declare class RetriableGitManager implements IGitManager {
12
12
  private readonly internalGitManager;
13
13
  private readonly logger;
@@ -21,4 +21,4 @@ export declare class RetriableGitManager implements IGitManager {
21
21
  getSnapshot(sha: string): Promise<IR11sResponse<IWholeFlatSnapshot>>;
22
22
  private runWithRetry;
23
23
  }
24
- //# sourceMappingURL=retriableGitManager.d.mts.map
24
+ //# sourceMappingURL=retriableGitManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retriableGitManager.d.ts","sourceRoot":"","sources":["../src/retriableGitManager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,KAAK,GAAG,MAAM,8BAA8B,CAAC;AACzD,OAAO,EACN,oBAAoB,EACpB,qBAAqB,EACrB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,qBAAa,mBAAoB,YAAW,WAAW;IAErD,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADN,kBAAkB,EAAE,WAAW,EAC/B,MAAM,EAAE,mBAAmB;IAGhC,UAAU,CACtB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GACX,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC;IAOlC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAO5E,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAOvD,UAAU,CACtB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACd,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IAOrC,aAAa,CAAC,MAAM,EAAE,GAAG,CAAC,iBAAiB,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAO/E,aAAa,CACzB,OAAO,EAAE,oBAAoB,GAC3B,OAAO,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC;IAOnC,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;YAOnE,YAAY;CAQ1B"}
@@ -33,4 +33,4 @@ export class RetriableGitManager {
33
33
  return runWithRetry(api, callName, this.logger, {});
34
34
  }
35
35
  }
36
- //# sourceMappingURL=retriableGitManager.mjs.map
36
+ //# sourceMappingURL=retriableGitManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retriableGitManager.js","sourceRoot":"","sources":["../src/retriableGitManager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAW5D,MAAM,OAAO,mBAAmB;IAC/B,YACkB,kBAA+B,EAC/B,MAA2B;QAD3B,uBAAkB,GAAlB,kBAAkB,CAAa;QAC/B,WAAM,GAAN,MAAM,CAAqB;IAC1C,CAAC;IAEG,KAAK,CAAC,UAAU,CACtB,GAAW,EACX,KAAa;QAEb,OAAO,IAAI,CAAC,YAAY,CACvB,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,EAC1D,uBAAuB,CACvB,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,IAAY,EAAE,SAAkB;QACpD,OAAO,IAAI,CAAC,YAAY,CACvB,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,EAC5D,oBAAoB,CACpB,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,GAAW;QAC/B,OAAO,IAAI,CAAC,YAAY,CACvB,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,GAAG,CAAC,EAChD,oBAAoB,CACpB,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,UAAU,CACtB,OAAe,EACf,QAAgB;QAEhB,OAAO,IAAI,CAAC,YAAY,CACvB,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,EACjE,uBAAuB,CACvB,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,aAAa,CAAC,MAA6B;QACvD,OAAO,IAAI,CAAC,YAAY,CACvB,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,MAAM,CAAC,EACzD,0BAA0B,CAC1B,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,aAAa,CACzB,OAA6B;QAE7B,OAAO,IAAI,CAAC,YAAY,CACvB,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,OAAO,CAAC,EAC1D,0BAA0B,CAC1B,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,GAAW;QACnC,OAAO,IAAI,CAAC,YAAY,CACvB,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,GAAG,CAAC,EACpD,uBAAuB,CACvB,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,YAAY,CAAI,GAAqB,EAAE,QAAgB;QACpE,OAAO,YAAY,CAClB,GAAG,EACH,QAAQ,EACR,IAAI,CAAC,MAAM,EACX,EAAE,CACF,CAAC;IACH,CAAC;CACD","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { runWithRetry } from \"@fluidframework/driver-utils\";\nimport type * as git from \"@fluidframework/gitresources\";\nimport {\n\tIWholeSummaryPayload,\n\tIWriteSummaryResponse,\n} from \"@fluidframework/server-services-client\";\nimport { ITelemetryLoggerExt } from \"@fluidframework/telemetry-utils\";\nimport { IWholeFlatSnapshot } from \"./contracts.js\";\nimport { IR11sResponse } from \"./restWrapper.js\";\nimport { IGitManager } from \"./storageContracts.js\";\n\nexport class RetriableGitManager implements IGitManager {\n\tconstructor(\n\t\tprivate readonly internalGitManager: IGitManager,\n\t\tprivate readonly logger: ITelemetryLoggerExt,\n\t) {}\n\n\tpublic async getCommits(\n\t\tsha: string,\n\t\tcount: number,\n\t): Promise<IR11sResponse<git.ICommitDetails[]>> {\n\t\treturn this.runWithRetry(\n\t\t\tasync () => this.internalGitManager.getCommits(sha, count),\n\t\t\t\"gitManager_getCommits\",\n\t\t);\n\t}\n\n\tpublic async getTree(root: string, recursive: boolean): Promise<IR11sResponse<git.ITree>> {\n\t\treturn this.runWithRetry(\n\t\t\tasync () => this.internalGitManager.getTree(root, recursive),\n\t\t\t\"gitManager_getTree\",\n\t\t);\n\t}\n\n\tpublic async getBlob(sha: string): Promise<IR11sResponse<git.IBlob>> {\n\t\treturn this.runWithRetry(\n\t\t\tasync () => this.internalGitManager.getBlob(sha),\n\t\t\t\"gitManager_getBlob\",\n\t\t);\n\t}\n\n\tpublic async createBlob(\n\t\tcontent: string,\n\t\tencoding: string,\n\t): Promise<IR11sResponse<git.ICreateBlobResponse>> {\n\t\treturn this.runWithRetry(\n\t\t\tasync () => this.internalGitManager.createBlob(content, encoding),\n\t\t\t\"gitManager_createBlob\",\n\t\t);\n\t}\n\n\tpublic async createGitTree(params: git.ICreateTreeParams): Promise<IR11sResponse<git.ITree>> {\n\t\treturn this.runWithRetry(\n\t\t\tasync () => this.internalGitManager.createGitTree(params),\n\t\t\t\"gitManager_createGitTree\",\n\t\t);\n\t}\n\n\tpublic async createSummary(\n\t\tsummary: IWholeSummaryPayload,\n\t): Promise<IR11sResponse<IWriteSummaryResponse>> {\n\t\treturn this.runWithRetry(\n\t\t\tasync () => this.internalGitManager.createSummary(summary),\n\t\t\t\"gitManager_createSummary\",\n\t\t);\n\t}\n\n\tpublic async getSnapshot(sha: string): Promise<IR11sResponse<IWholeFlatSnapshot>> {\n\t\treturn this.runWithRetry(\n\t\t\tasync () => this.internalGitManager.getSnapshot(sha),\n\t\t\t\"gitManager_getSummary\",\n\t\t);\n\t}\n\n\tprivate async runWithRetry<T>(api: () => Promise<T>, callName: string): Promise<T> {\n\t\treturn runWithRetry(\n\t\t\tapi,\n\t\t\tcallName,\n\t\t\tthis.logger,\n\t\t\t{}, // progress\n\t\t);\n\t}\n}\n"]}
@@ -31,4 +31,4 @@ export interface IRouterliciousResolvedUrl extends IResolvedUrl {
31
31
  * @internal
32
32
  */
33
33
  export declare const isRouterliciousResolvedUrl: (resolvedUrl: IResolvedUrl) => resolvedUrl is IRouterliciousResolvedUrl;
34
- //# sourceMappingURL=routerliciousResolvedUrl.d.mts.map
34
+ //# sourceMappingURL=routerliciousResolvedUrl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routerliciousResolvedUrl.d.ts","sourceRoot":"","sources":["../src/routerliciousResolvedUrl.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAEvE;;;;;;;;GAQG;AACH,MAAM,WAAW,yBAA0B,SAAQ,YAAY;IAC9D;;OAEG;IACH,wBAAwB,EAAE,IAAI,CAAC;IAC/B;;;;;;OAMG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;;GAGG;AACH,eAAO,MAAM,0BAA0B,gBACzB,YAAY,6CAEmD,CAAC"}
@@ -7,4 +7,4 @@
7
7
  * @internal
8
8
  */
9
9
  export const isRouterliciousResolvedUrl = (resolvedUrl) => resolvedUrl.routerliciousResolvedUrl === true;
10
- //# sourceMappingURL=routerliciousResolvedUrl.mjs.map
10
+ //# sourceMappingURL=routerliciousResolvedUrl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routerliciousResolvedUrl.js","sourceRoot":"","sources":["../src/routerliciousResolvedUrl.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA4BH;;;GAGG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACzC,WAAyB,EACkB,EAAE,CAC5C,WAAyC,CAAC,wBAAwB,KAAK,IAAI,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport type { IResolvedUrl } from \"@fluidframework/driver-definitions\";\n\n/**\n * Routerlicious extends the resolved url with additional properties to control Routerlicious-specific behaviors.\n *\n * @privateRemarks\n * {@link isRouterliciousResolvedUrl} can be used to detect whether an {@link @fluidframework/driver-definitions#IResolvedUrl}\n * is an IRouterliciousResolvedUrl.\n *\n * @alpha\n */\nexport interface IRouterliciousResolvedUrl extends IResolvedUrl {\n\t/**\n\t * A flag to facilitate type narrowing from {@link @fluidframework/driver-definitions#IResolvedUrl} to IRouterliciousResolvedUrl.\n\t */\n\trouterliciousResolvedUrl: true;\n\t/**\n\t * Controls whether a newly created container will be ephemeral, which means the service will not retain it\n\t * after the collaboration session ends. Only affects\n\t * {@link @fluidframework/driver-definitions#IDocumentServiceFactory.createContainer} requests.\n\t *\n\t * @defaultValue If left undefined, treated as `false`\n\t */\n\tcreateAsEphemeral?: boolean;\n}\n\n/**\n * Type guard to detect if an IResolvedUrl is an IRouterliciousResolvedUrl.\n * @internal\n */\nexport const isRouterliciousResolvedUrl = (\n\tresolvedUrl: IResolvedUrl,\n): resolvedUrl is IRouterliciousResolvedUrl =>\n\t(resolvedUrl as IRouterliciousResolvedUrl).routerliciousResolvedUrl === true;\n"]}
@@ -2,13 +2,13 @@
2
2
  * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
3
  * Licensed under the MIT License.
4
4
  */
5
- import { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils";
6
- import { IDocumentStorageService, ISummaryContext, IDocumentStorageServicePolicies } from "@fluidframework/driver-definitions";
5
+ import { IDocumentStorageService, IDocumentStorageServicePolicies, ISummaryContext } from "@fluidframework/driver-definitions";
7
6
  import { ICreateBlobResponse, ISnapshotTreeEx, ISummaryHandle, ISummaryTree, IVersion } from "@fluidframework/protocol-definitions";
8
- import { IRouterliciousDriverPolicies } from "./policies.mjs";
9
- import { ICache } from "./cache.mjs";
10
- import { ISnapshotTreeVersion } from "./definitions.mjs";
11
- import { GitManager } from "./gitManager.mjs";
7
+ import { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils";
8
+ import { ICache } from "./cache.js";
9
+ import { ISnapshotTreeVersion } from "./definitions.js";
10
+ import { GitManager } from "./gitManager.js";
11
+ import { IRouterliciousDriverPolicies } from "./policies.js";
12
12
  /**
13
13
  * Document access to underlying storage for routerlicious driver.
14
14
  * Uploads summaries piece-by-piece traversing the tree recursively.
@@ -35,4 +35,4 @@ export declare class ShreddedSummaryDocumentStorageService implements IDocumentS
35
35
  private getPreviousFullSnapshot;
36
36
  private getCacheKey;
37
37
  }
38
- //# sourceMappingURL=shreddedSummaryDocumentStorageService.d.mts.map
38
+ //# sourceMappingURL=shreddedSummaryDocumentStorageService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shreddedSummaryDocumentStorageService.d.ts","sourceRoot":"","sources":["../src/shreddedSummaryDocumentStorageService.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACN,uBAAuB,EACvB,+BAA+B,EAC/B,eAAe,EACf,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EACN,mBAAmB,EACnB,eAAe,EACf,cAAc,EACd,YAAY,EACZ,QAAQ,EACR,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EACN,mBAAmB,EAInB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,MAAM,EAAiB,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAC;AAO7D;;;;GAIG;AACH,qBAAa,qCAAsC,YAAW,uBAAuB;IAkBnF,SAAS,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM;IAC7B,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,UAAU;IACtC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,mBAAmB;aAC9B,QAAQ,EAAE,+BAA+B;IAIzD,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAxBnC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAoB;IAGvC,SAAS,CAAC,QAAQ,CAAC,aAAa,sBAA6B;IAC7D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAsC;IAChE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA2C;YAE/D,uBAAuB;gBAUjB,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,UAAU,EACnB,MAAM,EAAE,mBAAmB,EAC9B,QAAQ,EAAE,+BAA+B,EACzD,cAAc,CAAC,EAAE,4BAA4B,EAC7C,SAAS,CAAC,EAAE,MAAM,CAAC,eAAe,CAAC,EACnC,iBAAiB,CAAC,EAAE,MAAM,CAAC,oBAAoB,CAAC,EAC/B,iBAAiB,GAAE,CACnC,YAAY,CAAC,EAAE,OAAO,KAClB,OAAO,CAAC,UAAU,CAA4B;IAYvC,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAqBzE,eAAe,CAAC,OAAO,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAyCpE,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IA8BlD,wBAAwB,CACpC,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,eAAe,GACtB,OAAO,CAAC,MAAM,CAAC;IAqBL,eAAe,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,YAAY,CAAC;IAI9D,UAAU,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,mBAAmB,CAAC;YAqB9D,uBAAuB;IAYrC,OAAO,CAAC,WAAW;CAGnB"}
@@ -2,12 +2,12 @@
2
2
  * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
3
  * Licensed under the MIT License.
4
4
  */
5
- import { PerformanceEvent, createChildMonitoringContext, } from "@fluidframework/telemetry-utils";
6
- import { stringToBuffer, Uint8ArrayToString } from "@fluid-internal/client-utils";
5
+ import { Uint8ArrayToString, stringToBuffer } from "@fluid-internal/client-utils";
7
6
  import { buildGitTreeHierarchy } from "@fluidframework/protocol-base";
8
- import { InMemoryCache } from "./cache.mjs";
9
- import { RetriableGitManager } from "./retriableGitManager.mjs";
10
- import { SummaryTreeUploadManager } from "./summaryTreeUploadManager.mjs";
7
+ import { PerformanceEvent, createChildMonitoringContext, } from "@fluidframework/telemetry-utils";
8
+ import { InMemoryCache } from "./cache.js";
9
+ import { RetriableGitManager } from "./retriableGitManager.js";
10
+ import { SummaryTreeUploadManager } from "./summaryTreeUploadManager.js";
11
11
  const isNode = typeof window === "undefined";
12
12
  /**
13
13
  * Document access to underlying storage for routerlicious driver.
@@ -150,4 +150,4 @@ export class ShreddedSummaryDocumentStorageService {
150
150
  return `${this.id}:${blobId}`;
151
151
  }
152
152
  }
153
- //# sourceMappingURL=shreddedSummaryDocumentStorageService.mjs.map
153
+ //# sourceMappingURL=shreddedSummaryDocumentStorageService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shreddedSummaryDocumentStorageService.js","sourceRoot":"","sources":["../src/shreddedSummaryDocumentStorageService.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 { Uint8ArrayToString, stringToBuffer } from \"@fluid-internal/client-utils\";\nimport {\n\tIDocumentStorageService,\n\tIDocumentStorageServicePolicies,\n\tISummaryContext,\n} from \"@fluidframework/driver-definitions\";\nimport { buildGitTreeHierarchy } from \"@fluidframework/protocol-base\";\nimport {\n\tICreateBlobResponse,\n\tISnapshotTreeEx,\n\tISummaryHandle,\n\tISummaryTree,\n\tIVersion,\n} from \"@fluidframework/protocol-definitions\";\nimport {\n\tITelemetryLoggerExt,\n\tMonitoringContext,\n\tPerformanceEvent,\n\tcreateChildMonitoringContext,\n} from \"@fluidframework/telemetry-utils\";\nimport { ICache, InMemoryCache } from \"./cache.js\";\nimport { ISnapshotTreeVersion } from \"./definitions.js\";\nimport { GitManager } from \"./gitManager.js\";\nimport { IRouterliciousDriverPolicies } from \"./policies.js\";\nimport { RetriableGitManager } from \"./retriableGitManager.js\";\nimport { ISummaryUploadManager } from \"./storageContracts.js\";\nimport { SummaryTreeUploadManager } from \"./summaryTreeUploadManager.js\";\n\nconst isNode = typeof window === \"undefined\";\n\n/**\n * Document access to underlying storage for routerlicious driver.\n * Uploads summaries piece-by-piece traversing the tree recursively.\n * Downloads summaries piece-by-piece on-demand, or up-front when prefetch is enabled.\n */\nexport class ShreddedSummaryDocumentStorageService implements IDocumentStorageService {\n\tprivate readonly mc: MonitoringContext;\n\t// The values of this cache is useless. We only need the keys. So we are always putting\n\t// empty strings as values.\n\tprotected readonly blobsShaCache = new Map<string, string>();\n\tprivate readonly blobCache: ICache<ArrayBufferLike> | undefined;\n\tprivate readonly snapshotTreeCache: ICache<ISnapshotTreeVersion> | undefined;\n\n\tprivate async getSummaryUploadManager(): Promise<ISummaryUploadManager> {\n\t\tconst manager = await this.getStorageManager();\n\t\treturn new SummaryTreeUploadManager(\n\t\t\tnew RetriableGitManager(manager, this.logger),\n\t\t\tthis.blobsShaCache,\n\t\t\tthis.getPreviousFullSnapshot.bind(this),\n\t\t);\n\t}\n\n\tconstructor(\n\t\tprotected readonly id: string,\n\t\tprotected readonly manager: GitManager,\n\t\tprotected readonly logger: ITelemetryLoggerExt,\n\t\tpublic readonly policies: IDocumentStorageServicePolicies,\n\t\tdriverPolicies?: IRouterliciousDriverPolicies,\n\t\tblobCache?: ICache<ArrayBufferLike>,\n\t\tsnapshotTreeCache?: ICache<ISnapshotTreeVersion>,\n\t\tprivate readonly getStorageManager: (\n\t\t\tdisableCache?: boolean,\n\t\t) => Promise<GitManager> = async () => this.manager,\n\t) {\n\t\tif (driverPolicies?.enableRestLess === true || isNode) {\n\t\t\tthis.blobCache = blobCache ?? new InMemoryCache();\n\t\t\tthis.snapshotTreeCache = snapshotTreeCache ?? new InMemoryCache();\n\t\t}\n\n\t\tthis.mc = createChildMonitoringContext({\n\t\t\tlogger,\n\t\t});\n\t}\n\n\tpublic async getVersions(versionId: string | null, count: number): Promise<IVersion[]> {\n\t\tconst id = versionId ? versionId : this.id;\n\t\tconst commits = await PerformanceEvent.timedExecAsync(\n\t\t\tthis.logger,\n\t\t\t{\n\t\t\t\teventName: \"getVersions\",\n\t\t\t\tversionId: id,\n\t\t\t\tcount,\n\t\t\t},\n\t\t\tasync () => {\n\t\t\t\tconst manager = await this.getStorageManager();\n\t\t\t\treturn (await manager.getCommits(id, count)).content;\n\t\t\t},\n\t\t);\n\t\treturn commits.map((commit) => ({\n\t\t\tdate: commit.commit.author.date,\n\t\t\tid: commit.sha,\n\t\t\ttreeId: commit.commit.tree.sha,\n\t\t}));\n\t}\n\n\tpublic async getSnapshotTree(version?: IVersion): Promise<ISnapshotTreeEx | null> {\n\t\tlet requestVersion = version;\n\t\tif (!requestVersion) {\n\t\t\tconst versions = await this.getVersions(this.id, 1);\n\t\t\tif (versions.length === 0) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\trequestVersion = versions[0];\n\t\t}\n\n\t\tconst cachedSnapshotTree = await this.snapshotTreeCache?.get(\n\t\t\tthis.getCacheKey(requestVersion.treeId),\n\t\t);\n\t\tif (cachedSnapshotTree) {\n\t\t\treturn cachedSnapshotTree.snapshotTree as ISnapshotTreeEx;\n\t\t}\n\n\t\tconst rawTree = await PerformanceEvent.timedExecAsync(\n\t\t\tthis.logger,\n\t\t\t{\n\t\t\t\teventName: \"getSnapshotTree\",\n\t\t\t\ttreeId: requestVersion.treeId,\n\t\t\t},\n\t\t\tasync (event) => {\n\t\t\t\tconst manager = await this.getStorageManager();\n\t\t\t\tconst response = (await manager.getTree(requestVersion!.treeId)).content;\n\t\t\t\tevent.end({\n\t\t\t\t\tsize: response.tree.length,\n\t\t\t\t});\n\t\t\t\treturn response;\n\t\t\t},\n\t\t);\n\t\tconst tree = buildGitTreeHierarchy(rawTree, this.blobsShaCache, true);\n\t\tawait this.snapshotTreeCache?.put(this.getCacheKey(tree.id), {\n\t\t\tid: requestVersion.id,\n\t\t\tsnapshotTree: tree,\n\t\t});\n\t\treturn tree;\n\t}\n\n\tpublic async readBlob(blobId: string): Promise<ArrayBufferLike> {\n\t\tconst cachedBlob = await this.blobCache?.get(this.getCacheKey(blobId));\n\t\tif (cachedBlob) {\n\t\t\treturn cachedBlob;\n\t\t}\n\n\t\tconst value = await PerformanceEvent.timedExecAsync(\n\t\t\tthis.logger,\n\t\t\t{\n\t\t\t\teventName: \"readBlob\",\n\t\t\t\tblobId,\n\t\t\t},\n\t\t\tasync (event) => {\n\t\t\t\tconst manager = await this.getStorageManager();\n\t\t\t\tconst response = (await manager.getBlob(blobId)).content;\n\t\t\t\tevent.end({\n\t\t\t\t\tsize: response.size,\n\t\t\t\t});\n\t\t\t\treturn response;\n\t\t\t},\n\t\t\tundefined, // workers\n\t\t\tundefined, // recordHeapSize\n\t\t\tthis.mc.config.getNumber(\"Fluid.Driver.ReadBlobTelemetrySampling\"),\n\t\t);\n\t\tthis.blobsShaCache.set(value.sha, \"\");\n\t\tconst bufferContent = stringToBuffer(value.content, value.encoding);\n\t\tawait this.blobCache?.put(this.getCacheKey(value.sha), bufferContent);\n\t\treturn bufferContent;\n\t}\n\n\tpublic async uploadSummaryWithContext(\n\t\tsummary: ISummaryTree,\n\t\tcontext: ISummaryContext,\n\t): Promise<string> {\n\t\tconst summaryHandle = await PerformanceEvent.timedExecAsync(\n\t\t\tthis.logger,\n\t\t\t{\n\t\t\t\teventName: \"uploadSummaryWithContext\",\n\t\t\t\tproposalHandle: context.proposalHandle,\n\t\t\t\tackHandle: context.ackHandle,\n\t\t\t\treferenceSequenceNumber: context.referenceSequenceNumber,\n\t\t\t},\n\t\t\tasync () => {\n\t\t\t\tconst summaryUploadManager = await this.getSummaryUploadManager();\n\t\t\t\treturn summaryUploadManager.writeSummaryTree(\n\t\t\t\t\tsummary,\n\t\t\t\t\tcontext.ackHandle ?? \"\",\n\t\t\t\t\t\"channel\",\n\t\t\t\t);\n\t\t\t},\n\t\t);\n\t\treturn summaryHandle;\n\t}\n\n\tpublic async downloadSummary(handle: ISummaryHandle): Promise<ISummaryTree> {\n\t\tthrow new Error(\"NOT IMPLEMENTED!\");\n\t}\n\n\tpublic async createBlob(file: ArrayBufferLike): Promise<ICreateBlobResponse> {\n\t\tconst uint8ArrayFile = new Uint8Array(file);\n\t\treturn PerformanceEvent.timedExecAsync(\n\t\t\tthis.logger,\n\t\t\t{\n\t\t\t\teventName: \"createBlob\",\n\t\t\t\tsize: uint8ArrayFile.length,\n\t\t\t},\n\t\t\tasync (event) => {\n\t\t\t\tconst manager = await this.getStorageManager();\n\t\t\t\tconst response = await manager\n\t\t\t\t\t.createBlob(Uint8ArrayToString(uint8ArrayFile, \"base64\"), \"base64\")\n\t\t\t\t\t.then((r) => ({ id: r.content.sha, url: r.content.url }));\n\t\t\t\tevent.end({\n\t\t\t\t\tblobId: response.id,\n\t\t\t\t});\n\t\t\t\treturn response;\n\t\t\t},\n\t\t);\n\t}\n\n\tprivate async getPreviousFullSnapshot(\n\t\tparentHandle: string,\n\t): Promise<ISnapshotTreeEx | null | undefined> {\n\t\treturn parentHandle\n\t\t\t? this.getVersions(parentHandle, 1).then(async (versions) => {\n\t\t\t\t\t// Clear the cache as the getSnapshotTree call will fill the cache.\n\t\t\t\t\tthis.blobsShaCache.clear();\n\t\t\t\t\treturn this.getSnapshotTree(versions[0]);\n\t\t\t })\n\t\t\t: undefined;\n\t}\n\n\tprivate getCacheKey(blobId: string): string {\n\t\treturn `${this.id}:${blobId}`;\n\t}\n}\n"]}
@@ -5,8 +5,8 @@
5
5
  import * as git from "@fluidframework/gitresources";
6
6
  import * as api from "@fluidframework/protocol-definitions";
7
7
  import { IWholeSummaryPayload, IWholeSummaryPayloadType, IWriteSummaryResponse } from "@fluidframework/server-services-client";
8
- import { IR11sResponse } from "./restWrapper.mjs";
9
- import { IWholeFlatSnapshot } from "./contracts.mjs";
8
+ import { IWholeFlatSnapshot } from "./contracts.js";
9
+ import { IR11sResponse } from "./restWrapper.js";
10
10
  /**
11
11
  * Interface to a generic Git provider
12
12
  */
@@ -42,4 +42,4 @@ export interface ISummaryUploadManager {
42
42
  */
43
43
  writeSummaryTree(summaryTree: api.ISummaryTree, parentHandle: string, summaryType: IWholeSummaryPayloadType, sequenceNumber?: number): Promise<string>;
44
44
  }
45
- //# sourceMappingURL=storageContracts.d.mts.map
45
+ //# sourceMappingURL=storageContracts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storageContracts.d.ts","sourceRoot":"","sources":["../src/storageContracts.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,GAAG,MAAM,8BAA8B,CAAC;AACpD,OAAO,KAAK,GAAG,MAAM,sCAAsC,CAAC;AAC5D,OAAO,EACN,oBAAoB,EACpB,wBAAwB,EACxB,qBAAqB,EACrB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,UAAU;IAC1B,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IACxD,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,iBAAiB,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC;IACzF,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;IACrF,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,iBAAiB,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3E,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5E,aAAa,CACZ,OAAO,EAAE,oBAAoB,EAC7B,OAAO,CAAC,EAAE,OAAO,GACf,OAAO,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC,CAAC;IACjD,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC,CAAC;CACrE;AAED,MAAM,WAAW,WAAW;IAC3B,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;IACrF,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7E,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IACxD,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAC/F,aAAa,CAAC,MAAM,EAAE,GAAG,CAAC,iBAAiB,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IAChF,aAAa,CACZ,OAAO,EAAE,oBAAoB,EAC7B,OAAO,CAAC,EAAE,OAAO,GACf,OAAO,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC,CAAC;IACjD,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC,CAAC;CACrE;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACrC;;;;;;;OAOG;IACH,gBAAgB,CACf,WAAW,EAAE,GAAG,CAAC,YAAY,EAC7B,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,wBAAwB,EACrC,cAAc,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,MAAM,CAAC,CAAC;CACnB"}
@@ -0,0 +1,6 @@
1
+ /*!
2
+ * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=storageContracts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storageContracts.js","sourceRoot":"","sources":["../src/storageContracts.ts"],"names":[],"mappings":"AAAA;;;GAGG","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport * as git from \"@fluidframework/gitresources\";\nimport * as api from \"@fluidframework/protocol-definitions\";\nimport {\n\tIWholeSummaryPayload,\n\tIWholeSummaryPayloadType,\n\tIWriteSummaryResponse,\n} from \"@fluidframework/server-services-client\";\nimport { IWholeFlatSnapshot } from \"./contracts.js\";\nimport { IR11sResponse } from \"./restWrapper.js\";\n\n/**\n * Interface to a generic Git provider\n */\nexport interface IHistorian {\n\tgetBlob(sha: string): Promise<IR11sResponse<git.IBlob>>;\n\tcreateBlob(blob: git.ICreateBlobParams): Promise<IR11sResponse<git.ICreateBlobResponse>>;\n\tgetCommits(sha: string, count: number): Promise<IR11sResponse<git.ICommitDetails[]>>;\n\tcreateTree(tree: git.ICreateTreeParams): Promise<IR11sResponse<git.ITree>>;\n\tgetTree(sha: string, recursive: boolean): Promise<IR11sResponse<git.ITree>>;\n\tcreateSummary(\n\t\tsummary: IWholeSummaryPayload,\n\t\tinitial?: boolean,\n\t): Promise<IR11sResponse<IWriteSummaryResponse>>;\n\tgetSnapshot(sha: string): Promise<IR11sResponse<IWholeFlatSnapshot>>;\n}\n\nexport interface IGitManager {\n\tgetCommits(sha: string, count: number): Promise<IR11sResponse<git.ICommitDetails[]>>;\n\tgetTree(root: string, recursive: boolean): Promise<IR11sResponse<git.ITree>>;\n\tgetBlob(sha: string): Promise<IR11sResponse<git.IBlob>>;\n\tcreateBlob(content: string, encoding: string): Promise<IR11sResponse<git.ICreateBlobResponse>>;\n\tcreateGitTree(params: git.ICreateTreeParams): Promise<IR11sResponse<git.ITree>>;\n\tcreateSummary(\n\t\tsummary: IWholeSummaryPayload,\n\t\tinitial?: boolean,\n\t): Promise<IR11sResponse<IWriteSummaryResponse>>;\n\tgetSnapshot(sha: string): Promise<IR11sResponse<IWholeFlatSnapshot>>;\n}\n\n/**\n * Uploads a summary to storage.\n */\nexport interface ISummaryUploadManager {\n\t/**\n\t * Writes summary tree to storage.\n\t * @param summaryTree - Summary tree to write to storage\n\t * @param parentHandle - Parent summary acked handle (if available from summary ack)\n\t * @param summaryType - type of summary being uploaded\n\t * @param sequenceNumber - optional reference sequence number of the summary\n\t * @returns Id of created tree as a string.\n\t */\n\twriteSummaryTree(\n\t\tsummaryTree: api.ISummaryTree,\n\t\tparentHandle: string,\n\t\tsummaryType: IWholeSummaryPayloadType,\n\t\tsequenceNumber?: number,\n\t): Promise<string>;\n}\n"]}
@@ -4,7 +4,7 @@
4
4
  */
5
5
  import { ISnapshotTreeEx, ISummaryTree } from "@fluidframework/protocol-definitions";
6
6
  import { IWholeSummaryPayloadType } from "@fluidframework/server-services-client";
7
- import { IGitManager, ISummaryUploadManager } from "./storageContracts.mjs";
7
+ import { IGitManager, ISummaryUploadManager } from "./storageContracts.js";
8
8
  /**
9
9
  * Recursively writes summary tree as individual summary blobs.
10
10
  */
@@ -20,4 +20,4 @@ export declare class SummaryTreeUploadManager implements ISummaryUploadManager {
20
20
  private getIdFromPath;
21
21
  private getIdFromPathCore;
22
22
  }
23
- //# sourceMappingURL=summaryTreeUploadManager.d.mts.map
23
+ //# sourceMappingURL=summaryTreeUploadManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"summaryTreeUploadManager.d.ts","sourceRoot":"","sources":["../src/summaryTreeUploadManager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,EACN,eAAe,EACf,YAAY,EAGZ,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAE3E;;GAEG;AACH,qBAAa,wBAAyB,YAAW,qBAAqB;IAEpE,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,uBAAuB;gBAFvB,OAAO,EAAE,WAAW,EACpB,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAClC,uBAAuB,EAAE,CACzC,YAAY,EAAE,MAAM,KAChB,OAAO,CAAC,eAAe,GAAG,IAAI,GAAG,SAAS,CAAC;IAGpC,gBAAgB,CAC5B,WAAW,EAAE,YAAY,EACzB,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,wBAAwB,EACrC,cAAc,CAAC,EAAE,MAAM,EACvB,OAAO,CAAC,EAAE,OAAO,GACf,OAAO,CAAC,MAAM,CAAC;YAKJ,oBAAoB;YAsBpB,sBAAsB;YA0BtB,gBAAgB;IAgB9B,OAAO,CAAC,aAAa;IAiBrB,OAAO,CAAC,iBAAiB;CAgCzB"}
@@ -2,7 +2,7 @@
2
2
  * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
3
  * Licensed under the MIT License.
4
4
  */
5
- import { gitHashFile, IsoBuffer, Uint8ArrayToString } from "@fluid-internal/client-utils";
5
+ import { IsoBuffer, Uint8ArrayToString, gitHashFile } from "@fluid-internal/client-utils";
6
6
  import { assert, unreachableCase } from "@fluidframework/core-utils";
7
7
  import { getGitMode, getGitType } from "@fluidframework/protocol-base";
8
8
  import { SummaryType, } from "@fluidframework/protocol-definitions";
@@ -103,4 +103,4 @@ export class SummaryTreeUploadManager {
103
103
  return this.getIdFromPathCore(handleType, path.slice(1), previousSnapshot.trees[key]);
104
104
  }
105
105
  }
106
- //# sourceMappingURL=summaryTreeUploadManager.mjs.map
106
+ //# sourceMappingURL=summaryTreeUploadManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"summaryTreeUploadManager.js","sourceRoot":"","sources":["../src/summaryTreeUploadManager.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 { IsoBuffer, Uint8ArrayToString, gitHashFile } from \"@fluid-internal/client-utils\";\nimport { assert, unreachableCase } from \"@fluidframework/core-utils\";\nimport { ICreateTreeEntry } from \"@fluidframework/gitresources\";\nimport { getGitMode, getGitType } from \"@fluidframework/protocol-base\";\nimport {\n\tISnapshotTreeEx,\n\tISummaryTree,\n\tSummaryObject,\n\tSummaryType,\n} from \"@fluidframework/protocol-definitions\";\nimport { IWholeSummaryPayloadType } from \"@fluidframework/server-services-client\";\nimport { IGitManager, ISummaryUploadManager } from \"./storageContracts.js\";\n\n/**\n * Recursively writes summary tree as individual summary blobs.\n */\nexport class SummaryTreeUploadManager implements ISummaryUploadManager {\n\tconstructor(\n\t\tprivate readonly manager: IGitManager,\n\t\tprivate readonly blobsShaCache: Map<string, string>,\n\t\tprivate readonly getPreviousFullSnapshot: (\n\t\t\tparentHandle: string,\n\t\t) => Promise<ISnapshotTreeEx | null | undefined>,\n\t) {}\n\n\tpublic async writeSummaryTree(\n\t\tsummaryTree: ISummaryTree,\n\t\tparentHandle: string,\n\t\tsummaryType: IWholeSummaryPayloadType,\n\t\tsequenceNumber?: number,\n\t\tinitial?: boolean,\n\t): Promise<string> {\n\t\tconst previousFullSnapshot = await this.getPreviousFullSnapshot(parentHandle);\n\t\treturn this.writeSummaryTreeCore(summaryTree, previousFullSnapshot ?? undefined);\n\t}\n\n\tprivate async writeSummaryTreeCore(\n\t\tsummaryTree: ISummaryTree,\n\t\tpreviousFullSnapshot: ISnapshotTreeEx | undefined,\n\t): Promise<string> {\n\t\tconst entries = await Promise.all(\n\t\t\tObject.keys(summaryTree.tree).map(async (key) => {\n\t\t\t\tconst entry = summaryTree.tree[key];\n\t\t\t\tconst pathHandle = await this.writeSummaryTreeObject(entry, previousFullSnapshot);\n\t\t\t\tconst treeEntry: ICreateTreeEntry = {\n\t\t\t\t\tmode: getGitMode(entry),\n\t\t\t\t\tpath: encodeURIComponent(key),\n\t\t\t\t\tsha: pathHandle,\n\t\t\t\t\ttype: getGitType(entry),\n\t\t\t\t};\n\t\t\t\treturn treeEntry;\n\t\t\t}),\n\t\t);\n\n\t\tconst treeHandle = (await this.manager.createGitTree({ tree: entries })).content;\n\t\treturn treeHandle.sha;\n\t}\n\n\tprivate async writeSummaryTreeObject(\n\t\tobject: SummaryObject,\n\t\tpreviousFullSnapshot: ISnapshotTreeEx | undefined,\n\t): Promise<string> {\n\t\tswitch (object.type) {\n\t\t\tcase SummaryType.Blob: {\n\t\t\t\treturn this.writeSummaryBlob(object.content);\n\t\t\t}\n\t\t\tcase SummaryType.Handle: {\n\t\t\t\tif (previousFullSnapshot === undefined) {\n\t\t\t\t\tthrow Error(\"Parent summary does not exist to reference by handle.\");\n\t\t\t\t}\n\t\t\t\treturn this.getIdFromPath(object.handleType, object.handle, previousFullSnapshot);\n\t\t\t}\n\t\t\tcase SummaryType.Tree: {\n\t\t\t\treturn this.writeSummaryTreeCore(object, previousFullSnapshot);\n\t\t\t}\n\t\t\tcase SummaryType.Attachment: {\n\t\t\t\treturn object.id;\n\t\t\t}\n\n\t\t\tdefault:\n\t\t\t\tunreachableCase(object, `Unknown type: ${(object as any).type}`);\n\t\t}\n\t}\n\n\tprivate async writeSummaryBlob(content: string | Uint8Array): Promise<string> {\n\t\tconst { parsedContent, encoding } =\n\t\t\ttypeof content === \"string\"\n\t\t\t\t? { parsedContent: content, encoding: \"utf-8\" }\n\t\t\t\t: { parsedContent: Uint8ArrayToString(content, \"base64\"), encoding: \"base64\" };\n\n\t\t// The gitHashFile would return the same hash as returned by the server as blob.sha\n\t\tconst hash = await gitHashFile(IsoBuffer.from(parsedContent, encoding));\n\t\tif (!this.blobsShaCache.has(hash)) {\n\t\t\tthis.blobsShaCache.set(hash, \"\");\n\t\t\tconst blob = (await this.manager.createBlob(parsedContent, encoding)).content;\n\t\t\tassert(hash === blob.sha, 0x0b6 /* \"Blob.sha and hash do not match!!\" */);\n\t\t}\n\t\treturn hash;\n\t}\n\n\tprivate getIdFromPath(\n\t\thandleType: SummaryType,\n\t\thandlePath: string,\n\t\tpreviousFullSnapshot: ISnapshotTreeEx,\n\t): string {\n\t\tconst path = handlePath.split(\"/\").map((part) => decodeURIComponent(part));\n\t\tif (path[0] === \"\") {\n\t\t\t// root of tree should be unnamed\n\t\t\tpath.shift();\n\t\t}\n\t\tif (path.length === 0) {\n\t\t\treturn previousFullSnapshot.id;\n\t\t}\n\n\t\treturn this.getIdFromPathCore(handleType, path, previousFullSnapshot);\n\t}\n\n\tprivate getIdFromPathCore(\n\t\thandleType: SummaryType,\n\t\tpath: string[],\n\t\t/** Previous snapshot, subtree relative to this path part */\n\t\tpreviousSnapshot: ISnapshotTreeEx,\n\t): string {\n\t\tassert(path.length > 0, 0x0b3 /* \"Expected at least 1 path part\" */);\n\t\tconst key = path[0];\n\t\tif (path.length === 1) {\n\t\t\tswitch (handleType) {\n\t\t\t\tcase SummaryType.Blob: {\n\t\t\t\t\tconst tryId = previousSnapshot.blobs[key];\n\t\t\t\t\tassert(\n\t\t\t\t\t\t!!tryId,\n\t\t\t\t\t\t0x0b4 /* \"Parent summary does not have blob handle for specified path.\" */,\n\t\t\t\t\t);\n\t\t\t\t\treturn tryId;\n\t\t\t\t}\n\t\t\t\tcase SummaryType.Tree: {\n\t\t\t\t\tconst tryId = previousSnapshot.trees[key]?.id;\n\t\t\t\t\tassert(\n\t\t\t\t\t\t!!tryId,\n\t\t\t\t\t\t0x0b5 /* \"Parent summary does not have tree handle for specified path.\" */,\n\t\t\t\t\t);\n\t\t\t\t\treturn tryId;\n\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\tthrow Error(`Unexpected handle summary object type: \"${handleType}\".`);\n\t\t\t}\n\t\t}\n\t\treturn this.getIdFromPathCore(handleType, path.slice(1), previousSnapshot.trees[key]);\n\t}\n}\n"]}