@neosjs/electron-toolkit
Version:
neosjs electron toolkit
939 lines (920 loc) • 31.2 kB
JavaScript
/*!
* @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;