@eggjs/onerror 3.0.0

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 (45) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +67 -0
  3. package/dist/commonjs/agent.d.ts +6 -0
  4. package/dist/commonjs/agent.js +16 -0
  5. package/dist/commonjs/app.d.ts +12 -0
  6. package/dist/commonjs/app.js +150 -0
  7. package/dist/commonjs/config/config.default.d.ts +27 -0
  8. package/dist/commonjs/config/config.default.js +15 -0
  9. package/dist/commonjs/index.d.ts +1 -0
  10. package/dist/commonjs/index.js +4 -0
  11. package/dist/commonjs/lib/error_view.d.ts +154 -0
  12. package/dist/commonjs/lib/error_view.js +248 -0
  13. package/dist/commonjs/lib/onerror_page.mustache.html +761 -0
  14. package/dist/commonjs/lib/utils.d.ts +10 -0
  15. package/dist/commonjs/lib/utils.js +53 -0
  16. package/dist/commonjs/package.json +3 -0
  17. package/dist/commonjs/types.d.ts +7 -0
  18. package/dist/commonjs/types.js +3 -0
  19. package/dist/esm/agent.d.ts +6 -0
  20. package/dist/esm/agent.js +13 -0
  21. package/dist/esm/app.d.ts +12 -0
  22. package/dist/esm/app.js +144 -0
  23. package/dist/esm/config/config.default.d.ts +27 -0
  24. package/dist/esm/config/config.default.js +10 -0
  25. package/dist/esm/index.d.ts +1 -0
  26. package/dist/esm/index.js +2 -0
  27. package/dist/esm/lib/error_view.d.ts +154 -0
  28. package/dist/esm/lib/error_view.js +241 -0
  29. package/dist/esm/lib/onerror_page.mustache.html +761 -0
  30. package/dist/esm/lib/utils.d.ts +10 -0
  31. package/dist/esm/lib/utils.js +43 -0
  32. package/dist/esm/package.json +3 -0
  33. package/dist/esm/types.d.ts +7 -0
  34. package/dist/esm/types.js +2 -0
  35. package/dist/package.json +4 -0
  36. package/package.json +93 -0
  37. package/src/agent.ts +12 -0
  38. package/src/app.ts +160 -0
  39. package/src/config/config.default.ts +34 -0
  40. package/src/index.ts +1 -0
  41. package/src/lib/error_view.ts +281 -0
  42. package/src/lib/onerror_page.mustache.html +761 -0
  43. package/src/lib/utils.ts +47 -0
  44. package/src/types.ts +12 -0
  45. package/src/typings/index.d.ts +4 -0
