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

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 (335) 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-esm.json +4 -0
  6. package/api-extractor-lint.json +4 -0
  7. package/api-extractor.json +2 -2
  8. package/api-report/container-loader.api.md +143 -0
  9. package/dist/{audience.js → audience.cjs} +15 -13
  10. package/dist/audience.cjs.map +1 -0
  11. package/dist/audience.d.ts +4 -6
  12. package/dist/audience.d.ts.map +1 -1
  13. package/dist/catchUpMonitor.cjs +43 -0
  14. package/dist/catchUpMonitor.cjs.map +1 -0
  15. package/dist/catchUpMonitor.d.ts +29 -0
  16. package/dist/catchUpMonitor.d.ts.map +1 -0
  17. package/dist/{connectionManager.js → connectionManager.cjs} +397 -240
  18. package/dist/connectionManager.cjs.map +1 -0
  19. package/dist/connectionManager.d.ts +23 -33
  20. package/dist/connectionManager.d.ts.map +1 -1
  21. package/dist/{connectionState.js → connectionState.cjs} +5 -7
  22. package/dist/connectionState.cjs.map +1 -0
  23. package/dist/connectionState.d.ts +3 -5
  24. package/dist/connectionState.d.ts.map +1 -1
  25. package/dist/connectionStateHandler.cjs +474 -0
  26. package/dist/connectionStateHandler.cjs.map +1 -0
  27. package/dist/connectionStateHandler.d.ts +127 -29
  28. package/dist/connectionStateHandler.d.ts.map +1 -1
  29. package/dist/container-loader-alpha.d.ts +274 -0
  30. package/dist/container-loader-beta.d.ts +75 -0
  31. package/dist/container-loader-public.d.ts +75 -0
  32. package/dist/container-loader-untrimmed.d.ts +331 -0
  33. package/dist/container.cjs +1585 -0
  34. package/dist/container.cjs.map +1 -0
  35. package/dist/container.d.ts +227 -83
  36. package/dist/container.d.ts.map +1 -1
  37. package/dist/containerContext.cjs +74 -0
  38. package/dist/containerContext.cjs.map +1 -0
  39. package/dist/containerContext.d.ts +33 -59
  40. package/dist/containerContext.d.ts.map +1 -1
  41. package/dist/containerStorageAdapter.cjs +234 -0
  42. package/dist/containerStorageAdapter.cjs.map +1 -0
  43. package/dist/containerStorageAdapter.d.ts +48 -23
  44. package/dist/containerStorageAdapter.d.ts.map +1 -1
  45. package/dist/{contracts.js → contracts.cjs} +5 -5
  46. package/dist/contracts.cjs.map +1 -0
  47. package/dist/contracts.d.ts +45 -17
  48. package/dist/contracts.d.ts.map +1 -1
  49. package/dist/debugLogger.cjs +101 -0
  50. package/dist/debugLogger.cjs.map +1 -0
  51. package/dist/debugLogger.d.ts +30 -0
  52. package/dist/debugLogger.d.ts.map +1 -0
  53. package/dist/{deltaManager.js → deltaManager.cjs} +379 -186
  54. package/dist/deltaManager.cjs.map +1 -0
  55. package/dist/deltaManager.d.ts +54 -18
  56. package/dist/deltaManager.d.ts.map +1 -1
  57. package/dist/{deltaQueue.js → deltaQueue.cjs} +29 -28
  58. package/dist/deltaQueue.cjs.map +1 -0
  59. package/dist/deltaQueue.d.ts +3 -4
  60. package/dist/deltaQueue.d.ts.map +1 -1
  61. package/dist/disposal.cjs +25 -0
  62. package/dist/disposal.cjs.map +1 -0
  63. package/dist/disposal.d.ts +13 -0
  64. package/dist/disposal.d.ts.map +1 -0
  65. package/dist/error.cjs +32 -0
  66. package/dist/error.cjs.map +1 -0
  67. package/dist/error.d.ts +23 -0
  68. package/dist/error.d.ts.map +1 -0
  69. package/dist/index.cjs +19 -0
  70. package/dist/index.cjs.map +1 -0
  71. package/dist/index.d.ts +5 -2
  72. package/dist/index.d.ts.map +1 -1
  73. package/dist/loader.cjs +148 -0
  74. package/dist/loader.cjs.map +1 -0
  75. package/dist/loader.d.ts +38 -19
  76. package/dist/loader.d.ts.map +1 -1
  77. package/dist/location-redirection-utilities/index.cjs +11 -0
  78. package/dist/location-redirection-utilities/index.cjs.map +1 -0
  79. package/dist/location-redirection-utilities/index.d.ts +6 -0
  80. package/dist/location-redirection-utilities/index.d.ts.map +1 -0
  81. package/dist/location-redirection-utilities/resolveWithLocationRedirection.cjs +53 -0
  82. package/dist/location-redirection-utilities/resolveWithLocationRedirection.cjs.map +1 -0
  83. package/dist/location-redirection-utilities/resolveWithLocationRedirection.d.ts +24 -0
  84. package/dist/location-redirection-utilities/resolveWithLocationRedirection.d.ts.map +1 -0
  85. package/dist/{collabWindowTracker.js → noopHeuristic.cjs} +37 -39
  86. package/dist/noopHeuristic.cjs.map +1 -0
  87. package/dist/noopHeuristic.d.ts +23 -0
  88. package/dist/noopHeuristic.d.ts.map +1 -0
  89. package/dist/{packageVersion.js → packageVersion.cjs} +2 -2
  90. package/dist/packageVersion.cjs.map +1 -0
  91. package/dist/packageVersion.d.ts +1 -1
  92. package/dist/packageVersion.d.ts.map +1 -1
  93. package/dist/protocol.cjs +99 -0
  94. package/dist/protocol.cjs.map +1 -0
  95. package/dist/protocol.d.ts +38 -0
  96. package/dist/protocol.d.ts.map +1 -0
  97. package/dist/{protocolTreeDocumentStorageService.js → protocolTreeDocumentStorageService.cjs} +8 -5
  98. package/dist/protocolTreeDocumentStorageService.cjs.map +1 -0
  99. package/dist/protocolTreeDocumentStorageService.d.ts +8 -4
  100. package/dist/protocolTreeDocumentStorageService.d.ts.map +1 -1
  101. package/dist/quorum.cjs +16 -0
  102. package/dist/quorum.cjs.map +1 -0
  103. package/dist/quorum.d.ts +1 -14
  104. package/dist/quorum.d.ts.map +1 -1
  105. package/dist/{retriableDocumentStorageService.js → retriableDocumentStorageService.cjs} +36 -21
  106. package/dist/retriableDocumentStorageService.cjs.map +1 -0
  107. package/dist/retriableDocumentStorageService.d.ts +7 -5
  108. package/dist/retriableDocumentStorageService.d.ts.map +1 -1
  109. package/dist/tsdoc-metadata.json +11 -0
  110. package/dist/{utils.js → utils.cjs} +52 -14
  111. package/dist/utils.cjs.map +1 -0
  112. package/dist/utils.d.ts +34 -1
  113. package/dist/utils.d.ts.map +1 -1
  114. package/lib/{audience.d.ts → audience.d.mts} +5 -11
  115. package/lib/audience.d.mts.map +1 -0
  116. package/lib/{audience.js → audience.mjs} +15 -17
  117. package/lib/audience.mjs.map +1 -0
  118. package/lib/catchUpMonitor.d.mts +29 -0
  119. package/lib/catchUpMonitor.d.mts.map +1 -0
  120. package/lib/catchUpMonitor.mjs +39 -0
  121. package/lib/catchUpMonitor.mjs.map +1 -0
  122. package/lib/{connectionManager.d.ts → connectionManager.d.mts} +24 -34
  123. package/lib/connectionManager.d.mts.map +1 -0
  124. package/lib/{connectionManager.js → connectionManager.mjs} +378 -218
  125. package/lib/connectionManager.mjs.map +1 -0
  126. package/lib/{connectionState.d.ts → connectionState.d.mts} +4 -6
  127. package/lib/connectionState.d.mts.map +1 -0
  128. package/lib/{connectionState.js → connectionState.mjs} +4 -6
  129. package/lib/connectionState.mjs.map +1 -0
  130. package/lib/connectionStateHandler.d.mts +179 -0
  131. package/lib/connectionStateHandler.d.mts.map +1 -0
  132. package/lib/connectionStateHandler.mjs +469 -0
  133. package/lib/connectionStateHandler.mjs.map +1 -0
  134. package/lib/container-loader-alpha.d.mts +274 -0
  135. package/lib/container-loader-beta.d.mts +75 -0
  136. package/lib/container-loader-public.d.mts +75 -0
  137. package/lib/container-loader-untrimmed.d.mts +331 -0
  138. package/lib/container.d.mts +382 -0
  139. package/lib/container.d.mts.map +1 -0
  140. package/lib/container.mjs +1579 -0
  141. package/lib/container.mjs.map +1 -0
  142. package/lib/containerContext.d.mts +58 -0
  143. package/lib/containerContext.d.mts.map +1 -0
  144. package/lib/containerContext.mjs +70 -0
  145. package/lib/containerContext.mjs.map +1 -0
  146. package/lib/containerStorageAdapter.d.mts +73 -0
  147. package/lib/containerStorageAdapter.d.mts.map +1 -0
  148. package/lib/containerStorageAdapter.mjs +228 -0
  149. package/lib/containerStorageAdapter.mjs.map +1 -0
  150. package/lib/{contracts.d.ts → contracts.d.mts} +46 -18
  151. package/lib/contracts.d.mts.map +1 -0
  152. package/lib/{contracts.js → contracts.mjs} +4 -4
  153. package/lib/contracts.mjs.map +1 -0
  154. package/lib/debugLogger.d.mts +30 -0
  155. package/lib/debugLogger.d.mts.map +1 -0
  156. package/lib/debugLogger.mjs +93 -0
  157. package/lib/debugLogger.mjs.map +1 -0
  158. package/lib/{deltaManager.d.ts → deltaManager.d.mts} +55 -19
  159. package/lib/deltaManager.d.mts.map +1 -0
  160. package/lib/{deltaManager.js → deltaManager.mjs} +361 -165
  161. package/lib/deltaManager.mjs.map +1 -0
  162. package/lib/{deltaQueue.d.ts → deltaQueue.d.mts} +4 -5
  163. package/lib/deltaQueue.d.mts.map +1 -0
  164. package/lib/{deltaQueue.js → deltaQueue.mjs} +25 -24
  165. package/lib/deltaQueue.mjs.map +1 -0
  166. package/lib/disposal.d.mts +13 -0
  167. package/lib/disposal.d.mts.map +1 -0
  168. package/lib/disposal.mjs +21 -0
  169. package/lib/disposal.mjs.map +1 -0
  170. package/lib/error.d.mts +23 -0
  171. package/lib/error.d.mts.map +1 -0
  172. package/lib/error.mjs +28 -0
  173. package/lib/error.mjs.map +1 -0
  174. package/lib/index.d.mts +11 -0
  175. package/lib/index.d.mts.map +1 -0
  176. package/lib/index.mjs +10 -0
  177. package/lib/index.mjs.map +1 -0
  178. package/lib/{loader.d.ts → loader.d.mts} +40 -21
  179. package/lib/loader.d.mts.map +1 -0
  180. package/lib/loader.mjs +143 -0
  181. package/lib/loader.mjs.map +1 -0
  182. package/lib/location-redirection-utilities/index.d.mts +6 -0
  183. package/lib/location-redirection-utilities/index.d.mts.map +1 -0
  184. package/lib/location-redirection-utilities/index.mjs +6 -0
  185. package/lib/location-redirection-utilities/index.mjs.map +1 -0
  186. package/lib/location-redirection-utilities/resolveWithLocationRedirection.d.mts +24 -0
  187. package/lib/location-redirection-utilities/resolveWithLocationRedirection.d.mts.map +1 -0
  188. package/lib/location-redirection-utilities/resolveWithLocationRedirection.mjs +48 -0
  189. package/lib/location-redirection-utilities/resolveWithLocationRedirection.mjs.map +1 -0
  190. package/lib/noopHeuristic.d.mts +23 -0
  191. package/lib/noopHeuristic.d.mts.map +1 -0
  192. package/lib/{collabWindowTracker.js → noopHeuristic.mjs} +33 -35
  193. package/lib/noopHeuristic.mjs.map +1 -0
  194. package/lib/{packageVersion.d.ts → packageVersion.d.mts} +2 -2
  195. package/lib/packageVersion.d.mts.map +1 -0
  196. package/lib/{packageVersion.js → packageVersion.mjs} +2 -2
  197. package/lib/packageVersion.mjs.map +1 -0
  198. package/lib/protocol.d.mts +38 -0
  199. package/lib/protocol.d.mts.map +1 -0
  200. package/lib/protocol.mjs +94 -0
  201. package/lib/protocol.mjs.map +1 -0
  202. package/lib/{protocolTreeDocumentStorageService.d.ts → protocolTreeDocumentStorageService.d.mts} +9 -5
  203. package/lib/protocolTreeDocumentStorageService.d.mts.map +1 -0
  204. package/lib/{protocolTreeDocumentStorageService.js → protocolTreeDocumentStorageService.mjs} +8 -5
  205. package/lib/protocolTreeDocumentStorageService.mjs.map +1 -0
  206. package/lib/quorum.d.mts +4 -0
  207. package/lib/quorum.d.mts.map +1 -0
  208. package/lib/quorum.mjs +12 -0
  209. package/lib/quorum.mjs.map +1 -0
  210. package/lib/{retriableDocumentStorageService.d.ts → retriableDocumentStorageService.d.mts} +8 -6
  211. package/lib/retriableDocumentStorageService.d.mts.map +1 -0
  212. package/lib/{retriableDocumentStorageService.js → retriableDocumentStorageService.mjs} +35 -20
  213. package/lib/retriableDocumentStorageService.mjs.map +1 -0
  214. package/lib/utils.d.mts +67 -0
  215. package/lib/utils.d.mts.map +1 -0
  216. package/lib/{utils.js → utils.mjs} +47 -11
  217. package/lib/utils.mjs.map +1 -0
  218. package/package.json +189 -69
  219. package/prettier.config.cjs +8 -0
  220. package/src/audience.ts +59 -49
  221. package/src/catchUpMonitor.ts +61 -0
  222. package/src/connectionManager.ts +1154 -910
  223. package/src/connectionState.ts +22 -25
  224. package/src/connectionStateHandler.ts +689 -319
  225. package/src/container.ts +2476 -1792
  226. package/src/containerContext.ts +98 -330
  227. package/src/containerStorageAdapter.ts +301 -105
  228. package/src/contracts.ts +184 -146
  229. package/src/debugLogger.ts +123 -0
  230. package/src/deltaManager.ts +1165 -900
  231. package/src/deltaQueue.ts +156 -152
  232. package/src/disposal.ts +25 -0
  233. package/src/error.ts +44 -0
  234. package/src/index.ts +14 -15
  235. package/src/loader.ts +356 -427
  236. package/src/location-redirection-utilities/index.ts +9 -0
  237. package/src/location-redirection-utilities/resolveWithLocationRedirection.ts +61 -0
  238. package/src/noopHeuristic.ts +107 -0
  239. package/src/packageVersion.ts +1 -1
  240. package/src/protocol.ts +150 -0
  241. package/src/protocolTreeDocumentStorageService.ts +35 -35
  242. package/src/quorum.ts +11 -50
  243. package/src/retriableDocumentStorageService.ts +135 -95
  244. package/src/utils.ts +159 -86
  245. package/tsc-multi.test.json +4 -0
  246. package/tsconfig.json +10 -12
  247. package/dist/audience.js.map +0 -1
  248. package/dist/collabWindowTracker.d.ts +0 -19
  249. package/dist/collabWindowTracker.d.ts.map +0 -1
  250. package/dist/collabWindowTracker.js.map +0 -1
  251. package/dist/connectionManager.js.map +0 -1
  252. package/dist/connectionState.js.map +0 -1
  253. package/dist/connectionStateHandler.js +0 -280
  254. package/dist/connectionStateHandler.js.map +0 -1
  255. package/dist/container.js +0 -1284
  256. package/dist/container.js.map +0 -1
  257. package/dist/containerContext.js +0 -217
  258. package/dist/containerContext.js.map +0 -1
  259. package/dist/containerStorageAdapter.js +0 -104
  260. package/dist/containerStorageAdapter.js.map +0 -1
  261. package/dist/contracts.js.map +0 -1
  262. package/dist/deltaManager.js.map +0 -1
  263. package/dist/deltaManagerProxy.d.ts +0 -54
  264. package/dist/deltaManagerProxy.d.ts.map +0 -1
  265. package/dist/deltaManagerProxy.js +0 -115
  266. package/dist/deltaManagerProxy.js.map +0 -1
  267. package/dist/deltaQueue.js.map +0 -1
  268. package/dist/index.js +0 -16
  269. package/dist/index.js.map +0 -1
  270. package/dist/loader.js +0 -241
  271. package/dist/loader.js.map +0 -1
  272. package/dist/packageVersion.js.map +0 -1
  273. package/dist/protocolTreeDocumentStorageService.js.map +0 -1
  274. package/dist/quorum.js +0 -44
  275. package/dist/quorum.js.map +0 -1
  276. package/dist/retriableDocumentStorageService.js.map +0 -1
  277. package/dist/utils.js.map +0 -1
  278. package/lib/audience.d.ts.map +0 -1
  279. package/lib/audience.js.map +0 -1
  280. package/lib/collabWindowTracker.d.ts +0 -19
  281. package/lib/collabWindowTracker.d.ts.map +0 -1
  282. package/lib/collabWindowTracker.js.map +0 -1
  283. package/lib/connectionManager.d.ts.map +0 -1
  284. package/lib/connectionManager.js.map +0 -1
  285. package/lib/connectionState.d.ts.map +0 -1
  286. package/lib/connectionState.js.map +0 -1
  287. package/lib/connectionStateHandler.d.ts +0 -81
  288. package/lib/connectionStateHandler.d.ts.map +0 -1
  289. package/lib/connectionStateHandler.js +0 -276
  290. package/lib/connectionStateHandler.js.map +0 -1
  291. package/lib/container.d.ts +0 -238
  292. package/lib/container.d.ts.map +0 -1
  293. package/lib/container.js +0 -1276
  294. package/lib/container.js.map +0 -1
  295. package/lib/containerContext.d.ts +0 -84
  296. package/lib/containerContext.d.ts.map +0 -1
  297. package/lib/containerContext.js +0 -213
  298. package/lib/containerContext.js.map +0 -1
  299. package/lib/containerStorageAdapter.d.ts +0 -48
  300. package/lib/containerStorageAdapter.d.ts.map +0 -1
  301. package/lib/containerStorageAdapter.js +0 -99
  302. package/lib/containerStorageAdapter.js.map +0 -1
  303. package/lib/contracts.d.ts.map +0 -1
  304. package/lib/contracts.js.map +0 -1
  305. package/lib/deltaManager.d.ts.map +0 -1
  306. package/lib/deltaManager.js.map +0 -1
  307. package/lib/deltaManagerProxy.d.ts +0 -54
  308. package/lib/deltaManagerProxy.d.ts.map +0 -1
  309. package/lib/deltaManagerProxy.js +0 -110
  310. package/lib/deltaManagerProxy.js.map +0 -1
  311. package/lib/deltaQueue.d.ts.map +0 -1
  312. package/lib/deltaQueue.js.map +0 -1
  313. package/lib/index.d.ts +0 -8
  314. package/lib/index.d.ts.map +0 -1
  315. package/lib/index.js +0 -8
  316. package/lib/index.js.map +0 -1
  317. package/lib/loader.d.ts.map +0 -1
  318. package/lib/loader.js +0 -236
  319. package/lib/loader.js.map +0 -1
  320. package/lib/packageVersion.d.ts.map +0 -1
  321. package/lib/packageVersion.js.map +0 -1
  322. package/lib/protocolTreeDocumentStorageService.d.ts.map +0 -1
  323. package/lib/protocolTreeDocumentStorageService.js.map +0 -1
  324. package/lib/quorum.d.ts +0 -21
  325. package/lib/quorum.d.ts.map +0 -1
  326. package/lib/quorum.js +0 -38
  327. package/lib/quorum.js.map +0 -1
  328. package/lib/retriableDocumentStorageService.d.ts.map +0 -1
  329. package/lib/retriableDocumentStorageService.js.map +0 -1
  330. package/lib/utils.d.ts +0 -34
  331. package/lib/utils.d.ts.map +0 -1
  332. package/lib/utils.js.map +0 -1
  333. package/src/collabWindowTracker.ts +0 -102
  334. package/src/deltaManagerProxy.ts +0 -158
  335. 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.225277",
