@fluidframework/driver-utils 1.4.0-121020 → 2.0.0-dev-rc.1.0.0.225277

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 (392) hide show
  1. package/.eslintrc.js +17 -7
  2. package/.mocharc.js +12 -0
  3. package/CHANGELOG.md +141 -0
  4. package/README.md +68 -1
  5. package/api-extractor-esm.json +4 -0
  6. package/api-extractor-lint.json +4 -0
  7. package/api-extractor.json +2 -2
  8. package/api-report/driver-utils.api.md +401 -0
  9. package/dist/adapters/compression/compressionTypes.cjs +20 -0
  10. package/dist/adapters/compression/compressionTypes.cjs.map +1 -0
  11. package/dist/adapters/compression/compressionTypes.d.ts +23 -0
  12. package/dist/adapters/compression/compressionTypes.d.ts.map +1 -0
  13. package/dist/adapters/compression/documentServiceCompressionAdapter.cjs +23 -0
  14. package/dist/adapters/compression/documentServiceCompressionAdapter.cjs.map +1 -0
  15. package/dist/adapters/compression/documentServiceCompressionAdapter.d.ts +13 -0
  16. package/dist/adapters/compression/documentServiceCompressionAdapter.d.ts.map +1 -0
  17. package/dist/adapters/compression/documentServiceFactoryCompressionAdapter.cjs +31 -0
  18. package/dist/adapters/compression/documentServiceFactoryCompressionAdapter.cjs.map +1 -0
  19. package/dist/adapters/compression/documentServiceFactoryCompressionAdapter.d.ts +16 -0
  20. package/dist/adapters/compression/documentServiceFactoryCompressionAdapter.d.ts.map +1 -0
  21. package/dist/adapters/compression/index.cjs +15 -0
  22. package/dist/adapters/compression/index.cjs.map +1 -0
  23. package/dist/adapters/compression/index.d.ts +8 -0
  24. package/dist/adapters/compression/index.d.ts.map +1 -0
  25. package/dist/adapters/compression/summaryblob/documentStorageServiceSummaryBlobCompressionAdapter.cjs +370 -0
  26. package/dist/adapters/compression/summaryblob/documentStorageServiceSummaryBlobCompressionAdapter.cjs.map +1 -0
  27. package/dist/adapters/compression/summaryblob/documentStorageServiceSummaryBlobCompressionAdapter.d.ts +165 -0
  28. package/dist/adapters/compression/summaryblob/documentStorageServiceSummaryBlobCompressionAdapter.d.ts.map +1 -0
  29. package/dist/adapters/compression/summaryblob/index.cjs +11 -0
  30. package/dist/adapters/compression/summaryblob/index.cjs.map +1 -0
  31. package/dist/adapters/compression/summaryblob/index.d.ts +6 -0
  32. package/dist/adapters/compression/summaryblob/index.d.ts.map +1 -0
  33. package/dist/adapters/index.cjs +14 -0
  34. package/dist/adapters/index.cjs.map +1 -0
  35. package/dist/adapters/index.d.ts +7 -0
  36. package/dist/adapters/index.d.ts.map +1 -0
  37. package/dist/adapters/predefinedAdapters.cjs +52 -0
  38. package/dist/adapters/predefinedAdapters.cjs.map +1 -0
  39. package/dist/adapters/predefinedAdapters.d.ts +21 -0
  40. package/dist/adapters/predefinedAdapters.d.ts.map +1 -0
  41. package/dist/blob.cjs +65 -0
  42. package/dist/blob.cjs.map +1 -0
  43. package/dist/blob.d.ts +56 -0
  44. package/dist/blob.d.ts.map +1 -0
  45. package/dist/{buildSnapshotTree.js → buildSnapshotTree.cjs} +7 -5
  46. package/dist/buildSnapshotTree.cjs.map +1 -0
  47. package/dist/buildSnapshotTree.d.ts +1 -0
  48. package/dist/buildSnapshotTree.d.ts.map +1 -1
  49. package/dist/documentServiceFactoryProxy.cjs +27 -0
  50. package/dist/documentServiceFactoryProxy.cjs.map +1 -0
  51. package/dist/documentServiceFactoryProxy.d.ts +19 -0
  52. package/dist/documentServiceFactoryProxy.d.ts.map +1 -0
  53. package/dist/documentServiceProxy.cjs +36 -0
  54. package/dist/documentServiceProxy.cjs.map +1 -0
  55. package/dist/documentServiceProxy.d.ts +21 -0
  56. package/dist/documentServiceProxy.d.ts.map +1 -0
  57. package/dist/{documentStorageServiceProxy.js → documentStorageServiceProxy.cjs} +10 -8
  58. package/dist/documentStorageServiceProxy.cjs.map +1 -0
  59. package/dist/documentStorageServiceProxy.d.ts +5 -2
  60. package/dist/documentStorageServiceProxy.d.ts.map +1 -1
  61. package/dist/driver-utils-alpha.d.ts +163 -0
  62. package/dist/driver-utils-beta.d.ts +178 -0
  63. package/dist/driver-utils-public.d.ts +178 -0
  64. package/dist/driver-utils-untrimmed.d.ts +590 -0
  65. package/dist/{error.js → error.cjs} +10 -3
  66. package/dist/error.cjs.map +1 -0
  67. package/dist/error.d.ts +8 -3
  68. package/dist/error.d.ts.map +1 -1
  69. package/dist/index.cjs +69 -0
  70. package/dist/index.cjs.map +1 -0
  71. package/dist/index.d.ts +16 -21
  72. package/dist/index.d.ts.map +1 -1
  73. package/dist/{insecureUrlResolver.js → insecureUrlResolver.cjs} +10 -11
  74. package/dist/insecureUrlResolver.cjs.map +1 -0
  75. package/dist/insecureUrlResolver.d.ts +1 -0
  76. package/dist/insecureUrlResolver.d.ts.map +1 -1
  77. package/dist/messageRecognition.cjs +38 -0
  78. package/dist/messageRecognition.cjs.map +1 -0
  79. package/dist/messageRecognition.d.ts +16 -26
  80. package/dist/messageRecognition.d.ts.map +1 -1
  81. package/dist/{network.js → network.cjs} +86 -24
  82. package/dist/network.cjs.map +1 -0
  83. package/dist/network.d.ts +69 -20
  84. package/dist/network.d.ts.map +1 -1
  85. package/dist/networkUtils.cjs +29 -0
  86. package/dist/networkUtils.cjs.map +1 -0
  87. package/dist/networkUtils.d.ts +4 -10
  88. package/dist/networkUtils.d.ts.map +1 -1
  89. package/dist/{packageVersion.js → packageVersion.cjs} +2 -2
  90. package/dist/packageVersion.cjs.map +1 -0
  91. package/dist/packageVersion.d.ts +1 -1
  92. package/dist/packageVersion.d.ts.map +1 -1
  93. package/dist/{parallelRequests.js → parallelRequests.cjs} +146 -74
  94. package/dist/parallelRequests.cjs.map +1 -0
  95. package/dist/parallelRequests.d.ts +19 -6
  96. package/dist/parallelRequests.d.ts.map +1 -1
  97. package/dist/{prefetchDocumentStorageService.js → prefetchDocumentStorageService.cjs} +7 -4
  98. package/dist/prefetchDocumentStorageService.cjs.map +1 -0
  99. package/dist/prefetchDocumentStorageService.d.ts +4 -2
  100. package/dist/prefetchDocumentStorageService.d.ts.map +1 -1
  101. package/dist/{rateLimiter.js → rateLimiter.cjs} +6 -3
  102. package/dist/rateLimiter.cjs.map +1 -0
  103. package/dist/rateLimiter.d.ts +3 -0
  104. package/dist/rateLimiter.d.ts.map +1 -1
  105. package/dist/readAndParse.cjs +28 -0
  106. package/dist/readAndParse.cjs.map +1 -0
  107. package/dist/readAndParse.d.ts +10 -4
  108. package/dist/readAndParse.d.ts.map +1 -1
  109. package/dist/runWithRetry.cjs +108 -0
  110. package/dist/runWithRetry.cjs.map +1 -0
  111. package/dist/runWithRetry.d.ts +26 -7
  112. package/dist/runWithRetry.d.ts.map +1 -1
  113. package/dist/{summaryForCreateNew.js → summaryForCreateNew.cjs} +20 -19
  114. package/dist/summaryForCreateNew.cjs.map +1 -0
  115. package/dist/summaryForCreateNew.d.ts +17 -4
  116. package/dist/summaryForCreateNew.d.ts.map +1 -1
  117. package/dist/{treeConversions.js → treeConversions.cjs} +16 -18
  118. package/dist/treeConversions.cjs.map +1 -0
  119. package/dist/treeConversions.d.ts +1 -0
  120. package/dist/treeConversions.d.ts.map +1 -1
  121. package/dist/tsdoc-metadata.json +11 -0
  122. package/lib/adapters/compression/compressionTypes.d.mts +23 -0
  123. package/lib/adapters/compression/compressionTypes.d.mts.map +1 -0
  124. package/lib/adapters/compression/compressionTypes.mjs +17 -0
  125. package/lib/adapters/compression/compressionTypes.mjs.map +1 -0
  126. package/lib/adapters/compression/documentServiceCompressionAdapter.d.mts +13 -0
  127. package/lib/adapters/compression/documentServiceCompressionAdapter.d.mts.map +1 -0
  128. package/lib/adapters/compression/documentServiceCompressionAdapter.mjs +19 -0
  129. package/lib/adapters/compression/documentServiceCompressionAdapter.mjs.map +1 -0
  130. package/lib/adapters/compression/documentServiceFactoryCompressionAdapter.d.mts +16 -0
  131. package/lib/adapters/compression/documentServiceFactoryCompressionAdapter.d.mts.map +1 -0
  132. package/lib/adapters/compression/documentServiceFactoryCompressionAdapter.mjs +27 -0
  133. package/lib/adapters/compression/documentServiceFactoryCompressionAdapter.mjs.map +1 -0
  134. package/lib/adapters/compression/index.d.mts +8 -0
  135. package/lib/adapters/compression/index.d.mts.map +1 -0
  136. package/lib/adapters/compression/index.mjs +8 -0
  137. package/lib/adapters/compression/index.mjs.map +1 -0
  138. package/lib/adapters/compression/summaryblob/documentStorageServiceSummaryBlobCompressionAdapter.d.mts +165 -0
  139. package/lib/adapters/compression/summaryblob/documentStorageServiceSummaryBlobCompressionAdapter.d.mts.map +1 -0
  140. package/lib/adapters/compression/summaryblob/documentStorageServiceSummaryBlobCompressionAdapter.mjs +366 -0
  141. package/lib/adapters/compression/summaryblob/documentStorageServiceSummaryBlobCompressionAdapter.mjs.map +1 -0
  142. package/lib/adapters/compression/summaryblob/index.d.mts +6 -0
  143. package/lib/adapters/compression/summaryblob/index.d.mts.map +1 -0
  144. package/lib/adapters/compression/summaryblob/index.mjs +6 -0
  145. package/lib/adapters/compression/summaryblob/index.mjs.map +1 -0
  146. package/lib/adapters/index.d.mts +7 -0
  147. package/lib/adapters/index.d.mts.map +1 -0
  148. package/lib/adapters/index.mjs +7 -0
  149. package/lib/adapters/index.mjs.map +1 -0
  150. package/lib/adapters/predefinedAdapters.d.mts +21 -0
  151. package/lib/adapters/predefinedAdapters.d.mts.map +1 -0
  152. package/lib/adapters/predefinedAdapters.mjs +47 -0
  153. package/lib/adapters/predefinedAdapters.mjs.map +1 -0
  154. package/lib/blob.d.mts +56 -0
  155. package/lib/blob.d.mts.map +1 -0
  156. package/lib/blob.mjs +59 -0
  157. package/lib/blob.mjs.map +1 -0
  158. package/lib/{buildSnapshotTree.d.ts → buildSnapshotTree.d.mts} +2 -1
  159. package/lib/buildSnapshotTree.d.mts.map +1 -0
  160. package/lib/{buildSnapshotTree.js → buildSnapshotTree.mjs} +6 -4
  161. package/lib/buildSnapshotTree.mjs.map +1 -0
  162. package/lib/documentServiceFactoryProxy.d.mts +19 -0
  163. package/lib/documentServiceFactoryProxy.d.mts.map +1 -0
  164. package/lib/documentServiceFactoryProxy.mjs +23 -0
  165. package/lib/documentServiceFactoryProxy.mjs.map +1 -0
  166. package/lib/documentServiceProxy.d.mts +21 -0
  167. package/lib/documentServiceProxy.d.mts.map +1 -0
  168. package/lib/documentServiceProxy.mjs +32 -0
  169. package/lib/documentServiceProxy.mjs.map +1 -0
  170. package/lib/{documentStorageServiceProxy.d.ts → documentStorageServiceProxy.d.mts} +6 -3
  171. package/lib/documentStorageServiceProxy.d.mts.map +1 -0
  172. package/lib/{documentStorageServiceProxy.js → documentStorageServiceProxy.mjs} +10 -8
  173. package/lib/documentStorageServiceProxy.mjs.map +1 -0
  174. package/lib/driver-utils-alpha.d.mts +163 -0
  175. package/lib/driver-utils-beta.d.mts +178 -0
  176. package/lib/driver-utils-public.d.mts +178 -0
  177. package/lib/driver-utils-untrimmed.d.mts +590 -0
  178. package/lib/error.d.mts +16 -0
  179. package/lib/error.d.mts.map +1 -0
  180. package/lib/error.mjs +19 -0
  181. package/lib/error.mjs.map +1 -0
  182. package/lib/index.d.mts +21 -0
  183. package/lib/index.d.mts.map +1 -0
  184. package/lib/index.mjs +21 -0
  185. package/lib/index.mjs.map +1 -0
  186. package/lib/{insecureUrlResolver.d.ts → insecureUrlResolver.d.mts} +2 -1
  187. package/lib/insecureUrlResolver.d.mts.map +1 -0
  188. package/lib/{insecureUrlResolver.js → insecureUrlResolver.mjs} +10 -11
  189. package/lib/insecureUrlResolver.mjs.map +1 -0
  190. package/lib/messageRecognition.d.mts +24 -0
  191. package/lib/messageRecognition.d.mts.map +1 -0
  192. package/lib/messageRecognition.mjs +29 -0
  193. package/lib/messageRecognition.mjs.map +1 -0
  194. package/lib/{network.d.ts → network.d.mts} +70 -21
  195. package/lib/network.d.mts.map +1 -0
  196. package/lib/{network.js → network.mjs} +85 -23
  197. package/lib/network.mjs.map +1 -0
  198. package/lib/networkUtils.d.mts +11 -0
  199. package/lib/networkUtils.d.mts.map +1 -0
  200. package/lib/networkUtils.mjs +25 -0
  201. package/lib/networkUtils.mjs.map +1 -0
  202. package/lib/{packageVersion.d.ts → packageVersion.d.mts} +2 -2
  203. package/lib/packageVersion.d.mts.map +1 -0
  204. package/lib/{packageVersion.js → packageVersion.mjs} +2 -2
  205. package/lib/packageVersion.mjs.map +1 -0
  206. package/lib/{parallelRequests.d.ts → parallelRequests.d.mts} +20 -7
  207. package/lib/parallelRequests.d.mts.map +1 -0
  208. package/lib/{parallelRequests.js → parallelRequests.mjs} +119 -52
  209. package/lib/parallelRequests.mjs.map +1 -0
  210. package/lib/{prefetchDocumentStorageService.d.ts → prefetchDocumentStorageService.d.mts} +6 -8
  211. package/lib/prefetchDocumentStorageService.d.mts.map +1 -0
  212. package/lib/{prefetchDocumentStorageService.js → prefetchDocumentStorageService.mjs} +7 -8
  213. package/lib/prefetchDocumentStorageService.mjs.map +1 -0
  214. package/lib/{rateLimiter.d.ts → rateLimiter.d.mts} +4 -1
  215. package/lib/rateLimiter.d.mts.map +1 -0
  216. package/lib/{rateLimiter.js → rateLimiter.mjs} +5 -2
  217. package/lib/rateLimiter.mjs.map +1 -0
  218. package/lib/readAndParse.d.mts +20 -0
  219. package/lib/readAndParse.d.mts.map +1 -0
  220. package/lib/readAndParse.mjs +24 -0
  221. package/lib/readAndParse.mjs.map +1 -0
  222. package/lib/{runWithRetry.d.ts → runWithRetry.d.mts} +27 -8
  223. package/lib/runWithRetry.d.mts.map +1 -0
  224. package/lib/runWithRetry.mjs +103 -0
  225. package/lib/runWithRetry.mjs.map +1 -0
  226. package/lib/{summaryForCreateNew.d.ts → summaryForCreateNew.d.mts} +18 -5
  227. package/lib/summaryForCreateNew.d.mts.map +1 -0
  228. package/lib/{summaryForCreateNew.js → summaryForCreateNew.mjs} +18 -17
  229. package/lib/summaryForCreateNew.mjs.map +1 -0
  230. package/lib/{treeConversions.d.ts → treeConversions.d.mts} +2 -1
  231. package/lib/treeConversions.d.mts.map +1 -0
  232. package/lib/{treeConversions.js → treeConversions.mjs} +12 -14
  233. package/lib/treeConversions.mjs.map +1 -0
  234. package/package.json +86 -64
  235. package/prettier.config.cjs +8 -0
  236. package/src/adapters/compression/compressionTypes.ts +25 -0
  237. package/src/adapters/compression/documentServiceCompressionAdapter.ts +28 -0
  238. package/src/adapters/compression/documentServiceFactoryCompressionAdapter.ts +54 -0
  239. package/src/adapters/compression/index.ts +12 -0
  240. package/src/adapters/compression/summaryblob/documentStorageServiceSummaryBlobCompressionAdapter.ts +451 -0
  241. package/src/adapters/compression/summaryblob/index.ts +9 -0
  242. package/src/adapters/index.ts +13 -0
  243. package/src/adapters/predefinedAdapters.ts +74 -0
  244. package/src/blob.ts +77 -0
  245. package/src/buildSnapshotTree.ts +58 -53
  246. package/src/documentServiceFactoryProxy.ts +47 -0
  247. package/src/documentServiceProxy.ts +46 -0
  248. package/src/documentStorageServiceProxy.ts +52 -37
  249. package/src/error.ts +13 -8
  250. package/src/index.ts +51 -21
  251. package/src/insecureUrlResolver.ts +125 -120
  252. package/src/messageRecognition.ts +24 -53
  253. package/src/network.ts +189 -111
  254. package/src/networkUtils.ts +24 -49
  255. package/src/packageVersion.ts +1 -1
  256. package/src/parallelRequests.ts +630 -519
  257. package/src/prefetchDocumentStorageService.ts +79 -74
  258. package/src/rateLimiter.ts +33 -30
  259. package/src/readAndParse.ts +18 -9
  260. package/src/runWithRetry.ts +145 -85
  261. package/src/summaryForCreateNew.ts +48 -29
  262. package/src/treeConversions.ts +49 -70
  263. package/tsc-multi.test.json +4 -0
  264. package/tsconfig.json +10 -12
  265. package/dist/blobAggregationStorage.d.ts +0 -43
  266. package/dist/blobAggregationStorage.d.ts.map +0 -1
  267. package/dist/blobAggregationStorage.js +0 -318
  268. package/dist/blobAggregationStorage.js.map +0 -1
  269. package/dist/blobCacheStorageService.d.ts +0 -16
  270. package/dist/blobCacheStorageService.d.ts.map +0 -1
  271. package/dist/blobCacheStorageService.js +0 -29
  272. package/dist/blobCacheStorageService.js.map +0 -1
  273. package/dist/buildSnapshotTree.js.map +0 -1
  274. package/dist/documentStorageServiceProxy.js.map +0 -1
  275. package/dist/emptyDocumentDeltaStorageService.d.ts +0 -13
  276. package/dist/emptyDocumentDeltaStorageService.d.ts.map +0 -1
  277. package/dist/emptyDocumentDeltaStorageService.js +0 -20
  278. package/dist/emptyDocumentDeltaStorageService.js.map +0 -1
  279. package/dist/error.js.map +0 -1
  280. package/dist/fluidResolvedUrl.d.ts +0 -8
  281. package/dist/fluidResolvedUrl.d.ts.map +0 -1
  282. package/dist/fluidResolvedUrl.js +0 -16
  283. package/dist/fluidResolvedUrl.js.map +0 -1
  284. package/dist/index.js +0 -38
  285. package/dist/index.js.map +0 -1
  286. package/dist/insecureUrlResolver.js.map +0 -1
  287. package/dist/messageRecognition.js +0 -73
  288. package/dist/messageRecognition.js.map +0 -1
  289. package/dist/multiDocumentServiceFactory.d.ts +0 -16
  290. package/dist/multiDocumentServiceFactory.d.ts.map +0 -1
  291. package/dist/multiDocumentServiceFactory.js +0 -63
  292. package/dist/multiDocumentServiceFactory.js.map +0 -1
  293. package/dist/multiUrlResolver.d.ts +0 -20
  294. package/dist/multiUrlResolver.d.ts.map +0 -1
  295. package/dist/multiUrlResolver.js +0 -45
  296. package/dist/multiUrlResolver.js.map +0 -1
  297. package/dist/network.js.map +0 -1
  298. package/dist/networkUtils.js +0 -59
  299. package/dist/networkUtils.js.map +0 -1
  300. package/dist/packageVersion.js.map +0 -1
  301. package/dist/parallelRequests.js.map +0 -1
  302. package/dist/prefetchDocumentStorageService.js.map +0 -1
  303. package/dist/rateLimiter.js.map +0 -1
  304. package/dist/readAndParse.js +0 -22
  305. package/dist/readAndParse.js.map +0 -1
  306. package/dist/runWithRetry.js +0 -69
  307. package/dist/runWithRetry.js.map +0 -1
  308. package/dist/summaryForCreateNew.js.map +0 -1
  309. package/dist/treeConversions.js.map +0 -1
  310. package/dist/treeUtils.d.ts +0 -51
  311. package/dist/treeUtils.d.ts.map +0 -1
  312. package/dist/treeUtils.js +0 -85
  313. package/dist/treeUtils.js.map +0 -1
  314. package/lib/blobAggregationStorage.d.ts +0 -43
  315. package/lib/blobAggregationStorage.d.ts.map +0 -1
  316. package/lib/blobAggregationStorage.js +0 -313
  317. package/lib/blobAggregationStorage.js.map +0 -1
  318. package/lib/blobCacheStorageService.d.ts +0 -16
  319. package/lib/blobCacheStorageService.d.ts.map +0 -1
  320. package/lib/blobCacheStorageService.js +0 -25
  321. package/lib/blobCacheStorageService.js.map +0 -1
  322. package/lib/buildSnapshotTree.d.ts.map +0 -1
  323. package/lib/buildSnapshotTree.js.map +0 -1
  324. package/lib/documentStorageServiceProxy.d.ts.map +0 -1
  325. package/lib/documentStorageServiceProxy.js.map +0 -1
  326. package/lib/emptyDocumentDeltaStorageService.d.ts +0 -13
  327. package/lib/emptyDocumentDeltaStorageService.d.ts.map +0 -1
  328. package/lib/emptyDocumentDeltaStorageService.js +0 -16
  329. package/lib/emptyDocumentDeltaStorageService.js.map +0 -1
  330. package/lib/error.d.ts +0 -11
  331. package/lib/error.d.ts.map +0 -1
  332. package/lib/error.js +0 -13
  333. package/lib/error.js.map +0 -1
  334. package/lib/fluidResolvedUrl.d.ts +0 -8
  335. package/lib/fluidResolvedUrl.d.ts.map +0 -1
  336. package/lib/fluidResolvedUrl.js +0 -11
  337. package/lib/fluidResolvedUrl.js.map +0 -1
  338. package/lib/index.d.ts +0 -26
  339. package/lib/index.d.ts.map +0 -1
  340. package/lib/index.js +0 -26
  341. package/lib/index.js.map +0 -1
  342. package/lib/insecureUrlResolver.d.ts.map +0 -1
  343. package/lib/insecureUrlResolver.js.map +0 -1
  344. package/lib/messageRecognition.d.ts +0 -38
  345. package/lib/messageRecognition.d.ts.map +0 -1
  346. package/lib/messageRecognition.js +0 -67
  347. package/lib/messageRecognition.js.map +0 -1
  348. package/lib/multiDocumentServiceFactory.d.ts +0 -16
  349. package/lib/multiDocumentServiceFactory.d.ts.map +0 -1
  350. package/lib/multiDocumentServiceFactory.js +0 -59
  351. package/lib/multiDocumentServiceFactory.js.map +0 -1
  352. package/lib/multiUrlResolver.d.ts +0 -20
  353. package/lib/multiUrlResolver.d.ts.map +0 -1
  354. package/lib/multiUrlResolver.js +0 -40
  355. package/lib/multiUrlResolver.js.map +0 -1
  356. package/lib/network.d.ts.map +0 -1
  357. package/lib/network.js.map +0 -1
  358. package/lib/networkUtils.d.ts +0 -17
  359. package/lib/networkUtils.d.ts.map +0 -1
  360. package/lib/networkUtils.js +0 -54
  361. package/lib/networkUtils.js.map +0 -1
  362. package/lib/packageVersion.d.ts.map +0 -1
  363. package/lib/packageVersion.js.map +0 -1
  364. package/lib/parallelRequests.d.ts.map +0 -1
  365. package/lib/parallelRequests.js.map +0 -1
  366. package/lib/prefetchDocumentStorageService.d.ts.map +0 -1
  367. package/lib/prefetchDocumentStorageService.js.map +0 -1
  368. package/lib/rateLimiter.d.ts.map +0 -1
  369. package/lib/rateLimiter.js.map +0 -1
  370. package/lib/readAndParse.d.ts +0 -14
  371. package/lib/readAndParse.d.ts.map +0 -1
  372. package/lib/readAndParse.js +0 -18
  373. package/lib/readAndParse.js.map +0 -1
  374. package/lib/runWithRetry.d.ts.map +0 -1
  375. package/lib/runWithRetry.js +0 -65
  376. package/lib/runWithRetry.js.map +0 -1
  377. package/lib/summaryForCreateNew.d.ts.map +0 -1
  378. package/lib/summaryForCreateNew.js.map +0 -1
  379. package/lib/treeConversions.d.ts.map +0 -1
  380. package/lib/treeConversions.js.map +0 -1
  381. package/lib/treeUtils.d.ts +0 -51
  382. package/lib/treeUtils.d.ts.map +0 -1
  383. package/lib/treeUtils.js +0 -80
  384. package/lib/treeUtils.js.map +0 -1
  385. package/src/blobAggregationStorage.ts +0 -374
  386. package/src/blobCacheStorageService.ts +0 -32
  387. package/src/emptyDocumentDeltaStorageService.ts +0 -24
  388. package/src/fluidResolvedUrl.ts +0 -15
  389. package/src/multiDocumentServiceFactory.ts +0 -80
  390. package/src/multiUrlResolver.ts +0 -51
  391. package/src/treeUtils.ts +0 -111
  392. package/tsconfig.esnext.json +0 -7
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;OAEI,EAAE,iBAAiB,EAAE;OACrB,EAAE,aAAa,EAAE,aAAa,EAAE,mBAAmB,EAAE;OACrD,EAAE,2BAA2B,EAAE;OAC/B,EAAE,UAAU,EAAE;OACd,EAAE,mBAAmB,EAAE;OACvB,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,YAAY,EAAE;OAC3D,EACN,kBAAkB,EAClB,eAAe,EACf,yBAAyB,EACzB,gBAAgB,EAChB,mCAAmC,EAEnC,uBAAuB,EACvB,mBAAmB,EACnB,sBAAsB,EACtB,6BAA6B,EAC7B,QAAQ,EACR,wBAAwB,EACxB,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,cAAc,EACd,eAAe,GACf;OACM,EAAE,iBAAiB,EAAE;OACrB,EACN,kBAAkB,EAClB,gBAAgB,EAChB,KAAK,EACL,UAAU,EACV,kBAAkB,EAClB,cAAc,GACd;OACM,EAAE,8BAA8B,EAAE;OAClC,EAAE,WAAW,EAAE;OACf,EAAE,YAAY,EAAE;OAChB,EAAE,oBAAoB,EAAa,YAAY,EAAE;OACjD,EAEN,mCAAmC,EACnC,kCAAkC,EAClC,+BAA+B,GAC/B;OACM,EAAE,iCAAiC,EAAE;OACrC,EACN,uBAAuB,EAEvB,2BAA2B,EAC3B,mBAAmB,GACnB","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport { buildSnapshotTree } from \"./buildSnapshotTree\";\nexport { BlobTreeEntry, TreeTreeEntry, AttachmentTreeEntry } from \"./blob\";\nexport { DocumentStorageServiceProxy } from \"./documentStorageServiceProxy\";\nexport { UsageError } from \"./error\";\nexport { InsecureUrlResolver } from \"./insecureUrlResolver\";\nexport { canBeCoalescedByService, isRuntimeMessage, MessageType2 } from \"./messageRecognition\";\nexport {\n\tAuthorizationError,\n\tcanRetryOnError,\n\tcreateGenericNetworkError,\n\tcreateWriteError,\n\tDeltaStreamConnectionForbiddenError,\n\tDriverErrorTelemetryProps,\n\tFluidInvalidSchemaError,\n\tGenericNetworkError,\n\tgetRetryDelayFromError,\n\tgetRetryDelaySecondsFromError,\n\tisOnline,\n\tLocationRedirectionError,\n\tNetworkErrorBasic,\n\tNonRetryableError,\n\tOnlineStatus,\n\tRetryableError,\n\tThrottlingError,\n} from \"./network\";\nexport { logNetworkFailure } from \"./networkUtils\";\nexport {\n\temptyMessageStream,\n\tParallelRequests,\n\tQueue,\n\trequestOps,\n\tstreamFromMessages,\n\tstreamObserver,\n} from \"./parallelRequests\";\nexport { PrefetchDocumentStorageService } from \"./prefetchDocumentStorageService\";\nexport { RateLimiter } from \"./rateLimiter\";\nexport { readAndParse } from \"./readAndParse\";\nexport { calculateMaxWaitTime, IProgress, runWithRetry } from \"./runWithRetry\";\nexport {\n\tCombinedAppAndProtocolSummary,\n\tgetDocAttributesFromProtocolSummary,\n\tgetQuorumValuesFromProtocolSummary,\n\tisCombinedAppAndProtocolSummary,\n} from \"./summaryForCreateNew\";\nexport { convertSummaryTreeToSnapshotITree } from \"./treeConversions\";\nexport {\n\tapplyStorageCompression,\n\tICompressionStorageConfig,\n\tSummaryCompressionAlgorithm,\n\tblobHeadersBlobName,\n} from \"./adapters\";\n"]}
@@ -17,6 +17,7 @@ import { IResolvedUrl, IUrlResolver } from "@fluidframework/driver-definitions";
17
17
  * The tenantId/documentId pair defines the 'full' document ID the service makes use of. The path is then an optional
