node-karin 1.7.13 → 1.8.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 (302) hide show
  1. package/CHANGELOG.md +819 -751
  2. package/default/config/adapter.json +27 -27
  3. package/default/config/config.json +44 -44
  4. package/default/config/groups.json +66 -66
  5. package/default/config/pm2.json +15 -15
  6. package/default/config/privates.json +25 -25
  7. package/default/config/redis.json +5 -5
  8. package/default/config/render.json +18 -18
  9. package/dist/cli/index.cjs +1 -487
  10. package/dist/cli/index.mjs +4120 -0
  11. package/dist/cli/pm2.js +1 -1
  12. package/dist/global.d.d.ts +68 -0
  13. package/dist/index.d.ts +1962 -508
  14. package/dist/index.mjs +31566 -0
  15. package/dist/logger-DVUGuzNj.d.ts +101 -0
  16. package/dist/module/art-template.d.ts +12 -1
  17. package/dist/module/axios.d.ts +1 -1
  18. package/dist/module/chalk.d.ts +1 -1
  19. package/dist/module/chokidar.d.ts +1 -1
  20. package/dist/module/express.d.ts +2 -1
  21. package/dist/module/express.mjs +2 -0
  22. package/dist/module/lodash.d.ts +2 -1
  23. package/dist/module/{lodash.js → lodash.mjs} +1 -0
  24. package/dist/module/moment.d.ts +1 -1
  25. package/dist/module/node-schedule.d.ts +1 -1
  26. package/dist/module/redis.d.ts +1 -1
  27. package/dist/module/sqlite3.d.ts +1 -1
  28. package/dist/module/ws.d.ts +2 -1
  29. package/dist/module/ws.mjs +2 -0
  30. package/dist/module/yaml.d.ts +1 -1
  31. package/dist/root.d.ts +5 -1
  32. package/dist/{root.js → root.mjs} +3 -1
  33. package/dist/start/app.d.ts +1 -0
  34. package/dist/start/app.mjs +9 -0
  35. package/dist/start/index.d.ts +1 -0
  36. package/dist/start/index.mjs +102 -0
  37. package/dist/web/assets/css/components-ep7vm38G.css +1 -0
  38. package/dist/web/assets/css/index-DxLRZkvi.css.br +0 -0
  39. package/dist/web/assets/js/components-Bp80gYJA.js.br +0 -0
  40. package/dist/web/assets/js/entry-DhKjPdoJ.js.br +0 -0
  41. package/dist/web/assets/js/hooks-CSKAeqvP.js.br +0 -0
  42. package/dist/web/assets/js/page-404.tsx-Dr2zAhTf.js +1 -0
  43. package/dist/web/assets/js/page-dashboard-B6B4ob8B.js.br +0 -0
  44. package/dist/web/assets/js/page-loading.tsx-g_ta_NRr.js.br +0 -0
  45. package/dist/web/assets/js/page-login.tsx-Cm98Ubip.js.br +0 -0
  46. package/dist/web/assets/js/utils-Cj3xTboC.js +2 -0
  47. package/dist/web/assets/js/vendor-editor-B8hjWfkw.js.br +0 -0
  48. package/dist/web/assets/js/vendor-heroui-CMeNhCFh.js.br +0 -0
  49. package/dist/web/assets/js/vendor-others-Bv0hrdEA.js.br +0 -0
  50. package/dist/web/assets/js/vendor-react-ChUmQ3I2.js.br +0 -0
  51. package/dist/web/assets/js/vendor-ui-utils-5rYIvRjL.js.br +0 -0
  52. package/dist/web/assets/js/vendor-visual-CdiJEXnN.js.br +0 -0
  53. package/dist/web/{flUhRq6tzZclQEJ-Vdg-IuiaDsNc.woff2 → flUhRq6tzZclQEJ-Vdg-IuiaDsNc.woff2.br} +0 -0
  54. package/dist/web/grid.svg +5 -5
  55. package/dist/web/icon.css +24 -24
  56. package/dist/web/index.html +37 -24
  57. package/dist/web/karin.png.br +0 -0
  58. package/dist/web/monaco-editor/min/vs/base/browser/ui/codicons/codicon/codicon.ttf.br +0 -0
  59. package/dist/web/sha256.min.js.br +0 -0
  60. package/package.json +192 -201
  61. package/README.md +0 -32
  62. package/dist/cli/index.js +0 -479
  63. package/dist/index.js +0 -19515
  64. package/dist/module/art-template.cjs +0 -11
  65. package/dist/module/axios.cjs +0 -22
  66. package/dist/module/chalk.cjs +0 -22
  67. package/dist/module/chokidar.cjs +0 -22
  68. package/dist/module/dotenv.cjs +0 -22
  69. package/dist/module/dotenv.d.ts +0 -2
  70. package/dist/module/dotenv.js +0 -2
  71. package/dist/module/express.cjs +0 -36
  72. package/dist/module/express.js +0 -1
  73. package/dist/module/lodash.cjs +0 -11
  74. package/dist/module/log4js.cjs +0 -22
  75. package/dist/module/log4js.d.ts +0 -2
  76. package/dist/module/log4js.js +0 -2
  77. package/dist/module/moment.cjs +0 -11
  78. package/dist/module/node-schedule.cjs +0 -22
  79. package/dist/module/redis.cjs +0 -22
  80. package/dist/module/sqlite3.cjs +0 -22
  81. package/dist/module/ws.cjs +0 -28
  82. package/dist/module/ws.js +0 -1
  83. package/dist/module/yaml.cjs +0 -22
  84. package/dist/web/assets/404-C9u_NlJi.js +0 -1
  85. package/dist/web/assets/Item-pd96GKIG.js.br +0 -0
  86. package/dist/web/assets/SelectionManager-BlXTH2VC.js.br +0 -0
  87. package/dist/web/assets/abap-BrgZPUOV.js.br +0 -0
  88. package/dist/web/assets/about-BwlDpX-c.js.br +0 -0
  89. package/dist/web/assets/accordion-Bj06RlD-.js.br +0 -0
  90. package/dist/web/assets/adapter-Du42CYBT.js.br +0 -0
  91. package/dist/web/assets/addon-web-links-Wrx0dCGl.js.br +0 -0
  92. package/dist/web/assets/apex-DyP6w7ZV.js.br +0 -0
  93. package/dist/web/assets/azcli-BaLxmfj-.js.br +0 -0
  94. package/dist/web/assets/bat-CFOPXBzS.js.br +0 -0
  95. package/dist/web/assets/bicep-BfEKNvv3.js.br +0 -0
  96. package/dist/web/assets/bot-DdYIqTVP.js +0 -6
  97. package/dist/web/assets/cameligo-BFG1Mk7z.js.br +0 -0
  98. package/dist/web/assets/chunk-2C6KNKEU-CBJmVWyn.js.br +0 -0
  99. package/dist/web/assets/chunk-2QAN2V2R-BulY1jfw.js.br +0 -0
  100. package/dist/web/assets/chunk-3TCFMHK3-BpJf4Q9f.js.br +0 -0
  101. package/dist/web/assets/chunk-4EXC76WE-DWVJR0TX.js.br +0 -0
  102. package/dist/web/assets/chunk-6JWJ7CFW-BDAlVmIQ.js.br +0 -0
  103. package/dist/web/assets/chunk-6NGXL2PC-DIPEMSmA.js.br +0 -0
  104. package/dist/web/assets/chunk-6VC6TS2O-sjq9IySl.js.br +0 -0
  105. package/dist/web/assets/chunk-736YWA4T-BK_z11TK.js.br +0 -0
  106. package/dist/web/assets/chunk-A6PX3NG3-BsGR2bWZ.js.br +0 -0
  107. package/dist/web/assets/chunk-B75B6XQK-B0VUBvt8.js +0 -1
  108. package/dist/web/assets/chunk-BWXGEJBS-DvCShJym.js.br +0 -0
  109. package/dist/web/assets/chunk-D5XJWRAV-9uH2CwV1.js +0 -1
  110. package/dist/web/assets/chunk-HAJUSXOG-6BFBENy1.js.br +0 -0
  111. package/dist/web/assets/chunk-IHO36JMK-DKnKLDmu.js.br +0 -0
  112. package/dist/web/assets/chunk-J6JGI6RM-DKmnXtnU.js.br +0 -0
  113. package/dist/web/assets/chunk-J7I6W5JF-IqR8CF_Q.js.br +0 -0
  114. package/dist/web/assets/chunk-KCYYJJH4-BdofC4qA.js.br +0 -0
  115. package/dist/web/assets/chunk-KHLLQ6W4-CpyZzH4q.js.br +0 -0
  116. package/dist/web/assets/chunk-KQ5CH2X7-MWuUq5gI.js.br +0 -0
  117. package/dist/web/assets/chunk-LAX3QLKM-B0tE0BjZ.js +0 -1
  118. package/dist/web/assets/chunk-LGSBTEIA--Gvr91gm.js +0 -1
  119. package/dist/web/assets/chunk-M3MASYO7-BVjxibqV.js +0 -1
  120. package/dist/web/assets/chunk-ML27DD5T-BjYAog8d.js.br +0 -0
  121. package/dist/web/assets/chunk-MSDKUXDP-DKkJKxM-.js.br +0 -0
  122. package/dist/web/assets/chunk-MW56SEHC-CTlcS-O4.js.br +0 -0
  123. package/dist/web/assets/chunk-MZRCPRP2-BBG21hp8.js.br +0 -0
  124. package/dist/web/assets/chunk-OH2E76JR-BYurMayl.js +0 -1
  125. package/dist/web/assets/chunk-OTWYT2HS-cQ8QQNDY.js +0 -1
  126. package/dist/web/assets/chunk-RRTOIK23-CSPsT46O.js.br +0 -0
  127. package/dist/web/assets/chunk-SLABUSGS-s9w3Zt5w.js.br +0 -0
  128. package/dist/web/assets/chunk-TE6SZS6W-1UK_YAGg.js +0 -1
  129. package/dist/web/assets/chunk-UX7UMZL5-DHf8C-o1.js +0 -1
  130. package/dist/web/assets/chunk-WQVQ7P2I-C4kbg9VI.js.br +0 -0
  131. package/dist/web/assets/clojure-DTECt2xU.js.br +0 -0
  132. package/dist/web/assets/codicon-DCmgc-ay.ttf +0 -0
  133. package/dist/web/assets/coffee-CDGzqUPQ.js.br +0 -0
  134. package/dist/web/assets/config-CEElyPBT.js.br +0 -0
  135. package/dist/web/assets/config-DVn1FaJ-.js.br +0 -0
  136. package/dist/web/assets/cpp-CLLBncYj.js.br +0 -0
  137. package/dist/web/assets/csharp-dUCx_-0o.js.br +0 -0
  138. package/dist/web/assets/csp-5Rap-vPy.js.br +0 -3
  139. package/dist/web/assets/css-D3h14YRZ.js.br +0 -0
  140. package/dist/web/assets/cssMode-CXyVPoom.js.br +0 -0
  141. package/dist/web/assets/cypher-DrQuvNYM.js.br +0 -0
  142. package/dist/web/assets/dart-CFKIUWau.js.br +0 -0
  143. package/dist/web/assets/default_page-BKgpdS-e.js +0 -1
  144. package/dist/web/assets/detail-C5769b6q.js.br +0 -0
  145. package/dist/web/assets/detail-COuw3J9r.js.br +0 -0
  146. package/dist/web/assets/detail-DqW0R8N9.css.br +0 -0
  147. package/dist/web/assets/dockerfile-Zznr-cwX.js.br +0 -0
  148. package/dist/web/assets/ecl-Ce3n6wWz.js.br +0 -0
  149. package/dist/web/assets/editor.worker-oRlJJsnX.js.br +0 -0
  150. package/dist/web/assets/elixir-deUWdS0T.js.br +0 -0
  151. package/dist/web/assets/env-CSYJHsPf.js.br +0 -0
  152. package/dist/web/assets/eye-DEh2Pgsu.js +0 -6
  153. package/dist/web/assets/features-animation-F-pzovue.js +0 -1
  154. package/dist/web/assets/flow9-i9-g7ZhI.js.br +0 -0
  155. package/dist/web/assets/focusSafely-DOspV_xj.js.br +0 -0
  156. package/dist/web/assets/freemarker2-BV0OzS9F.js.br +0 -0
  157. package/dist/web/assets/friend_request-DfiA7sPM.js.br +0 -0
  158. package/dist/web/assets/fsharp-CzKuDChf.js.br +0 -0
  159. package/dist/web/assets/github-nVmhSG0k.js +0 -11
  160. package/dist/web/assets/go-Cphgjts3.js.br +0 -0
  161. package/dist/web/assets/graphql-Cg7bfA9N.js.br +0 -0
  162. package/dist/web/assets/group-CfWIxZ1S.js.br +0 -0
  163. package/dist/web/assets/group_notice-XufgXVhG.js +0 -1
  164. package/dist/web/assets/handlebars-DSMVNR0n.js.br +0 -0
  165. package/dist/web/assets/hcl-0cvrggvQ.js.br +0 -0
  166. package/dist/web/assets/html-ClQau7kT.js.br +0 -0
  167. package/dist/web/assets/htmlMode-CN2HUcKJ.js.br +0 -0
  168. package/dist/web/assets/iconBase-BbDMq9Lm.js.br +0 -0
  169. package/dist/web/assets/index-B2KKfeyN.js.br +0 -0
  170. package/dist/web/assets/index-B59L0CDQ.js.br +0 -0
  171. package/dist/web/assets/index-BRJPOEf0.js.br +0 -0
  172. package/dist/web/assets/index-BSQ_9cWz.js.br +0 -0
  173. package/dist/web/assets/index-BTn745-y.js.br +0 -0
  174. package/dist/web/assets/index-Bl5YOuTR.js.br +0 -0
  175. package/dist/web/assets/index-Bm-03b92.js +0 -1
  176. package/dist/web/assets/index-CNKcljeW.js +0 -1
  177. package/dist/web/assets/index-CSkzWqtN.js.br +0 -0
  178. package/dist/web/assets/index-CY-NVVkv.js.br +0 -0
  179. package/dist/web/assets/index-CeBvj3ZH.js.br +0 -0
  180. package/dist/web/assets/index-CnkVaH2P.css.br +0 -0
  181. package/dist/web/assets/index-DCzNSkJn.js.br +0 -0
  182. package/dist/web/assets/index-DNKbYZlM.js +0 -1
  183. package/dist/web/assets/index-DVsvetQP.js.br +0 -0
  184. package/dist/web/assets/index-D_816BTl.js.br +0 -0
  185. package/dist/web/assets/index-Db1iHKoe.js.br +0 -0
  186. package/dist/web/assets/index-DjU-NtVQ.js +0 -1
  187. package/dist/web/assets/index-Drqc4ASm.js.br +0 -0
  188. package/dist/web/assets/index-DvwfI5vP.css.br +0 -0
  189. package/dist/web/assets/index-Dwnb7Xtz.js.br +0 -0
  190. package/dist/web/assets/index-EGWrH2j2.js +0 -1
  191. package/dist/web/assets/index-IUy6p99y.js +0 -1
  192. package/dist/web/assets/index-k_Cd4_SW.js.br +0 -0
  193. package/dist/web/assets/index-nZMp9MWB.js.br +0 -0
  194. package/dist/web/assets/index.esm-BSKygSH-.js.br +0 -0
  195. package/dist/web/assets/ini-Drc7WvVn.js.br +0 -0
  196. package/dist/web/assets/inputGroup-CJGuoYUx.js.br +0 -0
  197. package/dist/web/assets/isSymbol-BShv9ove.js.br +0 -0
  198. package/dist/web/assets/java-B_fMsGYe.js.br +0 -0
  199. package/dist/web/assets/javascript-BegoFNre.js.br +0 -0
  200. package/dist/web/assets/jsonMode-Dxf_RJRO.js.br +0 -0
  201. package/dist/web/assets/julia-Bqgm2twL.js.br +0 -0
  202. package/dist/web/assets/kotlin-BSkB5QuD.js.br +0 -0
  203. package/dist/web/assets/layout-al9rnD7b.js.br +0 -0
  204. package/dist/web/assets/less-BsTHnhdd.js.br +0 -0
  205. package/dist/web/assets/lexon-YWi4-JPR.js.br +0 -0
  206. package/dist/web/assets/liquid-bFSovgkX.js.br +0 -0
  207. package/dist/web/assets/loading-Czh_ivNv.js.br +0 -0
  208. package/dist/web/assets/login-DpjAzjKU.js.br +0 -0
  209. package/dist/web/assets/lua-nf6ki56Z.js.br +0 -0
  210. package/dist/web/assets/m3-Cpb6xl2v.js.br +0 -0
  211. package/dist/web/assets/markdown-DSZPf7rp.js.br +0 -0
  212. package/dist/web/assets/mdx-DGviX4hR.js.br +0 -0
  213. package/dist/web/assets/merge-CuVThMNe.js.br +0 -0
  214. package/dist/web/assets/mergeRefs-BpO9bzld.js +0 -1
  215. package/dist/web/assets/message-mTjTgeaM.js +0 -1
  216. package/dist/web/assets/message.model-B1qK1MiE.js.br +0 -0
  217. package/dist/web/assets/mips-B_c3zf-v.js.br +0 -0
  218. package/dist/web/assets/msdax-rUNN04Wq.js.br +0 -0
  219. package/dist/web/assets/mysql-DDwshQtU.js.br +0 -0
  220. package/dist/web/assets/number-7W8NeZVk.js.br +0 -0
  221. package/dist/web/assets/objective-c-B5zXfXm9.js.br +0 -0
  222. package/dist/web/assets/pascal-CXOwvkN_.js.br +0 -0
  223. package/dist/web/assets/pascaligo-Bc-ZgV77.js.br +0 -0
  224. package/dist/web/assets/perl-CwNk8-XU.js.br +0 -0
  225. package/dist/web/assets/pgsql-tGk8EFnU.js.br +0 -0
  226. package/dist/web/assets/php-CpIb_Oan.js.br +0 -0
  227. package/dist/web/assets/pla-B03wrqEc.js.br +0 -0
  228. package/dist/web/assets/pm2-CniXkaeu.js.br +0 -0
  229. package/dist/web/assets/postiats-BKlk5iyT.js.br +0 -0
  230. package/dist/web/assets/powerquery-Bhzvs7bI.js.br +0 -0
  231. package/dist/web/assets/powershell-Dd3NCNK9.js.br +0 -0
  232. package/dist/web/assets/private-CfG8JI8L.js.br +0 -0
  233. package/dist/web/assets/protobuf-COyEY5Pt.js.br +0 -0
  234. package/dist/web/assets/pug-BaJupSGV.js.br +0 -0
  235. package/dist/web/assets/python-D0ZD_k1N.js.br +0 -0
  236. package/dist/web/assets/qsharp-DXyYeYxl.js.br +0 -0
  237. package/dist/web/assets/r-CdQndTaG.js.br +0 -0
  238. package/dist/web/assets/razor-DRYiVyDt.js.br +0 -0
  239. package/dist/web/assets/react-resizable-panels.browser.esm-DubqLJ4h.js.br +0 -0
  240. package/dist/web/assets/redis-BJLUr1tG.js.br +0 -0
  241. package/dist/web/assets/redis-CVwtpugi.js.br +0 -0
  242. package/dist/web/assets/redshift-25W9uPmb.js.br +0 -0
  243. package/dist/web/assets/render-DEylqIUg.js.br +0 -0
  244. package/dist/web/assets/restructuredtext-DfzH4Xui.js.br +0 -0
  245. package/dist/web/assets/router-D_dYaqfK.js +0 -1
  246. package/dist/web/assets/ruby-Cp1zYvxS.js.br +0 -0
  247. package/dist/web/assets/rust-D5C2fndG.js.br +0 -0
  248. package/dist/web/assets/save-D6wQsuGT.js +0 -1
  249. package/dist/web/assets/sb-CDntyWJ8.js.br +0 -0
  250. package/dist/web/assets/scala-BoFRg7Ot.js.br +0 -0
  251. package/dist/web/assets/scheme-Bio4gycK.js.br +0 -0
  252. package/dist/web/assets/scss-4Ik7cdeQ.js.br +0 -0
  253. package/dist/web/assets/server-CRdhk2Wy.js.br +0 -0
  254. package/dist/web/assets/shell-CX-rkNHf.js.br +0 -0
  255. package/dist/web/assets/solidity-Tw7wswEv.js.br +0 -0
  256. package/dist/web/assets/sophia-C5WLch3f.js.br +0 -0
  257. package/dist/web/assets/sparql-DHaeiCBh.js.br +0 -0
  258. package/dist/web/assets/sql-CCSDG5nI.js.br +0 -0
  259. package/dist/web/assets/st-pnP8ivHi.js.br +0 -0
  260. package/dist/web/assets/swift-DwJ7jVG9.js.br +0 -0
  261. package/dist/web/assets/systemverilog-B9Xyijhd.js.br +0 -0
  262. package/dist/web/assets/tcl-DnHyzjbg.js.br +0 -0
  263. package/dist/web/assets/terminal-CfCQe79-.js +0 -6
  264. package/dist/web/assets/terminal-bNIVjrPM.js.br +0 -0
  265. package/dist/web/assets/test-url-CZXnW7jp.js.br +0 -0
  266. package/dist/web/assets/theme-switch-Bz2l2CwF.js.br +0 -0
  267. package/dist/web/assets/ts.worker-Bd4z-OY3.js.br +0 -0
  268. package/dist/web/assets/tsMode-DKGjerkd.js.br +0 -0
  269. package/dist/web/assets/twig-CPajHgWi.js.br +0 -0
  270. package/dist/web/assets/typescript-CsEXAEHs.js.br +0 -0
  271. package/dist/web/assets/typespec-D-MeaMDU.js.br +0 -0
  272. package/dist/web/assets/use-dialog-BrR6Szrb.js +0 -1
  273. package/dist/web/assets/useEvent-DaW3_jZI.js +0 -1
  274. package/dist/web/assets/useFocusable-CtLTcLFV.js.br +0 -0
  275. package/dist/web/assets/useFormReset-CBBc4OFV.js +0 -1
  276. package/dist/web/assets/useHover-NCfDbwX0.js.br +0 -0
  277. package/dist/web/assets/useKeyboard-BZ4YtCxw.js +0 -1
  278. package/dist/web/assets/useLabel-DBycc4Nu.js +0 -1
  279. package/dist/web/assets/useNumberFormatter-DhAgwXM6.js.br +0 -0
  280. package/dist/web/assets/useRequest-BWEdMIz7.js.br +0 -0
  281. package/dist/web/assets/useToggle-Wuq-KqyX.js.br +0 -0
  282. package/dist/web/assets/users-_IqQqJDb.js +0 -11
  283. package/dist/web/assets/vb-DgyLZaXg.js.br +0 -0
  284. package/dist/web/assets/video_insert-Bj2IxuYI.js.br +0 -0
  285. package/dist/web/assets/webui-B6dfxJX4.js.br +0 -0
  286. package/dist/web/assets/wgsl-BIv9DU6q.js.br +0 -0
  287. package/dist/web/assets/xml-BHQFK9Jh.js.br +0 -0
  288. package/dist/web/assets/yaml-2He2eI3V.js.br +0 -0
  289. package/dist/web/karin.png +0 -0
  290. package/dist/web/monaco-editor/min/vs/base/browser/ui/codicons/codicon/codicon.ttf +0 -0
  291. /package/dist/module/{art-template.js → art-template.mjs} +0 -0
  292. /package/dist/module/{axios.js → axios.mjs} +0 -0
  293. /package/dist/module/{chalk.js → chalk.mjs} +0 -0
  294. /package/dist/module/{chokidar.js → chokidar.mjs} +0 -0
  295. /package/dist/module/{moment.js → moment.mjs} +0 -0
  296. /package/dist/module/{node-schedule.js → node-schedule.mjs} +0 -0
  297. /package/dist/module/{redis.js → redis.mjs} +0 -0
  298. /package/dist/module/{sqlite3.js → sqlite3.mjs} +0 -0
  299. /package/dist/module/{yaml.js → yaml.mjs} +0 -0
  300. /package/dist/web/assets/{addon-web-links-CFbL2ovg.css.br → css/vendor-editor-CFbL2ovg.css.br} +0 -0
  301. /package/dist/web/assets/{index-ZgkIHsf0.css → css/vendor-others-ZgkIHsf0.css} +0 -0
  302. /package/dist/web/assets/{favicon-BoqZd694.ico → ico/favicon-BoqZd694.ico} +0 -0
