@fluidframework/routerlicious-driver 2.0.0-dev-rc.5.0.0.265721 → 2.0.0-dev-rc.5.0.0.268409

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 (148) hide show
  1. package/api-report/routerlicious-driver.alpha.api.md +36 -0
  2. package/api-report/routerlicious-driver.beta.api.md +30 -0
  3. package/api-report/routerlicious-driver.public.api.md +30 -0
  4. package/dist/contracts.d.ts +1 -1
  5. package/dist/contracts.d.ts.map +1 -1
  6. package/dist/contracts.js.map +1 -1
  7. package/dist/createNewUtils.d.ts +1 -1
  8. package/dist/createNewUtils.d.ts.map +1 -1
  9. package/dist/createNewUtils.js +4 -4
  10. package/dist/createNewUtils.js.map +1 -1
  11. package/dist/definitions.d.ts +1 -1
  12. package/dist/definitions.d.ts.map +1 -1
  13. package/dist/definitions.js.map +1 -1
  14. package/dist/deltaStorageService.d.ts +1 -1
  15. package/dist/deltaStorageService.d.ts.map +1 -1
  16. package/dist/deltaStorageService.js.map +1 -1
  17. package/dist/documentDeltaConnection.d.ts +1 -1
  18. package/dist/documentDeltaConnection.d.ts.map +1 -1
  19. package/dist/documentDeltaConnection.js.map +1 -1
  20. package/dist/documentService.d.ts +8 -8
  21. package/dist/documentService.d.ts.map +1 -1
  22. package/dist/documentService.js.map +1 -1
  23. package/dist/documentServiceFactory.d.ts +1 -1
  24. package/dist/documentServiceFactory.d.ts.map +1 -1
  25. package/dist/documentServiceFactory.js.map +1 -1
  26. package/dist/documentStorageService.d.ts +1 -2
  27. package/dist/documentStorageService.d.ts.map +1 -1
  28. package/dist/documentStorageService.js.map +1 -1
  29. package/dist/gitManager.d.ts +6 -6
  30. package/dist/gitManager.d.ts.map +1 -1
  31. package/dist/gitManager.js.map +1 -1
  32. package/dist/historian.d.ts +6 -6
  33. package/dist/historian.d.ts.map +1 -1
  34. package/dist/historian.js.map +1 -1
  35. package/dist/nullBlobStorageService.d.ts +7 -7
  36. package/dist/nullBlobStorageService.d.ts.map +1 -1
  37. package/dist/nullBlobStorageService.js.map +1 -1
  38. package/dist/packageVersion.d.ts +1 -1
  39. package/dist/packageVersion.js +1 -1
  40. package/dist/packageVersion.js.map +1 -1
  41. package/dist/r11sSnapshotParser.js.map +1 -1
  42. package/dist/retriableGitManager.d.ts +6 -6
  43. package/dist/retriableGitManager.d.ts.map +1 -1
  44. package/dist/retriableGitManager.js.map +1 -1
  45. package/dist/shreddedSummaryDocumentStorageService.d.ts +2 -2
  46. package/dist/shreddedSummaryDocumentStorageService.d.ts.map +1 -1
  47. package/dist/shreddedSummaryDocumentStorageService.js.map +1 -1
  48. package/dist/storageContracts.d.ts +13 -13
  49. package/dist/storageContracts.d.ts.map +1 -1
  50. package/dist/storageContracts.js.map +1 -1
  51. package/dist/summaryTreeUploadManager.d.ts +2 -1
  52. package/dist/summaryTreeUploadManager.d.ts.map +1 -1
  53. package/dist/summaryTreeUploadManager.js +7 -7
  54. package/dist/summaryTreeUploadManager.js.map +1 -1
  55. package/dist/tokens.d.ts +1 -1
  56. package/dist/tokens.d.ts.map +1 -1
  57. package/dist/tokens.js.map +1 -1
  58. package/dist/treeUtils.d.ts +2 -1
  59. package/dist/treeUtils.d.ts.map +1 -1
  60. package/dist/treeUtils.js +5 -5
  61. package/dist/treeUtils.js.map +1 -1
  62. package/dist/wholeSummaryDocumentStorageService.d.ts +2 -2
  63. package/dist/wholeSummaryDocumentStorageService.d.ts.map +1 -1
  64. package/dist/wholeSummaryDocumentStorageService.js.map +1 -1
  65. package/lib/contracts.d.ts +1 -1
  66. package/lib/contracts.d.ts.map +1 -1
  67. package/lib/contracts.js.map +1 -1
  68. package/lib/createNewUtils.d.ts +1 -1
  69. package/lib/createNewUtils.d.ts.map +1 -1
  70. package/lib/createNewUtils.js +1 -1
  71. package/lib/createNewUtils.js.map +1 -1
  72. package/lib/definitions.d.ts +1 -1
  73. package/lib/definitions.d.ts.map +1 -1
  74. package/lib/definitions.js.map +1 -1
  75. package/lib/deltaStorageService.d.ts +1 -1
  76. package/lib/deltaStorageService.d.ts.map +1 -1
  77. package/lib/deltaStorageService.js.map +1 -1
  78. package/lib/documentDeltaConnection.d.ts +1 -1
  79. package/lib/documentDeltaConnection.d.ts.map +1 -1
  80. package/lib/documentDeltaConnection.js.map +1 -1
  81. package/lib/documentService.d.ts +8 -8
  82. package/lib/documentService.d.ts.map +1 -1
  83. package/lib/documentService.js.map +1 -1
  84. package/lib/documentServiceFactory.d.ts +1 -1
  85. package/lib/documentServiceFactory.d.ts.map +1 -1
  86. package/lib/documentServiceFactory.js.map +1 -1
  87. package/lib/documentStorageService.d.ts +1 -2
  88. package/lib/documentStorageService.d.ts.map +1 -1
  89. package/lib/documentStorageService.js.map +1 -1
  90. package/lib/gitManager.d.ts +6 -6
  91. package/lib/gitManager.d.ts.map +1 -1
  92. package/lib/gitManager.js.map +1 -1
  93. package/lib/historian.d.ts +6 -6
  94. package/lib/historian.d.ts.map +1 -1
  95. package/lib/historian.js.map +1 -1
  96. package/lib/nullBlobStorageService.d.ts +7 -7
  97. package/lib/nullBlobStorageService.d.ts.map +1 -1
  98. package/lib/nullBlobStorageService.js.map +1 -1
  99. package/lib/packageVersion.d.ts +1 -1
  100. package/lib/packageVersion.js +1 -1
  101. package/lib/packageVersion.js.map +1 -1
  102. package/lib/r11sSnapshotParser.js.map +1 -1
  103. package/lib/retriableGitManager.d.ts +6 -6
  104. package/lib/retriableGitManager.d.ts.map +1 -1
  105. package/lib/retriableGitManager.js.map +1 -1
  106. package/lib/shreddedSummaryDocumentStorageService.d.ts +2 -2
  107. package/lib/shreddedSummaryDocumentStorageService.d.ts.map +1 -1
  108. package/lib/shreddedSummaryDocumentStorageService.js.map +1 -1
  109. package/lib/storageContracts.d.ts +13 -13
  110. package/lib/storageContracts.d.ts.map +1 -1
  111. package/lib/storageContracts.js.map +1 -1
  112. package/lib/summaryTreeUploadManager.d.ts +2 -1
  113. package/lib/summaryTreeUploadManager.d.ts.map +1 -1
  114. package/lib/summaryTreeUploadManager.js +1 -1
  115. package/lib/summaryTreeUploadManager.js.map +1 -1
  116. package/lib/tokens.d.ts +1 -1
  117. package/lib/tokens.d.ts.map +1 -1
  118. package/lib/tokens.js.map +1 -1
  119. package/lib/treeUtils.d.ts +2 -1
  120. package/lib/treeUtils.d.ts.map +1 -1
  121. package/lib/treeUtils.js +1 -1
  122. package/lib/treeUtils.js.map +1 -1
  123. package/lib/tsdoc-metadata.json +1 -1
  124. package/lib/wholeSummaryDocumentStorageService.d.ts +2 -2
  125. package/lib/wholeSummaryDocumentStorageService.d.ts.map +1 -1
  126. package/lib/wholeSummaryDocumentStorageService.js.map +1 -1
  127. package/package.json +13 -15
  128. package/src/contracts.ts +1 -1
  129. package/src/createNewUtils.ts +1 -1
  130. package/src/definitions.ts +1 -1
  131. package/src/deltaStorageService.ts +1 -1
  132. package/src/documentDeltaConnection.ts +2 -1
  133. package/src/documentService.ts +18 -10
  134. package/src/documentServiceFactory.ts +1 -1
  135. package/src/documentStorageService.ts +2 -1
  136. package/src/gitManager.ts +14 -9
  137. package/src/historian.ts +20 -13
  138. package/src/nullBlobStorageService.ts +9 -6
  139. package/src/packageVersion.ts +1 -1
  140. package/src/r11sSnapshotParser.ts +1 -1
  141. package/src/retriableGitManager.ts +12 -6
  142. package/src/shreddedSummaryDocumentStorageService.ts +4 -7
  143. package/src/storageContracts.ts +20 -13
  144. package/src/summaryTreeUploadManager.ts +4 -8
  145. package/src/tokens.ts +1 -1
  146. package/src/treeUtils.ts +2 -6
  147. package/src/wholeSummaryDocumentStorageService.ts +2 -5
  148. package/api-report/routerlicious-driver.api.md +0 -105
