@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.
- package/LICENSE +21 -0
- package/LICENSES.md +21 -0
- package/README.md +150 -2
- package/dist/app/playwright/index.d.ts +3 -0
- package/dist/app/playwright/index.d.ts.map +1 -0
- package/dist/app/playwright/index.js +2 -0
- package/dist/app/playwright/index.js.map +1 -0
- package/dist/app/playwright/lib/fixture.d.ts +61 -0
- package/dist/app/playwright/lib/fixture.d.ts.map +1 -0
- package/dist/app/playwright/lib/fixture.js +110 -0
- package/dist/app/playwright/lib/fixture.js.map +1 -0
- package/dist/connect.d.ts +7 -0
- package/dist/connect.d.ts.map +1 -0
- package/dist/connect.js +7 -0
- package/dist/connect.js.map +1 -0
- package/dist/entities/frame/@x/plugin.d.ts +9 -0
- package/dist/entities/frame/@x/plugin.d.ts.map +1 -0
- package/dist/entities/frame/@x/plugin.js +2 -0
- package/dist/entities/frame/@x/plugin.js.map +1 -0
- package/dist/entities/frame/index.d.ts +6 -0
- package/dist/entities/frame/index.d.ts.map +1 -0
- package/dist/entities/frame/index.js +4 -0
- package/dist/entities/frame/index.js.map +1 -0
- package/dist/entities/frame/lib/filter.d.ts +8 -0
- package/dist/entities/frame/lib/filter.d.ts.map +1 -0
- package/dist/entities/frame/lib/filter.js +62 -0
- package/dist/entities/frame/lib/filter.js.map +1 -0
- package/dist/entities/frame/lib/payload.d.ts +8 -0
- package/dist/entities/frame/lib/payload.d.ts.map +1 -0
- package/dist/entities/frame/lib/payload.js +42 -0
- package/dist/entities/frame/lib/payload.js.map +1 -0
- package/dist/entities/frame/lib/snapshot.d.ts +15 -0
- package/dist/entities/frame/lib/snapshot.d.ts.map +1 -0
- package/dist/entities/frame/lib/snapshot.js +90 -0
- package/dist/entities/frame/lib/snapshot.js.map +1 -0
- package/dist/entities/frame/lib/timeline.d.ts +23 -0
- package/dist/entities/frame/lib/timeline.d.ts.map +1 -0
- package/dist/entities/frame/lib/timeline.js +122 -0
- package/dist/entities/frame/lib/timeline.js.map +1 -0
- package/dist/entities/frame/model/frame.d.ts +182 -0
- package/dist/entities/frame/model/frame.d.ts.map +1 -0
- package/dist/entities/frame/model/frame.js +2 -0
- package/dist/entities/frame/model/frame.js.map +1 -0
- package/dist/entities/plugin/index.d.ts +9 -0
- package/dist/entities/plugin/index.d.ts.map +1 -0
- package/dist/entities/plugin/index.js +3 -0
- package/dist/entities/plugin/index.js.map +1 -0
- package/dist/entities/plugin/lib/define-plugin.d.ts +8 -0
- package/dist/entities/plugin/lib/define-plugin.d.ts.map +1 -0
- package/dist/entities/plugin/lib/define-plugin.js +9 -0
- package/dist/entities/plugin/lib/define-plugin.js.map +1 -0
- package/dist/entities/plugin/lib/named.d.ts +10 -0
- package/dist/entities/plugin/lib/named.d.ts.map +1 -0
- package/dist/entities/plugin/lib/named.js +17 -0
- package/dist/entities/plugin/lib/named.js.map +1 -0
- package/dist/entities/plugin/model/attachment.d.ts +18 -0
- package/dist/entities/plugin/model/attachment.d.ts.map +1 -0
- package/dist/entities/plugin/model/attachment.js +2 -0
- package/dist/entities/plugin/model/attachment.js.map +1 -0
- package/dist/entities/plugin/model/http.d.ts +135 -0
- package/dist/entities/plugin/model/http.d.ts.map +1 -0
- package/dist/entities/plugin/model/http.js +2 -0
- package/dist/entities/plugin/model/http.js.map +1 -0
- package/dist/entities/plugin/model/page.d.ts +100 -0
- package/dist/entities/plugin/model/page.d.ts.map +1 -0
- package/dist/entities/plugin/model/page.js +2 -0
- package/dist/entities/plugin/model/page.js.map +1 -0
- package/dist/entities/plugin/model/plugin.d.ts +83 -0
- package/dist/entities/plugin/model/plugin.d.ts.map +1 -0
- package/dist/entities/plugin/model/plugin.js +2 -0
- package/dist/entities/plugin/model/plugin.js.map +1 -0
- package/dist/entities/plugin/model/socket.d.ts +107 -0
- package/dist/entities/plugin/model/socket.d.ts.map +1 -0
- package/dist/entities/plugin/model/socket.js +2 -0
- package/dist/entities/plugin/model/socket.js.map +1 -0
- package/dist/entities/plugin/model/stream.d.ts +46 -0
- package/dist/entities/plugin/model/stream.d.ts.map +1 -0
- package/dist/entities/plugin/model/stream.js +2 -0
- package/dist/entities/plugin/model/stream.js.map +1 -0
- package/dist/features/connect/index.d.ts +5 -0
- package/dist/features/connect/index.d.ts.map +1 -0
- package/dist/features/connect/index.js +4 -0
- package/dist/features/connect/index.js.map +1 -0
- package/dist/features/connect/lib/calls.d.ts +9 -0
- package/dist/features/connect/lib/calls.d.ts.map +1 -0
- package/dist/features/connect/lib/calls.js +46 -0
- package/dist/features/connect/lib/calls.js.map +1 -0
- package/dist/features/connect/lib/client.d.ts +33 -0
- package/dist/features/connect/lib/client.d.ts.map +1 -0
- package/dist/features/connect/lib/client.js +147 -0
- package/dist/features/connect/lib/client.js.map +1 -0
- package/dist/features/connect/lib/create-connect.d.ts +14 -0
- package/dist/features/connect/lib/create-connect.d.ts.map +1 -0
- package/dist/features/connect/lib/create-connect.js +124 -0
- package/dist/features/connect/lib/create-connect.js.map +1 -0
- package/dist/features/connect/lib/faults.d.ts +18 -0
- package/dist/features/connect/lib/faults.d.ts.map +1 -0
- package/dist/features/connect/lib/faults.js +85 -0
- package/dist/features/connect/lib/faults.js.map +1 -0
- package/dist/features/connect/lib/protocol.d.ts +42 -0
- package/dist/features/connect/lib/protocol.d.ts.map +1 -0
- package/dist/features/connect/lib/protocol.js +228 -0
- package/dist/features/connect/lib/protocol.js.map +1 -0
- package/dist/features/connect/lib/record.d.ts +14 -0
- package/dist/features/connect/lib/record.d.ts.map +1 -0
- package/dist/features/connect/lib/record.js +36 -0
- package/dist/features/connect/lib/record.js.map +1 -0
- package/dist/features/connect/lib/recorder.d.ts +77 -0
- package/dist/features/connect/lib/recorder.d.ts.map +1 -0
- package/dist/features/connect/lib/recorder.js +209 -0
- package/dist/features/connect/lib/recorder.js.map +1 -0
- package/dist/features/connect/lib/rules.d.ts +51 -0
- package/dist/features/connect/lib/rules.d.ts.map +1 -0
- package/dist/features/connect/lib/rules.js +222 -0
- package/dist/features/connect/lib/rules.js.map +1 -0
- package/dist/features/connect/lib/serve.d.ts +10 -0
- package/dist/features/connect/lib/serve.d.ts.map +1 -0
- package/dist/features/connect/lib/serve.js +78 -0
- package/dist/features/connect/lib/serve.js.map +1 -0
- package/dist/features/connect/lib/status-of.d.ts +11 -0
- package/dist/features/connect/lib/status-of.d.ts.map +1 -0
- package/dist/features/connect/lib/status-of.js +22 -0
- package/dist/features/connect/lib/status-of.js.map +1 -0
- package/dist/features/connect/lib/stubs.d.ts +18 -0
- package/dist/features/connect/lib/stubs.d.ts.map +1 -0
- package/dist/features/connect/lib/stubs.js +174 -0
- package/dist/features/connect/lib/stubs.js.map +1 -0
- package/dist/features/connect/lib/universal.d.ts +19 -0
- package/dist/features/connect/lib/universal.d.ts.map +1 -0
- package/dist/features/connect/lib/universal.js +71 -0
- package/dist/features/connect/lib/universal.js.map +1 -0
- package/dist/features/connect/model/types.d.ts +247 -0
- package/dist/features/connect/model/types.d.ts.map +1 -0
- package/dist/features/connect/model/types.js +2 -0
- package/dist/features/connect/model/types.js.map +1 -0
- package/dist/features/rest/index.d.ts +5 -0
- package/dist/features/rest/index.d.ts.map +1 -0
- package/dist/features/rest/index.js +3 -0
- package/dist/features/rest/index.js.map +1 -0
- package/dist/features/rest/lib/calls.d.ts +8 -0
- package/dist/features/rest/lib/calls.d.ts.map +1 -0
- package/dist/features/rest/lib/calls.js +32 -0
- package/dist/features/rest/lib/calls.js.map +1 -0
- package/dist/features/rest/lib/create-rest.d.ts +8 -0
- package/dist/features/rest/lib/create-rest.d.ts.map +1 -0
- package/dist/features/rest/lib/create-rest.js +136 -0
- package/dist/features/rest/lib/create-rest.js.map +1 -0
- package/dist/features/rest/lib/path.d.ts +14 -0
- package/dist/features/rest/lib/path.d.ts.map +1 -0
- package/dist/features/rest/lib/path.js +58 -0
- package/dist/features/rest/lib/path.js.map +1 -0
- package/dist/features/rest/lib/reply.d.ts +25 -0
- package/dist/features/rest/lib/reply.d.ts.map +1 -0
- package/dist/features/rest/lib/reply.js +40 -0
- package/dist/features/rest/lib/reply.js.map +1 -0
- package/dist/features/rest/model/types.d.ts +74 -0
- package/dist/features/rest/model/types.d.ts.map +1 -0
- package/dist/features/rest/model/types.js +2 -0
- package/dist/features/rest/model/types.js.map +1 -0
- package/dist/features/sse/index.d.ts +4 -0
- package/dist/features/sse/index.d.ts.map +1 -0
- package/dist/features/sse/index.js +3 -0
- package/dist/features/sse/index.js.map +1 -0
- package/dist/features/sse/lib/create-sse.d.ts +9 -0
- package/dist/features/sse/lib/create-sse.d.ts.map +1 -0
- package/dist/features/sse/lib/create-sse.js +121 -0
- package/dist/features/sse/lib/create-sse.js.map +1 -0
- package/dist/features/sse/lib/encode.d.ts +8 -0
- package/dist/features/sse/lib/encode.d.ts.map +1 -0
- package/dist/features/sse/lib/encode.js +29 -0
- package/dist/features/sse/lib/encode.js.map +1 -0
- package/dist/features/sse/model/types.d.ts +68 -0
- package/dist/features/sse/model/types.d.ts.map +1 -0
- package/dist/features/sse/model/types.js +2 -0
- package/dist/features/sse/model/types.js.map +1 -0
- package/dist/features/webrtc/index.d.ts +3 -0
- package/dist/features/webrtc/index.d.ts.map +1 -0
- package/dist/features/webrtc/index.js +2 -0
- package/dist/features/webrtc/index.js.map +1 -0
- package/dist/features/webrtc/lib/create-webrtc.d.ts +9 -0
- package/dist/features/webrtc/lib/create-webrtc.d.ts.map +1 -0
- package/dist/features/webrtc/lib/create-webrtc.js +123 -0
- package/dist/features/webrtc/lib/create-webrtc.js.map +1 -0
- package/dist/features/webrtc/lib/rtc-page-module.d.ts +22 -0
- package/dist/features/webrtc/lib/rtc-page-module.d.ts.map +1 -0
- package/dist/features/webrtc/lib/rtc-page-module.js +161 -0
- package/dist/features/webrtc/lib/rtc-page-module.js.map +1 -0
- package/dist/features/webrtc/lib/to-frame.d.ts +9 -0
- package/dist/features/webrtc/lib/to-frame.d.ts.map +1 -0
- package/dist/features/webrtc/lib/to-frame.js +43 -0
- package/dist/features/webrtc/lib/to-frame.js.map +1 -0
- package/dist/features/webrtc/model/types.d.ts +70 -0
- package/dist/features/webrtc/model/types.d.ts.map +1 -0
- package/dist/features/webrtc/model/types.js +2 -0
- package/dist/features/webrtc/model/types.js.map +1 -0
- package/dist/features/websocket/index.d.ts +3 -0
- package/dist/features/websocket/index.d.ts.map +1 -0
- package/dist/features/websocket/index.js +2 -0
- package/dist/features/websocket/index.js.map +1 -0
- package/dist/features/websocket/lib/create-websocket.d.ts +9 -0
- package/dist/features/websocket/lib/create-websocket.d.ts.map +1 -0
- package/dist/features/websocket/lib/create-websocket.js +34 -0
- package/dist/features/websocket/lib/create-websocket.js.map +1 -0
- package/dist/features/websocket/lib/mock.d.ts +6 -0
- package/dist/features/websocket/lib/mock.d.ts.map +1 -0
- package/dist/features/websocket/lib/mock.js +96 -0
- package/dist/features/websocket/lib/mock.js.map +1 -0
- package/dist/features/websocket/lib/proxy.d.ts +9 -0
- package/dist/features/websocket/lib/proxy.d.ts.map +1 -0
- package/dist/features/websocket/lib/proxy.js +120 -0
- package/dist/features/websocket/lib/proxy.js.map +1 -0
- package/dist/features/websocket/lib/wire.d.ts +16 -0
- package/dist/features/websocket/lib/wire.d.ts.map +1 -0
- package/dist/features/websocket/lib/wire.js +46 -0
- package/dist/features/websocket/lib/wire.js.map +1 -0
- package/dist/features/websocket/model/types.d.ts +133 -0
- package/dist/features/websocket/model/types.d.ts.map +1 -0
- package/dist/features/websocket/model/types.js +2 -0
- package/dist/features/websocket/model/types.js.map +1 -0
- package/dist/index.d.ts +27 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -0
- package/dist/playwright.d.ts +4 -0
- package/dist/playwright.d.ts.map +1 -0
- package/dist/playwright.js +2 -0
- package/dist/playwright.js.map +1 -0
- package/dist/rest.d.ts +3 -0
- package/dist/rest.d.ts.map +1 -0
- package/dist/rest.js +3 -0
- package/dist/rest.js.map +1 -0
- package/dist/shared/api/http-server/index.d.ts +3 -0
- package/dist/shared/api/http-server/index.d.ts.map +1 -0
- package/dist/shared/api/http-server/index.js +2 -0
- package/dist/shared/api/http-server/index.js.map +1 -0
- package/dist/shared/api/http-server/listen.d.ts +25 -0
- package/dist/shared/api/http-server/listen.d.ts.map +1 -0
- package/dist/shared/api/http-server/listen.js +44 -0
- package/dist/shared/api/http-server/listen.js.map +1 -0
- package/dist/shared/api/playwright/index.d.ts +2 -0
- package/dist/shared/api/playwright/index.d.ts.map +1 -0
- package/dist/shared/api/playwright/index.js +2 -0
- package/dist/shared/api/playwright/index.js.map +1 -0
- package/dist/shared/api/playwright/ports.d.ts +126 -0
- package/dist/shared/api/playwright/ports.d.ts.map +1 -0
- package/dist/shared/api/playwright/ports.js +11 -0
- package/dist/shared/api/playwright/ports.js.map +1 -0
- package/dist/shared/api/stream-server/index.d.ts +3 -0
- package/dist/shared/api/stream-server/index.d.ts.map +1 -0
- package/dist/shared/api/stream-server/index.js +2 -0
- package/dist/shared/api/stream-server/index.js.map +1 -0
- package/dist/shared/api/stream-server/stream-server.d.ts +45 -0
- package/dist/shared/api/stream-server/stream-server.d.ts.map +1 -0
- package/dist/shared/api/stream-server/stream-server.js +167 -0
- package/dist/shared/api/stream-server/stream-server.js.map +1 -0
- package/dist/shared/lib/async/arrivals.d.ts +31 -0
- package/dist/shared/lib/async/arrivals.d.ts.map +1 -0
- package/dist/shared/lib/async/arrivals.js +57 -0
- package/dist/shared/lib/async/arrivals.js.map +1 -0
- package/dist/shared/lib/async/async-queue.d.ts +23 -0
- package/dist/shared/lib/async/async-queue.d.ts.map +1 -0
- package/dist/shared/lib/async/async-queue.js +80 -0
- package/dist/shared/lib/async/async-queue.js.map +1 -0
- package/dist/shared/lib/async/deferred.d.ts +12 -0
- package/dist/shared/lib/async/deferred.d.ts.map +1 -0
- package/dist/shared/lib/async/deferred.js +34 -0
- package/dist/shared/lib/async/deferred.js.map +1 -0
- package/dist/shared/lib/async/index.d.ts +8 -0
- package/dist/shared/lib/async/index.d.ts.map +1 -0
- package/dist/shared/lib/async/index.js +5 -0
- package/dist/shared/lib/async/index.js.map +1 -0
- package/dist/shared/lib/async/run-all.d.ts +8 -0
- package/dist/shared/lib/async/run-all.d.ts.map +1 -0
- package/dist/shared/lib/async/run-all.js +22 -0
- package/dist/shared/lib/async/run-all.js.map +1 -0
- package/dist/shared/lib/bytes/bytes.d.ts +18 -0
- package/dist/shared/lib/bytes/bytes.d.ts.map +1 -0
- package/dist/shared/lib/bytes/bytes.js +48 -0
- package/dist/shared/lib/bytes/bytes.js.map +1 -0
- package/dist/shared/lib/bytes/index.d.ts +3 -0
- package/dist/shared/lib/bytes/index.d.ts.map +1 -0
- package/dist/shared/lib/bytes/index.js +2 -0
- package/dist/shared/lib/bytes/index.js.map +1 -0
- package/dist/shared/lib/clock/clock.d.ts +29 -0
- package/dist/shared/lib/clock/clock.d.ts.map +1 -0
- package/dist/shared/lib/clock/clock.js +85 -0
- package/dist/shared/lib/clock/clock.js.map +1 -0
- package/dist/shared/lib/clock/index.d.ts +3 -0
- package/dist/shared/lib/clock/index.d.ts.map +1 -0
- package/dist/shared/lib/clock/index.js +2 -0
- package/dist/shared/lib/clock/index.js.map +1 -0
- package/dist/shared/lib/cookies/index.d.ts +3 -0
- package/dist/shared/lib/cookies/index.d.ts.map +1 -0
- package/dist/shared/lib/cookies/index.js +2 -0
- package/dist/shared/lib/cookies/index.js.map +1 -0
- package/dist/shared/lib/cookies/set-cookie.d.ts +22 -0
- package/dist/shared/lib/cookies/set-cookie.d.ts.map +1 -0
- package/dist/shared/lib/cookies/set-cookie.js +89 -0
- package/dist/shared/lib/cookies/set-cookie.js.map +1 -0
- package/dist/shared/lib/envelope/envelope.d.ts +50 -0
- package/dist/shared/lib/envelope/envelope.d.ts.map +1 -0
- package/dist/shared/lib/envelope/envelope.js +111 -0
- package/dist/shared/lib/envelope/envelope.js.map +1 -0
- package/dist/shared/lib/envelope/index.d.ts +3 -0
- package/dist/shared/lib/envelope/index.d.ts.map +1 -0
- package/dist/shared/lib/envelope/index.js +2 -0
- package/dist/shared/lib/envelope/index.js.map +1 -0
- package/dist/shared/lib/errors/index.d.ts +3 -0
- package/dist/shared/lib/errors/index.d.ts.map +1 -0
- package/dist/shared/lib/errors/index.js +2 -0
- package/dist/shared/lib/errors/index.js.map +1 -0
- package/dist/shared/lib/errors/wirestage-error.d.ts +28 -0
- package/dist/shared/lib/errors/wirestage-error.d.ts.map +1 -0
- package/dist/shared/lib/errors/wirestage-error.js +16 -0
- package/dist/shared/lib/errors/wirestage-error.js.map +1 -0
- package/dist/shared/lib/id/id.d.ts +10 -0
- package/dist/shared/lib/id/id.d.ts.map +1 -0
- package/dist/shared/lib/id/id.js +26 -0
- package/dist/shared/lib/id/id.js.map +1 -0
- package/dist/shared/lib/id/index.d.ts +2 -0
- package/dist/shared/lib/id/index.d.ts.map +1 -0
- package/dist/shared/lib/id/index.js +2 -0
- package/dist/shared/lib/id/index.js.map +1 -0
- package/dist/shared/lib/logger/index.d.ts +3 -0
- package/dist/shared/lib/logger/index.d.ts.map +1 -0
- package/dist/shared/lib/logger/index.js +2 -0
- package/dist/shared/lib/logger/index.js.map +1 -0
- package/dist/shared/lib/logger/logger.d.ts +46 -0
- package/dist/shared/lib/logger/logger.d.ts.map +1 -0
- package/dist/shared/lib/logger/logger.js +67 -0
- package/dist/shared/lib/logger/logger.js.map +1 -0
- package/dist/shared/lib/match/index.d.ts +3 -0
- package/dist/shared/lib/match/index.d.ts.map +1 -0
- package/dist/shared/lib/match/index.js +2 -0
- package/dist/shared/lib/match/index.js.map +1 -0
- package/dist/shared/lib/match/url-matcher.d.ts +27 -0
- package/dist/shared/lib/match/url-matcher.d.ts.map +1 -0
- package/dist/shared/lib/match/url-matcher.js +88 -0
- package/dist/shared/lib/match/url-matcher.js.map +1 -0
- package/dist/sse.d.ts +3 -0
- package/dist/sse.d.ts.map +1 -0
- package/dist/sse.js +3 -0
- package/dist/sse.js.map +1 -0
- package/dist/webrtc.d.ts +3 -0
- package/dist/webrtc.d.ts.map +1 -0
- package/dist/webrtc.js +3 -0
- package/dist/webrtc.js.map +1 -0
- package/dist/websocket.d.ts +3 -0
- package/dist/websocket.d.ts.map +1 -0
- package/dist/websocket.js +3 -0
- package/dist/websocket.js.map +1 -0
- package/dist/widgets/stage/index.d.ts +3 -0
- package/dist/widgets/stage/index.d.ts.map +1 -0
- package/dist/widgets/stage/index.js +2 -0
- package/dist/widgets/stage/index.js.map +1 -0
- package/dist/widgets/stage/lib/attached-context.d.ts +10 -0
- package/dist/widgets/stage/lib/attached-context.d.ts.map +1 -0
- package/dist/widgets/stage/lib/attached-context.js +2 -0
- package/dist/widgets/stage/lib/attached-context.js.map +1 -0
- package/dist/widgets/stage/lib/create-stage.d.ts +12 -0
- package/dist/widgets/stage/lib/create-stage.d.ts.map +1 -0
- package/dist/widgets/stage/lib/create-stage.js +250 -0
- package/dist/widgets/stage/lib/create-stage.js.map +1 -0
- package/dist/widgets/stage/lib/http-router.d.ts +44 -0
- package/dist/widgets/stage/lib/http-router.d.ts.map +1 -0
- package/dist/widgets/stage/lib/http-router.js +696 -0
- package/dist/widgets/stage/lib/http-router.js.map +1 -0
- package/dist/widgets/stage/lib/page-host.d.ts +36 -0
- package/dist/widgets/stage/lib/page-host.d.ts.map +1 -0
- package/dist/widgets/stage/lib/page-host.js +240 -0
- package/dist/widgets/stage/lib/page-host.js.map +1 -0
- package/dist/widgets/stage/lib/page-runtime.d.ts +93 -0
- package/dist/widgets/stage/lib/page-runtime.d.ts.map +1 -0
- package/dist/widgets/stage/lib/page-runtime.js +247 -0
- package/dist/widgets/stage/lib/page-runtime.js.map +1 -0
- package/dist/widgets/stage/lib/reads.d.ts +21 -0
- package/dist/widgets/stage/lib/reads.d.ts.map +1 -0
- package/dist/widgets/stage/lib/reads.js +97 -0
- package/dist/widgets/stage/lib/reads.js.map +1 -0
- package/dist/widgets/stage/lib/response-stream.d.ts +23 -0
- package/dist/widgets/stage/lib/response-stream.d.ts.map +1 -0
- package/dist/widgets/stage/lib/response-stream.js +108 -0
- package/dist/widgets/stage/lib/response-stream.js.map +1 -0
- package/dist/widgets/stage/lib/socket-router.d.ts +25 -0
- package/dist/widgets/stage/lib/socket-router.d.ts.map +1 -0
- package/dist/widgets/stage/lib/socket-router.js +233 -0
- package/dist/widgets/stage/lib/socket-router.js.map +1 -0
- package/dist/widgets/stage/model/stage.d.ts +88 -0
- package/dist/widgets/stage/model/stage.d.ts.map +1 -0
- package/dist/widgets/stage/model/stage.js +2 -0
- package/dist/widgets/stage/model/stage.js.map +1 -0
- package/package.json +140 -5
- package/src/app/playwright/index.ts +7 -0
- package/src/app/playwright/lib/fixture.ts +201 -0
- package/src/connect.ts +6 -0
- package/src/entities/frame/@x/plugin.ts +8 -0
- package/src/entities/frame/index.ts +19 -0
- package/src/entities/frame/lib/filter.ts +58 -0
- package/src/entities/frame/lib/payload.ts +42 -0
- package/src/entities/frame/lib/snapshot.ts +105 -0
- package/src/entities/frame/lib/timeline.ts +147 -0
- package/src/entities/frame/model/frame.ts +191 -0
- package/src/entities/plugin/index.ts +36 -0
- package/src/entities/plugin/lib/define-plugin.ts +12 -0
- package/src/entities/plugin/lib/named.ts +21 -0
- package/src/entities/plugin/model/attachment.ts +18 -0
- package/src/entities/plugin/model/http.ts +156 -0
- package/src/entities/plugin/model/page.ts +110 -0
- package/src/entities/plugin/model/plugin.ts +96 -0
- package/src/entities/plugin/model/socket.ts +113 -0
- package/src/entities/plugin/model/stream.ts +46 -0
- package/src/features/connect/index.ts +23 -0
- package/src/features/connect/lib/calls.ts +58 -0
- package/src/features/connect/lib/client.ts +203 -0
- package/src/features/connect/lib/create-connect.ts +164 -0
- package/src/features/connect/lib/faults.ts +132 -0
- package/src/features/connect/lib/protocol.ts +321 -0
- package/src/features/connect/lib/record.ts +48 -0
- package/src/features/connect/lib/recorder.ts +306 -0
- package/src/features/connect/lib/rules.ts +385 -0
- package/src/features/connect/lib/serve.ts +114 -0
- package/src/features/connect/lib/status-of.ts +20 -0
- package/src/features/connect/lib/stubs.ts +282 -0
- package/src/features/connect/lib/universal.ts +100 -0
- package/src/features/connect/model/types.ts +305 -0
- package/src/features/rest/index.ts +23 -0
- package/src/features/rest/lib/calls.ts +31 -0
- package/src/features/rest/lib/create-rest.ts +169 -0
- package/src/features/rest/lib/path.ts +70 -0
- package/src/features/rest/lib/reply.ts +74 -0
- package/src/features/rest/model/types.ts +113 -0
- package/src/features/sse/index.ts +10 -0
- package/src/features/sse/lib/create-sse.ts +129 -0
- package/src/features/sse/lib/encode.ts +28 -0
- package/src/features/sse/model/types.ts +72 -0
- package/src/features/webrtc/index.ts +6 -0
- package/src/features/webrtc/lib/create-webrtc.ts +149 -0
- package/src/features/webrtc/lib/rtc-page-module.ts +189 -0
- package/src/features/webrtc/lib/to-frame.ts +63 -0
- package/src/features/webrtc/model/types.ts +80 -0
- package/src/features/websocket/index.ts +15 -0
- package/src/features/websocket/lib/create-websocket.ts +41 -0
- package/src/features/websocket/lib/mock.ts +114 -0
- package/src/features/websocket/lib/proxy.ts +153 -0
- package/src/features/websocket/lib/wire.ts +78 -0
- package/src/features/websocket/model/types.ts +134 -0
- package/src/index.ts +111 -0
- package/src/playwright.ts +8 -0
- package/src/rest.ts +2 -0
- package/src/shared/api/http-server/index.ts +2 -0
- package/src/shared/api/http-server/listen.ts +71 -0
- package/src/shared/api/playwright/index.ts +17 -0
- package/src/shared/api/playwright/ports.ts +150 -0
- package/src/shared/api/stream-server/index.ts +7 -0
- package/src/shared/api/stream-server/stream-server.ts +254 -0
- package/src/shared/lib/async/arrivals.ts +91 -0
- package/src/shared/lib/async/async-queue.ts +101 -0
- package/src/shared/lib/async/deferred.ts +38 -0
- package/src/shared/lib/async/index.ts +11 -0
- package/src/shared/lib/async/run-all.ts +19 -0
- package/src/shared/lib/bytes/bytes.ts +53 -0
- package/src/shared/lib/bytes/index.ts +9 -0
- package/src/shared/lib/clock/clock.ts +114 -0
- package/src/shared/lib/clock/index.ts +2 -0
- package/src/shared/lib/cookies/index.ts +2 -0
- package/src/shared/lib/cookies/set-cookie.ts +105 -0
- package/src/shared/lib/envelope/envelope.ts +133 -0
- package/src/shared/lib/envelope/index.ts +9 -0
- package/src/shared/lib/errors/index.ts +5 -0
- package/src/shared/lib/errors/wirestage-error.ts +50 -0
- package/src/shared/lib/id/id.ts +29 -0
- package/src/shared/lib/id/index.ts +1 -0
- package/src/shared/lib/logger/index.ts +12 -0
- package/src/shared/lib/logger/logger.ts +126 -0
- package/src/shared/lib/match/index.ts +6 -0
- package/src/shared/lib/match/url-matcher.ts +107 -0
- package/src/sse.ts +2 -0
- package/src/webrtc.ts +2 -0
- package/src/websocket.ts +2 -0
- package/src/widgets/stage/index.ts +9 -0
- package/src/widgets/stage/lib/attached-context.ts +10 -0
- package/src/widgets/stage/lib/create-stage.ts +307 -0
- package/src/widgets/stage/lib/http-router.ts +954 -0
- package/src/widgets/stage/lib/page-host.ts +375 -0
- package/src/widgets/stage/lib/page-runtime.ts +314 -0
- package/src/widgets/stage/lib/reads.ts +128 -0
- package/src/widgets/stage/lib/response-stream.ts +139 -0
- package/src/widgets/stage/lib/socket-router.ts +300 -0
- package/src/widgets/stage/model/stage.ts +110 -0
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
import { toBuffer } from "../../../shared/lib/bytes/index.js";
|
|
2
|
+
import { WirestageError } from "../../../shared/lib/errors/index.js";
|
|
3
|
+
import { compileUrlMatcher } from "../../../shared/lib/match/index.js";
|
|
4
|
+
/** What a script may pass to `WebSocket.close()`: 1000, or 3000-4999. */
|
|
5
|
+
const sendable = (code) => code === 1000 || (code >= 3000 && code <= 4999);
|
|
6
|
+
const encoder = new TextEncoder();
|
|
7
|
+
/**
|
|
8
|
+
* A close reason cut to what a close frame carries: 123 bytes of UTF-8 (the
|
|
9
|
+
* frame's 125, less the code), ending on a whole character.
|
|
10
|
+
*/
|
|
11
|
+
const fitReason = (reason) =>
|
|
12
|
+
// `encodeInto` stops before the first character that does not fit whole.
|
|
13
|
+
reason.slice(0, encoder.encodeInto(reason, new Uint8Array(123)).read);
|
|
14
|
+
/**
|
|
15
|
+
* A close as the server's end can carry it out. Playwright closes that end
|
|
16
|
+
* with the browser's own `WebSocket.close(code, reason)`, which throws on a
|
|
17
|
+
* code a script may not send, on a reason without a code and on a reason
|
|
18
|
+
* over 123 bytes — and Playwright swallows the error, which leaves the
|
|
19
|
+
* connection open for good. Such a close goes out as a normal closure, 1000,
|
|
20
|
+
* with its reason cut to fit: the close is the point.
|
|
21
|
+
*/
|
|
22
|
+
const forServer = (options) => {
|
|
23
|
+
const { code, reason } = options ?? {};
|
|
24
|
+
if (code === undefined && reason === undefined)
|
|
25
|
+
return options;
|
|
26
|
+
return {
|
|
27
|
+
code: code !== undefined && sendable(code) ? code : 1000,
|
|
28
|
+
...(reason === undefined ? {} : { reason: fitReason(reason) }),
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
/** The message handler of an end whose messages the rule does not take. */
|
|
32
|
+
const drop = () => { };
|
|
33
|
+
/**
|
|
34
|
+
* Turns WebSocket rules into ONE Playwright WebSocket route per attached
|
|
35
|
+
* context, whose predicate asks the live rule list.
|
|
36
|
+
*
|
|
37
|
+
* One route, because Playwright cannot take a WebSocket route out again: a
|
|
38
|
+
* removed rule, or a detached context, simply stops matching, which sends the
|
|
39
|
+
* socket to the real server. And not before it is needed, because routing
|
|
40
|
+
* replaces `WebSocket` in every document of the context — the first rule
|
|
41
|
+
* installs it, or `prepare()` does at attach.
|
|
42
|
+
*/
|
|
43
|
+
export function createSocketRouter(deps) {
|
|
44
|
+
/** Active rules, oldest first. */
|
|
45
|
+
const entries = [];
|
|
46
|
+
const attachments = new Set();
|
|
47
|
+
const routes = new Map();
|
|
48
|
+
let prepared = false;
|
|
49
|
+
/** The newest rule that wants a socket to `url`. */
|
|
50
|
+
const taker = (url) => entries.findLast((entry) => {
|
|
51
|
+
try {
|
|
52
|
+
return entry.matchesUrl(url);
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
// The caller's predicate; one that throws must not break every
|
|
56
|
+
// socket of the context.
|
|
57
|
+
deps.log.error("rule's URL matcher failed", { rule: entry.rule.label, url: url.href }, error);
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
const retire = (entry) => {
|
|
62
|
+
if (!entry.active)
|
|
63
|
+
return;
|
|
64
|
+
entry.active = false;
|
|
65
|
+
entries.splice(entries.indexOf(entry), 1);
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* One end, as a rule drives it. Playwright calls the rule's handlers from
|
|
69
|
+
* its own event dispatch, where a throw is an uncaught exception and a
|
|
70
|
+
* rejection an unhandled one — either surfacing in whichever test runs
|
|
71
|
+
* next. A handler that fails fails the rule instead, as `open` does.
|
|
72
|
+
*/
|
|
73
|
+
const peer = (route, onFailure, close = (options) => options) => {
|
|
74
|
+
const guarded = (handler) => (...args) => {
|
|
75
|
+
try {
|
|
76
|
+
// Typed `void`, yet an async function is a valid handler.
|
|
77
|
+
const result = handler(...args);
|
|
78
|
+
if (result instanceof Promise)
|
|
79
|
+
result.catch(onFailure);
|
|
80
|
+
}
|
|
81
|
+
catch (error) {
|
|
82
|
+
void onFailure(error);
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
return {
|
|
86
|
+
send: (data) => route.send(typeof data === "string" ? data : toBuffer(data)),
|
|
87
|
+
close: (options) => route.close(close(options)),
|
|
88
|
+
onMessage: (handler) => route.onMessage(guarded(handler)),
|
|
89
|
+
onClose: (handler) => route.onClose(guarded(handler)),
|
|
90
|
+
};
|
|
91
|
+
};
|
|
92
|
+
/**
|
|
93
|
+
* A rule that throws, in `open` or in a handler it set, is a bug in the
|
|
94
|
+
* test. Say which rule failed — in the log, on the timeline, and in the
|
|
95
|
+
* reason the page's socket closes with — and close both ends: the page's
|
|
96
|
+
* socket would otherwise sit open with nobody answering it, and a server
|
|
97
|
+
* the rule connected would stay connected. 1011 is a server's "internal
|
|
98
|
+
* error"; the server's end gets 1000, as a script may not send 1011.
|
|
99
|
+
*/
|
|
100
|
+
const fail = async (rule, view, server, error) => {
|
|
101
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
102
|
+
deps.log.error("socket rule failed", { rule: rule.label, url: view.url.href }, error);
|
|
103
|
+
deps.timeline.append({
|
|
104
|
+
protocol: rule.protocol,
|
|
105
|
+
kind: "fault",
|
|
106
|
+
direction: "none",
|
|
107
|
+
endpoint: view.url.pathname,
|
|
108
|
+
source: "stub",
|
|
109
|
+
correlation: view.correlation,
|
|
110
|
+
context: view.context,
|
|
111
|
+
meta: { reason: "rule-error", rule: rule.label, error: message },
|
|
112
|
+
});
|
|
113
|
+
const closing = {
|
|
114
|
+
code: 1011,
|
|
115
|
+
// Cut like the server's end, though the page's would take it whole:
|
|
116
|
+
// no real server could send the page a longer one.
|
|
117
|
+
reason: fitReason(`wirestage: rule "${rule.label}" failed: ${message}`),
|
|
118
|
+
};
|
|
119
|
+
await Promise.all([view.page.close(closing), server?.close(closing)]);
|
|
120
|
+
};
|
|
121
|
+
const onSocket = async (attachment, route) => {
|
|
122
|
+
const url = new URL(route.url());
|
|
123
|
+
const entry = attachments.has(attachment) ? taker(url) : undefined;
|
|
124
|
+
// The rule went, or the context was detached, between Playwright's
|
|
125
|
+
// check and this call: the socket is the real server's.
|
|
126
|
+
if (entry === undefined) {
|
|
127
|
+
route.connectToServer();
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
entry.hits += 1;
|
|
131
|
+
if (entry.remaining !== undefined && --entry.remaining === 0)
|
|
132
|
+
retire(entry);
|
|
133
|
+
// Playwright passes the messages of an end with no handler on to the
|
|
134
|
+
// other end, unrecorded: a rule that wires one direction would leak
|
|
135
|
+
// the other. So each end starts with a handler that drops them, which
|
|
136
|
+
// the rule's own replaces.
|
|
137
|
+
route.onMessage(drop);
|
|
138
|
+
let server;
|
|
139
|
+
let failed = false;
|
|
140
|
+
// Once per socket, for whatever fails first. Marked before failing:
|
|
141
|
+
// the closes that follow are reported to the rule's handlers, and a
|
|
142
|
+
// broken one throws again.
|
|
143
|
+
const failOnce = async (error) => {
|
|
144
|
+
if (failed)
|
|
145
|
+
return;
|
|
146
|
+
failed = true;
|
|
147
|
+
await fail(entry.rule, view, server, error);
|
|
148
|
+
};
|
|
149
|
+
const view = {
|
|
150
|
+
correlation: deps.correlation(),
|
|
151
|
+
url,
|
|
152
|
+
context: attachment.id,
|
|
153
|
+
page: peer(route, failOnce),
|
|
154
|
+
connectToServer: () => {
|
|
155
|
+
if (server === undefined) {
|
|
156
|
+
const upstream = route.connectToServer();
|
|
157
|
+
upstream.onMessage(drop);
|
|
158
|
+
server = peer(upstream, failOnce, forServer);
|
|
159
|
+
}
|
|
160
|
+
return server;
|
|
161
|
+
},
|
|
162
|
+
};
|
|
163
|
+
try {
|
|
164
|
+
// Awaited: Playwright opens the page's end of a socket the rule
|
|
165
|
+
// did not connect once this handler settles, so an async rule is
|
|
166
|
+
// wired up before the first message.
|
|
167
|
+
await entry.rule.open(view);
|
|
168
|
+
}
|
|
169
|
+
catch (error) {
|
|
170
|
+
// Never rejected to Playwright, where it would surface as an
|
|
171
|
+
// unhandled rejection in whichever test runs next.
|
|
172
|
+
await failOnce(error);
|
|
173
|
+
}
|
|
174
|
+
};
|
|
175
|
+
const ensureRoute = (attachment) => {
|
|
176
|
+
let installing = routes.get(attachment);
|
|
177
|
+
if (installing === undefined) {
|
|
178
|
+
installing = attachment.context.routeWebSocket((url) => attachments.has(attachment) && taker(url) !== undefined, (route) => onSocket(attachment, route));
|
|
179
|
+
routes.set(attachment, installing);
|
|
180
|
+
// A failed install must not be remembered as done.
|
|
181
|
+
installing.catch(() => routes.delete(attachment));
|
|
182
|
+
}
|
|
183
|
+
return installing;
|
|
184
|
+
};
|
|
185
|
+
return {
|
|
186
|
+
async add(rule) {
|
|
187
|
+
if (rule.times !== undefined &&
|
|
188
|
+
(!Number.isInteger(rule.times) || rule.times < 1))
|
|
189
|
+
throw new WirestageError("INVALID_ARGUMENT", `rule "${rule.label}": times must be a positive integer, got ${rule.times}`);
|
|
190
|
+
const entry = {
|
|
191
|
+
rule,
|
|
192
|
+
matchesUrl: compileUrlMatcher(rule.url),
|
|
193
|
+
remaining: rule.times,
|
|
194
|
+
hits: 0,
|
|
195
|
+
active: true,
|
|
196
|
+
};
|
|
197
|
+
entries.push(entry);
|
|
198
|
+
try {
|
|
199
|
+
await Promise.all([...attachments].map(ensureRoute));
|
|
200
|
+
}
|
|
201
|
+
catch (error) {
|
|
202
|
+
retire(entry);
|
|
203
|
+
throw error;
|
|
204
|
+
}
|
|
205
|
+
return {
|
|
206
|
+
get hits() {
|
|
207
|
+
return entry.hits;
|
|
208
|
+
},
|
|
209
|
+
get active() {
|
|
210
|
+
return entry.active;
|
|
211
|
+
},
|
|
212
|
+
async remove() {
|
|
213
|
+
retire(entry);
|
|
214
|
+
},
|
|
215
|
+
};
|
|
216
|
+
},
|
|
217
|
+
prepare() {
|
|
218
|
+
prepared = true;
|
|
219
|
+
},
|
|
220
|
+
async attach(attachment) {
|
|
221
|
+
attachments.add(attachment);
|
|
222
|
+
if (prepared || entries.length > 0)
|
|
223
|
+
await ensureRoute(attachment);
|
|
224
|
+
},
|
|
225
|
+
detach(attachment) {
|
|
226
|
+
attachments.delete(attachment);
|
|
227
|
+
// The route stays in the browser; a context attached again gets a
|
|
228
|
+
// new one, and this one's predicate never matches again.
|
|
229
|
+
routes.delete(attachment);
|
|
230
|
+
},
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
//# sourceMappingURL=socket-router.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"socket-router.js","sourceRoot":"","sources":["../../../../src/widgets/stage/lib/socket-router.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import type { Frame, FrameFilter, Timeline, TimelineSnapshot } from "../../../entities/frame/index.js";
|
|
2
|
+
import type { AnyWirePlugin, Attachment, PluginApis, WaitForOptions } from "../../../entities/plugin/index.js";
|
|
3
|
+
import type { ContextPort, PagePort } from "../../../shared/api/playwright/index.js";
|
|
4
|
+
import type { StreamServerOptions } from "../../../shared/api/stream-server/index.js";
|
|
5
|
+
import type { Clock } from "../../../shared/lib/clock/index.js";
|
|
6
|
+
export interface StageOptions<Plugins extends readonly AnyWirePlugin[]> {
|
|
7
|
+
/** The protocols this stage handles. Their APIs appear as `stage.<name>`. */
|
|
8
|
+
readonly plugins: Plugins;
|
|
9
|
+
/** Used by drive clients that are not given a URL of their own. */
|
|
10
|
+
readonly baseURL?: string;
|
|
11
|
+
/** Frames the timeline keeps. Default 100,000. */
|
|
12
|
+
readonly capacity?: number;
|
|
13
|
+
/**
|
|
14
|
+
* How long a page batches what it records before sending it on. Default
|
|
15
|
+
* 25 ms. The first entry after a quiet spell is sent at once.
|
|
16
|
+
*/
|
|
17
|
+
readonly pageFlushMs?: number;
|
|
18
|
+
/**
|
|
19
|
+
* How long a page may take to answer a flush or a command, or the
|
|
20
|
+
* browser to hand over a response's body, before a read goes on without
|
|
21
|
+
* it; how long a live stream's request may take to reach the stream
|
|
22
|
+
* server before the stream is given up; and how long Playwright may take
|
|
23
|
+
* to take the page hooks out before a detach goes on. Default 2000 ms.
|
|
24
|
+
*/
|
|
25
|
+
readonly pageTimeoutMs?: number;
|
|
26
|
+
/** TLS for live streams on https pages, and the bind host. */
|
|
27
|
+
readonly streamServer?: Pick<StreamServerOptions, "tls" | "host">;
|
|
28
|
+
/** Defaults for `waitFor`. */
|
|
29
|
+
readonly wait?: Pick<WaitForOptions, "timeout" | "interval">;
|
|
30
|
+
/** Replace time, for tests of the stage itself. */
|
|
31
|
+
readonly clock?: Clock;
|
|
32
|
+
}
|
|
33
|
+
export interface AttachOptions {
|
|
34
|
+
/** The context's base URL, for drive clients bound to it. */
|
|
35
|
+
readonly baseURL?: string;
|
|
36
|
+
}
|
|
37
|
+
export interface StageReport {
|
|
38
|
+
readonly snapshot: TimelineSnapshot;
|
|
39
|
+
readonly text: string;
|
|
40
|
+
}
|
|
41
|
+
export interface ReportOptions {
|
|
42
|
+
/** Frames kept, counting back from the newest. Default 1,000. */
|
|
43
|
+
readonly limit?: number;
|
|
44
|
+
}
|
|
45
|
+
/** The stage itself, before plugin APIs are mounted on it. */
|
|
46
|
+
export interface StageCore {
|
|
47
|
+
readonly id: string;
|
|
48
|
+
/** The raw timeline. Reads here do NOT flush page buffers first; prefer the methods below. */
|
|
49
|
+
readonly timeline: Timeline;
|
|
50
|
+
readonly attachments: readonly Attachment[];
|
|
51
|
+
readonly disposed: boolean;
|
|
52
|
+
/**
|
|
53
|
+
* Start handling a browser context: install every plugin's routes and page
|
|
54
|
+
* hooks. Call before the first navigation. Returns a function that
|
|
55
|
+
* detaches. A failed attach is undone, so it can be tried again.
|
|
56
|
+
*/
|
|
57
|
+
attach(context: ContextPort, options?: AttachOptions): Promise<() => Promise<void>>;
|
|
58
|
+
/** Detach one context, or all of them. */
|
|
59
|
+
detach(context?: ContextPort): Promise<void>;
|
|
60
|
+
/** The id frames use for this page. */
|
|
61
|
+
pageId(page: PagePort): string;
|
|
62
|
+
/**
|
|
63
|
+
* Bring the timeline up to date: flush every page's buffer, and wait for
|
|
64
|
+
* the responses already back from the network and the ends of the
|
|
65
|
+
* streams a stub closed. The reads below do it for you.
|
|
66
|
+
*/
|
|
67
|
+
sync(): Promise<void>;
|
|
68
|
+
frames(filter?: FrameFilter): Promise<Frame[]>;
|
|
69
|
+
/** Frames since the previous `drain` (any filter), narrowed by `filter`. */
|
|
70
|
+
drain(filter?: FrameFilter): Promise<Frame[]>;
|
|
71
|
+
/** Put a named marker on the timeline, after everything that happened so far. */
|
|
72
|
+
mark(name: string, meta?: Readonly<Record<string, unknown>>): Promise<Frame>;
|
|
73
|
+
/** Frames after the most recent marker called `marker`. */
|
|
74
|
+
since(marker: string, filter?: FrameFilter): Promise<Frame[]>;
|
|
75
|
+
/** Frames between two markers, exclusive. */
|
|
76
|
+
between(from: string, to: string, filter?: FrameFilter): Promise<Frame[]>;
|
|
77
|
+
/** Resolve with the matching frames once `count` of them exist. */
|
|
78
|
+
waitFor(filter: FrameFilter, options?: WaitForOptions): Promise<Frame[]>;
|
|
79
|
+
/** The newest frames as JSON and as text. Does not flush: `sync()` first. */
|
|
80
|
+
report(filter?: FrameFilter, options?: ReportOptions): StageReport;
|
|
81
|
+
/**
|
|
82
|
+
* Detach everything, stop servers, release plugins. Idempotent. Every
|
|
83
|
+
* step runs even when one fails; what failed is thrown at the end.
|
|
84
|
+
*/
|
|
85
|
+
dispose(): Promise<void>;
|
|
86
|
+
}
|
|
87
|
+
export type Stage<Plugins extends readonly AnyWirePlugin[] = readonly []> = StageCore & PluginApis<Plugins>;
|
|
88
|
+
//# sourceMappingURL=stage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stage.d.ts","sourceRoot":"","sources":["../../../../src/widgets/stage/model/stage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stage.js","sourceRoot":"","sources":["../../../../src/widgets/stage/model/stage.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED
|
@@ -1,6 +1,141 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
"name": "@heojeongbo/wirestage",
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"description": "Record, fake and fault-inject browser wire traffic in Playwright: REST, Connect, gRPC-web, gRPC, SSE, WebSocket and WebRTC data channels on one timeline.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"author": "heojeongbo <heojungbo@gmail.com>",
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "git+https://github.com/heojeongbo/wirestage.git"
|
|
11
|
+
},
|
|
12
|
+
"homepage": "https://github.com/heojeongbo/wirestage#readme",
|
|
13
|
+
"bugs": "https://github.com/heojeongbo/wirestage/issues",
|
|
14
|
+
"keywords": [
|
|
15
|
+
"playwright",
|
|
16
|
+
"testing",
|
|
17
|
+
"mock",
|
|
18
|
+
"grpc-web",
|
|
19
|
+
"connectrpc",
|
|
20
|
+
"grpc",
|
|
21
|
+
"websocket",
|
|
22
|
+
"webrtc",
|
|
23
|
+
"datachannel",
|
|
24
|
+
"sse",
|
|
25
|
+
"e2e"
|
|
26
|
+
],
|
|
27
|
+
"packageManager": "pnpm@11.16.0",
|
|
28
|
+
"engines": {
|
|
29
|
+
"node": ">=22.12"
|
|
30
|
+
},
|
|
31
|
+
"sideEffects": false,
|
|
32
|
+
"files": [
|
|
33
|
+
"dist",
|
|
34
|
+
"src",
|
|
35
|
+
"!src/**/*.test.ts",
|
|
36
|
+
"!src/**/__fixtures__",
|
|
37
|
+
"README.md",
|
|
38
|
+
"LICENSE",
|
|
39
|
+
"LICENSES.md"
|
|
40
|
+
],
|
|
41
|
+
"exports": {
|
|
42
|
+
".": {
|
|
43
|
+
"types": "./dist/index.d.ts",
|
|
44
|
+
"default": "./dist/index.js"
|
|
45
|
+
},
|
|
46
|
+
"./playwright": {
|
|
47
|
+
"types": "./dist/playwright.d.ts",
|
|
48
|
+
"default": "./dist/playwright.js"
|
|
49
|
+
},
|
|
50
|
+
"./connect": {
|
|
51
|
+
"types": "./dist/connect.d.ts",
|
|
52
|
+
"default": "./dist/connect.js"
|
|
53
|
+
},
|
|
54
|
+
"./rest": {
|
|
55
|
+
"types": "./dist/rest.d.ts",
|
|
56
|
+
"default": "./dist/rest.js"
|
|
57
|
+
},
|
|
58
|
+
"./sse": {
|
|
59
|
+
"types": "./dist/sse.d.ts",
|
|
60
|
+
"default": "./dist/sse.js"
|
|
61
|
+
},
|
|
62
|
+
"./websocket": {
|
|
63
|
+
"types": "./dist/websocket.d.ts",
|
|
64
|
+
"default": "./dist/websocket.js"
|
|
65
|
+
},
|
|
66
|
+
"./webrtc": {
|
|
67
|
+
"types": "./dist/webrtc.d.ts",
|
|
68
|
+
"default": "./dist/webrtc.js"
|
|
69
|
+
},
|
|
70
|
+
"./package.json": "./package.json"
|
|
71
|
+
},
|
|
72
|
+
"publishConfig": {
|
|
73
|
+
"access": "public"
|
|
74
|
+
},
|
|
75
|
+
"scripts": {
|
|
76
|
+
"clean": "node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"",
|
|
77
|
+
"build": "pnpm clean && tsc -p tsconfig.build.json",
|
|
78
|
+
"type:check": "tsc --noEmit",
|
|
79
|
+
"lint": "biome check --error-on-warnings .",
|
|
80
|
+
"format": "biome check --write .",
|
|
81
|
+
"fsd:check": "tsx scripts/check-boundaries.ts",
|
|
82
|
+
"test": "vitest run --project unit",
|
|
83
|
+
"test:coverage": "vitest run --project unit --coverage",
|
|
84
|
+
"test:browser": "vitest run --project browser",
|
|
85
|
+
"e2e": "pnpm build && tsc --noEmit -p e2e/tsconfig.json && playwright test",
|
|
86
|
+
"bench": "vitest bench --run --config vitest.bench.config.ts",
|
|
87
|
+
"perf": "tsx scripts/perf.ts",
|
|
88
|
+
"perf:check": "tsx scripts/perf.ts --check",
|
|
89
|
+
"docs:check": "node scripts/check-docs.mjs",
|
|
90
|
+
"package:check": "node scripts/check-package.mjs",
|
|
91
|
+
"gen:proto": "buf generate",
|
|
92
|
+
"check": "pnpm lint && pnpm fsd:check && pnpm type:check && pnpm test:coverage && pnpm build && pnpm docs:check && pnpm package:check",
|
|
93
|
+
"check:browser": "pnpm test:browser && pnpm e2e && pnpm perf:check",
|
|
94
|
+
"prepare": "husky || true",
|
|
95
|
+
"prepack": "pnpm build",
|
|
96
|
+
"prepublishOnly": "pnpm check && pnpm check:browser"
|
|
97
|
+
},
|
|
98
|
+
"dependencies": {
|
|
99
|
+
"@heojeongbo/log-palette": "^0.2.2"
|
|
100
|
+
},
|
|
101
|
+
"peerDependencies": {
|
|
102
|
+
"@bufbuild/protobuf": "^2.10.0",
|
|
103
|
+
"@connectrpc/connect": "^2.1.0",
|
|
104
|
+
"@connectrpc/connect-node": "^2.1.0",
|
|
105
|
+
"@playwright/test": ">=1.50.0"
|
|
106
|
+
},
|
|
107
|
+
"peerDependenciesMeta": {
|
|
108
|
+
"@bufbuild/protobuf": {
|
|
109
|
+
"optional": true
|
|
110
|
+
},
|
|
111
|
+
"@connectrpc/connect": {
|
|
112
|
+
"optional": true
|
|
113
|
+
},
|
|
114
|
+
"@connectrpc/connect-node": {
|
|
115
|
+
"optional": true
|
|
116
|
+
}
|
|
117
|
+
},
|
|
118
|
+
"devDependencies": {
|
|
119
|
+
"@biomejs/biome": "2.5.15",
|
|
120
|
+
"@bufbuild/buf": "1.73.0",
|
|
121
|
+
"@bufbuild/protobuf": "2.12.0",
|
|
122
|
+
"@bufbuild/protoc-gen-es": "2.12.0",
|
|
123
|
+
"@commitlint/cli": "20.1.0",
|
|
124
|
+
"@commitlint/config-conventional": "20.2.0",
|
|
125
|
+
"@connectrpc/connect": "2.1.1",
|
|
126
|
+
"@connectrpc/connect-node": "2.1.1",
|
|
127
|
+
"@connectrpc/connect-web": "2.1.1",
|
|
128
|
+
"@playwright/test": "1.60.0",
|
|
129
|
+
"@types/node": "24.3.0",
|
|
130
|
+
"@vitest/coverage-v8": "4.1.11",
|
|
131
|
+
"esbuild": "0.25.10",
|
|
132
|
+
"husky": "9.1.7",
|
|
133
|
+
"lint-staged": "16.2.7",
|
|
134
|
+
"tsx": "4.20.4",
|
|
135
|
+
"typescript": "5.9.3",
|
|
136
|
+
"vitest": "4.1.11"
|
|
137
|
+
},
|
|
138
|
+
"lint-staged": {
|
|
139
|
+
"*.{ts,mts,js,mjs,json,jsonc}": "biome check --write --no-errors-on-unmatched"
|
|
140
|
+
}
|
|
141
|
+
}
|