@fluidframework/odsp-driver 2.0.0-dev-rc.1.0.0.225277 → 2.0.0-dev-rc.1.0.0.232845

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 (338) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/README.md +0 -6
  3. package/api-report/odsp-driver.api.md +5 -5
  4. package/dist/{ReadBufferUtils.cjs → ReadBufferUtils.js} +1 -1
  5. package/dist/ReadBufferUtils.js.map +1 -0
  6. package/dist/{WriteBufferUtils.cjs → WriteBufferUtils.js} +2 -2
  7. package/dist/WriteBufferUtils.js.map +1 -0
  8. package/dist/{checkUrl.cjs → checkUrl.js} +2 -2
  9. package/dist/checkUrl.js.map +1 -0
  10. package/dist/compactSnapshotParser.d.ts +2 -2
  11. package/dist/compactSnapshotParser.d.ts.map +1 -1
  12. package/dist/{compactSnapshotParser.cjs → compactSnapshotParser.js} +12 -11
  13. package/dist/compactSnapshotParser.js.map +1 -0
  14. package/dist/compactSnapshotWriter.d.ts +2 -2
  15. package/dist/compactSnapshotWriter.d.ts.map +1 -1
  16. package/dist/{compactSnapshotWriter.cjs → compactSnapshotWriter.js} +5 -5
  17. package/dist/compactSnapshotWriter.js.map +1 -0
  18. package/dist/{constants.cjs → constants.js} +1 -1
  19. package/dist/constants.js.map +1 -0
  20. package/dist/contracts.d.ts +14 -0
  21. package/dist/contracts.d.ts.map +1 -1
  22. package/dist/contracts.js +13 -0
  23. package/dist/contracts.js.map +1 -0
  24. package/dist/{contractsPublic.cjs → contractsPublic.js} +1 -1
  25. package/dist/contractsPublic.js.map +1 -0
  26. package/dist/createFile.d.ts +1 -1
  27. package/dist/createFile.d.ts.map +1 -1
  28. package/dist/{createFile.cjs → createFile.js} +19 -38
  29. package/dist/createFile.js.map +1 -0
  30. package/dist/createNewContainerOnExistingFile.d.ts.map +1 -1
  31. package/dist/{createNewContainerOnExistingFile.cjs → createNewContainerOnExistingFile.js} +7 -7
  32. package/dist/createNewContainerOnExistingFile.js.map +1 -0
  33. package/dist/{createNewModule.cjs → createNewModule.js} +3 -3
  34. package/dist/createNewModule.js.map +1 -0
  35. package/dist/createNewUtils.d.ts +2 -2
  36. package/dist/createNewUtils.d.ts.map +1 -1
  37. package/dist/{createNewUtils.cjs → createNewUtils.js} +8 -7
  38. package/dist/createNewUtils.js.map +1 -0
  39. package/dist/createOdspCreateContainerRequest.d.ts +2 -2
  40. package/dist/createOdspCreateContainerRequest.d.ts.map +1 -1
  41. package/dist/{createOdspCreateContainerRequest.cjs → createOdspCreateContainerRequest.js} +2 -2
  42. package/dist/createOdspCreateContainerRequest.js.map +1 -0
  43. package/dist/{createOdspUrl.cjs → createOdspUrl.js} +1 -1
  44. package/dist/createOdspUrl.js.map +1 -0
  45. package/dist/epochTracker.d.ts.map +1 -1
  46. package/dist/{epochTracker.cjs → epochTracker.js} +9 -10
  47. package/dist/epochTracker.js.map +1 -0
  48. package/dist/{fetch.cjs → fetch.js} +1 -1
  49. package/dist/fetch.js.map +1 -0
  50. package/dist/fetchSnapshot.d.ts +4 -4
  51. package/dist/fetchSnapshot.d.ts.map +1 -1
  52. package/dist/{fetchSnapshot.cjs → fetchSnapshot.js} +20 -21
  53. package/dist/fetchSnapshot.js.map +1 -0
  54. package/dist/getFileLink.d.ts.map +1 -1
  55. package/dist/{getFileLink.cjs → getFileLink.js} +8 -8
  56. package/dist/getFileLink.js.map +1 -0
  57. package/dist/{getQueryString.cjs → getQueryString.js} +1 -1
  58. package/dist/getQueryString.js.map +1 -0
  59. package/dist/{getUrlAndHeadersWithAuth.cjs → getUrlAndHeadersWithAuth.js} +1 -1
  60. package/dist/getUrlAndHeadersWithAuth.js.map +1 -0
  61. package/dist/{index.cjs → index.js} +18 -18
  62. package/dist/index.js.map +1 -0
  63. package/dist/localOdspDriver/{localOdspDeltaStorageService.cjs → localOdspDeltaStorageService.js} +1 -1
  64. package/dist/localOdspDriver/localOdspDeltaStorageService.js.map +1 -0
  65. package/dist/localOdspDriver/localOdspDocumentService.d.ts +3 -2
  66. package/dist/localOdspDriver/localOdspDocumentService.d.ts.map +1 -1
  67. package/dist/localOdspDriver/{localOdspDocumentService.cjs → localOdspDocumentService.js} +6 -4
  68. package/dist/localOdspDriver/localOdspDocumentService.js.map +1 -0
  69. package/dist/localOdspDriver/{localOdspDocumentServiceFactory.cjs → localOdspDocumentServiceFactory.js} +4 -4
  70. package/dist/localOdspDriver/localOdspDocumentServiceFactory.js.map +1 -0
  71. package/dist/localOdspDriver/localOdspDocumentStorageManager.d.ts +2 -1
  72. package/dist/localOdspDriver/localOdspDocumentStorageManager.d.ts.map +1 -1
  73. package/dist/localOdspDriver/{localOdspDocumentStorageManager.cjs → localOdspDocumentStorageManager.js} +7 -4
  74. package/dist/localOdspDriver/localOdspDocumentStorageManager.js.map +1 -0
  75. package/dist/odsp-driver-alpha.d.ts +4 -3
  76. package/dist/odsp-driver-beta.d.ts +3 -3
  77. package/dist/odsp-driver-public.d.ts +3 -3
  78. package/dist/odsp-driver-untrimmed.d.ts +5 -4
  79. package/dist/odspCache.d.ts +2 -2
  80. package/dist/odspCache.d.ts.map +1 -1
  81. package/dist/{odspCache.cjs → odspCache.js} +1 -1
  82. package/dist/odspCache.js.map +1 -0
  83. package/dist/odspDelayLoadedDeltaStream.d.ts +5 -1
  84. package/dist/odspDelayLoadedDeltaStream.d.ts.map +1 -1
  85. package/dist/{odspDelayLoadedDeltaStream.cjs → odspDelayLoadedDeltaStream.js} +61 -10
  86. package/dist/odspDelayLoadedDeltaStream.js.map +1 -0
  87. package/dist/{odspDeltaStorageService.cjs → odspDeltaStorageService.js} +2 -2
  88. package/dist/odspDeltaStorageService.js.map +1 -0
  89. package/dist/{odspDocumentDeltaConnection.cjs → odspDocumentDeltaConnection.js} +4 -4
  90. package/dist/odspDocumentDeltaConnection.js.map +1 -0
  91. package/dist/odspDocumentService.d.ts +3 -2
  92. package/dist/odspDocumentService.d.ts.map +1 -1
  93. package/dist/{odspDocumentService.cjs → odspDocumentService.js} +16 -11
  94. package/dist/odspDocumentService.js.map +1 -0
  95. package/dist/{odspDocumentServiceFactory.cjs → odspDocumentServiceFactory.js} +3 -3
  96. package/dist/odspDocumentServiceFactory.js.map +1 -0
  97. package/dist/odspDocumentServiceFactoryCore.d.ts.map +1 -1
  98. package/dist/{odspDocumentServiceFactoryCore.cjs → odspDocumentServiceFactoryCore.js} +9 -14
  99. package/dist/odspDocumentServiceFactoryCore.js.map +1 -0
  100. package/dist/{odspDocumentServiceFactoryWithCodeSplit.cjs → odspDocumentServiceFactoryWithCodeSplit.js} +2 -2
  101. package/dist/odspDocumentServiceFactoryWithCodeSplit.js.map +1 -0
  102. package/dist/odspDocumentStorageManager.d.ts +2 -1
  103. package/dist/odspDocumentStorageManager.d.ts.map +1 -1
  104. package/dist/{odspDocumentStorageManager.cjs → odspDocumentStorageManager.js} +39 -18
  105. package/dist/odspDocumentStorageManager.js.map +1 -0
  106. package/dist/odspDocumentStorageServiceBase.d.ts +3 -3
  107. package/dist/odspDocumentStorageServiceBase.d.ts.map +1 -1
  108. package/dist/{odspDocumentStorageServiceBase.cjs → odspDocumentStorageServiceBase.js} +4 -4
  109. package/dist/odspDocumentStorageServiceBase.js.map +1 -0
  110. package/dist/odspDriverUrlResolver.d.ts.map +1 -1
  111. package/dist/{odspDriverUrlResolver.cjs → odspDriverUrlResolver.js} +9 -18
  112. package/dist/odspDriverUrlResolver.js.map +1 -0
  113. package/dist/{odspDriverUrlResolverForShareLink.cjs → odspDriverUrlResolverForShareLink.js} +7 -7
  114. package/dist/odspDriverUrlResolverForShareLink.js.map +1 -0
  115. package/dist/odspError.d.ts.map +1 -1
  116. package/dist/{odspError.cjs → odspError.js} +4 -4
  117. package/dist/odspError.js.map +1 -0
  118. package/dist/{odspFluidFileLink.cjs → odspFluidFileLink.js} +2 -2
  119. package/dist/odspFluidFileLink.js.map +1 -0
  120. package/dist/{odspLocationRedirection.cjs → odspLocationRedirection.js} +2 -2
  121. package/dist/odspLocationRedirection.js.map +1 -0
  122. package/dist/odspPublicUtils.d.ts +1 -0
  123. package/dist/odspPublicUtils.d.ts.map +1 -1
  124. package/dist/{odspPublicUtils.cjs → odspPublicUtils.js} +1 -1
  125. package/dist/odspPublicUtils.js.map +1 -0
  126. package/dist/odspSnapshotParser.d.ts +2 -2
  127. package/dist/odspSnapshotParser.d.ts.map +1 -1
  128. package/dist/{odspSnapshotParser.cjs → odspSnapshotParser.js} +3 -2
  129. package/dist/odspSnapshotParser.js.map +1 -0
  130. package/dist/{odspSummaryUploadManager.cjs → odspSummaryUploadManager.js} +3 -3
  131. package/dist/odspSummaryUploadManager.js.map +1 -0
  132. package/dist/{odspUrlHelper.cjs → odspUrlHelper.js} +1 -1
  133. package/dist/odspUrlHelper.js.map +1 -0
  134. package/dist/odspUtils.d.ts +11 -7
  135. package/dist/odspUtils.d.ts.map +1 -1
  136. package/dist/{odspUtils.cjs → odspUtils.js} +23 -19
  137. package/dist/odspUtils.js.map +1 -0
  138. package/dist/{opsCaching.cjs → opsCaching.js} +1 -1
  139. package/dist/opsCaching.js.map +1 -0
  140. package/dist/packageVersion.d.ts +1 -1
  141. package/dist/{packageVersion.cjs → packageVersion.js} +2 -2
  142. package/dist/packageVersion.js.map +1 -0
  143. package/dist/{prefetchLatestSnapshot.cjs → prefetchLatestSnapshot.js} +3 -3
  144. package/dist/prefetchLatestSnapshot.js.map +1 -0
  145. package/dist/retryErrorsStorageAdapter.d.ts +2 -1
  146. package/dist/retryErrorsStorageAdapter.d.ts.map +1 -1
  147. package/dist/{retryErrorsStorageAdapter.cjs → retryErrorsStorageAdapter.js} +10 -2
  148. package/dist/retryErrorsStorageAdapter.js.map +1 -0
  149. package/dist/{retryUtils.cjs → retryUtils.js} +3 -3
  150. package/dist/retryUtils.js.map +1 -0
  151. package/dist/{socketModule.cjs → socketModule.js} +1 -1
  152. package/dist/socketModule.js.map +1 -0
  153. package/dist/tsdoc-metadata.json +1 -1
  154. package/dist/{vroom.cjs → vroom.js} +4 -4
  155. package/dist/vroom.js.map +1 -0
  156. package/dist/{zipItDataRepresentationUtils.cjs → zipItDataRepresentationUtils.js} +5 -5
  157. package/dist/zipItDataRepresentationUtils.js.map +1 -0
  158. package/lib/compactSnapshotParser.d.mts +2 -2
  159. package/lib/compactSnapshotParser.d.mts.map +1 -1
  160. package/lib/compactSnapshotParser.mjs +8 -7
  161. package/lib/compactSnapshotParser.mjs.map +1 -1
  162. package/lib/compactSnapshotWriter.d.mts +2 -2
  163. package/lib/compactSnapshotWriter.d.mts.map +1 -1
  164. package/lib/compactSnapshotWriter.mjs +1 -1
  165. package/lib/compactSnapshotWriter.mjs.map +1 -1
  166. package/lib/contracts.d.mts +14 -0
  167. package/lib/contracts.d.mts.map +1 -1
  168. package/lib/contracts.mjs +4 -0
  169. package/lib/contracts.mjs.map +1 -1
  170. package/lib/createFile.d.mts +1 -1
  171. package/lib/createFile.d.mts.map +1 -1
  172. package/lib/createFile.mjs +10 -29
  173. package/lib/createFile.mjs.map +1 -1
  174. package/lib/createNewContainerOnExistingFile.d.mts.map +1 -1
  175. package/lib/createNewContainerOnExistingFile.mjs.map +1 -1
  176. package/lib/createNewUtils.d.mts +2 -2
  177. package/lib/createNewUtils.d.mts.map +1 -1
  178. package/lib/createNewUtils.mjs +4 -3
  179. package/lib/createNewUtils.mjs.map +1 -1
  180. package/lib/createOdspCreateContainerRequest.d.mts +2 -2
  181. package/lib/createOdspCreateContainerRequest.d.mts.map +1 -1
  182. package/lib/createOdspCreateContainerRequest.mjs.map +1 -1
  183. package/lib/epochTracker.d.mts.map +1 -1
  184. package/lib/epochTracker.mjs +4 -5
  185. package/lib/epochTracker.mjs.map +1 -1
  186. package/lib/fetchSnapshot.d.mts +4 -4
  187. package/lib/fetchSnapshot.d.mts.map +1 -1
  188. package/lib/fetchSnapshot.mjs +13 -14
  189. package/lib/fetchSnapshot.mjs.map +1 -1
  190. package/lib/getFileLink.d.mts.map +1 -1
  191. package/lib/getFileLink.mjs +3 -3
  192. package/lib/getFileLink.mjs.map +1 -1
  193. package/lib/localOdspDriver/localOdspDocumentService.d.mts +3 -2
  194. package/lib/localOdspDriver/localOdspDocumentService.d.mts.map +1 -1
  195. package/lib/localOdspDriver/localOdspDocumentService.mjs +3 -1
  196. package/lib/localOdspDriver/localOdspDocumentService.mjs.map +1 -1
  197. package/lib/localOdspDriver/localOdspDocumentStorageManager.d.mts +2 -1
  198. package/lib/localOdspDriver/localOdspDocumentStorageManager.d.mts.map +1 -1
  199. package/lib/localOdspDriver/localOdspDocumentStorageManager.mjs +3 -0
  200. package/lib/localOdspDriver/localOdspDocumentStorageManager.mjs.map +1 -1
  201. package/lib/odsp-driver-alpha.d.mts +4 -3
  202. package/lib/odsp-driver-beta.d.mts +3 -3
  203. package/lib/odsp-driver-public.d.mts +3 -3
  204. package/lib/odsp-driver-untrimmed.d.mts +5 -4
  205. package/lib/odspCache.d.mts +2 -2
  206. package/lib/odspCache.d.mts.map +1 -1
  207. package/lib/odspCache.mjs.map +1 -1
  208. package/lib/odspDelayLoadedDeltaStream.d.mts +5 -1
  209. package/lib/odspDelayLoadedDeltaStream.d.mts.map +1 -1
  210. package/lib/odspDelayLoadedDeltaStream.mjs +57 -6
  211. package/lib/odspDelayLoadedDeltaStream.mjs.map +1 -1
  212. package/lib/odspDocumentService.d.mts +3 -2
  213. package/lib/odspDocumentService.d.mts.map +1 -1
  214. package/lib/odspDocumentService.mjs +6 -3
  215. package/lib/odspDocumentService.mjs.map +1 -1
  216. package/lib/odspDocumentServiceFactoryCore.d.mts.map +1 -1
  217. package/lib/odspDocumentServiceFactoryCore.mjs +2 -9
  218. package/lib/odspDocumentServiceFactoryCore.mjs.map +1 -1
  219. package/lib/odspDocumentStorageManager.d.mts +2 -1
  220. package/lib/odspDocumentStorageManager.d.mts.map +1 -1
  221. package/lib/odspDocumentStorageManager.mjs +33 -14
  222. package/lib/odspDocumentStorageManager.mjs.map +1 -1
  223. package/lib/odspDocumentStorageServiceBase.d.mts +3 -3
  224. package/lib/odspDocumentStorageServiceBase.d.mts.map +1 -1
  225. package/lib/odspDocumentStorageServiceBase.mjs +3 -3
  226. package/lib/odspDocumentStorageServiceBase.mjs.map +1 -1
  227. package/lib/odspDriverUrlResolver.d.mts.map +1 -1
  228. package/lib/odspDriverUrlResolver.mjs +4 -13
  229. package/lib/odspDriverUrlResolver.mjs.map +1 -1
  230. package/lib/odspError.d.mts.map +1 -1
  231. package/lib/odspError.mjs +2 -2
  232. package/lib/odspError.mjs.map +1 -1
  233. package/lib/odspPublicUtils.d.mts +1 -0
  234. package/lib/odspPublicUtils.d.mts.map +1 -1
  235. package/lib/odspPublicUtils.mjs.map +1 -1
  236. package/lib/odspSnapshotParser.d.mts +2 -2
  237. package/lib/odspSnapshotParser.d.mts.map +1 -1
  238. package/lib/odspSnapshotParser.mjs +2 -1
  239. package/lib/odspSnapshotParser.mjs.map +1 -1
  240. package/lib/odspUtils.d.mts +11 -7
  241. package/lib/odspUtils.d.mts.map +1 -1
  242. package/lib/odspUtils.mjs +19 -16
  243. package/lib/odspUtils.mjs.map +1 -1
  244. package/lib/packageVersion.d.mts +1 -1
  245. package/lib/packageVersion.mjs +1 -1
  246. package/lib/packageVersion.mjs.map +1 -1
  247. package/lib/retryErrorsStorageAdapter.d.mts +2 -1
  248. package/lib/retryErrorsStorageAdapter.d.mts.map +1 -1
  249. package/lib/retryErrorsStorageAdapter.mjs +9 -1
  250. package/lib/retryErrorsStorageAdapter.mjs.map +1 -1
  251. package/lib/retryUtils.mjs +2 -2
  252. package/lib/retryUtils.mjs.map +1 -1
  253. package/lib/zipItDataRepresentationUtils.mjs +2 -2
  254. package/lib/zipItDataRepresentationUtils.mjs.map +1 -1
  255. package/package.json +30 -21
  256. package/src/compactSnapshotParser.ts +10 -9
  257. package/src/compactSnapshotWriter.ts +3 -3
  258. package/src/contracts.ts +17 -0
  259. package/src/createFile.ts +10 -38
  260. package/src/createNewContainerOnExistingFile.ts +2 -2
  261. package/src/createNewUtils.ts +7 -6
  262. package/src/createOdspCreateContainerRequest.ts +2 -2
  263. package/src/epochTracker.ts +4 -4
  264. package/src/fetchSnapshot.ts +21 -22
  265. package/src/getFileLink.ts +3 -3
  266. package/src/localOdspDriver/localOdspDocumentService.ts +9 -2
  267. package/src/localOdspDriver/localOdspDocumentStorageManager.ts +10 -3
  268. package/src/odspCache.ts +2 -2
  269. package/src/odspDelayLoadedDeltaStream.ts +67 -6
  270. package/src/odspDocumentService.ts +10 -2
  271. package/src/odspDocumentServiceFactoryCore.ts +3 -11
  272. package/src/odspDocumentStorageManager.ts +60 -27
  273. package/src/odspDocumentStorageServiceBase.ts +8 -5
  274. package/src/odspDriverUrlResolver.ts +3 -17
  275. package/src/odspError.ts +2 -3
  276. package/src/odspPublicUtils.ts +1 -0
  277. package/src/odspSnapshotParser.ts +5 -6
  278. package/src/odspUtils.ts +34 -28
  279. package/src/packageVersion.ts +1 -1
  280. package/src/retryErrorsStorageAdapter.ts +12 -1
  281. package/src/retryUtils.ts +2 -2
  282. package/src/zipItDataRepresentationUtils.ts +2 -2
  283. package/dist/ReadBufferUtils.cjs.map +0 -1
  284. package/dist/WriteBufferUtils.cjs.map +0 -1
  285. package/dist/checkUrl.cjs.map +0 -1
  286. package/dist/compactSnapshotParser.cjs.map +0 -1
  287. package/dist/compactSnapshotWriter.cjs.map +0 -1
  288. package/dist/constants.cjs.map +0 -1
  289. package/dist/contracts.cjs +0 -9
  290. package/dist/contracts.cjs.map +0 -1
  291. package/dist/contractsPublic.cjs.map +0 -1
  292. package/dist/createFile.cjs.map +0 -1
  293. package/dist/createNewContainerOnExistingFile.cjs.map +0 -1
  294. package/dist/createNewModule.cjs.map +0 -1
  295. package/dist/createNewUtils.cjs.map +0 -1
  296. package/dist/createOdspCreateContainerRequest.cjs.map +0 -1
  297. package/dist/createOdspUrl.cjs.map +0 -1
  298. package/dist/epochTracker.cjs.map +0 -1
  299. package/dist/fetch.cjs.map +0 -1
  300. package/dist/fetchSnapshot.cjs.map +0 -1
  301. package/dist/getFileLink.cjs.map +0 -1
  302. package/dist/getQueryString.cjs.map +0 -1
  303. package/dist/getUrlAndHeadersWithAuth.cjs.map +0 -1
  304. package/dist/index.cjs.map +0 -1
  305. package/dist/localOdspDriver/localOdspDeltaStorageService.cjs.map +0 -1
  306. package/dist/localOdspDriver/localOdspDocumentService.cjs.map +0 -1
  307. package/dist/localOdspDriver/localOdspDocumentServiceFactory.cjs.map +0 -1
  308. package/dist/localOdspDriver/localOdspDocumentStorageManager.cjs.map +0 -1
  309. package/dist/odspCache.cjs.map +0 -1
  310. package/dist/odspDelayLoadedDeltaStream.cjs.map +0 -1
  311. package/dist/odspDeltaStorageService.cjs.map +0 -1
  312. package/dist/odspDocumentDeltaConnection.cjs.map +0 -1
  313. package/dist/odspDocumentService.cjs.map +0 -1
  314. package/dist/odspDocumentServiceFactory.cjs.map +0 -1
  315. package/dist/odspDocumentServiceFactoryCore.cjs.map +0 -1
  316. package/dist/odspDocumentServiceFactoryWithCodeSplit.cjs.map +0 -1
  317. package/dist/odspDocumentStorageManager.cjs.map +0 -1
  318. package/dist/odspDocumentStorageServiceBase.cjs.map +0 -1
  319. package/dist/odspDriverUrlResolver.cjs.map +0 -1
  320. package/dist/odspDriverUrlResolverForShareLink.cjs.map +0 -1
  321. package/dist/odspError.cjs.map +0 -1
  322. package/dist/odspFluidFileLink.cjs.map +0 -1
  323. package/dist/odspLocationRedirection.cjs.map +0 -1
  324. package/dist/odspPublicUtils.cjs.map +0 -1
  325. package/dist/odspSnapshotParser.cjs.map +0 -1
  326. package/dist/odspSummaryUploadManager.cjs.map +0 -1
  327. package/dist/odspUrlHelper.cjs.map +0 -1
  328. package/dist/odspUtils.cjs.map +0 -1
  329. package/dist/opsCaching.cjs.map +0 -1
  330. package/dist/packageVersion.cjs.map +0 -1
  331. package/dist/prefetchLatestSnapshot.cjs.map +0 -1
  332. package/dist/retryErrorsStorageAdapter.cjs.map +0 -1
  333. package/dist/retryUtils.cjs.map +0 -1
  334. package/dist/socketModule.cjs.map +0 -1
  335. package/dist/vroom.cjs.map +0 -1
  336. package/dist/zipItDataRepresentationUtils.cjs.map +0 -1
  337. package/tsc-multi.test.json +0 -4
  338. /package/{.eslintrc.js → .eslintrc.cjs} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"zipItDataRepresentationUtils.mjs","sourceRoot":"","sources":["../src/zipItDataRepresentationUtils.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\n/**\n * Data representation which is followed(zipIt Protocol) here is described in this document:\n * https://microsoft.sharepoint-df.com/:w:/t/ODSPFileStore/ER06b64K_XdDjEyAKl-UT60BJiId39SCVkYSyo_2pvH9gQ?e=KYQ0c5\n */\n\nimport { Uint8ArrayToArrayBuffer, Uint8ArrayToString } from \"@fluid-internal/client-utils\";\nimport { assert } from \"@fluidframework/core-utils\";\nimport { ITelemetryLoggerExt } from \"@fluidframework/telemetry-utils\";\nimport { NonRetryableError } from \"@fluidframework/driver-utils\";\nimport { DriverErrorType } from \"@fluidframework/driver-definitions\";\nimport { ReadBuffer } from \"./ReadBufferUtils\";\nimport { pkgVersion as driverVersion } from \"./packageVersion\";\nimport { measure } from \"./odspUtils\";\n\n// https://onedrive.visualstudio.com/SharePoint%20Online/_git/SPO?path=/cobalt/Base/Property/BinaryEncodedPropertyReader.cs&version=GBmaster&_a=contents\n/**\n * Control codes used by tree serialization / decentralization code. Same as on server. These can be found on\n * filestore code on server too at above link.\n */\nexport enum MarkerCodes {\n\tBoolTrue = 11, // value = true\n\tBoolFalse = 12, // value = false\n\n\tStringEmpty = 13, // value = \"\"\n\tString8Length = 14, // unsigned-8-bit little-endian length, follows by UTF-8 bytes of length\n\tString16Length = 15, // unsigned-16-bit little-endian length, follows by UTF-8 bytes of length\n\tString32Length = 16, // unsigned-32-bit little-endian length, follows by UTF-8 bytes of length\n\n\tConstString8Id = 17, // unsigned-8-bit little-endian const string id follows\n\tConstString16Id = 18, // unsigned-16-bit little-endian const string id follows\n\tConstString32Id = 19, // unsigned-32-bit little-endian const string id follows\n\tConstStringDeclare = 20, // Code for declaring a const string with size <= 1 byte\n\tConstStringDeclareBig = 21, // Code for declaring a const string with size > 1 byte. It is represented in 4 bytes.\n\n\tInt0 = 1, // value = 0\n\tUInt8 = 3, // unsigned-8-bit little-endian follows\n\tUInt16 = 5, // unsigned-16-bit little-endian follows\n\tUInt32 = 7, // unsigned-32-bit little-endian follows\n\tUInt64 = 9, // unsigned-64-bit little-endian follows\n\tInt8 = 2, // signed-8-bit little-endian follows\n\tInt16 = 4, // signed-16-bit little-endian follows\n\tInt32 = 6, // signed-32-bit little-endian follows\n\tInt64 = 8, // signed-64-bit little-endian follows\n\n\tBinaryEmpty = 32, // value = byte[]\n\tBinarySingle8 = 33, // unsigned-8-bit little-endian length, follows by bytes of length\n\tBinarySingle16 = 34, // unsigned-16-bit little-endian length, follows by bytes of length\n\tBinarySingle32 = 35, // unsigned-32-bit little-endian length, follows by bytes of length\n\tBinarySingle64 = 36, // unsigned-64-bit little-endian length, follows by bytes of length\n}\n\n/**\n * Control codes used by tree serialization / decentralization code. They mark the start of sections.\n */\nexport enum MarkerCodesStart {\n\t\"list\" = 49,\n\t\"set\" = 51,\n}\n\n/**\n * Control codes used by tree serialization / decentralization code. They mark the end of sections.\n */\nexport enum MarkerCodesEnd {\n\t\"list\" = 50,\n\t\"set\" = 52,\n}\n\n/**\n * This contains mapping of Marker Codes to number of bytes in which the corresponding data\n * will be stored.\n */\nexport const codeToBytesMap = {\n\t// Integer code to bytes\n\t1: 0,\n\t2: 1,\n\t3: 1,\n\t4: 2,\n\t5: 2,\n\t6: 4,\n\t7: 4,\n\t8: 8,\n\t9: 8,\n\n\t// String code to Bytes\n\t13: 0,\n\t14: 1,\n\t15: 2,\n\t16: 4,\n\n\t17: 1,\n\t18: 2,\n\t19: 4,\n\n\t20: 1,\n\t21: 4,\n\n\t// Binary code to bytes\n\t32: 0,\n\t33: 1,\n\t34: 2,\n\t35: 4,\n\t36: 8,\n};\n\nexport function getValueSafely(map: { [index: number]: number }, key: number) {\n\tconst val = map[key];\n\tassert(val !== undefined, 0x287 /* key must exist in the map */);\n\treturn val;\n}\n\nexport function getNodeProps(node: NodeCore) {\n\tconst res: Record<string, NodeTypes> = {};\n\tfor (const [keyNode, valueNode] of node.iteratePairs()) {\n\t\tconst id = getStringInstance(keyNode, \"keynode should be a string\");\n\t\tres[id] = valueNode;\n\t}\n\treturn res;\n}\n\nexport function iteratePairs<T>(it: IterableIterator<T>) {\n\tconst res: IterableIterator<[T, T]> = {\n\t\tnext: () => {\n\t\t\tconst a = it.next();\n\t\t\tif (a.done) {\n\t\t\t\treturn { value: undefined, done: true };\n\t\t\t}\n\t\t\tconst b = it.next();\n\t\t\tassert(b.done !== true, 0x22b /* \"Should be a pair\" */);\n\t\t\treturn { value: [a.value, b.value], done: b.done };\n\t\t},\n\t\t[Symbol.iterator]: () => {\n\t\t\treturn res;\n\t\t},\n\t};\n\treturn res;\n}\n\n/**\n * Helper function that returns iterator from an object\n * @param obj - object that supports iteration\n */\nexport function iterate<T>(obj: { [Symbol.iterator]: () => IterableIterator<T> }) {\n\treturn obj[Symbol.iterator]();\n}\n\n/**\n * Base class to represent binary blob element.\n * Binary blob is one of three types supported as a leaf node of a tree.\n * Note: concrete implementations (derived classes) are not exposed from this module\n */\nexport abstract class BlobCore {\n\tpublic abstract get buffer(): Uint8Array;\n\tpublic abstract get arrayBuffer(): ArrayBufferLike;\n\n\t/**\n\t * Represents a blob.\n\t */\n\tconstructor() {}\n}\n\n/**\n * \"deep copy\" blob, holds to binary data passed in\n * It is called deep copy as a counter-part to BlobShallowCopy, which\n * is a reference to underlying binary stream (ReadBuffer).\n */\nclass BlobDeepCopy extends BlobCore {\n\t/**\n\t * Represents a deep copy of the blob.\n\t * @param data - Data array of the blob\n\t */\n\tconstructor(protected readonly data: Uint8Array) {\n\t\tsuper();\n\t}\n\n\tpublic get buffer() {\n\t\treturn this.data;\n\t}\n\n\tpublic get arrayBuffer(): ArrayBufferLike {\n\t\treturn Uint8ArrayToArrayBuffer(this.buffer);\n\t}\n\n\tpublic static read(buffer: ReadBuffer, lengthLen: number): BlobCore {\n\t\tconst length = buffer.read(lengthLen);\n\t\tconst data = new Uint8Array(length);\n\t\tfor (let counter = 0; counter < length; counter++) {\n\t\t\tdata[counter] = buffer.read();\n\t\t}\n\t\treturn new BlobDeepCopy(data);\n\t}\n}\n\n/**\n * Shallow copy blob, keeps a reference to portion of ReadBuffer\n * it was constructed from. It takes much less memory compared to BlobDeepCopy\n */\nexport class BlobShallowCopy extends BlobCore {\n\t/**\n\t * Represents a shallow copy of the blob. It is not a separate blob, just reference to original blobs.\n\t * @param data - Data array of the blob\n\t * @param start - Start point of the blob in the buffer.\n\t * @param end - End point of the blob in the buffer.\n\t */\n\tconstructor(\n\t\tprotected data: Uint8Array,\n\t\tprotected start: number,\n\t\tprotected end: number,\n\t) {\n\t\tsuper();\n\t}\n\n\tpublic get buffer() {\n\t\treturn this.data.subarray(this.start, this.end);\n\t}\n\n\t// Equivalent to Uint8ArrayToArrayBuffer(this.buffer)\n\tpublic get arrayBuffer(): ArrayBufferLike {\n\t\tconst offset = this.data.byteOffset;\n\t\treturn this.data.buffer.slice(this.start + offset, this.end + offset);\n\t}\n\n\tpublic static read(buffer: ReadBuffer, lengthLen: number): BlobCore {\n\t\tconst length = buffer.read(lengthLen);\n\t\tconst pos = buffer.pos;\n\t\tbuffer.skip(length);\n\t\treturn new BlobShallowCopy(buffer.buffer, pos, pos + length);\n\t}\n}\n\nexport const addStringProperty = (node: NodeCore, a: string, b: string) => {\n\tnode.addDictionaryString(a);\n\tnode.addString(b);\n};\nexport const addDictionaryStringProperty = (node: NodeCore, a: string, b: string) => {\n\tnode.addDictionaryString(a);\n\tnode.addString(b);\n};\nexport const addNumberProperty = (node: NodeCore, a: string, b: number) => {\n\tnode.addDictionaryString(a);\n\tnode.addNumber(b);\n};\nexport const addBoolProperty = (node: NodeCore, a: string, b: boolean) => {\n\tnode.addDictionaryString(a);\n\tnode.addBool(b);\n};\n\nexport interface IStringElement {\n\tcontent: string;\n\tdictionary: boolean;\n\t_stringElement: true;\n}\n\nexport interface IStringElementInternal extends Omit<IStringElement, \"content\"> {\n\tcontent?: string;\n\tstartPos: number;\n\tendPos: number;\n}\n\n/**\n * Three leaf types supported by tree:\n * 1. Node (sub-tree)\n * 2. binary blob\n * 3. integer\n * 4. boolean\n */\nexport type NodeTypes = NodeCore | BlobCore | number | boolean | IStringElement;\n\nexport type NodeCoreTypes = \"list\" | \"set\";\n\n/**\n * Node - node in the tree (non-leaf element of the tree)\n */\nexport class NodeCore {\n\t// It is an array of nodes.\n\tprivate readonly children: NodeTypes[] = [];\n\tpublic get nodes() {\n\t\treturn this.children;\n\t}\n\n\tconstructor(public type: NodeCoreTypes = \"set\") {}\n\n\tpublic [Symbol.iterator]() {\n\t\treturn this.children[Symbol.iterator]();\n\t}\n\n\tpublic iteratePairs() {\n\t\tassert(this.length % 2 === 0, 0x22c /* \"reading pairs\" */);\n\t\treturn iteratePairs(iterate(this));\n\t}\n\n\tpublic get length() {\n\t\treturn this.children.length;\n\t}\n\n\tpublic get(index: number) {\n\t\treturn this.children[index];\n\t}\n\n\tpublic getString(index: number): string {\n\t\tconst node = this.children[index];\n\t\treturn getStringInstance(node, \"getString should return string\");\n\t}\n\n\tpublic getMaybeString(index: number) {\n\t\tconst node = this.children[index];\n\t\treturn getMaybeStringInstance(node);\n\t}\n\n\tpublic getBlob(index: number): BlobCore {\n\t\tconst node = this.children[index];\n\t\tassertBlobCoreInstance(node, \"getBlob should return a blob\");\n\t\treturn node;\n\t}\n\n\tpublic getNode(index: number): NodeCore {\n\t\tconst node = this.children[index];\n\t\tassertNodeCoreInstance(node, \"getNode should return a node\");\n\t\treturn node;\n\t}\n\n\tpublic getNumber(index: number): number {\n\t\tconst node = this.children[index];\n\t\tassertNumberInstance(node, \"getNumber should return a number\");\n\t\treturn node;\n\t}\n\n\tpublic getBool(index: number): boolean {\n\t\tconst node = this.children[index];\n\t\tassertBoolInstance(node, \"getBool should return a boolean\");\n\t\treturn node;\n\t}\n\n\tpublic addNode(type?: NodeCoreTypes): NodeCore {\n\t\tconst node = new NodeCore(type);\n\t\tthis.children.push(node);\n\t\treturn node;\n\t}\n\n\tpublic addBlob(blob: Uint8Array) {\n\t\tthis.children.push(new BlobDeepCopy(blob));\n\t}\n\n\tpublic addDictionaryString(payload: string) {\n\t\tthis.children.push({\n\t\t\tcontent: payload,\n\t\t\tdictionary: true,\n\t\t\t_stringElement: true,\n\t\t});\n\t}\n\n\tpublic addString(payload: string) {\n\t\tthis.children.push({\n\t\t\tcontent: payload,\n\t\t\tdictionary: false,\n\t\t\t_stringElement: true,\n\t\t});\n\t}\n\n\tpublic addNumber(payload: number | undefined) {\n\t\tassert(Number.isInteger(payload), 0x231 /* \"Number should be an integer\" */);\n\t\tassert(payload !== undefined && payload >= 0, 0x232 /* \"Payload should not be negative\" */);\n\t\tthis.children.push(payload);\n\t}\n\n\tpublic addBool(payload: boolean) {\n\t\tthis.children.push(payload);\n\t}\n\n\t// Can we do more efficiently here, without extra objects somehow??\n\tprivate static readString(buffer: ReadBuffer, code: number, dictionary: boolean) {\n\t\tconst lengthLen = getValueSafely(codeToBytesMap, code);\n\t\tconst length = buffer.read(lengthLen);\n\t\tconst startPos = buffer.pos;\n\t\tbuffer.skip(length);\n\t\tconst result: IStringElementInternal = {\n\t\t\t// Note: Setting here property 'content: undefined' makes code substantially slower!\n\t\t\tdictionary,\n\t\t\t_stringElement: true,\n\t\t\tstartPos,\n\t\t\tendPos: buffer.pos,\n\t\t};\n\n\t\t// We are lying here in terms of presence of `content` property.\n\t\t// This will be addressed at the bottom of NodeCore.load() by resolving all strings at once!\n\t\t// It's equivalent (but much slower!) to do it here via\n\t\t// result.content = Uint8ArrayToString(buffer.buffer.subarray(startPos, buffer.pos), \"utf-8\");\n\t\treturn result as IStringElementInternal & IStringElement;\n\t}\n\n\t/**\n\t * Load and parse the buffer into a tree.\n\t * @param buffer - buffer to read from.\n\t */\n\tprotected load(buffer: ReadBuffer, logger: ITelemetryLoggerExt) {\n\t\tconst [stringsToResolve, durationStructure] = measure(() =>\n\t\t\tthis.loadStructure(buffer, logger),\n\t\t);\n\t\tconst [, durationStrings] = measure(() =>\n\t\t\tthis.loadStrings(buffer, stringsToResolve, logger),\n\t\t);\n\t\treturn { durationStructure, durationStrings };\n\t}\n\n\t/**\n\t * Load and parse the buffer into a tree.\n\t * @param buffer - buffer to read from.\n\t */\n\tprotected loadStructure(buffer: ReadBuffer, logger: ITelemetryLoggerExt) {\n\t\tconst stack: NodeTypes[][] = [];\n\t\tconst stringsToResolve: IStringElementInternal[] = [];\n\t\tconst dictionary: IStringElement[] = [];\n\n\t\tlet children = this.children;\n\t\tfor (; !buffer.eof; ) {\n\t\t\tconst code = buffer.read();\n\t\t\tswitch (code) {\n\t\t\t\tcase MarkerCodesStart.list:\n\t\t\t\tcase MarkerCodesStart.set: {\n\t\t\t\t\tconst childValue = new NodeCore(code === MarkerCodesStart.set ? \"set\" : \"list\");\n\t\t\t\t\tchildren.push(childValue);\n\t\t\t\t\tstack.push(children);\n\t\t\t\t\tchildren = childValue.children;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tcase MarkerCodes.ConstStringDeclare:\n\t\t\t\tcase MarkerCodes.ConstStringDeclareBig: {\n\t\t\t\t\tconst stringId = buffer.read(getValueSafely(codeToBytesMap, code));\n\t\t\t\t\tconst constString = NodeCore.readString(buffer, code, true /* dictionary */);\n\t\t\t\t\tstringsToResolve.push(constString);\n\t\t\t\t\tdictionary[stringId] = constString;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tcase MarkerCodes.ConstString8Id:\n\t\t\t\tcase MarkerCodes.ConstString16Id:\n\t\t\t\tcase MarkerCodes.ConstString32Id: {\n\t\t\t\t\tconst stringId = buffer.read(getValueSafely(codeToBytesMap, code));\n\t\t\t\t\tconst content = dictionary[stringId];\n\t\t\t\t\tassert(content !== undefined, 0x3de /* const string not found */);\n\t\t\t\t\tchildren.push(content);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tcase MarkerCodes.StringEmpty:\n\t\t\t\tcase MarkerCodes.String8Length:\n\t\t\t\tcase MarkerCodes.String16Length:\n\t\t\t\tcase MarkerCodes.String32Length: {\n\t\t\t\t\tconst str = NodeCore.readString(buffer, code, false /* dictionary */);\n\t\t\t\t\tstringsToResolve.push(str);\n\t\t\t\t\tchildren.push(str);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tcase MarkerCodes.BinaryEmpty:\n\t\t\t\tcase MarkerCodes.BinarySingle8:\n\t\t\t\tcase MarkerCodes.BinarySingle16:\n\t\t\t\tcase MarkerCodes.BinarySingle32:\n\t\t\t\tcase MarkerCodes.BinarySingle64: {\n\t\t\t\t\tchildren.push(\n\t\t\t\t\t\tBlobShallowCopy.read(buffer, getValueSafely(codeToBytesMap, code)),\n\t\t\t\t\t);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\t// If integer is 0.\n\t\t\t\tcase MarkerCodes.Int0: {\n\t\t\t\t\tchildren.push(0);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tcase MarkerCodes.UInt8:\n\t\t\t\tcase MarkerCodes.UInt16:\n\t\t\t\tcase MarkerCodes.UInt32:\n\t\t\t\tcase MarkerCodes.UInt64:\n\t\t\t\tcase MarkerCodes.Int8:\n\t\t\t\tcase MarkerCodes.Int16:\n\t\t\t\tcase MarkerCodes.Int32:\n\t\t\t\tcase MarkerCodes.Int64: {\n\t\t\t\t\tchildren.push(buffer.read(getValueSafely(codeToBytesMap, code)));\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tcase MarkerCodes.BoolTrue:\n\t\t\t\t\tchildren.push(true);\n\t\t\t\t\tcontinue;\n\t\t\t\tcase MarkerCodes.BoolFalse:\n\t\t\t\t\tchildren.push(false);\n\t\t\t\t\tcontinue;\n\t\t\t\tcase MarkerCodesEnd.list:\n\t\t\t\tcase MarkerCodesEnd.set:\n\t\t\t\t\t// Note: We are not checking that end marker matches start marker.\n\t\t\t\t\t// I.e. that we do not have a case where we start a 'list' but end with a 'set'\n\t\t\t\t\t// Checking it would require more state tracking that seems not very useful, given\n\t\t\t\t\t// our code does not care.\n\t\t\t\t\tchildren = stack.pop()!;\n\n\t\t\t\t\t// To my surprise, checking children !== undefined adds measurable cost!\n\t\t\t\t\t// We will rely on children.push() crashing in case of mismatch, and check below\n\t\t\t\t\t// (outside of the loop)\n\t\t\t\t\tcontinue;\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new Error(`Invalid code: ${code}`);\n\t\t\t}\n\t\t}\n\n\t\t// This also ensures that stack.length === 0.\n\t\tassert(children === this.children, 0x3e7 /* Unpaired start/end list/set markers! */);\n\n\t\treturn stringsToResolve;\n\t}\n\n\tprivate loadStrings(\n\t\tbuffer: ReadBuffer,\n\t\tstringsToResolve: IStringElementInternal[],\n\t\tlogger: ITelemetryLoggerExt,\n\t) {\n\t\t/**\n\t\t * Process all the strings at once!\n\t\t */\n\t\tlet length = 0;\n\t\tfor (const el of stringsToResolve) {\n\t\t\tlength += el.endPos - el.startPos + 1;\n\t\t}\n\t\tconst stringBuffer = new Uint8Array(length);\n\n\t\tlength = 0;\n\t\tconst input = buffer.buffer;\n\t\tassert(input.byteOffset === 0, 0x3e8 /* code below assumes no offset */);\n\n\t\tfor (const el of stringsToResolve) {\n\t\t\tfor (let it = el.startPos; it < el.endPos; it++) {\n\t\t\t\tstringBuffer[length] = input[it];\n\t\t\t\tlength++;\n\t\t\t}\n\t\t\tstringBuffer[length] = 0;\n\t\t\tlength++;\n\t\t}\n\t\tassert(length === stringBuffer.length, 0x418 /* properly encoded */);\n\n\t\tconst result = Uint8ArrayToString(stringBuffer, \"utf-8\").split(String.fromCharCode(0));\n\t\tif (result.length === stringsToResolve.length + 1) {\n\t\t\t// All is good, we expect all the cases to get here\n\t\t\tfor (let i = 0; i < stringsToResolve.length; i++) {\n\t\t\t\tstringsToResolve[i].content = result[i];\n\t\t\t}\n\t\t} else {\n\t\t\t// String content has \\0 chars!\n\t\t\t// Recovery code\n\t\t\tlogger.sendErrorEvent({ eventName: \"StringParsingError\" });\n\t\t\tfor (const el of stringsToResolve) {\n\t\t\t\tassert(\n\t\t\t\t\tel.content ===\n\t\t\t\t\t\tUint8ArrayToString(input.subarray(el.startPos, el.endPos), \"utf-8\"),\n\t\t\t\t\t0x3ea /* test */,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * TreeBuilder - Root of the tree.\n * Provides loading and serialization capabilities.\n */\nexport class TreeBuilder extends NodeCore {\n\tstatic load(buffer: ReadBuffer, logger: ITelemetryLoggerExt) {\n\t\tconst builder = new TreeBuilder();\n\t\tconst telemetryProps = builder.load(buffer, logger);\n\t\tassert(buffer.eof, 0x233 /* \"Unexpected data at the end of buffer\" */);\n\t\treturn { builder, telemetryProps };\n\t}\n}\n\nexport function getMaybeStringInstance(node: NodeTypes): string | undefined {\n\tconst maybeString = node as IStringElement;\n\tif (maybeString._stringElement) {\n\t\treturn maybeString.content;\n\t}\n}\n\nexport function getStringInstance(node: NodeTypes, message: string): string {\n\tconst maybeString = node as IStringElement;\n\tif (maybeString._stringElement) {\n\t\treturn maybeString.content;\n\t}\n\tthrowBufferParseException(node, \"BlobCore\", message);\n}\n\nexport function assertBlobCoreInstance(node: NodeTypes, message: string): asserts node is BlobCore {\n\tif (node instanceof BlobCore) {\n\t\treturn;\n\t}\n\tthrowBufferParseException(node, \"BlobCore\", message);\n}\n\nexport function assertNodeCoreInstance(node: NodeTypes, message: string): asserts node is NodeCore {\n\tif (node instanceof NodeCore) {\n\t\treturn;\n\t}\n\tthrowBufferParseException(node, \"NodeCore\", message);\n}\n\nexport function assertNumberInstance(node: NodeTypes, message: string): asserts node is number {\n\tif (typeof node === \"number\") {\n\t\treturn;\n\t}\n\tthrowBufferParseException(node, \"Number\", message);\n}\n\nexport function assertBoolInstance(node: NodeTypes, message: string): asserts node is boolean {\n\tif (typeof node === \"boolean\") {\n\t\treturn;\n\t}\n\tthrowBufferParseException(node, \"Boolean\", message);\n}\n\nfunction throwBufferParseException(\n\tnode: NodeTypes,\n\texpectedNodeType: NodeType,\n\tmessage: string,\n): never {\n\tthrow new NonRetryableError(\n\t\t`Buffer parsing exception: ${message}`,\n\t\tDriverErrorType.incorrectServerResponse,\n\t\t{\n\t\t\tnodeType: getNodeType(node),\n\t\t\texpectedNodeType,\n\t\t\tdriverVersion,\n\t\t},\n\t);\n}\n\nfunction getNodeType(value: NodeTypes): NodeType {\n\tif (typeof value === \"number\") {\n\t\treturn \"Number\";\n\t} else if (value instanceof BlobCore) {\n\t\treturn \"BlobCore\";\n\t} else if (value instanceof NodeCore) {\n\t\treturn \"NodeCore\";\n\t} else if (typeof value === \"boolean\") {\n\t\treturn \"Boolean\";\n\t} else if (value._stringElement) {\n\t\treturn \"String\";\n\t}\n\treturn \"UnknownType\";\n}\n\ntype NodeType = \"Number\" | \"BlobCore\" | \"NodeCore\" | \"Boolean\" | \"UnknownType\" | \"String\";\n"]}
