pi-cursor-sdk 0.1.49 → 0.1.51

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 (278) hide show
  1. package/CHANGELOG.md +36 -1
  2. package/README.md +2 -2
  3. package/docs/cursor-live-smoke-checklist.md +4 -4
  4. package/docs/cursor-model-ux-spec.md +5 -5
  5. package/docs/cursor-native-tool-replay.md +2 -2
  6. package/docs/cursor-native-tool-visual-audit.md +1 -1
  7. package/docs/cursor-testing-lessons.md +1 -1
  8. package/package.json +6 -15
  9. package/src/cursor-fallback-models.generated.ts +536 -302
  10. package/src/cursor-provider-errors.ts +29 -0
  11. package/src/cursor-provider-overflow.ts +96 -0
  12. package/src/cursor-tool-manifest.ts +1 -1
  13. package/src/index.ts +4 -1
  14. package/node_modules/@connectrpc/connect-node/README.md +0 -141
  15. package/node_modules/@connectrpc/connect-node/dist/cjs/compression.d.ts +0 -15
  16. package/node_modules/@connectrpc/connect-node/dist/cjs/compression.js +0 -89
  17. package/node_modules/@connectrpc/connect-node/dist/cjs/connect-node-adapter.d.ts +0 -42
  18. package/node_modules/@connectrpc/connect-node/dist/cjs/connect-node-adapter.js +0 -61
  19. package/node_modules/@connectrpc/connect-node/dist/cjs/connect-transport.d.ts +0 -100
  20. package/node_modules/@connectrpc/connect-node/dist/cjs/connect-transport.js +0 -25
  21. package/node_modules/@connectrpc/connect-node/dist/cjs/grpc-transport.d.ts +0 -96
  22. package/node_modules/@connectrpc/connect-node/dist/cjs/grpc-transport.js +0 -25
  23. package/node_modules/@connectrpc/connect-node/dist/cjs/grpc-web-transport.d.ts +0 -96
  24. package/node_modules/@connectrpc/connect-node/dist/cjs/grpc-web-transport.js +0 -25
  25. package/node_modules/@connectrpc/connect-node/dist/cjs/http2-session-manager.d.ts +0 -146
  26. package/node_modules/@connectrpc/connect-node/dist/cjs/http2-session-manager.js +0 -536
  27. package/node_modules/@connectrpc/connect-node/dist/cjs/index.d.ts +0 -15
  28. package/node_modules/@connectrpc/connect-node/dist/cjs/index.js +0 -36
  29. package/node_modules/@connectrpc/connect-node/dist/cjs/node-error.d.ts +0 -45
  30. package/node_modules/@connectrpc/connect-node/dist/cjs/node-error.js +0 -154
  31. package/node_modules/@connectrpc/connect-node/dist/cjs/node-headers-polyfill.d.ts +0 -1
  32. package/node_modules/@connectrpc/connect-node/dist/cjs/node-headers-polyfill.js +0 -29
  33. package/node_modules/@connectrpc/connect-node/dist/cjs/node-transport-options.d.ts +0 -89
  34. package/node_modules/@connectrpc/connect-node/dist/cjs/node-transport-options.js +0 -58
  35. package/node_modules/@connectrpc/connect-node/dist/cjs/node-universal-client.d.ts +0 -54
  36. package/node_modules/@connectrpc/connect-node/dist/cjs/node-universal-client.js +0 -326
  37. package/node_modules/@connectrpc/connect-node/dist/cjs/node-universal-handler.d.ts +0 -41
  38. package/node_modules/@connectrpc/connect-node/dist/cjs/node-universal-handler.js +0 -234
  39. package/node_modules/@connectrpc/connect-node/dist/cjs/node-universal-header.d.ts +0 -19
  40. package/node_modules/@connectrpc/connect-node/dist/cjs/node-universal-header.js +0 -97
  41. package/node_modules/@connectrpc/connect-node/dist/cjs/package.json +0 -1
  42. package/node_modules/@connectrpc/connect-node/dist/esm/compression.d.ts +0 -15
  43. package/node_modules/@connectrpc/connect-node/dist/esm/compression.js +0 -86
  44. package/node_modules/@connectrpc/connect-node/dist/esm/connect-node-adapter.d.ts +0 -42
  45. package/node_modules/@connectrpc/connect-node/dist/esm/connect-node-adapter.js +0 -58
  46. package/node_modules/@connectrpc/connect-node/dist/esm/connect-transport.d.ts +0 -100
  47. package/node_modules/@connectrpc/connect-node/dist/esm/connect-transport.js +0 -22
  48. package/node_modules/@connectrpc/connect-node/dist/esm/grpc-transport.d.ts +0 -96
  49. package/node_modules/@connectrpc/connect-node/dist/esm/grpc-transport.js +0 -22
  50. package/node_modules/@connectrpc/connect-node/dist/esm/grpc-web-transport.d.ts +0 -96
  51. package/node_modules/@connectrpc/connect-node/dist/esm/grpc-web-transport.js +0 -22
  52. package/node_modules/@connectrpc/connect-node/dist/esm/http2-session-manager.d.ts +0 -146
  53. package/node_modules/@connectrpc/connect-node/dist/esm/http2-session-manager.js +0 -532
  54. package/node_modules/@connectrpc/connect-node/dist/esm/index.d.ts +0 -15
  55. package/node_modules/@connectrpc/connect-node/dist/esm/index.js +0 -23
  56. package/node_modules/@connectrpc/connect-node/dist/esm/node-error.d.ts +0 -45
  57. package/node_modules/@connectrpc/connect-node/dist/esm/node-error.js +0 -147
  58. package/node_modules/@connectrpc/connect-node/dist/esm/node-headers-polyfill.d.ts +0 -1
  59. package/node_modules/@connectrpc/connect-node/dist/esm/node-headers-polyfill.js +0 -27
  60. package/node_modules/@connectrpc/connect-node/dist/esm/node-transport-options.d.ts +0 -89
  61. package/node_modules/@connectrpc/connect-node/dist/esm/node-transport-options.js +0 -58
  62. package/node_modules/@connectrpc/connect-node/dist/esm/node-universal-client.d.ts +0 -54
  63. package/node_modules/@connectrpc/connect-node/dist/esm/node-universal-client.js +0 -324
  64. package/node_modules/@connectrpc/connect-node/dist/esm/node-universal-handler.d.ts +0 -41
  65. package/node_modules/@connectrpc/connect-node/dist/esm/node-universal-handler.js +0 -230
  66. package/node_modules/@connectrpc/connect-node/dist/esm/node-universal-header.d.ts +0 -19
  67. package/node_modules/@connectrpc/connect-node/dist/esm/node-universal-header.js +0 -93
  68. package/node_modules/@connectrpc/connect-node/package.json +0 -46
  69. package/node_modules/undici/LICENSE +0 -21
  70. package/node_modules/undici/README.md +0 -741
  71. package/node_modules/undici/docs/docs/api/Agent.md +0 -84
  72. package/node_modules/undici/docs/docs/api/BalancedPool.md +0 -99
  73. package/node_modules/undici/docs/docs/api/CacheStorage.md +0 -30
  74. package/node_modules/undici/docs/docs/api/CacheStore.md +0 -164
  75. package/node_modules/undici/docs/docs/api/Client.md +0 -288
  76. package/node_modules/undici/docs/docs/api/ClientStats.md +0 -27
  77. package/node_modules/undici/docs/docs/api/Connector.md +0 -115
  78. package/node_modules/undici/docs/docs/api/ContentType.md +0 -57
  79. package/node_modules/undici/docs/docs/api/Cookies.md +0 -128
  80. package/node_modules/undici/docs/docs/api/Debug.md +0 -62
  81. package/node_modules/undici/docs/docs/api/DiagnosticsChannel.md +0 -315
  82. package/node_modules/undici/docs/docs/api/Dispatcher.md +0 -1392
  83. package/node_modules/undici/docs/docs/api/EnvHttpProxyAgent.md +0 -159
  84. package/node_modules/undici/docs/docs/api/Errors.md +0 -49
  85. package/node_modules/undici/docs/docs/api/EventSource.md +0 -45
  86. package/node_modules/undici/docs/docs/api/Fetch.md +0 -60
  87. package/node_modules/undici/docs/docs/api/GlobalInstallation.md +0 -139
  88. package/node_modules/undici/docs/docs/api/H2CClient.md +0 -263
  89. package/node_modules/undici/docs/docs/api/MockAgent.md +0 -603
  90. package/node_modules/undici/docs/docs/api/MockCallHistory.md +0 -197
  91. package/node_modules/undici/docs/docs/api/MockCallHistoryLog.md +0 -43
  92. package/node_modules/undici/docs/docs/api/MockClient.md +0 -81
  93. package/node_modules/undici/docs/docs/api/MockErrors.md +0 -12
  94. package/node_modules/undici/docs/docs/api/MockPool.md +0 -555
  95. package/node_modules/undici/docs/docs/api/Pool.md +0 -84
  96. package/node_modules/undici/docs/docs/api/PoolStats.md +0 -35
  97. package/node_modules/undici/docs/docs/api/ProxyAgent.md +0 -229
  98. package/node_modules/undici/docs/docs/api/RedirectHandler.md +0 -93
  99. package/node_modules/undici/docs/docs/api/RetryAgent.md +0 -50
  100. package/node_modules/undici/docs/docs/api/RetryHandler.md +0 -118
  101. package/node_modules/undici/docs/docs/api/RoundRobinPool.md +0 -145
  102. package/node_modules/undici/docs/docs/api/SnapshotAgent.md +0 -616
  103. package/node_modules/undici/docs/docs/api/Socks5ProxyAgent.md +0 -275
  104. package/node_modules/undici/docs/docs/api/Util.md +0 -25
  105. package/node_modules/undici/docs/docs/api/WebSocket.md +0 -141
  106. package/node_modules/undici/docs/docs/api/api-lifecycle.md +0 -91
  107. package/node_modules/undici/docs/docs/best-practices/client-certificate.md +0 -64
  108. package/node_modules/undici/docs/docs/best-practices/crawling.md +0 -58
  109. package/node_modules/undici/docs/docs/best-practices/mocking-request.md +0 -190
  110. package/node_modules/undici/docs/docs/best-practices/proxy.md +0 -127
  111. package/node_modules/undici/docs/docs/best-practices/undici-vs-builtin-fetch.md +0 -224
  112. package/node_modules/undici/docs/docs/best-practices/writing-tests.md +0 -63
  113. package/node_modules/undici/index-fetch.js +0 -65
  114. package/node_modules/undici/index.d.ts +0 -3
  115. package/node_modules/undici/index.js +0 -234
  116. package/node_modules/undici/lib/api/abort-signal.js +0 -59
  117. package/node_modules/undici/lib/api/api-connect.js +0 -110
  118. package/node_modules/undici/lib/api/api-pipeline.js +0 -252
  119. package/node_modules/undici/lib/api/api-request.js +0 -214
  120. package/node_modules/undici/lib/api/api-stream.js +0 -209
  121. package/node_modules/undici/lib/api/api-upgrade.js +0 -111
  122. package/node_modules/undici/lib/api/index.js +0 -7
  123. package/node_modules/undici/lib/api/readable.js +0 -580
  124. package/node_modules/undici/lib/cache/memory-cache-store.js +0 -234
  125. package/node_modules/undici/lib/cache/sqlite-cache-store.js +0 -461
  126. package/node_modules/undici/lib/core/connect.js +0 -153
  127. package/node_modules/undici/lib/core/constants.js +0 -143
  128. package/node_modules/undici/lib/core/diagnostics.js +0 -227
  129. package/node_modules/undici/lib/core/errors.js +0 -477
  130. package/node_modules/undici/lib/core/request.js +0 -453
  131. package/node_modules/undici/lib/core/socks5-client.js +0 -422
  132. package/node_modules/undici/lib/core/socks5-utils.js +0 -212
  133. package/node_modules/undici/lib/core/symbols.js +0 -75
  134. package/node_modules/undici/lib/core/tree.js +0 -160
  135. package/node_modules/undici/lib/core/util.js +0 -992
  136. package/node_modules/undici/lib/dispatcher/agent.js +0 -158
  137. package/node_modules/undici/lib/dispatcher/balanced-pool.js +0 -219
  138. package/node_modules/undici/lib/dispatcher/client-h1.js +0 -1722
  139. package/node_modules/undici/lib/dispatcher/client-h2.js +0 -995
  140. package/node_modules/undici/lib/dispatcher/client.js +0 -664
  141. package/node_modules/undici/lib/dispatcher/dispatcher-base.js +0 -184
  142. package/node_modules/undici/lib/dispatcher/dispatcher.js +0 -48
  143. package/node_modules/undici/lib/dispatcher/env-http-proxy-agent.js +0 -146
  144. package/node_modules/undici/lib/dispatcher/fixed-queue.js +0 -135
  145. package/node_modules/undici/lib/dispatcher/h2c-client.js +0 -51
  146. package/node_modules/undici/lib/dispatcher/pool-base.js +0 -214
  147. package/node_modules/undici/lib/dispatcher/pool.js +0 -118
  148. package/node_modules/undici/lib/dispatcher/proxy-agent.js +0 -319
  149. package/node_modules/undici/lib/dispatcher/retry-agent.js +0 -35
  150. package/node_modules/undici/lib/dispatcher/round-robin-pool.js +0 -137
  151. package/node_modules/undici/lib/dispatcher/socks5-proxy-agent.js +0 -260
  152. package/node_modules/undici/lib/encoding/index.js +0 -33
  153. package/node_modules/undici/lib/global.js +0 -59
  154. package/node_modules/undici/lib/handler/cache-handler.js +0 -578
  155. package/node_modules/undici/lib/handler/cache-revalidation-handler.js +0 -124
  156. package/node_modules/undici/lib/handler/decorator-handler.js +0 -67
  157. package/node_modules/undici/lib/handler/deduplication-handler.js +0 -460
  158. package/node_modules/undici/lib/handler/redirect-handler.js +0 -238
  159. package/node_modules/undici/lib/handler/retry-handler.js +0 -394
  160. package/node_modules/undici/lib/handler/unwrap-handler.js +0 -106
  161. package/node_modules/undici/lib/handler/wrap-handler.js +0 -105
  162. package/node_modules/undici/lib/interceptor/cache.js +0 -495
  163. package/node_modules/undici/lib/interceptor/decompress.js +0 -259
  164. package/node_modules/undici/lib/interceptor/deduplicate.js +0 -117
  165. package/node_modules/undici/lib/interceptor/dns.js +0 -571
  166. package/node_modules/undici/lib/interceptor/dump.js +0 -112
  167. package/node_modules/undici/lib/interceptor/redirect.js +0 -21
  168. package/node_modules/undici/lib/interceptor/response-error.js +0 -95
  169. package/node_modules/undici/lib/interceptor/retry.js +0 -19
  170. package/node_modules/undici/lib/llhttp/.gitkeep +0 -0
  171. package/node_modules/undici/lib/llhttp/constants.d.ts +0 -195
  172. package/node_modules/undici/lib/llhttp/constants.js +0 -531
  173. package/node_modules/undici/lib/llhttp/llhttp-wasm.js +0 -15
  174. package/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js +0 -15
  175. package/node_modules/undici/lib/llhttp/utils.d.ts +0 -2
  176. package/node_modules/undici/lib/llhttp/utils.js +0 -12
  177. package/node_modules/undici/lib/mock/mock-agent.js +0 -232
  178. package/node_modules/undici/lib/mock/mock-call-history.js +0 -248
  179. package/node_modules/undici/lib/mock/mock-client.js +0 -68
  180. package/node_modules/undici/lib/mock/mock-errors.js +0 -29
  181. package/node_modules/undici/lib/mock/mock-interceptor.js +0 -209
  182. package/node_modules/undici/lib/mock/mock-pool.js +0 -68
  183. package/node_modules/undici/lib/mock/mock-symbols.js +0 -32
  184. package/node_modules/undici/lib/mock/mock-utils.js +0 -486
  185. package/node_modules/undici/lib/mock/pending-interceptors-formatter.js +0 -43
  186. package/node_modules/undici/lib/mock/snapshot-agent.js +0 -353
  187. package/node_modules/undici/lib/mock/snapshot-recorder.js +0 -588
  188. package/node_modules/undici/lib/mock/snapshot-utils.js +0 -158
  189. package/node_modules/undici/lib/util/cache.js +0 -414
  190. package/node_modules/undici/lib/util/date.js +0 -653
  191. package/node_modules/undici/lib/util/promise.js +0 -28
  192. package/node_modules/undici/lib/util/runtime-features.js +0 -124
  193. package/node_modules/undici/lib/util/stats.js +0 -32
  194. package/node_modules/undici/lib/util/timers.js +0 -425
  195. package/node_modules/undici/lib/web/cache/cache.js +0 -864
  196. package/node_modules/undici/lib/web/cache/cachestorage.js +0 -152
  197. package/node_modules/undici/lib/web/cache/util.js +0 -45
  198. package/node_modules/undici/lib/web/cookies/constants.js +0 -12
  199. package/node_modules/undici/lib/web/cookies/index.js +0 -199
  200. package/node_modules/undici/lib/web/cookies/parse.js +0 -314
  201. package/node_modules/undici/lib/web/cookies/util.js +0 -282
  202. package/node_modules/undici/lib/web/eventsource/eventsource-stream.js +0 -399
  203. package/node_modules/undici/lib/web/eventsource/eventsource.js +0 -501
  204. package/node_modules/undici/lib/web/eventsource/util.js +0 -29
  205. package/node_modules/undici/lib/web/fetch/LICENSE +0 -21
  206. package/node_modules/undici/lib/web/fetch/body.js +0 -509
  207. package/node_modules/undici/lib/web/fetch/constants.js +0 -131
  208. package/node_modules/undici/lib/web/fetch/data-url.js +0 -596
  209. package/node_modules/undici/lib/web/fetch/formdata-parser.js +0 -586
  210. package/node_modules/undici/lib/web/fetch/formdata.js +0 -259
  211. package/node_modules/undici/lib/web/fetch/global.js +0 -40
  212. package/node_modules/undici/lib/web/fetch/headers.js +0 -719
  213. package/node_modules/undici/lib/web/fetch/index.js +0 -2413
  214. package/node_modules/undici/lib/web/fetch/request.js +0 -1115
  215. package/node_modules/undici/lib/web/fetch/response.js +0 -641
  216. package/node_modules/undici/lib/web/fetch/util.js +0 -1522
  217. package/node_modules/undici/lib/web/infra/index.js +0 -229
  218. package/node_modules/undici/lib/web/subresource-integrity/Readme.md +0 -9
  219. package/node_modules/undici/lib/web/subresource-integrity/subresource-integrity.js +0 -307
  220. package/node_modules/undici/lib/web/webidl/index.js +0 -1006
  221. package/node_modules/undici/lib/web/websocket/connection.js +0 -329
  222. package/node_modules/undici/lib/web/websocket/constants.js +0 -126
  223. package/node_modules/undici/lib/web/websocket/events.js +0 -331
  224. package/node_modules/undici/lib/web/websocket/frame.js +0 -133
  225. package/node_modules/undici/lib/web/websocket/permessage-deflate.js +0 -100
  226. package/node_modules/undici/lib/web/websocket/receiver.js +0 -507
  227. package/node_modules/undici/lib/web/websocket/sender.js +0 -109
  228. package/node_modules/undici/lib/web/websocket/stream/websocketerror.js +0 -104
  229. package/node_modules/undici/lib/web/websocket/stream/websocketstream.js +0 -498
  230. package/node_modules/undici/lib/web/websocket/util.js +0 -347
  231. package/node_modules/undici/lib/web/websocket/websocket.js +0 -758
  232. package/node_modules/undici/package.json +0 -152
  233. package/node_modules/undici/scripts/strip-comments.js +0 -10
  234. package/node_modules/undici/types/README.md +0 -6
  235. package/node_modules/undici/types/agent.d.ts +0 -32
  236. package/node_modules/undici/types/api.d.ts +0 -43
  237. package/node_modules/undici/types/balanced-pool.d.ts +0 -30
  238. package/node_modules/undici/types/cache-interceptor.d.ts +0 -179
  239. package/node_modules/undici/types/cache.d.ts +0 -36
  240. package/node_modules/undici/types/client-stats.d.ts +0 -15
  241. package/node_modules/undici/types/client.d.ts +0 -139
  242. package/node_modules/undici/types/connector.d.ts +0 -36
  243. package/node_modules/undici/types/content-type.d.ts +0 -21
  244. package/node_modules/undici/types/cookies.d.ts +0 -30
  245. package/node_modules/undici/types/diagnostics-channel.d.ts +0 -74
  246. package/node_modules/undici/types/dispatcher.d.ts +0 -275
  247. package/node_modules/undici/types/env-http-proxy-agent.d.ts +0 -22
  248. package/node_modules/undici/types/errors.d.ts +0 -177
  249. package/node_modules/undici/types/eventsource.d.ts +0 -66
  250. package/node_modules/undici/types/fetch.d.ts +0 -231
  251. package/node_modules/undici/types/formdata.d.ts +0 -114
  252. package/node_modules/undici/types/global-dispatcher.d.ts +0 -9
  253. package/node_modules/undici/types/global-origin.d.ts +0 -7
  254. package/node_modules/undici/types/h2c-client.d.ts +0 -73
  255. package/node_modules/undici/types/handlers.d.ts +0 -14
  256. package/node_modules/undici/types/header.d.ts +0 -160
  257. package/node_modules/undici/types/index.d.ts +0 -91
  258. package/node_modules/undici/types/interceptors.d.ts +0 -80
  259. package/node_modules/undici/types/mock-agent.d.ts +0 -68
  260. package/node_modules/undici/types/mock-call-history.d.ts +0 -111
  261. package/node_modules/undici/types/mock-client.d.ts +0 -27
  262. package/node_modules/undici/types/mock-errors.d.ts +0 -12
  263. package/node_modules/undici/types/mock-interceptor.d.ts +0 -94
  264. package/node_modules/undici/types/mock-pool.d.ts +0 -27
  265. package/node_modules/undici/types/patch.d.ts +0 -29
  266. package/node_modules/undici/types/pool-stats.d.ts +0 -19
  267. package/node_modules/undici/types/pool.d.ts +0 -41
  268. package/node_modules/undici/types/proxy-agent.d.ts +0 -29
  269. package/node_modules/undici/types/readable.d.ts +0 -68
  270. package/node_modules/undici/types/retry-agent.d.ts +0 -8
  271. package/node_modules/undici/types/retry-handler.d.ts +0 -125
  272. package/node_modules/undici/types/round-robin-pool.d.ts +0 -41
  273. package/node_modules/undici/types/snapshot-agent.d.ts +0 -109
  274. package/node_modules/undici/types/socks5-proxy-agent.d.ts +0 -25
  275. package/node_modules/undici/types/util.d.ts +0 -18
  276. package/node_modules/undici/types/utility.d.ts +0 -7
  277. package/node_modules/undici/types/webidl.d.ts +0 -347
  278. package/node_modules/undici/types/websocket.d.ts +0 -188
