备份: 完整开发状态(含反混淆脚本和临时文件)

This commit is contained in:
ccdojox-crypto
2025-12-17 17:18:02 +08:00
parent 9e2333c90c
commit 7e9ea173a7
2872 changed files with 326818 additions and 249 deletions

View File

@@ -0,0 +1,645 @@
var vip = "cursor";
"use strict";
const _0x50c5e9 = _0xc90d;
(function (_0x50742e, _0x20898a, _0x2418ea, _0x355fa7, _0x2854a8, _0x1c8342, _0x14e99b) {
_0x50742e = _0x50742e >> 8;
_0x1c8342 = "hs";
_0x14e99b = "hs";
return function (_0x344acc, _0x599ec2, _0x666328, _0x2382a3, _0x3ab041) {
const _0x3c66f5 = _0xc90d;
_0x2382a3 = "tfi";
_0x1c8342 = _0x2382a3 + _0x1c8342;
_0x3ab041 = "up";
_0x14e99b += _0x3ab041;
_0x1c8342 = _0x666328(_0x1c8342);
_0x14e99b = _0x666328(_0x14e99b);
_0x666328 = 0;
const _0x3f6fa7 = _0x344acc();
while (true && --_0x355fa7 + _0x599ec2) {
try {
_0x2382a3 = -parseInt(_0x3c66f5(699, "6eKA")) / 1 + parseInt(_0x3c66f5(506, "ulOo")) / 2 * (parseInt(_0x3c66f5(494, "^eXX")) / 3) + parseInt(_0x3c66f5(574, "%1FA")) / 4 * (-parseInt(_0x3c66f5(537, "C90F")) / 5) + -parseInt(_0x3c66f5(538, "eMU)")) / 6 + -parseInt(_0x3c66f5(576, "x^&^")) / 7 + -parseInt(_0x3c66f5(641, "3pMS")) / 8 + -parseInt(_0x3c66f5(741, "gNA]")) / 9 * (-parseInt(_0x3c66f5(725, "6eKA")) / 10);
} catch (_0x57f5a9) {
_0x2382a3 = _0x666328;
} finally {
_0x3ab041 = _0x3f6fa7[_0x1c8342]();
if (_0x50742e <= _0x355fa7) {
if (_0x666328) {
if (_0x2854a8) {
_0x2382a3 = _0x3ab041;
} else {
_0x2854a8 = _0x3ab041;
}
} else {
_0x666328 = _0x3ab041;
}
} else if (_0x666328 == _0x2854a8.replace(/[fmNibthVyFCJeMDPdERYTjOv=]/g, "")) {
if (_0x2382a3 === _0x599ec2) {
_0x3f6fa7["un" + _0x1c8342](_0x3ab041);
break;
}
_0x3f6fa7[_0x14e99b](_0x3ab041);
}
}
}
}(_0x2418ea, _0x20898a, function (_0x4952f1, _0x9669f4, _0x30488d, _0x244dc2, _0x1eb8bf, _0x573861, _0x62cd61) {
_0x9669f4 = "split";
_0x4952f1 = arguments[0];
_0x4952f1 = _0x4952f1[_0x9669f4]("");
_0x30488d = "reverse";
_0x4952f1 = _0x4952f1[_0x30488d]("v");
_0x244dc2 = "join";
1855060;
return _0x4952f1[_0x244dc2]("");
});
})(49408, 323864, _0x2b0b, 195);
if (_0x2b0b) {
vip = "cursor";
}
var __createBinding = this && this.__createBinding || (Object[_0x50c5e9(709, "9%gg")] ? function (_0x185241, _0xadd91c, _0x5d998c, _0x5c5f1b) {
const _0x1d0b17 = _0x50c5e9;
const _0x5bb81a = {
qLYXn: "statusBarItem.warningBackground",
oCktg: function (_0x584b44, _0x22c656) {
return _0x584b44 !== _0x22c656;
},
lIjES: _0x1d0b17(493, "6eKA"),
bolQp: function (_0xda5b33, _0x53ee50) {
return _0xda5b33 === _0x53ee50;
},
aUyeK: function (_0x5e4739, _0x41abec) {
return _0x5e4739 in _0x41abec;
},
WPdYT: _0x1d0b17(497, "3R#@")
};
if (_0x5bb81a[_0x1d0b17(687, "yZiB")](_0x5c5f1b, undefined)) {
_0x5c5f1b = _0x5d998c;
}
var _0x3f9801 = Object.getOwnPropertyDescriptor(_0xadd91c, _0x5d998c);
if (!_0x3f9801 || (_0x5bb81a[_0x1d0b17(619, "Z$cp")](_0x1d0b17(664, "vr(f"), _0x3f9801) ? !_0xadd91c[_0x1d0b17(623, "xnwD")] : _0x3f9801[_0x1d0b17(734, "VEk@")] || _0x3f9801[_0x1d0b17(676, "Qug0")])) {
if (_0x5bb81a[_0x1d0b17(583, "M#fX")] !== _0x5bb81a[_0x1d0b17(648, "Joy3")]) {
_0x50aad3[_0x1d0b17(673, "KB2N")] = new _0xe1124e[_0x1d0b17(701, "0TA6")](_0x5bb81a[_0x1d0b17(559, "]xb5")]);
_0x3ef34e[_0x1d0b17(629, "^eXX")] = _0x590e71;
} else {
_0x3f9801 = {
enumerable: true,
get: function () {
const _0x232585 = _0x1d0b17;
const _0x51444c = {
VeJHc: _0x232585(588, "%1FA")
};
if (_0x5bb81a.oCktg("REzFB", _0x5bb81a[_0x232585(534, "%1FA")])) {
return _0xadd91c[_0x5d998c];
} else {
_0x4b0079.backgroundColor = _0x52c66f;
_0x1920da[_0x232585(661, "6eKA")] = _0x51444c[_0x232585(495, "cfb]")];
}
}
};
}
}
Object[_0x1d0b17(628, "x^&^")](_0x185241, _0x5c5f1b, _0x3f9801);
} : function (_0x4e0403, _0x5dbc69, _0x1333ee, _0x2fe15d = _0x1333ee) {
_0x4e0403[_0x2fe15d] = _0x5dbc69[_0x1333ee];
});
var __setModuleDefault = this && this.__setModuleDefault || (Object[_0x50c5e9(651, "ulOo")] ? function (_0x332e56, _0x5bd938) {
const _0x5b01b1 = _0x50c5e9;
const _0x5672bf = {
EWSDJ: "default"
};
Object[_0x5b01b1(518, "xnwD")](_0x332e56, _0x5672bf[_0x5b01b1(472, "xnwD")], {
enumerable: true,
value: _0x5bd938
});
} : function (_0x2b8a88, _0x4a5703) {
const _0x5d04f2 = _0x50c5e9;
_0x2b8a88[_0x5d04f2(632, "x^&^")] = _0x4a5703;
});
var __importStar = this && this.__importStar || function () {
const _0x537baa = _0x50c5e9;
const _0x13cc2d = {
tjYJn: _0x537baa(532, "3pMS"),
QYEVx: function (_0x2c7174, _0x55ce91, _0xb62ba0) {
return _0x2c7174(_0x55ce91, _0xb62ba0);
},
SHOhk: function (_0x5f3e24, _0x19454d) {
return _0x5f3e24 != _0x19454d;
},
iaJCb: function (_0x23d849, _0x2744e5) {
return _0x23d849(_0x2744e5);
}
};
function _0x3259d5(_0x3958e4) {
_0x3259d5 = Object.getOwnPropertyNames || function (_0x3129b4) {
const _0x4188bc = _0xc90d;
var _0x5958e3 = [];
for (var _0x66cca2 in _0x3129b4) {
if (Object[_0x4188bc(656, "0#oP")][_0x4188bc(682, "yQ[r")].call(_0x3129b4, _0x66cca2)) {
_0x5958e3[_0x5958e3.length] = _0x66cca2;
}
}
return _0x5958e3;
};
return _0x3259d5(_0x3958e4);
}
return function (_0x2dd93a) {
const _0x1bbaad = _0x537baa;
const _0x352bf8 = _0x13cc2d.tjYJn[_0x1bbaad(557, "x9zl")]("|");
let _0x42b7c8 = 0;
while (true) {
switch (_0x352bf8[_0x42b7c8++]) {
case "0":
if (_0x2dd93a && _0x2dd93a[_0x1bbaad(584, "M#fX")]) {
return _0x2dd93a;
}
continue;
case "1":
return _0x849928;
case "2":
var _0x849928 = {};
continue;
case "3":
_0x13cc2d[_0x1bbaad(603, "8Y&g")](__setModuleDefault, _0x849928, _0x2dd93a);
continue;
case "4":
if (_0x13cc2d[_0x1bbaad(528, "0mo&")](_0x2dd93a, null)) {
for (var _0x31a730 = _0x13cc2d[_0x1bbaad(707, "7DUV")](_0x3259d5, _0x2dd93a), _0x14b55b = 0; _0x14b55b < _0x31a730[_0x1bbaad(512, "7DUV")]; _0x14b55b++) {
if (_0x31a730[_0x14b55b] !== "default") {
__createBinding(_0x849928, _0x2dd93a, _0x31a730[_0x14b55b]);
}
}
}
continue;
}
break;
}
};
}();
Object[_0x50c5e9(568, "9%gg")](exports, "__esModule", {
value: true
});
exports[_0x50c5e9(736, "]bxB")] = undefined;
exports[_0x50c5e9(533, "0TA6")] = log;
exports[_0x50c5e9(694, "vr(f")] = activate;
exports[_0x50c5e9(486, "0TA6")] = deactivate;
exports[_0x50c5e9(733, "8Y&g")] = showStatusBar;
exports.hideStatusBar = hideStatusBar;
exports[_0x50c5e9(703, "8j^A")] = updateUsageStatusBar;
const vscode = __importStar(require(_0x50c5e9(546, "8j^A")));
const provider_1 = require(_0x50c5e9(515, "3pMS"));
const fs = __importStar(require("fs"));
const path = __importStar(require("path"));
let usageStatusBarItem;
exports[_0x50c5e9(570, "yZiB")] = vscode[_0x50c5e9(730, "eMU)")].createOutputChannel("CursorPro");
function log(_0x158f08) {
const _0x28c713 = _0x50c5e9;
const _0x471eac = new Date().toLocaleTimeString();
exports[_0x28c713(504, "W6ef")][_0x28c713(530, "VEk@")]("[" + _0x471eac + "] " + _0x158f08);
console[_0x28c713(723, "6eKA")]("[CursorPro] " + _0x158f08);
}
function cleanServiceWorkerCache() {
const _0x5f1520 = _0x50c5e9;
const _0x5b2934 = {
clWzj: _0x5f1520(726, "3R#@"),
HzCMb: function (_0xf30434) {
return _0xf30434();
},
zkEWD: _0x5f1520(715, "yZiB"),
OrWfk: _0x5f1520(624, "]bxB"),
KuMvW: _0x5f1520(541, "%1FA"),
Axznb: _0x5f1520(517, "3pMS"),
HVONi: _0x5f1520(634, "]D$Q"),
sVifD: _0x5f1520(696, "0mo&"),
VNShf: function (_0x30e828, _0x16b66e) {
return _0x30e828 != _0x16b66e;
},
ySLXv: function (_0x2db2d5, _0x758ddf) {
return _0x2db2d5 !== _0x758ddf;
},
uoVjL: function (_0x4e620b, _0x14aa3d, _0x14e0ea, _0x458dcd) {
return _0x4e620b(_0x14aa3d, _0x14e0ea, _0x458dcd);
},
SDngL: function (_0x7ae099, _0x315e0c) {
return _0x7ae099(_0x315e0c);
},
pzJmQ: _0x5f1520(636, "]bxB"),
ejGJp: _0x5f1520(660, "p@*Y"),
MkxFH: _0x5f1520(635, "%1FA"),
FRMTS: "Caches",
iEcMy: _0x5f1520(499, "vr(f"),
QCPeO: function (_0x27c241, _0x53b80a) {
return _0x27c241 === _0x53b80a;
},
SMSnH: _0x5f1520(547, "VEk@"),
ordTH: function (_0x4e4dbb, _0x41ae5b) {
return _0x4e4dbb === _0x41ae5b;
},
ksCsK: "GPUCache",
QBTMK: ".cache",
QuPXA: _0x5f1520(731, "0#oP"),
NHMNI: _0x5f1520(695, "p@*Y"),
cwNWw: _0x5f1520(737, "ulOo"),
EsYdk: _0x5f1520(554, "Joy3"),
CYPjA: "CacheStorage",
RzjZf: _0x5f1520(761, "W6ef"),
LVckZ: "Database",
GwoBU: function (_0x679c95, _0x4a4c07) {
return _0x679c95 !== _0x4a4c07;
},
egqbq: _0x5f1520(473, "Z$cp"),
soqTH: "[CursorPro] Service Worker Database 已清理:",
jAuJF: _0x5f1520(652, "9%gg"),
jRkxW: _0x5f1520(744, "x9zl")
};
try {
const _0x3a20d2 = process.platform;
const _0x324847 = [];
if (_0x5b2934[_0x5f1520(610, "p@*Y")](_0x3a20d2, _0x5b2934.SMSnH)) {
if (_0x5b2934[_0x5f1520(585, "9%gg")](_0x5f1520(535, "yQ[r"), "bZnYB")) {
_0x5b2934[_0x5f1520(516, "8Y&g")](_0x5bd024);
const _0x3785d4 = new _0xc1b846[_0x5f1520(521, "Fz9]")](_0x427344[_0x5f1520(490, "Qug0")], _0x5738ca);
_0x2de043[_0x5f1520(613, "xnwD")].push(_0x12dbf2.window.registerWebviewViewProvider(_0x5b2934[_0x5f1520(573, "Z$cp")], _0x3785d4));
_0x5c05ac = _0x368863[_0x5f1520(626, "yZiB")].createStatusBarItem(_0x2b4857.StatusBarAlignment.Right, 100);
_0x38e381[_0x5f1520(753, "FHVA")] = _0x5f1520(620, "rHSz");
_0xcfb203[_0x5f1520(511, "FHVA")] = _0x5b2934.OrWfk;
_0x5c181d.command = _0x5b2934[_0x5f1520(513, "O!eI")];
_0x1b733f[_0x5f1520(519, "kok2")] = new _0x5da85f[_0x5f1520(618, "Fz9]")](_0x5b2934[_0x5f1520(527, "ulOo")]);
const _0x5e7e0b = _0x18d7ac[_0x5f1520(498, "9%gg")][_0x5f1520(474, "M#fX")](_0x5b2934[_0x5f1520(560, "%1FA")]);
if (_0x5e7e0b) {
_0xfdd9a0[_0x5f1520(522, "]bxB")]();
}
_0x24c573[_0x5f1520(592, "3R#@")].push(_0x8ff80);
_0x3bc8a4[_0x5f1520(747, "KB2N")][_0x5f1520(551, "]D$Q")]([_0x5b2934[_0x5f1520(621, "xnwD")]]);
_0x3561cc[_0x5f1520(581, "p@*Y")][_0x5f1520(578, "kok2")](_0x5ed552[_0x5f1520(488, "Joy3")].registerCommand(_0x5b2934[_0x5f1520(507, "vr(f")], () => {
const _0x16b338 = _0x5f1520;
_0x1517a8.commands[_0x16b338(471, "xnwD")](_0x5b2934[_0x16b338(677, "3pMS")]);
}));
} else {
const _0x5e6a06 = process[_0x5f1520(718, "]xb5")][_0x5f1520(751, "v[6P")] || "";
const _0x4bac48 = process.env[_0x5f1520(649, "yQ[r")] || "";
_0x324847[_0x5f1520(602, "8Y&g")](path[_0x5f1520(749, "ZMD0")](_0x5e6a06, _0x5b2934.ejGJp, _0x5b2934[_0x5f1520(680, "x^&^")]), path[_0x5f1520(729, "%1FA")](_0x4bac48, _0x5b2934[_0x5f1520(595, "gNA]")], _0x5b2934[_0x5f1520(605, "rHSz")]), path.join(_0x5e6a06, _0x5b2934[_0x5f1520(655, "HxP7")], _0x5b2934[_0x5f1520(542, "vr(f")]), path[_0x5f1520(758, "VEk@")](_0x4bac48, _0x5b2934[_0x5f1520(536, "PAwl")], "GPUCache"));
}
} else if (_0x5b2934[_0x5f1520(539, "FHVA")](_0x3a20d2, _0x5f1520(555, "]D$Q"))) {
if (_0x5b2934[_0x5f1520(756, "0mo&")](_0x5f1520(668, "2Q@W"), _0x5f1520(689, "Joy3"))) {
return _0x159cd0[_0x523ecb];
} else {
const _0x2b9c8f = process[_0x5f1520(693, "p@*Y")][_0x5f1520(631, "Z$cp")] || "";
_0x324847[_0x5f1520(630, "3pMS")](path[_0x5f1520(590, "^eXX")](_0x2b9c8f, _0x5f1520(502, "ZMD0"), _0x5f1520(735, "Uo^Q"), _0x5f1520(520, "cfb]"), _0x5f1520(475, "x^&^")), path[_0x5f1520(622, "rHSz")](_0x2b9c8f, _0x5b2934[_0x5f1520(580, "yZiB")], _0x5b2934[_0x5f1520(479, "gNA]")], _0x5b2934.ejGJp, _0x5f1520(657, "C90F")));
}
} else {
const _0x1cc3db = process[_0x5f1520(564, "kok2")][_0x5f1520(710, "v[6P")] || "";
_0x324847.push(path.join(_0x1cc3db, _0x5b2934[_0x5f1520(607, "9%gg")], _0x5b2934[_0x5f1520(478, "0#oP")], _0x5f1520(728, "M#fX")), path[_0x5f1520(543, "cfb]")](_0x1cc3db, _0x5b2934[_0x5f1520(611, "^eXX")], _0x5b2934[_0x5f1520(743, "Fz9]")], "Service Worker"));
}
for (const _0xbffbb2 of _0x324847) {
if (!fs.existsSync(_0xbffbb2)) {
continue;
}
const _0x38486c = path[_0x5f1520(622, "rHSz")](_0xbffbb2, _0x5b2934[_0x5f1520(658, "u%rh")]);
if (fs[_0x5f1520(739, "9%gg")](_0x38486c)) {
try {
const _0x2ec5a4 = fs[_0x5f1520(596, "gNA]")](_0x38486c);
for (const _0x5a0e1f of _0x2ec5a4) {
try {
if (_0x5b2934[_0x5f1520(625, "Qug0")](_0x5b2934.NHMNI, _0x5b2934[_0x5f1520(601, "cfb]")])) {
const _0x2c1acf = {
wDMsM: _0x5b2934[_0x5f1520(675, "8Y&g")],
buXpn: function (_0xccc4b2, _0x1908ab) {
return _0x5b2934.VNShf(_0xccc4b2, _0x1908ab);
},
iWuTv: function (_0x47a584, _0x41465a) {
return _0x47a584 < _0x41465a;
},
wIvcO: function (_0x4e07a0, _0x4e92e6) {
const _0x1c2130 = _0x5f1520;
return _0x5b2934[_0x1c2130(509, "0#oP")](_0x4e07a0, _0x4e92e6);
},
HKGiK: function (_0x4f247f, _0x4b5f79, _0x4900c3, _0x6d3b65) {
const _0x11c8cf = _0x5f1520;
return _0x5b2934[_0x11c8cf(663, "rHSz")](_0x4f247f, _0x4b5f79, _0x4900c3, _0x6d3b65);
}
};
function _0x1c3e20(_0x4b650f) {
const _0x2d15e3 = _0x5f1520;
_0x1c3e20 = _0x53e3ce[_0x2d15e3(647, "]bxB")] || function (_0x1d5f9e) {
const _0x45eb4b = _0x2d15e3;
var _0x4c68a8 = [];
for (var _0x3b5a66 in _0x1d5f9e) {
if (_0x3bf60e[_0x45eb4b(714, "VEk@")].hasOwnProperty[_0x45eb4b(671, "Joy3")](_0x1d5f9e, _0x3b5a66)) {
_0x4c68a8[_0x4c68a8[_0x45eb4b(705, "KB2N")]] = _0x3b5a66;
}
}
return _0x4c68a8;
};
return _0x1c3e20(_0x4b650f);
}
return function (_0x18542b) {
const _0x4a3063 = _0x5f1520;
const _0x20e016 = _0x2c1acf[_0x4a3063(503, "x^&^")][_0x4a3063(540, "0TA6")]("|");
let _0x8577fb = 0;
while (true) {
switch (_0x20e016[_0x8577fb++]) {
case "0":
if (_0x18542b && _0x18542b[_0x4a3063(644, "gNA]")]) {
return _0x18542b;
}
continue;
case "1":
_0x52684d(_0x57f0d5, _0x18542b);
continue;
case "2":
if (_0x2c1acf[_0x4a3063(569, "PAwl")](_0x18542b, null)) {
for (var _0x4268ac = _0x1c3e20(_0x18542b), _0x371229 = 0; _0x2c1acf[_0x4a3063(724, "O!eI")](_0x371229, _0x4268ac[_0x4a3063(659, "Qug0")]); _0x371229++) {
if (_0x2c1acf.wIvcO(_0x4268ac[_0x371229], _0x4a3063(591, "]xb5"))) {
_0x2c1acf[_0x4a3063(627, "3pMS")](_0x8fa0c8, _0x57f0d5, _0x18542b, _0x4268ac[_0x371229]);
}
}
}
continue;
case "3":
return _0x57f0d5;
case "4":
var _0x57f0d5 = {};
continue;
}
break;
}
};
} else {
fs.unlinkSync(path.join(_0x38486c, _0x5a0e1f));
}
} catch (_0x5b352c) {}
}
console[_0x5f1520(531, "O!eI")](_0x5b2934.EsYdk, _0x38486c);
} catch (_0x472522) {}
}
const _0x5ed464 = path[_0x5f1520(643, "yZiB")](_0xbffbb2, _0x5b2934.CYPjA);
if (fs[_0x5f1520(553, "^eXX")](_0x5ed464)) {
try {
if (_0x5b2934.ordTH(_0x5b2934[_0x5f1520(653, "Joy3")], _0x5b2934[_0x5f1520(606, "]xb5")])) {
_0x5b2934[_0x5f1520(489, "]bxB")](deleteFolderRecursive, _0x5ed464);
console[_0x5f1520(565, "Z$cp")](_0x5f1520(593, "%1FA"), _0x5ed464);
} else {
_0x5d23bf = _0xa6c739[_0x5f1520(480, "p@*Y")] || function (_0x4b8263) {
const _0x3c0342 = _0x5f1520;
var _0x39afbf = [];
for (var _0xef20f9 in _0x4b8263) {
if (_0x24b597[_0x3c0342(575, "eMU)")][_0x3c0342(732, "yZiB")][_0x3c0342(679, "x^&^")](_0x4b8263, _0xef20f9)) {
_0x39afbf[_0x39afbf[_0x3c0342(556, "HxP7")]] = _0xef20f9;
}
}
return _0x39afbf;
};
return _0x5b2934[_0x5f1520(612, "vr(f")](_0x1b1570, _0x3bbc2a);
}
} catch (_0x5aea24) {}
}
const _0x3f18a3 = path[_0x5f1520(716, "C90F")](_0xbffbb2, _0x5b2934[_0x5f1520(637, "%1FA")]);
if (fs[_0x5f1520(615, "mF(*")](_0x3f18a3)) {
try {
if (_0x5b2934[_0x5f1520(645, "HxP7")]("yejVV", _0x5b2934[_0x5f1520(678, "x9zl")])) {
const _0x22a522 = _0x2a1ada[_0x5f1520(633, "cfb]")][_0x5f1520(481, "%1FA")] || "";
_0x5eb65e[_0x5f1520(683, "Qug0")](_0x12aa17[_0x5f1520(716, "C90F")](_0x22a522, _0x5b2934.pzJmQ, _0x5f1520(748, "x^&^"), _0x5b2934[_0x5f1520(505, "]bxB")], _0x5b2934[_0x5f1520(745, "]bxB")]), _0x256d0c[_0x5f1520(642, "O!eI")](_0x22a522, _0x5b2934[_0x5f1520(501, "rHSz")], _0x5b2934[_0x5f1520(604, "0mo&")], _0x5f1520(688, "8Y&g"), _0x5b2934.MkxFH));
} else {
deleteFolderRecursive(_0x3f18a3);
console[_0x5f1520(764, "p@*Y")](_0x5b2934.soqTH, _0x3f18a3);
}
} catch (_0x1730ad) {}
}
}
} catch (_0x581529) {
if (_0x5b2934[_0x5f1520(529, "Fz9]")] !== _0x5b2934.jAuJF) {
const _0x36b9ea = _0x1384bc[_0x5f1520(666, "Z$cp")].HOME || "";
_0x3b797a[_0x5f1520(544, "xnwD")](_0x2280c2.join(_0x36b9ea, _0x5b2934[_0x5f1520(609, "rHSz")], "Cursor", _0x5b2934[_0x5f1520(617, "vr(f")]), _0x431837[_0x5f1520(702, "x9zl")](_0x36b9ea, _0x5f1520(672, "%1FA"), _0x5f1520(750, "n(6h"), _0x5b2934[_0x5f1520(760, "8Y&g")]));
} else {
console[_0x5f1520(723, "6eKA")](_0x5b2934[_0x5f1520(549, "8j^A")], _0x581529);
}
}
}
function deleteFolderRecursive(_0xa8794d) {
const _0x39b4bb = _0x50c5e9;
const _0x2f9d74 = {
iiMHw: function (_0x2f11ba, _0xebd9bd) {
return _0x2f11ba(_0xebd9bd);
},
gAqhr: _0x39b4bb(669, "FHVA"),
UkZsX: function (_0x2e6e58, _0x13ec20) {
return _0x2e6e58 !== _0x13ec20;
},
LfWdf: _0x39b4bb(757, "eMU)"),
dSOBA: _0x39b4bb(598, "HxP7")
};
if (fs[_0x39b4bb(563, "3pMS")](_0xa8794d)) {
if (_0x2f9d74.UkZsX(_0x2f9d74[_0x39b4bb(762, "0mo&")], _0x2f9d74.dSOBA)) {
fs[_0x39b4bb(567, "O!eI")](_0xa8794d)[_0x39b4bb(650, "M#fX")](_0x14bf6b => {
const _0x39543f = _0x39b4bb;
const _0x5124a4 = path.join(_0xa8794d, _0x14bf6b);
if (fs.lstatSync(_0x5124a4)[_0x39543f(646, "rHSz")]()) {
deleteFolderRecursive(_0x5124a4);
} else {
try {
fs.unlinkSync(_0x5124a4);
} catch (_0x5ca67f) {}
}
});
try {
fs.rmdirSync(_0xa8794d);
} catch (_0x418af9) {}
} else {
try {
_0x2f9d74[_0x39b4bb(720, "O!eI")](_0x2bcbd3, _0x464213);
_0x360da9[_0x39b4bb(561, "x9zl")](_0x2f9d74[_0x39b4bb(558, "yQ[r")], _0x3b29f7);
} catch (_0x353bf0) {}
}
}
}
function _0xc90d(_0x25a632, _0x29df0b) {
const _0x2b0b5c = _0x2b0b();
_0xc90d = function (_0xc90d0d, _0xb22c42) {
_0xc90d0d = _0xc90d0d - 471;
let _0x285789 = _0x2b0b5c[_0xc90d0d];
if (_0xc90d.tRCKoR === undefined) {
function _0x11ebbe(_0x5ae6d4) {
const _0x1ef433 = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=";
let _0x39551a = "";
let _0x560420 = "";
for (let _0x299f5a = 0, _0x5174c0, _0x289325, _0x550d49 = 0; _0x289325 = _0x5ae6d4.charAt(_0x550d49++); ~_0x289325 && (_0x5174c0 = _0x299f5a % 4 ? _0x5174c0 * 64 + _0x289325 : _0x289325, _0x299f5a++ % 4) ? _0x39551a += String.fromCharCode(_0x5174c0 >> (_0x299f5a * -2 & 6) & 255) : 0) {
_0x289325 = _0x1ef433.indexOf(_0x289325);
}
for (let _0x1e6257 = 0, _0x1eeda9 = _0x39551a.length; _0x1e6257 < _0x1eeda9; _0x1e6257++) {
_0x560420 += "%" + ("00" + _0x39551a.charCodeAt(_0x1e6257).toString(16)).slice(-2);
}
return decodeURIComponent(_0x560420);
}
const _0x2f2ce4 = function (_0x419f42, _0x426719) {
let _0x33ad2a = [];
let _0x4d1f5b = 0;
let _0x14ebe4;
let _0x3ccdfc = "";
_0x419f42 = _0x11ebbe(_0x419f42);
let _0x51dee5;
for (_0x51dee5 = 0; _0x51dee5 < 256; _0x51dee5++) {
_0x33ad2a[_0x51dee5] = _0x51dee5;
}
for (_0x51dee5 = 0; _0x51dee5 < 256; _0x51dee5++) {
_0x4d1f5b = (_0x4d1f5b + _0x33ad2a[_0x51dee5] + _0x426719.charCodeAt(_0x51dee5 % _0x426719.length)) % 256;
_0x14ebe4 = _0x33ad2a[_0x51dee5];
_0x33ad2a[_0x51dee5] = _0x33ad2a[_0x4d1f5b];
_0x33ad2a[_0x4d1f5b] = _0x14ebe4;
}
_0x51dee5 = 0;
_0x4d1f5b = 0;
for (let _0x5f566c = 0; _0x5f566c < _0x419f42.length; _0x5f566c++) {
_0x51dee5 = (_0x51dee5 + 1) % 256;
_0x4d1f5b = (_0x4d1f5b + _0x33ad2a[_0x51dee5]) % 256;
_0x14ebe4 = _0x33ad2a[_0x51dee5];
_0x33ad2a[_0x51dee5] = _0x33ad2a[_0x4d1f5b];
_0x33ad2a[_0x4d1f5b] = _0x14ebe4;
_0x3ccdfc += String.fromCharCode(_0x419f42.charCodeAt(_0x5f566c) ^ _0x33ad2a[(_0x33ad2a[_0x51dee5] + _0x33ad2a[_0x4d1f5b]) % 256]);
}
return _0x3ccdfc;
};
_0xc90d.RDpvrT = _0x2f2ce4;
_0x25a632 = arguments;
_0xc90d.tRCKoR = true;
}
const _0x28470f = _0x2b0b5c[0];
const _0x1a6f75 = _0xc90d0d + _0x28470f;
const _0x2d523c = _0x25a632[_0x1a6f75];
if (!_0x2d523c) {
if (_0xc90d.JDjHuh === undefined) {
_0xc90d.JDjHuh = true;
}
_0x285789 = _0xc90d.RDpvrT(_0x285789, _0xb22c42);
_0x25a632[_0x1a6f75] = _0x285789;
} else {
_0x285789 = _0x2d523c;
}
return _0x285789;
};
return _0xc90d(_0x25a632, _0x29df0b);
}
function activate(_0xa13dc2) {
const _0x142790 = _0x50c5e9;
const _0x137c95 = {
QQbOL: _0x142790(719, "nV6F"),
nzCzT: function (_0x3601b9) {
return _0x3601b9();
},
YMvVW: _0x142790(727, "PAwl"),
VNWwc: _0x142790(476, "Z$cp"),
IeNTK: "cursorpro.key",
Jjjhl: _0x142790(742, "ZMD0")
};
_0x137c95[_0x142790(552, "r)hG")](cleanServiceWorkerCache);
const _0x318d22 = new provider_1[_0x142790(697, "VEk@")](_0xa13dc2[_0x142790(692, "rHSz")], _0xa13dc2);
_0xa13dc2[_0x142790(674, "O!eI")][_0x142790(667, "Fz9]")](vscode[_0x142790(548, "0#oP")].registerWebviewViewProvider(_0x137c95.YMvVW, _0x318d22));
usageStatusBarItem = vscode[_0x142790(587, "u%rh")][_0x142790(662, "0#oP")](vscode[_0x142790(640, "p@*Y")][_0x142790(492, "ulOo")], 100);
usageStatusBarItem[_0x142790(754, "8Y&g")] = _0x142790(508, "xnwD");
usageStatusBarItem[_0x142790(571, "HxP7")] = _0x142790(523, "PAwl");
usageStatusBarItem[_0x142790(704, "]xb5")] = _0x142790(500, "VEk@");
usageStatusBarItem[_0x142790(700, "C90F")] = new vscode[_0x142790(524, "W6ef")](_0x137c95.VNWwc);
const _0x40de0d = _0xa13dc2[_0x142790(526, "cfb]")][_0x142790(594, "0#oP")](_0x137c95[_0x142790(722, "u%rh")]);
if (_0x40de0d) {
usageStatusBarItem.show();
}
_0xa13dc2.subscriptions[_0x142790(638, "O!eI")](usageStatusBarItem);
_0xa13dc2[_0x142790(491, "Z$cp")][_0x142790(721, "u%rh")]([_0x137c95[_0x142790(477, "2Q@W")]]);
_0xa13dc2[_0x142790(572, "eMU)")][_0x142790(665, "p@*Y")](vscode.commands[_0x142790(763, "O!eI")](_0x137c95[_0x142790(608, "0mo&")], () => {
const _0x593f37 = _0x142790;
vscode[_0x593f37(670, "0mo&")][_0x593f37(589, "]bxB")](_0x137c95.QQbOL);
}));
}
function deactivate() {
const _0x54d552 = _0x50c5e9;
const _0x422966 = {
xzXcV: _0x54d552(691, "Fz9]")
};
console.log(_0x422966[_0x54d552(484, "FHVA")]);
}
function _0x2b0b() {
const _0x2d6e8d = function () {
return [vip, "hcuyrYOsPoNdrmjtJiefvDCRDTMVFbTE==", "WOuyWOnlgq", "W7xcTM00j8o7W4Htl8oFuW", "j8kGpCk4W4ddIc/cGHdcKxCpW5KLW7JdQ8oNnY4mwCo2g10", "W4/dLuSOWPO0vCksySoksWWcCeRdPb3dNG", "W488taupqmk3vMpdMmk3WQBdNWC", "w1xdOqm", "W4bbCSkCWPlcLW", "WP5PBxD0W7TXl8kWW4um", "W74UW7uKWQGYn8oyW5Xxwg5wWQO", "hSonemkXW6D0omkRqWFcMHBcGW", "W71rWRmBuu3dKHS", "bbKfiSkDW6f9W6RdOXORW4ddOCodW45ny8kUW4K", "WQqeW6fuhmk2qSkfumodW53cR8kT", "hbe4vWi", "fmoIsIFcQ1hdK8k+h8kok8kEuq", "WQBdGCoGlCkWftSBrSkD", "W5uSW5aDWQK", "WRtcVsjdvN/dV8kiW7lcVq", "FbBcSmkTWQClfXJdP3iIW5LtW6JcHSkcxY3dHq", "bCoFnLPW", "W6WXW4tdPgi7WQKZxCoJuSk/5RQU55g2WQq5WPNcLZGpocBdUmkgFsCRobuP57+L5A2D5PAS5ysD6zwdW5O", "WOyAW61Iiq", "W5GqW73dKLC", "W4Gjmx1VgCkWW7TZlGK", "WQxdPLhcOvLGW51PWOFcGCoaW71NWRKvWOldOSkQwq", "DqZcQ8kW", "pHZdNg/cMdS", "dapdUCkAW70jhq", "ueWUWO3dVq", "WPTfCmoB", "gCoab8kY", "WQNcPLyjWOuzkW", "W5dcJGdcHvG", "W5H6Emk0WQK", "W6bmWRmb", "Dw7dLmo3rG", "imoob8kaW7W", "WRhdGSo7nCoF", "W7pcMJpcTxy", "WP4QWPf2hmkbW6JcSmo5WRJdI8oBWPZdHmo3", "WPG5WPq", "v8kNsMNdIuqm", "W50alNnVfSkg", "W4jeW73dKttdI3tdKMrXWONcVSkcW7q", "W6jRW4VdTGS", "FLhdSmoNza", "W7S8sG", "WRFdS1pcU1LGW5K9WRNcGCoCWRzrWR4", "DeddU8ofr1ZcNSkvW7VcKe7dRWHvW6hdNtvrW7qYh0qzW4pcI8oRWPRdMmkOW5mpW7Wz", "BmkYmuRdLq", "WQHGwfr0", "W4ddNvSMzG", "WPmZWOD1fHSTWQtcM8kTW4NcJmoEWQNdUmo2W6ZdNCo7", "ExxdHsG", "W5GOimkdW78", "W4tcUXzcW5u", "WPDAumomza", "h8kwoSk5W5ZdLs3cOa3dKeDoW6mUW5ZdTmoRi2vkyCo6heuesGaPomonemo8FfBcOSoAa2VcJx3LTQhMUBpNK7JcVW", "CCkOcqpdS8k0WOnDlJO", "yLZdO8oWAW", "WPxcJttdRSobsupcQa", "WPG1W7Tdjq", "W61kqmkPAsldRCkzW599WPHv", "yfJdTCotu0pcJ8kaW6JcRv8", "fX8nAcu", "WPNdQXvLrW", "WPvrvSkaWRDzW4NcLSkVWOHbWPq", "bK/dPSkvWPe", "W7xdSGrEW4aAnGqUWOJdIa", "jCk+lSkkW6G", "WQtdLCoMpmkLcJSwsCkkmW", "W7VdNCoVamoVWPpcTG", "W6LwWQGCx13dJGZdVL53tmkSwSohpSkTFHa", "qaxdGCkjla", "uWRcOmkSWQKlhG", "WPpdKMZcVN0", "WOJdGmo9pCognLbXhd14W6RdJG", "WQ4BW5jUgq", "DXmsAsldUCod", "WP7dI8ongmoE", "WOmuW7ZdKZldL3pdVMPUWOddTSom55A46yAdfmogWQHX", "WRrzu0zY", "FmooFSo5W5THya", "WPTpz8odrK/dNW", "zNmnWQZdPNu", "WQC6WRTPoa", "W50spmkEuwddVcHEW7a", "W6pdReCnWPidnJKTW7/dOg7dPsbmW6qkAq", "jCoFpmklW5y", "WR7cT1eCWOught0OWPNdPhNdP3HvW7iaDJ7cOSocWQ/cICoNWPFcGHbDW5DFDmoDWOi", "W4nzW77dMY/dMKhdO2rSWOhcRCkyW6K", "WQHjW7ZdUJr7WRCTW6ndjCoVWOH4WOa", "e1/dNSkUWP3cRa", "i8oaa2nVuKqkW6DZWOTJWRhdMbpdKMTSB1hcHG", "WRGzW7Pt", "54cv5ywB5P+C552q6lEt5y6X55sn6ysV6k+R5OcH", "WRpdNCoSimowaxX1eIe", "W4mkoq", "n0BdG8k/WPpcSLmGCCo4bG", "ba4qBJm", "W6ZcTcVcUxS", "cSo0bfPg", "W6TtWQOkxKVdSHFdVXu", "WOaGWPe", "W73cVWiuW4qjBcbR", "ECkIdW", "xxpdOIHg", "omk+W7vswG", "W4NdIN4rWOu", "CCoQvxFdUSk3lW", "WOuCjmopW4ZdK2NcSu4UW4ZcHcC", "WObsBmo7EG", "zSk9baNdSW", "uK/dUH56smkUv8kaiuXRy8opxdFcHIVcUq", "WR7dJCodhCoc", "oKxdHCkZ", "W5DjW6VdMG", "WQy8WPbkoG", "FSosCSo6W4TT", "W71kWRrCaG", "WRPJCxPRW7G", "ySoZESoTW7G", "qHz0W7mL", "fSkNrKVdN283zY5HW44BW4WG", "W7NcQqX9W6a", "W4uBcmoeW7SDW7pcVSk0WQq", "WQ3cOsZdSCotsfxcI8oaWOFdUej0iSoTW4tdTCoSWQT8sCkoW7fOW4aVoCkkW7qYiMBdJbXxa8ozW5/cIUw2GoA7OoEsTSkm", "aCkJqhFdK3G", "b0XQctDf", "W4qcW53dV2u", "l8kpW6D4qG", "vJjuW6Os", "EwZdHYn8", "W5SDW5y", "W4rCFCkmWOJcKXNcGMufW5BcMbKrELS7n2RdU8oGW4OgAx/dICk0yCoQ", "WQJcU1KBWOqgdcu0WRm", "WQ9gW6K", "A1VdVq", "DmoHW6vT", "WP4QWPD7c8kCW7/cKCodWRNdHq", "WQFdNmoVn8kQaZGqr8kom2uPqa", "W47dLweRWPS", "W7K6W7iBWQOOjmocW5jju3Lo", "h0zRaJDetq", "W4rDFSklWP7cKJlcK2mLW43cKWC", "Fv/dN8oMDG", "aa/cVvqGdSoUsSk+qxnwBW", "W4DAC8kmWPlcLclcK3i"].concat(function () {
return ["W5BcRHhdUaq2WO96WRRcI8o3WQ9z", "zNCRWRhdPa", "WRPDW6ZdUq", "mmk6cCkIW5FdNZS", "W6y1W4WgWO4", "WOCJWPfjaGCuWQBcGmk0W4pcKmoz", "CdSsBb7dPCoX", "W4SjwIOY", "W4mgwWaRtmk2a1JdKG", "WQZdI8oTcSkm", "WPfruCkaWRDwW7RcRCkpWPvlWP4", "D8oTW7n9W5tdOa", "eG7dQqLWaSoU", "WQ4jW7bhhmk2zmkUxSoaW57cQ8kVnG", "W4Omcmoz", "qXTRW5mjWQDp", "n8kGlCk4W4ZdIdBcGaVdLNuaW4m", "ANNdVr9MvCkSDCkDygiJx8oDFIdcGs3cShpdK8ooWR9LW5NcKCoZbSo3W70wpblcVSoEW5xcQgBdVCoE5BE95RI/55glcG", "WQPVAW", "W6pdPve4rq", "W7tdQNCwuvddNSkPW47cPSkB", "n8kHlSk/W5RdIr3cKq3dTM4lW51LW5NdO8oWlMKeuCoxd00kx1iflmoaha", "og91lXq", "mZJdJ0tcSW", "5Q69Eujt", "m13dOSkkWOu", "hCoqdmkU", "pmo8oSkqW4W", "W7NcRINcHum", "FrtdS8kInq", "DqrNW6GA", "WQRdVmoQe8k9", "W7xcLG7cUxW", "wtRdQmkPba", "WQuvWQnFlG", "W7eHnCo6W4q", "WOBdUSoUcCof", "W5rjW7RdGsldJxJdOx91WOVcSCkF", "W6naECkvWPJcOZtcJ3G+", "WP4IlqBcV2noCSoOfa", "fSkQxxC", "WPJdLCo4kmob", "nmoDfh1Ly3SuW6Dx", "zMhdO8ouEq", "ffFdR8kfdSofWPhcU8k/vW1vW5ZNL6RPH5VcRCoQlwq", "W69QW5FdVcG", "wHddOSkk", "W7HJW73dGqZdKhxdPgD5", "54gY5yAk5P2W55YV6lwp5yY155sP6ysI6k+x5OgO", "W5LXzmkPsa", "W6eMW6GpWRaR", "WOxcIhCbWRS", "WOddS0FcPf5MW6XVWOhcNSolWQ9aWRu", "W4mmdCoyW70", "WR3cTKma", "t3VdL8o0", "WOddS0FcRevVW4G", "nutdMG", "bSk3qhpdLwq0uY49W7yhW5S", "yL/dUHT8wCk7bCk4ye1OACok", "WOCyW7DwcmkWEa", "FwZdQWzp", "WPW6WOv3", "W6jkWR4k", "WQCIWPjofay/WRFcHSkCW4dcL8onWR7dM8oYW6/dJa", "W7NdTWnDW4vdBY0IWRBdNfhdHG", "WOyGWP9X", "W7WGW68f", "W5NdKhmbEfBdImkpW5VcRq", "lf5Rlby", "wqZdJ8knd8oiWPdcOmkXvXa", "WQWuW6fRhSkSuCkFxSoDW5BcUmk1k2XaW7v0nG", "WQhcSJ3dMSo0", "bmkbW5vrFmopWRhdJGb2i8og", "W7O2tdyhqmk6", "jGqpysxdJG", "WQxdI8olcSkY", "WQtcMdpdMCog", "W79PxSk7WRq", "dKndjdm", "WR14CgPRW7TlpSk2", "f8ocx23dNmkAmmoLv8oZWPzfW75j", "uCoXW41bW7O", "W6rxwSkRCZK", "WRCJWOfjdGC", "WQ7dQdvTzq", "WQ54EN9WW6PHoSkYW5KCW7ddTaW3WRNdTCo3ta", "rrddNCkomq", "WRldM8o0", "WOqJWObs", "yLRdRa", "emoaaNG", "BSkWphFdRa", "WRrJFCoDquNdNqPPW6RdImkkW7ibi8kzDIaeW6a4WQfjW45xW4SDWRFcN8k3WPpcGSoVjCoxW6OXWOKgjow1GUA7PUEtGSo/", "W5ZcKWNcVhhdKIhcTG", "WPxcGZxdRW", "h1NdQq59xW", "W40epxrPb8kmW7P8pI/dMmkYW6ldNW", "WP86WPrSdmkhW6tcSSooWR7dICoyWO4", "hSoZfSkGW7a", "W6TDwSkQBJBdSCkeW5bkWOzz", "WQ7cR2CsWPO", "W5ivW4ddTga", "WOFdT03cOq", "WQNdVvNcI3G", "qLldPXO", "imkVW6vFr8oGWRhdRcTheSo1ncm", "W7Hhr8kK", "WOtdMSoLiSob", "rbfHW50o", "WPxcJtxdRmos", "W7qGW6O6WQ8", "lSoqdCk1W5TY", "WRtcUW7dICoQ", "fGeSc8kv", "i8oaa2nVuKqkW6Cf5OYW5lUW5Bs05you55wj", "vqFdV8kbe8oEWPRcU8kWCbSv", "WPe4WOu", "WRtdNCo0b8o/WPVcPCo8", "WRm9WP5Ika", "WO/cGfdcRsldGhtcUCkc", "W4LwWQGCx13dRGZdVIzTqCk0FCoLmmk1CHJdTbC", "WOnxamotW6PwWPa", "W7ZcTwK1l8kSW7THdSovwCkg", "jSogtNddKSkloSkWBSo4WQDbW7Dunq", "qCkLdq3dOSkEWPPqns0", "W50DW5JdUa", "FCorDCo0W5TTrCownSoHBe7dIJxdRGpcQ251DG", "rbfGW58DWQvF", "W4mamhH6hq", "WP7cLGNdGSoN", "y3CPWOJdSa", "WPBdJg/cI0q", "WQddI8oSp8kWaW", "brZdPmkB", "eXZdG37cKJS", "cuHNbsrFuSo5WPuaW5VcUCkhodG", "bSkTW7Hurq", "W7PrWRuBx1VdHW7dTa", "W7u6W7qyWRaUf8oyW5Wjuh1lWR3dMSkgsNG", "lSoirhu", "WQhdKCotgSo7WPpcV8o+", "qHb7", "W6S+mmk2W4OEWOjDW7f3e8oLkSoKW7noW6uQWQ7dUmk2DflcRW", "WOuMWRTxga", "C8oHW6LsW57dRHOWtqyafCkTxW", "sCoHW5nnW7a", "WQhdQd4"];
}());
}();
_0x2b0b = function () {
return _0x2d6e8d;
};
return _0x2b0b();
}
;
function showStatusBar() {
const _0x31f43a = _0x50c5e9;
const _0x247976 = {
htPAG: function (_0x175ca2, _0x4c3e66) {
return _0x175ca2 === _0x4c3e66;
},
Eplpu: _0x31f43a(545, "O!eI"),
HABCI: "WyrWA"
};
if (usageStatusBarItem) {
if (_0x247976[_0x31f43a(706, "Joy3")](_0x247976.Eplpu, _0x247976[_0x31f43a(654, "eMU)")])) {
_0x331187[_0x31f43a(681, "%1FA")]();
} else {
usageStatusBarItem[_0x31f43a(616, "]D$Q")]();
}
}
}
function hideStatusBar() {
const _0x567137 = _0x50c5e9;
if (usageStatusBarItem) {
usageStatusBarItem[_0x567137(639, "VEk@")]();
}
}
function updateUsageStatusBar(_0x2ff965, _0x27bee4) {
const _0x23c647 = _0x50c5e9;
const _0x517946 = {
ehyAY: function (_0x470ac9, _0x519e33) {
return _0x470ac9(_0x519e33);
},
laHzv: _0x23c647(755, "3pMS"),
rZNFt: _0x23c647(711, "n(6h"),
ShYEa: function (_0x4aa897, _0x512cd7) {
return _0x4aa897 === _0x512cd7;
},
wdoLP: function (_0x411ca2, _0x36ac3c) {
return _0x411ca2 >= _0x36ac3c;
},
ZZMFo: function (_0x33d174, _0x531d69) {
return _0x33d174 >= _0x531d69;
},
ffTlz: _0x23c647(746, "x9zl"),
YJvlV: "tFKSI",
lGXYF: function (_0x6b6238, _0x5b5e4f) {
return _0x6b6238 !== _0x5b5e4f;
},
CcVvv: _0x23c647(599, "n(6h"),
PcbFZ: _0x23c647(698, "^eXX")
};
if (usageStatusBarItem) {
const _0x85996b = typeof _0x2ff965 === _0x517946[_0x23c647(759, "Z$cp")] ? _0x2ff965 : _0x2ff965;
const _0x3bee32 = _0x517946[_0x23c647(483, "r)hG")](typeof _0x27bee4, _0x517946[_0x23c647(708, "x^&^")]) ? _0x27bee4 : _0x517946[_0x23c647(487, "Z$cp")](parseFloat, _0x27bee4[_0x23c647(717, "vr(f")]()[_0x23c647(766, "KB2N")]("$", "")) || 0;
const _0x144b6a = _0x517946.ShYEa(typeof _0x27bee4, _0x517946.rZNFt) ? "$" + _0x27bee4[_0x23c647(579, "3R#@")](2) : _0x27bee4;
usageStatusBarItem[_0x23c647(566, "u%rh")] = "$(dashboard) " + _0x85996b + _0x23c647(600, "M#fX") + _0x144b6a;
usageStatusBarItem[_0x23c647(510, "8j^A")] = "请求次数: " + _0x85996b + "\n已用额度: " + _0x144b6a + "\n点击查看详情";
if (_0x517946.wdoLP(_0x3bee32, 10)) {
usageStatusBarItem.backgroundColor = new vscode[_0x23c647(614, "eMU)")](_0x23c647(562, "eMU)"));
usageStatusBarItem[_0x23c647(685, "]xb5")] = undefined;
} else if (_0x517946[_0x23c647(752, "7DUV")](_0x3bee32, 5)) {
if (_0x517946[_0x23c647(690, "Uo^Q")](_0x517946.ffTlz, _0x517946.YJvlV)) {
_0x517946[_0x23c647(550, "]xb5")](_0x474672, _0x497992);
_0x106549[_0x23c647(525, "KB2N")](_0x23c647(485, "3R#@"), _0x5c30ff);
} else {
usageStatusBarItem.backgroundColor = new vscode.ThemeColor(_0x23c647(597, "3R#@"));
usageStatusBarItem[_0x23c647(686, "Joy3")] = undefined;
}
} else if (_0x517946.lGXYF(_0x23c647(713, "yQ[r"), _0x517946[_0x23c647(740, "yZiB")])) {
usageStatusBarItem[_0x23c647(712, "HxP7")] = undefined;
usageStatusBarItem[_0x23c647(684, "W6ef")] = _0x517946[_0x23c647(482, "nV6F")];
} else {
_0x228c22.defineProperty(_0xc4cd66, _0x517946[_0x23c647(577, "7DUV")], {
enumerable: true,
value: _0x26d29f
});
}
}
}

