fastapi-voyager 0.15.0__py3-none-any.whl → 0.15.1__py3-none-any.whl

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.
@@ -1 +1,11 @@
1
- {"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"}
1
+ {
2
+ "name": "",
3
+ "short_name": "",
4
+ "icons": [
5
+ { "src": "/android-chrome-192x192.png", "sizes": "192x192", "type": "image/png" },
6
+ { "src": "/android-chrome-512x512.png", "sizes": "512x512", "type": "image/png" }
7
+ ],
8
+ "theme_color": "#ffffff",
9
+ "background_color": "#ffffff",
10
+ "display": "standalone"
11
+ }
@@ -22,11 +22,7 @@
22
22
  sizes="16x16"
23
23
  href="fastapi-voyager-static/icon/favicon-16x16.png"
24
24
  />
25
- <link
26
- rel="icon"
27
- href="fastapi-voyager-static/icon/favicon.ico"
28
- sizes="any"
29
- />
25
+ <link rel="icon" href="fastapi-voyager-static/icon/favicon.ico" sizes="any" />
30
26
  <link rel="manifest" href="fastapi-voyager-static/icon/site.webmanifest" />
31
27
  <link
32
28
  href="https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900|Material+Icons"
@@ -64,18 +60,46 @@
64
60
 
65
61
  .inherit-flow {
66
62
  /* stroke-width:2; */
67
- stroke-dasharray: 8 6; /* dash pattern */
63
+ stroke-dasharray: 8 6; /* dash pattern */
68
64
  stroke-linecap: round;
69
65
  animation: dash 2s linear infinite;
70
66
  animation-direction: reverse;
71
67
  }
72
- @keyframes dash { to { stroke-dashoffset: -14; } }
68
+ @keyframes dash {
69
+ to {
70
+ stroke-dashoffset: -14;
71
+ }
72
+ }
73
73
 
74
74
  .adjust-fit {
75
75
  height: calc(100vh - 54px);
76
76
  }
77
77
 
78
- .github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}}
78
+ .github-corner:hover .octo-arm {
79
+ animation: octocat-wave 560ms ease-in-out;
80
+ }
81
+ @keyframes octocat-wave {
82
+ 0%,
83
+ 100% {
84
+ transform: rotate(0);
85
+ }
86
+ 20%,
87
+ 60% {
88
+ transform: rotate(-25deg);
89
+ }
90
+ 40%,
91
+ 80% {
92
+ transform: rotate(10deg);
93
+ }
94
+ }
95
+ @media (max-width: 500px) {
96
+ .github-corner:hover .octo-arm {
97
+ animation: none;
98
+ }
99
+ .github-corner .octo-arm {
100
+ animation: octocat-wave 560ms ease-in-out;
101
+ }
102
+ }
79
103
 
80
104
  /* App boot loading overlay & gating */
81
105
  #app-loading-overlay {
@@ -87,10 +111,19 @@
87
111
  gap: 12px;
88
112
  background: #ffffff;
89
113
  z-index: 9999;
90
- font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif;
114
+ font-family:
115
+ -apple-system,
116
+ BlinkMacSystemFont,
117
+ Segoe UI,
118
+ Roboto,
119
+ Helvetica,
120
+ Arial,
121
+ sans-serif;
91
122
  color: #009485;
92
123
  }
93
- .loading-text { font-size: 14px; }
124
+ .loading-text {
125
+ font-size: 14px;
126
+ }
94
127
  .spinner {
95
128
  width: 20px;
96
129
  height: 20px;
@@ -99,10 +132,18 @@
99
132
  border-radius: 50%;
100
133
  animation: frv-spin 0.8s linear infinite;
101
134
  }
102
- @keyframes frv-spin { to { transform: rotate(360deg); } }
135
+ @keyframes frv-spin {
136
+ to {
137
+ transform: rotate(360deg);
138
+ }
139
+ }
103
140
  /* While JS not ready: hide app, show overlay */
104
- body.app-loading #q-app { visibility: hidden; }
105
- body.app-loading #app-loading-overlay { display: flex; }
141
+ body.app-loading #q-app {
142
+ visibility: hidden;
143
+ }
144
+ body.app-loading #app-loading-overlay {
145
+ display: flex;
146
+ }
106
147
  </style>
107
148
  <body class="app-loading">
108
149
  <!-- App boot loading overlay: shown until JS initializes -->
@@ -113,14 +154,21 @@
113
154
  <div id="q-app">
114
155
  <q-layout view="hHh lpR fff">
115
156
  <q-header bordered class="bg-primary text-white">
