@fluidframework/odsp-driver 2.117.0 → 3.0.0

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 (258) hide show
  1. package/CHANGELOG.md +92 -2
  2. package/README.md +53 -50
  3. package/api-extractor/api-extractor-lint-pointInTime.cjs.json +5 -0
  4. package/api-extractor/api-extractor-lint-pointInTime.esm.json +5 -0
  5. package/{api-extractor.json → api-extractor/api-extractor-model.json} +1 -1
  6. package/api-extractor/api-extractor-report.pointInTime.json +9 -0
  7. package/api-report/odsp-driver.legacy.alpha.api.md +28 -3
  8. package/api-report/odsp-driver.legacy.beta.api.md +28 -3
  9. package/api-report/odsp-driver.point-in-time.legacy.beta.api.md +117 -0
  10. package/dist/ReadBufferUtils.js +2 -1
  11. package/dist/ReadBufferUtils.js.map +1 -1
  12. package/dist/WriteBufferUtils.js +4 -6
  13. package/dist/WriteBufferUtils.js.map +1 -1
  14. package/dist/checkUrl.js +1 -2
  15. package/dist/checkUrl.js.map +1 -1
  16. package/dist/compactSnapshotParser.d.ts.map +1 -1
  17. package/dist/compactSnapshotParser.js +5 -4
  18. package/dist/compactSnapshotParser.js.map +1 -1
  19. package/dist/compactSnapshotWriter.js +1 -2
  20. package/dist/compactSnapshotWriter.js.map +1 -1
  21. package/dist/createFile/createFile.js +4 -5
  22. package/dist/createFile/createFile.js.map +1 -1
  23. package/dist/createFile/createNewContainerOnExistingFile.js +1 -2
  24. package/dist/createFile/createNewContainerOnExistingFile.js.map +1 -1
  25. package/dist/createFile/createNewUtils.d.ts.map +1 -1
  26. package/dist/createFile/createNewUtils.js +4 -5
  27. package/dist/createFile/createNewUtils.js.map +1 -1
  28. package/dist/createFile/index.js +1 -2
  29. package/dist/createFile/index.js.map +1 -1
  30. package/dist/createOdspCreateContainerRequest.js +1 -2
  31. package/dist/createOdspCreateContainerRequest.js.map +1 -1
  32. package/dist/createOdspUrl.js +1 -2
  33. package/dist/createOdspUrl.js.map +1 -1
  34. package/dist/epochTracker.d.ts.map +1 -1
  35. package/dist/epochTracker.js +17 -6
  36. package/dist/epochTracker.js.map +1 -1
  37. package/dist/fetchSnapshot.d.ts.map +1 -1
  38. package/dist/fetchSnapshot.js +5 -5
  39. package/dist/fetchSnapshot.js.map +1 -1
  40. package/dist/getFileLink.d.ts.map +1 -1
  41. package/dist/getQueryString.js +1 -2
  42. package/dist/getQueryString.js.map +1 -1
  43. package/dist/getUrlAndHeadersWithAuth.js +1 -2
  44. package/dist/getUrlAndHeadersWithAuth.js.map +1 -1
  45. package/dist/index.d.ts +3 -4
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/index.js +3 -5
  48. package/dist/index.js.map +1 -1
  49. package/dist/legacy.d.ts +4 -1
  50. package/dist/legacyAlpha.d.ts +4 -1
  51. package/dist/localOdspDriver/localOdspDeltaStorageService.js +2 -0
  52. package/dist/localOdspDriver/localOdspDeltaStorageService.js.map +1 -1
  53. package/dist/localOdspDriver/localOdspDocumentService.js +5 -1
  54. package/dist/localOdspDriver/localOdspDocumentService.js.map +1 -1
  55. package/dist/localOdspDriver/localOdspDocumentServiceFactory.js +2 -1
  56. package/dist/localOdspDriver/localOdspDocumentServiceFactory.js.map +1 -1
  57. package/dist/localOdspDriver/localOdspDocumentStorageManager.js +4 -1
  58. package/dist/localOdspDriver/localOdspDocumentStorageManager.js.map +1 -1
  59. package/dist/mockify.js +2 -2
  60. package/dist/mockify.js.map +1 -1
  61. package/dist/odspCache.js +7 -8
  62. package/dist/odspCache.js.map +1 -1
  63. package/dist/odspDelayLoadedDeltaStream.d.ts.map +1 -1
  64. package/dist/odspDelayLoadedDeltaStream.js +42 -26
  65. package/dist/odspDelayLoadedDeltaStream.js.map +1 -1
  66. package/dist/odspDeltaStorageService.js +14 -1
  67. package/dist/odspDeltaStorageService.js.map +1 -1
  68. package/dist/odspDocumentDeltaConnection.d.ts.map +1 -1
  69. package/dist/odspDocumentDeltaConnection.js +58 -41
  70. package/dist/odspDocumentDeltaConnection.js.map +1 -1
  71. package/dist/odspDocumentService.js +16 -1
  72. package/dist/odspDocumentService.js.map +1 -1
  73. package/dist/odspDocumentServiceFactory.d.ts +30 -1
  74. package/dist/odspDocumentServiceFactory.d.ts.map +1 -1
  75. package/dist/odspDocumentServiceFactory.js +30 -2
  76. package/dist/odspDocumentServiceFactory.js.map +1 -1
  77. package/dist/odspDocumentServiceFactoryCore.d.ts +83 -3
  78. package/dist/odspDocumentServiceFactoryCore.d.ts.map +1 -1
  79. package/dist/odspDocumentServiceFactoryCore.js +38 -12
  80. package/dist/odspDocumentServiceFactoryCore.js.map +1 -1
  81. package/dist/odspDocumentStorageManager.d.ts.map +1 -1
  82. package/dist/odspDocumentStorageManager.js +31 -13
  83. package/dist/odspDocumentStorageManager.js.map +1 -1
  84. package/dist/odspDocumentStorageServiceBase.js +23 -20
  85. package/dist/odspDocumentStorageServiceBase.js.map +1 -1
  86. package/dist/odspDriverUrlResolver.js +2 -2
  87. package/dist/odspDriverUrlResolver.js.map +1 -1
  88. package/dist/odspDriverUrlResolverForShareLink.d.ts.map +1 -1
  89. package/dist/odspDriverUrlResolverForShareLink.js +6 -1
  90. package/dist/odspDriverUrlResolverForShareLink.js.map +1 -1
  91. package/dist/odspError.js +1 -2
  92. package/dist/odspError.js.map +1 -1
  93. package/dist/odspFluidFileLink.js +4 -4
  94. package/dist/odspFluidFileLink.js.map +1 -1
  95. package/dist/odspLayerCompatState.d.ts +8 -1
  96. package/dist/odspLayerCompatState.d.ts.map +1 -1
  97. package/dist/odspLayerCompatState.js +20 -1
  98. package/dist/odspLayerCompatState.js.map +1 -1
  99. package/dist/odspLocationRedirection.js +1 -2
  100. package/dist/odspLocationRedirection.js.map +1 -1
  101. package/dist/odspPublicUtils.js +1 -2
  102. package/dist/odspPublicUtils.js.map +1 -1
  103. package/dist/odspSnapshotParser.js +1 -2
  104. package/dist/odspSnapshotParser.js.map +1 -1
  105. package/dist/odspSummaryUploadManager.js +7 -0
  106. package/dist/odspSummaryUploadManager.js.map +1 -1
  107. package/dist/odspUrlHelper.js +6 -7
  108. package/dist/odspUrlHelper.js.map +1 -1
  109. package/dist/odspUtils.d.ts.map +1 -1
  110. package/dist/odspUtils.js +21 -21
  111. package/dist/odspUtils.js.map +1 -1
  112. package/dist/odspVersionManager/odspFileVersionFetcher.js +1 -2
  113. package/dist/odspVersionManager/odspFileVersionFetcher.js.map +1 -1
  114. package/dist/odspVersionManager/odspVersionManager.js +9 -8
  115. package/dist/odspVersionManager/odspVersionManager.js.map +1 -1
  116. package/dist/opsCaching.js +7 -1
  117. package/dist/opsCaching.js.map +1 -1
  118. package/dist/packageVersion.d.ts +1 -1
  119. package/dist/packageVersion.d.ts.map +1 -1
  120. package/dist/packageVersion.js +1 -1
  121. package/dist/packageVersion.js.map +1 -1
  122. package/dist/pointInTime.d.ts +15 -0
  123. package/dist/pointInTime.d.ts.map +1 -0
  124. package/dist/pointInTime.js +16 -0
  125. package/dist/pointInTime.js.map +1 -0
  126. package/dist/pointInTimeDriver/createPointInTimeDocumentService.d.ts +34 -0
  127. package/dist/pointInTimeDriver/createPointInTimeDocumentService.d.ts.map +1 -0
  128. package/dist/pointInTimeDriver/createPointInTimeDocumentService.js +101 -0
  129. package/dist/pointInTimeDriver/createPointInTimeDocumentService.js.map +1 -0
  130. package/dist/pointInTimeDriver/odspPointInTimeDocumentService.js +10 -6
  131. package/dist/pointInTimeDriver/odspPointInTimeDocumentService.js.map +1 -1
  132. package/dist/prefetchLatestSnapshot.js +1 -2
  133. package/dist/prefetchLatestSnapshot.js.map +1 -1
  134. package/dist/retryErrorsStorageAdapter.js +3 -1
  135. package/dist/retryErrorsStorageAdapter.js.map +1 -1
  136. package/dist/retryUtils.js +1 -2
  137. package/dist/retryUtils.js.map +1 -1
  138. package/dist/vroom.d.ts.map +1 -1
  139. package/dist/zipItDataRepresentationUtils.d.ts.map +1 -1
  140. package/dist/zipItDataRepresentationUtils.js +20 -15
  141. package/dist/zipItDataRepresentationUtils.js.map +1 -1
  142. package/lib/ReadBufferUtils.js +2 -1
  143. package/lib/ReadBufferUtils.js.map +1 -1
  144. package/lib/WriteBufferUtils.js +2 -4
  145. package/lib/WriteBufferUtils.js.map +1 -1
  146. package/lib/compactSnapshotParser.d.ts.map +1 -1
  147. package/lib/compactSnapshotParser.js +3 -2
  148. package/lib/compactSnapshotParser.js.map +1 -1
  149. package/lib/createFile/createNewUtils.d.ts.map +1 -1
  150. package/lib/createFile/createNewUtils.js +2 -2
  151. package/lib/createFile/createNewUtils.js.map +1 -1
  152. package/lib/epochTracker.d.ts.map +1 -1
  153. package/lib/epochTracker.js +15 -4
  154. package/lib/epochTracker.js.map +1 -1
  155. package/lib/fetchSnapshot.d.ts.map +1 -1
  156. package/lib/getFileLink.d.ts.map +1 -1
  157. package/lib/index.d.ts +3 -4
  158. package/lib/index.d.ts.map +1 -1
  159. package/lib/index.js +3 -6
  160. package/lib/index.js.map +1 -1
  161. package/lib/legacy.d.ts +5 -2
  162. package/lib/legacyAlpha.d.ts +5 -2
  163. package/lib/localOdspDriver/localOdspDeltaStorageService.js +2 -0
  164. package/lib/localOdspDriver/localOdspDeltaStorageService.js.map +1 -1
  165. package/lib/localOdspDriver/localOdspDocumentService.js +5 -1
  166. package/lib/localOdspDriver/localOdspDocumentService.js.map +1 -1
  167. package/lib/localOdspDriver/localOdspDocumentServiceFactory.js +2 -1
  168. package/lib/localOdspDriver/localOdspDocumentServiceFactory.js.map +1 -1
  169. package/lib/localOdspDriver/localOdspDocumentStorageManager.js +4 -1
  170. package/lib/localOdspDriver/localOdspDocumentStorageManager.js.map +1 -1
  171. package/lib/odspCache.js +7 -8
  172. package/lib/odspCache.js.map +1 -1
  173. package/lib/odspDelayLoadedDeltaStream.d.ts.map +1 -1
  174. package/lib/odspDelayLoadedDeltaStream.js +42 -26
  175. package/lib/odspDelayLoadedDeltaStream.js.map +1 -1
  176. package/lib/odspDeltaStorageService.js +14 -1
  177. package/lib/odspDeltaStorageService.js.map +1 -1
  178. package/lib/odspDocumentDeltaConnection.d.ts.map +1 -1
  179. package/lib/odspDocumentDeltaConnection.js +58 -41
  180. package/lib/odspDocumentDeltaConnection.js.map +1 -1
  181. package/lib/odspDocumentService.js +16 -1
  182. package/lib/odspDocumentService.js.map +1 -1
  183. package/lib/odspDocumentServiceFactory.d.ts +30 -1
  184. package/lib/odspDocumentServiceFactory.d.ts.map +1 -1
  185. package/lib/odspDocumentServiceFactory.js +28 -1
  186. package/lib/odspDocumentServiceFactory.js.map +1 -1
  187. package/lib/odspDocumentServiceFactoryCore.d.ts +83 -3
  188. package/lib/odspDocumentServiceFactoryCore.d.ts.map +1 -1
  189. package/lib/odspDocumentServiceFactoryCore.js +39 -13
  190. package/lib/odspDocumentServiceFactoryCore.js.map +1 -1
  191. package/lib/odspDocumentStorageManager.d.ts.map +1 -1
  192. package/lib/odspDocumentStorageManager.js +32 -14
  193. package/lib/odspDocumentStorageManager.js.map +1 -1
  194. package/lib/odspDocumentStorageServiceBase.js +23 -20
  195. package/lib/odspDocumentStorageServiceBase.js.map +1 -1
  196. package/lib/odspDriverUrlResolverForShareLink.d.ts.map +1 -1
  197. package/lib/odspDriverUrlResolverForShareLink.js +6 -1
  198. package/lib/odspDriverUrlResolverForShareLink.js.map +1 -1
  199. package/lib/odspLayerCompatState.d.ts +8 -1
  200. package/lib/odspLayerCompatState.d.ts.map +1 -1
  201. package/lib/odspLayerCompatState.js +20 -1
  202. package/lib/odspLayerCompatState.js.map +1 -1
  203. package/lib/odspSummaryUploadManager.js +7 -0
  204. package/lib/odspSummaryUploadManager.js.map +1 -1
  205. package/lib/odspUtils.d.ts.map +1 -1
  206. package/lib/odspVersionManager/odspVersionManager.js +7 -6
  207. package/lib/odspVersionManager/odspVersionManager.js.map +1 -1
  208. package/lib/opsCaching.js +7 -1
  209. package/lib/opsCaching.js.map +1 -1
  210. package/lib/packageVersion.d.ts +1 -1
  211. package/lib/packageVersion.d.ts.map +1 -1
  212. package/lib/packageVersion.js +1 -1
  213. package/lib/packageVersion.js.map +1 -1
  214. package/lib/pointInTime.d.ts +15 -0
  215. package/lib/pointInTime.d.ts.map +1 -0
  216. package/lib/pointInTime.js +12 -0
  217. package/lib/pointInTime.js.map +1 -0
  218. package/lib/pointInTimeDriver/createPointInTimeDocumentService.d.ts +34 -0
  219. package/lib/pointInTimeDriver/createPointInTimeDocumentService.d.ts.map +1 -0
  220. package/lib/pointInTimeDriver/createPointInTimeDocumentService.js +99 -0
  221. package/lib/pointInTimeDriver/createPointInTimeDocumentService.js.map +1 -0
  222. package/lib/pointInTimeDriver/odspPointInTimeDocumentService.js +10 -6
  223. package/lib/pointInTimeDriver/odspPointInTimeDocumentService.js.map +1 -1
  224. package/lib/public.d.ts +1 -1
  225. package/lib/retryErrorsStorageAdapter.js +3 -1
  226. package/lib/retryErrorsStorageAdapter.js.map +1 -1
  227. package/lib/vroom.d.ts.map +1 -1
  228. package/lib/zipItDataRepresentationUtils.d.ts.map +1 -1
  229. package/lib/zipItDataRepresentationUtils.js +10 -5
  230. package/lib/zipItDataRepresentationUtils.js.map +1 -1
  231. package/package.json +49 -54
  232. package/src/compactSnapshotParser.ts +6 -2
  233. package/src/createFile/createNewUtils.ts +6 -2
  234. package/src/index.ts +10 -6
  235. package/src/odspDocumentServiceFactory.ts +69 -1
  236. package/src/odspDocumentServiceFactoryCore.ts +105 -4
  237. package/src/odspDocumentStorageManager.ts +2 -2
  238. package/src/odspLayerCompatState.ts +29 -1
  239. package/src/odspVersionManager/DEV.md +9 -8
  240. package/src/packageVersion.ts +1 -1
  241. package/src/pointInTime.ts +30 -0
  242. package/src/pointInTimeDriver/createPointInTimeDocumentService.ts +193 -0
  243. package/src/zipItDataRepresentationUtils.ts +3 -3
  244. package/tsconfig.json +1 -1
  245. package/dist/pointInTimeDriver/odspPointInTimeDocumentServiceFactory.d.ts +0 -41
  246. package/dist/pointInTimeDriver/odspPointInTimeDocumentServiceFactory.d.ts.map +0 -1
  247. package/dist/pointInTimeDriver/odspPointInTimeDocumentServiceFactory.js +0 -132
  248. package/dist/pointInTimeDriver/odspPointInTimeDocumentServiceFactory.js.map +0 -1
  249. package/internal.d.ts +0 -11
  250. package/legacy/alpha.d.ts +0 -11
  251. package/legacy.d.ts +0 -11
  252. package/lib/pointInTimeDriver/odspPointInTimeDocumentServiceFactory.d.ts +0 -41
  253. package/lib/pointInTimeDriver/odspPointInTimeDocumentServiceFactory.d.ts.map +0 -1
  254. package/lib/pointInTimeDriver/odspPointInTimeDocumentServiceFactory.js +0 -128
  255. package/lib/pointInTimeDriver/odspPointInTimeDocumentServiceFactory.js.map +0 -1
  256. package/src/pointInTimeDriver/odspPointInTimeDocumentServiceFactory.ts +0 -260
  257. /package/api-extractor/{api-extractor.current.json → api-extractor-report.current.json} +0 -0
  258. /package/api-extractor/{api-extractor.legacy.json → api-extractor-report.legacy.json} +0 -0
