@tencent-rtc/mcp 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 (286) hide show
  1. package/@tencent/aegis-node-sdk/CHANGELOG.md +8 -0
  2. package/@tencent/aegis-node-sdk/LICENSE +21 -0
  3. package/@tencent/aegis-node-sdk/README.md +562 -0
  4. package/@tencent/aegis-node-sdk/lib/aegis.min.js +1 -0
  5. package/@tencent/aegis-node-sdk/lib/packages/core/src/constant/config.d.ts +14 -0
  6. package/@tencent/aegis-node-sdk/lib/packages/core/src/constant/global.d.ts +1 -0
  7. package/@tencent/aegis-node-sdk/lib/packages/core/src/constant/index.d.ts +9 -0
  8. package/@tencent/aegis-node-sdk/lib/packages/core/src/constant/report-ignore.d.ts +2 -0
  9. package/@tencent/aegis-node-sdk/lib/packages/core/src/core.d.ts +85 -0
  10. package/@tencent/aegis-node-sdk/lib/packages/core/src/hooks/afterRequestHooks.d.ts +3 -0
  11. package/@tencent/aegis-node-sdk/lib/packages/core/src/hooks/beforeRequestHooks.d.ts +9 -0
  12. package/@tencent/aegis-node-sdk/lib/packages/core/src/hooks/modifyRequestHooks.d.ts +3 -0
  13. package/@tencent/aegis-node-sdk/lib/packages/core/src/index.d.ts +9 -0
  14. package/@tencent/aegis-node-sdk/lib/packages/core/src/interface/config.d.ts +62 -0
  15. package/@tencent/aegis-node-sdk/lib/packages/core/src/interface/env.d.ts +11 -0
  16. package/@tencent/aegis-node-sdk/lib/packages/core/src/interface/index.d.ts +4 -0
  17. package/@tencent/aegis-node-sdk/lib/packages/core/src/interface/log.d.ts +130 -0
  18. package/@tencent/aegis-node-sdk/lib/packages/core/src/interface/send.d.ts +34 -0
  19. package/@tencent/aegis-node-sdk/lib/packages/core/src/pipes/format.d.ts +2 -0
  20. package/@tencent/aegis-node-sdk/lib/packages/core/src/pipes/index.d.ts +18 -0
  21. package/@tencent/aegis-node-sdk/lib/packages/core/src/pipes/length-limit.d.ts +8 -0
  22. package/@tencent/aegis-node-sdk/lib/packages/core/src/pipes/pv.d.ts +8 -0
  23. package/@tencent/aegis-node-sdk/lib/packages/core/src/pipes/remove-payload.d.ts +2 -0
  24. package/@tencent/aegis-node-sdk/lib/packages/core/src/pipes/repeat-limit.d.ts +4 -0
  25. package/@tencent/aegis-node-sdk/lib/packages/core/src/pipes/report.d.ts +10 -0
  26. package/@tencent/aegis-node-sdk/lib/packages/core/src/pipes/sample.d.ts +3 -0
  27. package/@tencent/aegis-node-sdk/lib/packages/core/src/pipes/throttle.d.ts +3 -0
  28. package/@tencent/aegis-node-sdk/lib/packages/core/src/pipes/trace/index.d.ts +34 -0
  29. package/@tencent/aegis-node-sdk/lib/packages/core/src/pipes/trace/jwt.d.ts +12 -0
  30. package/@tencent/aegis-node-sdk/lib/packages/core/src/pipes/trace/ot-js.d.ts +14 -0
  31. package/@tencent/aegis-node-sdk/lib/packages/core/src/pipes/trace/uuid.d.ts +2 -0
  32. package/@tencent/aegis-node-sdk/lib/packages/core/src/pipes/whitelist.d.ts +12 -0
  33. package/@tencent/aegis-node-sdk/lib/packages/core/src/pipes/write-before.d.ts +3 -0
  34. package/@tencent/aegis-node-sdk/lib/packages/core/src/plugin.d.ts +33 -0
  35. package/@tencent/aegis-node-sdk/lib/packages/core/src/polyfill.d.ts +0 -0
  36. package/@tencent/aegis-node-sdk/lib/packages/core/src/util/destroy.d.ts +2 -0
  37. package/@tencent/aegis-node-sdk/lib/packages/core/src/util/event-emitter.d.ts +18 -0
  38. package/@tencent/aegis-node-sdk/lib/packages/core/src/util/index.d.ts +60 -0
  39. package/@tencent/aegis-node-sdk/lib/packages/node-sdk/src/index.d.ts +15 -0
  40. package/@tencent/aegis-node-sdk/lib/packages/node-sdk/src/interface/selector.d.ts +5 -0
  41. package/@tencent/aegis-node-sdk/lib/packages/node-sdk/src/pipes/batch-report-pipe.d.ts +6 -0
  42. package/@tencent/aegis-node-sdk/lib/packages/node-sdk/src/protocol/protocol_base.d.ts +18 -0
  43. package/@tencent/aegis-node-sdk/lib/packages/node-sdk/src/protocol/protocol_http.d.ts +12 -0
  44. package/@tencent/aegis-node-sdk/lib/packages/node-sdk/src/selector/ip_selector.d.ts +10 -0
  45. package/@tencent/aegis-node-sdk/lib/packages/node-sdk/src/selector/polaris_selector.d.ts +20 -0
  46. package/@tencent/aegis-node-sdk/lib/packages/node-sdk/src/selector/selector_base.d.ts +27 -0
  47. package/@tencent/aegis-node-sdk/lib/packages/node-sdk/src/util/eval_require.d.ts +2 -0
  48. package/@tencent/aegis-node-sdk/package.json +19 -0
  49. package/@tencent/polaris/README.md +407 -0
  50. package/@tencent/polaris/dist/consumer/health.d.ts +126 -0
  51. package/@tencent/polaris/dist/consumer/health.js +283 -0
  52. package/@tencent/polaris/dist/consumer/health.js.map +1 -0
  53. package/@tencent/polaris/dist/consumer/index.d.ts +120 -0
  54. package/@tencent/polaris/dist/consumer/index.js +348 -0
  55. package/@tencent/polaris/dist/consumer/index.js.map +1 -0
  56. package/@tencent/polaris/dist/consumer/monitor.d.ts +145 -0
  57. package/@tencent/polaris/dist/consumer/monitor.js +343 -0
  58. package/@tencent/polaris/dist/consumer/monitor.js.map +1 -0
  59. package/@tencent/polaris/dist/consumer/selector.d.ts +73 -0
  60. package/@tencent/polaris/dist/consumer/selector.js +316 -0
  61. package/@tencent/polaris/dist/consumer/selector.js.map +1 -0
  62. package/@tencent/polaris/dist/errors.d.ts +373 -0
  63. package/@tencent/polaris/dist/errors.js +154 -0
  64. package/@tencent/polaris/dist/errors.js.map +1 -0
  65. package/@tencent/polaris/dist/global.d.ts +16 -0
  66. package/@tencent/polaris/dist/global.js +18 -0
  67. package/@tencent/polaris/dist/global.js.map +1 -0
  68. package/@tencent/polaris/dist/index.d.ts +62 -0
  69. package/@tencent/polaris/dist/index.js +145 -0
  70. package/@tencent/polaris/dist/index.js.map +1 -0
  71. package/@tencent/polaris/dist/instance.d.ts +109 -0
  72. package/@tencent/polaris/dist/instance.js +38 -0
  73. package/@tencent/polaris/dist/instance.js.map +1 -0
  74. package/@tencent/polaris/dist/limiter/bucket.d.ts +51 -0
  75. package/@tencent/polaris/dist/limiter/bucket.js +152 -0
  76. package/@tencent/polaris/dist/limiter/bucket.js.map +1 -0
  77. package/@tencent/polaris/dist/limiter/index.d.ts +73 -0
  78. package/@tencent/polaris/dist/limiter/index.js +149 -0
  79. package/@tencent/polaris/dist/limiter/index.js.map +1 -0
  80. package/@tencent/polaris/dist/limiter/ratelimit.d.ts +27 -0
  81. package/@tencent/polaris/dist/limiter/ratelimit.js +134 -0
  82. package/@tencent/polaris/dist/limiter/ratelimit.js.map +1 -0
  83. package/@tencent/polaris/dist/limiter/ratelimiter/base.d.ts +17 -0
  84. package/@tencent/polaris/dist/limiter/ratelimiter/base.js +15 -0
  85. package/@tencent/polaris/dist/limiter/ratelimiter/base.js.map +1 -0
  86. package/@tencent/polaris/dist/limiter/ratelimiter/global.d.ts +59 -0
  87. package/@tencent/polaris/dist/limiter/ratelimiter/global.js +397 -0
  88. package/@tencent/polaris/dist/limiter/ratelimiter/global.js.map +1 -0
  89. package/@tencent/polaris/dist/limiter/ratelimiter/index.d.ts +3 -0
  90. package/@tencent/polaris/dist/limiter/ratelimiter/index.js +19 -0
  91. package/@tencent/polaris/dist/limiter/ratelimiter/index.js.map +1 -0
  92. package/@tencent/polaris/dist/limiter/ratelimiter/local.d.ts +17 -0
  93. package/@tencent/polaris/dist/limiter/ratelimiter/local.js +52 -0
  94. package/@tencent/polaris/dist/limiter/ratelimiter/local.js.map +1 -0
  95. package/@tencent/polaris/dist/location.d.ts +48 -0
  96. package/@tencent/polaris/dist/location.js +67 -0
  97. package/@tencent/polaris/dist/location.js.map +1 -0
  98. package/@tencent/polaris/dist/logging.d.ts +106 -0
  99. package/@tencent/polaris/dist/logging.js +130 -0
  100. package/@tencent/polaris/dist/logging.js.map +1 -0
  101. package/@tencent/polaris/dist/metadata.d.ts +78 -0
  102. package/@tencent/polaris/dist/metadata.js +119 -0
  103. package/@tencent/polaris/dist/metadata.js.map +1 -0
  104. package/@tencent/polaris/dist/plugins/breaker/polaris.d.ts +47 -0
  105. package/@tencent/polaris/dist/plugins/breaker/polaris.js +162 -0
  106. package/@tencent/polaris/dist/plugins/breaker/polaris.js.map +1 -0
  107. package/@tencent/polaris/dist/plugins/lb/base.d.ts +24 -0
  108. package/@tencent/polaris/dist/plugins/lb/base.js +32 -0
  109. package/@tencent/polaris/dist/plugins/lb/base.js.map +1 -0
  110. package/@tencent/polaris/dist/plugins/lb/edf.d.ts +24 -0
  111. package/@tencent/polaris/dist/plugins/lb/edf.js +77 -0
  112. package/@tencent/polaris/dist/plugins/lb/edf.js.map +1 -0
  113. package/@tencent/polaris/dist/plugins/lb/hashring.d.ts +24 -0
  114. package/@tencent/polaris/dist/plugins/lb/hashring.js +53 -0
  115. package/@tencent/polaris/dist/plugins/lb/hashring.js.map +1 -0
  116. package/@tencent/polaris/dist/plugins/lb/sticky.d.ts +31 -0
  117. package/@tencent/polaris/dist/plugins/lb/sticky.js +88 -0
  118. package/@tencent/polaris/dist/plugins/lb/sticky.js.map +1 -0
  119. package/@tencent/polaris/dist/plugins/lb/swrr.d.ts +25 -0
  120. package/@tencent/polaris/dist/plugins/lb/swrr.js +72 -0
  121. package/@tencent/polaris/dist/plugins/lb/swrr.js.map +1 -0
  122. package/@tencent/polaris/dist/plugins/lb/wr.d.ts +17 -0
  123. package/@tencent/polaris/dist/plugins/lb/wr.js +50 -0
  124. package/@tencent/polaris/dist/plugins/lb/wr.js.map +1 -0
  125. package/@tencent/polaris/dist/plugins/lb/wrr.d.ts +19 -0
  126. package/@tencent/polaris/dist/plugins/lb/wrr.js +81 -0
  127. package/@tencent/polaris/dist/plugins/lb/wrr.js.map +1 -0
  128. package/@tencent/polaris/dist/plugins/logging/console.d.ts +10 -0
  129. package/@tencent/polaris/dist/plugins/logging/console.js +38 -0
  130. package/@tencent/polaris/dist/plugins/logging/console.js.map +1 -0
  131. package/@tencent/polaris/dist/plugins/naming/local-server/index.d.ts +32 -0
  132. package/@tencent/polaris/dist/plugins/naming/local-server/index.js +88 -0
  133. package/@tencent/polaris/dist/plugins/naming/local-server/index.js.map +1 -0
  134. package/@tencent/polaris/dist/plugins/naming/polaris-server/adapter/base.d.ts +124 -0
  135. package/@tencent/polaris/dist/plugins/naming/polaris-server/adapter/base.js +398 -0
  136. package/@tencent/polaris/dist/plugins/naming/polaris-server/adapter/base.js.map +1 -0
  137. package/@tencent/polaris/dist/plugins/naming/polaris-server/adapter/discover.d.ts +27 -0
  138. package/@tencent/polaris/dist/plugins/naming/polaris-server/adapter/discover.js +287 -0
  139. package/@tencent/polaris/dist/plugins/naming/polaris-server/adapter/discover.js.map +1 -0
  140. package/@tencent/polaris/dist/plugins/naming/polaris-server/adapter/index.d.ts +15 -0
  141. package/@tencent/polaris/dist/plugins/naming/polaris-server/adapter/index.js +43 -0
  142. package/@tencent/polaris/dist/plugins/naming/polaris-server/adapter/index.js.map +1 -0
  143. package/@tencent/polaris/dist/plugins/naming/polaris-server/adapter/monitor.d.ts +28 -0
  144. package/@tencent/polaris/dist/plugins/naming/polaris-server/adapter/monitor.js +249 -0
  145. package/@tencent/polaris/dist/plugins/naming/polaris-server/adapter/monitor.js.map +1 -0
  146. package/@tencent/polaris/dist/plugins/naming/polaris-server/adapter/ratelimit.d.ts +19 -0
  147. package/@tencent/polaris/dist/plugins/naming/polaris-server/adapter/ratelimit.js +222 -0
  148. package/@tencent/polaris/dist/plugins/naming/polaris-server/adapter/ratelimit.js.map +1 -0
  149. package/@tencent/polaris/dist/plugins/naming/polaris-server/connector/grpc/bidi.d.ts +26 -0
  150. package/@tencent/polaris/dist/plugins/naming/polaris-server/connector/grpc/bidi.js +99 -0
  151. package/@tencent/polaris/dist/plugins/naming/polaris-server/connector/grpc/bidi.js.map +1 -0
  152. package/@tencent/polaris/dist/plugins/naming/polaris-server/connector/grpc/index.d.ts +60 -0
  153. package/@tencent/polaris/dist/plugins/naming/polaris-server/connector/grpc/index.js +259 -0
  154. package/@tencent/polaris/dist/plugins/naming/polaris-server/connector/grpc/index.js.map +1 -0
  155. package/@tencent/polaris/dist/plugins/naming/polaris-server/connector/grpc/pb/discover.proto +24 -0
  156. package/@tencent/polaris/dist/plugins/naming/polaris-server/connector/grpc/pb/monitor.proto +18 -0
  157. package/@tencent/polaris/dist/plugins/naming/polaris-server/connector/grpc/pb/ratelimit.proto +12 -0
  158. package/@tencent/polaris/dist/plugins/naming/polaris-server/connector/http/index.d.ts +39 -0
  159. package/@tencent/polaris/dist/plugins/naming/polaris-server/connector/http/index.js +115 -0
  160. package/@tencent/polaris/dist/plugins/naming/polaris-server/connector/http/index.js.map +1 -0
  161. package/@tencent/polaris/dist/plugins/naming/polaris-server/discover-pb/api.proto +24 -0
  162. package/@tencent/polaris/dist/plugins/naming/polaris-server/discover-pb/client.proto +22 -0
  163. package/@tencent/polaris/dist/plugins/naming/polaris-server/discover-pb/model.proto +28 -0
  164. package/@tencent/polaris/dist/plugins/naming/polaris-server/discover-pb/ratelimit.proto +80 -0
  165. package/@tencent/polaris/dist/plugins/naming/polaris-server/discover-pb/request.proto +18 -0
  166. package/@tencent/polaris/dist/plugins/naming/polaris-server/discover-pb/response.proto +65 -0
  167. package/@tencent/polaris/dist/plugins/naming/polaris-server/discover-pb/routing.proto +66 -0
  168. package/@tencent/polaris/dist/plugins/naming/polaris-server/discover-pb/service.proto +95 -0
  169. package/@tencent/polaris/dist/plugins/naming/polaris-server/discover-pb/types.d.ts +1568 -0
  170. package/@tencent/polaris/dist/plugins/naming/polaris-server/index.d.ts +36 -0
  171. package/@tencent/polaris/dist/plugins/naming/polaris-server/index.js +51 -0
  172. package/@tencent/polaris/dist/plugins/naming/polaris-server/index.js.map +1 -0
  173. package/@tencent/polaris/dist/plugins/naming/polaris-server/monitor-pb/api.proto +18 -0
  174. package/@tencent/polaris/dist/plugins/naming/polaris-server/monitor-pb/circuitbreak.proto +67 -0
  175. package/@tencent/polaris/dist/plugins/naming/polaris-server/monitor-pb/request.proto +82 -0
  176. package/@tencent/polaris/dist/plugins/naming/polaris-server/monitor-pb/response.proto +11 -0
  177. package/@tencent/polaris/dist/plugins/naming/polaris-server/monitor-pb/sdkcache.proto +46 -0
  178. package/@tencent/polaris/dist/plugins/naming/polaris-server/monitor-pb/sdkconfiguration.proto +16 -0
  179. package/@tencent/polaris/dist/plugins/naming/polaris-server/monitor-pb/sdktoken.proto +10 -0
  180. package/@tencent/polaris/dist/plugins/naming/polaris-server/monitor-pb/types.d.ts +1102 -0
  181. package/@tencent/polaris/dist/plugins/naming/polaris-server/pool.d.ts +29 -0
  182. package/@tencent/polaris/dist/plugins/naming/polaris-server/pool.js +77 -0
  183. package/@tencent/polaris/dist/plugins/naming/polaris-server/pool.js.map +1 -0
  184. package/@tencent/polaris/dist/plugins/naming/polaris-server/ratelimit-pb/api.proto +12 -0
  185. package/@tencent/polaris/dist/plugins/naming/polaris-server/ratelimit-pb/ratelimit.proto +28 -0
  186. package/@tencent/polaris/dist/plugins/naming/polaris-server/ratelimit-pb/types.d.ts +395 -0
  187. package/@tencent/polaris/dist/plugins/naming/polaris-server/rules.d.ts +13 -0
  188. package/@tencent/polaris/dist/plugins/naming/polaris-server/rules.js +116 -0
  189. package/@tencent/polaris/dist/plugins/naming/polaris-server/rules.js.map +1 -0
  190. package/@tencent/polaris/dist/plugins/naming/polaris-server/types.d.ts +67 -0
  191. package/@tencent/polaris/dist/plugins/naming/polaris-server/types.js +67 -0
  192. package/@tencent/polaris/dist/plugins/naming/polaris-server/types.js.map +1 -0
  193. package/@tencent/polaris/dist/plugins/naming/polaris-server/utils.d.ts +99 -0
  194. package/@tencent/polaris/dist/plugins/naming/polaris-server/utils.js +217 -0
  195. package/@tencent/polaris/dist/plugins/naming/polaris-server/utils.js.map +1 -0
  196. package/@tencent/polaris/dist/plugins/registry/memory.d.ts +10 -0
  197. package/@tencent/polaris/dist/plugins/registry/memory.js +50 -0
  198. package/@tencent/polaris/dist/plugins/registry/memory.js.map +1 -0
  199. package/@tencent/polaris/dist/plugins/router/polaris/nearby.d.ts +51 -0
  200. package/@tencent/polaris/dist/plugins/router/polaris/nearby.js +145 -0
  201. package/@tencent/polaris/dist/plugins/router/polaris/nearby.js.map +1 -0
  202. package/@tencent/polaris/dist/plugins/router/polaris/rule.d.ts +11 -0
  203. package/@tencent/polaris/dist/plugins/router/polaris/rule.js +174 -0
  204. package/@tencent/polaris/dist/plugins/router/polaris/rule.js.map +1 -0
  205. package/@tencent/polaris/dist/plugins/router/trpc/canary.d.ts +25 -0
  206. package/@tencent/polaris/dist/plugins/router/trpc/canary.js +36 -0
  207. package/@tencent/polaris/dist/plugins/router/trpc/canary.js.map +1 -0
  208. package/@tencent/polaris/dist/plugins/router/trpc/env.d.ts +10 -0
  209. package/@tencent/polaris/dist/plugins/router/trpc/env.js +34 -0
  210. package/@tencent/polaris/dist/plugins/router/trpc/env.js.map +1 -0
  211. package/@tencent/polaris/dist/plugins/router/trpc/set.d.ts +56 -0
  212. package/@tencent/polaris/dist/plugins/router/trpc/set.js +106 -0
  213. package/@tencent/polaris/dist/plugins/router/trpc/set.js.map +1 -0
  214. package/@tencent/polaris/dist/plugins/shaping/unirate.d.ts +31 -0
  215. package/@tencent/polaris/dist/plugins/shaping/unirate.js +124 -0
  216. package/@tencent/polaris/dist/plugins/shaping/unirate.js.map +1 -0
  217. package/@tencent/polaris/dist/plugins/shaping/warmup.d.ts +61 -0
  218. package/@tencent/polaris/dist/plugins/shaping/warmup.js +171 -0
  219. package/@tencent/polaris/dist/plugins/shaping/warmup.js.map +1 -0
  220. package/@tencent/polaris/dist/plugins/weight/polaris.d.ts +23 -0
  221. package/@tencent/polaris/dist/plugins/weight/polaris.js +159 -0
  222. package/@tencent/polaris/dist/plugins/weight/polaris.js.map +1 -0
  223. package/@tencent/polaris/dist/plugins.d.ts +619 -0
  224. package/@tencent/polaris/dist/plugins.js +91 -0
  225. package/@tencent/polaris/dist/plugins.js.map +1 -0
  226. package/@tencent/polaris/dist/polaris.d.ts +33 -0
  227. package/@tencent/polaris/dist/polaris.js +59 -0
  228. package/@tencent/polaris/dist/polaris.js.map +1 -0
  229. package/@tencent/polaris/dist/provider/index.d.ts +102 -0
  230. package/@tencent/polaris/dist/provider/index.js +168 -0
  231. package/@tencent/polaris/dist/provider/index.js.map +1 -0
  232. package/@tencent/polaris/dist/registry.d.ts +174 -0
  233. package/@tencent/polaris/dist/registry.js +660 -0
  234. package/@tencent/polaris/dist/registry.js.map +1 -0
  235. package/@tencent/polaris/dist/rules.d.ts +163 -0
  236. package/@tencent/polaris/dist/rules.js +24 -0
  237. package/@tencent/polaris/dist/rules.js.map +1 -0
  238. package/@tencent/polaris/dist/scripts/postinstall.d.ts +1 -0
  239. package/@tencent/polaris/dist/scripts/postinstall.js +71 -0
  240. package/@tencent/polaris/dist/scripts/postinstall.js.map +1 -0
  241. package/@tencent/polaris/dist/service.d.ts +18 -0
  242. package/@tencent/polaris/dist/service.js +3 -0
  243. package/@tencent/polaris/dist/service.js.map +1 -0
  244. package/@tencent/polaris/dist/skeleton.d.ts +87 -0
  245. package/@tencent/polaris/dist/skeleton.js +282 -0
  246. package/@tencent/polaris/dist/skeleton.js.map +1 -0
  247. package/@tencent/polaris/dist/utils.d.ts +36 -0
  248. package/@tencent/polaris/dist/utils.js +74 -0
  249. package/@tencent/polaris/dist/utils.js.map +1 -0
  250. package/@tencent/polaris/dist/weak.d.ts +11 -0
  251. package/@tencent/polaris/dist/weak.js +44 -0
  252. package/@tencent/polaris/dist/weak.js.map +1 -0
  253. package/@tencent/polaris/package.json +114 -0
  254. package/README.md +61 -0
  255. package/cursor-setting.png +0 -0
  256. package/index.js +16 -0
  257. package/index.js.map +1 -0
  258. package/mcp-server-prompt.png +0 -0
  259. package/mcp.json +8 -0
  260. package/package.json +49 -0
  261. package/resource/doc/tuicallkit/android/.gitkeep +0 -0
  262. package/resource/doc/tuicallkit/android/api_TUICallKit.md +610 -0
  263. package/resource/doc/tuicallkit/android/api_TUICallObserver.md +784 -0
  264. package/resource/doc/tuicallkit/android/how_to_integrated_android_callkit.md +286 -0
  265. package/resource/doc/tuicallkit/faq/faq.md +127 -0
  266. package/resource/doc/tuicallkit/flutter/api_TUICallDefine.md +938 -0
  267. package/resource/doc/tuicallkit/flutter/api_TUICallKit.md +469 -0
  268. package/resource/doc/tuicallkit/flutter/api_TUICallObserver.md +897 -0
  269. package/resource/doc/tuicallkit/flutter/how_to_integrated_flutter_callkit.md +226 -0
  270. package/resource/doc/tuicallkit/flutter/how_to_run_flutter_callkit_demo.md +101 -0
  271. package/resource/doc/tuicallkit/iOS/api_TUICallKit.md +398 -0
  272. package/resource/doc/tuicallkit/iOS/api_TUICallObserver.md +781 -0
  273. package/resource/doc/tuicallkit/iOS/how_to_integrated_iOS_callkit.md +268 -0
  274. package/resource/doc/tuicallkit/iOS/how_to_run_iOS_callkit_demo.md +98 -0
  275. package/resource/doc/tuicallkit/react/.gitkeep +0 -0
  276. package/resource/doc/tuicallkit/react/api_TUICallKit.md +354 -0
  277. package/resource/doc/tuicallkit/react/how_to_integrated_react_callkit.md +166 -0
  278. package/resource/doc/tuicallkit/react/how_to_run_react_callkit_demo.md +61 -0
  279. package/resource/doc/tuicallkit/vue/.gitkeep +0 -0
  280. package/resource/doc/tuicallkit/vue/api_TUICallKit.md +354 -0
  281. package/resource/doc/tuicallkit/vue/how_to_integrated_vue_callkit.md +187 -0
  282. package/resource/doc/tuicallkit/vue/how_to_run_vue_callkit_demo.md +61 -0
  283. package/server.js +132 -0
  284. package/server.js.map +1 -0
  285. package/streamableHttp.js +74 -0
  286. package/streamableHttp.js.map +1 -0