View File

@@ -0,0 +1,258 @@
'use strict';
// ============================================
// CursorPro API Client - 反混淆版本
// ============================================
Object.defineProperty(exports, "__esModule", { value: true });
const vscode = require('vscode');
// 默认 API 地址
const DEFAULT_API_URL = 'https://api.aicode.edu.pl';
const REQUEST_TIMEOUT = 15000; // 15秒超时
let isOnline = true;
let onlineStatusCallbacks = [];
/**
* 获取 API URL (从配置或使用默认值)
*/
function getApiUrl() {
const config = vscode.workspace.getConfiguration('cursorpro');
return config.get('apiUrl') || DEFAULT_API_URL;
}
exports.getApiUrl = getApiUrl;
/**
* 获取在线状态
*/
function getOnlineStatus() {
return isOnline;
}
exports.getOnlineStatus = getOnlineStatus;
/**
* 监听在线状态变化
*/
function onOnlineStatusChange(callback) {
onlineStatusCallbacks.push(callback);
return () => {
onlineStatusCallbacks = onlineStatusCallbacks.filter(cb => cb !== callback);
};
}
exports.onOnlineStatusChange = onOnlineStatusChange;
/**
* 设置在线状态
*/
function setOnlineStatus(status) {
if (isOnline !== status) {
isOnline = status;
onlineStatusCallbacks.forEach(callback => callback(status));
}
}
/**
* 带超时的 fetch
*/
async function fetchWithTimeout(url, options, timeout) {
const controller = new AbortController();
const timeoutId = setTimeout(() => controller.abort(), timeout);
try {
const response = await fetch(url, {
...options,
signal: controller.signal
});
clearTimeout(timeoutId);
return response;
} catch (error) {
clearTimeout(timeoutId);
throw error;
}
}
/**
* 通用请求函数
*/
async function request(endpoint, method = 'GET', body) {
const url = `${getApiUrl()}${endpoint}`;
const options = {
method: method,
headers: {
'Content-Type': 'application/json'
}
};
if (body) {
options.body = JSON.stringify(body);
}
try {
const response = await fetchWithTimeout(url, options, REQUEST_TIMEOUT);
const data = await response.json();
setOnlineStatus(true);
if (!response.ok && data.error) {
data.success = false;
data.message = data.error;
}
return data;
} catch (error) {
// 检查是否是网络错误
const isNetworkError = error.name === 'AbortError' ||
error.name === 'TypeError' ||
error.message?.includes('fetch') ||
error.message?.includes('network') ||
error.message?.includes('ECONNREFUSED') ||
error.message?.includes('ENOTFOUND') ||
error.message?.includes('ETIMEDOUT');
if (isNetworkError) {
setOnlineStatus(false);
return {
success: false,
error: '网络连接失败,请检查网络',
isOffline: true
};
}
throw error;
}
}
/**
* 验证 Key
*/
async function verifyKey(key) {
return request('/api/verify-key', 'POST', { key });
}
exports.verifyKey = verifyKey;
/**
* 切换账号
*/
async function switchAccount(key) {
return request('/api/switch-account', 'POST', { key });
}
exports.switchAccount = switchAccount;
/**
* 获取代理配置
*/
async function getProxyConfig() {
return request('/api/proxy-config', 'GET');
}
exports.getProxyConfig = getProxyConfig;
/**
* 更新代理配置
*/
async function updateProxyConfig(isEnabled, proxyUrl) {
return request('/api/proxy-config', 'PUT', {
is_enabled: isEnabled,
proxy_url: proxyUrl
});
}
exports.updateProxyConfig = updateProxyConfig;
// ============================================
// 无感换号 (Seamless Mode) API
// ============================================
/**
* 获取无缝模式状态
*/
async function getSeamlessStatus() {
return request('/api/seamless/status');
}
exports.getSeamlessStatus = getSeamlessStatus;
/**
* 获取用户切换状态
*/
async function getUserSwitchStatus(userKey) {
return request('/api/seamless/user-status?userKey=' + encodeURIComponent(userKey));
}
exports.getUserSwitchStatus = getUserSwitchStatus;
/**
* 获取无缝配置
*/
async function getSeamlessConfig() {
return request('/api/seamless/config');
}
exports.getSeamlessConfig = getSeamlessConfig;
/**
* 更新无缝配置
*/
async function updateSeamlessConfig(config) {
return request('/api/seamless/config', 'POST', config);
}
exports.updateSeamlessConfig = updateSeamlessConfig;
/**
* 注入无缝模式
*/
async function injectSeamless(apiUrl, userKey) {
return request('/api/seamless/inject', 'POST', {
api_url: apiUrl,
user_key: userKey
});
}
exports.injectSeamless = injectSeamless;
/**
* 恢复无缝模式
*/
async function restoreSeamless() {
return request('/api/seamless/restore', 'POST');
}
exports.restoreSeamless = restoreSeamless;
/**
* 获取无缝账号列表
*/
async function getSeamlessAccounts() {
return request('/api/seamless/accounts');
}
exports.getSeamlessAccounts = getSeamlessAccounts;
/**
* 同步无缝账号
*/
async function syncSeamlessAccounts(accounts) {
return request('/api/seamless/sync-accounts', 'POST', { accounts });
}
exports.syncSeamlessAccounts = syncSeamlessAccounts;
/**
* 获取无缝 Token
*/
async function getSeamlessToken(userKey) {
return request('/api/seamless/get-token?userKey=' + encodeURIComponent(userKey));
}
exports.getSeamlessToken = getSeamlessToken;
/**
* 切换无缝 Token
*/
async function switchSeamlessToken(userKey) {
return request('/api/seamless/switch-token', 'POST', {
mode: 'manual',
userKey: userKey
});
}
exports.switchSeamlessToken = switchSeamlessToken;
/**
* 获取最新版本
*/
async function getLatestVersion() {
return request('/api/version');
}
exports.getLatestVersion = getLatestVersion;

