@jsenv/server 16.3.4 → 16.3.6

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.
@@ -60,6 +60,8 @@
60
60
  }
61
61
 
62
62
  body {
63
+ margin: 0;
64
+ color: var(--text-color);
63
65
  font-family:
64
66
  system-ui,
65
67
  -apple-system,
@@ -69,9 +71,7 @@
69
71
  Arial,
70
72
  sans-serif;
71
73
  line-height: 1.5;
72
- color: var(--text-color);
73
74
  background-color: var(--background-color);
74
- margin: 0;
75
75
 
76
76
  transition:
77
77
  background-color 0.3s ease,
@@ -83,23 +83,23 @@
83
83
  flex-direction: row;
84
84
  }
85
85
  aside {
86
+ position: fixed;
86
87
  width: 250px;
88
+ height: 100%;
89
+ margin-right: 20px;
87
90
  flex-shrink: 0;
88
91
  transition:
89
92
  width 0.3s ease,
90
93
  margin-left 0.3s ease;
91
- height: 100%;
92
- margin-right: 20px;
93
- position: fixed;
94
94
  }
95
95
  main {
96
- flex-grow: 1;
97
- flex-basis: 0;
98
96
  min-width: 0;
99
- transition: margin-left 0.3s ease;
97
+ margin-left: 280px;
100
98
  padding-top: 20px;
101
99
  padding-right: 20px;
102
- margin-left: 280px;
100
+ flex-grow: 1;
101
+ flex-basis: 0;
102
+ transition: margin-left 0.3s ease;
103
103
  }
104
104
 
105
105
  .header_row {
@@ -108,22 +108,22 @@
108
108
  gap: 10px;
109
109
  }
110
110
  .header_title {
111
- margin: 0;
112
- line-height: 1;
113
111
  display: flex;
114
- gap: 10px;
112
+ margin: 0;
115
113
  align-items: center;
114
+ gap: 10px;
115
+ line-height: 1;
116
116
  }
117
117
  .note_button_open {
118
+ height: 24px;
119
+ padding: 0;
120
+ color: var(--text-color);
118
121
  background: none;
119
122
  border: none;
120
- cursor: pointer;
121
123
  border-radius: 50%;
122
- transition: background-color 0.2s;
123
- padding: 0;
124
- color: var(--text-color);
125
124
  opacity: 0.7;
126
- height: 24px;
125
+ transition: background-color 0.2s;
126
+ cursor: pointer;
127
127
  }
128
128
  .note_button_open:hover {
129
129
  background-color: color-mix(
@@ -134,36 +134,36 @@
134
134
  opacity: 1;
135
135
  }
136
136
  .note_title {
137
- font-weight: bold;
138
- font-size: 1.1rem;
139
- margin-bottom: 10px;
140
137
  display: flex;
138
+ margin-bottom: 10px;
141
139
  align-items: center;
140
+ font-weight: bold;
141
+ font-size: 1.1rem;
142
142
  }
143
143
  .note_button_close {
144
144
  position: absolute;
145
145
  top: 15px;
146
146
  right: 15px;
147
- background: none;
148
- border: none;
149
- cursor: pointer;
150
- padding: 5px;
151
- border-radius: 50%;
152
147
  display: flex;
148
+ padding: 5px;
153
149
  align-items: center;
154
150
  justify-content: center;
151
+ background: none;
152
+ border: none;
153
+ border-radius: 50%;
154
+ cursor: pointer;
155
155
  }
156
156
  .note_button_close:hover {
157
157
  background-color: var(--secondary-color);
158
158
  }
159
159
  .note_content {
160
+ position: relative;
161
+ width: 90%;
162
+ max-width: 500px;
163
+ padding: 20px;
160
164
  background-color: var(--background-color);
161
165
  border-radius: 8px;
162
- padding: 20px;
163
- max-width: 500px;
164
- width: 90%;
165
166
  box-shadow: 0 10px 25px rgba(0, 0, 0, 0.2);
166
- position: relative;
167
167
  transform: translateY(-20px);
168
168
  transition: transform 0.3s ease;
169
169
  }
@@ -174,17 +174,17 @@
174
174
  }