package/src/index.ts CHANGED
@@ -27,15 +27,16 @@ export { prefetchLatestSnapshot } from "./prefetchLatestSnapshot.js";
27
27
  // Factory
28
28
  export {
29
29
  createLocalOdspDocumentServiceFactory,
30
+ createOdspDocumentServiceFactory,
31
+ type IOdspDocumentServiceFactoryOptions,
30
32
  OdspDocumentServiceFactory,
31
33
  } from "./odspDocumentServiceFactory.js";
32
- export { OdspDocumentServiceFactoryCore } from "./odspDocumentServiceFactoryCore.js";
33
- /* eslint-disable import-x/no-internal-modules */
34
34
  export {
35
- getOdspPointInTimeDocumentServiceFactory,
35
+ type IOdspPointInTimeDocumentServiceImplementationProps,
36
36
  type IPointInTimeDocumentServiceFactory,
37
- } from "./pointInTimeDriver/odspPointInTimeDocumentServiceFactory.js";
38
- /* eslint-enable import-x/no-internal-modules */
37
+ type OdspPointInTimeDocumentServiceImplementation,
38
+ OdspDocumentServiceFactoryCore,
39
+ } from "./odspDocumentServiceFactoryCore.js";
39
40
 
40
41
  // File creation
41
42
  export { createOdspCreateContainerRequest } from "./createOdspCreateContainerRequest.js";