4
4
  "description": "Fluid container loader",
5
5
  "homepage": "https://fluidframework.com",
6
6
  "repository": {
@@ -11,45 +11,122 @@
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
+ },
75
+ "./alpha": {
76
+ "import": {
77
+ "types": "./lib/container-loader-alpha.d.mts",
78
+ "default": "./lib/index.mjs"
79
+ },
80
+ "require": {
81
+ "types": "./dist/container-loader-alpha.d.ts",
82
+ "default": "./dist/index.cjs"
83
+ }
84
+ },
85
+ "./beta": {
86
+ "import": {
87
+ "types": "./lib/container-loader-beta.d.mts",
88
+ "default": "./lib/index.mjs"
89
+ },
90
+ "require": {
91
+ "types": "./dist/container-loader-beta.d.ts",
92
+ "default": "./dist/index.cjs"
93
+ }
94
+ },
95
+ "./internal": {
96
+ "import": {
97
+ "types": "./lib/index.d.mts",
98
+ "default": "./lib/index.mjs"
99
+ },
100
+ "require": {
101
+ "types": "./dist/index.d.ts",
102
+ "default": "./dist/index.cjs"
103
+ }
104
+ },
105
+ "./public": {
106
+ "import": {
107
+ "types": "./lib/container-loader-public.d.mts",
108
+ "default": "./lib/index.mjs"
109
+ },
110
+ "require": {
111
+ "types": "./dist/container-loader-public.d.ts",
112
+ "default": "./dist/index.cjs"
113
+ }
114
+ }
41
115
  },
