@fluidframework/odsp-driver 2.113.1 → 2.115.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 (77) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/api-extractor/api-extractor-lint-legacyAlpha.cjs.json +5 -0
  3. package/api-extractor/api-extractor-lint-legacyAlpha.esm.json +5 -0
  4. package/api-extractor/api-extractor.legacy.json +5 -1
  5. package/api-report/odsp-driver.legacy.alpha.api.md +232 -0
  6. package/dist/getUrlAndHeadersWithAuth.d.ts +4 -0
  7. package/dist/getUrlAndHeadersWithAuth.d.ts.map +1 -1
  8. package/dist/getUrlAndHeadersWithAuth.js +4 -0
  9. package/dist/getUrlAndHeadersWithAuth.js.map +1 -1
  10. package/dist/index.d.ts +3 -2
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +7 -3
  13. package/dist/index.js.map +1 -1
  14. package/dist/legacy.d.ts +1 -1
  15. package/dist/legacyAlpha.d.ts +49 -0
  16. package/dist/odspVersionManager/odspFileVersionFetcher.d.ts +40 -1
  17. package/dist/odspVersionManager/odspFileVersionFetcher.d.ts.map +1 -1
  18. package/dist/odspVersionManager/odspFileVersionFetcher.js +52 -14
  19. package/dist/odspVersionManager/odspFileVersionFetcher.js.map +1 -1
  20. package/dist/odspVersionManager/odspVersionManager.d.ts +23 -45
  21. package/dist/odspVersionManager/odspVersionManager.d.ts.map +1 -1
  22. package/dist/odspVersionManager/odspVersionManager.js +68 -33
  23. package/dist/odspVersionManager/odspVersionManager.js.map +1 -1
  24. package/dist/packageVersion.d.ts +1 -1
  25. package/dist/packageVersion.js +1 -1
  26. package/dist/packageVersion.js.map +1 -1
  27. package/dist/pointInTimeDriver/odspPointInTimeDocumentService.d.ts +5 -0
  28. package/dist/pointInTimeDriver/odspPointInTimeDocumentService.d.ts.map +1 -1
  29. package/dist/pointInTimeDriver/odspPointInTimeDocumentService.js +6 -3
  30. package/dist/pointInTimeDriver/odspPointInTimeDocumentService.js.map +1 -1
  31. package/dist/pointInTimeDriver/odspPointInTimeDocumentServiceFactory.d.ts +25 -33
  32. package/dist/pointInTimeDriver/odspPointInTimeDocumentServiceFactory.d.ts.map +1 -1
  33. package/dist/pointInTimeDriver/odspPointInTimeDocumentServiceFactory.js +62 -38
  34. package/dist/pointInTimeDriver/odspPointInTimeDocumentServiceFactory.js.map +1 -1
  35. package/dist/public.d.ts +1 -1
  36. package/internal.d.ts +1 -1
  37. package/legacy/alpha.d.ts +11 -0
  38. package/legacy.d.ts +1 -1
  39. package/lib/getUrlAndHeadersWithAuth.d.ts +4 -0
  40. package/lib/getUrlAndHeadersWithAuth.d.ts.map +1 -1
  41. package/lib/getUrlAndHeadersWithAuth.js +4 -0
  42. package/lib/getUrlAndHeadersWithAuth.js.map +1 -1
  43. package/lib/index.d.ts +3 -2
  44. package/lib/index.d.ts.map +1 -1
  45. package/lib/index.js +5 -3
  46. package/lib/index.js.map +1 -1
  47. package/lib/legacy.d.ts +1 -1
  48. package/lib/legacyAlpha.d.ts +49 -0
  49. package/lib/odspVersionManager/odspFileVersionFetcher.d.ts +40 -1
  50. package/lib/odspVersionManager/odspFileVersionFetcher.d.ts.map +1 -1
  51. package/lib/odspVersionManager/odspFileVersionFetcher.js +53 -15
  52. package/lib/odspVersionManager/odspFileVersionFetcher.js.map +1 -1
  53. package/lib/odspVersionManager/odspVersionManager.d.ts +23 -45
  54. package/lib/odspVersionManager/odspVersionManager.d.ts.map +1 -1
  55. package/lib/odspVersionManager/odspVersionManager.js +68 -33
  56. package/lib/odspVersionManager/odspVersionManager.js.map +1 -1
  57. package/lib/packageVersion.d.ts +1 -1
  58. package/lib/packageVersion.js +1 -1
  59. package/lib/packageVersion.js.map +1 -1
  60. package/lib/pointInTimeDriver/odspPointInTimeDocumentService.d.ts +5 -0
  61. package/lib/pointInTimeDriver/odspPointInTimeDocumentService.d.ts.map +1 -1
  62. package/lib/pointInTimeDriver/odspPointInTimeDocumentService.js +6 -3
  63. package/lib/pointInTimeDriver/odspPointInTimeDocumentService.js.map +1 -1
  64. package/lib/pointInTimeDriver/odspPointInTimeDocumentServiceFactory.d.ts +25 -33
  65. package/lib/pointInTimeDriver/odspPointInTimeDocumentServiceFactory.d.ts.map +1 -1
  66. package/lib/pointInTimeDriver/odspPointInTimeDocumentServiceFactory.js +62 -38
  67. package/lib/pointInTimeDriver/odspPointInTimeDocumentServiceFactory.js.map +1 -1
  68. package/lib/public.d.ts +1 -1
  69. package/package.json +29 -17
  70. package/src/getUrlAndHeadersWithAuth.ts +4 -0
  71. package/src/index.ts +8 -3
  72. package/src/odspVersionManager/DEV.md +376 -54
  73. package/src/odspVersionManager/odspFileVersionFetcher.ts +111 -16
  74. package/src/odspVersionManager/odspVersionManager.ts +106 -68
  75. package/src/packageVersion.ts +1 -1
  76. package/src/pointInTimeDriver/odspPointInTimeDocumentService.ts +8 -4
  77. package/src/pointInTimeDriver/odspPointInTimeDocumentServiceFactory.ts +123 -48
package/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # @fluidframework/odsp-driver
2
2
 
3
+ ## 2.115.0
4
+
5
+ Dependency updates only.
6
+
7
+ ## 2.114.0
8
+
9
+ Dependency updates only.
10
+
3
11
  ## 2.113.0
4
12
 
5
13
  Dependency updates only.
@@ -0,0 +1,5 @@
1
+ {
2
+ "$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json",
3
+ "extends": "<projectFolder>/../../../common/build/build-common/api-extractor-lint.entrypoint.json",
4
+ "mainEntryPointFilePath": "<projectFolder>/dist/legacyAlpha.d.ts"
5
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json",
3
+ "extends": "<projectFolder>/../../../common/build/build-common/api-extractor-lint.entrypoint.json",
4
+ "mainEntryPointFilePath": "<projectFolder>/lib/legacyAlpha.d.ts"
5
+ }
@@ -1,4 +1,8 @@
1
1
  {
2
2
  "$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json",
3
- "extends": "<projectFolder>/../../../common/build/build-common/api-extractor-report.esm.legacy.json"
3
+ "extends": "<projectFolder>/../../../common/build/build-common/api-extractor-report.esm.legacy.json",
4
+ "mainEntryPointFilePath": "<projectFolder>/lib/legacyAlpha.d.ts",
5
+ "apiReport": {
6
+ "reportVariants": ["public", "beta", "alpha"]
7
+ }
4
8
  }