@@ -75,4 +76,7 @@ export {
75
76
  } from "./compactSnapshotParser.js";
76
77
 
77
78
  // Layer Compat details
78
- export { odspDriverCompatDetailsForLoader } from "./odspLayerCompatState.js";
79
+ export {
80
+ odspDriverCompatDetailsForLoader,
81
+ odspDriverCompatRequirementsForLoader,
82
+ } from "./odspLayerCompatState.js";
@@ -15,7 +15,35 @@ import type {
15
15
 
16
16
  // eslint-disable-next-line import-x/no-internal-modules
17
17
  import { LocalOdspDocumentServiceFactory } from "./localOdspDriver/localOdspDocumentServiceFactory.js";
18
- import { OdspDocumentServiceFactoryCore } from "./odspDocumentServiceFactoryCore.js";
18
+ import {
19
+ type IPointInTimeDocumentServiceFactory,
20
+ type OdspPointInTimeDocumentServiceImplementation,
21
+ OdspDocumentServiceFactoryCore,
22
+ } from "./odspDocumentServiceFactoryCore.js";
23
+ import { LocalPersistentCache } from "./odspCache.js";
24
+
25
+ /**
26
+ * Options for creating an ODSP document service factory.
27
+ *
28
+ * @legacy @beta
29
+ */
30
+ export interface IOdspDocumentServiceFactoryOptions {
31
+ /** Fetches storage access tokens. */
32
+ readonly getStorageToken: TokenFetcher<OdspResourceTokenFetchOptions>;
33
+ /** Fetches websocket access tokens, or `undefined` when unavailable. */
34
+ readonly getWebsocketToken: TokenFetcher<OdspResourceTokenFetchOptions> | undefined;
35
+ /** Persisted ODSP cache. When omitted, a local in-memory cache is used. */
36
+ readonly persistedCache?: IPersistedCache | undefined;
37
+ /** Host storage policy. When omitted, the default driver policies are used. */
38
+ readonly hostPolicy?: HostStoragePolicy | undefined;
39
+ /**
40
+ * Enables point-in-time loading. Consumers that omit this implementation do not include the
41
+ * feature code in their dependency graph.
42
+ */
43
+ readonly pointInTimeDocumentServiceImplementation?:
44
+ | OdspPointInTimeDocumentServiceImplementation
45
+ | undefined;
46
+ }
19
47
 
20
48
  /**
21
49
  * Factory for creating the sharepoint document service. Use this if you want to
@@ -34,6 +62,46 @@ export class OdspDocumentServiceFactory extends OdspDocumentServiceFactoryCore {
34
62
  }
35
63
  }
36
64
 
65
+ /**
66
+ * Creates an ODSP document service factory with optional consumer-provided features.
67
+ *
68
+ * @param options - Tokens, cache, host policy, and optional feature implementations.
69
+ * @returns The configured ODSP document service factory.
70
+ *
71
+ * @legacy @beta
72
+ */
73
+ export function createOdspDocumentServiceFactory(
74
+ options: IOdspDocumentServiceFactoryOptions,
75
+ ): OdspDocumentServiceFactory {
76
+ const persistedCache = options.persistedCache ?? new LocalPersistentCache();
77
+ const pointInTimeImplementation = options.pointInTimeDocumentServiceImplementation;
78
+
79
+ class ConfiguredOdspDocumentServiceFactory extends OdspDocumentServiceFactory {
80
+ public override readonly createPointInTimeDocumentService:
81
+ | IPointInTimeDocumentServiceFactory["createPointInTimeDocumentService"]
82
+ | undefined =
83
+ pointInTimeImplementation === undefined
84
+ ? undefined
85
+ : async (resolvedUrl, targetSequenceNumber, logger, clientIsSummarizer) =>
86
+ pointInTimeImplementation({
87
+ resolvedUrl,
88
+ targetSequenceNumber,
89
+ logger,
90
+ clientIsSummarizer,
91
+ persistedCache,
92
+ getStorageToken: options.getStorageToken,
93
+ createDocumentService: async (url, odspLogger, cacheAndTracker, isSummarizer) =>
94
+ this.createDocumentServiceCore(url, odspLogger, cacheAndTracker, isSummarizer),
95
+ });
96
+ }
97
+
98
+ return new ConfiguredOdspDocumentServiceFactory(
99
+ options.getStorageToken,
100
+ options.getWebsocketToken,
101
+ persistedCache,
102
+ options.hostPolicy,
103
+ );
104
+ }
37
105
  /**
38
106
  * Creates a factory instance for creating a sharepoint document service from a provided snapshot.
39
107
  *
@@ -41,7 +41,10 @@ import {
41
41
  NonPersistentCache,
42
42
  } from "./odspCache.js";
43
43
  import { OdspDocumentService } from "./odspDocumentService.js";
44
- import { odspDriverCompatDetailsForLoader } from "./odspLayerCompatState.js";
44
+ import {
45
+ odspDriverCompatDetailsForLoader,
46
+ odspDriverCompatRequirementsForLoader,
47
+ } from "./odspLayerCompatState.js";
45
48
  import {
46
49
  type IExistingFileInfo,
47
50
  type INewFileInfo,
@@ -53,12 +56,83 @@ import {
53
56
  toInstrumentedOdspTokenFetcher,
54
57
  } from "./odspUtils.js";
55
58
 
59
+ /**
60
+ * An ODSP document service factory that supports point-in-time (sequence-number-based) loading.
61
+ *
62
+ * @remarks
63
+ * The loader detects this capability structurally, so hosts can pass this factory directly to
64
+ * {@link @fluidframework/container-loader#loadContainerToSequenceNumber}.
65
+ *
66
+ * @legacy @beta
67
+ */
68
+ export interface IPointInTimeDocumentServiceFactory extends IDocumentServiceFactory {
69
+ /**
70
+ * Creates a document service that materializes the document at the requested sequence number.
71
+ *
72
+ * @param resolvedUrl - The resolved ODSP {@link @fluidframework/driver-definitions#IResolvedUrl}.
73
+ * @param targetSequenceNumber - The sequence number at which to materialize the document. See
74
+ * {@link @fluidframework/container-loader#ILoadContainerToSequenceNumberProps.loadToSequenceNumber}.
75
+ * @param logger - Optional {@link @fluidframework/core-interfaces#ITelemetryBaseLogger}.
76
+ * @param clientIsSummarizer - Whether to apply summarizer policies and telemetry to the
77
+ * underlying document services. Defaults to `false`.
78
+ * @returns A read-only {@link @fluidframework/driver-definitions#IDocumentService} materialized
79
+ * at the requested sequence number.
80
+ */
81
+ createPointInTimeDocumentService(
82
+ resolvedUrl: IResolvedUrl,
83
+ targetSequenceNumber: number,
84
+ logger?: ITelemetryBaseLogger,
85
+ clientIsSummarizer?: boolean,
86
+ ): Promise<IDocumentService>;
87
+ }
88
+
89
+ /**
90
+ * Inputs supplied by the ODSP document service factory to an injected point-in-time implementation.
91
+ *
92
+ * @legacy @beta
93
+ */
94
+ export interface IOdspPointInTimeDocumentServiceImplementationProps {
95
+ /** The resolved ODSP URL for the document to materialize. */
96
+ readonly resolvedUrl: IResolvedUrl;
97
+ /** The sequence number at which to materialize the document. */
98
+ readonly targetSequenceNumber: number;
99
+ /** Optional telemetry logger for the point-in-time load. */
100
+ readonly logger?: ITelemetryBaseLogger;
101
+ /** Whether to apply summarizer policies and telemetry. Defaults to `false`. */
102
+ readonly clientIsSummarizer?: boolean;
103
+ /** The persisted ODSP cache supplied to the document service factory. */
104
+ readonly persistedCache: IPersistedCache;
105
+ /** Fetches storage access tokens for ODSP requests. */
106
+ readonly getStorageToken: TokenFetcher<OdspResourceTokenFetchOptions>;
107
+ /**
108
+ * Creates an ODSP document service for a resolved URL.
109
+ *
110
+ * @param resolvedUrl - The resolved URL for the document or file version to load.
111
+ * @param logger - The telemetry logger for the document service.
112
+ * @param cacheAndTracker - The cache and epoch tracker shared by the point-in-time load.
113
+ * @param clientIsSummarizer - Whether to apply summarizer policies and telemetry.
114
+ * @returns The document service for the resolved URL.
115
+ */
116
+ readonly createDocumentService: (
117
+ resolvedUrl: IResolvedUrl,
118
+ logger: ITelemetryBaseLogger,
119
+ cacheAndTracker: ICacheAndTracker,
120
+ clientIsSummarizer?: boolean,
121
+ ) => Promise<IDocumentService>;
122
+ }
123
+
124
+ /**
125
+ * Consumer-provided implementation of ODSP point-in-time loading.
126
+ *
127
+ * @legacy @beta
128
+ */
129
+ export type OdspPointInTimeDocumentServiceImplementation = (
130
+ props: IOdspPointInTimeDocumentServiceImplementationProps,
131
+ ) => Promise<IDocumentService>;
132
+
56
133
  /**
57
134
  * Factory for creating the sharepoint document service. Use this if you want to
58
135
  * use the sharepoint implementation.
59
- *
60
- * This constructor should be used by environments that support dynamic imports and that wish
61
- * to leverage code splitting as a means to keep bundles as small as possible.
62
136
  * @legacy
63
137
  * @beta
64
138
  */
@@ -256,6 +330,17 @@ export class OdspDocumentServiceFactoryCore
256
330
  */
257
331
  public readonly ILayerCompatDetails?: unknown = odspDriverCompatDetailsForLoader;
258
332
 
333
+ /**
334
+ * The requirements that the Loader layer must meet to be compatible with this ODSP Driver. This is exposed to
335
+ * the Loader layer so that it can validate Loader / Driver compatibility on this Driver's behalf (the Driver has
336
+ * no reference to the Loader to validate it directly).
337
+ * @remarks This is for internal use only.
338
+ * The type of this should be ILayerCompatSupportRequirements. However, ILayerCompatSupportRequirements is
339
+ * internal and this class is currently marked as legacy alpha. So, using unknown here.
340
+ */
341
+ public readonly ILayerCompatSupportRequirements?: unknown =
342
+ odspDriverCompatRequirementsForLoader;
343
+
259
344
  public async createDocumentService(
260
345
  resolvedUrl: IResolvedUrl,
261
346
  logger?: ITelemetryBaseLogger,
@@ -269,6 +354,22 @@ export class OdspDocumentServiceFactoryCore
269
354
  );
270
355
  }
