UNPKG

@neosjs/electron-toolkit

Version:

neosjs electron toolkit

939 lines (920 loc) 31.2 kB
/*! * @neosjs/electron-toolkit * Version: 1.0.1 * Copyright (c) 2021-PRESENT NeosJS * ReleaseTime: 2025/5/1 16:45:38 */ "use strict"; var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __esm = (fn, res) => function __init() { return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res; }; var __commonJS = (cb, mod) => function __require() { return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; }; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // ../../node_modules/.pnpm/tsup@8.4.0_jiti@2.4.2_postcss@8.5.3_tsx@4.19.3_typescript@5.8.3_yaml@2.7.1/node_modules/tsup/assets/cjs_shims.js var init_cjs_shims = __esm({ "../../node_modules/.pnpm/tsup@8.4.0_jiti@2.4.2_postcss@8.5.3_tsx@4.19.3_typescript@5.8.3_yaml@2.7.1/node_modules/tsup/assets/cjs_shims.js"() { "use strict"; } }); // ../../node_modules/.pnpm/dayjs@1.11.13/node_modules/dayjs/dayjs.min.js var require_dayjs_min = __commonJS({ "../../node_modules/.pnpm/dayjs@1.11.13/node_modules/dayjs/dayjs.min.js"(exports2, module2) { "use strict"; init_cjs_shims(); !function(t, e) { "object" == typeof exports2 && "undefined" != typeof module2 ? module2.exports = e() : "function" == typeof define && define.amd ? define(e) : (t = "undefined" != typeof globalThis ? globalThis : t || self).dayjs = e(); }(exports2, function() { "use strict"; var t = 1e3, e = 6e4, n = 36e5, r = "millisecond", i = "second", s = "minute", u = "hour", a = "day", o = "week", c = "month", f = "quarter", h = "year", d = "date", l = "Invalid Date", $ = /^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/, y = /\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g, M = { name: "en", weekdays: "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), months: "January_February_March_April_May_June_July_August_September_October_November_December".split("_"), ordinal: function(t2) { var e2 = ["th", "st", "nd", "rd"], n2 = t2 % 100; return "[" + t2 + (e2[(n2 - 20) % 10] || e2[n2] || e2[0]) + "]"; } }, m = function(t2, e2, n2) { var r2 = String(t2); return !r2 || r2.length >= e2 ? t2 : "" + Array(e2 + 1 - r2.length).join(n2) + t2; }, v = { s: m, z: function(t2) { var e2 = -t2.utcOffset(), n2 = Math.abs(e2), r2 = Math.floor(n2 / 60), i2 = n2 % 60; return (e2 <= 0 ? "+" : "-") + m(r2, 2, "0") + ":" + m(i2, 2, "0"); }, m: function t2(e2, n2) { if (e2.date() < n2.date()) return -t2(n2, e2); var r2 = 12 * (n2.year() - e2.year()) + (n2.month() - e2.month()), i2 = e2.clone().add(r2, c), s2 = n2 - i2 < 0, u2 = e2.clone().add(r2 + (s2 ? -1 : 1), c); return +(-(r2 + (n2 - i2) / (s2 ? i2 - u2 : u2 - i2)) || 0); }, a: function(t2) { return t2 < 0 ? Math.ceil(t2) || 0 : Math.floor(t2); }, p: function(t2) { return { M: c, y: h, w: o, d: a, D: d, h: u, m: s, s: i, ms: r, Q: f }[t2] || String(t2 || "").toLowerCase().replace(/s$/, ""); }, u: function(t2) { return void 0 === t2; } }, g = "en", D = {}; D[g] = M; var p = "$isDayjsObject", S = function(t2) { return t2 instanceof _ || !(!t2 || !t2[p]); }, w = function t2(e2, n2, r2) { var i2; if (!e2) return g; if ("string" == typeof e2) { var s2 = e2.toLowerCase(); D[s2] && (i2 = s2), n2 && (D[s2] = n2, i2 = s2); var u2 = e2.split("-"); if (!i2 && u2.length > 1) return t2(u2[0]); } else { var a2 = e2.name; D[a2] = e2, i2 = a2; } return !r2 && i2 && (g = i2), i2 || !r2 && g; }, O = function(t2, e2) { if (S(t2)) return t2.clone(); var n2 = "object" == typeof e2 ? e2 : {}; return n2.date = t2, n2.args = arguments, new _(n2); }, b = v; b.l = w, b.i = S, b.w = function(t2, e2) { return O(t2, { locale: e2.$L, utc: e2.$u, x: e2.$x, $offset: e2.$offset }); }; var _ = function() { function M2(t2) { this.$L = w(t2.locale, null, true), this.parse(t2), this.$x = this.$x || t2.x || {}, this[p] = true; } var m2 = M2.prototype; return m2.parse = function(t2) { this.$d = function(t3) { var e2 = t3.date, n2 = t3.utc; if (null === e2) return /* @__PURE__ */ new Date(NaN); if (b.u(e2)) return /* @__PURE__ */ new Date(); if (e2 instanceof Date) return new Date(e2); if ("string" == typeof e2 && !/Z$/i.test(e2)) { var r2 = e2.match($); if (r2) { var i2 = r2[2] - 1 || 0, s2 = (r2[7] || "0").substring(0, 3); return n2 ? new Date(Date.UTC(r2[1], i2, r2[3] || 1, r2[4] || 0, r2[5] || 0, r2[6] || 0, s2)) : new Date(r2[1], i2, r2[3] || 1, r2[4] || 0, r2[5] || 0, r2[6] || 0, s2); } } return new Date(e2); }(t2), this.init(); }, m2.init = function() { var t2 = this.$d; this.$y = t2.getFullYear(), this.$M = t2.getMonth(), this.$D = t2.getDate(), this.$W = t2.getDay(), this.$H = t2.getHours(), this.$m = t2.getMinutes(), this.$s = t2.getSeconds(), this.$ms = t2.getMilliseconds(); }, m2.$utils = function() { return b; }, m2.isValid = function() { return !(this.$d.toString() === l); }, m2.isSame = function(t2, e2) { var n2 = O(t2); return this.startOf(e2) <= n2 && n2 <= this.endOf(e2); }, m2.isAfter = function(t2, e2) { return O(t2) < this.startOf(e2); }, m2.isBefore = function(t2, e2) { return this.endOf(e2) < O(t2); }, m2.$g = function(t2, e2, n2) { return b.u(t2) ? this[e2] : this.set(n2, t2); }, m2.unix = function() { return Math.floor(this.valueOf() / 1e3); }, m2.valueOf = function() { return this.$d.getTime(); }, m2.startOf = function(t2, e2) { var n2 = this, r2 = !!b.u(e2) || e2, f2 = b.p(t2), l2 = function(t3, e3) { var i2 = b.w(n2.$u ? Date.UTC(n2.$y, e3, t3) : new Date(n2.$y, e3, t3), n2); return r2 ? i2 : i2.endOf(a); }, $2 = function(t3, e3) { return b.w(n2.toDate()[t3].apply(n2.toDate("s"), (r2 ? [0, 0, 0, 0] : [23, 59, 59, 999]).slice(e3)), n2); }, y2 = this.$W, M3 = this.$M, m3 = this.$D, v2 = "set" + (this.$u ? "UTC" : ""); switch (f2) { case h: return r2 ? l2(1, 0) : l2(31, 11); case c: return r2 ? l2(1, M3) : l2(0, M3 + 1); case o: var g2 = this.$locale().weekStart || 0, D2 = (y2 < g2 ? y2 + 7 : y2) - g2; return l2(r2 ? m3 - D2 : m3 + (6 - D2), M3); case a: case d: return $2(v2 + "Hours", 0); case u: return $2(v2 + "Minutes", 1); case s: return $2(v2 + "Seconds", 2); case i: return $2(v2 + "Milliseconds", 3); default: return this.clone(); } }, m2.endOf = function(t2) { return this.startOf(t2, false); }, m2.$set = function(t2, e2) { var n2, o2 = b.p(t2), f2 = "set" + (this.$u ? "UTC" : ""), l2 = (n2 = {}, n2[a] = f2 + "Date", n2[d] = f2 + "Date", n2[c] = f2 + "Month", n2[h] = f2 + "FullYear", n2[u] = f2 + "Hours", n2[s] = f2 + "Minutes", n2[i] = f2 + "Seconds", n2[r] = f2 + "Milliseconds", n2)[o2], $2 = o2 === a ? this.$D + (e2 - this.$W) : e2; if (o2 === c || o2 === h) { var y2 = this.clone().set(d, 1); y2.$d[l2]($2), y2.init(), this.$d = y2.set(d, Math.min(this.$D, y2.daysInMonth())).$d; } else l2 && this.$d[l2]($2); return this.init(), this; }, m2.set = function(t2, e2) { return this.clone().$set(t2, e2); }, m2.get = function(t2) { return this[b.p(t2)](); }, m2.add = function(r2, f2) { var d2, l2 = this; r2 = Number(r2); var $2 = b.p(f2), y2 = function(t2) { var e2 = O(l2); return b.w(e2.date(e2.date() + Math.round(t2 * r2)), l2); }; if ($2 === c) return this.set(c, this.$M + r2); if ($2 === h) return this.set(h, this.$y + r2); if ($2 === a) return y2(1); if ($2 === o) return y2(7); var M3 = (d2 = {}, d2[s] = e, d2[u] = n, d2[i] = t, d2)[$2] || 1, m3 = this.$d.getTime() + r2 * M3; return b.w(m3, this); }, m2.subtract = function(t2, e2) { return this.add(-1 * t2, e2); }, m2.format = function(t2) { var e2 = this, n2 = this.$locale(); if (!this.isValid()) return n2.invalidDate || l; var r2 = t2 || "YYYY-MM-DDTHH:mm:ssZ", i2 = b.z(this), s2 = this.$H, u2 = this.$m, a2 = this.$M, o2 = n2.weekdays, c2 = n2.months, f2 = n2.meridiem, h2 = function(t3, n3, i3, s3) { return t3 && (t3[n3] || t3(e2, r2)) || i3[n3].slice(0, s3); }, d2 = function(t3) { return b.s(s2 % 12 || 12, t3, "0"); }, $2 = f2 || function(t3, e3, n3) { var r3 = t3 < 12 ? "AM" : "PM"; return n3 ? r3.toLowerCase() : r3; }; return r2.replace(y, function(t3, r3) { return r3 || function(t4) { switch (t4) { case "YY": return String(e2.$y).slice(-2); case "YYYY": return b.s(e2.$y, 4, "0"); case "M": return a2 + 1; case "MM": return b.s(a2 + 1, 2, "0"); case "MMM": return h2(n2.monthsShort, a2, c2, 3); case "MMMM": return h2(c2, a2); case "D": return e2.$D; case "DD": return b.s(e2.$D, 2, "0"); case "d": return String(e2.$W); case "dd": return h2(n2.weekdaysMin, e2.$W, o2, 2); case "ddd": return h2(n2.weekdaysShort, e2.$W, o2, 3); case "dddd": return o2[e2.$W]; case "H": return String(s2); case "HH": return b.s(s2, 2, "0"); case "h": return d2(1); case "hh": return d2(2); case "a": return $2(s2, u2, true); case "A": return $2(s2, u2, false); case "m": return String(u2); case "mm": return b.s(u2, 2, "0"); case "s": return String(e2.$s); case "ss": return b.s(e2.$s, 2, "0"); case "SSS": return b.s(e2.$ms, 3, "0"); case "Z": return i2; } return null; }(t3) || i2.replace(":", ""); }); }, m2.utcOffset = function() { return 15 * -Math.round(this.$d.getTimezoneOffset() / 15); }, m2.diff = function(r2, d2, l2) { var $2, y2 = this, M3 = b.p(d2), m3 = O(r2), v2 = (m3.utcOffset() - this.utcOffset()) * e, g2 = this - m3, D2 = function() { return b.m(y2, m3); }; switch (M3) { case h: $2 = D2() / 12; break; case c: $2 = D2(); break; case f: $2 = D2() / 3; break; case o: $2 = (g2 - v2) / 6048e5; break; case a: $2 = (g2 - v2) / 864e5; break; case u: $2 = g2 / n; break; case s: $2 = g2 / e; break; case i: $2 = g2 / t; break; default: $2 = g2; } return l2 ? $2 : b.a($2); }, m2.daysInMonth = function() { return this.endOf(c).$D; }, m2.$locale = function() { return D[this.$L]; }, m2.locale = function(t2, e2) { if (!t2) return this.$L; var n2 = this.clone(), r2 = w(t2, e2, true); return r2 && (n2.$L = r2), n2; }, m2.clone = function() { return b.w(this.$d, this); }, m2.toDate = function() { return new Date(this.valueOf()); }, m2.toJSON = function() { return this.isValid() ? this.toISOString() : null; }, m2.toISOString = function() { return this.$d.toISOString(); }, m2.toString = function() { return this.$d.toUTCString(); }, M2; }(), k = _.prototype; return O.prototype = k, [["$ms", r], ["$s", i], ["$m", s], ["$H", u], ["$W", a], ["$M", c], ["$y", h], ["$D", d]].forEach(function(t2) { k[t2[1]] = function(e2) { return this.$g(e2, t2[0], t2[1]); }; }), O.extend = function(t2, e2) { return t2.$i || (t2(e2, _, O), t2.$i = true), O; }, O.locale = w, O.isDayjs = S, O.unix = function(t2) { return O(1e3 * t2); }, O.en = D[g], O.Ls = D, O.p = {}, O; }); } }); // src/renderer/index.ts var renderer_exports = {}; __export(renderer_exports, { default: () => renderer_default }); module.exports = __toCommonJS(renderer_exports); init_cjs_shims(); var import_electron_log = __toESM(require("electron-log"), 1); // package.json var version = "1.0.1"; // src/renderer/core/DownloadManager.ts init_cjs_shims(); // src/shared/ipcEvents.ts init_cjs_shims(); var ipcUpdaterEvents = [ "checking-for-update" /* CHECKING_FOR_UPDATE */, "update-available" /* UPDATE_AVAILABLE */, "update-not-available" /* UPDATE_NOT_AVAILABLE */, "update-downloaded" /* UPDATE_DOWNLOADED */, "update-cancelled" /* UPDATE_CANCELLED */, "download-progress" /* DOWNLOAD_PROGRESS */, "error" /* UPDATE_ERROR */, "login" /* UPDATE_LOGIN */ ]; // src/shared/utils.ts init_cjs_shims(); var import_dayjs = __toESM(require_dayjs_min(), 1); function isFunction(obj) { return typeof obj === "function"; } var timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone; var YYYYMMDD = (/* @__PURE__ */ new Date()).toLocaleString("en-CA", { timeZone }).slice(0, 10); // src/renderer/electron.ts init_cjs_shims(); var { ipcRenderer } = window.electron || window.electronApi; // src/renderer/core/EmitterManager.ts init_cjs_shims(); var NeosEmitter = class { events = /* @__PURE__ */ new Map(); // 事件监听 constructor() { this.destroy(); } /** * 订阅/监听事件 * * @param type * @param handler */ on(type, handler) { if (typeof type !== "string" && typeof type !== "symbol") { throw new TypeError("Event type must be a string or symbol"); } if (typeof handler !== "function") { throw new TypeError("Event handler must be a function"); } const handlers = this.events.get(type); if (handlers) { handlers.push(handler); } else { this.events.set(type, [handler]); } return this; } /** * 监听一次事件 * * @param type * @param handler */ once(type, handler) { const wrapped = (data) => { handler(data); return this.off(type, wrapped); }; return this.on(type, wrapped); } /** * 发布事件 * * @param type * @param data */ emit(type, data) { if (typeof type !== "string" && typeof type !== "symbol") { throw new TypeError("Event type must be a string or symbol"); } let handlers = this.events.get(type); if (handlers) { handlers.slice().map((handler) => { return handler(data); }); } handlers = this.events.get("*"); if (handlers) { handlers.slice().map((handler) => { return handler(type, data); }); } return this; } /** * 关闭事件监听 * * @param type * @param handler */ off(type, handler) { if (typeof type !== "string" && typeof type !== "symbol") { throw new TypeError("Event type must be a string or symbol"); } const handlers = this.events.get(type); if (handlers) { if (handler) { handlers.splice(handlers.indexOf(handler) >>> 0, 1); } else { this.events.set(type, []); } } this.events.delete(type); return this; } /** * 销毁事件监听 */ destroy() { this.events.clear(); } }; // src/renderer/core/DownloadManager.ts var DownloadManager = class _DownloadManager extends NeosEmitter { static instance = {}; constructor() { super(); } static getInstance() { if (Object.keys(this.instance).length === 0) { this.instance = new _DownloadManager(); } return this.instance; } _emitEvents(downloadTask, options) { const _callbackMap = { // 开始 start: (res) => { isFunction(options.onStart) && options.onStart(res); }, // 进度 progress: (res) => { isFunction(options.onProgress) && options.onProgress(res); }, // 完成 complete: (res) => { isFunction(options.onComplete) && options.onComplete(res); ipcRenderer.removeAllListeners(downloadTask); }, // 失败 fail: (res) => { isFunction(options.onFail) && options.onFail(res); ipcRenderer.removeAllListeners(downloadTask); }, // 暂停下载 pause: (res) => { isFunction(options.onPause) && options.onPause(res); }, // 取消 cancel: (res) => { isFunction(options.onCancel) && options.onCancel(res); ipcRenderer.removeAllListeners(downloadTask); }, // 文件存在 exists: (res) => { isFunction(options.onExists) && options.onExists(res); ipcRenderer.removeAllListeners(downloadTask); } }; ipcRenderer.removeAllListeners(downloadTask); ipcRenderer.on(downloadTask, (_e, res, state) => { this.emit(downloadTask, { state, info: res }); return _callbackMap[state](res); }); } /** * 开始下载 * @param {string} url 下载地址 * @param {DownloadOptions} options 下载选项 * @returns {Promise<any>} 下载任务 */ start = async (url, options) => { if (!url) return Promise.reject(new Error("\u4E0B\u8F7D\u5730\u5740\u4E0D\u80FD\u4E3A\u7A7A")); const downloadTask = await ipcRenderer.invoke("START_DOWNLOAD" /* START_DOWNLOAD */, url, { saveAs: options.saveAs ?? false, directory: options.directory ?? null, filename: options.filename ?? null, errorTitle: options.errorTitle ?? null, errorMessage: options.errorMessage ?? null, showBadge: options.showBadge ?? true, showProgressBar: options.showProgressBar ?? true, unregisterWhenDone: options.unregisterWhenDone ?? true, openFolderWhenDone: options.openFolderWhenDone ?? false, overwrite: options.overwrite ?? true, dialogOptions: options.dialogOptions ?? {} }); if (!downloadTask) return; this._emitEvents(downloadTask, options); return downloadTask; }; /** * 暂停下载 * @param {string} fileUrl 下载地址 * @returns {DownloadManager} 下载管理器 */ pause = (fileUrl) => { ipcRenderer.send("PAUSE_DOWNLOAD" /* PAUSE_DOWNLOAD */, fileUrl); return this; }; /** * 取消下载 * @param {string} fileUrl 下载地址 * @returns {DownloadManager} 下载管理器 */ cancel = (fileUrl) => { ipcRenderer.send("CANCEL_DOWNLOAD" /* CANCEL_DOWNLOAD */, fileUrl); return this; }; /** * 恢复下载 * @param {string} fileUrl 下载地址 * @returns {DownloadManager} 下载管理器 */ resume = (fileUrl) => { ipcRenderer.send("RESUME_DOWNLOAD" /* RESUME_DOWNLOAD */, fileUrl); return this; }; /** * 移除所有监听 * @returns {DownloadManager} 下载管理器 */ destroy = () => { super.destroy(); ipcRenderer.invoke("DESTROY" /* DESTROY */); }; // public removeAllListeners(): DownloadManager { // this.destroy() // return this // } }; // src/renderer/core/FileManager.ts init_cjs_shims(); var FileManager = class _FileManager { static instance = {}; constructor() { } static getInstance() { if (Object.keys(this.instance).length === 0) { this.instance = new _FileManager(); } return this.instance; } /** * 打开文件或文件夹 * @param {string} path - 文件或文件夹路径 */ openPath = (path) => { if (!path) return new Error("\u8DEF\u5F84\u4E0D\u80FD\u4E3A\u7A7A"); ipcRenderer.send("OPEN_PATH_SYNC" /* OPEN_PATH_SYNC */, path); }; /** * 打开文件或文件夹(异步) * @param {string} path - 文件或文件夹路径 */ openPathAsync = (path) => { if (!path) return Promise.reject(new Error("\u8DEF\u5F84\u4E0D\u80FD\u4E3A\u7A7A")); return ipcRenderer.invoke("OPEN_PATH_ASYNC" /* OPEN_PATH_ASYNC */, path); }; /** * 路径是否存在 * @param {string} path - 文件或文件夹路径 */ pathExists = (path) => { if (!path) return Promise.reject(new Error("\u8DEF\u5F84\u4E0D\u80FD\u4E3A\u7A7A")); return ipcRenderer.sendSync("PATH_EXISTS" /* PATH_EXISTS */, path); }; /** * 清理目录 * @param {string} dir - 目录路径 */ cleanupDirectory = (dir) => { if (!dir) return Promise.reject(new Error("\u8DEF\u5F84\u4E0D\u80FD\u4E3A\u7A7A")); return ipcRenderer.invoke("CLEANUP_DIRECTORY" /* CLEANUP_DIRECTORY */, dir); }; /** * 删除用户数据 * @param {string} name - 用户数据名称 */ deleteUserData = (name) => { if (!name) return Promise.reject(new Error("\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A")); return ipcRenderer.invoke("DELETE_USER_DATA" /* DELETE_USER_DATA */, name); }; /** * 保存文件 * @param {string} filePath - 文件路径 * @param {string} content - 文件内容 */ saveFile = (filePath, content) => { if (!filePath) return Promise.reject(new Error("\u8DEF\u5F84\u4E0D\u80FD\u4E3A\u7A7A")); return ipcRenderer.invoke("SAVE_FILE" /* SAVE_FILE */, filePath, content); }; /** * 删除文件 * @param {string} filePath - 文件路径 */ removeFile = (filePath) => { if (!filePath) return Promise.reject(new Error("\u8DEF\u5F84\u4E0D\u80FD\u4E3A\u7A7A")); return ipcRenderer.invoke("REMOVE_FILE" /* REMOVE_FILE */, filePath); }; }; var FileManager_default = FileManager; // src/renderer/core/MediaManager.ts init_cjs_shims(); var MediaManager = class _MediaManager { static instance = {}; constructor() { } static getInstance() { if (Object.keys(this.instance).length === 0) { this.instance = new _MediaManager(); } return this.instance; } /** * 获取媒体访问权限状态 * @param {MediaType} mediaType - 媒体类型 * @returns {Promise<MediaAccessStatus>} 媒体访问权限状态 */ getMediaAccessStatus = (mediaType) => { return ipcRenderer.invoke("GET_MEDIA_ACCESS_STATUS" /* GET_MEDIA_ACCESS_STATUS */, mediaType); }; /** * 请求媒体访问权限 * @param {MediaType} mediaType - 媒体类型 * @returns {Promise<boolean>} 是否请求成功 */ askForMediaAccess = (mediaType) => { return ipcRenderer.invoke("ASK_FOR_MEDIA_ACCESS" /* ASK_FOR_MEDIA_ACCESS */, mediaType); }; }; var MediaManager_default = MediaManager; // src/renderer/core/StorageManager.ts init_cjs_shims(); var StorageManager = class _StorageManager { static instance = {}; constructor() { } static getInstance() { if (Object.keys(this.instance).length === 0) { this.instance = new _StorageManager(); } return this.instance; } /** * 清理系统缓存 * @returns {Promise<void>} 清理系统缓存 */ clearCache = () => { return ipcRenderer.invoke("CLEAN_CACHE" /* CLEAN_CACHE */); }; /** * 清理系统存储 * @param {any} options 清理系统存储选项 */ cleanStorage = (options = {}) => { ipcRenderer.send("CLEAN_STORAGE" /* CLEAN_STORAGE */, options); }; }; var StorageManager_default = StorageManager; // src/renderer/core/SystemManager.ts init_cjs_shims(); var SystemManager = class _SystemManager { static instance = {}; constructor() { } static getInstance() { if (Object.keys(this.instance).length === 0) { this.instance = new _SystemManager(); } return this.instance; } /** * 获取系统主题 * @returns {Promise<Appearance>} 系统主题 */ getSystemTheme = () => { return ipcRenderer.invoke("GET_SYSTEM_THEME" /* GET_SYSTEM_THEME */); }; /** * 获取系统信息 * @returns {Promise<SystemInfo>} 系统信息 */ getSystemInfo = () => { return ipcRenderer.invoke("GET_SYSTEM_INFO" /* GET_SYSTEM_INFO */); }; /** * 打开URL * @param {string} url - URL */ openURL = (url) => { if (!url) return; ipcRenderer.invoke("OPEN_URL" /* OPEN_URL */, url); }; }; var SystemManager_default = SystemManager; // src/renderer/core/UpdaterManager.ts init_cjs_shims(); var UpdaterManager = class _UpdaterManager extends NeosEmitter { static instance; constructor() { super(); this.destroy(); ipcUpdaterEvents.forEach((event) => { ipcRenderer.removeAllListeners(event); ipcRenderer.on(event, (_event, info) => { this.emit(event, info); }); }); } /** * 获取实例 * @returns {UpdaterManager} */ static getInstance() { if (!this.instance) { this.instance = new _UpdaterManager(); } return this.instance; } /** * 自动更新 * @returns {Promise<void>} */ autoCheckForUpdates = (url) => { if (!url) return Promise.reject(new Error("\u66F4\u65B0\u6E90\u4E0D\u80FD\u4E3A\u7A7A")); return ipcRenderer.invoke("AUTO_CHECK_FOR_UPDATES" /* AUTO_CHECK_FOR_UPDATES */, url); }; /** * 检查更新 * @param {string} url 更新源 * @returns {Promise<void>} */ checkForUpdates = (url) => { if (!url) return Promise.reject(new Error("\u66F4\u65B0\u6E90\u4E0D\u80FD\u4E3A\u7A7A")); return ipcRenderer.invoke("CHECK_FOR_UPDATES" /* CHECK_FOR_UPDATES */, url); }; /** * 下载更新 * @returns {Promise<void>} */ downloadUpdate = () => { return ipcRenderer.invoke("DOWNLOAD_UPDATE" /* DOWNLOAD_UPDATE */); }; /** * 安装更新 * @returns {Promise<void>} */ installUpdate = () => { return ipcRenderer.invoke("INSTALL_UPDATE" /* INSTALL_UPDATE */); }; /** * 销毁 */ destroy = () => { super.destroy(); }; }; var UpdaterManager_default = UpdaterManager; // src/renderer/core/WindowManager.ts init_cjs_shims(); var WindowManager = class _WindowManager { static instance = {}; constructor() { } static getInstance() { if (Object.keys(this.instance).length === 0) { this.instance = new _WindowManager(); } return this.instance; } /** * 设置窗口大小 * @param {number} width - 宽度 * @param {number} height - 高度 */ setSize = (width, height) => { if (!width || !height) return; ipcRenderer.send("SET_WINDOW_SIZE" /* SET_WINDOW_SIZE */, { width, height }); }; /** * 设置窗口可操作 * @param {string} type - 类型 * @param {boolean} flag - 标志 * @param {BrowserWindow} win - 窗口 */ setAble = (type, flag = true, win) => { if (!type) return false; ipcRenderer.send("SET_WINDOW_ABLE" /* SET_WINDOW_ABLE */, { type, flag, win }); return true; }; /** * 设置窗口居中 */ center = () => { ipcRenderer.send("invoke" /* INVOKE */, "center"); }; /** * 设置窗口最大化 */ maximize = () => { ipcRenderer.send("invoke" /* INVOKE */, "max"); }; /** * 设置窗口最小化 */ minimize = () => { ipcRenderer.send("invoke" /* INVOKE */, "min"); }; /** * 设置窗口关闭 */ closeWindow = () => { ipcRenderer.send("invoke" /* INVOKE */, "close"); }; /** * 设置窗口全屏 */ fullscreen = () => { ipcRenderer.send("invoke" /* INVOKE */, "fullScreen"); }; /** * 设置窗口退出全屏 */ exitFullscreen = () => { ipcRenderer.send("invoke" /* INVOKE */, "exitFullscreen"); }; }; // src/renderer/index.ts var RendererManager = class _RendererManager { version = version; static instance = {}; // 单例实例 logger; // 日志实例 downloadManager; // 下载实例 storageManager; // 存储实例 windowManager; // 窗口实例 systemManager; // 系统实例 mediaManager; // 媒体实例 fileManager; // 文件实例 updaterManager; // 更新实例 emitter; // 事件实例 // 私有构造函数, 防止外部实例化 constructor() { this.logger = import_electron_log.default; this.downloadManager = DownloadManager.getInstance(); this.storageManager = StorageManager_default.getInstance(); this.windowManager = WindowManager.getInstance(); this.systemManager = SystemManager_default.getInstance(); this.mediaManager = MediaManager_default.getInstance(); this.fileManager = FileManager_default.getInstance(); this.updaterManager = UpdaterManager_default.getInstance(); this.emitter = new NeosEmitter(); } // 获取唯一的实例 static getInstance() { if (Object.keys(this.instance).length === 0) { _RendererManager.instance = new _RendererManager(); } return _RendererManager.instance; } }; var rendererManager = RendererManager.getInstance(); var renderer_default = rendererManager;