@@ -0,0 +1,101 @@
1
+ import EventEmitter from 'events';
2
+ import chalk__default from 'chalk';
3
+ import { Logger as Logger$1, Configuration } from 'log4js';
4
+
5
+ /**
6
+ * 日志等级
7
+ * - `all`:所有日志
8
+ * - `trace`:追踪
9
+ * - `debug`:调试
10
+ * - `mark`:标记
11
+ * - `info`:信息
12
+ * - `warn`:警告
13
+ * - `error`:错误
14
+ * - `fatal`:致命
15
+ * - `off`:关闭
16
+ */
17
+ type LoggerLevel = 'all' | 'trace' | 'debug' | 'mark' | 'info' | 'warn' | 'error' | 'fatal' | 'off';
18
+ /**
19
+ * 创建日志模块配置
20
+ */
21
+ type LoggerOptions = {
22
+ config?: Configuration;
23
+ log4jsCfg?: {
24
+ level: LoggerLevel;
25
+ daysToKeep: number;
26
+ maxLogSize: number;
27
+ logColor: string;
28
+ };
29
+ };
30
+ /**
31
+ * 拓展日志模块
32
+ */
33
+ interface LoggerExpand {
34
+ /**
35
+ * 颜色模块
36
+ */
37
+ chalk: typeof chalk__default;
38
+ /**
39
+ * 构建红色文本
40
+ * @param text - 文本
41
+ */
42
+ red: (text: string) => string;
43
+ /**
44
+ * 构建绿色文本
45
+ * @param text - 文本
46
+ */
47
+ green: (text: string) => string;
48
+ /**
49
+ * 构建黄色文本
50
+ * @param text - 文本
51
+ */
52
+ yellow: (text: string) => string;
53
+ /**
54
+ * 构建蓝色文本
55
+ * @param text - 文本
56
+ */
57
+ blue: (text: string) => string;
58
+ /**
59
+ * 构建品红色文本
60
+ * @param text - 文本
61
+ */
62
+ magenta: (text: string) => string;
63
+ /**
64
+ * 构建青色文本
65
+ * @param text - 文本
66
+ */
67
+ cyan: (text: string) => string;
68
+ /**
69
+ * 构建白色文本
70
+ * @param text - 文本
71
+ */
72
+ white: (text: string) => string;
73
+ /**
74
+ * 构建灰色文本
75
+ * @param text - 文本
76
+ */
77
+ gray: (text: string) => string;
78
+ /**
79
+ * 构建紫色文本
80
+ * @param text - 文本
81
+ */
82
+ violet: (text: string) => string;
83
+ /**
84
+ * 构建函数文本
85
+ * @param text - 文本
86
+ */
87
+ fnc: (text: string) => string;
88
+ /**
89
+ * 专属Bot前缀日志模块
90
+ * @param level 等级
91
+ * @param id 机器人ID
92
+ * @param args 参数
93
+ */
94
+ bot: (level: LoggerLevel, id: string, ...args: any[]) => void;
95
+ }
96
+ /**
97
+ * 日志模块
98
+ */
99
+ type Logger = Logger$1 & LoggerExpand;
100
+
101
+ export type { Logger as L, LoggerLevel as a, LoggerOptions as b, LoggerExpand as c };
@@ -1 +1,12 @@
1
- export { default } from 'art-template';
1
+ export { default } from 'art-template';
2
+ import 'axios';
3
+ import 'chalk';
4
+ import 'chokidar';
5
+ import 'express';
6
+ import 'lodash';
7
+ import 'moment';
8
+ import 'node-schedule';
9
+ import 'redis';
10
+ import 'sqlite3';
11
+ import 'ws';
12
+ import 'yaml';
@@ -1,2 +1,2 @@
1
1
  export * from 'axios';