42
- "nyc": {
116
+ "main": "dist/index.cjs",
117
+ "module": "lib/index.mjs",
118
+ "types": "dist/index.d.ts",
119
+ "c8": {
43
120
  "all": true,
44
121
  "cache-dir": "nyc/.cache",
45
122
  "exclude": [
46
- "src/test/**/*.ts",
47
- "dist/test/**/*.js"
123
+ "src/test/**/*.*ts",
124
+ "dist/test/**/*.*js"
48
125
  ],
49
126
  "exclude-after-remap": false,
50
127
  "include": [
51
- "src/**/*.ts",
52
- "dist/**/*.js"
128
+ "src/**/*.*ts",
129
+ "dist/**/*.*js"
53
130
  ],
54
131
  "report-dir": "nyc/report",
55
132
  "reporter": [
@@ -60,52 +137,95 @@
60
137
  "temp-directory": "nyc/.nyc_output"
61
138
  },
62
139
  "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",
140
+ "@fluid-internal/client-utils": "2.0.0-dev-rc.1.0.0.225277",
141
+ "@fluidframework/container-definitions": "2.0.0-dev-rc.1.0.0.225277",
142
+ "@fluidframework/core-interfaces": "2.0.0-dev-rc.1.0.0.225277",
143
+ "@fluidframework/core-utils": "2.0.0-dev-rc.1.0.0.225277",
144
+ "@fluidframework/driver-definitions": "2.0.0-dev-rc.1.0.0.225277",
145
+ "@fluidframework/driver-utils": "2.0.0-dev-rc.1.0.0.225277",
146
+ "@fluidframework/protocol-base": "^3.0.0-223236",
147
+ "@fluidframework/protocol-definitions": "^3.1.0-223007",
148
+ "@fluidframework/telemetry-utils": "2.0.0-dev-rc.1.0.0.225277",
149
+ "debug": "^4.3.4",
74
150
  "double-ended-queue": "^2.1.0-0",
75
151
  "events": "^3.1.0",
76
- "lodash": "^4.17.21",
77
152
  "url": "^0.11.0",
78
- "uuid": "^8.3.1"
153
+ "uuid": "^9.0.0"
79
154
  },
80
155
  "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",
156
+ "@arethetypeswrong/cli": "^0.13.3",
157
+ "@fluid-private/test-loader-utils": "2.0.0-dev-rc.1.0.0.225277",
158
+ "@fluid-tools/build-cli": "0.29.0-222379",
159
+ "@fluidframework/build-common": "^2.0.3",
160
+ "@fluidframework/build-tools": "0.29.0-222379",
161
+ "@fluidframework/container-loader-previous": "npm:@fluidframework/container-loader@2.0.0-internal.8.0.0",
162
+ "@fluidframework/eslint-config-fluid": "^3.1.0",
163
+ "@fluidframework/mocha-test-setup": "2.0.0-dev-rc.1.0.0.225277",
164
+ "@microsoft/api-extractor": "^7.38.3",
165
+ "@types/debug": "^4.1.5",
89
166
  "@types/double-ended-queue": "^2.1.0",
90
- "@types/lodash": "^4.14.118",
167
+ "@types/events": "^3.0.0",
91
168
  "@types/mocha": "^9.1.1",
92
- "@types/node": "^14.18.0",
169
+ "@types/node": "^18.19.0",
93
170
  "@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",
171
+ "c8": "^8.0.1",
172
+ "copyfiles": "^2.4.1",
173
+ "cross-env": "^7.0.3",
174
+ "eslint": "~8.50.0",
175
+ "mocha": "^10.2.0",
176
+ "mocha-json-output-reporter": "^2.0.1",
177
+ "mocha-multi-reporters": "^1.5.1",
178
+ "moment": "^2.21.0",
179
+ "prettier": "~3.0.3",
180
+ "rimraf": "^4.4.0",
101
181
  "sinon": "^7.4.2",
102
- "typescript": "~4.5.5",
103
- "typescript-formatter": "7.1.0"
182
+ "tsc-multi": "^1.1.0",
183
+ "typescript": "~5.1.6"
184
+ },
185
+ "fluidBuild": {
186
+ "tasks": {
187
+ "build:docs": {
188
+ "dependsOn": [
189
+ "...",
190
+ "api-extractor:commonjs",
191
+ "api-extractor:esnext"
192
+ ],
193
+ "script": false
194
+ }
195
+ }
104
196
  },
