c0ckp1t 1.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 (676) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +5 -0
  3. package/c0ckp1t-demo/Constants.mjs +125 -0
  4. package/c0ckp1t-demo/components/sidebar.vue +82 -0
  5. package/c0ckp1t-demo/main.vue +39 -0
  6. package/c0ckp1t-demo/pages/devices.vue +63 -0
  7. package/c0ckp1t-demo/pages/homepage.vue +63 -0
  8. package/c0ckp1t-demo/pages/report.vue +63 -0
  9. package/c0ckp1t-demo/store.mjs +133 -0
  10. package/components/ExecButton.vue +62 -0
  11. package/components/FsTree.vue +550 -0
  12. package/components/Markdown.mjs +274 -0
  13. package/components/MarkdownUtils.mjs +180 -0
  14. package/components/Tree.mjs +175 -0
  15. package/components/code-mirror.vue +445 -0
  16. package/components/vue3-ace-editor.vue +331 -0
  17. package/components/xbutton.vue +45 -0
  18. package/components/xcard-h.vue +175 -0
  19. package/components/xcard.vue +76 -0
  20. package/components/xcheck.vue +35 -0
  21. package/components/xcheckbox.vue +52 -0
  22. package/components/xcode.vue +139 -0
  23. package/components/xcollapse.vue +52 -0
  24. package/components/xcolor.vue +84 -0
  25. package/components/xdropdown.vue +104 -0
  26. package/components/xdropdown2.vue +140 -0
  27. package/components/xhidden.vue +30 -0
  28. package/components/xinput.vue +101 -0
  29. package/components/xinput2.vue +101 -0
  30. package/components/xjson.vue +95 -0
  31. package/components/xkv.vue +41 -0
  32. package/components/xlabel.vue +56 -0
  33. package/components/xlist.vue +83 -0
  34. package/components/xmap.vue +106 -0
  35. package/components/xmarkdown.vue +269 -0
  36. package/components/xnav.vue +98 -0
  37. package/components/xsection.vue +164 -0
  38. package/components/xsound.vue +251 -0
  39. package/components/xtable-open.vue +179 -0
  40. package/components/xtabs.vue +72 -0
  41. package/components/xterminal.vue +456 -0
  42. package/components/xtextarea.vue +83 -0
  43. package/components/xtoggle.vue +68 -0
  44. package/components/xtoggle3.vue +67 -0
  45. package/components/xtree.vue +140 -0
  46. package/components/xupload.vue +129 -0
  47. package/core/Content.mjs +92 -0
  48. package/core/DocUtils.mjs +189 -0
  49. package/core/GlobalStore.mjs +329 -0
  50. package/core/Island.mjs +429 -0
  51. package/core/IslandDefault.mjs +229 -0
  52. package/core/JsUtils.mjs +483 -0
  53. package/core/Logging.mjs +59 -0
  54. package/core/Page404.vue +152 -0
  55. package/core/PageFallback.vue +168 -0
  56. package/core/PageMain.vue +181 -0
  57. package/core/Theme.mjs +1759 -0
  58. package/core/VueUtils.mjs +200 -0
  59. package/core/WsUtils.mjs +274 -0
  60. package/core/img/Flag_of_the_United_States.svg +25 -0
  61. package/core/img/logo_v1.svg +98 -0
  62. package/core/img/logo_v2.svg +98 -0
  63. package/core/img/state-uniqueId-8k.wav +0 -0
  64. package/core/main-offcanvas.vue +99 -0
  65. package/core/nodes/_api.vue +82 -0
  66. package/core/nodes/node-container.vue +103 -0
  67. package/core/nodes/node.vue +246 -0
  68. package/core/nodes/place-holder.vue +47 -0
  69. package/core/nodes/root.vue +52 -0
  70. package/core/notify/NotifyUtils.mjs +150 -0
  71. package/core/notify/toast.vue +150 -0
  72. package/core/pages/About.vue +57 -0
  73. package/core/pages/Cache.vue +155 -0
  74. package/core/pages/Connection.vue +192 -0
  75. package/core/pages/Connections.vue +102 -0
  76. package/core/pages/Documentation.vue +263 -0
  77. package/core/pages/Notifies.vue +156 -0
  78. package/core/pages/Traffic.vue +152 -0
  79. package/core/pages/connections/connection-header-details.vue +80 -0
  80. package/core/pages/connections/page-connection-default.vue +92 -0
  81. package/core/pages/connections/page-connection.vue +176 -0
  82. package/core/pages/connections/ws-connection.vue +146 -0
  83. package/core/pages/frontend/Bootstrap.vue +1140 -0
  84. package/core/pages/frontend/Components.vue +56 -0
  85. package/core/pages/frontend/ComponentsAdv.vue +203 -0
  86. package/core/pages/frontend/ComponentsBasic.vue +336 -0
  87. package/core/pages/frontend/Theme.vue +473 -0
  88. package/core/pages/frontend/component-view.vue +65 -0
  89. package/core/pages/traffic/WsLogUtils.mjs +91 -0
  90. package/core/pages/traffic/log-ws-exec.vue +124 -0
  91. package/core/pages/traffic/log-ws-exec2.vue +129 -0
  92. package/core/sfc/code-item.vue +169 -0
  93. package/core/sfc/connection-header.vue +62 -0
  94. package/core/sfc/info-api.vue +158 -0
  95. package/core/sfc/md-toc.vue +346 -0
  96. package/core/sfc/scroll-to-top.vue +69 -0
  97. package/core/sfc/task.vue +98 -0
  98. package/core/sfc/text-to-md.vue +25 -0
  99. package/core/sfc/toc-list.vue +175 -0
  100. package/core/ws-client/AuthNState.mjs +84 -0
  101. package/core/ws-client/Connection.mjs +580 -0
  102. package/core/ws-client/Session.mjs +72 -0
  103. package/core/ws-client/WsClient.mjs +230 -0
  104. package/core/ws-client/WsLogUtils.mjs +91 -0
  105. package/core/ws-client/ws-connection.vue +144 -0
  106. package/css/Changa-Medium.ttf +0 -0
  107. package/css/Makefile +10 -0
  108. package/css/README.md +25 -0
  109. package/css/bootstrap-c0ckp1t.css +11861 -0
  110. package/css/bootstrap.min.css +6 -0
  111. package/css/fontawesome/brands.min.css +6 -0
  112. package/css/fontawesome/fontawesome.min.css +8 -0
  113. package/css/fontawesome/regular.min.css +6 -0
  114. package/css/fontawesome/solid.min.css +6 -0
  115. package/css/webfonts/fa-brands-400.woff2 +0 -0
  116. package/css/webfonts/fa-regular-400.woff2 +0 -0
  117. package/css/webfonts/fa-solid-900.woff2 +0 -0
  118. package/docs/Introduction.md +3 -0
  119. package/favicon-192x192.png +0 -0
  120. package/favicon-32x32.png +0 -0
  121. package/favicon-64x64.png +0 -0
  122. package/favicon.ico +0 -0
  123. package/index-cdn.html +66 -0
  124. package/js_ext/Makefile +26 -0
  125. package/js_ext/ace-editor/ace.js +22037 -0
  126. package/js_ext/ace-editor/ext-beautify.js +343 -0
  127. package/js_ext/ace-editor/ext-code_lens.js +204 -0
  128. package/js_ext/ace-editor/ext-command_bar.js +469 -0
  129. package/js_ext/ace-editor/ext-diff.js +4265 -0
  130. package/js_ext/ace-editor/ext-elastic_tabstops_lite.js +238 -0
  131. package/js_ext/ace-editor/ext-emmet.js +1303 -0
  132. package/js_ext/ace-editor/ext-error_marker.js +9 -0
  133. package/js_ext/ace-editor/ext-hardwrap.js +127 -0
  134. package/js_ext/ace-editor/ext-inline_autocomplete.js +3547 -0
  135. package/js_ext/ace-editor/ext-keybinding_menu.js +185 -0
  136. package/js_ext/ace-editor/ext-language_tools.js +2724 -0
  137. package/js_ext/ace-editor/ext-linking.js +66 -0
  138. package/js_ext/ace-editor/ext-modelist.js +276 -0
  139. package/js_ext/ace-editor/ext-options.js +859 -0
  140. package/js_ext/ace-editor/ext-prompt.js +3161 -0
  141. package/js_ext/ace-editor/ext-rtl.js +146 -0
  142. package/js_ext/ace-editor/ext-searchbox.js +385 -0
  143. package/js_ext/ace-editor/ext-settings_menu.js +859 -0
  144. package/js_ext/ace-editor/ext-simple_tokenizer.js +137 -0
  145. package/js_ext/ace-editor/ext-spellcheck.js +79 -0
  146. package/js_ext/ace-editor/ext-split.js +203 -0
  147. package/js_ext/ace-editor/ext-static_highlight.js +194 -0
  148. package/js_ext/ace-editor/ext-statusbar.js +63 -0
  149. package/js_ext/ace-editor/ext-textarea.js +400 -0
  150. package/js_ext/ace-editor/ext-themelist.js +80 -0
  151. package/js_ext/ace-editor/ext-whitespace.js +201 -0
  152. package/js_ext/ace-editor/keybinding-emacs.js +1067 -0
  153. package/js_ext/ace-editor/keybinding-sublime.js +409 -0
  154. package/js_ext/ace-editor/keybinding-vim.js +7101 -0
  155. package/js_ext/ace-editor/keybinding-vscode.js +255 -0
  156. package/js_ext/ace-editor/mode-abap.js +200 -0
  157. package/js_ext/ace-editor/mode-abc.js +243 -0
  158. package/js_ext/ace-editor/mode-actionscript.js +234 -0
  159. package/js_ext/ace-editor/mode-ada.js +108 -0
  160. package/js_ext/ace-editor/mode-alda.js +279 -0
  161. package/js_ext/ace-editor/mode-apache_conf.js +318 -0
  162. package/js_ext/ace-editor/mode-apex.js +402 -0
  163. package/js_ext/ace-editor/mode-applescript.js +232 -0
  164. package/js_ext/ace-editor/mode-aql.js +92 -0
  165. package/js_ext/ace-editor/mode-asciidoc.js +311 -0
  166. package/js_ext/ace-editor/mode-asl.js +357 -0
  167. package/js_ext/ace-editor/mode-assembly_arm32.js +185 -0
  168. package/js_ext/ace-editor/mode-assembly_x86.js +170 -0
  169. package/js_ext/ace-editor/mode-astro.js +2474 -0
  170. package/js_ext/ace-editor/mode-autohotkey.js +208 -0
  171. package/js_ext/ace-editor/mode-basic.js +201 -0
  172. package/js_ext/ace-editor/mode-batchfile.js +199 -0
  173. package/js_ext/ace-editor/mode-bibtex.js +318 -0
  174. package/js_ext/ace-editor/mode-c9search.js +250 -0
  175. package/js_ext/ace-editor/mode-c_cpp.js +417 -0
  176. package/js_ext/ace-editor/mode-cirru.js +192 -0
  177. package/js_ext/ace-editor/mode-clojure.js +322 -0
  178. package/js_ext/ace-editor/mode-clue.js +361 -0
  179. package/js_ext/ace-editor/mode-cobol.js +82 -0
  180. package/js_ext/ace-editor/mode-coffee.js +335 -0
  181. package/js_ext/ace-editor/mode-coldfusion.js +2409 -0
  182. package/js_ext/ace-editor/mode-crystal.js +586 -0
  183. package/js_ext/ace-editor/mode-csharp.js +413 -0
  184. package/js_ext/ace-editor/mode-csound_document.js +4072 -0
  185. package/js_ext/ace-editor/mode-csound_orchestra.js +2923 -0
  186. package/js_ext/ace-editor/mode-csound_score.js +409 -0
  187. package/js_ext/ace-editor/mode-csp.js +59 -0
  188. package/js_ext/ace-editor/mode-css.js +632 -0
  189. package/js_ext/ace-editor/mode-csv.js +97 -0
  190. package/js_ext/ace-editor/mode-curly.js +2381 -0
  191. package/js_ext/ace-editor/mode-cuttlefish.js +56 -0
  192. package/js_ext/ace-editor/mode-d.js +450 -0
  193. package/js_ext/ace-editor/mode-dart.js +618 -0
  194. package/js_ext/ace-editor/mode-diff.js +129 -0
  195. package/js_ext/ace-editor/mode-django.js +2422 -0
  196. package/js_ext/ace-editor/mode-dockerfile.js +427 -0
  197. package/js_ext/ace-editor/mode-dot.js +348 -0
  198. package/js_ext/ace-editor/mode-drools.js +607 -0
  199. package/js_ext/ace-editor/mode-edifact.js +130 -0
  200. package/js_ext/ace-editor/mode-eiffel.js +120 -0
  201. package/js_ext/ace-editor/mode-ejs.js +3277 -0
  202. package/js_ext/ace-editor/mode-elixir.js +443 -0
  203. package/js_ext/ace-editor/mode-elm.js +274 -0
  204. package/js_ext/ace-editor/mode-erlang.js +836 -0
  205. package/js_ext/ace-editor/mode-flix.js +164 -0
  206. package/js_ext/ace-editor/mode-forth.js +253 -0
  207. package/js_ext/ace-editor/mode-fortran.js +361 -0
  208. package/js_ext/ace-editor/mode-fsharp.js +277 -0
  209. package/js_ext/ace-editor/mode-fsl.js +226 -0
  210. package/js_ext/ace-editor/mode-ftl.js +1255 -0
  211. package/js_ext/ace-editor/mode-gcode.js +74 -0
  212. package/js_ext/ace-editor/mode-gherkin.js +154 -0
  213. package/js_ext/ace-editor/mode-gitignore.js +49 -0
  214. package/js_ext/ace-editor/mode-glsl.js +475 -0
  215. package/js_ext/ace-editor/mode-gobstones.js +1459 -0
  216. package/js_ext/ace-editor/mode-golang.js +341 -0
  217. package/js_ext/ace-editor/mode-graphqlschema.js +174 -0
  218. package/js_ext/ace-editor/mode-groovy.js +1401 -0
  219. package/js_ext/ace-editor/mode-haml.js +1906 -0
  220. package/js_ext/ace-editor/mode-handlebars.js +2438 -0
  221. package/js_ext/ace-editor/mode-haskell.js +324 -0
  222. package/js_ext/ace-editor/mode-haskell_cabal.js +135 -0
  223. package/js_ext/ace-editor/mode-haxe.js +313 -0
  224. package/js_ext/ace-editor/mode-hjson.js +318 -0
  225. package/js_ext/ace-editor/mode-html.js +2339 -0
  226. package/js_ext/ace-editor/mode-html_elixir.js +2845 -0
  227. package/js_ext/ace-editor/mode-html_ruby.js +3294 -0
  228. package/js_ext/ace-editor/mode-ini.js +138 -0
  229. package/js_ext/ace-editor/mode-io.js +210 -0
  230. package/js_ext/ace-editor/mode-ion.js +477 -0
  231. package/js_ext/ace-editor/mode-jack.js +293 -0
  232. package/js_ext/ace-editor/mode-jade.js +2017 -0
  233. package/js_ext/ace-editor/mode-java.js +1565 -0
  234. package/js_ext/ace-editor/mode-javascript.js +1191 -0
  235. package/js_ext/ace-editor/mode-jexl.js +270 -0
  236. package/js_ext/ace-editor/mode-json.js +275 -0
  237. package/js_ext/ace-editor/mode-json5.js +308 -0
  238. package/js_ext/ace-editor/mode-jsoniq.js +2577 -0
  239. package/js_ext/ace-editor/mode-jsp.js +1618 -0
  240. package/js_ext/ace-editor/mode-jssm.js +293 -0
  241. package/js_ext/ace-editor/mode-jsx.js +1209 -0
  242. package/js_ext/ace-editor/mode-julia.js +254 -0
  243. package/js_ext/ace-editor/mode-kotlin.js +445 -0
  244. package/js_ext/ace-editor/mode-latex.js +252 -0
  245. package/js_ext/ace-editor/mode-latte.js +2522 -0
  246. package/js_ext/ace-editor/mode-less.js +742 -0
  247. package/js_ext/ace-editor/mode-liquid.js +2741 -0
  248. package/js_ext/ace-editor/mode-lisp.js +104 -0
  249. package/js_ext/ace-editor/mode-livescript.js +272 -0
  250. package/js_ext/ace-editor/mode-logiql.js +272 -0
  251. package/js_ext/ace-editor/mode-logtalk.js +309 -0
  252. package/js_ext/ace-editor/mode-lsl.js +287 -0
  253. package/js_ext/ace-editor/mode-lua.js +393 -0
  254. package/js_ext/ace-editor/mode-luapage.js +2785 -0
  255. package/js_ext/ace-editor/mode-lucene.js +145 -0
  256. package/js_ext/ace-editor/mode-makefile.js +374 -0
  257. package/js_ext/ace-editor/mode-markdown.js +2935 -0
  258. package/js_ext/ace-editor/mode-mask.js +1757 -0
  259. package/js_ext/ace-editor/mode-matlab.js +239 -0
  260. package/js_ext/ace-editor/mode-maze.js +256 -0
  261. package/js_ext/ace-editor/mode-mediawiki.js +580 -0
  262. package/js_ext/ace-editor/mode-mel.js +213 -0
  263. package/js_ext/ace-editor/mode-mips.js +231 -0
  264. package/js_ext/ace-editor/mode-mixal.js +110 -0
  265. package/js_ext/ace-editor/mode-mushcode.js +642 -0
  266. package/js_ext/ace-editor/mode-mysql.js +150 -0
  267. package/js_ext/ace-editor/mode-nasal.js +513 -0
  268. package/js_ext/ace-editor/mode-nginx.js +262 -0
  269. package/js_ext/ace-editor/mode-nim.js +325 -0
  270. package/js_ext/ace-editor/mode-nix.js +555 -0
  271. package/js_ext/ace-editor/mode-nsis.js +279 -0
  272. package/js_ext/ace-editor/mode-nunjucks.js +2677 -0
  273. package/js_ext/ace-editor/mode-objectivec.js +626 -0
  274. package/js_ext/ace-editor/mode-ocaml.js +378 -0
  275. package/js_ext/ace-editor/mode-odin.js +449 -0
  276. package/js_ext/ace-editor/mode-partiql.js +750 -0
  277. package/js_ext/ace-editor/mode-pascal.js +204 -0
  278. package/js_ext/ace-editor/mode-perl.js +318 -0
  279. package/js_ext/ace-editor/mode-pgsql.js +1860 -0
  280. package/js_ext/ace-editor/mode-php.js +14072 -0
  281. package/js_ext/ace-editor/mode-php_laravel_blade.js +14260 -0
  282. package/js_ext/ace-editor/mode-pig.js +278 -0
  283. package/js_ext/ace-editor/mode-plain_text.js +27 -0
  284. package/js_ext/ace-editor/mode-plsql.js +268 -0
  285. package/js_ext/ace-editor/mode-powershell.js +567 -0
  286. package/js_ext/ace-editor/mode-praat.js +412 -0
  287. package/js_ext/ace-editor/mode-prisma.js +457 -0
  288. package/js_ext/ace-editor/mode-prolog.js +305 -0
  289. package/js_ext/ace-editor/mode-properties.js +69 -0
  290. package/js_ext/ace-editor/mode-protobuf.js +498 -0
  291. package/js_ext/ace-editor/mode-prql.js +323 -0
  292. package/js_ext/ace-editor/mode-puppet.js +316 -0
  293. package/js_ext/ace-editor/mode-python.js +476 -0
  294. package/js_ext/ace-editor/mode-qml.js +346 -0
  295. package/js_ext/ace-editor/mode-r.js +387 -0
  296. package/js_ext/ace-editor/mode-raku.js +516 -0
  297. package/js_ext/ace-editor/mode-razor.js +2697 -0
  298. package/js_ext/ace-editor/mode-rdoc.js +286 -0
  299. package/js_ext/ace-editor/mode-red.js +388 -0
  300. package/js_ext/ace-editor/mode-redshift.js +321 -0
  301. package/js_ext/ace-editor/mode-rhtml.js +2750 -0
  302. package/js_ext/ace-editor/mode-robot.js +168 -0
  303. package/js_ext/ace-editor/mode-rst.js +245 -0
  304. package/js_ext/ace-editor/mode-ruby.js +921 -0
  305. package/js_ext/ace-editor/mode-rust.js +393 -0
  306. package/js_ext/ace-editor/mode-sac.js +349 -0
  307. package/js_ext/ace-editor/mode-sass.js +480 -0
  308. package/js_ext/ace-editor/mode-scad.js +350 -0
  309. package/js_ext/ace-editor/mode-scala.js +1395 -0
  310. package/js_ext/ace-editor/mode-scheme.js +210 -0
  311. package/js_ext/ace-editor/mode-scrypt.js +317 -0
  312. package/js_ext/ace-editor/mode-scss.js +768 -0
  313. package/js_ext/ace-editor/mode-sh.js +387 -0
  314. package/js_ext/ace-editor/mode-sjs.js +1393 -0
  315. package/js_ext/ace-editor/mode-slim.js +4770 -0
  316. package/js_ext/ace-editor/mode-smarty.js +2436 -0
  317. package/js_ext/ace-editor/mode-smithy.js +456 -0
  318. package/js_ext/ace-editor/mode-snippets.js +183 -0
  319. package/js_ext/ace-editor/mode-soy_template.js +2611 -0
  320. package/js_ext/ace-editor/mode-space.js +151 -0
  321. package/js_ext/ace-editor/mode-sparql.js +288 -0
  322. package/js_ext/ace-editor/mode-sql.js +221 -0
  323. package/js_ext/ace-editor/mode-sqlserver.js +391 -0
  324. package/js_ext/ace-editor/mode-stylus.js +443 -0
  325. package/js_ext/ace-editor/mode-svg.js +1487 -0
  326. package/js_ext/ace-editor/mode-swift.js +342 -0
  327. package/js_ext/ace-editor/mode-tcl.js +338 -0
  328. package/js_ext/ace-editor/mode-terraform.js +346 -0
  329. package/js_ext/ace-editor/mode-tex.js +212 -0
  330. package/js_ext/ace-editor/mode-text.js +9 -0
  331. package/js_ext/ace-editor/mode-textile.js +125 -0
  332. package/js_ext/ace-editor/mode-toml.js +129 -0
  333. package/js_ext/ace-editor/mode-tsv.js +124 -0
  334. package/js_ext/ace-editor/mode-tsx.js +1276 -0
  335. package/js_ext/ace-editor/mode-turtle.js +264 -0
  336. package/js_ext/ace-editor/mode-twig.js +2502 -0
  337. package/js_ext/ace-editor/mode-typescript.js +1254 -0
  338. package/js_ext/ace-editor/mode-vala.js +554 -0
  339. package/js_ext/ace-editor/mode-vbscript.js +731 -0
  340. package/js_ext/ace-editor/mode-velocity.js +2580 -0
  341. package/js_ext/ace-editor/mode-verilog.js +98 -0
  342. package/js_ext/ace-editor/mode-vhdl.js +94 -0
  343. package/js_ext/ace-editor/mode-visualforce.js +2454 -0
  344. package/js_ext/ace-editor/mode-vue.js +3834 -0
  345. package/js_ext/ace-editor/mode-wollok.js +1329 -0
  346. package/js_ext/ace-editor/mode-xml.js +477 -0
  347. package/js_ext/ace-editor/mode-xquery.js +2589 -0
  348. package/js_ext/ace-editor/mode-yaml.js +395 -0
  349. package/js_ext/ace-editor/mode-zeek.js +502 -0
  350. package/js_ext/ace-editor/mode-zig.js +585 -0
  351. package/js_ext/ace-editor/snippets/abap.js +9 -0
  352. package/js_ext/ace-editor/snippets/abc.js +16 -0
  353. package/js_ext/ace-editor/snippets/actionscript.js +16 -0
  354. package/js_ext/ace-editor/snippets/ada.js +9 -0
  355. package/js_ext/ace-editor/snippets/alda.js +9 -0
  356. package/js_ext/ace-editor/snippets/apache_conf.js +9 -0
  357. package/js_ext/ace-editor/snippets/apex.js +9 -0
  358. package/js_ext/ace-editor/snippets/applescript.js +9 -0
  359. package/js_ext/ace-editor/snippets/aql.js +9 -0
  360. package/js_ext/ace-editor/snippets/asciidoc.js +9 -0
  361. package/js_ext/ace-editor/snippets/asl.js +9 -0
  362. package/js_ext/ace-editor/snippets/assembly_arm32.js +9 -0
  363. package/js_ext/ace-editor/snippets/assembly_x86.js +9 -0
  364. package/js_ext/ace-editor/snippets/astro.js +9 -0
  365. package/js_ext/ace-editor/snippets/autohotkey.js +9 -0
  366. package/js_ext/ace-editor/snippets/basic.js +9 -0
  367. package/js_ext/ace-editor/snippets/batchfile.js +9 -0
  368. package/js_ext/ace-editor/snippets/bibtex.js +9 -0
  369. package/js_ext/ace-editor/snippets/c9search.js +9 -0
  370. package/js_ext/ace-editor/snippets/c_cpp.js +16 -0
  371. package/js_ext/ace-editor/snippets/cirru.js +9 -0
  372. package/js_ext/ace-editor/snippets/clojure.js +16 -0
  373. package/js_ext/ace-editor/snippets/clue.js +9 -0
  374. package/js_ext/ace-editor/snippets/cobol.js +9 -0
  375. package/js_ext/ace-editor/snippets/coffee.js +16 -0
  376. package/js_ext/ace-editor/snippets/coldfusion.js +9 -0
  377. package/js_ext/ace-editor/snippets/crystal.js +9 -0
  378. package/js_ext/ace-editor/snippets/csharp.js +9 -0
  379. package/js_ext/ace-editor/snippets/csound_document.js +16 -0
  380. package/js_ext/ace-editor/snippets/csound_orchestra.js +16 -0
  381. package/js_ext/ace-editor/snippets/csound_score.js +9 -0
  382. package/js_ext/ace-editor/snippets/csp.js +9 -0
  383. package/js_ext/ace-editor/snippets/css.js +16 -0
  384. package/js_ext/ace-editor/snippets/csv.js +9 -0
  385. package/js_ext/ace-editor/snippets/curly.js +9 -0
  386. package/js_ext/ace-editor/snippets/cuttlefish.js +9 -0
  387. package/js_ext/ace-editor/snippets/d.js +9 -0
  388. package/js_ext/ace-editor/snippets/dart.js +16 -0
  389. package/js_ext/ace-editor/snippets/diff.js +16 -0
  390. package/js_ext/ace-editor/snippets/django.js +16 -0
  391. package/js_ext/ace-editor/snippets/dockerfile.js +9 -0
  392. package/js_ext/ace-editor/snippets/dot.js +9 -0
  393. package/js_ext/ace-editor/snippets/drools.js +16 -0
  394. package/js_ext/ace-editor/snippets/edifact.js +16 -0
  395. package/js_ext/ace-editor/snippets/eiffel.js +9 -0
  396. package/js_ext/ace-editor/snippets/ejs.js +9 -0
  397. package/js_ext/ace-editor/snippets/elixir.js +9 -0
  398. package/js_ext/ace-editor/snippets/elm.js +9 -0
  399. package/js_ext/ace-editor/snippets/erlang.js +16 -0
  400. package/js_ext/ace-editor/snippets/flix.js +9 -0
  401. package/js_ext/ace-editor/snippets/forth.js +9 -0
  402. package/js_ext/ace-editor/snippets/fortran.js +9 -0
  403. package/js_ext/ace-editor/snippets/fsharp.js +9 -0
  404. package/js_ext/ace-editor/snippets/fsl.js +16 -0
  405. package/js_ext/ace-editor/snippets/ftl.js +9 -0
  406. package/js_ext/ace-editor/snippets/gcode.js +9 -0
  407. package/js_ext/ace-editor/snippets/gherkin.js +9 -0
  408. package/js_ext/ace-editor/snippets/gitignore.js +9 -0
  409. package/js_ext/ace-editor/snippets/glsl.js +9 -0
  410. package/js_ext/ace-editor/snippets/gobstones.js +16 -0
  411. package/js_ext/ace-editor/snippets/golang.js +9 -0
  412. package/js_ext/ace-editor/snippets/graphqlschema.js +16 -0
  413. package/js_ext/ace-editor/snippets/groovy.js +9 -0
  414. package/js_ext/ace-editor/snippets/haml.js +16 -0
  415. package/js_ext/ace-editor/snippets/handlebars.js +9 -0
  416. package/js_ext/ace-editor/snippets/haskell.js +16 -0
  417. package/js_ext/ace-editor/snippets/haskell_cabal.js +9 -0
  418. package/js_ext/ace-editor/snippets/haxe.js +9 -0
  419. package/js_ext/ace-editor/snippets/hjson.js +9 -0
  420. package/js_ext/ace-editor/snippets/html.js +16 -0
  421. package/js_ext/ace-editor/snippets/html_elixir.js +9 -0
  422. package/js_ext/ace-editor/snippets/html_ruby.js +9 -0
  423. package/js_ext/ace-editor/snippets/ini.js +9 -0
  424. package/js_ext/ace-editor/snippets/io.js +74 -0
  425. package/js_ext/ace-editor/snippets/ion.js +9 -0
  426. package/js_ext/ace-editor/snippets/jack.js +9 -0
  427. package/js_ext/ace-editor/snippets/jade.js +9 -0
  428. package/js_ext/ace-editor/snippets/java.js +16 -0
  429. package/js_ext/ace-editor/snippets/javascript.js +16 -0
  430. package/js_ext/ace-editor/snippets/jexl.js +9 -0
  431. package/js_ext/ace-editor/snippets/json.js +9 -0
  432. package/js_ext/ace-editor/snippets/json5.js +9 -0
  433. package/js_ext/ace-editor/snippets/jsoniq.js +78 -0
  434. package/js_ext/ace-editor/snippets/jsp.js +16 -0
  435. package/js_ext/ace-editor/snippets/jssm.js +9 -0
  436. package/js_ext/ace-editor/snippets/jsx.js +9 -0
  437. package/js_ext/ace-editor/snippets/julia.js +9 -0
  438. package/js_ext/ace-editor/snippets/kotlin.js +9 -0
  439. package/js_ext/ace-editor/snippets/latex.js +9 -0
  440. package/js_ext/ace-editor/snippets/latte.js +9 -0
  441. package/js_ext/ace-editor/snippets/less.js +9 -0
  442. package/js_ext/ace-editor/snippets/liquid.js +16 -0
  443. package/js_ext/ace-editor/snippets/lisp.js +9 -0
  444. package/js_ext/ace-editor/snippets/livescript.js +9 -0
  445. package/js_ext/ace-editor/snippets/logiql.js +9 -0
  446. package/js_ext/ace-editor/snippets/logtalk.js +9 -0
  447. package/js_ext/ace-editor/snippets/lsl.js +16 -0
  448. package/js_ext/ace-editor/snippets/lua.js +16 -0
  449. package/js_ext/ace-editor/snippets/luapage.js +9 -0
  450. package/js_ext/ace-editor/snippets/lucene.js +9 -0
  451. package/js_ext/ace-editor/snippets/makefile.js +16 -0
  452. package/js_ext/ace-editor/snippets/markdown.js +16 -0
  453. package/js_ext/ace-editor/snippets/mask.js +9 -0
  454. package/js_ext/ace-editor/snippets/matlab.js +9 -0
  455. package/js_ext/ace-editor/snippets/maze.js +16 -0
  456. package/js_ext/ace-editor/snippets/mediawiki.js +9 -0
  457. package/js_ext/ace-editor/snippets/mel.js +9 -0
  458. package/js_ext/ace-editor/snippets/mips.js +9 -0
  459. package/js_ext/ace-editor/snippets/mixal.js +9 -0
  460. package/js_ext/ace-editor/snippets/mushcode.js +9 -0
  461. package/js_ext/ace-editor/snippets/mysql.js +9 -0
  462. package/js_ext/ace-editor/snippets/nasal.js +9 -0
  463. package/js_ext/ace-editor/snippets/nginx.js +9 -0
  464. package/js_ext/ace-editor/snippets/nim.js +9 -0
  465. package/js_ext/ace-editor/snippets/nix.js +9 -0
  466. package/js_ext/ace-editor/snippets/nsis.js +9 -0
  467. package/js_ext/ace-editor/snippets/nunjucks.js +9 -0
  468. package/js_ext/ace-editor/snippets/objectivec.js +9 -0
  469. package/js_ext/ace-editor/snippets/ocaml.js +9 -0
  470. package/js_ext/ace-editor/snippets/odin.js +9 -0
  471. package/js_ext/ace-editor/snippets/partiql.js +9 -0
  472. package/js_ext/ace-editor/snippets/pascal.js +9 -0
  473. package/js_ext/ace-editor/snippets/perl.js +16 -0
  474. package/js_ext/ace-editor/snippets/pgsql.js +9 -0
  475. package/js_ext/ace-editor/snippets/php.js +16 -0
  476. package/js_ext/ace-editor/snippets/php_laravel_blade.js +9 -0
  477. package/js_ext/ace-editor/snippets/pig.js +9 -0
  478. package/js_ext/ace-editor/snippets/plain_text.js +9 -0
  479. package/js_ext/ace-editor/snippets/plsql.js +9 -0
  480. package/js_ext/ace-editor/snippets/powershell.js +9 -0
  481. package/js_ext/ace-editor/snippets/praat.js +9 -0
  482. package/js_ext/ace-editor/snippets/prisma.js +9 -0
  483. package/js_ext/ace-editor/snippets/prolog.js +9 -0
  484. package/js_ext/ace-editor/snippets/properties.js +9 -0
  485. package/js_ext/ace-editor/snippets/protobuf.js +9 -0
  486. package/js_ext/ace-editor/snippets/prql.js +9 -0
  487. package/js_ext/ace-editor/snippets/puppet.js +9 -0
  488. package/js_ext/ace-editor/snippets/python.js +16 -0
  489. package/js_ext/ace-editor/snippets/qml.js +9 -0
  490. package/js_ext/ace-editor/snippets/r.js +16 -0
  491. package/js_ext/ace-editor/snippets/raku.js +9 -0
  492. package/js_ext/ace-editor/snippets/razor.js +16 -0
  493. package/js_ext/ace-editor/snippets/rdoc.js +9 -0
  494. package/js_ext/ace-editor/snippets/red.js +9 -0
  495. package/js_ext/ace-editor/snippets/redshift.js +9 -0
  496. package/js_ext/ace-editor/snippets/rhtml.js +9 -0
  497. package/js_ext/ace-editor/snippets/robot.js +16 -0
  498. package/js_ext/ace-editor/snippets/rst.js +16 -0
  499. package/js_ext/ace-editor/snippets/ruby.js +16 -0
  500. package/js_ext/ace-editor/snippets/rust.js +9 -0
  501. package/js_ext/ace-editor/snippets/sac.js +9 -0
  502. package/js_ext/ace-editor/snippets/sass.js +9 -0
  503. package/js_ext/ace-editor/snippets/scad.js +9 -0
  504. package/js_ext/ace-editor/snippets/scala.js +9 -0
  505. package/js_ext/ace-editor/snippets/scheme.js +9 -0
  506. package/js_ext/ace-editor/snippets/scrypt.js +9 -0
  507. package/js_ext/ace-editor/snippets/scss.js +9 -0
  508. package/js_ext/ace-editor/snippets/sh.js +16 -0
  509. package/js_ext/ace-editor/snippets/sjs.js +9 -0
  510. package/js_ext/ace-editor/snippets/slim.js +9 -0
  511. package/js_ext/ace-editor/snippets/smarty.js +9 -0
  512. package/js_ext/ace-editor/snippets/smithy.js +9 -0
  513. package/js_ext/ace-editor/snippets/snippets.js +16 -0
  514. package/js_ext/ace-editor/snippets/soy_template.js +9 -0
  515. package/js_ext/ace-editor/snippets/space.js +9 -0
  516. package/js_ext/ace-editor/snippets/sparql.js +9 -0
  517. package/js_ext/ace-editor/snippets/sql.js +16 -0
  518. package/js_ext/ace-editor/snippets/sqlserver.js +16 -0
  519. package/js_ext/ace-editor/snippets/stylus.js +9 -0
  520. package/js_ext/ace-editor/snippets/svg.js +9 -0
  521. package/js_ext/ace-editor/snippets/swift.js +9 -0
  522. package/js_ext/ace-editor/snippets/tcl.js +16 -0
  523. package/js_ext/ace-editor/snippets/terraform.js +9 -0
  524. package/js_ext/ace-editor/snippets/tex.js +16 -0
  525. package/js_ext/ace-editor/snippets/text.js +9 -0
  526. package/js_ext/ace-editor/snippets/textile.js +16 -0
  527. package/js_ext/ace-editor/snippets/toml.js +9 -0
  528. package/js_ext/ace-editor/snippets/tsv.js +9 -0
  529. package/js_ext/ace-editor/snippets/tsx.js +9 -0
  530. package/js_ext/ace-editor/snippets/turtle.js +9 -0
  531. package/js_ext/ace-editor/snippets/twig.js +9 -0
  532. package/js_ext/ace-editor/snippets/typescript.js +9 -0
  533. package/js_ext/ace-editor/snippets/vala.js +199 -0
  534. package/js_ext/ace-editor/snippets/vbscript.js +9 -0
  535. package/js_ext/ace-editor/snippets/velocity.js +17 -0
  536. package/js_ext/ace-editor/snippets/verilog.js +9 -0
  537. package/js_ext/ace-editor/snippets/vhdl.js +9 -0
  538. package/js_ext/ace-editor/snippets/visualforce.js +9 -0
  539. package/js_ext/ace-editor/snippets/vue.js +9 -0
  540. package/js_ext/ace-editor/snippets/wollok.js +16 -0
  541. package/js_ext/ace-editor/snippets/xml.js +9 -0
  542. package/js_ext/ace-editor/snippets/xquery.js +78 -0
  543. package/js_ext/ace-editor/snippets/yaml.js +9 -0
  544. package/js_ext/ace-editor/snippets/zeek.js +9 -0
  545. package/js_ext/ace-editor/snippets/zig.js +9 -0
  546. package/js_ext/ace-editor/theme-ambiance.js +18 -0
  547. package/js_ext/ace-editor/theme-chaos.js +18 -0
  548. package/js_ext/ace-editor/theme-chrome.js +18 -0
  549. package/js_ext/ace-editor/theme-cloud9_day.js +19 -0
  550. package/js_ext/ace-editor/theme-cloud9_night.js +18 -0
  551. package/js_ext/ace-editor/theme-cloud9_night_low_color.js +18 -0
  552. package/js_ext/ace-editor/theme-cloud_editor.js +19 -0
  553. package/js_ext/ace-editor/theme-cloud_editor_dark.js +19 -0
  554. package/js_ext/ace-editor/theme-clouds.js +18 -0
  555. package/js_ext/ace-editor/theme-clouds_midnight.js +18 -0
  556. package/js_ext/ace-editor/theme-cobalt.js +18 -0
  557. package/js_ext/ace-editor/theme-crimson_editor.js +18 -0
  558. package/js_ext/ace-editor/theme-dawn.js +18 -0
  559. package/js_ext/ace-editor/theme-dracula.js +19 -0
  560. package/js_ext/ace-editor/theme-dreamweaver.js +18 -0
  561. package/js_ext/ace-editor/theme-eclipse.js +19 -0
  562. package/js_ext/ace-editor/theme-github.js +18 -0
  563. package/js_ext/ace-editor/theme-github_dark.js +18 -0
  564. package/js_ext/ace-editor/theme-github_light_default.js +18 -0
  565. package/js_ext/ace-editor/theme-gob.js +18 -0
  566. package/js_ext/ace-editor/theme-gruvbox.js +18 -0
  567. package/js_ext/ace-editor/theme-gruvbox_dark_hard.js +18 -0
  568. package/js_ext/ace-editor/theme-gruvbox_light_hard.js +18 -0
  569. package/js_ext/ace-editor/theme-idle_fingers.js +18 -0
  570. package/js_ext/ace-editor/theme-iplastic.js +18 -0
  571. package/js_ext/ace-editor/theme-katzenmilch.js +18 -0
  572. package/js_ext/ace-editor/theme-kr_theme.js +18 -0
  573. package/js_ext/ace-editor/theme-kuroir.js +18 -0
  574. package/js_ext/ace-editor/theme-merbivore.js +18 -0
  575. package/js_ext/ace-editor/theme-merbivore_soft.js +18 -0
  576. package/js_ext/ace-editor/theme-mono_industrial.js +18 -0
  577. package/js_ext/ace-editor/theme-monokai.js +18 -0
  578. package/js_ext/ace-editor/theme-nord_dark.js +19 -0
  579. package/js_ext/ace-editor/theme-one_dark.js +18 -0
  580. package/js_ext/ace-editor/theme-pastel_on_dark.js +18 -0
  581. package/js_ext/ace-editor/theme-solarized_dark.js +18 -0
  582. package/js_ext/ace-editor/theme-solarized_light.js +18 -0
  583. package/js_ext/ace-editor/theme-sqlserver.js +18 -0
  584. package/js_ext/ace-editor/theme-terminal.js +18 -0
  585. package/js_ext/ace-editor/theme-textmate.js +16 -0
  586. package/js_ext/ace-editor/theme-tomorrow.js +18 -0
  587. package/js_ext/ace-editor/theme-tomorrow_night.js +18 -0
  588. package/js_ext/ace-editor/theme-tomorrow_night_blue.js +18 -0
  589. package/js_ext/ace-editor/theme-tomorrow_night_bright.js +18 -0
  590. package/js_ext/ace-editor/theme-tomorrow_night_eighties.js +18 -0
  591. package/js_ext/ace-editor/theme-twilight.js +18 -0
  592. package/js_ext/ace-editor/theme-vibrant_ink.js +18 -0
  593. package/js_ext/ace-editor/theme-xcode.js +18 -0
  594. package/js_ext/ace-editor/worker-base.js +1332 -0
  595. package/js_ext/ace-editor/worker-coffee.js +1381 -0
  596. package/js_ext/ace-editor/worker-css.js +8913 -0
  597. package/js_ext/ace-editor/worker-html.js +10843 -0
  598. package/js_ext/ace-editor/worker-javascript.js +15353 -0
  599. package/js_ext/ace-editor/worker-json.js +1626 -0
  600. package/js_ext/ace-editor/worker-lua.js +3519 -0
  601. package/js_ext/ace-editor/worker-php.js +3788 -0
  602. package/js_ext/ace-editor/worker-xml.js +3122 -0
  603. package/js_ext/ace-editor/worker-xquery.js +57579 -0
  604. package/js_ext/ace-editor/worker-yaml.js +5819 -0
  605. package/js_ext/bootstrap.bundle.min.js +7 -0
  606. package/js_ext/highlight/default.min.css +9 -0
  607. package/js_ext/highlight/go.min.js +14 -0
  608. package/js_ext/highlight/highlight.min.js +1207 -0
  609. package/js_ext/highlight/stackoverflow-dark.min.css +13 -0
  610. package/js_ext/idb-keyval-6.2.2.mjs +7 -0
  611. package/js_ext/json-viewer.bundle.js +52 -0
  612. package/js_ext/loglevel-plugin-prefix.min.js +1 -0
  613. package/js_ext/loglevel.min.js +2 -0
  614. package/js_ext/markdown/auto-render.min.js +1 -0
  615. package/js_ext/markdown/auto-render.mjs +245 -0
  616. package/js_ext/markdown/fonts/KaTeX_AMS-Regular.woff +0 -0
  617. package/js_ext/markdown/fonts/KaTeX_AMS-Regular.woff2 +0 -0
  618. package/js_ext/markdown/fonts/KaTeX_Caligraphic-Regular.ttf +0 -0
  619. package/js_ext/markdown/fonts/KaTeX_Caligraphic-Regular.woff +0 -0
  620. package/js_ext/markdown/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
  621. package/js_ext/markdown/fonts/KaTeX_Fraktur-Bold.woff +0 -0
  622. package/js_ext/markdown/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
  623. package/js_ext/markdown/fonts/KaTeX_Fraktur-Regular.ttf +0 -0
  624. package/js_ext/markdown/fonts/KaTeX_Fraktur-Regular.woff +0 -0
  625. package/js_ext/markdown/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
  626. package/js_ext/markdown/fonts/KaTeX_Main-Bold.woff +0 -0
  627. package/js_ext/markdown/fonts/KaTeX_Main-Bold.woff2 +0 -0
  628. package/js_ext/markdown/fonts/KaTeX_Main-Italic.woff +0 -0
  629. package/js_ext/markdown/fonts/KaTeX_Main-Italic.woff2 +0 -0
  630. package/js_ext/markdown/fonts/KaTeX_Main-Regular.woff +0 -0
  631. package/js_ext/markdown/fonts/KaTeX_Main-Regular.woff2 +0 -0
  632. package/js_ext/markdown/fonts/KaTeX_Math-BoldItalic.woff +0 -0
  633. package/js_ext/markdown/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
  634. package/js_ext/markdown/fonts/KaTeX_Math-Italic.woff +0 -0
  635. package/js_ext/markdown/fonts/KaTeX_Math-Italic.woff2 +0 -0
  636. package/js_ext/markdown/fonts/KaTeX_SansSerif-Bold.woff +0 -0
  637. package/js_ext/markdown/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
  638. package/js_ext/markdown/fonts/KaTeX_SansSerif-Italic.woff +0 -0
  639. package/js_ext/markdown/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
  640. package/js_ext/markdown/fonts/KaTeX_SansSerif-Regular.woff +0 -0
  641. package/js_ext/markdown/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
  642. package/js_ext/markdown/fonts/KaTeX_Script-Regular.ttf +0 -0
  643. package/js_ext/markdown/fonts/KaTeX_Script-Regular.woff +0 -0
  644. package/js_ext/markdown/fonts/KaTeX_Script-Regular.woff2 +0 -0
  645. package/js_ext/markdown/fonts/KaTeX_Size1-Regular.ttf +0 -0
  646. package/js_ext/markdown/fonts/KaTeX_Size1-Regular.woff +0 -0
  647. package/js_ext/markdown/fonts/KaTeX_Size1-Regular.woff2 +0 -0
  648. package/js_ext/markdown/fonts/KaTeX_Size2-Regular.woff +0 -0
  649. package/js_ext/markdown/fonts/KaTeX_Size2-Regular.woff2 +0 -0
  650. package/js_ext/markdown/fonts/KaTeX_Size3-Regular.woff +0 -0
  651. package/js_ext/markdown/fonts/KaTeX_Size3-Regular.woff2 +0 -0
  652. package/js_ext/markdown/fonts/KaTeX_Size4-Regular.ttf +0 -0
  653. package/js_ext/markdown/fonts/KaTeX_Size4-Regular.woff +0 -0
  654. package/js_ext/markdown/fonts/KaTeX_Size4-Regular.woff2 +0 -0
  655. package/js_ext/markdown/fonts/KaTeX_Typewriter-Regular.woff +0 -0
  656. package/js_ext/markdown/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
  657. package/js_ext/markdown/katex.min.css +1 -0
  658. package/js_ext/markdown/katex.min.js +1 -0
  659. package/js_ext/markdown/katex.mjs +18416 -0
  660. package/js_ext/markdown/markdown-it.min.js +3 -0
  661. package/js_ext/markdown/markdownItAnchor.umd.js +2 -0
  662. package/js_ext/mitt.mjs +2 -0
  663. package/js_ext/moment.min.js +1 -0
  664. package/js_ext/msgpack.mjs +1612 -0
  665. package/js_ext/rxjs.umd.min.js +195 -0
  666. package/js_ext/rxjs.umd.min.js.map +1 -0
  667. package/js_ext/vue-router.esm-browser.prod.js +6 -0
  668. package/js_ext/vue.esm-browser.min.js +18 -0
  669. package/js_ext/vue.esm-browser.prod.min.js +3 -0
  670. package/js_ext/vue3-sfc-loader.esm.js +1840 -0
  671. package/js_ext/vue3-sfc-loader.esm.js.map +4 -0
  672. package/js_ext/vue3-sfc-loader.js +1839 -0
  673. package/js_ext/wavesurfer.esm.mjs +1 -0
  674. package/js_ext/xstate.web.mjs +15 -0
  675. package/package.json +50 -0
  676. package/style.css +31 -0
