@observertc/observer-js 1.0.0-ca725d7.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (226) hide show
  1. package/README.md +1989 -384
  2. package/dist/index.d.mts +6760 -0
  3. package/dist/index.d.ts +6760 -0
  4. package/dist/index.js +7599 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/index.mjs +7472 -0
  7. package/dist/index.mjs.map +1 -0
  8. package/package.json +44 -18
  9. package/.eslintrc.json +0 -143
  10. package/.prettierignore +0 -5
  11. package/.prettierrc +0 -7
  12. package/jest.config.js +0 -9
  13. package/lib/ObservedCall.d.ts +0 -86
  14. package/lib/ObservedCall.d.ts.map +0 -1
  15. package/lib/ObservedCall.js +0 -228
  16. package/lib/ObservedCallEventMonitor.d.ts +0 -104
  17. package/lib/ObservedCallEventMonitor.d.ts.map +0 -1
  18. package/lib/ObservedCallEventMonitor.js +0 -314
  19. package/lib/ObservedCallSummary.d.ts +0 -18
  20. package/lib/ObservedCallSummary.d.ts.map +0 -1
  21. package/lib/ObservedCallSummary.js +0 -2
  22. package/lib/ObservedCertificate.d.ts +0 -19
  23. package/lib/ObservedCertificate.d.ts.map +0 -1
  24. package/lib/ObservedCertificate.js +0 -38
  25. package/lib/ObservedClient.d.ts +0 -130
  26. package/lib/ObservedClient.d.ts.map +0 -1
  27. package/lib/ObservedClient.js +0 -650
  28. package/lib/ObservedClientEventMonitor.d.ts +0 -91
  29. package/lib/ObservedClientEventMonitor.d.ts.map +0 -1
  30. package/lib/ObservedClientEventMonitor.js +0 -254
  31. package/lib/ObservedClientSummary.d.ts +0 -23
  32. package/lib/ObservedClientSummary.d.ts.map +0 -1
  33. package/lib/ObservedClientSummary.js +0 -2
  34. package/lib/ObservedCodec.d.ts +0 -22
  35. package/lib/ObservedCodec.d.ts.map +0 -1
  36. package/lib/ObservedCodec.js +0 -45
  37. package/lib/ObservedDataChannel.d.ts +0 -30
  38. package/lib/ObservedDataChannel.d.ts.map +0 -1
  39. package/lib/ObservedDataChannel.js +0 -75
  40. package/lib/ObservedIceCandidate.d.ts +0 -29
  41. package/lib/ObservedIceCandidate.d.ts.map +0 -1
  42. package/lib/ObservedIceCandidate.js +0 -59
  43. package/lib/ObservedIceCandidatePair.d.ts +0 -45
  44. package/lib/ObservedIceCandidatePair.d.ts.map +0 -1
  45. package/lib/ObservedIceCandidatePair.js +0 -127
  46. package/lib/ObservedIceTransport.d.ts +0 -36
  47. package/lib/ObservedIceTransport.d.ts.map +0 -1
  48. package/lib/ObservedIceTransport.js +0 -93
  49. package/lib/ObservedInboundRtp.d.ts +0 -92
  50. package/lib/ObservedInboundRtp.d.ts.map +0 -1
  51. package/lib/ObservedInboundRtp.js +0 -193
  52. package/lib/ObservedInboundTrack.d.ts +0 -32
  53. package/lib/ObservedInboundTrack.d.ts.map +0 -1
  54. package/lib/ObservedInboundTrack.js +0 -60
  55. package/lib/ObservedMediaPlayout.d.ts +0 -22
  56. package/lib/ObservedMediaPlayout.d.ts.map +0 -1
  57. package/lib/ObservedMediaPlayout.js +0 -42
  58. package/lib/ObservedMediaSource.d.ts +0 -28
  59. package/lib/ObservedMediaSource.d.ts.map +0 -1
  60. package/lib/ObservedMediaSource.js +0 -55
  61. package/lib/ObservedOutboundRtp.d.ts +0 -62
  62. package/lib/ObservedOutboundRtp.d.ts.map +0 -1
  63. package/lib/ObservedOutboundRtp.js +0 -144
  64. package/lib/ObservedOutboundTrack.d.ts +0 -32
  65. package/lib/ObservedOutboundTrack.d.ts.map +0 -1
  66. package/lib/ObservedOutboundTrack.js +0 -60
  67. package/lib/ObservedPeerConnection.d.ts +0 -207
  68. package/lib/ObservedPeerConnection.d.ts.map +0 -1
  69. package/lib/ObservedPeerConnection.js +0 -773
  70. package/lib/ObservedPeerConnectionTransport.d.ts +0 -17
  71. package/lib/ObservedPeerConnectionTransport.d.ts.map +0 -1
  72. package/lib/ObservedPeerConnectionTransport.js +0 -34
  73. package/lib/ObservedRemoteInboundRtp.d.ts +0 -30
  74. package/lib/ObservedRemoteInboundRtp.d.ts.map +0 -1
  75. package/lib/ObservedRemoteInboundRtp.js +0 -60
  76. package/lib/ObservedRemoteOutboundRtp.d.ts +0 -30
  77. package/lib/ObservedRemoteOutboundRtp.d.ts.map +0 -1
  78. package/lib/ObservedRemoteOutboundRtp.js +0 -60
  79. package/lib/ObservedTURN.d.ts +0 -31
  80. package/lib/ObservedTURN.d.ts.map +0 -1
  81. package/lib/ObservedTURN.js +0 -58
  82. package/lib/ObservedTurnServer.d.ts +0 -25
  83. package/lib/ObservedTurnServer.d.ts.map +0 -1
  84. package/lib/ObservedTurnServer.js +0 -59
  85. package/lib/Observer.d.ts +0 -67
  86. package/lib/Observer.d.ts.map +0 -1
  87. package/lib/Observer.js +0 -169
  88. package/lib/ObserverEventMonitor.d.ts +0 -138
  89. package/lib/ObserverEventMonitor.d.ts.map +0 -1
  90. package/lib/ObserverEventMonitor.js +0 -433
  91. package/lib/ObserverSummary.d.ts +0 -13
  92. package/lib/ObserverSummary.d.ts.map +0 -1
  93. package/lib/ObserverSummary.js +0 -2
  94. package/lib/common/Middleware.d.ts +0 -17
  95. package/lib/common/Middleware.d.ts.map +0 -1
  96. package/lib/common/Middleware.js +0 -60
  97. package/lib/common/SingleExecutor.d.ts +0 -3
  98. package/lib/common/SingleExecutor.d.ts.map +0 -1
  99. package/lib/common/SingleExecutor.js +0 -31
  100. package/lib/common/logger.d.ts +0 -17
  101. package/lib/common/logger.d.ts.map +0 -1
  102. package/lib/common/logger.js +0 -50
  103. package/lib/common/types.d.ts +0 -3
  104. package/lib/common/types.d.ts.map +0 -1
  105. package/lib/common/types.js +0 -3
  106. package/lib/common/utils.d.ts +0 -11
  107. package/lib/common/utils.d.ts.map +0 -1
  108. package/lib/common/utils.js +0 -63
  109. package/lib/detectors/Detector.d.ts +0 -5
  110. package/lib/detectors/Detector.d.ts.map +0 -1
  111. package/lib/detectors/Detector.js +0 -3
  112. package/lib/detectors/Detectors.d.ts +0 -11
  113. package/lib/detectors/Detectors.d.ts.map +0 -1
  114. package/lib/detectors/Detectors.js +0 -34
  115. package/lib/index.d.ts +0 -28
  116. package/lib/index.d.ts.map +0 -1
  117. package/lib/index.js +0 -49
  118. package/lib/mediasoup/ObservedMediaRouter.d.ts +0 -10
  119. package/lib/mediasoup/ObservedMediaRouter.d.ts.map +0 -1
  120. package/lib/mediasoup/ObservedMediaRouter.js +0 -6
  121. package/lib/monitors/TurnUsageMonitor.d.ts +0 -1
  122. package/lib/monitors/TurnUsageMonitor.d.ts.map +0 -1
  123. package/lib/monitors/TurnUsageMonitor.js +0 -146
  124. package/lib/schema/ClientEventTypes.d.ts +0 -228
  125. package/lib/schema/ClientEventTypes.d.ts.map +0 -1
  126. package/lib/schema/ClientEventTypes.js +0 -41
  127. package/lib/schema/ClientMetaTypes.d.ts +0 -34
  128. package/lib/schema/ClientMetaTypes.d.ts.map +0 -1
  129. package/lib/schema/ClientMetaTypes.js +0 -16
  130. package/lib/schema/ClientSample.d.ts +0 -1333
  131. package/lib/schema/ClientSample.d.ts.map +0 -1
  132. package/lib/schema/ClientSample.js +0 -4
  133. package/lib/scores/CalculatedScore.d.ts +0 -6
  134. package/lib/scores/CalculatedScore.d.ts.map +0 -1
  135. package/lib/scores/CalculatedScore.js +0 -2
  136. package/lib/scores/DefaultCallScoreCalculator.d.ts +0 -7
  137. package/lib/scores/DefaultCallScoreCalculator.d.ts.map +0 -1
  138. package/lib/scores/DefaultCallScoreCalculator.js +0 -21
  139. package/lib/scores/ScoreCalculator.d.ts +0 -4
  140. package/lib/scores/ScoreCalculator.d.ts.map +0 -1
  141. package/lib/scores/ScoreCalculator.js +0 -2
  142. package/lib/updaters/CallUpdater.d.ts +0 -5
  143. package/lib/updaters/CallUpdater.d.ts.map +0 -1
  144. package/lib/updaters/CallUpdater.js +0 -2
  145. package/lib/updaters/ObserverUpdater.d.ts +0 -5
  146. package/lib/updaters/ObserverUpdater.d.ts.map +0 -1
  147. package/lib/updaters/ObserverUpdater.js +0 -2
  148. package/lib/updaters/OnAllCallObserverUpdater.d.ts +0 -15
  149. package/lib/updaters/OnAllCallObserverUpdater.d.ts.map +0 -1
  150. package/lib/updaters/OnAllCallObserverUpdater.js +0 -50
  151. package/lib/updaters/OnAllClientCallUpdater.d.ts +0 -15
  152. package/lib/updaters/OnAllClientCallUpdater.d.ts.map +0 -1
  153. package/lib/updaters/OnAllClientCallUpdater.js +0 -53
  154. package/lib/updaters/OnAnyCallObserverUpdater.d.ts +0 -12
  155. package/lib/updaters/OnAnyCallObserverUpdater.d.ts.map +0 -1
  156. package/lib/updaters/OnAnyCallObserverUpdater.js +0 -37
  157. package/lib/updaters/OnAnyClientCallUpdater.d.ts +0 -12
  158. package/lib/updaters/OnAnyClientCallUpdater.d.ts.map +0 -1
  159. package/lib/updaters/OnAnyClientCallUpdater.js +0 -36
  160. package/lib/updaters/OnIntervalUpdater.d.ts +0 -10
  161. package/lib/updaters/OnIntervalUpdater.d.ts.map +0 -1
  162. package/lib/updaters/OnIntervalUpdater.js +0 -17
  163. package/lib/updaters/Updater.d.ts +0 -6
  164. package/lib/updaters/Updater.d.ts.map +0 -1
  165. package/lib/updaters/Updater.js +0 -2
  166. package/lib/utils/MediasoupRemoteTrackResolver.d.ts +0 -25
  167. package/lib/utils/MediasoupRemoteTrackResolver.d.ts.map +0 -1
  168. package/lib/utils/MediasoupRemoteTrackResolver.js +0 -110
  169. package/lib/utils/RemoteTrackResolver.d.ts +0 -7
  170. package/lib/utils/RemoteTrackResolver.d.ts.map +0 -1
  171. package/lib/utils/RemoteTrackResolver.js +0 -2
  172. package/src/ObservedCall.ts +0 -346
  173. package/src/ObservedCallEventMonitor.ts +0 -392
  174. package/src/ObservedCallSummary.ts +0 -22
  175. package/src/ObservedCertificate.ts +0 -43
  176. package/src/ObservedClient.ts +0 -807
  177. package/src/ObservedClientEventMonitor.ts +0 -309
  178. package/src/ObservedClientSummary.ts +0 -24
  179. package/src/ObservedCodec.ts +0 -49
  180. package/src/ObservedDataChannel.ts +0 -85
  181. package/src/ObservedIceCandidate.ts +0 -64
  182. package/src/ObservedIceCandidatePair.ts +0 -134
  183. package/src/ObservedIceTransport.ts +0 -99
  184. package/src/ObservedInboundRtp.ts +0 -205
  185. package/src/ObservedInboundTrack.ts +0 -75
  186. package/src/ObservedMediaPlayout.ts +0 -49
  187. package/src/ObservedMediaSource.ts +0 -60
  188. package/src/ObservedOutboundRtp.ts +0 -156
  189. package/src/ObservedOutboundTrack.ts +0 -74
  190. package/src/ObservedPeerConnection.ts +0 -1088
  191. package/src/ObservedPeerConnectionTransport.ts +0 -38
  192. package/src/ObservedRemoteInboundRtp.ts +0 -64
  193. package/src/ObservedRemoteOutboundRtp.ts +0 -65
  194. package/src/ObservedTURN.ts +0 -86
  195. package/src/ObservedTurnServer.ts +0 -72
  196. package/src/Observer.ts +0 -257
  197. package/src/ObserverEventMonitor.ts +0 -551
  198. package/src/ObserverSummary.ts +0 -15
  199. package/src/common/Middleware.ts +0 -84
  200. package/src/common/SingleExecutor.ts +0 -36
  201. package/src/common/logger.ts +0 -82
  202. package/src/common/types.ts +0 -4
  203. package/src/common/utils.ts +0 -69
  204. package/src/detectors/Detector.ts +0 -6
  205. package/src/detectors/Detectors.ts +0 -38
  206. package/src/index.ts +0 -28
  207. package/src/mediasoup/ObservedMediaRouter.ts +0 -10
  208. package/src/monitors/TurnUsageMonitor.ts +0 -187
  209. package/src/schema/ClientEventTypes.ts +0 -280
  210. package/src/schema/ClientMetaTypes.ts +0 -41
  211. package/src/schema/ClientSample.ts +0 -1682
  212. package/src/scores/CalculatedScore.ts +0 -6
  213. package/src/scores/DefaultCallScoreCalculator.ts +0 -23
  214. package/src/scores/ScoreCalculator.ts +0 -3
  215. package/src/updaters/CallUpdater.ts +0 -5
  216. package/src/updaters/ObserverUpdater.ts +0 -5
  217. package/src/updaters/OnAllCallObserverUpdater.ts +0 -59
  218. package/src/updaters/OnAllClientCallUpdater.ts +0 -61
  219. package/src/updaters/OnAnyCallObserverUpdater.ts +0 -41
  220. package/src/updaters/OnAnyClientCallUpdater.ts +0 -39
  221. package/src/updaters/OnIntervalUpdater.ts +0 -19
  222. package/src/updaters/Updater.ts +0 -5
  223. package/src/utils/MediasoupRemoteTrackResolver.ts +0 -155
  224. package/src/utils/RemoteTrackResolver.ts +0 -12
  225. package/tsconfig.json +0 -19
  226. package/tslint.json +0 -6