175
175
 
176
176
  #theme-toggle-btn {
177
- background: none;
178
- border: none;
179
- cursor: pointer;
177
+ display: flex;
180
178
  width: 40px;
181
179
  height: 40px;
182
- border-radius: 50%;
183
- display: flex;
184
180
  align-items: center;
185
181
  justify-content: center;
186
- transition: background-color 0.2s;
182
+ background: none;
187
183
  background-color: var(--secondary-color);
184
+ border: none;
185
+ border-radius: 50%;
186
+ transition: background-color 0.2s;
187
+ cursor: pointer;
188
188
  }
189
189
 
190
190
  #theme-toggle-btn:hover {
@@ -213,13 +213,13 @@
213
213
  }
214
214
 
215
215
  .progress-container {
216
+ position: relative;
216
217
  width: 100%;
217
218
  height: 100%;
219
+ margin: 20px 0;
218
220
  background-color: rgba(25, 118, 210, 0.2);
219
221
  border-radius: 4px;
220
222
  overflow: hidden;
221
- position: relative;
222
- margin: 20px 0;
223
223
  }
224
224
  .progress-indeterminate .progress-bar-long,
225
225
  .progress-indeterminate .progress-bar-short {
@@ -233,102 +233,102 @@
233
233
  }
234
234
 
235
235
  .progress-indeterminate .progress-bar-long {
236
- animation-name: indeterminate-ltr;
237
236
  width: 75%;
237
+ animation-name: indeterminate-ltr;
238
238
  }
239
239
 
240
240
  .progress-indeterminate .progress-bar-short {
241
- animation-name: indeterminate-short-ltr;
242
241
  width: 20%;
242
+ animation-name: indeterminate-short-ltr;
243
243
  }
244
244
 
245
245
  @keyframes indeterminate-ltr {
246
246
  0% {
247
- left: -90%;
248
247
  right: 100%;
248
+ left: -90%;
249
249
  }
250
250
  60% {
251
- left: -90%;
252
251
  right: 100%;
252
+ left: -90%;
253
253
  }
254
254
  100% {
255
- left: 100%;
256
255
  right: -35%;
256
+ left: 100%;
257
257
  }
258
258
  }
259
259
 
260
260
  @keyframes indeterminate-short-ltr {
261
261
  0% {
262
- left: -200%;
263
262
  right: 100%;
263
+ left: -200%;
264
264
  }
265
265
  60% {
266
- left: 107%;
267
266
  right: -8%;
267
+ left: 107%;
268
268
  }
269
269
  100% {
270
- left: 107%;
271
270
  right: -8%;
271
+ left: 107%;
272
272
  }
273
273
  }
274
274
 
275
275
  /* Styles pour les routes */
276
276
  .auto_head_note {
277
- margin-top: 10px;
278
- font-size: 14px;
279
- color: var(--method-head-color);
280
277
  display: flex;
278
+ margin-top: 10px;
281
279
  align-items: center;
280
+ color: var(--method-head-color);
281
+ font-size: 14px;
282
282
  }
283
283
  .note {
284
+ margin-bottom: 20px;
285
+ padding: 12px;
284
286
  background-color: rgba(255, 152, 0, 0.1);
285
287
  border-left: 4px solid var(--warning-color);
286
- padding: 12px;
287
- margin-bottom: 20px;
288
288
  border-radius: 4px;
289
289
  }
290
290
  .info_pill {
291
291
  display: inline-flex;
292
+ margin-left: 10px;
293
+ padding: 4px 10px;
292
294
  align-items: center;
295
+ font-size: 13px;
293
296
  background-color: rgba(0, 0, 0, 0.05);
294
297
  border-radius: 14px;
295
- padding: 4px 10px;
296
- font-size: 13px;
297
- margin-left: 10px;
298
298
  }
299
299
 
