@fluidframework/routerlicious-driver 2.74.0 → 2.81.0-374083

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 (80) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/dist/documentDeltaConnection.d.ts.map +1 -1
  3. package/dist/documentDeltaConnection.js +2 -1
  4. package/dist/documentDeltaConnection.js.map +1 -1
  5. package/dist/errorUtils.d.ts +1 -0
  6. package/dist/errorUtils.d.ts.map +1 -1
  7. package/dist/historian.js.map +1 -1
  8. package/dist/packageVersion.d.ts +1 -1
  9. package/dist/packageVersion.d.ts.map +1 -1
  10. package/dist/packageVersion.js +1 -1
  11. package/dist/packageVersion.js.map +1 -1
  12. package/dist/r11sLayerCompatState.d.ts.map +1 -1
  13. package/dist/r11sLayerCompatState.js +2 -1
  14. package/dist/r11sLayerCompatState.js.map +1 -1
  15. package/{lib/axios.cjs → dist/request.cjs} +1 -1
  16. package/dist/request.cjs.map +1 -0
  17. package/dist/request.d.cts +30 -0
  18. package/dist/request.d.cts.map +1 -0
  19. package/dist/restWrapper.d.ts +2 -2
  20. package/dist/restWrapper.d.ts.map +1 -1
  21. package/dist/restWrapper.js +9 -5
  22. package/dist/restWrapper.js.map +1 -1
  23. package/dist/restWrapperBase.d.ts +7 -7
  24. package/dist/restWrapperBase.d.ts.map +1 -1
  25. package/dist/restWrapperBase.js.map +1 -1
  26. package/dist/shreddedSummaryDocumentStorageService.d.ts.map +1 -1
  27. package/dist/shreddedSummaryDocumentStorageService.js +1 -0
  28. package/dist/shreddedSummaryDocumentStorageService.js.map +1 -1
  29. package/dist/wholeSummaryDocumentStorageService.d.ts.map +1 -1
  30. package/dist/wholeSummaryDocumentStorageService.js +1 -0
  31. package/dist/wholeSummaryDocumentStorageService.js.map +1 -1
  32. package/eslint.config.mts +4 -4
  33. package/lib/documentDeltaConnection.d.ts.map +1 -1
  34. package/lib/documentDeltaConnection.js +2 -1
  35. package/lib/documentDeltaConnection.js.map +1 -1
  36. package/lib/errorUtils.d.ts +1 -0
  37. package/lib/errorUtils.d.ts.map +1 -1
  38. package/lib/historian.js.map +1 -1
  39. package/lib/packageVersion.d.ts +1 -1
  40. package/lib/packageVersion.d.ts.map +1 -1
  41. package/lib/packageVersion.js +1 -1
  42. package/lib/packageVersion.js.map +1 -1
  43. package/lib/r11sLayerCompatState.d.ts.map +1 -1
  44. package/lib/r11sLayerCompatState.js +2 -1
  45. package/lib/r11sLayerCompatState.js.map +1 -1
  46. package/{dist/axios.cjs → lib/request.cjs} +1 -1
  47. package/lib/request.cjs.map +1 -0
  48. package/lib/request.d.cts +30 -0
  49. package/lib/request.d.cts.map +1 -0
  50. package/lib/restWrapper.d.ts +2 -2
  51. package/lib/restWrapper.d.ts.map +1 -1
  52. package/lib/restWrapper.js +9 -5
  53. package/lib/restWrapper.js.map +1 -1
  54. package/lib/restWrapperBase.d.ts +7 -7
  55. package/lib/restWrapperBase.d.ts.map +1 -1
  56. package/lib/restWrapperBase.js.map +1 -1
  57. package/lib/shreddedSummaryDocumentStorageService.d.ts.map +1 -1
  58. package/lib/shreddedSummaryDocumentStorageService.js +1 -0
  59. package/lib/shreddedSummaryDocumentStorageService.js.map +1 -1
  60. package/lib/wholeSummaryDocumentStorageService.d.ts.map +1 -1
  61. package/lib/wholeSummaryDocumentStorageService.js +1 -0
  62. package/lib/wholeSummaryDocumentStorageService.js.map +1 -1
  63. package/package.json +21 -22
  64. package/src/documentDeltaConnection.ts +1 -0
  65. package/src/historian.ts +1 -1
  66. package/src/packageVersion.ts +1 -1
  67. package/src/r11sLayerCompatState.ts +2 -2
  68. package/src/request.cts +32 -0
  69. package/src/restWrapper.ts +16 -12
  70. package/src/restWrapperBase.ts +15 -15
  71. package/src/shreddedSummaryDocumentStorageService.ts +1 -0
  72. package/src/wholeSummaryDocumentStorageService.ts +1 -0
  73. package/.eslintrc.cjs +0 -23
  74. package/dist/axios.cjs.map +0 -1
  75. package/dist/axios.d.cts +0 -7
  76. package/dist/axios.d.cts.map +0 -1
  77. package/lib/axios.cjs.map +0 -1
  78. package/lib/axios.d.cts +0 -7
  79. package/lib/axios.d.cts.map +0 -1
  80. package/src/axios.cts +0 -8