271
356
 
357
+ /**
358
+ * Creates a document service that reads its snapshot from the closest file version at or before
359
+ * the target and its deltas from the live document, materializing a requested sequence number
360
+ * through replay.
361
+ *
362
+ * @param resolvedUrl - The resolved ODSP {@link @fluidframework/driver-definitions#IResolvedUrl}.
363
+ * @param targetSequenceNumber - The sequence number at which to materialize the document. See
364
+ * {@link @fluidframework/container-loader#ILoadContainerToSequenceNumberProps.loadToSequenceNumber}.
365
+ * @param logger - Optional {@link @fluidframework/core-interfaces#ITelemetryBaseLogger}.
366
+ * @param clientIsSummarizer - Whether to apply summarizer policies and telemetry to the
367
+ * underlying document services. Defaults to `false`.
368
+ * @returns A read-only {@link @fluidframework/driver-definitions#IDocumentService} materialized
369
+ * at the requested sequence number.
370
+ */
371
+ public readonly createPointInTimeDocumentService?: IPointInTimeDocumentServiceFactory["createPointInTimeDocumentService"];
372
+
272
373
  protected async createDocumentServiceCore(
273
374
  resolvedUrl: IResolvedUrl,
274
375
  odspLogger: ITelemetryBaseLogger,
@@ -3,7 +3,7 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import { performanceNow } from "@fluid-internal/client-utils";
6
+ import { ArrayBufferLikeToArrayBuffer, performanceNow } from "@fluid-internal/client-utils";
7
7
  import { LogLevel } from "@fluidframework/core-interfaces";
8
8
  import { assert, delay } from "@fluidframework/core-utils/internal";
9
9
  import { promiseRaceWithWinner } from "@fluidframework/driver-base/internal";
@@ -158,7 +158,7 @@ export class OdspDocumentStorageService extends OdspDocumentStorageServiceBase {
158
158
  this.epochTracker.fetchAndParseAsJSON<ICreateBlobResponse>(
159
159
  url,
160
160
  {
161
- body: file,
161
+ body: ArrayBufferLikeToArrayBuffer(file),
162
162
  headers,
163
163
  method,
164
164
  },
@@ -3,7 +3,12 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import { generation, type ILayerCompatDetails } from "@fluid-internal/client-utils";
6
+ import {
7
+ generation,
8
+ LayerCompatibilityPolicyWindowMonths,
9
+ type ILayerCompatDetails,
10
+ type ILayerCompatSupportRequirements,
11
+ } from "@fluid-internal/client-utils";
7
12
 
8
13
  import { pkgVersion } from "./packageVersion.js";
9
14
 
@@ -25,3 +30,26 @@ export const odspDriverCompatDetailsForLoader: ILayerCompatDetails = {
25
30
  */
26
31
  supportedFeatures: new Set<string>(),
27
32
  };
33
+
34
+ /**
35
+ * The requirements that the Loader layer must meet to be compatible with this ODSP Driver. This is published to
36
+ * the Loader layer (which holds the reference to this Driver) so that it can validate Loader / Driver compatibility
37
+ * on this Driver's behalf.
38
+ * @internal
39
+ */
40
+ export const odspDriverCompatRequirementsForLoader: ILayerCompatSupportRequirements = {
41
+ /**
42
+ * Minimum generation that Loader must be at to be compatible with this Driver. This is calculated based on the
43
+ * LayerCompatibilityPolicyWindowMonths.NewDriverOldLoader value which defines how many months old can the Loader
44
+ * layer be compared to the Driver layer for them to still be considered compatible.
45
+ * The minimum valid generation value is 0.
46
+ */
47
+ minSupportedGeneration: Math.max(
48
+ 0,
49
+ generation - LayerCompatibilityPolicyWindowMonths.NewDriverOldLoader,
50
+ ),
51
+ /**
52
+ * The features that the Loader must support to be compatible with this Driver.
53
+ */
54
+ requiredFeatures: [],
55
+ };
@@ -36,8 +36,8 @@ Part 1 is built in three components:
36
36
  - **Component A — the version manager**: choose which file version to load or replay from. **This
37
37
  folder is Component A**, and this document is mostly about it.
38
38
  - **Component B — the recomposed driver**: load the chosen version and replay ops forward to the exact
39
- target. **Built** in `../pointInTimeDriver/` (`getOdspPointInTimeDocumentServiceFactory` /
40
- `OdspPointInTimeDocumentService`) — see [Part V](#part-v--components-b--c-as-built).
39
+ target. **Built** in `../pointInTimeDriver/`, exported through the consumer-injected
40
+ `../pointInTime.ts` entrypoint — see [Part V](#part-v--components-b--c-as-built).
41
41
  - **Component C — the loader hookup**: expose Component B through the container loader. **Built** in
42
42
  `@fluidframework/container-loader` (`loadContainerToSequenceNumber`) — see
43
43
  [Part V](#part-v--components-b--c-as-built). This is the current prototype-era package
@@ -556,9 +556,10 @@ is what ships today.
556
556
 
557
557
  ### Component B — how does the recomposed driver materialize the target?
558
558
 
559
- The factory returned by `getOdspPointInTimeDocumentServiceFactory` (in `../pointInTimeDriver/`)
560
- extends `OdspDocumentServiceFactoryCore` internally and adds
561
- `createPointInTimeDocumentService(resolvedUrl, targetSequenceNumber)`:
559
+ The host imports `createPointInTimeDocumentService` from the dedicated point-in-time entrypoint and
560
+ injects it through `createOdspDocumentServiceFactory`. The returned factory exposes the optional
561
+ `createPointInTimeDocumentService(resolvedUrl, targetSequenceNumber)` capability as a thin delegate.
562
+ The injected implementation:
562
563
 
563
564
  1. Build a version manager (Component A), sharing the single `EpochTracker` described below, and call
564
565
  `findBaseForSeq(target)`. It picks the closest version *and* proves that base shares the live
@@ -661,9 +662,9 @@ and the `opStream` endpoint is queried for exactly `[from, target]`.
661
662
 
662
663
  1. Validates `loadToSequenceNumber` is a non-negative integer (`UsageError` otherwise).
663
664
  2. Detects the point-in-time capability with `asPointInTimeCapableFactory`, which checks the passed
664
- `documentServiceFactory` exposes `createPointInTimeDocumentService`. A plain factory is a
665
- `UsageError` — the caller must pass the result of `getOdspPointInTimeDocumentServiceFactory`
666
- directly, with no wrapping.
665
+ `documentServiceFactory` exposes `createPointInTimeDocumentService`. A plain factory is a
666
+ `UsageError` — the caller must inject the dedicated ODSP implementation through
667
+ `createOdspDocumentServiceFactory` options and pass that factory directly with no wrapping.
667
668
  3. Wraps it in a `PointInTimeDocumentServiceFactory` adapter so the container's normal
668
669
  `createDocumentService(resolvedUrl)` routes to `createPointInTimeDocumentService(resolvedUrl, target)`.
669
670
  (`createContainer` throws — the adapter is load-only.)
@@ -6,4 +6,4 @@
6
6
  */
7
7
 
8
8
  export const pkgName = "@fluidframework/odsp-driver";
9
- export const pkgVersion = "2.117.0";
9
+ export const pkgVersion = "3.0.0";
@@ -0,0 +1,30 @@
1
+ /*!
2
+ * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+
6
+ /**
7
+ * Optional ODSP point-in-time loading implementation for consumer injection.
8
+ *
9
+ * @packageDocumentation
10
+ */
11
+
12
+ // eslint-disable-next-line import-x/no-internal-modules -- Dedicated entrypoint for the optional point-in-time implementation.
13
+ export { createPointInTimeDocumentService } from "./pointInTimeDriver/createPointInTimeDocumentService.js";
14
+ export type {
15
+ IOdspPointInTimeDocumentServiceImplementationProps,
16
+ OdspPointInTimeDocumentServiceImplementation,
17
+ } from "./odspDocumentServiceFactoryCore.js";
18
+ export type {
19
+ EpochTracker,
20
+ FetchType,
21
+ FetchTypeInternal,
22
+ ICacheAndTracker,
23
+ } from "./epochTracker.js";
24
+ export type {
25
+ INonPersistentCache,
26
+ IOdspCache,
27
+ IPersistedFileCache,
28
+ IPrefetchSnapshotContents,
29
+ } from "./odspCache.js";
30
+ export type { IOdspResponse } from "./odspUtils.js";
@@ -0,0 +1,193 @@
1
+ /*!
2
+ * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+
6
+ import type {
7
+ IDocumentService,
8
+ IResolvedUrl,
9
+ } from "@fluidframework/driver-definitions/internal";
10
+ import { UsageError } from "@fluidframework/driver-utils/internal";
11
+ import type {
12
+ IOdspResolvedUrl,
13
+ IOdspUrlParts,
14
+ } from "@fluidframework/odsp-driver-definitions/internal";
15
+ import {
16
+ createChildLogger,
17
+ type TelemetryLoggerExt,
18
+ } from "@fluidframework/telemetry-utils/internal";
19
+
20
+ import { createOdspCacheAndTracker, type EpochTracker } from "../epochTracker.js";
21
+ import { NonPersistentCache } from "../odspCache.js";
22
+ import { OdspDriverUrlResolver } from "../odspDriverUrlResolver.js";
23
+ import type { IOdspPointInTimeDocumentServiceImplementationProps } from "../odspDocumentServiceFactoryCore.js";
24
+ import {
25
+ createOdspLogger,
26
+ getOdspResolvedUrl,
27
+ toInstrumentedOdspStorageTokenFetcher,
28
+ } from "../odspUtils.js";
29
+ import {
30
+ createOdspVersionManager,
31
+ type IOdspVersionManager,
32
+ // eslint-disable-next-line import-x/no-internal-modules -- the feature implementation owns version selection
33
+ } from "../odspVersionManager/odspVersionManager.js";
34
+
35
+ import { OdspPointInTimeDocumentService } from "./odspPointInTimeDocumentService.js";
36
+
37
+ interface IPointInTimeDocumentServiceDependencies {
38
+ readonly createVersionManager?: (
39
+ odspResolvedUrl: IOdspResolvedUrl,
40
+ logger: TelemetryLoggerExt,
41
+ epochTracker: EpochTracker,
42
+ ) => IOdspVersionManager | Promise<IOdspVersionManager>;
43
+ readonly resolveFileVersion?: (
44
+ resolvedUrl: IResolvedUrl,
45
+ fileVersion: string,
46
+ ) => IResolvedUrl | Promise<IResolvedUrl>;
47
+ }
48
+
49
+ async function createVersionManager(
50
+ odspResolvedUrl: IOdspResolvedUrl,
51
+ logger: TelemetryLoggerExt,
52
+ epochTracker: EpochTracker,
53
+ getStorageToken: IOdspPointInTimeDocumentServiceImplementationProps["getStorageToken"],
54
+ ): Promise<IOdspVersionManager> {
55
+ const urlParts: IOdspUrlParts = {
56
+ siteUrl: odspResolvedUrl.siteUrl,
57
+ driveId: odspResolvedUrl.driveId,
58
+ itemId: odspResolvedUrl.itemId,
59
+ };
60
+ const getAuthHeader = toInstrumentedOdspStorageTokenFetcher(
61
+ logger,
62
+ urlParts,
63
+ getStorageToken,
64
+ );
65
+ return createOdspVersionManager({
66
+ urlParts,
67
+ getAuthHeader,
68
+ epochTracker,
69
+ logger,
70
+ });
71
+ }
72
+
73
+ async function resolveFileVersion(
74
+ resolvedUrl: IResolvedUrl,
75
+ fileVersion: string,
76
+ ): Promise<IResolvedUrl> {
77
+ const odspResolvedUrl = getOdspResolvedUrl(resolvedUrl);
78
+ const query = new URLSearchParams({
79
+ driveId: odspResolvedUrl.driveId,
80
+ itemId: odspResolvedUrl.itemId,
81
+ fileVersion,
82
+ });
83
+ if (odspResolvedUrl.dataStorePath !== undefined) {
84
+ query.set("path", odspResolvedUrl.dataStorePath);
85
+ }
86
+ if (odspResolvedUrl.codeHint?.containerPackageName !== undefined) {
87
+ query.set("containerPackageName", odspResolvedUrl.codeHint.containerPackageName);
88
+ }
89
+ return new OdspDriverUrlResolver().resolve({
90
+ url: `${odspResolvedUrl.siteUrl}?${query.toString()}`,
91
+ });
92
+ }
93
+
94
+ /**
95
+ * ODSP's point-in-time document service implementation.
96
+ *
97
+ * @remarks Import this function from the dedicated point-in-time entrypoint and inject it through
98
+ * {@link IOdspDocumentServiceFactoryOptions.pointInTimeDocumentServiceImplementation}.
99
+ *
100
+ * @param props - ODSP service dependencies and point-in-time load parameters supplied by the factory.
101
+ * @returns A read-only ODSP document service materialized at the requested sequence number.
102
+ *
103
+ * @legacy @beta
104
+ */
105
+ export async function createPointInTimeDocumentService(
106
+ props: IOdspPointInTimeDocumentServiceImplementationProps,
107
+ ): Promise<IDocumentService> {
108
+ return createPointInTimeDocumentServiceCore(props);
109
+ }
110
+
111
+ /**
112
+ * Creates the point-in-time service with replaceable dependencies for testing.
113
+ * @internal
114
+ */
115
+ export async function createPointInTimeDocumentServiceCore(
116
+ {
117
+ resolvedUrl,
118
+ targetSequenceNumber,
119
+ logger,
120
+ clientIsSummarizer,
121
+ persistedCache,
122
+ getStorageToken,
123
+ createDocumentService,
124
+ }: IOdspPointInTimeDocumentServiceImplementationProps,
125
+ dependencies: IPointInTimeDocumentServiceDependencies = {},
126
+ ): Promise<OdspPointInTimeDocumentService> {
127
+ const odspLogger = createOdspLogger(logger);
128
+ const extLogger = createChildLogger({ logger: odspLogger });
129
+ const odspResolvedUrl = getOdspResolvedUrl(resolvedUrl);
130
+ const cacheAndTracker = createOdspCacheAndTracker(
131
+ persistedCache,
132
+ new NonPersistentCache(),
133
+ {
134
+ resolvedUrl: odspResolvedUrl,
135
+ docId: odspResolvedUrl.hashedDocumentId,
136
+ fileVersion: odspResolvedUrl.fileVersion,
137
+ },
138
+ extLogger,
139
+ clientIsSummarizer,
140
+ );
141
+
142
+ const versionManager = await (
143
+ dependencies.createVersionManager ??
144
+ (async (url, versionLogger, epochTracker) =>
145
+ createVersionManager(url, versionLogger, epochTracker, getStorageToken))
146
+ )(odspResolvedUrl, extLogger, cacheAndTracker.epochTracker);
147
+ const baseResult = await versionManager.findBaseForSeq(targetSequenceNumber);
148
+ if (baseResult.kind === "noBaseVersion") {
149
+ const oldestResolvedSequenceDetail =
150
+ baseResult.oldestResolvedSeq === undefined
151
+ ? ""
152
+ : ` The oldest resolved file version is at sequence number ${baseResult.oldestResolvedSeq}.`;
153
+ throw new UsageError(
154
+ `No ODSP file version is available at or before sequence number ${targetSequenceNumber}.${oldestResolvedSequenceDetail}`,
155
+ );
156
+ }
157
+
158
+ const recoverableResolvedUrl = await (dependencies.resolveFileVersion ?? resolveFileVersion)(
159
+ resolvedUrl,
160
+ baseResult.base.versionId,
161
+ );
162
+ const recoverableDocumentService = await createDocumentService(
163
+ recoverableResolvedUrl,
164
+ odspLogger,
165
+ cacheAndTracker,
166
+ clientIsSummarizer,
167
+ );
168
+ let liveDocumentService: IDocumentService;
169
+ try {
170
+ liveDocumentService = await createDocumentService(
171
+ resolvedUrl,
172
+ odspLogger,
173
+ cacheAndTracker,
174
+ clientIsSummarizer,
175
+ );
176
+ } catch (error) {
177
+ try {
178
+ recoverableDocumentService.dispose();
179
+ } catch (disposeError) {
180
+ extLogger.sendErrorEvent(
181
+ { eventName: "PointInTimeRecoverableDocumentServiceDisposeError" },
182
+ disposeError,
183
+ );
184
+ }
185
+ throw error;
186
+ }
187
+ return new OdspPointInTimeDocumentService(
188
+ recoverableResolvedUrl,
189
+ recoverableDocumentService,
190
+ liveDocumentService,
191
+ targetSequenceNumber,
192
+ );
193
+ }
@@ -8,7 +8,7 @@
8
8
  * https://microsoft.sharepoint-df.com/:w:/t/ODSPFileStore/ER06b64K_XdDjEyAKl-UT60BJiId39SCVkYSyo_2pvH9gQ?e=KYQ0c5
9
9
  */
10
10
 
11
- import { Uint8ArrayToArrayBuffer, Uint8ArrayToString } from "@fluid-internal/client-utils";
11
+ import { Uint8ArrayToArrayBufferLike, Uint8ArrayToString } from "@fluid-internal/client-utils";
12
12
  import { assert } from "@fluidframework/core-utils/internal";
13
13
  import { NonRetryableError } from "@fluidframework/driver-utils/internal";
14
14
  import { OdspErrorTypes } from "@fluidframework/odsp-driver-definitions/internal";
@@ -186,7 +186,7 @@ class BlobDeepCopy extends BlobCore {
186
186
  }
187
187
 
188
188
  public get arrayBuffer(): ArrayBufferLike {
189
- return Uint8ArrayToArrayBuffer(this.buffer);
189
+ return Uint8ArrayToArrayBufferLike(this.buffer);
190
190
  }
191
191
 
192
192
  public static read(buffer: ReadBuffer, lengthLen: number): BlobCore {
@@ -222,7 +222,7 @@ export class BlobShallowCopy extends BlobCore {
222
222
  return this.data.subarray(this.start, this.end);
223
223
  }
224
224
 
225
- // Equivalent to Uint8ArrayToArrayBuffer(this.buffer)
225
+ // Equivalent to Uint8ArrayToArrayBufferLike(this.buffer)
226
226
  public get arrayBuffer(): ArrayBufferLike {
227
227
  const offset = this.data.byteOffset;
228
228
  return this.data.buffer.slice(this.start + offset, this.end + offset);
package/tsconfig.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "extends": "../../../common/build/build-common/tsconfig.node16.json",
2
+ "extends": "../../../common/build/build-common/tsconfig.node20.json",
3
3
  "include": ["src/**/*"],
4
4
  "exclude": ["src/test/**/*"],
5
5
  "compilerOptions": {
@@ -1,41 +0,0 @@
1
- /*!
2
- * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
- * Licensed under the MIT License.
4
- */
5
- import type { ITelemetryBaseLogger } from "@fluidframework/core-interfaces";
6
- import type { IDocumentService, IDocumentServiceFactory, IPersistedCache, IResolvedUrl } from "@fluidframework/driver-definitions/internal";
7
- import type { HostStoragePolicy, OdspResourceTokenFetchOptions, TokenFetcher } from "@fluidframework/odsp-driver-definitions/internal";
8
- /**
9
- * An ODSP document service factory that supports point-in-time (sequence-number-based) loading.
10
- *
11
- * @remarks
12
- * The loader detects this capability structurally, so hosts can pass this factory directly to
13
- * `loadContainerToSequenceNumber`.
14
- *
15
- * @legacy @beta
16
- */
17
- export interface IPointInTimeDocumentServiceFactory extends IDocumentServiceFactory {
18
- /**
19
- * Creates a document service that materializes the document at the requested sequence number.
20
- *
21
- * @param resolvedUrl - The resolved ODSP document URL.
22
- * @param targetSequenceNumber - The sequence number at which to materialize the document.
23
- * @param logger - Optional telemetry logger.
24
- * @param clientIsSummarizer - Whether the requesting client is a summarizer.
25
- * @returns A read-only document service materialized at the requested sequence number.
26
- */
27
- createPointInTimeDocumentService(resolvedUrl: IResolvedUrl, targetSequenceNumber: number, logger?: ITelemetryBaseLogger, clientIsSummarizer?: boolean): Promise<IDocumentService>;
28
- }
29
- /**
30
- * Creates an ODSP document service factory that supports point-in-time loading.
31
- *
32
- * @param getStorageToken - Fetches storage access tokens.
33
- * @param getWebsocketToken - Fetches websocket access tokens, or `undefined` when unavailable.
34
- * @param persistedCache - Optional persisted ODSP cache.
35
- * @param hostPolicy - Optional host storage policy.
36
- * @returns An ODSP document service factory with point-in-time loading capability.
37
- *
38
- * @legacy @beta
39
- */
40
- export declare function getOdspPointInTimeDocumentServiceFactory(getStorageToken: TokenFetcher<OdspResourceTokenFetchOptions>, getWebsocketToken: TokenFetcher<OdspResourceTokenFetchOptions> | undefined, persistedCache?: IPersistedCache, hostPolicy?: HostStoragePolicy): IPointInTimeDocumentServiceFactory;
41
- //# sourceMappingURL=odspPointInTimeDocumentServiceFactory.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"odspPointInTimeDocumentServiceFactory.d.ts","sourceRoot":"","sources":["../../src/pointInTimeDriver/odspPointInTimeDocumentServiceFactory.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAC5E,OAAO,KAAK,EACX,gBAAgB,EAChB,uBAAuB,EACvB,eAAe,EACf,YAAY,EACZ,MAAM,6CAA6C,CAAC;AACrD,OAAO,KAAK,EACX,iBAAiB,EAGjB,6BAA6B,EAC7B,YAAY,EACZ,MAAM,kDAAkD,CAAC;AAuB1D;;;;;;;;GAQG;AACH,MAAM,WAAW,kCAAmC,SAAQ,uBAAuB;IAClF;;;;;;;;OAQG;IACH,gCAAgC,CAC/B,WAAW,EAAE,YAAY,EACzB,oBAAoB,EAAE,MAAM,EAC5B,MAAM,CAAC,EAAE,oBAAoB,EAC7B,kBAAkB,CAAC,EAAE,OAAO,GAC1B,OAAO,CAAC,gBAAgB,CAAC,CAAC;CAC7B;AA0KD;;;;;;;;;;GAUG;AACH,wBAAgB,wCAAwC,CACvD,eAAe,EAAE,YAAY,CAAC,6BAA6B,CAAC,EAC5D,iBAAiB,EAAE,YAAY,CAAC,6BAA6B,CAAC,GAAG,SAAS,EAC1E,cAAc,CAAC,EAAE,eAAe,EAChC,UAAU,CAAC,EAAE,iBAAiB,GAC5B,kCAAkC,CAOpC"}