116
- <q-toolbar class="row text-grey-9 bg-white" style="width: 100%; border-bottom: 2px solid #009485;">
157
+ <q-toolbar
158
+ class="row text-grey-9 bg-white"
159
+ style="width: 100%; border-bottom: 2px solid #009485"
160
+ >
117
161
  <div
118
162
  class="col-auto text-primary"
119
- style="font-size: 18px; font-weight: bold; display: flex; align-items: baseline;"
163
+ style="font-size: 18px; font-weight: bold; display: flex; align-items: baseline"
120
164
  >
121
165
  <q-icon class="q-mr-sm" name="satellite_alt"></q-icon>
122
166
  <span> FastAPI Voyager </span>
123
- <span v-if="store.state.version" style="font-size: 12px; margin-left: 8px; font-weight: normal;">{{ store.state.version }}</span>
167
+ <span
168
+ v-if="store.state.version"
169
+ style="font-size: 12px; margin-left: 8px; font-weight: normal"
170
+ >{{ store.state.version }}</span
171
+ >
124
172
  </div>
125
173
  <div class="col-auto">
126
174
  <q-btn
@@ -145,8 +193,7 @@
145
193
  dense
146
194
  />
147
195
  </div>
148
- <div class="col-auto q-ml-auto">
149
- </div>
196
+ <div class="col-auto q-ml-auto"></div>
150
197
  <div class="col-auto row items-center q-gutter-sm">
151
198
  <q-select
152
199
  v-show="!store.state.search.invisible"
@@ -162,23 +209,23 @@
162
209
  option-value="value"
163
210
  emit-value
164
211
  map-options
165
- style="min-width: 320px;"
212
+ style="min-width: 320px"
166
213
  clearable
167
214
  label="Select schema"
168
215
  @update:model-value="onSearchSchemaChange"
169
216
  @filter="filterSearchSchemas"
170
217
  @clear="resetSearch"
171
218
  >
172
- <template v-slot:option="scope">
173
- <q-item v-bind="scope.itemProps">
174
- <q-item-section>
175
- <q-item-label>{{ scope.opt.label }}</q-item-label>
176
- <q-item-label caption>{{ scope.opt.desc }}</q-item-label>
177
- </q-item-section>
178
- </q-item>
179
- </template>
180
- </q-select>
181
-
219
+ <template v-slot:option="scope">
220
+ <q-item v-bind="scope.itemProps">
221
+ <q-item-section>
222
+ <q-item-label>{{ scope.opt.label }}</q-item-label>
223
+ <q-item-label caption>{{ scope.opt.desc }}</q-item-label>
224
+ </q-item-section>
225
+ </q-item>
226
+ </template>
227
+ </q-select>
228
+
182
229
  <q-select
183
230
  v-show="!store.state.search.invisible"
184
231
  dense
@@ -213,29 +260,52 @@
213
260
  aria-label="Help"
214
261
  style="margin-right: 50px; margin-left: 20px"
215
262
  >
216
- <q-tooltip
217
- anchor="bottom middle"
218
- self="top middle"
219
- :offset="[0,8]"
220
- >
263
+ <q-tooltip anchor="bottom middle" self="top middle" :offset="[0,8]">
221
264
  <div
222
265
  class="column items-start text-left"
223
266
  style="line-height: 1.4; font-size: 12px"
224
267
  >
225
268
  <ul>
226
269
  <li>scroll to zoom in/out</li>
227
- <li>
228
- double click node to view details.
229
- </li>
230
- <li>
231
- shift + click to search the schema and highlight related nodes.
232
- </li>
270
+ <li>double click node to view details.</li>
271
+ <li>shift + click to search the schema and highlight related nodes.</li>
233
272
  </ul>
234
273
  </div>
235
274
  </q-tooltip>
236
275
  </q-btn>
237
- <a href="https://github.com/allmonday/fastapi-voyager" target="_blank" class="github-corner" aria-label="View source on GitHub"><svg width="52" height="52" viewBox="0 0 250 250" style="fill:#009485; color:#fff; position: absolute; top: 0; border: 0; right: 0;" aria-hidden="true"><path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"/><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"/><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"/></svg></a>
238
- </div>
276
+ <a
277
+ href="https://github.com/allmonday/fastapi-voyager"
278
+ target="_blank"
279
+ class="github-corner"
280
+ aria-label="View source on GitHub"
281
+ ><svg
282
+ width="52"
283
+ height="52"
284
+ viewBox="0 0 250 250"
285
+ style="
286
+ fill: #009485;
287
+ color: #fff;
288
+ position: absolute;
289
+ top: 0;
290
+ border: 0;
291
+ right: 0;
292
+ "
293
+ aria-hidden="true"
294
+ >
295
+ <path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z" />
296
+ <path
297
+ d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2"
298
+ fill="currentColor"
299
+ style="transform-origin: 130px 106px"
300
+ class="octo-arm"
301
+ />
302
+ <path
303
+ d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z"
304
+ fill="currentColor"
305
+ class="octo-body"
306
+ /></svg
307
+ ></a>
308
+ </div>
239
309
  </q-toolbar>