@@ -0,0 +1,232 @@
1
+ ## Alpha API Report File for "@fluidframework/odsp-driver"
2
+
3
+ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
4
+
5
+ ```ts
6
+
7
+ // @beta @legacy
8
+ export function checkUrl(documentUrl: URL): DriverPreCheckInfo | undefined;
9
+
10
+ // @beta @legacy
11
+ export function createLocalOdspDocumentServiceFactory(localSnapshot: Uint8Array | string): IDocumentServiceFactory;
12
+
13
+ // @beta @legacy
14
+ export function createOdspCreateContainerRequest(siteUrl: string, driveId: string, filePath: string, fileName: string, createShareLinkType?: ISharingLinkKind, containerPackageInfo?: IContainerPackageInfo | undefined): IRequest;
15
+
16
+ // @beta @legacy
17
+ export function createOdspUrl(l: OdspFluidDataStoreLocator): string;
18
+
19
+ // @beta @legacy
20
+ export function encodeOdspFluidDataStoreLocator(locator: OdspFluidDataStoreLocator): string;
21
+
22
+ // @beta @legacy
23
+ export class EpochTracker implements IPersistedFileCache {
24
+ constructor(cache: IPersistedCache, fileEntry: IFileEntry, logger: ITelemetryLoggerExt, clientIsSummarizer?: boolean | undefined);
25
+ // (undocumented)
26
+ protected readonly cache: IPersistedCache;
27
+ // (undocumented)
28
+ protected readonly clientIsSummarizer?: boolean | undefined;
29
+ fetch(url: string, fetchOptions: RequestInit, fetchType: FetchType, addInBody?: boolean, fetchReason?: string): Promise<IOdspResponse<Response>>;
30
+ fetchAndParseAsJSON<T>(url: string, fetchOptions: RequestInit, fetchType: FetchType, addInBody?: boolean, fetchReason?: string): Promise<IOdspResponse<T>>;
31
+ fetchArray(url: string, fetchOptions: {
32
+ [index: string]: RequestInit;
33
+ }, fetchType: FetchType, addInBody?: boolean, fetchReason?: string): Promise<IOdspResponse<ArrayBuffer>>;
34
+ // (undocumented)
35
+ protected readonly fileEntry: IFileEntry;
36
+ // (undocumented)
37
+ get fluidEpoch(): string | undefined;
38
+ // (undocumented)
39
+ get(entry: IEntry): Promise<any>;
40
+ // (undocumented)
41
+ protected readonly logger: ITelemetryLoggerExt;
42
+ // (undocumented)
43
+ put(entry: IEntry, value: any): Promise<void>;
44
+ // (undocumented)
45
+ readonly rateLimiter: RateLimiter;
46
+ // (undocumented)
47
+ removeEntries(): Promise<void>;
48
+ // (undocumented)
49
+ setEpoch(epoch: string, fromCache: boolean, fetchType: FetchTypeInternal): void;
50
+ // (undocumented)
51
+ validateEpoch(epoch: string | undefined, fetchType: FetchType): Promise<void>;
52
+ // (undocumented)
53
+ protected validateEpochFromResponse(epochFromResponse: string | undefined, fetchType: FetchTypeInternal, fromCache?: boolean): void;
54
+ }
55
+
56
+ // @beta @legacy (undocumented)
57
+ export type FetchType = "blob" | "createBlob" | "createFile" | "joinSession" | "ops" | "test" | "snapshotTree" | "treesLatest" | "uploadSummary" | "push" | "versions" | "renameFile";
58
+
59
+ // @beta @legacy (undocumented)
60
+ export type FetchTypeInternal = FetchType | "cache";
61
+
62
+ // @beta @legacy
63
+ export function getHashedDocumentId(driveId: string, itemId: string): Promise<string>;
64
+
65
+ // @beta @legacy
66
+ export function getLocatorFromOdspUrl(url: URL, requireFluidSignature?: boolean): OdspFluidDataStoreLocator | undefined;
67
+
68
+ // @alpha @legacy
69
+ export function getOdspPointInTimeDocumentServiceFactory(getStorageToken: TokenFetcher<OdspResourceTokenFetchOptions>, getWebsocketToken: TokenFetcher<OdspResourceTokenFetchOptions> | undefined, persistedCache?: IPersistedCache, hostPolicy?: HostStoragePolicy): IPointInTimeDocumentServiceFactory;
70
+
71
+ // @beta @legacy (undocumented)
72
+ export interface ICacheAndTracker {
73
+ // (undocumented)
74
+ cache: IOdspCache;
75
+ // (undocumented)
76
+ epochTracker: EpochTracker;
77
+ }
78
+
79
+ // @beta @legacy
80
+ export interface INonPersistentCache {
81
+ readonly fileUrlCache: PromiseCache<string, IOdspResolvedUrl>;
82
+ readonly sessionJoinCache: PromiseCache<string, {
83
+ entryTime: number;
84
+ joinSessionResponse: ISocketStorageDiscovery;
85
+ }>;
86
+ readonly snapshotPrefetchResultCache: PromiseCache<string, IPrefetchSnapshotContents>;
87
+ }
88
+
89
+ // @beta @legacy
90
+ export interface IOdspCache extends INonPersistentCache {
91
+ readonly persistedCache: IPersistedFileCache;
92
+ }
93
+
94
+ // @beta @legacy (undocumented)
95
+ export interface IOdspResponse<T> {
96
+ // (undocumented)
97
+ content: T;
98
+ // (undocumented)
99
+ duration: number;
100
+ // (undocumented)
101
+ headers: Map<string, string>;
102
+ // (undocumented)
103
+ propsToLog: ITelemetryBaseProperties;
104
+ }
105
+
106
+ // @beta @legacy
107
+ export interface IPersistedFileCache {
108
+ // (undocumented)
109
+ get(entry: IEntry): Promise<any>;
110
+ // (undocumented)
111
+ put(entry: IEntry, value: any): Promise<void>;
112
+ // (undocumented)
113
+ removeEntries(): Promise<void>;
114
+ }
115
+
116
+ // @alpha @legacy
117
+ export interface IPointInTimeDocumentServiceFactory extends IDocumentServiceFactory {
118
+ createPointInTimeDocumentService(resolvedUrl: IResolvedUrl, targetSequenceNumber: number, logger?: ITelemetryBaseLogger, clientIsSummarizer?: boolean): Promise<IDocumentService>;
119
+ }
120
+
121
+ // @beta @legacy (undocumented)
122
+ export interface IPrefetchSnapshotContents extends ISnapshot {
123
+ // (undocumented)
124
+ fluidEpoch: string;
125
+ // (undocumented)
126
+ prefetchStartTime: number;
127
+ }
128
+
129
+ // @beta @deprecated @legacy (undocumented)
130
+ export interface ISnapshotContents {
131
+ // (undocumented)
132
+ blobs: Map<string, ArrayBuffer>;
133
+ latestSequenceNumber: number | undefined;
134
+ // (undocumented)
135
+ ops: ISequencedDocumentMessage[];
136
+ sequenceNumber: number | undefined;
137
+ // (undocumented)
138
+ snapshotTree: ISnapshotTree;
139
+ }
140
+
141
+ // @beta @legacy
142
+ export function isOdspResolvedUrl(resolvedUrl: IResolvedUrl): resolvedUrl is IOdspResolvedUrl;
143
+
144
+ // @beta @legacy
145
+ export const locatorQueryParamName = "nav";
146
+
147
+ // @beta @legacy (undocumented)
148
+ export const OdcApiSiteOrigin = "https://my.microsoftpersonalcontent.com";
149
+
150
+ // @beta @legacy (undocumented)
151
+ export const OdcFileSiteOrigin = "https://1drv.ms";
152
+
153
+ // @beta @legacy
154
+ export class OdspDocumentServiceFactory extends OdspDocumentServiceFactoryCore {
155
+ constructor(getStorageToken: TokenFetcher<OdspResourceTokenFetchOptions>, getWebsocketToken: TokenFetcher<OdspResourceTokenFetchOptions> | undefined, persistedCache?: IPersistedCache, hostPolicy?: HostStoragePolicy);
156
+ }
157
+
158
+ // @beta @legacy
159
+ export class OdspDocumentServiceFactoryCore implements IDocumentServiceFactory, IRelaySessionAwareDriverFactory {
160
+ constructor(getStorageToken: TokenFetcher<OdspResourceTokenFetchOptions>, getWebsocketToken: TokenFetcher<OdspResourceTokenFetchOptions> | undefined, persistedCache?: IPersistedCache, hostPolicy?: HostStoragePolicy);
161
+ // (undocumented)
162
+ createContainer(createNewSummary: ISummaryTree | undefined, createNewResolvedUrl: IResolvedUrl, logger?: ITelemetryBaseLogger, clientIsSummarizer?: boolean): Promise<IDocumentService>;
163
+ // (undocumented)
164
+ createDocumentService(resolvedUrl: IResolvedUrl, logger?: ITelemetryBaseLogger, clientIsSummarizer?: boolean): Promise<IDocumentService>;
165
+ // (undocumented)
166
+ protected createDocumentServiceCore(resolvedUrl: IResolvedUrl, odspLogger: ITelemetryBaseLogger, cacheAndTrackerArg?: ICacheAndTracker, clientIsSummarizer?: boolean): Promise<IDocumentService>;
167
+ getRelayServiceSessionInfo(resolvedUrl: IResolvedUrl): Promise<ISocketStorageDiscovery | undefined>;
168
+ readonly ILayerCompatDetails?: unknown;
169
+ // (undocumented)
170
+ get IRelaySessionAwareDriverFactory(): this;
171
+ // (undocumented)
172
+ protected persistedCache: IPersistedCache;
173
+ // (undocumented)
174
+ get snapshotPrefetchResultCache(): PromiseCache<string, IPrefetchSnapshotContents>;
175
+ }
176
+
177
+ // @beta @legacy
178
+ export class OdspDriverUrlResolver implements IUrlResolver {
179
+ constructor();
180
+ getAbsoluteUrl(resolvedUrl: IResolvedUrl, relativeUrl: string, packageInfoSource?: IContainerPackageInfo): Promise<string>;
181
+ resolve(request: IRequest): Promise<IOdspResolvedUrl>;
182
+ }
183
+
184
+ // @beta @legacy
185
+ export class OdspDriverUrlResolverForShareLink implements IUrlResolver {
186
+ constructor(shareLinkFetcherProps?: ShareLinkFetcherProps | undefined, logger?: ITelemetryBaseLogger, appName?: string | undefined, getContext?: ((resolvedUrl: IOdspResolvedUrl, dataStorePath: string) => Promise<string | undefined>) | undefined, containerPackageInfo?: IContainerPackageInfo | undefined);
187
+ appendDataStorePath(requestUrl: URL, pathToAppend: string): string | undefined;
188
+ appendLocatorParams(baseUrl: string, resolvedUrl: IResolvedUrl, dataStorePath: string, packageInfoSource?: IContainerPackageInfo): Promise<string>;
189
+ static createDocumentUrl(baseUrl: string, driverInfo: OdspFluidDataStoreLocator): string;
190
+ getAbsoluteUrl(resolvedUrl: IResolvedUrl, dataStorePath: string, packageInfoSource?: IContainerPackageInfo): Promise<string>;
191
+ resolve(request: IRequest): Promise<IOdspResolvedUrl>;
192
+ }
193
+
194
+ // @beta @legacy (undocumented)
195
+ export interface OdspFluidDataStoreLocator extends IOdspUrlParts {
196
+ // (undocumented)
197
+ appName?: string | undefined;
198
+ // (undocumented)
199
+ containerPackageName?: string | undefined;
200
+ // (undocumented)
201
+ context?: string | undefined;
202
+ // (undocumented)
203
+ dataStorePath: string;
204
+ // (undocumented)
205
+ fileVersion?: string | undefined;
206
+ }
207
+
208
+ // @beta @legacy
209
+ export function prefetchLatestSnapshot(resolvedUrl: IResolvedUrl, getStorageToken: TokenFetcher<OdspResourceTokenFetchOptions>, persistedCache: IPersistedCache, _forceAccessTokenViaAuthorizationHeader: boolean, logger: ITelemetryBaseLogger, hostSnapshotFetchOptions: ISnapshotOptions | undefined, enableRedeemFallback?: boolean, _fetchBinarySnapshotFormat?: boolean, _snapshotFormatFetchType?: SnapshotFormatSupportType, odspDocumentServiceFactory?: OdspDocumentServiceFactory): Promise<boolean>;
210
+
211
+ // @beta @legacy
212
+ export interface ShareLinkFetcherProps {
213
+ identityType: IdentityType;
214
+ tokenFetcher: TokenFetcher<OdspResourceTokenFetchOptions>;
215
+ }
216
+
217
+ // @beta @legacy
218
+ export enum SnapshotFormatSupportType {
219
+ // (undocumented)
220
+ Binary = 1,
221
+ // (undocumented)
222
+ Json = 0,
223
+ // (undocumented)
224
+ JsonAndBinary = 2
225
+ }
226
+
227
+ // @beta @legacy
228
+ export function storeLocatorInOdspUrl(url: URL, locator: OdspFluidDataStoreLocator): void;
229
+
230
+ // (No @packageDocumentation comment for this package)
231
+
232
+ ```
@@ -2,6 +2,10 @@
2
2
  * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
