@elementspanel/panel 1.0.0 → 1.0.2

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 (130) hide show
  1. package/app.js +3995 -197
  2. package/app.js.map +1 -1
  3. package/package.json +18 -18
  4. package/public/assets/{AppDialog.vue_vue_type_style_index_0_lang-8b56f871.js → AppDialog.vue_vue_type_style_index_0_lang-e6e38e8b.js} +2 -2
  5. package/public/assets/AppDialog.vue_vue_type_style_index_0_lang-e6e38e8b.js.map +1 -0
  6. package/public/assets/CardPanel-59b7da2e.js +2 -0
  7. package/public/assets/CardPanel-59b7da2e.js.map +1 -0
  8. package/public/assets/{DesktopDialog-081410ca.js → DesktopDialog-e4041e4e.js} +2 -2
  9. package/public/assets/DesktopDialog-e4041e4e.js.map +1 -0
  10. package/public/assets/{Loading.vue_vue_type_script_setup_true_lang-9e79de95.js → Loading.vue_vue_type_script_setup_true_lang-1b74dd54.js} +2 -2
  11. package/public/assets/Loading.vue_vue_type_script_setup_true_lang-1b74dd54.js.map +1 -0
  12. package/public/assets/{PageToolbar-5ca1a069.js → PageToolbar-7130e13d.js} +2 -2
  13. package/public/assets/PageToolbar-7130e13d.js.map +1 -0
  14. package/public/assets/{_elements-sdk_pinia-fc8ba898.js → _elements-sdk_pinia-2c56d2c1.js} +3 -3
  15. package/public/assets/{_elements-sdk_pinia-fc8ba898.js.map → _elements-sdk_pinia-2c56d2c1.js.map} +1 -1
  16. package/public/assets/{_elements-sdk_vue-b86b0db6.js → _elements-sdk_vue-80f42d87.js} +2 -2
  17. package/public/assets/_elements-sdk_vue-80f42d87.js.map +1 -0
  18. package/public/assets/{_elements-sdk_vue-i18n-64f8e172.js → _elements-sdk_vue-i18n-4b8a106a.js} +2 -2
  19. package/public/assets/_elements-sdk_vue-i18n-4b8a106a.js.map +1 -0
  20. package/public/assets/{_elements-sdk_vue-router-a62f518d.js → _elements-sdk_vue-router-a171591a.js} +2 -2
  21. package/public/assets/_elements-sdk_vue-router-a171591a.js.map +1 -0
  22. package/public/assets/{const-cfe7ddfe.js → const-93b324c0.js} +2 -2
  23. package/public/assets/const-93b324c0.js.map +1 -0
  24. package/public/assets/{const-01673e6b.js → const-ea30795c.js} +2 -2
  25. package/public/assets/const-ea30795c.js.map +1 -0
  26. package/public/assets/{context-b16af9cc.js → context-cc90576e.js} +2 -2
  27. package/public/assets/{context-b16af9cc.js.map → context-cc90576e.js.map} +1 -1
  28. package/public/assets/{copy-4d64fc1f.js → copy-b106bb10.js} +2 -2
  29. package/public/assets/copy-b106bb10.js.map +1 -0
  30. package/public/assets/{core-b6992169.js → core-d3bfdede.js} +2 -2
  31. package/public/assets/core-d3bfdede.js.map +1 -0
  32. package/public/assets/{desktopNotice-2c886f6b.js → desktopNotice-5ca3448c.js} +2 -2
  33. package/public/assets/desktopNotice-5ca3448c.js.map +1 -0
  34. package/public/assets/dom-ff483262.js.map +1 -1
  35. package/public/assets/{i18n-fe0f1ee7.js → i18n-e810b9fa.js} +2 -2
  36. package/public/assets/i18n-e810b9fa.js.map +1 -0
  37. package/public/assets/index-1da88aed.js +2 -0
  38. package/public/assets/index-1da88aed.js.map +1 -0
  39. package/public/assets/index-e3f35709.js.map +1 -1
  40. package/public/assets/{instance-26cca4c8.js → instance-cc59e210.js} +2 -2
  41. package/public/assets/instance-cc59e210.js.map +1 -0
  42. package/public/assets/lodash-001e4f93.js.map +1 -1
  43. package/public/assets/{nodes-402cdcbd.js → nodes-a56b1b35.js} +2 -2
  44. package/public/assets/nodes-a56b1b35.js.map +1 -0
  45. package/public/assets/protocol-97f7bab7.js.map +1 -1
  46. package/public/assets/randId-56f93901.js +2 -0
  47. package/public/assets/randId-56f93901.js.map +1 -0
  48. package/public/assets/{router-0f7d4714.js → router-eff205cc.js} +2 -2
  49. package/public/assets/router-eff205cc.js.map +1 -0
  50. package/public/assets/safe-87846d89.js.map +1 -1
  51. package/public/assets/{sdk-01dda668.js → sdk-3f2277ab.js} +2 -2
  52. package/public/assets/sdk-3f2277ab.js.map +1 -0
  53. package/public/assets/{shared-f2e37690.js → shared-597ef52b.js} +2 -2
  54. package/public/assets/shared-597ef52b.js.map +1 -0
  55. package/public/assets/{useAppConfigStore-289073ec.js → useAppConfigStore-352fe033.js} +2 -2
  56. package/public/assets/useAppConfigStore-352fe033.js.map +1 -0
  57. package/public/assets/useAppRouters-747b627a.js +2 -0
  58. package/public/assets/useAppRouters-747b627a.js.map +1 -0
  59. package/public/assets/{useAppStateStore-a644582a.js → useAppStateStore-a438b9a6.js} +2 -2
  60. package/public/assets/useAppStateStore-a438b9a6.js.map +1 -0
  61. package/public/assets/{useAppToolsStore-3a911226.js → useAppToolsStore-288c4fe8.js} +2 -2
  62. package/public/assets/useAppToolsStore-288c4fe8.js.map +1 -0
  63. package/public/assets/{useDefineApi-ead2616e.js → useDefineApi-b726db1e.js} +2 -2
  64. package/public/assets/useDefineApi-b726db1e.js.map +1 -0
  65. package/public/assets/{useInstanceActionAvailability-dec16c10.js → useInstanceActionAvailability-16de3001.js} +2 -2
  66. package/public/assets/useInstanceActionAvailability-16de3001.js.map +1 -0
  67. package/public/assets/{useKeyboardEvents-dba9d5ca.js → useKeyboardEvents-6f7f845c.js} +2 -2
  68. package/public/assets/useKeyboardEvents-6f7f845c.js.map +1 -0
  69. package/public/assets/{useMountComponent-dd1fcfea.js → useMountComponent-4043cb4c.js} +2 -2
  70. package/public/assets/useMountComponent-4043cb4c.js.map +1 -0
  71. package/public/assets/{useOverviewChart-119bda3b.js → useOverviewChart-7d758bc4.js} +2 -2
  72. package/public/assets/useOverviewChart-7d758bc4.js.map +1 -0
  73. package/public/assets/{useOverviewInfo-a149d634.js → useOverviewInfo-9ca25ab9.js} +2 -2
  74. package/public/assets/useOverviewInfo-9ca25ab9.js.map +1 -0
  75. package/public/assets/{usePolling-f2f09d27.js → usePolling-1bc2009b.js} +2 -2
  76. package/public/assets/usePolling-1bc2009b.js.map +1 -0
  77. package/public/assets/{useScreen-e3715e1f.js → useScreen-fad29b7c.js} +2 -2
  78. package/public/assets/useScreen-fad29b7c.js.map +1 -0
  79. package/public/assets/{useSocketIo-bc0a62c2.js → useSocketIo-ea3c9a61.js} +2 -2
  80. package/public/assets/useSocketIo-ea3c9a61.js.map +1 -0
  81. package/public/assets/{useThemeSwitch-6ff90248.js → useThemeSwitch-dc70883c.js} +2 -2
  82. package/public/assets/useThemeSwitch-dc70883c.js.map +1 -0
  83. package/public/assets/{vue-2433bd89.js → vue-6b52a630.js} +2 -2
  84. package/public/assets/{vue-2433bd89.js.map → vue-6b52a630.js.map} +1 -1
  85. package/public/assets/{vuetifyModal-49cb95ba.js → vuetifyModal-8382b175.js} +2 -2
  86. package/public/assets/vuetifyModal-8382b175.js.map +1 -0
  87. package/public/index.html +4 -4
  88. package/public/stats.html +2 -2
  89. package/runtime/npm-plugins.cjs +49 -13
  90. package/runtime/plugin-resolution.cjs +27 -9
  91. package/public/assets/AppDialog.vue_vue_type_style_index_0_lang-8b56f871.js.map +0 -1
  92. package/public/assets/CardPanel-a704f146.js +0 -2
  93. package/public/assets/CardPanel-a704f146.js.map +0 -1
  94. package/public/assets/DesktopDialog-081410ca.js.map +0 -1
  95. package/public/assets/Loading.vue_vue_type_script_setup_true_lang-9e79de95.js.map +0 -1
  96. package/public/assets/PageToolbar-5ca1a069.js.map +0 -1
  97. package/public/assets/_elements-sdk_vue-b86b0db6.js.map +0 -1
  98. package/public/assets/_elements-sdk_vue-i18n-64f8e172.js.map +0 -1
  99. package/public/assets/_elements-sdk_vue-router-a62f518d.js.map +0 -1
  100. package/public/assets/const-01673e6b.js.map +0 -1
  101. package/public/assets/const-cfe7ddfe.js.map +0 -1
  102. package/public/assets/copy-4d64fc1f.js.map +0 -1
  103. package/public/assets/core-b6992169.js.map +0 -1
  104. package/public/assets/desktopNotice-2c886f6b.js.map +0 -1
  105. package/public/assets/i18n-fe0f1ee7.js.map +0 -1
  106. package/public/assets/index-76b0df52.js +0 -2
  107. package/public/assets/index-76b0df52.js.map +0 -1
  108. package/public/assets/instance-26cca4c8.js.map +0 -1
  109. package/public/assets/nodes-402cdcbd.js.map +0 -1
  110. package/public/assets/randId-ed0b95b7.js +0 -2
  111. package/public/assets/randId-ed0b95b7.js.map +0 -1
  112. package/public/assets/router-0f7d4714.js.map +0 -1
  113. package/public/assets/sdk-01dda668.js.map +0 -1
  114. package/public/assets/shared-f2e37690.js.map +0 -1
  115. package/public/assets/useAppConfigStore-289073ec.js.map +0 -1
  116. package/public/assets/useAppRouters-5f58db32.js +0 -2
  117. package/public/assets/useAppRouters-5f58db32.js.map +0 -1
  118. package/public/assets/useAppStateStore-a644582a.js.map +0 -1
  119. package/public/assets/useAppToolsStore-3a911226.js.map +0 -1
  120. package/public/assets/useDefineApi-ead2616e.js.map +0 -1
  121. package/public/assets/useInstanceActionAvailability-dec16c10.js.map +0 -1
  122. package/public/assets/useKeyboardEvents-dba9d5ca.js.map +0 -1
  123. package/public/assets/useMountComponent-dd1fcfea.js.map +0 -1
  124. package/public/assets/useOverviewChart-119bda3b.js.map +0 -1
  125. package/public/assets/useOverviewInfo-a149d634.js.map +0 -1
  126. package/public/assets/usePolling-f2f09d27.js.map +0 -1
  127. package/public/assets/useScreen-e3715e1f.js.map +0 -1
  128. package/public/assets/useSocketIo-bc0a62c2.js.map +0 -1
  129. package/public/assets/useThemeSwitch-6ff90248.js.map +0 -1
  130. package/public/assets/vuetifyModal-49cb95ba.js.map +0 -1