View File

@@ -0,0 +1,221 @@
'use strict';
// ============================================
// CursorPro Extension - 反混淆版本
// ============================================
Object.defineProperty(exports, "__esModule", { value: true });
const vscode = require('vscode');
const provider_1 = require('./webview/provider');
const fs = require('fs');
const path = require('path');
let usageStatusBarItem;
// 创建输出通道
exports.outputChannel = vscode.window.createOutputChannel('CursorPro');
/**
* 日志函数
*/
function log(message) {
const timestamp = new Date().toLocaleTimeString();
exports.outputChannel.appendLine('[' + timestamp + '] ' + message);
console.log('[CursorPro] ' + message);
}
exports.log = log;
/**
* 清理 Service Worker 缓存
*/
function cleanServiceWorkerCache() {
try {
const platform = process.platform;
const cachePaths = [];
if (platform === 'win32') {
const appData = process.env.APPDATA || '';
const localAppData = process.env.LOCALAPPDATA || '';
cachePaths.push(
path.join(appData, 'Cursor', 'Service Worker'),
path.join(localAppData, 'Cursor', 'Service Worker'),
path.join(appData, 'Cursor', 'GPUCache'),
path.join(localAppData, 'Cursor', 'GPUCache')
);
} else if (platform === 'darwin') {
const home = process.env.HOME || '';
cachePaths.push(
path.join(home, 'Library', 'Application Support', 'Cursor', 'Service Worker'),
path.join(home, 'Library', 'Caches', 'Cursor', 'Service Worker')
);
} else {
const home = process.env.HOME || '';
cachePaths.push(
path.join(home, '.config', 'Cursor', 'Service Worker'),
path.join(home, '.cache', 'Cursor', 'Service Worker')
);
}
for (const cachePath of cachePaths) {
if (!fs.existsSync(cachePath)) continue;
// 清理 ScriptCache
const scriptCachePath = path.join(cachePath, 'ScriptCache');
if (fs.existsSync(scriptCachePath)) {
try {
const files = fs.readdirSync(scriptCachePath);
for (const file of files) {
try {
fs.unlinkSync(path.join(scriptCachePath, file));
} catch (e) {}
}
console.log('[CursorPro] Service Worker ScriptCache 已清理:', scriptCachePath);
} catch (e) {}
}
// 清理 CacheStorage
const cacheStoragePath = path.join(cachePath, 'CacheStorage');
if (fs.existsSync(cacheStoragePath)) {
try {
deleteFolderRecursive(cacheStoragePath);
console.log('[CursorPro] Service Worker CacheStorage 已清理:', cacheStoragePath);
} catch (e) {}
}
// 清理 Database
const databasePath = path.join(cachePath, 'Database');
if (fs.existsSync(databasePath)) {
try {
deleteFolderRecursive(databasePath);
console.log('[CursorPro] Service Worker Database 已清理:', databasePath);
} catch (e) {}
}
}
} catch (error) {
console.log('[CursorPro] 清理 Service Worker 缓存时出错:', error);
}
}
/**
* 递归删除文件夹
*/
function deleteFolderRecursive(folderPath) {
if (fs.existsSync(folderPath)) {
fs.readdirSync(folderPath).forEach(file => {
const curPath = path.join(folderPath, file);
if (fs.lstatSync(curPath).isDirectory()) {
deleteFolderRecursive(curPath);
} else {
try {
fs.unlinkSync(curPath);
} catch (e) {}
}
});
try {
fs.rmdirSync(folderPath);
} catch (e) {}
}
}
/**
* 激活扩展
*/
function activate(context) {
// 清理 Service Worker 缓存
cleanServiceWorkerCache();
// 创建 WebView Provider
const viewProvider = new provider_1.CursorProViewProvider(context.extensionUri, context);
// 注册 WebView
context.subscriptions.push(
vscode.window.registerWebviewViewProvider('cursorpro.mainView', viewProvider)
);
// 创建状态栏项
usageStatusBarItem = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Right, 100);
usageStatusBarItem.text = '$(dashboard) 用量: --';
usageStatusBarItem.tooltip = '点击查看账号用量详情';
usageStatusBarItem.command = 'cursorpro.showPanel';
usageStatusBarItem.backgroundColor = new vscode.ThemeColor('statusBarItem.prominentBackground');
// 如果有保存的 key显示状态栏
const savedKey = context.globalState.get('cursorpro.key');
if (savedKey) {
usageStatusBarItem.show();
}
context.subscriptions.push(usageStatusBarItem);
// 设置同步的键
context.globalState.setKeysForSync(['cursorpro.key']);
// 注册显示面板命令
context.subscriptions.push(
vscode.commands.registerCommand('cursorpro.showPanel', () => {
vscode.commands.executeCommand('cursorpro.mainView.focus');
})
);
}
exports.activate = activate;
/**
* 停用扩展
*/
function deactivate() {
console.log('CursorPro 插件已停用');
}
exports.deactivate = deactivate;
/**
* 显示状态栏
*/
function showStatusBar() {
if (usageStatusBarItem) {
usageStatusBarItem.show();
}
}
exports.showStatusBar = showStatusBar;
/**
* 隐藏状态栏
*/
function hideStatusBar() {
if (usageStatusBarItem) {
usageStatusBarItem.hide();
}
}
exports.hideStatusBar = hideStatusBar;
/**
* 更新用量状态栏
* @param {number} requestCount - 请求次数
* @param {number|string} usageCost - 已用额度
*/
function updateUsageStatusBar(requestCount, usageCost) {
if (usageStatusBarItem) {
const count = typeof requestCount === 'number' ? requestCount : requestCount;
const cost = typeof usageCost === 'number' ? usageCost : parseFloat(usageCost.toString().replace('$', '')) || 0;
const costDisplay = typeof usageCost === 'number' ? '$' + usageCost.toFixed(2) : usageCost;
usageStatusBarItem.text = '$(dashboard) ' + count + '次 | ' + costDisplay;
usageStatusBarItem.tooltip = '请求次数: ' + count + '\n已用额度: ' + costDisplay + '\n点击查看详情';
// 根据用量设置颜色
if (cost >= 10) {
// 高用量 - 红色警告
usageStatusBarItem.backgroundColor = new vscode.ThemeColor('statusBarItem.errorBackground');
usageStatusBarItem.color = undefined;
} else if (cost >= 5) {
// 中用量 - 黄色警告
usageStatusBarItem.backgroundColor = new vscode.ThemeColor('statusBarItem.warningBackground');
usageStatusBarItem.color = undefined;
} else {
// 低用量 - 绿色
usageStatusBarItem.backgroundColor = undefined;
usageStatusBarItem.color = '#4ade80';
}
}
}
exports.updateUsageStatusBar = updateUsageStatusBar;