package/package.json CHANGED
@@ -1,20 +1,40 @@
1
1
  {
2
2
  "name": "@observertc/observer-js",
3
- "version": "1.0.0-ca725d7.0",
4
- "description": "Server Side NodeJS Library for processing ObserveRTC Samples",
5
- "main": "lib/index.js",
6
- "types": "lib/index.d.ts",
3
+ "version": "1.0.0",
4
+ "description": "Server-side Node.js library for processing ObserveRTC Samples",
5
+ "main": "./dist/index.js",
6
+ "module": "./dist/index.mjs",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "import": {
11
+ "types": "./dist/index.d.mts",
12
+ "default": "./dist/index.mjs"
13
+ },
14
+ "require": {
15
+ "types": "./dist/index.d.ts",
16
+ "default": "./dist/index.js"
17
+ }
18
+ }
19
+ },
20
+ "files": [
21
+ "dist"
22
+ ],
7
23
  "engines": {
8
- "node": ">=16"
24
+ "node": ">=22"
9
25
  },
10
26
  "scripts": {
11
27
  "prepare": "npm run build",
12
- "prepublish": "pkgfiles",
13
- "prepublishOnly": "npm run lint",
28
+ "prepublishOnly": "npm run lint && npm run typecheck",
14
29
  "format": "prettier --write \"src/**/*.ts\"",
15
- "lint": "./node_modules/.bin/eslint -c .eslintrc.js src/*",
16
- "build": "tsc",
17
- "test": "jest --config jest.config.js"
30
+ "lint": "eslint -c .eslintrc.json \"src/**/*.ts\"",
31
+ "build": "tsup",
32
+ "typecheck": "tsc --noEmit",
33
+ "test": "jest --config jest.config.js",
34
+ "test:coverage": "jest --config jest.config.js --coverage",
35
+ "example": "ts-node --compiler-options '{\"module\":\"commonjs\"}' examples/sfu-observer.ts",
36
+ "example:detectors": "ts-node --compiler-options '{\"module\":\"commonjs\"}' examples/detectors.ts",
37
+ "bench": "ts-node --compiler-options '{\"module\":\"commonjs\"}' bench/detectors.bench.ts"
18
38
  },