300
300
  .route_container {
301
301
  display: flex;
302
- gap: 20px;
303
302
  align-items: flex-start;
303
+ gap: 20px;
304
304
  }
305
305
  .filters_sidebar {
306
306
  width: 250px;
307
307
  flex-shrink: 0;
308
+ background: var(--secondary-color);
309
+ border: 1px solid var(--border-color);
308
310
  border-radius: 6px;
309
311
  overflow: hidden;
310
- border: 1px solid var(--border-color);
311
- background: var(--secondary-color);
312
312
  }
313
313
  .sidebar_header {
314
- padding: 12px 15px;
315
- font-weight: 500;
316
- border-bottom: 1px solid var(--border-color);
317
314
  display: flex;
315
+ padding: 12px 15px;
318
316
  align-items: center;
319
317
  justify-content: space-between;
318
+ font-weight: 500;
319
+ border-bottom: 1px solid var(--border-color);
320
320
  }
321
321
  .filters_content {
322
322
  padding: 15px;
323
323
  background: var(--background-color);
324
324
  }
325
325
  .filters_count {
326
- background-color: var(--primary-color);
327
- color: white;
328
326
  padding: 2px 8px;
329
- border-radius: 12px;
330
- font-size: 0.8rem;
327
+ color: white;
331
328
  font-weight: normal;
329
+ font-size: 0.8rem;
330
+ background-color: var(--primary-color);
331
+ border-radius: 12px;
332
332
  }
333
333
  @media (max-width: 768px) {
334
334
  .route_container {
@@ -342,9 +342,9 @@
342
342
  }
343
343
 
344
344
  .route_container > * {
345
+ min-width: 0; /* Prevent flexbox from expanding beyond available space */
345
346
  margin-top: 20px;
346
347
  flex-grow: 1;
347
- min-width: 0; /* Prevent flexbox from expanding beyond available space */
348
348
  }
349
349
  .route_group_details {
350
350
  margin: 0 0 15px;
@@ -354,10 +354,10 @@
354
354
  height: 24px;
355
355
  }
356
356
  .route_group_details > summary {
357
- cursor: pointer;
357
+ margin-bottom: 7px;
358
358
  list-style: none;
359
359
  border-bottom: 1px solid var(--border-color);
360
- margin-bottom: 7px;
360
+ cursor: pointer;
361
361
  }
362
362
  .route_group_details > summary::marker {
363
363
  display: none;
@@ -367,44 +367,44 @@
367
367
  }
368
368
  .route_group_summary_container {
369
369
  display: flex;
370
- align-items: center;
371
370
  padding: 5px;
371
+ align-items: center;
372
372
  }
373
373
  .route_group_name {
374
374
  display: flex;
375
- border-radius: 3px;
376
- font-family: sans-serif;
377
- font-size: 14px;
378
- font-weight: 700;
379
375
  min-width: 80px;
380
376
  padding: 6px 0;
377
+ gap: 0.3em;
378
+ font-weight: 700;
379
+ font-size: 14px;
380
+ font-family: sans-serif;
381
381
  text-align: center;
382
382
  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.1);
383
- gap: 0.3em;
383
+ border-radius: 3px;
384
384
  }
385
385
  .route_group_description {
386
+ margin-top: 0;
387
+ margin-bottom: 0;
386
388
  margin-left: 8px;
387
- font-family: monospace;
388
- font-size: 16px;
389
389
  font-weight: 600;
390
+ font-size: 16px;
391
+ font-family: monospace;
390
392
  word-break: break-word;
391
- margin-top: 0;
392
- margin-bottom: 0;
393
393
  user-select: none;
394
394
  }
395
395
 
396
396
  .route_details {
397
397
  margin-bottom: 8px;
398
- box-shadow: 0 0 3px rgba(0, 0, 0, 0.19);
399
- border: 1px solid #000;
400
- border-radius: 4px;
401
398
  margin: 0 0 15px;
402
- border-color: var(--method-color);
403
399
  background: color-mix(in srgb, var(--method-color), transparent 90%);
400
+ border: 1px solid #000;
401
+ border-color: var(--method-color);
402
+ border-radius: 4px;
403
+ box-shadow: 0 0 3px rgba(0, 0, 0, 0.19);
404
404
  }