@@ -0,0 +1,149 @@
1
+ "use strict";
2
+ var _a, _b;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.Limiter = void 0;
5
+ const process_1 = require("process");
6
+ const errors_1 = require("../errors");
7
+ const plugins_1 = require("../plugins");
8
+ const console_1 = require("../plugins/logging/console");
9
+ const memory_1 = require("../plugins/registry/memory");
10
+ const unirate_1 = require("../plugins/shaping/unirate");
11
+ const warmup_1 = require("../plugins/shaping/warmup");
12
+ const registry_1 = require("../registry");
13
+ const skeleton_1 = require("../skeleton");
14
+ const utils_1 = require("../utils");
15
+ const ratelimit_1 = require("./ratelimit");
16
+ const isRatelimitServicePlugin = ((plugin) => (plugin.type & plugins_1.PluginType.RatelimitService) !== 0);
17
+ const kRatelimit = Symbol("kRatelimit");
18
+ const kRegistry = Symbol("kRegistry");
19
+ const kCurrentInstances = Symbol("kCurrentInstances");
20
+ const KMaxInstances = Symbol("KMaxInstances");
21
+ class Limiter extends skeleton_1.SkeletonClass {
22
+ /**
23
+ * Create Limiter
24
+ * @param plugins 插件
25
+ * @param options 配置参数(可选)
26
+ */
27
+ constructor(plugins, options = {}) {
28
+ Limiter[kCurrentInstances] += 1;
29
+ if (Limiter[kCurrentInstances] >= Limiter[KMaxInstances]) {
30
+ (0, skeleton_1.emitMaxInstancesExceededWarning)("Consumer", Limiter[KMaxInstances]);
31
+ }
32
+ // #region plugins
33
+ const pluginList = {
34
+ [plugins_1.PluginType.RatelimitService]: plugins[plugins_1.PluginType.RatelimitService],
35
+ [plugins_1.PluginType.TrafficShaping]: (plugins[plugins_1.PluginType.TrafficShaping] || []).concat(new unirate_1.UnirateTrafficShaping(), new warmup_1.WarmUpTrafficShaping()),
36
+ [plugins_1.PluginType.NamingService]: plugins[plugins_1.PluginType.NamingService],
37
+ [plugins_1.PluginType.LocalRegistry]: plugins[plugins_1.PluginType.LocalRegistry] || new memory_1.MemoryOnlyRegistry(),
38
+ [plugins_1.PluginType.TraceLogging]: plugins[plugins_1.PluginType.TraceLogging] || [new console_1.ConsoleTraceLogging()],
39
+ [plugins_1.PluginType.StatReporter]: plugins[plugins_1.PluginType.StatReporter] || []
40
+ };
41
+ const naming = pluginList[plugins_1.PluginType.NamingService];
42
+ /**
43
+ * 在某些特殊场景下,为了避免死循环与内存开销,
44
+ * `NamingService` 与 `StatReporter` 插件实现在一个对象内
45
+ */
46
+ if ((0, skeleton_1.isStatReporterPlugin)(naming)) {
47
+ pluginList[plugins_1.PluginType.StatReporter].push(naming);
48
+ }
49
+ /**
50
+ * 在 `RatelimitService`(为空)没有配置情况下,
51
+ * 查找 `NamingService` 插件是否实现此功能
52
+ */
53
+ if (typeof pluginList[plugins_1.PluginType.RatelimitService] === "undefined") {
54
+ if (isRatelimitServicePlugin(naming)) {
55
+ pluginList[plugins_1.PluginType.RatelimitService] = naming;
56
+ }
57
+ else {
58
+ throw new errors_1.ConfigError("RatelimitService plugin not provided");
59
+ }
60
+ }
61
+ super(pluginList, options);
62
+ // #endregion
63
+ this[kRegistry] = new registry_1.LocalRegistry(this[skeleton_1.kLogger], naming, this.plugins[plugins_1.PluginType.LocalRegistry], this.plugins[plugins_1.PluginType.StatReporter], this.plugins[plugins_1.PluginType.RatelimitService], options);
64
+ this[kRatelimit] = new ratelimit_1.Ratelimit(this[skeleton_1.kGlobal], this[skeleton_1.kLogger], this[kRegistry], this.plugins[plugins_1.PluginType.RatelimitService], this.plugins[plugins_1.PluginType.TrafficShaping], options);
65
+ }
66
+ /**
67
+ * 当前可实例化的最大次数
68
+ */
69
+ static get maxInstances() {
70
+ return Limiter[KMaxInstances];
71
+ }
72
+ /**
73
+ * 设置可实例化的最大次数
74
+ * @param n 最大次数
75
+ */
76
+ static setMaxInstances(n) {
77
+ if (typeof n !== "number" || n < 0 || Number.isNaN(n)) {
78
+ throw new errors_1.ArgumentError("|n| must be a non-negative number");
79
+ }
80
+ Limiter[KMaxInstances] = n;
81
+ }
82
+ /**
83
+ * 销毁(释放)所占资源
84
+ *
85
+ * @description
86
+ * dispose order:
87
+ * Ratelimit -> Registry -> [plguins]
88
+ *
89
+ * @param sync 是否同步释放(可选)
90
+ */
91
+ dispose(sync = false) {
92
+ if (this[skeleton_1.kDisposed]) {
93
+ return;
94
+ }
95
+ this[kRatelimit].dispose();
96
+ this[kRegistry].dispose();
97
+ super.dispose(sync);
98
+ Limiter[kCurrentInstances] -= 1;
99
+ if (Limiter[kCurrentInstances] < 0) {
100
+ (0, utils_1.UNREACHABLE)();
101
+ }
102
+ }
103
+ /**
104
+ * 通过条件获取配额分配对象
105
+ * @param namespace 命名空间
106
+ * @param service 服务名
107
+ * @param amount 请求的配额数
108
+ * @param cluster 集群名(可选)
109
+ * @param labels 标签集合(可选)
110
+ * @param id 唯一 ID(可选)
111
+ */
112
+ async acquire(namespace, service, amount, cluster = "", labels = {}, id) {
113
+ const startTime = (0, process_1.uptime)();
114
+ let err;
115
+ try {
116
+ this[skeleton_1.kMaybeAlreadyDisposed]();
117
+ const rule = await this[kRatelimit].query(namespace, service, cluster, labels, id);
118
+ return {
119
+ quotas: this[kRatelimit].acquire(namespace, service, amount, rule),
120
+ id: rule === null || rule === void 0 ? void 0 : rule.id
121
+ };
122
+ }
123
+ catch (e) {
124
+ err = e;
125
+ }
126
+ finally {
127
+ this[skeleton_1.kAPICollector]("Limiter.acquire", ((0, process_1.uptime)() - startTime) * utils_1.kSeconds, err);
128
+ }
129
+ throw err;
130
+ }
131
+ }
132
+ exports.Limiter = Limiter;
133
+ _a = Limiter, _b = kCurrentInstances;
134
+ /**
135
+ * note:
136
+ * 由于类包含专用标识符时,`super` 调用必须是构造函数中的第一个语句。
137
+ * 所以这里采用 `Symbol` 来实现 __私有静态属性__
138
+ */
139
+ Limiter[_b] = 0;
140
+ (() => {
141
+ let maxInstances = 3;
142
+ const { POLARIS_LIMITER_INSTANCE_LIMIT } = process.env;
143
+ if (POLARIS_LIMITER_INSTANCE_LIMIT !== undefined) {
144
+ maxInstances = parseInt(POLARIS_LIMITER_INSTANCE_LIMIT, 10);
145
+ maxInstances = (maxInstances === 0 /** Unlimited */ ? Infinity : maxInstances);
146
+ }
147
+ _a.setMaxInstances(maxInstances);
148
+ })();
149
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/limiter/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import { GlobalOptions } from "../global";
2
+ import { Logger } from "../logging";
3
+ import { Metadata } from "../metadata";
4
+ import { RatelimitServicePlugin, TrafficShapingPlugin } from "../plugins";
5
+ import { LocalRegistry } from "../registry";
6
+ import { RatelimitRule } from "../rules";
7
+ import { GlobalRatelimiterOptions, LocalRatelimiterOptions } from "./ratelimiter";
8
+ declare const kDefaultOptions: LocalRatelimiterOptions | GlobalRatelimiterOptions;
9
+ export declare type RatelimitOptions = typeof kDefaultOptions;
10
+ export declare type Quota = Promise<(() => Promise<void>) | void>;
11
+ export declare class Ratelimit {
12
+ private readonly global;
13
+ private readonly logger;
14
+ private readonly registry;
15
+ private readonly ratelimit;
16
+ private readonly shaping;
17
+ private readonly limiters;
18
+ private readonly options;
19
+ private disposed;
20
+ constructor(global: GlobalOptions, logger: Logger, registry: LocalRegistry, ratelimit: RatelimitServicePlugin, shaping: TrafficShapingPlugin[], options?: Partial<RatelimitOptions>);
21
+ dispose(): void;
22
+ query(namespace: string, service: string, cluster: string | undefined, labels: Metadata, id?: string): Promise<RatelimitRule | undefined>;
23
+ acquire(namespace: string, service: string, amount: number, rule?: RatelimitRule): Quota[];
24
+ private allocation;
25
+ private produce;
26
+ }
27
+ export {};
@@ -0,0 +1,134 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Ratelimit = void 0;
4
+ const errors_1 = require("../errors");
5
+ const metadata_1 = require("../metadata");
6
+ const plugins_1 = require("../plugins");
7
+ const rules_1 = require("../rules");
8
+ const utils_1 = require("../utils");
9
+ const ratelimiter_1 = require("./ratelimiter");
10
+ const kDefaultOptions = {
11
+ outdatedPeriod: 2,
12
+ idlePeriod: 10,
13
+ instanceUpdateTime: 5 * utils_1.kSeconds,
14
+ updatePercent: 0.8
15
+ };
16
+ class Ratelimit {
17
+ constructor(global, logger, registry, ratelimit, shaping, options) {
18
+ this.global = global;
19
+ this.logger = logger;
20
+ this.registry = registry;
21
+ this.ratelimit = ratelimit;
22
+ this.shaping = shaping;
23
+ this.limiters = new WeakMap();
24
+ this.disposed = false;
25
+ this.options = Object.assign(Object.assign({}, kDefaultOptions), options);
26
+ }
27
+ dispose() {
28
+ this.disposed = true;
29
+ }
30
+ async query(namespace, service, cluster = "", labels, id) {
31
+ if (this.disposed) {
32
+ throw new errors_1.StateError("Already disposed");
33
+ }
34
+ const rules = await this.registry.fetch(plugins_1.RegistryCategory.Ratelimit, namespace, service);
35
+ let selectedRule;
36
+ if (typeof id === "string" && id !== "") { /** fast case */
37
+ selectedRule = rules.find(rule => rule.id === id);
38
+ }
39
+ if (typeof selectedRule === "undefined") {
40
+ const { globalVariables } = this.global;
41
+ // eslint-disable-next-line @typescript-eslint/prefer-for-of
42
+ for (let i = 0; i < rules.length; i += 1) { /** slow case */
43
+ const rule = rules[i];
44
+ if (rule.cluster === cluster
45
+ && (0, metadata_1.isMetadataMatch)(labels, rule.labels, globalVariables)
46
+ && (selectedRule === undefined || rule.priority > selectedRule.priority)) {
47
+ selectedRule = rule;
48
+ }
49
+ }
50
+ }
51
+ return selectedRule;
52
+ }
53
+ acquire(namespace, service, amount, rule) {
54
+ const quotas = [];
55
+ if (this.disposed) {
56
+ const err = new errors_1.StateError("Already disposed");
57
+ for (let i = 0; i < amount; i += 1) {
58
+ quotas.push(Promise.reject(err));
59
+ }
60
+ return quotas;
61
+ }
62
+ /**
63
+ * 当规则不存在时,默认放通所有配额
64
+ */
65
+ if (typeof rule === "undefined") {
66
+ for (let i = 0; i < amount; i += 1) {
67
+ quotas.push(Promise.resolve());
68
+ }
69
+ return quotas;
70
+ }
71
+ let limiter;
72
+ if (!this.limiters.has(rule)) {
73
+ switch (rule.type) {
74
+ case rules_1.LimitType.Local: {
75
+ limiter = new ratelimiter_1.LocalRatelimiter(rule, this.options);
76
+ break;
77
+ }
78
+ case rules_1.LimitType.Global: {
79
+ limiter = new ratelimiter_1.GlobalRatelimiter(namespace, service, rule, this.logger, this.registry, this.ratelimit, this.options);
80
+ break;
81
+ }
82
+ default: {
83
+ (0, utils_1.UNREACHABLE)();
84
+ }
85
+ }
86
+ this.limiters.set(rule, limiter);
87
+ }
88
+ let shaping;
89
+ if (rule.action !== "") {
90
+ shaping = this.shaping.find(plugin => plugin.name === rule.action);
91
+ if (typeof shaping === "undefined") {
92
+ throw new errors_1.PluginError(`action(${rule.action}) implement not found`);
93
+ }
94
+ }
95
+ for (let i = 0; i < amount; i += 1) {
96
+ let quota = Promise.resolve();
97
+ if (rule.enable) {
98
+ if (typeof shaping !== "undefined") {
99
+ quota = quota
100
+ .then(() => limiter.getPartition())
101
+ .then(partition => shaping.inFlow(rule, partition));
102
+ }
103
+ quota = quota
104
+ .then(() => this.allocation(rule))
105
+ .then(result => this.produce(rule, result));
106
+ }
107
+ quotas.push(quota);
108
+ }
109
+ return quotas;
110
+ }
111
+ allocation(rule) {
112
+ const limiter = this.limiters.get(rule);
113
+ if (typeof limiter === "undefined") {
114
+ throw new errors_1.StateError("current rate limit rule has been changed, all allocations are rejected");
115
+ }
116
+ return limiter.consume();
117
+ }
118
+ produce(rule, result) {
119
+ if (!result) {
120
+ throw new errors_1.StateError("no available quota");
121
+ }
122
+ if (rule.resource === rules_1.LimitResource.Concurrency) {
123
+ return () => {
124
+ const limiter = this.limiters.get(rule);
125
+ if (typeof limiter === "undefined") {
126
+ throw new errors_1.StateError("current rate limit rule has been changed, all releases are rejected");
127
+ }
128
+ return limiter.return();
129
+ };
130
+ }
131
+ }
132
+ }
133
+ exports.Ratelimit = Ratelimit;
134
+ //# sourceMappingURL=ratelimit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ratelimit.js","sourceRoot":"","sources":["../../src/limiter/ratelimit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { BasicBucket } from "../bucket";
2
+ export declare const deduction: <T extends BasicBucket>(buckets: T[], tokens: number, preroll: boolean) => boolean;
3
+ export interface Ratelimiter {
4
+ /**
5
+ * 消费令牌
6
+ * @param preroll 是否实际扣减
7
+ */
8
+ consume(preroll?: boolean): Promise<boolean>;
9
+ /**
10
+ * 放回令牌
11
+ */
12
+ return(): Promise<void>;
13
+ /**
14
+ * 获得当前分区数
15
+ */
16
+ getPartition(): Promise<number>;
17
+ }
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.deduction = void 0;
4
+ const deduction = (buckets, tokens, preroll) => {
5
+ const isEnough = tokens > 0 ? buckets.every(bucket => bucket.consume(tokens, true)) : true;
6
+ if (!isEnough || preroll) {
7
+ return isEnough;
8
+ }
9
+ buckets.forEach((bucket) => {
10
+ bucket.consume(tokens, false);
11
+ });
12
+ return true;
13
+ };
14
+ exports.deduction = deduction;
15
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/limiter/ratelimiter/base.ts"],"names":[],"mappings":";;;AAEO,MAAM,SAAS,GAAG,CAAwB,OAAY,EAAE,MAAc,EAAE,OAAgB,EAAE,EAAE;IACjG,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3F,IAAI,CAAC,QAAQ,IAAI,OAAO,EAAE;QACxB,OAAO,QAAQ,CAAC;KACjB;IAED,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;QACzB,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAXW,QAAA,SAAS,aAWpB"}
@@ -0,0 +1,59 @@
1
+ import { Logger } from "../../logging";
2
+ import { RatelimitServicePlugin } from "../../plugins";
3
+ import { LocalRegistry } from "../../registry";
4
+ import { RatelimitRule } from "../../rules";
5
+ import { Ratelimiter } from "./base";
6
+ export interface GlobalRatelimiterOptions {
7
+ /**
8
+ * 远端令牌桶,过期判定周期数
9
+ */
10
+ outdatedPeriod: number;
11
+ /**
12
+ * 令牌桶空闲回收,判定周期数
13
+ */
14
+ idlePeriod: number;
15
+ /**
16
+ * 实例数更新时间 (ms)
17
+ */
18
+ instanceUpdateTime: number;
19
+ /**
20
+ * 使用了百分之多少配额后,启动一次实时上报
21
+ * 范围 (0,1]
22
+ */
23
+ updatePercent: number;
24
+ }
25
+ /**
26
+ * 全局令牌桶
27
+ * 对应 `LimitType.Global` 全局限流
28
+ */
29
+ export declare class GlobalRatelimiter implements Ratelimiter {
30
+ private readonly namespace;
31
+ private readonly service;
32
+ private readonly rule;
33
+ private readonly logger;
34
+ private readonly registry;
35
+ private readonly backend;
36
+ private readonly options;
37
+ private readonly buckets;
38
+ private readonly taskInfo;
39
+ private indexes?;
40
+ private wakePromise;
41
+ private partition;
42
+ private idlePeriods;
43
+ private isAccessed;
44
+ private maxDuration;
45
+ private status;
46
+ private readonly updateConfig;
47
+ constructor(namespace: string, service: string, rule: RatelimitRule, logger: Logger, registry: LocalRegistry, backend: RatelimitServicePlugin, options: GlobalRatelimiterOptions);
48
+ consume(preroll?: boolean): Promise<boolean>;
49
+ return(): Promise<void>;
50
+ getPartition(): Promise<number>;
51
+ private dispose;
52
+ private wake;
53
+ private sleep;
54
+ private scheduleTask;
55
+ private updatePartition;
56
+ private syncQuota;
57
+ private checkOutdated;
58
+ private shouldSleep;
59
+ }