@@ -1,2 +1,2 @@
1
- import{u as i}from"./context-b16af9cc.js";import{t}from"./i18n-fe0f1ee7.js";function d(){const o=i("node");if(!o)throw new Error('Panel frontend plugin "node" is not loaded.');return o.api}const a=()=>d().remoteNodeList();function c(o,r,e){if(!o)return t("TXT_CODE_aa373641");const n=r?"":t("TXT_CODE_836addb9");return e?`${e} - ${o} ${n}`:`${o} ${n}`}export{c,a as r};
2
- //# sourceMappingURL=nodes-402cdcbd.js.map
1
+ import{u as i}from"./context-cc90576e.js";import{t}from"./i18n-e810b9fa.js";function d(){const o=i("node");if(!o)throw new Error('Panel frontend plugin "node" is not loaded.');return o.api}const a=()=>d().remoteNodeList();function c(o,r,e){if(!o)return t("TXT_CODE_aa373641");const n=r?"":t("TXT_CODE_836addb9");return e?`${e} - ${o} ${n}`:`${o} ${n}`}export{c,a as r};
2
+ //# sourceMappingURL=nodes-a56b1b35.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nodes-a56b1b35.js","sources":["../../../../plugins/console/panel/src/services/apis/node.ts","../../../../plugins/console/panel/src/tools/nodes.ts"],"sourcesContent":["import { usePluginService } from \"@/plugin/context\";\nimport type { Ref } from \"vue\";\nimport type { NodeStatus } from \"@/types\";\n\nexport interface NodeApiResult<T> {\n isLoading: Ref<boolean>;\n state: Ref<T | undefined>;\n isReady: Ref<boolean>;\n execute: (config?: any) => Promise<Ref<T | undefined>>;\n}\n\nexport interface NodePluginApi {\n remoteNodeList: () => NodeApiResult<NodeStatus[]>;\n editNode: () => NodeApiResult<any>;\n addNode: () => NodeApiResult<any>;\n deleteNode: () => NodeApiResult<any>;\n connectNode: () => NodeApiResult<any>;\n}\n\nfunction resolveNodeApi(): NodePluginApi {\n const node = usePluginService<{ api: NodePluginApi }>(\"node\");\n if (!node) {\n throw new Error('Panel frontend plugin \"node\" is not loaded.');\n }\n return node.api;\n}\n\nexport const remoteNodeList = () => resolveNodeApi().remoteNodeList();\nexport const editNode = () => resolveNodeApi().editNode();\nexport const addNode = () => resolveNodeApi().addNode();\nexport const deleteNode = () => resolveNodeApi().deleteNode();\nexport const connectNode = () => resolveNodeApi().connectNode();\n","import { t } from \"@/lang/i18n\";\n\nexport function computeNodeName(ip: string, available: boolean, remark?: string) {\n if (!ip) return t(\"TXT_CODE_aa373641\");\n const online = available ? \"\" : t(\"TXT_CODE_836addb9\");\n return remark ? `${remark} - ${ip} ${online}` : `${ip} ${online}`;\n}\n"],"names":["resolveNodeApi","node","usePluginService","remoteNodeList","computeNodeName","ip","available","remark","online"],"mappings":"4EAmBA,SAASA,GAAgC,CACjC,MAAAC,EAAOC,EAAyC,MAAM,EAC5D,GAAI,CAACD,EACG,MAAA,IAAI,MAAM,6CAA6C,EAE/D,OAAOA,EAAK,GACd,CAEO,MAAME,EAAiB,IAAMH,EAAe,EAAE,eAAe,ECzBpD,SAAAI,EAAgBC,EAAYC,EAAoBC,EAAiB,CAC/E,GAAI,CAACF,EAAI,OAAO,EAAE,mBAAmB,EACrC,MAAMG,EAASF,EAAY,GAAK,EAAE,mBAAmB,EAC9C,OAAAC,EAAS,GAAGA,CAAM,MAAMF,CAAE,IAAIG,CAAM,GAAK,GAAGH,CAAE,IAAIG,CAAM,EACjE"}
@@ -1 +1 @@
1
- {"version":3,"file":"protocol-97f7bab7.js","sources":["../../../panel/plugins/console/src/tools/string.ts","../../../panel/plugins/console/src/tools/protocol.ts"],"sourcesContent":["export function removeTrail(origin: string, trail: string) {\n if (origin.endsWith(trail)) {\n return origin.slice(0, origin.length - trail.length);\n } else {\n return origin;\n }\n}\n","import { removeTrail } from \"./string\";\n\nexport function parseIp(ip: string) {\n if (ip.toLowerCase() === \"localhost\" || ip === \"127.0.0.1\") {\n return window.location.hostname;\n }\n return ip;\n}\n\nexport type RemoteMappingEntry = {\n from: {\n addr: string;\n prefix: string;\n };\n to: {\n addr: string;\n prefix: string;\n };\n};\n\nexport function mapDaemonAddress(remoteMappings: RemoteMappingEntry[]) {\n const loc = window.location;\n let addr = loc.host;\n if (loc.port === \"\") {\n if (loc.protocol === \"http:\") addr = `${addr}:80`;\n if (loc.protocol === \"https:\") addr = `${addr}:443`;\n }\n const match = remoteMappings.find(\n (entry) =>\n entry.from.addr === addr &&\n removeTrail(entry.from.prefix, \"/\") === removeTrail(loc.pathname, \"/\")\n );\n if (!match) return undefined;\n return match.to;\n}\n\nexport function parseForwardAddress(addr: string, require: \"http\" | \"ws\") {\n // save its protocol header\n //ws://127.0.0.1:25565\n let protocol = `${window.location.protocol}//`;\n const addrProtocolString = addr.toLocaleLowerCase();\n if (require === \"http\") {\n if (addrProtocolString.indexOf(\"ws://\") === 0) protocol = \"http://\";\n else if (addrProtocolString.indexOf(\"wss://\") === 0) protocol = \"https://\";\n else if (addrProtocolString.indexOf(\"http://\") === 0) protocol = \"http://\";\n else if (addrProtocolString.indexOf(\"https://\") === 0) protocol = \"https://\";\n else if (protocol === \"https://\") protocol = \"https://\";\n else protocol = \"http://\";\n }\n if (require === \"ws\") {\n if (addrProtocolString.indexOf(\"http://\") === 0) protocol = \"ws://\";\n else if (addrProtocolString.indexOf(\"https://\") === 0) protocol = \"wss://\";\n else if (addrProtocolString.indexOf(\"ws://\") === 0) protocol = \"ws://\";\n else if (addrProtocolString.indexOf(\"wss://\") === 0) protocol = \"wss://\";\n else if (protocol === \"https://\") protocol = \"wss://\";\n else protocol = \"ws://\";\n }\n\n // remove potentially redundant headers\n addr = deleteWebsocketHeader(deleteHttpHeader(addr));\n\n // port and ip are separated\n let daemonPort = null;\n let onlyAddr = null;\n if (addr.split(\":\").length === 2) {\n onlyAddr = addr.split(\":\")[0];\n daemonPort = parseInt(addr.split(\":\")[1].split(\"/\")[0]);\n if (isNaN(daemonPort))\n throw new Error(`The address ${addr} failed to resolve, the port is incorrect`);\n } else {\n onlyAddr = addr;\n }\n\n let path = null;\n if (addr.indexOf(\"/\") != -1) {\n path = addr.slice(addr.indexOf(\"/\"));\n }\n\n // Reassemble the address based on the separated port and ip\n const checkAddr = onlyAddr.toLocaleLowerCase();\n if (checkAddr.indexOf(\"localhost\") === 0 || checkAddr.indexOf(\"127.0.0.\") === 0) {\n addr = `${protocol}${window.location.hostname}${daemonPort ? `:${daemonPort}` : \"\"}${\n path ?? \"\"\n }`;\n } else {\n addr = `${protocol}${onlyAddr}${daemonPort ? `:${daemonPort}` : \"\"}${path ?? \"\"}`;\n }\n return addr;\n}\n\n// The ws address on the Daemon side is converted into an http address\nexport function daemonWsAddressToHttp(wsAddr = \"\") {\n if (wsAddr.toLocaleLowerCase().indexOf(\"ws://\") === 0) {\n return `http://${wsAddr.slice(5)}`;\n } else if (wsAddr.toLocaleLowerCase().indexOf(\"wss://\") === 0) {\n return `https://${wsAddr.slice(6)}`;\n }\n return wsAddr;\n}\n\nexport function deleteWebsocketHeader(wsAddr: string) {\n if (wsAddr.toLocaleLowerCase().indexOf(\"ws://\") === 0) {\n return `${wsAddr.slice(5)}`;\n } else if (wsAddr.toLocaleLowerCase().indexOf(\"wss://\") === 0) {\n return `${wsAddr.slice(6)}`;\n }\n return wsAddr;\n}\n\nexport function deleteHttpHeader(addr: string) {\n if (addr.toLocaleLowerCase().indexOf(\"http://\") === 0) {\n return `${addr.slice(7)}`;\n } else if (addr.toLocaleLowerCase().indexOf(\"https://\") === 0) {\n return `${addr.slice(8)}`;\n }\n return addr;\n}\n\n// The ws address on the Daemon side is converted to the local ws address\nexport function daemonWsAddressToWs(wsAddr = \"\") {\n if (\n wsAddr.toLocaleLowerCase().indexOf(\"ws://\") !== 0 &&\n wsAddr.toLocaleLowerCase().indexOf(\"wss://\") !== 0\n ) {\n return `ws://${wsAddr}`;\n }\n return wsAddr;\n}\n"],"names":["removeTrail","origin","trail","mapDaemonAddress","remoteMappings","loc","addr","match","entry","parseForwardAddress","require","protocol","addrProtocolString","deleteWebsocketHeader","deleteHttpHeader","daemonPort","onlyAddr","path","checkAddr","wsAddr"],"mappings":"AAAgB,SAAAA,EAAYC,EAAgBC,EAAe,CACrD,OAAAD,EAAO,SAASC,CAAK,EAChBD,EAAO,MAAM,EAAGA,EAAO,OAASC,EAAM,MAAM,EAE5CD,CAEX,CCcO,SAASE,EAAiBC,EAAsC,CACrE,MAAMC,EAAM,OAAO,SACnB,IAAIC,EAAOD,EAAI,KACXA,EAAI,OAAS,KACXA,EAAI,WAAa,UAASC,EAAO,GAAGA,CAAI,OACxCD,EAAI,WAAa,WAAUC,EAAO,GAAGA,CAAI,SAE/C,MAAMC,EAAQH,EAAe,KAC1BI,GACCA,EAAM,KAAK,OAASF,GACpBN,EAAYQ,EAAM,KAAK,OAAQ,GAAG,IAAMR,EAAYK,EAAI,SAAU,GAAG,CAAA,EAEzE,GAAKE,EACL,OAAOA,EAAM,EACf,CAEgB,SAAAE,EAAoBH,EAAcI,EAAwB,CAGxE,IAAIC,EAAW,GAAG,OAAO,SAAS,QAAQ,KACpC,MAAAC,EAAqBN,EAAK,oBAC5BI,IAAY,SACVE,EAAmB,QAAQ,OAAO,IAAM,EAAcD,EAAA,UACjDC,EAAmB,QAAQ,QAAQ,IAAM,EAAcD,EAAA,WACvDC,EAAmB,QAAQ,SAAS,IAAM,EAAcD,EAAA,UACxDC,EAAmB,QAAQ,UAAU,IAAM,GAC3CD,IAAa,WAD4CA,EAAA,WAElDA,EAAA,WAEdD,IAAY,OACVE,EAAmB,QAAQ,SAAS,IAAM,EAAcD,EAAA,QACnDC,EAAmB,QAAQ,UAAU,IAAM,EAAcD,EAAA,SACzDC,EAAmB,QAAQ,OAAO,IAAM,EAAcD,EAAA,QACtDC,EAAmB,QAAQ,QAAQ,IAAM,GACzCD,IAAa,WAD0CA,EAAA,SAEhDA,EAAA,SAIXL,EAAAO,EAAsBC,EAAiBR,CAAI,CAAC,EAGnD,IAAIS,EAAa,KACbC,EAAW,KACf,GAAIV,EAAK,MAAM,GAAG,EAAE,SAAW,GAG7B,GAFAU,EAAWV,EAAK,MAAM,GAAG,EAAE,CAAC,EACfS,EAAA,SAAST,EAAK,MAAM,GAAG,EAAE,CAAC,EAAE,MAAM,GAAG,EAAE,CAAC,CAAC,EAClD,MAAMS,CAAU,EAClB,MAAM,IAAI,MAAM,eAAeT,CAAI,2CAA2C,OAErEU,EAAAV,EAGb,IAAIW,EAAO,KACPX,EAAK,QAAQ,GAAG,GAAK,KACvBW,EAAOX,EAAK,MAAMA,EAAK,QAAQ,GAAG,CAAC,GAI/B,MAAAY,EAAYF,EAAS,oBACvB,OAAAE,EAAU,QAAQ,WAAW,IAAM,GAAKA,EAAU,QAAQ,UAAU,IAAM,EAC5EZ,EAAO,GAAGK,CAAQ,GAAG,OAAO,SAAS,QAAQ,GAAGI,EAAa,IAAIA,CAAU,GAAK,EAAE,GAChFE,GAAQ,EACV,GAEAX,EAAO,GAAGK,CAAQ,GAAGK,CAAQ,GAAGD,EAAa,IAAIA,CAAU,GAAK,EAAE,GAAGE,GAAQ,EAAE,GAE1EX,CACT,CAYO,SAASO,EAAsBM,EAAgB,CACpD,OAAIA,EAAO,kBAAkB,EAAE,QAAQ,OAAO,IAAM,EAC3C,GAAGA,EAAO,MAAM,CAAC,CAAC,GAChBA,EAAO,kBAAA,EAAoB,QAAQ,QAAQ,IAAM,EACnD,GAAGA,EAAO,MAAM,CAAC,CAAC,GAEpBA,CACT,CAEO,SAASL,EAAiBR,EAAc,CAC7C,OAAIA,EAAK,kBAAkB,EAAE,QAAQ,SAAS,IAAM,EAC3C,GAAGA,EAAK,MAAM,CAAC,CAAC,GACdA,EAAK,kBAAA,EAAoB,QAAQ,UAAU,IAAM,EACnD,GAAGA,EAAK,MAAM,CAAC,CAAC,GAElBA,CACT"}
1
+ {"version":3,"file":"protocol-97f7bab7.js","sources":["../../../../plugins/console/panel/src/tools/string.ts","../../../../plugins/console/panel/src/tools/protocol.ts"],"sourcesContent":["export function removeTrail(origin: string, trail: string) {\n if (origin.endsWith(trail)) {\n return origin.slice(0, origin.length - trail.length);\n } else {\n return origin;\n }\n}\n","import { removeTrail } from \"./string\";\n\nexport function parseIp(ip: string) {\n if (ip.toLowerCase() === \"localhost\" || ip === \"127.0.0.1\") {\n return window.location.hostname;\n }\n return ip;\n}\n\nexport type RemoteMappingEntry = {\n from: {\n addr: string;\n prefix: string;\n };\n to: {\n addr: string;\n prefix: string;\n };\n};\n\nexport function mapDaemonAddress(remoteMappings: RemoteMappingEntry[]) {\n const loc = window.location;\n let addr = loc.host;\n if (loc.port === \"\") {\n if (loc.protocol === \"http:\") addr = `${addr}:80`;\n if (loc.protocol === \"https:\") addr = `${addr}:443`;\n }\n const match = remoteMappings.find(\n (entry) =>\n entry.from.addr === addr &&\n removeTrail(entry.from.prefix, \"/\") === removeTrail(loc.pathname, \"/\")\n );\n if (!match) return undefined;\n return match.to;\n}\n\nexport function parseForwardAddress(addr: string, require: \"http\" | \"ws\") {\n // save its protocol header\n //ws://127.0.0.1:25565\n let protocol = `${window.location.protocol}//`;\n const addrProtocolString = addr.toLocaleLowerCase();\n if (require === \"http\") {\n if (addrProtocolString.indexOf(\"ws://\") === 0) protocol = \"http://\";\n else if (addrProtocolString.indexOf(\"wss://\") === 0) protocol = \"https://\";\n else if (addrProtocolString.indexOf(\"http://\") === 0) protocol = \"http://\";\n else if (addrProtocolString.indexOf(\"https://\") === 0) protocol = \"https://\";\n else if (protocol === \"https://\") protocol = \"https://\";\n else protocol = \"http://\";\n }\n if (require === \"ws\") {\n if (addrProtocolString.indexOf(\"http://\") === 0) protocol = \"ws://\";\n else if (addrProtocolString.indexOf(\"https://\") === 0) protocol = \"wss://\";\n else if (addrProtocolString.indexOf(\"ws://\") === 0) protocol = \"ws://\";\n else if (addrProtocolString.indexOf(\"wss://\") === 0) protocol = \"wss://\";\n else if (protocol === \"https://\") protocol = \"wss://\";\n else protocol = \"ws://\";\n }\n\n // remove potentially redundant headers\n addr = deleteWebsocketHeader(deleteHttpHeader(addr));\n\n // port and ip are separated\n let daemonPort = null;\n let onlyAddr = null;\n if (addr.split(\":\").length === 2) {\n onlyAddr = addr.split(\":\")[0];\n daemonPort = parseInt(addr.split(\":\")[1].split(\"/\")[0]);\n if (isNaN(daemonPort))\n throw new Error(`The address ${addr} failed to resolve, the port is incorrect`);\n } else {\n onlyAddr = addr;\n }\n\n let path = null;\n if (addr.indexOf(\"/\") != -1) {\n path = addr.slice(addr.indexOf(\"/\"));\n }\n\n // Reassemble the address based on the separated port and ip\n const checkAddr = onlyAddr.toLocaleLowerCase();\n if (checkAddr.indexOf(\"localhost\") === 0 || checkAddr.indexOf(\"127.0.0.\") === 0) {\n addr = `${protocol}${window.location.hostname}${daemonPort ? `:${daemonPort}` : \"\"}${\n path ?? \"\"\n }`;\n } else {\n addr = `${protocol}${onlyAddr}${daemonPort ? `:${daemonPort}` : \"\"}${path ?? \"\"}`;\n }\n return addr;\n}\n\n// The ws address on the Daemon side is converted into an http address\nexport function daemonWsAddressToHttp(wsAddr = \"\") {\n if (wsAddr.toLocaleLowerCase().indexOf(\"ws://\") === 0) {\n return `http://${wsAddr.slice(5)}`;\n } else if (wsAddr.toLocaleLowerCase().indexOf(\"wss://\") === 0) {\n return `https://${wsAddr.slice(6)}`;\n }\n return wsAddr;\n}\n\nexport function deleteWebsocketHeader(wsAddr: string) {\n if (wsAddr.toLocaleLowerCase().indexOf(\"ws://\") === 0) {\n return `${wsAddr.slice(5)}`;\n } else if (wsAddr.toLocaleLowerCase().indexOf(\"wss://\") === 0) {\n return `${wsAddr.slice(6)}`;\n }\n return wsAddr;\n}\n\nexport function deleteHttpHeader(addr: string) {\n if (addr.toLocaleLowerCase().indexOf(\"http://\") === 0) {\n return `${addr.slice(7)}`;\n } else if (addr.toLocaleLowerCase().indexOf(\"https://\") === 0) {\n return `${addr.slice(8)}`;\n }\n return addr;\n}\n\n// The ws address on the Daemon side is converted to the local ws address\nexport function daemonWsAddressToWs(wsAddr = \"\") {\n if (\n wsAddr.toLocaleLowerCase().indexOf(\"ws://\") !== 0 &&\n wsAddr.toLocaleLowerCase().indexOf(\"wss://\") !== 0\n ) {\n return `ws://${wsAddr}`;\n }\n return wsAddr;\n}\n"],"names":["removeTrail","origin","trail","mapDaemonAddress","remoteMappings","loc","addr","match","entry","parseForwardAddress","require","protocol","addrProtocolString","deleteWebsocketHeader","deleteHttpHeader","daemonPort","onlyAddr","path","checkAddr","wsAddr"],"mappings":"AAAgB,SAAAA,EAAYC,EAAgBC,EAAe,CACrD,OAAAD,EAAO,SAASC,CAAK,EAChBD,EAAO,MAAM,EAAGA,EAAO,OAASC,EAAM,MAAM,EAE5CD,CAEX,CCcO,SAASE,EAAiBC,EAAsC,CACrE,MAAMC,EAAM,OAAO,SACnB,IAAIC,EAAOD,EAAI,KACXA,EAAI,OAAS,KACXA,EAAI,WAAa,UAASC,EAAO,GAAGA,CAAI,OACxCD,EAAI,WAAa,WAAUC,EAAO,GAAGA,CAAI,SAE/C,MAAMC,EAAQH,EAAe,KAC1BI,GACCA,EAAM,KAAK,OAASF,GACpBN,EAAYQ,EAAM,KAAK,OAAQ,GAAG,IAAMR,EAAYK,EAAI,SAAU,GAAG,CAAA,EAEzE,GAAKE,EACL,OAAOA,EAAM,EACf,CAEgB,SAAAE,EAAoBH,EAAcI,EAAwB,CAGxE,IAAIC,EAAW,GAAG,OAAO,SAAS,QAAQ,KACpC,MAAAC,EAAqBN,EAAK,oBAC5BI,IAAY,SACVE,EAAmB,QAAQ,OAAO,IAAM,EAAcD,EAAA,UACjDC,EAAmB,QAAQ,QAAQ,IAAM,EAAcD,EAAA,WACvDC,EAAmB,QAAQ,SAAS,IAAM,EAAcD,EAAA,UACxDC,EAAmB,QAAQ,UAAU,IAAM,GAC3CD,IAAa,WAD4CA,EAAA,WAElDA,EAAA,WAEdD,IAAY,OACVE,EAAmB,QAAQ,SAAS,IAAM,EAAcD,EAAA,QACnDC,EAAmB,QAAQ,UAAU,IAAM,EAAcD,EAAA,SACzDC,EAAmB,QAAQ,OAAO,IAAM,EAAcD,EAAA,QACtDC,EAAmB,QAAQ,QAAQ,IAAM,GACzCD,IAAa,WAD0CA,EAAA,SAEhDA,EAAA,SAIXL,EAAAO,EAAsBC,EAAiBR,CAAI,CAAC,EAGnD,IAAIS,EAAa,KACbC,EAAW,KACf,GAAIV,EAAK,MAAM,GAAG,EAAE,SAAW,GAG7B,GAFAU,EAAWV,EAAK,MAAM,GAAG,EAAE,CAAC,EACfS,EAAA,SAAST,EAAK,MAAM,GAAG,EAAE,CAAC,EAAE,MAAM,GAAG,EAAE,CAAC,CAAC,EAClD,MAAMS,CAAU,EAClB,MAAM,IAAI,MAAM,eAAeT,CAAI,2CAA2C,OAErEU,EAAAV,EAGb,IAAIW,EAAO,KACPX,EAAK,QAAQ,GAAG,GAAK,KACvBW,EAAOX,EAAK,MAAMA,EAAK,QAAQ,GAAG,CAAC,GAI/B,MAAAY,EAAYF,EAAS,oBACvB,OAAAE,EAAU,QAAQ,WAAW,IAAM,GAAKA,EAAU,QAAQ,UAAU,IAAM,EAC5EZ,EAAO,GAAGK,CAAQ,GAAG,OAAO,SAAS,QAAQ,GAAGI,EAAa,IAAIA,CAAU,GAAK,EAAE,GAChFE,GAAQ,EACV,GAEAX,EAAO,GAAGK,CAAQ,GAAGK,CAAQ,GAAGD,EAAa,IAAIA,CAAU,GAAK,EAAE,GAAGE,GAAQ,EAAE,GAE1EX,CACT,CAYO,SAASO,EAAsBM,EAAgB,CACpD,OAAIA,EAAO,kBAAkB,EAAE,QAAQ,OAAO,IAAM,EAC3C,GAAGA,EAAO,MAAM,CAAC,CAAC,GAChBA,EAAO,kBAAA,EAAoB,QAAQ,QAAQ,IAAM,EACnD,GAAGA,EAAO,MAAM,CAAC,CAAC,GAEpBA,CACT,CAEO,SAASL,EAAiBR,EAAc,CAC7C,OAAIA,EAAK,kBAAkB,EAAE,QAAQ,SAAS,IAAM,EAC3C,GAAGA,EAAK,MAAM,CAAC,CAAC,GACdA,EAAK,kBAAA,EAAoB,QAAQ,UAAU,IAAM,EACnD,GAAGA,EAAK,MAAM,CAAC,CAAC,GAElBA,CACT"}
@@ -0,0 +1,2 @@
1
+ let o;const r=new Uint8Array(16);function p(){if(!o&&(o=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!o))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return o(r)}const d=[];for(let n=0;n<256;++n)d.push((n+256).toString(16).slice(1));function y(n,t=0){return(d[n[t+0]]+d[n[t+1]]+d[n[t+2]]+d[n[t+3]]+"-"+d[n[t+4]]+d[n[t+5]]+"-"+d[n[t+6]]+d[n[t+7]]+"-"+d[n[t+8]]+d[n[t+9]]+"-"+d[n[t+10]]+d[n[t+11]]+d[n[t+12]]+d[n[t+13]]+d[n[t+14]]+d[n[t+15]]).toLowerCase()}const m=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),i={randomUUID:m};function g(n,t,c){if(i.randomUUID&&!t&&!n)return i.randomUUID();n=n||{};const e=n.random||(n.rng||p)();if(e[6]=e[6]&15|64,e[8]=e[8]&63|128,t){c=c||0;for(let u=0;u<16;++u)t[c+u]=e[u];return t}return y(e)}function U(){return g()}export{U as g,g as v};
2
+ //# sourceMappingURL=randId-56f93901.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"randId-56f93901.js","sources":["../../node_modules/uuid/dist/esm-browser/rng.js","../../node_modules/uuid/dist/esm-browser/stringify.js","../../node_modules/uuid/dist/esm-browser/native.js","../../node_modules/uuid/dist/esm-browser/v4.js","../../../../plugins/console/panel/src/tools/randId.ts"],"sourcesContent":["// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase();\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n randomUUID\n};","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\n\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n\n options = options || {};\n const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return unsafeStringify(rnds);\n}\n\nexport default v4;","import { v4 } from \"uuid\";\n\nexport function generateRandomString(len = 16) {\n const characters = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n let randomString = \"\";\n\n for (let i = 0; i < len; i++) {\n const randomIndex = Math.floor(Math.random() * characters.length);\n randomString += characters.charAt(randomIndex);\n }\n\n return randomString;\n}\nexport function getRandomId() {\n return v4();\n}\n"],"names":["getRandomValues","rnds8","rng","byteToHex","i","unsafeStringify","arr","offset","randomUUID","native","v4","options","buf","rnds","getRandomId"],"mappings":"AAGA,IAAIA,EACJ,MAAMC,EAAQ,IAAI,WAAW,EAAE,EAChB,SAASC,GAAM,CAE5B,GAAI,CAACF,IAEHA,EAAkB,OAAO,OAAW,KAAe,OAAO,iBAAmB,OAAO,gBAAgB,KAAK,MAAM,EAE3G,CAACA,GACH,MAAM,IAAI,MAAM,0GAA0G,EAI9H,OAAOA,EAAgBC,CAAK,CAC9B,CCXA,MAAME,EAAY,CAAA,EAElB,QAASC,EAAI,EAAGA,EAAI,IAAK,EAAEA,EACzBD,EAAU,MAAMC,EAAI,KAAO,SAAS,EAAE,EAAE,MAAM,CAAC,CAAC,EAG3C,SAASC,EAAgBC,EAAKC,EAAS,EAAG,CAG/C,OAAQJ,EAAUG,EAAIC,EAAS,CAAC,CAAC,EAAIJ,EAAUG,EAAIC,EAAS,CAAC,CAAC,EAAIJ,EAAUG,EAAIC,EAAS,CAAC,CAAC,EAAIJ,EAAUG,EAAIC,EAAS,CAAC,CAAC,EAAI,IAAMJ,EAAUG,EAAIC,EAAS,CAAC,CAAC,EAAIJ,EAAUG,EAAIC,EAAS,CAAC,CAAC,EAAI,IAAMJ,EAAUG,EAAIC,EAAS,CAAC,CAAC,EAAIJ,EAAUG,EAAIC,EAAS,CAAC,CAAC,EAAI,IAAMJ,EAAUG,EAAIC,EAAS,CAAC,CAAC,EAAIJ,EAAUG,EAAIC,EAAS,CAAC,CAAC,EAAI,IAAMJ,EAAUG,EAAIC,EAAS,EAAE,CAAC,EAAIJ,EAAUG,EAAIC,EAAS,EAAE,CAAC,EAAIJ,EAAUG,EAAIC,EAAS,EAAE,CAAC,EAAIJ,EAAUG,EAAIC,EAAS,EAAE,CAAC,EAAIJ,EAAUG,EAAIC,EAAS,EAAE,CAAC,EAAIJ,EAAUG,EAAIC,EAAS,EAAE,CAAC,GAAG,aACvf,CChBA,MAAMC,EAAa,OAAO,OAAW,KAAe,OAAO,YAAc,OAAO,WAAW,KAAK,MAAM,EACvFC,EAAA,CACb,WAAAD,CACF,ECCA,SAASE,EAAGC,EAASC,EAAKL,EAAQ,CAChC,GAAIE,EAAO,YAAc,CAACG,GAAO,CAACD,EAChC,OAAOF,EAAO,aAGhBE,EAAUA,GAAW,GACrB,MAAME,EAAOF,EAAQ,SAAWA,EAAQ,KAAOT,KAK/C,GAHAW,EAAK,CAAC,EAAIA,EAAK,CAAC,EAAI,GAAO,GAC3BA,EAAK,CAAC,EAAIA,EAAK,CAAC,EAAI,GAAO,IAEvBD,EAAK,CACPL,EAASA,GAAU,EAEnB,QAASH,EAAI,EAAGA,EAAI,GAAI,EAAEA,EACxBQ,EAAIL,EAASH,CAAC,EAAIS,EAAKT,CAAC,EAG1B,OAAOQ,CACR,CAED,OAAOP,EAAgBQ,CAAI,CAC7B,CCbO,SAASC,GAAc,CAC5B,OAAOJ,EAAG,CACZ","x_google_ignoreList":[0,1,2,3]}
@@ -1,3 +1,3 @@
1
- import{u as T}from"./useAppStateStore-a644582a.js";import{bW as b,bY as w}from"./vue-2433bd89.js";class P{constructor(){this.element=null,this.timer=null,this.progress=0,this.isDone=!1,this.hideTimeout=null,this.init()}init(){if(!(typeof document>"u")){if(document.getElementById("top-progress-bar")){this.element=document.getElementById("top-progress-bar");return}this.element=document.createElement("div"),this.element.id="top-progress-bar",document.body.appendChild(this.element)}}start(){this.element||this.init(),this.isDone=!1,this.progress=0,this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=null),this.element&&(this.element.classList.add("active"),this.element.style.width="0%",this.element.style.opacity="1"),this.inc()}inc(){if(this.isDone)return;this.timer&&clearTimeout(this.timer);let s=0;this.progress>=0&&this.progress<.2?s=.1:this.progress>=.2&&this.progress<.5?s=.04:this.progress>=.5&&this.progress<.8?s=.02:this.progress>=.8&&this.progress<.99&&(s=.005),this.progress+=s,this.progress>.994&&(this.progress=.994),this.element&&(this.element.style.width=`${this.progress*100}%`),this.timer=window.setTimeout(()=>{this.inc()},200)}done(){this.isDone=!0,this.timer&&(clearTimeout(this.timer),this.timer=null),this.element&&(this.element.style.width="100%",this.hideTimeout=window.setTimeout(()=>{this.element&&(this.element.style.opacity="0",this.element.classList.remove("active"),setTimeout(()=>{this.element&&!this.element.classList.contains("active")&&(this.element.style.width="0%")},400))},1e3))}}const u=new P;var v=(e=>(e[e.ADMIN=10]="ADMIN",e[e.USER=1]="USER",e[e.GUEST=0]="GUEST",e))(v||{});const I=[],h=b({history:w(),routes:I});h.beforeEach(async(e,s,t)=>{var m,a,l;u.start();const{state:o,updateUserInfo:c,isAdmin:f,authEnabled:p}=T(),d=p.value,i=((m=o.userInfo)==null?void 0:m.permission)??0,n=Number(e.meta.permission??0),g=h.currentRoute.value.path.trim(),r=e.path.trim();if(console.info("Router Changed:",g,"->",r,`
1
+ import{u as T}from"./useAppStateStore-a438b9a6.js";import{bW as b,bY as w}from"./vue-6b52a630.js";class P{constructor(){this.element=null,this.timer=null,this.progress=0,this.isDone=!1,this.hideTimeout=null,this.init()}init(){if(!(typeof document>"u")){if(document.getElementById("top-progress-bar")){this.element=document.getElementById("top-progress-bar");return}this.element=document.createElement("div"),this.element.id="top-progress-bar",document.body.appendChild(this.element)}}start(){this.element||this.init(),this.isDone=!1,this.progress=0,this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=null),this.element&&(this.element.classList.add("active"),this.element.style.width="0%",this.element.style.opacity="1"),this.inc()}inc(){if(this.isDone)return;this.timer&&clearTimeout(this.timer);let s=0;this.progress>=0&&this.progress<.2?s=.1:this.progress>=.2&&this.progress<.5?s=.04:this.progress>=.5&&this.progress<.8?s=.02:this.progress>=.8&&this.progress<.99&&(s=.005),this.progress+=s,this.progress>.994&&(this.progress=.994),this.element&&(this.element.style.width=`${this.progress*100}%`),this.timer=window.setTimeout(()=>{this.inc()},200)}done(){this.isDone=!0,this.timer&&(clearTimeout(this.timer),this.timer=null),this.element&&(this.element.style.width="100%",this.hideTimeout=window.setTimeout(()=>{this.element&&(this.element.style.opacity="0",this.element.classList.remove("active"),setTimeout(()=>{this.element&&!this.element.classList.contains("active")&&(this.element.style.width="0%")},400))},1e3))}}const u=new P;var v=(e=>(e[e.ADMIN=10]="ADMIN",e[e.USER=1]="USER",e[e.GUEST=0]="GUEST",e))(v||{});const I=[],h=b({history:w(),routes:I});h.beforeEach(async(e,s,t)=>{var m,a,l;u.start();const{state:o,updateUserInfo:c,isAdmin:f,authEnabled:p}=T(),d=p.value,i=((m=o.userInfo)==null?void 0:m.permission)??0,n=Number(e.meta.permission??0),g=h.currentRoute.value.path.trim(),r=e.path.trim();if(console.info("Router Changed:",g,"->",r,`
2
2
  MyPermission:`,i,"toPagePermission:",n),(a=e.meta)!=null&&a.redirect){if(typeof e.meta.redirect=="function"){const y=o.userInfo;return t(e.meta.redirect(y,e,s))}return t(e.meta.redirect)}if(r==="/sso/callback")try{return await c(),t(f.value?"/":"/customer")}catch{return t("/login")}if(r.startsWith("/sso/")||e.meta.public===!0||["/login","/404"].includes(r))return t();if(!e.name)return t("/404");if(d&&!((l=o.userInfo)!=null&&l.token))return t("/login");if(n>i&&i!==10)return t("/customer");n<=i?t():t("/404")});h.afterEach(()=>{u.done()});export{v as R,h as r};
3
- //# sourceMappingURL=router-0f7d4714.js.map
3
+ //# sourceMappingURL=router-eff205cc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router-eff205cc.js","sources":["../../../../plugins/console/panel/src/services/TopProgressBar.ts","../../../../plugins/console/panel/src/config/router.ts"],"sourcesContent":["class TopProgressBar {\n private element: HTMLElement | null = null;\n private timer: number | null = null;\n private progress: number = 0;\n private isDone: boolean = false;\n private hideTimeout: number | null = null;\n\n constructor() {\n this.init();\n }\n\n private init() {\n if (typeof document === \"undefined\") return;\n\n if (document.getElementById(\"top-progress-bar\")) {\n this.element = document.getElementById(\"top-progress-bar\");\n return;\n }\n\n this.element = document.createElement(\"div\");\n this.element.id = \"top-progress-bar\";\n document.body.appendChild(this.element);\n }\n\n start() {\n if (!this.element) this.init();\n\n this.isDone = false;\n this.progress = 0;\n\n if (this.hideTimeout) {\n clearTimeout(this.hideTimeout);\n this.hideTimeout = null;\n }\n\n if (this.element) {\n this.element.classList.add(\"active\");\n this.element.style.width = \"0%\";\n this.element.style.opacity = \"1\";\n }\n\n this.inc();\n }\n\n private inc() {\n if (this.isDone) return;\n\n if (this.timer) {\n clearTimeout(this.timer);\n }\n\n let amount = 0;\n if (this.progress >= 0 && this.progress < 0.2) {\n amount = 0.1;\n } else if (this.progress >= 0.2 && this.progress < 0.5) {\n amount = 0.04;\n } else if (this.progress >= 0.5 && this.progress < 0.8) {\n amount = 0.02;\n } else if (this.progress >= 0.8 && this.progress < 0.99) {\n amount = 0.005;\n }\n\n this.progress += amount;\n\n if (this.progress > 0.994) {\n this.progress = 0.994;\n }\n\n if (this.element) {\n this.element.style.width = `${this.progress * 100}%`;\n }\n\n this.timer = window.setTimeout(() => {\n this.inc();\n }, 200);\n }\n\n done() {\n this.isDone = true;\n if (this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n\n if (this.element) {\n this.element.style.width = \"100%\";\n\n this.hideTimeout = window.setTimeout(() => {\n if (this.element) {\n this.element.style.opacity = \"0\";\n this.element.classList.remove(\"active\");\n\n setTimeout(() => {\n if (this.element && !this.element.classList.contains(\"active\")) {\n this.element.style.width = \"0%\";\n }\n }, 400);\n }\n }, 1000);\n }\n }\n}\n\nexport const topProgressBar = new TopProgressBar();\n","import { topProgressBar } from \"@/services/TopProgressBar\";\nimport { useAppStateStore } from \"@/stores/useAppStateStore\";\nimport type { LoginUserInfo } from \"@/types/user\";\nimport type { Component } from \"vue\";\nimport {\n createRouter,\n createWebHashHistory,\n type RouteLocationNormalized,\n type RouteRecordRaw\n} from \"vue-router\";\n\nexport interface RouterMetaInfo {\n icon?: Component | string;\n mainMenu?: boolean;\n permission?: number;\n redirect?:\n | string\n | ((userInfo: LoginUserInfo | undefined,\n to: RouteLocationNormalized,\n from: RouteLocationNormalized\n ) => string);\n customClass?: string[];\n condition?: () => boolean;\n public?: boolean;\n immersive?: boolean;\n breadcrumbs?: Array<{\n name: string;\n path: string;\n mainMenu?: boolean;\n permission: number;\n }>;\n}\n\nexport interface RouterConfig {\n path: string;\n name: string;\n component?: any;\n children?: RouterConfig[];\n meta: RouterMetaInfo;\n redirect?:\n | string\n | ((\n userInfo: LoginUserInfo,\n to: RouteLocationNormalized,\n from: RouteLocationNormalized\n ) => string);\n}\n\nexport enum ROLE {\n // eslint-disable-next-line no-unused-vars\n ADMIN = 10,\n // eslint-disable-next-line no-unused-vars\n USER = 1,\n // eslint-disable-next-line no-unused-vars\n GUEST = 0\n}\n\n// The base routes belong to the `console` plugin. Keeping the router itself in\n// core lets every plugin register routes before the Vue app is mounted.\nconst originRouterConfig: RouterConfig[] = [];\n\nconst router = createRouter({\n history: createWebHashHistory(),\n routes: originRouterConfig as RouteRecordRaw[]\n});\n\nrouter.beforeEach(async (to, from, next) => {\n topProgressBar.start();\n const { state, updateUserInfo, isAdmin, authEnabled } = useAppStateStore();\n\n // Without the user plugin every visitor is an anonymous administrator.\n const requiresLogin = authEnabled.value;\n const userPermission = state.userInfo?.permission ?? 0;\n const toPagePermission = Number(to.meta.permission ?? 0);\n const fromRoutePath = router.currentRoute.value.path.trim();\n const toRoutePath = to.path.trim();\n console.info(\n \"Router Changed:\",\n fromRoutePath,\n \"->\",\n toRoutePath,\n \"\\nMyPermission:\",\n userPermission,\n \"toPagePermission:\",\n toPagePermission\n );\n\n if (to.meta?.redirect) {\n if (typeof to.meta.redirect === \"function\") {\n const userInfo = state.userInfo;\n return next(to.meta.redirect(userInfo, to, from));\n }\n return next(to.meta.redirect as string);\n }\n\n if (toRoutePath === \"/sso/callback\") {\n try {\n await updateUserInfo();\n return next(isAdmin.value ? \"/\" : \"/customer\");\n } catch {\n return next(\"/login\");\n }\n }\n\n if (\n toRoutePath.startsWith(\"/sso/\") ||\n to.meta.public === true ||\n [\"/login\", \"/404\"].includes(toRoutePath)\n ) {\n return next();\n }\n\n if (!to.name) return next(\"/404\");\n\n if (requiresLogin && !state.userInfo?.token) return next(\"/login\");\n\n if (toPagePermission > userPermission && userPermission !== ROLE.ADMIN) {\n return next(\"/customer\");\n }\n\n if (toPagePermission <= userPermission) {\n next();\n } else {\n next(\"/404\");\n }\n});\n\nrouter.afterEach(() => {\n topProgressBar.done();\n});\n\nexport { originRouterConfig, router };\n"],"names":["TopProgressBar","amount","topProgressBar","ROLE","originRouterConfig","router","createRouter","createWebHashHistory","to","from","next","state","updateUserInfo","isAdmin","authEnabled","useAppStateStore","requiresLogin","userPermission","_a","toPagePermission","fromRoutePath","toRoutePath","_b","userInfo","_c"],"mappings":"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"}