@@ -1,124 +0,0 @@
1
- 'use strict'
2
-
3
- /** @typedef {`node:${string}`} NodeModuleName */
4
-
5
- /** @type {Record<NodeModuleName, () => any>} */
6
- const lazyLoaders = {
7
- __proto__: null,
8
- 'node:crypto': () => require('node:crypto'),
9
- 'node:sqlite': () => require('node:sqlite'),
10
- 'node:worker_threads': () => require('node:worker_threads'),
11
- 'node:zlib': () => require('node:zlib')
12
- }
13
-
14
- /**
15
- * @param {NodeModuleName} moduleName
16
- * @returns {boolean}
17
- */
18
- function detectRuntimeFeatureByNodeModule (moduleName) {
19
- try {
20
- lazyLoaders[moduleName]()
21
- return true
22
- } catch (err) {
23
- if (err.code !== 'ERR_UNKNOWN_BUILTIN_MODULE' && err.code !== 'ERR_NO_CRYPTO') {
24
- throw err
25
- }
26
- return false
27
- }
28
- }
29
-
30
- /**
31
- * @param {NodeModuleName} moduleName
32
- * @param {string} property
33
- * @returns {boolean}
34
- */
35
- function detectRuntimeFeatureByExportedProperty (moduleName, property) {
36
- const module = lazyLoaders[moduleName]()
37
- return typeof module[property] !== 'undefined'
38
- }
39
-
40
- const runtimeFeaturesByExportedProperty = /** @type {const} */ (['markAsUncloneable', 'zstd'])
41
-
42
- /** @type {Record<RuntimeFeatureByExportedProperty, [NodeModuleName, string]>} */
43
- const exportedPropertyLookup = {
44
- markAsUncloneable: ['node:worker_threads', 'markAsUncloneable'],
45
- zstd: ['node:zlib', 'createZstdDecompress']
46
- }
47
-
48
- /** @typedef {typeof runtimeFeaturesByExportedProperty[number]} RuntimeFeatureByExportedProperty */
49
-
50
- const runtimeFeaturesAsNodeModule = /** @type {const} */ (['crypto', 'sqlite'])
51
- /** @typedef {typeof runtimeFeaturesAsNodeModule[number]} RuntimeFeatureByNodeModule */
52
-
53
- const features = /** @type {const} */ ([
54
- ...runtimeFeaturesAsNodeModule,
55
- ...runtimeFeaturesByExportedProperty
56
- ])
57
-
58
- /** @typedef {typeof features[number]} Feature */
59
-
60
- /**
61
- * @param {Feature} feature
62
- * @returns {boolean}
63
- */
64
- function detectRuntimeFeature (feature) {
65
- if (runtimeFeaturesAsNodeModule.includes(/** @type {RuntimeFeatureByNodeModule} */ (feature))) {
66
- return detectRuntimeFeatureByNodeModule(`node:${feature}`)
67
- } else if (runtimeFeaturesByExportedProperty.includes(/** @type {RuntimeFeatureByExportedProperty} */ (feature))) {
68
- const [moduleName, property] = exportedPropertyLookup[feature]
69
- return detectRuntimeFeatureByExportedProperty(moduleName, property)
70
- }
71
- throw new TypeError(`unknown feature: ${feature}`)
72
- }
73
-
74
- /**
75
- * @class
76
- * @name RuntimeFeatures
77
- */
78
- class RuntimeFeatures {
79
- /** @type {Map<Feature, boolean>} */
80
- #map = new Map()
81
-
82
- /**
83
- * Clears all cached feature detections.
84
- */
85
- clear () {
86
- this.#map.clear()
87
- }
88
-
89
- /**
90
- * @param {Feature} feature
91
- * @returns {boolean}
92
- */
93
- has (feature) {
94
- return (
95
- this.#map.get(feature) ?? this.#detectRuntimeFeature(feature)
96
- )
97
- }
98
-
99
- /**
100
- * @param {Feature} feature
101
- * @param {boolean} value
102
- */
103
- set (feature, value) {
104
- if (features.includes(feature) === false) {
105
- throw new TypeError(`unknown feature: ${feature}`)
106
- }
107
- this.#map.set(feature, value)
108
- }
109
-
110
- /**
111
- * @param {Feature} feature
112
- * @returns {boolean}
113
- */
114
- #detectRuntimeFeature (feature) {
115
- const result = detectRuntimeFeature(feature)
116
- this.#map.set(feature, result)
117
- return result
118
- }
119
- }
120
-
121
- const instance = new RuntimeFeatures()
122
-
123
- module.exports.runtimeFeatures = instance
124
- module.exports.default = instance
@@ -1,32 +0,0 @@
1
- 'use strict'
2
-
3
- const {
4
- kConnected,
5
- kPending,
6
- kRunning,
7
- kSize,
8
- kFree,
9
- kQueued
10
- } = require('../core/symbols')
11
-
12
- class ClientStats {
13
- constructor (client) {
14
- this.connected = client[kConnected]
15
- this.pending = client[kPending]
16
- this.running = client[kRunning]
17
- this.size = client[kSize]
18
- }
19
- }
20
-
21
- class PoolStats {
22
- constructor (pool) {
23
- this.connected = pool[kConnected]
24
- this.free = pool[kFree]
25
- this.pending = pool[kPending]
26
- this.queued = pool[kQueued]
27
- this.running = pool[kRunning]
28
- this.size = pool[kSize]
29
- }
30
- }
31
-
32
- module.exports = { ClientStats, PoolStats }
@@ -1,425 +0,0 @@
1
- 'use strict'
2
-
3
- /**
4
- * This module offers an optimized timer implementation designed for scenarios
5
- * where high precision is not critical.
6
- *
7
- * The timer achieves faster performance by using a low-resolution approach,
8
- * with an accuracy target of within 500ms. This makes it particularly useful
9
- * for timers with delays of 1 second or more, where exact timing is less
10
- * crucial.
11
- *
12
- * It's important to note that Node.js timers are inherently imprecise, as
13
- * delays can occur due to the event loop being blocked by other operations.
14
- * Consequently, timers may trigger later than their scheduled time.
15
- */
16
-
17
- /**
18
- * The fastNow variable contains the internal fast timer clock value.
19
- *
20
- * @type {number}
21
- */
22
- let fastNow = 0
23
-
24
- /**
25
- * RESOLUTION_MS represents the target resolution time in milliseconds.
26
- *
27
- * @type {number}
28
- * @default 1000
29
- */
30
- const RESOLUTION_MS = 1e3
31
-
32
- /**
33
- * TICK_MS defines the desired interval in milliseconds between each tick.
34
- * The target value is set to half the resolution time, minus 1 ms, to account
35
- * for potential event loop overhead.
36
- *
37
- * @type {number}
38
- * @default 499
39
- */
40
- const TICK_MS = (RESOLUTION_MS >> 1) - 1
41
-
42
- /**
43
- * fastNowTimeout is a Node.js timer used to manage and process
44
- * the FastTimers stored in the `fastTimers` array.
45
- *
46
- * @type {NodeJS.Timeout}
47
- */
48
- let fastNowTimeout
49
-
50
- /**
51
- * The kFastTimer symbol is used to identify FastTimer instances.
52
- *
53
- * @type {Symbol}
54
- */
55
- const kFastTimer = Symbol('kFastTimer')
56
-
57
- /**
58
- * The fastTimers array contains all active FastTimers.
59
- *
60
- * @type {FastTimer[]}
61
- */
62
- const fastTimers = []
63
-
64
- /**
65
- * These constants represent the various states of a FastTimer.
66
- */
67
-
68
- /**
69
- * The `NOT_IN_LIST` constant indicates that the FastTimer is not included
70
- * in the `fastTimers` array. Timers with this status will not be processed
71
- * during the next tick by the `onTick` function.
72
- *
73
- * A FastTimer can be re-added to the `fastTimers` array by invoking the
74
- * `refresh` method on the FastTimer instance.
75
- *
76
- * @type {-2}
77
- */
78
- const NOT_IN_LIST = -2
79
-
80
- /**
81
- * The `TO_BE_CLEARED` constant indicates that the FastTimer is scheduled
82
- * for removal from the `fastTimers` array. A FastTimer in this state will
83
- * be removed in the next tick by the `onTick` function and will no longer
84
- * be processed.
85
- *
86
- * This status is also set when the `clear` method is called on the FastTimer instance.
87
- *
88
- * @type {-1}
89
- */
90
- const TO_BE_CLEARED = -1
91
-
92
- /**
93
- * The `PENDING` constant signifies that the FastTimer is awaiting processing
94
- * in the next tick by the `onTick` function. Timers with this status will have
95
- * their `_idleStart` value set and their status updated to `ACTIVE` in the next tick.
96
- *
97
- * @type {0}
98
- */
99
- const PENDING = 0
100
-
101
- /**
102
- * The `ACTIVE` constant indicates that the FastTimer is active and waiting
103
- * for its timer to expire. During the next tick, the `onTick` function will
104
- * check if the timer has expired, and if so, it will execute the associated callback.
105
- *
106
- * @type {1}
107
- */
108
- const ACTIVE = 1
109
-
110
- /**
111
- * The onTick function processes the fastTimers array.
112
- *
113
- * @returns {void}
114
- */
115
- function onTick () {
116
- /**
117
- * Increment the fastNow value by the TICK_MS value, despite the actual time
118
- * that has passed since the last tick. This approach ensures independence
119
- * from the system clock and delays caused by a blocked event loop.
120
- *
121
- * @type {number}
122
- */
123
- fastNow += TICK_MS
124
-
125
- /**
126
- * The `idx` variable is used to iterate over the `fastTimers` array.
127
- * Expired timers are removed by replacing them with the last element in the array.
128
- * Consequently, `idx` is only incremented when the current element is not removed.
129
- *
130
- * @type {number}
131
- */
132
- let idx = 0
133
-
134
- /**
135
- * The len variable will contain the length of the fastTimers array
136
- * and will be decremented when a FastTimer should be removed from the
137
- * fastTimers array.
138
- *
139
- * @type {number}
140
- */
141
- let len = fastTimers.length
142
-
143
- while (idx < len) {
144
- /**
145
- * @type {FastTimer}
146
- */
147
- const timer = fastTimers[idx]
148
-
149
- // If the timer is in the ACTIVE state and the timer has expired, it will
150
- // be processed in the next tick.
151
- if (timer._state === PENDING) {
152
- // Set the _idleStart value to the fastNow value minus the TICK_MS value
153
- // to account for the time the timer was in the PENDING state.
154
- timer._idleStart = fastNow - TICK_MS
155
- timer._state = ACTIVE
156
- } else if (
157
- timer._state === ACTIVE &&
158
- fastNow >= timer._idleStart + timer._idleTimeout
159
- ) {
160
- timer._state = TO_BE_CLEARED
161
- timer._idleStart = -1
162
- timer._onTimeout(timer._timerArg)
163
- }
164
-
165
- if (timer._state === TO_BE_CLEARED) {
166
- timer._state = NOT_IN_LIST
167
-
168
- // Move the last element to the current index and decrement len if it is
169
- // not the only element in the array.
170
- if (--len !== 0) {
171
- fastTimers[idx] = fastTimers[len]
172
- }
173
- } else {
174
- ++idx
175
- }
176
- }
177
-
178
- // Set the length of the fastTimers array to the new length and thus
179
- // removing the excess FastTimers elements from the array.
180
- fastTimers.length = len
181
-
182
- // If there are still active FastTimers in the array, refresh the Timer.
183
- // If there are no active FastTimers, the timer will be refreshed again
184
- // when a new FastTimer is instantiated.
185
- if (fastTimers.length !== 0) {
186
- refreshTimeout()
187
- }
188
- }
189
-
190
- function refreshTimeout () {
191
- // If the fastNowTimeout is already set and the Timer has the refresh()-
192
- // method available, call it to refresh the timer.
193
- // Some timer objects returned by setTimeout may not have a .refresh()
194
- // method (e.g. mocked timers in tests).
195
- if (fastNowTimeout?.refresh) {
196
- fastNowTimeout.refresh()
197
- // fastNowTimeout is not instantiated yet or refresh is not availabe,
198
- // create a new Timer.
199
- } else {
200
- clearTimeout(fastNowTimeout)
201
- fastNowTimeout = setTimeout(onTick, TICK_MS)
202
- // If the Timer has an unref method, call it to allow the process to exit,
203
- // if there are no other active handles. When using fake timers or mocked
204
- // environments (like Jest), .unref() may not be defined,
205
- fastNowTimeout?.unref()
206
- }
207
- }
208
-
209
- /**
210
- * The `FastTimer` class is a data structure designed to store and manage
211
- * timer information.
212
- */
213
- class FastTimer {
214
- [kFastTimer] = true
215
-
216
- /**
217
- * The state of the timer, which can be one of the following:
218
- * - NOT_IN_LIST (-2)
219
- * - TO_BE_CLEARED (-1)
220
- * - PENDING (0)
221
- * - ACTIVE (1)
222
- *
223
- * @type {-2|-1|0|1}
224
- * @private
225
- */
226
- _state = NOT_IN_LIST
227
-
228
- /**
229
- * The number of milliseconds to wait before calling the callback.
230
- *
231
- * @type {number}
232
- * @private
233
- */
234
- _idleTimeout = -1
235
-
236
- /**
237
- * The time in milliseconds when the timer was started. This value is used to
238
- * calculate when the timer should expire.
239
- *
240
- * @type {number}
241
- * @default -1
242
- * @private
243
- */
244
- _idleStart = -1
245
-
246
- /**
247
- * The function to be executed when the timer expires.
248
- * @type {Function}
249
- * @private
250
- */
251
- _onTimeout
252
-
253
- /**
254
- * The argument to be passed to the callback when the timer expires.
255
- *
256
- * @type {*}
257
- * @private
258
- */
259
- _timerArg
260
-
261
- /**
262
- * @constructor
263
- * @param {Function} callback A function to be executed after the timer
264
- * expires.
265
- * @param {number} delay The time, in milliseconds that the timer should wait
266
- * before the specified function or code is executed.
267
- * @param {*} arg
268
- */
269
- constructor (callback, delay, arg) {
270
- this._onTimeout = callback
271
- this._idleTimeout = delay
272
- this._timerArg = arg
273
-
274
- this.refresh()
275
- }
276
-
277
- /**
278
- * Sets the timer's start time to the current time, and reschedules the timer
279
- * to call its callback at the previously specified duration adjusted to the
280
- * current time.
281
- * Using this on a timer that has already called its callback will reactivate
282
- * the timer.
283
- *
284
- * @returns {void}
285
- */
286
- refresh () {
287
- // In the special case that the timer is not in the list of active timers,
288
- // add it back to the array to be processed in the next tick by the onTick
289
- // function.
290
- if (this._state === NOT_IN_LIST) {
291
- fastTimers.push(this)
292
- }
293
-
294
- // If the timer is the only active timer, refresh the fastNowTimeout for
295
- // better resolution.
296
- if (!fastNowTimeout || fastTimers.length === 1) {
297
- refreshTimeout()
298
- }
299
-
300
- // Setting the state to PENDING will cause the timer to be reset in the
301
- // next tick by the onTick function.
302
- this._state = PENDING
303
- }
304
-
305
- /**
306
- * The `clear` method cancels the timer, preventing it from executing.
307
- *
308
- * @returns {void}
309
- * @private
310
- */
311
- clear () {
312
- // Set the state to TO_BE_CLEARED to mark the timer for removal in the next
313
- // tick by the onTick function.
314
- this._state = TO_BE_CLEARED
315
-
316
- // Reset the _idleStart value to -1 to indicate that the timer is no longer
317
- // active.
318
- this._idleStart = -1
319
- }
320
- }
321
-
322
- /**
323
- * This module exports a setTimeout and clearTimeout function that can be
324
- * used as a drop-in replacement for the native functions.
325
- */
326
- module.exports = {
327
- /**
328
- * The setTimeout() method sets a timer which executes a function once the
329
- * timer expires.
330
- * @param {Function} callback A function to be executed after the timer
331
- * expires.
332
- * @param {number} delay The time, in milliseconds that the timer should
333
- * wait before the specified function or code is executed.
334
- * @param {*} [arg] An optional argument to be passed to the callback function
335
- * when the timer expires.
336
- * @returns {NodeJS.Timeout|FastTimer}
337
- */
338
- setTimeout (callback, delay, arg) {
339
- // If the delay is less than or equal to the RESOLUTION_MS value return a
340
- // native Node.js Timer instance.
341
- return delay <= RESOLUTION_MS
342
- ? setTimeout(callback, delay, arg)
343
- : new FastTimer(callback, delay, arg)
344
- },
345
- /**
346
- * The clearTimeout method cancels an instantiated Timer previously created
347
- * by calling setTimeout.
348
- *
349
- * @param {NodeJS.Timeout|FastTimer} timeout
350
- */
351
- clearTimeout (timeout) {
352
- // If the timeout is a FastTimer, call its own clear method.
353
- if (timeout[kFastTimer]) {
354
- /**
355
- * @type {FastTimer}
356
- */
357
- timeout.clear()
358
- // Otherwise it is an instance of a native NodeJS.Timeout, so call the
359
- // Node.js native clearTimeout function.
360
- } else {
361
- clearTimeout(timeout)
362
- }
363
- },
364
- /**
365
- * The setFastTimeout() method sets a fastTimer which executes a function once
366
- * the timer expires.
367
- * @param {Function} callback A function to be executed after the timer
368
- * expires.
369
- * @param {number} delay The time, in milliseconds that the timer should
370
- * wait before the specified function or code is executed.
371
- * @param {*} [arg] An optional argument to be passed to the callback function
372
- * when the timer expires.
373
- * @returns {FastTimer}
374
- */
375
- setFastTimeout (callback, delay, arg) {
376
- return new FastTimer(callback, delay, arg)
377
- },
378
- /**
379
- * The clearTimeout method cancels an instantiated FastTimer previously
380
- * created by calling setFastTimeout.
381
- *
382
- * @param {FastTimer} timeout
383
- */
384
- clearFastTimeout (timeout) {
385
- timeout.clear()
386
- },
387
- /**
388
- * The now method returns the value of the internal fast timer clock.
389
- *
390
- * @returns {number}
391
- */
392
- now () {
393
- return fastNow
394
- },
395
- /**
396
- * Trigger the onTick function to process the fastTimers array.
397
- * Exported for testing purposes only.
398
- * Marking as deprecated to discourage any use outside of testing.
399
- * @deprecated
400
- * @param {number} [delay=0] The delay in milliseconds to add to the now value.
401
- */
402
- tick (delay = 0) {
403
- fastNow += delay - RESOLUTION_MS + 1
404
- onTick()
405
- onTick()
406
- },
407
- /**
408
- * Reset FastTimers.
409
- * Exported for testing purposes only.
410
- * Marking as deprecated to discourage any use outside of testing.
411
- * @deprecated
412
- */
413
- reset () {
414
- fastNow = 0
415
- fastTimers.length = 0
416
- clearTimeout(fastNowTimeout)
417
- fastNowTimeout = null
418
- },
419
- /**
420
- * Exporting for testing purposes only.
421
- * Marking as deprecated to discourage any use outside of testing.
422
- * @deprecated
423
- */
424
- kFastTimer
425
- }