240
310
  </q-header>
241
311
 
@@ -243,25 +313,25 @@
243
313
  v-model="store.state.rightDrawer.drawer"
244
314
  :width="store.state.rightDrawer.width"
245
315
  side="right"
246
- style="border-left: 1px solid #888;"
316
+ style="border-left: 1px solid #888"
247
317
  bordered
248
318
  overlay
249
319
  >
250
- <div
320
+ <div
251
321
  @mousedown="startDragDrawer"
252
322
  style="
253
- position: absolute;
254
- left: -3px;
255
- top: 0;
256
- width: 6px;
257
- height: 100%;
258
- cursor: col-resize;
323
+ position: absolute;
324
+ left: -3px;
325
+ top: 0;
326
+ width: 6px;
327
+ height: 100%;
328
+ cursor: col-resize;
259
329
  background: transparent;
260
330
  z-index: 10;
261
331
  "
262
332
  title="drag to resize"
263
333
  ></div>
264
-
334
+
265
335
  <div style="z-index: 11; position: absolute; left: -17px; top: 9px">
266
336
  <q-btn
267
337
  @click="store.state.rightDrawer.drawer = !store.state.rightDrawer.drawer"
@@ -310,60 +380,92 @@
310
380
  >
311
381
  <template #header>
312
382
  <div class="" style="white-space: nowrap; width: 100%">
383
+ <q-icon
384
+ style="vertical-align: top"
385
+ class="q-mr-sm"
386
+ :name="store.state.leftPanel.tag == tag.name ? 'folder' : 'folder_open'"
387
+ ></q-icon>
388
+ <span
389
+ >{{ tag.name }}
390
+ <q-chip style="position: relative; top: -1px" class="q-ml-md" dense
391
+ >{{ tag.routes.length }}</q-chip
392
+ ></span
393
+ >
394
+ <a
395
+ v-if="store.state.leftPanel._tag == tag.name"
396
+ target="_blank"
397
+ class="q-ml-sm"
398
+ v-if="store.state.swagger.url"
399
+ :href="store.state.swagger.url + '#/' + tag.name"
400
+ >
313
401
  <q-icon
314
- style="vertical-align: top;"
315
- class="q-mr-sm"
316
- :name="store.state.leftPanel.tag == tag.name ? 'folder' : 'folder_open'"
402
+ color="primary"
403
+ size=""
404
+ name="link"
405
+ title="open in swagger"
317
406
  ></q-icon>
318
- <span>{{ tag.name }} <q-chip style="position:relative; top: -1px;" class="q-ml-md" dense>{{ tag.routes.length }}</q-chip></span>
319
- <a v-if="store.state.leftPanel._tag == tag.name" target="_blank" class="q-ml-sm" v-if="store.state.swagger.url" :href="store.state.swagger.url + '#/' + tag.name">
320
- <q-icon color="primary" size="" name="link" title="open in swagger"></q-icon>
321
- </a>
407
+ </a>
322
408
  </div>
323
409
  </template>
324
- <q-list separator style="overflow: auto; max-height: 60vh;">
325
- <q-item
326
- v-for="route in (store.state.filter.hidePrimitiveRoute ? tag.routes.filter(r => !r.is_primitive) :tag.routes || [])"
327
- :key="route.id"
328
- clickable
329
- v-ripple
330
- :active="store.state.leftPanel.routeId === route.id"
331
- active-class=""
332
- @click="selectRoute(route.id)"
333
- >
334
- <q-item-section>
335
- <span class="q-ml-lg" style="white-space: nowrap">
410
+ <q-list separator style="overflow: auto; max-height: 60vh">
411
+ <q-item
412
+ v-for="route in (store.state.filter.hidePrimitiveRoute ? tag.routes.filter(r => !r.is_primitive) :tag.routes || [])"
413
+ :key="route.id"
414
+ clickable
415
+ v-ripple
416
+ :active="store.state.leftPanel.routeId === route.id"
417
+ active-class=""
418
+ @click="selectRoute(route.id)"
419
+ >
420
+ <q-item-section>
421
+ <span class="q-ml-lg" style="white-space: nowrap">
422
+ <q-icon class="q-mr-sm" name="data_object"></q-icon>
423
+ {{ route.name }}
424
+ <a
425
+ v-if="store.state.leftPanel.routeId == route.id"
426
+ target="_blank"
427
+ class="q-ml-md"
428
+ v-if="store.state.swagger.url"
429
+ :href="store.state.swagger.url + '#/' + tag.name + '/' + route.unique_id"
430
+ >
336
431
  <q-icon
