@heojeongbo/wirestage 0.0.0-stage → 0.1.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 (489) hide show
  1. package/LICENSE +21 -0
  2. package/LICENSES.md +21 -0
  3. package/README.md +150 -2
  4. package/dist/app/playwright/index.d.ts +3 -0
  5. package/dist/app/playwright/index.d.ts.map +1 -0
  6. package/dist/app/playwright/index.js +2 -0
  7. package/dist/app/playwright/index.js.map +1 -0
  8. package/dist/app/playwright/lib/fixture.d.ts +61 -0
  9. package/dist/app/playwright/lib/fixture.d.ts.map +1 -0
  10. package/dist/app/playwright/lib/fixture.js +110 -0
  11. package/dist/app/playwright/lib/fixture.js.map +1 -0
  12. package/dist/connect.d.ts +7 -0
  13. package/dist/connect.d.ts.map +1 -0
  14. package/dist/connect.js +7 -0
  15. package/dist/connect.js.map +1 -0
  16. package/dist/entities/frame/@x/plugin.d.ts +9 -0
  17. package/dist/entities/frame/@x/plugin.d.ts.map +1 -0
  18. package/dist/entities/frame/@x/plugin.js +2 -0
  19. package/dist/entities/frame/@x/plugin.js.map +1 -0
  20. package/dist/entities/frame/index.d.ts +6 -0
  21. package/dist/entities/frame/index.d.ts.map +1 -0
  22. package/dist/entities/frame/index.js +4 -0
  23. package/dist/entities/frame/index.js.map +1 -0
  24. package/dist/entities/frame/lib/filter.d.ts +8 -0
  25. package/dist/entities/frame/lib/filter.d.ts.map +1 -0
  26. package/dist/entities/frame/lib/filter.js +62 -0
  27. package/dist/entities/frame/lib/filter.js.map +1 -0
  28. package/dist/entities/frame/lib/payload.d.ts +8 -0
  29. package/dist/entities/frame/lib/payload.d.ts.map +1 -0
  30. package/dist/entities/frame/lib/payload.js +42 -0
  31. package/dist/entities/frame/lib/payload.js.map +1 -0
  32. package/dist/entities/frame/lib/snapshot.d.ts +15 -0
  33. package/dist/entities/frame/lib/snapshot.d.ts.map +1 -0
  34. package/dist/entities/frame/lib/snapshot.js +90 -0
  35. package/dist/entities/frame/lib/snapshot.js.map +1 -0
  36. package/dist/entities/frame/lib/timeline.d.ts +23 -0
  37. package/dist/entities/frame/lib/timeline.d.ts.map +1 -0
  38. package/dist/entities/frame/lib/timeline.js +122 -0
  39. package/dist/entities/frame/lib/timeline.js.map +1 -0
  40. package/dist/entities/frame/model/frame.d.ts +182 -0
  41. package/dist/entities/frame/model/frame.d.ts.map +1 -0
  42. package/dist/entities/frame/model/frame.js +2 -0
  43. package/dist/entities/frame/model/frame.js.map +1 -0
  44. package/dist/entities/plugin/index.d.ts +9 -0
  45. package/dist/entities/plugin/index.d.ts.map +1 -0
  46. package/dist/entities/plugin/index.js +3 -0
  47. package/dist/entities/plugin/index.js.map +1 -0
  48. package/dist/entities/plugin/lib/define-plugin.d.ts +8 -0
  49. package/dist/entities/plugin/lib/define-plugin.d.ts.map +1 -0
  50. package/dist/entities/plugin/lib/define-plugin.js +9 -0
  51. package/dist/entities/plugin/lib/define-plugin.js.map +1 -0
  52. package/dist/entities/plugin/lib/named.d.ts +10 -0
  53. package/dist/entities/plugin/lib/named.d.ts.map +1 -0
  54. package/dist/entities/plugin/lib/named.js +17 -0
  55. package/dist/entities/plugin/lib/named.js.map +1 -0
  56. package/dist/entities/plugin/model/attachment.d.ts +18 -0
  57. package/dist/entities/plugin/model/attachment.d.ts.map +1 -0
  58. package/dist/entities/plugin/model/attachment.js +2 -0
  59. package/dist/entities/plugin/model/attachment.js.map +1 -0
  60. package/dist/entities/plugin/model/http.d.ts +126 -0
  61. package/dist/entities/plugin/model/http.d.ts.map +1 -0
  62. package/dist/entities/plugin/model/http.js +2 -0
  63. package/dist/entities/plugin/model/http.js.map +1 -0
  64. package/dist/entities/plugin/model/page.d.ts +100 -0
  65. package/dist/entities/plugin/model/page.d.ts.map +1 -0
  66. package/dist/entities/plugin/model/page.js +2 -0
  67. package/dist/entities/plugin/model/page.js.map +1 -0
  68. package/dist/entities/plugin/model/plugin.d.ts +83 -0
  69. package/dist/entities/plugin/model/plugin.d.ts.map +1 -0
  70. package/dist/entities/plugin/model/plugin.js +2 -0
  71. package/dist/entities/plugin/model/plugin.js.map +1 -0
  72. package/dist/entities/plugin/model/socket.d.ts +102 -0
  73. package/dist/entities/plugin/model/socket.d.ts.map +1 -0
  74. package/dist/entities/plugin/model/socket.js +2 -0
  75. package/dist/entities/plugin/model/socket.js.map +1 -0
  76. package/dist/entities/plugin/model/stream.d.ts +43 -0
  77. package/dist/entities/plugin/model/stream.d.ts.map +1 -0
  78. package/dist/entities/plugin/model/stream.js +2 -0
  79. package/dist/entities/plugin/model/stream.js.map +1 -0
  80. package/dist/features/connect/index.d.ts +5 -0
  81. package/dist/features/connect/index.d.ts.map +1 -0
  82. package/dist/features/connect/index.js +4 -0
  83. package/dist/features/connect/index.js.map +1 -0
  84. package/dist/features/connect/lib/calls.d.ts +9 -0
  85. package/dist/features/connect/lib/calls.d.ts.map +1 -0
  86. package/dist/features/connect/lib/calls.js +46 -0
  87. package/dist/features/connect/lib/calls.js.map +1 -0
  88. package/dist/features/connect/lib/client.d.ts +33 -0
  89. package/dist/features/connect/lib/client.d.ts.map +1 -0
  90. package/dist/features/connect/lib/client.js +147 -0
  91. package/dist/features/connect/lib/client.js.map +1 -0
  92. package/dist/features/connect/lib/create-connect.d.ts +14 -0
  93. package/dist/features/connect/lib/create-connect.d.ts.map +1 -0
  94. package/dist/features/connect/lib/create-connect.js +124 -0
  95. package/dist/features/connect/lib/create-connect.js.map +1 -0
  96. package/dist/features/connect/lib/faults.d.ts +18 -0
  97. package/dist/features/connect/lib/faults.d.ts.map +1 -0
  98. package/dist/features/connect/lib/faults.js +85 -0
  99. package/dist/features/connect/lib/faults.js.map +1 -0
  100. package/dist/features/connect/lib/protocol.d.ts +42 -0
  101. package/dist/features/connect/lib/protocol.d.ts.map +1 -0
  102. package/dist/features/connect/lib/protocol.js +228 -0
  103. package/dist/features/connect/lib/protocol.js.map +1 -0
  104. package/dist/features/connect/lib/record.d.ts +14 -0
  105. package/dist/features/connect/lib/record.d.ts.map +1 -0
  106. package/dist/features/connect/lib/record.js +36 -0
  107. package/dist/features/connect/lib/record.js.map +1 -0
  108. package/dist/features/connect/lib/recorder.d.ts +77 -0
  109. package/dist/features/connect/lib/recorder.d.ts.map +1 -0
  110. package/dist/features/connect/lib/recorder.js +209 -0
  111. package/dist/features/connect/lib/recorder.js.map +1 -0
  112. package/dist/features/connect/lib/rules.d.ts +51 -0
  113. package/dist/features/connect/lib/rules.d.ts.map +1 -0
  114. package/dist/features/connect/lib/rules.js +222 -0
  115. package/dist/features/connect/lib/rules.js.map +1 -0
  116. package/dist/features/connect/lib/serve.d.ts +10 -0
  117. package/dist/features/connect/lib/serve.d.ts.map +1 -0
  118. package/dist/features/connect/lib/serve.js +78 -0
  119. package/dist/features/connect/lib/serve.js.map +1 -0
  120. package/dist/features/connect/lib/status-of.d.ts +11 -0
  121. package/dist/features/connect/lib/status-of.d.ts.map +1 -0
  122. package/dist/features/connect/lib/status-of.js +22 -0
  123. package/dist/features/connect/lib/status-of.js.map +1 -0
  124. package/dist/features/connect/lib/stubs.d.ts +18 -0
  125. package/dist/features/connect/lib/stubs.d.ts.map +1 -0
  126. package/dist/features/connect/lib/stubs.js +174 -0
  127. package/dist/features/connect/lib/stubs.js.map +1 -0
  128. package/dist/features/connect/lib/universal.d.ts +19 -0
  129. package/dist/features/connect/lib/universal.d.ts.map +1 -0
  130. package/dist/features/connect/lib/universal.js +71 -0
  131. package/dist/features/connect/lib/universal.js.map +1 -0
  132. package/dist/features/connect/model/types.d.ts +247 -0
  133. package/dist/features/connect/model/types.d.ts.map +1 -0
  134. package/dist/features/connect/model/types.js +2 -0
  135. package/dist/features/connect/model/types.js.map +1 -0
  136. package/dist/features/rest/index.d.ts +5 -0
  137. package/dist/features/rest/index.d.ts.map +1 -0
  138. package/dist/features/rest/index.js +3 -0
  139. package/dist/features/rest/index.js.map +1 -0
  140. package/dist/features/rest/lib/calls.d.ts +8 -0
  141. package/dist/features/rest/lib/calls.d.ts.map +1 -0
  142. package/dist/features/rest/lib/calls.js +32 -0
  143. package/dist/features/rest/lib/calls.js.map +1 -0
  144. package/dist/features/rest/lib/create-rest.d.ts +8 -0
  145. package/dist/features/rest/lib/create-rest.d.ts.map +1 -0
  146. package/dist/features/rest/lib/create-rest.js +136 -0
  147. package/dist/features/rest/lib/create-rest.js.map +1 -0
  148. package/dist/features/rest/lib/path.d.ts +14 -0
  149. package/dist/features/rest/lib/path.d.ts.map +1 -0
  150. package/dist/features/rest/lib/path.js +58 -0
  151. package/dist/features/rest/lib/path.js.map +1 -0
  152. package/dist/features/rest/lib/reply.d.ts +25 -0
  153. package/dist/features/rest/lib/reply.d.ts.map +1 -0
  154. package/dist/features/rest/lib/reply.js +40 -0
  155. package/dist/features/rest/lib/reply.js.map +1 -0
  156. package/dist/features/rest/model/types.d.ts +74 -0
  157. package/dist/features/rest/model/types.d.ts.map +1 -0
  158. package/dist/features/rest/model/types.js +2 -0
  159. package/dist/features/rest/model/types.js.map +1 -0
  160. package/dist/features/sse/index.d.ts +4 -0
  161. package/dist/features/sse/index.d.ts.map +1 -0
  162. package/dist/features/sse/index.js +3 -0
  163. package/dist/features/sse/index.js.map +1 -0
  164. package/dist/features/sse/lib/create-sse.d.ts +9 -0
  165. package/dist/features/sse/lib/create-sse.d.ts.map +1 -0
  166. package/dist/features/sse/lib/create-sse.js +120 -0
  167. package/dist/features/sse/lib/create-sse.js.map +1 -0
  168. package/dist/features/sse/lib/encode.d.ts +8 -0
  169. package/dist/features/sse/lib/encode.d.ts.map +1 -0
  170. package/dist/features/sse/lib/encode.js +29 -0
  171. package/dist/features/sse/lib/encode.js.map +1 -0
  172. package/dist/features/sse/model/types.d.ts +62 -0
  173. package/dist/features/sse/model/types.d.ts.map +1 -0
  174. package/dist/features/sse/model/types.js +2 -0
  175. package/dist/features/sse/model/types.js.map +1 -0
  176. package/dist/features/webrtc/index.d.ts +3 -0
  177. package/dist/features/webrtc/index.d.ts.map +1 -0
  178. package/dist/features/webrtc/index.js +2 -0
  179. package/dist/features/webrtc/index.js.map +1 -0
  180. package/dist/features/webrtc/lib/create-webrtc.d.ts +9 -0
  181. package/dist/features/webrtc/lib/create-webrtc.d.ts.map +1 -0
  182. package/dist/features/webrtc/lib/create-webrtc.js +123 -0
  183. package/dist/features/webrtc/lib/create-webrtc.js.map +1 -0
  184. package/dist/features/webrtc/lib/rtc-page-module.d.ts +22 -0
  185. package/dist/features/webrtc/lib/rtc-page-module.d.ts.map +1 -0
  186. package/dist/features/webrtc/lib/rtc-page-module.js +161 -0
  187. package/dist/features/webrtc/lib/rtc-page-module.js.map +1 -0
  188. package/dist/features/webrtc/lib/to-frame.d.ts +9 -0
  189. package/dist/features/webrtc/lib/to-frame.d.ts.map +1 -0
  190. package/dist/features/webrtc/lib/to-frame.js +43 -0
  191. package/dist/features/webrtc/lib/to-frame.js.map +1 -0
  192. package/dist/features/webrtc/model/types.d.ts +70 -0
  193. package/dist/features/webrtc/model/types.d.ts.map +1 -0
  194. package/dist/features/webrtc/model/types.js +2 -0
  195. package/dist/features/webrtc/model/types.js.map +1 -0
  196. package/dist/features/websocket/index.d.ts +3 -0
  197. package/dist/features/websocket/index.d.ts.map +1 -0
  198. package/dist/features/websocket/index.js +2 -0
  199. package/dist/features/websocket/index.js.map +1 -0
  200. package/dist/features/websocket/lib/create-websocket.d.ts +9 -0
  201. package/dist/features/websocket/lib/create-websocket.d.ts.map +1 -0
  202. package/dist/features/websocket/lib/create-websocket.js +34 -0
  203. package/dist/features/websocket/lib/create-websocket.js.map +1 -0
  204. package/dist/features/websocket/lib/mock.d.ts +6 -0
  205. package/dist/features/websocket/lib/mock.d.ts.map +1 -0
  206. package/dist/features/websocket/lib/mock.js +96 -0
  207. package/dist/features/websocket/lib/mock.js.map +1 -0
  208. package/dist/features/websocket/lib/proxy.d.ts +9 -0
  209. package/dist/features/websocket/lib/proxy.d.ts.map +1 -0
  210. package/dist/features/websocket/lib/proxy.js +107 -0
  211. package/dist/features/websocket/lib/proxy.js.map +1 -0
  212. package/dist/features/websocket/lib/wire.d.ts +16 -0
  213. package/dist/features/websocket/lib/wire.d.ts.map +1 -0
  214. package/dist/features/websocket/lib/wire.js +46 -0
  215. package/dist/features/websocket/lib/wire.js.map +1 -0
  216. package/dist/features/websocket/model/types.d.ts +129 -0
  217. package/dist/features/websocket/model/types.d.ts.map +1 -0
  218. package/dist/features/websocket/model/types.js +2 -0
  219. package/dist/features/websocket/model/types.js.map +1 -0
  220. package/dist/index.d.ts +27 -0
  221. package/dist/index.d.ts.map +1 -0
  222. package/dist/index.js +16 -0
  223. package/dist/index.js.map +1 -0
  224. package/dist/playwright.d.ts +4 -0
  225. package/dist/playwright.d.ts.map +1 -0
  226. package/dist/playwright.js +2 -0
  227. package/dist/playwright.js.map +1 -0
  228. package/dist/rest.d.ts +3 -0
  229. package/dist/rest.d.ts.map +1 -0
  230. package/dist/rest.js +3 -0
  231. package/dist/rest.js.map +1 -0
  232. package/dist/shared/api/http-server/index.d.ts +3 -0
  233. package/dist/shared/api/http-server/index.d.ts.map +1 -0
  234. package/dist/shared/api/http-server/index.js +2 -0
  235. package/dist/shared/api/http-server/index.js.map +1 -0
  236. package/dist/shared/api/http-server/listen.d.ts +25 -0
  237. package/dist/shared/api/http-server/listen.d.ts.map +1 -0
  238. package/dist/shared/api/http-server/listen.js +44 -0
  239. package/dist/shared/api/http-server/listen.js.map +1 -0
  240. package/dist/shared/api/playwright/index.d.ts +2 -0
  241. package/dist/shared/api/playwright/index.d.ts.map +1 -0
  242. package/dist/shared/api/playwright/index.js +2 -0
  243. package/dist/shared/api/playwright/index.js.map +1 -0
  244. package/dist/shared/api/playwright/ports.d.ts +117 -0
  245. package/dist/shared/api/playwright/ports.d.ts.map +1 -0
  246. package/dist/shared/api/playwright/ports.js +11 -0
  247. package/dist/shared/api/playwright/ports.js.map +1 -0
  248. package/dist/shared/api/stream-server/index.d.ts +3 -0
  249. package/dist/shared/api/stream-server/index.d.ts.map +1 -0
  250. package/dist/shared/api/stream-server/index.js +2 -0
  251. package/dist/shared/api/stream-server/index.js.map +1 -0
  252. package/dist/shared/api/stream-server/stream-server.d.ts +43 -0
  253. package/dist/shared/api/stream-server/stream-server.d.ts.map +1 -0
  254. package/dist/shared/api/stream-server/stream-server.js +160 -0
  255. package/dist/shared/api/stream-server/stream-server.js.map +1 -0
  256. package/dist/shared/lib/async/arrivals.d.ts +31 -0
  257. package/dist/shared/lib/async/arrivals.d.ts.map +1 -0
  258. package/dist/shared/lib/async/arrivals.js +57 -0
  259. package/dist/shared/lib/async/arrivals.js.map +1 -0
  260. package/dist/shared/lib/async/async-queue.d.ts +23 -0
  261. package/dist/shared/lib/async/async-queue.d.ts.map +1 -0
  262. package/dist/shared/lib/async/async-queue.js +80 -0
  263. package/dist/shared/lib/async/async-queue.js.map +1 -0
  264. package/dist/shared/lib/async/deferred.d.ts +12 -0
  265. package/dist/shared/lib/async/deferred.d.ts.map +1 -0
  266. package/dist/shared/lib/async/deferred.js +34 -0
  267. package/dist/shared/lib/async/deferred.js.map +1 -0
  268. package/dist/shared/lib/async/index.d.ts +8 -0
  269. package/dist/shared/lib/async/index.d.ts.map +1 -0
  270. package/dist/shared/lib/async/index.js +5 -0
  271. package/dist/shared/lib/async/index.js.map +1 -0
  272. package/dist/shared/lib/async/run-all.d.ts +8 -0
  273. package/dist/shared/lib/async/run-all.d.ts.map +1 -0
  274. package/dist/shared/lib/async/run-all.js +22 -0
  275. package/dist/shared/lib/async/run-all.js.map +1 -0
  276. package/dist/shared/lib/bytes/bytes.d.ts +18 -0
  277. package/dist/shared/lib/bytes/bytes.d.ts.map +1 -0
  278. package/dist/shared/lib/bytes/bytes.js +48 -0
  279. package/dist/shared/lib/bytes/bytes.js.map +1 -0
  280. package/dist/shared/lib/bytes/index.d.ts +3 -0
  281. package/dist/shared/lib/bytes/index.d.ts.map +1 -0
  282. package/dist/shared/lib/bytes/index.js +2 -0
  283. package/dist/shared/lib/bytes/index.js.map +1 -0
  284. package/dist/shared/lib/clock/clock.d.ts +29 -0
  285. package/dist/shared/lib/clock/clock.d.ts.map +1 -0
  286. package/dist/shared/lib/clock/clock.js +85 -0
  287. package/dist/shared/lib/clock/clock.js.map +1 -0
  288. package/dist/shared/lib/clock/index.d.ts +3 -0
  289. package/dist/shared/lib/clock/index.d.ts.map +1 -0
  290. package/dist/shared/lib/clock/index.js +2 -0
  291. package/dist/shared/lib/clock/index.js.map +1 -0
  292. package/dist/shared/lib/cookies/index.d.ts +3 -0
  293. package/dist/shared/lib/cookies/index.d.ts.map +1 -0
  294. package/dist/shared/lib/cookies/index.js +2 -0
  295. package/dist/shared/lib/cookies/index.js.map +1 -0
  296. package/dist/shared/lib/cookies/set-cookie.d.ts +22 -0
  297. package/dist/shared/lib/cookies/set-cookie.d.ts.map +1 -0
  298. package/dist/shared/lib/cookies/set-cookie.js +89 -0
  299. package/dist/shared/lib/cookies/set-cookie.js.map +1 -0
  300. package/dist/shared/lib/envelope/envelope.d.ts +50 -0
  301. package/dist/shared/lib/envelope/envelope.d.ts.map +1 -0
  302. package/dist/shared/lib/envelope/envelope.js +111 -0
  303. package/dist/shared/lib/envelope/envelope.js.map +1 -0
  304. package/dist/shared/lib/envelope/index.d.ts +3 -0
  305. package/dist/shared/lib/envelope/index.d.ts.map +1 -0
  306. package/dist/shared/lib/envelope/index.js +2 -0
  307. package/dist/shared/lib/envelope/index.js.map +1 -0
  308. package/dist/shared/lib/errors/index.d.ts +3 -0
  309. package/dist/shared/lib/errors/index.d.ts.map +1 -0
  310. package/dist/shared/lib/errors/index.js +2 -0
  311. package/dist/shared/lib/errors/index.js.map +1 -0
  312. package/dist/shared/lib/errors/wirestage-error.d.ts +28 -0
  313. package/dist/shared/lib/errors/wirestage-error.d.ts.map +1 -0
  314. package/dist/shared/lib/errors/wirestage-error.js +16 -0
  315. package/dist/shared/lib/errors/wirestage-error.js.map +1 -0
  316. package/dist/shared/lib/id/id.d.ts +10 -0
  317. package/dist/shared/lib/id/id.d.ts.map +1 -0
  318. package/dist/shared/lib/id/id.js +26 -0
  319. package/dist/shared/lib/id/id.js.map +1 -0
  320. package/dist/shared/lib/id/index.d.ts +2 -0
  321. package/dist/shared/lib/id/index.d.ts.map +1 -0
  322. package/dist/shared/lib/id/index.js +2 -0
  323. package/dist/shared/lib/id/index.js.map +1 -0
  324. package/dist/shared/lib/logger/index.d.ts +3 -0
  325. package/dist/shared/lib/logger/index.d.ts.map +1 -0
  326. package/dist/shared/lib/logger/index.js +2 -0
  327. package/dist/shared/lib/logger/index.js.map +1 -0
  328. package/dist/shared/lib/logger/logger.d.ts +46 -0
  329. package/dist/shared/lib/logger/logger.d.ts.map +1 -0
  330. package/dist/shared/lib/logger/logger.js +67 -0
  331. package/dist/shared/lib/logger/logger.js.map +1 -0
  332. package/dist/shared/lib/match/index.d.ts +3 -0
  333. package/dist/shared/lib/match/index.d.ts.map +1 -0
  334. package/dist/shared/lib/match/index.js +2 -0
  335. package/dist/shared/lib/match/index.js.map +1 -0
  336. package/dist/shared/lib/match/url-matcher.d.ts +27 -0
  337. package/dist/shared/lib/match/url-matcher.d.ts.map +1 -0
  338. package/dist/shared/lib/match/url-matcher.js +88 -0
  339. package/dist/shared/lib/match/url-matcher.js.map +1 -0
  340. package/dist/sse.d.ts +3 -0
  341. package/dist/sse.d.ts.map +1 -0
  342. package/dist/sse.js +3 -0
  343. package/dist/sse.js.map +1 -0
  344. package/dist/webrtc.d.ts +3 -0
  345. package/dist/webrtc.d.ts.map +1 -0
  346. package/dist/webrtc.js +3 -0
  347. package/dist/webrtc.js.map +1 -0
  348. package/dist/websocket.d.ts +3 -0
  349. package/dist/websocket.d.ts.map +1 -0
  350. package/dist/websocket.js +3 -0
  351. package/dist/websocket.js.map +1 -0
  352. package/dist/widgets/stage/index.d.ts +3 -0
  353. package/dist/widgets/stage/index.d.ts.map +1 -0
  354. package/dist/widgets/stage/index.js +2 -0
  355. package/dist/widgets/stage/index.js.map +1 -0
  356. package/dist/widgets/stage/lib/attached-context.d.ts +10 -0
  357. package/dist/widgets/stage/lib/attached-context.d.ts.map +1 -0
  358. package/dist/widgets/stage/lib/attached-context.js +2 -0
  359. package/dist/widgets/stage/lib/attached-context.js.map +1 -0
  360. package/dist/widgets/stage/lib/create-stage.d.ts +12 -0
  361. package/dist/widgets/stage/lib/create-stage.d.ts.map +1 -0
  362. package/dist/widgets/stage/lib/create-stage.js +248 -0
  363. package/dist/widgets/stage/lib/create-stage.js.map +1 -0
  364. package/dist/widgets/stage/lib/http-router.d.ts +35 -0
  365. package/dist/widgets/stage/lib/http-router.d.ts.map +1 -0
  366. package/dist/widgets/stage/lib/http-router.js +455 -0
  367. package/dist/widgets/stage/lib/http-router.js.map +1 -0
  368. package/dist/widgets/stage/lib/page-host.d.ts +36 -0
  369. package/dist/widgets/stage/lib/page-host.d.ts.map +1 -0
  370. package/dist/widgets/stage/lib/page-host.js +240 -0
  371. package/dist/widgets/stage/lib/page-host.js.map +1 -0
  372. package/dist/widgets/stage/lib/page-runtime.d.ts +93 -0
  373. package/dist/widgets/stage/lib/page-runtime.d.ts.map +1 -0
  374. package/dist/widgets/stage/lib/page-runtime.js +247 -0
  375. package/dist/widgets/stage/lib/page-runtime.js.map +1 -0
  376. package/dist/widgets/stage/lib/reads.d.ts +21 -0
  377. package/dist/widgets/stage/lib/reads.d.ts.map +1 -0
  378. package/dist/widgets/stage/lib/reads.js +97 -0
  379. package/dist/widgets/stage/lib/reads.js.map +1 -0
  380. package/dist/widgets/stage/lib/response-stream.d.ts +9 -0
  381. package/dist/widgets/stage/lib/response-stream.d.ts.map +1 -0
  382. package/dist/widgets/stage/lib/response-stream.js +56 -0
  383. package/dist/widgets/stage/lib/response-stream.js.map +1 -0
  384. package/dist/widgets/stage/lib/socket-router.d.ts +25 -0
  385. package/dist/widgets/stage/lib/socket-router.d.ts.map +1 -0
  386. package/dist/widgets/stage/lib/socket-router.js +204 -0
  387. package/dist/widgets/stage/lib/socket-router.js.map +1 -0
  388. package/dist/widgets/stage/model/stage.d.ts +86 -0
  389. package/dist/widgets/stage/model/stage.d.ts.map +1 -0
  390. package/dist/widgets/stage/model/stage.js +2 -0
  391. package/dist/widgets/stage/model/stage.js.map +1 -0
  392. package/package.json +140 -5
  393. package/src/app/playwright/index.ts +7 -0
  394. package/src/app/playwright/lib/fixture.ts +201 -0
  395. package/src/connect.ts +6 -0
  396. package/src/entities/frame/@x/plugin.ts +8 -0
  397. package/src/entities/frame/index.ts +19 -0
  398. package/src/entities/frame/lib/filter.ts +58 -0
  399. package/src/entities/frame/lib/payload.ts +42 -0
  400. package/src/entities/frame/lib/snapshot.ts +105 -0
  401. package/src/entities/frame/lib/timeline.ts +147 -0
  402. package/src/entities/frame/model/frame.ts +191 -0
  403. package/src/entities/plugin/index.ts +36 -0
  404. package/src/entities/plugin/lib/define-plugin.ts +12 -0
  405. package/src/entities/plugin/lib/named.ts +21 -0
  406. package/src/entities/plugin/model/attachment.ts +18 -0
  407. package/src/entities/plugin/model/http.ts +147 -0
  408. package/src/entities/plugin/model/page.ts +110 -0
  409. package/src/entities/plugin/model/plugin.ts +96 -0
  410. package/src/entities/plugin/model/socket.ts +108 -0
  411. package/src/entities/plugin/model/stream.ts +43 -0
  412. package/src/features/connect/index.ts +23 -0
  413. package/src/features/connect/lib/calls.ts +58 -0
  414. package/src/features/connect/lib/client.ts +203 -0
  415. package/src/features/connect/lib/create-connect.ts +164 -0
  416. package/src/features/connect/lib/faults.ts +132 -0
  417. package/src/features/connect/lib/protocol.ts +321 -0
  418. package/src/features/connect/lib/record.ts +48 -0
  419. package/src/features/connect/lib/recorder.ts +306 -0
  420. package/src/features/connect/lib/rules.ts +385 -0
  421. package/src/features/connect/lib/serve.ts +114 -0
  422. package/src/features/connect/lib/status-of.ts +20 -0
  423. package/src/features/connect/lib/stubs.ts +282 -0
  424. package/src/features/connect/lib/universal.ts +100 -0
  425. package/src/features/connect/model/types.ts +305 -0
  426. package/src/features/rest/index.ts +23 -0
  427. package/src/features/rest/lib/calls.ts +31 -0
  428. package/src/features/rest/lib/create-rest.ts +169 -0
  429. package/src/features/rest/lib/path.ts +70 -0
  430. package/src/features/rest/lib/reply.ts +74 -0
  431. package/src/features/rest/model/types.ts +113 -0
  432. package/src/features/sse/index.ts +10 -0
  433. package/src/features/sse/lib/create-sse.ts +128 -0
  434. package/src/features/sse/lib/encode.ts +28 -0
  435. package/src/features/sse/model/types.ts +66 -0
  436. package/src/features/webrtc/index.ts +6 -0
  437. package/src/features/webrtc/lib/create-webrtc.ts +149 -0
  438. package/src/features/webrtc/lib/rtc-page-module.ts +189 -0
  439. package/src/features/webrtc/lib/to-frame.ts +63 -0
  440. package/src/features/webrtc/model/types.ts +80 -0
  441. package/src/features/websocket/index.ts +15 -0
  442. package/src/features/websocket/lib/create-websocket.ts +41 -0
  443. package/src/features/websocket/lib/mock.ts +114 -0
  444. package/src/features/websocket/lib/proxy.ts +141 -0
  445. package/src/features/websocket/lib/wire.ts +78 -0
  446. package/src/features/websocket/model/types.ts +130 -0
  447. package/src/index.ts +111 -0
  448. package/src/playwright.ts +8 -0
  449. package/src/rest.ts +2 -0
  450. package/src/shared/api/http-server/index.ts +2 -0
  451. package/src/shared/api/http-server/listen.ts +71 -0
  452. package/src/shared/api/playwright/index.ts +17 -0
  453. package/src/shared/api/playwright/ports.ts +145 -0
  454. package/src/shared/api/stream-server/index.ts +7 -0
  455. package/src/shared/api/stream-server/stream-server.ts +246 -0
  456. package/src/shared/lib/async/arrivals.ts +91 -0
  457. package/src/shared/lib/async/async-queue.ts +101 -0
  458. package/src/shared/lib/async/deferred.ts +38 -0
  459. package/src/shared/lib/async/index.ts +11 -0
  460. package/src/shared/lib/async/run-all.ts +19 -0
  461. package/src/shared/lib/bytes/bytes.ts +53 -0
  462. package/src/shared/lib/bytes/index.ts +9 -0
  463. package/src/shared/lib/clock/clock.ts +114 -0
  464. package/src/shared/lib/clock/index.ts +2 -0
  465. package/src/shared/lib/cookies/index.ts +2 -0
  466. package/src/shared/lib/cookies/set-cookie.ts +105 -0
  467. package/src/shared/lib/envelope/envelope.ts +133 -0
  468. package/src/shared/lib/envelope/index.ts +9 -0
  469. package/src/shared/lib/errors/index.ts +5 -0
  470. package/src/shared/lib/errors/wirestage-error.ts +50 -0
  471. package/src/shared/lib/id/id.ts +29 -0
  472. package/src/shared/lib/id/index.ts +1 -0
  473. package/src/shared/lib/logger/index.ts +12 -0
  474. package/src/shared/lib/logger/logger.ts +126 -0
  475. package/src/shared/lib/match/index.ts +6 -0
  476. package/src/shared/lib/match/url-matcher.ts +107 -0
  477. package/src/sse.ts +2 -0
  478. package/src/webrtc.ts +2 -0
  479. package/src/websocket.ts +2 -0
  480. package/src/widgets/stage/index.ts +9 -0
  481. package/src/widgets/stage/lib/attached-context.ts +10 -0
  482. package/src/widgets/stage/lib/create-stage.ts +305 -0
  483. package/src/widgets/stage/lib/http-router.ts +620 -0
  484. package/src/widgets/stage/lib/page-host.ts +375 -0
  485. package/src/widgets/stage/lib/page-runtime.ts +314 -0
  486. package/src/widgets/stage/lib/reads.ts +128 -0
  487. package/src/widgets/stage/lib/response-stream.ts +66 -0
  488. package/src/widgets/stage/lib/socket-router.ts +271 -0
  489. package/src/widgets/stage/model/stage.ts +108 -0
