@elementspanel/panel 0.0.0-stage → 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.
- package/LICENSE +201 -0
- package/README.md +6 -2
- package/app.js +2640 -0
- package/app.js.map +1 -0
- package/bin/panel.cjs +2 -0
- package/package.json +107 -4
- package/public/assets/AppDialog.vue_vue_type_style_index_0_lang-8b56f871.js +2 -0
- package/public/assets/AppDialog.vue_vue_type_style_index_0_lang-8b56f871.js.map +1 -0
- package/public/assets/CardPanel-a704f146.js +2 -0
- package/public/assets/CardPanel-a704f146.js.map +1 -0
- package/public/assets/DesktopDialog-081410ca.js +2 -0
- package/public/assets/DesktopDialog-081410ca.js.map +1 -0
- package/public/assets/Loading.vue_vue_type_script_setup_true_lang-9e79de95.js +2 -0
- package/public/assets/Loading.vue_vue_type_script_setup_true_lang-9e79de95.js.map +1 -0
- package/public/assets/PageToolbar-5ca1a069.js +2 -0
- package/public/assets/PageToolbar-5ca1a069.js.map +1 -0
- package/public/assets/_elements-sdk_cordis-b0b88a2c.js +2 -0
- package/public/assets/_elements-sdk_cordis-b0b88a2c.js.map +1 -0
- package/public/assets/_elements-sdk_cordis-e3bebc89.js +9 -0
- package/public/assets/_elements-sdk_cordis-e3bebc89.js.map +1 -0
- package/public/assets/_elements-sdk_cosmokit-e4842f5c.js +2 -0
- package/public/assets/_elements-sdk_cosmokit-e4842f5c.js.map +1 -0
- package/public/assets/_elements-sdk_pinia-fc8ba898.js +6 -0
- package/public/assets/_elements-sdk_pinia-fc8ba898.js.map +1 -0
- package/public/assets/_elements-sdk_vue-b86b0db6.js +2 -0
- package/public/assets/_elements-sdk_vue-b86b0db6.js.map +1 -0
- package/public/assets/_elements-sdk_vue-i18n-64f8e172.js +2 -0
- package/public/assets/_elements-sdk_vue-i18n-64f8e172.js.map +1 -0
- package/public/assets/_elements-sdk_vue-router-a62f518d.js +2 -0
- package/public/assets/_elements-sdk_vue-router-a62f518d.js.map +1 -0
- package/public/assets/_plugin-vue_export-helper-c27b6911.js +2 -0
- package/public/assets/_plugin-vue_export-helper-c27b6911.js.map +1 -0
- package/public/assets/chartjs-1e331dfb.js +19 -0
- package/public/assets/chartjs-1e331dfb.js.map +1 -0
- package/public/assets/codemirror-1b74112a.js +29 -0
- package/public/assets/codemirror-1b74112a.js.map +1 -0
- package/public/assets/const-01673e6b.js +38 -0
- package/public/assets/const-01673e6b.js.map +1 -0
- package/public/assets/const-cfe7ddfe.js +2 -0
- package/public/assets/const-cfe7ddfe.js.map +1 -0
- package/public/assets/context-b16af9cc.js +2 -0
- package/public/assets/context-b16af9cc.js.map +1 -0
- package/public/assets/copy-4d64fc1f.js +2 -0
- package/public/assets/copy-4d64fc1f.js.map +1 -0
- package/public/assets/core-b6992169.js +2 -0
- package/public/assets/core-b6992169.js.map +1 -0
- package/public/assets/daemon_connection_error-9eb654cc.png +0 -0
- package/public/assets/dayjs.min-25183c0a.js +2 -0
- package/public/assets/dayjs.min-25183c0a.js.map +1 -0
- package/public/assets/desktopNotice-2c886f6b.js +2 -0
- package/public/assets/desktopNotice-2c886f6b.js.map +1 -0
- package/public/assets/dom-ff483262.js +2 -0
- package/public/assets/dom-ff483262.js.map +1 -0
- package/public/assets/htmlparser2-bcb8f9db.js +3 -0
- package/public/assets/htmlparser2-bcb8f9db.js.map +1 -0
- package/public/assets/i18n-fe0f1ee7.js +2 -0
- package/public/assets/i18n-fe0f1ee7.js.map +1 -0
- package/public/assets/index-76b0df52.js +2 -0
- package/public/assets/index-76b0df52.js.map +1 -0
- package/public/assets/index-c684efbd.js +2 -0
- package/public/assets/index-c684efbd.js.map +1 -0
- package/public/assets/index-e3f35709.js +2 -0
- package/public/assets/index-e3f35709.js.map +1 -0
- package/public/assets/instance-26cca4c8.js +2 -0
- package/public/assets/instance-26cca4c8.js.map +1 -0
- package/public/assets/instance_contract-0115efe5.js +2 -0
- package/public/assets/instance_contract-0115efe5.js.map +1 -0
- package/public/assets/lodash-001e4f93.js +28 -0
- package/public/assets/lodash-001e4f93.js.map +1 -0
- package/public/assets/logo-9e2a668b.svg +15 -0
- package/public/assets/logo_b-35ccadda.svg +8 -0
- package/public/assets/materialdesignicons-webfont-0b183104.eot +0 -0
- package/public/assets/materialdesignicons-webfont-61e8aba5.ttf +0 -0
- package/public/assets/materialdesignicons-webfont-662fefa8.woff2 +0 -0
- package/public/assets/materialdesignicons-webfont-a5928a0d.woff +0 -0
- package/public/assets/msl-logo-699c8076.png +0 -0
- package/public/assets/nodes-402cdcbd.js +2 -0
- package/public/assets/nodes-402cdcbd.js.map +1 -0
- package/public/assets/plugin_contract-691cd37a.js +2 -0
- package/public/assets/plugin_contract-691cd37a.js.map +1 -0
- package/public/assets/preload-helper-a4192956.js +2 -0
- package/public/assets/preload-helper-a4192956.js.map +1 -0
- package/public/assets/protocol-97f7bab7.js +2 -0
- package/public/assets/protocol-97f7bab7.js.map +1 -0
- package/public/assets/randId-ed0b95b7.js +2 -0
- package/public/assets/randId-ed0b95b7.js.map +1 -0
- package/public/assets/router-0f7d4714.js +3 -0
- package/public/assets/router-0f7d4714.js.map +1 -0
- package/public/assets/safe-87846d89.js +89 -0
- package/public/assets/safe-87846d89.js.map +1 -0
- package/public/assets/sdk-01dda668.js +2 -0
- package/public/assets/sdk-01dda668.js.map +1 -0
- package/public/assets/shared-f2e37690.js +2 -0
- package/public/assets/shared-f2e37690.js.map +1 -0
- package/public/assets/useAppConfigStore-289073ec.js +2 -0
- package/public/assets/useAppConfigStore-289073ec.js.map +1 -0
- package/public/assets/useAppRouters-5f58db32.js +2 -0
- package/public/assets/useAppRouters-5f58db32.js.map +1 -0
- package/public/assets/useAppStateStore-a644582a.js +2 -0
- package/public/assets/useAppStateStore-a644582a.js.map +1 -0
- package/public/assets/useAppToolsStore-3a911226.js +2 -0
- package/public/assets/useAppToolsStore-3a911226.js.map +1 -0
- package/public/assets/useDefineApi-ead2616e.js +7 -0
- package/public/assets/useDefineApi-ead2616e.js.map +1 -0
- package/public/assets/useInstanceActionAvailability-dec16c10.js +2 -0
- package/public/assets/useInstanceActionAvailability-dec16c10.js.map +1 -0
- package/public/assets/useKeyboardEvents-dba9d5ca.js +2 -0
- package/public/assets/useKeyboardEvents-dba9d5ca.js.map +1 -0
- package/public/assets/useMountComponent-dd1fcfea.js +2 -0
- package/public/assets/useMountComponent-dd1fcfea.js.map +1 -0
- package/public/assets/useOverviewChart-119bda3b.js +2 -0
- package/public/assets/useOverviewChart-119bda3b.js.map +1 -0
- package/public/assets/useOverviewInfo-a149d634.js +2 -0
- package/public/assets/useOverviewInfo-a149d634.js.map +1 -0
- package/public/assets/usePolling-f2f09d27.js +2 -0
- package/public/assets/usePolling-f2f09d27.js.map +1 -0
- package/public/assets/useScreen-e3715e1f.js +2 -0
- package/public/assets/useScreen-e3715e1f.js.map +1 -0
- package/public/assets/useSocketIo-bc0a62c2.js +2 -0
- package/public/assets/useSocketIo-bc0a62c2.js.map +1 -0
- package/public/assets/useThemeSwitch-6ff90248.js +2 -0
- package/public/assets/useThemeSwitch-6ff90248.js.map +1 -0
- package/public/assets/vue-2433bd89.js +64 -0
- package/public/assets/vue-2433bd89.js.map +1 -0
- package/public/assets/vue-4c6a2976.css +1 -0
- package/public/assets/vuetifyModal-49cb95ba.js +2 -0
- package/public/assets/vuetifyModal-49cb95ba.js.map +1 -0
- package/public/assets/xterm-62ba073f.js +67 -0
- package/public/assets/xterm-62ba073f.js.map +1 -0
- package/public/favicon.ico +0 -0
- package/public/index.html +207 -0
- package/public/robots.txt +2 -0
- package/public/stats.html +4950 -0
- package/runtime/cli.cjs +305 -0
- package/runtime/daemon-tools.cjs +113 -0
- package/runtime/npm-plugins.cjs +176 -0
- package/runtime/plugin-resolution.cjs +123 -0
- package/runtime/shared-dependencies.cjs +35 -0
- package/runtime/worker.cjs +25 -0
package/app.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app.js","mappings":"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","sources":["webpack://elements-panel/../common/src/array.ts","webpack://elements-panel/../common/src/docker_utils.ts","webpack://elements-panel/../common/src/global_variable.ts","webpack://elements-panel/../common/src/index.ts","webpack://elements-panel/../common/src/instance_stream.ts","webpack://elements-panel/../common/src/mcping.ts","webpack://elements-panel/../common/src/plugin_contract.ts","webpack://elements-panel/../common/src/plugin_lifecycle.ts","webpack://elements-panel/../common/src/plugin_manifest.ts","webpack://elements-panel/../common/src/plugin_npm.ts","webpack://elements-panel/../common/src/plugin_overrides.ts","webpack://elements-panel/../common/src/plugin_revision.ts","webpack://elements-panel/../common/src/process_tools.ts","webpack://elements-panel/../common/src/query_wrapper.ts","webpack://elements-panel/../common/src/runtime_paths.ts","webpack://elements-panel/../common/src/string_utils.ts","webpack://elements-panel/../common/src/system_info.ts","webpack://elements-panel/../common/src/system_storage.ts","webpack://elements-panel/../common/src/typecheck.ts","webpack://elements-panel/./src/app/plugin/context.ts","webpack://elements-panel/./src/app/plugin/loader.ts","webpack://elements-panel/external commonjs \"crypto\"","webpack://elements-panel/external commonjs \"events\"","webpack://elements-panel/external commonjs \"fs-extra\"","webpack://elements-panel/external commonjs \"iconv-lite\"","webpack://elements-panel/external commonjs \"os-utils\"","webpack://elements-panel/external commonjs2 \"cordis\"","webpack://elements-panel/external node-commonjs \"child_process\"","webpack://elements-panel/external node-commonjs \"fs\"","webpack://elements-panel/external node-commonjs \"module\"","webpack://elements-panel/external node-commonjs \"net\"","webpack://elements-panel/external node-commonjs \"node:crypto\"","webpack://elements-panel/external node-commonjs \"node:fs\"","webpack://elements-panel/external node-commonjs \"node:os\"","webpack://elements-panel/external node-commonjs \"node:path\"","webpack://elements-panel/external node-commonjs \"os\"","webpack://elements-panel/external node-commonjs \"path\"","webpack://elements-panel/external node-commonjs \"process\"","webpack://elements-panel/external node-commonjs \"url\"","webpack://elements-panel/webpack/bootstrap","webpack://elements-panel/./src/app.ts"],"sourcesContent":["export function arrayUnique<T>(arr: T[], felidName?: string): T[] {\n if (!felidName) return Array.from(new Set(arr));\n const map = new Map();\n return arr.filter((v: any) => !map.has(v[felidName]) && map.set(v[felidName], v));\n}\n","/**\n * Normalizes Docker platform architecture names to standard format\n * @param architecture The architecture string from Docker manifest\n * @returns Normalized architecture string (amd64, arm64, arm, or original if not recognized)\n */\nexport function normalizeDockerArchitecture(architecture: string | undefined): string {\n if (!architecture) {\n return \"amd64\"; // default fallback\n }\n\n // Return original if not one of the standard architectures\n return architecture;\n}\n\n/**\n * Normalizes Docker platform OS name\n * @param os The OS string from Docker manifest\n * @returns Normalized OS string (defaults to \"linux\" if not provided)\n */\nexport function normalizeDockerOS(os: string | undefined): string {\n return os || \"linux\";\n}\n\n/**\n * Normalizes a Docker platform from manifest format to standard platform string\n * @param platform Platform object from Docker manifest with os and architecture\n * @returns Normalized platform string in format \"os/arch\" (e.g., \"linux/amd64\")\n */\nexport function normalizeDockerPlatform(platform: { os?: string; architecture?: string }): string {\n const os = normalizeDockerOS(platform.os);\n const arch = normalizeDockerArchitecture(platform.architecture);\n return `${os}/${arch}`;\n}\n","export default class GlobalVariable {\n public static readonly map = new Map<string, any>();\n\n public static set(k: string, v: any) {\n GlobalVariable.map.set(k, v);\n }\n\n public static get(k: string, def?: any) {\n if (GlobalVariable.map.has(k)) {\n return GlobalVariable.map.get(k);\n } else {\n return def;\n }\n }\n\n public static del(k: string) {\n return GlobalVariable.map.delete(k);\n }\n}\n","import GlobalVariable from \"./global_variable\";\nimport InstanceStreamListener from \"./instance_stream\";\nimport StorageSubsystem from \"./system_storage\";\n\nimport MCServerStatus from \"./mcping\";\n\nexport { ProcessWrapper, killProcess } from \"./process_tools\";\nexport {\n IDataSource,\n LocalFileSource,\n MySqlSource,\n QueryMapWrapper,\n QueryWrapper\n} from \"./query_wrapper\";\nexport { systemInfo } from \"./system_info\";\n\nexport {\n configureEntityParams,\n isEmpty,\n supposeValue,\n toBoolean,\n toNumber,\n toText\n} from \"./typecheck\";\n\nexport { arrayUnique } from \"./array\";\nexport * from \"./plugin_contract\";\nexport * from \"./plugin_overrides\";\nexport * from \"./plugin_lifecycle\";\nexport * from \"./plugin_revision\";\nexport * from \"./runtime_paths\";\n\nexport {\n discoverPlugins,\n discoverPluginsFromRoots,\n createFrontendPluginMetadata,\n readPluginManifest,\n resolvePluginEntry,\n sortPlugins\n} from \"./plugin_manifest\";\nexport type {\n DiscoveredPlugin,\n DiscoverPluginsOptions,\n FrontendPluginMetadata,\n PluginDiscoveryRoot,\n PluginManifest\n} from \"./plugin_manifest\";\n\nexport {\n currentPackageRoot,\n currentProjectRoot,\n installNpmPlugin,\n listNpmPlugins,\n npmPluginRoots,\n uninstallNpmPlugin\n} from \"./plugin_npm\";\nexport type {\n InstallNpmPluginOptions,\n NpmPluginRecord,\n NpmPluginRoots,\n NpmPluginSide\n} from \"./plugin_npm\";\n\nexport { removeTrail } from \"./string_utils\";\n\nexport {\n normalizeDockerArchitecture,\n normalizeDockerOS,\n normalizeDockerPlatform\n} from \"./docker_utils\";\n\nexport { GlobalVariable, InstanceStreamListener, MCServerStatus, StorageSubsystem };\n","// Only the transport operations used by forwarding belong in this shared API.\n// Keep the concrete socket type local to each consumer's Socket.IO installation.\nexport interface ForwardSocket {\n id: string;\n connected: boolean;\n once(event: \"disconnect\", listener: () => void): unknown;\n off(event: \"disconnect\", listener: () => void): unknown;\n emit(event: string, data: any): unknown;\n}\n\n// Application instance data stream forwarding adapter\nexport default class InstanceStreamListener<S extends ForwardSocket = ForwardSocket> {\n public readonly listenMap = new Map<string, S[]>();\n private readonly disconnectHandlers = new Map<S, () => void>();\n\n public requestForward(socket: S, instanceUuid: string) {\n const sockets = this.listenMap.get(instanceUuid) ?? [];\n if (sockets.some((listener) => listener.id === socket.id)) return;\n sockets.push(socket);\n this.listenMap.set(instanceUuid, sockets);\n if (!this.disconnectHandlers.has(socket)) {\n const disconnect = () => {\n for (const uuid of this.listenMap.keys()) this.cannelForward(socket, uuid);\n };\n this.disconnectHandlers.set(socket, disconnect);\n socket.once(\"disconnect\", disconnect);\n }\n }\n\n public cannelForward(socket: S, instanceUuid: string) {\n const remaining = this.listenMap\n .get(instanceUuid)\n ?.filter((listener) => listener.id !== socket.id);\n if (remaining?.length) this.listenMap.set(instanceUuid, remaining);\n else this.listenMap.delete(instanceUuid);\n if (![...this.listenMap.values()].some((sockets) => sockets.includes(socket))) {\n const disconnect = this.disconnectHandlers.get(socket);\n if (disconnect) socket.off(\"disconnect\", disconnect);\n this.disconnectHandlers.delete(socket);\n }\n }\n\n public forward(instanceUuid: string, data: any) {\n this.forwardViaCallback(instanceUuid, (socket) => socket.emit(\"instance/stdout\", data));\n }\n\n public forwardViaCallback(instanceUuid: string, callback: (socket: S) => void) {\n for (const socket of this.listenMap.get(instanceUuid) ?? []) {\n if (socket.connected) callback(socket);\n else this.cannelForward(socket, instanceUuid);\n }\n }\n\n public hasListenInstance(instanceUuid: string) {\n return this.listenMap.get(instanceUuid)?.some((socket) => socket.connected) ?? false;\n }\n}\n","import net from \"net\";\n\nexport interface MinecraftPingResponse {\n host: string;\n port: number;\n online: boolean;\n version: string;\n motd: string;\n current_players: number;\n max_players: number;\n latency: number;\n}\n\nexport default class PingMinecraftServer {\n public status: MinecraftPingResponse;\n public client?: net.Socket;\n private pending?: Promise<MinecraftPingResponse>;\n\n constructor(\n public port: number,\n public host: string\n ) {\n this.status = this.offlineStatus();\n }\n\n private offlineStatus(): MinecraftPingResponse {\n return {\n online: false,\n host: this.host,\n port: this.port,\n version: \"\",\n motd: \"\",\n current_players: 0,\n max_players: 0,\n latency: 0\n };\n }\n\n getStatus(): Promise<MinecraftPingResponse> {\n if (this.pending) return this.pending;\n this.status = this.offlineStatus();\n this.pending = new Promise<MinecraftPingResponse>((resolve, reject) => {\n const startedAt = Date.now();\n const client = net.connect({ host: this.host, port: this.port });\n this.client = client;\n let received = Buffer.alloc(0);\n let settled = false;\n const finish = (error?: Error) => {\n if (settled) return;\n settled = true;\n clearTimeout(timeout);\n client.destroy();\n this.client = undefined;\n if (error) reject(error);\n else resolve(this.status);\n };\n const timeout = setTimeout(\n () => finish(new Error(\"Minecraft status request timed out\")),\n 15000\n );\n client.once(\"connect\", () => client.write(Buffer.from([0xfe, 0x01])));\n client.on(\"data\", (chunk: Buffer) => {\n if (settled) return;\n try {\n received = Buffer.concat([received, chunk]);\n // Legacy status packets contain an unsigned UTF-16 character count.\n if (received.length > 3 + 0xffff * 2)\n throw new Error(\"Minecraft status response is too large\");\n if (received.length < 3) return;\n if (received[0] !== 0xff) throw new Error(\"Invalid Minecraft status packet\");\n const length = 3 + received.readUInt16BE(1) * 2;\n if (received.length < length) return;\n const fields = Buffer.from(received.subarray(3, length))\n .swap16()\n .toString(\"utf16le\")\n .split(\"\\0\");\n if (\n fields.length !== 6 ||\n fields[0] !== \"§1\" ||\n !/^\\d+$/.test(fields[4]) ||\n !/^\\d+$/.test(fields[5])\n ) {\n throw new Error(\"Invalid Minecraft status response\");\n }\n const currentPlayers = Number(fields[4]);\n const maxPlayers = Number(fields[5]);\n if (!Number.isSafeInteger(currentPlayers) || !Number.isSafeInteger(maxPlayers)) {\n throw new Error(\"Invalid Minecraft player count\");\n }\n this.status = {\n host: this.host,\n port: this.port,\n online: true,\n version: fields[2],\n motd: fields[3],\n current_players: currentPlayers,\n max_players: maxPlayers,\n latency: Date.now() - startedAt\n };\n finish();\n } catch (error) {\n finish(error instanceof Error ? error : new Error(String(error)));\n }\n });\n client.once(\"error\", finish);\n client.once(\"close\", () =>\n finish(received.length ? new Error(\"Incomplete Minecraft status response\") : undefined)\n );\n }).finally(() => {\n this.pending = undefined;\n });\n return this.pending;\n }\n\n asyncStatus() {\n return this.getStatus();\n }\n}\n","/** Versioned contract shared by the host, plugin compiler and package registry. */\nexport const PLUGIN_API_VERSION = 1;\nexport const PLUGIN_SDK_VERSION = \"1.0.0\";\n\nexport interface PluginCompatibility {\n api: number;\n sdk?: number;\n}\n\n/** Omitted metadata denotes a legacy package. Unknown versions never execute. */\nexport function validatePluginCompatibility(value: unknown): void {\n if (value === undefined) return;\n if (!value || typeof value !== \"object\" || Array.isArray(value))\n throw new Error(\"Invalid ElementsPanel plugin compatibility metadata.\");\n const contract = value as PluginCompatibility;\n if (contract.api !== PLUGIN_API_VERSION || (contract.sdk !== undefined && contract.sdk !== 1))\n throw new Error(`Unsupported ElementsPanel plugin API/SDK: ${JSON.stringify(value)}`);\n}\n\nexport type PluginState =\n | \"disabled\"\n | \"pending\"\n | \"loading\"\n | \"active\"\n | \"failed\"\n | \"unloading\"\n | \"restart-required\";\nexport interface PluginChangeResult {\n saved: boolean;\n application: \"applied\" | \"pending\" | \"failed\" | \"restart-required\";\n error?: string;\n}\n\nexport interface PluginDependencyIssue {\n type: \"missing-dependency\" | \"dependency-cycle\" | \"dependency-unavailable\";\n dependencies: readonly string[];\n message: string;\n}\n\nexport interface PluginDependencyOrder<T> {\n ordered: T[];\n issues: Map<string, PluginDependencyIssue>;\n}\n\n/**\n * Stable topological ordering shared by plugin hosts.\n *\n * Invalid nodes are kept out of `ordered`: direct missing dependencies are\n * reported first, then anything depending on an invalid node, and finally\n * cycles (plus nodes blocked behind a cycle). Independent nodes retain the\n * caller's priority/id comparator.\n */\nexport function resolvePluginDependencyOrder<T>(\n items: readonly T[],\n options: {\n id(item: T): string;\n dependencies(item: T): readonly string[] | undefined;\n compare(a: T, b: T): number;\n }\n): PluginDependencyOrder<T> {\n const sorted = [...items].sort(options.compare);\n const byId = new Map(sorted.map((item) => [options.id(item), item]));\n const dependencies = new Map(\n sorted.map((item) => [\n options.id(item),\n [...new Set(options.dependencies(item) || [])].filter(Boolean)\n ])\n );\n const issues = new Map<string, PluginDependencyIssue>();\n\n for (const item of sorted) {\n const id = options.id(item);\n const missing = dependencies.get(id)!.filter((dependency) => !byId.has(dependency));\n if (!missing.length) continue;\n issues.set(id, {\n type: \"missing-dependency\",\n dependencies: missing,\n message: `Missing frontend plugin dependencies: ${missing.join(\", \")}`\n });\n }\n\n const markUnavailable = () => {\n let changed = false;\n for (const item of sorted) {\n const id = options.id(item);\n if (issues.has(id)) continue;\n const unavailable = dependencies.get(id)!.filter((dependency) => issues.has(dependency));\n if (!unavailable.length) continue;\n issues.set(id, {\n type: \"dependency-unavailable\",\n dependencies: unavailable,\n message: `Frontend plugin dependencies are unavailable: ${unavailable.join(\", \")}`\n });\n changed = true;\n }\n return changed;\n };\n while (markUnavailable()) {\n // Propagate direct graph failures before sorting the remaining nodes.\n }\n\n const candidates = sorted.filter((item) => !issues.has(options.id(item)));\n const candidateIds = new Set(candidates.map(options.id));\n const indegree = new Map(candidates.map((item) => [options.id(item), 0]));\n const dependents = new Map<string, T[]>();\n for (const item of candidates) {\n const id = options.id(item);\n for (const dependency of dependencies.get(id)!) {\n if (!candidateIds.has(dependency)) continue;\n indegree.set(id, indegree.get(id)! + 1);\n const bucket = dependents.get(dependency) || [];\n bucket.push(item);\n dependents.set(dependency, bucket);\n }\n }\n\n const ready = candidates.filter((item) => indegree.get(options.id(item)) === 0);\n ready.sort(options.compare);\n const ordered: T[] = [];\n while (ready.length) {\n const item = ready.shift()!;\n const id = options.id(item);\n ordered.push(item);\n for (const dependent of dependents.get(id) || []) {\n const dependentId = options.id(dependent);\n const next = indegree.get(dependentId)! - 1;\n indegree.set(dependentId, next);\n if (next === 0) {\n ready.push(dependent);\n ready.sort(options.compare);\n }\n }\n }\n\n const unresolved = candidates.filter((item) => !ordered.includes(item));\n if (unresolved.length) {\n const unresolvedIds = new Set(unresolved.map(options.id));\n for (const item of unresolved) {\n const id = options.id(item);\n const blockedBy = dependencies.get(id)!.filter((dependency) => unresolvedIds.has(dependency));\n issues.set(id, {\n type: \"dependency-cycle\",\n dependencies: blockedBy,\n message: `Frontend plugin dependency cycle: ${[id, ...blockedBy].join(\" -> \")}`\n });\n }\n }\n\n return { ordered, issues };\n}\n\n/** A queue survives failures, so a failed change cannot block subsequent repairs. */\nexport function createPluginQueue() {\n let tail: Promise<unknown> = Promise.resolve();\n return <T>(operation: () => Promise<T>): Promise<T> => {\n const next = tail.then(operation);\n tail = next.catch(() => undefined);\n return next;\n };\n}\n\nexport interface PluginSettingField {\n key?: string;\n type: string;\n title?: string;\n min?: number;\n max?: number;\n required?: boolean;\n options?: Array<{ value: unknown }>;\n fields?: PluginSettingField[];\n maxItems?: number;\n}\n\n/** Validate the form contract on the server before invoking plugin-owned validation. */\nexport function validatePluginSettings(\n fields: readonly PluginSettingField[],\n values: unknown\n): asserts values is Record<string, unknown> {\n if (!values || typeof values !== \"object\" || Array.isArray(values))\n throw new Error(\"Invalid plugin settings.\");\n const input = values as Record<string, unknown>;\n for (const field of fields) {\n if (!field.key || field.type === \"link\") continue;\n const value = input[field.key];\n if (value === undefined || value === null) {\n if (field.required) throw new Error(`${field.title || field.key}: required`);\n continue;\n }\n if (field.type === \"list\") {\n if (!Array.isArray(value) || value.length > (field.maxItems ?? 100))\n throw new Error(`${field.title || field.key}: invalid list`);\n for (const item of value) validatePluginSettings(field.fields || [], item);\n continue;\n }\n const valid =\n field.type === \"number\"\n ? typeof value === \"number\" &&\n Number.isFinite(value) &&\n (field.min === undefined || value >= field.min) &&\n (field.max === undefined || value <= field.max)\n : field.type === \"boolean\"\n ? typeof value === \"boolean\"\n : field.type === \"select\"\n ? field.options?.some((option) => option.value === value)\n : typeof value === \"string\";\n if (!valid) throw new Error(`${field.title || field.key}: invalid value`);\n }\n}\n","/** Cordis 3 starts async disposers without awaiting them. Track them per host. */\nexport function trackPluginDisposal(ctx: any) {\n const pending = new Set<Promise<unknown>>();\n const failures: unknown[] = [];\n const tracked = new WeakSet<Function>();\n const scopes = new WeakSet<object>();\n const observe = (scope: any) => {\n if (scopes.has(scope)) return;\n scopes.add(scope);\n const reset = scope.reset;\n scope.reset = function () {\n this.disposables = this.disposables.map((dispose: Function) => {\n if (tracked.has(dispose)) return dispose;\n const wrapper = (...args: unknown[]) => {\n let result: unknown;\n try {\n result = dispose(...args);\n } catch (error) {\n failures.push(error);\n throw error;\n }\n if (result && typeof (result as Promise<unknown>).then === \"function\") {\n const task = Promise.resolve(result)\n .catch((error) => {\n failures.push(error);\n })\n .finally(() => pending.delete(task));\n pending.add(task);\n }\n return result;\n };\n // Cordis marks persistent disposers with a symbol; preserve its semantics.\n for (const key of Object.getOwnPropertySymbols(dispose))\n Object.defineProperty(wrapper, key, Object.getOwnPropertyDescriptor(dispose, key)!);\n tracked.add(wrapper);\n return wrapper;\n });\n return reset.call(this);\n };\n };\n ctx.on(\"internal/runtime\", observe);\n ctx.on(\"internal/fork\", observe);\n return async () => {\n do {\n await ctx.events.flush();\n await Promise.all([...pending]);\n } while (pending.size);\n if (failures.length) {\n const errors = failures.splice(0);\n throw new Error(`Plugin cleanup failed: ${errors.map(String).join(\"; \")}`);\n }\n };\n}\n","import fs from \"node:fs\";\nimport path from \"node:path\";\n\n/**\n * Plugin manifest discovery, shared by every process that has to find plugins:\n * the panel and daemon backend loaders, the panel's frontend manifest endpoint,\n * and the Vite plugin that compiles frontend entries.\n *\n * They used to hold a copy of this logic each, and the copies drifted. Nothing\n * here needs more than `node:fs`, which is what lets the Vite config import this\n * source file directly without pulling in the rest of the common layer.\n */\n\nexport interface PluginManifest {\n id: string;\n version?: string;\n description?: string;\n /** Set to false to skip the plugin entirely. */\n enabled?: boolean;\n /** Ascending load order among plugins that do not depend on each other. */\n priority?: number;\n /** Passed to the plugin as its configuration. */\n config?: unknown;\n [key: string]: unknown;\n}\n\n/** Browser-safe plugin metadata shared by the Vite and runtime manifests. */\nexport interface FrontendPluginMetadata {\n id: string;\n version?: string;\n description?: string;\n priority?: number;\n elements?: unknown;\n /** Plugin ids that must be activated before this browser entry. */\n frontendInject?: string[];\n /** Loads in the foundation/prefetch tier. */\n frontendImmediate?: boolean;\n /** A failed or pending entry prevents application startup. */\n frontendRequired?: boolean;\n /** Browser-only configuration; backend `config` is never exposed. */\n config?: unknown;\n restartRequired?: boolean;\n}\n\nfunction stringArray(value: unknown): string[] | undefined {\n if (!Array.isArray(value)) return undefined;\n const result = value.filter((item): item is string => typeof item === \"string\" && !!item.trim());\n return result.length ? [...new Set(result.map((item) => item.trim()))] : undefined;\n}\n\n/**\n * Redacts a full plugin manifest to the fields a browser is allowed to see.\n * Backend `config` may contain credentials, so only `frontendConfig` crosses\n * this boundary.\n */\nexport function createFrontendPluginMetadata(\n manifest: PluginManifest,\n extras: Pick<FrontendPluginMetadata, \"restartRequired\"> = {}\n): FrontendPluginMetadata {\n const frontendInject = stringArray(manifest.frontendInject);\n return {\n id: manifest.id,\n ...(manifest.version === undefined ? {} : { version: manifest.version }),\n ...(manifest.description === undefined ? {} : { description: manifest.description }),\n ...(manifest.priority === undefined ? {} : { priority: manifest.priority }),\n ...(manifest.elements === undefined ? {} : { elements: manifest.elements }),\n ...(frontendInject === undefined ? {} : { frontendInject }),\n ...(manifest.frontendImmediate === undefined\n ? {}\n : { frontendImmediate: Boolean(manifest.frontendImmediate) }),\n ...(manifest.frontendRequired === undefined\n ? {}\n : { frontendRequired: Boolean(manifest.frontendRequired) }),\n ...(manifest.frontendConfig === undefined ? {} : { config: manifest.frontendConfig }),\n ...(extras.restartRequired === undefined ? {} : extras)\n };\n}\n\nexport interface DiscoveredPlugin {\n manifest: PluginManifest;\n /** Absolute path of the plugin directory. */\n directory: string;\n /** Directory name, which is also the URL segment a packaged plugin is served at. */\n folder: string;\n /** Absolute path of the resolved entry module, when one was found. */\n entry?: string;\n}\n\nexport interface DiscoverPluginsOptions {\n /**\n * Manifest fields naming the entry, most specific first. The first one present\n * wins, and no fallback is attempted once a field is set.\n */\n entryFields: string[];\n /** Relative entries tried when no `entryFields` value is set. */\n entryCandidates?: string[];\n /**\n * Include plugins whose manifest sets `enabled: false`. Loaders leave this\n * off; the plugin inventory the panel reports turns it on, because a disabled\n * plugin still has to be listed to be enabled again.\n */\n includeDisabled?: boolean;\n /**\n * Report a plugin that could not be used. Discovery never throws: one broken\n * plugin directory must not stop the others from loading.\n */\n onWarning?: (message: string, error?: unknown) => void;\n}\n\n/** A plugin directory to scan, optionally with a public folder name override. */\nexport interface PluginDiscoveryRoot {\n directory: string;\n /** Stable public asset name for npm plugins whose manifest lives below a side directory. */\n folder?: string;\n /**\n * Root-level enablement policy. Runtime packages use false to keep project\n * plugins dormant until the user enables them from plugin configuration.\n */\n defaultEnabled?: boolean;\n}\n\nconst MANIFEST_FILES = [\"plugin.json\", \"manifest.json\", \"package.json\"];\n\n/** Reads the manifest of one plugin directory, or null if it has none. */\nexport function readPluginManifest(\n directory: string,\n onWarning?: (message: string, error?: unknown) => void,\n fallbackId = path.basename(directory)\n): PluginManifest | null {\n for (const file of MANIFEST_FILES) {\n const filePath = path.join(directory, file);\n if (!fs.existsSync(filePath)) continue;\n try {\n const value = JSON.parse(fs.readFileSync(filePath, \"utf8\")) as Record<string, unknown> | null;\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return null;\n const id = typeof value.id === \"string\" ? value.id : fallbackId;\n if (!id.trim()) return null;\n return { ...value, id: id.trim() } as PluginManifest;\n } catch (error) {\n onWarning?.(`Failed to read plugin manifest: ${filePath}`, error);\n return null;\n }\n }\n return null;\n}\n\n/**\n * Resolves one plugin's entry module. Returns null when the manifest names an\n * entry that does not exist, or when none of the fallback candidates is present.\n * Paths that would escape the plugin directory are rejected.\n */\nexport function resolvePluginEntry(\n directory: string,\n manifest: PluginManifest,\n options: Pick<DiscoverPluginsOptions, \"entryFields\" | \"entryCandidates\">\n): string | null {\n const configured = options.entryFields\n .map((field) => manifest[field])\n .find((entry): entry is string => typeof entry === \"string\" && entry.length > 0);\n const candidates = configured ? [configured] : options.entryCandidates ?? [];\n const root = path.resolve(directory);\n for (const candidate of candidates) {\n const entry = path.resolve(directory, candidate);\n if (entry.startsWith(`${root}${path.sep}`) && fs.existsSync(entry)) return entry;\n }\n return null;\n}\n\nfunction discoverPluginDirectory(\n directory: string,\n options: DiscoverPluginsOptions,\n folder = path.basename(directory)\n): DiscoveredPlugin | null {\n // Npm packages expose a side directory; its name is not the public plugin id.\n const manifest = readPluginManifest(directory, options.onWarning, folder);\n if (!manifest) return null;\n if (manifest.enabled === false && !options.includeDisabled) return null;\n\n const entry = resolvePluginEntry(directory, manifest, options);\n if (!entry && options.entryFields.some((field) => typeof manifest[field] === \"string\")) {\n options.onWarning?.(`Plugin \"${manifest.id}\" has no valid entry module.`);\n return null;\n }\n return { manifest, directory, folder, entry: entry ?? undefined };\n}\n\n/**\n * Lists the usable plugins below `root`, in load order: ascending `priority`,\n * then by id so the order is stable. Duplicate ids are dropped, and disabled\n * ones too unless `includeDisabled` says otherwise. A plugin whose manifest names an entry that cannot be resolved is\n * dropped too; one that names none keeps `entry` undefined, because a plugin may\n * legitimately contribute to only one side of the panel.\n */\nexport function discoverPlugins(root: string, options: DiscoverPluginsOptions): DiscoveredPlugin[] {\n if (!fs.existsSync(root)) return [];\n\n const plugins: DiscoveredPlugin[] = [];\n const seenIds = new Set<string>();\n for (const item of fs.readdirSync(root, { withFileTypes: true })) {\n if (!item.isDirectory()) continue;\n const directory = path.join(root, item.name);\n const plugin = discoverPluginDirectory(directory, options, item.name);\n if (!plugin || seenIds.has(plugin.manifest.id)) {\n if (plugin && seenIds.has(plugin.manifest.id)) {\n options.onWarning?.(`Ignoring duplicate plugin id: ${plugin.manifest.id}`);\n }\n continue;\n }\n seenIds.add(plugin.manifest.id);\n plugins.push(plugin);\n }\n\n return sortPlugins(plugins);\n}\n\n/**\n * Discovers plugins from several roots while keeping the first root's plugin\n * when ids collide. The built-in root is intentionally passed first by the\n * panel and daemon loaders, so an installed market plugin cannot shadow a\n * built-in npm dependency. A root can also force an installed project plugin\n * into the disabled state; the user-owned override layer may enable it later.\n */\nexport function discoverPluginsFromRoots(\n roots: readonly PluginDiscoveryRoot[],\n options: DiscoverPluginsOptions\n): DiscoveredPlugin[] {\n const discovered: DiscoveredPlugin[] = [];\n const seenIds = new Set<string>();\n for (const root of roots) {\n const isDirectPlugin = MANIFEST_FILES.some((file) =>\n fs.existsSync(path.join(root.directory, file))\n );\n const plugins = isDirectPlugin\n ? [discoverPluginDirectory(root.directory, options, root.folder)]\n : discoverPlugins(root.directory, options);\n for (const plugin of plugins) {\n if (!plugin) continue;\n const manifest =\n root.defaultEnabled === false ? { ...plugin.manifest, enabled: false } : plugin.manifest;\n if (manifest.enabled === false && !options.includeDisabled) continue;\n if (seenIds.has(plugin.manifest.id)) {\n options.onWarning?.(`Ignoring duplicate plugin id: ${plugin.manifest.id}`);\n continue;\n }\n seenIds.add(plugin.manifest.id);\n discovered.push({\n ...plugin,\n manifest,\n ...(root.folder ? { folder: root.folder } : {})\n });\n }\n }\n return sortPlugins(discovered);\n}\n\n/** Load order: ascending `priority`, then by id so it never depends on the filesystem. */\nexport function sortPlugins<T extends { manifest: PluginManifest }>(plugins: T[]): T[] {\n return plugins.sort(\n (a, b) =>\n (Number(a.manifest.priority) || 0) - (Number(b.manifest.priority) || 0) ||\n a.manifest.id.localeCompare(b.manifest.id)\n );\n}\n","import { spawn } from \"child_process\";\nimport fs from \"fs-extra\";\nimport path from \"path\";\nimport { createRequire } from \"module\";\n\n/**\n * npm dependency management for plugins.\n *\n * A plugin installed from the market is a normal dependency of the installation\n * project: it is written into the project's `package.json`, installed by npm and\n * then resolved by the runtime like any other npm plugin. The market only indexes\n * npm packages; it never hosts the package files.\n *\n * `elementspanel.plugins` maps a plugin id to the npm package name, which is what\n * the runtime resolver reads. A project plugin lives next to the built-in plugins\n * of the runtime package and is loaded through the same path.\n */\n\nexport type NpmPluginSide = \"panel\" | \"daemon\";\n\nexport interface NpmPluginRecord {\n pluginId: string;\n /** The npm package name, e.g. `epanel-plugin-example`. */\n name: string;\n version: string;\n sides: NpmPluginSide[];\n /** The directory the loader discovers for the requested side. */\n directory: string;\n /** The asset folder name the plug-in declares (unique per side). */\n folder: string;\n packageRoot: string;\n /** Bundled plugins ship inside the runtime package and cannot be removed here. */\n source: \"bundled\" | \"project\";\n}\n\nexport interface InstallNpmPluginOptions {\n name: string;\n pluginId: string;\n version: string;\n side: NpmPluginSide;\n packageRoot?: string;\n projectRoot?: string;\n}\n\nexport interface NpmPluginRoots {\n packageRoot: string;\n projectRoot: string;\n}\n\nconst PLUGIN_ID = /^[a-z][a-z0-9_-]{1,63}$/;\nconst PACKAGE_NAME = /^(?:@[a-z0-9_.-]+\\/)?epanel-plugin-[a-z0-9_.-]+$/;\nconst VERSION = /^[0-9][^\\s/]{0,63}$/;\n\nfunction readJson(filename: string): Record<string, unknown> | null {\n try {\n const parsed: unknown = JSON.parse(fs.readFileSync(filename, \"utf8\"));\n return parsed && typeof parsed === \"object\" && !Array.isArray(parsed)\n ? (parsed as Record<string, unknown>)\n : null;\n } catch (error: any) {\n if (error?.code === \"ENOENT\") return null;\n throw error;\n }\n}\n\nfunction objectValue(value: unknown): Record<string, unknown> | undefined {\n return value && typeof value === \"object\" && !Array.isArray(value)\n ? (value as Record<string, unknown>)\n : undefined;\n}\n\nfunction stringValue(value: unknown): string {\n return typeof value === \"string\" ? value : \"\";\n}\n\nexport function currentPackageRoot(): string {\n return path.resolve(process.env.EPANEL_PACKAGE_ROOT || process.cwd());\n}\n\nexport function currentProjectRoot(packageRoot = currentPackageRoot()): string {\n // The npm worker sets EPANEL_PROJECT_ROOT to the installation directory. In a\n // development checkout the runtime package sits directly under the project.\n if (process.env.EPANEL_PROJECT_ROOT) return path.resolve(process.env.EPANEL_PROJECT_ROOT);\n const scope = path.resolve(packageRoot, \"..\");\n const nodeModules = path.dirname(scope);\n if (path.basename(nodeModules) === \"node_modules\" && path.basename(scope).startsWith(\"@\"))\n return path.dirname(nodeModules);\n return scope;\n}\n\nexport function npmPluginRoots(options: { packageRoot?: string; projectRoot?: string } = {}): NpmPluginRoots {\n const packageRoot = path.resolve(options.packageRoot ?? currentPackageRoot());\n return {\n packageRoot,\n projectRoot: path.resolve(options.projectRoot ?? currentProjectRoot(packageRoot))\n };\n}\n\nfunction projectManifestFile(projectRoot: string): string {\n return path.join(projectRoot, \"package.json\");\n}\n\nfunction readProjectManifest(projectRoot: string): Record<string, unknown> {\n return (\n readJson(projectManifestFile(projectRoot)) ?? {\n private: true,\n dependencies: {},\n elementspanel: { plugins: {} }\n }\n );\n}\n\nfunction writeProjectManifest(projectRoot: string, manifest: Record<string, unknown>): void {\n fs.writeFileSync(projectManifestFile(projectRoot), `${JSON.stringify(manifest, null, 2)}\\n`);\n}\n\nfunction dependenciesOf(manifest: Record<string, unknown> | null): Record<string, unknown> {\n return objectValue(manifest?.dependencies) ?? {};\n}\n\nfunction mappingsOf(manifest: Record<string, unknown> | null): Record<string, unknown> {\n return objectValue(objectValue(manifest?.elementspanel)?.plugins) ?? {};\n}\n\nfunction pluginRecord(\n pluginId: string,\n name: string,\n source: NpmPluginRecord[\"source\"],\n packageRoot: string,\n directory: string,\n folder: string,\n version: string\n): NpmPluginRecord {\n return { pluginId, name, version, sides: [], directory, folder, packageRoot, source };\n}\n\nfunction readPackageEntry(\n packageRoot: string,\n name: string\n): { root: string; metadata: Record<string, unknown> } {\n const hostRequire = createRequire(path.join(packageRoot, \"package.json\"));\n const manifestPath = hostRequire.resolve(`${name}/package.json`);\n const metadata = readJson(manifestPath);\n if (!metadata) throw new Error(`Missing package metadata for ${name}.`);\n return { root: path.dirname(manifestPath), metadata };\n}\n\nfunction sideDirectory(\n packageRoot: string,\n metadata: Record<string, unknown>,\n side: NpmPluginSide\n): string | undefined {\n const elements = objectValue(metadata.elementspanel);\n const definition = objectValue(elements?.[side]);\n const directory = stringValue(definition?.directory);\n if (!definition || !directory) return undefined;\n const target = path.resolve(packageRoot, directory);\n const relative = path.relative(packageRoot, target);\n if (relative === \"\" || relative.startsWith(`..${path.sep}`) || path.isAbsolute(relative)) return undefined;\n return target;\n}\n\nfunction recordFromPackage(\n pluginId: string,\n name: string,\n source: NpmPluginRecord[\"source\"],\n packageRoot: string,\n metadata: Record<string, unknown>,\n side?: NpmPluginSide\n): NpmPluginRecord | undefined {\n const elements = objectValue(metadata.elementspanel);\n if (!elements || elements.id !== pluginId) return undefined;\n const version = stringValue(metadata.version);\n const sides = ([\"panel\", \"daemon\"] as const).filter((item) =>\n Boolean(sideDirectory(packageRoot, metadata, item))\n );\n if (!sides.length) return undefined;\n const target = side ?? sides[0]!;\n if (!sides.includes(target)) return undefined;\n const directory = sideDirectory(packageRoot, metadata, target);\n const folder = stringValue(objectValue(elements[target])?.folder);\n if (!directory || !folder) return undefined;\n return {\n ...pluginRecord(pluginId, name, source, packageRoot, directory, folder, version),\n sides\n };\n}\n\n/**\n * Every npm plugin the runtime can load for a side, built-in and project-installed.\n *\n * Built-in mappings win over a project mapping for the same id: a third-party\n * package must not shadow a plugin that ships with the runtime. A project package\n * that does not describe the requested side is skipped instead of failing, which\n * is what lets a two-sided project share one dependency list between sides.\n */\nexport function listNpmPlugins(\n side?: NpmPluginSide,\n options: { packageRoot?: string; projectRoot?: string; skipInvalid?: boolean } = {}\n): NpmPluginRecord[] {\n const { packageRoot, projectRoot } = npmPluginRoots(options);\n const host = readJson(path.join(packageRoot, \"package.json\"));\n if (!host) throw new Error(`Missing runtime package metadata: ${packageRoot}`);\n const project = path.resolve(projectRoot) === path.resolve(packageRoot) ? null : readProjectManifest(projectRoot);\n\n const hostMappings = mappingsOf(host);\n const projectMappings = mappingsOf(project);\n const mappings = new Map<string, { name: string; source: NpmPluginRecord[\"source\"] }>();\n for (const [pluginId, name] of Object.entries(projectMappings)) {\n if (!PLUGIN_ID.test(pluginId) || typeof name !== \"string\" || !PACKAGE_NAME.test(name)) continue;\n mappings.set(pluginId, { name, source: \"project\" });\n }\n for (const [pluginId, name] of Object.entries(hostMappings)) {\n if (!PLUGIN_ID.test(pluginId) || typeof name !== \"string\" || !PACKAGE_NAME.test(name)) continue;\n mappings.set(pluginId, { name, source: \"bundled\" });\n }\n\n const hostDependencies = dependenciesOf(host);\n const projectDependencies = dependenciesOf(project);\n const folders = new Set<string>();\n const records: NpmPluginRecord[] = [];\n for (const [pluginId, mapping] of mappings) {\n const declared = hostDependencies[mapping.name] ?? projectDependencies[mapping.name];\n if (declared === undefined) {\n if (options.skipInvalid) continue;\n throw new Error(`Missing npm plugin dependency: ${mapping.name}. Run npm install in the project directory.`);\n }\n let entry: { root: string; metadata: Record<string, unknown> };\n try {\n entry = readPackageEntry(packageRoot, mapping.name);\n } catch (error) {\n if (options.skipInvalid) continue;\n throw error;\n }\n const record = recordFromPackage(pluginId, mapping.name, mapping.source, entry.root, entry.metadata, side);\n if (!record) {\n if (options.skipInvalid || mapping.source === \"project\") continue;\n throw new Error(`Invalid ${side ?? \"plugin\"} entry in npm plugin ${mapping.name}.`);\n }\n const folder = record.folder;\n if (folders.has(folder)) {\n if (options.skipInvalid) continue;\n throw new Error(`Duplicate npm plugin asset directory: ${folder}.`);\n }\n folders.add(folder);\n records.push(record);\n }\n return records;\n}\n\nfunction runNpm(args: string[], cwd: string): Promise<string> {\n return new Promise((resolve, reject) => {\n const npmCLI = process.env.npm_execpath;\n const invocation =\n npmCLI && /npm(?:-cli)?\\.(?:c?js|mjs)$/.test(npmCLI)\n ? { command: process.execPath, args: [npmCLI, ...args], shell: false }\n : process.platform === \"win32\"\n ? {\n command: process.env.ComSpec || \"cmd.exe\",\n args: [\"/d\", \"/s\", \"/c\", `npm ${args.map((item) => `\"${item.replace(/\"/g, '\"\"')}\"`).join(\" \")}`],\n shell: false\n }\n : { command: \"npm\", args, shell: false };\n const child = spawn(invocation.command, invocation.args, {\n cwd,\n shell: invocation.shell,\n windowsHide: true,\n stdio: [\"ignore\", \"pipe\", \"pipe\"],\n env: { ...process.env, npm_config_update_notifier: \"false\" }\n });\n let output = \"\";\n const append = (data: Buffer) => {\n output += data.toString();\n if (output.length > 16000) output = output.slice(-16000);\n };\n child.stdout?.on(\"data\", append);\n child.stderr?.on(\"data\", append);\n const timer = setTimeout(() => {\n child.kill(\"SIGKILL\");\n reject(new Error(`npm ${args[0] ?? \"\"} timed out.`));\n }, 10 * 60 * 1000);\n timer.unref?.();\n child.once(\"error\", (error) => {\n clearTimeout(timer);\n reject(error);\n });\n child.once(\"close\", (code) => {\n clearTimeout(timer);\n if (code === 0) return resolve(output);\n reject(new Error(`npm ${args[0] ?? \"\"} failed (${code}): ${output.trim()}`));\n });\n });\n}\n\nconst operations = new Map<string, Promise<unknown>>();\n\nfunction withProjectLock<T>(projectRoot: string, operation: () => Promise<T>): Promise<T> {\n const key = process.platform === \"win32\" ? projectRoot.toLowerCase() : projectRoot;\n const previous = operations.get(key) ?? Promise.resolve();\n const result = previous.then(operation);\n const settled = result.then(\n () => {},\n () => {}\n );\n operations.set(key, settled);\n return result.finally(() => {\n if (operations.get(key) === settled) operations.delete(key);\n }) as Promise<T>;\n}\n\n/**\n * Installs (or updates) one npm plugin as a project dependency.\n *\n * The version is pinned with `--save-exact`: the panel performs updates, so a\n * later bare `npm install` must not silently move the plugin to another release.\n */\nexport async function installNpmPlugin(\n options: InstallNpmPluginOptions\n): Promise<NpmPluginRecord> {\n const { name, pluginId, version, side } = options;\n if (!PLUGIN_ID.test(pluginId)) throw new Error(`Invalid plugin id: ${pluginId}`);\n if (!PACKAGE_NAME.test(name)) throw new Error(`Invalid npm plugin package: ${name}`);\n if (!VERSION.test(version)) throw new Error(`Invalid plugin version: ${version}`);\n const { packageRoot, projectRoot } = npmPluginRoots(options);\n\n return withProjectLock(projectRoot, async () => {\n const host = readJson(path.join(packageRoot, \"package.json\"));\n if (!host) throw new Error(`Missing runtime package metadata: ${packageRoot}`);\n if (mappingsOf(host)[pluginId] !== undefined)\n throw new Error(`BUNDLED:${pluginId}`);\n const existing = mappingsOf(readProjectManifest(projectRoot))[pluginId];\n if (existing !== undefined && existing !== name)\n throw new Error(`Plugin id ${pluginId} is already installed as ${String(existing)}.`);\n\n await fs.ensureDir(projectRoot);\n await runNpm(\n [\"install\", `${name}@${version}`, \"--save\", \"--save-exact\", \"--no-fund\", \"--no-audit\", \"--ignore-scripts\"],\n projectRoot\n );\n\n let entry: { root: string; metadata: Record<string, unknown> };\n try {\n entry = readPackageEntry(packageRoot, name);\n } catch (error) {\n await runNpm([\"uninstall\", name, \"--no-fund\", \"--no-audit\", \"--ignore-scripts\"], projectRoot).catch(() => {});\n throw error;\n }\n const record = recordFromPackage(pluginId, name, \"project\", entry.root, entry.metadata, side);\n if (!record) {\n await runNpm([\"uninstall\", name, \"--no-fund\", \"--no-audit\", \"--ignore-scripts\"], projectRoot).catch(() => {});\n throw new Error(`The package ${name} does not provide a ${side} plugin named ${pluginId}.`);\n }\n if (record.version !== version) {\n await runNpm([\"uninstall\", name, \"--no-fund\", \"--no-audit\", \"--ignore-scripts\"], projectRoot).catch(() => {});\n throw new Error(`The installed package ${name} is ${record.version}, expected ${version}.`);\n }\n\n const manifest = readProjectManifest(projectRoot);\n const dependencies = { ...dependenciesOf(manifest), [name]: version };\n const elementspanel = { ...(objectValue(manifest.elementspanel) ?? {}) };\n const plugins = { ...mappingsOf(manifest), [pluginId]: name };\n manifest.dependencies = dependencies;\n manifest.elementspanel = { ...elementspanel, plugins };\n writeProjectManifest(projectRoot, manifest);\n return record;\n });\n}\n\n/** Removes one project-installed npm plugin. Built-in packages are left alone. */\nexport async function uninstallNpmPlugin(\n pluginId: string,\n options: { packageRoot?: string; projectRoot?: string } = {}\n): Promise<NpmPluginRecord | null> {\n if (!PLUGIN_ID.test(pluginId)) throw new Error(`Invalid plugin id: ${pluginId}`);\n const { packageRoot, projectRoot } = npmPluginRoots(options);\n return withProjectLock(projectRoot, async () => {\n const host = readJson(path.join(packageRoot, \"package.json\"));\n if (host && mappingsOf(host)[pluginId] !== undefined) throw new Error(`BUNDLED:${pluginId}`);\n const manifest = readProjectManifest(projectRoot);\n const name = mappingsOf(manifest)[pluginId];\n if (typeof name !== \"string\" || !PACKAGE_NAME.test(name)) return null;\n\n const record = listNpmPlugins(undefined, { packageRoot, projectRoot, skipInvalid: true }).find(\n (item) => item.pluginId === pluginId\n );\n await runNpm([\"uninstall\", name, \"--no-fund\", \"--no-audit\", \"--ignore-scripts\"], projectRoot);\n\n const plugins = { ...mappingsOf(manifest) };\n delete plugins[pluginId];\n const elementspanel = { ...(objectValue(manifest.elementspanel) ?? {}) };\n if (Object.keys(plugins).length) elementspanel.plugins = plugins;\n else delete elementspanel.plugins;\n manifest.elementspanel = elementspanel;\n writeProjectManifest(projectRoot, manifest);\n return record ?? null;\n });\n}\n","import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { randomBytes } from \"node:crypto\";\nimport type { DiscoveredPlugin } from \"./plugin_manifest\";\n\nexport interface PluginOverride {\n enabled?: boolean;\n config?: Record<string, unknown>;\n}\ninterface Overrides {\n version: 1;\n plugins: Record<string, PluginOverride>;\n}\n\nexport function pluginOverridesPath(): string {\n return path.resolve(process.cwd(), \"data\", \"plugin-overrides.json\");\n}\n\n/** Package defaults stay immutable; only the user's last layer lives in data. */\nexport function readPluginOverrides(filename = pluginOverridesPath()): Overrides {\n let raw: string;\n try {\n raw = fs.readFileSync(filename, \"utf8\");\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code === \"ENOENT\") return { version: 1, plugins: {} };\n throw error;\n }\n const data = JSON.parse(raw);\n if (\n data?.version !== 1 ||\n !data.plugins ||\n typeof data.plugins !== \"object\" ||\n Array.isArray(data.plugins)\n )\n throw new Error(\"Invalid plugin-overrides.json\");\n for (const entry of Object.values(data.plugins)) validatePluginOverride(entry);\n return data;\n}\n\nexport function validatePluginOverride(value: unknown): asserts value is PluginOverride {\n if (!value || typeof value !== \"object\" || Array.isArray(value))\n throw new Error(\"Invalid plugin override.\");\n const entry = value as PluginOverride;\n if (entry.enabled !== undefined && typeof entry.enabled !== \"boolean\")\n throw new Error(\"Invalid plugin enablement.\");\n if (\n entry.config !== undefined &&\n (!entry.config || typeof entry.config !== \"object\" || Array.isArray(entry.config))\n )\n throw new Error(\"Plugin config must be an object.\");\n if (Object.keys(value).some((key) => ![\"enabled\", \"config\"].includes(key)))\n throw new Error(\"Unknown plugin override field.\");\n}\n\nexport function applyPluginOverrides(\n plugins: DiscoveredPlugin[],\n filename = pluginOverridesPath()\n): DiscoveredPlugin[] {\n const overrides = readPluginOverrides(filename).plugins;\n return plugins.map((plugin) => ({\n ...plugin,\n manifest: {\n ...plugin.manifest,\n ...(Object.prototype.hasOwnProperty.call(overrides, plugin.manifest.id)\n ? overrides[plugin.manifest.id]\n : {})\n }\n }));\n}\n\n/** Call inside the host's change queue; rename keeps readers off partial JSON. */\nexport function writePluginOverride(\n id: string,\n patch: PluginOverride,\n filename = pluginOverridesPath()\n): void {\n validatePluginOverride(patch);\n if (!id || [\"__proto__\", \"constructor\", \"prototype\"].includes(id))\n throw new Error(\"Invalid plugin id.\");\n const data = readPluginOverrides(filename);\n data.plugins[id] = {\n ...(Object.prototype.hasOwnProperty.call(data.plugins, id) ? data.plugins[id] : {}),\n ...patch\n };\n fs.mkdirSync(path.dirname(filename), { recursive: true });\n const temporary = `${filename}.${randomBytes(8).toString(\"hex\")}.tmp`;\n try {\n fs.writeFileSync(temporary, `${JSON.stringify(data, null, 2)}\\n`, { mode: 0o600, flag: \"wx\" });\n fs.renameSync(temporary, filename);\n } finally {\n fs.rmSync(temporary, { force: true });\n }\n}\n","import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { createHash } from \"node:crypto\";\n\nconst cache = new Map<string, { signature: string; revision: string }>();\n\n/** One revision addresses the complete module graph, including CSS and nested chunks. */\nexport function pluginDirectoryRevision(directory: string): string {\n const files: Array<{ relative: string; absolute: string; stat: fs.Stats }> = [];\n const walk = (root: string) => {\n if (!fs.existsSync(root)) return;\n for (const item of fs\n .readdirSync(root, { withFileTypes: true })\n .sort((a, b) => a.name.localeCompare(b.name))) {\n const absolute = path.join(root, item.name);\n if (item.isDirectory()) walk(absolute);\n else if (item.isFile())\n files.push({\n relative: path.relative(directory, absolute),\n absolute,\n stat: fs.statSync(absolute)\n });\n }\n };\n walk(directory);\n const signature = JSON.stringify(\n files.map(({ relative, stat }) => [relative, stat.size, stat.mtimeMs, stat.ctimeMs])\n );\n const previous = cache.get(directory);\n if (previous?.signature === signature) return previous.revision;\n const hash = createHash(\"sha256\");\n for (const file of files)\n hash\n .update(file.relative)\n .update(\"\\0\")\n .update(new Uint8Array(fs.readFileSync(file.absolute)))\n .update(\"\\0\");\n const revision = hash.digest(\"hex\").slice(0, 24);\n if (cache.size > 1024) cache.clear();\n cache.set(directory, { signature, revision });\n return revision;\n}\n","import { ChildProcess, execFileSync, SpawnOptionsWithoutStdio } from \"child_process\";\nimport os from \"os\";\nimport child_process from \"child_process\";\nimport path from \"path\";\nimport EventEmitter from \"events\";\nimport iconv from \"iconv-lite\";\nimport nodeProcess from \"process\";\n\nexport class StartError extends Error {}\n\nexport class ProcessWrapper extends EventEmitter {\n public process?: ChildProcess;\n public pid?: number;\n private lastExitCode?: number | null;\n private completed = false;\n\n public errMsg = {\n timeoutErr: \"task timeout!\",\n exitErr: \"task error!\",\n startErr: \"task start error!\"\n };\n\n constructor(\n public readonly file: string,\n public readonly args: string[],\n public readonly cwd: string,\n public readonly timeout: number = 0,\n public readonly code = \"utf-8\",\n public readonly option: SpawnOptionsWithoutStdio = {}\n ) {\n super();\n }\n\n public setErrMsg(errMsg: { timeoutErr: string; exitErr: string; startErr: string }) {\n this.errMsg = errMsg;\n }\n\n public start(): Promise<boolean> {\n if (this.process) return Promise.reject(new Error(\"The process is already running\"));\n return new Promise((resolve, reject) => {\n const stdoutDecoder = iconv.decodeStream(this.code);\n const stderrDecoder = iconv.decodeStream(this.code);\n let timeTask: NodeJS.Timeout | undefined;\n let settled = false;\n let spawned = false;\n const settle = (error?: Error) => {\n if (settled) return;\n settled = true;\n if (timeTask) clearTimeout(timeTask);\n if (error) reject(error);\n else resolve(true);\n };\n const subProcess = child_process.spawn(this.file, this.args, {\n stdio: \"pipe\",\n windowsHide: true,\n cwd: path.normalize(this.cwd),\n ...this.option\n });\n this.process = subProcess;\n this.pid = subProcess.pid;\n this.lastExitCode = undefined;\n this.completed = false;\n\n const fail = (error: Error) => {\n if (settled) return;\n settle(error);\n if (subProcess.pid && subProcess.exitCode === null && subProcess.signalCode === null) {\n try {\n killProcess(subProcess.pid, subProcess);\n } catch (error) {\n console.error(\"[ProcessWrapper kill error]\", error);\n }\n }\n };\n\n subProcess.once(\"spawn\", () => {\n spawned = true;\n this.emit(\"start\", subProcess.pid);\n });\n for (const [source, decoder] of [\n [subProcess.stdout, stdoutDecoder],\n [subProcess.stderr, stderrDecoder]\n ] as const) {\n decoder.on(\"data\", (text) => this.emit(\"data\", text));\n decoder.on(\"error\", fail);\n source.on(\"error\", fail);\n source.pipe(decoder);\n }\n subProcess.stdin.on(\"error\", fail);\n subProcess.once(\"error\", (error) => {\n fail(new Error(`${spawned ? this.errMsg.exitErr : this.errMsg.startErr} ${error.message}`));\n });\n subProcess.once(\"exit\", (code) => {\n this.lastExitCode = code;\n this.emit(\"exit\", code);\n });\n // `close` follows the final stdout/stderr data and also follows a failed spawn.\n subProcess.once(\"close\", (code) => {\n this.lastExitCode = code;\n this.completed = true;\n this.process = undefined;\n settle(code === 0 ? undefined : new Error(this.errMsg.exitErr));\n });\n\n if (this.timeout > 0) {\n timeTask = setTimeout(() => {\n fail(new Error(this.errMsg.timeoutErr));\n }, 1000 * this.timeout);\n }\n });\n }\n\n public getPid() {\n return this.process?.pid;\n }\n\n public write(data?: any) {\n return this.process?.stdin?.write(iconv.encode(data, this.code));\n }\n\n public kill() {\n if (this.process?.pid) killProcess(this.process?.pid, this.process);\n }\n\n public status() {\n return this.completed;\n }\n\n public exitCode() {\n return this.process?.exitCode ?? this.lastExitCode;\n }\n}\n\nexport function killProcess(\n pid: string | number,\n process: { kill(signal?: any): any },\n signal?: any\n) {\n const numericPid = Number(pid);\n if (!Number.isSafeInteger(numericPid) || numericPid <= 0) {\n throw new Error(\"Invalid process ID\");\n }\n try {\n if (os.platform() === \"win32\") {\n execFileSync(\"taskkill\", [\"/PID\", String(numericPid), \"/T\", \"/F\"], { windowsHide: true });\n return true;\n }\n return nodeProcess.kill(numericPid, signal || \"SIGKILL\");\n } catch (err) {\n return signal ? process.kill(signal) : process.kill(\"SIGKILL\");\n }\n}\n","interface IMap {\n size: number;\n forEach: (value: any, key?: any) => void;\n}\n\ninterface Page<T> {\n page: number;\n pageSize: number;\n maxPage: number;\n total: number;\n data: T[];\n}\n\nfunction paginate<T>(data: T[], page: number, pageSize: number): Page<T> {\n if (!Number.isSafeInteger(page) || page < 1 || !Number.isSafeInteger(pageSize) || pageSize < 1) {\n throw new RangeError(\"page and pageSize must be positive integers\");\n }\n const start = (page - 1) * pageSize;\n return {\n page,\n pageSize,\n maxPage: Math.ceil(data.length / pageSize),\n total: data.length,\n data: data.slice(start, start + pageSize)\n };\n}\n\n// Provide the MAP query interface used by the routing layer\nexport class QueryMapWrapper {\n constructor(public map: IMap) {}\n\n select<T>(condition: (v: T) => boolean): T[] {\n const result: T[] = [];\n this.map.forEach((v: T) => {\n if (condition(v)) result.push(v);\n });\n return result;\n }\n\n page<T>(data: T[], page = 1, pageSize = 10) {\n return paginate(data, page, pageSize);\n }\n}\n\n// Data source interface for QueryWrapper to use\nexport interface IDataSource<T> {\n selectPage: (condition: any, page: number, pageSize: number) => Page<T>;\n select: (condition: any) => any[];\n update: (condition: any, data: any) => void;\n delete: (condition: any) => void;\n insert: (data: any) => void;\n}\n\n// MYSQL data source\nexport class MySqlSource<T> implements IDataSource<T> {\n constructor(public data: any) {}\n selectPage(condition: any, page: number, pageSize: number) {\n return {\n page,\n pageSize,\n maxPage: 0,\n total: 0,\n data: []\n };\n }\n select(condition: any) {\n return [];\n }\n update(condition: any, data: any) {}\n delete(condition: any) {}\n insert(data: any) {}\n}\n\n// local file data source (embedded microdatabase)\nexport class LocalFileSource<T> implements IDataSource<T> {\n constructor(public data: any) {}\n\n selectPage(condition: any, page = 1, pageSize = 10) {\n return this.page(this.select(condition), page, pageSize);\n }\n\n page(data: T[], page = 1, pageSize = 10) {\n return paginate(data, page, pageSize);\n }\n\n select(condition: Record<string, unknown> = {}): T[] {\n const result: T[] = [];\n const entries = Object.entries(condition);\n this.data.forEach((v: any) => {\n for (const [key, targetValue] of entries) {\n const dataValue = v[key];\n if (\n typeof targetValue === \"string\" &&\n targetValue.startsWith(\"%\") &&\n targetValue.endsWith(\"%\")\n ) {\n if (typeof dataValue !== \"string\" || !dataValue.includes(targetValue.slice(1, -1)))\n return;\n } else if (targetValue !== dataValue) {\n return;\n }\n }\n result.push(v);\n });\n return result;\n }\n update(condition: any, data: any) {}\n delete(condition: any) {}\n insert(data: any) {}\n}\n\n// Provide the unified data query interface used by the routing layer\nexport class QueryWrapper<T> {\n constructor(public dataSource: IDataSource<T>) {}\n\n selectPage(condition: any, page = 1, pageSize = 10) {\n return this.dataSource.selectPage(condition, page, pageSize);\n }\n}\n","import fs from \"node:fs\";\nimport os from \"node:os\";\nimport path from \"node:path\";\nimport type { PluginDiscoveryRoot } from \"./plugin_manifest\";\n\n/** Set by the npm worker before any application module is loaded. */\nexport function isPackagedRuntime(): boolean {\n return Boolean(process.env.EPANEL_PACKAGE_ROOT);\n}\n\n/** Code and bundled assets belong to the package; cwd always belongs to the user. */\nexport function packagePath(...parts: string[]): string {\n return path.resolve(process.env.EPANEL_PACKAGE_ROOT || process.cwd(), ...parts);\n}\n\nfunction npmPluginRoots(side?: \"panel\" | \"daemon\"): PluginDiscoveryRoot[] {\n // The same resolver is used by the CLI before the bundled application starts.\n // A development checkout keeps it in the repository, beside the side packages,\n // so project-installed npm plugins work there as well.\n const runtimeRequire = eval(\"require\") as NodeRequire;\n const resolver = isPackagedRuntime()\n ? packagePath(\"runtime/npm-plugins.cjs\")\n : path.resolve(packagePath(), \"..\", \"scripts\", \"runtime\", \"npm-plugins.cjs\");\n // A development process may run from a fixture directory without a runtime\n // package; there is nothing to resolve in that case.\n if (!fs.existsSync(path.join(packagePath(), \"package.json\"))) return [];\n if (!isPackagedRuntime() && !fs.existsSync(resolver)) return [];\n const { resolveNpmPlugins } = runtimeRequire(resolver);\n return resolveNpmPlugins(packagePath(), side, { skipInvalid: true }).map((record: any) => ({\n directory: record.directory,\n ...(record.folder ? { folder: record.folder } : {}),\n // Built-in packages are part of the runtime's default configuration. A\n // project dependency is installed but remains dormant until the user\n // enables it through the plugin configuration service.\n defaultEnabled: record.defaultEnabled !== false\n }));\n}\n\nexport function packagePluginRoots(side: \"panel\" | \"daemon\"): PluginDiscoveryRoot[] {\n const roots: PluginDiscoveryRoot[] = isPackagedRuntime()\n ? []\n : [{ directory: packagePath(\"plugins\"), defaultEnabled: true }];\n // Project-installed npm plugins load in development too: they are dependencies\n // of the development project, not of the published runtime package.\n roots.push(...npmPluginRoots(side));\n return roots;\n}\n\nexport function isPackagePlugin(directory: string): boolean {\n return npmPluginRoots().some((root) => {\n const relative = path.relative(root.directory, path.resolve(directory));\n return (\n relative === \"\" ||\n (!relative.startsWith(`..${path.sep}`) && relative !== \"..\" && !path.isAbsolute(relative))\n );\n });\n}\n\nexport function bundledToolPath(name: string): string {\n const platform = os.platform();\n const arch = os.arch();\n const suffix = platform === \"win32\" ? \".exe\" : \"\";\n const filename = `${name}_${platform}_${arch}${suffix}`;\n // Published daemon packages download native tools into the installation's\n // writable lib directory on first start. Development checkouts use the same\n // repository-local sibling of data and logs.\n const root = isPackagedRuntime() ? path.resolve(process.cwd(), \"lib\") : packagePath(\"lib\");\n const primary = path.join(root, filename);\n // Zip-Tools names its Intel macOS binary \"amd64\", while Node reports \"x64\".\n if (!fs.existsSync(primary) && name === \"file_zip\" && platform === \"darwin\" && arch === \"x64\") {\n const alternate = path.join(root, \"file_zip_darwin_amd64\");\n if (fs.existsSync(alternate)) return alternate;\n }\n return primary;\n}\n\n/** Published binaries already carry executable permissions, including in read-only installs. */\nexport function ensureExecutable(filename: string): void {\n if (os.platform() === \"win32\") return;\n try {\n fs.accessSync(filename, fs.constants.X_OK);\n } catch {\n fs.chmodSync(filename, 0o755);\n }\n}\n","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 os from \"os\";\nimport osUtils from \"os-utils\";\nimport fs from \"fs\";\n\ninterface IInfoTable {\n [key: string]: number;\n}\n\ninterface ISystemInfo {\n cpuUsage: number;\n memUsage: number;\n totalmem: number;\n freemem: number;\n type: string;\n hostname: string;\n platform: string;\n release: string;\n uptime: number;\n cwd: string;\n processCpu: number;\n processMem: number;\n loadavg: number[];\n}\n\n// System details are updated every time\nconst info: ISystemInfo = {\n type: os.type(),\n hostname: os.hostname(),\n platform: os.platform(),\n release: os.release(),\n uptime: os.uptime(),\n cwd: process.cwd(),\n loadavg: os.loadavg(),\n freemem: 0,\n cpuUsage: 0,\n memUsage: 0,\n totalmem: 0,\n processCpu: 0,\n processMem: 0\n};\n\nlet previousCpu = process.cpuUsage();\nlet previousTime = process.hrtime.bigint();\n\n// periodically refresh the cache\nfunction refresh() {\n const now = process.hrtime.bigint();\n const cpu = process.cpuUsage();\n const elapsed = Number(now - previousTime) / 1000;\n info.processCpu =\n elapsed > 0 ? (cpu.user - previousCpu.user + cpu.system - previousCpu.system) / elapsed : 0;\n previousCpu = cpu;\n previousTime = now;\n info.uptime = os.uptime();\n info.loadavg = os.loadavg();\n info.processMem = process.memoryUsage().rss;\n if (os.platform() === \"linux\") {\n return setLinuxSystemInfo();\n }\n return otherSystemInfo();\n}\n\nrefresh();\nsetInterval(refresh, 3000).unref();\n\nfunction otherSystemInfo() {\n info.freemem = os.freemem();\n info.totalmem = os.totalmem();\n info.memUsage = (os.totalmem() - os.freemem()) / os.totalmem();\n osUtils.cpuUsage((p) => (info.cpuUsage = p));\n}\n\nfunction setLinuxSystemInfo() {\n try {\n // read memory data based on /proc/meminfo\n const data = fs.readFileSync(\"/proc/meminfo\", { encoding: \"utf-8\" });\n const list = data.split(\"\\n\");\n const infoTable: IInfoTable = {};\n list.forEach((line) => {\n const kv = line.split(\":\");\n if (kv.length === 2) {\n const k = kv[0].replace(/ /gim, \"\").replace(/\\t/gim, \"\").trim().toLowerCase();\n let v = kv[1].replace(/ /gim, \"\").replace(/\\t/gim, \"\").trim().toLowerCase();\n v = v.replace(/kb/gim, \"\").replace(/mb/gim, \"\").replace(/gb/gim, \"\");\n let vNumber = parseInt(v);\n if (isNaN(vNumber)) vNumber = 0;\n infoTable[k] = vNumber;\n }\n });\n const memAvailable = infoTable[\"memavailable\"] ?? infoTable[\"memfree\"];\n const memTotal = infoTable[\"memtotal\"];\n info.freemem = memAvailable * 1024;\n info.totalmem = memTotal * 1024;\n info.memUsage = (info.totalmem - info.freemem) / info.totalmem;\n osUtils.cpuUsage((p) => (info.cpuUsage = p));\n } catch (error: any) {\n // If the reading is wrong, the default general reading method is automatically used\n otherSystemInfo();\n }\n}\n\nexport function systemInfo() {\n return info;\n}\n","import { randomUUID } from \"crypto\";\nimport path from \"path\";\nimport fs from \"fs-extra\";\n\nexport default class StorageSubsystem {\n public static readonly DATA_PATH = path.resolve(process.cwd(), \"data\");\n public static readonly INDEX_PATH = path.join(StorageSubsystem.DATA_PATH, \"Index\");\n\n private resolvePath(name: string) {\n if (\n typeof name !== \"string\" ||\n !name ||\n /[\\0:]/.test(name) ||\n path.isAbsolute(name) ||\n path.win32.isAbsolute(name)\n ) {\n throw new Error(`Invalid storage path: ${name}`);\n }\n const target = path.resolve(StorageSubsystem.DATA_PATH, name);\n const relative = path.relative(StorageSubsystem.DATA_PATH, target);\n if (\n !relative ||\n relative === \"..\" ||\n relative.startsWith(`..${path.sep}`) ||\n path.isAbsolute(relative)\n ) {\n throw new Error(`Invalid storage path: ${name}`);\n }\n const realRelative = path.relative(\n this.realPath(StorageSubsystem.DATA_PATH),\n this.realPath(target)\n );\n if (\n realRelative === \"..\" ||\n realRelative.startsWith(`..${path.sep}`) ||\n path.isAbsolute(realRelative)\n ) {\n throw new Error(`Invalid storage path: ${name}`);\n }\n return target;\n }\n\n private realPath(target: string): string {\n if (fs.existsSync(target)) return fs.realpathSync(target);\n const parent = path.dirname(target);\n return parent === target ? target : path.join(this.realPath(parent), path.basename(target));\n }\n\n private entityPath(category: string, uuid: string) {\n if (typeof uuid !== \"string\" || !uuid || /[\\\\/\\0:]/.test(uuid) || uuid.includes(\"..\")) {\n throw new Error(`UUID ${uuid} does not conform to specification`);\n }\n this.resolvePath(category);\n return path.join(category, `${uuid}.json`);\n }\n\n public writeFile(name: string, data: string) {\n const targetPath = this.resolvePath(name);\n fs.ensureDirSync(path.dirname(targetPath));\n const temporaryPath = `${targetPath}.${randomUUID()}.tmp`;\n const mode = fs.existsSync(targetPath) ? fs.statSync(targetPath).mode : 0o600;\n try {\n fs.writeFileSync(temporaryPath, data, { encoding: \"utf8\", flag: \"wx\", mode });\n fs.renameSync(temporaryPath, targetPath);\n } finally {\n if (fs.existsSync(temporaryPath)) fs.unlinkSync(temporaryPath);\n }\n }\n\n public readFile(name: string) {\n return fs.readFileSync(this.resolvePath(name), \"utf8\");\n }\n\n public readDir(dirName: string) {\n const targetPath = this.resolvePath(dirName);\n if (!fs.existsSync(targetPath)) return [];\n return fs.readdirSync(targetPath).map((name) => path.join(dirName, name));\n }\n\n public deleteFile(name: string) {\n fs.removeSync(this.resolvePath(name));\n }\n\n public fileExists(name: string) {\n return fs.existsSync(this.resolvePath(name));\n }\n\n public store(category: string, uuid: string, object: any) {\n this.writeFile(this.entityPath(category, uuid), JSON.stringify(object, null, 4));\n }\n\n // Restore declared fields while keeping defaults for fields absent in older data.\n protected defineAttr(target: any, object: any): any {\n for (const key of Object.keys(target)) {\n if (!Object.prototype.hasOwnProperty.call(object, key) || object[key] === undefined) continue;\n const value = object[key];\n if (\n value !== null &&\n typeof value === \"object\" &&\n !Array.isArray(value) &&\n target[key] !== null &&\n typeof target[key] === \"object\" &&\n !Array.isArray(target[key])\n ) {\n this.defineAttr(target[key], value);\n } else {\n target[key] = value;\n }\n }\n return target;\n }\n\n public load(category: string, classz: any, uuid: string) {\n const file = this.entityPath(category, uuid);\n if (!this.fileExists(file)) return null;\n const object = JSON.parse(this.readFile(file));\n if (!object || typeof object !== \"object\" || Array.isArray(object)) {\n throw new Error(`Invalid stored entity: ${file}`);\n }\n return this.defineAttr(new classz(), object);\n }\n\n public list(category: string) {\n const directory = this.resolvePath(category);\n if (!fs.existsSync(directory)) return [];\n return fs\n .readdirSync(directory, { withFileTypes: true })\n .filter((entry) => entry.isFile() && entry.name.endsWith(\".json\"))\n .map((entry) => entry.name.slice(0, -5));\n }\n\n public delete(category: string, uuid: string) {\n this.deleteFile(this.entityPath(category, uuid));\n }\n}\n","export function configureEntityParams(self: any, args: any, key: string, typeFn?: Function): any {\n const selfDefaultValue = self[key] ?? null;\n const v = args[key] != null ? args[key] : selfDefaultValue;\n\n if (typeFn === Number) {\n if (v === \"\" || v == null) {\n self[key] = null;\n } else {\n if (isNaN(Number(v)))\n throw new Error(\n `ConfigureEntityParams Error: Expected type to be Number, but got ${typeof v}`\n );\n self[key] = Number(v);\n }\n return;\n }\n\n if (typeFn === String) {\n if (v == null) {\n self[key] = null;\n } else {\n self[key] = String(v);\n }\n return;\n }\n\n if (typeFn === Boolean) {\n if (v == null) {\n self[key] = false;\n } else {\n self[key] = Boolean(v);\n }\n return;\n }\n\n if (typeFn) {\n self[key] = typeFn(v);\n } else {\n self[key] = v;\n }\n}\n\nexport function toText(v: any): string | null {\n if (isEmpty(v)) return null;\n return String(v);\n}\n\nexport function toNumber(v: any): number | null {\n if (isEmpty(v)) return null;\n if (isNaN(Number(v))) return null;\n return Number(v);\n}\n\nexport function toBoolean(v: any): boolean | null {\n if (isEmpty(v)) return null;\n return Boolean(v);\n}\n\nexport function isEmpty(v: any): boolean {\n return v === null || v === undefined;\n}\n\nexport function supposeValue<T>(v: any, def?: T) {\n if (isEmpty(v)) return def;\n return v;\n}\n","import type { PluginChangeResult } from \"mcsmanager-common\";\nimport type Router from \"@koa/router\";\nimport { Context } from \"cordis\";\nimport type i18next from \"i18next\";\nimport type Koa from \"koa\";\nimport type { Server } from \"socket.io\";\nimport type { GlobalVariable } from \"mcsmanager-common\";\nimport type { IRemoteService, RemoteMappingEntry } from \"./packets\";\nimport type { ROLE } from \"../../../plugins/runtime/src/backend/roles\";\nimport type validator from \"../../../plugins/runtime/src/backend/middleware/validator\";\nimport type { OperationLoggerItem, OperationLoggerItemPayload } from \"../../types/operation_logger\";\nimport type {\n AuthStats,\n GuardedRoute,\n RequestGuard,\n RequestIdentity,\n UserAccessPolicy,\n UserRecords\n} from \"./guard\";\nimport type { systemConfig } from \"../../../plugins/runtime/src/backend/setting\";\nimport type { LoadedPanelPlugin, PanelFrontendPluginEntry, PanelPluginRecord } from \"./loader\";\n\n/**\n * The panel's cordis container, and the complete list of what a plugin can see.\n *\n * Every capability is a service on the context; every registration a plugin\n * makes is an effect owned by that plugin's scope, so unloading a plugin undoes\n * its contributions and no plugin ever writes cleanup code. `ctx.logger` and the\n * timer helpers (`ctx.setTimeout`, `ctx.setInterval`, `ctx.sleep`,\n * `ctx.throttle`, `ctx.debounce`) come with cordis itself.\n *\n * The declarations below are the API documentation: only `import type` here, so\n * this module stays a leaf that core code can import without a cycle. The\n * runtime values are provided by the foundation plugins (`storage`, `i18n`,\n * and `runtime`).\n */\nexport const ctx = new Context();\n\n/** What a declared setting renders as. `link` reads and writes nothing. */\nexport type PanelSettingFieldType =\n | \"string\"\n /** Multi-line string. */\n | \"text\"\n | \"number\"\n | \"boolean\"\n | \"select\"\n | \"list\"\n | \"link\";\n\nexport interface PanelSettingOption {\n value: string | number | boolean;\n label: string;\n}\n\n/**\n * One row of a plugin's configuration form, described rather than drawn.\n *\n * Labels are plain strings, already translated: the daemon's plugins are\n * rendered by this same form, and the browser has no copy of a daemon plugin's\n * catalogue. Whoever declares the field resolves it.\n */\nexport interface PanelSettingField {\n /** The key in `read()`'s result and `write()`'s argument. Absent for `link`. */\n key?: string;\n type: PanelSettingFieldType;\n title: string;\n description?: string;\n placeholder?: string;\n /** `number`: inclusive bounds, enforced by the form and by `write()`. */\n min?: number;\n max?: number;\n /** `select`: the allowed values. */\n options?: PanelSettingOption[];\n /** `string`: render as a password input. */\n secret?: boolean;\n /** `string`: offer the installed file manager's upload dialog. */\n fileUpload?: boolean;\n /**\n * Shown only while every listed condition holds. A condition is either a field\n * name, true when that field is truthy, or `\"name=value\"`, true when that\n * field's value stringifies to `value`.\n */\n visibleWhen?: string | string[];\n /** `link`: a frontend route the form offers as a button. */\n route?: string;\n /** `list`: an editable array of objects, each rendered using these fields. */\n fields?: PanelSettingField[];\n maxItems?: number;\n itemTitleKey?: string;\n listEditor?: \"inline\" | \"dialog\";\n addLabel?: string;\n editLabel?: string;\n removeLabel?: string;\n required?: boolean;\n}\n\n/**\n * A plugin's configuration, as its backend declares it.\n *\n * `fields` is a function so that it is resolved per request: a plugin's titles\n * come from its own catalogue, and the panel's language can change while it runs.\n */\nexport interface PanelSettingsDeclaration {\n /** Changes to this form require a process restart. */\n restartRequired?: boolean;\n fields(): PanelSettingField[];\n read(): Record<string, unknown> | Promise<Record<string, unknown>>;\n write(values: Record<string, unknown>): void | Promise<void>;\n}\n\n/** One plugin's form and its current values, as the page fetches them. */\nexport interface PanelSettingsSchema {\n id: string;\n fields: PanelSettingField[];\n values: Record<string, unknown>;\n}\n\n/** Panel settings, plus the call that persists them. */\nexport interface PanelSettingsService {\n readonly config: NonNullable<typeof systemConfig>;\n save(): Promise<void>;\n}\n\n/** Entity and file persistence supplied by `plugins/storage`. */\nexport interface PanelStorageService {\n readonly TYPE: { readonly FILE: 0; readonly REDIS: 1 };\n getStorage(): {\n store(category: string, uuid: string, object: any): Promise<void>;\n load(category: string, classz: any, uuid: string): Promise<any>;\n list(category: string): Promise<string[]>;\n delete(category: string, uuid: string): Promise<void>;\n };\n setStorageType(type: number): void;\n initialize(url: string): Promise<void>;\n readDir(category: string): string[];\n readFile(name: string): string;\n writeFile(name: string, data: string): void;\n}\n\n/**\n * The register of plugin configuration forms.\n *\n * A plugin describes its settings here instead of shipping a component for them,\n * which is what lets one generic form render a panel plugin's configuration and a\n * daemon plugin's alike — the browser has no copy of a daemon plugin at all.\n */\nexport interface PanelSettingsFormService {\n /** Declares the calling plugin's form. An effect: it leaves with the plugin. */\n declare(declaration: PanelSettingsDeclaration): () => void;\n /** The ids that declared a form, in declaration order. */\n declared(): string[];\n /** One plugin's fields and values, or `null` when it declared nothing. */\n read(id: string): Promise<PanelSettingsSchema | null>;\n /** Hands `values` to that plugin's own `write()`. */\n write(id: string, values: Record<string, unknown>): Promise<PluginChangeResult>;\n}\n\n/** Translation, and the way a plugin contributes its own strings. */\nexport interface PanelI18nService {\n readonly $t: typeof i18next.t;\n readonly i18next: typeof i18next;\n /**\n * Merge the plugin's translations, keyed by locale (`en_us`, `zh_cn`, ...).\n * Removed again when the plugin unloads, so its strings arrive and leave with\n * it instead of living in the foundational `plugins/i18n` catalogue.\n */\n define(messages: Record<string, Record<string, unknown>>): () => void;\n}\n\n/**\n * The panel's Koa application. `use()` and `router()` are scoped to the calling\n * plugin: both are removed when it unloads, which is why the web server mounts\n * one composed stack for each of them when it starts rather than calling\n * `app.use()` per registration.\n *\n * Provided by `plugins/server`, which owns the application itself.\n */\nexport interface PanelKoaService {\n readonly app: Koa;\n /** Adds a middleware, ahead of feature-plugin routers. */\n use(middleware: Koa.Middleware): () => void;\n /** Creates a router owned by the calling plugin and mounts it. */\n router(prefix?: string): Router;\n}\n\n/**\n * The panel's browser-facing Socket.IO server. It shares the HTTP listener and\n * its path prefix; plugins attach their own authentication middleware and rooms.\n */\nexport interface PanelWebsocketService {\n readonly io: Server;\n}\n\n/** The shared request middleware. Policy comes from the installed guard. */\nexport interface PanelMiddlewareService {\n permission(route: GuardedRoute): Koa.Middleware;\n readonly validator: typeof validator;\n readonly instanceAccess: Koa.Middleware;\n /** Per-caller rate limit; elevated callers pass through. */\n speedLimit(seconds: number, errMsg?: string): Koa.Middleware;\n requestConcurrencyLimiter(url: string): Koa.Middleware;\n}\n\n/** The stored configuration of one daemon node, as the panel reads it. */\nexport interface PanelRemoteNodeConfig {\n ip: string;\n port: number;\n prefix: string;\n remarks: string;\n apiKey: string;\n brand: string;\n remoteMappings: RemoteMappingEntry[];\n /** `ip:port`. */\n readonly addr: string;\n /** The prefix, trimmed and without a trailing slash. */\n readonly canonicalPrefix: string;\n /** `addr` plus `canonicalPrefix` — what a client is told to connect to. */\n readonly fullAddr: string;\n /** The mappings in the `{ addr, prefix }` shape responses use. */\n getConvertedRemoteMappings(): Array<{\n from: { addr: string; prefix: string };\n to: { addr: string; prefix: string };\n }>;\n}\n\n/** One daemon node: its identity, its connection state and its socket. */\nexport interface PanelRemoteNode {\n readonly uuid: string;\n /** Whether the daemon is connected *and* authenticated. */\n readonly available: boolean;\n readonly config: PanelRemoteNodeConfig;\n connect(): void;\n disconnect(): void;\n refreshReconnect(): void;\n setLanguage(language?: string): Promise<unknown>;\n}\n\n/** The set of daemon nodes this panel knows about. */\nexport interface PanelRemoteSubsystem {\n readonly services: ReadonlyMap<string, PanelRemoteNode>;\n getInstance(uuid: string): PanelRemoteNode | undefined;\n count(): { available: number; total: number };\n changeDaemonLanguage(language: string): void;\n registerRemoteService(config: IRemoteService): Promise<PanelRemoteNode>;\n deleteRemoteService(uuid: string): Promise<void>;\n edit(uuid: string, config: IRemoteService): Promise<void>;\n newInstance(config: IRemoteService): Promise<PanelRemoteNode>;\n initConnectLocalhost(key?: string): Promise<PanelRemoteNode | undefined>;\n}\n\n/** One request/response round trip to a daemon over its socket. */\nexport interface PanelRemoteRequest {\n request<T = any>(event: string, data?: any, timeout?: number, force?: boolean): Promise<T>;\n}\n\n/**\n * The daemon nodes: the subsystem that tracks them and the request helper.\n *\n * **Provided by `plugins/node`.** The core declares only the shape it needs and\n * exposes it through this contract, so removing that\n * plugin removes the panel's ability to reach a daemon rather than breaking the\n * build.\n */\nexport interface PanelRemoteService {\n readonly services: PanelRemoteSubsystem;\n readonly Request: new (service?: PanelRemoteNode) => PanelRemoteRequest;\n /** The error a timed-out request throws, so a caller can recognise it. */\n readonly RequestTimeoutError: new (msg: string) => Error;\n}\n\n/**\n * Identity and user capabilities reported by whichever guard is installed.\n * Always present: an unguarded panel reports one anonymous, elevated caller,\n * so no consumer has to branch on whether authentication exists.\n */\nexport interface PanelIdentityService {\n of(requestCtx: Koa.ParameterizedContext): RequestIdentity;\n canAccessInstance(\n requestCtx: Koa.ParameterizedContext,\n daemonId: string,\n instanceUuid: string\n ): boolean;\n readonly accessPolicy: UserAccessPolicy;\n /** Account records, present only while a guard plugin provides them. */\n readonly users: UserRecords | undefined;\n readonly stats: AuthStats;\n}\n\n/** Fields a plugin adds to `GET /api/overview`. */\nexport type PanelOverviewProvider = () =>\n | Record<string, unknown>\n | Promise<Record<string, unknown>>;\n\nexport interface PanelOverviewService {\n /**\n * Contribute extra fields to an overview payload. The owning feature plugin\n * decides which base fields it serves; anything collected purely for display\n * lives in a plugin and disappears with it.\n */\n provide(provider: PanelOverviewProvider): () => void;\n collect(): Promise<Record<string, unknown>>;\n}\n\n/** Operation records are owned by the monitor plugin and shared by feature plugins. */\nexport interface PanelOperationLogger {\n log<T extends keyof OperationLoggerItemPayload>(\n type: T,\n payload: Omit<\n OperationLoggerItemPayload[T],\n \"operation_id\" | \"operation_time\" | \"operation_level\"\n >,\n level?: \"info\" | \"warning\" | \"error\"\n ): string;\n info<T extends keyof OperationLoggerItemPayload>(\n type: T,\n payload: Omit<\n OperationLoggerItemPayload[T],\n \"operation_id\" | \"operation_time\" | \"operation_level\"\n >\n ): string;\n warning<T extends keyof OperationLoggerItemPayload>(\n type: T,\n payload: Omit<\n OperationLoggerItemPayload[T],\n \"operation_id\" | \"operation_time\" | \"operation_level\"\n >\n ): string;\n error<T extends keyof OperationLoggerItemPayload>(\n type: T,\n payload: Omit<\n OperationLoggerItemPayload[T],\n \"operation_id\" | \"operation_time\" | \"operation_level\"\n >\n ): string;\n get(limit?: number): Promise<OperationLoggerItem[]>;\n getByInstance(\n instanceId: string,\n daemonId: string,\n limit?: number\n ): Promise<OperationLoggerItem[]>;\n}\n\n/** What is installed and what is loaded, plus the switch that decides. */\nexport interface PanelPluginsService {\n readonly loaded: readonly LoadedPanelPlugin[];\n /** The manifest the browser fetches to discover frontend entries. */\n frontendManifest(): PanelFrontendPluginEntry[];\n /** Every installed plugin, disabled ones included. */\n inventory(): PanelPluginRecord[];\n /**\n * Turns a plugin on or off: persists the switch in data/plugin-overrides.json and\n * applies it to the running panel. Disabling disposes the backend scope, so\n * its routes, middleware, timers and services go with it.\n */\n setEnabled(id: string, enabled: boolean): Promise<PanelPluginRecord>;\n /** Unloads and removes an installed panel plugin package. */\n remove(id: string): Promise<void>;\n configure(id: string, config: Record<string, unknown>): Promise<PanelPluginRecord>;\n configuration(id: string): PanelSettingsSchema;\n runExclusive<T>(operation: () => Promise<T>): Promise<T>;\n /**\n * Re-scans the plugin directories: a plugin that has appeared since startup is\n * installed, one that is gone or disabled is disposed. Development only.\n */\n reload(): Promise<readonly LoadedPanelPlugin[]>;\n}\n\ndeclare module \"cordis\" {\n interface Context {\n // Shared services supplied by foundation plugins before feature plugins load.\n settings: PanelSettingsService;\n storage: PanelStorageService;\n i18n: PanelI18nService;\n middleware: PanelMiddlewareService;\n roles: typeof ROLE;\n identity: PanelIdentityService;\n // Feature services are provided by their owning plugins.\n settingsForm: PanelSettingsFormService;\n operations: PanelOperationLogger;\n /** Instance details, without account data, provided by the `instance` plugin. */\n instances: {\n getDetails(instances: readonly { instanceUuid: string; daemonId: string }[]): Promise<any[]>;\n /** @deprecated Resolve profiles through the account service instead. */\n getByUuid(uuid: string, targetDaemonId?: string, advanced?: boolean): Promise<any>;\n };\n globals: typeof GlobalVariable;\n overview: PanelOverviewService;\n plugins: PanelPluginsService;\n\n // Provided by plugins. Resolve optional services with `get()` or declare an `inject` dependency.\n /**\n * The Koa application every route in the panel is mounted on. Provided by\n * `plugins/server`, the web server — without it the panel listens on\n * nothing, so almost every plugin injects it.\n */\n koa: PanelKoaService;\n /** Browser-facing Socket.IO transport, provided by `plugins/server`. */\n websocket: PanelWebsocketService;\n /**\n * The daemon nodes. Provided by `plugins/node`, which owns the subsystem —\n * the panel reaches no daemon without it.\n */\n remote: PanelRemoteService;\n /** Request authorization for the whole panel. Provided by `plugins/user`. */\n guard: RequestGuard;\n }\n}\n\n/** The context a panel plugin's `apply()` receives. */\nexport type PanelPluginContext = Context;\n","import fs from \"fs-extra\";\nimport path from \"path\";\nimport { pathToFileURL } from \"url\";\nimport {\n packagePluginRoots,\n isPackagePlugin,\n pluginDirectoryRevision,\n createFrontendPluginMetadata,\n applyPluginOverrides,\n writePluginOverride,\n validatePluginCompatibility,\n validatePluginSettings,\n createPluginQueue,\n trackPluginDisposal,\n type PluginState,\n type PluginChangeResult,\n discoverPluginsFromRoots,\n sortPlugins,\n type DiscoverPluginsOptions,\n type DiscoveredPlugin,\n type PluginManifest\n} from \"mcsmanager-common\";\nimport { Logger, type ForkScope } from \"cordis\";\nimport { ctx, type PanelPluginContext, type PanelSettingsSchema } from \"./context\";\n\n/**\n * Turns the plugin directories into cordis plugins.\n *\n * Discovery is shared with the daemon and the frontend build\n * (`mcsmanager-common`); everything past it is cordis: each plugin module is\n * handed to `ctx.plugin()`, which resolves its `inject` list, calls `apply()`\n * with a scope of its own, and undoes every effect that scope registered when it\n * is disposed. A plugin that throws is isolated by cordis and reported through\n * `ctx.logger`, so the panel keeps running.\n */\n\nconst logger = new Logger(\"plugin\");\nconst change = createPluginQueue();\nconst settle = trackPluginDisposal(ctx);\nconst unloading = new Set<string>();\nconst codeRevisions = new Map<string, string>();\n\nconst ENTRY_FIELDS = [\"panel\", \"backend\", \"main\", \"entry\"];\nconst ENTRY_CANDIDATES = [\n \"src/index.js\",\n \"src/index.cjs\",\n \"src/index.mjs\",\n \"src/panel.js\",\n \"src/panel.cjs\",\n \"src/panel.mjs\"\n];\nconst FOUNDATION_PLUGIN_IDS = new Set([\"i18n\", \"storage\", \"runtime\"]);\nconst ESSENTIAL_PLUGIN_IDS = new Set([\"i18n\", \"storage\", \"runtime\", \"console\"]);\n\n/** A panel plugin module, as its backend entry exports it. */\nexport interface PanelPluginModule {\n /** Services the plugin cannot work without. cordis waits for them to appear. */\n inject?: string[] | Record<string, { required: boolean }>;\n apply(ctx: PanelPluginContext, config?: unknown): void | Promise<void>;\n}\n\nexport interface LoadedPanelPlugin {\n manifest: PluginManifest;\n directory: string;\n folder: string;\n /** Absent for a plugin that only contributes a frontend. */\n entry?: string;\n backendRevision?: string;\n restartRequired?: boolean;\n fork?: ForkScope;\n error?: Error;\n}\n\n/** One entry of `/plugins/manifest.json`, as the browser consumes it. */\nexport interface PanelFrontendPluginEntry {\n metadata: ReturnType<typeof createFrontendPluginMetadata>;\n directory: string;\n assetDirectory: string;\n entry: string;\n styles: string[];\n revision: string;\n /** Filesystem location; stripped from HTTP responses. */\n frontendDirectory: string;\n}\n\nconst loaded: LoadedPanelPlugin[] = [];\nconst frontendManifestWarnings = new Set<string>();\n\nfunction warnFrontendManifest(message: string, error?: unknown) {\n const detail = error instanceof Error ? `${error.name}:${error.message}` : String(error || \"\");\n const signature = `${message}\\0${detail}`;\n if (frontendManifestWarnings.has(signature)) return;\n frontendManifestWarnings.add(signature);\n if (error === undefined) logger.warn(message);\n else logger.warn(message, error);\n}\n\nfunction discoverPanelPlugins(options: DiscoverPluginsOptions) {\n // Only npm packages are plugins now: the published runtime resolves its own\n // dependencies, and a development checkout resolves the source packages that\n // the side package ships. Legacy data/plugins and market_plugins directories\n // are deliberately not read any more.\n return applyPluginOverrides(\n discoverPluginsFromRoots(packagePluginRoots(\"panel\"), {\n ...options,\n includeDisabled: true\n })\n ).filter((plugin) => options.includeDisabled || plugin.manifest.enabled !== false);\n}\n\n/** Exposes the loader's own registry without pulling it into a plugin bundle. */\nfunction ensurePanelPluginService() {\n if (ctx.get(\"plugins\")) return;\n ctx.provide(\"plugins\", undefined, true);\n ctx.set(\"plugins\", {\n get loaded() {\n return getLoadedPanelPlugins();\n },\n frontendManifest: getPanelFrontendManifest,\n inventory: getPanelPluginInventory,\n setEnabled: setPanelPluginEnabled,\n remove: removePanelPlugin,\n configure: configurePanelPlugin,\n configuration: (id: string): PanelSettingsSchema => {\n const manifest = findPlugin(id).manifest;\n return {\n id,\n fields: (Array.isArray(manifest.configFields)\n ? manifest.configFields\n : []) as PanelSettingsSchema[\"fields\"],\n values: (manifest.config || {}) as Record<string, unknown>\n };\n },\n runExclusive: change,\n reload: reloadPanelPlugins\n });\n}\n\n/**\n * The plugin object a module exports, whether as named exports or as `default`.\n *\n * Only an object counts: every function has `Function.prototype.apply`, so a\n * module whose default export is a function would otherwise be mistaken for a\n * plugin and then called with the context as `this`.\n */\nfunction toModule(value: any, id: string): PanelPluginModule | undefined {\n for (const candidate of [value, value?.default]) {\n if (typeof candidate !== \"object\" || candidate === null) continue;\n if (typeof candidate.apply === \"function\") return candidate;\n }\n logger.warn(`Panel plugin \"${id}\" must export an apply() function.`);\n return undefined;\n}\n\nasync function loadModule(entry: string): Promise<unknown> {\n try {\n // eval keeps webpack from trying to bundle files supplied at runtime.\n const runtimeRequire = eval(\"require\") as NodeRequire;\n return runtimeRequire(entry);\n } catch (error: any) {\n if (error?.code !== \"ERR_REQUIRE_ESM\") throw error;\n const dynamicImport = new Function(\"specifier\", \"return import(specifier)\") as (\n specifier: string\n ) => Promise<unknown>;\n return dynamicImport(pathToFileURL(entry).href);\n }\n}\n\n/**\n * Drops a plugin's entry module from the require cache, so the next `require()`\n * of it runs the file that is on disk rather than the copy an earlier run left\n * behind.\n */\nfunction forgetCachedModule(entry?: string) {\n if (!entry) return;\n // eval keeps webpack from trying to bundle files supplied at runtime.\n const runtimeRequire = eval(\"require\") as NodeRequire;\n delete runtimeRequire.cache[entry];\n}\n\n/** Requires one plugin's backend entry and hands it to cordis. */\nasync function installPlugin(plugin: DiscoveredPlugin): Promise<LoadedPanelPlugin> {\n const record: LoadedPanelPlugin = { ...plugin };\n if (!plugin.entry) return record;\n try {\n record.backendRevision = pluginDirectoryRevision(path.dirname(plugin.entry));\n validatePluginCompatibility(plugin.manifest.elements);\n const previousRevision = codeRevisions.get(plugin.manifest.id);\n if (previousRevision && previousRevision !== record.backendRevision) {\n record.restartRequired = true;\n return record;\n }\n codeRevisions.set(plugin.manifest.id, record.backendRevision!);\n const module = toModule(await loadModule(plugin.entry), plugin.manifest.id);\n if (!module) throw new Error(`Plugin \"${plugin.manifest.id}\" must export apply().`);\n // Plugins are applied one at a time, in `priority` order, and an async\n // `apply()` is awaited before the next plugin starts.\n //\n // cordis catches a synchronous throw from `apply()` and cancels the scope\n // itself, so the wrapper keeps a copy of it: without that, a plugin that\n // failed on its first line would still be reported as loaded.\n let applied: unknown;\n let thrown: unknown;\n // The manifest id is the plugin's name, so `ctx.name` — which is what\n // appears in its log lines — always matches `plugin.json`.\n record.fork = ctx.plugin(\n {\n ...module,\n name: plugin.manifest.id,\n apply: (...args) => {\n try {\n return (applied = module.apply(...args));\n } catch (error) {\n thrown = error;\n throw error;\n }\n }\n },\n plugin.manifest.config\n );\n if (thrown) throw thrown;\n await applied;\n logger.info(`Panel plugin loaded: ${plugin.manifest.id}`);\n } catch (error: any) {\n // Failure is atomic: whatever the plugin managed to register before it threw\n // goes with its scope, so a half-loaded plugin never stays behind — a plugin\n // that had already claimed the request guard, in particular.\n record.error = error instanceof Error ? error : new Error(String(error));\n record.fork?.dispose();\n record.fork = undefined;\n logger.error(`Panel plugin failed to load: ${plugin.manifest.id}`, error);\n }\n return record;\n}\n\n/** Discovers, requires and installs every enabled plugin, in manifest order. */\nexport async function loadPanelPlugins(): Promise<readonly LoadedPanelPlugin[]> {\n ensurePanelPluginService();\n const discovered = discoverPanelPlugins({\n entryFields: ENTRY_FIELDS,\n entryCandidates: ENTRY_CANDIDATES,\n onWarning: (message, error) => logger.warn(message, error)\n });\n for (const plugin of discovered) {\n if (loaded.some((record) => record.manifest.id === plugin.manifest.id)) continue;\n loaded.push(await installPlugin(plugin));\n }\n sortPlugins(loaded);\n return loaded;\n}\n\n/**\n * Re-scans the plugin directories and reconciles them with what is running: a\n * plugin that has appeared since startup is installed, and one whose directory\n * is gone — or whose manifest now says `enabled: false` — is disposed.\n *\n * This is safe for newly installed, removed and disabled packaged plugins in a\n * production process. It deliberately does not replace code that has already\n * run: `installPlugin()` compares backend revisions and leaves a changed plugin\n * in `restart-required` state instead.\n *\n * The browser half needs nothing here: Vite watches source checkouts, while a\n * production browser receives the changed frontend manifest over plugin SSE.\n */\nexport async function reloadPanelPlugins(): Promise<readonly LoadedPanelPlugin[]> {\n return change(async () => {\n ensurePanelPluginService();\n const discovered = discoverPanelPlugins({\n entryFields: ENTRY_FIELDS,\n entryCandidates: ENTRY_CANDIDATES,\n onWarning: (message, error) => logger.warn(message, error)\n });\n\n const installed = new Set(discovered.map((plugin) => plugin.manifest.id));\n for (let index = loaded.length - 1; index >= 0; index--) {\n const record = loaded[index];\n if (installed.has(record.manifest.id)) continue;\n await removeRunning(record.manifest.id);\n logger.info(`Panel plugin unloaded: ${record.manifest.id}`);\n }\n\n for (const plugin of discovered) {\n if (loaded.some((record) => record.manifest.id === plugin.manifest.id)) continue;\n // A plugin installed, uninstalled and installed again would otherwise be\n // served the module its first run left behind.\n forgetCachedModule(plugin.entry);\n loaded.push(await installPlugin(plugin));\n }\n sortPlugins(loaded);\n await settle();\n return loaded;\n });\n}\n\n/** Loads one of the small foundation plugins before feature plugins start. */\nexport async function loadPanelFoundationPlugin(id = \"i18n\") {\n ensurePanelPluginService();\n if (!FOUNDATION_PLUGIN_IDS.has(id)) {\n throw new Error(`Panel plugin \"${id}\" is not a foundational plugin.`);\n }\n\n const existing = loaded.find((record) => record.manifest.id === id);\n if (existing) return existing;\n\n const plugin = discoverPanelPlugins({\n entryFields: ENTRY_FIELDS,\n entryCandidates: ENTRY_CANDIDATES,\n onWarning: (message, error) => logger.warn(message, error)\n }).find((candidate) => candidate.manifest.id === id);\n if (!plugin?.entry) throw new Error(`Panel foundation plugin not found: ${id}`);\n\n const record = await installPlugin(plugin);\n loaded.push(record);\n sortPlugins(loaded);\n if (record.error) throw record.error;\n const capability = id === \"i18n\" ? \"i18n\" : id === \"storage\" ? \"storage\" : \"settings\";\n if (!record.fork || !ctx.get(capability)) {\n throw new Error(`Panel foundation plugin failed to initialize: ${id}`);\n }\n return record;\n}\n\nexport function getLoadedPanelPlugins(): readonly LoadedPanelPlugin[] {\n return loaded;\n}\n\n/**\n * The frontend entries the browser can load. Read from the installed plugin\n * directories rather than from what this process loaded, because a plugin may\n * ship only a frontend.\n */\nexport function getPanelFrontendManifest(): PanelFrontendPluginEntry[] {\n const entries: PanelFrontendPluginEntry[] = [];\n for (const plugin of discoverPanelPlugins({\n entryFields: [\"frontend\", \"ui\"],\n onWarning: warnFrontendManifest\n })) {\n // A packaged plugin serves its frontend from `<plugin>/frontend`, and only\n // from there: the manifest must never point the browser at plugin sources.\n if (!plugin.entry || !/^[a-zA-Z0-9_-]+$/.test(plugin.folder)) continue;\n const frontendDirectory = path.resolve(plugin.directory, \"frontend\");\n const inFrontendDirectory = (target: string) =>\n target.startsWith(`${frontendDirectory}${path.sep}`) && fs.existsSync(target);\n if (!inFrontendDirectory(plugin.entry)) continue;\n\n const revision = pluginDirectoryRevision(frontendDirectory);\n const toUrl = (target: string) =>\n `./${plugin.folder}@${revision}/${path\n .relative(plugin.directory, target)\n .split(path.sep)\n .join(\"/\")}`;\n const styles = Array.isArray(plugin.manifest.styles)\n ? plugin.manifest.styles\n .filter((style: unknown): style is string => typeof style === \"string\")\n .map((style) => path.resolve(plugin.directory, style))\n .filter(inFrontendDirectory)\n .map(toUrl)\n : [];\n entries.push({\n // Backend configuration may contain credentials. Browser config is explicit.\n metadata: createFrontendPluginMetadata(plugin.manifest, {\n restartRequired:\n pluginState(\n plugin,\n loaded.find((item) => item.manifest.id === plugin.manifest.id)\n ) === \"restart-required\"\n }),\n directory: plugin.manifest.id,\n assetDirectory: plugin.folder,\n entry: toUrl(plugin.entry),\n revision,\n frontendDirectory,\n styles\n });\n }\n return entries;\n}\n\n/** One installed plugin, as the plugin manager page lists it. */\nexport interface PanelPluginRecord {\n state: PluginState;\n result?: PluginChangeResult;\n id: string;\n version?: string;\n description?: string;\n priority?: number;\n /** Effective enablement after applying the user override. */\n enabled: boolean;\n /** Declares a two-sided plugin whose other half must exist on the daemon. */\n dual: boolean;\n /** Which halves the manifest declares. Neither has to have been built yet. */\n sides: { backend: boolean; frontend: boolean };\n /** Whether the backend half is running in this process right now. */\n running: boolean;\n /** Why the backend half is not running, when it should be. */\n error?: string;\n /** Plugins are npm dependencies now, so the plugin manager never removes one. */\n removable: boolean;\n}\n\nconst FRONTEND_FIELDS = [\"frontend\", \"ui\"];\n\n/**\n * Every installed plugin, disabled ones included — a disabled plugin still has\n * to be listed for the switch to turn it back on. Entry resolution is skipped on\n * purpose: the inventory describes what is installed, not what compiled.\n */\nexport function getPanelPluginInventory(): PanelPluginRecord[] {\n return discoverPanelPlugins({\n entryFields: [],\n includeDisabled: true,\n onWarning: (message, error) => logger.warn(message, error)\n }).map((plugin) => {\n const running = loaded.find((item) => item.manifest.id === plugin.manifest.id);\n const has = (fields: string[]) =>\n fields.some((field) => typeof plugin.manifest[field] === \"string\");\n return {\n id: plugin.manifest.id,\n version: plugin.manifest.version,\n description: plugin.manifest.description,\n priority: plugin.manifest.priority,\n enabled: plugin.manifest.enabled !== false,\n dual: plugin.manifest.dual === true,\n sides: { backend: has(ENTRY_FIELDS), frontend: has(FRONTEND_FIELDS) },\n running: pluginState(plugin, running) === \"active\",\n state: pluginState(plugin, running),\n removable: false,\n error:\n running?.error?.message ||\n running?.fork?.runtime.error?.message ||\n running?.fork?.error?.message\n };\n });\n}\n\n/** Persist the user override, then serialize disposal/activation and report both outcomes. */\nexport function setPanelPluginEnabled(id: string, enabled: boolean): Promise<PanelPluginRecord> {\n return change(async () => {\n if (typeof enabled !== \"boolean\") throw new Error(\"Invalid plugin enablement.\");\n if (ESSENTIAL_PLUGIN_IDS.has(id) && !enabled)\n throw new Error(`The essential plugin \"${id}\" cannot be disabled.`);\n const plugin = findPlugin(id);\n writePluginOverride(id, { enabled });\n let failure: string | undefined;\n try {\n const existing = loaded.find((item) => item.manifest.id === id);\n if (!enabled || existing?.error || existing?.fork?.runtime.status === 3)\n await removeRunning(id);\n if (enabled && !loaded.some((item) => item.manifest.id === id)) {\n forgetCachedModule(plugin.entry);\n loaded.push(\n await installPlugin({ ...plugin, manifest: { ...plugin.manifest, enabled: true } })\n );\n sortPlugins(loaded);\n }\n await settle();\n } catch (error) {\n failure = String(error);\n }\n return changedRecord(id, failure);\n });\n}\n\n/**\n * Plugins are npm dependencies now; the plugin manager does not delete files.\n * An npm plugin is removed with npm, and a development source plugin cannot be\n * removed from the running checkout at all.\n */\nexport function removePanelPlugin(id: string): Promise<void> {\n return change(async () => {\n const plugin = findPlugin(id);\n if (isPackagePlugin(plugin.directory))\n throw new Error(\"Npm plugins cannot be removed here; manage them with npm.\");\n throw new Error(\"Source plugins cannot be removed.\");\n });\n}\n\nfunction findPlugin(id: string) {\n const plugin = discoverPanelPlugins({\n entryFields: ENTRY_FIELDS,\n entryCandidates: ENTRY_CANDIDATES,\n includeDisabled: true\n }).find((item) => item.manifest.id === id);\n if (!plugin) throw new Error(`Plugin not found: ${id}`);\n return plugin;\n}\n\nasync function removeRunning(id: string) {\n const index = loaded.findIndex((item) => item.manifest.id === id);\n if (index < 0) return;\n const record = loaded[index];\n unloading.add(id);\n try {\n record.fork?.dispose();\n await settle();\n } finally {\n loaded.splice(loaded.indexOf(record), 1);\n unloading.delete(id);\n }\n}\n\nfunction pluginState(plugin: DiscoveredPlugin, running?: LoadedPanelPlugin): PluginState {\n if (unloading.has(plugin.manifest.id)) return \"unloading\";\n if (plugin.manifest.enabled === false) return \"disabled\";\n if (running?.error || running?.fork?.error || running?.fork?.runtime.error) return \"failed\";\n if (!running || running.restartRequired) return \"restart-required\";\n if (!running.entry) return \"active\";\n if (\n running.backendRevision !== pluginDirectoryRevision(path.dirname(running.entry)) ||\n JSON.stringify(running.manifest.config) !== JSON.stringify(plugin.manifest.config)\n )\n return \"restart-required\";\n const fork = running.fork;\n if (!fork) return \"failed\";\n const state = fork.runtime.status === 2 ? fork.status : fork.runtime.status;\n return (\n ([\"pending\", \"loading\", \"active\", \"failed\", \"failed\"] as PluginState[])[state] || \"pending\"\n );\n}\n\nfunction changedRecord(id: string, failure?: string): PanelPluginRecord {\n const record = getPanelPluginInventory().find((item) => item.id === id)!;\n const application =\n failure || record.state === \"failed\"\n ? \"failed\"\n : record.state === \"restart-required\"\n ? \"restart-required\"\n : [\"pending\", \"loading\", \"unloading\"].includes(record.state)\n ? \"pending\"\n : \"applied\";\n return { ...record, result: { saved: true, application, error: failure || record.error } };\n}\n\n/** Config replaces the package default as one user-owned layer. Validate before saving. */\nexport function configurePanelPlugin(\n id: string,\n config: Record<string, unknown>\n): Promise<PanelPluginRecord> {\n return change(async () => {\n const plugin = findPlugin(id);\n if (!config || typeof config !== \"object\" || Array.isArray(config))\n throw new Error(\"Plugin config must be an object.\");\n validatePluginCompatibility(plugin.manifest.elements);\n const running = loaded.find((item) => item.manifest.id === id);\n const replaced =\n plugin.entry &&\n codeRevisions.has(id) &&\n codeRevisions.get(id) !== pluginDirectoryRevision(path.dirname(plugin.entry));\n if (!replaced && typeof running?.fork?.runtime.schema === \"function\")\n running.fork.runtime.schema(config);\n if (Array.isArray(plugin.manifest.configFields))\n validatePluginSettings(plugin.manifest.configFields, config);\n writePluginOverride(id, { config });\n // Core network/storage configuration is applied on restart; never tear down the reply path.\n if (replaced || ESSENTIAL_PLUGIN_IDS.has(id) || [\"server\", \"config\"].includes(id)) {\n return {\n ...getPanelPluginInventory().find((item) => item.id === id)!,\n result: { saved: true, application: \"restart-required\" }\n };\n }\n let failure: string | undefined;\n try {\n await removeRunning(id);\n if (plugin.manifest.enabled !== false) {\n loaded.push(await installPlugin({ ...plugin, manifest: { ...plugin.manifest, config } }));\n sortPlugins(loaded);\n await settle();\n }\n } catch (error) {\n failure = String(error);\n }\n return changedRecord(id, failure);\n });\n}\n","module.exports = require(\"crypto\");","module.exports = require(\"events\");","module.exports = require(\"fs-extra\");","module.exports = require(\"iconv-lite\");","module.exports = require(\"os-utils\");","module.exports = require(\"cordis\");","module.exports = require(\"child_process\");","module.exports = require(\"fs\");","module.exports = require(\"module\");","module.exports = require(\"net\");","module.exports = require(\"node:crypto\");","module.exports = require(\"node:fs\");","module.exports = require(\"node:os\");","module.exports = require(\"node:path\");","module.exports = require(\"os\");","module.exports = require(\"path\");","module.exports = require(\"process\");","module.exports = require(\"url\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","import { ctx } from \"./app/plugin/context\";\nimport { loadPanelFoundationPlugin, loadPanelPlugins } from \"./app/plugin/loader\";\n\nasync function main() {\n await loadPanelFoundationPlugin(\"i18n\");\n await loadPanelFoundationPlugin(\"storage\");\n await loadPanelFoundationPlugin(\"runtime\");\n await loadPanelPlugins();\n await ctx.start();\n}\n\nmain().catch(async (error) => {\n ctx.logger.error(\"Plugin startup failed:\", error);\n await ctx.stop();\n process.exit(1);\n});\n"],"names":[],"sourceRoot":""}
|
package/bin/panel.cjs
ADDED
package/package.json
CHANGED
|
@@ -1,6 +1,109 @@
|
|
|
1
1
|
{
|
|
2
|
+
"version": "1.0.0",
|
|
3
|
+
"description": "ElementsPanel backend API — a fork of the MCSManager project, connects and controls all Daemon nodes and provides API services for the frontend",
|
|
4
|
+
"homepage": "https://elementspanel.top/",
|
|
5
|
+
"author": "Csituka_D <694428809@qq.com> (https://github.com/JessDaodao)",
|
|
6
|
+
"contributors": [
|
|
7
|
+
"Yumao <unitwk@outlook.com> (https://github.com/yumao233)"
|
|
8
|
+
],
|
|
9
|
+
"license": "Apache-2.0",
|
|
10
|
+
"repository": {
|
|
11
|
+
"type": "git",
|
|
12
|
+
"url": "https://github.com/ElementsPanel/ElementsPanel"
|
|
13
|
+
},
|
|
14
|
+
"daemonVersion": "1.0.0",
|
|
2
15
|
"name": "@elementspanel/panel",
|
|
3
|
-
"
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
16
|
+
"bin": {
|
|
17
|
+
"epanel": "bin/panel.cjs"
|
|
18
|
+
},
|
|
19
|
+
"files": [
|
|
20
|
+
"app.js",
|
|
21
|
+
"app.js.map",
|
|
22
|
+
"bin/",
|
|
23
|
+
"runtime/",
|
|
24
|
+
"public/",
|
|
25
|
+
"README.md",
|
|
26
|
+
"LICENSE"
|
|
27
|
+
],
|
|
28
|
+
"engines": {
|
|
29
|
+
"node": ">=22.15.0"
|
|
30
|
+
},
|
|
31
|
+
"publishConfig": {
|
|
32
|
+
"access": "public"
|
|
33
|
+
},
|
|
34
|
+
"dependencies": {
|
|
35
|
+
"@cordisjs/logger": "0.3.3",
|
|
36
|
+
"@koa/router": "^10.0.0",
|
|
37
|
+
"@types/qrcode": "^1.5.5",
|
|
38
|
+
"async-mutex": "^0.5.0",
|
|
39
|
+
"axios": "^1.8.2",
|
|
40
|
+
"bcryptjs": "^2.4.3",
|
|
41
|
+
"cordis": "3.18.1",
|
|
42
|
+
"cosmokit": "1.8.1",
|
|
43
|
+
"crypto": "^1.0.1",
|
|
44
|
+
"formidable": "^3.5.1",
|
|
45
|
+
"fs-extra": "^9.0.1",
|
|
46
|
+
"i18n": "^0.15.0",
|
|
47
|
+
"i18next": "^21.8.14",
|
|
48
|
+
"koa": "^2.15.4",
|
|
49
|
+
"koa-body": "^6.0.1",
|
|
50
|
+
"koa-compose": "^4.1.0",
|
|
51
|
+
"koa-mount": "^4.0.0",
|
|
52
|
+
"koa-session": "^6.2.0",
|
|
53
|
+
"koa-static": "^5.0.0",
|
|
54
|
+
"md5": "^2.3.0",
|
|
55
|
+
"nanoid": "^3.3.8",
|
|
56
|
+
"node-schedule": "^2.0.0",
|
|
57
|
+
"open": "^8.4.0",
|
|
58
|
+
"openid-client": "^6.8.2",
|
|
59
|
+
"os-utils": "0.0.14",
|
|
60
|
+
"otplib": "^12.0.1",
|
|
61
|
+
"qrcode": "^1.5.3",
|
|
62
|
+
"redis": "^4.5.1",
|
|
63
|
+
"socket.io": "^4.5.3",
|
|
64
|
+
"socket.io-client": "^4.7.2",
|
|
65
|
+
"uuid": "^8.3.2",
|
|
66
|
+
"@elementspanel/epanel-plugin-backup": "1.0.0",
|
|
67
|
+
"@elementspanel/epanel-plugin-config": "1.0.0",
|
|
68
|
+
"@elementspanel/epanel-plugin-console": "1.0.0",
|
|
69
|
+
"@elementspanel/epanel-plugin-desktop": "1.0.0",
|
|
70
|
+
"@elementspanel/epanel-plugin-file": "1.0.0",
|
|
71
|
+
"@elementspanel/epanel-plugin-i18n": "1.0.0",
|
|
72
|
+
"@elementspanel/epanel-plugin-instance": "1.0.0",
|
|
73
|
+
"@elementspanel/epanel-plugin-market": "1.0.0",
|
|
74
|
+
"@elementspanel/epanel-plugin-mod-manager": "1.0.0",
|
|
75
|
+
"@elementspanel/epanel-plugin-monitor": "1.0.0",
|
|
76
|
+
"@elementspanel/epanel-plugin-node": "1.0.0",
|
|
77
|
+
"@elementspanel/epanel-plugin-runtime": "1.0.0",
|
|
78
|
+
"@elementspanel/epanel-plugin-server": "1.0.0",
|
|
79
|
+
"@elementspanel/epanel-plugin-storage": "1.0.0",
|
|
80
|
+
"@elementspanel/epanel-plugin-terminal": "1.0.0",
|
|
81
|
+
"@elementspanel/epanel-plugin-user": "1.0.0",
|
|
82
|
+
"@cordisjs/core": "3.18.1",
|
|
83
|
+
"@cordisjs/timer": "0.3.2",
|
|
84
|
+
"@cordisjs/schema": "0.1.1",
|
|
85
|
+
"schemastery": "3.18.0",
|
|
86
|
+
"reggol": "1.7.1"
|
|
87
|
+
},
|
|
88
|
+
"elementspanel": {
|
|
89
|
+
"side": "panel",
|
|
90
|
+
"plugins": {
|
|
91
|
+
"backup": "@elementspanel/epanel-plugin-backup",
|
|
92
|
+
"config": "@elementspanel/epanel-plugin-config",
|
|
93
|
+
"console": "@elementspanel/epanel-plugin-console",
|
|
94
|
+
"desktop": "@elementspanel/epanel-plugin-desktop",
|
|
95
|
+
"file": "@elementspanel/epanel-plugin-file",
|
|
96
|
+
"i18n": "@elementspanel/epanel-plugin-i18n",
|
|
97
|
+
"instance": "@elementspanel/epanel-plugin-instance",
|
|
98
|
+
"market": "@elementspanel/epanel-plugin-market",
|
|
99
|
+
"mod-manager": "@elementspanel/epanel-plugin-mod-manager",
|
|
100
|
+
"monitor": "@elementspanel/epanel-plugin-monitor",
|
|
101
|
+
"node": "@elementspanel/epanel-plugin-node",
|
|
102
|
+
"runtime": "@elementspanel/epanel-plugin-runtime",
|
|
103
|
+
"server": "@elementspanel/epanel-plugin-server",
|
|
104
|
+
"storage": "@elementspanel/epanel-plugin-storage",
|
|
105
|
+
"terminal": "@elementspanel/epanel-plugin-terminal",
|
|
106
|
+
"user": "@elementspanel/epanel-plugin-user"
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{t as g}from"./i18n-fe0f1ee7.js";import{a1 as $,aY as z,b0 as E,a9 as W,bz as k,b5 as M,aE as d,O as i,ba as s,bJ as a,gz as X,Y,aL as f,$ as b,gA as j,gB as q,gC as _,_ as x,bP as B,P as m,aq as F,bM as I,bO as J,gD as U,N as n}from"./vue-2433bd89.js";const K=$({inheritAttrs:!1,__name:"AppDialog",props:{modelValue:{type:Boolean,default:void 0},open:{type:Boolean,default:void 0},visible:{type:Boolean,default:void 0},title:{},width:{},maxWidth:{},footer:{},closable:{type:Boolean,default:!0},maskClosable:{type:Boolean,default:!0},keyboard:{type:Boolean,default:!0},destroyOnClose:{type:Boolean,default:!1},confirmLoading:{type:Boolean,default:!1},okText:{},cancelText:{},showCancel:{type:Boolean,default:!0},okColor:{},okType:{},okButtonProps:{},compact:{type:Boolean},wrapClassName:{},style:{}},emits:["update:modelValue","update:open","update:visible","ok","cancel","close","after-close"],setup(V,{emit:h}){const e=V,o=h,y=z(),w=E(),r=k(!1),p=W(),v=t=>Object.prototype.hasOwnProperty.call((p==null?void 0:p.vnode.props)??{},t),C=n(()=>v("open")?e.open??!1:v("visible")?e.visible??!1:e.modelValue??!1),u=k(!e.destroyOnClose||C.value);M(C,t=>{r.value=t,t&&(u.value=!0)},{immediate:!0});const c=n({get:()=>r.value,set:t=>{const l=r.value;r.value=t,o("update:modelValue",t),o("update:open",t),o("update:visible",t),l&&!t&&(o("cancel"),o("close"))}}),O=n(()=>{var l;const t=e.maxWidth??e.width;return t==null?e.compact?"460px":"1120px":(l=e.wrapClassName)!=null&&l.split(/\s+/).includes("full-modal")?t:typeof t=="number"?`${t}px`:t}),T=n(()=>[y.style,e.style]),A=n(()=>e.footer!==null&&e.footer!==!1),P=n(()=>{const t={...e.okButtonProps??{}};return delete t.danger,{...t,color:e.okColor??(e.okType==="danger"?"error":"primary")}}),D=()=>{c.value=!1},N=()=>{o("ok")},S=()=>{e.destroyOnClose&&(u.value=!1),o("after-close")};return(t,l)=>(d(),i(a(U),{modelValue:c.value,"onUpdate:modelValue":l[0]||(l[0]=L=>c.value=L),class:I(["app-dialog",[a(y).class,e.wrapClassName]]),style:J(T.value),"max-width":O.value,persistent:e.maskClosable===!1,"close-on-back":e.keyboard!==!1,onAfterLeave:S},{default:s(()=>[u.value?(d(),i(a(X),{key:0,title:e.title||void 0,class:"app-dialog-card",rounded:"xl"},Y({default:s(()=>[b(a(j),{class:"app-dialog-content"},{default:s(()=>[f(t.$slots,"default")]),_:3}),A.value?(d(),i(a(q),{key:0,class:"app-dialog-actions"},{default:s(()=>[f(t.$slots,"footer",{},()=>[e.showCancel?(d(),i(a(_),{key:0,variant:"text",onClick:D},{default:s(()=>[x(B(e.cancelText??a(g)("TXT_CODE_a0451c97")),1)]),_:1})):m("",!0),b(a(_),F(P.value,{loading:e.confirmLoading,onClick:N}),{default:s(()=>[x(B(e.okText??a(g)("TXT_CODE_d507abff")),1)]),_:1},16,["loading"])])]),_:3})):m("",!0)]),_:2},[a(w).title?{name:"title",fn:s(()=>[f(t.$slots,"title")]),key:"0"}:void 0]),1032,["title"])):m("",!0)]),_:3},8,["modelValue","class","style","max-width","persistent","close-on-back"]))}});export{K as _};
|
|
2
|
+
//# sourceMappingURL=AppDialog.vue_vue_type_style_index_0_lang-8b56f871.js.map
|