105
197
  "typeValidation": {
106
- "version": "1.4.0",
107
- "baselineRange": "~1.3.0",
108
- "baselineVersion": "1.3.1",
109
198
  "broken": {}
199
+ },
200
+ "scripts": {
201
+ "api": "fluid-build . --task api",
202
+ "api-extractor:commonjs": "api-extractor run --local",
203
+ "api-extractor:esnext": "api-extractor run --config ./api-extractor-esm.json",
204
+ "build": "fluid-build . --task build",
205
+ "build:commonjs": "fluid-build . --task commonjs",
206
+ "build:compile": "fluid-build . --task compile",
207
+ "build:docs": "fluid-build . --task api",
208
+ "build:esnext": "tsc-multi --config ../../../common/build/build-common/tsc-multi.esm.json",
209
+ "build:genver": "gen-version",
210
+ "build:test": "tsc-multi --config ./tsc-multi.test.json",
211
+ "check:are-the-types-wrong": "attw --pack . --entrypoints .",
212
+ "check:release-tags": "api-extractor run --local --config ./api-extractor-lint.json",
213
+ "ci:build:docs": "api-extractor run",
214
+ "clean": "rimraf --glob dist lib \"**/*.tsbuildinfo\" \"**/*.build.log\" _api-extractor-temp nyc",
215
+ "eslint": "eslint --format stylish src",
216
+ "eslint:fix": "eslint --format stylish src --fix --fix-type problem,suggestion,layout",
217
+ "format": "npm run prettier:fix",
218
+ "lint": "npm run prettier && npm run check:release-tags && npm run eslint",
219
+ "lint:fix": "npm run prettier:fix && npm run eslint:fix",
220
+ "prettier": "prettier --check . --cache --ignore-path ../../../.prettierignore",
221
+ "prettier:fix": "prettier --write . --cache --ignore-path ../../../.prettierignore",
222
+ "test": "npm run test:mocha",
223
+ "test:coverage": "c8 npm test",
224
+ "test:mocha": "mocha --ignore \"dist/test/types/*\" --recursive dist/test -r node_modules/@fluidframework/mocha-test-setup",
225
+ "test:mocha:verbose": "cross-env FLUID_TEST_VERBOSE=1 npm run test:mocha",
226
+ "tsc": "tsc-multi --config ../../../common/build/build-common/tsc-multi.cjs.json",
227
+ "tsc:watch": "tsc --watch",
228
+ "typetests:gen": "fluid-type-test-generator",
229
+ "typetests:prepare": "flub typetests --dir . --reset --previous --normalize"
110
230
  }
111
- }
231
+ }
@@ -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
+ }