@@ -0,0 +1,483 @@
1
+
2
+ // https://runjs.app/play
3
+
4
+ const encoder = new TextEncoder();
5
+
6
+ export async function sha256(text) {
7
+ // hash the message
8
+ const data = encoder.encode(text);
9
+ const hashBuffer = await crypto.subtle.digest('SHA-256', data);
10
+ // convert ArrayBuffer to Array
11
+ const hashArray = Array.from(new Uint8Array(hashBuffer));
12
+ // convert bytes to hex string
13
+ const hashHex = hashArray.map(b => b.toString(16).padStart(2, '0')).join('');
14
+ return hashHex;
15
+ }
16
+
17
+ export async function sha1(text) {
18
+ // hash the message
19
+ const data = encoder.encode(text);
20
+ // WARNING: this won't work if not using HTTPS or localhost
21
+ if(window.isSecureContext) {
22
+ const hashBuffer = await crypto.subtle.digest('SHA-1', data);
23
+ // convert ArrayBuffer to Array
24
+ const hashArray = Array.from(new Uint8Array(hashBuffer));
25
+ // convert bytes to hex string
26
+ const hashHex = hashArray.map(b => b.toString(16).padStart(2, '0')).join('');
27
+ return hashHex;
28
+ }
29
+ return text.length
30
+ }
31
+
32
+ export function generateRandomId(prefix = 'id', length = 8) {
33
+ // Characters that can be included in the ID
34
+ const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
35
+ let result = prefix; // Start the ID with the provided prefix to ensure it starts with a letter
36
+
37
+ // Generate the random part of the ID
38
+ for (let i = 0; i < length; i++) {
39
+ const randomIndex = Math.floor(Math.random() * characters.length);
40
+ result += characters.charAt(randomIndex);
41
+ }
42
+
43
+ return result;
44
+ }
45
+
46
+
47
+ export function convertMsToString(runtimeMs) {
48
+ if(runtimeMs >= 60000) {
49
+ return `${((runtimeMs / 1000) / 60).toFixed(2)} mins`
50
+ } else if (runtimeMs >= 1000) {
51
+ return `${((runtimeMs / 1000)).toFixed(2)} s`
52
+ } else {
53
+ return `${runtimeMs} ms`
54
+ }
55
+ }
56
+
57
+ // ________________________________________________________________________________
58
+ // SORT
59
+ // ________________________________________________________________________________
60
+ export function sortObjectKeysWithIdFirst(obj) {
61
+ const keys = Object.keys(obj);
62
+ const sortedKeys = keys.filter(key => key !== 'id').sort();
63
+
64
+ // Ensure 'id' is the first key
65
+ if (keys.includes('id')) {
66
+ sortedKeys.unshift('id');
67
+ }
68
+
69
+ const sortedObj = {};
70
+ sortedKeys.forEach(key => {
71
+ sortedObj[key] = obj[key];
72
+ });
73
+
74
+ return sortedObj;
75
+ }
76
+
77
+ // the smallest value appears first and largest last
78
+ export function sortByPropertyAsc(arr, property) {
79
+ return arr.sort((a, b) => {
80
+ if (a[property] < b[property]) {
81
+ return -1;
82
+ } else if (a[property] > b[property]) {
83
+ return 1;
84
+ }
85
+ return 0;
86
+ });
87
+ }
88
+ // desc - largest value appears first and smallest last
89
+ export function sortByPropertyDesc(arr, property) {
90
+ return arr.sort((a, b) => {
91
+ if (a[property] < b[property]) {
92
+ return 1;
93
+ } else if (a[property] > b[property]) {
94
+ return -1;
95
+ }
96
+ return 0;
97
+ });
98
+ }
99
+
100
+ // ________________________________________________________________________________
101
+ // STRING
102
+ // ________________________________________________________________________________
103
+ // console.log(extractBasePath("/osgi/_admin")); // "/osgi/"
104
+ // console.log(extractBasePath("/client/cli/homepage")); // "/client/cli"
105
+ // console.log(extractBasePath("/user/profile")); // "/user/"
106
+ // console.log(extractBasePath("/settings")); // ""
107
+ // console.log(extractBasePath("no-slash")); // ""
108
+ // console.log(extractBasePath("/")); // ""
109
+ export function extractBasePath(filePath) {
110
+ if (typeof filePath !== 'string') {
111
+ throw `[INVALID_ARGUMENT] - filePath needs to be string`
112
+ }
113
+ // Match everything before the last '/' or the entire string if no '/' is found
114
+ const match = filePath.match(/(.+\/)?/);
115
+ if (match) {
116
+ return match[1] || ''; // Return the matched part or an empty string if none
117
+ } else {
118
+ return ''; // Return an empty string if no match is found
119
+ }
120
+ }
121
+
122
+ // console.log(extractBasePath2("/osgi/_admin")); // "/osgi"
123
+ // console.log(extractBasePath2("/client/cli/homepage")); // "/client/cli"
124
+ // console.log(extractBasePath2("/user/profile")); // "/user"
125
+ // console.log(extractBasePath2("/settings")); // "/"
126
+ // console.log(extractBasePath2("no-slash")); // "/"
127
+ // console.log(extractBasePath2("/")); // "/"
128
+ // console.log(extractBasePath2("")); // "/"
129
+ export function extractBasePath2(filePath) {
130
+ if (typeof filePath !== 'string') {
131
+ throw `[INVALID_ARGUMENT] - filePath needs to be string`
132
+ }
133
+
134
+ if (!filePath || filePath === '/') {
135
+ return '/';
136
+ }
137
+
138
+ // Get the last index of '/'
139
+ const lastSlashIndex = filePath.lastIndexOf('/');
140
+ if (lastSlashIndex === -1) {
141
+ // No slash found
142
+ return '/';
143
+ }
144
+
145
+ if (lastSlashIndex === 0) {
146
+ return '/';
147
+ }
148
+
149
+ // Return everything up to the last slash
150
+ return filePath.substring(0, lastSlashIndex);
151
+ }
152
+
153
+
154
+ // Test Cases
155
+ // console.log(substrAfterFirstSlash("/client/cli/homepage")); // "client"
156
+ // console.log(substrAfterFirstSlash("/user/profile")); // "user"
157
+ // console.log(substrAfterFirstSlash("/settings")); // "settings"
158
+ // console.log(substrAfterFirstSlash("no-slash")); // "no-slash"
159
+ // console.log(substrAfterFirstSlash("/")); // "" (No segment)
160
+ export function substrAfterFirstSlash(str) {
161
+ if (!str.includes("/")) return str; // If no "/", return the whole string
162
+ const parts = str.split('/'); // Split by "/"
163
+ return parts.length > 1 ? parts[1] : ''; // Return the second part or empty string if no "/"
164
+ }
165
+ export function substrWithoutLeadingSlash(str) {
166
+ return str.endsWith("/") ? str.slice(0, -1) : str;
167
+ }
168
+ // /cli -> cli
169
+ // /cli/test -> cli-test
170
+ // /cli/test/ -> cli-test
171
+ // cli -> cli
172
+ // "" - > ""
173
+ // "/" - > ""
174
+ export function endpointToRouterName(str) {
175
+ return str.trim().split("/").filter(item => item !== "").join("-")
176
+ }
177
+
178
+ /**
179
+ * capitalizeFirstLetter
180
+ * @param str
181
+ * @returns {string}
182
+ */
183
+ export function capitalizeFirstLetter(str) {
184
+ if (str.length === 0) return str; // Handle empty strings
185
+ return str.charAt(0).toUpperCase() + str.slice(1);
186
+ }
187
+
188
+ /**
189
+ * /test/1/2/3/vue.js -> vue.js
190
+ * @param path
191
+ * @returns {string}
192
+ */
193
+ export function extractLastPath(path) {
194
+ return path.split("/")[path.split("/").length -1]
195
+ }
196
+
197
+ export function truncateAndKeepLast(text, maxLength = 16) {
198
+ if (text.length <= maxLength) {
199
+ return text; // No truncation needed
200
+ } else {
201
+ return text.slice(-maxLength); // Return the last maxLength characters
202
+ }
203
+ }
204
+
205
+ export function truncateAndKeepFirst(text, maxLength = 16) {
206
+ if(text === undefined || text === null) return ""
207
+ if (text.length <= maxLength) {
208
+ return text; // No truncation needed
209
+ } else {
210
+ return text.slice(0, maxLength); // Return the last maxLength characters
211
+ }
212
+ }
213
+
214
+
215
+ // /osgi/_admin/ -> /osgi
216
+ // /osgi/_admin -> /osgi
217
+ // /osgi -> ""
218
+ // /osgi/ -> ""
219
+ // osgi -> ""
220
+ export function parentPath(filePath) {
221
+ // Remove any trailing slash first
222
+ const trimmed = filePath.replace(/\/+$/, ""); // e.g. "/a/b/" -> "/a/b"
223
+ if(trimmed.includes('/')) {
224
+ return trimmed.slice(0, trimmed.lastIndexOf('/'));
225
+ }
226
+ return ""
227
+ }
228
+
229
+ // /cli/test/hello -> hello
230
+ // /cli/test/ -> ""
231
+ // cli -> cli
232
+ // https://jsfiddle.net/
233
+ export function leafPath(filePath) {
234
+ if(filePath.includes('/')) {
235
+ // Everything after the last slash
236
+ return filePath.slice(filePath.lastIndexOf('/') + 1);
237
+ }
238
+ // If there's no slash, the entire filePath is the leaf
239
+ return filePath
240
+ }
241
+
242
+ /**
243
+ * Determine if str starts with a letter
244
+ * @param str
245
+ * @returns {boolean}
246
+ */
247
+ export function startsWithLetter(str) {
248
+ return /^[a-zA-Z]/.test(str);
249
+ }
250
+
251
+
252
+
253
+
254
+
255
+ /**
256
+ * Groups a list of objects by their 'prop' property.
257
+ *
258
+ * @param {Array} items - An array of objects, each with 'params', 'ret', and 'group' properties.
259
+ * @param {String|Number} prop - a key into an object
260
+ * @returns {Object} - An object whose keys are group names and values are arrays of objects.
261
+ */
262
+ export function groupArrayByProperty(items, prop) {
263
+ return items.reduce((acc, item) => {
264
+ // Check if group is undefined, null, or blank (empty after trim)
265
+ const key = item[prop]
266
+ if ( key === undefined || key === null ||
267
+ (typeof key === 'string' && key.trim() === '')
268
+ ) {
269
+ throw new Error(`Invalid value for property=${prop}: ${JSON.stringify(item)}`)
270
+ }
271
+ // If this group hasn't been seen yet, initialize an empty array
272
+ if (!acc[key]) {
273
+ acc[key] = []
274
+ }
275
+
276
+ // Push the current item into the array for its group
277
+ acc[key].push(item)
278
+ return acc
279
+ }, {})
280
+ }
281
+
282
+ /**
283
+ * Groups the values (objects) of a given data object by the specified `prop`,
284
+ * inserting the object's original key (like "id1", "id2", etc.) into the object
285
+ * under the property 'k'.
286
+ *
287
+ * @param {Object} data - An object whose keys are item IDs and whose values each have the property `prop`.
288
+ * @param {string|number} prop - The property name by which to group (e.g. "group").
289
+ * @returns {Object} - An object whose keys are the distinct values of `prop`,
290
+ * and whose values are arrays of the original objects (plus `k`).
291
+ */
292
+ export function groupObjectByProperty(data, prop) {
293
+ // Object.entries(data) => [ [key, value], [key, value], ... ]
294
+ // Example: [ ["id1", { group: "A", ... }], ["id2", { group: "B", ... }] ]
295
+ return Object.entries(data).reduce((acc, [dataKey, item]) => {
296
+ // The grouping value, e.g. item.group
297
+ const groupValue = item[prop];
298
+
299
+ // Validate that groupValue is neither undefined, null, nor blank
300
+ if ( groupValue === undefined || groupValue === null ||
301
+ (typeof groupValue === 'string' && groupValue.trim() === '')
302
+ ) {
303
+ throw new Error(`Invalid value for property="${prop}": ${JSON.stringify(item)}`);
304
+ }
305
+
306
+ // If this grouping value doesn't exist yet, initialize it
307
+ if (!acc[groupValue]) {
308
+ acc[groupValue] = [];
309
+ }
310
+
311
+ // Push the item, adding a 'k' property that stores the original dataKey (like "id1")
312
+ acc[groupValue].push({
313
+ ...item,
314
+ dataKey: dataKey,
315
+ });
316
+
317
+ return acc;
318
+ }, {});
319
+ }
320
+
321
+
322
+ // ________________________________________________________________________________
323
+ // CONVERSIONS
324
+ // ________________________________________________________________________________
325
+ export function bytesToMB(bytes) {
326
+ const MEGABYTES = 1024 * 1024; // 1 MB in bytes
327
+ return (bytes / MEGABYTES).toFixed(3);
328
+ }
329
+
330
+ /**
331
+ * Convert bytes into a human-readable string (K, MB, GB, TB, etc.)
332
+ *
333
+ * console.log(formatBytes(500)); // "500.00 B"
334
+ * console.log(formatBytes(2048)); // "2.00 KB"
335
+ * console.log(formatBytes(500000)); // "488.28 KB"
336
+ * console.log(formatBytes(1048576)); // "1.00 MB"
337
+ * console.log(formatBytes(1073741824)); // "1.00 GB"
338
+ * console.log(formatBytes(1099511627776)); // "1.00 TB"
339
+ *
340
+ * @param {number} bytes - The size in bytes
341
+ * @returns {string} - Human-readable file size
342
+ */
343
+ export function formatBytes(bytes) {
344
+ if(bytes === undefined || bytes === null || isNaN(bytes)) {
345
+ return 'Unknown';
346
+ }
347
+ if (bytes < 1024) {
348
+ return bytes + ' B';
349
+ }
350
+
351
+ const units = ['B', 'KB', 'MB', 'GB', 'TB'];
352
+ let unitIndex = 0;
353
+ let value = bytes;
354
+
355
+ // Divide by 1024 until the value is smaller than 1024 or we reach the last unit
356
+ while (value >= 1024 && unitIndex < units.length - 1) {
357
+ value /= 1024;
358
+ unitIndex++;
359
+ }
360
+
361
+ // Round to 2 decimal places and attach the appropriate unit
362
+ return value.toFixed(2) + ' ' + units[unitIndex];
363
+ }
364
+
365
+ export function formatDuration(durationMs) {
366
+ if(durationMs === undefined || durationMs === null || isNaN(durationMs)) {
367
+ return 'Unknown';
368
+ }
369
+ const seconds = (durationMs / 1000) % 60;
370
+ const minutes = Math.floor((durationMs / (1000 * 60)) % 60);
371
+ const hours = Math.floor((durationMs / (1000 * 60 * 60)) % 24);
372
+ const days = Math.floor(durationMs / (1000 * 60 * 60 * 24));
373
+
374
+ let result = '';
375
+ if (days > 0) result += `${days}d `;
376
+ if (hours > 0 || days > 0) result += `${hours}h `;
377
+ if (minutes > 0 || hours > 0 || days > 0) result += `${minutes}m `;
378
+ result += `${seconds.toFixed(2)}s`;
379
+
380
+ return result.trim();
381
+ }
382
+
383
+ export function tryJson(data) {
384
+ try {
385
+ const res = JSON.parse(data)
386
+ return JSON.stringify(res, null, 2)
387
+ } catch(e) {
388
+ return data
389
+ }
390
+ }
391
+
392
+ // ________________________________________________________________________________
393
+ // RPCResult
394
+ // ________________________________________________________________________________
395
+ /**
396
+ * @typedef {Object} RPCResult
397
+ * @property {boolean} isOk - Indicates if the operation was successful.
398
+ * @property {*} result - The result of the operation.
399
+ */
400
+ export function ok(res) {
401
+ return {
402
+ isOk: true,
403
+ result: res
404
+ }
405
+ }
406
+
407
+ /**
408
+ * @typedef {Object} RPCResult
409
+ * @property {boolean} isOk - Indicates if the operation was successful.
410
+ * @property {array} stack
411
+ * @property {*} result - The result of the operation.
412
+ */
413
+ export function nok(res, stack = []) {
414
+ return {
415
+ isOk: false,
416
+ result: res,
417
+ stack: stack
418
+ }
419
+ }
420
+
421
+ /**
422
+ * Checks that each element of an array is a string
423
+ * @param arr
424
+ * @returns index of first non string or -1 if they are all strings
425
+ */
426
+ export function indexOfNonString(arr) {
427
+ // If the input is not an array, decide what to return.
428
+ // Here we return -1 to indicate "no invalid element found."
429
+ if (!Array.isArray(arr)) {
430
+ throw Error("indexOfNonString only works with arrays")
431
+ }
432
+
433
+ // Loop through the array, checking each item
434
+ for (let i = 0; i < arr.length; i++) {
435
+ if (typeof arr[i] !== 'string') {
436
+ return i; // Return the index immediately if it's not a string
437
+ }
438
+ }
439
+
440
+ // If we finish the loop without finding any non-string, return -1
441
+ return -1;
442
+ }
443
+
444
+ /**
445
+ *
446
+ * TEST CASES
447
+ * console.log(splitPath('/hello/test/one'));
448
+ * Output: { first: '/hello', rest: '/test/one' }
449
+ *
450
+ * console.log(splitPath('/1/2/3/4/'));
451
+ * Output: { first: '/1', rest: '/2/3/4/' }
452
+ *
453
+ * console.log(splitPath('/single'));
454
+ * Output: { first: '/single', rest: '' }
455
+ */
456
+ export function splitPathString(path) {
457
+ // Find the index of the second slash, starting search after index 0
458
+ const secondSlashIndex = path.indexOf('/', 1);
459
+
460
+ if (secondSlashIndex === -1) {
461
+ // There is no second part
462
+ return { first: path, rest: '' };
463
+ }
464
+
465
+ return {
466
+ first: path.slice(0, secondSlashIndex),
467
+ rest: path.slice(secondSlashIndex)
468
+ };
469
+ }
470
+
471
+
472
+ /**
473
+ * Cleans a file name by replacing dots with hyphens, removing special characters,
474
+ * @param name
475
+ * @returns {*}
476
+ */
477
+ export function cleanFileName(name) {
478
+ return name
479
+ .replace(/\./g, "-")
480
+ .replace(/[^A-Za-z0-9 _-]/g, "")
481
+ .replace(/ /g, "-")
482
+ .slice(0, 24);
483
+ }
@@ -0,0 +1,59 @@
1
+ // ________________________________________________________________________________
2
+ // Logging.mjs
3
+ // ________________________________________________________________________________
4
+ import Constants from '../Constants.mjs'
5
+
6
+ // Note: localStorage is global in browser environment object
7
+ // Note: window.log is provided by loglevel library (imported globally in index.html)
8
+ // https://github.com/kutuluk/loglevel-plugin-prefix
9
+
10
+ const loggerPrefixFn = (level, name, timestamp) => `[${name}]`;
11
+ const prefixer = prefix.noConflict();
12
+ prefixer.reg(log);
13
+ prefixer.apply(log, { format: loggerPrefixFn });
14
+
15
+ const localStorageKey = "loggers"
16
+
17
+ const loggers = { ...Constants.defaultLoggerLevels }
18
+
19
+ // https://www.npmjs.com/package/loglevel
20
+ export function getLogger(location) {
21
+ const logger = log.getLogger(location)
22
+ if(loggers.hasOwnProperty(location)) {
23
+ logger.setLevel(loggers[location])
24
+ } else {
25
+ logger.setLevel(Constants.defaultLogLevel)
26
+ loggers[location] = Constants.defaultLogLevel
27
+ }
28
+ return logger
29
+ }
30
+
31
+ export function setLogger(location, level) {
32
+ const logger = log.getLogger(location)
33
+ logger.setLevel(level)
34
+ loggers[location] = level
35
+
36
+
37
+ localStorage.setItem(localStorageKey, JSON.stringify(loggers));
38
+ }
39
+
40
+ export function listLoggers() {
41
+ return loggers
42
+ }
43
+
44
+ export function clearLocalStorage() {
45
+ localStorage.removeItem(localStorageKey)
46
+ }
47
+
48
+ function init() {
49
+ const json = localStorage.getItem(localStorageKey)
50
+ // Object.assign(loggers, JSON.parse(json));
51
+ }
52
+
53
+ log.info (`[INIT]`)
54
+ init()
55
+ // log.trace(`[INIT] - trace - enabled`)
56
+ // log.debug(`[INIT] - debug - enabled`)
57
+ // log.error(`[INIT] - error - enabled`)
58
+ // log.warn( `[INIT] - warn - enabled`)
59
+
@@ -0,0 +1,152 @@
1
+ <script setup>
2
+ /*
3
+ page-fallback.vue
4
+ */
5
+
6
+ //________________________________________________________________________________
7
+ // IMPORTS
8
+ //________________________________________________________________________________
9
+ import {reactive, onMounted, defineAsyncComponent, watch, computed} from 'vue'
10
+ import {store as storeMain, api as apiMain } from 'GlobalStore'
11
+ import {useRoute, useRouter, NavigationFailureType} from 'vue-router'
12
+ import {getLogger} from "Logging";
13
+ import {api as notify} from "NotifyUtils"
14
+ import {substrAfterFirstSlash, substrWithoutLeadingSlash} from "JsUtils";
15
+ import {parentPath} from "JsUtils";
16
+
17
+ // ________________________________________________________________________________
18
+ // LOGGING
19
+ // ________________________________________________________________________________
20
+ const LOG_HEADER = "page-404.vue"
21
+ const logger = getLogger(LOG_HEADER)
22
+ logger.debug("[INIT]")
23
+
24
+ const route = useRoute()
25
+ const router = useRouter()
26
+ //________________________________________________________________________________
27
+ // STATE
28
+ //________________________________________________________________________________
29
+ const local = reactive({
30
+ id: LOG_HEADER,
31
+ isLoading: false,
32
+ isResolving: false,
33
+ route: null,
34
+
35
+ noRegistryFound: false,
36
+ resolved: null
37
+ })
38
+
39
+ const instanceId = computed(() => {
40
+ return substrAfterFirstSlash(router.currentRoute.value.fullPath)
41
+ })
42
+ //________________________________________________________________________________
43
+ // INIT
44
+ //________________________________________________________________________________
45
+ async function init() {
46
+ // 4 = aborted
47
+ // 8 = cancelled
48
+ // 16 = duplicated
49
+ local.isResolving = true
50
+ if (storeMain.isReady) {
51
+ await waitForRouteAndReplace(substrWithoutLeadingSlash(route.fullPath));
52
+ local.isResolving = false
53
+ return
54
+ }
55
+ setTimeout(async () => {
56
+ init()
57
+ }, 1000)
58
+ }
59
+
60
+ async function waitForRouteAndReplace(fullPath) {
61
+ const instanceId = substrAfterFirstSlash(fullPath)
62
+ logger.debug(`instanceId=${instanceId}`)
63
+
64
+ const resolved = router.resolve(fullPath);
65
+ local.resolved = JSON.parse(JSON.stringify(resolved))
66
+ logger.info(resolved)
67
+ const registry = storeMain.r[instanceId]
68
+ if(!registry){
69
+ logger.info("No registry found for instanceId:", instanceId)
70
+ local.noRegistryFound = true
71
+ return
72
+ } else {
73
+ local.noRegistryFound = false
74
+ }
75
+ // if (resolved.matched.length > 0 && resolved.matched[resolved.matched.length - 1].path === fullPath && registry) {
76
+ if (resolved.matched.length > 0 && resolved.name !== '404' && registry) {
77
+ await registry.routeByEndpoint(fullPath.replace(`/${instanceId}`, ""))
78
+ return
79
+ }
80
+
81
+ const parent = parentPath(fullPath);
82
+
83
+ if (parent && parent !== fullPath) {
84
+ logger.info(`Could not load ${fullPath}. Trying parent: ${parent}`);
85
+ await waitForRouteAndReplace(parent)
86
+ // logger.info(`Re-checking if child route is now available: ${fullPath}`);
87
+ // await waitForRouteAndReplace(fullPath);
88
+ } else {
89
+ notify.badDetails(`[${local.id}] - Failed to resolve route after multiple attempts:`, fullPath)
90
+ }
91
+ }
92
+
93
+ onMounted(() => {
94
+ init()
95
+ })
96
+
97
+ </script>
98
+
99
+
100
+ <template>
101
+ <div class="page-404">
102
+ <x-section extra="fs-3 text-danger" k="Invalid Route!">
103
+
104
+ <div class="row">
105
+ <div class="col-auto">
106
+ <div v-if="local.isResolving" class="spinner-border" role="status">
107
+ <span class="visually-hidden">Loading...</span>
108
+ </div>
109
+ </div>
110
+ <div class="col-auto">
111
+ <h5 v-if="local.isResolving">Waiting for routes to be ready...</h5>
112
+ </div>
113
+ </div>
114
+
115
+ <div class="row mt-4 mb-4">
116
+ <x-collapse k="Resolved" v-if="local.resolved" :modelValue="true">
117
+ <x-json :obj="local.resolved"></x-json>
118
+ </x-collapse>
119
+ <div v-else>
120
+ <span class="fw-bold">No resolved route available</span>
121
+ </div>
122
+ </div>
123
+
124
+ <div class="row mt-4 mb-4">
125
+ <x-collapse k="componentErrors Entity" :modelValue="true" v-if="storeMain.componentErrors">
126
+ <x-json :obj="storeMain.componentErrors"></x-json>
127
+ </x-collapse>
128
+ <div v-else>
129
+ <span class="fw-bold">No componentErrors</span>
130
+ </div>
131
+ </div>
132
+
133
+ <div class="row mb-2">
134
+ <div class="col-auto">
135
+ <x-label k="Selected Instance Id:">{{ storeMain.selectedInstId }}</x-label>
136
+ </div>
137
+ <div class="col-auto" v-if="storeMain.selectedInstId">
138
+ <ExecButton icon="fa-rotate-right me-1" :callback="() => storeMain.r[storeMain.selectedInstId].selectDefaultDashboard()">Default Component</ExecButton>
139
+ </div>
140
+ <div class="col-auto" >
141
+ <ExecButton icon="fa-rotate-right me-1" :callback="() => apiMain.routeByEndpoint(local.resolved.fullPath)">Retry</ExecButton>
142
+ </div>
143
+ </div>
144
+
145
+ </x-section>
146
+
147
+ </div>
148
+ </template>
149
+
150
+ <style scoped>
151
+
152
+ </style>