3
  * Licensed under the MIT License.
4
4
  */
5
+ /**
6
+ * Builds the request headers carrying the given Authorization header value.
7
+ * @internal
8
+ */
5
9
  export declare function getHeadersWithAuth(authHeader: string | null): {
6
10
  [index: string]: string;
7
11
  };
@@ -1 +1 @@
1
- {"version":3,"file":"getUrlAndHeadersWithAuth.d.ts","sourceRoot":"","sources":["../src/getUrlAndHeadersWithAuth.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,wBAAgB,kBAAkB,CAEjC,UAAU,EAAE,MAAM,GAAG,IAAI,GACvB;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAM7B"}
1
+ {"version":3,"file":"getUrlAndHeadersWithAuth.d.ts","sourceRoot":"","sources":["../src/getUrlAndHeadersWithAuth.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;;GAGG;AACH,wBAAgB,kBAAkB,CAEjC,UAAU,EAAE,MAAM,GAAG,IAAI,GACvB;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAM7B"}
@@ -6,6 +6,10 @@
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
7
  exports.getHeadersWithAuth = void 0;
8
8
  const internal_1 = require("@fluidframework/core-utils/internal");
9
+ /**
10
+ * Builds the request headers carrying the given Authorization header value.
11
+ * @internal
12
+ */
9
13
  function getHeadersWithAuth(
10
14
  // eslint-disable-next-line @rushstack/no-new-null
11
15
  authHeader) {
@@ -1 +1 @@
1
- {"version":3,"file":"getUrlAndHeadersWithAuth.js","sourceRoot":"","sources":["../src/getUrlAndHeadersWithAuth.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,kEAA6D;AAE7D,SAAgB,kBAAkB;AACjC,kDAAkD;AAClD,UAAyB;IAEzB,IAAA,iBAAM,EAAC,CAAC,CAAC,UAAU,EAAE,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAEzE,OAAO;QACN,aAAa,EAAE,UAAU;KACzB,CAAC;AACH,CAAC;AATD,gDASC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { assert } from \"@fluidframework/core-utils/internal\";\n\nexport function getHeadersWithAuth(\n\t// eslint-disable-next-line @rushstack/no-new-null\n\tauthHeader: string | null,\n): { [index: string]: string } {\n\tassert(!!authHeader, 0x936 /* authHeader should not be null or empty */);\n\n\treturn {\n\t\tAuthorization: authHeader,\n\t};\n}\n"]}
1
+ {"version":3,"file":"getUrlAndHeadersWithAuth.js","sourceRoot":"","sources":["../src/getUrlAndHeadersWithAuth.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,kEAA6D;AAE7D;;;GAGG;AACH,SAAgB,kBAAkB;AACjC,kDAAkD;AAClD,UAAyB;IAEzB,IAAA,iBAAM,EAAC,CAAC,CAAC,UAAU,EAAE,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAEzE,OAAO;QACN,aAAa,EAAE,UAAU;KACzB,CAAC;AACH,CAAC;AATD,gDASC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { assert } from \"@fluidframework/core-utils/internal\";\n\n/**\n * Builds the request headers carrying the given Authorization header value.\n * @internal\n */\nexport function getHeadersWithAuth(\n\t// eslint-disable-next-line @rushstack/no-new-null\n\tauthHeader: string | null,\n): { [index: string]: string } {\n\tassert(!!authHeader, 0x936 /* authHeader should not be null or empty */);\n\n\treturn {\n\t\tAuthorization: authHeader,\n\t};\n}\n"]}
package/dist/index.d.ts CHANGED
@@ -7,11 +7,12 @@ export { ClpCompliantAppHeader, type IClpCompliantAppHeader, type ISharingLinkHe
7
7
  export { checkUrl } from "./checkUrl.js";
8
8
  export { createOdspUrl } from "./createOdspUrl.js";
9
9
  export { getHashedDocumentId, type ISnapshotContents } from "./odspPublicUtils.js";
10
- export { getOdspUrlParts, isOdcUrl, isSpoUrl } from "./odspUrlHelper.js";
10
+ export { getApiRoot, getOdspUrlParts, isOdcUrl, isSpoUrl } from "./odspUrlHelper.js";
11
+ export { getHeadersWithAuth } from "./getUrlAndHeadersWithAuth.js";
11
12
  export { prefetchLatestSnapshot } from "./prefetchLatestSnapshot.js";
12
13
  export { createLocalOdspDocumentServiceFactory, OdspDocumentServiceFactory, } from "./odspDocumentServiceFactory.js";
13
14
  export { OdspDocumentServiceFactoryCore } from "./odspDocumentServiceFactoryCore.js";
14
- export { OdspPointInTimeDocumentServiceFactory } from "./pointInTimeDriver/odspPointInTimeDocumentServiceFactory.js";
15
+ export { getOdspPointInTimeDocumentServiceFactory, type IPointInTimeDocumentServiceFactory, } from "./pointInTimeDriver/odspPointInTimeDocumentServiceFactory.js";
15
16
  export { createOdspCreateContainerRequest } from "./createOdspCreateContainerRequest.js";
16
17
  export { OdspDriverUrlResolver } from "./odspDriverUrlResolver.js";
17
18
  export { OdspDriverUrlResolverForShareLink, type ShareLinkFetcherProps, } from "./odspDriverUrlResolverForShareLink.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAErE,OAAO,EACN,qBAAqB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,EACvB,KAAK,yBAAyB,EAC9B,iBAAiB,GACjB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,KAAK,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAGzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAGrE,OAAO,EACN,qCAAqC,EACrC,0BAA0B,GAC1B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AAErF,OAAO,EAAE,qCAAqC,EAAE,MAAM,8DAA8D,CAAC;AAGrH,OAAO,EAAE,gCAAgC,EAAE,MAAM,uCAAuC,CAAC;AAGzF,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EACN,iCAAiC,EACjC,KAAK,qBAAqB,GAC1B,MAAM,wCAAwC,CAAC;AAGhD,OAAO,EACN,+BAA+B,EAC/B,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,GACrB,MAAM,wBAAwB,CAAC;AAEhC,YAAY,EACX,UAAU,EACV,mBAAmB,EACnB,mBAAmB,EACnB,yBAAyB,GACzB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACX,gBAAgB,EAChB,YAAY,EACZ,SAAS,EACT,iBAAiB,GACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,KAAK,aAAa,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EACN,KAAK,0BAA0B,EAC/B,4BAA4B,GAC5B,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EAAE,gCAAgC,EAAE,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAErE,OAAO,EACN,qBAAqB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,EACvB,KAAK,yBAAyB,EAC9B,iBAAiB,GACjB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,KAAK,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACnF,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACrF,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAGnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAGrE,OAAO,EACN,qCAAqC,EACrC,0BAA0B,GAC1B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AAErF,OAAO,EACN,wCAAwC,EACxC,KAAK,kCAAkC,GACvC,MAAM,8DAA8D,CAAC;AAItE,OAAO,EAAE,gCAAgC,EAAE,MAAM,uCAAuC,CAAC;AAGzF,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EACN,iCAAiC,EACjC,KAAK,qBAAqB,GAC1B,MAAM,wCAAwC,CAAC;AAGhD,OAAO,EACN,+BAA+B,EAC/B,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,GACrB,MAAM,wBAAwB,CAAC;AAEhC,YAAY,EACX,UAAU,EACV,mBAAmB,EACnB,mBAAmB,EACnB,yBAAyB,GACzB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACX,gBAAgB,EAChB,YAAY,EACZ,SAAS,EACT,iBAAiB,GACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,KAAK,aAAa,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EACN,KAAK,0BAA0B,EAC/B,4BAA4B,GAC5B,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EAAE,gCAAgC,EAAE,MAAM,2BAA2B,CAAC"}
package/dist/index.js CHANGED
@@ -4,7 +4,7 @@
4
4
  * Licensed under the MIT License.
5
5
  */
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.odspDriverCompatDetailsForLoader = exports.parseCompactSnapshotResponse = exports.SnapshotFormatSupportType = exports.isOdspResolvedUrl = exports.storeLocatorInOdspUrl = exports.locatorQueryParamName = exports.getLocatorFromOdspUrl = exports.encodeOdspFluidDataStoreLocator = exports.OdspDriverUrlResolverForShareLink = exports.OdspDriverUrlResolver = exports.createOdspCreateContainerRequest = exports.OdspPointInTimeDocumentServiceFactory = exports.OdspDocumentServiceFactoryCore = exports.OdspDocumentServiceFactory = exports.createLocalOdspDocumentServiceFactory = exports.prefetchLatestSnapshot = exports.isSpoUrl = exports.isOdcUrl = exports.getOdspUrlParts = exports.getHashedDocumentId = exports.createOdspUrl = exports.checkUrl = exports.SharingLinkHeader = exports.ClpCompliantAppHeader = exports.OdcFileSiteOrigin = exports.OdcApiSiteOrigin = void 0;
7
+ exports.odspDriverCompatDetailsForLoader = exports.parseCompactSnapshotResponse = exports.SnapshotFormatSupportType = exports.isOdspResolvedUrl = exports.storeLocatorInOdspUrl = exports.locatorQueryParamName = exports.getLocatorFromOdspUrl = exports.encodeOdspFluidDataStoreLocator = exports.OdspDriverUrlResolverForShareLink = exports.OdspDriverUrlResolver = exports.createOdspCreateContainerRequest = exports.getOdspPointInTimeDocumentServiceFactory = exports.OdspDocumentServiceFactoryCore = exports.OdspDocumentServiceFactory = exports.createLocalOdspDocumentServiceFactory = exports.prefetchLatestSnapshot = exports.getHeadersWithAuth = exports.isSpoUrl = exports.isOdcUrl = exports.getOdspUrlParts = exports.getApiRoot = exports.getHashedDocumentId = exports.createOdspUrl = exports.checkUrl = exports.SharingLinkHeader = exports.ClpCompliantAppHeader = exports.OdcFileSiteOrigin = exports.OdcApiSiteOrigin = void 0;
8
8
  // Constants
9
9
  var constants_js_1 = require("./constants.js");
10
10
  Object.defineProperty(exports, "OdcApiSiteOrigin", { enumerable: true, get: function () { return constants_js_1.OdcApiSiteOrigin; } });
@@ -20,9 +20,12 @@ Object.defineProperty(exports, "createOdspUrl", { enumerable: true, get: functio
20
20
  var odspPublicUtils_js_1 = require("./odspPublicUtils.js");
21
21
  Object.defineProperty(exports, "getHashedDocumentId", { enumerable: true, get: function () { return odspPublicUtils_js_1.getHashedDocumentId; } });
22
22
  var odspUrlHelper_js_1 = require("./odspUrlHelper.js");
23
+ Object.defineProperty(exports, "getApiRoot", { enumerable: true, get: function () { return odspUrlHelper_js_1.getApiRoot; } });
23
24
  Object.defineProperty(exports, "getOdspUrlParts", { enumerable: true, get: function () { return odspUrlHelper_js_1.getOdspUrlParts; } });
24
25
  Object.defineProperty(exports, "isOdcUrl", { enumerable: true, get: function () { return odspUrlHelper_js_1.isOdcUrl; } });
25
26
  Object.defineProperty(exports, "isSpoUrl", { enumerable: true, get: function () { return odspUrlHelper_js_1.isSpoUrl; } });
27
+ var getUrlAndHeadersWithAuth_js_1 = require("./getUrlAndHeadersWithAuth.js");
28
+ Object.defineProperty(exports, "getHeadersWithAuth", { enumerable: true, get: function () { return getUrlAndHeadersWithAuth_js_1.getHeadersWithAuth; } });
26
29
  // prefetch latest snapshot before container load
27
30
  var prefetchLatestSnapshot_js_1 = require("./prefetchLatestSnapshot.js");
28
31
  Object.defineProperty(exports, "prefetchLatestSnapshot", { enumerable: true, get: function () { return prefetchLatestSnapshot_js_1.prefetchLatestSnapshot; } });
@@ -32,9 +35,10 @@ Object.defineProperty(exports, "createLocalOdspDocumentServiceFactory", { enumer
32
35
  Object.defineProperty(exports, "OdspDocumentServiceFactory", { enumerable: true, get: function () { return odspDocumentServiceFactory_js_1.OdspDocumentServiceFactory; } });
33
36
  var odspDocumentServiceFactoryCore_js_1 = require("./odspDocumentServiceFactoryCore.js");
34
37
  Object.defineProperty(exports, "OdspDocumentServiceFactoryCore", { enumerable: true, get: function () { return odspDocumentServiceFactoryCore_js_1.OdspDocumentServiceFactoryCore; } });
35
- // eslint-disable-next-line import-x/no-internal-modules
38
+ /* eslint-disable import-x/no-internal-modules */
36
39
  var odspPointInTimeDocumentServiceFactory_js_1 = require("./pointInTimeDriver/odspPointInTimeDocumentServiceFactory.js");
37
- Object.defineProperty(exports, "OdspPointInTimeDocumentServiceFactory", { enumerable: true, get: function () { return odspPointInTimeDocumentServiceFactory_js_1.OdspPointInTimeDocumentServiceFactory; } });
40
+ Object.defineProperty(exports, "getOdspPointInTimeDocumentServiceFactory", { enumerable: true, get: function () { return odspPointInTimeDocumentServiceFactory_js_1.getOdspPointInTimeDocumentServiceFactory; } });
41
+ /* eslint-enable import-x/no-internal-modules */
38
42
  // File creation
39
43
  var createOdspCreateContainerRequest_js_1 = require("./createOdspCreateContainerRequest.js");
40
44
  Object.defineProperty(exports, "createOdspCreateContainerRequest", { enumerable: true, get: function () { return createOdspCreateContainerRequest_js_1.createOdspCreateContainerRequest; } });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,YAAY;AACZ,+CAAqE;AAA5D,gHAAA,gBAAgB,OAAA;AAAE,iHAAA,iBAAiB,OAAA;AAE5C,2DAM8B;AAL7B,2HAAA,qBAAqB,OAAA;AAIrB,uHAAA,iBAAiB,OAAA;AAGlB,eAAe;AACf,6CAAyC;AAAhC,uGAAA,QAAQ,OAAA;AACjB,uDAAmD;AAA1C,iHAAA,aAAa,OAAA;AACtB,2DAAmF;AAA1E,yHAAA,mBAAmB,OAAA;AAC5B,uDAAyE;AAAhE,mHAAA,eAAe,OAAA;AAAE,4GAAA,QAAQ,OAAA;AAAE,4GAAA,QAAQ,OAAA;AAE5C,iDAAiD;AACjD,yEAAqE;AAA5D,mIAAA,sBAAsB,OAAA;AAE/B,UAAU;AACV,iFAGyC;AAFxC,sJAAA,qCAAqC,OAAA;AACrC,2IAAA,0BAA0B,OAAA;AAE3B,yFAAqF;AAA5E,mJAAA,8BAA8B,OAAA;AACvC,wDAAwD;AACxD,yHAAqH;AAA5G,iKAAA,qCAAqC,OAAA;AAE9C,gBAAgB;AAChB,6FAAyF;AAAhF,uJAAA,gCAAgC,OAAA;AAEzC,6CAA6C;AAC7C,uEAAmE;AAA1D,iIAAA,qBAAqB,OAAA;AAC9B,+FAGgD;AAF/C,yJAAA,iCAAiC,OAAA;AAIlC,oEAAoE;AACpE,+DAKgC;AAJ/B,uIAAA,+BAA+B,OAAA;AAC/B,6HAAA,qBAAqB,OAAA;AACrB,6HAAA,qBAAqB,OAAA;AACrB,6HAAA,qBAAqB,OAAA;AAetB,+CAAuE;AAA1C,iHAAA,iBAAiB,OAAA;AAC9C,uDAA+D;AAAtD,6HAAA,yBAAyB,OAAA;AAClC,uEAGoC;AADnC,wIAAA,4BAA4B,OAAA;AAG7B,uBAAuB;AACvB,qEAA6E;AAApE,2IAAA,gCAAgC,OAAA","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n// Constants\nexport { OdcApiSiteOrigin, OdcFileSiteOrigin } from \"./constants.js\";\n\nexport {\n\tClpCompliantAppHeader,\n\ttype IClpCompliantAppHeader,\n\ttype ISharingLinkHeader,\n\ttype OdspFluidDataStoreLocator,\n\tSharingLinkHeader,\n} from \"./contractsPublic.js\";\n\n// public utils\nexport { checkUrl } from \"./checkUrl.js\";\nexport { createOdspUrl } from \"./createOdspUrl.js\";\nexport { getHashedDocumentId, type ISnapshotContents } from \"./odspPublicUtils.js\";\nexport { getOdspUrlParts, isOdcUrl, isSpoUrl } from \"./odspUrlHelper.js\";\n\n// prefetch latest snapshot before container load\nexport { prefetchLatestSnapshot } from \"./prefetchLatestSnapshot.js\";\n\n// Factory\nexport {\n\tcreateLocalOdspDocumentServiceFactory,\n\tOdspDocumentServiceFactory,\n} from \"./odspDocumentServiceFactory.js\";\nexport { OdspDocumentServiceFactoryCore } from \"./odspDocumentServiceFactoryCore.js\";\n// eslint-disable-next-line import-x/no-internal-modules\nexport { OdspPointInTimeDocumentServiceFactory } from \"./pointInTimeDriver/odspPointInTimeDocumentServiceFactory.js\";\n\n// File creation\nexport { createOdspCreateContainerRequest } from \"./createOdspCreateContainerRequest.js\";\n\n// URI Resolver functionality, URI management\nexport { OdspDriverUrlResolver } from \"./odspDriverUrlResolver.js\";\nexport {\n\tOdspDriverUrlResolverForShareLink,\n\ttype ShareLinkFetcherProps,\n} from \"./odspDriverUrlResolverForShareLink.js\";\n\n// It's used by URL resolve code, but also has some public functions\nexport {\n\tencodeOdspFluidDataStoreLocator,\n\tgetLocatorFromOdspUrl,\n\tlocatorQueryParamName,\n\tstoreLocatorInOdspUrl,\n} from \"./odspFluidFileLink.js\";\n\nexport type {\n\tIOdspCache,\n\tIPersistedFileCache,\n\tINonPersistentCache,\n\tIPrefetchSnapshotContents,\n} from \"./odspCache.js\";\nexport type {\n\tICacheAndTracker,\n\tEpochTracker,\n\tFetchType,\n\tFetchTypeInternal,\n} from \"./epochTracker.js\";\nexport { type IOdspResponse, isOdspResolvedUrl } from \"./odspUtils.js\";\nexport { SnapshotFormatSupportType } from \"./fetchSnapshot.js\";\nexport {\n\ttype ISnapshotContentsWithProps,\n\tparseCompactSnapshotResponse,\n} from \"./compactSnapshotParser.js\";\n\n// Layer Compat details\nexport { odspDriverCompatDetailsForLoader } from \"./odspLayerCompatState.js\";\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,YAAY;AACZ,+CAAqE;AAA5D,gHAAA,gBAAgB,OAAA;AAAE,iHAAA,iBAAiB,OAAA;AAE5C,2DAM8B;AAL7B,2HAAA,qBAAqB,OAAA;AAIrB,uHAAA,iBAAiB,OAAA;AAGlB,eAAe;AACf,6CAAyC;AAAhC,uGAAA,QAAQ,OAAA;AACjB,uDAAmD;AAA1C,iHAAA,aAAa,OAAA;AACtB,2DAAmF;AAA1E,yHAAA,mBAAmB,OAAA;AAC5B,uDAAqF;AAA5E,8GAAA,UAAU,OAAA;AAAE,mHAAA,eAAe,OAAA;AAAE,4GAAA,QAAQ,OAAA;AAAE,4GAAA,QAAQ,OAAA;AACxD,6EAAmE;AAA1D,iIAAA,kBAAkB,OAAA;AAE3B,iDAAiD;AACjD,yEAAqE;AAA5D,mIAAA,sBAAsB,OAAA;AAE/B,UAAU;AACV,iFAGyC;AAFxC,sJAAA,qCAAqC,OAAA;AACrC,2IAAA,0BAA0B,OAAA;AAE3B,yFAAqF;AAA5E,mJAAA,8BAA8B,OAAA;AACvC,iDAAiD;AACjD,yHAGsE;AAFrE,oKAAA,wCAAwC,OAAA;AAGzC,gDAAgD;AAEhD,gBAAgB;AAChB,6FAAyF;AAAhF,uJAAA,gCAAgC,OAAA;AAEzC,6CAA6C;AAC7C,uEAAmE;AAA1D,iIAAA,qBAAqB,OAAA;AAC9B,+FAGgD;AAF/C,yJAAA,iCAAiC,OAAA;AAIlC,oEAAoE;AACpE,+DAKgC;AAJ/B,uIAAA,+BAA+B,OAAA;AAC/B,6HAAA,qBAAqB,OAAA;AACrB,6HAAA,qBAAqB,OAAA;AACrB,6HAAA,qBAAqB,OAAA;AAetB,+CAAuE;AAA1C,iHAAA,iBAAiB,OAAA;AAC9C,uDAA+D;AAAtD,6HAAA,yBAAyB,OAAA;AAClC,uEAGoC;AADnC,wIAAA,4BAA4B,OAAA;AAG7B,uBAAuB;AACvB,qEAA6E;AAApE,2IAAA,gCAAgC,OAAA","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n// Constants\nexport { OdcApiSiteOrigin, OdcFileSiteOrigin } from \"./constants.js\";\n\nexport {\n\tClpCompliantAppHeader,\n\ttype IClpCompliantAppHeader,\n\ttype ISharingLinkHeader,\n\ttype OdspFluidDataStoreLocator,\n\tSharingLinkHeader,\n} from \"./contractsPublic.js\";\n\n// public utils\nexport { checkUrl } from \"./checkUrl.js\";\nexport { createOdspUrl } from \"./createOdspUrl.js\";\nexport { getHashedDocumentId, type ISnapshotContents } from \"./odspPublicUtils.js\";\nexport { getApiRoot, getOdspUrlParts, isOdcUrl, isSpoUrl } from \"./odspUrlHelper.js\";\nexport { getHeadersWithAuth } from \"./getUrlAndHeadersWithAuth.js\";\n\n// prefetch latest snapshot before container load\nexport { prefetchLatestSnapshot } from \"./prefetchLatestSnapshot.js\";\n\n// Factory\nexport {\n\tcreateLocalOdspDocumentServiceFactory,\n\tOdspDocumentServiceFactory,\n} from \"./odspDocumentServiceFactory.js\";\nexport { OdspDocumentServiceFactoryCore } from \"./odspDocumentServiceFactoryCore.js\";\n/* eslint-disable import-x/no-internal-modules */\nexport {\n\tgetOdspPointInTimeDocumentServiceFactory,\n\ttype IPointInTimeDocumentServiceFactory,\n} from \"./pointInTimeDriver/odspPointInTimeDocumentServiceFactory.js\";\n/* eslint-enable import-x/no-internal-modules */\n\n// File creation\nexport { createOdspCreateContainerRequest } from \"./createOdspCreateContainerRequest.js\";\n\n// URI Resolver functionality, URI management\nexport { OdspDriverUrlResolver } from \"./odspDriverUrlResolver.js\";\nexport {\n\tOdspDriverUrlResolverForShareLink,\n\ttype ShareLinkFetcherProps,\n} from \"./odspDriverUrlResolverForShareLink.js\";\n\n// It's used by URL resolve code, but also has some public functions\nexport {\n\tencodeOdspFluidDataStoreLocator,\n\tgetLocatorFromOdspUrl,\n\tlocatorQueryParamName,\n\tstoreLocatorInOdspUrl,\n} from \"./odspFluidFileLink.js\";\n\nexport type {\n\tIOdspCache,\n\tIPersistedFileCache,\n\tINonPersistentCache,\n\tIPrefetchSnapshotContents,\n} from \"./odspCache.js\";\nexport type {\n\tICacheAndTracker,\n\tEpochTracker,\n\tFetchType,\n\tFetchTypeInternal,\n} from \"./epochTracker.js\";\nexport { type IOdspResponse, isOdspResolvedUrl } from \"./odspUtils.js\";\nexport { SnapshotFormatSupportType } from \"./fetchSnapshot.js\";\nexport {\n\ttype ISnapshotContentsWithProps,\n\tparseCompactSnapshotResponse,\n} from \"./compactSnapshotParser.js\";\n\n// Layer Compat details\nexport { odspDriverCompatDetailsForLoader } from \"./odspLayerCompatState.js\";\n"]}
package/dist/legacy.d.ts CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  /*
7
7
  * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
8
- * Generated by "flub generate entrypoints --resolutionConditions require --outFileLegacyBeta legacy --outDir ./dist" in @fluid-tools/build-cli.
8
+ * Generated by "flub generate entrypoints --resolutionConditions require --outFileLegacyBeta legacy --outFileLegacyAlpha legacyAlpha --outDir ./dist" in @fluid-tools/build-cli.
9
9
  */
10
10
 
11
11
  export {
@@ -0,0 +1,49 @@
1
+ /*!
2
+ * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+
6
+ /*
7
+ * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
8
+ * Generated by "flub generate entrypoints --resolutionConditions require --outFileLegacyBeta legacy --outFileLegacyAlpha legacyAlpha --outDir ./dist" in @fluid-tools/build-cli.
9
+ */
10
+
11
+ export {
12
+ // #region @legacyBeta APIs
13
+ EpochTracker,
14
+ FetchType,
15
+ FetchTypeInternal,
16
+ ICacheAndTracker,
17
+ INonPersistentCache,
18
+ IOdspCache,
19
+ IOdspResponse,
20
+ IPersistedFileCache,
21
+ IPrefetchSnapshotContents,
22
+ ISnapshotContents,
23
+ OdcApiSiteOrigin,
24
+ OdcFileSiteOrigin,
25
+ OdspDocumentServiceFactory,
26
+ OdspDocumentServiceFactoryCore,
27
+ OdspDriverUrlResolver,
28
+ OdspDriverUrlResolverForShareLink,
29
+ OdspFluidDataStoreLocator,
30
+ ShareLinkFetcherProps,
31
+ SnapshotFormatSupportType,
32
+ checkUrl,
33
+ createLocalOdspDocumentServiceFactory,
34
+ createOdspCreateContainerRequest,
35
+ createOdspUrl,
36
+ encodeOdspFluidDataStoreLocator,
37
+ getHashedDocumentId,
38
+ getLocatorFromOdspUrl,
39
+ isOdspResolvedUrl,
40
+ locatorQueryParamName,
41
+ prefetchLatestSnapshot,
42
+ storeLocatorInOdspUrl,
43
+ // #endregion
44
+
45
+ // #region @legacyAlpha APIs
46
+ IPointInTimeDocumentServiceFactory,
47
+ getOdspPointInTimeDocumentServiceFactory
48
+ // #endregion
49
+ } from "./index.js";
@@ -5,7 +5,46 @@
5
5
  import type { IOdspUrlParts, InstrumentedStorageTokenFetcher } from "@fluidframework/odsp-driver-definitions/internal";
6
6
  import type { TelemetryLoggerExt } from "@fluidframework/telemetry-utils/internal";
7
7
  import type { EpochTracker } from "../epochTracker.js";
8
- import type { IOdspFileVersionFetcher } from "./odspVersionManager.js";
8
+ /**
9
+ * A single ODSP file version, as listed by the file's version history.
10
+ */
11
+ export interface OdspFileVersionRef {
12
+ /**
13
+ * The version's label (e.g. `"42.0"`), used to address the version when fetching it.
14
+ */
15
+ readonly versionId: string;
16
+ /**
17
+ * Last-modified timestamp of this version, ISO-8601.
18
+ */
19
+ readonly lastModifiedDateTime: string;
20
+ }
21
+ /**
22
+ * Provides a file's versions and resolves each version's Fluid sequence number. Injected into
23
+ * the version manager so the selection logic does not depend on how versions are fetched.
24
+ */
25
+ export interface IOdspFileVersionFetcher {
26
+ /**
27
+ * Enumerate the file's versions, newest-first.
28
+ */
29
+ listFileVersions(): Promise<OdspFileVersionRef[]>;
30
+ /**
31
+ * Resolve a single version's Fluid sequence number. Throws on failure rather than returning a
32
+ * wrong value.
33
+ */
34
+ resolveSequenceNumber(versionId: string): Promise<number>;
35
+ /**
36
+ * Read the live document's current ODSP epoch (`x-fluid-epoch`), or `undefined`. Epoch identifies
37
+ * the file's binary lineage and changes on a version restore or download-then-reupload; compared
38
+ * with {@link IOdspFileVersionFetcher.getRecoverableVersionEpoch} to confirm a base is on the live
39
+ * document's lineage.
40
+ */
41
+ getLiveDocumentEpoch(): Promise<string | undefined>;
42
+ /**
43
+ * Read the ODSP epoch of a specific file version, or `undefined`. See
44
+ * {@link IOdspFileVersionFetcher.getLiveDocumentEpoch}.
45
+ */
46
+ getRecoverableVersionEpoch(versionId: string): Promise<string | undefined>;
47
+ }
9
48
  /**
10
49
  * Inputs needed to make authenticated requests against a specific ODSP file.
11
50
  */
@@ -1 +1 @@
1
- {"version":3,"file":"odspFileVersionFetcher.d.ts","sourceRoot":"","sources":["../../src/odspVersionManager/odspFileVersionFetcher.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,OAAO,KAAK,EACX,aAAa,EACb,+BAA+B,EAC/B,MAAM,kDAAkD,CAAC;AAC1D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AAInF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAMvD,OAAO,KAAK,EAAsB,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAmB3F;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC3C,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,QAAQ,CAAC,aAAa,EAAE,+BAA+B,CAAC;IACxD,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;CACpC;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAC3C,KAAK,EAAE,2BAA2B,GAChC,uBAAuB,CA6EzB"}
1
+ {"version":3,"file":"odspFileVersionFetcher.d.ts","sourceRoot":"","sources":["../../src/odspVersionManager/odspFileVersionFetcher.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAaH,OAAO,KAAK,EACX,aAAa,EACb,+BAA+B,EAC/B,MAAM,kDAAkD,CAAC;AAC1D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AAInF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAOvD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAClC;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;;OAEG;IACH,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;CACtC;AAED;;;GAGG;AACH,MAAM,WAAW,uBAAuB;IACvC;;OAEG;IACH,gBAAgB,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAClD;;;OAGG;IACH,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1D;;;;;OAKG;IACH,oBAAoB,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACpD;;;OAGG;IACH,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;CAC3E;AAmBD;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC3C,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,QAAQ,CAAC,aAAa,EAAE,+BAA+B,CAAC;IACxD,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;CACpC;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAC3C,KAAK,EAAE,2BAA2B,GAChC,uBAAuB,CA+HzB"}
@@ -5,11 +5,22 @@
5
5
  */
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
7
  exports.createOdspFileVersionFetcher = void 0;
8
+ /*
9
+ * An {@link IOdspFileVersionFetcher} backed by the ODSP REST APIs:
10
+ * - GET /_api/v2.1/.../versions -- enumerate the file's versions.
11
+ * - GET /_api/v2.1/.../versions/{label}/opStream/snapshots/trees/latest?blobs=2 -- fetch a version's
12
+ * snapshot and read its sequence number, parsed with the driver's snapshot parser.
13
+ * - GET /_api/v2.1/.../[versions/{label}/]opStream/snapshots/trees/latest?blobs=0 -- read a version's
14
+ * or the live document's ODSP epoch (`x-fluid-epoch`) to compare their lineage.
15
+ */
16
+ const internal_1 = require("@fluidframework/driver-utils/internal");
17
+ const internal_2 = require("@fluidframework/odsp-driver-definitions/internal");
8
18
  const compactSnapshotParser_js_1 = require("../compactSnapshotParser.js");
9
19
  const getUrlAndHeadersWithAuth_js_1 = require("../getUrlAndHeadersWithAuth.js");
10
20
  const odspSnapshotParser_js_1 = require("../odspSnapshotParser.js");
11
21
  const odspUrlHelper_js_1 = require("../odspUrlHelper.js");
12
22
  const odspUtils_js_1 = require("../odspUtils.js");
23
+ const packageVersion_js_1 = require("../packageVersion.js");
13
24
  /**
14
25
  * Create an {@link IOdspFileVersionFetcher} that talks to a specific ODSP file.
15
26
  */
@@ -41,18 +52,14 @@ function createOdspFileVersionFetcher(props) {
41
52
  return versions;
42
53
  });
43
54
  const resolveSequenceNumber = async (versionId) => (0, odspUtils_js_1.getWithRetryForTokenRefresh)(async (options) => {
44
- // A file version's sequence number lives inside that version's snapshot, so fetch the snapshot
45
- // from the version-scoped endpoint. `blobs=2` inlines blob contents so the `.protocol/attributes`
46
- // blob (which carries the sequence number) is included; `deltas=1` is intentionally omitted, as
47
- // it would bundle the op stream and its op-level sequence numbers.
55
+ // The sequence number lives in the version snapshot's `.protocol/attributes` blob, so fetch the
56
+ // version-scoped snapshot with `blobs=2` to inline it. No op stream needed.
48
57
  const url = `${(0, odspUrlHelper_js_1.getApiRoot)(new URL(siteUrl))}/drives/${driveId}/items/${itemId}/versions/${encodeURIComponent(versionId)}/opStream/snapshots/trees/latest?blobs=2`;
49
58
  const method = "GET";
50
59
  const token = await getAuthHeader({ ...options, request: { url, method } }, "FileVersionSnapshot");
51
60
  const headers = (0, getUrlAndHeadersWithAuth_js_1.getHeadersWithAuth)(token);
52
- // The server can return the snapshot in one of two equivalent framings: verbose JSON, or
53
- // "ms-fluid" ODSP's compact binary encoding of the same snapshot. Advertise both, and pin the
54
- // binary format version (as the driver's own snapshot fetch does) so the server cannot hand back
55
- // a binary version this code's parser does not understand.
61
+ // The snapshot comes back as JSON or "ms-fluid" (ODSP's compact binary form). Accept both and
62
+ // pin the binary version (as the driver's snapshot fetch does) so the parser can read it.
56
63
  headers.accept = `application/json, application/ms-fluid; v=${compactSnapshotParser_js_1.currentReadVersion}`;
57
64
  const response = await epochTracker.fetch(url, { method, headers }, "treesLatest");
58
65
  const contentType = response.headers.get("content-type") ?? "";
@@ -63,19 +70,50 @@ function createOdspFileVersionFetcher(props) {
63
70
  sequenceNumber =
64
71
  (0, odspSnapshotParser_js_1.convertOdspSnapshotToSnapshotTreeAndBlobs)(snapshotJson).sequenceNumber;
65
72
  }
66
- else {
73
+ else if (contentType.includes("application/ms-fluid")) {
67
74
  // ms-fluid framing: the compact binary form; read it with the driver's compact-snapshot parser.
68
75
  const bytes = new Uint8Array(await response.content.arrayBuffer());
69
76
  sequenceNumber = (0, compactSnapshotParser_js_1.parseCompactSnapshotResponse)(bytes, logger).sequenceNumber;
70
77
  }
71
- // A version's snapshot must carry a sequence number; a missing one is surfaced as an error
72
- // naming the version, rather than returning a wrong value.
73
- if (sequenceNumber === undefined) {
74
- throw new Error(`ODSP file version ${versionId} snapshot is missing a sequenceNumber`);
78
+ else {
79
+ // Neither framing (e.g. an HTML error page). Throw the driver's typed bad-response error
80
+ // (like fetchSnapshot.ts): canRetry=false stops the loader re-driving, while the
81
+ // incorrectServerResponse errorType still earns one wire-retry from getWithRetryForTokenRefresh.
82
+ throw new internal_1.NonRetryableError(`ODSP file version ${versionId} snapshot returned an unexpected content-type`, internal_2.OdspErrorTypes.incorrectServerResponse, { driverVersion: packageVersion_js_1.pkgVersion, contentType, accept: headers.accept });
83
+ }
84
+ // The sequence number must be a non-negative integer; a missing or malformed one throws the same
85
+ // typed error as above rather than feeding a wrong value into base selection.
86
+ if (!(typeof sequenceNumber === "number" &&
87
+ Number.isInteger(sequenceNumber) &&
88
+ sequenceNumber >= 0)) {
89
+ throw new internal_1.NonRetryableError(`ODSP file version ${versionId} snapshot has a missing or invalid sequenceNumber (${String(sequenceNumber)})`, internal_2.OdspErrorTypes.incorrectServerResponse, { driverVersion: packageVersion_js_1.pkgVersion, contentType, accept: headers.accept });
75
90
  }
76
91
  return sequenceNumber;
77
92
  });
78
- return { listFileVersions, resolveSequenceNumber };
93
+ const itemRoot = `${(0, odspUrlHelper_js_1.getApiRoot)(new URL(siteUrl))}/drives/${driveId}/items/${itemId}`;
94
+ // Reads the `x-fluid-epoch` header from `url`. Deliberately uses the raw fetch helper instead of
95
+ // `epochTracker.fetch`: the whole point is to COMPARE the base version's epoch against the live
96
+ // document's epoch, but the shared EpochTracker pins to the first epoch it sees and throws on the
97
+ // second (divergent) read - so it could never yield two epochs to compare. `fetchArray` also lets
98
+ // the body (JSON or ms-fluid binary) be consumed and discarded; only the header is needed.
99
+ const readEpoch = async (url, scenarioName) => (0, odspUtils_js_1.getWithRetryForTokenRefresh)(async (options) => {
100
+ const method = "GET";
101
+ const token = await getAuthHeader({ ...options, request: { url, method } }, scenarioName);
102
+ const headers = (0, getUrlAndHeadersWithAuth_js_1.getHeadersWithAuth)(token);
103
+ const response = await (0, odspUtils_js_1.fetchArray)(url, { method, headers });
104
+ return response.headers.get("x-fluid-epoch") ?? undefined;
105
+ });
106
+ const getLiveDocumentEpoch = async () =>
107
+ // The (unversioned) live snapshot endpoint is a current-file read, so its epoch is the live
108
+ // document's epoch. `blobs=0` keeps the response to the tree metadata.
109
+ readEpoch(`${itemRoot}/opStream/snapshots/trees/latest?blobs=0`, "LiveEpoch");
110
+ const getRecoverableVersionEpoch = async (versionId) => readEpoch(`${itemRoot}/versions/${encodeURIComponent(versionId)}/opStream/snapshots/trees/latest?blobs=0`, "FileVersionEpoch");
111
+ return {
112
+ listFileVersions,
113
+ resolveSequenceNumber,
114
+ getLiveDocumentEpoch,
115
+ getRecoverableVersionEpoch,
116
+ };
79
117
  }
80
118
  exports.createOdspFileVersionFetcher = createOdspFileVersionFetcher;
81
119
  //# sourceMappingURL=odspFileVersionFetcher.js.map