@heojeongbo/wirestage 0.0.0-stage → 0.1.1

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 +135 -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 +107 -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 +46 -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 +121 -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 +68 -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 +120 -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 +133 -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 +126 -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 +45 -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 +167 -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 +250 -0
  363. package/dist/widgets/stage/lib/create-stage.js.map +1 -0
  364. package/dist/widgets/stage/lib/http-router.d.ts +44 -0
  365. package/dist/widgets/stage/lib/http-router.d.ts.map +1 -0
  366. package/dist/widgets/stage/lib/http-router.js +696 -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 +23 -0
  381. package/dist/widgets/stage/lib/response-stream.d.ts.map +1 -0
  382. package/dist/widgets/stage/lib/response-stream.js +108 -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 +233 -0
  387. package/dist/widgets/stage/lib/socket-router.js.map +1 -0
  388. package/dist/widgets/stage/model/stage.d.ts +88 -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 +156 -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 +113 -0
  411. package/src/entities/plugin/model/stream.ts +46 -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 +129 -0
  434. package/src/features/sse/lib/encode.ts +28 -0
  435. package/src/features/sse/model/types.ts +72 -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 +153 -0
  445. package/src/features/websocket/lib/wire.ts +78 -0
  446. package/src/features/websocket/model/types.ts +134 -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 +150 -0
  454. package/src/shared/api/stream-server/index.ts +7 -0
  455. package/src/shared/api/stream-server/stream-server.ts +254 -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 +307 -0
  483. package/src/widgets/stage/lib/http-router.ts +954 -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 +139 -0
  488. package/src/widgets/stage/lib/socket-router.ts +300 -0
  489. package/src/widgets/stage/model/stage.ts +110 -0