405
405
  .route_details > summary {
406
- cursor: pointer;
407
406
  list-style: none;
407
+ cursor: pointer;
408
408
  }
409
409
  .route_details > summary::marker {
410
410
  display: none;
@@ -414,29 +414,29 @@
414
414
  }
415
415
  .route_summary_container {
416
416
  display: flex;
417
- align-items: center;
418
417
  padding: 5px;
418
+ align-items: center;
419
419
  }
420
420
  .route_method {
421
- border-radius: 3px;
422
- color: #fff;
423
- font-family: sans-serif;
424
- font-size: 14px;
425
- font-weight: 700;
426
421
  min-width: 80px;
427
422
  padding: 6px 0;
423
+ color: #fff;
424
+ font-weight: 700;
425
+ font-size: 14px;
426
+ font-family: sans-serif;
428
427
  text-align: center;
429
428
  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.1);
430
429
  background: var(--method-color);
430
+ border-radius: 3px;
431
431
  }
432
432
  .route_resource {
433
+ margin-top: 0;
434
+ margin-bottom: 0;
433
435
  margin-left: 8px;
434
- font-family: monospace;
435
- font-size: 16px;
436
436
  font-weight: 600;
437
+ font-size: 16px;
438
+ font-family: monospace;
437
439
  word-break: break-word;
438
- margin-top: 0;
439
- margin-bottom: 0;
440
440
  }
441
441
  .route_details[data-method="HEAD"],
442
442
  .route_group_details[data-method="HEAD"] {
@@ -468,20 +468,20 @@
468
468
  }
469
469
 
470
470
  .route_owner_name {
471
- background-color: #ffefd2;
472
- color: #666;
473
471
  padding: 4px 8px;
472
+ color: #666;
474
473
  text-align: center;
474
+ background-color: #ffefd2;
475
475
  border-radius: 5px;
476
476
  }
477
477
  :root[data-theme="dark"] .route_owner_name {
478
- background-color: rgb(96, 59, 13);
479
478
  color: white;
479
+ background-color: rgb(96, 59, 13);
480
480
  }
481
481
 
482
482
  .route_details_content {
483
- border-top: 1px solid var(--method-color);
484
483
  padding: 10px;
484
+ border-top: 1px solid var(--method-color);
485
485
  }
486
486
  .route_description {
487
487
  margin: 0;
@@ -491,34 +491,34 @@
491
491
  }
492
492
 
493
493
  .filter_container {
494
+ height: 100%;
494
495
  margin-bottom: 20px;
496
+ background: var(--secondary-color);
497
+ border-right: 1px solid var(--border-color);
495
498
  overflow: hidden;
496
499
  overflow-y: auto;
497
- border-right: 1px solid var(--border-color);
498
- background: var(--secondary-color);
499
- height: 100%;
500
500
  }
501
501
  .filter_container::marker {
502
502
  display: none;
503
503
  }
504
504
  .filter_summary {
505
- cursor: pointer;
506
- font-weight: 500;
507
505
  display: flex;
508
506
  flex-direction: row;
509
507
  align-items: center;
510
508
  justify-content: space-between;
509
+ font-weight: 500;
510
+ cursor: pointer;
511
511
  user-select: none;
512
512
  }
513
513
  .filter:open > summary .summary_marker {
514
514
  transform: rotate(180deg);
515
515
  }
516
516
  .summary_text {
517
- overflow: hidden;
518
- width: 100%;
519
517
  display: block;
520
- white-space: nowrap;
518
+ width: 100%;
521
519
  text-overflow: ellipsis;
520
+ white-space: nowrap;
521
+ overflow: hidden;
522
522
  }
523
523
  .filter_list {
524
524
  background: var(--background-color);
@@ -529,49 +529,49 @@
529
529
  margin-left: 0;
530
530
  }
