qunitx-cli 0.9.4 → 0.9.7

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 (43) hide show
  1. package/bin/qunitx.js +71 -0
  2. package/dist/cli.js +2009 -0
  3. package/package.json +16 -7
  4. package/cli.ts +0 -39
  5. package/deno.json +0 -18
  6. package/deno.lock +0 -646
  7. package/lib/commands/generate.ts +0 -33
  8. package/lib/commands/help.ts +0 -37
  9. package/lib/commands/init.ts +0 -77
  10. package/lib/commands/run/tests-in-browser.ts +0 -221
  11. package/lib/commands/run.ts +0 -279
  12. package/lib/servers/http.ts +0 -321
  13. package/lib/setup/bind-server-to-port.ts +0 -14
  14. package/lib/setup/browser.ts +0 -101
  15. package/lib/setup/config.ts +0 -55
  16. package/lib/setup/default-project-config-values.ts +0 -9
  17. package/lib/setup/file-watcher.ts +0 -134
  18. package/lib/setup/fs-tree.ts +0 -60
  19. package/lib/setup/keyboard-events.ts +0 -38
  20. package/lib/setup/test-file-paths.ts +0 -74
  21. package/lib/setup/web-server.ts +0 -274
  22. package/lib/setup/write-output-static-files.ts +0 -33
  23. package/lib/tap/display-final-result.ts +0 -25
  24. package/lib/tap/display-test-result.ts +0 -109
  25. package/lib/tap/dump-yaml.ts +0 -84
  26. package/lib/types.ts +0 -61
  27. package/lib/utils/chromium-args.ts +0 -18
  28. package/lib/utils/color.ts +0 -66
  29. package/lib/utils/early-chrome.ts +0 -39
  30. package/lib/utils/find-chrome.ts +0 -38
  31. package/lib/utils/find-internal-assets-from-html.ts +0 -18
  32. package/lib/utils/find-project-root.ts +0 -20
  33. package/lib/utils/indent-string.ts +0 -24
  34. package/lib/utils/listen-to-keyboard-key.ts +0 -57
  35. package/lib/utils/parse-cli-flags.ts +0 -95
  36. package/lib/utils/path-exists.ts +0 -21
  37. package/lib/utils/perf-logger.ts +0 -25
  38. package/lib/utils/pre-launch-chrome.ts +0 -45
  39. package/lib/utils/read-boilerplate.ts +0 -15
  40. package/lib/utils/resolve-port-number-for.ts +0 -29
  41. package/lib/utils/run-user-module.ts +0 -28
  42. package/lib/utils/search-in-parent-directories.ts +0 -25
  43. package/lib/utils/time-counter.ts +0 -19
