playwriter 0.0.8 → 0.0.12
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/dist/extension/cdp-relay.d.ts.map +1 -1
- package/dist/extension/cdp-relay.js +82 -35
- package/dist/extension/cdp-relay.js.map +1 -1
- package/dist/extension/protocol.d.ts +31 -17
- package/dist/extension/protocol.d.ts.map +1 -1
- package/dist/extension/protocol.js.map +1 -1
- package/dist/mcp.js +262 -71
- package/dist/mcp.js.map +1 -1
- package/dist/mcp.test.d.ts +9 -1
- package/dist/mcp.test.d.ts.map +1 -1
- package/dist/mcp.test.js +1014 -6
- package/dist/mcp.test.js.map +1 -1
- package/dist/prompt.md +56 -12
- package/dist/start-relay-server.d.ts.map +1 -1
- package/dist/start-relay-server.js +15 -2
- package/dist/start-relay-server.js.map +1 -1
- package/dist/utils.d.ts +1 -2
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +2 -2
- package/dist/utils.js.map +1 -1
- package/package.json +6 -2
- package/src/extension/cdp-relay.ts +86 -39
- package/src/extension/protocol.ts +31 -15
- package/src/mcp.test.ts +1191 -6
- package/src/mcp.ts +313 -84
- package/src/prompt.md +56 -12
- package/src/snapshots/hacker-news-initial-accessibility.md +64 -277
- package/src/snapshots/shadcn-ui-accessibility.md +81 -283
- package/src/start-relay-server.ts +19 -2
- package/src/utils.ts +2 -2
|
@@ -28,316 +28,114 @@ Return value:
|
|
|
28
28
|
- generic [ref=e21]:
|
|
29
29
|
- generic: ⌘
|
|
30
30
|
- generic: K
|
|
31
|
-
- link "
|
|
31
|
+
- link "100.8k" [ref=e22] [cursor=pointer]:
|
|
32
32
|
- /url: https://github.com/shadcn-ui/ui
|
|
33
33
|
- img
|
|
34
|
-
- generic [ref=e23]:
|
|
35
|
-
- button "Toggle
|
|
36
|
-
- generic [ref=e25]: Toggle layout
|
|
34
|
+
- generic [ref=e23]: 100.8k
|
|
35
|
+
- button "Toggle theme" [ref=e24]:
|
|
37
36
|
- img
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
- generic [ref=e32]:
|
|
44
|
-
- 'link "New New Components: Field, Input Group, Item and more" [ref=e33] [cursor=pointer]':
|
|
37
|
+
- generic [ref=e25]: Toggle theme
|
|
38
|
+
- main [ref=e26]:
|
|
39
|
+
- generic [ref=e27]:
|
|
40
|
+
- generic [ref=e30]:
|
|
41
|
+
- 'link "New New Components: Field, Input Group, Item and more" [ref=e31] [cursor=pointer]':
|
|
45
42
|
- /url: /docs/changelog
|
|
46
|
-
- generic "New" [ref=
|
|
43
|
+
- generic "New" [ref=e32]
|
|
47
44
|
- text: "New Components: Field, Input Group, Item and more"
|
|
48
45
|
- img
|
|
49
|
-
- heading "The Foundation for your Design System" [level=1] [ref=
|
|
50
|
-
- paragraph [ref=
|
|
51
|
-
- generic [ref=
|
|
52
|
-
- link "Get Started" [ref=
|
|
46
|
+
- heading "The Foundation for your Design System" [level=1] [ref=e33]
|
|
47
|
+
- paragraph [ref=e34]: A set of beautifully designed components that you can customize, extend, and build on. Start here then make it your own. Open Source. Open Code.
|
|
48
|
+
- generic [ref=e35]:
|
|
49
|
+
- link "Get Started" [ref=e36] [cursor=pointer]:
|
|
53
50
|
- /url: /docs/installation
|
|
54
|
-
- link "View Components" [ref=
|
|
51
|
+
- link "View Components" [ref=e37] [cursor=pointer]:
|
|
55
52
|
- /url: /docs/components
|
|
56
|
-
- generic [ref=
|
|
57
|
-
- generic [ref=
|
|
58
|
-
- link "Examples" [ref=
|
|
53
|
+
- generic [ref=e39]:
|
|
54
|
+
- generic [ref=e44]:
|
|
55
|
+
- link "Examples" [ref=e45] [cursor=pointer]:
|
|
59
56
|
- /url: /
|
|
60
|
-
- link "Dashboard" [ref=
|
|
57
|
+
- link "Dashboard" [ref=e46] [cursor=pointer]:
|
|
61
58
|
- /url: /examples/dashboard
|
|
62
|
-
- link "Tasks" [ref=
|
|
59
|
+
- link "Tasks" [ref=e47] [cursor=pointer]:
|
|
63
60
|
- /url: /examples/tasks
|
|
64
|
-
- link "Playground" [ref=
|
|
61
|
+
- link "Playground" [ref=e48] [cursor=pointer]:
|
|
65
62
|
- /url: /examples/playground
|
|
66
|
-
- link "Authentication" [ref=
|
|
63
|
+
- link "Authentication" [ref=e49] [cursor=pointer]:
|
|
67
64
|
- /url: /examples/authentication
|
|
68
|
-
- generic [ref=
|
|
69
|
-
- generic [ref=
|
|
70
|
-
- combobox "Theme" [ref=
|
|
71
|
-
- generic [ref=
|
|
65
|
+
- generic [ref=e50]:
|
|
66
|
+
- generic [ref=e51]: Theme
|
|
67
|
+
- combobox "Theme" [ref=e52]:
|
|
68
|
+
- generic [ref=e53]: "Theme:"
|
|
72
69
|
- generic: Neutral
|
|
73
70
|
- img
|
|
74
|
-
- button "Copy Code" [ref=
|
|
71
|
+
- button "Copy Code" [ref=e54]:
|
|
75
72
|
- img
|
|
76
|
-
- generic [ref=
|
|
77
|
-
- generic [ref=
|
|
78
|
-
- generic [ref=
|
|
79
|
-
- group "Payment Method" [ref=
|
|
80
|
-
- generic [ref=
|
|
81
|
-
- paragraph [ref=
|
|
82
|
-
- generic [ref=
|
|
83
|
-
- group [ref=
|
|
84
|
-
- generic [ref=
|
|
85
|
-
- textbox "Name on Card" [ref=
|
|
73
|
+
- generic [ref=e55]: Copy Code
|
|
74
|
+
- generic [ref=e59]:
|
|
75
|
+
- generic [ref=e63]:
|
|
76
|
+
- group "Payment Method" [ref=e64]:
|
|
77
|
+
- generic [ref=e65]: Payment Method
|
|
78
|
+
- paragraph [ref=e66]: All transactions are secure and encrypted
|
|
79
|
+
- generic [ref=e67]:
|
|
80
|
+
- group [ref=e68]:
|
|
81
|
+
- generic [ref=e69]: Name on Card
|
|
82
|
+
- textbox "Name on Card" [ref=e70]:
|
|
86
83
|
- /placeholder: John Doe
|
|
87
|
-
- generic [ref=
|
|
88
|
-
- group [ref=
|
|
89
|
-
- generic [ref=
|
|
90
|
-
- textbox "Card Number" [ref=
|
|
84
|
+
- generic [ref=e71]:
|
|
85
|
+
- group [ref=e72]:
|
|
86
|
+
- generic [ref=e73]: Card Number
|
|
87
|
+
- textbox "Card Number" [ref=e74]:
|
|
91
88
|
- /placeholder: 1234 5678 9012 3456
|
|
92
|
-
- paragraph [ref=
|
|
93
|
-
- group [ref=
|
|
94
|
-
- generic [ref=
|
|
95
|
-
- textbox "CVV" [ref=
|
|
89
|
+
- paragraph [ref=e75]: Enter your 16-digit number.
|
|
90
|
+
- group [ref=e76]:
|
|
91
|
+
- generic [ref=e77]: CVV
|
|
92
|
+
- textbox "CVV" [ref=e78]:
|
|
96
93
|
- /placeholder: "123"
|
|
97
|
-
- generic [ref=
|
|
98
|
-
- group [ref=
|
|
99
|
-
- generic [ref=
|
|
100
|
-
- combobox "Month" [ref=
|
|
94
|
+
- generic [ref=e79]:
|
|
95
|
+
- group [ref=e80]:
|
|
96
|
+
- generic [ref=e81]: Month
|
|
97
|
+
- combobox "Month" [ref=e82]:
|
|
101
98
|
- generic: MM
|
|
102
99
|
- img
|
|
103
|
-
- combobox [ref=
|
|
104
|
-
- group [ref=
|
|
105
|
-
- generic [ref=
|
|
106
|
-
- combobox "Year" [ref=
|
|
100
|
+
- combobox [ref=e83]
|
|
101
|
+
- group [ref=e84]:
|
|
102
|
+
- generic [ref=e85]: Year
|
|
103
|
+
- combobox "Year" [ref=e86]:
|
|
107
104
|
- generic: YYYY
|
|
108
105
|
- img
|
|
109
|
-
- combobox [ref=
|
|
110
|
-
- group "Billing Address" [ref=
|
|
111
|
-
- generic [ref=
|
|
112
|
-
- paragraph [ref=
|
|
113
|
-
- group [ref=
|
|
114
|
-
- checkbox "Same as shipping address" [checked] [ref=
|
|
106
|
+
- combobox [ref=e87]
|
|
107
|
+
- group "Billing Address" [ref=e89]:
|
|
108
|
+
- generic [ref=e90]: Billing Address
|
|
109
|
+
- paragraph [ref=e91]: The billing address associated with your payment method
|
|
110
|
+
- group [ref=e93]:
|
|
111
|
+
- checkbox "Same as shipping address" [checked] [ref=e94]:
|
|
115
112
|
- generic:
|
|
116
113
|
- img
|
|
117
114
|
- checkbox [checked]
|
|
118
|
-
- generic [ref=
|
|
119
|
-
- group [ref=
|
|
120
|
-
- group [ref=
|
|
121
|
-
- generic [ref=
|
|
122
|
-
- textbox "Comments" [ref=
|
|
115
|
+
- generic [ref=e95]: Same as shipping address
|
|
116
|
+
- group [ref=e97]:
|
|
117
|
+
- group [ref=e99]:
|
|
118
|
+
- generic [ref=e100]: Comments
|
|
119
|
+
- textbox "Comments" [ref=e101]:
|
|
123
120
|
- /placeholder: Add any additional comments
|
|
124
|
-
- group [ref=
|
|
125
|
-
- button "Submit" [ref=
|
|
126
|
-
- button "Cancel" [ref=
|
|
127
|
-
- generic [ref=
|
|
128
|
-
- generic [ref=
|
|
129
|
-
- generic [ref=
|
|
130
|
-
- generic [ref=
|
|
131
|
-
- img "@shadcn" [ref=
|
|
132
|
-
- img "@maxleiter" [ref=
|
|
133
|
-
- img "@evilrabbit" [ref=
|
|
134
|
-
- generic [ref=
|
|
135
|
-
- generic [ref=
|
|
136
|
-
- button "Invite Members" [ref=
|
|
121
|
+
- group [ref=e102]:
|
|
122
|
+
- button "Submit" [ref=e103]
|
|
123
|
+
- button "Cancel" [ref=e104]
|
|
124
|
+
- generic [ref=e105]:
|
|
125
|
+
- generic [ref=e106]:
|
|
126
|
+
- generic [ref=e107]:
|
|
127
|
+
- generic [ref=e109]:
|
|
128
|
+
- img "@shadcn" [ref=e111]
|
|
129
|
+
- img "@maxleiter" [ref=e113]
|
|
130
|
+
- img "@evilrabbit" [ref=e115]
|
|
131
|
+
- generic [ref=e116]: No Team Members
|
|
132
|
+
- generic [ref=e117]: Invite your team to collaborate on this project.
|
|
133
|
+
- button "Invite Members" [ref=e119]:
|
|
137
134
|
- img
|
|
138
135
|
- text: Invite Members
|
|
139
|
-
- generic [ref=
|
|
140
|
-
- generic [ref=
|
|
141
|
-
- status "Loading"
|
|
142
|
-
- text: Syncing
|
|
143
|
-
- generic [ref=e124]:
|
|
144
|
-
- status "Loading"
|
|
145
|
-
- text: Updating
|
|
146
|
-
- generic [ref=e125]:
|
|
136
|
+
- generic [ref=e120]:
|
|
137
|
+
- generic [ref=e121]:
|
|
147
138
|
- status "Loading"
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
- button "Add" [ref=e128]:
|
|
152
|
-
- img
|
|
153
|
-
- group [ref=e129]:
|
|
154
|
-
- group [ref=e130]:
|
|
155
|
-
- textbox "Send a message..." [ref=e131]
|
|
156
|
-
- group [ref=e132]:
|
|
157
|
-
- button "Voice Mode" [ref=e133]:
|
|
158
|
-
- img
|
|
159
|
-
- group [ref=e135]:
|
|
160
|
-
- generic [ref=e136]: Price Range
|
|
161
|
-
- paragraph [ref=e137]: Set your budget range ($200 - 800).
|
|
162
|
-
- generic "Price Range" [ref=e138]:
|
|
163
|
-
- slider "Minimum" [ref=e142]
|
|
164
|
-
- slider "Maximum" [ref=e144]
|
|
165
|
-
- generic [ref=e145]:
|
|
166
|
-
- group [ref=e146]:
|
|
167
|
-
- textbox "Search..." [ref=e147]
|
|
168
|
-
- group [ref=e148]:
|
|
169
|
-
- img [ref=e149]
|
|
170
|
-
- group [ref=e152]: 12 results
|
|
171
|
-
- group [ref=e153]:
|
|
172
|
-
- textbox "example.com" [ref=e154]
|
|
173
|
-
- group [ref=e155]:
|
|
174
|
-
- generic [ref=e156]: https://
|
|
175
|
-
- group [ref=e157]:
|
|
176
|
-
- button "Info" [ref=e158]:
|
|
177
|
-
- img
|
|
178
|
-
- group [ref=e159]:
|
|
179
|
-
- textbox "Ask, Search or Chat..." [ref=e160]
|
|
180
|
-
- group [ref=e161]:
|
|
181
|
-
- button "Add" [ref=e162]:
|
|
182
|
-
- img
|
|
183
|
-
- button "Auto" [ref=e163]
|
|
184
|
-
- generic [ref=e164]: 52% used
|
|
185
|
-
- button "Send" [ref=e165]:
|
|
186
|
-
- img
|
|
187
|
-
- generic [ref=e166]: Send
|
|
188
|
-
- group [ref=e167]:
|
|
189
|
-
- textbox "@shadcn" [ref=e168]
|
|
190
|
-
- group [ref=e169]:
|
|
191
|
-
- img [ref=e171]
|
|
192
|
-
- generic [ref=e173]:
|
|
193
|
-
- generic [ref=e174]:
|
|
194
|
-
- generic [ref=e175]: Input Secure
|
|
195
|
-
- group [ref=e176]:
|
|
196
|
-
- textbox "Input Secure" [ref=e177]
|
|
197
|
-
- group [ref=e178]:
|
|
198
|
-
- button "Info" [ref=e179]:
|
|
199
|
-
- img
|
|
200
|
-
- group [ref=e180]: https://
|
|
201
|
-
- group [ref=e181]:
|
|
202
|
-
- button "Favorite" [ref=e182]:
|
|
203
|
-
- img
|
|
204
|
-
- generic [ref=e183]:
|
|
205
|
-
- generic [ref=e184]:
|
|
206
|
-
- generic [ref=e185]:
|
|
207
|
-
- generic [ref=e186]: Two-factor authentication
|
|
208
|
-
- paragraph [ref=e187]: Verify via email or phone number.
|
|
209
|
-
- button "Enable" [ref=e189]
|
|
210
|
-
- link "Your profile has been verified." [ref=e190] [cursor=pointer]:
|
|
211
|
-
- /url: "#"
|
|
212
|
-
- generic [ref=e191]:
|
|
213
|
-
- img
|
|
214
|
-
- generic [ref=e193]: Your profile has been verified.
|
|
215
|
-
- img [ref=e195]
|
|
216
|
-
- generic [ref=e198]: Appearance Settings
|
|
217
|
-
- group [ref=e199]:
|
|
218
|
-
- generic [ref=e200]:
|
|
219
|
-
- group "Compute Environment" [ref=e201]:
|
|
220
|
-
- generic [ref=e202]: Compute Environment
|
|
221
|
-
- paragraph [ref=e203]: Select the compute environment for your cluster.
|
|
222
|
-
- radiogroup [ref=e204]:
|
|
223
|
-
- group [ref=e206]:
|
|
224
|
-
- generic [ref=e207]:
|
|
225
|
-
- generic [ref=e208]: Kubernetes
|
|
226
|
-
- paragraph [ref=e209]: Run GPU workloads on a K8s configured cluster. This is the default.
|
|
227
|
-
- radio "Kubernetes" [checked] [ref=e210]:
|
|
228
|
-
- img [ref=e211]
|
|
229
|
-
- group [ref=e214]:
|
|
230
|
-
- generic [ref=e215]:
|
|
231
|
-
- generic [ref=e216]: Virtual Machine
|
|
232
|
-
- paragraph [ref=e217]: Access a VM configured cluster to run workloads. (Coming soon)
|
|
233
|
-
- radio "Virtual Machine" [ref=e218]
|
|
234
|
-
- group [ref=e220]:
|
|
235
|
-
- generic [ref=e221]:
|
|
236
|
-
- generic [ref=e222]: Number of GPUs
|
|
237
|
-
- paragraph [ref=e223]: You can add more later.
|
|
238
|
-
- group [ref=e224]:
|
|
239
|
-
- textbox "Number of GPUs" [ref=e225]: "8"
|
|
240
|
-
- button "Decrement" [ref=e226]:
|
|
241
|
-
- img
|
|
242
|
-
- button "Increment" [ref=e227]:
|
|
243
|
-
- img
|
|
244
|
-
- group [ref=e229]:
|
|
245
|
-
- generic [ref=e230]:
|
|
246
|
-
- generic [ref=e231]: Wallpaper Tinting
|
|
247
|
-
- paragraph [ref=e232]: Allow the wallpaper to be tinted.
|
|
248
|
-
- switch "Wallpaper Tinting" [checked] [ref=e233]
|
|
249
|
-
- generic [ref=e234]:
|
|
250
|
-
- group [ref=e236]:
|
|
251
|
-
- generic [ref=e237]: Prompt
|
|
252
|
-
- group [ref=e238]:
|
|
253
|
-
- textbox "Prompt" [ref=e239]:
|
|
254
|
-
- /placeholder: Ask, search, or make anything...
|
|
255
|
-
- group [ref=e240]:
|
|
256
|
-
- button "Add context" [ref=e241]:
|
|
257
|
-
- img
|
|
258
|
-
- text: Add context
|
|
259
|
-
- group [ref=e243]:
|
|
260
|
-
- button "Attach file" [ref=e244]:
|
|
261
|
-
- img
|
|
262
|
-
- button "Auto" [ref=e245]
|
|
263
|
-
- button "All Sources" [ref=e246]:
|
|
264
|
-
- img
|
|
265
|
-
- text: All Sources
|
|
266
|
-
- button "Send" [ref=e247]:
|
|
267
|
-
- img
|
|
268
|
-
- group [ref=e248]:
|
|
269
|
-
- group [ref=e249]:
|
|
270
|
-
- button "Go Back" [ref=e250]:
|
|
271
|
-
- img
|
|
272
|
-
- group [ref=e251]:
|
|
273
|
-
- button "Archive" [ref=e252]
|
|
274
|
-
- button "Report" [ref=e253]
|
|
275
|
-
- group [ref=e254]:
|
|
276
|
-
- button "Snooze" [ref=e255]
|
|
277
|
-
- button "More Options" [ref=e256]:
|
|
278
|
-
- img
|
|
279
|
-
- group [ref=e258]:
|
|
280
|
-
- checkbox "I agree to the terms and conditions" [checked] [ref=e259]:
|
|
281
|
-
- generic:
|
|
282
|
-
- img
|
|
283
|
-
- generic [ref=e260]: I agree to the terms and conditions
|
|
284
|
-
- generic [ref=e261]:
|
|
285
|
-
- group [ref=e262]:
|
|
286
|
-
- group [ref=e263]:
|
|
287
|
-
- button "1" [ref=e264]
|
|
288
|
-
- button "2" [ref=e265]
|
|
289
|
-
- button "3" [ref=e266]
|
|
290
|
-
- group [ref=e267]:
|
|
291
|
-
- button "Previous" [ref=e268]:
|
|
292
|
-
- img
|
|
293
|
-
- button "Next" [ref=e269]:
|
|
294
|
-
- img
|
|
295
|
-
- group [ref=e270]:
|
|
296
|
-
- button "Copilot" [ref=e271]:
|
|
297
|
-
- img
|
|
298
|
-
- text: Copilot
|
|
299
|
-
- button "Open Popover" [ref=e272]:
|
|
300
|
-
- img
|
|
301
|
-
- group "How did you hear about us?" [ref=e277]:
|
|
302
|
-
- generic [ref=e278]: How did you hear about us?
|
|
303
|
-
- paragraph [ref=e279]: Select the option that best describes how you heard about us.
|
|
304
|
-
- generic [ref=e280]:
|
|
305
|
-
- group [ref=e282]:
|
|
306
|
-
- checkbox "Social Media" [checked] [ref=e283]:
|
|
307
|
-
- generic:
|
|
308
|
-
- img
|
|
309
|
-
- checkbox [checked]
|
|
310
|
-
- generic [ref=e284]: Social Media
|
|
311
|
-
- group [ref=e286]:
|
|
312
|
-
- checkbox "Search Engine" [ref=e287]
|
|
313
|
-
- checkbox
|
|
314
|
-
- generic [ref=e288]: Search Engine
|
|
315
|
-
- group [ref=e290]:
|
|
316
|
-
- checkbox "Referral" [ref=e291]
|
|
317
|
-
- checkbox
|
|
318
|
-
- generic [ref=e292]: Referral
|
|
319
|
-
- group [ref=e294]:
|
|
320
|
-
- checkbox "Other" [ref=e295]
|
|
321
|
-
- checkbox
|
|
322
|
-
- generic [ref=e296]: Other
|
|
323
|
-
- generic [ref=e297]:
|
|
324
|
-
- generic [ref=e298]:
|
|
325
|
-
- generic [ref=e299]:
|
|
326
|
-
- status "Loading"
|
|
327
|
-
- generic [ref=e300]: Processing your request
|
|
328
|
-
- generic [ref=e301]: Please wait while we process your request. Do not refresh the page.
|
|
329
|
-
- button "Cancel" [ref=e303]
|
|
330
|
-
- contentinfo [ref=e304]:
|
|
331
|
-
- generic [ref=e307]:
|
|
332
|
-
- text: Built by
|
|
333
|
-
- link "shadcn" [ref=e308] [cursor=pointer]:
|
|
334
|
-
- /url: https://twitter.com/shadcn
|
|
335
|
-
- text: at
|
|
336
|
-
- link "Vercel" [ref=e309] [cursor=pointer]:
|
|
337
|
-
- /url: https://vercel.com/new?utm_source=shadcn_site&utm_medium=web&utm_campaign=docs_cta_deploy_now_callout
|
|
338
|
-
- text: . The source code is available on
|
|
339
|
-
- link "GitHub" [ref=e310] [cursor=pointer]:
|
|
340
|
-
- /url: https://github.com/shadcn-ui/ui
|
|
341
|
-
- text: .
|
|
342
|
-
- region "Notifications alt+T"
|
|
343
|
-
- alert [ref=e311]
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
[Truncated to 6000 characters. Better manage your logs or paginate them to read the full logs]
|
|
@@ -2,17 +2,19 @@ import { startPlayWriterCDPRelayServer } from './extension/cdp-relay.js'
|
|
|
2
2
|
import fs from 'node:fs'
|
|
3
3
|
import path from 'node:path'
|
|
4
4
|
import { fileURLToPath } from 'node:url'
|
|
5
|
+
import util from 'node:util'
|
|
5
6
|
|
|
6
7
|
const __dirname = path.dirname(fileURLToPath(import.meta.url))
|
|
7
8
|
const logFilePath = path.join(__dirname, '..', 'relay-server.log')
|
|
8
9
|
|
|
10
|
+
process.title = 'playwriter-ws-server'
|
|
9
11
|
fs.writeFileSync(logFilePath, '')
|
|
10
12
|
|
|
11
13
|
const log = (...args: any[]) => {
|
|
12
14
|
const message = args.map(arg =>
|
|
13
|
-
typeof arg === 'string' ? arg :
|
|
15
|
+
typeof arg === 'string' ? arg : util.inspect(arg, { depth: null, colors: false })
|
|
14
16
|
).join(' ')
|
|
15
|
-
fs.
|
|
17
|
+
return fs.promises.appendFile(logFilePath, message + '\n')
|
|
16
18
|
}
|
|
17
19
|
|
|
18
20
|
const logger = {
|
|
@@ -20,6 +22,21 @@ const logger = {
|
|
|
20
22
|
error: log
|
|
21
23
|
}
|
|
22
24
|
|
|
25
|
+
process.on('uncaughtException', async (err) => {
|
|
26
|
+
await logger.error('Uncaught Exception:', err);
|
|
27
|
+
process.exit(1);
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
process.on('unhandledRejection', async (reason) => {
|
|
31
|
+
await logger.error('Unhandled Rejection:', reason);
|
|
32
|
+
process.exit(1);
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
process.on('exit', async (code) => {
|
|
36
|
+
await logger.log(`Process exiting with code: ${code}`);
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
|
|
23
40
|
export async function startServer({ port = 19988 }: { port?: number } = {}) {
|
|
24
41
|
const server = await startPlayWriterCDPRelayServer({ port, logger })
|
|
25
42
|
|
package/src/utils.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export function getCdpUrl({ port = 19988, host = '127.0.0.1'
|
|
2
|
-
const id =
|
|
1
|
+
export function getCdpUrl({ port = 19988, host = '127.0.0.1' }: { port?: number; host?: string } = {}) {
|
|
2
|
+
const id = `${Math.random().toString(36).substring(2, 15)}_${Date.now()}`
|
|
3
3
|
return `ws://${host}:${port}/cdp/${id}`
|
|
4
4
|
}
|