18
18
  * part of the URL that the document interprets and maps to a data store. It's exactly similar to how a web service
19
19
  * works or a router inside of a single page app framework.
20
+ * @internal
20
21
  */
21
22
  export declare class InsecureUrlResolver implements IUrlResolver {
22
23
  private readonly hostUrl;
@@ -32,4 +33,4 @@ export declare class InsecureUrlResolver implements IUrlResolver {
32
33
  getAbsoluteUrl(resolvedUrl: IResolvedUrl, relativeUrl: string): Promise<string>;
33
34
  createCreateNewRequest(fileName?: string): IRequest;
34
35
  }
35
- //# sourceMappingURL=insecureUrlResolver.d.ts.map
36
+ //# sourceMappingURL=insecureUrlResolver.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"insecureUrlResolver.d.mts","sourceRoot":"","sources":["../src/insecureUrlResolver.ts"],"names":[],"mappings":"AAAA;;;GAGG;OAII,EAAE,QAAQ,EAAE,MAAM,iCAAiC;OACnD,EAAE,YAAY,EAAE,YAAY,EAAgB,MAAM,oCAAoC;AAG7F;;;;;;;;;;;;;;GAcG;AACH,qBAAa,mBAAoB,YAAW,YAAY;IAItD,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAR/B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA4C;gBAGhD,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,aAAa,GAAE,OAAe;IAGnC,OAAO,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;IA+C1E,OAAO,CAAC,aAAa;IAiDR,cAAc,CAAC,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAgBrF,sBAAsB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,QAAQ;CAU1D"}
@@ -3,8 +3,8 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
  import { parse } from "url";
6
- import { assert } from "@fluidframework/common-utils";
7
- import { DriverHeader, } from "@fluidframework/driver-definitions";
6
+ import { assert } from "@fluidframework/core-utils";
7
+ import { DriverHeader } from "@fluidframework/driver-definitions";
8
8
  import Axios from "axios";
9
9
  /**
10
10
  * As the name implies this is not secure and should not be used in production. It simply makes the example easier
@@ -19,6 +19,7 @@ import Axios from "axios";
19
19
  * The tenantId/documentId pair defines the 'full' document ID the service makes use of. The path is then an optional
20
20
  * part of the URL that the document interprets and maps to a data store. It's exactly similar to how a web service
21
21
  * works or a router inside of a single page app framework.
22
+ * @internal
22
23
  */
23
24
  export class InsecureUrlResolver {
24
25
  constructor(hostUrl, ordererUrl, storageUrl, tenantId, bearer, isForNodeTest = false) {
@@ -31,9 +32,8 @@ export class InsecureUrlResolver {
31
32
  this.cache = new Map();
32
33
  }
33
34
  async resolve(request) {
34
- var _a;
35
35
  // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
36
- if ((_a = request.headers) === null || _a === void 0 ? void 0 : _a[DriverHeader.createNew]) {
36
+ if (request.headers?.[DriverHeader.createNew]) {
37
37
  const [, queryString] = request.url.split("?");
38
38
  const searchParams = new URLSearchParams(queryString);
39
39
  const fileName = searchParams.get("fileName");
@@ -44,7 +44,7 @@ export class InsecureUrlResolver {
44
44
  // service using our bearer token.
45
45
  if (this.isForNodeTest) {
46
46
  const [, documentId, tmpRelativePath] = parsedUrl.pathname.substr(1).split("/");
47
- const relativePath = tmpRelativePath === undefined ? "" : tmpRelativePath;
47
+ const relativePath = tmpRelativePath ?? "";
48
48
  return this.resolveHelper(documentId, relativePath, parsedUrl.search);
49
49
  }
50
50
  else if (parsedUrl.host === window.location.host) {
@@ -93,7 +93,8 @@ export class InsecureUrlResolver {
93
93
  }
94
94
  const encodedDocId = encodeURIComponent(documentId);
95
95
  const relativePath = !documentRelativePath || documentRelativePath.startsWith("/")
96
- ? documentRelativePath : `/${documentRelativePath}`;
96
+ ? documentRelativePath
97
+ : `/${documentRelativePath}`;
97
98
  const documentUrl = `fluid://${host}/${encodedTenantId}/${encodedDocId}${relativePath}${queryParams}`;
98
99
  const deltaStorageUrl = `${this.ordererUrl}/deltas/${encodedTenantId}/${encodedDocId}`;
99
100
  const storageUrl = `${this.storageUrl}/repos/${encodedTenantId}`;
@@ -111,10 +112,8 @@ export class InsecureUrlResolver {
111
112
  return response;
112
113
  }
113
114
  async getAbsoluteUrl(resolvedUrl, relativeUrl) {
114
- var _a, _b;
115
- const fluidResolvedUrl = resolvedUrl;
116
- const parsedUrl = parse(fluidResolvedUrl.url);
117
- const [, , documentId] = (_b = (_a = parsedUrl.pathname) === null || _a === void 0 ? void 0 : _a.split("/")) !== null && _b !== void 0 ? _b : [];
115
+ const parsedUrl = parse(resolvedUrl.url);
116
+ const [, , documentId] = parsedUrl.pathname?.split("/") ?? [];
118
117
  // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
119
118
  assert(!!documentId, 0x273 /* "Invalid document id from parsed URL" */);
120
119
  let url = relativeUrl;
@@ -134,4 +133,4 @@ export class InsecureUrlResolver {
134
133
  return createNewRequest;
135
134
  }
136
135
  }
137
- //# sourceMappingURL=insecureUrlResolver.js.map
136
+ //# sourceMappingURL=insecureUrlResolver.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"insecureUrlResolver.mjs","sourceRoot":"","sources":["../src/insecureUrlResolver.ts"],"names":[],"mappings":"AAAA;;;GAGG;OAEI,EAAE,KAAK,EAAE,MAAM,KAAK;OACpB,EAAE,MAAM,EAAE,MAAM,4BAA4B;OAE5C,EAA8B,YAAY,EAAE,MAAM,oCAAoC;OACtF,KAAK,MAAM,OAAO;AAEzB;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,mBAAmB;IAG/B,YACkB,OAAe,EACf,UAAkB,EAClB,UAAkB,EAClB,QAAgB,EAChB,MAAc,EACd,gBAAyB,KAAK;QAL9B,YAAO,GAAP,OAAO,CAAQ;QACf,eAAU,GAAV,UAAU,CAAQ;QAClB,eAAU,GAAV,UAAU,CAAQ;QAClB,aAAQ,GAAR,QAAQ,CAAQ;QAChB,WAAM,GAAN,MAAM,CAAQ;QACd,kBAAa,GAAb,aAAa,CAAiB;QAR/B,UAAK,GAAG,IAAI,GAAG,EAAiC,CAAC;IAS/D,CAAC;IAEG,KAAK,CAAC,OAAO,CAAC,OAAiB;QACrC,yEAAyE;QACzE,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE;YAC9C,MAAM,CAAC,EAAE,WAAW,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC/C,MAAM,YAAY,GAAG,IAAI,eAAe,CAAC,WAAW,CAAC,CAAC;YACtD,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC9C,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;SACpC;QACD,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACvC,4GAA4G;QAC5G,kCAAkC;QAClC,IAAI,IAAI,CAAC,aAAa,EAAE;YACvB,MAAM,CAAC,EAAE,UAAU,EAAE,eAAe,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAChF,MAAM,YAAY,GAAG,eAAe,IAAI,EAAE,CAAC;YAC3C,OAAO,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,YAAY,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;SACtE;aAAM,IAAI,SAAS,CAAC,IAAI,KAAK,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE;YACnD,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC9C,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1C,MAAM,oBAAoB,GAAG,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAC/D,OAAO,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC;SAC5D;aAAM;YACN,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACrD,IAAI,gBAAgB,EAAE;gBACrB,OAAO,gBAAgB,CAAC;aACxB;YAED,MAAM,OAAO,GAAG;gBACf,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;aACtC,CAAC;YACF,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAC3B,GAAG,IAAI,CAAC,OAAO,cAAc,EAC7B;gBACC,GAAG,EAAE,OAAO,CAAC,GAAG;aAChB,EACD;gBACC,OAAO;aACP,CACD,CAAC;YACF,IAAI,CAAC,KAAK,CAAC,GAAG,CACb,OAAO,CAAC,GAAG,EACX,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAC3C,CAAC;YAEF,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;SACnC;IACF,CAAC;IAEO,aAAa,CACpB,UAAyB,EACzB,uBAA+B,EAAE,EACjC,cAAsB,EAAE;QAExB,MAAM,eAAe,GAAG,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1D,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC;QAC3C,6FAA6F;QAC7F,2DAA2D;QAC3D,yEAAyE;QACzE,IAAI,CAAC,UAAU,EAAE;YAChB,MAAM,iBAAiB,GAAiB;gBACvC,SAAS,EAAE;oBACV,eAAe,EAAE,GAAG,IAAI,CAAC,UAAU,WAAW,eAAe,MAAM;oBACnE,UAAU,EAAE,IAAI,CAAC,UAAU;oBAC3B,UAAU,EAAE,GAAG,IAAI,CAAC,UAAU,UAAU,eAAe,EAAE;iBACzD;gBACD,kEAAkE;gBAClE,EAAE,EAAE,EAAE;gBACN,MAAM,EAAE,EAAE;gBACV,IAAI,EAAE,OAAO;gBACb,GAAG,EAAE,WAAW,IAAI,IAAI,eAAe,MAAM;aAC7C,CAAC;YACF,OAAO,iBAAiB,CAAC;SACzB;QACD,MAAM,YAAY,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;QACpD,MAAM,YAAY,GACjB,CAAC,oBAAoB,IAAI,oBAAoB,CAAC,UAAU,CAAC,GAAG,CAAC;YAC5D,CAAC,CAAC,oBAAoB;YACtB,CAAC,CAAC,IAAI,oBAAoB,EAAE,CAAC;QAC/B,MAAM,WAAW,GAAG,WAAW,IAAI,IAAI,eAAe,IAAI,YAAY,GAAG,YAAY,GAAG,WAAW,EAAE,CAAC;QAEtG,MAAM,eAAe,GAAG,GAAG,IAAI,CAAC,UAAU,WAAW,eAAe,IAAI,YAAY,EAAE,CAAC;QACvF,MAAM,UAAU,GAAG,GAAG,IAAI,CAAC,UAAU,UAAU,eAAe,EAAE,CAAC;QAEjE,MAAM,QAAQ,GAAiB;YAC9B,SAAS,EAAE;gBACV,eAAe;gBACf,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,UAAU;aACV;YACD,EAAE,EAAE,UAAU;YACd,MAAM,EAAE,EAAE;YACV,IAAI,EAAE,OAAO;YACb,GAAG,EAAE,WAAW;SAChB,CAAC;QACF,OAAO,QAAQ,CAAC;IACjB,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,WAAyB,EAAE,WAAmB;QACzE,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACzC,MAAM,CAAC,EAAE,AAAD,EAAG,UAAU,CAAC,GAAG,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9D,yEAAyE;QACzE,MAAM,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAExE,IAAI,GAAG,GAAG,WAAW,CAAC;QACtB,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;YACxB,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;SACpB;QAED,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,kBAAkB,CAChF,UAAU,CACV,IAAI,GAAG,EAAE,CAAC;IACZ,CAAC;IAEM,sBAAsB,CAAC,QAAiB;QAC9C,MAAM,gBAAgB,GAAa;YAClC,yEAAyE;YACzE,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,aAAa,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO;YACrE,OAAO,EAAE;gBACR,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,IAAI;aAC9B;SACD,CAAC;QACF,OAAO,gBAAgB,CAAC;IACzB,CAAC;CACD","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { parse } from \"url\";\nimport { assert } from \"@fluidframework/core-utils\";\nimport { IRequest } from \"@fluidframework/core-interfaces\";\nimport { IResolvedUrl, IUrlResolver, DriverHeader } from \"@fluidframework/driver-definitions\";\nimport Axios from \"axios\";\n\n/**\n * As the name implies this is not secure and should not be used in production. It simply makes the example easier\n * to get up and running.\n *\n * In our example we run a simple web server via webpack-dev-server. This defines a URL format of the form\n * http://localhost:8080/<documentId>/<path>.\n *\n * We then need to map that to a Fluid based URL. These are of the form\n * fluid://orderingUrl/<tenantId>/<documentId>/<path>.\n *\n * The tenantId/documentId pair defines the 'full' document ID the service makes use of. The path is then an optional\n * part of the URL that the document interprets and maps to a data store. It's exactly similar to how a web service\n * works or a router inside of a single page app framework.\n * @internal\n */\nexport class InsecureUrlResolver implements IUrlResolver {\n\tprivate readonly cache = new Map<string, Promise<IResolvedUrl>>();\n\n\tconstructor(\n\t\tprivate readonly hostUrl: string,\n\t\tprivate readonly ordererUrl: string,\n\t\tprivate readonly storageUrl: string,\n\t\tprivate readonly tenantId: string,\n\t\tprivate readonly bearer: string,\n\t\tprivate readonly isForNodeTest: boolean = false,\n\t) {}\n\n\tpublic async resolve(request: IRequest): Promise<IResolvedUrl | undefined> {\n\t\t// eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n\t\tif (request.headers?.[DriverHeader.createNew]) {\n\t\t\tconst [, queryString] = request.url.split(\"?\");\n\t\t\tconst searchParams = new URLSearchParams(queryString);\n\t\t\tconst fileName = searchParams.get(\"fileName\");\n\t\t\treturn this.resolveHelper(fileName);\n\t\t}\n\t\tconst parsedUrl = new URL(request.url);\n\t\t// If hosts match then we use the local tenant information. Otherwise we make a REST call out to the hosting\n\t\t// service using our bearer token.\n\t\tif (this.isForNodeTest) {\n\t\t\tconst [, documentId, tmpRelativePath] = parsedUrl.pathname.substr(1).split(\"/\");\n\t\t\tconst relativePath = tmpRelativePath ?? \"\";\n\t\t\treturn this.resolveHelper(documentId, relativePath, parsedUrl.search);\n\t\t} else if (parsedUrl.host === window.location.host) {\n\t\t\tconst fullPath = parsedUrl.pathname.substr(1);\n\t\t\tconst documentId = fullPath.split(\"/\")[0];\n\t\t\tconst documentRelativePath = fullPath.slice(documentId.length);\n\t\t\treturn this.resolveHelper(documentId, documentRelativePath);\n\t\t} else {\n\t\t\tconst maybeResolvedUrl = this.cache.get(request.url);\n\t\t\tif (maybeResolvedUrl) {\n\t\t\t\treturn maybeResolvedUrl;\n\t\t\t}\n\n\t\t\tconst headers = {\n\t\t\t\tAuthorization: `Bearer ${this.bearer}`,\n\t\t\t};\n\t\t\tconst resolvedP = Axios.post<IResolvedUrl>(\n\t\t\t\t`${this.hostUrl}/api/v1/load`,\n\t\t\t\t{\n\t\t\t\t\turl: request.url,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\theaders,\n\t\t\t\t},\n\t\t\t);\n\t\t\tthis.cache.set(\n\t\t\t\trequest.url,\n\t\t\t\tresolvedP.then((resolved) => resolved.data),\n\t\t\t);\n\n\t\t\treturn this.cache.get(request.url);\n\t\t}\n\t}\n\n\tprivate resolveHelper(\n\t\tdocumentId: string | null,\n\t\tdocumentRelativePath: string = \"\",\n\t\tqueryParams: string = \"\",\n\t) {\n\t\tconst encodedTenantId = encodeURIComponent(this.tenantId);\n\t\tconst host = new URL(this.ordererUrl).host;\n\t\t// when the document ID is not provided we need to resolve a special create new document URL.\n\t\t// the actual container ID will be generated by the driver.\n\t\t// eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n\t\tif (!documentId) {\n\t\t\tconst createNewResponse: IResolvedUrl = {\n\t\t\t\tendpoints: {\n\t\t\t\t\tdeltaStorageUrl: `${this.ordererUrl}/deltas/${encodedTenantId}/new`,\n\t\t\t\t\tordererUrl: this.ordererUrl,\n\t\t\t\t\tstorageUrl: `${this.storageUrl}/repos/${encodedTenantId}`,\n\t\t\t\t},\n\t\t\t\t// document ID is ignored by the driver for new container requests\n\t\t\t\tid: \"\",\n\t\t\t\ttokens: {},\n\t\t\t\ttype: \"fluid\",\n\t\t\t\turl: `fluid://${host}/${encodedTenantId}/new`,\n\t\t\t};\n\t\t\treturn createNewResponse;\n\t\t}\n\t\tconst encodedDocId = encodeURIComponent(documentId);\n\t\tconst relativePath =\n\t\t\t!documentRelativePath || documentRelativePath.startsWith(\"/\")\n\t\t\t\t? documentRelativePath\n\t\t\t\t: `/${documentRelativePath}`;\n\t\tconst documentUrl = `fluid://${host}/${encodedTenantId}/${encodedDocId}${relativePath}${queryParams}`;\n\n\t\tconst deltaStorageUrl = `${this.ordererUrl}/deltas/${encodedTenantId}/${encodedDocId}`;\n\t\tconst storageUrl = `${this.storageUrl}/repos/${encodedTenantId}`;\n\n\t\tconst response: IResolvedUrl = {\n\t\t\tendpoints: {\n\t\t\t\tdeltaStorageUrl,\n\t\t\t\tordererUrl: this.ordererUrl,\n\t\t\t\tstorageUrl,\n\t\t\t},\n\t\t\tid: documentId,\n\t\t\ttokens: {},\n\t\t\ttype: \"fluid\",\n\t\t\turl: documentUrl,\n\t\t};\n\t\treturn response;\n\t}\n\n\tpublic async getAbsoluteUrl(resolvedUrl: IResolvedUrl, relativeUrl: string): Promise<string> {\n\t\tconst parsedUrl = parse(resolvedUrl.url);\n\t\tconst [, , documentId] = parsedUrl.pathname?.split(\"/\") ?? [];\n\t\t// eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n\t\tassert(!!documentId, 0x273 /* \"Invalid document id from parsed URL\" */);\n\n\t\tlet url = relativeUrl;\n\t\tif (url.startsWith(\"/\")) {\n\t\t\turl = url.substr(1);\n\t\t}\n\n\t\treturn `${this.hostUrl}/${encodeURIComponent(this.tenantId)}/${encodeURIComponent(\n\t\t\tdocumentId,\n\t\t)}/${url}`;\n\t}\n\n\tpublic createCreateNewRequest(fileName?: string): IRequest {\n\t\tconst createNewRequest: IRequest = {\n\t\t\t// eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n\t\t\turl: fileName ? `${this.hostUrl}?fileName=${fileName}` : this.hostUrl,\n\t\t\theaders: {\n\t\t\t\t[DriverHeader.createNew]: true,\n\t\t\t},\n\t\t};\n\t\treturn createNewRequest;\n\t}\n}\n"]}
@@ -0,0 +1,24 @@
1
+ import { IDocumentMessage, ISequencedDocumentMessage } from "@fluidframework/protocol-definitions";
2
+ /**
3
+ * Tells if message was sent by container runtime
4
+ * @privateRemarks ADO #1385: To be moved to container-definitions
5
+ * @returns whether the message is a runtime message
6
+ * @internal
7
+ */
8
+ export declare function isRuntimeMessage(message: {
9
+ type: string;
10
+ }): boolean;
11
+ /**
12
+ * @privateRemarks ADO #1385: staging code changes across layers.
13
+ * Eventually to be replaced by MessageType.accept
14
+ * @internal
15
+ */
16
+ export declare enum MessageType2 {
17
+ Accept = "accept"
18
+ }
19
+ /**
20
+ * @privateRemarks ADO #1385: To be moved to packages/protocol-base/src/protocol.ts
21
+ * @internal
22
+ */
23
+ export declare function canBeCoalescedByService(message: ISequencedDocumentMessage | IDocumentMessage): boolean;
24
+ //# sourceMappingURL=messageRecognition.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messageRecognition.d.mts","sourceRoot":"","sources":["../src/messageRecognition.ts"],"names":[],"mappings":"OAIO,EACN,gBAAgB,EAChB,yBAAyB,EAEzB,MAAM,sCAAsC;AAE7C;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAEnE;AAED;;;;GAIG;AACH,oBAAY,YAAY;IACvB,MAAM,WAAW;CACjB;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACtC,OAAO,EAAE,yBAAyB,GAAG,gBAAgB,GACnD,OAAO,CAIT"}
@@ -0,0 +1,29 @@
1
+ import { MessageType, } from "@fluidframework/protocol-definitions";
2
+ /**
3
+ * Tells if message was sent by container runtime
4
+ * @privateRemarks ADO #1385: To be moved to container-definitions
5
+ * @returns whether the message is a runtime message
6
+ * @internal
7
+ */
8
+ export function isRuntimeMessage(message) {
9
+ return message.type === MessageType.Operation;
10
+ }
11
+ /**
12
+ * @privateRemarks ADO #1385: staging code changes across layers.
13
+ * Eventually to be replaced by MessageType.accept
14
+ * @internal
15
+ */
16
+ export var MessageType2;
17
+ (function (MessageType2) {
18
+ MessageType2["Accept"] = "accept";
19
+ })(MessageType2 || (MessageType2 = {}));
20
+ /**
21
+ * @privateRemarks ADO #1385: To be moved to packages/protocol-base/src/protocol.ts
22
+ * @internal
23
+ */
24
+ export function canBeCoalescedByService(message) {
25
+ // This assumes that in the future relay service may implement coalescing of accept messages,
26
+ // same way it was doing coalescing of immediate noops in the past.
27
+ return message.type === MessageType.NoOp || message.type === MessageType2.Accept;
28
+ }
29
+ //# sourceMappingURL=messageRecognition.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messageRecognition.mjs","sourceRoot":"","sources":["../src/messageRecognition.ts"],"names":[],"mappings":"OAIO,EAGN,WAAW,GACX,MAAM,sCAAsC;AAE7C;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAyB;IACzD,OAAO,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC,SAAS,CAAC;AAC/C,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAN,IAAY,YAEX;AAFD,WAAY,YAAY;IACvB,iCAAiB,CAAA;AAClB,CAAC,EAFW,YAAY,KAAZ,YAAY,QAEvB;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CACtC,OAAqD;IAErD,6FAA6F;IAC7F,mEAAmE;IACnE,OAAO,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,KAAK,YAAY,CAAC,MAAM,CAAC;AAClF,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport {\n\tIDocumentMessage,\n\tISequencedDocumentMessage,\n\tMessageType,\n} from \"@fluidframework/protocol-definitions\";\n\n/**\n * Tells if message was sent by container runtime\n * @privateRemarks ADO #1385: To be moved to container-definitions\n * @returns whether the message is a runtime message\n * @internal\n */\nexport function isRuntimeMessage(message: { type: string }): boolean {\n\treturn message.type === MessageType.Operation;\n}\n\n/**\n * @privateRemarks ADO #1385: staging code changes across layers.\n * Eventually to be replaced by MessageType.accept\n * @internal\n */\nexport enum MessageType2 {\n\tAccept = \"accept\",\n}\n\n/**\n * @privateRemarks ADO #1385: To be moved to packages/protocol-base/src/protocol.ts\n * @internal\n */\nexport function canBeCoalescedByService(\n\tmessage: ISequencedDocumentMessage | IDocumentMessage,\n): boolean {\n\t// This assumes that in the future relay service may implement coalescing of accept messages,\n\t// same way it was doing coalescing of immediate noops in the past.\n\treturn message.type === MessageType.NoOp || message.type === MessageType2.Accept;\n}\n"]}
@@ -2,45 +2,62 @@
2
2
  * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
3
  * Licensed under the MIT License.
4
4
  */
5
- import { IThrottlingWarning, IDriverErrorBase, IAuthorizationError, DriverErrorType } from "@fluidframework/driver-definitions";
6
- import { ITelemetryProperties } from "@fluidframework/common-definitions";
5
+ import { IThrottlingWarning, IDriverErrorBase, IAuthorizationError, DriverErrorType, ILocationRedirectionError, IResolvedUrl } from "@fluidframework/driver-definitions";
6
+ import { ITelemetryProperties } from "@fluidframework/core-interfaces";
7
7
  import { IFluidErrorBase, LoggingError } from "@fluidframework/telemetry-utils";
8
+ /**
9
+ * @internal
10
+ */
8
11
  export declare enum OnlineStatus {
9
12
  Offline = 0,
10
13
  Online = 1,
11
14
  Unknown = 2
12
15
  }
16
+ /**
17
+ * It tells if we have local connection only - we might not have connection to web.
18
+ * No solution for node.js (other than resolve dns names / ping specific sites)
19
+ * Can also use window.addEventListener("online" / "offline")
20
+ * @internal
21
+ */
13
22
  export declare function isOnline(): OnlineStatus;
14
23
  /**
15
- * Interface describing errors and warnings raised by any driver code.
16
- * Not expected to be implemented by a class or an object literal, but rather used in place of
17
- * any or unknown in various function signatures that pass errors around.
18
- *
19
- * "Any" in the interface name is a nod to the fact that errorType has lost its type constraint.
20
- * It will be either DriverErrorType or the specific driver's specialized error type enum,
21
- * but we can't reference a specific driver's error type enum in this code.
24
+ * Telemetry props with driver-specific required properties
25
+ * @internal
22
26
  */
23
- export interface IAnyDriverError extends Omit<IDriverErrorBase, "errorType"> {
24
- readonly errorType: string;
25
- }
26
- /** Telemetry props with driver-specific required properties */
27
- export declare type DriverErrorTelemetryProps = ITelemetryProperties & {
27
+ export type DriverErrorTelemetryProps = ITelemetryProperties & {
28
28
  driverVersion: string | undefined;
29
29
  };
30
30
  /**
31
31
  * Generic network error class.
32
+ * @internal
32
33
  */
33
34
  export declare class GenericNetworkError extends LoggingError implements IDriverErrorBase, IFluidErrorBase {
34
35
  readonly canRetry: boolean;
35
36
  readonly errorType = DriverErrorType.genericNetworkError;
36
37
  constructor(message: string, canRetry: boolean, props: DriverErrorTelemetryProps);
37
38
  }
38
- export declare class DeltaStreamConnectionForbiddenError extends LoggingError implements IFluidErrorBase {
39
- static readonly errorType: string;
40
- readonly errorType: string;
39
+ /**
40
+ * FluidInvalidSchema error class.
41
+ * @internal
42
+ */
43
+ export declare class FluidInvalidSchemaError extends LoggingError implements IDriverErrorBase, IFluidErrorBase {
44
+ readonly errorType = DriverErrorType.fluidInvalidSchema;
41
45
  readonly canRetry = false;
42
46
  constructor(message: string, props: DriverErrorTelemetryProps);
43
47
  }
48
+ /**
49
+ * @internal
50
+ */
51
+ export declare class DeltaStreamConnectionForbiddenError extends LoggingError implements IDriverErrorBase, IFluidErrorBase {
52
+ static readonly errorType = DriverErrorType.deltaStreamConnectionForbidden;
53
+ readonly errorType = DriverErrorType.deltaStreamConnectionForbidden;
54
+ readonly canRetry = false;
55
+ readonly storageOnlyReason: string | undefined;
56
+ constructor(message: string, props: DriverErrorTelemetryProps, storageOnlyReason?: string);
57
+ }
58
+ /**
59
+ * @internal
60
+ */
44
61
  export declare class AuthorizationError extends LoggingError implements IAuthorizationError, IFluidErrorBase {
45
62
  readonly claims: string | undefined;
46
63
  readonly tenantId: string | undefined;
@@ -48,21 +65,40 @@ export declare class AuthorizationError extends LoggingError implements IAuthori
48
65
  readonly canRetry = false;
49
66
  constructor(message: string, claims: string | undefined, tenantId: string | undefined, props: DriverErrorTelemetryProps);
50
67
  }
68
+ /**
69
+ * @internal
70
+ */
71
+ export declare class LocationRedirectionError extends LoggingError implements ILocationRedirectionError, IFluidErrorBase {
72
+ readonly redirectUrl: IResolvedUrl;
73
+ readonly errorType = DriverErrorType.locationRedirection;
74
+ readonly canRetry = false;
75
+ constructor(message: string, redirectUrl: IResolvedUrl, props: DriverErrorTelemetryProps);
76
+ }
77
+ /**
78
+ * @internal
79
+ */
51
80
  export declare class NetworkErrorBasic<T extends string> extends LoggingError implements IFluidErrorBase {
52
81
  readonly errorType: T;
53
82
  readonly canRetry: boolean;
54
83
  constructor(message: string, errorType: T, canRetry: boolean, props: DriverErrorTelemetryProps);
55
84
  }
85
+ /**
86
+ * @internal
87
+ */
56
88
  export declare class NonRetryableError<T extends string> extends NetworkErrorBasic<T> {
57
89
  readonly errorType: T;
58
90
  constructor(message: string, errorType: T, props: DriverErrorTelemetryProps);
59
91
  }
92
+ /**
93
+ * @internal
94
+ */
60
95
  export declare class RetryableError<T extends string> extends NetworkErrorBasic<T> {
61
96
  readonly errorType: T;
62
97
  constructor(message: string, errorType: T, props: DriverErrorTelemetryProps);
63
98
  }
64
99
  /**
65
100
  * Throttling error class - used to communicate all throttling errors
101
+ * @internal
66
102
  */
67
103
  export declare class ThrottlingError extends LoggingError implements IThrottlingWarning, IFluidErrorBase {
68
104
  readonly retryAfterSeconds: number;
@@ -70,7 +106,13 @@ export declare class ThrottlingError extends LoggingError implements IThrottling
70
106
  readonly canRetry = true;
71
107
  constructor(message: string, retryAfterSeconds: number, props: DriverErrorTelemetryProps);
72
108
  }
73
- export declare const createWriteError: (message: string, props: DriverErrorTelemetryProps) => NonRetryableError<DriverErrorType.writeError>;
109
+ /**
110
+ * @internal
111
+ */
112
+ export declare const createWriteError: (message: string, props: DriverErrorTelemetryProps) => NonRetryableError<"writeError">;
113
+ /**
114
+ * @internal
115
+ */
74
116
  export declare function createGenericNetworkError(message: string, retryInfo: {
75
117
  canRetry: boolean;
76
118
  retryAfterMs?: number;
@@ -79,10 +121,17 @@ export declare function createGenericNetworkError(message: string, retryInfo: {
79
121
  * Check if a connection error can be retried. Unless explicitly allowed, retry is disallowed.
80
122
  * I.e. asserts or unexpected exceptions in our code result in container failure.
81
123
  * @param error - The error to inspect for ability to retry
124
+ * @internal
82
125
  */
83
126
  export declare const canRetryOnError: (error: any) => boolean;
84
- /** Check retryAfterSeconds property on error */
127
+ /**
128
+ * Check retryAfterSeconds property on error
129
+ * @internal
130
+ */
85
131
  export declare const getRetryDelaySecondsFromError: (error: any) => number | undefined;
86
- /** Check retryAfterSeconds property on error and convert to ms */
132
+ /**
133
+ * Check retryAfterSeconds property on error and convert to ms
134
+ * @internal
135
+ */
87
136
  export declare const getRetryDelayFromError: (error: any) => number | undefined;
88
- //# sourceMappingURL=network.d.ts.map
137
+ //# sourceMappingURL=network.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"network.d.mts","sourceRoot":"","sources":["../src/network.ts"],"names":[],"mappings":"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"}
@@ -2,58 +2,100 @@
2
2
  * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
3
  * Licensed under the MIT License.
4
4
  */
5
- var _a;
6
- import { DriverErrorType, } from "@fluidframework/driver-definitions";
5
+ import {
6
+ // eslint-disable-next-line import/no-deprecated
7
+ DriverErrorType, DriverErrorTypes, } from "@fluidframework/driver-definitions";
7
8
  import { LoggingError } from "@fluidframework/telemetry-utils";
9
+ /**
10
+ * @internal
11
+ */
8
12
  export var OnlineStatus;
9
13
  (function (OnlineStatus) {
10
14
  OnlineStatus[OnlineStatus["Offline"] = 0] = "Offline";
11
15
  OnlineStatus[OnlineStatus["Online"] = 1] = "Online";
12
16
  OnlineStatus[OnlineStatus["Unknown"] = 2] = "Unknown";
13
17
  })(OnlineStatus || (OnlineStatus = {}));
14
- // It tells if we have local connection only - we might not have connection to web.
15
- // No solution for node.js (other than resolve dns names / ping specific sites)
16
- // Can also use window.addEventListener("online" / "offline")
18
+ /**
19
+ * It tells if we have local connection only - we might not have connection to web.
20
+ * No solution for node.js (other than resolve dns names / ping specific sites)
21
+ * Can also use window.addEventListener("online" / "offline")
22
+ * @internal
23
+ */
17
24
  export function isOnline() {
18
- if (typeof navigator === "object" && navigator !== null && typeof navigator.onLine === "boolean") {
25
+ if (typeof navigator === "object" &&
26
+ navigator !== null &&
27
+ typeof navigator.onLine === "boolean") {
19
28
  return navigator.onLine ? OnlineStatus.Online : OnlineStatus.Offline;
20
29
  }
21
30
  return OnlineStatus.Unknown;
22
31
  }
23
32
  /**
24
33
  * Generic network error class.
34
+ * @internal
25
35
  */
26
36
  export class GenericNetworkError extends LoggingError {
27
37
  constructor(message, canRetry, props) {
28
38
  super(message, props);
29
39
  this.canRetry = canRetry;
40
+ // eslint-disable-next-line import/no-deprecated
30
41
  this.errorType = DriverErrorType.genericNetworkError;
31
42
  }
32
43
  }
33
- // Todo GH #6214: Remove after next drive def bump. This is necessary as there is no
34
- // compatible way to augment an enum, as it can't be optional. So for now
35
- // we need to duplicate the value here. We likely need to rethink our
36
- // DriverErrorType strategy so that it supports extension with optional
37
- // value.
38
- const deltaStreamConnectionForbiddenStr = "deltaStreamConnectionForbidden";
39
- export class DeltaStreamConnectionForbiddenError extends LoggingError {
44
+ /**
45
+ * FluidInvalidSchema error class.
46
+ * @internal
47
+ */
48
+ export class FluidInvalidSchemaError extends LoggingError {
40
49
  constructor(message, props) {
41
- super(message, Object.assign(Object.assign({}, props), { statusCode: 400 }));
50
+ super(message, props);
51
+ // eslint-disable-next-line import/no-deprecated
52
+ this.errorType = DriverErrorType.fluidInvalidSchema;
53
+ this.canRetry = false;
54
+ }
55
+ }
56
+ /**
57
+ * @internal
58
+ */
59
+ export class DeltaStreamConnectionForbiddenError extends LoggingError {
60
+ constructor(message, props, storageOnlyReason) {
61
+ super(message, { ...props, statusCode: 400 });
42
62
  this.errorType = DeltaStreamConnectionForbiddenError.errorType;
43
63
  this.canRetry = false;
64
+ this.storageOnlyReason = storageOnlyReason;
44
65
  }
45
66
  }
46
- DeltaStreamConnectionForbiddenError.errorType = (_a = DriverErrorType[deltaStreamConnectionForbiddenStr]) !== null && _a !== void 0 ? _a : deltaStreamConnectionForbiddenStr;
67
+ // eslint-disable-next-line import/no-deprecated
68
+ DeltaStreamConnectionForbiddenError.errorType = DriverErrorType.deltaStreamConnectionForbidden;
69
+ /**
70
+ * @internal
71
+ */
47
72
  export class AuthorizationError extends LoggingError {
48
73
  constructor(message, claims, tenantId, props) {
49
74
  // don't log claims or tenantId
50
75
  super(message, props, new Set(["claims", "tenantId"]));
51
76
  this.claims = claims;
52
77
  this.tenantId = tenantId;
78
+ // eslint-disable-next-line import/no-deprecated
53
79
  this.errorType = DriverErrorType.authorizationError;
54
80
  this.canRetry = false;
55
81
  }
56
82
  }
83
+ /**
84
+ * @internal
85
+ */
86
+ export class LocationRedirectionError extends LoggingError {
87
+ constructor(message, redirectUrl, props) {
88
+ // do not log redirectURL
89
+ super(message, props, new Set(["redirectUrl"]));
90
+ this.redirectUrl = redirectUrl;
91
+ // eslint-disable-next-line import/no-deprecated
92
+ this.errorType = DriverErrorType.locationRedirection;
93
+ this.canRetry = false;
94
+ }
95
+ }
96
+ /**
97
+ * @internal
98
+ */
57
99
  export class NetworkErrorBasic extends LoggingError {
58
100
  constructor(message, errorType, canRetry, props) {
59
101
  super(message, props);
@@ -61,12 +103,18 @@ export class NetworkErrorBasic extends LoggingError {
61
103
  this.canRetry = canRetry;
62
104
  }
63
105
  }
106
+ /**
107
+ * @internal
108
+ */
64
109
  export class NonRetryableError extends NetworkErrorBasic {
65
110
  constructor(message, errorType, props) {
66
111
  super(message, errorType, false, props);
67
112
  this.errorType = errorType;
68
113
  }
69
114
  }
115
+ /**
116
+ * @internal
117
+ */
70
118
  export class RetryableError extends NetworkErrorBasic {
71
119
  constructor(message, errorType, props) {
72
120
  super(message, errorType, true, props);
@@ -75,16 +123,24 @@ export class RetryableError extends NetworkErrorBasic {
75
123
  }
76
124
  /**
77
125
  * Throttling error class - used to communicate all throttling errors
126
+ * @internal
78
127
  */
79
128
  export class ThrottlingError extends LoggingError {
80
129
  constructor(message, retryAfterSeconds, props) {
81
130
  super(message, props);
82
131
  this.retryAfterSeconds = retryAfterSeconds;
132
+ // eslint-disable-next-line import/no-deprecated
83
133
  this.errorType = DriverErrorType.throttlingError;
84
134
  this.canRetry = true;
85
135
  }
86
136
  }
87
- export const createWriteError = (message, props) => new NonRetryableError(message, DriverErrorType.writeError, props);
137
+ /**
138
+ * @internal
139
+ */
140
+ export const createWriteError = (message, props) => new NonRetryableError(message, DriverErrorTypes.writeError, props);
141
+ /**
142
+ * @internal
143
+ */
88
144
  export function createGenericNetworkError(message, retryInfo, props) {
89
145
  if (retryInfo.retryAfterMs !== undefined && retryInfo.canRetry) {
90
146
  return new ThrottlingError(message, retryInfo.retryAfterMs / 1000, props);
@@ -95,11 +151,17 @@ export function createGenericNetworkError(message, retryInfo, props) {
95
151
  * Check if a connection error can be retried. Unless explicitly allowed, retry is disallowed.
96
152
  * I.e. asserts or unexpected exceptions in our code result in container failure.
97
153
  * @param error - The error to inspect for ability to retry
154
+ * @internal
155
+ */
156
+ export const canRetryOnError = (error) => error?.canRetry === true;
157
+ /**
158
+ * Check retryAfterSeconds property on error
159
+ * @internal
160
+ */
161
+ export const getRetryDelaySecondsFromError = (error) => error?.retryAfterSeconds;
162
+ /**
163
+ * Check retryAfterSeconds property on error and convert to ms
164
+ * @internal
98
165
  */
99
- export const canRetryOnError = (error) => (error === null || error === void 0 ? void 0 : error.canRetry) === true;
100
- /** Check retryAfterSeconds property on error */
101
- export const getRetryDelaySecondsFromError = (error) => error === null || error === void 0 ? void 0 : error.retryAfterSeconds;
102
- /** Check retryAfterSeconds property on error and convert to ms */
103
- export const getRetryDelayFromError = (error) => (error === null || error === void 0 ? void 0 : error.retryAfterSeconds) !== undefined ?
104
- error.retryAfterSeconds * 1000 : undefined;
105
- //# sourceMappingURL=network.js.map
166
+ export const getRetryDelayFromError = (error) => error?.retryAfterSeconds !== undefined ? error.retryAfterSeconds * 1000 : undefined;
167
+ //# sourceMappingURL=network.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"network.mjs","sourceRoot":"","sources":["../src/network.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 {\n\tIThrottlingWarning,\n\tIDriverErrorBase,\n\tIAuthorizationError,\n\t// eslint-disable-next-line import/no-deprecated\n\tDriverErrorType,\n\tILocationRedirectionError,\n\tIResolvedUrl,\n\tDriverErrorTypes,\n} from \"@fluidframework/driver-definitions\";\nimport { ITelemetryProperties } from \"@fluidframework/core-interfaces\";\nimport { IFluidErrorBase, LoggingError } from \"@fluidframework/telemetry-utils\";\n\n/**\n * @internal\n */\nexport enum OnlineStatus {\n\tOffline,\n\tOnline,\n\tUnknown,\n}\n\n/**\n * It tells if we have local connection only - we might not have connection to web.\n * No solution for node.js (other than resolve dns names / ping specific sites)\n * Can also use window.addEventListener(\"online\" / \"offline\")\n * @internal\n */\nexport function isOnline(): OnlineStatus {\n\tif (\n\t\ttypeof navigator === \"object\" &&\n\t\tnavigator !== null &&\n\t\ttypeof navigator.onLine === \"boolean\"\n\t) {\n\t\treturn navigator.onLine ? OnlineStatus.Online : OnlineStatus.Offline;\n\t}\n\treturn OnlineStatus.Unknown;\n}\n\n/**\n * Telemetry props with driver-specific required properties\n * @internal\n */\nexport type DriverErrorTelemetryProps = ITelemetryProperties & {\n\tdriverVersion: string | undefined;\n};\n\n/**\n * Generic network error class.\n * @internal\n */\nexport class GenericNetworkError extends LoggingError implements IDriverErrorBase, IFluidErrorBase {\n\t// eslint-disable-next-line import/no-deprecated\n\treadonly errorType = DriverErrorType.genericNetworkError;\n\n\tconstructor(\n\t\tmessage: string,\n\t\treadonly canRetry: boolean,\n\t\tprops: DriverErrorTelemetryProps,\n\t) {\n\t\tsuper(message, props);\n\t}\n}\n\n/**\n * FluidInvalidSchema error class.\n * @internal\n */\nexport class FluidInvalidSchemaError\n\textends LoggingError\n\timplements IDriverErrorBase, IFluidErrorBase\n{\n\t// eslint-disable-next-line import/no-deprecated\n\treadonly errorType = DriverErrorType.fluidInvalidSchema;\n\treadonly canRetry = false;\n\n\tconstructor(message: string, props: DriverErrorTelemetryProps) {\n\t\tsuper(message, props);\n\t}\n}\n\n/**\n * @internal\n */\nexport class DeltaStreamConnectionForbiddenError\n\textends LoggingError\n\timplements IDriverErrorBase, IFluidErrorBase\n{\n\t// eslint-disable-next-line import/no-deprecated\n\tstatic readonly errorType = DriverErrorType.deltaStreamConnectionForbidden;\n\treadonly errorType = DeltaStreamConnectionForbiddenError.errorType;\n\treadonly canRetry = false;\n\treadonly storageOnlyReason: string | undefined;\n\n\tconstructor(message: string, props: DriverErrorTelemetryProps, storageOnlyReason?: string) {\n\t\tsuper(message, { ...props, statusCode: 400 });\n\t\tthis.storageOnlyReason = storageOnlyReason;\n\t}\n}\n\n/**\n * @internal\n */\nexport class AuthorizationError\n\textends LoggingError\n\timplements IAuthorizationError, IFluidErrorBase\n{\n\t// eslint-disable-next-line import/no-deprecated\n\treadonly errorType = DriverErrorType.authorizationError;\n\treadonly canRetry = false;\n\n\tconstructor(\n\t\tmessage: string,\n\t\treadonly claims: string | undefined,\n\t\treadonly tenantId: string | undefined,\n\t\tprops: DriverErrorTelemetryProps,\n\t) {\n\t\t// don't log claims or tenantId\n\t\tsuper(message, props, new Set([\"claims\", \"tenantId\"]));\n\t}\n}\n\n/**\n * @internal\n */\nexport class LocationRedirectionError\n\textends LoggingError\n\timplements ILocationRedirectionError, IFluidErrorBase\n{\n\t// eslint-disable-next-line import/no-deprecated\n\treadonly errorType = DriverErrorType.locationRedirection;\n\treadonly canRetry = false;\n\n\tconstructor(\n\t\tmessage: string,\n\t\treadonly redirectUrl: IResolvedUrl,\n\t\tprops: DriverErrorTelemetryProps,\n\t) {\n\t\t// do not log redirectURL\n\t\tsuper(message, props, new Set([\"redirectUrl\"]));\n\t}\n}\n\n/**\n * @internal\n */\nexport class NetworkErrorBasic<T extends string> extends LoggingError implements IFluidErrorBase {\n\tconstructor(\n\t\tmessage: string,\n\t\treadonly errorType: T,\n\t\treadonly canRetry: boolean,\n\t\tprops: DriverErrorTelemetryProps,\n\t) {\n\t\tsuper(message, props);\n\t}\n}\n\n/**\n * @internal\n */\nexport class NonRetryableError<T extends string> extends NetworkErrorBasic<T> {\n\tconstructor(\n\t\tmessage: string,\n\t\treadonly errorType: T,\n\t\tprops: DriverErrorTelemetryProps,\n\t) {\n\t\tsuper(message, errorType, false, props);\n\t}\n}\n\n/**\n * @internal\n */\nexport class RetryableError<T extends string> extends NetworkErrorBasic<T> {\n\tconstructor(\n\t\tmessage: string,\n\t\treadonly errorType: T,\n\t\tprops: DriverErrorTelemetryProps,\n\t) {\n\t\tsuper(message, errorType, true, props);\n\t}\n}\n\n/**\n * Throttling error class - used to communicate all throttling errors\n * @internal\n */\nexport class ThrottlingError extends LoggingError implements IThrottlingWarning, IFluidErrorBase {\n\t// eslint-disable-next-line import/no-deprecated\n\treadonly errorType = DriverErrorType.throttlingError;\n\treadonly canRetry = true;\n\n\tconstructor(\n\t\tmessage: string,\n\t\treadonly retryAfterSeconds: number,\n\t\tprops: DriverErrorTelemetryProps,\n\t) {\n\t\tsuper(message, props);\n\t}\n}\n\n/**\n * @internal\n */\nexport const createWriteError = (message: string, props: DriverErrorTelemetryProps) =>\n\tnew NonRetryableError(message, DriverErrorTypes.writeError, props);\n\n/**\n * @internal\n */\nexport function createGenericNetworkError(\n\tmessage: string,\n\tretryInfo: { canRetry: boolean; retryAfterMs?: number },\n\tprops: DriverErrorTelemetryProps,\n): ThrottlingError | GenericNetworkError {\n\tif (retryInfo.retryAfterMs !== undefined && retryInfo.canRetry) {\n\t\treturn new ThrottlingError(message, retryInfo.retryAfterMs / 1000, props);\n\t}\n\treturn new GenericNetworkError(message, retryInfo.canRetry, props);\n}\n\n/**\n * Check if a connection error can be retried. Unless explicitly allowed, retry is disallowed.\n * I.e. asserts or unexpected exceptions in our code result in container failure.\n * @param error - The error to inspect for ability to retry\n * @internal\n */\nexport const canRetryOnError = (error: any): boolean => error?.canRetry === true;\n\n/**\n * Check retryAfterSeconds property on error\n * @internal\n */\nexport const getRetryDelaySecondsFromError = (error: any): number | undefined =>\n\terror?.retryAfterSeconds as number | undefined;\n\n/**\n * Check retryAfterSeconds property on error and convert to ms\n * @internal\n */\nexport const getRetryDelayFromError = (error: any): number | undefined =>\n\terror?.retryAfterSeconds !== undefined ? error.retryAfterSeconds * 1000 : undefined;\n"]}
@@ -0,0 +1,11 @@
1
+ /*!
2
+ * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+ import { ITelemetryErrorEvent } from "@fluidframework/core-interfaces";
6
+ import { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils";
7
+ /**
8
+ * @internal
9
+ */
10
+ export declare function logNetworkFailure(logger: ITelemetryLoggerExt, event: ITelemetryErrorEvent, error?: any): void;
11
+ //# sourceMappingURL=networkUtils.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"networkUtils.d.mts","sourceRoot":"","sources":["../src/networkUtils.ts"],"names":[],"mappings":"AAAA;;;GAGG;OAEI,EAAE,oBAAoB,EAAE,MAAM,iCAAiC;OAC/D,EAAE,mBAAmB,EAAE,MAAM,iCAAiC;AAGrE;;GAEG;AACH,wBAAgB,iBAAiB,CAChC,MAAM,EAAE,mBAAmB,EAC3B,KAAK,EAAE,oBAAoB,EAC3B,KAAK,CAAC,EAAE,GAAG,QAmBX"}
@@ -0,0 +1,25 @@
1
+ /*!
2
+ * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+ import { isOnline, OnlineStatus, canRetryOnError } from "./network.mjs";
6
+ /**
7
+ * @internal
8
+ */
9
+ export function logNetworkFailure(logger, event, error) {
10
+ const newEvent = { ...event };
11
+ const errorOnlineProp = error?.online;
12
+ newEvent.online =
13
+ typeof errorOnlineProp === "string" ? errorOnlineProp : OnlineStatus[isOnline()];
14
+ if (typeof navigator === "object" && navigator !== null) {
15
+ const nav = navigator;
16
+ const connection = nav.connection ?? nav.mozConnection ?? nav.webkitConnection;
17
+ if (connection !== null && typeof connection === "object") {
18
+ newEvent.connectionType = connection.type;
19
+ }
20
+ }
21
+ // non-retryable errors are fatal and should be logged as errors
22
+ newEvent.category = canRetryOnError(error) ? "generic" : "error";
23
+ logger.sendTelemetryEvent(newEvent, error);
24
+ }
25
+ //# sourceMappingURL=networkUtils.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"networkUtils.mjs","sourceRoot":"","sources":["../src/networkUtils.ts"],"names":[],"mappings":"AAAA;;;GAGG;OAII,EAAE,QAAQ,EAAE,YAAY,EAAE,eAAe,EAAE;AAElD;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAChC,MAA2B,EAC3B,KAA2B,EAC3B,KAAW;IAEX,MAAM,QAAQ,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC;IAE9B,MAAM,eAAe,GAAG,KAAK,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,MAAM;QACd,OAAO,eAAe,KAAK,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC;IAElF,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,IAAI,EAAE;QACxD,MAAM,GAAG,GAAG,SAAgB,CAAC;QAC7B,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,aAAa,IAAI,GAAG,CAAC,gBAAgB,CAAC;QAC/E,IAAI,UAAU,KAAK,IAAI,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;YAC1D,QAAQ,CAAC,cAAc,GAAG,UAAU,CAAC,IAAI,CAAC;SAC1C;KACD;IAED,gEAAgE;IAChE,QAAQ,CAAC,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;IACjE,MAAM,CAAC,kBAAkB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AAC5C,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ITelemetryErrorEvent } from \"@fluidframework/core-interfaces\";\nimport { ITelemetryLoggerExt } from \"@fluidframework/telemetry-utils\";\nimport { isOnline, OnlineStatus, canRetryOnError } from \"./network\";\n\n/**\n * @internal\n */\nexport function logNetworkFailure(\n\tlogger: ITelemetryLoggerExt,\n\tevent: ITelemetryErrorEvent,\n\terror?: any,\n) {\n\tconst newEvent = { ...event };\n\n\tconst errorOnlineProp = error?.online;\n\tnewEvent.online =\n\t\ttypeof errorOnlineProp === \"string\" ? errorOnlineProp : OnlineStatus[isOnline()];\n\n\tif (typeof navigator === \"object\" && navigator !== null) {\n\t\tconst nav = navigator as any;\n\t\tconst connection = nav.connection ?? nav.mozConnection ?? nav.webkitConnection;\n\t\tif (connection !== null && typeof connection === \"object\") {\n\t\t\tnewEvent.connectionType = connection.type;\n\t\t}\n\t}\n\n\t// non-retryable errors are fatal and should be logged as errors\n\tnewEvent.category = canRetryOnError(error) ? \"generic\" : \"error\";\n\tlogger.sendTelemetryEvent(newEvent, error);\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/driver-utils";
8
- export declare const pkgVersion = "1.4.0-121020";
9
- //# sourceMappingURL=packageVersion.d.ts.map
8
+ export declare const pkgVersion = "2.0.0-dev-rc.1.0.0.225277";
9
+ //# sourceMappingURL=packageVersion.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"packageVersion.d.mts","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,OAAO,iCAAiC,CAAC;AACtD,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/driver-utils";
8
- export const pkgVersion = "1.4.0-121020";
9
- //# sourceMappingURL=packageVersion.js.map
8
+ export const pkgVersion = "2.0.0-dev-rc.1.0.0.225277";
9
+ //# sourceMappingURL=packageVersion.mjs.map