@@ -0,0 +1,761 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <title></title>
6
+ <style>
7
+ /* http://prismjs.com/download.html?themes=prism&languages=markup+css+clike+javascript&plugins=line-highlight+line-numbers+toolbar+show-language */
8
+ /**
9
+ * prism.js default theme for JavaScript, CSS and HTML
10
+ * Based on dabblet (http://dabblet.com)
11
+ * @author Lea Verou
12
+ */
13
+ code[class*="language-"],
14
+ pre[class*="language-"] {
15
+ color: black;
16
+ background: none;
17
+ text-shadow: 0 1px white;
18
+ font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
19
+ text-align: left;
20
+ white-space: pre;
21
+ word-spacing: normal;
22
+ word-break: normal;
23
+ word-wrap: normal;
24
+ line-height: 1.5;
25
+ -moz-tab-size: 4;
26
+ -o-tab-size: 4;
27
+ tab-size: 4;
28
+ -webkit-hyphens: none;
29
+ -moz-hyphens: none;
30
+ -ms-hyphens: none;
31
+ hyphens: none;
32
+ }
33
+ pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection,
34
+ code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection {
35
+ text-shadow: none;
36
+ background: #98d8b7;
37
+ }
38
+ pre[class*="language-"]::selection, pre[class*="language-"] ::selection,
39
+ code[class*="language-"]::selection, code[class*="language-"] ::selection {
40
+ text-shadow: none;
41
+ background: #98d8b7;
42
+ }
43
+ @media print {
44
+ code[class*="language-"],
45
+ pre[class*="language-"] {
46
+ text-shadow: none;
47
+ }
48
+ }
49
+ /* Code blocks */
50
+ pre[class*="language-"] {
51
+ padding: 1em;
52
+ margin: .5em 0;
53
+ overflow: auto;
54
+ }
55
+ :not(pre) > code[class*="language-"],
56
+ pre[class*="language-"] {
57
+ background: #f5f2f0;
58
+ }
59
+ /* Inline code */
60
+ :not(pre) > code[class*="language-"] {
61
+ padding: .1em;
62
+ border-radius: .3em;
63
+ white-space: normal;
64
+ }
65
+ .token.comment,
66
+ .token.prolog,
67
+ .token.doctype,
68
+ .token.cdata {
69
+ color: slategray;
70
+ }
71
+ .token.punctuation {
72
+ color: #999;
73
+ }
74
+ .namespace {
75
+ opacity: .7;
76
+ }
77
+ .token.property,
78
+ .token.tag,
79
+ .token.boolean,
80
+ .token.number,
81
+ .token.constant,
82
+ .token.symbol,
83
+ .token.deleted {
84
+ color: #905;
85
+ }
86
+ .token.selector,
87
+ .token.attr-name,
88
+ .token.string,
89
+ .token.char,
90
+ .token.builtin,
91
+ .token.inserted {
92
+ color: #690;
93
+ }
94
+ .token.operator,
95
+ .token.entity,
96
+ .token.url,
97
+ .language-css .token.string,
98
+ .style .token.string {
99
+ color: #a67f59;
100
+ background: hsla(0, 0%, 100%, .5);
101
+ }
102
+ .token.atrule,
103
+ .token.attr-value,
104
+ .token.keyword {
105
+ color: #07a;
106
+ }
107
+ .token.function {
108
+ color: #DD4A68;
109
+ }
110
+ .token.regex,
111
+ .token.important,
112
+ .token.variable {
113
+ color: #e90;
114
+ }
115
+ .token.important,
116
+ .token.bold {
117
+ font-weight: bold;
118
+ }
119
+ .token.italic {
120
+ font-style: italic;
121
+ }
122
+ .token.entity {
123
+ cursor: help;
124
+ }
125
+ pre[data-line] {
126
+ position: relative;
127
+ padding: 1em 0 1em 3em;
128
+ }
129
+ .line-highlight {
130
+ position: absolute;
131
+ left: 0;
132
+ right: 0;
133
+ padding: inherit 0;
134
+ margin-top: 1em; /* Same as .prism’s padding-top */
135
+ background: hsla(24, 20%, 50%,.08);
136
+ background: linear-gradient(to right, hsla(24, 20%, 50%,.1) 70%, hsla(24, 20%, 50%,0));
137
+ pointer-events: none;
138
+ line-height: inherit;
139
+ white-space: pre;
140
+ }
141
+ .line-highlight:before,
142
+ .line-highlight[data-end]:after {
143
+ content: attr(data-start);
144
+ position: absolute;
145
+ top: .4em;
146
+ left: .6em;
147
+ min-width: 1em;
148
+ padding: 0 .5em;
149
+ background-color: hsla(24, 20%, 50%,.4);
150
+ color: hsl(24, 20%, 95%);
151
+ font: bold 65%/1.5 sans-serif;
152
+ text-align: center;
153
+ vertical-align: .3em;
154
+ border-radius: 999px;
155
+ text-shadow: none;
156
+ box-shadow: 0 1px white;
157
+ }
158
+ .line-highlight[data-end]:after {
159
+ content: attr(data-end);
160
+ top: auto;
161
+ bottom: .4em;
162
+ }
163
+ pre.line-numbers {
164
+ position: relative;
165
+ padding-left: 3.8em;
166
+ counter-reset: linenumber;
167
+ }
168
+ pre.line-numbers > code {
169
+ position: relative;
170
+ }
171
+ .line-numbers .line-numbers-rows {
172
+ position: absolute;
173
+ pointer-events: none;
174
+ top: 0;
175
+ font-size: 100%;
176
+ left: -3.8em;
177
+ width: 3em; /* works for line-numbers below 1000 lines */
178
+ letter-spacing: -1px;
179
+ border-right: 1px solid #999;
180
+ -webkit-user-select: none;
181
+ -moz-user-select: none;
182
+ -ms-user-select: none;
183
+ user-select: none;
184
+ }
185
+ .line-numbers-rows > span {
186
+ pointer-events: none;
187
+ display: block;
188
+ counter-increment: linenumber;
189
+ }
190
+ .line-numbers-rows > span:before {
191
+ content: counter(linenumber);
192
+ color: #999;
193
+ display: block;
194
+ padding-right: 0.8em;
195
+ text-align: right;
196
+ }
197
+ pre.code-toolbar {
198
+ position: relative;
199
+ }
200
+ pre.code-toolbar > .toolbar {
201
+ position: absolute;
202
+ top: .3em;
203
+ right: .2em;
204
+ transition: opacity 0.3s ease-in-out;
205
+ opacity: 0;
206
+ }
207
+ pre.code-toolbar:hover > .toolbar {
208
+ opacity: 1;
209
+ }
210
+ pre.code-toolbar > .toolbar .toolbar-item {
211
+ display: inline-block;
212
+ }
213
+ pre.code-toolbar > .toolbar a {
214
+ cursor: pointer;
215
+ }
216
+ pre.code-toolbar > .toolbar button {
217
+ background: none;
218
+ border: 0;
219
+ color: inherit;
220
+ font: inherit;
221
+ line-height: normal;
222
+ overflow: visible;
223
+ padding: 0;
224
+ -webkit-user-select: none; /* for button */
225
+ -moz-user-select: none;
226
+ -ms-user-select: none;
227
+ }
228
+ pre.code-toolbar > .toolbar a,
229
+ pre.code-toolbar > .toolbar button,
230
+ pre.code-toolbar > .toolbar span {
231
+ color: #bbb;
232
+ font-size: .8em;
233
+ padding: 0 .5em;
234
+ background: #f5f2f0;
235
+ background: rgba(224, 224, 224, 0.2);
236
+ box-shadow: 0 2px 0 0 rgba(0,0,0,0.2);
237
+ border-radius: .5em;
238
+ }
239
+ pre.code-toolbar > .toolbar a:hover,
240
+ pre.code-toolbar > .toolbar a:focus,
241
+ pre.code-toolbar > .toolbar button:hover,
242
+ pre.code-toolbar > .toolbar button:focus,
243
+ pre.code-toolbar > .toolbar span:hover,
244
+ pre.code-toolbar > .toolbar span:focus {
245
+ color: inherit;
246
+ text-decoration: none;
247
+ }
248
+ </style>
249
+
250
+ <style>
251
+ @keyframes hover-color {
252
+ from {
253
+ border-color: #c0c0c0; }
254
+ to {
255
+ border-color: #53b783; } }
256
+ .magic-radio,
257
+ .magic-checkbox {
258
+ position: absolute;
259
+ display: none; }
260
+ .magic-radio[disabled],
261
+ .magic-checkbox[disabled] {
262
+ cursor: not-allowed; }
263
+ .magic-radio + label,
264
+ .magic-checkbox + label {
265
+ position: relative;
266
+ display: block;
267
+ padding-left: 30px;
268
+ cursor: pointer;
269
+ vertical-align: middle; }
270
+ .magic-radio + label:hover:before,
271
+ .magic-checkbox + label:hover:before {
272
+ animation-duration: 0.4s;
273
+ animation-fill-mode: both;
274
+ animation-name: hover-color; }
275
+ .magic-radio + label:before,
276
+ .magic-checkbox + label:before {
277
+ position: absolute;
278
+ top: 0;
279
+ left: 0;
280
+ display: inline-block;
281
+ width: 20px;
282
+ height: 20px;
283
+ content: '';
284
+ border: 1px solid #c0c0c0; }
285
+ .magic-radio + label:after,
286
+ .magic-checkbox + label:after {
287
+ position: absolute;
288
+ display: none;
289
+ content: ''; }
290
+ .magic-radio[disabled] + label,
291
+ .magic-checkbox[disabled] + label {
292
+ cursor: not-allowed;
293
+ color: #e4e4e4; }
294
+ .magic-radio[disabled] + label:hover, .magic-radio[disabled] + label:before, .magic-radio[disabled] + label:after,
295
+ .magic-checkbox[disabled] + label:hover,
296
+ .magic-checkbox[disabled] + label:before,
297
+ .magic-checkbox[disabled] + label:after {
298
+ cursor: not-allowed; }
299
+ .magic-radio[disabled] + label:hover:before,
300
+ .magic-checkbox[disabled] + label:hover:before {
301
+ border: 1px solid #e4e4e4;
302
+ animation-name: none; }
303
+ .magic-radio[disabled] + label:before,
304
+ .magic-checkbox[disabled] + label:before {
305
+ border-color: #e4e4e4; }
306
+ .magic-radio:checked + label:before,
307
+ .magic-checkbox:checked + label:before {
308
+ animation-name: none; }
309
+ .magic-radio:checked + label:after,
310
+ .magic-checkbox:checked + label:after {
311
+ display: block; }
312
+ .magic-radio + label:before {
313
+ border-radius: 50%; }
314
+ .magic-radio + label:after {
315
+ top: 6px;
316
+ left: 6px;
317
+ width: 8px;
318
+ height: 8px;
319
+ border-radius: 50%;
320
+ background: #53b783; }
321
+ .magic-radio:checked + label:before {
322
+ border: 1px solid #53b783; }
323
+ .magic-radio:checked[disabled] + label:before {
324
+ border: 1px solid #c9e2f9; }
325
+ .magic-radio:checked[disabled] + label:after {
326
+ background: #c9e2f9; }
327
+ .magic-checkbox + label:before {
328
+ border-radius: 3px; }
329
+ .magic-checkbox + label:after {
330
+ top: 2px;
331
+ left: 7px;
332
+ box-sizing: border-box;
333
+ width: 6px;
334
+ height: 12px;
335
+ transform: rotate(45deg);
336
+ border-width: 2px;
337
+ border-style: solid;
338
+ border-color: #fff;
339
+ border-top: 0;
340
+ border-left: 0; }
341
+ .magic-checkbox:checked + label:before {
342
+ border: #53b783;
343
+ background: #53b783; }
344
+ .magic-checkbox:checked[disabled] + label:before {
345
+ border: #c9e2f9;
346
+ background: #c9e2f9; }
347
+ </style>
348
+
349
+ <style>
350
+ html, body {
351
+ height: 100%;
352
+ width: 100%;
353
+ -webkit-font-smoothing: antialiased;
354
+ -moz-osx-font-smoothing: grayscale;
355
+ }
356
+ body {
357
+ font-family: Helvetica Neue For Number,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif;
358
+ font-size: 14px;
359
+ line-height: 24px;
360
+ color: #444;
361
+ }
362
+ * {
363
+ padding: 0;
364
+ margin: 0;
365
+ }
366
+ ::selection {
367
+ text-shadow: none;
368
+ color: #fff;
369
+ background: #98d8b7;
370
+ }
371
+ ::-moz-selection {
372
+ text-shadow: none;
373
+ color: #fff;
374
+ background: #98d8b7;
375
+ }
376
+ .error-page {
377
+ display: flex;
378
+ flex-direction: column;
379
+ width: 100%;
380
+ height: 100%;
381
+ }
382
+ .error-logo {
383
+ position: absolute;
384
+ top: -15px;
385
+ right: 0px;
386
+ }
387
+ .error-stack {
388
+ background: #f1f1f1;
389
+ padding: 140px 80px 40px;
390
+ box-sizing: border-box;
391
+ border-bottom: 1px solid #e2e2e2;
392
+ }
393
+ .error-status {
394
+ color: #afafaf;
395
+ font-size: 150px;
396
+ position: absolute;
397
+ opacity: 0.2;
398
+ left: 76px;
399
+ top: 80px;
400
+ font-weight: 600;
401
+ margin-bottom: 10px;
402
+ }
403
+ .error-name {
404
+ color: #db5461;
405
+ font-size: 18px;
406
+ font-family: menlo, 'sans-serif';
407
+ font-weight: 300;
408
+ margin-bottom: 15px;
409
+ }
410
+ .error-title {
411
+ border-bottom: 1px solid #e0e0e0;
412
+ padding-bottom: 26px;
413
+ margin-bottom: 20px;
414
+ margin-top: 48px;
415
+ }
416
+ .error-title .box {
417
+ color: #db5461;
418
+ font-weight: 700;
419
+ font-size: 20px;
420
+ margin-left: 5px;
421
+ }
422
+ .error-title .context {
423
+ color: #db5461;
424
+ font-weight: 400;
425
+ margin-left: 5px;
426
+ margin-top: 48px;
427
+ line-height: 1.5;
428
+ }
429
+ .error-frames {
430
+ display: flex;
431
+ flex-direction: row-reverse;
432
+ margin-top: 40px;
433
+ }
434
+ .frame-preview {
435
+ background: #fff;
436
+ width: 50%;
437
+ box-shadow: 0px 0px 9px #d3d3d3;
438
+ height: 100%;
439
+ box-sizing: border-box;
440
+ overflow: auto;
441
+ }
442
+ .frame-stack {
443
+ margin-right: 40px;
444
+ flex: 1;
445
+ padding: 10px 0;
446
+ box-sizing: border-box;
447
+ }
448
+ .frames-list {
449
+ overflow: auto;
450
+ max-height: 334px;
451
+ }
452
+ .frames-filter-selector {
453
+ margin-bottom: 30px;
454
+ margin-left: 8px;
455
+ }
456
+ .request-details {
457
+ padding: 50px 80px;
458
+ }
459
+ .request-title {
460
+ text-transform: uppercase;
461
+ font-size: 18px;
462
+ letter-spacing: 1px;
463
+ padding: 0 5px 5px 5px;
464
+ margin-bottom: 15px;
465
+ color: #53b783;
466
+ }
467
+ .request-details .table {
468
+ width: 100%;
469
+ border-collapse: collapse;
470
+ margin-bottom: 80px;
471
+ }
472
+ .request-details .tr {
473
+ display: flex;
474
+ flex-direction: row;
475
+ }
476
+ .request-details .tr:nth-of-type(even) {
477
+ background: #fbfbfb;
478
+ }
479
+ .request-details .table .td {
480
+ padding: 6px 5px;
481
+ font-size: 14px;
482
+ letter-spacing: 0.4px;
483
+ color: #455275;
484
+ border-bottom: 1px solid #e8e8e8;
485
+ word-break: break-word;
486
+ }
487
+ .request-details .table .td.title {
488
+ flex: 1;
489
+ color: #565655;
490
+ font-size: 14px;
491
+ font-weight: 600;
492
+ }
493
+ .request-details .table .td.content {
494
+ width: 70%;
495
+ }
496
+ .request-details .table .td.content.code {
497
+ background: #fff;
498
+ width: 70%;
499
+ box-shadow: 0px 0px 9px #d3d3d3;
500
+ height: 100%;
501
+ box-sizing: border-box;
502
+ overflow: auto;
503
+ }
504
+ code[class*="language-"], pre[class*="language-"] {
505
+ background: transparent;
506
+ font-size: 13px;
507
+ line-height: 1.8;
508
+ }
509
+ .line-numbers .line-numbers-rows {
510
+ border: none;
511
+ }
512
+ .frame-row {
513
+ display: flex;
514
+ justify-content: space-between;
515
+ padding: 6px 10px 6px 34px;
516
+ position: relative;
517
+ cursor: pointer;
518
+ transition: background 300ms ease;
519
+ }
520
+ .frame-row.native-frame {
521
+ display: none;
522
+ opacity: 0.4;
523
+ }
524
+ .frame-row.native-frame.force-show {
525
+ display: flex;
526
+ }
527
+ .frame-row:after {
528
+ content: "";
529
+ background: #db5461;
530
+ position: absolute;
531
+ top: 50%;
532
+ left: 10px;
533
+ transform: translateY(-50%);
534
+ height: 10px;
535
+ width: 10px;
536
+ border-radius: 24px;
537
+ }
538
+ .frame-row:hover, .frame-row.active {
539
+ background: #fff;
540
+ }
541
+ .frame-row.active {
542
+ opacity: 1;
543
+ }
544
+ .frame-row-filepath {
545
+ color: #455275;
546
+ font-weight: 600;
547
+ margin-right: 15px;
548
+ }
549
+ .frame-context {
550
+ display: none;
551
+ }
552
+ .frame-row-code {
553
+ color: #999;
554
+ }
555
+ #frame-file {
556
+ color: #455275;
557
+ font-weight: 600;
558
+ border-bottom: 1px solid #e8e8e8;
559
+ padding: 10px 22px;
560
+ }
561
+ #frame-method {
562
+ color: #999;
563
+ font-weight: 400;
564
+ border-top: 1px solid #e8e8e8;
565
+ padding: 10px 22px;
566
+ }
567
+ .is-hidden {
568
+ display: none;
569
+ }
570
+ </style>
571
+ </head>
572
+ <body>
573
+ <section class="error-page">
574
+ <section class="error-stack">
575
+ <h3 class="error-status">{{ status }}</h3>
576
+ <div class="error-title">
577
+ <h1 class="box">{{ name }} in {{ request.url }}</h1>
578
+ <div class="context">{{ message }}</div>
579
+ </div>
580
+
581
+ <img class="error-logo" src="https://zos.alipayobjects.com/rmsportal/JFKAMfmPehWfhBPdCjrw.svg"/>
582
+
583
+ <div class="error-frames">
584
+ <div class="frame-preview is-hidden">
585
+ <div id="frame-file"></div>
586
+ <div id="frame-code"><pre class="line-numbers"><code id="code-drop"></code></pre></div>
587
+ <div id="frame-method"></div>
588
+ </div>
589
+
590
+ <div class="frame-stack">
591
+ <div class="frames-filter-selector">
592
+ <input type="checkbox" class="magic-checkbox" name="frames-filter" id="frames-filter">
593
+ <label for="frames-filter">Show all frames</label>
594
+ </div>
595
+
596
+ <div class="frames-list">
597
+ {{#frames}}
598
+ {{index}}
599
+ <div class="frame-row {{classes}}">
600
+ <div class="frame-row-filepath">
601
+ {{ file }}:{{ line }}:{{ column }}
602
+ </div>
603
+ <div class="frame-row-code">
604
+ {{ method }}
605
+ </div>
606
+ <div class="frame-context"
607
+ data-start="{{context.start}}"
608
+ data-line="{{line}}"
609
+ data-file="{{file}}"
610
+ data-method="{{method}}"
611
+ data-extname="{{extname}}"
612
+ data-line-column="{{line}}:{{column}}"
613
+ >{{ context.pre }}
614
+ {{ context.line }}
615
+ {{ context.post }}
616
+ </div>
617
+ </div>
618
+ {{/frames}}
619
+ </div>
620
+ </div>
621
+ </div>
622
+ </section>
623
+
624
+ <section class="request-details">
625
+ <h2 class="request-title"> Request Details </h2>
626
+ <div class="table">
627
+ <div class="tr">
628
+ <div class="td title"> URI </div>
629
+ <div class="td content">{{ request.url }}</div>
630
+ </div>
631
+
632
+ <div class="tr">
633
+ <div class="td title"> Request Method </div>
634
+ <div class="td content">{{ request.method }}</div>
635
+ </div>
636
+
637
+ <div class="tr">
638
+ <div class="td title"> HTTP Version </div>
639
+ <div class="td content">{{ request.httpVersion }}</div>
640
+ </div>
641
+
642
+ <div class="tr">
643
+ <div class="td title"> Connection </div>
644
+ <div class="td content">{{ request.connection }}</div>
645
+ </div>
646
+ </div>
647
+
648
+ <h2 class="request-title"> Headers </h2>
649
+ <div class="table">
650
+ {{#request.headers}}
651
+ <div class="tr">
652
+ <div class="td title">{{ key }}</div>
653
+ <div class="td content">{{ value }}</div>
654
+ </div>
655
+ {{/request.headers}}
656
+ </div>
657
+
658
+ <h2 class="request-title"> Cookies </h2>
659
+ <div class="table">
660
+ {{#request.cookies}}
661
+ <div class="tr">
662
+ <div class="td title">{{ key }}</div>
663
+ <div class="td content">{{ value }}</div>
664
+ </div>
665
+ {{/request.cookies}}
666
+ </div>
667
+ <h2 class="request-title"> AppInfo </h2>
668
+ <div class="table">
669
+ <div class="tr">
670
+ <div class="td title"> baseDir </div>
671
+ <div class="td content">{{ appInfo.baseDir }}</div>
672
+ </div>
673
+ <div class="tr">
674
+ <div class="td title"> config </div>
675
+ <div class="td content code">
676
+ <pre class="line-numbers"><code class="language-json">{{ appInfo.config }}</code></pre>
677
+ </div>
678
+ </div>
679
+ </<div>
680
+ </section>
681
+
682
+ <script type="text/javascript">
683
+ var _self="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},Prism=function(){var e=/\blang(?:uage)?-(\w+)\b/i,t=0,n=_self.Prism={util:{encode:function(e){return e instanceof a?new a(e.type,n.util.encode(e.content),e.alias):"Array"===n.util.type(e)?e.map(n.util.encode):e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/\u00a0/g," ")},type:function(e){return Object.prototype.toString.call(e).match(/\[object (\w+)\]/)[1]},objId:function(e){return e.__id||Object.defineProperty(e,"__id",{value:++t}),e.__id},clone:function(e){var t=n.util.type(e);switch(t){case"Object":var a={};for(var r in e)e.hasOwnProperty(r)&&(a[r]=n.util.clone(e[r]));return a;case"Array":return e.map&&e.map(function(e){return n.util.clone(e)})}return e}},languages:{extend:function(e,t){var a=n.util.clone(n.languages[e]);for(var r in t)a[r]=t[r];return a},insertBefore:function(e,t,a,r){r=r||n.languages;var i=r[e];if(2==arguments.length){a=arguments[1];for(var l in a)a.hasOwnProperty(l)&&(i[l]=a[l]);return i}var o={};for(var s in i)if(i.hasOwnProperty(s)){if(s==t)for(var l in a)a.hasOwnProperty(l)&&(o[l]=a[l]);o[s]=i[s]}return n.languages.DFS(n.languages,function(t,n){n===r[e]&&t!=e&&(this[t]=o)}),r[e]=o},DFS:function(e,t,a,r){r=r||{};for(var i in e)e.hasOwnProperty(i)&&(t.call(e,i,e[i],a||i),"Object"!==n.util.type(e[i])||r[n.util.objId(e[i])]?"Array"!==n.util.type(e[i])||r[n.util.objId(e[i])]||(r[n.util.objId(e[i])]=!0,n.languages.DFS(e[i],t,i,r)):(r[n.util.objId(e[i])]=!0,n.languages.DFS(e[i],t,null,r)))}},plugins:{},highlightAll:function(e,t){var a={callback:t,selector:'code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'};n.hooks.run("before-highlightall",a);for(var r,i=a.elements||document.querySelectorAll(a.selector),l=0;r=i[l++];)n.highlightElement(r,e===!0,a.callback)},highlightElement:function(t,a,r){for(var i,l,o=t;o&&!e.test(o.className);)o=o.parentNode;o&&(i=(o.className.match(e)||[,""])[1].toLowerCase(),l=n.languages[i]),t.className=t.className.replace(e,"").replace(/\s+/g," ")+" language-"+i,o=t.parentNode,/pre/i.test(o.nodeName)&&(o.className=o.className.replace(e,"").replace(/\s+/g," ")+" language-"+i);var s=t.textContent,u={element:t,language:i,grammar:l,code:s};if(n.hooks.run("before-sanity-check",u),!u.code||!u.grammar)return u.code&&(u.element.textContent=u.code),n.hooks.run("complete",u),void 0;if(n.hooks.run("before-highlight",u),a&&_self.Worker){var g=new Worker(n.filename);g.onmessage=function(e){u.highlightedCode=e.data,n.hooks.run("before-insert",u),u.element.innerHTML=u.highlightedCode,r&&r.call(u.element),n.hooks.run("after-highlight",u),n.hooks.run("complete",u)},g.postMessage(JSON.stringify({language:u.language,code:u.code,immediateClose:!0}))}else u.highlightedCode=n.highlight(u.code,u.grammar,u.language),n.hooks.run("before-insert",u),u.element.innerHTML=u.highlightedCode,r&&r.call(t),n.hooks.run("after-highlight",u),n.hooks.run("complete",u)},highlight:function(e,t,r){var i=n.tokenize(e,t);return a.stringify(n.util.encode(i),r)},tokenize:function(e,t){var a=n.Token,r=[e],i=t.rest;if(i){for(var l in i)t[l]=i[l];delete t.rest}e:for(var l in t)if(t.hasOwnProperty(l)&&t[l]){var o=t[l];o="Array"===n.util.type(o)?o:[o];for(var s=0;s<o.length;++s){var u=o[s],g=u.inside,c=!!u.lookbehind,h=!!u.greedy,f=0,d=u.alias;if(h&&!u.pattern.global){var p=u.pattern.toString().match(/[imuy]*$/)[0];u.pattern=RegExp(u.pattern.source,p+"g")}u=u.pattern||u;for(var m=0,y=0;m<r.length;y+=r[m].length,++m){var v=r[m];if(r.length>e.length)break e;if(!(v instanceof a)){u.lastIndex=0;var b=u.exec(v),k=1;if(!b&&h&&m!=r.length-1){if(u.lastIndex=y,b=u.exec(e),!b)break;for(var w=b.index+(c?b[1].length:0),_=b.index+b[0].length,A=m,P=y,j=r.length;j>A&&_>P;++A)P+=r[A].length,w>=P&&(++m,y=P);if(r[m]instanceof a||r[A-1].greedy)continue;k=A-m,v=e.slice(y,P),b.index-=y}if(b){c&&(f=b[1].length);var w=b.index+f,b=b[0].slice(f),_=w+b.length,x=v.slice(0,w),O=v.slice(_),S=[m,k];x&&S.push(x);var N=new a(l,g?n.tokenize(b,g):b,d,b,h);S.push(N),O&&S.push(O),Array.prototype.splice.apply(r,S)}}}}}return r},hooks:{all:{},add:function(e,t){var a=n.hooks.all;a[e]=a[e]||[],a[e].push(t)},run:function(e,t){var a=n.hooks.all[e];if(a&&a.length)for(var r,i=0;r=a[i++];)r(t)}}},a=n.Token=function(e,t,n,a,r){this.type=e,this.content=t,this.alias=n,this.length=0|(a||"").length,this.greedy=!!r};if(a.stringify=function(e,t,r){if("string"==typeof e)return e;if("Array"===n.util.type(e))return e.map(function(n){return a.stringify(n,t,e)}).join("");var i={type:e.type,content:a.stringify(e.content,t,r),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:r};if("comment"==i.type&&(i.attributes.spellcheck="true"),e.alias){var l="Array"===n.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(i.classes,l)}n.hooks.run("wrap",i);var o=Object.keys(i.attributes).map(function(e){return e+'="'+(i.attributes[e]||"").replace(/"/g,"&quot;")+'"'}).join(" ");return"<"+i.tag+' class="'+i.classes.join(" ")+'"'+(o?" "+o:"")+">"+i.content+"</"+i.tag+">"},!_self.document)return _self.addEventListener?(_self.addEventListener("message",function(e){var t=JSON.parse(e.data),a=t.language,r=t.code,i=t.immediateClose;_self.postMessage(n.highlight(r,n.languages[a],a)),i&&_self.close()},!1),_self.Prism):_self.Prism;var r=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return r&&(n.filename=r.src,document.addEventListener&&!r.hasAttribute("data-manual")&&("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(n.highlightAll):window.setTimeout(n.highlightAll,16):document.addEventListener("DOMContentLoaded",n.highlightAll))),_self.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=Prism),"undefined"!=typeof global&&(global.Prism=Prism);
684
+ Prism.languages.markup={comment:/<!--[\w\W]*?-->/,prolog:/<\?[\w\W]+?\?>/,doctype:/<!DOCTYPE[\w\W]+?>/i,cdata:/<!\[CDATA\[[\w\W]*?]]>/i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\\1|\\?(?!\1)[\w\W])*\1|[^\s'">=]+))?)*\s*\/?>/i,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:('|")[\w\W]*?(\1)|[^\s>]+)/i,inside:{punctuation:/[=>"']/}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},Prism.hooks.add("wrap",function(a){"entity"===a.type&&(a.attributes.title=a.content.replace(/&amp;/,"&"))}),Prism.languages.xml=Prism.languages.markup,Prism.languages.html=Prism.languages.markup,Prism.languages.mathml=Prism.languages.markup,Prism.languages.svg=Prism.languages.markup;
685
+ Prism.languages.css={comment:/\/\*[\w\W]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(\\(?:\r\n|[\w\W])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^\{\}\s][^\{\};]*?(?=\s*\{)/,string:{pattern:/("|')(\\(?:\r\n|[\w\W])|(?!\1)[^\\\r\n])*\1/,greedy:!0},property:/(\b|\B)[\w-]+(?=\s*:)/i,important:/\B!important\b/i,"function":/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},Prism.languages.css.atrule.inside.rest=Prism.util.clone(Prism.languages.css),Prism.languages.markup&&(Prism.languages.insertBefore("markup","tag",{style:{pattern:/(<style[\w\W]*?>)[\w\W]*?(?=<\/style>)/i,lookbehind:!0,inside:Prism.languages.css,alias:"language-css"}}),Prism.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|').*?\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:Prism.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:Prism.languages.css}},alias:"language-css"}},Prism.languages.markup.tag));
686
+ Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\w\W]*?\*\//,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0}],string:{pattern:/(["'])(\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[a-z0-9_\.\\]+/i,lookbehind:!0,inside:{punctuation:/(\.|\\)/}},keyword:/\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,"boolean":/\b(true|false)\b/,"function":/[a-z0-9_]+(?=\()/i,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/};
687
+ Prism.languages.javascript=Prism.languages.extend("clike",{keyword:/\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\b/,number:/\b-?(0x[\dA-Fa-f]+|0b[01]+|0o[0-7]+|\d*\.?\d+([Ee][+-]?\d+)?|NaN|Infinity)\b/,"function":/[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*(?=\()/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*\*?|\/|~|\^|%|\.{3}/}),Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^\/])\/(?!\/)(\[.+?]|\\.|[^\/\\\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0,greedy:!0}}),Prism.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\\\|\\?[^\\])*?`/,greedy:!0,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:Prism.languages.javascript}},string:/[\s\S]+/}}}),Prism.languages.markup&&Prism.languages.insertBefore("markup","tag",{script:{pattern:/(<script[\w\W]*?>)[\w\W]*?(?=<\/script>)/i,lookbehind:!0,inside:Prism.languages.javascript,alias:"language-javascript"}}),Prism.languages.js=Prism.languages.javascript;
688
+ Prism.languages.json={property:/"(?:\\.|[^\\"])*"(?=\s*:)/gi,string:/"(?!:)(?:\\.|[^\\"])*"(?!:)/g,number:/\b-?(0x[\dA-Fa-f]+|\d*\.?\d+([Ee][+-]?\d+)?)\b/g,punctuation:/[{}[\]);,]/g,operator:/:/g,"boolean":/\b(true|false)\b/gi,"null":/\bnull\b/gi},Prism.languages.jsonp=Prism.languages.json;
689
+ Prism.languages.typescript=Prism.languages.extend("javascript",{keyword:/\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield|false|true|module|declare|constructor|string|Function|any|number|boolean|Array|enum|symbol|namespace|abstract|require|type)\b/}),Prism.languages.ts=Prism.languages.typescript;
690
+ !function(){function e(e,t){return Array.prototype.slice.call((t||document).querySelectorAll(e))}function t(e,t){return t=" "+t+" ",(" "+e.className+" ").replace(/[\n\t]/g," ").indexOf(t)>-1}function n(e,n,i){for(var o,a=n.replace(/\s+/g,"").split(","),l=+e.getAttribute("data-line-offset")||0,d=r()?parseInt:parseFloat,c=d(getComputedStyle(e).lineHeight),s=0;o=a[s++];){o=o.split("-");var u=+o[0],m=+o[1]||u,h=document.createElement("div");h.textContent=Array(m-u+2).join(" \n"),h.setAttribute("aria-hidden","true"),h.className=(i||"")+" line-highlight",t(e,"line-numbers")||(h.setAttribute("data-start",u),m>u&&h.setAttribute("data-end",m)),h.style.top=(u-l-1)*c+"px",t(e,"line-numbers")?e.appendChild(h):(e.querySelector("code")||e).appendChild(h)}}function i(){var t=location.hash.slice(1);e(".temporary.line-highlight").forEach(function(e){e.parentNode.removeChild(e)});var i=(t.match(/\.([\d,-]+)$/)||[,""])[1];if(i&&!document.getElementById(t)){var r=t.slice(0,t.lastIndexOf(".")),o=document.getElementById(r);o&&(o.hasAttribute("data-line")||o.setAttribute("data-line",""),n(o,i,"temporary "),document.querySelector(".temporary.line-highlight").scrollIntoView())}}if("undefined"!=typeof self&&self.Prism&&self.document&&document.querySelector){var r=function(){var e;return function(){if("undefined"==typeof e){var t=document.createElement("div");t.style.fontSize="13px",t.style.lineHeight="1.5",t.style.padding=0,t.style.border=0,t.innerHTML="&nbsp;<br />&nbsp;",document.body.appendChild(t),e=38===t.offsetHeight,document.body.removeChild(t)}return e}}(),o=0;Prism.hooks.add("complete",function(t){var r=t.element.parentNode,a=r&&r.getAttribute("data-line");r&&a&&/pre/i.test(r.nodeName)&&(clearTimeout(o),e(".line-highlight",r).forEach(function(e){e.parentNode.removeChild(e)}),n(r,a),o=setTimeout(i,1))}),window.addEventListener&&window.addEventListener("hashchange",i)}}();
691
+ !function(){"undefined"!=typeof self&&self.Prism&&self.document&&Prism.hooks.add("complete",function(e){if(e.code){var t=e.element.parentNode,s=/\s*\bline-numbers\b\s*/;if(t&&/pre/i.test(t.nodeName)&&(s.test(t.className)||s.test(e.element.className))&&!e.element.querySelector(".line-numbers-rows")){s.test(e.element.className)&&(e.element.className=e.element.className.replace(s,"")),s.test(t.className)||(t.className+=" line-numbers");var n,a=e.code.match(/\n(?!$)/g),l=a?a.length+1:1,r=new Array(l+1);r=r.join("<span></span>"),n=document.createElement("span"),n.setAttribute("aria-hidden","true"),n.className="line-numbers-rows",n.innerHTML=r,t.hasAttribute("data-start")&&(t.style.counterReset="linenumber "+(parseInt(t.getAttribute("data-start"),10)-1)),e.element.appendChild(n)}}})}();
692
+ </script>
693
+ <script>
694
+ (function() {
695
+ const $ = function(value) { return document.querySelector(value) };
696
+ const $$ = function(value) { return document.querySelectorAll(value) };
697
+ var nativeFramesLength = $$('.frame-row.native-frame').length;
698
+ var allFramesLength = $$('.frame-row').length;
699
+ function filterFrames () {
700
+ $('.frame-preview').classList.remove('is-hidden');
701
+ var isSelected = $('#frames-filter').checked;
702
+ if (isSelected) {
703
+ $$('.frame-row.native-frame').forEach(function(node) {
704
+ node.classList.add('force-show');
705
+ });
706
+ } else {
707
+ $$('.frame-row.native-frame').forEach(function(node) {
708
+ node.classList.remove('force-show');
709
+ });
710
+ var activeFrame = $('.frame-row.active');
711
+ if (activeFrame.classList.contains('native-frame')) {
712
+ activeFrame.classList.remove('active');
713
+ var firstFrame = $$('.frame-row')[0];
714
+ firstFrame.classList.add('active');
715
+ showFrameContext(firstFrame);
716
+ }
717
+ }
718
+ }
719
+ function displayFirstView () {
720
+ if (nativeFramesLength !== allFramesLength) {
721
+ $('.frame-preview').classList.remove('is-hidden');
722
+ }
723
+ }
724
+ function showFrameContext (frame) {
725
+ $frameContext = frame.querySelector('.frame-context');
726
+ var $context = $frameContext.innerHTML;
727
+ $context = $context.trim().length === 0 ? 'Missing stack frames' : $context;
728
+ var $line = $frameContext.getAttribute('data-line');
729
+ var $start = $frameContext.getAttribute('data-start');
730
+ var $file = $frameContext.getAttribute('data-file');
731
+ var $method = $frameContext.getAttribute('data-method');
732
+ var $lineColumn = $frameContext.getAttribute('data-line-column');
733
+ var $language = $frameContext.getAttribute('data-extname') || 'js';
734
+ $('#code-drop').parentNode.setAttribute('data-line', $line);
735
+ $('#code-drop').parentNode.setAttribute('data-start', $start);
736
+ $('#code-drop').parentNode.setAttribute('data-language', $language);
737
+ $('#code-drop').parentNode.setAttribute('data-line-offset', (Number($start) - 1));
738
+ $('#code-drop').setAttribute('class', 'language-' + $language);
739
+ $('#code-drop').innerHTML = $context;
740
+ $('#frame-file').innerHTML = $file;
741
+ $('#frame-method').innerHTML = $method + '' + $lineColumn;
742
+
743
+ Prism.highlightAll();
744
+ }
745
+ $$('.frame-row').forEach(function(node) {
746
+ node.onclick = function (e) {
747
+ $$('.frame-row').forEach(function(_node) { _node.classList.remove('active') });
748
+ e.currentTarget.classList.add('active');
749
+ showFrameContext(e.currentTarget);
750
+ }
751
+ })
752
+ $('#frames-filter').onclick = function () {
753
+ filterFrames();
754
+ }
755
+ displayFirstView();
756
+ showFrameContext($('.frame-row.active'));
757
+ })();
758
+ </script>
759
+ </section>
760
+ </body>
761
+ </html>