2
- export { default } from 'axios';
2
+ export { default } from 'axios';
@@ -1,2 +1,2 @@
1
1
  export * from 'chalk';
2
- export { default } from 'chalk';
2
+ export { default } from 'chalk';
@@ -1,2 +1,2 @@
1
1
  export * from 'chokidar';
2
- export { default } from 'chokidar';
2
+ export { default } from 'chokidar';
@@ -1 +1,2 @@
1
- export { Application, CookieOptions, Errback, ErrorRequestHandler, Express, Handler, IRoute, IRouter, IRouterHandler, IRouterMatcher, Locals, MediaType, NextFunction, Request, RequestHandler, RequestParamHandler, Response, Router, RouterOptions, Send, default, json, query, raw, text } from 'express';
1
+ export * from 'express';
2
+ export { Application, CookieOptions, Errback, ErrorRequestHandler, Express, Handler, IRoute, IRouter, IRouterHandler, IRouterMatcher, Locals, MediaType, NextFunction, Request, RequestHandler, RequestParamHandler, Response, RouterOptions, Send, default } from 'express';
@@ -0,0 +1,2 @@
1
+ export * from 'express';
2
+ export { default } from 'express';
@@ -1 +1,2 @@
1
- export { default } from 'lodash';
1
+ export * from 'lodash';
2
+ export { default } from 'lodash';
@@ -1 +1,2 @@
1
+ export * from 'lodash';
1
2
  export { default } from 'lodash';