337
- class="q-mr-sm"
338
- name="data_object"
432
+ color="primary"
433
+ size=""
434
+ name="link"
435
+ title="open in swagger"
339
436
  ></q-icon>
340
- {{ route.name }}
341
- <a v-if="store.state.leftPanel.routeId == route.id" target="_blank" class="q-ml-md" v-if="store.state.swagger.url" :href="store.state.swagger.url + '#/' + tag.name + '/' + route.unique_id">
342
- <q-icon color="primary" size="" name="link" title="open in swagger"></q-icon>
343
- </a>
344
- </span>
345
- </q-item-section>
346
- </q-item>
347
- <q-item
348
- v-if="!tag.routes || tag.routes.length === 0"
349
- dense
350
- >
351
- <q-item-section class="text-grey-6"
352
- >No routes</q-item-section
353
- >
354
- </q-item>
355
- </q-list>
356
- </q-scroll-area>
437
+ </a>
438
+ </span>
439
+ </q-item-section>
440
+ </q-item>
441
+ <q-item v-if="!tag.routes || tag.routes.length === 0" dense>
442
+ <q-item-section class="text-grey-6">No routes</q-item-section>
443
+ </q-item>
444
+ </q-list>
357
445
  </q-expansion-item>
358
446
  </q-list>
447
+ </q-scroll-area>
359
448
  </div>
360
449
  </template>
361
450
 
362
451
  <template #after>
363
- <div style="position: relative; width: 100%; height: 100%;">
452
+ <div style="position: relative; width: 100%; height: 100%">
364
453
  <div id="graph" class="adjust-fit"></div>
365
- <div style="position: absolute; left: 8px; top: 8px; z-index: 10; background: rgba(255,255,255,0.85); border-radius: 4px; padding: 2px 8px;">
366
- <div class="q-mt-sm" v-if="store.state.modeControl.briefModeEnabled && store.state.search.mode === false && store.state.mode === 'voyager'">
454
+ <div
455
+ style="
456
+ position: absolute;
457
+ left: 8px;
458
+ top: 8px;
459
+ z-index: 10;
460
+ background: rgba(255, 255, 255, 0.85);
461
+ border-radius: 4px;
462
+ padding: 2px 8px;
463
+ "
464
+ >
465
+ <div
466
+ class="q-mt-sm"
467
+ v-if="store.state.modeControl.briefModeEnabled && store.state.search.mode === false && store.state.mode === 'voyager'"
468
+ >
367
469
  <q-toggle
368
470
  v-if="store.state.modeControl.briefModeEnabled"
369
471
  dense
@@ -373,7 +475,10 @@
373
475
  title="skip middle classes, config module_prefix to enable it"
374
476
  />
375
477
  </div>
376
- <div class="q-mt-sm" v-if="store.state.search.mode === false && store.state.mode === 'voyager'">
478
+ <div
479
+ class="q-mt-sm"
480
+ v-if="store.state.search.mode === false && store.state.mode === 'voyager'"
481
+ >
377
482
  <q-toggle
378
483
  v-model="store.state.filter.hidePrimitiveRoute"
379
484
  @update:model-value="(val) => toggleHidePrimitiveRoute(val)"
@@ -391,7 +496,10 @@
391
496
  title="show module cluster"
392
497
  />
393
498
  </div>
394
- <div class="q-mt-sm" v-if="store.state.mode == 'voyager' && store.state.config.enable_pydantic_resolve_meta">
499
+ <div
500
+ class="q-mt-sm"
501
+ v-if="store.state.mode == 'voyager' && store.state.config.enable_pydantic_resolve_meta"
502
+ >
395
503
  <q-toggle
396
504
  v-model="store.state.modeControl.pydanticResolveMetaEnabled"
397
505
  @update:model-value="(val) => togglePydanticResolveMeta(val)"
@@ -400,6 +508,7 @@
400
508
  title="show fields with pydantic resolve/post/expose/collector info"
401
509
  />
402
510
  </div>
511
+ </div>
403
512
  </div>
404
513
  </template>