@@ -0,0 +1,36 @@
1
+ ## Alpha API Report File for "@fluidframework/routerlicious-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
+ import { IDocumentService } from '@fluidframework/driver-definitions/internal';
8
+ import { IDocumentServiceFactory } from '@fluidframework/driver-definitions/internal';
9
+ import { IResolvedUrl } from '@fluidframework/driver-definitions/internal';
10
+ import { ISession } from '@fluidframework/server-services-client';
11
+ import { ISummaryTree } from '@fluidframework/driver-definitions';
12
+ import { ITelemetryBaseLogger } from '@fluidframework/core-interfaces';
13
+ import { ITokenClaims } from '@fluidframework/driver-definitions/internal';
14
+
15
+ // @alpha
16
+ export interface IRouterliciousResolvedUrl extends IResolvedUrl {
17
+ createAsEphemeral?: boolean;
18
+ routerliciousResolvedUrl: true;
19
+ }
20
+
21
+ // @public
22
+ export interface ITokenProvider {
23
+ documentPostCreateCallback?(documentId: string, creationToken: string): Promise<void>;
24
+ fetchOrdererToken(tenantId: string, documentId?: string, refresh?: boolean): Promise<ITokenResponse>;
25
+ fetchStorageToken(tenantId: string, documentId: string, refresh?: boolean): Promise<ITokenResponse>;
26
+ }
27
+
28
+ // @public (undocumented)
29
+ export interface ITokenResponse {
30
+ fromCache?: boolean;
31
+ jwt: string;
32
+ }
33
+
34
+ // (No @packageDocumentation comment for this package)
35
+
36
+ ```
@@ -0,0 +1,30 @@
1
+ ## Beta API Report File for "@fluidframework/routerlicious-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
+ import { IDocumentService } from '@fluidframework/driver-definitions/internal';
8
+ import { IDocumentServiceFactory } from '@fluidframework/driver-definitions/internal';
9
+ import { IResolvedUrl } from '@fluidframework/driver-definitions/internal';
10
+ import { ISession } from '@fluidframework/server-services-client';
11
+ import { ISummaryTree } from '@fluidframework/driver-definitions';
12
+ import { ITelemetryBaseLogger } from '@fluidframework/core-interfaces';
13
+ import { ITokenClaims } from '@fluidframework/driver-definitions/internal';
14
+
15
+ // @public
16
+ export interface ITokenProvider {
17
+ documentPostCreateCallback?(documentId: string, creationToken: string): Promise<void>;
18
+ fetchOrdererToken(tenantId: string, documentId?: string, refresh?: boolean): Promise<ITokenResponse>;
19
+ fetchStorageToken(tenantId: string, documentId: string, refresh?: boolean): Promise<ITokenResponse>;
20
+ }
21
+
22
+ // @public (undocumented)
23
+ export interface ITokenResponse {
24
+ fromCache?: boolean;
25
+ jwt: string;
26
+ }
27
+
28
+ // (No @packageDocumentation comment for this package)
29
+
30
+ ```
@@ -0,0 +1,30 @@
1
+ ## Public API Report File for "@fluidframework/routerlicious-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
+ import { IDocumentService } from '@fluidframework/driver-definitions/internal';
8
+ import { IDocumentServiceFactory } from '@fluidframework/driver-definitions/internal';
9
+ import { IResolvedUrl } from '@fluidframework/driver-definitions/internal';
10
+ import { ISession } from '@fluidframework/server-services-client';
11
+ import { ISummaryTree } from '@fluidframework/driver-definitions';
12
+ import { ITelemetryBaseLogger } from '@fluidframework/core-interfaces';
13
+ import { ITokenClaims } from '@fluidframework/driver-definitions/internal';
14
+
15
+ // @public
16
+ export interface ITokenProvider {
17
+ documentPostCreateCallback?(documentId: string, creationToken: string): Promise<void>;
18
+ fetchOrdererToken(tenantId: string, documentId?: string, refresh?: boolean): Promise<ITokenResponse>;
19
+ fetchStorageToken(tenantId: string, documentId: string, refresh?: boolean): Promise<ITokenResponse>;
20
+ }
21
+
22
+ // @public (undocumented)
23
+ export interface ITokenResponse {
24
+ fromCache?: boolean;
25
+ jwt: string;
26
+ }
27
+
28
+ // (No @packageDocumentation comment for this package)
29
+
30
+ ```
@@ -2,7 +2,7 @@
2
2
  * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
3
  * Licensed under the MIT License.
4
4
  */
5
- import { ISnapshotTree } from "@fluidframework/protocol-definitions";
5
+ import { ISnapshotTree } from "@fluidframework/driver-definitions/internal";
6
6
  export interface IWholeFlatSnapshotTreeEntryTree {
7
7
  path: string;
8
8
  type: "tree";
@@ -1 +1 @@
1
- {"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../src/contracts.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAQrE,MAAM,WAAW,+BAA+B;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IAEb,YAAY,CAAC,EAAE,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,+BAA+B;IAC/C,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACb;AAED,MAAM,MAAM,2BAA2B,GACpC,+BAA+B,GAC/B,+BAA+B,CAAC;AAEnC,MAAM,WAAW,sBAAsB;IACtC,OAAO,EAAE,2BAA2B,EAAE,CAAC;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,cAAc,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,sBAAsB;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,kBAAkB;IAElC,EAAE,EAAE,MAAM,CAAC;IAEX,KAAK,EAAE,sBAAsB,EAAE,CAAC;IAChC,KAAK,CAAC,EAAE,sBAAsB,EAAE,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACxC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAChC,YAAY,EAAE,aAAa,CAAC;IAC5B,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,EAAE,EAAE,MAAM,CAAC;CACX"}
1
+ {"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../src/contracts.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AAQ5E,MAAM,WAAW,+BAA+B;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IAEb,YAAY,CAAC,EAAE,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,+BAA+B;IAC/C,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACb;AAED,MAAM,MAAM,2BAA2B,GACpC,+BAA+B,GAC/B,+BAA+B,CAAC;AAEnC,MAAM,WAAW,sBAAsB;IACtC,OAAO,EAAE,2BAA2B,EAAE,CAAC;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,cAAc,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,sBAAsB;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,kBAAkB;IAElC,EAAE,EAAE,MAAM,CAAC;IAEX,KAAK,EAAE,sBAAsB,EAAE,CAAC;IAChC,KAAK,CAAC,EAAE,sBAAsB,EAAE,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACxC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAChC,YAAY,EAAE,aAAa,CAAC;IAC5B,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,EAAE,EAAE,MAAM,CAAC;CACX"}
@@ -1 +1 @@
1
- {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../src/contracts.ts"],"names":[],"mappings":";AAAA;;;GAGG","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ISnapshotTree } from \"@fluidframework/protocol-definitions\";\n\n/*\n *\n * Whole Snapshot Download Data Structures\n *\n */\n\nexport interface IWholeFlatSnapshotTreeEntryTree {\n\tpath: string;\n\ttype: \"tree\";\n\t// Indicates that this tree entry is unreferenced. If this is not present, the tree entry is considered referenced.\n\tunreferenced?: true;\n\tgroupId?: string;\n}\n\nexport interface IWholeFlatSnapshotTreeEntryBlob {\n\tid: string;\n\tpath: string;\n\ttype: \"blob\";\n}\n\nexport type IWholeFlatSnapshotTreeEntry =\n\t| IWholeFlatSnapshotTreeEntryTree\n\t| IWholeFlatSnapshotTreeEntryBlob;\n\nexport interface IWholeFlatSnapshotTree {\n\tentries: IWholeFlatSnapshotTreeEntry[];\n\tid: string;\n\tsequenceNumber: number;\n}\n\nexport interface IWholeFlatSnapshotBlob {\n\tcontent: string;\n\tencoding: \"base64\" | \"utf-8\";\n\tid: string;\n\tsize: number;\n}\n\nexport interface IWholeFlatSnapshot {\n\t// The same as the id of the first snapshot tree in the trees array.\n\tid: string;\n\t// Receive an array of snapshot trees for future-proofing, however, always length 1 for now.\n\ttrees: IWholeFlatSnapshotTree[];\n\tblobs?: IWholeFlatSnapshotBlob[];\n}\n\n/**\n * Normalized Whole Summary with decoded blobs and unflattened snapshot tree.\n */\nexport interface INormalizedWholeSnapshot {\n\tblobs: Map<string, ArrayBuffer>;\n\tsnapshotTree: ISnapshotTree;\n\tsequenceNumber: number | undefined;\n\tid: string;\n}\n"]}
1
+ {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../src/contracts.ts"],"names":[],"mappings":";AAAA;;;GAGG","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ISnapshotTree } from \"@fluidframework/driver-definitions/internal\";\n\n/*\n *\n * Whole Snapshot Download Data Structures\n *\n */\n\nexport interface IWholeFlatSnapshotTreeEntryTree {\n\tpath: string;\n\ttype: \"tree\";\n\t// Indicates that this tree entry is unreferenced. If this is not present, the tree entry is considered referenced.\n\tunreferenced?: true;\n\tgroupId?: string;\n}\n\nexport interface IWholeFlatSnapshotTreeEntryBlob {\n\tid: string;\n\tpath: string;\n\ttype: \"blob\";\n}\n\nexport type IWholeFlatSnapshotTreeEntry =\n\t| IWholeFlatSnapshotTreeEntryTree\n\t| IWholeFlatSnapshotTreeEntryBlob;\n\nexport interface IWholeFlatSnapshotTree {\n\tentries: IWholeFlatSnapshotTreeEntry[];\n\tid: string;\n\tsequenceNumber: number;\n}\n\nexport interface IWholeFlatSnapshotBlob {\n\tcontent: string;\n\tencoding: \"base64\" | \"utf-8\";\n\tid: string;\n\tsize: number;\n}\n\nexport interface IWholeFlatSnapshot {\n\t// The same as the id of the first snapshot tree in the trees array.\n\tid: string;\n\t// Receive an array of snapshot trees for future-proofing, however, always length 1 for now.\n\ttrees: IWholeFlatSnapshotTree[];\n\tblobs?: IWholeFlatSnapshotBlob[];\n}\n\n/**\n * Normalized Whole Summary with decoded blobs and unflattened snapshot tree.\n */\nexport interface INormalizedWholeSnapshot {\n\tblobs: Map<string, ArrayBuffer>;\n\tsnapshotTree: ISnapshotTree;\n\tsequenceNumber: number | undefined;\n\tid: string;\n}\n"]}
@@ -2,7 +2,7 @@
2
2
  * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
3
  * Licensed under the MIT License.
4
4
  */
5
- import { ISummaryTree } from "@fluidframework/protocol-definitions";
5
+ import { ISummaryTree } from "@fluidframework/driver-definitions";
6
6
  /**
7
7
  * Utility api to convert ISummaryTree to a summary tree where blob contents are only utf8 strings.
8
8
  * @param summary - Summary supplied by the runtime to upload.
@@ -1 +1 @@
1
- {"version":3,"file":"createNewUtils.d.ts","sourceRoot":"","sources":["../src/createNewUtils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,YAAY,EAAe,MAAM,sCAAsC,CAAC;AAEjF;;;;GAIG;AACH,wBAAgB,gCAAgC,CAAC,OAAO,EAAE,YAAY,GAAG,YAAY,CA2BpF"}
1
+ {"version":3,"file":"createNewUtils.d.ts","sourceRoot":"","sources":["../src/createNewUtils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,YAAY,EAAe,MAAM,oCAAoC,CAAC;AAE/E;;;;GAIG;AACH,wBAAgB,gCAAgC,CAAC,OAAO,EAAE,YAAY,GAAG,YAAY,CA2BpF"}
@@ -6,7 +6,7 @@
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
7
  exports.convertSummaryToCreateNewSummary = void 0;
8
8
  const client_utils_1 = require("@fluid-internal/client-utils");
9
- const protocol_definitions_1 = require("@fluidframework/protocol-definitions");
9
+ const driver_definitions_1 = require("@fluidframework/driver-definitions");
10
10
  /**
11
11
  * Utility api to convert ISummaryTree to a summary tree where blob contents are only utf8 strings.
12
12
  * @param summary - Summary supplied by the runtime to upload.
@@ -17,18 +17,18 @@ function convertSummaryToCreateNewSummary(summary) {
17
17
  for (const key of keys) {
18
18
  const summaryObject = summary.tree[key];
19
19
  switch (summaryObject.type) {
20
- case protocol_definitions_1.SummaryType.Tree: {
20
+ case driver_definitions_1.SummaryType.Tree: {
21
21
  summary.tree[key] = convertSummaryToCreateNewSummary(summaryObject);
22
22
  break;
23
23
  }
24
- case protocol_definitions_1.SummaryType.Blob: {
24
+ case driver_definitions_1.SummaryType.Blob: {
25
25
  summaryObject.content =
26
26
  typeof summaryObject.content === "string"
27
27
  ? summaryObject.content
28
28
  : (0, client_utils_1.Uint8ArrayToString)(summaryObject.content, "utf8");
29
29
  break;
30
30
  }
31
- case protocol_definitions_1.SummaryType.Handle: {
31
+ case driver_definitions_1.SummaryType.Handle: {
32
32
  throw new Error("No handle should be present for first summary!!");
33
33
  }
34
34
  default: {
@@ -1 +1 @@
1
- {"version":3,"file":"createNewUtils.js","sourceRoot":"","sources":["../src/createNewUtils.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,+DAAkE;AAClE,+EAAiF;AAEjF;;;;GAIG;AACH,SAAgB,gCAAgC,CAAC,OAAqB;IACrE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAExC,QAAQ,aAAa,CAAC,IAAI,EAAE,CAAC;YAC5B,KAAK,kCAAW,CAAC,IAAI,CAAC,CAAC,CAAC;gBACvB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,gCAAgC,CAAC,aAAa,CAAC,CAAC;gBACpE,MAAM;YACP,CAAC;YACD,KAAK,kCAAW,CAAC,IAAI,CAAC,CAAC,CAAC;gBACvB,aAAa,CAAC,OAAO;oBACpB,OAAO,aAAa,CAAC,OAAO,KAAK,QAAQ;wBACxC,CAAC,CAAC,aAAa,CAAC,OAAO;wBACvB,CAAC,CAAC,IAAA,iCAAkB,EAAC,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBACtD,MAAM;YACP,CAAC;YACD,KAAK,kCAAW,CAAC,MAAM,CAAC,CAAC,CAAC;gBACzB,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;YACpE,CAAC;YACD,OAAO,CAAC,CAAC,CAAC;gBACT,MAAM,IAAI,KAAK,CAAC,qBAAqB,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;YAC5D,CAAC;QACF,CAAC;IACF,CAAC;IAED,OAAO,OAAO,CAAC;AAChB,CAAC;AA3BD,4EA2BC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Uint8ArrayToString } from \"@fluid-internal/client-utils\";\nimport { ISummaryTree, SummaryType } from \"@fluidframework/protocol-definitions\";\n\n/**\n * Utility api to convert ISummaryTree to a summary tree where blob contents are only utf8 strings.\n * @param summary - Summary supplied by the runtime to upload.\n * @returns Modified summary tree where the blob contents could be utf8 string only.\n */\nexport function convertSummaryToCreateNewSummary(summary: ISummaryTree): ISummaryTree {\n\tconst keys = Object.keys(summary.tree);\n\tfor (const key of keys) {\n\t\tconst summaryObject = summary.tree[key];\n\n\t\tswitch (summaryObject.type) {\n\t\t\tcase SummaryType.Tree: {\n\t\t\t\tsummary.tree[key] = convertSummaryToCreateNewSummary(summaryObject);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase SummaryType.Blob: {\n\t\t\t\tsummaryObject.content =\n\t\t\t\t\ttypeof summaryObject.content === \"string\"\n\t\t\t\t\t\t? summaryObject.content\n\t\t\t\t\t\t: Uint8ArrayToString(summaryObject.content, \"utf8\");\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase SummaryType.Handle: {\n\t\t\t\tthrow new Error(\"No handle should be present for first summary!!\");\n\t\t\t}\n\t\t\tdefault: {\n\t\t\t\tthrow new Error(`Unknown tree type ${summaryObject.type}`);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn summary;\n}\n"]}
1
+ {"version":3,"file":"createNewUtils.js","sourceRoot":"","sources":["../src/createNewUtils.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,+DAAkE;AAClE,2EAA+E;AAE/E;;;;GAIG;AACH,SAAgB,gCAAgC,CAAC,OAAqB;IACrE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAExC,QAAQ,aAAa,CAAC,IAAI,EAAE,CAAC;YAC5B,KAAK,gCAAW,CAAC,IAAI,CAAC,CAAC,CAAC;gBACvB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,gCAAgC,CAAC,aAAa,CAAC,CAAC;gBACpE,MAAM;YACP,CAAC;YACD,KAAK,gCAAW,CAAC,IAAI,CAAC,CAAC,CAAC;gBACvB,aAAa,CAAC,OAAO;oBACpB,OAAO,aAAa,CAAC,OAAO,KAAK,QAAQ;wBACxC,CAAC,CAAC,aAAa,CAAC,OAAO;wBACvB,CAAC,CAAC,IAAA,iCAAkB,EAAC,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBACtD,MAAM;YACP,CAAC;YACD,KAAK,gCAAW,CAAC,MAAM,CAAC,CAAC,CAAC;gBACzB,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;YACpE,CAAC;YACD,OAAO,CAAC,CAAC,CAAC;gBACT,MAAM,IAAI,KAAK,CAAC,qBAAqB,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;YAC5D,CAAC;QACF,CAAC;IACF,CAAC;IAED,OAAO,OAAO,CAAC;AAChB,CAAC;AA3BD,4EA2BC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Uint8ArrayToString } from \"@fluid-internal/client-utils\";\nimport { ISummaryTree, SummaryType } from \"@fluidframework/driver-definitions\";\n\n/**\n * Utility api to convert ISummaryTree to a summary tree where blob contents are only utf8 strings.\n * @param summary - Summary supplied by the runtime to upload.\n * @returns Modified summary tree where the blob contents could be utf8 string only.\n */\nexport function convertSummaryToCreateNewSummary(summary: ISummaryTree): ISummaryTree {\n\tconst keys = Object.keys(summary.tree);\n\tfor (const key of keys) {\n\t\tconst summaryObject = summary.tree[key];\n\n\t\tswitch (summaryObject.type) {\n\t\t\tcase SummaryType.Tree: {\n\t\t\t\tsummary.tree[key] = convertSummaryToCreateNewSummary(summaryObject);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase SummaryType.Blob: {\n\t\t\t\tsummaryObject.content =\n\t\t\t\t\ttypeof summaryObject.content === \"string\"\n\t\t\t\t\t\t? summaryObject.content\n\t\t\t\t\t\t: Uint8ArrayToString(summaryObject.content, \"utf8\");\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase SummaryType.Handle: {\n\t\t\t\tthrow new Error(\"No handle should be present for first summary!!\");\n\t\t\t}\n\t\t\tdefault: {\n\t\t\t\tthrow new Error(`Unknown tree type ${summaryObject.type}`);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn summary;\n}\n"]}
@@ -2,7 +2,7 @@
2
2
  * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
3
  * Licensed under the MIT License.
4
4
  */
5
- import { ISnapshotTree } from "@fluidframework/protocol-definitions";
5
+ import { ISnapshotTree } from "@fluidframework/driver-definitions/internal";
6
6
  export interface ISnapshotTreeVersion {
7
7
  id: string;
8
8
  snapshotTree: ISnapshotTree;
@@ -1 +1 @@
1
- {"version":3,"file":"definitions.d.ts","sourceRoot":"","sources":["../src/definitions.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAErE,MAAM,WAAW,oBAAoB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,aAAa,CAAC;CAC5B"}
1
+ {"version":3,"file":"definitions.d.ts","sourceRoot":"","sources":["../src/definitions.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AAE5E,MAAM,WAAW,oBAAoB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,aAAa,CAAC;CAC5B"}
@@ -1 +1 @@
1
- {"version":3,"file":"definitions.js","sourceRoot":"","sources":["../src/definitions.ts"],"names":[],"mappings":";AAAA;;;GAGG","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ISnapshotTree } from \"@fluidframework/protocol-definitions\";\n\nexport interface ISnapshotTreeVersion {\n\tid: string;\n\tsnapshotTree: ISnapshotTree;\n}\n"]}
1
+ {"version":3,"file":"definitions.js","sourceRoot":"","sources":["../src/definitions.ts"],"names":[],"mappings":";AAAA;;;GAGG","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ISnapshotTree } from \"@fluidframework/driver-definitions/internal\";\n\nexport interface ISnapshotTreeVersion {\n\tid: string;\n\tsnapshotTree: ISnapshotTree;\n}\n"]}
@@ -2,8 +2,8 @@
2
2
  * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
3
  * Licensed under the MIT License.
4
4
  */
5
+ import { ISequencedDocumentMessage } from "@fluidframework/driver-definitions";
5
6
  import { IDeltaStorageService, IDeltasFetchResult, IDocumentDeltaStorageService, IStream } from "@fluidframework/driver-definitions/internal";
6
- import { ISequencedDocumentMessage } from "@fluidframework/protocol-definitions";
7
7
  import { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils/internal";
8
8
  import { DocumentStorageService } from "./documentStorageService.js";
9
9
  import { RestWrapper } from "./restWrapperBase.js";
@@ -1 +1 @@
1
- {"version":3,"file":"deltaStorageService.d.ts","sourceRoot":"","sources":["../src/deltaStorageService.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EACN,oBAAoB,EACpB,kBAAkB,EAClB,4BAA4B,EAC5B,OAAO,EACP,MAAM,6CAA6C,CAAC;AAOrD,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AACjF,OAAO,EAAE,mBAAmB,EAAoB,MAAM,0CAA0C,CAAC;AAEjG,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAWnD;;GAEG;AACH,qBAAa,2BAA4B,YAAW,4BAA4B;IAE9E,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IACpC,OAAO,CAAC,QAAQ,CAAC,sBAAsB;IACvC,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAJN,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,MAAM,EACV,mBAAmB,EAAE,oBAAoB,EACzC,sBAAsB,EAAE,sBAAsB,EAC9C,MAAM,EAAE,mBAAmB;IAG7C,OAAO,CAAC,UAAU,CAA8D;IAChF,OAAO,CAAC,WAAW,CAA0C;IAE7D,aAAa,CACZ,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,WAAW,CAAC,EAAE,WAAW,EACzB,UAAU,CAAC,EAAE,OAAO,EACpB,WAAW,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,yBAAyB,EAAE,CAAC;CAmEvC;AAED;;GAEG;AACH,qBAAa,mBAAoB,YAAW,oBAAoB;IAE9D,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,kBAAkB;gBAJlB,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,mBAAmB,EAC3B,cAAc,GAAE,MAAM,OAAO,CAAC,WAAW,CAAgC,EACzE,kBAAkB,GAAE,MAAM,MAAuB;IAGtD,GAAG,CACf,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,EAAE,YAAY;IAC1B,EAAE,EAAE,MAAM,GACR,OAAO,CAAC,kBAAkB,CAAC;CAiC9B"}
1
+ {"version":3,"file":"deltaStorageService.d.ts","sourceRoot":"","sources":["../src/deltaStorageService.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EACN,oBAAoB,EACpB,kBAAkB,EAClB,4BAA4B,EAC5B,OAAO,EACP,MAAM,6CAA6C,CAAC;AAOrD,OAAO,EAAE,mBAAmB,EAAoB,MAAM,0CAA0C,CAAC;AAEjG,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAWnD;;GAEG;AACH,qBAAa,2BAA4B,YAAW,4BAA4B;IAE9E,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IACpC,OAAO,CAAC,QAAQ,CAAC,sBAAsB;IACvC,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAJN,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,MAAM,EACV,mBAAmB,EAAE,oBAAoB,EACzC,sBAAsB,EAAE,sBAAsB,EAC9C,MAAM,EAAE,mBAAmB;IAG7C,OAAO,CAAC,UAAU,CAA8D;IAChF,OAAO,CAAC,WAAW,CAA0C;IAE7D,aAAa,CACZ,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,WAAW,CAAC,EAAE,WAAW,EACzB,UAAU,CAAC,EAAE,OAAO,EACpB,WAAW,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,yBAAyB,EAAE,CAAC;CAmEvC;AAED;;GAEG;AACH,qBAAa,mBAAoB,YAAW,oBAAoB;IAE9D,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,kBAAkB;gBAJlB,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,mBAAmB,EAC3B,cAAc,GAAE,MAAM,OAAO,CAAC,WAAW,CAAgC,EACzE,kBAAkB,GAAE,MAAM,MAAuB;IAGtD,GAAG,CACf,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,EAAE,YAAY;IAC1B,EAAE,EAAE,MAAM,GACR,OAAO,CAAC,kBAAkB,CAAC;CAiC9B"}
@@ -1 +1 @@
1
- {"version":3,"file":"deltaStorageService.js","sourceRoot":"","sources":["../src/deltaStorageService.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ITelemetryBaseProperties } from \"@fluidframework/core-interfaces\";\nimport { getW3CData, validateMessages } from \"@fluidframework/driver-base/internal\";\nimport {\n\tIDeltaStorageService,\n\tIDeltasFetchResult,\n\tIDocumentDeltaStorageService,\n\tIStream,\n} from \"@fluidframework/driver-definitions/internal\";\nimport {\n\temptyMessageStream,\n\treadAndParse,\n\trequestOps,\n\tstreamObserver,\n} from \"@fluidframework/driver-utils/internal\";\nimport { ISequencedDocumentMessage } from \"@fluidframework/protocol-definitions\";\nimport { ITelemetryLoggerExt, PerformanceEvent } from \"@fluidframework/telemetry-utils/internal\";\n\nimport { DocumentStorageService } from \"./documentStorageService.js\";\nimport { RestWrapper } from \"./restWrapperBase.js\";\n\n/**\n * Maximum number of ops we can fetch at a time. This should be kept at 2k, as\n * server determines whether to try to fallback to long-term storage if the ops range requested is larger than\n * what they have locally available in short-term storage. So if we request 2k ops, they know it is not a\n * specific request and they don't fall to long term storage which takes time.\n * Please coordinate to AFR team if this value need to be changed.\n */\nconst MaxBatchDeltas = 2000;\n\n/**\n * Storage service limited to only being able to fetch documents for a specific document\n */\nexport class DocumentDeltaStorageService implements IDocumentDeltaStorageService {\n\tconstructor(\n\t\tprivate readonly tenantId: string,\n\t\tprivate readonly id: string,\n\t\tprivate readonly deltaStorageService: IDeltaStorageService,\n\t\tprivate readonly documentStorageService: DocumentStorageService,\n\t\tprivate readonly logger: ITelemetryLoggerExt,\n\t) {}\n\n\tprivate logtailSha: string | undefined = this.documentStorageService.logTailSha;\n\tprivate snapshotOps: ISequencedDocumentMessage[] | undefined;\n\n\tfetchMessages(\n\t\tfromTotal: number,\n\t\ttoTotal: number | undefined,\n\t\tabortSignal?: AbortSignal,\n\t\tcachedOnly?: boolean,\n\t\tfetchReason?: string,\n\t): IStream<ISequencedDocumentMessage[]> {\n\t\tif (cachedOnly) {\n\t\t\treturn emptyMessageStream;\n\t\t}\n\n\t\tlet opsFromSnapshot = 0;\n\t\tlet opsFromStorage = 0;\n\t\tconst requestCallback = async (\n\t\t\tfrom: number,\n\t\t\tto: number,\n\t\t\ttelemetryProps: ITelemetryBaseProperties,\n\t\t) => {\n\t\t\tthis.snapshotOps = this.logtailSha\n\t\t\t\t? await readAndParse<ISequencedDocumentMessage[]>(\n\t\t\t\t\t\tthis.documentStorageService,\n\t\t\t\t\t\tthis.logtailSha,\n\t\t\t\t )\n\t\t\t\t: [];\n\t\t\tthis.logtailSha = undefined;\n\n\t\t\tif (this.snapshotOps !== undefined && this.snapshotOps.length !== 0) {\n\t\t\t\tconst messages = this.snapshotOps.filter(\n\t\t\t\t\t(op) => op.sequenceNumber >= from && op.sequenceNumber < to,\n\t\t\t\t);\n\t\t\t\tvalidateMessages(\"snapshotOps\", messages, from, this.logger, false /* strict */);\n\t\t\t\tif (messages.length > 0 && messages[0].sequenceNumber === from) {\n\t\t\t\t\tthis.snapshotOps = this.snapshotOps.filter((op) => op.sequenceNumber >= to);\n\t\t\t\t\topsFromSnapshot += messages.length;\n\t\t\t\t\treturn { messages, partialResult: true };\n\t\t\t\t}\n\t\t\t\tthis.snapshotOps = undefined;\n\t\t\t}\n\n\t\t\tconst ops = await this.deltaStorageService.get(this.tenantId, this.id, from, to);\n\t\t\tvalidateMessages(\"storage\", ops.messages, from, this.logger, false /* strict */);\n\t\t\topsFromStorage += ops.messages.length;\n\t\t\treturn ops;\n\t\t};\n\n\t\tconst stream = requestOps(\n\t\t\tasync (from: number, to: number, telemetryProps: ITelemetryBaseProperties) => {\n\t\t\t\tconst result = await requestCallback(from, to, telemetryProps);\n\t\t\t\t// Catch all case, just in case\n\t\t\t\tvalidateMessages(\"catch all\", result.messages, from, this.logger);\n\t\t\t\treturn result;\n\t\t\t},\n\t\t\t// Staging: starting with no concurrency, listening for feedback first.\n\t\t\t// In future releases we will switch to actual concurrency\n\t\t\t1, // concurrency\n\t\t\tfromTotal, // inclusive\n\t\t\ttoTotal, // exclusive\n\t\t\tMaxBatchDeltas,\n\t\t\tthis.logger,\n\t\t\tabortSignal,\n\t\t\tfetchReason,\n\t\t);\n\n\t\treturn streamObserver(stream, (result) => {\n\t\t\tif (result.done && opsFromSnapshot + opsFromStorage !== 0) {\n\t\t\t\tthis.logger.sendPerformanceEvent({\n\t\t\t\t\teventName: \"CacheOpsRetrieved\",\n\t\t\t\t\topsFromSnapshot,\n\t\t\t\t\topsFromStorage,\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n}\n\n/**\n * Provides access to the underlying delta storage on the server for routerlicious driver.\n */\nexport class DeltaStorageService implements IDeltaStorageService {\n\tconstructor(\n\t\tprivate readonly url: string,\n\t\tprivate readonly restWrapper: RestWrapper,\n\t\tprivate readonly logger: ITelemetryLoggerExt,\n\t\tprivate readonly getRestWrapper: () => Promise<RestWrapper> = async () => this.restWrapper,\n\t\tprivate readonly getDeltaStorageUrl: () => string = () => this.url,\n\t) {}\n\n\tpublic async get(\n\t\ttenantId: string,\n\t\tid: string,\n\t\tfrom: number, // inclusive\n\t\tto: number, // exclusive\n\t): Promise<IDeltasFetchResult> {\n\t\tconst ops = await PerformanceEvent.timedExecAsync(\n\t\t\tthis.logger,\n\t\t\t{\n\t\t\t\teventName: \"OpsFetch\",\n\t\t\t\tfrom,\n\t\t\t\tto,\n\t\t\t},\n\t\t\tasync (event) => {\n\t\t\t\tconst restWrapper = await this.getRestWrapper();\n\t\t\t\tconst url = this.getDeltaStorageUrl();\n\t\t\t\tconst response = await restWrapper.get<ISequencedDocumentMessage[]>(url, {\n\t\t\t\t\tfrom: from - 1,\n\t\t\t\t\tto,\n\t\t\t\t});\n\t\t\t\tevent.end({\n\t\t\t\t\tlength: response.content.length,\n\t\t\t\t\tdetails: JSON.stringify({\n\t\t\t\t\t\tfirstOpSeqNumber: response.content[0]?.sequenceNumber,\n\t\t\t\t\t\tlastOpSeqNumber:\n\t\t\t\t\t\t\tresponse.content[response.content.length - 1]?.sequenceNumber,\n\t\t\t\t\t}),\n\t\t\t\t\t...response.propsToLog,\n\t\t\t\t\t...getW3CData(response.requestUrl, \"xmlhttprequest\"),\n\t\t\t\t});\n\t\t\t\treturn response.content;\n\t\t\t},\n\t\t);\n\n\t\t// It is assumed that server always returns all the ops that it has in the range that was requested.\n\t\t// This may change in the future, if so, we need to adjust and receive \"end\" value from server in such case.\n\t\treturn { messages: ops, partialResult: false };\n\t}\n}\n"]}
1
+ {"version":3,"file":"deltaStorageService.js","sourceRoot":"","sources":["../src/deltaStorageService.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ITelemetryBaseProperties } from \"@fluidframework/core-interfaces\";\nimport { getW3CData, validateMessages } from \"@fluidframework/driver-base/internal\";\nimport { ISequencedDocumentMessage } from \"@fluidframework/driver-definitions\";\nimport {\n\tIDeltaStorageService,\n\tIDeltasFetchResult,\n\tIDocumentDeltaStorageService,\n\tIStream,\n} from \"@fluidframework/driver-definitions/internal\";\nimport {\n\temptyMessageStream,\n\treadAndParse,\n\trequestOps,\n\tstreamObserver,\n} from \"@fluidframework/driver-utils/internal\";\nimport { ITelemetryLoggerExt, PerformanceEvent } from \"@fluidframework/telemetry-utils/internal\";\n\nimport { DocumentStorageService } from \"./documentStorageService.js\";\nimport { RestWrapper } from \"./restWrapperBase.js\";\n\n/**\n * Maximum number of ops we can fetch at a time. This should be kept at 2k, as\n * server determines whether to try to fallback to long-term storage if the ops range requested is larger than\n * what they have locally available in short-term storage. So if we request 2k ops, they know it is not a\n * specific request and they don't fall to long term storage which takes time.\n * Please coordinate to AFR team if this value need to be changed.\n */\nconst MaxBatchDeltas = 2000;\n\n/**\n * Storage service limited to only being able to fetch documents for a specific document\n */\nexport class DocumentDeltaStorageService implements IDocumentDeltaStorageService {\n\tconstructor(\n\t\tprivate readonly tenantId: string,\n\t\tprivate readonly id: string,\n\t\tprivate readonly deltaStorageService: IDeltaStorageService,\n\t\tprivate readonly documentStorageService: DocumentStorageService,\n\t\tprivate readonly logger: ITelemetryLoggerExt,\n\t) {}\n\n\tprivate logtailSha: string | undefined = this.documentStorageService.logTailSha;\n\tprivate snapshotOps: ISequencedDocumentMessage[] | undefined;\n\n\tfetchMessages(\n\t\tfromTotal: number,\n\t\ttoTotal: number | undefined,\n\t\tabortSignal?: AbortSignal,\n\t\tcachedOnly?: boolean,\n\t\tfetchReason?: string,\n\t): IStream<ISequencedDocumentMessage[]> {\n\t\tif (cachedOnly) {\n\t\t\treturn emptyMessageStream;\n\t\t}\n\n\t\tlet opsFromSnapshot = 0;\n\t\tlet opsFromStorage = 0;\n\t\tconst requestCallback = async (\n\t\t\tfrom: number,\n\t\t\tto: number,\n\t\t\ttelemetryProps: ITelemetryBaseProperties,\n\t\t) => {\n\t\t\tthis.snapshotOps = this.logtailSha\n\t\t\t\t? await readAndParse<ISequencedDocumentMessage[]>(\n\t\t\t\t\t\tthis.documentStorageService,\n\t\t\t\t\t\tthis.logtailSha,\n\t\t\t\t )\n\t\t\t\t: [];\n\t\t\tthis.logtailSha = undefined;\n\n\t\t\tif (this.snapshotOps !== undefined && this.snapshotOps.length !== 0) {\n\t\t\t\tconst messages = this.snapshotOps.filter(\n\t\t\t\t\t(op) => op.sequenceNumber >= from && op.sequenceNumber < to,\n\t\t\t\t);\n\t\t\t\tvalidateMessages(\"snapshotOps\", messages, from, this.logger, false /* strict */);\n\t\t\t\tif (messages.length > 0 && messages[0].sequenceNumber === from) {\n\t\t\t\t\tthis.snapshotOps = this.snapshotOps.filter((op) => op.sequenceNumber >= to);\n\t\t\t\t\topsFromSnapshot += messages.length;\n\t\t\t\t\treturn { messages, partialResult: true };\n\t\t\t\t}\n\t\t\t\tthis.snapshotOps = undefined;\n\t\t\t}\n\n\t\t\tconst ops = await this.deltaStorageService.get(this.tenantId, this.id, from, to);\n\t\t\tvalidateMessages(\"storage\", ops.messages, from, this.logger, false /* strict */);\n\t\t\topsFromStorage += ops.messages.length;\n\t\t\treturn ops;\n\t\t};\n\n\t\tconst stream = requestOps(\n\t\t\tasync (from: number, to: number, telemetryProps: ITelemetryBaseProperties) => {\n\t\t\t\tconst result = await requestCallback(from, to, telemetryProps);\n\t\t\t\t// Catch all case, just in case\n\t\t\t\tvalidateMessages(\"catch all\", result.messages, from, this.logger);\n\t\t\t\treturn result;\n\t\t\t},\n\t\t\t// Staging: starting with no concurrency, listening for feedback first.\n\t\t\t// In future releases we will switch to actual concurrency\n\t\t\t1, // concurrency\n\t\t\tfromTotal, // inclusive\n\t\t\ttoTotal, // exclusive\n\t\t\tMaxBatchDeltas,\n\t\t\tthis.logger,\n\t\t\tabortSignal,\n\t\t\tfetchReason,\n\t\t);\n\n\t\treturn streamObserver(stream, (result) => {\n\t\t\tif (result.done && opsFromSnapshot + opsFromStorage !== 0) {\n\t\t\t\tthis.logger.sendPerformanceEvent({\n\t\t\t\t\teventName: \"CacheOpsRetrieved\",\n\t\t\t\t\topsFromSnapshot,\n\t\t\t\t\topsFromStorage,\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n}\n\n/**\n * Provides access to the underlying delta storage on the server for routerlicious driver.\n */\nexport class DeltaStorageService implements IDeltaStorageService {\n\tconstructor(\n\t\tprivate readonly url: string,\n\t\tprivate readonly restWrapper: RestWrapper,\n\t\tprivate readonly logger: ITelemetryLoggerExt,\n\t\tprivate readonly getRestWrapper: () => Promise<RestWrapper> = async () => this.restWrapper,\n\t\tprivate readonly getDeltaStorageUrl: () => string = () => this.url,\n\t) {}\n\n\tpublic async get(\n\t\ttenantId: string,\n\t\tid: string,\n\t\tfrom: number, // inclusive\n\t\tto: number, // exclusive\n\t): Promise<IDeltasFetchResult> {\n\t\tconst ops = await PerformanceEvent.timedExecAsync(\n\t\t\tthis.logger,\n\t\t\t{\n\t\t\t\teventName: \"OpsFetch\",\n\t\t\t\tfrom,\n\t\t\t\tto,\n\t\t\t},\n\t\t\tasync (event) => {\n\t\t\t\tconst restWrapper = await this.getRestWrapper();\n\t\t\t\tconst url = this.getDeltaStorageUrl();\n\t\t\t\tconst response = await restWrapper.get<ISequencedDocumentMessage[]>(url, {\n\t\t\t\t\tfrom: from - 1,\n\t\t\t\t\tto,\n\t\t\t\t});\n\t\t\t\tevent.end({\n\t\t\t\t\tlength: response.content.length,\n\t\t\t\t\tdetails: JSON.stringify({\n\t\t\t\t\t\tfirstOpSeqNumber: response.content[0]?.sequenceNumber,\n\t\t\t\t\t\tlastOpSeqNumber:\n\t\t\t\t\t\t\tresponse.content[response.content.length - 1]?.sequenceNumber,\n\t\t\t\t\t}),\n\t\t\t\t\t...response.propsToLog,\n\t\t\t\t\t...getW3CData(response.requestUrl, \"xmlhttprequest\"),\n\t\t\t\t});\n\t\t\t\treturn response.content;\n\t\t\t},\n\t\t);\n\n\t\t// It is assumed that server always returns all the ops that it has in the range that was requested.\n\t\t// This may change in the future, if so, we need to adjust and receive \"end\" value from server in such case.\n\t\treturn { messages: ops, partialResult: false };\n\t}\n}\n"]}
@@ -3,8 +3,8 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
  import { DocumentDeltaConnection } from "@fluidframework/driver-base/internal";
6
+ import { IClient } from "@fluidframework/driver-definitions";
6
7
  import { IDocumentDeltaConnection, IAnyDriverError } from "@fluidframework/driver-definitions/internal";
7
- import { IClient } from "@fluidframework/protocol-definitions";
8
8
  import { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils/internal";
9
9
  import type { io as SocketIOClientStatic } from "socket.io-client";
10
10
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"documentDeltaConnection.d.ts","sourceRoot":"","sources":["../src/documentDeltaConnection.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,OAAO,EACN,wBAAwB,EACxB,eAAe,EACf,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAAE,OAAO,EAAY,MAAM,sCAAsC,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAC/E,OAAO,KAAK,EAAE,EAAE,IAAI,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAOnE;;GAEG;AACH,qBAAa,2BAA4B,SAAQ,uBAAuB;WACnD,MAAM,CACzB,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,MAAM,GAAG,IAAI,EACpB,EAAE,EAAE,OAAO,oBAAoB,EAC/B,MAAM,EAAE,OAAO,EACf,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,mBAAmB,EAC3B,SAAS,SAAQ,EACjB,0BAA0B,UAAO,GAC/B,OAAO,CAAC,wBAAwB,CAAC;IAmCpC;;OAEG;IACH,SAAS,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG,EAAE,QAAQ,UAAO,GAAG,eAAe;CAQ3F"}
1
+ {"version":3,"file":"documentDeltaConnection.d.ts","sourceRoot":"","sources":["../src/documentDeltaConnection.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,OAAO,EAAE,OAAO,EAAE,MAAM,oCAAoC,CAAC;AAC7D,OAAO,EACN,wBAAwB,EACxB,eAAe,EAEf,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAC/E,OAAO,KAAK,EAAE,EAAE,IAAI,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAOnE;;GAEG;AACH,qBAAa,2BAA4B,SAAQ,uBAAuB;WACnD,MAAM,CACzB,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,MAAM,GAAG,IAAI,EACpB,EAAE,EAAE,OAAO,oBAAoB,EAC/B,MAAM,EAAE,OAAO,EACf,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,mBAAmB,EAC3B,SAAS,SAAQ,EACjB,0BAA0B,UAAO,GAC/B,OAAO,CAAC,wBAAwB,CAAC;IAmCpC;;OAEG;IACH,SAAS,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG,EAAE,QAAQ,UAAO,GAAG,eAAe;CAQ3F"}
@@ -1 +1 @@
1
- {"version":3,"file":"documentDeltaConnection.js","sourceRoot":"","sources":["../src/documentDeltaConnection.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,mEAA+E;AAS/E,mDAA+E;AAC/E,2DAAkE;AAElE,MAAM,gBAAgB,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAElE;;GAEG;AACH,MAAa,2BAA4B,SAAQ,kCAAuB;IAChE,MAAM,CAAC,KAAK,CAAC,MAAM,CACzB,QAAgB,EAChB,EAAU,EACV,KAAoB,EACpB,EAA+B,EAC/B,MAAe,EACf,GAAW,EACX,MAA2B,EAC3B,SAAS,GAAG,KAAK,EACjB,0BAA0B,GAAG,IAAI;QAEjC,MAAM,MAAM,GAAG,EAAE,CAAC,GAAG,EAAE;YACtB,KAAK,EAAE;gBACN,UAAU,EAAE,EAAE;gBACd,QAAQ;aACR;YACD,YAAY,EAAE,KAAK;YACnB,8DAA8D;YAC9D,UAAU,EAAE,CAAC,WAAW,CAAC;YACzB,OAAO,EAAE,SAAS;SAClB,CAAC,CAAC;QAEH,MAAM,cAAc,GAAa;YAChC,MAAM;YACN,EAAE;YACF,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,QAAQ;YACR,KAAK,EAAE,8DAA8D;YACrE,QAAQ,EAAE,gBAAgB;YAC1B,cAAc,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,kBAAkB,8BAAa,EAAE,CAAC,CAAC,IAAI,CACnF,GAAG,CACH;SACD,CAAC;QAEF,MAAM,eAAe,GAAG,IAAI,2BAA2B,CACtD,MAAM,EACN,EAAE,EACF,MAAM,EACN,0BAA0B,CAC1B,CAAC;QAEF,MAAM,eAAe,CAAC,UAAU,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;QAC5D,OAAO,eAAe,CAAC;IACxB,CAAC;IAED;;OAEG;IACO,iBAAiB,CAAC,OAAe,EAAE,KAAW,EAAE,QAAQ,GAAG,IAAI;QACxE,wDAAwD;QACxD,wGAAwG;QACxG,4CAA4C;QAC5C,OAAO,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,OAAO,KAAK,EAAE,OAAO,KAAK,QAAQ;YACrF,CAAC,CAAC,IAAA,0CAA0B,EAAC,KAAyB,EAAE,OAAO,CAAC;YAChE,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IACtD,CAAC;CACD;AAzDD,kEAyDC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { DocumentDeltaConnection } from \"@fluidframework/driver-base/internal\";\nimport {\n\tIDocumentDeltaConnection,\n\tIAnyDriverError,\n} from \"@fluidframework/driver-definitions/internal\";\nimport { IClient, IConnect } from \"@fluidframework/protocol-definitions\";\nimport { ITelemetryLoggerExt } from \"@fluidframework/telemetry-utils/internal\";\nimport type { io as SocketIOClientStatic } from \"socket.io-client\";\n\nimport { IR11sSocketError, errorObjectFromSocketError } from \"./errorUtils.js\";\nimport { pkgVersion as driverVersion } from \"./packageVersion.js\";\n\nconst protocolVersions = [\"^0.4.0\", \"^0.3.0\", \"^0.2.0\", \"^0.1.0\"];\n\n/**\n * Wrapper over the shared one for driver specific translation.\n */\nexport class R11sDocumentDeltaConnection extends DocumentDeltaConnection {\n\tpublic static async create(\n\t\ttenantId: string,\n\t\tid: string,\n\t\ttoken: string | null,\n\t\tio: typeof SocketIOClientStatic,\n\t\tclient: IClient,\n\t\turl: string,\n\t\tlogger: ITelemetryLoggerExt,\n\t\ttimeoutMs = 20000,\n\t\tenableLongPollingDowngrade = true,\n\t): Promise<IDocumentDeltaConnection> {\n\t\tconst socket = io(url, {\n\t\t\tquery: {\n\t\t\t\tdocumentId: id,\n\t\t\t\ttenantId,\n\t\t\t},\n\t\t\treconnection: false,\n\t\t\t// Default to websocket connection, with long-polling disabled\n\t\t\ttransports: [\"websocket\"],\n\t\t\ttimeout: timeoutMs,\n\t\t});\n\n\t\tconst connectMessage: IConnect = {\n\t\t\tclient,\n\t\t\tid,\n\t\t\tmode: client.mode,\n\t\t\ttenantId,\n\t\t\ttoken, // Token is going to indicate tenant level information, etc...\n\t\t\tversions: protocolVersions,\n\t\t\trelayUserAgent: [client.details.environment, ` driverVersion:${driverVersion}`].join(\n\t\t\t\t\";\",\n\t\t\t),\n\t\t};\n\n\t\tconst deltaConnection = new R11sDocumentDeltaConnection(\n\t\t\tsocket,\n\t\t\tid,\n\t\t\tlogger,\n\t\t\tenableLongPollingDowngrade,\n\t\t);\n\n\t\tawait deltaConnection.initialize(connectMessage, timeoutMs);\n\t\treturn deltaConnection;\n\t}\n\n\t/**\n\t * Error raising for socket.io issues\n\t */\n\tprotected createErrorObject(handler: string, error?: any, canRetry = true): IAnyDriverError {\n\t\t// Note: we suspect the incoming error object is either:\n\t\t// - a socketError: add it to the R11sError object for driver to be able to parse it and reason over it.\n\t\t// - anything else: let base class handle it\n\t\treturn canRetry && Number.isInteger(error?.code) && typeof error?.message === \"string\"\n\t\t\t? errorObjectFromSocketError(error as IR11sSocketError, handler)\n\t\t\t: super.createErrorObject(handler, error, canRetry);\n\t}\n}\n"]}
1
+ {"version":3,"file":"documentDeltaConnection.js","sourceRoot":"","sources":["../src/documentDeltaConnection.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,mEAA+E;AAU/E,mDAA+E;AAC/E,2DAAkE;AAElE,MAAM,gBAAgB,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAElE;;GAEG;AACH,MAAa,2BAA4B,SAAQ,kCAAuB;IAChE,MAAM,CAAC,KAAK,CAAC,MAAM,CACzB,QAAgB,EAChB,EAAU,EACV,KAAoB,EACpB,EAA+B,EAC/B,MAAe,EACf,GAAW,EACX,MAA2B,EAC3B,SAAS,GAAG,KAAK,EACjB,0BAA0B,GAAG,IAAI;QAEjC,MAAM,MAAM,GAAG,EAAE,CAAC,GAAG,EAAE;YACtB,KAAK,EAAE;gBACN,UAAU,EAAE,EAAE;gBACd,QAAQ;aACR;YACD,YAAY,EAAE,KAAK;YACnB,8DAA8D;YAC9D,UAAU,EAAE,CAAC,WAAW,CAAC;YACzB,OAAO,EAAE,SAAS;SAClB,CAAC,CAAC;QAEH,MAAM,cAAc,GAAa;YAChC,MAAM;YACN,EAAE;YACF,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,QAAQ;YACR,KAAK,EAAE,8DAA8D;YACrE,QAAQ,EAAE,gBAAgB;YAC1B,cAAc,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,kBAAkB,8BAAa,EAAE,CAAC,CAAC,IAAI,CACnF,GAAG,CACH;SACD,CAAC;QAEF,MAAM,eAAe,GAAG,IAAI,2BAA2B,CACtD,MAAM,EACN,EAAE,EACF,MAAM,EACN,0BAA0B,CAC1B,CAAC;QAEF,MAAM,eAAe,CAAC,UAAU,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;QAC5D,OAAO,eAAe,CAAC;IACxB,CAAC;IAED;;OAEG;IACO,iBAAiB,CAAC,OAAe,EAAE,KAAW,EAAE,QAAQ,GAAG,IAAI;QACxE,wDAAwD;QACxD,wGAAwG;QACxG,4CAA4C;QAC5C,OAAO,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,OAAO,KAAK,EAAE,OAAO,KAAK,QAAQ;YACrF,CAAC,CAAC,IAAA,0CAA0B,EAAC,KAAyB,EAAE,OAAO,CAAC;YAChE,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IACtD,CAAC;CACD;AAzDD,kEAyDC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { DocumentDeltaConnection } from \"@fluidframework/driver-base/internal\";\nimport { IClient } from \"@fluidframework/driver-definitions\";\nimport {\n\tIDocumentDeltaConnection,\n\tIAnyDriverError,\n\tIConnect,\n} from \"@fluidframework/driver-definitions/internal\";\nimport { ITelemetryLoggerExt } from \"@fluidframework/telemetry-utils/internal\";\nimport type { io as SocketIOClientStatic } from \"socket.io-client\";\n\nimport { IR11sSocketError, errorObjectFromSocketError } from \"./errorUtils.js\";\nimport { pkgVersion as driverVersion } from \"./packageVersion.js\";\n\nconst protocolVersions = [\"^0.4.0\", \"^0.3.0\", \"^0.2.0\", \"^0.1.0\"];\n\n/**\n * Wrapper over the shared one for driver specific translation.\n */\nexport class R11sDocumentDeltaConnection extends DocumentDeltaConnection {\n\tpublic static async create(\n\t\ttenantId: string,\n\t\tid: string,\n\t\ttoken: string | null,\n\t\tio: typeof SocketIOClientStatic,\n\t\tclient: IClient,\n\t\turl: string,\n\t\tlogger: ITelemetryLoggerExt,\n\t\ttimeoutMs = 20000,\n\t\tenableLongPollingDowngrade = true,\n\t): Promise<IDocumentDeltaConnection> {\n\t\tconst socket = io(url, {\n\t\t\tquery: {\n\t\t\t\tdocumentId: id,\n\t\t\t\ttenantId,\n\t\t\t},\n\t\t\treconnection: false,\n\t\t\t// Default to websocket connection, with long-polling disabled\n\t\t\ttransports: [\"websocket\"],\n\t\t\ttimeout: timeoutMs,\n\t\t});\n\n\t\tconst connectMessage: IConnect = {\n\t\t\tclient,\n\t\t\tid,\n\t\t\tmode: client.mode,\n\t\t\ttenantId,\n\t\t\ttoken, // Token is going to indicate tenant level information, etc...\n\t\t\tversions: protocolVersions,\n\t\t\trelayUserAgent: [client.details.environment, ` driverVersion:${driverVersion}`].join(\n\t\t\t\t\";\",\n\t\t\t),\n\t\t};\n\n\t\tconst deltaConnection = new R11sDocumentDeltaConnection(\n\t\t\tsocket,\n\t\t\tid,\n\t\t\tlogger,\n\t\t\tenableLongPollingDowngrade,\n\t\t);\n\n\t\tawait deltaConnection.initialize(connectMessage, timeoutMs);\n\t\treturn deltaConnection;\n\t}\n\n\t/**\n\t * Error raising for socket.io issues\n\t */\n\tprotected createErrorObject(handler: string, error?: any, canRetry = true): IAnyDriverError {\n\t\t// Note: we suspect the incoming error object is either:\n\t\t// - a socketError: add it to the R11sError object for driver to be able to parse it and reason over it.\n\t\t// - anything else: let base class handle it\n\t\treturn canRetry && Number.isInteger(error?.code) && typeof error?.message === \"string\"\n\t\t\t? errorObjectFromSocketError(error as IR11sSocketError, handler)\n\t\t\t: super.createErrorObject(handler, error, canRetry);\n\t}\n}\n"]}
@@ -3,8 +3,8 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
  import { TypedEventEmitter } from "@fluid-internal/client-utils";
6
- import * as api from "@fluidframework/driver-definitions/internal";
7
- import { IClient } from "@fluidframework/protocol-definitions";
6
+ import { IClient } from "@fluidframework/driver-definitions";
7
+ import { IDocumentServiceEvents, IDocumentDeltaConnection, IDocumentDeltaStorageService, IDocumentService, IDocumentStorageService, IDocumentStorageServicePolicies, IResolvedUrl } from "@fluidframework/driver-definitions/internal";
8
8
  import { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils/internal";
9
9
  import { ICache } from "./cache.js";
10
10
  import { INormalizedWholeSnapshot } from "./contracts.js";
@@ -16,7 +16,7 @@ import { ITokenProvider } from "./tokens.js";
16
16
  * The DocumentService manages the Socket.IO connection and manages routing requests to connected
17
17
  * clients.
18
18
  */
19
- export declare class DocumentService extends TypedEventEmitter<api.IDocumentServiceEvents> implements api.IDocumentService {
19
+ export declare class DocumentService extends TypedEventEmitter<IDocumentServiceEvents> implements IDocumentService {
20
20
  private _resolvedUrl;
21
21
  protected ordererUrl: string;
22
22
  private deltaStorageUrl;
@@ -40,8 +40,8 @@ export declare class DocumentService extends TypedEventEmitter<api.IDocumentServ
40
40
  private discoverP;
41
41
  private storageManager;
42
42
  private noCacheStorageManager;
43
- get resolvedUrl(): api.IResolvedUrl;
44
- constructor(_resolvedUrl: api.IResolvedUrl, ordererUrl: string, deltaStorageUrl: string, deltaStreamUrl: string, storageUrl: string, logger: ITelemetryLoggerExt, tokenProvider: ITokenProvider, tenantId: string, documentId: string, ordererRestWrapper: RouterliciousOrdererRestWrapper, documentStorageServicePolicies: api.IDocumentStorageServicePolicies, driverPolicies: IRouterliciousDriverPolicies, blobCache: ICache<ArrayBufferLike>, wholeSnapshotTreeCache: ICache<INormalizedWholeSnapshot>, shreddedSummaryTreeCache: ICache<ISnapshotTreeVersion>, discoverFluidResolvedUrl: () => Promise<api.IResolvedUrl>, storageRestWrapper: RouterliciousStorageRestWrapper, storageTokenFetcher: TokenFetcher, ordererTokenFetcher: TokenFetcher);
43
+ get resolvedUrl(): IResolvedUrl;
44
+ constructor(_resolvedUrl: IResolvedUrl, ordererUrl: string, deltaStorageUrl: string, deltaStreamUrl: string, storageUrl: string, logger: ITelemetryLoggerExt, tokenProvider: ITokenProvider, tenantId: string, documentId: string, ordererRestWrapper: RouterliciousOrdererRestWrapper, documentStorageServicePolicies: IDocumentStorageServicePolicies, driverPolicies: IRouterliciousDriverPolicies, blobCache: ICache<ArrayBufferLike>, wholeSnapshotTreeCache: ICache<INormalizedWholeSnapshot>, shreddedSummaryTreeCache: ICache<ISnapshotTreeVersion>, discoverFluidResolvedUrl: () => Promise<IResolvedUrl>, storageRestWrapper: RouterliciousStorageRestWrapper, storageTokenFetcher: TokenFetcher, ordererTokenFetcher: TokenFetcher);
45
45
  private documentStorageService;
46
46
  dispose(): void;
47
47
  /**
@@ -49,19 +49,19 @@ export declare class DocumentService extends TypedEventEmitter<api.IDocumentServ
49
49
  *
50
50
  * @returns returns the document storage service for routerlicious driver.
51
51
  */
52
- connectToStorage(): Promise<api.IDocumentStorageService>;
52
+ connectToStorage(): Promise<IDocumentStorageService>;
53
53
  /**
54
54
  * Connects to a delta storage endpoint for getting ops between a range.
55
55
  *
56
56
  * @returns returns the document delta storage service for routerlicious driver.
57
57
  */
58
- connectToDeltaStorage(): Promise<api.IDocumentDeltaStorageService>;
58
+ connectToDeltaStorage(): Promise<IDocumentDeltaStorageService>;
59
59
  /**
60
60
  * Connects to a delta stream endpoint for emitting ops.
61
61
  *
62
62
  * @returns returns the document delta stream service for routerlicious driver.
63
63
  */
64
- connectToDeltaStream(client: IClient): Promise<api.IDocumentDeltaConnection>;
64
+ connectToDeltaStream(client: IClient): Promise<IDocumentDeltaConnection>;
65
65
  /**
66
66
  * Re-discover session URLs if necessary.
67
67
  */
@@ -1 +1 @@
1
- {"version":3,"file":"documentService.d.ts","sourceRoot":"","sources":["../src/documentService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"documentService.d.ts","sourceRoot":"","sources":["../src/documentService.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"documentService.js","sourceRoot":"","sources":["../src/documentService.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { TypedEventEmitter } from \"@fluid-internal/client-utils\";\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport * as api from \"@fluidframework/driver-definitions/internal\";\nimport {\n\tNetworkErrorBasic,\n\tRateLimiter,\n\tcanRetryOnError,\n} from \"@fluidframework/driver-utils/internal\";\nimport { IClient } from \"@fluidframework/protocol-definitions\";\nimport {\n\tITelemetryLoggerExt,\n\tPerformanceEvent,\n\twrapError,\n} from \"@fluidframework/telemetry-utils/internal\";\nimport io from \"socket.io-client\";\n\nimport { ICache } from \"./cache.js\";\nimport { INormalizedWholeSnapshot } from \"./contracts.js\";\nimport { ISnapshotTreeVersion } from \"./definitions.js\";\nimport { DeltaStorageService, DocumentDeltaStorageService } from \"./deltaStorageService.js\";\nimport { R11sDocumentDeltaConnection } from \"./documentDeltaConnection.js\";\nimport { DocumentStorageService } from \"./documentStorageService.js\";\nimport { RouterliciousErrorTypes } from \"./errorUtils.js\";\nimport { GitManager } from \"./gitManager.js\";\nimport { Historian } from \"./historian.js\";\nimport { NullBlobStorageService } from \"./nullBlobStorageService.js\";\nimport { pkgVersion as driverVersion } from \"./packageVersion.js\";\nimport { IRouterliciousDriverPolicies } from \"./policies.js\";\nimport {\n\tRouterliciousOrdererRestWrapper,\n\tRouterliciousStorageRestWrapper,\n\tTokenFetcher,\n} from \"./restWrapper.js\";\nimport { RestWrapper } from \"./restWrapperBase.js\";\nimport { ITokenProvider } from \"./tokens.js\";\n\n/**\n * Amount of time between discoveries within which we don't need to rediscover on re-connect.\n * Currently, R11s defines session length at 10 minutes. To avoid any weird unknown edge-cases though,\n * we set the limit to 5 minutes here.\n * In the future, we likely want to retrieve this information from service's \"inactive session\" definition.\n */\nconst RediscoverAfterTimeSinceDiscoveryMs = 5 * 60000; // 5 minute\n\n/**\n * The DocumentService manages the Socket.IO connection and manages routing requests to connected\n * clients.\n */\nexport class DocumentService\n\textends TypedEventEmitter<api.IDocumentServiceEvents>\n\t// eslint-disable-next-line import/namespace\n\timplements api.IDocumentService\n{\n\tprivate lastDiscoveredAt: number = Date.now();\n\tprivate discoverP: Promise<void> | undefined;\n\n\tprivate storageManager: GitManager | undefined;\n\tprivate noCacheStorageManager: GitManager | undefined;\n\n\tpublic get resolvedUrl() {\n\t\treturn this._resolvedUrl;\n\t}\n\n\tconstructor(\n\t\tprivate _resolvedUrl: api.IResolvedUrl,\n\t\tprotected ordererUrl: string,\n\t\tprivate deltaStorageUrl: string,\n\t\tprivate deltaStreamUrl: string,\n\t\tprivate storageUrl: string,\n\t\tprivate readonly logger: ITelemetryLoggerExt,\n\t\tprotected tokenProvider: ITokenProvider,\n\t\tprotected tenantId: string,\n\t\tprotected documentId: string,\n\t\tprotected ordererRestWrapper: RouterliciousOrdererRestWrapper,\n\t\tprivate readonly documentStorageServicePolicies: api.IDocumentStorageServicePolicies,\n\t\tprivate readonly driverPolicies: IRouterliciousDriverPolicies,\n\t\tprivate readonly blobCache: ICache<ArrayBufferLike>,\n\t\tprivate readonly wholeSnapshotTreeCache: ICache<INormalizedWholeSnapshot>,\n\t\tprivate readonly shreddedSummaryTreeCache: ICache<ISnapshotTreeVersion>,\n\t\tprivate readonly discoverFluidResolvedUrl: () => Promise<api.IResolvedUrl>,\n\t\tprivate storageRestWrapper: RouterliciousStorageRestWrapper,\n\t\tprivate readonly storageTokenFetcher: TokenFetcher,\n\t\tprivate readonly ordererTokenFetcher: TokenFetcher,\n\t) {\n\t\tsuper();\n\t}\n\n\tprivate documentStorageService: DocumentStorageService | undefined;\n\n\tpublic dispose() {}\n\n\t/**\n\t * Connects to a storage endpoint for snapshot service.\n\t *\n\t * @returns returns the document storage service for routerlicious driver.\n\t */\n\tpublic async connectToStorage(): Promise<api.IDocumentStorageService> {\n\t\tif (this.documentStorageService !== undefined) {\n\t\t\treturn this.documentStorageService;\n\t\t}\n\n\t\tif (this.storageUrl === undefined) {\n\t\t\treturn new NullBlobStorageService();\n\t\t}\n\n\t\tconst getStorageManager = async (disableCache?: boolean): Promise<GitManager> => {\n\t\t\tconst shouldUpdateDiscoveredSessionInfo = this.shouldUpdateDiscoveredSessionInfo();\n\t\t\tif (shouldUpdateDiscoveredSessionInfo) {\n\t\t\t\tawait this.refreshDiscovery();\n\t\t\t}\n\t\t\tif (\n\t\t\t\t!this.storageManager ||\n\t\t\t\t!this.noCacheStorageManager ||\n\t\t\t\tshouldUpdateDiscoveredSessionInfo\n\t\t\t) {\n\t\t\t\tif (shouldUpdateDiscoveredSessionInfo) {\n\t\t\t\t\tconst rateLimiter = new RateLimiter(\n\t\t\t\t\t\tthis.driverPolicies.maxConcurrentStorageRequests,\n\t\t\t\t\t);\n\t\t\t\t\tthis.storageRestWrapper = RouterliciousStorageRestWrapper.load(\n\t\t\t\t\t\tthis.tenantId,\n\t\t\t\t\t\tthis.storageTokenFetcher,\n\t\t\t\t\t\tthis.logger,\n\t\t\t\t\t\trateLimiter,\n\t\t\t\t\t\tthis.driverPolicies.enableRestLess,\n\t\t\t\t\t\tthis.storageUrl,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tconst historian = new Historian(true, false, this.storageRestWrapper);\n\t\t\t\tthis.storageManager = new GitManager(historian);\n\t\t\t\tconst noCacheHistorian = new Historian(true, true, this.storageRestWrapper);\n\t\t\t\tthis.noCacheStorageManager = new GitManager(noCacheHistorian);\n\t\t\t}\n\n\t\t\treturn disableCache ? this.noCacheStorageManager : this.storageManager;\n\t\t};\n\t\t// Initialize storageManager and noCacheStorageManager\n\t\tconst storageManager = await getStorageManager();\n\t\tconst noCacheStorageManager = await getStorageManager(true);\n\t\tthis.documentStorageService = new DocumentStorageService(\n\t\t\tthis.documentId,\n\t\t\tstorageManager,\n\t\t\tthis.logger,\n\t\t\tthis.documentStorageServicePolicies,\n\t\t\tthis.driverPolicies,\n\t\t\tthis.blobCache,\n\t\t\tthis.wholeSnapshotTreeCache,\n\t\t\tthis.shreddedSummaryTreeCache,\n\t\t\tnoCacheStorageManager,\n\t\t\tgetStorageManager,\n\t\t);\n\t\treturn this.documentStorageService;\n\t}\n\n\t/**\n\t * Connects to a delta storage endpoint for getting ops between a range.\n\t *\n\t * @returns returns the document delta storage service for routerlicious driver.\n\t */\n\tpublic async connectToDeltaStorage(): Promise<api.IDocumentDeltaStorageService> {\n\t\tawait this.connectToStorage();\n\t\tassert(!!this.documentStorageService, 0x0b1 /* \"Storage service not initialized\" */);\n\n\t\tconst getRestWrapper = async (): Promise<RestWrapper> => {\n\t\t\tconst shouldUpdateDiscoveredSessionInfo = this.shouldUpdateDiscoveredSessionInfo();\n\n\t\t\tif (shouldUpdateDiscoveredSessionInfo) {\n\t\t\t\tawait this.refreshDiscovery();\n\t\t\t\tconst rateLimiter = new RateLimiter(\n\t\t\t\t\tthis.driverPolicies.maxConcurrentOrdererRequests,\n\t\t\t\t);\n\t\t\t\tthis.ordererRestWrapper = RouterliciousOrdererRestWrapper.load(\n\t\t\t\t\tthis.ordererTokenFetcher,\n\t\t\t\t\tthis.logger,\n\t\t\t\t\trateLimiter,\n\t\t\t\t\tthis.driverPolicies.enableRestLess,\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn this.ordererRestWrapper;\n\t\t};\n\t\tconst restWrapper = await getRestWrapper();\n\t\tconst deltaStorageService = new DeltaStorageService(\n\t\t\tthis.deltaStorageUrl,\n\t\t\trestWrapper,\n\t\t\tthis.logger,\n\t\t\tgetRestWrapper,\n\t\t\t() => this.deltaStorageUrl,\n\t\t);\n\t\treturn new DocumentDeltaStorageService(\n\t\t\tthis.tenantId,\n\t\t\tthis.documentId,\n\t\t\tdeltaStorageService,\n\t\t\tthis.documentStorageService,\n\t\t\tthis.logger,\n\t\t);\n\t}\n\n\t/**\n\t * Connects to a delta stream endpoint for emitting ops.\n\t *\n\t * @returns returns the document delta stream service for routerlicious driver.\n\t */\n\tpublic async connectToDeltaStream(client: IClient): Promise<api.IDocumentDeltaConnection> {\n\t\tconst connect = async (refreshToken?: boolean) => {\n\t\t\tlet ordererToken = await this.ordererRestWrapper.getToken();\n\t\t\tif (this.shouldUpdateDiscoveredSessionInfo()) {\n\t\t\t\tawait this.refreshDiscovery();\n\t\t\t}\n\n\t\t\tif (refreshToken) {\n\t\t\t\tordererToken = await PerformanceEvent.timedExecAsync(\n\t\t\t\t\tthis.logger,\n\t\t\t\t\t{\n\t\t\t\t\t\teventName: \"GetDeltaStreamToken\",\n\t\t\t\t\t\tdocId: this.documentId,\n\t\t\t\t\t\tdetails: JSON.stringify({\n\t\t\t\t\t\t\trefreshToken,\n\t\t\t\t\t\t}),\n\t\t\t\t\t},\n\t\t\t\t\tasync () =>\n\t\t\t\t\t\tthis.tokenProvider\n\t\t\t\t\t\t\t.fetchOrdererToken(this.tenantId, this.documentId, refreshToken)\n\t\t\t\t\t\t\t.then(\n\t\t\t\t\t\t\t\t(newOrdererToken) => {\n\t\t\t\t\t\t\t\t\tthis.ordererRestWrapper.setToken(newOrdererToken);\n\t\t\t\t\t\t\t\t\treturn newOrdererToken;\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t(error) => {\n\t\t\t\t\t\t\t\t\tconst tokenError = wrapError(\n\t\t\t\t\t\t\t\t\t\terror,\n\t\t\t\t\t\t\t\t\t\t(errorMessage) =>\n\t\t\t\t\t\t\t\t\t\t\tnew NetworkErrorBasic(\n\t\t\t\t\t\t\t\t\t\t\t\t`The Host-provided token fetcher threw an error`,\n\t\t\t\t\t\t\t\t\t\t\t\tRouterliciousErrorTypes.fetchTokenError,\n\t\t\t\t\t\t\t\t\t\t\t\tcanRetryOnError(error),\n\t\t\t\t\t\t\t\t\t\t\t\t{ errorMessage, driverVersion },\n\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\tthrow tokenError;\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn PerformanceEvent.timedExecAsync(\n\t\t\t\tthis.logger,\n\t\t\t\t{\n\t\t\t\t\teventName: \"ConnectToDeltaStream\",\n\t\t\t\t\tdocId: this.documentId,\n\t\t\t\t},\n\t\t\t\tasync () => {\n\t\t\t\t\treturn R11sDocumentDeltaConnection.create(\n\t\t\t\t\t\tthis.tenantId,\n\t\t\t\t\t\tthis.documentId,\n\t\t\t\t\t\tordererToken.jwt,\n\t\t\t\t\t\tio,\n\t\t\t\t\t\tclient,\n\t\t\t\t\t\tthis.deltaStreamUrl,\n\t\t\t\t\t\tthis.logger,\n\t\t\t\t\t\tundefined /* timeoutMs */,\n\t\t\t\t\t\tthis.driverPolicies.enableLongPollingDowngrade,\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t);\n\t\t};\n\n\t\t// Attempt to establish connection.\n\t\t// Retry with new token on authorization error; otherwise, allow container layer to handle.\n\t\ttry {\n\t\t\tconst connection = await connect();\n\t\t\treturn connection;\n\t\t} catch (error: any) {\n\t\t\tif (error?.statusCode === 401) {\n\t\t\t\t// Fetch new token and retry once,\n\t\t\t\t// otherwise 401 will be bubbled up as non-retriable AuthorizationError.\n\t\t\t\treturn connect(true /* refreshToken */);\n\t\t\t}\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\t/**\n\t * Re-discover session URLs if necessary.\n\t */\n\tprivate async refreshDiscovery(): Promise<void> {\n\t\tif (!this.discoverP) {\n\t\t\tthis.discoverP = PerformanceEvent.timedExecAsync(\n\t\t\t\tthis.logger,\n\t\t\t\t{\n\t\t\t\t\teventName: \"RefreshDiscovery\",\n\t\t\t\t},\n\t\t\t\tasync () => this.refreshDiscoveryCore(),\n\t\t\t);\n\t\t}\n\t\treturn this.discoverP;\n\t}\n\n\tprivate async refreshDiscoveryCore(): Promise<void> {\n\t\tconst fluidResolvedUrl = await this.discoverFluidResolvedUrl();\n\t\tthis._resolvedUrl = fluidResolvedUrl;\n\t\tthis.storageUrl = fluidResolvedUrl.endpoints.storageUrl;\n\t\tthis.ordererUrl = fluidResolvedUrl.endpoints.ordererUrl;\n\t\tthis.deltaStorageUrl = fluidResolvedUrl.endpoints.deltaStorageUrl;\n\t\tthis.deltaStreamUrl = fluidResolvedUrl.endpoints.deltaStreamUrl || this.ordererUrl;\n\t}\n\n\t/**\n\t * Whether enough time has passed since last disconnect to warrant a new discovery call on reconnect.\n\t */\n\tprivate shouldUpdateDiscoveredSessionInfo(): boolean {\n\t\tif (!this.driverPolicies.enableDiscovery) {\n\t\t\treturn false;\n\t\t}\n\t\tconst now = Date.now();\n\t\t// When connection is disconnected, we cannot know if session has moved or document has been deleted\n\t\t// without re-doing discovery on the next attempt to connect.\n\t\t// Disconnect event is not so reliable in local testing. To ensure re-discovery when necessary,\n\t\t// re-discover if enough time has passed since last discovery.\n\t\tconst pastLastDiscoveryTimeThreshold =\n\t\t\tnow - this.lastDiscoveredAt > RediscoverAfterTimeSinceDiscoveryMs;\n\t\tif (pastLastDiscoveryTimeThreshold) {\n\t\t\t// Reset discover promise and refresh discovery.\n\t\t\tthis.lastDiscoveredAt = Date.now();\n\t\t\tthis.discoverP = undefined;\n\t\t\tthis.refreshDiscovery().catch(() => {\n\t\t\t\t// Undo discovery time set on failure, so that next check refreshes.\n\t\t\t\tthis.lastDiscoveredAt = 0;\n\t\t\t});\n\t\t}\n\t\treturn pastLastDiscoveryTimeThreshold;\n\t}\n}\n"]}
1
+ {"version":3,"file":"documentService.js","sourceRoot":"","sources":["../src/documentService.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { TypedEventEmitter } from \"@fluid-internal/client-utils\";\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { IClient } from \"@fluidframework/driver-definitions\";\nimport {\n\tIDocumentServiceEvents,\n\tIDocumentDeltaConnection,\n\tIDocumentDeltaStorageService,\n\tIDocumentService,\n\tIDocumentStorageService,\n\tIDocumentStorageServicePolicies,\n\tIResolvedUrl,\n} from \"@fluidframework/driver-definitions/internal\";\nimport {\n\tNetworkErrorBasic,\n\tRateLimiter,\n\tcanRetryOnError,\n} from \"@fluidframework/driver-utils/internal\";\nimport {\n\tITelemetryLoggerExt,\n\tPerformanceEvent,\n\twrapError,\n} from \"@fluidframework/telemetry-utils/internal\";\nimport io from \"socket.io-client\";\n\nimport { ICache } from \"./cache.js\";\nimport { INormalizedWholeSnapshot } from \"./contracts.js\";\nimport { ISnapshotTreeVersion } from \"./definitions.js\";\nimport { DeltaStorageService, DocumentDeltaStorageService } from \"./deltaStorageService.js\";\nimport { R11sDocumentDeltaConnection } from \"./documentDeltaConnection.js\";\nimport { DocumentStorageService } from \"./documentStorageService.js\";\nimport { RouterliciousErrorTypes } from \"./errorUtils.js\";\nimport { GitManager } from \"./gitManager.js\";\nimport { Historian } from \"./historian.js\";\nimport { NullBlobStorageService } from \"./nullBlobStorageService.js\";\nimport { pkgVersion as driverVersion } from \"./packageVersion.js\";\nimport { IRouterliciousDriverPolicies } from \"./policies.js\";\nimport {\n\tRouterliciousOrdererRestWrapper,\n\tRouterliciousStorageRestWrapper,\n\tTokenFetcher,\n} from \"./restWrapper.js\";\nimport { RestWrapper } from \"./restWrapperBase.js\";\nimport { ITokenProvider } from \"./tokens.js\";\n\n/**\n * Amount of time between discoveries within which we don't need to rediscover on re-connect.\n * Currently, R11s defines session length at 10 minutes. To avoid any weird unknown edge-cases though,\n * we set the limit to 5 minutes here.\n * In the future, we likely want to retrieve this information from service's \"inactive session\" definition.\n */\nconst RediscoverAfterTimeSinceDiscoveryMs = 5 * 60000; // 5 minute\n\n/**\n * The DocumentService manages the Socket.IO connection and manages routing requests to connected\n * clients.\n */\nexport class DocumentService\n\textends TypedEventEmitter<IDocumentServiceEvents>\n\t// eslint-disable-next-line import/namespace\n\timplements IDocumentService\n{\n\tprivate lastDiscoveredAt: number = Date.now();\n\tprivate discoverP: Promise<void> | undefined;\n\n\tprivate storageManager: GitManager | undefined;\n\tprivate noCacheStorageManager: GitManager | undefined;\n\n\tpublic get resolvedUrl() {\n\t\treturn this._resolvedUrl;\n\t}\n\n\tconstructor(\n\t\tprivate _resolvedUrl: IResolvedUrl,\n\t\tprotected ordererUrl: string,\n\t\tprivate deltaStorageUrl: string,\n\t\tprivate deltaStreamUrl: string,\n\t\tprivate storageUrl: string,\n\t\tprivate readonly logger: ITelemetryLoggerExt,\n\t\tprotected tokenProvider: ITokenProvider,\n\t\tprotected tenantId: string,\n\t\tprotected documentId: string,\n\t\tprotected ordererRestWrapper: RouterliciousOrdererRestWrapper,\n\t\tprivate readonly documentStorageServicePolicies: IDocumentStorageServicePolicies,\n\t\tprivate readonly driverPolicies: IRouterliciousDriverPolicies,\n\t\tprivate readonly blobCache: ICache<ArrayBufferLike>,\n\t\tprivate readonly wholeSnapshotTreeCache: ICache<INormalizedWholeSnapshot>,\n\t\tprivate readonly shreddedSummaryTreeCache: ICache<ISnapshotTreeVersion>,\n\t\tprivate readonly discoverFluidResolvedUrl: () => Promise<IResolvedUrl>,\n\t\tprivate storageRestWrapper: RouterliciousStorageRestWrapper,\n\t\tprivate readonly storageTokenFetcher: TokenFetcher,\n\t\tprivate readonly ordererTokenFetcher: TokenFetcher,\n\t) {\n\t\tsuper();\n\t}\n\n\tprivate documentStorageService: DocumentStorageService | undefined;\n\n\tpublic dispose() {}\n\n\t/**\n\t * Connects to a storage endpoint for snapshot service.\n\t *\n\t * @returns returns the document storage service for routerlicious driver.\n\t */\n\tpublic async connectToStorage(): Promise<IDocumentStorageService> {\n\t\tif (this.documentStorageService !== undefined) {\n\t\t\treturn this.documentStorageService;\n\t\t}\n\n\t\tif (this.storageUrl === undefined) {\n\t\t\treturn new NullBlobStorageService();\n\t\t}\n\n\t\tconst getStorageManager = async (disableCache?: boolean): Promise<GitManager> => {\n\t\t\tconst shouldUpdateDiscoveredSessionInfo = this.shouldUpdateDiscoveredSessionInfo();\n\t\t\tif (shouldUpdateDiscoveredSessionInfo) {\n\t\t\t\tawait this.refreshDiscovery();\n\t\t\t}\n\t\t\tif (\n\t\t\t\t!this.storageManager ||\n\t\t\t\t!this.noCacheStorageManager ||\n\t\t\t\tshouldUpdateDiscoveredSessionInfo\n\t\t\t) {\n\t\t\t\tif (shouldUpdateDiscoveredSessionInfo) {\n\t\t\t\t\tconst rateLimiter = new RateLimiter(\n\t\t\t\t\t\tthis.driverPolicies.maxConcurrentStorageRequests,\n\t\t\t\t\t);\n\t\t\t\t\tthis.storageRestWrapper = RouterliciousStorageRestWrapper.load(\n\t\t\t\t\t\tthis.tenantId,\n\t\t\t\t\t\tthis.storageTokenFetcher,\n\t\t\t\t\t\tthis.logger,\n\t\t\t\t\t\trateLimiter,\n\t\t\t\t\t\tthis.driverPolicies.enableRestLess,\n\t\t\t\t\t\tthis.storageUrl,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tconst historian = new Historian(true, false, this.storageRestWrapper);\n\t\t\t\tthis.storageManager = new GitManager(historian);\n\t\t\t\tconst noCacheHistorian = new Historian(true, true, this.storageRestWrapper);\n\t\t\t\tthis.noCacheStorageManager = new GitManager(noCacheHistorian);\n\t\t\t}\n\n\t\t\treturn disableCache ? this.noCacheStorageManager : this.storageManager;\n\t\t};\n\t\t// Initialize storageManager and noCacheStorageManager\n\t\tconst storageManager = await getStorageManager();\n\t\tconst noCacheStorageManager = await getStorageManager(true);\n\t\tthis.documentStorageService = new DocumentStorageService(\n\t\t\tthis.documentId,\n\t\t\tstorageManager,\n\t\t\tthis.logger,\n\t\t\tthis.documentStorageServicePolicies,\n\t\t\tthis.driverPolicies,\n\t\t\tthis.blobCache,\n\t\t\tthis.wholeSnapshotTreeCache,\n\t\t\tthis.shreddedSummaryTreeCache,\n\t\t\tnoCacheStorageManager,\n\t\t\tgetStorageManager,\n\t\t);\n\t\treturn this.documentStorageService;\n\t}\n\n\t/**\n\t * Connects to a delta storage endpoint for getting ops between a range.\n\t *\n\t * @returns returns the document delta storage service for routerlicious driver.\n\t */\n\tpublic async connectToDeltaStorage(): Promise<IDocumentDeltaStorageService> {\n\t\tawait this.connectToStorage();\n\t\tassert(!!this.documentStorageService, 0x0b1 /* \"Storage service not initialized\" */);\n\n\t\tconst getRestWrapper = async (): Promise<RestWrapper> => {\n\t\t\tconst shouldUpdateDiscoveredSessionInfo = this.shouldUpdateDiscoveredSessionInfo();\n\n\t\t\tif (shouldUpdateDiscoveredSessionInfo) {\n\t\t\t\tawait this.refreshDiscovery();\n\t\t\t\tconst rateLimiter = new RateLimiter(\n\t\t\t\t\tthis.driverPolicies.maxConcurrentOrdererRequests,\n\t\t\t\t);\n\t\t\t\tthis.ordererRestWrapper = RouterliciousOrdererRestWrapper.load(\n\t\t\t\t\tthis.ordererTokenFetcher,\n\t\t\t\t\tthis.logger,\n\t\t\t\t\trateLimiter,\n\t\t\t\t\tthis.driverPolicies.enableRestLess,\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn this.ordererRestWrapper;\n\t\t};\n\t\tconst restWrapper = await getRestWrapper();\n\t\tconst deltaStorageService = new DeltaStorageService(\n\t\t\tthis.deltaStorageUrl,\n\t\t\trestWrapper,\n\t\t\tthis.logger,\n\t\t\tgetRestWrapper,\n\t\t\t() => this.deltaStorageUrl,\n\t\t);\n\t\treturn new DocumentDeltaStorageService(\n\t\t\tthis.tenantId,\n\t\t\tthis.documentId,\n\t\t\tdeltaStorageService,\n\t\t\tthis.documentStorageService,\n\t\t\tthis.logger,\n\t\t);\n\t}\n\n\t/**\n\t * Connects to a delta stream endpoint for emitting ops.\n\t *\n\t * @returns returns the document delta stream service for routerlicious driver.\n\t */\n\tpublic async connectToDeltaStream(client: IClient): Promise<IDocumentDeltaConnection> {\n\t\tconst connect = async (refreshToken?: boolean) => {\n\t\t\tlet ordererToken = await this.ordererRestWrapper.getToken();\n\t\t\tif (this.shouldUpdateDiscoveredSessionInfo()) {\n\t\t\t\tawait this.refreshDiscovery();\n\t\t\t}\n\n\t\t\tif (refreshToken) {\n\t\t\t\tordererToken = await PerformanceEvent.timedExecAsync(\n\t\t\t\t\tthis.logger,\n\t\t\t\t\t{\n\t\t\t\t\t\teventName: \"GetDeltaStreamToken\",\n\t\t\t\t\t\tdocId: this.documentId,\n\t\t\t\t\t\tdetails: JSON.stringify({\n\t\t\t\t\t\t\trefreshToken,\n\t\t\t\t\t\t}),\n\t\t\t\t\t},\n\t\t\t\t\tasync () =>\n\t\t\t\t\t\tthis.tokenProvider\n\t\t\t\t\t\t\t.fetchOrdererToken(this.tenantId, this.documentId, refreshToken)\n\t\t\t\t\t\t\t.then(\n\t\t\t\t\t\t\t\t(newOrdererToken) => {\n\t\t\t\t\t\t\t\t\tthis.ordererRestWrapper.setToken(newOrdererToken);\n\t\t\t\t\t\t\t\t\treturn newOrdererToken;\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t(error) => {\n\t\t\t\t\t\t\t\t\tconst tokenError = wrapError(\n\t\t\t\t\t\t\t\t\t\terror,\n\t\t\t\t\t\t\t\t\t\t(errorMessage) =>\n\t\t\t\t\t\t\t\t\t\t\tnew NetworkErrorBasic(\n\t\t\t\t\t\t\t\t\t\t\t\t`The Host-provided token fetcher threw an error`,\n\t\t\t\t\t\t\t\t\t\t\t\tRouterliciousErrorTypes.fetchTokenError,\n\t\t\t\t\t\t\t\t\t\t\t\tcanRetryOnError(error),\n\t\t\t\t\t\t\t\t\t\t\t\t{ errorMessage, driverVersion },\n\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\tthrow tokenError;\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn PerformanceEvent.timedExecAsync(\n\t\t\t\tthis.logger,\n\t\t\t\t{\n\t\t\t\t\teventName: \"ConnectToDeltaStream\",\n\t\t\t\t\tdocId: this.documentId,\n\t\t\t\t},\n\t\t\t\tasync () => {\n\t\t\t\t\treturn R11sDocumentDeltaConnection.create(\n\t\t\t\t\t\tthis.tenantId,\n\t\t\t\t\t\tthis.documentId,\n\t\t\t\t\t\tordererToken.jwt,\n\t\t\t\t\t\tio,\n\t\t\t\t\t\tclient,\n\t\t\t\t\t\tthis.deltaStreamUrl,\n\t\t\t\t\t\tthis.logger,\n\t\t\t\t\t\tundefined /* timeoutMs */,\n\t\t\t\t\t\tthis.driverPolicies.enableLongPollingDowngrade,\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t);\n\t\t};\n\n\t\t// Attempt to establish connection.\n\t\t// Retry with new token on authorization error; otherwise, allow container layer to handle.\n\t\ttry {\n\t\t\tconst connection = await connect();\n\t\t\treturn connection;\n\t\t} catch (error: any) {\n\t\t\tif (error?.statusCode === 401) {\n\t\t\t\t// Fetch new token and retry once,\n\t\t\t\t// otherwise 401 will be bubbled up as non-retriable AuthorizationError.\n\t\t\t\treturn connect(true /* refreshToken */);\n\t\t\t}\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\t/**\n\t * Re-discover session URLs if necessary.\n\t */\n\tprivate async refreshDiscovery(): Promise<void> {\n\t\tif (!this.discoverP) {\n\t\t\tthis.discoverP = PerformanceEvent.timedExecAsync(\n\t\t\t\tthis.logger,\n\t\t\t\t{\n\t\t\t\t\teventName: \"RefreshDiscovery\",\n\t\t\t\t},\n\t\t\t\tasync () => this.refreshDiscoveryCore(),\n\t\t\t);\n\t\t}\n\t\treturn this.discoverP;\n\t}\n\n\tprivate async refreshDiscoveryCore(): Promise<void> {\n\t\tconst fluidResolvedUrl = await this.discoverFluidResolvedUrl();\n\t\tthis._resolvedUrl = fluidResolvedUrl;\n\t\tthis.storageUrl = fluidResolvedUrl.endpoints.storageUrl;\n\t\tthis.ordererUrl = fluidResolvedUrl.endpoints.ordererUrl;\n\t\tthis.deltaStorageUrl = fluidResolvedUrl.endpoints.deltaStorageUrl;\n\t\tthis.deltaStreamUrl = fluidResolvedUrl.endpoints.deltaStreamUrl || this.ordererUrl;\n\t}\n\n\t/**\n\t * Whether enough time has passed since last disconnect to warrant a new discovery call on reconnect.\n\t */\n\tprivate shouldUpdateDiscoveredSessionInfo(): boolean {\n\t\tif (!this.driverPolicies.enableDiscovery) {\n\t\t\treturn false;\n\t\t}\n\t\tconst now = Date.now();\n\t\t// When connection is disconnected, we cannot know if session has moved or document has been deleted\n\t\t// without re-doing discovery on the next attempt to connect.\n\t\t// Disconnect event is not so reliable in local testing. To ensure re-discovery when necessary,\n\t\t// re-discover if enough time has passed since last discovery.\n\t\tconst pastLastDiscoveryTimeThreshold =\n\t\t\tnow - this.lastDiscoveredAt > RediscoverAfterTimeSinceDiscoveryMs;\n\t\tif (pastLastDiscoveryTimeThreshold) {\n\t\t\t// Reset discover promise and refresh discovery.\n\t\t\tthis.lastDiscoveredAt = Date.now();\n\t\t\tthis.discoverP = undefined;\n\t\t\tthis.refreshDiscovery().catch(() => {\n\t\t\t\t// Undo discovery time set on failure, so that next check refreshes.\n\t\t\t\tthis.lastDiscoveredAt = 0;\n\t\t\t});\n\t\t}\n\t\treturn pastLastDiscoveryTimeThreshold;\n\t}\n}\n"]}
@@ -3,8 +3,8 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
  import { ITelemetryBaseLogger } from "@fluidframework/core-interfaces";
6
+ import { ISummaryTree } from "@fluidframework/driver-definitions";
6
7
  import { IDocumentService, IDocumentServiceFactory, IResolvedUrl } from "@fluidframework/driver-definitions/internal";
7
- import { ISummaryTree } from "@fluidframework/protocol-definitions";
8
8
  import { ISession } from "@fluidframework/server-services-client";
9
9
  import { IRouterliciousDriverPolicies } from "./policies.js";
10
10
  import { ITokenProvider } from "./tokens.js";
@@ -1 +1 @@
1
- {"version":3,"file":"documentServiceFactory.d.ts","sourceRoot":"","sources":["../src/documentServiceFactory.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAGvE,OAAO,EAEN,gBAAgB,EAChB,uBAAuB,EAEvB,YAAY,EAEZ,MAAM,6CAA6C,CAAC;AAOrD,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACpE,OAAO,EACN,QAAQ,EAER,MAAM,wCAAwC,CAAC;AAQhD,OAAO,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAC;AAQ7D,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAgB7C;;;;GAIG;AACH,qBAAa,mCAAoC,YAAW,uBAAuB;IAOjF,OAAO,CAAC,QAAQ,CAAC,aAAa;IAN/B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA+B;IAC9D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA0B;IACpD,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAqD;IAC5F,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAiD;gBAGxE,aAAa,EAAE,cAAc,EAC9C,cAAc,GAAE,OAAO,CAAC,4BAA4B,CAAM;IAuB3D;;;;;OAKG;IACU,eAAe,CAC3B,gBAAgB,EAAE,YAAY,GAAG,SAAS,EAC1C,WAAW,EAAE,YAAY,EACzB,MAAM,CAAC,EAAE,oBAAoB,EAC7B,kBAAkB,CAAC,EAAE,OAAO,GAC1B,OAAO,CAAC,gBAAgB,CAAC;IAwI5B;;;;OAIG;IACU,qBAAqB,CACjC,WAAW,EAAE,YAAY,EACzB,MAAM,CAAC,EAAE,oBAAoB,EAC7B,kBAAkB,CAAC,EAAE,OAAO,EAC5B,OAAO,CAAC,EAAE,QAAQ,GAChB,OAAO,CAAC,gBAAgB,CAAC;CAwH5B;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,uBAAwB,SAAQ,KAAK;IAEhD;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,UAAU;;IAH3B;;OAEG;IACc,UAAU,EAAE,KAAK;IAKnC,SAAgB,IAAI,6BAA6B;IAEjD,IAAW,KAAK,uBAEf;CACD"}
1
+ {"version":3,"file":"documentServiceFactory.d.ts","sourceRoot":"","sources":["../src/documentServiceFactory.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAGvE,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAClE,OAAO,EAEN,gBAAgB,EAChB,uBAAuB,EAEvB,YAAY,EAEZ,MAAM,6CAA6C,CAAC;AAOrD,OAAO,EACN,QAAQ,EAER,MAAM,wCAAwC,CAAC;AAQhD,OAAO,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAC;AAQ7D,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAgB7C;;;;GAIG;AACH,qBAAa,mCAAoC,YAAW,uBAAuB;IAOjF,OAAO,CAAC,QAAQ,CAAC,aAAa;IAN/B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA+B;IAC9D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA0B;IACpD,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAqD;IAC5F,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAiD;gBAGxE,aAAa,EAAE,cAAc,EAC9C,cAAc,GAAE,OAAO,CAAC,4BAA4B,CAAM;IAuB3D;;;;;OAKG;IACU,eAAe,CAC3B,gBAAgB,EAAE,YAAY,GAAG,SAAS,EAC1C,WAAW,EAAE,YAAY,EACzB,MAAM,CAAC,EAAE,oBAAoB,EAC7B,kBAAkB,CAAC,EAAE,OAAO,GAC1B,OAAO,CAAC,gBAAgB,CAAC;IAwI5B;;;;OAIG;IACU,qBAAqB,CACjC,WAAW,EAAE,YAAY,EACzB,MAAM,CAAC,EAAE,oBAAoB,EAC7B,kBAAkB,CAAC,EAAE,OAAO,EAC5B,OAAO,CAAC,EAAE,QAAQ,GAChB,OAAO,CAAC,gBAAgB,CAAC;CAwH5B;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,uBAAwB,SAAQ,KAAK;IAEhD;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,UAAU;;IAH3B;;OAEG;IACc,UAAU,EAAE,KAAK;IAKnC,SAAgB,IAAI,6BAA6B;IAEjD,IAAW,KAAK,uBAEf;CACD"}