@@ -1 +1 @@
1
- export { default } from 'moment';
1
+ export { default } from 'moment';
@@ -1,2 +1,2 @@
1
1
  export * from 'node-schedule';
2
- export { default } from 'node-schedule';
2
+ export { default } from 'node-schedule';
@@ -1,2 +1,2 @@
1
1
  export * from 'redis';
2
- export { default } from 'redis';
2
+ export { default } from 'redis';
@@ -1,2 +1,2 @@
1
1
  export * from 'sqlite3';
2
- export { default } from 'sqlite3';
2
+ export { default } from 'sqlite3';
@@ -1 +1,2 @@
1
- export { WebSocket, WebSocketServer, createWebSocketStream, default } from 'ws';
1
+ export * from 'ws';
2
+ export { default } from 'ws';
@@ -0,0 +1,2 @@
1
+ export * from 'ws';
2
+ export { default } from 'ws';
@@ -1,2 +1,2 @@
1
1
  export * from 'yaml';
2
- export { default } from 'yaml';
2
+ export { default } from 'yaml';
package/dist/root.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import EventEmitter from 'events';
1
2
  /** 以node-karin为根目录的绝对路径 */
2
3
  declare const karinPathRoot: string;
3
4
  /** node-karin主入口文件路径 */
@@ -24,6 +25,8 @@ declare const karinPathTemp: string;
24
25
  declare const karinPathResource: string;
