mockaton 8.10.0 → 8.11.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/README.md +18 -0
- package/package.json +1 -1
- package/src/Dashboard.css +80 -32
- package/src/Dashboard.js +4 -2
- package/src/Filename.js +14 -4
- package/src/MockDispatcher.js +1 -1
- package/src/Mockaton.test.js +6 -0
- package/src/mockaton-logo.svg +1 -1
package/README.md
CHANGED
|
@@ -224,6 +224,24 @@ api/user.GET.200.json
|
|
|
224
224
|
You can also use `.empty` or `.unknown` if you don’t
|
|
225
225
|
want a `Content-Type` header in the response.
|
|
226
226
|
|
|
227
|
+
<details>
|
|
228
|
+
<summary>Supported Methods</summary>
|
|
229
|
+
<p>From Node.js <code>http.METHODS</code></p>
|
|
230
|
+
<p>
|
|
231
|
+
ACL, BIND, CHECKOUT,
|
|
232
|
+
CONNECT, COPY, DELETE,
|
|
233
|
+
GET, HEAD, LINK,
|
|
234
|
+
LOCK, M-SEARCH, MERGE,
|
|
235
|
+
MKACTIVITY, MKCALENDAR, MKCOL,
|
|
236
|
+
MOVE, NOTIFY, OPTIONS,
|
|
237
|
+
PATCH, POST, PROPFIND,
|
|
238
|
+
PROPPATCH, PURGE, PUT,
|
|
239
|
+
QUERY, REBIND, REPORT,
|
|
240
|
+
SEARCH, SOURCE, SUBSCRIBE,
|
|
241
|
+
TRACE, UNBIND, UNLINK,
|
|
242
|
+
UNLOCK, UNSUBSCRIBE
|
|
243
|
+
</p>
|
|
244
|
+
</details>
|
|
227
245
|
|
|
228
246
|
### Dynamic Parameters
|
|
229
247
|
Anything within square brackets is always matched. For example, for this route
|
package/package.json
CHANGED
package/src/Dashboard.css
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
--colorBackground: #fff;
|
|
13
13
|
--colorComboBoxHeaderBackground: #fff;
|
|
14
14
|
--colorComboBoxBackground: #f7f7f7;
|
|
15
|
-
--colorHeaderBackground: #
|
|
15
|
+
--colorHeaderBackground: #eee;
|
|
16
16
|
--colorSecondaryButtonBackground: #f3f3f3;
|
|
17
17
|
--colorSecondaryAction: #555;
|
|
18
18
|
--colorDisabledMockSelector: #444;
|
|
@@ -31,8 +31,8 @@
|
|
|
31
31
|
--colorBackground: #161616;
|
|
32
32
|
--colorHeaderBackground: #090909;
|
|
33
33
|
--colorComboBoxBackground: #252525;
|
|
34
|
-
--colorSecondaryButtonBackground: #
|
|
35
|
-
--colorSecondaryAction: #
|
|
34
|
+
--colorSecondaryButtonBackground: #282828;
|
|
35
|
+
--colorSecondaryAction: #999;
|
|
36
36
|
--colorComboBoxHeaderBackground: #222;
|
|
37
37
|
--colorDisabledMockSelector: #b9b9b9;
|
|
38
38
|
--colorHover: #023661;
|
|
@@ -68,7 +68,10 @@ select, a, input, button, summary {
|
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
70
|
|
|
71
|
-
a,
|
|
71
|
+
a,
|
|
72
|
+
button,
|
|
73
|
+
input[type=checkbox],
|
|
74
|
+
input[type=checkbox] ~ svg {
|
|
72
75
|
cursor: pointer;
|
|
73
76
|
|
|
74
77
|
&:active {
|
|
@@ -117,7 +120,7 @@ select {
|
|
|
117
120
|
img {
|
|
118
121
|
width: 130px;
|
|
119
122
|
align-self: center;
|
|
120
|
-
margin-right:
|
|
123
|
+
margin-right: 22px;
|
|
121
124
|
}
|
|
122
125
|
|
|
123
126
|
.Field {
|
|
@@ -133,8 +136,10 @@ select {
|
|
|
133
136
|
svg {
|
|
134
137
|
width: 14px;
|
|
135
138
|
height: 14px;
|
|
136
|
-
|
|
137
|
-
|
|
139
|
+
stroke: var(--colorLabel);
|
|
140
|
+
stroke-width: 1.5px;
|
|
141
|
+
fill: none;
|
|
142
|
+
opacity: .7;
|
|
138
143
|
}
|
|
139
144
|
}
|
|
140
145
|
|
|
@@ -158,16 +163,18 @@ select {
|
|
|
158
163
|
}
|
|
159
164
|
|
|
160
165
|
&.GlobalDelayField {
|
|
161
|
-
width:
|
|
166
|
+
width: 84px;
|
|
162
167
|
|
|
163
168
|
input[type=number] {
|
|
164
169
|
padding-right: 0;
|
|
165
170
|
}
|
|
166
171
|
|
|
167
172
|
svg {
|
|
173
|
+
width: 12px;
|
|
174
|
+
height: 12px;
|
|
168
175
|
border: 1px solid var(--colorLabel);
|
|
176
|
+
stroke-width: 3px;
|
|
169
177
|
border-radius: 50%;
|
|
170
|
-
transform: scale(.85);
|
|
171
178
|
}
|
|
172
179
|
}
|
|
173
180
|
|
|
@@ -276,7 +283,7 @@ select {
|
|
|
276
283
|
position: relative;
|
|
277
284
|
left: -6px;
|
|
278
285
|
display: inline-block;
|
|
279
|
-
width:
|
|
286
|
+
width: 272px;
|
|
280
287
|
padding: 8px 6px;
|
|
281
288
|
border-radius: var(--radius);
|
|
282
289
|
color: var(--colorAccent);
|
|
@@ -295,6 +302,7 @@ select {
|
|
|
295
302
|
width: 260px;
|
|
296
303
|
height: 30px;
|
|
297
304
|
padding-right: 5px;
|
|
305
|
+
padding-left: 16px;
|
|
298
306
|
border: 0;
|
|
299
307
|
text-align: right;
|
|
300
308
|
direction: rtl;
|
|
@@ -323,7 +331,6 @@ select {
|
|
|
323
331
|
.ProxyToggler {
|
|
324
332
|
display: flex;
|
|
325
333
|
margin-left: 8px;
|
|
326
|
-
cursor: pointer;
|
|
327
334
|
|
|
328
335
|
> input {
|
|
329
336
|
appearance: none;
|
|
@@ -334,48 +341,90 @@ select {
|
|
|
334
341
|
outline: 2px solid var(--colorAccent)
|
|
335
342
|
}
|
|
336
343
|
}
|
|
344
|
+
}
|
|
337
345
|
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
346
|
+
> svg {
|
|
347
|
+
vertical-align: bottom;
|
|
348
|
+
fill: none;
|
|
349
|
+
stroke: var(--colorSecondaryAction);
|
|
350
|
+
}
|
|
351
|
+
}
|
|
342
352
|
|
|
353
|
+
.DelayToggler {
|
|
354
|
+
> input {
|
|
343
355
|
&:checked ~ svg {
|
|
344
|
-
border
|
|
356
|
+
border: 1px solid var(--colorBackground);
|
|
357
|
+
fill: var(--colorAccent);
|
|
345
358
|
background: var(--colorAccent);
|
|
346
|
-
|
|
347
|
-
box-shadow: var(--boxShadow1);
|
|
359
|
+
stroke: var(--colorBackground);
|
|
348
360
|
}
|
|
349
361
|
|
|
350
|
-
&:
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
362
|
+
&:enabled:hover:not(:checked) ~ svg {
|
|
363
|
+
border-color: var(--colorText);
|
|
364
|
+
background: var(--colorHover);
|
|
365
|
+
stroke: var(--colorText);
|
|
354
366
|
}
|
|
355
367
|
}
|
|
356
368
|
|
|
357
369
|
> svg {
|
|
358
370
|
width: 18px;
|
|
359
371
|
height: 18px;
|
|
360
|
-
|
|
361
|
-
fill: var(--colorSecondaryAction);
|
|
372
|
+
stroke-width: 2.5px;
|
|
362
373
|
border-radius: 50%;
|
|
363
374
|
background: var(--colorSecondaryButtonBackground);
|
|
364
375
|
}
|
|
365
376
|
}
|
|
366
377
|
|
|
367
378
|
.ProxyToggler {
|
|
379
|
+
padding: 1px 3px;
|
|
380
|
+
background: var(--colorSecondaryButtonBackground);
|
|
381
|
+
border-radius: var(--radiusSmall);
|
|
382
|
+
|
|
383
|
+
&:has(input:checked),
|
|
384
|
+
&:has(input:disabled) {
|
|
385
|
+
background: transparent;
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
> input {
|
|
389
|
+
&:checked ~ svg {
|
|
390
|
+
fill: var(--colorAccent);
|
|
391
|
+
stroke: var(--colorAccent);
|
|
392
|
+
|
|
393
|
+
path:last-of-type { /* inner cloud curve */
|
|
394
|
+
stroke: var(--colorBackground);
|
|
395
|
+
}
|
|
396
|
+
transform: scale(1.2);
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
&:enabled:hover:not(:checked) ~ svg {
|
|
400
|
+
fill: var(--colorHover);
|
|
401
|
+
stroke: var(--colorText);
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
&:disabled ~ svg {
|
|
405
|
+
stroke-opacity: 0.5;
|
|
406
|
+
cursor: not-allowed;
|
|
407
|
+
box-shadow: none;
|
|
408
|
+
fill: transparent;
|
|
409
|
+
|
|
410
|
+
path:last-of-type {
|
|
411
|
+
stroke-opacity: 0;
|
|
412
|
+
stroke: transparent;
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
|
|
368
417
|
> svg {
|
|
369
|
-
width:
|
|
370
|
-
|
|
371
|
-
|
|
418
|
+
width: 16px;
|
|
419
|
+
height: 16px;
|
|
420
|
+
stroke-width: 2px;
|
|
372
421
|
border-radius: var(--radiusSmall);
|
|
373
422
|
}
|
|
374
423
|
}
|
|
375
424
|
|
|
376
425
|
.InternalServerErrorToggler {
|
|
377
426
|
display: flex;
|
|
378
|
-
margin-left:
|
|
427
|
+
margin-left: 6px;
|
|
379
428
|
cursor: pointer;
|
|
380
429
|
|
|
381
430
|
> input {
|
|
@@ -391,19 +440,18 @@ select {
|
|
|
391
440
|
&:checked ~ span {
|
|
392
441
|
color: white;
|
|
393
442
|
background: var(--colorRed);
|
|
394
|
-
box-shadow: var(--boxShadow1);
|
|
395
443
|
}
|
|
396
444
|
}
|
|
397
445
|
|
|
398
446
|
> span {
|
|
399
|
-
padding:
|
|
447
|
+
padding: 4px;
|
|
400
448
|
font-size: 10px;
|
|
449
|
+
font-weight: bold;
|
|
401
450
|
color: var(--colorSecondaryAction);
|
|
402
451
|
border-radius: var(--radiusSmall);
|
|
403
452
|
background: var(--colorSecondaryButtonBackground);
|
|
404
453
|
|
|
405
454
|
&:hover {
|
|
406
|
-
box-shadow: var(--boxShadow1);
|
|
407
455
|
background: var(--colorLightRed);
|
|
408
456
|
color: var(--colorRed);
|
|
409
457
|
}
|
|
@@ -530,7 +578,7 @@ select {
|
|
|
530
578
|
color: #9b71e8
|
|
531
579
|
}
|
|
532
580
|
.token.attr-name, .token.builtin, .token.char, .token.inserted, .token.selector, .token.string {
|
|
533
|
-
color: #
|
|
581
|
+
color: #3e8300
|
|
534
582
|
}
|
|
535
583
|
.language-css .token.string, .style .token.string, .token.entity, .token.operator, .token.url {
|
|
536
584
|
color: #9a6e3a;
|
package/src/Dashboard.js
CHANGED
|
@@ -520,13 +520,15 @@ function onError(error) {
|
|
|
520
520
|
function TimerIcon() {
|
|
521
521
|
return (
|
|
522
522
|
r('svg', { viewBox: '0 0 24 24' },
|
|
523
|
-
r('path', { d: '
|
|
523
|
+
r('path', { d: 'm11 5.6 0.14 7.2 6 3.7' })))
|
|
524
524
|
}
|
|
525
525
|
|
|
526
526
|
function CloudIcon() {
|
|
527
527
|
return (
|
|
528
528
|
r('svg', { viewBox: '0 0 24 24' },
|
|
529
|
-
r('path', { d: '
|
|
529
|
+
r('path', { d: 'm6.1 8.9c0.98-2.3 3.3-3.9 6-3.9 3.3-2e-7 6 2.5 6.4 5.7 0.018 0.15 0.024 0.18 0.026 0.23 0.0016 0.037 8.2e-4 0.084 0.098 0.14 0.097 0.054 0.29 0.05 0.48 0.05 2.2 0 4 1.8 4 4s-1.8 4-4 4c-4-0.038-9-0.038-13-0.018-2.8 0-5-2.2-5-5-2.2e-7 -2.8 2.2-5 5-5 2.8 2e-7 5 2.2 5 5' }),
|
|
530
|
+
r('path', { d: 'm6.1 9.1c2.8 0 5 2.3 5 5' })
|
|
531
|
+
))
|
|
530
532
|
}
|
|
531
533
|
|
|
532
534
|
|
package/src/Filename.js
CHANGED
|
@@ -1,7 +1,16 @@
|
|
|
1
|
-
const httpMethods = [
|
|
2
|
-
'
|
|
3
|
-
'
|
|
4
|
-
'
|
|
1
|
+
const httpMethods = [ // node:http.METHODS
|
|
2
|
+
'ACL', 'BIND', 'CHECKOUT',
|
|
3
|
+
'CONNECT', 'COPY', 'DELETE',
|
|
4
|
+
'GET', 'HEAD', 'LINK',
|
|
5
|
+
'LOCK', 'M-SEARCH', 'MERGE',
|
|
6
|
+
'MKACTIVITY', 'MKCALENDAR', 'MKCOL',
|
|
7
|
+
'MOVE', 'NOTIFY', 'OPTIONS',
|
|
8
|
+
'PATCH', 'POST', 'PROPFIND',
|
|
9
|
+
'PROPPATCH', 'PURGE', 'PUT',
|
|
10
|
+
'QUERY', 'REBIND', 'REPORT',
|
|
11
|
+
'SEARCH', 'SOURCE', 'SUBSCRIBE',
|
|
12
|
+
'TRACE', 'UNBIND', 'UNLINK',
|
|
13
|
+
'UNLOCK', 'UNSUBSCRIBE'
|
|
5
14
|
]
|
|
6
15
|
|
|
7
16
|
const reComments = /\(.*?\)/g // Anything within parentheses
|
|
@@ -52,6 +61,7 @@ function removeTrailingSlash(url = '') {
|
|
|
52
61
|
.replace('/#', '#')
|
|
53
62
|
}
|
|
54
63
|
|
|
64
|
+
// TODO ThinkAbout allowing custom status codes
|
|
55
65
|
function responseStatusIsValid(status) {
|
|
56
66
|
return Number.isInteger(status)
|
|
57
67
|
&& status >= 100
|
package/src/MockDispatcher.js
CHANGED
|
@@ -14,7 +14,7 @@ export async function dispatchMock(req, response) {
|
|
|
14
14
|
const broker = mockBrokerCollection.getBrokerForUrl(req.method, req.url)
|
|
15
15
|
if (!broker || broker.proxied) {
|
|
16
16
|
if (config.proxyFallback)
|
|
17
|
-
await proxy(req, response,
|
|
17
|
+
await proxy(req, response, config.delay * Boolean(broker?.delayed))
|
|
18
18
|
else
|
|
19
19
|
sendNotFound(response)
|
|
20
20
|
return
|
package/src/Mockaton.test.js
CHANGED
|
@@ -106,6 +106,12 @@ const fixtures = [
|
|
|
106
106
|
'Decodes URI'
|
|
107
107
|
],
|
|
108
108
|
|
|
109
|
+
[
|
|
110
|
+
'/api/uncommon-method',
|
|
111
|
+
'/api/uncommon-method.ACL.200.json',
|
|
112
|
+
'node.js doesn’t support arbitrary HTTP methods, but it does support a few non-standard ones'
|
|
113
|
+
],
|
|
114
|
+
|
|
109
115
|
|
|
110
116
|
// Dynamic Params
|
|
111
117
|
[
|
package/src/mockaton-logo.svg
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
<svg version="1.1" viewBox="0 0 570 100" xmlns="http://www.w3.org/2000/svg">
|
|
3
3
|
<style>
|
|
4
4
|
:root { --color: #000000; }
|
|
5
|
-
@media (prefers-color-scheme: light) { :root { --color: #
|
|
5
|
+
@media (prefers-color-scheme: light) { :root { --color: #111 } }
|
|
6
6
|
@media (prefers-color-scheme: dark) { :root { --color: #eee } }
|
|
7
7
|
path { fill: var(--color) }
|
|
8
8
|
</style>
|