Files
jsc-anima/node_modules/.vitest-cache/eed085b873787578cf2924a0270929bf794c74a5
T

150 lines
19 KiB
Plaintext

const __vite_ssr_import_0__ = await __vite_ssr_import__("claude-code/testing", {"importedNames":["expect","mock","test"]});
const NOW = new Date(2026, 9, 15, 10, 0).getTime();
async function setup($, on, opts = {}) {
const cwd = { value: opts.cwd ?? "/proj-a" };
const logs = [];
const prompts = [];
__vite_ssr_import_0__.mock.store(on);
const clock = __vite_ssr_import_0__.mock.clock(on, { now: NOW });
on("command.register", () => ({ value: { name: "x" } }));
on("session.start", () => ({ cwd: opts.cwd ?? "/proj-a" }));
on("session.cwd", () => ({ value: cwd.value }));
on("command.run", () => ({ text: "" }));
on("prompt.compose", () => ({ sections: [] }));
on("prompt.submit", (_, e) => e);
on("ui.log", (_, e) => {
logs.push(String(e.text ?? e.message ?? JSON.stringify(e)));
return { value: undefined };
});
on("model.complete", (_, e) => {
prompts.push(String(e.prompt));
return { value: opts.reply === undefined ? {
isAnswered: true,
text: "已經處理好了",
usage: {}
} : {
isAnswered: opts.reply !== "",
text: opts.reply,
usage: {}
} };
});
await $.session.start({
source: "startup",
cwd: opts.cwd ?? "/proj-a"
});
return {
logs,
prompts,
clock,
cwd
};
}
const todo = ($, args) => $.command.run({
command: "anima-todo",
args
});
const activate = ($) => $.command.run({
command: "sao-asuna",
args: ""
});
(0,__vite_ssr_import_0__.test)("未啟動角色時待辦被拒絕並提示先啟動", async ($, on) => {
await setup($, on);
const r = await todo($, "list");
(0,__vite_ssr_import_0__.expect)(r.text).toContain("請先啟動角色");
});
(0,__vite_ssr_import_0__.test)("啟動後建立、更新與列出待辦,記錄所屬專案", async ($, on) => {
await setup($, on);
await activate($);
(0,__vite_ssr_import_0__.expect)((await todo($, "add 開發 2026-10-16 09:30 重構路由")).text).toContain("#1");
(0,__vite_ssr_import_0__.expect)((await todo($, "add 提醒 2026-10-15 11:00 喝水")).text).toContain("#2");
(0,__vite_ssr_import_0__.expect)((await todo($, "update 1 研究 2026-10-17 08:00 讀文件")).text).toContain("已更新");
const list = (await todo($, "list")).text;
(0,__vite_ssr_import_0__.expect)(list).toContain("#1 [研究] 2026-10-17 08:00 讀文件");
(0,__vite_ssr_import_0__.expect)(list).toContain("專案:/proj-a");
(0,__vite_ssr_import_0__.expect)(list.indexOf("#2")).toBeLessThan(list.indexOf("#1"));
});
(0,__vite_ssr_import_0__.test)("類型預設四種且可自訂,未知類型被拒絕", async ($, on) => {
await setup($, on);
await activate($);
for (const t of [
"提醒",
"開發",
"研究",
"維護"
]) {
(0,__vite_ssr_import_0__.expect)((await todo($, `add ${t} 2026-10-16 09:00 x`)).text).toContain("已建立");
};
(0,__vite_ssr_import_0__.expect)((await todo($, "add 運動 2026-10-16 09:00 跑步")).text).toContain("沒有「運動」");
(0,__vite_ssr_import_0__.expect)((await todo($, "type 運動")).text).toContain("已新增");
(0,__vite_ssr_import_0__.expect)((await todo($, "add 運動 2026-10-16 09:00 跑步")).text).toContain("已建立");
});
(0,__vite_ssr_import_0__.test)("參數格式錯誤時顯示用法", async ($, on) => {
await setup($, on);
await activate($);
(0,__vite_ssr_import_0__.expect)((await todo($, "add 開發 明天 重構")).text).toContain("用法");
(0,__vite_ssr_import_0__.expect)((await todo($, "add 開發 2026-02-31 09:00 x")).text).toContain("用法");
});
(0,__vite_ssr_import_0__.test)("到點時由角色提醒一次,確認前不執行", async ($, on) => {
const { logs, prompts } = await setup($, on);
await activate($);
await todo($, "add 維護 2026-10-15 09:00 清理暫存");
await $.prompt.submit({
text: "嗨",
command: undefined,
isMeta: false
});
(0,__vite_ssr_import_0__.expect)(logs.length).toBe(1);
(0,__vite_ssr_import_0__.expect)(logs[0]).toContain("亞絲娜 >");
(0,__vite_ssr_import_0__.expect)(logs[0]).toContain("清理暫存");
(0,__vite_ssr_import_0__.expect)(logs[0]).toContain("run 1");
await $.prompt.submit({
text: "再一次",
command: undefined,
isMeta: false
});
(0,__vite_ssr_import_0__.expect)(logs.length).toBe(1);
(0,__vite_ssr_import_0__.expect)(prompts.some((p) => p.includes("清理暫存"))).toBe(false);
});
(0,__vite_ssr_import_0__.test)("未到點不提醒", async ($, on) => {
const { logs } = await setup($, on);
await activate($);
await todo($, "add 提醒 2026-10-16 09:00 明天的事");
await $.prompt.submit({
text: "嗨",
command: undefined,
isMeta: false
});
(0,__vite_ssr_import_0__.expect)(logs.length).toBe(0);
});
(0,__vite_ssr_import_0__.test)("確認後執行,並由角色告知結果", async ($, on) => {
const { prompts } = await setup($, on, { reply: "清好了三個暫存目錄" });
await activate($);
await todo($, "add 維護 2026-10-15 09:00 清理暫存");
const r = await todo($, "run 1");
(0,__vite_ssr_import_0__.expect)(prompts.some((p) => p.includes("清理暫存"))).toBe(true);
(0,__vite_ssr_import_0__.expect)(r.text).toBe("亞絲娜 > 清好了三個暫存目錄");
(0,__vite_ssr_import_0__.expect)((await todo($, "list")).text).toContain("完成");
(0,__vite_ssr_import_0__.expect)((await todo($, "run 1")).text).toContain("已經完成");
});
(0,__vite_ssr_import_0__.test)("執行失敗時保留為待辦", async ($, on) => {
await setup($, on, { reply: "" });
await activate($);
await todo($, "add 開發 2026-10-15 09:00 重構");
(0,__vite_ssr_import_0__.expect)((await todo($, "run 1")).text).toContain("執行失敗");
(0,__vite_ssr_import_0__.expect)((await todo($, "list")).text).not.toContain("完成");
});
(0,__vite_ssr_import_0__.test)("待辦全域一份:換專案仍看得到", async ($, on) => {
const { cwd } = await setup($, on, { cwd: "/proj-a" });
await activate($);
await todo($, "add 研究 2026-10-16 09:00 讀論文");
cwd.value = "/proj-b";
await todo($, "add 研究 2026-10-16 10:00 另一專案的事");
const list = (await todo($, "list")).text;
(0,__vite_ssr_import_0__.expect)(list).toContain("專案:/proj-a");
(0,__vite_ssr_import_0__.expect)(list).toContain("專案:/proj-b");
});
//# sourceMappingSource=vite-generated
//# sourceMappingURL=data:application/json;base64,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LEtBQUssR0FBRyxPQUFPLEVBQUMsQ0FBRSxJQUFJLENBQUMsQ0FBQyxVQUFVLE1BQU07QUFDeEQsQ0FBQztBQUVELCtCQUFLLGNBQWMsT0FBTyxHQUFHLE9BQU87Q0FDbEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxFQUFFLE9BQU8sR0FBRyxDQUFDO0NBQ2hDLE1BQU0sU0FBUyxDQUFDO0NBQ2hCLE1BQU0sS0FBSyxHQUFHLDRCQUE0QjtDQUMxQyxrQ0FBUSxNQUFNLEtBQUssR0FBRyxPQUFPLEVBQUMsQ0FBRSxJQUFJLENBQUMsQ0FBQyxVQUFVLE1BQU07Q0FDdEQsa0NBQVEsTUFBTSxLQUFLLEdBQUcsTUFBTSxFQUFDLENBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxVQUFVLElBQUk7QUFDekQsQ0FBQztBQUVELCtCQUFLLGtCQUFrQixPQUFPLEdBQUcsT0FBTztDQUN0QyxNQUFNLEVBQUUsUUFBUSxNQUFNLE1BQU0sR0FBRyxJQUFJLEVBQUUsS0FBSyxVQUFVLENBQUM7Q0FDckQsTUFBTSxTQUFTLENBQUM7Q0FDaEIsTUFBTSxLQUFLLEdBQUcsNkJBQTZCO0NBQzNDLElBQUksUUFBUTtDQUNaLE1BQU0sS0FBSyxHQUFHLGdDQUFnQztDQUM5QyxNQUFNLFFBQVEsTUFBTSxLQUFLLEdBQUcsTUFBTSxFQUFDLENBQUU7Q0FDckMsaUNBQU8sSUFBSSxDQUFDLENBQUMsVUFBVSxZQUFZO0NBQ25DLGlDQUFPLElBQUksQ0FBQyxDQUFDLFVBQVUsWUFBWTtBQUNyQyxDQUFDIiwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlcyI6WyJ0b2RvLnRlc3QudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXhwZWN0LCBtb2NrLCB0ZXN0IH0gZnJvbSAnY2xhdWRlLWNvZGUvdGVzdGluZydcblxuY29uc3QgTk9XID0gbmV3IERhdGUoMjAyNiwgOSwgMTUsIDEwLCAwKS5nZXRUaW1lKClcblxuYXN5bmMgZnVuY3Rpb24gc2V0dXAoJDogYW55LCBvbjogYW55LCBvcHRzOiB7IHJlcGx5Pzogc3RyaW5nOyBjd2Q/OiBzdHJpbmcgfSA9IHt9KSB7XG4gIGNvbnN0IGN3ZCA9IHsgdmFsdWU6IG9wdHMuY3dkID8/ICcvcHJvai1hJyB9XG4gIGNvbnN0IGxvZ3M6IHN0cmluZ1tdID0gW11cbiAgY29uc3QgcHJvbXB0czogc3RyaW5nW10gPSBbXVxuICBtb2NrLnN0b3JlKG9uKVxuICBjb25zdCBjbG9jayA9IG1vY2suY2xvY2sob24sIHsgbm93OiBOT1cgfSlcbiAgb24oJ2NvbW1hbmQucmVnaXN0ZXInLCAoKSA9PiAoeyB2YWx1ZTogeyBuYW1lOiAneCcgfSB9KSBhcyBuZXZlcilcbiAgb24oJ3Nlc3Npb24uc3RhcnQnLCAoKSA9PiAoeyBjd2Q6IG9wdHMuY3dkID8/ICcvcHJvai1hJyB9KSBhcyBuZXZlcilcbiAgb24oJ3Nlc3Npb24uY3dkJywgKCkgPT4gKHsgdmFsdWU6IGN3ZC52YWx1ZSB9KSlcbiAgb24oJ2NvbW1hbmQucnVuJywgKCkgPT4gKHsgdGV4dDogJycgfSkpXG4gIG9uKCdwcm9tcHQuY29tcG9zZScsICgpID0+ICh7IHNlY3Rpb25zOiBbXSB9KSlcbiAgb24oJ3Byb21wdC5zdWJtaXQnLCAoXzogYW55LCBlOiBhbnkpID0+IGUgYXMgbmV2ZXIpXG4gIG9uKCd1aS5sb2cnLCAoXzogYW55LCBlOiBhbnkpID0+IHtcbiAgICBsb2dzLnB1c2goU3RyaW5nKGUudGV4dCA/PyBlLm1lc3NhZ2UgPz8gSlNPTi5zdHJpbmdpZnkoZSkpKVxuICAgIHJldHVybiB7IHZhbHVlOiB1bmRlZmluZWQgfSBhcyBuZXZlclxuICB9KVxuICBvbignbW9kZWwuY29tcGxldGUnLCAoXzogYW55LCBlOiBhbnkpID0+IHtcbiAgICBwcm9tcHRzLnB1c2goU3RyaW5nKGUucHJvbXB0KSlcbiAgICByZXR1cm4geyB2YWx1ZTogb3B0cy5yZXBseSA9PT0gdW5kZWZpbmVkID8geyBpc0Fuc3dlcmVkOiB0cnVlLCB0ZXh0OiAn5bey57aT6JmV55CG5aW95LqGJywgdXNhZ2U6IHt9IH0gOiB7IGlzQW5zd2VyZWQ6IG9wdHMucmVwbHkgIT09ICcnLCB0ZXh0OiBvcHRzLnJlcGx5LCB1c2FnZToge30gfSB9IGFzIG5ldmVyXG4gIH0pXG4gIGF3YWl0ICQuc2Vzc2lvbi5zdGFydCh7IHNvdXJjZTogJ3N0YXJ0dXAnLCBjd2Q6IG9wdHMuY3dkID8/ICcvcHJvai1hJyB9IGFzIG5ldmVyKVxuICByZXR1cm4geyBsb2dzLCBwcm9tcHRzLCBjbG9jaywgY3dkIH1cbn1cblxuY29uc3QgdG9kbyA9ICgkOiBhbnksIGFyZ3M6IHN0cmluZykgPT4gJC5jb21tYW5kLnJ1bih7IGNvbW1hbmQ6ICdhbmltYS10b2RvJywgYXJncyB9IGFzIG5ldmVyKVxuY29uc3QgYWN0aXZhdGUgPSAoJDogYW55KSA9PiAkLmNvbW1hbmQucnVuKHsgY29tbWFuZDogJ3Nhby1hc3VuYScsIGFyZ3M6ICcnIH0gYXMgbmV2ZXIpXG5cbnRlc3QoJ+acquWVn+WLleinkuiJsuaZguW+hei+puiiq+aLkue1leS4puaPkOekuuWFiOWVn+WLlScsIGFzeW5jICgkLCBvbikgPT4ge1xuICBhd2FpdCBzZXR1cCgkLCBvbilcbiAgY29uc3QgciA9IGF3YWl0IHRvZG8oJCwgJ2xpc3QnKVxuICBleHBlY3Qoci50ZXh0KS50b0NvbnRhaW4oJ+iri+WFiOWVn+WLleinkuiJsicpXG59KVxuXG50ZXN0KCfllZ/li5Xlvozlu7rnq4vjgIHmm7TmlrDoiIfliJflh7rlvoXovqbvvIzoqJjpjITmiYDlsazlsIjmoYgnLCBhc3luYyAoJCwgb24pID0+IHtcbiAgYXdhaXQgc2V0dXAoJCwgb24pXG4gIGF3YWl0IGFjdGl2YXRlKCQpXG4gIGV4cGVjdCgoYXdhaXQgdG9kbygkLCAnYWRkIOmWi+eZvCAyMDI2LTEwLTE2IDA5OjMwIOmHjeani+i3r+eUsScpKS50ZXh0KS50b0NvbnRhaW4oJyMxJylcbiAgZXhwZWN0KChhd2FpdCB0b2RvKCQsICdhZGQg5o+Q6YaSIDIwMjYtMTAtMTUgMTE6MDAg5Zad5rC0JykpLnRleHQpLnRvQ29udGFpbignIzInKVxuICBleHBlY3QoKGF3YWl0IHRvZG8oJCwgJ3VwZGF0ZSAxIOeglOeptiAyMDI2LTEwLTE3IDA4OjAwIOiugOaWh+S7ticpKS50ZXh0KS50b0NvbnRhaW4oJ+W3suabtOaWsCcpXG4gIGNvbnN0IGxpc3QgPSAoYXdhaXQgdG9kbygkLCAnbGlzdCcpKS50ZXh0XG4gIGV4cGVjdChsaXN0KS50b0NvbnRhaW4oJyMxIFvnoJTnqbZdIDIwMjYtMTAtMTcgMDg6MDAg6K6A5paH5Lu2JylcbiAgZXhwZWN0KGxpc3QpLnRvQ29udGFpbign5bCI5qGI77yaL3Byb2otYScpXG4gIGV4cGVjdChsaXN0LmluZGV4T2YoJyMyJykpLnRvQmVMZXNzVGhhbihsaXN0LmluZGV4T2YoJyMxJykpXG59KVxuXG50ZXN0KCfpoZ7lnovpoJDoqK3lm5vnqK7kuJTlj6/oh6roqILvvIzmnKrnn6XpoZ7lnovooqvmi5LntZUnLCBhc3luYyAoJCwgb24pID0+IHtcbiAgYXdhaXQgc2V0dXAoJCwgb24pXG4gIGF3YWl0IGFjdGl2YXRlKCQpXG4gIGZvciAoY29uc3QgdCBvZiBbJ+aPkOmGkicsICfplovnmbwnLCAn56CU56m2JywgJ+e2reittyddKSB7XG4gICAgZXhwZWN0KChhd2FpdCB0b2RvKCQsIGBhZGQgJHt0fSAyMDI2LTEwLTE2IDA5OjAwIHhgKSkudGV4dCkudG9Db250YWluKCflt7Llu7rnq4snKVxuICB9XG4gIGV4cGVjdCgoYXdhaXQgdG9kbygkLCAnYWRkIOmBi+WLlSAyMDI2LTEwLTE2IDA5OjAwIOi3keatpScpKS50ZXh0KS50b0NvbnRhaW4oJ+aykuacieOAjOmBi+WLleOAjScpXG4gIGV4cGVjdCgoYXdhaXQgdG9kbygkLCAndHlwZSDpgYvli5UnKSkudGV4dCkudG9Db250YWluKCflt7LmlrDlop4nKVxuICBleHBlY3QoKGF3YWl0IHRvZG8oJCwgJ2FkZCDpgYvli5UgMjAyNi0xMC0xNiAwOTowMCDot5HmraUnKSkudGV4dCkudG9Db250YWluKCflt7Llu7rnq4snKVxufSlcblxudGVzdCgn5Y+D5pW45qC85byP6Yyv6Kqk5pmC6aGv56S655So5rOVJywgYXN5bmMgKCQsIG9uKSA9PiB7XG4gIGF3YWl0IHNldHVwKCQsIG9uKVxuICBhd2FpdCBhY3RpdmF0ZSgkKVxuICBleHBlY3QoKGF3YWl0IHRvZG8oJCwgJ2FkZCDplovnmbwg5piO5aSpIOmHjeaniycpKS50ZXh0KS50b0NvbnRhaW4oJ+eUqOazlScpXG4gIGV4cGVjdCgoYXdhaXQgdG9kbygkLCAnYWRkIOmWi+eZvCAyMDI2LTAyLTMxIDA5OjAwIHgnKSkudGV4dCkudG9Db250YWluKCfnlKjms5UnKVxufSlcblxudGVzdCgn5Yiw6bue5pmC55Sx6KeS6Imy5o+Q6YaS5LiA5qyh77yM56K66KqN5YmN5LiN5Z+36KGMJywgYXN5bmMgKCQsIG9uKSA9PiB7XG4gIGNvbnN0IHsgbG9ncywgcHJvbXB0cyB9ID0gYXdhaXQgc2V0dXAoJCwgb24pXG4gIGF3YWl0IGFjdGl2YXRlKCQpXG4gIGF3YWl0IHRvZG8oJCwgJ2FkZCDntq3orbcgMjAyNi0xMC0xNSAwOTowMCDmuIXnkIbmmqvlrZgnKVxuICBhd2FpdCAkLnByb21wdC5zdWJtaXQoeyB0ZXh0OiAn5ZeoJywgY29tbWFuZDogdW5kZWZpbmVkLCBpc01ldGE6IGZhbHNlIH0gYXMgbmV2ZXIpXG4gIGV4cGVjdChsb2dzLmxlbmd0aCkudG9CZSgxKVxuICBleHBlY3QobG9nc1swXSkudG9Db250YWluKCfkup7ntbLlqJwgPicpXG4gIGV4cGVjdChsb2dzWzBdKS50b0NvbnRhaW4oJ+a4heeQhuaaq+WtmCcpXG4gIGV4cGVjdChsb2dzWzBdKS50b0NvbnRhaW4oJ3J1biAxJylcbiAgYXdhaXQgJC5wcm9tcHQuc3VibWl0KHsgdGV4dDogJ+WGjeS4gOasoScsIGNvbW1hbmQ6IHVuZGVmaW5lZCwgaXNNZXRhOiBmYWxzZSB9IGFzIG5ldmVyKVxuICBleHBlY3QobG9ncy5sZW5ndGgpLnRvQmUoMSlcbiAgZXhwZWN0KHByb21wdHMuc29tZShwID0+IHAuaW5jbHVkZXMoJ+a4heeQhuaaq+WtmCcpKSkudG9CZShmYWxzZSlcbn0pXG5cbnRlc3QoJ+acquWIsOm7nuS4jeaPkOmGkicsIGFzeW5jICgkLCBvbikgPT4ge1xuICBjb25zdCB7IGxvZ3MgfSA9IGF3YWl0IHNldHVwKCQsIG9uKVxuICBhd2FpdCBhY3RpdmF0ZSgkKVxuICBhd2FpdCB0b2RvKCQsICdhZGQg5o+Q6YaSIDIwMjYtMTAtMTYgMDk6MDAg5piO5aSp55qE5LqLJylcbiAgYXdhaXQgJC5wcm9tcHQuc3VibWl0KHsgdGV4dDogJ+WXqCcsIGNvbW1hbmQ6IHVuZGVmaW5lZCwgaXNNZXRhOiBmYWxzZSB9IGFzIG5ldmVyKVxuICBleHBlY3QobG9ncy5sZW5ndGgpLnRvQmUoMClcbn0pXG5cbnRlc3QoJ+eiuuiqjeW+jOWft+ihjO+8jOS4pueUseinkuiJsuWRiuefpee1kOaenCcsIGFzeW5jICgkLCBvbikgPT4ge1xuICBjb25zdCB7IHByb21wdHMgfSA9IGF3YWl0IHNldHVwKCQsIG9uLCB7IHJlcGx5OiAn5riF5aW95LqG5LiJ5YCL5pqr5a2Y55uu6YyEJyB9KVxuICBhd2FpdCBhY3RpdmF0ZSgkKVxuICBhd2FpdCB0b2RvKCQsICdhZGQg57at6K23IDIwMjYtMTAtMTUgMDk6MDAg5riF55CG5pqr5a2YJylcbiAgY29uc3QgciA9IGF3YWl0IHRvZG8oJCwgJ3J1biAxJylcbiAgZXhwZWN0KHByb21wdHMuc29tZShwID0+IHAuaW5jbHVkZXMoJ+a4heeQhuaaq+WtmCcpKSkudG9CZSh0cnVlKVxuICBleHBlY3Qoci50ZXh0KS50b0JlKCfkup7ntbLlqJwgPiDmuIXlpb3kuobkuInlgIvmmqvlrZjnm67pjIQnKVxuICBleHBlY3QoKGF3YWl0IHRvZG8oJCwgJ2xpc3QnKSkudGV4dCkudG9Db250YWluKCflrozmiJAnKVxuICBleHBlY3QoKGF3YWl0IHRvZG8oJCwgJ3J1biAxJykpLnRleHQpLnRvQ29udGFpbign5bey57aT5a6M5oiQJylcbn0pXG5cbnRlc3QoJ+Wft+ihjOWkseaVl+aZguS/neeVmeeCuuW+hei+picsIGFzeW5jICgkLCBvbikgPT4ge1xuICBhd2FpdCBzZXR1cCgkLCBvbiwgeyByZXBseTogJycgfSlcbiAgYXdhaXQgYWN0aXZhdGUoJClcbiAgYXdhaXQgdG9kbygkLCAnYWRkIOmWi+eZvCAyMDI2LTEwLTE1IDA5OjAwIOmHjeaniycpXG4gIGV4cGVjdCgoYXdhaXQgdG9kbygkLCAncnVuIDEnKSkudGV4dCkudG9Db250YWluKCfln7fooYzlpLHmlZcnKVxuICBleHBlY3QoKGF3YWl0IHRvZG8oJCwgJ2xpc3QnKSkudGV4dCkubm90LnRvQ29udGFpbign5a6M5oiQJylcbn0pXG5cbnRlc3QoJ+W+hei+puWFqOWfn+S4gOS7ve+8muaPm+WwiOahiOS7jeeci+W+l+WIsCcsIGFzeW5jICgkLCBvbikgPT4ge1xuICBjb25zdCB7IGN3ZCB9ID0gYXdhaXQgc2V0dXAoJCwgb24sIHsgY3dkOiAnL3Byb2otYScgfSlcbiAgYXdhaXQgYWN0aXZhdGUoJClcbiAgYXdhaXQgdG9kbygkLCAnYWRkIOeglOeptiAyMDI2LTEwLTE2IDA5OjAwIOiugOirluaWhycpXG4gIGN3ZC52YWx1ZSA9ICcvcHJvai1iJ1xuICBhd2FpdCB0b2RvKCQsICdhZGQg56CU56m2IDIwMjYtMTAtMTYgMTA6MDAg5Y+m5LiA5bCI5qGI55qE5LqLJylcbiAgY29uc3QgbGlzdCA9IChhd2FpdCB0b2RvKCQsICdsaXN0JykpLnRleHRcbiAgZXhwZWN0KGxpc3QpLnRvQ29udGFpbign5bCI5qGI77yaL3Byb2otYScpXG4gIGV4cGVjdChsaXN0KS50b0NvbnRhaW4oJ+WwiOahiO+8mi9wcm9qLWInKVxufSlcbiJdLCJmaWxlIjoiL2hvb2tzL3RvZG8udGVzdC50cyJ9
//# vitestCache=W3siZmlsZSI6IjEiLCJpZCI6IjEiLCJ1cmwiOiIyIiwiaW1wb3J0cyI6IjMiLCJtYXBwaW5ncyI6ZmFsc2UsImRlcHMiOiI0IiwiZHluYW1pY0RlcHMiOiI1Iiwic3RhdGljTW9ja3MiOm51bGx9LCIvcm9vdC9qc2MtYW5pbWEvaG9va3MvdG9kby50ZXN0LnRzIiwiL2hvb2tzL3RvZG8udGVzdC50cyIseyJ1cmxzIjoiNiIsImlkcyI6IjcifSxbIjgiXSxbXSxbIjgiXSx7fSwiY2xhdWRlLWNvZGUvdGVzdGluZyJd