1
+ {"version":3,"file":"zipItDataRepresentationUtils.mjs","sourceRoot":"","sources":["../src/zipItDataRepresentationUtils.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\n/**\n * Data representation which is followed(zipIt Protocol) here is described in this document:\n * https://microsoft.sharepoint-df.com/:w:/t/ODSPFileStore/ER06b64K_XdDjEyAKl-UT60BJiId39SCVkYSyo_2pvH9gQ?e=KYQ0c5\n */\n\nimport { Uint8ArrayToArrayBuffer, Uint8ArrayToString } from \"@fluid-internal/client-utils\";\nimport { assert } from \"@fluidframework/core-utils\";\nimport { ITelemetryLoggerExt } from \"@fluidframework/telemetry-utils\";\nimport { NonRetryableError } from \"@fluidframework/driver-utils\";\nimport { OdspErrorTypes } from \"@fluidframework/odsp-driver-definitions\";\nimport { ReadBuffer } from \"./ReadBufferUtils\";\nimport { pkgVersion as driverVersion } from \"./packageVersion\";\nimport { measure } from \"./odspUtils\";\n\n// https://onedrive.visualstudio.com/SharePoint%20Online/_git/SPO?path=/cobalt/Base/Property/BinaryEncodedPropertyReader.cs&version=GBmaster&_a=contents\n/**\n * Control codes used by tree serialization / decentralization code. Same as on server. These can be found on\n * filestore code on server too at above link.\n */\nexport enum MarkerCodes {\n\tBoolTrue = 11, // value = true\n\tBoolFalse = 12, // value = false\n\n\tStringEmpty = 13, // value = \"\"\n\tString8Length = 14, // unsigned-8-bit little-endian length, follows by UTF-8 bytes of length\n\tString16Length = 15, // unsigned-16-bit little-endian length, follows by UTF-8 bytes of length\n\tString32Length = 16, // unsigned-32-bit little-endian length, follows by UTF-8 bytes of length\n\n\tConstString8Id = 17, // unsigned-8-bit little-endian const string id follows\n\tConstString16Id = 18, // unsigned-16-bit little-endian const string id follows\n\tConstString32Id = 19, // unsigned-32-bit little-endian const string id follows\n\tConstStringDeclare = 20, // Code for declaring a const string with size <= 1 byte\n\tConstStringDeclareBig = 21, // Code for declaring a const string with size > 1 byte. It is represented in 4 bytes.\n\n\tInt0 = 1, // value = 0\n\tUInt8 = 3, // unsigned-8-bit little-endian follows\n\tUInt16 = 5, // unsigned-16-bit little-endian follows\n\tUInt32 = 7, // unsigned-32-bit little-endian follows\n\tUInt64 = 9, // unsigned-64-bit little-endian follows\n\tInt8 = 2, // signed-8-bit little-endian follows\n\tInt16 = 4, // signed-16-bit little-endian follows\n\tInt32 = 6, // signed-32-bit little-endian follows\n\tInt64 = 8, // signed-64-bit little-endian follows\n\n\tBinaryEmpty = 32, // value = byte[]\n\tBinarySingle8 = 33, // unsigned-8-bit little-endian length, follows by bytes of length\n\tBinarySingle16 = 34, // unsigned-16-bit little-endian length, follows by bytes of length\n\tBinarySingle32 = 35, // unsigned-32-bit little-endian length, follows by bytes of length\n\tBinarySingle64 = 36, // unsigned-64-bit little-endian length, follows by bytes of length\n}\n\n/**\n * Control codes used by tree serialization / decentralization code. They mark the start of sections.\n */\nexport enum MarkerCodesStart {\n\t\"list\" = 49,\n\t\"set\" = 51,\n}\n\n/**\n * Control codes used by tree serialization / decentralization code. They mark the end of sections.\n */\nexport enum MarkerCodesEnd {\n\t\"list\" = 50,\n\t\"set\" = 52,\n}\n\n/**\n * This contains mapping of Marker Codes to number of bytes in which the corresponding data\n * will be stored.\n */\nexport const codeToBytesMap = {\n\t// Integer code to bytes\n\t1: 0,\n\t2: 1,\n\t3: 1,\n\t4: 2,\n\t5: 2,\n\t6: 4,\n\t7: 4,\n\t8: 8,\n\t9: 8,\n\n\t// String code to Bytes\n\t13: 0,\n\t14: 1,\n\t15: 2,\n\t16: 4,\n\n\t17: 1,\n\t18: 2,\n\t19: 4,\n\n\t20: 1,\n\t21: 4,\n\n\t// Binary code to bytes\n\t32: 0,\n\t33: 1,\n\t34: 2,\n\t35: 4,\n\t36: 8,\n};\n\nexport function getValueSafely(map: { [index: number]: number }, key: number) {\n\tconst val = map[key];\n\tassert(val !== undefined, 0x287 /* key must exist in the map */);\n\treturn val;\n}\n\nexport function getNodeProps(node: NodeCore) {\n\tconst res: Record<string, NodeTypes> = {};\n\tfor (const [keyNode, valueNode] of node.iteratePairs()) {\n\t\tconst id = getStringInstance(keyNode, \"keynode should be a string\");\n\t\tres[id] = valueNode;\n\t}\n\treturn res;\n}\n\nexport function iteratePairs<T>(it: IterableIterator<T>) {\n\tconst res: IterableIterator<[T, T]> = {\n\t\tnext: () => {\n\t\t\tconst a = it.next();\n\t\t\tif (a.done) {\n\t\t\t\treturn { value: undefined, done: true };\n\t\t\t}\n\t\t\tconst b = it.next();\n\t\t\tassert(b.done !== true, 0x22b /* \"Should be a pair\" */);\n\t\t\treturn { value: [a.value, b.value], done: b.done };\n\t\t},\n\t\t[Symbol.iterator]: () => {\n\t\t\treturn res;\n\t\t},\n\t};\n\treturn res;\n}\n\n/**\n * Helper function that returns iterator from an object\n * @param obj - object that supports iteration\n */\nexport function iterate<T>(obj: { [Symbol.iterator]: () => IterableIterator<T> }) {\n\treturn obj[Symbol.iterator]();\n}\n\n/**\n * Base class to represent binary blob element.\n * Binary blob is one of three types supported as a leaf node of a tree.\n * Note: concrete implementations (derived classes) are not exposed from this module\n */\nexport abstract class BlobCore {\n\tpublic abstract get buffer(): Uint8Array;\n\tpublic abstract get arrayBuffer(): ArrayBufferLike;\n\n\t/**\n\t * Represents a blob.\n\t */\n\tconstructor() {}\n}\n\n/**\n * \"deep copy\" blob, holds to binary data passed in\n * It is called deep copy as a counter-part to BlobShallowCopy, which\n * is a reference to underlying binary stream (ReadBuffer).\n */\nclass BlobDeepCopy extends BlobCore {\n\t/**\n\t * Represents a deep copy of the blob.\n\t * @param data - Data array of the blob\n\t */\n\tconstructor(protected readonly data: Uint8Array) {\n\t\tsuper();\n\t}\n\n\tpublic get buffer() {\n\t\treturn this.data;\n\t}\n\n\tpublic get arrayBuffer(): ArrayBufferLike {\n\t\treturn Uint8ArrayToArrayBuffer(this.buffer);\n\t}\n\n\tpublic static read(buffer: ReadBuffer, lengthLen: number): BlobCore {\n\t\tconst length = buffer.read(lengthLen);\n\t\tconst data = new Uint8Array(length);\n\t\tfor (let counter = 0; counter < length; counter++) {\n\t\t\tdata[counter] = buffer.read();\n\t\t}\n\t\treturn new BlobDeepCopy(data);\n\t}\n}\n\n/**\n * Shallow copy blob, keeps a reference to portion of ReadBuffer\n * it was constructed from. It takes much less memory compared to BlobDeepCopy\n */\nexport class BlobShallowCopy extends BlobCore {\n\t/**\n\t * Represents a shallow copy of the blob. It is not a separate blob, just reference to original blobs.\n\t * @param data - Data array of the blob\n\t * @param start - Start point of the blob in the buffer.\n\t * @param end - End point of the blob in the buffer.\n\t */\n\tconstructor(\n\t\tprotected data: Uint8Array,\n\t\tprotected start: number,\n\t\tprotected end: number,\n\t) {\n\t\tsuper();\n\t}\n\n\tpublic get buffer() {\n\t\treturn this.data.subarray(this.start, this.end);\n\t}\n\n\t// Equivalent to Uint8ArrayToArrayBuffer(this.buffer)\n\tpublic get arrayBuffer(): ArrayBufferLike {\n\t\tconst offset = this.data.byteOffset;\n\t\treturn this.data.buffer.slice(this.start + offset, this.end + offset);\n\t}\n\n\tpublic static read(buffer: ReadBuffer, lengthLen: number): BlobCore {\n\t\tconst length = buffer.read(lengthLen);\n\t\tconst pos = buffer.pos;\n\t\tbuffer.skip(length);\n\t\treturn new BlobShallowCopy(buffer.buffer, pos, pos + length);\n\t}\n}\n\nexport const addStringProperty = (node: NodeCore, a: string, b: string) => {\n\tnode.addDictionaryString(a);\n\tnode.addString(b);\n};\nexport const addDictionaryStringProperty = (node: NodeCore, a: string, b: string) => {\n\tnode.addDictionaryString(a);\n\tnode.addString(b);\n};\nexport const addNumberProperty = (node: NodeCore, a: string, b: number) => {\n\tnode.addDictionaryString(a);\n\tnode.addNumber(b);\n};\nexport const addBoolProperty = (node: NodeCore, a: string, b: boolean) => {\n\tnode.addDictionaryString(a);\n\tnode.addBool(b);\n};\n\nexport interface IStringElement {\n\tcontent: string;\n\tdictionary: boolean;\n\t_stringElement: true;\n}\n\nexport interface IStringElementInternal extends Omit<IStringElement, \"content\"> {\n\tcontent?: string;\n\tstartPos: number;\n\tendPos: number;\n}\n\n/**\n * Three leaf types supported by tree:\n * 1. Node (sub-tree)\n * 2. binary blob\n * 3. integer\n * 4. boolean\n */\nexport type NodeTypes = NodeCore | BlobCore | number | boolean | IStringElement;\n\nexport type NodeCoreTypes = \"list\" | \"set\";\n\n/**\n * Node - node in the tree (non-leaf element of the tree)\n */\nexport class NodeCore {\n\t// It is an array of nodes.\n\tprivate readonly children: NodeTypes[] = [];\n\tpublic get nodes() {\n\t\treturn this.children;\n\t}\n\n\tconstructor(public type: NodeCoreTypes = \"set\") {}\n\n\tpublic [Symbol.iterator]() {\n\t\treturn this.children[Symbol.iterator]();\n\t}\n\n\tpublic iteratePairs() {\n\t\tassert(this.length % 2 === 0, 0x22c /* \"reading pairs\" */);\n\t\treturn iteratePairs(iterate(this));\n\t}\n\n\tpublic get length() {\n\t\treturn this.children.length;\n\t}\n\n\tpublic get(index: number) {\n\t\treturn this.children[index];\n\t}\n\n\tpublic getString(index: number): string {\n\t\tconst node = this.children[index];\n\t\treturn getStringInstance(node, \"getString should return string\");\n\t}\n\n\tpublic getMaybeString(index: number) {\n\t\tconst node = this.children[index];\n\t\treturn getMaybeStringInstance(node);\n\t}\n\n\tpublic getBlob(index: number): BlobCore {\n\t\tconst node = this.children[index];\n\t\tassertBlobCoreInstance(node, \"getBlob should return a blob\");\n\t\treturn node;\n\t}\n\n\tpublic getNode(index: number): NodeCore {\n\t\tconst node = this.children[index];\n\t\tassertNodeCoreInstance(node, \"getNode should return a node\");\n\t\treturn node;\n\t}\n\n\tpublic getNumber(index: number): number {\n\t\tconst node = this.children[index];\n\t\tassertNumberInstance(node, \"getNumber should return a number\");\n\t\treturn node;\n\t}\n\n\tpublic getBool(index: number): boolean {\n\t\tconst node = this.children[index];\n\t\tassertBoolInstance(node, \"getBool should return a boolean\");\n\t\treturn node;\n\t}\n\n\tpublic addNode(type?: NodeCoreTypes): NodeCore {\n\t\tconst node = new NodeCore(type);\n\t\tthis.children.push(node);\n\t\treturn node;\n\t}\n\n\tpublic addBlob(blob: Uint8Array) {\n\t\tthis.children.push(new BlobDeepCopy(blob));\n\t}\n\n\tpublic addDictionaryString(payload: string) {\n\t\tthis.children.push({\n\t\t\tcontent: payload,\n\t\t\tdictionary: true,\n\t\t\t_stringElement: true,\n\t\t});\n\t}\n\n\tpublic addString(payload: string) {\n\t\tthis.children.push({\n\t\t\tcontent: payload,\n\t\t\tdictionary: false,\n\t\t\t_stringElement: true,\n\t\t});\n\t}\n\n\tpublic addNumber(payload: number | undefined) {\n\t\tassert(Number.isInteger(payload), 0x231 /* \"Number should be an integer\" */);\n\t\tassert(payload !== undefined && payload >= 0, 0x232 /* \"Payload should not be negative\" */);\n\t\tthis.children.push(payload);\n\t}\n\n\tpublic addBool(payload: boolean) {\n\t\tthis.children.push(payload);\n\t}\n\n\t// Can we do more efficiently here, without extra objects somehow??\n\tprivate static readString(buffer: ReadBuffer, code: number, dictionary: boolean) {\n\t\tconst lengthLen = getValueSafely(codeToBytesMap, code);\n\t\tconst length = buffer.read(lengthLen);\n\t\tconst startPos = buffer.pos;\n\t\tbuffer.skip(length);\n\t\tconst result: IStringElementInternal = {\n\t\t\t// Note: Setting here property 'content: undefined' makes code substantially slower!\n\t\t\tdictionary,\n\t\t\t_stringElement: true,\n\t\t\tstartPos,\n\t\t\tendPos: buffer.pos,\n\t\t};\n\n\t\t// We are lying here in terms of presence of `content` property.\n\t\t// This will be addressed at the bottom of NodeCore.load() by resolving all strings at once!\n\t\t// It's equivalent (but much slower!) to do it here via\n\t\t// result.content = Uint8ArrayToString(buffer.buffer.subarray(startPos, buffer.pos), \"utf-8\");\n\t\treturn result as IStringElementInternal & IStringElement;\n\t}\n\n\t/**\n\t * Load and parse the buffer into a tree.\n\t * @param buffer - buffer to read from.\n\t */\n\tprotected load(buffer: ReadBuffer, logger: ITelemetryLoggerExt) {\n\t\tconst [stringsToResolve, durationStructure] = measure(() =>\n\t\t\tthis.loadStructure(buffer, logger),\n\t\t);\n\t\tconst [, durationStrings] = measure(() =>\n\t\t\tthis.loadStrings(buffer, stringsToResolve, logger),\n\t\t);\n\t\treturn { durationStructure, durationStrings };\n\t}\n\n\t/**\n\t * Load and parse the buffer into a tree.\n\t * @param buffer - buffer to read from.\n\t */\n\tprotected loadStructure(buffer: ReadBuffer, logger: ITelemetryLoggerExt) {\n\t\tconst stack: NodeTypes[][] = [];\n\t\tconst stringsToResolve: IStringElementInternal[] = [];\n\t\tconst dictionary: IStringElement[] = [];\n\n\t\tlet children = this.children;\n\t\tfor (; !buffer.eof; ) {\n\t\t\tconst code = buffer.read();\n\t\t\tswitch (code) {\n\t\t\t\tcase MarkerCodesStart.list:\n\t\t\t\tcase MarkerCodesStart.set: {\n\t\t\t\t\tconst childValue = new NodeCore(code === MarkerCodesStart.set ? \"set\" : \"list\");\n\t\t\t\t\tchildren.push(childValue);\n\t\t\t\t\tstack.push(children);\n\t\t\t\t\tchildren = childValue.children;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tcase MarkerCodes.ConstStringDeclare:\n\t\t\t\tcase MarkerCodes.ConstStringDeclareBig: {\n\t\t\t\t\tconst stringId = buffer.read(getValueSafely(codeToBytesMap, code));\n\t\t\t\t\tconst constString = NodeCore.readString(buffer, code, true /* dictionary */);\n\t\t\t\t\tstringsToResolve.push(constString);\n\t\t\t\t\tdictionary[stringId] = constString;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tcase MarkerCodes.ConstString8Id:\n\t\t\t\tcase MarkerCodes.ConstString16Id:\n\t\t\t\tcase MarkerCodes.ConstString32Id: {\n\t\t\t\t\tconst stringId = buffer.read(getValueSafely(codeToBytesMap, code));\n\t\t\t\t\tconst content = dictionary[stringId];\n\t\t\t\t\tassert(content !== undefined, 0x3de /* const string not found */);\n\t\t\t\t\tchildren.push(content);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tcase MarkerCodes.StringEmpty:\n\t\t\t\tcase MarkerCodes.String8Length:\n\t\t\t\tcase MarkerCodes.String16Length:\n\t\t\t\tcase MarkerCodes.String32Length: {\n\t\t\t\t\tconst str = NodeCore.readString(buffer, code, false /* dictionary */);\n\t\t\t\t\tstringsToResolve.push(str);\n\t\t\t\t\tchildren.push(str);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tcase MarkerCodes.BinaryEmpty:\n\t\t\t\tcase MarkerCodes.BinarySingle8:\n\t\t\t\tcase MarkerCodes.BinarySingle16:\n\t\t\t\tcase MarkerCodes.BinarySingle32:\n\t\t\t\tcase MarkerCodes.BinarySingle64: {\n\t\t\t\t\tchildren.push(\n\t\t\t\t\t\tBlobShallowCopy.read(buffer, getValueSafely(codeToBytesMap, code)),\n\t\t\t\t\t);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\t// If integer is 0.\n\t\t\t\tcase MarkerCodes.Int0: {\n\t\t\t\t\tchildren.push(0);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tcase MarkerCodes.UInt8:\n\t\t\t\tcase MarkerCodes.UInt16:\n\t\t\t\tcase MarkerCodes.UInt32:\n\t\t\t\tcase MarkerCodes.UInt64:\n\t\t\t\tcase MarkerCodes.Int8:\n\t\t\t\tcase MarkerCodes.Int16:\n\t\t\t\tcase MarkerCodes.Int32:\n\t\t\t\tcase MarkerCodes.Int64: {\n\t\t\t\t\tchildren.push(buffer.read(getValueSafely(codeToBytesMap, code)));\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tcase MarkerCodes.BoolTrue:\n\t\t\t\t\tchildren.push(true);\n\t\t\t\t\tcontinue;\n\t\t\t\tcase MarkerCodes.BoolFalse:\n\t\t\t\t\tchildren.push(false);\n\t\t\t\t\tcontinue;\n\t\t\t\tcase MarkerCodesEnd.list:\n\t\t\t\tcase MarkerCodesEnd.set:\n\t\t\t\t\t// Note: We are not checking that end marker matches start marker.\n\t\t\t\t\t// I.e. that we do not have a case where we start a 'list' but end with a 'set'\n\t\t\t\t\t// Checking it would require more state tracking that seems not very useful, given\n\t\t\t\t\t// our code does not care.\n\t\t\t\t\tchildren = stack.pop()!;\n\n\t\t\t\t\t// To my surprise, checking children !== undefined adds measurable cost!\n\t\t\t\t\t// We will rely on children.push() crashing in case of mismatch, and check below\n\t\t\t\t\t// (outside of the loop)\n\t\t\t\t\tcontinue;\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new Error(`Invalid code: ${code}`);\n\t\t\t}\n\t\t}\n\n\t\t// This also ensures that stack.length === 0.\n\t\tassert(children === this.children, 0x3e7 /* Unpaired start/end list/set markers! */);\n\n\t\treturn stringsToResolve;\n\t}\n\n\tprivate loadStrings(\n\t\tbuffer: ReadBuffer,\n\t\tstringsToResolve: IStringElementInternal[],\n\t\tlogger: ITelemetryLoggerExt,\n\t) {\n\t\t/**\n\t\t * Process all the strings at once!\n\t\t */\n\t\tlet length = 0;\n\t\tfor (const el of stringsToResolve) {\n\t\t\tlength += el.endPos - el.startPos + 1;\n\t\t}\n\t\tconst stringBuffer = new Uint8Array(length);\n\n\t\tlength = 0;\n\t\tconst input = buffer.buffer;\n\t\tassert(input.byteOffset === 0, 0x3e8 /* code below assumes no offset */);\n\n\t\tfor (const el of stringsToResolve) {\n\t\t\tfor (let it = el.startPos; it < el.endPos; it++) {\n\t\t\t\tstringBuffer[length] = input[it];\n\t\t\t\tlength++;\n\t\t\t}\n\t\t\tstringBuffer[length] = 0;\n\t\t\tlength++;\n\t\t}\n\t\tassert(length === stringBuffer.length, 0x418 /* properly encoded */);\n\n\t\tconst result = Uint8ArrayToString(stringBuffer, \"utf-8\").split(String.fromCharCode(0));\n\t\tif (result.length === stringsToResolve.length + 1) {\n\t\t\t// All is good, we expect all the cases to get here\n\t\t\tfor (let i = 0; i < stringsToResolve.length; i++) {\n\t\t\t\tstringsToResolve[i].content = result[i];\n\t\t\t}\n\t\t} else {\n\t\t\t// String content has \\0 chars!\n\t\t\t// Recovery code\n\t\t\tlogger.sendErrorEvent({ eventName: \"StringParsingError\" });\n\t\t\tfor (const el of stringsToResolve) {\n\t\t\t\tassert(\n\t\t\t\t\tel.content ===\n\t\t\t\t\t\tUint8ArrayToString(input.subarray(el.startPos, el.endPos), \"utf-8\"),\n\t\t\t\t\t0x3ea /* test */,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * TreeBuilder - Root of the tree.\n * Provides loading and serialization capabilities.\n */\nexport class TreeBuilder extends NodeCore {\n\tstatic load(buffer: ReadBuffer, logger: ITelemetryLoggerExt) {\n\t\tconst builder = new TreeBuilder();\n\t\tconst telemetryProps = builder.load(buffer, logger);\n\t\tassert(buffer.eof, 0x233 /* \"Unexpected data at the end of buffer\" */);\n\t\treturn { builder, telemetryProps };\n\t}\n}\n\nexport function getMaybeStringInstance(node: NodeTypes): string | undefined {\n\tconst maybeString = node as IStringElement;\n\tif (maybeString._stringElement) {\n\t\treturn maybeString.content;\n\t}\n}\n\nexport function getStringInstance(node: NodeTypes, message: string): string {\n\tconst maybeString = node as IStringElement;\n\tif (maybeString._stringElement) {\n\t\treturn maybeString.content;\n\t}\n\tthrowBufferParseException(node, \"BlobCore\", message);\n}\n\nexport function assertBlobCoreInstance(node: NodeTypes, message: string): asserts node is BlobCore {\n\tif (node instanceof BlobCore) {\n\t\treturn;\n\t}\n\tthrowBufferParseException(node, \"BlobCore\", message);\n}\n\nexport function assertNodeCoreInstance(node: NodeTypes, message: string): asserts node is NodeCore {\n\tif (node instanceof NodeCore) {\n\t\treturn;\n\t}\n\tthrowBufferParseException(node, \"NodeCore\", message);\n}\n\nexport function assertNumberInstance(node: NodeTypes, message: string): asserts node is number {\n\tif (typeof node === \"number\") {\n\t\treturn;\n\t}\n\tthrowBufferParseException(node, \"Number\", message);\n}\n\nexport function assertBoolInstance(node: NodeTypes, message: string): asserts node is boolean {\n\tif (typeof node === \"boolean\") {\n\t\treturn;\n\t}\n\tthrowBufferParseException(node, \"Boolean\", message);\n}\n\nfunction throwBufferParseException(\n\tnode: NodeTypes,\n\texpectedNodeType: NodeType,\n\tmessage: string,\n): never {\n\tthrow new NonRetryableError(\n\t\t`Buffer parsing exception: ${message}`,\n\t\tOdspErrorTypes.incorrectServerResponse,\n\t\t{\n\t\t\tnodeType: getNodeType(node),\n\t\t\texpectedNodeType,\n\t\t\tdriverVersion,\n\t\t},\n\t);\n}\n\nfunction getNodeType(value: NodeTypes): NodeType {\n\tif (typeof value === \"number\") {\n\t\treturn \"Number\";\n\t} else if (value instanceof BlobCore) {\n\t\treturn \"BlobCore\";\n\t} else if (value instanceof NodeCore) {\n\t\treturn \"NodeCore\";\n\t} else if (typeof value === \"boolean\") {\n\t\treturn \"Boolean\";\n\t} else if (value._stringElement) {\n\t\treturn \"String\";\n\t}\n\treturn \"UnknownType\";\n}\n\ntype NodeType = \"Number\" | \"BlobCore\" | \"NodeCore\" | \"Boolean\" | \"UnknownType\" | \"String\";\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluidframework/odsp-driver",
3
- "version": "2.0.0-dev-rc.1.0.0.225277",
3
+ "version": "2.0.0-dev-rc.1.0.0.232845",
4
4
  "description": "Socket storage implementation for SPO and ODC",
5
5
  "homepage": "https://fluidframework.com",
6
6
  "repository": {
@@ -11,7 +11,7 @@
11
11
  "license": "MIT",
12
12
  "author": "Microsoft and contributors",
13
13
  "sideEffects": false,
14
- "main": "dist/index.cjs",
14
+ "main": "dist/index.js",
15
15
  "module": "lib/index.mjs",
16
16
  "types": "dist/index.d.ts",
17
17
  "c8": {
@@ -35,30 +35,30 @@
35
35
  "temp-directory": "nyc/.nyc_output"
36
36
  },
37
37
  "dependencies": {
38
- "@fluid-internal/client-utils": "2.0.0-dev-rc.1.0.0.225277",
39
- "@fluidframework/core-interfaces": "2.0.0-dev-rc.1.0.0.225277",
40
- "@fluidframework/core-utils": "2.0.0-dev-rc.1.0.0.225277",
41
- "@fluidframework/driver-base": "2.0.0-dev-rc.1.0.0.225277",
42
- "@fluidframework/driver-definitions": "2.0.0-dev-rc.1.0.0.225277",
43
- "@fluidframework/driver-utils": "2.0.0-dev-rc.1.0.0.225277",
44
- "@fluidframework/odsp-doclib-utils": "2.0.0-dev-rc.1.0.0.225277",
45
- "@fluidframework/odsp-driver-definitions": "2.0.0-dev-rc.1.0.0.225277",
46
- "@fluidframework/protocol-base": "^3.0.0-223236",
47
- "@fluidframework/protocol-definitions": "^3.1.0-223007",
48
- "@fluidframework/telemetry-utils": "2.0.0-dev-rc.1.0.0.225277",
38
+ "@fluid-internal/client-utils": "2.0.0-dev-rc.1.0.0.232845",
39
+ "@fluidframework/core-interfaces": "2.0.0-dev-rc.1.0.0.232845",
40
+ "@fluidframework/core-utils": "2.0.0-dev-rc.1.0.0.232845",
41
+ "@fluidframework/driver-base": "2.0.0-dev-rc.1.0.0.232845",
42
+ "@fluidframework/driver-definitions": "2.0.0-dev-rc.1.0.0.232845",
43
+ "@fluidframework/driver-utils": "2.0.0-dev-rc.1.0.0.232845",
44
+ "@fluidframework/odsp-doclib-utils": "2.0.0-dev-rc.1.0.0.232845",
45
+ "@fluidframework/odsp-driver-definitions": "2.0.0-dev-rc.1.0.0.232845",
46
+ "@fluidframework/protocol-base": "^3.1.0-231702",
47
+ "@fluidframework/protocol-definitions": "^3.2.0-231454",
48
+ "@fluidframework/telemetry-utils": "2.0.0-dev-rc.1.0.0.232845",
49
49
  "node-fetch": "^2.6.9",
50
50
  "socket.io-client": "^4.6.1",
51
51
  "uuid": "^9.0.0"
52
52
  },
53
53
  "devDependencies": {
54
54
  "@arethetypeswrong/cli": "^0.13.3",
55
- "@fluid-tools/build-cli": "0.29.0-222379",
55
+ "@fluid-tools/build-cli": "^0.29.0",
56
56
  "@fluidframework/build-common": "^2.0.3",
57
- "@fluidframework/build-tools": "0.29.0-222379",
58
- "@fluidframework/eslint-config-fluid": "^3.1.0",
59
- "@fluidframework/mocha-test-setup": "2.0.0-dev-rc.1.0.0.225277",
57
+ "@fluidframework/build-tools": "^0.29.0",
58
+ "@fluidframework/eslint-config-fluid": "^3.3.0",
59
+ "@fluidframework/mocha-test-setup": "2.0.0-dev-rc.1.0.0.232845",
60
60
  "@fluidframework/odsp-driver-previous": "npm:@fluidframework/odsp-driver@2.0.0-internal.8.0.0",
61
- "@microsoft/api-extractor": "^7.38.3",
61
+ "@microsoft/api-extractor": "^7.39.1",
62
62
  "@types/mocha": "^9.1.1",
63
63
  "@types/node": "^18.19.0",
64
64
  "@types/node-fetch": "^2.5.10",
@@ -90,7 +90,16 @@
90
90
  }
91
91
  },
92
92
  "typeValidation": {
93
- "broken": {}
93
+ "broken": {
94
+ "InterfaceDeclaration_ISnapshotContentsWithProps": {
95
+ "backCompat": false,
96
+ "forwardCompat": false
97
+ },
98
+ "InterfaceDeclaration_IPrefetchSnapshotContents": {
99
+ "backCompat": false,
100
+ "forwardCompat": false
101
+ }
102
+ }
94
103
  },
95
104
  "scripts": {
96
105
  "api": "fluid-build . --task api",
@@ -102,7 +111,7 @@
102
111
  "build:docs": "fluid-build . --task api",
103
112
  "build:esnext": "tsc-multi --config ../../../common/build/build-common/tsc-multi.esm.json",
104
113
  "build:genver": "gen-version",
105
- "build:test": "tsc-multi --config ./tsc-multi.test.json",
114
+ "build:test": "tsc --project ./src/test/tsconfig.json",
106
115
  "check:are-the-types-wrong": "attw --pack",
107
116
  "check:release-tags": "api-extractor run --local --config ./api-extractor-lint.json",
108
117
  "ci:build:docs": "api-extractor run",
@@ -118,7 +127,7 @@
118
127
  "test:coverage": "c8 npm test",
119
128
  "test:mocha": "mocha --ignore \"dist/test/types/*\" --recursive dist/test -r node_modules/@fluidframework/mocha-test-setup",
120
129
  "test:mocha:verbose": "cross-env FLUID_TEST_VERBOSE=1 npm run test:mocha",
121
- "tsc": "tsc-multi --config ../../../common/build/build-common/tsc-multi.cjs.json",
130
+ "tsc": "tsc",
122
131
  "typetests:gen": "fluid-type-test-generator",
123
132
  "typetests:prepare": "flub typetests --dir . --reset --previous --normalize"
124
133
  }
@@ -6,7 +6,7 @@
6
6
  import { assert } from "@fluidframework/core-utils";
7
7
  import { ISequencedDocumentMessage, ISnapshotTree } from "@fluidframework/protocol-definitions";
8
8
  import { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils";
9
- import { ISnapshotContents } from "./odspPublicUtils";
9
+ import { ISnapshot } from "@fluidframework/driver-definitions";
10
10
  import { ReadBuffer } from "./ReadBufferUtils";
11
11
  import {
12
12
  assertBlobCoreInstance,
@@ -29,7 +29,7 @@ export const currentReadVersion = "1.0";
29
29
  * represents how many times slower parsing path is executed. This will be then logged into telemetry.
30
30
  * @internal
31
31
  */
32
- export interface ISnapshotContentsWithProps extends ISnapshotContents {
32
+ export interface ISnapshotContentsWithProps extends ISnapshot {
33
33
  telemetryProps: Record<string, number>;
34
34
  }
35
35
 
@@ -40,7 +40,7 @@ export interface ISnapshotContentsWithProps extends ISnapshotContents {
40
40
  function readBlobSection(node: NodeTypes) {
41
41
  assertNodeCoreInstance(node, "TreeBlobs should be of type NodeCore");
42
42
  let slowBlobStructureCount = 0;
43
- const blobs: Map<string, ArrayBuffer> = new Map();
43
+ const blobContents: Map<string, ArrayBuffer> = new Map();
44
44
  for (const blob of node) {
45
45
  assertNodeCoreInstance(blob, "blob should be node");
46
46
 
@@ -56,7 +56,7 @@ function readBlobSection(node: NodeTypes) {
56
56
  ) {
57
57
  // "id": <node name>
58
58
  // "data": <blob>
59
- blobs.set(blob.getString(1), blob.getBlob(3).arrayBuffer);
59
+ blobContents.set(blob.getString(1), blob.getBlob(3).arrayBuffer);
60
60
  continue;
61
61
  }
62
62
 
@@ -67,9 +67,9 @@ function readBlobSection(node: NodeTypes) {
67
67
  const records = getNodeProps(blob);
68
68
  assertBlobCoreInstance(records.data, "data should be of BlobCore type");
69
69
  const id = getStringInstance(records.id, "blob id should be string");
70
- blobs.set(id, records.data.arrayBuffer);
70
+ blobContents.set(id, records.data.arrayBuffer);
71
71
  }
72
- return { blobs, slowBlobStructureCount };
72
+ return { blobContents, slowBlobStructureCount };
73
73
  }
74
74
 
75
75
  /**
@@ -249,19 +249,20 @@ export function parseCompactSnapshotResponse(
249
249
  );
250
250
 
251
251
  const [snapshot, durationSnapshotTree] = measure(() => readSnapshotSection(records.snapshot));
252
- const [blobs, durationBlobs] = measure(() => readBlobSection(records.blobs));
252
+ const [blobContents, durationBlobs] = measure(() => readBlobSection(records.blobs));
253
253
 
254
254
  return {
255
255
  ...snapshot,
256
- ...blobs,
256
+ ...blobContents,
257
257
  ops: records.deltas !== undefined ? readOpsSection(records.deltas) : [],
258
258
  latestSequenceNumber: records.lsn,
259
+ snapshotFormatV: 1,
259
260
  telemetryProps: {
260
261
  ...telemetryProps,
261
262
  durationSnapshotTree,
262
263
  durationBlobs,
263
264
  slowTreeStructureCount: snapshot.slowTreeStructureCount,
264
- slowBlobStructureCount: blobs.slowBlobStructureCount,
265
+ slowBlobStructureCount: blobContents.slowBlobStructureCount,
265
266
  },
266
267
  };
267
268
  }
@@ -10,8 +10,8 @@ import {
10
10
  ISequencedDocumentMessage,
11
11
  ISnapshotTree,
12
12
  } from "@fluidframework/protocol-definitions";
13
+ import { ISnapshot } from "@fluidframework/driver-definitions";
13
14
  import { snapshotMinReadVersion } from "./compactSnapshotParser";
14
- import { ISnapshotContents } from "./odspPublicUtils";
15
15
  import { TreeBuilderSerializer } from "./WriteBufferUtils";
16
16
  import {
17
17
  addBoolProperty,
@@ -144,7 +144,7 @@ function writeOpsSection(rootNode: NodeCore, ops: ISequencedDocumentMessage[]) {
144
144
  * @param snapshotContents - snapshot tree contents to serialize
145
145
  * @returns ReadBuffer - binary representation of the data.
146
146
  */
147
- export function convertToCompactSnapshot(snapshotContents: ISnapshotContents): Uint8Array {
147
+ export function convertToCompactSnapshot(snapshotContents: ISnapshot): Uint8Array {
148
148
  const builder = new TreeBuilderSerializer();
149
149
  // Create the root node.
150
150
  const rootNode = builder.addNode();
@@ -166,7 +166,7 @@ export function convertToCompactSnapshot(snapshotContents: ISnapshotContents): U
166
166
  writeSnapshotSection(rootNode, snapshotContents.snapshotTree, snapshotContents.sequenceNumber);
167
167
 
168
168
  // Add Blobs
169
- writeBlobsSection(rootNode, snapshotContents.blobs);
169
+ writeBlobsSection(rootNode, snapshotContents.blobContents);
170
170
 
171
171
  // Then write the ops node.
172
172
  writeOpsSection(rootNode, snapshotContents.ops);
package/src/contracts.ts CHANGED
@@ -5,6 +5,7 @@
5
5
 
6
6
  import * as api from "@fluidframework/protocol-definitions";
7
7
  import { HostStoragePolicy } from "@fluidframework/odsp-driver-definitions";
8
+ import { ISnapshot } from "@fluidframework/driver-definitions";
8
9
  import { ISnapshotContents } from "./odspPublicUtils";
9
10
 
10
11
  /**
@@ -165,6 +166,8 @@ export interface IOdspSnapshot {
165
166
  */
166
167
  export interface HostStoragePolicyInternal extends HostStoragePolicy {
167
168
  summarizerClient?: boolean;
169
+
170
+ supportGetSnapshotApi?: boolean;
168
171
  }
169
172
 
170
173
  export interface ICreateFileResponse {
@@ -207,7 +210,21 @@ export interface IFlushOpsResponse {
207
210
 
208
211
  /**
209
212
  * Represents the cached snapshot value.
213
+ * @deprecated - This will be replaced with ISnapshotCachedEntry2 which wraps the new ISnapshot interface.
214
+ * For now, to support back compat from cache, we need to keep it for now.
210
215
  */
211
216
  export interface ISnapshotCachedEntry extends ISnapshotContents {
212
217
  cacheEntryTime: number;
213
218
  }
219
+
220
+ /**
221
+ * Represents the cached snapshot value.
222
+ */
223
+ export interface ISnapshotCachedEntry2 extends ISnapshot {
224
+ cacheEntryTime: number;
225
+ }
226
+
227
+ /**
228
+ * Represents the type of signal containing the sensitivity policy labels for the container.
229
+ */
230
+ export const policyLabelsUpdatesSignalType = "PolicyLabelsUpdate";
package/src/createFile.ts CHANGED
@@ -10,13 +10,11 @@ import { ITelemetryLoggerExt, PerformanceEvent } from "@fluidframework/telemetry
10
10
  import {
11
11
  InstrumentedStorageTokenFetcher,
12
12
  IOdspResolvedUrl,
13
- OdspErrorType,
13
+ OdspErrorTypes,
14
14
  ShareLinkInfoType,
15
- ISharingLinkKind,
16
- ShareLinkTypes,
17
15
  IFileEntry,
18
16
  } from "@fluidframework/odsp-driver-definitions";
19
- import { DriverErrorType } from "@fluidframework/driver-definitions";
17
+ import { ISnapshot } from "@fluidframework/driver-definitions";
20
18
  import { ICreateFileResponse } from "./contracts";
21
19
  import { getUrlAndHeadersWithAuth } from "./getUrlAndHeadersWithAuth";
22
20
  import {
@@ -26,7 +24,6 @@ import {
26
24
  INewFileInfo,
27
25
  getOrigin,
28
26
  } from "./odspUtils";
29
- import { ISnapshotContents } from "./odspPublicUtils";
30
27
  import { createOdspUrl } from "./createOdspUrl";
31
28
  import { getApiRoot } from "./odspUrlHelper";
32
29
  import { EpochTracker } from "./epochTracker";
@@ -60,14 +57,13 @@ export async function createNewFluidFile(
60
57
  forceAccessTokenViaAuthorizationHeader: boolean,
61
58
  isClpCompliantApp?: boolean,
62
59
  enableSingleRequestForShareLinkWithCreate?: boolean,
63
- enableShareLinkWithCreate?: boolean,
64
60
  ): Promise<IOdspResolvedUrl> {
65
61
  // Check for valid filename before the request to create file is actually made.
66
62
  if (isInvalidFileName(newFileInfo.filename)) {
67
63
  throw new NonRetryableError(
68
64
  // pre-0.58 error message: Invalid filename
69
65
  "Invalid filename for createNew",
70
- OdspErrorType.invalidFileNameError,
66
+ OdspErrorTypes.invalidFileNameError,
71
67
  { driverVersion },
72
68
  );
73
69
  }
@@ -95,12 +91,7 @@ export async function createNewFluidFile(
95
91
  itemId = content.itemId;
96
92
  summaryHandle = content.id;
97
93
 
98
- shareLinkInfo = extractShareLinkData(
99
- newFileInfo.createLinkType,
100
- content,
101
- enableSingleRequestForShareLinkWithCreate,
102
- enableShareLinkWithCreate,
103
- );
94
+ shareLinkInfo = extractShareLinkData(content, enableSingleRequestForShareLinkWithCreate);
104
95
  }
105
96
 
106
97
  const odspUrl = createOdspUrl({ ...newFileInfo, itemId, dataStorePath: "/" });
@@ -117,7 +108,7 @@ export async function createNewFluidFile(
117
108
  if (createNewSummary !== undefined && createNewCaching) {
118
109
  assert(summaryHandle !== undefined, 0x203 /* "Summary handle is undefined" */);
119
110
  // converting summary and getting sequence number
120
- const snapshot: ISnapshotContents = convertCreateNewSummaryTreeToTreeAndBlobs(
111
+ const snapshot: ISnapshot = convertCreateNewSummaryTreeToTreeAndBlobs(
121
112
  createNewSummary,
122
113
  summaryHandle,
123
114
  );
@@ -128,9 +119,9 @@ export async function createNewFluidFile(
128
119
  }
129
120
 
130
121
  /**
131
- * If user requested creation of a sharing link along with the creation of the file by providing either
132
- * createLinkType (now deprecated) or createLinkScope in the request parameters, extract and save
133
- * sharing link information from the response if it is available.
122
+ * If user requested creation of a sharing link along with the creation of the file by providing
123
+ * createLinkScope in the request parameters then extract and save the sharing link information from
124
+ * the response if it is available.
134
125
  * In case there was an error in creation of the sharing link, error is provided back in the response,
135
126
  * and does not impact the creation of file in ODSP.
136
127
  * @param requestedSharingLinkKind - Kind of sharing link requested to be created along with the creation of file.
@@ -138,14 +129,9 @@ export async function createNewFluidFile(
138
129
  * @returns Sharing link information received in the response from a successful creation of a file.
139
130
  */
140
131
  function extractShareLinkData(
141
- requestedSharingLinkKind: ShareLinkTypes | ISharingLinkKind | undefined,
142
132
  response: ICreateFileResponse,
143
133
  enableSingleRequestForShareLinkWithCreate?: boolean,
144
- enableShareLinkWithCreate?: boolean,
145
134
  ): ShareLinkInfoType | undefined {
146
- if (!requestedSharingLinkKind) {
147
- return;
148
- }
149
135
  let shareLinkInfo: ShareLinkInfoType | undefined;
150
136
  if (enableSingleRequestForShareLinkWithCreate) {
151
137
  const { sharing } = response;
@@ -154,7 +140,6 @@ function extractShareLinkData(
154
140
  }
155
141
  shareLinkInfo = {
156
142
  createLink: {
157
- type: requestedSharingLinkKind,
158
143
  link: sharing.sharingLink
159
144
  ? {
160
145
  scope: sharing.sharingLink.scope,
@@ -167,19 +152,6 @@ function extractShareLinkData(
167
152
  shareId: sharing.shareId,
168
153
  },
169
154
  };
170
- } else if (enableShareLinkWithCreate) {
171
- const { sharing, sharingLink, sharingLinkErrorReason } = response;
172
- if (!sharingLink && !sharingLinkErrorReason) {
173
- return;
174
- }
175
- shareLinkInfo = {
176
- createLink: {
177
- type: requestedSharingLinkKind,
178
- link: sharingLink,
179
- error: sharingLinkErrorReason,
180
- shareId: sharing?.shareId,
181
- },
182
- };
183
155
  }
184
156
  return shareLinkInfo;
185
157
  }
@@ -232,7 +204,7 @@ export async function createNewEmptyFluidFile(
232
204
  throw new NonRetryableError(
233
205
  // pre-0.58 error message: ODSP CreateFile call returned no item ID
234
206
  "ODSP CreateFile call returned no item ID (for empty file)",
235
- DriverErrorType.incorrectServerResponse,
207
+ OdspErrorTypes.incorrectServerResponse,
236
208
  { driverVersion },
237
209
  );
238
210
  }
@@ -283,7 +255,7 @@ export async function createNewFluidFileFromSummary(
283
255
  if (!content?.itemId) {
284
256
  throw new NonRetryableError(
285
257
  "ODSP CreateFile call returned no item ID",
286
- DriverErrorType.incorrectServerResponse,
258
+ OdspErrorTypes.incorrectServerResponse,
287
259
  { driverVersion },
288
260
  );
289
261
  }
@@ -6,6 +6,7 @@
6
6
  import { ISummaryTree } from "@fluidframework/protocol-definitions";
7
7
  import { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils";
8
8
  import { UsageError } from "@fluidframework/driver-utils";
9
+ import { ISnapshot } from "@fluidframework/driver-definitions";
9
10
  import {
10
11
  IFileEntry,
11
12
  InstrumentedStorageTokenFetcher,
@@ -13,7 +14,6 @@ import {
13
14
  } from "@fluidframework/odsp-driver-definitions";
14
15
  import { IWriteSummaryResponse } from "./contracts";
15
16
  import { createCacheSnapshotKey, getOrigin, IExistingFileInfo } from "./odspUtils";
16
- import { ISnapshotContents } from "./odspPublicUtils";
17
17
  import { createOdspUrl } from "./createOdspUrl";
18
18
  import { getApiRoot } from "./odspUrlHelper";
19
19
  import { EpochTracker } from "./epochTracker";
@@ -81,7 +81,7 @@ export async function createNewContainerOnExistingFile(
81
81
 
82
82
  if (createNewCaching) {
83
83
  // converting summary and getting sequence number
84
- const snapshot: ISnapshotContents = convertCreateNewSummaryTreeToTreeAndBlobs(
84
+ const snapshot: ISnapshot = convertCreateNewSummaryTreeToTreeAndBlobs(
85
85
  createNewSummary,
86
86
  summaryHandle,
87
87
  );
@@ -19,6 +19,7 @@ import { unreachableCase } from "@fluidframework/core-utils";
19
19
  import { getGitType } from "@fluidframework/protocol-base";
20
20
  import { ITelemetryLoggerExt, PerformanceEvent } from "@fluidframework/telemetry-utils";
21
21
  import { InstrumentedStorageTokenFetcher } from "@fluidframework/odsp-driver-definitions";
22
+ import { ISnapshot } from "@fluidframework/driver-definitions";
22
23
  import {
23
24
  IOdspSummaryPayload,
24
25
  IOdspSummaryTree,
@@ -26,7 +27,6 @@ import {
26
27
  OdspSummaryTreeValue,
27
28
  } from "./contracts";
28
29
  import { getWithRetryForTokenRefresh, maxUmpPostBodySize } from "./odspUtils";
29
- import { ISnapshotContents } from "./odspPublicUtils";
30
30
  import { EpochTracker, FetchType } from "./epochTracker";
31
31
  import { getUrlAndHeadersWithAuth } from "./getUrlAndHeadersWithAuth";
32
32
  import { runWithRetry } from "./retryUtils";
@@ -37,19 +37,20 @@ import { runWithRetry } from "./retryUtils";
37
37
  export function convertCreateNewSummaryTreeToTreeAndBlobs(
38
38
  summary: ISummaryTree,
39
39
  treeId: string,
40
- ): ISnapshotContents {
40
+ ): ISnapshot {
41
41
  const protocolSummary = summary.tree[".protocol"] as ISummaryTree;
42
42
  const documentAttributes = getDocAttributesFromProtocolSummary(protocolSummary);
43
43
  const sequenceNumber = documentAttributes.sequenceNumber;
44
- const blobs = new Map<string, ArrayBuffer>();
45
- const snapshotTree = convertCreateNewSummaryTreeToTreeAndBlobsCore(summary, blobs);
44
+ const blobContents = new Map<string, ArrayBuffer>();
45
+ const snapshotTree = convertCreateNewSummaryTreeToTreeAndBlobsCore(summary, blobContents);
46
46
  snapshotTree.id = treeId;
47
- const snapshotTreeValue: ISnapshotContents = {
47
+ const snapshotTreeValue: ISnapshot = {
48
48
  snapshotTree,
49
- blobs,
49
+ blobContents,
50
50
  ops: [],
51
51
  sequenceNumber,
52
52
  latestSequenceNumber: sequenceNumber,
53
+ snapshotFormatV: 1,
53
54
  };
54
55
 
55
56
  return snapshotTreeValue;
@@ -4,7 +4,7 @@
4
4
  */
5
5
  import { IRequest } from "@fluidframework/core-interfaces";
6
6
  import { DriverHeader } from "@fluidframework/driver-definitions";
7
- import { ShareLinkTypes, ISharingLinkKind } from "@fluidframework/odsp-driver-definitions";
7
+ import { ISharingLinkKind } from "@fluidframework/odsp-driver-definitions";
8
8
  import { buildOdspShareLinkReqParams } from "./odspUtils";
9
9
 
10
10
  /**
@@ -22,7 +22,7 @@ export function createOdspCreateContainerRequest(
22
22
  driveId: string,
23
23
  filePath: string,
24
24
  fileName: string,
25
- createShareLinkType?: ShareLinkTypes | ISharingLinkKind,
25
+ createShareLinkType?: ISharingLinkKind,
26
26
  ): IRequest {
27
27
  const shareLinkRequestParams = buildOdspShareLinkReqParams(createShareLinkType);
28
28
  const createNewRequest: IRequest = {