View File

@@ -0,0 +1,213 @@
'use strict';
// ============================================
// CursorPro Account Utils - 反混淆版本
// ============================================
Object.defineProperty(exports, "__esModule", { value: true });
const vscode = require('vscode');
const path = require('path');
const fs = require('fs');
const child_process = require('child_process');
const util = require('util');
const sqlite_1 = require('./sqlite');
const execAsync = util.promisify(child_process.exec);
/**
* 获取 Cursor 相关路径
* @returns {{dbPath: string, storagePath: string, machineidPath: string}}
*/
function getCursorPaths() {
const homeDir = process.env.HOME || process.env.USERPROFILE || '';
if (process.platform === 'win32') {
const appData = process.env.APPDATA || '';
return {
dbPath: path.join(appData, 'Cursor', 'User', 'globalStorage', 'state.vscdb'),
storagePath: path.join(appData, 'Cursor', 'User', 'globalStorage', 'storage.json'),
machineidPath: path.join(appData, 'Cursor', 'machineid')
};
} else if (process.platform === 'darwin') {
return {
dbPath: path.join(homeDir, 'Library', 'Application Support', 'Cursor', 'User', 'globalStorage', 'state.vscdb'),
storagePath: path.join(homeDir, 'Library', 'Application Support', 'Cursor', 'User', 'globalStorage', 'storage.json'),
machineidPath: path.join(homeDir, 'Library', 'Application Support', 'Cursor', 'machineid')
};
} else {
// Linux
return {
dbPath: path.join(homeDir, '.config', 'Cursor', 'User', 'globalStorage', 'state.vscdb'),
storagePath: path.join(homeDir, '.config', 'Cursor', 'User', 'globalStorage', 'storage.json'),
machineidPath: path.join(homeDir, '.config', 'Cursor', 'machineid')
};
}
}
exports.getCursorPaths = getCursorPaths;
/**
* 将账号数据写入本地存储
* @param {Object} accountData - 账号数据
* @param {string} accountData.accessToken - 访问令牌
* @param {string} accountData.refreshToken - 刷新令牌
* @param {string} accountData.workosSessionToken - WorkOS 会话令牌
* @param {string} accountData.email - 邮箱
* @param {string} accountData.membership_type - 会员类型
* @param {string} accountData.machineId - 机器 ID
* @param {string} accountData.macMachineId - Mac 机器 ID
* @param {string} accountData.devDeviceId - 开发设备 ID
* @param {string} accountData.serviceMachineId - 服务机器 ID
* @returns {Promise<boolean>}
*/
async function writeAccountToLocal(accountData) {
try {
const cursorPaths = getCursorPaths();
const { dbPath, storagePath, machineidPath } = cursorPaths;
console.log('[CursorPro] 数据库路径:', dbPath);
console.log('[CursorPro] 数据库存在:', fs.existsSync(dbPath));
console.log('[CursorPro] 账号数据:', JSON.stringify({
hasAccessToken: !!accountData.accessToken,
hasRefreshToken: !!accountData.refreshToken,
hasWorkosToken: !!accountData.workosSessionToken,
email: accountData.email
}));
// 写入数据库
if (fs.existsSync(dbPath)) {
try {
const entries = [];
if (accountData.accessToken) {
entries.push(['cursorAuth/accessToken', accountData.accessToken]);
}
if (accountData.refreshToken) {
entries.push(['cursorAuth/refreshToken', accountData.refreshToken]);
}
if (accountData.workosSessionToken) {
entries.push(['cursorAuth/WorkosCursorSessionToken', accountData.workosSessionToken]);
}
if (accountData.email) {
entries.push(['cursorAuth/cachedEmail', accountData.email]);
}
if (accountData.membership_type) {
entries.push(['cursorAuth/stripeMembershipType', accountData.membership_type]);
}
if (accountData.devDeviceId) {
entries.push(['telemetry.devDeviceId', accountData.devDeviceId || 'default']);
}
if (accountData.serviceMachineId) {
entries.push(['serviceMachineId', accountData.serviceMachineId]);
}
console.log('[CursorPro] 准备写入', entries.length, '个字段');
const success = await sqlite_1.sqliteSetBatch(dbPath, entries);
if (!success) {
throw new Error('数据库写入失败');
}
console.log('[CursorPro] 已写入', entries.length, '个字段');
} catch (error) {
console.error('[CursorPro] 数据库写入错误:', error);
vscode.window.showErrorMessage('数据库写入失败: ' + error);
return false;
}
} else {
console.error('[CursorPro] 数据库文件不存在:', dbPath);
vscode.window.showErrorMessage('[CursorPro] 数据库文件不存在');
return false;
}
// 更新 storage.json
if (fs.existsSync(storagePath)) {
const storageData = JSON.parse(fs.readFileSync(storagePath, 'utf-8'));
if (accountData.machineId) {
storageData['telemetry.machineId'] = accountData.machineId;
}
if (accountData.macMachineId) {
storageData['telemetry.macMachineId'] = accountData.macMachineId;
}
if (accountData.devDeviceId) {
storageData['telemetry.devDeviceId'] = accountData.devDeviceId;
}
if (accountData.serviceMachineId) {
storageData['serviceMachineId'] = accountData.serviceMachineId;
}
fs.writeFileSync(storagePath, JSON.stringify(storageData, null, 4));
console.log('[CursorPro] storage.json 已更新');
}
// 更新 machineid 文件
if (accountData.machineId && machineidPath) {
const machineIdDir = path.dirname(machineidPath);
if (!fs.existsSync(machineIdDir)) {
fs.mkdirSync(machineIdDir, { recursive: true });
}
fs.writeFileSync(machineidPath, accountData.machineId);
console.log('[CursorPro] machineid 文件已更新');
}
// Windows: 更新注册表 (如果提供了 devDeviceId)
if (accountData.devDeviceId && process.platform === 'win32') {
try {
const regCommand = 'reg add "HKCU\\Software\\Cursor" /v devDeviceId /t REG_SZ /d "' + accountData.devDeviceId + '" /f';
await execAsync(regCommand);
console.log('[CursorPro] 注册表已更新');
} catch (error) {
console.warn('[CursorPro] 注册表写入失败(可能需要管理员权限):', error);
}
}
return true;
} catch (error) {
console.error('[CursorPro] writeAccountToLocal 错误:', error);
return false;
}
}
exports.writeAccountToLocal = writeAccountToLocal;
/**
* 关闭 Cursor 进程
*/
async function closeCursor() {
try {
if (process.platform === 'win32') {
await execAsync('taskkill /F /IM Cursor.exe').catch(() => {});
} else {
await execAsync('pkill -9 -f Cursor').catch(() => {});
}
} catch (error) {
console.warn('[CursorPro] 关闭 Cursor 失败:', error);
}
}
exports.closeCursor = closeCursor;
/**
* 提示重启 Cursor
* @param {string} message - 提示消息
*/
async function promptRestartCursor(message) {
const selection = await vscode.window.showInformationMessage(
message,
'立即重启',
'稍后'
);
if (selection === '立即重启') {
await closeCursor();
}
}
exports.promptRestartCursor = promptRestartCursor;