405
514
  </q-splitter>
@@ -407,11 +516,7 @@
407
516
  </q-layout>
408
517
 
409
518
  <!-- Schema Field Filter Dialog -->
410
- <q-dialog
411
- v-model="store.state.searchDialog.show"
412
- :persistent="true"
413
- :maximized="true"
414
- >
519
+ <q-dialog v-model="store.state.searchDialog.show" :persistent="true" :maximized="true">
415
520
  <schema-field-filter
416
521
  :schemas="store.state.graph.schemaMap"
417
522
  :schema-name="store.state.searchDialog.schema"
@@ -427,11 +532,15 @@
427
532
  />
428
533
  </q-card>
429
534
  </q-dialog>
430
-
431
535
  </div>
432
536
  <script src="https://unpkg.com/vue@3/dist/vue.global.prod.js"></script>
433
537
  <script src="fastapi-voyager-static/quasar.min.js"></script>
434
- <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js" integrity="sha512-egJ/Y+22P9NQ9aIyVCh0VCOsfydyn8eNmqBy+y2CnJG+fpRIxXMS6jbWP8tVKp0jp+NO5n8WtMUAnNnGoJKi4w==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
538
+ <script
539
+ src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"
540
+ integrity="sha512-egJ/Y+22P9NQ9aIyVCh0VCOsfydyn8eNmqBy+y2CnJG+fpRIxXMS6jbWP8tVKp0jp+NO5n8WtMUAnNnGoJKi4w=="
541
+ crossorigin="anonymous"
542
+ referrerpolicy="no-referrer"
543
+ ></script>
435
544
  <script
436
545
  src="https://cdnjs.cloudflare.com/ajax/libs/d3/7.9.0/d3.min.js"
437
546
  integrity="sha512-vc58qvvBdrDR4etbxMdlTt4GBQk1qjvyORR2nrsPsFPyrs+/u5c3+1Ct6upOgdZoIl7eq6k3a1UPDSNAQi/32A=="
@@ -439,7 +548,12 @@
439
548
  referrerpolicy="no-referrer"
440
549
  ></script>
441
550
  <script src="https://unpkg.com/@hpcc-js/wasm@2.20.0/dist/graphviz.umd.js"></script>
442
- <script src="https://cdnjs.cloudflare.com/ajax/libs/d3-graphviz/5.6.0/d3-graphviz.min.js" integrity="sha512-Le8HpIpS2Tc7SDHLM6AOgAKq6ZR4uDwLhjPSR20DtXE5dFb9xECHRwgpc1nxxnU0Dv+j6FNMoSddky5gyvI3lQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
551
+ <script
552
+ src="https://cdnjs.cloudflare.com/ajax/libs/d3-graphviz/5.6.0/d3-graphviz.min.js"
553
+ integrity="sha512-Le8HpIpS2Tc7SDHLM6AOgAKq6ZR4uDwLhjPSR20DtXE5dFb9xECHRwgpc1nxxnU0Dv+j6FNMoSddky5gyvI3lQ=="
554
+ crossorigin="anonymous"
555
+ referrerpolicy="no-referrer"
556
+ ></script>
443
557
  <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-mousewheel/3.1.13/jquery.mousewheel.min.js"></script>
444
558
  <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-color/2.1.2/jquery.color.min.js"></script>
445
559
  <script src="fastapi-voyager-static/graphviz.svg.js"></script>
@@ -449,18 +563,20 @@
449
563
  href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/github.min.css"
450
564
  />
451
565
  <script type="module">
452
- window.addEventListener('DOMContentLoaded', async () => {
566
+ window.addEventListener("DOMContentLoaded", async () => {
453
567
  if (!window.hljs) {
454
568
  try {
455
- const { default: hljs } = await import('https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.9.0/build/es/highlight.min.js');
456
- const { default: python } = await import('https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.9.0/build/es/languages/python.min.js');
457
- hljs.registerLanguage("python", python);
458
- window.hljs = hljs;
569
+ const { default: hljs } =
570
+ await import("https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.9.0/build/es/highlight.min.js")
571
+ const { default: python } =
572
+ await import("https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.9.0/build/es/languages/python.min.js")
573
+ hljs.registerLanguage("python", python)
574
+ window.hljs = hljs
459
575
  } catch (e) {
460
- console.warn("Failed to preload highlight.js", e);
576
+ console.warn("Failed to preload highlight.js", e)
461
577
  }
462
578
  }
463
- });
579
+ })
464
580
  </script>
465
581
  <script type="module" src="fastapi-voyager-static/vue-main.js"></script>
466
582