@fluidframework/container-loader 1.4.0-121020 → 2.0.0-dev-rc.1.0.0.224419

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 (333) hide show
  1. package/.eslintrc.js +18 -21
  2. package/.mocharc.js +12 -0
  3. package/CHANGELOG.md +364 -0
  4. package/README.md +152 -56
  5. package/api-extractor-lint.json +4 -0
  6. package/api-extractor.json +2 -2
  7. package/api-report/container-loader.api.md +143 -0
  8. package/dist/{audience.js → audience.cjs} +15 -13
  9. package/dist/audience.cjs.map +1 -0
  10. package/dist/audience.d.ts +4 -6
  11. package/dist/audience.d.ts.map +1 -1
  12. package/dist/catchUpMonitor.cjs +43 -0
  13. package/dist/catchUpMonitor.cjs.map +1 -0
  14. package/dist/catchUpMonitor.d.ts +29 -0
  15. package/dist/catchUpMonitor.d.ts.map +1 -0
  16. package/dist/{connectionManager.js → connectionManager.cjs} +397 -240
  17. package/dist/connectionManager.cjs.map +1 -0
  18. package/dist/connectionManager.d.ts +23 -33
  19. package/dist/connectionManager.d.ts.map +1 -1
  20. package/dist/{connectionState.js → connectionState.cjs} +5 -7
  21. package/dist/connectionState.cjs.map +1 -0
  22. package/dist/connectionState.d.ts +3 -5
  23. package/dist/connectionState.d.ts.map +1 -1
  24. package/dist/connectionStateHandler.cjs +474 -0
  25. package/dist/connectionStateHandler.cjs.map +1 -0
  26. package/dist/connectionStateHandler.d.ts +127 -29
  27. package/dist/connectionStateHandler.d.ts.map +1 -1
  28. package/dist/container-loader-alpha.d.ts +274 -0
  29. package/dist/container-loader-beta.d.ts +75 -0
  30. package/dist/container-loader-public.d.ts +75 -0
  31. package/dist/container-loader-untrimmed.d.ts +331 -0
  32. package/dist/container.cjs +1585 -0
  33. package/dist/container.cjs.map +1 -0
  34. package/dist/container.d.ts +227 -83
  35. package/dist/container.d.ts.map +1 -1
  36. package/dist/containerContext.cjs +74 -0
  37. package/dist/containerContext.cjs.map +1 -0
  38. package/dist/containerContext.d.ts +33 -59
  39. package/dist/containerContext.d.ts.map +1 -1
  40. package/dist/containerStorageAdapter.cjs +234 -0
  41. package/dist/containerStorageAdapter.cjs.map +1 -0
  42. package/dist/containerStorageAdapter.d.ts +48 -23
  43. package/dist/containerStorageAdapter.d.ts.map +1 -1
  44. package/dist/{contracts.js → contracts.cjs} +5 -5
  45. package/dist/contracts.cjs.map +1 -0
  46. package/dist/contracts.d.ts +45 -17
  47. package/dist/contracts.d.ts.map +1 -1
  48. package/dist/debugLogger.cjs +101 -0
  49. package/dist/debugLogger.cjs.map +1 -0
  50. package/dist/debugLogger.d.ts +30 -0
  51. package/dist/debugLogger.d.ts.map +1 -0
  52. package/dist/{deltaManager.js → deltaManager.cjs} +379 -186
  53. package/dist/deltaManager.cjs.map +1 -0
  54. package/dist/deltaManager.d.ts +54 -18
  55. package/dist/deltaManager.d.ts.map +1 -1
  56. package/dist/{deltaQueue.js → deltaQueue.cjs} +29 -28
  57. package/dist/deltaQueue.cjs.map +1 -0
  58. package/dist/deltaQueue.d.ts +3 -4
  59. package/dist/deltaQueue.d.ts.map +1 -1
  60. package/dist/disposal.cjs +25 -0
  61. package/dist/disposal.cjs.map +1 -0
  62. package/dist/disposal.d.ts +13 -0
  63. package/dist/disposal.d.ts.map +1 -0
  64. package/dist/error.cjs +32 -0
  65. package/dist/error.cjs.map +1 -0
  66. package/dist/error.d.ts +23 -0
  67. package/dist/error.d.ts.map +1 -0
  68. package/dist/index.cjs +19 -0
  69. package/dist/index.cjs.map +1 -0
  70. package/dist/index.d.ts +5 -2
  71. package/dist/index.d.ts.map +1 -1
  72. package/dist/loader.cjs +148 -0
  73. package/dist/loader.cjs.map +1 -0
  74. package/dist/loader.d.ts +38 -19
  75. package/dist/loader.d.ts.map +1 -1
  76. package/dist/location-redirection-utilities/index.cjs +11 -0
  77. package/dist/location-redirection-utilities/index.cjs.map +1 -0
  78. package/dist/location-redirection-utilities/index.d.ts +6 -0
  79. package/dist/location-redirection-utilities/index.d.ts.map +1 -0
  80. package/dist/location-redirection-utilities/resolveWithLocationRedirection.cjs +53 -0
  81. package/dist/location-redirection-utilities/resolveWithLocationRedirection.cjs.map +1 -0
  82. package/dist/location-redirection-utilities/resolveWithLocationRedirection.d.ts +24 -0
  83. package/dist/location-redirection-utilities/resolveWithLocationRedirection.d.ts.map +1 -0
  84. package/dist/{collabWindowTracker.js → noopHeuristic.cjs} +37 -39
  85. package/dist/noopHeuristic.cjs.map +1 -0
  86. package/dist/noopHeuristic.d.ts +23 -0
  87. package/dist/noopHeuristic.d.ts.map +1 -0
  88. package/dist/{packageVersion.js → packageVersion.cjs} +2 -2
  89. package/dist/packageVersion.cjs.map +1 -0
  90. package/dist/packageVersion.d.ts +1 -1
  91. package/dist/packageVersion.d.ts.map +1 -1
  92. package/dist/protocol.cjs +99 -0
  93. package/dist/protocol.cjs.map +1 -0
  94. package/dist/protocol.d.ts +38 -0
  95. package/dist/protocol.d.ts.map +1 -0
  96. package/dist/{protocolTreeDocumentStorageService.js → protocolTreeDocumentStorageService.cjs} +8 -5
  97. package/dist/protocolTreeDocumentStorageService.cjs.map +1 -0
  98. package/dist/protocolTreeDocumentStorageService.d.ts +8 -4
  99. package/dist/protocolTreeDocumentStorageService.d.ts.map +1 -1
  100. package/dist/quorum.cjs +16 -0
  101. package/dist/quorum.cjs.map +1 -0
  102. package/dist/quorum.d.ts +1 -14
  103. package/dist/quorum.d.ts.map +1 -1
  104. package/dist/{retriableDocumentStorageService.js → retriableDocumentStorageService.cjs} +36 -21
  105. package/dist/retriableDocumentStorageService.cjs.map +1 -0
  106. package/dist/retriableDocumentStorageService.d.ts +7 -5
  107. package/dist/retriableDocumentStorageService.d.ts.map +1 -1
  108. package/dist/tsdoc-metadata.json +11 -0
  109. package/dist/{utils.js → utils.cjs} +52 -14
  110. package/dist/utils.cjs.map +1 -0
  111. package/dist/utils.d.ts +34 -1
  112. package/dist/utils.d.ts.map +1 -1
  113. package/lib/{audience.d.ts → audience.d.mts} +4 -10
  114. package/lib/audience.d.mts.map +1 -0
  115. package/lib/{audience.js → audience.mjs} +15 -17
  116. package/lib/audience.mjs.map +1 -0
  117. package/lib/catchUpMonitor.d.mts +29 -0
  118. package/lib/catchUpMonitor.d.mts.map +1 -0
  119. package/lib/catchUpMonitor.mjs +39 -0
  120. package/lib/catchUpMonitor.mjs.map +1 -0
  121. package/lib/{connectionManager.d.ts → connectionManager.d.mts} +23 -33
  122. package/lib/connectionManager.d.mts.map +1 -0
  123. package/lib/{connectionManager.js → connectionManager.mjs} +378 -218
  124. package/lib/connectionManager.mjs.map +1 -0
  125. package/lib/{connectionState.d.ts → connectionState.d.mts} +3 -5
  126. package/lib/connectionState.d.mts.map +1 -0
  127. package/lib/{connectionState.js → connectionState.mjs} +4 -6
  128. package/lib/connectionState.mjs.map +1 -0
  129. package/lib/connectionStateHandler.d.mts +179 -0
  130. package/lib/connectionStateHandler.d.mts.map +1 -0
  131. package/lib/connectionStateHandler.mjs +469 -0
  132. package/lib/connectionStateHandler.mjs.map +1 -0
  133. package/lib/container-loader-alpha.d.mts +274 -0
  134. package/lib/container-loader-beta.d.mts +75 -0
  135. package/lib/container-loader-public.d.mts +75 -0
  136. package/lib/container-loader-untrimmed.d.mts +331 -0
  137. package/lib/container.d.mts +382 -0
  138. package/lib/container.d.mts.map +1 -0
  139. package/lib/container.mjs +1579 -0
  140. package/lib/container.mjs.map +1 -0
  141. package/lib/containerContext.d.mts +58 -0
  142. package/lib/containerContext.d.mts.map +1 -0
  143. package/lib/containerContext.mjs +70 -0
  144. package/lib/containerContext.mjs.map +1 -0
  145. package/lib/containerStorageAdapter.d.mts +73 -0
  146. package/lib/containerStorageAdapter.d.mts.map +1 -0
  147. package/lib/containerStorageAdapter.mjs +228 -0
  148. package/lib/containerStorageAdapter.mjs.map +1 -0
  149. package/lib/{contracts.d.ts → contracts.d.mts} +45 -17
  150. package/lib/contracts.d.mts.map +1 -0
  151. package/lib/{contracts.js → contracts.mjs} +4 -4
  152. package/lib/contracts.mjs.map +1 -0
  153. package/lib/debugLogger.d.mts +30 -0
  154. package/lib/debugLogger.d.mts.map +1 -0
  155. package/lib/debugLogger.mjs +93 -0
  156. package/lib/debugLogger.mjs.map +1 -0
  157. package/lib/{deltaManager.d.ts → deltaManager.d.mts} +54 -18
  158. package/lib/deltaManager.d.mts.map +1 -0
  159. package/lib/{deltaManager.js → deltaManager.mjs} +361 -165
  160. package/lib/deltaManager.mjs.map +1 -0
  161. package/lib/{deltaQueue.d.ts → deltaQueue.d.mts} +3 -4
  162. package/lib/deltaQueue.d.mts.map +1 -0
  163. package/lib/{deltaQueue.js → deltaQueue.mjs} +25 -24
  164. package/lib/deltaQueue.mjs.map +1 -0
  165. package/lib/disposal.d.mts +13 -0
  166. package/lib/disposal.d.mts.map +1 -0
  167. package/lib/disposal.mjs +21 -0
  168. package/lib/disposal.mjs.map +1 -0
  169. package/lib/error.d.mts +23 -0
  170. package/lib/error.d.mts.map +1 -0
  171. package/lib/error.mjs +28 -0
  172. package/lib/error.mjs.map +1 -0
  173. package/lib/index.d.mts +11 -0
  174. package/lib/index.d.mts.map +1 -0
  175. package/lib/index.mjs +10 -0
  176. package/lib/index.mjs.map +1 -0
  177. package/lib/{loader.d.ts → loader.d.mts} +39 -20
  178. package/lib/loader.d.mts.map +1 -0
  179. package/lib/loader.mjs +143 -0
  180. package/lib/loader.mjs.map +1 -0
  181. package/lib/location-redirection-utilities/index.d.mts +6 -0
  182. package/lib/location-redirection-utilities/index.d.mts.map +1 -0
  183. package/lib/location-redirection-utilities/index.mjs +6 -0
  184. package/lib/location-redirection-utilities/index.mjs.map +1 -0
  185. package/lib/location-redirection-utilities/resolveWithLocationRedirection.d.mts +24 -0
  186. package/lib/location-redirection-utilities/resolveWithLocationRedirection.d.mts.map +1 -0
  187. package/lib/location-redirection-utilities/resolveWithLocationRedirection.mjs +48 -0
  188. package/lib/location-redirection-utilities/resolveWithLocationRedirection.mjs.map +1 -0
  189. package/lib/noopHeuristic.d.mts +23 -0
  190. package/lib/noopHeuristic.d.mts.map +1 -0
  191. package/lib/{collabWindowTracker.js → noopHeuristic.mjs} +33 -35
  192. package/lib/noopHeuristic.mjs.map +1 -0
  193. package/lib/{packageVersion.d.ts → packageVersion.d.mts} +1 -1
  194. package/lib/{packageVersion.d.ts.map → packageVersion.d.mts.map} +1 -1
  195. package/lib/{packageVersion.js → packageVersion.mjs} +2 -2
  196. package/lib/packageVersion.mjs.map +1 -0
  197. package/lib/protocol.d.mts +38 -0
  198. package/lib/protocol.d.mts.map +1 -0
  199. package/lib/protocol.mjs +94 -0
  200. package/lib/protocol.mjs.map +1 -0
  201. package/lib/{protocolTreeDocumentStorageService.d.ts → protocolTreeDocumentStorageService.d.mts} +8 -4
  202. package/lib/protocolTreeDocumentStorageService.d.mts.map +1 -0
  203. package/lib/{protocolTreeDocumentStorageService.js → protocolTreeDocumentStorageService.mjs} +8 -5
  204. package/lib/protocolTreeDocumentStorageService.mjs.map +1 -0
  205. package/lib/quorum.d.mts +4 -0
  206. package/lib/quorum.d.mts.map +1 -0
  207. package/lib/quorum.mjs +12 -0
  208. package/lib/quorum.mjs.map +1 -0
  209. package/lib/{retriableDocumentStorageService.d.ts → retriableDocumentStorageService.d.mts} +7 -5
  210. package/lib/retriableDocumentStorageService.d.mts.map +1 -0
  211. package/lib/{retriableDocumentStorageService.js → retriableDocumentStorageService.mjs} +35 -20
  212. package/lib/retriableDocumentStorageService.mjs.map +1 -0
  213. package/lib/utils.d.mts +67 -0
  214. package/lib/utils.d.mts.map +1 -0
  215. package/lib/{utils.js → utils.mjs} +47 -11
  216. package/lib/utils.mjs.map +1 -0
  217. package/package.json +163 -70
  218. package/prettier.config.cjs +8 -0
  219. package/src/audience.ts +59 -49
  220. package/src/catchUpMonitor.ts +61 -0
  221. package/src/connectionManager.ts +1154 -910
  222. package/src/connectionState.ts +22 -25
  223. package/src/connectionStateHandler.ts +689 -319
  224. package/src/container.ts +2476 -1792
  225. package/src/containerContext.ts +98 -330
  226. package/src/containerStorageAdapter.ts +301 -105
  227. package/src/contracts.ts +184 -146
  228. package/src/debugLogger.ts +123 -0
  229. package/src/deltaManager.ts +1165 -900
  230. package/src/deltaQueue.ts +156 -152
  231. package/src/disposal.ts +25 -0
  232. package/src/error.ts +44 -0
  233. package/src/index.ts +14 -15
  234. package/src/loader.ts +356 -427
  235. package/src/location-redirection-utilities/index.ts +9 -0
  236. package/src/location-redirection-utilities/resolveWithLocationRedirection.ts +61 -0
  237. package/src/noopHeuristic.ts +107 -0
  238. package/src/packageVersion.ts +1 -1
  239. package/src/protocol.ts +150 -0
  240. package/src/protocolTreeDocumentStorageService.ts +35 -35
  241. package/src/quorum.ts +11 -50
  242. package/src/retriableDocumentStorageService.ts +135 -95
  243. package/src/utils.ts +159 -86
  244. package/tsc-multi.test.json +4 -0
  245. package/tsconfig.json +10 -12
  246. package/dist/audience.js.map +0 -1
  247. package/dist/collabWindowTracker.d.ts +0 -19
  248. package/dist/collabWindowTracker.d.ts.map +0 -1
  249. package/dist/collabWindowTracker.js.map +0 -1
  250. package/dist/connectionManager.js.map +0 -1
  251. package/dist/connectionState.js.map +0 -1
  252. package/dist/connectionStateHandler.js +0 -280
  253. package/dist/connectionStateHandler.js.map +0 -1
  254. package/dist/container.js +0 -1284
  255. package/dist/container.js.map +0 -1
  256. package/dist/containerContext.js +0 -217
  257. package/dist/containerContext.js.map +0 -1
  258. package/dist/containerStorageAdapter.js +0 -104
  259. package/dist/containerStorageAdapter.js.map +0 -1
  260. package/dist/contracts.js.map +0 -1
  261. package/dist/deltaManager.js.map +0 -1
  262. package/dist/deltaManagerProxy.d.ts +0 -54
  263. package/dist/deltaManagerProxy.d.ts.map +0 -1
  264. package/dist/deltaManagerProxy.js +0 -115
  265. package/dist/deltaManagerProxy.js.map +0 -1
  266. package/dist/deltaQueue.js.map +0 -1
  267. package/dist/index.js +0 -16
  268. package/dist/index.js.map +0 -1
  269. package/dist/loader.js +0 -241
  270. package/dist/loader.js.map +0 -1
  271. package/dist/packageVersion.js.map +0 -1
  272. package/dist/protocolTreeDocumentStorageService.js.map +0 -1
  273. package/dist/quorum.js +0 -44
  274. package/dist/quorum.js.map +0 -1
  275. package/dist/retriableDocumentStorageService.js.map +0 -1
  276. package/dist/utils.js.map +0 -1
  277. package/lib/audience.d.ts.map +0 -1
  278. package/lib/audience.js.map +0 -1
  279. package/lib/collabWindowTracker.d.ts +0 -19
  280. package/lib/collabWindowTracker.d.ts.map +0 -1
  281. package/lib/collabWindowTracker.js.map +0 -1
  282. package/lib/connectionManager.d.ts.map +0 -1
  283. package/lib/connectionManager.js.map +0 -1
  284. package/lib/connectionState.d.ts.map +0 -1
  285. package/lib/connectionState.js.map +0 -1
  286. package/lib/connectionStateHandler.d.ts +0 -81
  287. package/lib/connectionStateHandler.d.ts.map +0 -1
  288. package/lib/connectionStateHandler.js +0 -276
  289. package/lib/connectionStateHandler.js.map +0 -1
  290. package/lib/container.d.ts +0 -238
  291. package/lib/container.d.ts.map +0 -1
  292. package/lib/container.js +0 -1276
  293. package/lib/container.js.map +0 -1
  294. package/lib/containerContext.d.ts +0 -84
  295. package/lib/containerContext.d.ts.map +0 -1
  296. package/lib/containerContext.js +0 -213
  297. package/lib/containerContext.js.map +0 -1
  298. package/lib/containerStorageAdapter.d.ts +0 -48
  299. package/lib/containerStorageAdapter.d.ts.map +0 -1
  300. package/lib/containerStorageAdapter.js +0 -99
  301. package/lib/containerStorageAdapter.js.map +0 -1
  302. package/lib/contracts.d.ts.map +0 -1
  303. package/lib/contracts.js.map +0 -1
  304. package/lib/deltaManager.d.ts.map +0 -1
  305. package/lib/deltaManager.js.map +0 -1
  306. package/lib/deltaManagerProxy.d.ts +0 -54
  307. package/lib/deltaManagerProxy.d.ts.map +0 -1
  308. package/lib/deltaManagerProxy.js +0 -110
  309. package/lib/deltaManagerProxy.js.map +0 -1
  310. package/lib/deltaQueue.d.ts.map +0 -1
  311. package/lib/deltaQueue.js.map +0 -1
  312. package/lib/index.d.ts +0 -8
  313. package/lib/index.d.ts.map +0 -1
  314. package/lib/index.js +0 -8
  315. package/lib/index.js.map +0 -1
  316. package/lib/loader.d.ts.map +0 -1
  317. package/lib/loader.js +0 -236
  318. package/lib/loader.js.map +0 -1
  319. package/lib/packageVersion.js.map +0 -1
  320. package/lib/protocolTreeDocumentStorageService.d.ts.map +0 -1
  321. package/lib/protocolTreeDocumentStorageService.js.map +0 -1
  322. package/lib/quorum.d.ts +0 -21
  323. package/lib/quorum.d.ts.map +0 -1
  324. package/lib/quorum.js +0 -38
  325. package/lib/quorum.js.map +0 -1
  326. package/lib/retriableDocumentStorageService.d.ts.map +0 -1
  327. package/lib/retriableDocumentStorageService.js.map +0 -1
  328. package/lib/utils.d.ts +0 -34
  329. package/lib/utils.d.ts.map +0 -1
  330. package/lib/utils.js.map +0 -1
  331. package/src/collabWindowTracker.ts +0 -102
  332. package/src/deltaManagerProxy.ts +0 -158
  333. package/tsconfig.esnext.json +0 -7
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluidframework/container-loader",
3
- "version": "1.4.0-121020",
3
+ "version": "2.0.0-dev-rc.1.0.0.224419",
4
4
  "description": "Fluid container loader",
