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