531
531
  .filter_badge {
532
- background-color: var(--primary-color);
533
- color: white;
532
+ margin-left: 10px;
534
533
  padding: 2px 8px;
535
- border-radius: 12px;
534
+ color: white;
536
535
  font-size: 0.8rem;
537
- margin-left: 10px;
536
+ background-color: var(--primary-color);
537
+ border-radius: 12px;
538
538
  }
539
539
 
540
540
  select {
541
541
  min-width: 200px;
542
542
  padding: 8px;
543
- border-radius: 4px;
544
- border: 1px solid var(--border-color);
545
- background-color: var(--background-color);
546
543
  color: var(--text-color);
547
544
  font-family: inherit;
545
+ background-color: var(--background-color);
546
+ border: 1px solid var(--border-color);
547
+ border-radius: 4px;
548
548
  }
549
549
  select option {
550
550
  padding: 8px;
551
551
  }
552
552
  select option:checked {
553
- background-color: var(--primary-color);
554
553
  color: white;
554
+ background-color: var(--primary-color);
555
555
  }
556
556
  .filter_form {
557
557
  display: flex;
558
+ margin-top: 15px;
559
+ margin-bottom: 15px;
558
560
  flex-direction: column;
559
561
  flex-wrap: wrap;
560
562
  gap: 8px;
561
- margin-top: 15px;
562
- margin-bottom: 15px;
563
563
  user-select: none;
564
564
  }
565
565
  .filter_form label {
566
566
  display: flex;
567
+ width: 100%;
567
568
  align-items: center;
568
569
  gap: 5px;
569
- cursor: pointer;
570
- width: 100%;
571
- word-break: keep-all;
572
- overflow: hidden;
573
570
  text-overflow: ellipsis;
574
571
  white-space: nowrap;
572
+ word-break: keep-all;
573
+ cursor: pointer;
574
+ overflow: hidden;
575
575
  }
576
576
  label .filter_text {
577
577
  text-overflow: ellipsis;
@@ -607,14 +607,14 @@
607
607
  }
608
608
 
609
609
  .filter_count {
610
- background-color: #eee;
611
- color: #666;
612
- opacity: 0.8;
610
+ margin-left: auto;
613
611
  padding: 2px 8px;
614
- border-radius: 12px;
612
+ color: #666;
615
613
  font-size: 0.8rem;
616
- margin-left: auto;
617
614
  white-space: nowrap;
615
+ background-color: #eee;
616
+ border-radius: 12px;
617
+ opacity: 0.8;
618
618
  }
619
619
 
620
620
  .filter_actions {
@@ -622,14 +622,14 @@
622
622
  gap: 10px;
623
623
  }
624
624
  .filter_button {
625
+ padding: 6px 12px;
626
+ color: var(--text-color);
627
+ font-size: 0.9rem;
625
628
  background-color: var(--secondary-color);
626
629
  border: 1px solid var(--border-color);
627
- color: var(--text-color);
628
- padding: 6px 12px;
629
630
  border-radius: 4px;
630
- cursor: pointer;
631
- font-size: 0.9rem;
632
631
  transition: all 0.2s;
632
+ cursor: pointer;
633
633
  }
634
634
  .filter_button:hover {
635
635
  background-color: color-mix(
@@ -641,8 +641,8 @@
641
641
 
642
642
  .status_pill {
643
643
  display: flex;
644
- align-self: stretch;
645
644
  width: 0.4em;
645
+ align-self: stretch;
646
646
  }
647
647
  </style>
648
648
  <div class="container">
@@ -1,8 +1,7 @@
1
1
  import { readFileSync } from "node:fs";
2
2
 
3
- const routeInspectorHtmlFileUrl = import.meta.resolve(
4
- "./client/route_inspector.html",
5
- );
3
+ const routeInspectorHtmlFileUrl = import.meta
4
+ .resolve("./client/route_inspector.html");
6
5
 
7
6
  export const jsenvServiceRouteInspector = () => {
8
7
  return {