25
26
  /** db根目录 `@karinjs/data/db` */
26
27
  declare const karinPathDb: string;
28
+ /** 任务数据库目录 `@karinjs/data/db/task` */
29
+ declare const karinPathTaskDb: string;
27
30
  /** 伪redis sqlite3目录 `@karinjs/data/db/redis-sqlite3` */
28
31
  declare const karinPathRedisSqlite3: string;
29
32
  /** kv数据库目录 `@karinjs/data/db/kv` */
@@ -104,6 +107,7 @@ declare const _default: {
104
107
  karinPathConsole: string;
105
108
  karinPathSandboxData: string;
106
109
  karinPathSandboxTemp: string;
110
+ karinPathTaskDb: string;
107
111
  karinDir: string;
108
112
  karinMain: string;
109
113
  pluginDir: string;
@@ -127,4 +131,4 @@ declare const _default: {
127
131
  sandboxTempPath: string;
128
132
  };
129
133
 
130
- export { basePath, commentPath, configPath, consolePath, dataPath, dbPath, _default as default, defaultConfigPath, defaultViewPath, htmlPath, isPackaged, isPkg, karinDir, karinMain, karinPathBase, karinPathComment, karinPathConfig, karinPathConsole, karinPathData, karinPathDb, karinPathDefaultConfig, karinPathDefaultView, karinPathHtml, karinPathKv, karinPathLogs, karinPathMain, karinPathPlugins, karinPathPm2Config, karinPathRedisSqlite3, karinPathResource, karinPathRoot, karinPathSandboxData, karinPathSandboxTemp, karinPathTemp, kvPath, logsPath, pluginDir, pm2Path, redisSqlite3Path, resourcePath, sandboxDataPath, sandboxTempPath, tempPath };
134
+ export { basePath, commentPath, configPath, consolePath, dataPath, dbPath, _default as default, defaultConfigPath, defaultViewPath, htmlPath, isPackaged, isPkg, karinDir, karinMain, karinPathBase, karinPathComment, karinPathConfig, karinPathConsole, karinPathData, karinPathDb, karinPathDefaultConfig, karinPathDefaultView, karinPathHtml, karinPathKv, karinPathLogs, karinPathMain, karinPathPlugins, karinPathPm2Config, karinPathRedisSqlite3, karinPathResource, karinPathRoot, karinPathSandboxData, karinPathSandboxTemp, karinPathTaskDb, karinPathTemp, kvPath, logsPath, pluginDir, pm2Path, redisSqlite3Path, resourcePath, sandboxDataPath, sandboxTempPath, tempPath };
@@ -16,6 +16,7 @@ var karinPathData = Object.freeze(path.join(karinPathBase, "data"));
16
16
  var karinPathTemp = Object.freeze(path.join(karinPathBase, "temp"));
17
17
  var karinPathResource = Object.freeze(path.join(karinPathBase, "resource"));
18
18
  var karinPathDb = Object.freeze(path.join(karinPathData, "db"));
19
+ var karinPathTaskDb = Object.freeze(path.join(karinPathDb, "task"));
19
20
  var karinPathRedisSqlite3 = Object.freeze(path.join(karinPathDb, "redis-sqlite3"));
20
21
  var karinPathKv = Object.freeze(path.join(karinPathDb, "kv"));
21
22
  var karinPathLogs = Object.freeze(path.join(karinPathBase, "logs"));
@@ -68,6 +69,7 @@ var root_default = {
68
69
  karinPathConsole,
69
70
  karinPathSandboxData,
70
71
  karinPathSandboxTemp,
72
+ karinPathTaskDb,
71
73
  // 旧常量,保持兼容性
72
74
  karinDir,
73
75
  karinMain,
@@ -92,4 +94,4 @@ var root_default = {
92
94
  sandboxTempPath
93
95
  };
94
96
 
95
- export { basePath, commentPath, configPath, consolePath, dataPath, dbPath, root_default as default, defaultConfigPath, defaultViewPath, htmlPath, isPackaged, isPkg, karinDir, karinMain, karinPathBase, karinPathComment, karinPathConfig, karinPathConsole, karinPathData, karinPathDb, karinPathDefaultConfig, karinPathDefaultView, karinPathHtml, karinPathKv, karinPathLogs, karinPathMain, karinPathPlugins, karinPathPm2Config, karinPathRedisSqlite3, karinPathResource, karinPathRoot, karinPathSandboxData, karinPathSandboxTemp, karinPathTemp, kvPath, logsPath, pluginDir, pm2Path, redisSqlite3Path, resourcePath, sandboxDataPath, sandboxTempPath, tempPath };
97
+ export { basePath, commentPath, configPath, consolePath, dataPath, dbPath, root_default as default, defaultConfigPath, defaultViewPath, htmlPath, isPackaged, isPkg, karinDir, karinMain, karinPathBase, karinPathComment, karinPathConfig, karinPathConsole, karinPathData, karinPathDb, karinPathDefaultConfig, karinPathDefaultView, karinPathHtml, karinPathKv, karinPathLogs, karinPathMain, karinPathPlugins, karinPathPm2Config, karinPathRedisSqlite3, karinPathResource, karinPathRoot, karinPathSandboxData, karinPathSandboxTemp, karinPathTaskDb, karinPathTemp, kvPath, logsPath, pluginDir, pm2Path, redisSqlite3Path, resourcePath, sandboxDataPath, sandboxTempPath, tempPath };
@@ -0,0 +1 @@
1
+ import EventEmitter from 'events';
@@ -0,0 +1,9 @@
1
+ // src/start/app.ts
2
+ var isStart = false;
3
+ (async () => {
4
+ if (isStart) return;
5
+ isStart = true;
6
+ const index = import.meta.url.includes(".ts") ? "../index.ts" : "../index.mjs";
7
+ const { start } = await import(index);
8
+ start();
9
+ })();
@@ -0,0 +1 @@
1
+ import EventEmitter from 'events';
@@ -0,0 +1,102 @@
1
+ import net from 'node:net';
2
+ import path from 'node:path';
3
+ import { fileURLToPath } from 'node:url';
4
+ import { fork } from 'node:child_process';
5
+
6
+ // src/start/index.ts
7
+ var isStart = false;
8
+ var child;
9
+ var lastStartTime = 0;
10
+ var isClosing = false;
11
+ var minRestartInterval = 5e3;
12
+ var _filename = fileURLToPath(import.meta.url);
13
+ var _dirname = path.dirname(_filename);
14
+ var indexPath = path.join(_dirname, import.meta.url.includes(".mjs") ? "app.mjs" : "app.ts");
15
+ var start = () => {
16
+ if (isStart) {
17
+ console.log("\u5B50\u8FDB\u7A0B\u5DF2\u5728\u8FD0\u884C\u4E2D\uFF0CPID:", child.pid);
18
+ return child;
19
+ }
20
+ isStart = true;
21
+ lastStartTime = Date.now();
22
+ child = fork(indexPath);
23
+ child.on("message", (message) => {
24
+ const { port, type, token } = JSON.parse(message) || {};
25
+ if (type === "restart") {
26
+ restart(port, token);
27
+ return;
28
+ }
29
+ if (type === "stop") {
30
+ process.exit(0);
31
+ }
32
+ });
33
+ child.on("exit", (code) => {
34
+ isStart = false;
35
+ if (!isClosing && Date.now() - lastStartTime > minRestartInterval) {
36
+ process.exit(code);
37
+ }
38
+ });
39
+ child.on("error", (err) => {
40
+ console.error("\u5B50\u8FDB\u7A0B\u53D1\u751F\u9519\u8BEF:", err);
41
+ });
42
+ return child;
43
+ };
44
+ var restart = async (port, token, isFetch = true) => {
45
+ isClosing = true;
46
+ if (isFetch) {
47
+ await sendExit(port, token);
48
+ }
49
+ let portAvailable = false;
50
+ const maxTries = 10;
51
+ for (let i = 0; i < maxTries; i++) {
52
+ portAvailable = await checkPort(port);
53
+ if (portAvailable) {
54
+ break;
55
+ }
56
+ await sleep(1e3);
57
+ }
58
+ if (!portAvailable) {
59
+ console.warn(`\u8B66\u544A\uFF1A\u7AEF\u53E3 ${port} \u5728\u591A\u6B21\u5C1D\u8BD5\u540E\u4ECD\u88AB\u5360\u7528\uFF0C\u53EF\u80FD\u9700\u8981\u624B\u52A8\u5904\u7406`);
60
+ }
61
+ isStart = false;
62
+ child = start();
63
+ return child;
64
+ };
65
+ var sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
66
+ var checkPort = (port) => {
67
+ const server = net.createServer();
68
+ return new Promise((resolve) => {
69
+ server.on("error", () => {
70
+ resolve(false);
71
+ });
72
+ server.listen(port);
73
+ server.once("listening", () => {
74
+ server.close(() => {
75
+ resolve(true);
76
+ });
77
+ });
78
+ });
79
+ };
80
+ var sendExit = async (port, token) => {
81
+ try {
82
+ const result = await fetch(`http://127.0.0.1:${port}/api/v1/exit`, {
83
+ method: "POST",
84
+ headers: {
85
+ authorization: `Bearer ${token}`
86
+ }
87
+ });
88
+ if (result.status === 200) {
89
+ console.log(await result.json());
90
+ } else {
91
+ console.log("\u53D1\u9001\u91CD\u542F\u8BF7\u6C42\u5931\u8D25:", result.status);
92
+ }
93
+ await sleep(1e3);
94
+ } catch {
95
+ }
96
+ };
97
+ process.on("exit", () => {
98
+ if (child && !child.killed) {
99
+ child.kill("SIGTERM");
100
+ }
101
+ });
102
+ start();
@@ -0,0 +1 @@
1
+ @font-face{font-family:HarmonyOS;src:url(https://s1.hdslb.com/bfs/static/jinkela/long/font/HarmonyOS_Medium.as.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}.xterm-rows{line-height:.8!important;letter-spacing:-.05em!important;word-spacing:-.1em!important;font-kerning:none!important}.xterm-rows>div{height:auto!important;transform:translateY(-2px);margin-bottom:-2px!important}.xterm-rows span:not(:empty){letter-spacing:-.1em!important;display:inline-block}.xterm .xterm-viewport{line-height:.8!important}.xterm-screen{margin:0!important;padding:0!important}.xterm .terminal-cursor{margin-top:-2px;height:105%!important;transform:scaleX(.5)!important;opacity:.8!important}.xterm .xterm-cursor-block{width:.5em!important;transform-origin:left center}.xterm-rows span:empty{display:inline-block;width:.7em!important}
@@ -0,0 +1 @@
1
+ import{j as t}from"./vendor-react-ChUmQ3I2.js";import{P as r}from"./components-Bp80gYJA.js";import"./vendor-others-Bv0hrdEA.js";import"./vendor-editor-B8hjWfkw.js";import"./vendor-ui-utils-5rYIvRjL.js";import"./vendor-heroui-CMeNhCFh.js";import"./page-dashboard-B6B4ob8B.js";import"./hooks-CSKAeqvP.js";import"./utils-Cj3xTboC.js";import"./vendor-visual-CdiJEXnN.js";const x=()=>t.jsx("div",{className:"min-h-screen flex items-center justify-center",children:t.jsx(r,{})});export{x as default};
@@ -0,0 +1,2 @@
1
+ import{V as p}from"./vendor-react-ChUmQ3I2.js";import{a5 as g}from"./components-Bp80gYJA.js";const k=async(t,n,e,r)=>{const{setIsLogModalOpen:i,setTaskId:c,setTaskLogs:o,setTaskName:f}=n;f("更新插件");const a=["开始创建更新任务...",`options: ${JSON.stringify(t)}`];o(a);try{const s=await g(t);if(s.success&&s.taskId)c(s.taskId),o([...a,`
2
+ 任务创建成功!`,`任务ID: ${s.taskId}`,"正在连接任务执行日志..."]),i(!0),typeof e=="function"&&e(),typeof r=="function"&&r();else throw new Error(s.message||"未知错误")}catch(s){console.error("更新失败:",s),p.error(`更新失败: ${s.message}`)}};export{k as c};
package/dist/web/grid.svg CHANGED
@@ -1,6 +1,6 @@
1
- <svg width="100" height="100" viewBox="0 0 100 100" fill="none" xmlns="http://www.w3.org/2000/svg">
2
- <pattern id="grid" width="10" height="10" patternUnits="userSpaceOnUse">
3
- <path d="M 10 0 L 0 0 0 10" fill="none" stroke="currentColor" stroke-width="0.5"/>
4
- </pattern>
5
- <rect width="100" height="100" fill="url(#grid)"/>
1
+ <svg width="100" height="100" viewBox="0 0 100 100" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <pattern id="grid" width="10" height="10" patternUnits="userSpaceOnUse">
3
+ <path d="M 10 0 L 0 0 0 10" fill="none" stroke="currentColor" stroke-width="0.5"/>
4
+ </pattern>
5
+ <rect width="100" height="100" fill="url(#grid)"/>
6
6
  </svg>
package/dist/web/icon.css CHANGED
@@ -1,25 +1,25 @@
1
- /* https://fonts.googleapis.com/icon?family=Material+Icons */
2
-
3
- /* fallback */
4
- @font-face {
5
- font-family: 'Material Icons';
6
- font-style: normal;
7
- font-weight: 400;
8
- src: url(./flUhRq6tzZclQEJ-Vdg-IuiaDsNc.woff2) format('woff2');
9
- }
10
-
11
- .material-icons {
12
- font-family: 'Material Icons';
13
- font-weight: normal;
14
- font-style: normal;
15
- font-size: 24px;
16
- line-height: 1;
17
- letter-spacing: normal;
18
- text-transform: none;
19
- display: inline-block;
20
- white-space: nowrap;
21
- word-wrap: normal;
22
- direction: ltr;
23
- -webkit-font-feature-settings: 'liga';
24
- -webkit-font-smoothing: antialiased;
1
+ /* https://fonts.googleapis.com/icon?family=Material+Icons */
2
+
3
+ /* fallback */
4
+ @font-face {
5
+ font-family: 'Material Icons';
6
+ font-style: normal;
7
+ font-weight: 400;
8
+ src: url(./flUhRq6tzZclQEJ-Vdg-IuiaDsNc.woff2) format('woff2');
9
+ }
10
+
11
+ .material-icons {
12
+ font-family: 'Material Icons';
13
+ font-weight: normal;
14
+ font-style: normal;
15
+ font-size: 24px;
16
+ line-height: 1;
17
+ letter-spacing: normal;
18
+ text-transform: none;
19
+ display: inline-block;
20
+ white-space: nowrap;
21
+ word-wrap: normal;
22
+ direction: ltr;
23
+ -webkit-font-feature-settings: 'liga';
24
+ -webkit-font-smoothing: antialiased;
25
25
  }
@@ -1,25 +1,38 @@
1
- <!doctype html>
2
- <html lang="en">
3
-
4
- <head>
5
- <meta charset="UTF-8" />
6
- <link rel="icon" type="image/svg+xml" href="/web/karin.png" />
7
- <link rel="stylesheet" href="/web/icon.css">
8
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
9
- <title>KarinJS WebUI</title>
10
- <meta key="title" content="Vite + NextUI" property="og:title" />
11
- <meta content="Make beautiful websites regardless of your design experience." property="og:description" />
12
- <meta content="Make beautiful websites regardless of your design experience." name="description" />
13
- <meta key="viewport"
14
- content="viewport-fit=cover, width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"
15
- name="viewport" />
16
- <link href="/web/assets/favicon-BoqZd694.ico" rel="icon" />
17
- <script type="module" crossorigin src="/web/assets/index-B2KKfeyN.js"></script>
18
- <link rel="stylesheet" crossorigin href="/web/assets/index-CnkVaH2P.css">
19
- </head>
20
-
21
- <body>
22
- <div id="root"></div>
23
- </body>
24
-
1
+ <!doctype html>
2
+ <html lang="en">
3
+
4
+ <head>
5
+ <meta charset="UTF-8" />
6
+ <link rel="icon" type="image/svg+xml" href="/web/karin.png" />
7
+ <link rel="stylesheet" href="/web/icon.css">
8
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
9
+ <title>KarinJS WebUI</title>
10
+ <meta key="title" content="Vite + NextUI" property="og:title" />
11
+ <meta content="Make beautiful websites regardless of your design experience." property="og:description" />
12
+ <meta content="Make beautiful websites regardless of your design experience." name="description" />
13
+ <meta key="viewport"
14
+ content="viewport-fit=cover, width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"
15
+ name="viewport" />
16
+ <link href="/web/assets/ico/favicon-BoqZd694.ico" rel="icon" />
17
+ <script type="module" crossorigin src="/web/assets/js/entry-DhKjPdoJ.js"></script>
18
+ <link rel="modulepreload" crossorigin href="/web/assets/js/vendor-editor-B8hjWfkw.js">
19
+ <link rel="modulepreload" crossorigin href="/web/assets/js/vendor-others-Bv0hrdEA.js">
20
+ <link rel="modulepreload" crossorigin href="/web/assets/js/vendor-ui-utils-5rYIvRjL.js">
21
+ <link rel="modulepreload" crossorigin href="/web/assets/js/vendor-react-ChUmQ3I2.js">
22
+ <link rel="modulepreload" crossorigin href="/web/assets/js/vendor-heroui-CMeNhCFh.js">
23
+ <link rel="modulepreload" crossorigin href="/web/assets/js/hooks-CSKAeqvP.js">
24
+ <link rel="modulepreload" crossorigin href="/web/assets/js/vendor-visual-CdiJEXnN.js">
25
+ <link rel="modulepreload" crossorigin href="/web/assets/js/components-Bp80gYJA.js">
26
+ <link rel="modulepreload" crossorigin href="/web/assets/js/utils-Cj3xTboC.js">
27
+ <link rel="modulepreload" crossorigin href="/web/assets/js/page-dashboard-B6B4ob8B.js">
28
+ <link rel="stylesheet" crossorigin href="/web/assets/css/vendor-editor-CFbL2ovg.css">
29
+ <link rel="stylesheet" crossorigin href="/web/assets/css/vendor-others-ZgkIHsf0.css">
30
+ <link rel="stylesheet" crossorigin href="/web/assets/css/components-ep7vm38G.css">
31
+ <link rel="stylesheet" crossorigin href="/web/assets/css/index-DxLRZkvi.css">
32
+ </head>
33
+
34
+ <body>
35
+ <div id="root"></div>
36
+ </body>
37
+
25
38
  </html>
Binary file
Binary file