@@ -0,0 +1,80 @@
1
+ import { WirestageError } from "../errors/index.js";
2
+ import { createDeferred } from "./deferred.js";
3
+ /**
4
+ * A single-consumer queue that a test pushes into and a stream implementation
5
+ * iterates. Values pushed before the consumer starts are kept, so a test may
6
+ * queue the first messages before the page has even opened the stream.
7
+ */
8
+ export function createAsyncQueue() {
9
+ const entries = [];
10
+ let waiter;
11
+ let closed = false;
12
+ let failure;
13
+ const wake = () => {
14
+ const w = waiter;
15
+ waiter = undefined;
16
+ w?.();
17
+ };
18
+ const lost = () => new WirestageError("CLOSED", "the queue closed before the value got through");
19
+ return {
20
+ push(value) {
21
+ const done = createDeferred();
22
+ if (closed)
23
+ done.reject(lost());
24
+ else {
25
+ entries.push({ value, done });
26
+ wake();
27
+ }
28
+ return done.promise;
29
+ },
30
+ close() {
31
+ closed = true;
32
+ wake();
33
+ },
34
+ fail(reason) {
35
+ if (!closed)
36
+ failure = { reason };
37
+ closed = true;
38
+ wake();
39
+ },
40
+ get closed() {
41
+ return closed;
42
+ },
43
+ get size() {
44
+ return entries.length;
45
+ },
46
+ async *[Symbol.asyncIterator]() {
47
+ /** The value handed out last: through once the consumer is back. */
48
+ let out;
49
+ try {
50
+ for (;;) {
51
+ out?.resolve();
52
+ out = undefined;
53
+ const entry = entries.shift();
54
+ if (entry !== undefined) {
55
+ out = entry.done;
56
+ yield entry.value;
57
+ continue;
58
+ }
59
+ if (closed) {
60
+ if (failure)
61
+ throw failure.reason;
62
+ return;
63
+ }
64
+ await new Promise((resolve) => {
65
+ waiter = resolve;
66
+ });
67
+ }
68
+ }
69
+ finally {
70
+ // The consumer stopped early: what it held, and what it never
71
+ // reached, did not get through.
72
+ closed = true;
73
+ out?.reject(lost());
74
+ for (const entry of entries.splice(0))
75
+ entry.done.reject(lost());
76
+ }
77
+ },
78
+ };
79
+ }
80
+ //# sourceMappingURL=async-queue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async-queue.js","sourceRoot":"","sources":["../../../../src/shared/lib/async/async-queue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAiB,MAAM,eAAe,CAAC;AAwB9D;;;;GAIG;AACH,MAAM,UAAU,gBAAgB;IAC/B,MAAM,OAAO,GAAe,EAAE,CAAC;IAC/B,IAAI,MAAgC,CAAC;IACrC,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,OAAiD,CAAC;IACtD,MAAM,IAAI,GAAG,GAAG,EAAE;QACjB,MAAM,CAAC,GAAG,MAAM,CAAC;QACjB,MAAM,GAAG,SAAS,CAAC;QACnB,CAAC,EAAE,EAAE,CAAC;IACP,CAAC,CAAC;IACF,MAAM,IAAI,GAAG,GAAG,EAAE,CACjB,IAAI,cAAc,CACjB,QAAQ,EACR,+CAA+C,CAC/C,CAAC;IACH,OAAO;QACN,IAAI,CAAC,KAAK;YACT,MAAM,IAAI,GAAG,cAAc,EAAQ,CAAC;YACpC,IAAI,MAAM;gBAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;iBAC3B,CAAC;gBACL,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC9B,IAAI,EAAE,CAAC;YACR,CAAC;YACD,OAAO,IAAI,CAAC,OAAO,CAAC;QACrB,CAAC;QACD,KAAK;YACJ,MAAM,GAAG,IAAI,CAAC;YACd,IAAI,EAAE,CAAC;QACR,CAAC;QACD,IAAI,CAAC,MAAM;YACV,IAAI,CAAC,MAAM;gBAAE,OAAO,GAAG,EAAE,MAAM,EAAE,CAAC;YAClC,MAAM,GAAG,IAAI,CAAC;YACd,IAAI,EAAE,CAAC;QACR,CAAC;QACD,IAAI,MAAM;YACT,OAAO,MAAM,CAAC;QACf,CAAC;QACD,IAAI,IAAI;YACP,OAAO,OAAO,CAAC,MAAM,CAAC;QACvB,CAAC;QACD,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC;YAC5B,oEAAoE;YACpE,IAAI,GAA+B,CAAC;YACpC,IAAI,CAAC;gBACJ,SAAS,CAAC;oBACT,GAAG,EAAE,OAAO,EAAE,CAAC;oBACf,GAAG,GAAG,SAAS,CAAC;oBAChB,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;oBAC9B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;wBACzB,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC;wBACjB,MAAM,KAAK,CAAC,KAAK,CAAC;wBAClB,SAAS;oBACV,CAAC;oBACD,IAAI,MAAM,EAAE,CAAC;wBACZ,IAAI,OAAO;4BAAE,MAAM,OAAO,CAAC,MAAM,CAAC;wBAClC,OAAO;oBACR,CAAC;oBACD,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;wBACnC,MAAM,GAAG,OAAO,CAAC;oBAClB,CAAC,CAAC,CAAC;gBACJ,CAAC;YACF,CAAC;oBAAS,CAAC;gBACV,8DAA8D;gBAC9D,gCAAgC;gBAChC,MAAM,GAAG,IAAI,CAAC;gBACd,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;gBACpB,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;oBAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YAClE,CAAC;QACF,CAAC;KACD,CAAC;AACH,CAAC"}
@@ -0,0 +1,12 @@
1
+ export interface Deferred<T> {
2
+ readonly promise: Promise<T>;
3
+ resolve(value: T): void;
4
+ reject(reason: unknown): void;
5
+ readonly settled: boolean;
6
+ }
7
+ /**
8
+ * A promise with its resolvers. Settling twice is a no-op, so racing paths
9
+ * (a client disconnect and an explicit end) can both try without a guard.
10
+ */
11
+ export declare function createDeferred<T>(): Deferred<T>;
12
+ //# sourceMappingURL=deferred.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deferred.d.ts","sourceRoot":"","sources":["../../../../src/shared/lib/async/deferred.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ,CAAC,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAC7B,OAAO,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IACxB,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC1B;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CA0B/C"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * A promise with its resolvers. Settling twice is a no-op, so racing paths
3
+ * (a client disconnect and an explicit end) can both try without a guard.
4
+ */
5
+ export function createDeferred() {
6
+ let settled = false;
7
+ let resolveFn;
8
+ let rejectFn;
9
+ const promise = new Promise((resolve, reject) => {
10
+ resolveFn = resolve;
11
+ rejectFn = reject;
12
+ });
13
+ // A deferred nobody awaits must not surface as an unhandled rejection.
14
+ promise.catch(() => { });
15
+ return {
16
+ promise,
17
+ resolve(value) {
18
+ if (settled)
19
+ return;
20
+ settled = true;
21
+ resolveFn(value);
22
+ },
23
+ reject(reason) {
24
+ if (settled)
25
+ return;
26
+ settled = true;
27
+ rejectFn(reason);
28
+ },
29
+ get settled() {
30
+ return settled;
31
+ },
32
+ };
33
+ }
34
+ //# sourceMappingURL=deferred.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deferred.js","sourceRoot":"","sources":["../../../../src/shared/lib/async/deferred.ts"],"names":[],"mappings":"AAOA;;;GAGG;AACH,MAAM,UAAU,cAAc;IAC7B,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,SAA8B,CAAC;IACnC,IAAI,QAAoC,CAAC;IACzC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAClD,SAAS,GAAG,OAAO,CAAC;QACpB,QAAQ,GAAG,MAAM,CAAC;IACnB,CAAC,CAAC,CAAC;IACH,uEAAuE;IACvE,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACxB,OAAO;QACN,OAAO;QACP,OAAO,CAAC,KAAK;YACZ,IAAI,OAAO;gBAAE,OAAO;YACpB,OAAO,GAAG,IAAI,CAAC;YACf,SAAS,CAAC,KAAK,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,CAAC,MAAM;YACZ,IAAI,OAAO;gBAAE,OAAO;YACpB,OAAO,GAAG,IAAI,CAAC;YACf,QAAQ,CAAC,MAAM,CAAC,CAAC;QAClB,CAAC;QACD,IAAI,OAAO;YACV,OAAO,OAAO,CAAC;QAChB,CAAC;KACD,CAAC;AACH,CAAC"}
@@ -0,0 +1,8 @@
1
+ export type { Arrivals, ArrivalsOptions, ArrivalWaitOptions, } from "./arrivals.js";
2
+ export { createArrivals } from "./arrivals.js";
3
+ export type { AsyncQueue } from "./async-queue.js";
4
+ export { createAsyncQueue } from "./async-queue.js";
5
+ export type { Deferred } from "./deferred.js";
6
+ export { createDeferred } from "./deferred.js";
7
+ export { runAll } from "./run-all.js";
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/shared/lib/async/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACX,QAAQ,EACR,eAAe,EACf,kBAAkB,GAClB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,YAAY,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { createArrivals } from "./arrivals.js";
2
+ export { createAsyncQueue } from "./async-queue.js";
3
+ export { createDeferred } from "./deferred.js";
4
+ export { runAll } from "./run-all.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/shared/lib/async/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Run every step in order even when one fails, then throw what failed: the
3
+ * one error, or an `AggregateError` of several. For teardown, where stopping
4
+ * at the first failure leaves everything after it — a server, a route —
5
+ * behind.
6
+ */
7
+ export declare function runAll(steps: readonly (() => unknown)[]): Promise<void>;
8
+ //# sourceMappingURL=run-all.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-all.d.ts","sourceRoot":"","sources":["../../../../src/shared/lib/async/run-all.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAsB,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,OAAO,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAY7E"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Run every step in order even when one fails, then throw what failed: the
3
+ * one error, or an `AggregateError` of several. For teardown, where stopping
4
+ * at the first failure leaves everything after it — a server, a route —
5
+ * behind.
6
+ */
7
+ export async function runAll(steps) {
8
+ const failures = [];
9
+ for (const step of steps) {
10
+ try {
11
+ await step();
12
+ }
13
+ catch (error) {
14
+ failures.push(error);
15
+ }
16
+ }
17
+ if (failures.length === 1)
18
+ throw failures[0];
19
+ if (failures.length > 1)
20
+ throw new AggregateError(failures, "several teardown steps failed");
21
+ }
22
+ //# sourceMappingURL=run-all.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-all.js","sourceRoot":"","sources":["../../../../src/shared/lib/async/run-all.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,KAAiC;IAC7D,MAAM,QAAQ,GAAc,EAAE,CAAC;IAC/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC;YACJ,MAAM,IAAI,EAAE,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACF,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC7C,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QACtB,MAAM,IAAI,cAAc,CAAC,QAAQ,EAAE,+BAA+B,CAAC,CAAC;AACtE,CAAC"}
@@ -0,0 +1,18 @@
1
+ /** Anything the wire can carry: binary views or text (encoded as UTF-8). */
2
+ export type BytesLike = Uint8Array | ArrayBuffer | ArrayBufferView | string;
3
+ /**
4
+ * View `value` as bytes without copying when it already is binary.
5
+ *
6
+ * A `Buffer` is a `Uint8Array`, so Playwright's buffers pass straight through;
7
+ * copying every recorded payload would double the memory a long test holds.
8
+ */
9
+ export declare function toBytes(value: BytesLike): Uint8Array;
10
+ /** Decode UTF-8. Invalid sequences become U+FFFD instead of throwing. */
11
+ export declare function utf8(bytes: Uint8Array): string;
12
+ /** Join chunks into one array. One chunk is returned as is. */
13
+ export declare function concatBytes(chunks: readonly Uint8Array[]): Uint8Array;
14
+ export declare function toBase64(bytes: Uint8Array): string;
15
+ export declare function fromBase64(text: string): Uint8Array;
16
+ /** A Node Buffer over the same memory, for APIs that insist on Buffer. */
17
+ export declare function toBuffer(bytes: Uint8Array): Buffer;
18
+ //# sourceMappingURL=bytes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bytes.d.ts","sourceRoot":"","sources":["../../../../src/shared/lib/bytes/bytes.ts"],"names":[],"mappings":"AAGA,4EAA4E;AAC5E,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,WAAW,GAAG,eAAe,GAAG,MAAM,CAAC;AAE5E;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,SAAS,GAAG,UAAU,CAKpD;AAED,yEAAyE;AACzE,wBAAgB,IAAI,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAE9C;AAED,+DAA+D;AAC/D,wBAAgB,WAAW,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,GAAG,UAAU,CAWrE;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAIlD;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAGnD;AAED,0EAA0E;AAC1E,wBAAgB,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAElD"}
@@ -0,0 +1,48 @@
1
+ const encoder = new TextEncoder();
2
+ const decoder = new TextDecoder();
3
+ /**
4
+ * View `value` as bytes without copying when it already is binary.
5
+ *
6
+ * A `Buffer` is a `Uint8Array`, so Playwright's buffers pass straight through;
7
+ * copying every recorded payload would double the memory a long test holds.
8
+ */
9
+ export function toBytes(value) {
10
+ if (typeof value === "string")
11
+ return encoder.encode(value);
12
+ if (value instanceof Uint8Array)
13
+ return value;
14
+ if (value instanceof ArrayBuffer)
15
+ return new Uint8Array(value);
16
+ return new Uint8Array(value.buffer, value.byteOffset, value.byteLength);
17
+ }
18
+ /** Decode UTF-8. Invalid sequences become U+FFFD instead of throwing. */
19
+ export function utf8(bytes) {
20
+ return decoder.decode(bytes);
21
+ }
22
+ /** Join chunks into one array. One chunk is returned as is. */
23
+ export function concatBytes(chunks) {
24
+ if (chunks.length === 1)
25
+ return chunks[0];
26
+ let length = 0;
27
+ for (const chunk of chunks)
28
+ length += chunk.byteLength;
29
+ const out = new Uint8Array(length);
30
+ let offset = 0;
31
+ for (const chunk of chunks) {
32
+ out.set(chunk, offset);
33
+ offset += chunk.byteLength;
34
+ }
35
+ return out;
36
+ }
37
+ export function toBase64(bytes) {
38
+ return Buffer.from(bytes.buffer, bytes.byteOffset, bytes.byteLength).toString("base64");
39
+ }
40
+ export function fromBase64(text) {
41
+ const buffer = Buffer.from(text, "base64");
42
+ return new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength);
43
+ }
44
+ /** A Node Buffer over the same memory, for APIs that insist on Buffer. */
45
+ export function toBuffer(bytes) {
46
+ return Buffer.from(bytes.buffer, bytes.byteOffset, bytes.byteLength);
47
+ }
48
+ //# sourceMappingURL=bytes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bytes.js","sourceRoot":"","sources":["../../../../src/shared/lib/bytes/bytes.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;AAClC,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;AAKlC;;;;;GAKG;AACH,MAAM,UAAU,OAAO,CAAC,KAAgB;IACvC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5D,IAAI,KAAK,YAAY,UAAU;QAAE,OAAO,KAAK,CAAC;IAC9C,IAAI,KAAK,YAAY,WAAW;QAAE,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;IAC/D,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;AACzE,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,IAAI,CAAC,KAAiB;IACrC,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,WAAW,CAAC,MAA6B;IACxD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC,CAAC,CAAe,CAAC;IACxD,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,KAAK,IAAI,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC;IACvD,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;IACnC,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC5B,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC;IAC5B,CAAC;IACD,OAAO,GAAG,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,KAAiB;IACzC,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,QAAQ,CAC5E,QAAQ,CACR,CAAC;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAY;IACtC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC3C,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;AAC5E,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,QAAQ,CAAC,KAAiB;IACzC,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;AACtE,CAAC"}
@@ -0,0 +1,3 @@
1
+ export type { BytesLike } from "./bytes.js";
2
+ export { concatBytes, fromBase64, toBase64, toBuffer, toBytes, utf8, } from "./bytes.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/shared/lib/bytes/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EACN,WAAW,EACX,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,IAAI,GACJ,MAAM,YAAY,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { concatBytes, fromBase64, toBase64, toBuffer, toBytes, utf8, } from "./bytes.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/shared/lib/bytes/index.ts"],"names":[],"mappings":"AACA,OAAO,EACN,WAAW,EACX,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,IAAI,GACJ,MAAM,YAAY,CAAC"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Time, as a port. Waits, timeouts and frame timestamps all go through it, so a
3
+ * unit test can drive a 5-second timeout in microseconds with a manual clock
4
+ * instead of sleeping.
5
+ */
6
+ export interface Clock {
7
+ /** Milliseconds since the Unix epoch, with sub-millisecond precision. */
8
+ now(): number;
9
+ /** Resolve after `ms`, or reject with the signal's reason if it aborts first. */
10
+ sleep(ms: number, signal?: AbortSignal): Promise<void>;
11
+ }
12
+ /**
13
+ * Wall-clock time built from `performance`, not `Date.now()`: it has
14
+ * sub-millisecond resolution, and a page's `performance.timeOrigin + now()` is on
15
+ * the same scale, so page frames and Node frames sort together.
16
+ */
17
+ export declare function createSystemClock(): Clock;
18
+ export interface ManualClock extends Clock {
19
+ /**
20
+ * Move time forward, resolving every sleep that falls due, earliest first.
21
+ * Awaiting it lets the continuations of those sleeps run before it returns.
22
+ */
23
+ advance(ms: number): Promise<void>;
24
+ /** Sleeps that have not fallen due yet. */
25
+ readonly pending: number;
26
+ }
27
+ /** A clock that only moves when told to. For tests of timing behavior. */
28
+ export declare function createManualClock(start?: number): ManualClock;
29
+ //# sourceMappingURL=clock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clock.d.ts","sourceRoot":"","sources":["../../../../src/shared/lib/clock/clock.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,WAAW,KAAK;IACrB,yEAAyE;IACzE,GAAG,IAAI,MAAM,CAAC;IACd,iFAAiF;IACjF,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACvD;AAKD;;;;GAIG;AACH,wBAAgB,iBAAiB,IAAI,KAAK,CAyBzC;AAED,MAAM,WAAW,WAAY,SAAQ,KAAK;IACzC;;;OAGG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,2CAA2C;IAC3C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CACzB;AAOD,0EAA0E;AAC1E,wBAAgB,iBAAiB,CAAC,KAAK,SAAI,GAAG,WAAW,CAkDxD"}
@@ -0,0 +1,85 @@
1
+ /** The longest delay a Node timer takes: 2^31 - 1 ms, about 24.8 days. */
2
+ const MAX_TIMER_MS = 2_147_483_647;
3
+ /**
4
+ * Wall-clock time built from `performance`, not `Date.now()`: it has
5
+ * sub-millisecond resolution, and a page's `performance.timeOrigin + now()` is on
6
+ * the same scale, so page frames and Node frames sort together.
7
+ */
8
+ export function createSystemClock() {
9
+ return {
10
+ now: () => performance.timeOrigin + performance.now(),
11
+ sleep: (ms, signal) => new Promise((resolve, reject) => {
12
+ if (signal?.aborted) {
13
+ reject(signal.reason);
14
+ return;
15
+ }
16
+ const onAbort = () => {
17
+ clearTimeout(timer);
18
+ reject(signal?.reason);
19
+ };
20
+ const timer = setTimeout(() => {
21
+ signal?.removeEventListener("abort", onAbort);
22
+ resolve();
23
+ },
24
+ // A longer delay overflows the timer to 1 ms: "wait forever"
25
+ // (`timeout: Infinity`) would time out at once.
26
+ Math.min(ms, MAX_TIMER_MS));
27
+ signal?.addEventListener("abort", onAbort, { once: true });
28
+ }),
29
+ };
30
+ }
31
+ /** A clock that only moves when told to. For tests of timing behavior. */
32
+ export function createManualClock(start = 0) {
33
+ let time = start;
34
+ let timers = [];
35
+ const settle = async () => {
36
+ // Several turns: a resolved sleep's continuation may itself await
37
+ // another promise before reaching the code under test.
38
+ for (let i = 0; i < 10; i++)
39
+ await Promise.resolve();
40
+ };
41
+ return {
42
+ now: () => time,
43
+ sleep(ms, signal) {
44
+ return new Promise((resolve, reject) => {
45
+ if (signal?.aborted) {
46
+ reject(signal.reason);
47
+ return;
48
+ }
49
+ const timer = {
50
+ due: time + ms,
51
+ resolve: () => {
52
+ signal?.removeEventListener("abort", onAbort);
53
+ resolve();
54
+ },
55
+ };
56
+ const onAbort = () => {
57
+ timers = timers.filter((t) => t !== timer);
58
+ reject(signal?.reason);
59
+ };
60
+ signal?.addEventListener("abort", onAbort, { once: true });
61
+ timers.push(timer);
62
+ });
63
+ },
64
+ async advance(ms) {
65
+ const target = time + ms;
66
+ for (;;) {
67
+ const next = timers
68
+ .filter((t) => t.due <= target)
69
+ .sort((a, b) => a.due - b.due)[0];
70
+ if (next === undefined)
71
+ break;
72
+ timers = timers.filter((t) => t !== next);
73
+ time = next.due;
74
+ next.resolve();
75
+ await settle();
76
+ }
77
+ time = target;
78
+ await settle();
79
+ },
80
+ get pending() {
81
+ return timers.length;
82
+ },
83
+ };
84
+ }
85
+ //# sourceMappingURL=clock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clock.js","sourceRoot":"","sources":["../../../../src/shared/lib/clock/clock.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export type { Clock, ManualClock } from "./clock.js";
2
+ export { createManualClock, createSystemClock } from "./clock.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/shared/lib/clock/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { createManualClock, createSystemClock } from "./clock.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/shared/lib/clock/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,3 @@
1
+ export type { CookieInit } from "./set-cookie.js";
2
+ export { parseSetCookie } from "./set-cookie.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/shared/lib/cookies/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { parseSetCookie } from "./set-cookie.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/shared/lib/cookies/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,22 @@
1
+ /** A cookie the way a browser context stores one: Playwright's `addCookies` shape. */
2
+ export interface CookieInit {
3
+ readonly name: string;
4
+ readonly value: string;
5
+ /** A leading dot covers subdomains, as Playwright spells it; none is host-only. */
6
+ readonly domain: string;
7
+ readonly path: string;
8
+ /** Seconds since the epoch; absent for a session cookie. */
9
+ readonly expires?: number;
10
+ readonly httpOnly: boolean;
11
+ readonly secure: boolean;
12
+ readonly sameSite?: "Strict" | "Lax" | "None";
13
+ }
14
+ /**
15
+ * One `Set-Cookie` line, stored the way a browser would store it for a response
16
+ * from `url` (RFC 6265 §5.2-5.3): `Domain` covers subdomains and no `Domain`
17
+ * is host-only, no `Path` is the request path's directory, and `Max-Age` beats
18
+ * `Expires`. Undefined for a line a browser would ignore: one with no cookie
19
+ * name, or with a `Domain` the responding host does not belong to.
20
+ */
21
+ export declare function parseSetCookie(line: string, url: string, now?: number): CookieInit | undefined;
22
+ //# sourceMappingURL=set-cookie.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set-cookie.d.ts","sourceRoot":"","sources":["../../../../src/shared/lib/cookies/set-cookie.ts"],"names":[],"mappings":"AAAA,sFAAsF;AACtF,MAAM,WAAW,UAAU;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,mFAAmF;IACnF,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,4DAA4D;IAC5D,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;CAC9C;AAKD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC7B,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,GAAG,GAAE,MAAmB,GACtB,UAAU,GAAG,SAAS,CAyDxB"}
@@ -0,0 +1,89 @@
1
+ /** The latest expiry a browser context accepts: 9999-12-31, in seconds. */
2
+ const MAX_EXPIRES = 253_402_300_799;
3
+ /**
4
+ * One `Set-Cookie` line, stored the way a browser would store it for a response
5
+ * from `url` (RFC 6265 §5.2-5.3): `Domain` covers subdomains and no `Domain`
6
+ * is host-only, no `Path` is the request path's directory, and `Max-Age` beats
7
+ * `Expires`. Undefined for a line a browser would ignore: one with no cookie
8
+ * name, or with a `Domain` the responding host does not belong to.
9
+ */
10
+ export function parseSetCookie(line, url, now = Date.now()) {
11
+ const [pair = "", ...attributes] = line.split(";");
12
+ const eq = pair.indexOf("=");
13
+ const name = eq < 0 ? "" : pair.slice(0, eq).trim();
14
+ if (name === "")
15
+ return undefined;
16
+ const target = new URL(url);
17
+ let domain = target.hostname;
18
+ let path = defaultPath(target.pathname);
19
+ let expires;
20
+ let maxAge;
21
+ let httpOnly = false;
22
+ let secure = false;
23
+ let sameSite;
24
+ for (const attribute of attributes) {
25
+ const at = attribute.indexOf("=");
26
+ const key = (at < 0 ? attribute : attribute.slice(0, at))
27
+ .trim()
28
+ .toLowerCase();
29
+ const value = at < 0 ? "" : attribute.slice(at + 1).trim();
30
+ if (key === "domain" && value !== "") {
31
+ const covered = value.replace(/^\./, "").toLowerCase();
32
+ const host = target.hostname.toLowerCase();
33
+ // A server may not set a cookie for a site it is not part of.
34
+ if (host !== covered && !host.endsWith(`.${covered}`))
35
+ return undefined;
36
+ domain = `.${covered}`;
37
+ }
38
+ else if (key === "path" && value.startsWith("/"))
39
+ path = value;
40
+ // A date names its month; a bare number is not one, though
41
+ // `Date.parse` would take "1" for the year 2001.
42
+ else if (key === "expires" &&
43
+ /[a-z]{3}/i.test(value) &&
44
+ !Number.isNaN(Date.parse(value)))
45
+ expires = Math.floor(Date.parse(value) / 1000);
46
+ else if (key === "max-age" && /^-?\d+$/.test(value))
47
+ maxAge = Number(value);
48
+ else if (key === "httponly")
49
+ httpOnly = true;
50
+ else if (key === "secure")
51
+ secure = true;
52
+ else if (key === "samesite")
53
+ sameSite = sameSiteOf(value) ?? sameSite;
54
+ }
55
+ const wanted = maxAge === undefined ? expires : Math.floor(now / 1000) + maxAge;
56
+ // A context takes a positive timestamp only: one second past the epoch
57
+ // is "long expired", which is how a server deletes a cookie.
58
+ const until = wanted === undefined
59
+ ? undefined
60
+ : Math.min(Math.max(wanted, 1), MAX_EXPIRES);
61
+ return {
62
+ name,
63
+ value: pair.slice(eq + 1).trim(),
64
+ domain,
65
+ path,
66
+ ...(until === undefined ? {} : { expires: until }),
67
+ httpOnly,
68
+ secure,
69
+ ...(sameSite === undefined ? {} : { sameSite }),
70
+ };
71
+ }
72
+ function sameSiteOf(value) {
73
+ switch (value.toLowerCase()) {
74
+ case "strict":
75
+ return "Strict";
76
+ case "lax":
77
+ return "Lax";
78
+ case "none":
79
+ return "None";
80
+ default:
81
+ return undefined;
82
+ }
83
+ }
84
+ /** RFC 6265 §5.1.4: the request path up to, and not including, its last "/". */
85
+ function defaultPath(pathname) {
86
+ const last = pathname.lastIndexOf("/");
87
+ return last <= 0 ? "/" : pathname.slice(0, last);
88
+ }
89
+ //# sourceMappingURL=set-cookie.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set-cookie.js","sourceRoot":"","sources":["../../../../src/shared/lib/cookies/set-cookie.ts"],"names":[],"mappings":"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"}