package/deno.lock DELETED
@@ -1,646 +0,0 @@
1
- {
2
- "version": "5",
3
- "specifiers": {
4
- "jsr:@std/fmt@*": "1.0.9",
5
- "npm:@types/js-yaml@*": "4.0.9",
6
- "npm:@types/picomatch@*": "4.0.2",
7
- "npm:@types/ws@*": "8.18.1",
8
- "npm:cors@^2.8.6": "2.8.6",
9
- "npm:esbuild@*": "0.27.4",
10
- "npm:esbuild@~0.27.3": "0.27.4",
11
- "npm:express@^5.2.1": "5.2.1",
12
- "npm:js-yaml@^4.1.1": "4.1.1",
13
- "npm:picomatch@*": "4.0.4",
14
- "npm:playwright-core@^1.58.2": "1.58.2",
15
- "npm:prettier@^3.8.1": "3.8.1",
16
- "npm:qunitx@^1.0.4": "1.0.4",
17
- "npm:typescript@5": "5.9.3",
18
- "npm:ws@*": "8.20.0",
19
- "npm:ws@^8.20.0": "8.20.0"
20
- },
21
- "jsr": {
22
- "@std/fmt@1.0.9": {
23
- "integrity": "2487343e8899fb2be5d0e3d35013e54477ada198854e52dd05ed0422eddcabe0"
24
- }
25
- },
26
- "npm": {
27
- "@esbuild/aix-ppc64@0.27.4": {
28
- "integrity": "sha512-cQPwL2mp2nSmHHJlCyoXgHGhbEPMrEEU5xhkcy3Hs/O7nGZqEpZ2sUtLaL9MORLtDfRvVl2/3PAuEkYZH0Ty8Q==",
29
- "os": ["aix"],
30
- "cpu": ["ppc64"]
31
- },
32
- "@esbuild/android-arm64@0.27.4": {
33
- "integrity": "sha512-gdLscB7v75wRfu7QSm/zg6Rx29VLdy9eTr2t44sfTW7CxwAtQghZ4ZnqHk3/ogz7xao0QAgrkradbBzcqFPasw==",
34
- "os": ["android"],
35
- "cpu": ["arm64"]
36
- },
37
- "@esbuild/android-arm@0.27.4": {
38
- "integrity": "sha512-X9bUgvxiC8CHAGKYufLIHGXPJWnr0OCdR0anD2e21vdvgCI8lIfqFbnoeOz7lBjdrAGUhqLZLcQo6MLhTO2DKQ==",
39
- "os": ["android"],
40
- "cpu": ["arm"]
41
- },
42
- "@esbuild/android-x64@0.27.4": {
43
- "integrity": "sha512-PzPFnBNVF292sfpfhiyiXCGSn9HZg5BcAz+ivBuSsl6Rk4ga1oEXAamhOXRFyMcjwr2DVtm40G65N3GLeH1Lvw==",
44
- "os": ["android"],
45
- "cpu": ["x64"]
46
- },
47
- "@esbuild/darwin-arm64@0.27.4": {
48
- "integrity": "sha512-b7xaGIwdJlht8ZFCvMkpDN6uiSmnxxK56N2GDTMYPr2/gzvfdQN8rTfBsvVKmIVY/X7EM+/hJKEIbbHs9oA4tQ==",
49
- "os": ["darwin"],
50
- "cpu": ["arm64"]
51
- },
52
- "@esbuild/darwin-x64@0.27.4": {
53
- "integrity": "sha512-sR+OiKLwd15nmCdqpXMnuJ9W2kpy0KigzqScqHI3Hqwr7IXxBp3Yva+yJwoqh7rE8V77tdoheRYataNKL4QrPw==",
54
- "os": ["darwin"],
55
- "cpu": ["x64"]
56
- },
57
- "@esbuild/freebsd-arm64@0.27.4": {
58
- "integrity": "sha512-jnfpKe+p79tCnm4GVav68A7tUFeKQwQyLgESwEAUzyxk/TJr4QdGog9sqWNcUbr/bZt/O/HXouspuQDd9JxFSw==",
59
- "os": ["freebsd"],
60
- "cpu": ["arm64"]
61
- },
62
- "@esbuild/freebsd-x64@0.27.4": {
63
- "integrity": "sha512-2kb4ceA/CpfUrIcTUl1wrP/9ad9Atrp5J94Lq69w7UwOMolPIGrfLSvAKJp0RTvkPPyn6CIWrNy13kyLikZRZQ==",
64
- "os": ["freebsd"],
65
- "cpu": ["x64"]
66
- },
67
- "@esbuild/linux-arm64@0.27.4": {
68
- "integrity": "sha512-7nQOttdzVGth1iz57kxg9uCz57dxQLHWxopL6mYuYthohPKEK0vU0C3O21CcBK6KDlkYVcnDXY099HcCDXd9dA==",
69
- "os": ["linux"],
70
- "cpu": ["arm64"]
71
- },
72
- "@esbuild/linux-arm@0.27.4": {
73
- "integrity": "sha512-aBYgcIxX/wd5n2ys0yESGeYMGF+pv6g0DhZr3G1ZG4jMfruU9Tl1i2Z+Wnj9/KjGz1lTLCcorqE2viePZqj4Eg==",
74
- "os": ["linux"],
75
- "cpu": ["arm"]
76
- },
77
- "@esbuild/linux-ia32@0.27.4": {
78
- "integrity": "sha512-oPtixtAIzgvzYcKBQM/qZ3R+9TEUd1aNJQu0HhGyqtx6oS7qTpvjheIWBbes4+qu1bNlo2V4cbkISr8q6gRBFA==",
79
- "os": ["linux"],
80
- "cpu": ["ia32"]
81
- },
82
- "@esbuild/linux-loong64@0.27.4": {
83
- "integrity": "sha512-8mL/vh8qeCoRcFH2nM8wm5uJP+ZcVYGGayMavi8GmRJjuI3g1v6Z7Ni0JJKAJW+m0EtUuARb6Lmp4hMjzCBWzA==",
84
- "os": ["linux"],
85
- "cpu": ["loong64"]
86
- },
87
- "@esbuild/linux-mips64el@0.27.4": {
88
- "integrity": "sha512-1RdrWFFiiLIW7LQq9Q2NES+HiD4NyT8Itj9AUeCl0IVCA459WnPhREKgwrpaIfTOe+/2rdntisegiPWn/r/aAw==",
89
- "os": ["linux"],
90
- "cpu": ["mips64el"]
91
- },
92
- "@esbuild/linux-ppc64@0.27.4": {
93
- "integrity": "sha512-tLCwNG47l3sd9lpfyx9LAGEGItCUeRCWeAx6x2Jmbav65nAwoPXfewtAdtbtit/pJFLUWOhpv0FpS6GQAmPrHA==",
94
- "os": ["linux"],
95
- "cpu": ["ppc64"]
96
- },
97
- "@esbuild/linux-riscv64@0.27.4": {
98
- "integrity": "sha512-BnASypppbUWyqjd1KIpU4AUBiIhVr6YlHx/cnPgqEkNoVOhHg+YiSVxM1RLfiy4t9cAulbRGTNCKOcqHrEQLIw==",
99
- "os": ["linux"],
100
- "cpu": ["riscv64"]
101
- },
102
- "@esbuild/linux-s390x@0.27.4": {
103
- "integrity": "sha512-+eUqgb/Z7vxVLezG8bVB9SfBie89gMueS+I0xYh2tJdw3vqA/0ImZJ2ROeWwVJN59ihBeZ7Tu92dF/5dy5FttA==",
104
- "os": ["linux"],
105
- "cpu": ["s390x"]
106
- },
107
- "@esbuild/linux-x64@0.27.4": {
108
- "integrity": "sha512-S5qOXrKV8BQEzJPVxAwnryi2+Iq5pB40gTEIT69BQONqR7JH1EPIcQ/Uiv9mCnn05jff9umq/5nqzxlqTOg9NA==",
109
- "os": ["linux"],
110
- "cpu": ["x64"]
111
- },
112
- "@esbuild/netbsd-arm64@0.27.4": {
113
- "integrity": "sha512-xHT8X4sb0GS8qTqiwzHqpY00C95DPAq7nAwX35Ie/s+LO9830hrMd3oX0ZMKLvy7vsonee73x0lmcdOVXFzd6Q==",
114
- "os": ["netbsd"],
115
- "cpu": ["arm64"]
116
- },
117
- "@esbuild/netbsd-x64@0.27.4": {
118
- "integrity": "sha512-RugOvOdXfdyi5Tyv40kgQnI0byv66BFgAqjdgtAKqHoZTbTF2QqfQrFwa7cHEORJf6X2ht+l9ABLMP0dnKYsgg==",
119
- "os": ["netbsd"],
120
- "cpu": ["x64"]
121
- },
122
- "@esbuild/openbsd-arm64@0.27.4": {
123
- "integrity": "sha512-2MyL3IAaTX+1/qP0O1SwskwcwCoOI4kV2IBX1xYnDDqthmq5ArrW94qSIKCAuRraMgPOmG0RDTA74mzYNQA9ow==",
124
- "os": ["openbsd"],
125
- "cpu": ["arm64"]
126
- },
127
- "@esbuild/openbsd-x64@0.27.4": {
128
- "integrity": "sha512-u8fg/jQ5aQDfsnIV6+KwLOf1CmJnfu1ShpwqdwC0uA7ZPwFws55Ngc12vBdeUdnuWoQYx/SOQLGDcdlfXhYmXQ==",
129
- "os": ["openbsd"],
130
- "cpu": ["x64"]
131
- },
132
- "@esbuild/openharmony-arm64@0.27.4": {
133
- "integrity": "sha512-JkTZrl6VbyO8lDQO3yv26nNr2RM2yZzNrNHEsj9bm6dOwwu9OYN28CjzZkH57bh4w0I2F7IodpQvUAEd1mbWXg==",
134
- "os": ["openharmony"],
135
- "cpu": ["arm64"]
136
- },
137
- "@esbuild/sunos-x64@0.27.4": {
138
- "integrity": "sha512-/gOzgaewZJfeJTlsWhvUEmUG4tWEY2Spp5M20INYRg2ZKl9QPO3QEEgPeRtLjEWSW8FilRNacPOg8R1uaYkA6g==",
139
- "os": ["sunos"],
140
- "cpu": ["x64"]
141
- },
142
- "@esbuild/win32-arm64@0.27.4": {
143
- "integrity": "sha512-Z9SExBg2y32smoDQdf1HRwHRt6vAHLXcxD2uGgO/v2jK7Y718Ix4ndsbNMU/+1Qiem9OiOdaqitioZwxivhXYg==",
144
- "os": ["win32"],
145
- "cpu": ["arm64"]
146
- },
147
- "@esbuild/win32-ia32@0.27.4": {
148
- "integrity": "sha512-DAyGLS0Jz5G5iixEbMHi5KdiApqHBWMGzTtMiJ72ZOLhbu/bzxgAe8Ue8CTS3n3HbIUHQz/L51yMdGMeoxXNJw==",
149
- "os": ["win32"],
150
- "cpu": ["ia32"]
151
- },
152
- "@esbuild/win32-x64@0.27.4": {
153
- "integrity": "sha512-+knoa0BDoeXgkNvvV1vvbZX4+hizelrkwmGJBdT17t8FNPwG2lKemmuMZlmaNQ3ws3DKKCxpb4zRZEIp3UxFCg==",
154
- "os": ["win32"],
155
- "cpu": ["x64"]
156
- },
157
- "@types/js-yaml@4.0.9": {
158
- "integrity": "sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg=="
159
- },
160
- "@types/node@25.5.0": {
161
- "integrity": "sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==",
162
- "dependencies": [
163
- "undici-types"
164
- ]
165
- },
166
- "@types/picomatch@4.0.2": {
167
- "integrity": "sha512-qHHxQ+P9PysNEGbALT8f8YOSHW0KJu6l2xU8DYY0fu/EmGxXdVnuTLvFUvBgPJMSqXq29SYHveejeAha+4AYgA=="
168
- },
169
- "@types/ws@8.18.1": {
170
- "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==",
171
- "dependencies": [
172
- "@types/node"
173
- ]
174
- },
175
- "accepts@2.0.0": {
176
- "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==",
177
- "dependencies": [
178
- "mime-types",
179
- "negotiator"
180
- ]
181
- },
182
- "argparse@2.0.1": {
183
- "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
184
- },
185
- "body-parser@2.2.2": {
186
- "integrity": "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==",
187
- "dependencies": [
188
- "bytes",
189
- "content-type",
190
- "debug",
191
- "http-errors",
192
- "iconv-lite",
193
- "on-finished",
194
- "qs",
195
- "raw-body",
196
- "type-is"
197
- ]
198
- },
199
- "bytes@3.1.2": {
200
- "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="
201
- },
202
- "call-bind-apply-helpers@1.0.2": {
203
- "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
204
- "dependencies": [
205
- "es-errors",
206
- "function-bind"
207
- ]
208
- },
209
- "call-bound@1.0.4": {
210
- "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==",
211
- "dependencies": [
212
- "call-bind-apply-helpers",
213
- "get-intrinsic"
214
- ]
215
- },
216
- "content-disposition@1.0.1": {
217
- "integrity": "sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q=="
218
- },
219
- "content-type@1.0.5": {
220
- "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA=="
221
- },
222
- "cookie-signature@1.2.2": {
223
- "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg=="
224
- },
225
- "cookie@0.7.2": {
226
- "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w=="
227
- },
228
- "cors@2.8.6": {
229
- "integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==",
230
- "dependencies": [
231
- "object-assign",
232
- "vary"
233
- ]
234
- },
235
- "debug@4.4.3": {
236
- "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
237
- "dependencies": [
238
- "ms"
239
- ]
240
- },
241
- "depd@2.0.0": {
242
- "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="
243
- },
244
- "dunder-proto@1.0.1": {
245
- "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
246
- "dependencies": [
247
- "call-bind-apply-helpers",
248
- "es-errors",
249
- "gopd"
250
- ]
251
- },
252
- "ee-first@1.1.1": {
253
- "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
254
- },
255
- "encodeurl@2.0.0": {
256
- "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg=="
257
- },
258
- "es-define-property@1.0.1": {
259
- "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g=="
260
- },
261
- "es-errors@1.3.0": {
262
- "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw=="
263
- },
264
- "es-object-atoms@1.1.1": {
265
- "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
266
- "dependencies": [
267
- "es-errors"
268
- ]
269
- },
270
- "esbuild@0.27.4": {
271
- "integrity": "sha512-Rq4vbHnYkK5fws5NF7MYTU68FPRE1ajX7heQ/8QXXWqNgqqJ/GkmmyxIzUnf2Sr/bakf8l54716CcMGHYhMrrQ==",
272
- "optionalDependencies": [
273
- "@esbuild/aix-ppc64",
274
- "@esbuild/android-arm",
275
- "@esbuild/android-arm64",
276
- "@esbuild/android-x64",
277
- "@esbuild/darwin-arm64",
278
- "@esbuild/darwin-x64",
279
- "@esbuild/freebsd-arm64",
280
- "@esbuild/freebsd-x64",
281
- "@esbuild/linux-arm",
282
- "@esbuild/linux-arm64",
283
- "@esbuild/linux-ia32",
284
- "@esbuild/linux-loong64",
285
- "@esbuild/linux-mips64el",
286
- "@esbuild/linux-ppc64",
287
- "@esbuild/linux-riscv64",
288
- "@esbuild/linux-s390x",
289
- "@esbuild/linux-x64",
290
- "@esbuild/netbsd-arm64",
291
- "@esbuild/netbsd-x64",
292
- "@esbuild/openbsd-arm64",
293
- "@esbuild/openbsd-x64",
294
- "@esbuild/openharmony-arm64",
295
- "@esbuild/sunos-x64",
296
- "@esbuild/win32-arm64",
297
- "@esbuild/win32-ia32",
298
- "@esbuild/win32-x64"
299
- ],
300
- "scripts": true,
301
- "bin": true
302
- },
303
- "escape-html@1.0.3": {
304
- "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
305
- },
306
- "etag@1.8.1": {
307
- "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg=="
308
- },
309
- "express@5.2.1": {
310
- "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==",
311
- "dependencies": [
312
- "accepts",
313
- "body-parser",
314
- "content-disposition",
315
- "content-type",
316
- "cookie",
317
- "cookie-signature",
318
- "debug",
319
- "depd",
320
- "encodeurl",
321
- "escape-html",
322
- "etag",
323
- "finalhandler",
324
- "fresh",
325
- "http-errors",
326
- "merge-descriptors",
327
- "mime-types",
328
- "on-finished",
329
- "once",
330
- "parseurl",
331
- "proxy-addr",
332
- "qs",
333
- "range-parser",
334
- "router",
335
- "send",
336
- "serve-static",
337
- "statuses",
338
- "type-is",
339
- "vary"
340
- ]
341
- },
342
- "finalhandler@2.1.1": {
343
- "integrity": "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==",
344
- "dependencies": [
345
- "debug",
346
- "encodeurl",
347
- "escape-html",
348
- "on-finished",
349
- "parseurl",
350
- "statuses"
351
- ]
352
- },
353
- "forwarded@0.2.0": {
354
- "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow=="
355
- },
356
- "fresh@2.0.0": {
357
- "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A=="
358
- },
359
- "function-bind@1.1.2": {
360
- "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="
361
- },
362
- "get-intrinsic@1.3.0": {
363
- "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
364
- "dependencies": [
365
- "call-bind-apply-helpers",
366
- "es-define-property",
367
- "es-errors",
368
- "es-object-atoms",
369
- "function-bind",
370
- "get-proto",
371
- "gopd",
372
- "has-symbols",
373
- "hasown",
374
- "math-intrinsics"
375
- ]
376
- },
377
- "get-proto@1.0.1": {
378
- "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
379
- "dependencies": [
380
- "dunder-proto",
381
- "es-object-atoms"
382
- ]
383
- },
384
- "gopd@1.2.0": {
385
- "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg=="
386
- },
387
- "has-symbols@1.1.0": {
388
- "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ=="
389
- },
390
- "hasown@2.0.2": {
391
- "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
392
- "dependencies": [
393
- "function-bind"
394
- ]
395
- },
396
- "http-errors@2.0.1": {
397
- "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==",
398
- "dependencies": [
399
- "depd",
400
- "inherits",
401
- "setprototypeof",
402
- "statuses",
403
- "toidentifier"
404
- ]
405
- },
406
- "iconv-lite@0.7.2": {
407
- "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==",
408
- "dependencies": [
409
- "safer-buffer"
410
- ]
411
- },
412
- "inherits@2.0.4": {
413
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
414
- },
415
- "ipaddr.js@1.9.1": {
416
- "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="
417
- },
418
- "is-promise@4.0.0": {
419
- "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ=="
420
- },
421
- "js-yaml@4.1.1": {
422
- "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==",
423
- "dependencies": [
424
- "argparse"
425
- ],
426
- "bin": true
427
- },
428
- "math-intrinsics@1.1.0": {
429
- "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g=="
430
- },
431
- "media-typer@1.1.0": {
432
- "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw=="
433
- },
434
- "merge-descriptors@2.0.0": {
435
- "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g=="
436
- },
437
- "mime-db@1.54.0": {
438
- "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ=="
439
- },
440
- "mime-types@3.0.2": {
441
- "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==",
442
- "dependencies": [
443
- "mime-db"
444
- ]
445
- },
446
- "ms@2.1.3": {
447
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
448
- },
449
- "negotiator@1.0.0": {
450
- "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg=="
451
- },
452
- "object-assign@4.1.1": {
453
- "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="
454
- },
455
- "object-inspect@1.13.4": {
456
- "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew=="
457
- },
458
- "on-finished@2.4.1": {
459
- "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
460
- "dependencies": [
461
- "ee-first"
462
- ]
463
- },
464
- "once@1.4.0": {
465
- "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
466
- "dependencies": [
467
- "wrappy"
468
- ]
469
- },
470
- "parseurl@1.3.3": {
471
- "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
472
- },
473
- "path-to-regexp@8.3.0": {
474
- "integrity": "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA=="
475
- },
476
- "picomatch@4.0.4": {
477
- "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A=="
478
- },
479
- "playwright-core@1.58.2": {
480
- "integrity": "sha512-yZkEtftgwS8CsfYo7nm0KE8jsvm6i/PTgVtB8DL726wNf6H2IMsDuxCpJj59KDaxCtSnrWan2AeDqM7JBaultg==",
481
- "bin": true
482
- },
483
- "prettier@3.8.1": {
484
- "integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==",
485
- "bin": true
486
- },
487
- "proxy-addr@2.0.7": {
488
- "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
489
- "dependencies": [
490
- "forwarded",
491
- "ipaddr.js"
492
- ]
493
- },
494
- "qs@6.15.0": {
495
- "integrity": "sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ==",
496
- "dependencies": [
497
- "side-channel"
498
- ]
499
- },
500
- "qunitx@1.0.4": {
501
- "integrity": "sha512-iu3enOfQo5Ul5As+KFiN1Zm1kd8MWeeNcHFUbZpKYQn+y6f6V4yiDeehVc5LFSUFBOkutjnqHzZiqInCf0MutA=="
502
- },
503
- "range-parser@1.2.1": {
504
- "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
505
- },
506
- "raw-body@3.0.2": {
507
- "integrity": "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==",
508
- "dependencies": [
509
- "bytes",
510
- "http-errors",
511
- "iconv-lite",
512
- "unpipe"
513
- ]
514
- },
515
- "router@2.2.0": {
516
- "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==",
517
- "dependencies": [
518
- "debug",
519
- "depd",
520
- "is-promise",
521
- "parseurl",
522
- "path-to-regexp"
523
- ]
524
- },
525
- "safer-buffer@2.1.2": {
526
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
527
- },
528
- "send@1.2.1": {
529
- "integrity": "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==",
530
- "dependencies": [
531
- "debug",
532
- "encodeurl",
533
- "escape-html",
534
- "etag",
535
- "fresh",
536
- "http-errors",
537
- "mime-types",
538
- "ms",
539
- "on-finished",
540
- "range-parser",
541
- "statuses"
542
- ]
543
- },
544
- "serve-static@2.2.1": {
545
- "integrity": "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==",
546
- "dependencies": [
547
- "encodeurl",
548
- "escape-html",
549
- "parseurl",
550
- "send"
551
- ]
552
- },
553
- "setprototypeof@1.2.0": {
554
- "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
555
- },
556
- "side-channel-list@1.0.0": {
557
- "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==",
558
- "dependencies": [
559
- "es-errors",
560
- "object-inspect"
561
- ]
562
- },
563
- "side-channel-map@1.0.1": {
564
- "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==",
565
- "dependencies": [
566
- "call-bound",
567
- "es-errors",
568
- "get-intrinsic",
569
- "object-inspect"
570
- ]
571
- },
572
- "side-channel-weakmap@1.0.2": {
573
- "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==",
574
- "dependencies": [
575
- "call-bound",
576
- "es-errors",
577
- "get-intrinsic",
578
- "object-inspect",
579
- "side-channel-map"
580
- ]
581
- },
582
- "side-channel@1.1.0": {
583
- "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==",
584
- "dependencies": [
585
- "es-errors",
586
- "object-inspect",
587
- "side-channel-list",
588
- "side-channel-map",
589
- "side-channel-weakmap"
590
- ]
591
- },
592
- "statuses@2.0.2": {
593
- "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw=="
594
- },
595
- "toidentifier@1.0.1": {
596
- "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="
597
- },
598
- "type-is@2.0.1": {
599
- "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==",
600
- "dependencies": [
601
- "content-type",
602
- "media-typer",
603
- "mime-types"
604
- ]
605
- },
606
- "typescript@5.9.3": {
607
- "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
608
- "bin": true
609
- },
610
- "undici-types@7.18.2": {
611
- "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w=="
612
- },
613
- "unpipe@1.0.0": {
614
- "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ=="
615
- },
616
- "vary@1.1.2": {
617
- "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg=="
618
- },
619
- "wrappy@1.0.2": {
620
- "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
621
- },
622
- "ws@8.20.0": {
623
- "integrity": "sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA=="
624
- }
625
- },
626
- "workspace": {
627
- "dependencies": [
628
- "npm:esbuild@*",
629
- "npm:picomatch@*",
630
- "npm:ws@*"
631
- ],
632
- "packageJson": {
633
- "dependencies": [
634
- "npm:cors@^2.8.6",
635
- "npm:esbuild@~0.27.3",
636
- "npm:express@^5.2.1",
637
- "npm:js-yaml@^4.1.1",
638
- "npm:playwright-core@^1.58.2",
639
- "npm:prettier@^3.8.1",
640
- "npm:qunitx@^1.0.4",
641
- "npm:typescript@5",
642
- "npm:ws@^8.20.0"
643
- ]
644
- }
645
- }
646
- }
@@ -1,33 +0,0 @@
1
- import fs from 'node:fs/promises';
2
- import { green } from '../utils/color.ts';
3
- import findProjectRoot from '../utils/find-project-root.ts';
4
- import pathExists from '../utils/path-exists.ts';
5
- import readBoilerplate from '../utils/read-boilerplate.ts';
6
-
7
- /**
8
- * Generates a new test file from the boilerplate template.
9
- * @returns {Promise<void>}
10
- */
11
- export default async function generateTestFiles() {
12
- const projectRoot = await findProjectRoot();
13
- const moduleName = process.argv[3];
14
- const path =
15
- process.argv[3].endsWith('.js') || process.argv[3].endsWith('.ts')
16
- ? `${projectRoot}/${process.argv[3]}`
17
- : `${projectRoot}/${process.argv[3]}.js`;
18
-
19
- if (await pathExists(path)) {
20
- console.log(`${path} already exists!`);
21
- return;
22
- }
23
-
24
- const testJSContent = await readBoilerplate('test.js');
25
- const targetFolderPaths = path.split('/');
26
-
27
- targetFolderPaths.pop();
28
-
29
- await fs.mkdir(targetFolderPaths.join('/'), { recursive: true });
30
- await fs.writeFile(path, testJSContent.replace('{{moduleName}}', moduleName));
31
-
32
- console.log(green(`${path} written`));
33
- }