19
39
  "keywords": [
20
40
  "webrtc",
@@ -27,27 +47,33 @@
27
47
  "dependencies": {
28
48
  "@bufbuild/protobuf": "1.1.1",
29
49
  "events": "^3.3.0",
30
- "uuid": "^8.3.2"
50
+ "uuid": "^11.1.1"
31
51
  },
32
52
  "devDependencies": {
33
53
  "@tsconfig/node20": "^1.0.2",
34
54
  "@types/jest": "^27.5.2",
35
55
  "@types/node": "^20.9.0",
36
- "@types/uuid": "^8.3.4",
37
56
  "@typescript-eslint/eslint-plugin": "^5.38.0",
38
57
  "@typescript-eslint/parser": "^5.38.0",
39
- "bufferutil": "^4.0.6",
40
58
  "eslint": "^8.24.0",
41
59
  "jest": "^27.5.0",
42
- "pkgfiles": "^2.3.0",
60
+ "mediasoup": "^3.20.3",
43
61
  "prettier": "2.8.7",
44
62
  "ts-jest": "^27.1.5",
45
- "typescript": "^4.8.3",
46
- "ts-node-dev": "^2.0.0",
47
- "utf-8-validate": "^5.0.8"
63
+ "ts-node": "^10.9.2",
64
+ "tsup": "^8.5.1",
65
+ "typescript": "^4.8.3"
48
66
  },
49
67
  "repository": {
50
68
  "type": "git",
51
- "url": "https://github.com/observertc/observer-js"
69
+ "url": "git+https://github.com/ObserveRTC/observer-js.git"
70
+ },
71
+ "peerDependencies": {
72
+ "mediasoup": ">=3.11.0"
73
+ },
74
+ "peerDependenciesMeta": {
75
+ "mediasoup": {
76
+ "optional": true
77
+ }
52
78
  }
53
79
  }