@@ -0,0 +1,50 @@
1
+ /**
2
+ * The length-prefixed message framing that gRPC, gRPC-web and Connect
3
+ * streaming share: one flag byte, a 4-byte big-endian length, the payload.
4
+ *
5
+ * Every hand-written gRPC-web stub ends up re-deriving this; getting the
6
+ * trailer bit or the length endianness wrong produces a response the client
7
+ * rejects with an error that names neither.
8
+ */
9
+ export declare const EnvelopeFlag: {
10
+ /** gRPC / gRPC-web / Connect: the payload is compressed. */
11
+ readonly compressed: 1;
12
+ /** Connect streaming: the payload is the end-of-stream JSON. */
13
+ readonly endStream: 2;
14
+ /** gRPC-web: the payload is the trailer block, not a message. */
15
+ readonly trailer: 128;
16
+ };
17
+ export interface Envelope {
18
+ readonly flags: number;
19
+ readonly data: Uint8Array;
20
+ }
21
+ export declare function encodeEnvelope(flags: number, data: Uint8Array): Uint8Array;
22
+ export declare function encodeEnvelopes(envelopes: readonly Envelope[]): Uint8Array;
23
+ export interface EnvelopeReader {
24
+ /** Feed bytes; returns every envelope they complete, in order. */
25
+ push(chunk: Uint8Array): Envelope[];
26
+ /** Bytes held back because they do not complete an envelope yet. */
27
+ readonly buffered: number;
28
+ }
29
+ /**
30
+ * Incremental reader for a byte stream that may split an envelope anywhere,
31
+ * including inside the 5-byte header — which is exactly how HTTP chunking
32
+ * delivers a long server stream.
33
+ *
34
+ * Chunks that do not complete an envelope are kept as they came and joined
35
+ * only once it is complete, so a large message arriving in small chunks is
36
+ * copied once, not once per chunk.
37
+ */
38
+ export declare function createEnvelopeReader(): EnvelopeReader;
39
+ /** Decode a complete body. `rest` holds a truncated tail, if any. */
40
+ export declare function decodeEnvelopes(bytes: Uint8Array): {
41
+ readonly envelopes: Envelope[];
42
+ readonly rest: number;
43
+ };
44
+ /**
45
+ * Parse a gRPC-web trailer block (`name: value\r\n` lines). Names are
46
+ * lower-cased; HTTP/1.1 header names are case-insensitive and gRPC-web
47
+ * servers disagree on the spelling.
48
+ */
49
+ export declare function parseTrailerBlock(data: Uint8Array): Record<string, string>;
50
+ //# sourceMappingURL=envelope.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"envelope.d.ts","sourceRoot":"","sources":["../../../../src/shared/lib/envelope/envelope.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY;IACxB,4DAA4D;;IAE5D,gEAAgE;;IAEhE,iEAAiE;;CAExD,CAAC;AAEX,MAAM,WAAW,QAAQ;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;CAC1B;AAID,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,UAAU,CAM1E;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,SAAS,QAAQ,EAAE,GAAG,UAAU,CAE1E;AAED,MAAM,WAAW,cAAc;IAC9B,kEAAkE;IAClE,IAAI,CAAC,KAAK,EAAE,UAAU,GAAG,QAAQ,EAAE,CAAC;IACpC,oEAAoE;IACpE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,IAAI,cAAc,CAmDrD;AAED,qEAAqE;AACrE,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG;IACnD,QAAQ,CAAC,SAAS,EAAE,QAAQ,EAAE,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACtB,CAIA;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAU1E"}
@@ -0,0 +1,111 @@
1
+ import { concatBytes, utf8 } from "../bytes/index.js";
2
+ /**
3
+ * The length-prefixed message framing that gRPC, gRPC-web and Connect
4
+ * streaming share: one flag byte, a 4-byte big-endian length, the payload.
5
+ *
6
+ * Every hand-written gRPC-web stub ends up re-deriving this; getting the
7
+ * trailer bit or the length endianness wrong produces a response the client
8
+ * rejects with an error that names neither.
9
+ */
10
+ export const EnvelopeFlag = {
11
+ /** gRPC / gRPC-web / Connect: the payload is compressed. */
12
+ compressed: 0b0000_0001,
13
+ /** Connect streaming: the payload is the end-of-stream JSON. */
14
+ endStream: 0b0000_0010,
15
+ /** gRPC-web: the payload is the trailer block, not a message. */
16
+ trailer: 0b1000_0000,
17
+ };
18
+ const HEADER = 5;
19
+ export function encodeEnvelope(flags, data) {
20
+ const out = new Uint8Array(HEADER + data.byteLength);
21
+ out[0] = flags;
22
+ new DataView(out.buffer).setUint32(1, data.byteLength, false);
23
+ out.set(data, HEADER);
24
+ return out;
25
+ }
26
+ export function encodeEnvelopes(envelopes) {
27
+ return concatBytes(envelopes.map((e) => encodeEnvelope(e.flags, e.data)));
28
+ }
29
+ /**
30
+ * Incremental reader for a byte stream that may split an envelope anywhere,
31
+ * including inside the 5-byte header — which is exactly how HTTP chunking
32
+ * delivers a long server stream.
33
+ *
34
+ * Chunks that do not complete an envelope are kept as they came and joined
35
+ * only once it is complete, so a large message arriving in small chunks is
36
+ * copied once, not once per chunk.
37
+ */
38
+ export function createEnvelopeReader() {
39
+ let pending = [];
40
+ let buffered = 0;
41
+ /** Whether the pending chunks hold at least one whole envelope. */
42
+ const complete = () => {
43
+ if (buffered < HEADER)
44
+ return false;
45
+ // The header may itself straddle chunks: gather just those five bytes.
46
+ const header = new Uint8Array(HEADER);
47
+ let filled = 0;
48
+ for (const chunk of pending) {
49
+ const part = chunk.subarray(0, HEADER - filled);
50
+ header.set(part, filled);
51
+ filled += part.byteLength;
52
+ if (filled === HEADER)
53
+ break;
54
+ }
55
+ const length = new DataView(header.buffer).getUint32(1, false);
56
+ return buffered >= HEADER + length;
57
+ };
58
+ return {
59
+ push(chunk) {
60
+ pending.push(chunk);
61
+ buffered += chunk.byteLength;
62
+ if (!complete())
63
+ return [];
64
+ const bytes = concatBytes(pending);
65
+ const out = [];
66
+ let offset = 0;
67
+ while (bytes.byteLength - offset >= HEADER) {
68
+ const view = new DataView(bytes.buffer, bytes.byteOffset + offset, HEADER);
69
+ const length = view.getUint32(1, false);
70
+ if (bytes.byteLength - offset - HEADER < length)
71
+ break;
72
+ out.push({
73
+ flags: view.getUint8(0),
74
+ data: bytes.subarray(offset + HEADER, offset + HEADER + length),
75
+ });
76
+ offset += HEADER + length;
77
+ }
78
+ const rest = bytes.subarray(offset);
79
+ pending = rest.byteLength === 0 ? [] : [rest];
80
+ buffered = rest.byteLength;
81
+ return out;
82
+ },
83
+ get buffered() {
84
+ return buffered;
85
+ },
86
+ };
87
+ }
88
+ /** Decode a complete body. `rest` holds a truncated tail, if any. */
89
+ export function decodeEnvelopes(bytes) {
90
+ const reader = createEnvelopeReader();
91
+ const envelopes = reader.push(bytes);
92
+ return { envelopes, rest: reader.buffered };
93
+ }
94
+ /**
95
+ * Parse a gRPC-web trailer block (`name: value\r\n` lines). Names are
96
+ * lower-cased; HTTP/1.1 header names are case-insensitive and gRPC-web
97
+ * servers disagree on the spelling.
98
+ */
99
+ export function parseTrailerBlock(data) {
100
+ const out = {};
101
+ for (const line of utf8(data).split(/\r?\n/)) {
102
+ const colon = line.indexOf(":");
103
+ if (colon <= 0)
104
+ continue;
105
+ out[line.slice(0, colon).trim().toLowerCase()] = line
106
+ .slice(colon + 1)
107
+ .trim();
108
+ }
109
+ return out;
110
+ }
111
+ //# sourceMappingURL=envelope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"envelope.js","sourceRoot":"","sources":["../../../../src/shared/lib/envelope/envelope.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export type { Envelope, EnvelopeReader } from "./envelope.js";
2
+ export { createEnvelopeReader, decodeEnvelopes, EnvelopeFlag, encodeEnvelope, encodeEnvelopes, parseTrailerBlock, } from "./envelope.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/shared/lib/envelope/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EACN,oBAAoB,EACpB,eAAe,EACf,YAAY,EACZ,cAAc,EACd,eAAe,EACf,iBAAiB,GACjB,MAAM,eAAe,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { createEnvelopeReader, decodeEnvelopes, EnvelopeFlag, encodeEnvelope, encodeEnvelopes, parseTrailerBlock, } from "./envelope.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/shared/lib/envelope/index.ts"],"names":[],"mappings":"AACA,OAAO,EACN,oBAAoB,EACpB,eAAe,EACf,YAAY,EACZ,cAAc,EACd,eAAe,EACf,iBAAiB,GACjB,MAAM,eAAe,CAAC"}
@@ -0,0 +1,3 @@
1
+ export type { WirestageErrorCode, WirestageErrorOptions, } from "./wirestage-error.js";
2
+ export { isWirestageError, WirestageError } from "./wirestage-error.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/shared/lib/errors/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACX,kBAAkB,EAClB,qBAAqB,GACrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { isWirestageError, WirestageError } from "./wirestage-error.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/shared/lib/errors/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Every failure the library raises on purpose carries a code, so a test can
3
+ * assert on the kind of failure instead of on message text that will change.
4
+ */
5
+ export type WirestageErrorCode =
6
+ /** A caller passed something the API cannot work with. */
7
+ "INVALID_ARGUMENT"
8
+ /** The call is valid but not now: before attach, after dispose, twice. */
9
+ | "INVALID_STATE"
10
+ /** A wait ran out of time. The message lists what did arrive. */
11
+ | "TIMEOUT"
12
+ /** The environment cannot do this, e.g. a live stream on an https page without TLS. */
13
+ | "UNSUPPORTED"
14
+ /** The stream, connection or stage this call needs has already closed. */
15
+ | "CLOSED";
16
+ export interface WirestageErrorOptions {
17
+ readonly cause?: unknown;
18
+ readonly details?: Readonly<Record<string, unknown>>;
19
+ }
20
+ export declare class WirestageError extends Error {
21
+ readonly name = "WirestageError";
22
+ readonly code: WirestageErrorCode;
23
+ readonly details: Readonly<Record<string, unknown>>;
24
+ constructor(code: WirestageErrorCode, message: string, options?: WirestageErrorOptions);
25
+ }
26
+ /** True when `value` is a WirestageError, optionally of one code. */
27
+ export declare function isWirestageError(value: unknown, code?: WirestageErrorCode): value is WirestageError;
28
+ //# sourceMappingURL=wirestage-error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wirestage-error.d.ts","sourceRoot":"","sources":["../../../../src/shared/lib/errors/wirestage-error.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,MAAM,kBAAkB;AAC7B,0DAA0D;AACxD,kBAAkB;AACpB,0EAA0E;GACxE,eAAe;AACjB,iEAAiE;GAC/D,SAAS;AACX,uFAAuF;GACrF,aAAa;AACf,0EAA0E;GACxE,QAAQ,CAAC;AAEZ,MAAM,WAAW,qBAAqB;IACrC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACrD;AAED,qBAAa,cAAe,SAAQ,KAAK;IACxC,SAAkB,IAAI,oBAAoB;IAC1C,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;gBAGnD,IAAI,EAAE,kBAAkB,EACxB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,qBAA0B;CASpC;AAED,qEAAqE;AACrE,wBAAgB,gBAAgB,CAC/B,KAAK,EAAE,OAAO,EACd,IAAI,CAAC,EAAE,kBAAkB,GACvB,KAAK,IAAI,cAAc,CAKzB"}
@@ -0,0 +1,16 @@
1
+ export class WirestageError extends Error {
2
+ name = "WirestageError";
3
+ code;
4
+ details;
5
+ constructor(code, message, options = {}) {
6
+ super(message, options.cause === undefined ? undefined : { cause: options.cause });
7
+ this.code = code;
8
+ this.details = options.details ?? {};
9
+ }
10
+ }
11
+ /** True when `value` is a WirestageError, optionally of one code. */
12
+ export function isWirestageError(value, code) {
13
+ return (value instanceof WirestageError &&
14
+ (code === undefined || value.code === code));
15
+ }
16
+ //# sourceMappingURL=wirestage-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wirestage-error.js","sourceRoot":"","sources":["../../../../src/shared/lib/errors/wirestage-error.ts"],"names":[],"mappings":"AAqBA,MAAM,OAAO,cAAe,SAAQ,KAAK;IACtB,IAAI,GAAG,gBAAgB,CAAC;IACjC,IAAI,CAAqB;IACzB,OAAO,CAAoC;IAEpD,YACC,IAAwB,EACxB,OAAe,EACf,UAAiC,EAAE;QAEnC,KAAK,CACJ,OAAO,EACP,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAClE,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;IACtC,CAAC;CACD;AAED,qEAAqE;AACrE,MAAM,UAAU,gBAAgB,CAC/B,KAAc,EACd,IAAyB;IAEzB,OAAO,CACN,KAAK,YAAY,cAAc;QAC/B,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAC3C,CAAC;AACH,CAAC"}
@@ -0,0 +1,10 @@
1
+ /** `prefix1`, `prefix2`, ... — short ids that read well in a frame dump. */
2
+ export declare function createSequence(prefix: string): () => string;
3
+ /**
4
+ * A stable id per object, without holding the object alive: a closed page
5
+ * must be collectable even though its frames still name it.
6
+ */
7
+ export declare function createObjectIds<T extends object>(prefix: string): (value: T) => string;
8
+ /** An unguessable token, for URLs a page could otherwise stumble onto. */
9
+ export declare function randomToken(): string;
10
+ //# sourceMappingURL=id.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"id.d.ts","sourceRoot":"","sources":["../../../../src/shared/lib/id/id.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,MAAM,CAG3D;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,MAAM,EAC/C,MAAM,EAAE,MAAM,GACZ,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,CAWtB;AAED,0EAA0E;AAC1E,wBAAgB,WAAW,IAAI,MAAM,CAEpC"}
@@ -0,0 +1,26 @@
1
+ /** `prefix1`, `prefix2`, ... — short ids that read well in a frame dump. */
2
+ export function createSequence(prefix) {
3
+ let next = 0;
4
+ return () => `${prefix}${++next}`;
5
+ }
6
+ /**
7
+ * A stable id per object, without holding the object alive: a closed page
8
+ * must be collectable even though its frames still name it.
9
+ */
10
+ export function createObjectIds(prefix) {
11
+ const ids = new WeakMap();
12
+ const nextId = createSequence(prefix);
13
+ return (value) => {
14
+ let id = ids.get(value);
15
+ if (id === undefined) {
16
+ id = nextId();
17
+ ids.set(value, id);
18
+ }
19
+ return id;
20
+ };
21
+ }
22
+ /** An unguessable token, for URLs a page could otherwise stumble onto. */
23
+ export function randomToken() {
24
+ return crypto.randomUUID().replaceAll("-", "");
25
+ }
26
+ //# sourceMappingURL=id.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"id.js","sourceRoot":"","sources":["../../../../src/shared/lib/id/id.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,MAAM,UAAU,cAAc,CAAC,MAAc;IAC5C,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,OAAO,GAAG,EAAE,CAAC,GAAG,MAAM,GAAG,EAAE,IAAI,EAAE,CAAC;AACnC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAC9B,MAAc;IAEd,MAAM,GAAG,GAAG,IAAI,OAAO,EAAa,CAAC;IACrC,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACtC,OAAO,CAAC,KAAK,EAAE,EAAE;QAChB,IAAI,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACxB,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;YACtB,EAAE,GAAG,MAAM,EAAE,CAAC;YACd,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACpB,CAAC;QACD,OAAO,EAAE,CAAC;IACX,CAAC,CAAC;AACH,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,WAAW;IAC1B,OAAO,MAAM,CAAC,UAAU,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AAChD,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { createObjectIds, createSequence, randomToken } from "./id.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/shared/lib/id/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { createObjectIds, createSequence, randomToken } from "./id.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/shared/lib/id/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC"}
@@ -0,0 +1,3 @@
1
+ export type { LogFields, LogScope, LogThreshold, ScopedLogger, } from "./logger.js";
2
+ export { createScopedLogger, getLogThreshold, parseLogThreshold, setLogThreshold, } from "./logger.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/shared/lib/logger/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACX,SAAS,EACT,QAAQ,EACR,YAAY,EACZ,YAAY,GACZ,MAAM,aAAa,CAAC;AACrB,OAAO,EACN,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,eAAe,GACf,MAAM,aAAa,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { createScopedLogger, getLogThreshold, parseLogThreshold, setLogThreshold, } from "./logger.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/shared/lib/logger/index.ts"],"names":[],"mappings":"AAMA,OAAO,EACN,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,eAAe,GACf,MAAM,aAAa,CAAC"}
@@ -0,0 +1,46 @@
1
+ import { type LogLevel } from "@heojeongbo/log-palette";
2
+ /**
3
+ * The library's logging surface, and the only module that imports log-palette.
4
+ *
5
+ * The loggers are the library's own. log-palette also keeps a process-wide
6
+ * registry (`getLogger`, `setGlobalLevel`, `disableAll`, `configure`) that an
7
+ * app or a test suite using the same package shares; going through it would
8
+ * let importing this library change the level of loggers that are not its
9
+ * own, so nothing here touches it.
10
+ *
11
+ * Output goes to the test runner's stdout. Node ignores the `%c` styling
12
+ * log-palette emits, so the badge reads as plain `[...Stage]` text there.
13
+ */
14
+ /**
15
+ * The stage's own subsystems, plus whatever scope a plugin brings. The
16
+ * built-in names are spelled out so `"Http"` and `"HTTP"` cannot become two
17
+ * badges for one subsystem; eight characters fit the badge column, and a
18
+ * longer scope is cut to fit.
19
+ */
20
+ export type LogScope = "Stage" | "Http" | "Socket" | "Stream" | "Page" | "Connect" | "Rest" | "Sse" | "Ws" | "Rtc" | "Fixture" | "Plugin" | (string & {});
21
+ /** A level, or `silent` for no output at all. */
22
+ export type LogThreshold = LogLevel | "silent";
23
+ export type LogFields = Readonly<Record<string, unknown>>;
24
+ export interface ScopedLogger {
25
+ debug(message: string, fields?: LogFields, error?: unknown): void;
26
+ info(message: string, fields?: LogFields, error?: unknown): void;
27
+ warn(message: string, fields?: LogFields, error?: unknown): void;
28
+ error(message: string, fields?: LogFields, error?: unknown): void;
29
+ /**
30
+ * Log without paying for `build` when the level would drop the line.
31
+ * log-palette checks the level inside its emit, so arguments are built
32
+ * even for a dropped `debug` — a frame dump on every request adds up.
33
+ */
34
+ lazy(level: LogLevel, message: string, build: () => LogFields): void;
35
+ }
36
+ /**
37
+ * The default is `warn`: a test suite's output is for the test results, and
38
+ * the library only speaks up when something is wrong. `WIRESTAGE_LOG=debug`
39
+ * (read by the Playwright fixture) turns the rest on.
40
+ */
41
+ export declare function setLogThreshold(next: LogThreshold): void;
42
+ export declare function getLogThreshold(): LogThreshold;
43
+ /** Parse an environment value. Unknown values return `undefined`, never throw. */
44
+ export declare function parseLogThreshold(value: string | undefined): LogThreshold | undefined;
45
+ export declare function createScopedLogger(scope: LogScope): ScopedLogger;
46
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../../src/shared/lib/logger/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAEtE;;;;;;;;;;;GAWG;AAEH;;;;;GAKG;AACH,MAAM,MAAM,QAAQ,GACjB,OAAO,GACP,MAAM,GACN,QAAQ,GACR,QAAQ,GACR,MAAM,GACN,SAAS,GACT,MAAM,GACN,KAAK,GACL,IAAI,GACJ,KAAK,GACL,SAAS,GACT,QAAQ,GACR,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAEjB,iDAAiD;AACjD,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE/C,MAAM,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAE1D,MAAM,WAAW,YAAY;IAC5B,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAClE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACjE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACjE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAClE;;;;OAIG;IACH,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,SAAS,GAAG,IAAI,CAAC;CACrE;AAsBD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAGxD;AAED,wBAAgB,eAAe,IAAI,YAAY,CAE9C;AAED,kFAAkF;AAClF,wBAAgB,iBAAiB,CAChC,KAAK,EAAE,MAAM,GAAG,SAAS,GACvB,YAAY,GAAG,SAAS,CAK1B;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,QAAQ,GAAG,YAAY,CA2BhE"}
@@ -0,0 +1,67 @@
1
+ import { createLogger } from "@heojeongbo/log-palette";
2
+ const RANK = {
3
+ debug: 0,
4
+ log: 1,
5
+ info: 2,
6
+ warn: 3,
7
+ error: 4,
8
+ silent: 5,
9
+ };
10
+ /** One logger per scope, so a scope's badge colour is stable. */
11
+ const loggers = new Map();
12
+ let threshold = "warn";
13
+ function apply(logger) {
14
+ logger.setEnabled(threshold !== "silent");
15
+ if (threshold !== "silent")
16
+ logger.setLevel(threshold);
17
+ }
18
+ /**
19
+ * The default is `warn`: a test suite's output is for the test results, and
20
+ * the library only speaks up when something is wrong. `WIRESTAGE_LOG=debug`
21
+ * (read by the Playwright fixture) turns the rest on.
22
+ */
23
+ export function setLogThreshold(next) {
24
+ threshold = next;
25
+ for (const logger of loggers.values())
26
+ apply(logger);
27
+ }
28
+ export function getLogThreshold() {
29
+ return threshold;
30
+ }
31
+ /** Parse an environment value. Unknown values return `undefined`, never throw. */
32
+ export function parseLogThreshold(value) {
33
+ const normalized = value?.trim().toLowerCase();
34
+ return normalized !== undefined && normalized in RANK
35
+ ? normalized
36
+ : undefined;
37
+ }
38
+ export function createScopedLogger(scope) {
39
+ let base = loggers.get(scope);
40
+ if (base === undefined) {
41
+ base = createLogger(scope);
42
+ apply(base);
43
+ loggers.set(scope, base);
44
+ }
45
+ const palette = base;
46
+ const emit = (level) => (message, fields, error) => {
47
+ const args = [message];
48
+ if (fields !== undefined)
49
+ args.push(fields);
50
+ // The error goes last and raw, so the stack survives.
51
+ if (error !== undefined)
52
+ args.push(error);
53
+ palette[level](...args);
54
+ };
55
+ return {
56
+ debug: emit("debug"),
57
+ info: emit("info"),
58
+ warn: emit("warn"),
59
+ error: emit("error"),
60
+ lazy(level, message, build) {
61
+ if (RANK[level] < RANK[threshold])
62
+ return;
63
+ palette[level](message, build());
64
+ },
65
+ };
66
+ }
67
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../../src/shared/lib/logger/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAiB,MAAM,yBAAyB,CAAC;AAsDtE,MAAM,IAAI,GAAiC;IAC1C,KAAK,EAAE,CAAC;IACR,GAAG,EAAE,CAAC;IACN,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,CAAC;IACR,MAAM,EAAE,CAAC;CACT,CAAC;AAIF,iEAAiE;AACjE,MAAM,OAAO,GAAG,IAAI,GAAG,EAAmB,CAAC;AAC3C,IAAI,SAAS,GAAiB,MAAM,CAAC;AAErC,SAAS,KAAK,CAAC,MAAe;IAC7B,MAAM,CAAC,UAAU,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC;IAC1C,IAAI,SAAS,KAAK,QAAQ;QAAE,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AACxD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,IAAkB;IACjD,SAAS,GAAG,IAAI,CAAC;IACjB,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,MAAM,EAAE;QAAE,KAAK,CAAC,MAAM,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,eAAe;IAC9B,OAAO,SAAS,CAAC;AAClB,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,iBAAiB,CAChC,KAAyB;IAEzB,MAAM,UAAU,GAAG,KAAK,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC/C,OAAO,UAAU,KAAK,SAAS,IAAI,UAAU,IAAI,IAAI;QACpD,CAAC,CAAE,UAA2B;QAC9B,CAAC,CAAC,SAAS,CAAC;AACd,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAe;IACjD,IAAI,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC9B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACxB,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC1B,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC;IACrB,MAAM,IAAI,GACT,CAAC,KAAe,EAAE,EAAE,CACpB,CAAC,OAAe,EAAE,MAAkB,EAAE,KAAe,EAAQ,EAAE;QAC9D,MAAM,IAAI,GAAc,CAAC,OAAO,CAAC,CAAC;QAClC,IAAI,MAAM,KAAK,SAAS;YAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5C,sDAAsD;QACtD,IAAI,KAAK,KAAK,SAAS;YAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1C,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACzB,CAAC,CAAC;IACH,OAAO;QACN,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC;QACpB,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;QAClB,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;QAClB,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC;QACpB,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK;YACzB,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;gBAAE,OAAO;YAC1C,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAClC,CAAC;KACD,CAAC;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ export type { GlobSource, UrlMatcher } from "./url-matcher.js";
2
+ export { compileUrlMatcher, globSource, globToRegExp, } from "./url-matcher.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/shared/lib/match/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EACN,iBAAiB,EACjB,UAAU,EACV,YAAY,GACZ,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { compileUrlMatcher, globSource, globToRegExp, } from "./url-matcher.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/shared/lib/match/index.ts"],"names":[],"mappings":"AACA,OAAO,EACN,iBAAiB,EACjB,UAAU,EACV,YAAY,GACZ,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * What a rule matches: a glob, a RegExp over the full URL, or a predicate.
3
+ *
4
+ * Globs follow Playwright's routing semantics (`*` stops at `/`, `**` does
5
+ * not, a `**` directory may be absent, `{a,b}` alternates), with one
6
+ * addition: a glob that starts with `/` matches the PATH on any origin, and
7
+ * so ignores the query. A stub for `/api/...` means the same thing on the
8
+ * dev server, the preview build and CI, whose origins all differ.
9
+ */
10
+ export type UrlMatcher = string | RegExp | ((url: URL) => boolean);
11
+ export declare function compileUrlMatcher(matcher: UrlMatcher): (url: URL) => boolean;
12
+ /** Translate a glob into an anchored RegExp. */
13
+ export declare function globToRegExp(glob: string): RegExp;
14
+ /** A glob as RegExp source (unanchored), and the params it captures, in order. */
15
+ export interface GlobSource {
16
+ readonly source: string;
17
+ readonly params: readonly string[];
18
+ }
19
+ /**
20
+ * The RegExp source of a glob. With `params`, a `:name` (a letter or `_`,
21
+ * then word characters) matches one segment and captures it: the routes of a
22
+ * REST plugin, in the same glob language as every other pattern.
23
+ */
24
+ export declare function globSource(glob: string, options?: {
25
+ readonly params?: boolean;
26
+ }): GlobSource;
27
+ //# sourceMappingURL=url-matcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"url-matcher.d.ts","sourceRoot":"","sources":["../../../../src/shared/lib/match/url-matcher.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,CAAC;AAEnE,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,UAAU,GAAG,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAmB5E;AAKD,gDAAgD;AAChD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED,kFAAkF;AAClF,MAAM,WAAW,UAAU;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CACzB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;IAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GACzC,UAAU,CA8CZ"}
@@ -0,0 +1,88 @@
1
+ import { WirestageError } from "../errors/index.js";
2
+ export function compileUrlMatcher(matcher) {
3
+ if (typeof matcher === "function")
4
+ return matcher;
5
+ if (matcher instanceof RegExp) {
6
+ return (url) => {
7
+ // A /g or /y RegExp is stateful: without the reset every other
8
+ // request to the same URL would miss.
9
+ matcher.lastIndex = 0;
10
+ return matcher.test(url.href);
11
+ };
12
+ }
13
+ const pattern = globToRegExp(matcher);
14
+ if (!matcher.startsWith("/"))
15
+ return (url) => pattern.test(url.href);
16
+ if (matcher.includes("?"))
17
+ // It would compile, and then never match anything.
18
+ throw new WirestageError("INVALID_ARGUMENT", `"${matcher}" matches the path, which has no query: drop the "?…", or match the whole URL ("**${matcher}")`);
19
+ return (url) => pattern.test(url.pathname);
20
+ }
21
+ /** Characters with a meaning in a RegExp: escaped wherever a glob means them literally. */
22
+ const SPECIAL = /[.*+?^${}()|[\]\\/]/;
23
+ /** Translate a glob into an anchored RegExp. */
24
+ export function globToRegExp(glob) {
25
+ return new RegExp(`^${globSource(glob).source}$`);
26
+ }
27
+ /**
28
+ * The RegExp source of a glob. With `params`, a `:name` (a letter or `_`,
29
+ * then word characters) matches one segment and captures it: the routes of a
30
+ * REST plugin, in the same glob language as every other pattern.
31
+ */
32
+ export function globSource(glob, options = {}) {
33
+ const params = [];
34
+ let source = "";
35
+ let inGroup = false;
36
+ for (let i = 0; i < glob.length; i++) {
37
+ const char = glob.charAt(i);
38
+ if (char === "\\" && i + 1 < glob.length) {
39
+ source += escapeChar(glob.charAt(++i));
40
+ }
41
+ else if (char === "*") {
42
+ if (glob.charAt(i + 1) !== "*") {
43
+ source += "[^/]*";
44
+ }
45
+ else if (glob.charAt(i + 2) === "/") {
46
+ // `a/**/b` matches `a/b` too: the directories may be none.
47
+ source += "(?:.+/)?";
48
+ i += 2;
49
+ }
50
+ else {
51
+ source += ".*";
52
+ i++;
53
+ }
54
+ }
55
+ else if (char === "{") {
56
+ inGroup = true;
57
+ source += "(?:";
58
+ }
59
+ else if (char === "}" && inGroup) {
60
+ inGroup = false;
61
+ source += ")";
62
+ }
63
+ else if (char === "," && inGroup) {
64
+ source += "|";
65
+ }
66
+ else if (char === ":" && options.params) {
67
+ // `:8080` in an origin is not a param: a name starts with a letter.
68
+ const name = /^[A-Za-z_]\w*/.exec(glob.slice(i + 1))?.[0];
69
+ if (name === undefined)
70
+ source += char;
71
+ else {
72
+ params.push(name);
73
+ source += "([^/]+)";
74
+ i += name.length;
75
+ }
76
+ }
77
+ else {
78
+ source += escapeChar(char);
79
+ }
80
+ }
81
+ if (inGroup)
82
+ throw new WirestageError("INVALID_ARGUMENT", `glob "${glob}" opens a "{" it never closes; write a literal brace as "\\{"`);
83
+ return { source, params };
84
+ }
85
+ function escapeChar(char) {
86
+ return SPECIAL.test(char) ? `\\${char}` : char;
87
+ }
88
+ //# sourceMappingURL=url-matcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"url-matcher.js","sourceRoot":"","sources":["../../../../src/shared/lib/match/url-matcher.ts"],"names":[],"mappings":"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"}
package/dist/sse.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ /** @heojeongbo/wirestage/sse — server-sent events. */
2
+ export * from "./features/sse/index.js";
3
+ //# sourceMappingURL=sse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sse.d.ts","sourceRoot":"","sources":["../src/sse.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,cAAc,yBAAyB,CAAC"}
package/dist/sse.js ADDED
@@ -0,0 +1,3 @@
1
+ /** @heojeongbo/wirestage/sse — server-sent events. */
2
+ export * from "./features/sse/index.js";
3
+ //# sourceMappingURL=sse.js.map