@@ -25,7 +25,6 @@ import {
25
25
  import fetch from "cross-fetch";
26
26
  import safeStringify from "json-stringify-safe";
27
27
 
28
- import type { AxiosRequestConfig, RawAxiosRequestHeaders } from "./axios.cjs";
29
28
  import {
30
29
  getUrlForTelemetry,
31
30
  RouterliciousErrorTypes,
@@ -33,21 +32,22 @@ import {
33
32
  } from "./errorUtils.js";
34
33
  import { pkgVersion as driverVersion } from "./packageVersion.js";
35
34
  import { addOrUpdateQueryParams, type QueryStringType } from "./queryStringUtils.js";
35
+ import type { RequestConfig, RawRequestHeaders } from "./request.cjs";
36
36
  import { RestWrapper } from "./restWrapperBase.js";
37
37
  import { ITokenProvider, ITokenResponse } from "./tokens.js";
38
38
 
39
39
  type AuthorizationHeaderGetter = (token: ITokenResponse) => string;
40
40
  export type TokenFetcher = (refresh?: boolean) => Promise<ITokenResponse>;
41
41
 
42
- const buildRequestUrl = (requestConfig: AxiosRequestConfig): string =>
42
+ const buildRequestUrl = (requestConfig: RequestConfig): string =>
43
43
  requestConfig.baseURL !== undefined
44
44
  ? `${requestConfig.baseURL ?? ""}${requestConfig.url ?? ""}`
45
45
  : (requestConfig.url ?? "");
46
46
 
47
- const axiosBuildRequestInitConfig = (requestConfig: AxiosRequestConfig): RequestInit => {
47
+ const buildRequestInitConfig = (requestConfig: RequestConfig): RequestInit => {
48
48
  const requestInit: RequestInit = {
49
49
  method: requestConfig.method,
50
- // NOTE: I believe that although the Axios type permits non-string values in the header, here we are
50
+ // NOTE: Although the RequestHeaders type permits non-string values in the header, here we are
51
51
  // guaranteed the requestConfig only has string values in its header.
52
52
  headers: requestConfig.headers as Record<string, string>,
53
53
  body: requestConfig.data,
@@ -139,7 +139,7 @@ class RouterliciousRestWrapper extends RestWrapper {
139
139
  }
140
140
 
141
141
  protected async request<T>(
142
- requestConfig: AxiosRequestConfig,
142
+ requestConfig: RequestConfig,
143
143
  statusCode: number,
144
144
  canRetry = true,
145
145
  ): Promise<IR11sResponse<T>> {
@@ -151,7 +151,7 @@ class RouterliciousRestWrapper extends RestWrapper {
151
151
  // Build the complete request url including baseUrl, url and query params. (all except 'retry' query param)
152
152
  let completeRequestUrl = addOrUpdateQueryParams(
153
153
  buildRequestUrl(requestConfig),
154
- requestConfig.params,
154
+ requestConfig.params ?? {},
155
155
  );
156
156
 
157
157
  // Check whether this request has been made before or if it is a retry.
@@ -164,13 +164,17 @@ class RouterliciousRestWrapper extends RestWrapper {
164
164
  });
165
165
  }
166
166
 
167
- const config = {
167
+ const config: RequestConfig = {
168
168
  ...requestConfig,
169
169
  headers: await this.generateHeaders(requestConfig.headers),
170
170
  };
171
171
 
172
- const translatedConfig = this.useRestLess ? this.restLess.translate(config) : config;
173
- const fetchRequestConfig = axiosBuildRequestInitConfig(translatedConfig);
172
+ // RestLessClient.translate() returns AxiosRequestConfig (from server-services-client),
173
+ // which is structurally compatible with our RequestConfig type.
174
+ const translatedConfig: RequestConfig = this.useRestLess
175
+ ? (this.restLess.translate(config) as RequestConfig)
176
+ : config;
177
+ const fetchRequestConfig = buildRequestInitConfig(translatedConfig);
174
178
 
175
179
  const res = await this.rateLimiter.schedule(async () => {
176
180
  const perfStart = performanceNow();
@@ -292,11 +296,11 @@ class RouterliciousRestWrapper extends RestWrapper {
292
296
  }
293
297
 
294
298
  private async generateHeaders(
295
- requestHeaders?: RawAxiosRequestHeaders | undefined,
296
- ): Promise<RawAxiosRequestHeaders> {
299
+ requestHeaders?: RawRequestHeaders | undefined,
300
+ ): Promise<RawRequestHeaders> {
297
301
  const token = await this.getToken();
298
302
  assert(token !== undefined, 0x679 /* token should be present */);
299
- const headers: RawAxiosRequestHeaders = {
303
+ const headers: RawRequestHeaders = {
300
304
  ...requestHeaders,
301
305
  [DriverVersionHeaderName]: driverVersion,
302
306
  // NOTE: If this.authorizationHeader is undefined, should "Authorization" be removed entirely?
@@ -3,8 +3,8 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import type { AxiosRequestConfig, AxiosRequestHeaders } from "./axios.cjs";
7
- import { type QueryStringType } from "./queryStringUtils.js";
6
+ import type { QueryStringType } from "./queryStringUtils.js";
7
+ import type { RequestConfig, RequestHeaders } from "./request.cjs";
8
8
  import { IR11sResponse } from "./restWrapper.js";
9
9
 
10
10
  export abstract class RestWrapper {
@@ -24,15 +24,15 @@ export abstract class RestWrapper {
24
24
  public async get<T>(
25
25
  url: string,
26
26
  queryString?: QueryStringType,
27
- headers?: AxiosRequestHeaders,
27
+ headers?: RequestHeaders,
28
28
  additionalOptions?: Partial<
29
29
  Omit<
30
- AxiosRequestConfig,
30
+ RequestConfig,
31
31
  "baseURL" | "headers" | "maxBodyLength" | "maxContentLength" | "method" | "url"
32
32
  >
33
33
  >,
34
34
  ): Promise<IR11sResponse<T>> {
35
- const options: AxiosRequestConfig = {
35
+ const options: RequestConfig = {
36
36
  ...additionalOptions,
37
37
  baseURL: this.baseurl,
38
38
  headers,
@@ -56,15 +56,15 @@ export abstract class RestWrapper {
56
56
  url: string,
57
57
  requestBody: any,
58
58
  queryString?: QueryStringType,
59
- headers?: AxiosRequestHeaders,
59
+ headers?: RequestHeaders,
60
60
  additionalOptions?: Partial<
61
61
  Omit<
62
- AxiosRequestConfig,
62
+ RequestConfig,
63
63
  "baseURL" | "headers" | "maxBodyLength" | "maxContentLength" | "method" | "url"
64
64
  >
65
65
  >,
66
66
  ): Promise<IR11sResponse<T>> {
67
- const options: AxiosRequestConfig = {
67
+ const options: RequestConfig = {
68
68
  ...additionalOptions,
69
69
  baseURL: this.baseurl,
70
70
  data: requestBody,
@@ -87,15 +87,15 @@ export abstract class RestWrapper {
87
87
  public async delete<T>(
88
88
  url: string,
89
89
  queryString?: QueryStringType,
90
- headers?: AxiosRequestHeaders,
90
+ headers?: RequestHeaders,
91
91
  additionalOptions?: Partial<
92
92
  Omit<
93
- AxiosRequestConfig,
93
+ RequestConfig,
94
94
  "baseURL" | "headers" | "maxBodyLength" | "maxContentLength" | "method" | "url"
95
95
  >
96
96
  >,
97
97
  ): Promise<IR11sResponse<T>> {
98
- const options: AxiosRequestConfig = {
98
+ const options: RequestConfig = {
99
99
  ...additionalOptions,
100
100
  baseURL: this.baseurl,
101
101
  headers,
@@ -119,15 +119,15 @@ export abstract class RestWrapper {
119
119
  url: string,
120
120
  requestBody: any,
121
121
  queryString?: QueryStringType,
122
- headers?: AxiosRequestHeaders,
122
+ headers?: RequestHeaders,
123
123
  additionalOptions?: Partial<
124
124
  Omit<
125
- AxiosRequestConfig,
125
+ RequestConfig,
126
126
  "baseURL" | "headers" | "maxBodyLength" | "maxContentLength" | "method" | "url"
127
127
  >
128
128
  >,
129
129
  ): Promise<IR11sResponse<T>> {
130
- const options: AxiosRequestConfig = {
130
+ const options: RequestConfig = {
131
131
  ...additionalOptions,
132
132
  baseURL: this.baseurl,
133
133
  data: requestBody,
@@ -142,7 +142,7 @@ export abstract class RestWrapper {
142
142
  }
143
143
 
144
144
  protected abstract request<T>(
145
- options: AxiosRequestConfig,
145
+ options: RequestConfig,
146
146
  statusCode: number,
147
147
  addNetworkCallProps?: boolean,
148
148
  ): Promise<IR11sResponse<T>>;
@@ -76,6 +76,7 @@ export class ShreddedSummaryDocumentStorageService implements IDocumentStorageSe
76
76
  }
77
77
 
78
78
  public async getVersions(versionId: string | null, count: number): Promise<IVersion[]> {
79
+ // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing -- using ?? could change behavior for falsy values
79
80
  const id = versionId ? versionId : this.id;
80
81
  const commits = await PerformanceEvent.timedExecAsync(
81
82
  this.logger,
@@ -142,6 +142,7 @@ export class WholeSummaryDocumentStorageService implements IDocumentStorageServi
142
142
  }
143
143
 
144
144
  // Otherwise, get the latest version of the document as normal.
145
+ // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing -- using ?? could change behavior for falsy values
145
146
  const id = versionId ? versionId : this.id;
146
147
  const commits = await PerformanceEvent.timedExecAsync(
147
148
  this.logger,
package/.eslintrc.cjs DELETED
@@ -1,23 +0,0 @@
1
- /*!
2
- * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
- * Licensed under the MIT License.
4
- */
5
-
6
- module.exports = {
7
- extends: [
8
- require.resolve("@fluidframework/eslint-config-fluid/minimal-deprecated"),
9
- "prettier",
10
- ],
11
- parserOptions: {
12
- project: ["./tsconfig.json", "./src/test/tsconfig.json"],
13
- },
14
- rules: {
15
- "@typescript-eslint/no-non-null-assertion": "off",
16
- "@typescript-eslint/strict-boolean-expressions": "off",
17
- "no-case-declarations": "off",
18
- "@fluid-internal/fluid/no-unchecked-record-access": "warn",
19
-
20
- // Disabled because the rule is crashing on this package - AB#51780
21
- "@typescript-eslint/unbound-method": "off",
22
- },
23
- };
@@ -1 +0,0 @@
1
- {"version":3,"file":"axios.cjs","sourceRoot":"","sources":["../src/axios.cts"],"names":[],"mappings":";AAAA;;;GAGG","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport type { AxiosRequestConfig, AxiosRequestHeaders, RawAxiosRequestHeaders } from \"axios\";\n\nexport { AxiosRequestConfig, AxiosRequestHeaders, RawAxiosRequestHeaders };\n"]}
package/dist/axios.d.cts DELETED
@@ -1,7 +0,0 @@
1
- /*!
2
- * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
- * Licensed under the MIT License.
4
- */
5
- import type { AxiosRequestConfig, AxiosRequestHeaders, RawAxiosRequestHeaders } from "axios";
6
- export { AxiosRequestConfig, AxiosRequestHeaders, RawAxiosRequestHeaders };
7
- //# sourceMappingURL=axios.d.cts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"axios.d.cts","sourceRoot":"","sources":["../src/axios.cts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,OAAO,CAAC;AAE7F,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,CAAC"}
package/lib/axios.cjs.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"axios.cjs","sourceRoot":"","sources":["../src/axios.cts"],"names":[],"mappings":";AAAA;;;GAGG","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport type { AxiosRequestConfig, AxiosRequestHeaders, RawAxiosRequestHeaders } from \"axios\";\n\nexport { AxiosRequestConfig, AxiosRequestHeaders, RawAxiosRequestHeaders };\n"]}
package/lib/axios.d.cts DELETED
@@ -1,7 +0,0 @@
1
- /*!
2
- * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
- * Licensed under the MIT License.
4
- */
5
- import type { AxiosRequestConfig, AxiosRequestHeaders, RawAxiosRequestHeaders } from "axios";
6
- export { AxiosRequestConfig, AxiosRequestHeaders, RawAxiosRequestHeaders };
7
- //# sourceMappingURL=axios.d.cts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"axios.d.cts","sourceRoot":"","sources":["../src/axios.cts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,OAAO,CAAC;AAE7F,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,CAAC"}
package/src/axios.cts DELETED
@@ -1,8 +0,0 @@
1
- /*!
2
- * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
- * Licensed under the MIT License.
4
- */
5
-
6
- import type { AxiosRequestConfig, AxiosRequestHeaders, RawAxiosRequestHeaders } from "axios";
7
-
8
- export { AxiosRequestConfig, AxiosRequestHeaders, RawAxiosRequestHeaders };