package/.eslintrc.json DELETED
@@ -1,143 +0,0 @@
1
- {
2
- "parser": "@typescript-eslint/parser",
3
- "parserOptions": {
4
- "ecmaVersion": "latest",
5
- "sourceType": "module",
6
- "project": "./tsconfig.json"
7
- },
8
- "extends": ["plugin:@typescript-eslint/recommended"],
9
- "env": { "node": true },
10
- "rules": {
11
- "array-bracket-spacing": [ 2, "always", {
12
- "objectsInArrays": true,
13
- "arraysInArrays": true
14
- }],
15
- "arrow-parens": [ 2, "always" ],
16
- "arrow-spacing": 2,
17
- "block-spacing": [ 2, "always" ],
18
- "brace-style": [ 2, "1tbs", { "allowSingleLine": true } ],
19
- "camelcase": 2,
20
- "comma-spacing": [ 2, { "before": false, "after": true } ],
21
- "comma-style": 2,
22
- "computed-property-spacing": 2,
23
- "constructor-super": 2,
24
- "func-call-spacing": 2,
25
- "generator-star-spacing": 2,
26
- "guard-for-in": 2,
27
- "indent": [ 2, "tab", { "SwitchCase": 1 } ],
28
- "@typescript-eslint/indent": [ 2, "tab", { "SwitchCase": 1 } ],
29
- "require-await": "off",
30
- "@typescript-eslint/require-await": "error",
31
- "key-spacing": [ 2, {
32
- "singleLine": {
33
- "beforeColon": false,
34
- "afterColon": true
35
- },
36
- "multiLine": {
37
- "beforeColon": false,
38
- "afterColon": true
39
- }
40
- }],
41
- "keyword-spacing": 2,
42
- "linebreak-style": [ 2, "unix" ],
43
- "lines-around-comment": [ 2, {
44
- "allowBlockStart": true,
45
- "allowObjectStart": true,
46
- "beforeBlockComment": true,
47
- "beforeLineComment": false
48
- }],
49
- "max-len": 0,
50
- "newline-after-var": 2,
51
- "newline-before-return": 2,
52
- "newline-per-chained-call": 2,
53
- "no-alert": 2,
54
- "no-caller": 2,
55
- "no-case-declarations": 2,
56
- "no-catch-shadow": 2,
57
- "no-class-assign": 2,
58
- "no-confusing-arrow": 2,
59
- "no-console": 2,
60
- "no-const-assign": 2,
61
- "no-debugger": 2,
62
- "no-dupe-args": 2,
63
- "no-dupe-keys": 2,
64
- "no-duplicate-case": 2,
65
- "no-div-regex": 2,
66
- "no-empty": [ 2, { "allowEmptyCatch": true } ],
67
- "no-empty-pattern": 2,
68
- "no-else-return": 0,
69
- "no-eval": 2,
70
- "no-extend-native": 2,
71
- "no-ex-assign": 2,
72
- "no-extra-bind": 2,
73
- "no-extra-boolean-cast": 2,
74
- "no-extra-label": 2,
75
- "no-extra-semi": 2,
76
- "no-fallthrough": 2,
77
- "no-func-assign": 2,
78
- "no-global-assign": 2,
79
- "no-implicit-coercion": 2,
80
- "no-implicit-globals": 2,
81
- "no-inner-declarations": 2,
82
- "no-invalid-regexp": 2,
83
- "no-invalid-this": 2,
84
- "no-irregular-whitespace": 2,
85
- "no-lonely-if": 2,
86
- "no-mixed-operators": 2,
87
- "no-mixed-spaces-and-tabs": 2,
88
- "no-multi-spaces": 2,
89
- "no-multi-str": 2,
90
- "no-multiple-empty-lines": [ 1, { "max": 1, "maxEOF": 0, "maxBOF": 0 } ],
91
- "no-native-reassign": 2,
92
- "no-negated-in-lhs": 2,
93
- "no-new": 2,
94
- "no-new-func": 2,
95
- "no-new-wrappers": 2,
96
- "no-obj-calls": 2,
97
- "no-proto": 2,
98
- "no-regex-spaces": 2,
99
- "no-restricted-imports": 2,
100
- "no-return-assign": 2,
101
- "no-self-assign": 2,
102
- "no-self-compare": 2,
103
- "no-sequences": 2,
104
- "no-shadow": 2,
105
- "no-shadow-restricted-names": 2,
106
- "no-spaced-func": 2,
107
- "no-sparse-arrays": 2,
108
- "no-this-before-super": 2,
109
- "no-throw-literal": 2,
110
- "no-unexpected-multiline": 2,
111
- "no-unmodified-loop-condition": 2,
112
- "no-unreachable": 2,
113
- "no-unused-vars": "off",
114
- "@typescript-eslint/no-unused-vars": "error",
115
- "no-useless-call": 2,
116
- "no-useless-computed-key": 2,
117
- "no-useless-concat": 2,
118
- "no-useless-rename": 2,
119
- "no-var": 2,
120
- "no-whitespace-before-property": 2,
121
- "object-curly-newline": 0,
122
- "object-curly-spacing": [ 2, "always" ],
123
- "object-property-newline": [ 2, { "allowMultiplePropertiesPerLine": true } ],
124
- "prefer-const": 2,
125
- "prefer-rest-params": 2,
126
- "prefer-spread": 2,
127
- "prefer-template": 2,
128
- "quotes": [ 2, "single", { "avoidEscape": true } ],
129
- "semi": [ 2, "always" ],
130
- "semi-spacing": 2,
131
- "space-before-blocks": 2,
132
- "space-before-function-paren": [ 2,
133
- {
134
- "anonymous": "never",
135
- "named": "never",
136
- "asyncArrow": "always"
137
- }],
138
- "space-in-parens": [ 2, "never" ],
139
- "spaced-comment": [ 2, "always" ],
140
- "strict": 2,
141
- "valid-typeof": 2
142
- }
143
- }
package/.prettierignore DELETED
@@ -1,5 +0,0 @@
1
- docs-generator/
2
- node_modules/
3
- package.json
4
- tsconfig.json
5
- tslint.json
package/.prettierrc DELETED
@@ -1,7 +0,0 @@
1
- {
2
- "tabWidth": 2,
3
- "useTabs": true,
4
- "trailingComma": "es5",
5
- "singleQuote": true,
6
- "printWidth": 120
7
- }
package/jest.config.js DELETED
@@ -1,9 +0,0 @@
1
- module.exports = {
2
- roots: ['<rootDir>'],
3
- transform: {
4
- '^.+\\.tsx?$': 'ts-jest',
5
- },
6
- testPathIgnorePatterns: ["/node_modules/", "/tests/helpers/"],
7
- testRegex: '(/tests/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$',
8
- moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'],
9
- }
@@ -1,86 +0,0 @@
1
- /// <reference types="node" />
2
- import { EventEmitter } from 'events';
3
- import { ObservedClient, ObservedClientSettings } from './ObservedClient';
4
- import { Observer } from './Observer';
5
- import { ScoreCalculator } from './scores/ScoreCalculator';
6
- import { CalculatedScore } from './scores/CalculatedScore';
7
- import { Detectors } from './detectors/Detectors';
8
- import { RemoteTrackResolver } from './utils/RemoteTrackResolver';
9
- import { Updater } from './updaters/Updater';
10
- import { ObservedCallEventMonitor } from './ObservedCallEventMonitor';
11
- export type ObservedCallSettings<AppData extends Record<string, unknown> = Record<string, unknown>> = {
12
- callId: string;
13
- appData?: AppData;
14
- remoteTrackResolvePolicy?: 'p2p' | 'mediasoup-sfu' | 'none';
15
- updatePolicy?: 'update-on-any-client-updated' | 'update-when-all-client-updated' | 'update-on-interval';
16
- updateIntervalInMs?: number;
17
- closeCallIfEmptyForMs?: number;
18
- };
19
- export type ObservedCallEvents = {
20
- update: [];
21
- newclient: [ObservedClient];
22
- empty: [];
23
- 'not-empty': [];
24
- close: [];
25
- };
26
- export declare interface ObservedCall {
27
- on<U extends keyof ObservedCallEvents>(event: U, listener: (...args: ObservedCallEvents[U]) => void): this;
28
- off<U extends keyof ObservedCallEvents>(event: U, listener: (...args: ObservedCallEvents[U]) => void): this;
29
- once<U extends keyof ObservedCallEvents>(event: U, listener: (...args: ObservedCallEvents[U]) => void): this;
30
- emit<U extends keyof ObservedCallEvents>(event: U, ...args: ObservedCallEvents[U]): boolean;
31
- }
32
- export declare class ObservedCall<AppData extends Record<string, unknown> = Record<string, unknown>> extends EventEmitter {
33
- readonly observer: Observer;
34
- readonly detectors: Detectors;
35
- updater?: Updater;
36
- scoreCalculator: ScoreCalculator;
37
- readonly callId: string;
38
- readonly observedClients: Map<string, ObservedClient<Record<string, unknown>>>;
39
- readonly clientsUsedTurn: Set<string>;
40
- readonly calculatedScore: CalculatedScore;
41
- remoteTrackResolver?: RemoteTrackResolver;
42
- totalAddedClients: number;
43
- totalRemovedClients: number;
44
- totalClientsReceivedAudioBytes: number;
45
- totalClientsReceivedVideoBytes: number;
46
- totalClientsReceivedDataChannelBytes: number;
47
- totalClientsReceivedBytes: number;
48
- totalClientsSentAudioBytes: number;
49
- totalClientsSentDataChannelBytes: number;
50
- totalClientsSentVideoBytes: number;
51
- totalClientsSentBytes: number;
52
- totalRttLt50Measurements: number;
53
- totalRttLt150Measurements: number;
54
- totalRttLt300Measurements: number;
55
- totalRttGtOrEq300Measurements: number;
56
- numberOfIssues: number;
57
- numberOfPeerConnections: number;
58
- numberOfInboundRtpStreams: number;
59
- numberOfOutboundRtpStreams: number;
60
- numberOfDataChannels: number;
61
- maxNumberOfClients: number;
62
- deltaNumberOfIssues: number;
63
- deltaRttLt50Measurements: number;
64
- deltaRttLt150Measurements: number;
65
- deltaRttLt300Measurements: number;
66
- deltaRttGtOrEq300Measurements: number;
67
- appData: AppData;
68
- closed: boolean;
69
- startedAt?: number;
70
- endedAt?: number;
71
- closedAt?: number;
72
- readonly settings: Pick<ObservedCallSettings, 'closeCallIfEmptyForMs'>;
73
- private closeTimer?;
74
- constructor(settings: ObservedCallSettings<AppData>, observer: Observer);
75
- get numberOfClients(): number;
76
- get score(): number | undefined;
77
- close(): void;
78
- getObservedClient<ClientAppData extends Record<string, unknown> = Record<string, unknown>>(clientId: string): ObservedClient<ClientAppData> | undefined;
79
- createObservedClient<ClientAppData extends Record<string, unknown> = Record<string, unknown>>(settings: ObservedClientSettings<ClientAppData>): ObservedClient<ClientAppData>;
80
- createEventMonitor<CTX>(context: CTX): ObservedCallEventMonitor<CTX>;
81
- update(): void;
82
- private _onClientUpdate;
83
- private _clientJoined;
84
- private _clientLeft;
85
- }
86
- //# sourceMappingURL=ObservedCall.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ObservedCall.d.ts","sourceRoot":"","sources":["../src/ObservedCall.ts"],"names":[],"mappings":"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"}
@@ -1,228 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ObservedCall = void 0;
4
- const events_1 = require("events");
5
- const ObservedClient_1 = require("./ObservedClient");
6
- const DefaultCallScoreCalculator_1 = require("./scores/DefaultCallScoreCalculator");
7
- const Detectors_1 = require("./detectors/Detectors");
8
- const OnAllClientCallUpdater_1 = require("./updaters/OnAllClientCallUpdater");
9
- const OnIntervalUpdater_1 = require("./updaters/OnIntervalUpdater");
10
- const OnAnyClientCallUpdater_1 = require("./updaters/OnAnyClientCallUpdater");
11
- const ObservedCallEventMonitor_1 = require("./ObservedCallEventMonitor");
12
- class ObservedCall extends events_1.EventEmitter {
13
- observer;
14
- detectors;
15
- updater;
16
- scoreCalculator;
17
- callId;
18
- observedClients = new Map();
19
- clientsUsedTurn = new Set();
20
- calculatedScore = {
21
- weight: 1,
22
- value: undefined,
23
- };
24
- remoteTrackResolver;
25
- totalAddedClients = 0;
26
- totalRemovedClients = 0;
27
- totalClientsReceivedAudioBytes = 0;
28
- totalClientsReceivedVideoBytes = 0;
29
- totalClientsReceivedDataChannelBytes = 0;
30
- totalClientsReceivedBytes = 0;
31
- totalClientsSentAudioBytes = 0;
32
- totalClientsSentDataChannelBytes = 0;
33
- totalClientsSentVideoBytes = 0;
34
- totalClientsSentBytes = 0;
35
- totalRttLt50Measurements = 0;
36
- totalRttLt150Measurements = 0;
37
- totalRttLt300Measurements = 0;
38
- totalRttGtOrEq300Measurements = 0;
39
- numberOfIssues = 0;
40
- numberOfPeerConnections = 0;
41
- numberOfInboundRtpStreams = 0;
42
- numberOfOutboundRtpStreams = 0;
43
- numberOfDataChannels = 0;
44
- maxNumberOfClients = 0;
45
- deltaNumberOfIssues = 0;
46
- deltaRttLt50Measurements = 0;
47
- deltaRttLt150Measurements = 0;
48
- deltaRttLt300Measurements = 0;
49
- deltaRttGtOrEq300Measurements = 0;
50
- appData;
51
- closed = false;
52
- startedAt;
53
- endedAt;
54
- closedAt;
55
- settings;
56
- closeTimer;
57
- constructor(settings, observer) {
58
- super();
59
- this.observer = observer;
60
- this.setMaxListeners(Infinity);
61
- this.callId = settings.callId;
62
- this.appData = settings.appData ?? {};
63
- this.scoreCalculator = new DefaultCallScoreCalculator_1.DefaultCallScoreCalculator(this);
64
- this.detectors = new Detectors_1.Detectors();
65
- if (settings.updateIntervalInMs) {
66
- if (settings.updatePolicy !== 'update-on-interval') {
67
- throw new Error('updatePolicy must be update-on-interval if updateIntervalInMs is set in config');
68
- }
69
- }
70
- switch (settings.updatePolicy) {
71
- case 'update-on-any-client-updated':
72
- this.updater = new OnAnyClientCallUpdater_1.OnAnyClientCallUpdater(this);
73
- break;
74
- case 'update-when-all-client-updated':
75
- this.updater = new OnAllClientCallUpdater_1.OnAllClientCallUpdater(this);
76
- break;
77
- case 'update-on-interval':
78
- if (!settings.updateIntervalInMs) {
79
- throw new Error('updateIntervalInMs setting in config must be set if updatePolicy is update-on-interval');
80
- }
81
- this.updater = new OnIntervalUpdater_1.OnIntervalUpdater(settings.updateIntervalInMs, this.update.bind(this));
82
- break;
83
- }
84
- switch (settings.remoteTrackResolvePolicy) {
85
- case 'mediasoup-sfu':
86
- break;
87
- }
88
- this.settings = {
89
- closeCallIfEmptyForMs: settings.closeCallIfEmptyForMs,
90
- };
91
- }
92
- get numberOfClients() {
93
- return this.observedClients.size;
94
- }
95
- get score() {
96
- return this.calculatedScore.value;
97
- }
98
- close() {
99
- if (this.closed)
100
- return;
101
- this.update(); // last update before closing
102
- this.closed = true;
103
- this.updater?.close();
104
- let minSampleTimestamps;
105
- let maxSampleTimestamps;
106
- for (const client of this.observedClients.values()) {
107
- client.close();
108
- if (client.joinedAt)
109
- minSampleTimestamps = Math.min(minSampleTimestamps ?? client.joinedAt, client.joinedAt);
110
- if (client.leftAt)
111
- maxSampleTimestamps = Math.max(maxSampleTimestamps ?? client.leftAt, client.leftAt);
112
- }
113
- if (this.startedAt === undefined)
114
- this.startedAt = minSampleTimestamps;
115
- if (this.endedAt === undefined)
116
- this.endedAt = maxSampleTimestamps;
117
- this.closedAt = Date.now();
118
- this.emit('close');
119
- }
120
- getObservedClient(clientId) {
121
- if (this.closed || !this.observedClients.has(clientId))
122
- return;
123
- return this.observedClients.get(clientId);
124
- }
125
- createObservedClient(settings) {
126
- if (this.closed)
127
- throw new Error(`Call ${this.callId} is closed`);
128
- if (this.observedClients.has(settings.clientId))
129
- throw new Error(`Client with id ${settings.clientId} already exists`);
130
- if (!settings.closeClientIfIdleForMs) {
131
- settings.closeClientIfIdleForMs = this.observer.config.closeClientIfIdleForMs;
132
- }
133
- const result = new ObservedClient_1.ObservedClient(settings, this);
134
- const wasEmpty = this.observedClients.size === 0;
135
- const onUpdate = () => this._onClientUpdate(result);
136
- const joined = () => this._clientJoined(result);
137
- const left = () => this._clientLeft(result);
138
- result.once('close', () => {
139
- result.off('update', onUpdate);
140
- result.off('joined', joined);
141
- result.off('left', left);
142
- this.observedClients.delete(settings.clientId);
143
- if (this.observedClients.size === 0) {
144
- this.emit('empty');
145
- if (this.settings.closeCallIfEmptyForMs) {
146
- this.closeTimer = setTimeout(() => {
147
- this.close();
148
- }, this.settings.closeCallIfEmptyForMs);
149
- }
150
- }
151
- ++this.totalRemovedClients;
152
- });
153
- result.on('update', onUpdate);
154
- result.on('joined', joined);
155
- result.on('left', left);
156
- ++this.totalAddedClients;
157
- this.observedClients.set(settings.clientId, result);
158
- this.maxNumberOfClients = Math.max(this.maxNumberOfClients, this.observedClients.size);
159
- if (this.closeTimer) {
160
- clearTimeout(this.closeTimer);
161
- this.closeTimer = undefined;
162
- }
163
- this.emit('newclient', result);
164
- if (wasEmpty) {
165
- this.emit('not-empty');
166
- }
167
- return result;
168
- }
169
- createEventMonitor(context) {
170
- return new ObservedCallEventMonitor_1.ObservedCallEventMonitor(this, context);
171
- }
172
- update() {
173
- if (this.closed)
174
- return;
175
- this.numberOfInboundRtpStreams = 0;
176
- this.numberOfOutboundRtpStreams = 0;
177
- this.numberOfPeerConnections = 0;
178
- this.numberOfDataChannels = 0;
179
- for (const client of this.observedClients.values()) {
180
- this.numberOfInboundRtpStreams += client.numberOfInboundRtpStreams;
181
- this.numberOfOutboundRtpStreams += client.numberOfOutboundRtpStreams;
182
- this.numberOfPeerConnections += client.numberOfPeerConnections;
183
- this.numberOfDataChannels += client.numberOfDataChannels;
184
- }
185
- this.detectors.update();
186
- this.scoreCalculator.update();
187
- this.emit('update');
188
- this.deltaNumberOfIssues = 0;
189
- this.deltaRttLt50Measurements = 0;
190
- this.deltaRttLt150Measurements = 0;
191
- this.deltaRttLt300Measurements = 0;
192
- this.deltaRttGtOrEq300Measurements = 0;
193
- }
194
- _onClientUpdate(client) {
195
- this.totalClientsReceivedAudioBytes += client.deltaReceivedAudioBytes;
196
- this.totalClientsReceivedVideoBytes += client.deltaReceivedVideoBytes;
197
- this.totalClientsReceivedDataChannelBytes += client.deltaDataChannelBytesReceived;
198
- this.totalClientsReceivedBytes += client.deltaTransportReceivedBytes;
199
- this.totalClientsSentAudioBytes += client.deltaSentAudioBytes;
200
- this.totalClientsSentVideoBytes += client.deltaSentVideoBytes;
201
- this.totalClientsSentDataChannelBytes += client.deltaDataChannelBytesSent;
202
- this.totalClientsSentBytes += client.deltaTransportSentBytes;
203
- this.deltaRttLt50Measurements += client.deltaRttLt50Measurements;
204
- this.deltaRttLt150Measurements += client.deltaRttLt150Measurements;
205
- this.deltaRttLt300Measurements += client.deltaRttLt300Measurements;
206
- this.deltaRttGtOrEq300Measurements += client.deltaRttGtOrEq300Measurements;
207
- this.totalRttLt50Measurements += client.deltaRttLt50Measurements;
208
- this.totalRttLt150Measurements += client.deltaRttLt150Measurements;
209
- this.totalRttLt300Measurements += client.deltaRttLt300Measurements;
210
- this.totalRttGtOrEq300Measurements += client.deltaRttGtOrEq300Measurements;
211
- this.deltaNumberOfIssues += client.deltaNumberOfIssues;
212
- this.numberOfIssues += client.deltaNumberOfIssues;
213
- if (client.usingTURN) {
214
- this.clientsUsedTurn.add(client.clientId);
215
- }
216
- }
217
- _clientJoined(client) {
218
- if (!client.joinedAt)
219
- return;
220
- this.startedAt = Math.min(this.startedAt ?? client.joinedAt, client.joinedAt);
221
- }
222
- _clientLeft(client) {
223
- if (!client.leftAt)
224
- return;
225
- this.endedAt = Math.max(this.endedAt ?? client.leftAt, client.leftAt);
226
- }
227
- }
228
- exports.ObservedCall = ObservedCall;