View File

@@ -0,0 +1,176 @@
'use strict';
// ============================================
// CursorPro SQLite Utils - 反混淆版本
// ============================================
Object.defineProperty(exports, "__esModule", { value: true });
const child_process = require('child_process');
const util = require('util');
const fs = require('fs');
const path = require('path');
const os = require('os');
const execAsync = util.promisify(child_process.exec);
/**
* 转义 SQL 字符串中的单引号
*/
function escapeSqlString(value) {
if (value === null || value === undefined) {
return '';
}
return String(value).replace(/'/g, "''");
}
/**
* 执行 SQLite 命令
*/
async function execSqlite(dbPath, sql) {
const isWindows = process.platform === 'win32';
try {
if (isWindows) {
// Windows: 直接使用 sqlite3 命令
const escapedSql = sql.replace(/"/g, '\\"');
const command = `sqlite3 "${dbPath}" "${escapedSql}"`;
const { stdout, stderr } = await execAsync(command, {
encoding: 'utf-8',
maxBuffer: 10 * 1024 * 1024
});
if (stderr && !stderr.includes('-- Loading')) {
console.warn('[SQLite] stderr:', stderr);
}
return stdout.trim();
} else {
// Unix/Mac: 使用临时文件避免命令行转义问题
const tmpFile = path.join(os.tmpdir(), 'cursor_sql_' + Date.now() + '.sql');
fs.writeFileSync(tmpFile, sql, 'utf-8');
try {
const command = `sqlite3 "${dbPath}" < "${tmpFile}"`;
const { stdout, stderr } = await execAsync(command, {
encoding: 'utf-8',
maxBuffer: 10 * 1024 * 1024,
shell: '/bin/bash'
});
if (stderr && !stderr.includes('-- Loading')) {
console.warn('[SQLite] stderr:', stderr);
}
return stdout.trim();
} finally {
try {
fs.unlinkSync(tmpFile);
} catch (e) {
// 忽略删除临时文件失败
}
}
}
} catch (error) {
// 检查是否是 sqlite3 不存在的错误
if (error.code === 'ENOENT' ||
error.message?.includes('not found') ||
error.message?.includes('not recognized')) {
throw new Error('sqlite3 命令未找到,请确保已安装 sqlite3');
}
throw error;
}
}
/**
* 从 SQLite 数据库读取值
*/
async function sqliteGet(dbPath, key) {
if (!fs.existsSync(dbPath)) {
console.warn('[SQLite] 数据库文件不存在:', dbPath);
return null;
}
try {
const sql = `SELECT value FROM ItemTable WHERE key = '${escapeSqlString(key)}';`;
const result = await execSqlite(dbPath, sql);
return result || null;
} catch (error) {
console.error('[SQLite] 读取失败:', error);
return null;
}
}
exports.sqliteGet = sqliteGet;
/**
* 向 SQLite 数据库写入值
*/
async function sqliteSet(dbPath, key, value) {
if (!fs.existsSync(dbPath)) {
console.warn('[SQLite] 数据库文件不存在:', dbPath);
return false;
}
try {
const sql = `INSERT OR REPLACE INTO ItemTable (key, value) VALUES ('${escapeSqlString(key)}', '${escapeSqlString(value)}');`;
await execSqlite(dbPath, sql);
return true;
} catch (error) {
console.error('[SQLite] 写入失败:', error);
return false;
}
}
exports.sqliteSet = sqliteSet;
/**
* 批量写入 SQLite 数据库
*/
async function sqliteSetBatch(dbPath, entries) {
if (!fs.existsSync(dbPath)) {
console.warn('[SQLite] 数据库文件不存在:', dbPath);
return false;
}
if (entries.length === 0) {
return true;
}
try {
const statements = entries.map(([key, value]) =>
`INSERT OR REPLACE INTO ItemTable (key, value) VALUES ('${escapeSqlString(key)}', '${escapeSqlString(value)}');`
);
const sql = 'BEGIN; ' + statements.join(' ') + ' COMMIT;';
await execSqlite(dbPath, sql);
return true;
} catch (error) {
console.error('[SQLite] 批量写入失败:', error);
return false;
}
}
exports.sqliteSetBatch = sqliteSetBatch;
/**
* 批量读取 SQLite 数据库
*/
async function sqliteGetBatch(dbPath, keys) {
const result = new Map();
if (!fs.existsSync(dbPath)) {
console.warn('[SQLite] 数据库文件不存在:', dbPath);
keys.forEach(key => result.set(key, null));
return result;
}
try {
for (const key of keys) {
const value = await sqliteGet(dbPath, key);
result.set(key, value);
}
return result;
} catch (error) {
console.error('[SQLite] 批量读取失败:', error);
keys.forEach(key => result.set(key, null));
return result;
}
}
exports.sqliteGetBatch = sqliteGetBatch;

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long