5
5
  "homepage": "https://fluidframework.com",
6
6
  "repository": {
@@ -11,45 +11,82 @@
11
11
  "license": "MIT",
12
12
  "author": "Microsoft and contributors",
13
13
  "sideEffects": false,
14
- "main": "dist/index.js",
15
- "module": "lib/index.js",
16
- "types": "dist/index.d.ts",
17
- "scripts": {
18
- "build": "npm run build:genver && concurrently npm:build:compile npm:lint && npm run build:docs",
19
- "build:commonjs": "npm run tsc && npm run typetests:gen && npm run build:test",
20
- "build:compile": "concurrently npm:build:commonjs npm:build:esnext",
21
- "build:docs": "api-extractor run --local --typescript-compiler-folder ../../../node_modules/typescript && copyfiles -u 1 ./_api-extractor-temp/doc-models/* ../../../_api-extractor-temp/",
22
- "build:esnext": "tsc --project ./tsconfig.esnext.json",
23
- "build:full": "npm run build",
24
- "build:full:compile": "npm run build:compile",
25
- "build:genver": "gen-version",
26
- "build:test": "tsc --project ./src/test/tsconfig.json",
27
- "ci:build:docs": "api-extractor run --typescript-compiler-folder ../../../node_modules/typescript && copyfiles -u 1 ./_api-extractor-temp/* ../../../_api-extractor-temp/",
28
- "clean": "rimraf dist lib *.tsbuildinfo *.build.log",
29
- "eslint": "eslint --format stylish src",
30
- "eslint:fix": "eslint --format stylish src --fix --fix-type problem,suggestion,layout",
31
- "lint": "npm run eslint",
32
- "lint:fix": "npm run eslint:fix",
33
- "test": "npm run test:mocha",
34
- "test:coverage": "nyc npm test -- --reporter xunit --reporter-option output=nyc/junit-report.xml",
35
- "test:mocha": "mocha --ignore 'dist/test/types/*' --recursive dist/test -r node_modules/@fluidframework/mocha-test-setup --unhandled-rejections=strict",
36
- "test:mocha:verbose": "cross-env FLUID_TEST_VERBOSE=1 npm run test:mocha",
37
- "tsc": "tsc",
38
- "tsc:watch": "tsc --watch",
39
- "typetests:gen": "flub generate typetests --generate --dir . --no-generateInName",
40
- "typetests:prepare": "flub generate typetests --prepare --dir . --pin"
14
+ "exports": {
15
+ ".": {
16
+ "import": {
17
+ "types": "./lib/index.d.mts",
18
+ "default": "./lib/index.mjs"
19
+ },
20
+ "require": {
21
+ "types": "./dist/index.d.ts",
22
+ "default": "./dist/index.cjs"
23
+ }
24
+ },
25
+ "./test/container": {
26
+ "import": {
27
+ "types": "./lib/container.d.mts",
28
+ "default": "./lib/container.mjs"
29
+ },
30
+ "require": {
31
+ "types": "./dist/container.d.ts",
32
+ "default": "./dist/container.cjs"
33
+ }
34
+ },
35
+ "./test/contracts": {
36
+ "import": {
37
+ "types": "./lib/contracts.d.mts",
38
+ "default": "./lib/contracts.mjs"
39
+ },
40
+ "require": {
41
+ "types": "./dist/contracts.d.ts",
42
+ "default": "./dist/contracts.cjs"
43
+ }
44
+ },
45
+ "./test/connectionManager": {
46
+ "import": {
47
+ "types": "./lib/connectionManager.d.mts",
48
+ "default": "./lib/connectionManager.mjs"
49
+ },
50
+ "require": {
51
+ "types": "./dist/connectionManager.d.ts",
52
+ "default": "./dist/connectionManager.cjs"
53
+ }
54
+ },
55
+ "./test/deltaManager": {
56
+ "import": {
57
+ "types": "./lib/deltaManager.d.mts",
58
+ "default": "./lib/deltaManager.mjs"
59
+ },
60
+ "require": {
61
+ "types": "./dist/deltaManager.d.ts",
62
+ "default": "./dist/deltaManager.cjs"
63
+ }
64
+ },
65
+ "./test/utils": {
66
+ "import": {
67
+ "types": "./lib/utils.d.mts",
68
+ "default": "./lib/utils.mjs"
69
+ },
70
+ "require": {
71
+ "types": "./dist/utils.d.ts",
72
+ "default": "./dist/utils.cjs"
73
+ }
74
+ }
41
75
  },
42
- "nyc": {
76
+ "main": "dist/index.cjs",
77
+ "module": "lib/index.mjs",
78
+ "types": "dist/index.d.ts",
79
+ "c8": {
43
80
  "all": true,
44
81
  "cache-dir": "nyc/.cache",
45
82
  "exclude": [
46
- "src/test/**/*.ts",
47
- "dist/test/**/*.js"
83
+ "src/test/**/*.*ts",
84
+ "dist/test/**/*.*js"
48
85
  ],
49
86
  "exclude-after-remap": false,
50
87
  "include": [
51
- "src/**/*.ts",
52
- "dist/**/*.js"
88
+ "src/**/*.*ts",
89
+ "dist/**/*.*js"
53
90
  ],
54
91
  "report-dir": "nyc/report",
55
92
  "reporter": [
@@ -60,52 +97,108 @@
60
97
  "temp-directory": "nyc/.nyc_output"
61
98
  },
62
99
  "dependencies": {
63
- "@fluidframework/common-definitions": "^0.20.1",
64
- "@fluidframework/common-utils": "^0.32.1",
65
- "@fluidframework/container-definitions": "1.4.0-121020",
66
- "@fluidframework/container-utils": "1.4.0-121020",
67
- "@fluidframework/core-interfaces": "1.4.0-121020",
68
- "@fluidframework/driver-definitions": "1.4.0-121020",
69
- "@fluidframework/driver-utils": "1.4.0-121020",
70
- "@fluidframework/protocol-base": "^0.1036.5000",
71
- "@fluidframework/protocol-definitions": "^0.1028.2000",
72
- "@fluidframework/telemetry-utils": "1.4.0-121020",
73
- "abort-controller": "^3.0.0",
100
+ "@fluid-internal/client-utils": "2.0.0-dev-rc.1.0.0.224419",
101
+ "@fluidframework/container-definitions": "2.0.0-dev-rc.1.0.0.224419",
102
+ "@fluidframework/core-interfaces": "2.0.0-dev-rc.1.0.0.224419",
103
+ "@fluidframework/core-utils": "2.0.0-dev-rc.1.0.0.224419",
104
+ "@fluidframework/driver-definitions": "2.0.0-dev-rc.1.0.0.224419",
105
+ "@fluidframework/driver-utils": "2.0.0-dev-rc.1.0.0.224419",
106
+ "@fluidframework/protocol-base": "^3.0.0-223236",
107
+ "@fluidframework/protocol-definitions": "^3.1.0-223007",
108
+ "@fluidframework/telemetry-utils": "2.0.0-dev-rc.1.0.0.224419",
109
+ "debug": "^4.3.4",
74
110
  "double-ended-queue": "^2.1.0-0",
75
111
  "events": "^3.1.0",
76
- "lodash": "^4.17.21",
77
112
  "url": "^0.11.0",
78
- "uuid": "^8.3.1"
113
+ "uuid": "^9.0.0"
79
114
  },
80
115
  "devDependencies": {
81
- "@fluidframework/build-common": "^0.24.0",
82
- "@fluidframework/build-tools": "^0.6.0-110101",
83
- "@fluidframework/container-loader-previous": "npm:@fluidframework/container-loader@1.3.1",
84
- "@fluidframework/eslint-config-fluid": "^0.28.2000",
85
- "@fluidframework/mocha-test-setup": "1.4.0-121020",
86
- "@fluidframework/test-loader-utils": "1.4.0-121020",
87
- "@microsoft/api-extractor": "^7.22.2",
88
- "@rushstack/eslint-config": "^2.5.1",
116
+ "@arethetypeswrong/cli": "^0.13.3",
117
+ "@fluid-private/test-loader-utils": "2.0.0-dev-rc.1.0.0.224419",
118
+ "@fluid-tools/build-cli": "0.29.0-222379",
119
+ "@fluidframework/build-common": "^2.0.3",
120
+ "@fluidframework/build-tools": "0.29.0-222379",
121
+ "@fluidframework/container-loader-previous": "npm:@fluidframework/container-loader@2.0.0-internal.7.2.0",
122
+ "@fluidframework/eslint-config-fluid": "^3.1.0",
123
+ "@fluidframework/mocha-test-setup": "2.0.0-dev-rc.1.0.0.224419",
124
+ "@microsoft/api-extractor": "^7.38.3",
125
+ "@types/debug": "^4.1.5",
89
126
  "@types/double-ended-queue": "^2.1.0",
90
- "@types/lodash": "^4.14.118",
127
+ "@types/events": "^3.0.0",
91
128
  "@types/mocha": "^9.1.1",
92
- "@types/node": "^14.18.0",
129
+ "@types/node": "^18.19.0",
93
130
  "@types/sinon": "^7.0.13",
94
- "concurrently": "^6.2.0",
95
- "copyfiles": "^2.1.0",
96
- "cross-env": "^7.0.2",
97
- "eslint": "~8.6.0",
98
- "mocha": "^10.0.0",
99
- "nyc": "^15.0.0",
100
- "rimraf": "^2.6.2",
131
+ "c8": "^7.7.1",
132
+ "copyfiles": "^2.4.1",
133
+ "cross-env": "^7.0.3",
134
+ "eslint": "~8.50.0",
135
+ "mocha": "^10.2.0",
136
+ "mocha-json-output-reporter": "^2.0.1",
137
+ "mocha-multi-reporters": "^1.5.1",
138
+ "moment": "^2.21.0",
139
+ "prettier": "~3.0.3",
140
+ "renamer": "^4.0.0",
141
+ "rimraf": "^4.4.0",
101
142
  "sinon": "^7.4.2",
102
- "typescript": "~4.5.5",
103
- "typescript-formatter": "7.1.0"
143
+ "tsc-multi": "^1.1.0",
144
+ "typescript": "~5.1.6"
145
+ },
146
+ "fluidBuild": {
147
+ "tasks": {
148
+ "build:docs": {
149
+ "dependsOn": [
150
+ "...",
151
+ "api-extractor:commonjs",
152
+ "api-extractor:esnext"
153
+ ],
154
+ "script": false
155
+ }
156
+ }
104
157
  },
105
158
  "typeValidation": {
106
- "version": "1.4.0",
107
- "baselineRange": "~1.3.0",
108
- "baselineVersion": "1.3.1",
109
- "broken": {}
159
+ "broken": {
160
+ "RemovedFunctionDeclaration_requestResolvedObjectFromContainer": {
161
+ "forwardCompat": false,
162
+ "backCompat": false
163
+ },
164
+ "InterfaceDeclaration_IContainerExperimental": {
165
+ "backCompat": false
166
+ },
167
+ "ClassDeclaration_Loader": {
168
+ "backCompat": false
169
+ }
170
+ }
171
+ },
172
+ "scripts": {
173
+ "api": "fluid-build . --task api",
174
+ "api-extractor:commonjs": "api-extractor run --local",
175
+ "api-extractor:esnext": "copyfiles -u 1 \"dist/**/*-@(alpha|beta|public|untrimmed).d.ts\" lib",
176
+ "build": "fluid-build . --task build",
177
+ "build:commonjs": "fluid-build . --task commonjs",
178
+ "build:compile": "fluid-build . --task compile",
179
+ "build:docs": "fluid-build . --task api",
180
+ "build:esnext": "tsc-multi --config ../../../common/build/build-common/tsc-multi.esm.json",
181
+ "build:genver": "gen-version",
182
+ "build:rename-types": "renamer \"lib/**\" -f .d.ts -r .d.mts --force",
183
+ "build:test": "tsc-multi --config ./tsc-multi.test.json",
184
+ "check:are-the-types-wrong": "attw --pack . --entrypoints .",
185
+ "check:release-tags": "api-extractor run --local --config ./api-extractor-lint.json",
186
+ "ci:build:docs": "api-extractor run",
187
+ "clean": "rimraf --glob dist lib \"**/*.tsbuildinfo\" \"**/*.build.log\" _api-extractor-temp nyc",
188
+ "eslint": "eslint --format stylish src",
189
+ "eslint:fix": "eslint --format stylish src --fix --fix-type problem,suggestion,layout",
190
+ "format": "npm run prettier:fix",
191
+ "lint": "npm run prettier && npm run check:release-tags && npm run eslint",
192
+ "lint:fix": "npm run prettier:fix && npm run eslint:fix",
193
+ "prettier": "prettier --check . --cache --ignore-path ../../../.prettierignore",
194
+ "prettier:fix": "prettier --write . --cache --ignore-path ../../../.prettierignore",
195
+ "test": "npm run test:mocha",
196
+ "test:coverage": "c8 npm test",
197
+ "test:mocha": "mocha --ignore \"dist/test/types/*\" --recursive dist/test -r node_modules/@fluidframework/mocha-test-setup",
198
+ "test:mocha:verbose": "cross-env FLUID_TEST_VERBOSE=1 npm run test:mocha",
199
+ "tsc": "tsc-multi --config ../../../common/build/build-common/tsc-multi.cjs.json",
200
+ "tsc:watch": "tsc --watch",
201
+ "typetests:gen": "fluid-type-test-generator",
202
+ "typetests:prepare": "flub typetests --dir . --reset --previous --normalize"
110
203
  }
111
- }
204
+ }
@@ -0,0 +1,8 @@
1
+ /*!
2
+ * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+
6
+ module.exports = {
7
+ ...require("@fluidframework/build-common/prettier.config.cjs"),
8
+ };
package/src/audience.ts CHANGED
@@ -3,64 +3,74 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
  import { EventEmitter } from "events";
6
- import { IAudience } from "@fluidframework/container-definitions";
6
+ import { assert } from "@fluidframework/core-utils";
7
+ import { IAudienceOwner } from "@fluidframework/container-definitions";
7
8
  import { IClient } from "@fluidframework/protocol-definitions";
8
9
 
9
10
  /**
10
11
  * Audience represents all clients connected to the op stream.
11
12
  */
12
- export class Audience extends EventEmitter implements IAudience {
13
- private readonly members = new Map<string, IClient>();
13
+ export class Audience extends EventEmitter implements IAudienceOwner {
14
+ private readonly members = new Map<string, IClient>();
14
15
 
15
- public on(event: "addMember" | "removeMember", listener: (clientId: string, client: IClient) => void): this;
16
- public on(event: string, listener: (...args: any[]) => void): this {
17
- return super.on(event, listener);
18
- }
16
+ constructor() {
17
+ super();
18
+ // We are expecting this class to have many listeners, so we suppress noisy "MaxListenersExceededWarning" logging.
19
+ super.setMaxListeners(0);
20
+ }
19
21
 
20
- /**
21
- * Adds a new client to the audience
22
- */
23
- public addMember(clientId: string, details: IClient) {
24
- this.members.set(clientId, details);
25
- this.emit("addMember", clientId, details);
26
- }
22
+ public on(
23
+ event: "addMember" | "removeMember",
24
+ listener: (clientId: string, client: IClient) => void,
25
+ ): this;
26
+ public on(event: string, listener: (...args: any[]) => void): this {
27
+ return super.on(event, listener);
28
+ }
27
29
 
28
- /**
29
- * Removes a client from the audience. Only emits an event if a client is actually removed
30
- * @returns if a client was removed from the audience
31
- */
32
- public removeMember(clientId: string): boolean {
33
- const removedClient = this.members.get(clientId);
34
- if (removedClient !== undefined) {
35
- this.members.delete(clientId);
36
- this.emit("removeMember", clientId, removedClient);
37
- return true;
38
- } else {
39
- return false;
40
- }
41
- }
30
+ /**
31
+ * Adds a new client to the audience
32
+ */
33
+ public addMember(clientId: string, details: IClient) {
34
+ // Given that signal delivery is unreliable process, we might observe same client being added twice
35
+ // In such case we should see exactly same payload (IClient), and should not raise event twice!
36
+ if (this.members.has(clientId)) {
37
+ const client = this.members.get(clientId);
38
+ assert(
39
+ JSON.stringify(client) === JSON.stringify(details),
40
+ 0x4b2 /* new client has different payload from existing one */,
41
+ );
42
+ } else {
43
+ this.members.set(clientId, details);
44
+ this.emit("addMember", clientId, details);
45
+ }
46
+ }
42
47
 
43
- /**
44
- * Retrieves all the members in the audience
45
- */
46
- public getMembers(): Map<string, IClient> {
47
- return new Map(this.members);
48
- }
48
+ /**
49
+ * Removes a client from the audience. Only emits an event if a client is actually removed
50
+ * @returns if a client was removed from the audience
51
+ */
52
+ public removeMember(clientId: string): boolean {
53
+ const removedClient = this.members.get(clientId);
54
+ if (removedClient !== undefined) {
55
+ this.members.delete(clientId);
56
+ this.emit("removeMember", clientId, removedClient);
57
+ return true;
58
+ } else {
59
+ return false;
60
+ }
61
+ }
49
62
 
50
- /**
51
- * Retrieves a specific member of the audience
52
- */
53
- public getMember(clientId: string): IClient | undefined {
54
- return this.members.get(clientId);
55
- }
63
+ /**
64
+ * Retrieves all the members in the audience
65
+ */
66
+ public getMembers(): Map<string, IClient> {
67
+ return new Map(this.members);
68
+ }
56
69
 
57
- /**
58
- * Clears the audience
59
- */
60
- public clear(): void {
61
- const clientIds = this.members.keys();
62
- for (const clientId of clientIds) {
63
- this.removeMember(clientId);
64
- }
65
- }
70
+ /**
71
+ * Retrieves a specific member of the audience
72
+ */
73
+ public getMember(clientId: string): IClient | undefined {
74
+ return this.members.get(clientId);
75
+ }
66
76
  }
@@ -0,0 +1,61 @@
1
+ /*!
2
+ * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+
6
+ import { IDisposable } from "@fluidframework/core-interfaces";
7
+ import { assert } from "@fluidframework/core-utils";
8
+ import { IDeltaManager } from "@fluidframework/container-definitions";
9
+ import { ISequencedDocumentMessage } from "@fluidframework/protocol-definitions";
10
+
11
+ /** @see CatchUpMonitor for usage */
12
+ type CaughtUpListener = () => void;
13
+
14
+ /** Monitor that emits an event when a Container has caught up to a given point in the op stream */
15
+ export type ICatchUpMonitor = IDisposable;
16
+
17
+ /**
18
+ * Monitors a Container's DeltaManager, notifying listeners when all ops have been processed
19
+ * that were known at the time the monitor was created.
20
+ */
21
+ export class CatchUpMonitor implements ICatchUpMonitor {
22
+ private readonly targetSeqNumber: number;
23
+ private caughtUp: boolean = false;
24
+
25
+ private readonly opHandler = (message: Pick<ISequencedDocumentMessage, "sequenceNumber">) => {
26
+ if (!this.caughtUp && message.sequenceNumber >= this.targetSeqNumber) {
27
+ this.caughtUp = true;
28
+ this.listener();
29
+ }
30
+ };
31
+
32
+ /**
33
+ * Create the CatchUpMonitor, setting the target sequence number to wait for based on DeltaManager's current state.
34
+ */
35
+ constructor(
36
+ private readonly deltaManager: IDeltaManager<any, any>,
37
+ private readonly listener: CaughtUpListener,
38
+ ) {
39
+ this.targetSeqNumber = this.deltaManager.lastKnownSeqNumber;
40
+
41
+ assert(
42
+ this.targetSeqNumber >= this.deltaManager.lastSequenceNumber,
43
+ 0x37c /* Cannot wait for seqNumber below last processed sequence number */,
44
+ );
45
+
46
+ this.deltaManager.on("op", this.opHandler);
47
+
48
+ // Simulate the last processed op to set caughtUp in case we already are
49
+ this.opHandler({ sequenceNumber: this.deltaManager.lastSequenceNumber });
50
+ }
51
+
52
+ public disposed: boolean = false;
53
+ public dispose() {
54
+ if (this.disposed) {
55
+ return;
56
+ }
57
+ this.disposed = true;
58
+
59
+ this.deltaManager.off("op", this.opHandler);
60
+ }
61
+ }