Files
headroom/frontend/node_modules/tinyspy/dist/index.js
Santhosh Janardhanan de2d83092e feat: Reinitialize frontend with SvelteKit and TypeScript
- Delete old Vite+Svelte frontend
- Initialize new SvelteKit project with TypeScript
- Configure Tailwind CSS v4 + DaisyUI
- Implement JWT authentication with auto-refresh
- Create login page with form validation (Zod)
- Add protected route guards
- Update Docker configuration for single-stage build
- Add E2E tests with Playwright (6/11 passing)
- Fix Svelte 5 reactivity with $state() runes

Known issues:
- 5 E2E tests failing (timing/async issues)
- Token refresh implementation needs debugging
- Validation error display timing
2026-02-17 16:19:59 -05:00

203 lines
5.0 KiB
JavaScript

// src/utils.ts
function S(e, t) {
if (!e)
throw new Error(t);
}
function f(e, t) {
return typeof t === e;
}
function w(e) {
return e instanceof Promise;
}
function u(e, t, r) {
Object.defineProperty(e, t, r);
}
function l(e, t, r) {
u(e, t, { value: r, configurable: !0, writable: !0 });
}
// src/constants.ts
var y = Symbol.for("tinyspy:spy");
// src/internal.ts
var x = /* @__PURE__ */ new Set(), h = (e) => {
e.called = !1, e.callCount = 0, e.calls = [], e.results = [], e.resolves = [], e.next = [];
}, k = (e) => (u(e, y, {
value: { reset: () => h(e[y]) }
}), e[y]), T = (e) => e[y] || k(e);
function R(e) {
S(
f("function", e) || f("undefined", e),
"cannot spy on a non-function value"
);
let t = function(...s) {
let n = T(t);
n.called = !0, n.callCount++, n.calls.push(s);
let d = n.next.shift();
if (d) {
n.results.push(d);
let [a, i] = d;
if (a === "ok")
return i;
throw i;
}
let o, c = "ok", p = n.results.length;
if (n.impl)
try {
new.target ? o = Reflect.construct(n.impl, s, new.target) : o = n.impl.apply(this, s), c = "ok";
} catch (a) {
throw o = a, c = "error", n.results.push([c, a]), a;
}
let g = [c, o];
return w(o) && o.then(
(a) => n.resolves[p] = ["ok", a],
(a) => n.resolves[p] = ["error", a]
), n.results.push(g), o;
};
l(t, "_isMockFunction", !0), l(t, "length", e ? e.length : 0), l(t, "name", e && e.name || "spy");
let r = T(t);
return r.reset(), r.impl = e, t;
}
function v(e) {
return !!e && e._isMockFunction === !0;
}
function A(e) {
let t = T(e);
"returns" in e || (u(e, "returns", {
get: () => t.results.map(([, r]) => r)
}), [
"called",
"callCount",
"results",
"resolves",
"calls",
"reset",
"impl"
].forEach(
(r) => u(e, r, { get: () => t[r], set: (s) => t[r] = s })
), l(e, "nextError", (r) => (t.next.push(["error", r]), t)), l(e, "nextResult", (r) => (t.next.push(["ok", r]), t)));
}
// src/spy.ts
function Y(e) {
let t = R(e);
return A(t), t;
}
// src/spyOn.ts
var b = (e, t) => {
let r = Object.getOwnPropertyDescriptor(e, t);
if (r)
return [e, r];
let s = Object.getPrototypeOf(e);
for (; s !== null; ) {
let n = Object.getOwnPropertyDescriptor(s, t);
if (n)
return [s, n];
s = Object.getPrototypeOf(s);
}
}, P = (e, t) => {
t != null && typeof t == "function" && t.prototype != null && Object.setPrototypeOf(e.prototype, t.prototype);
};
function M(e, t, r) {
S(
!f("undefined", e),
"spyOn could not find an object to spy upon"
), S(
f("object", e) || f("function", e),
"cannot spyOn on a primitive value"
);
let [s, n] = (() => {
if (!f("object", t))
return [t, "value"];
if ("getter" in t && "setter" in t)
throw new Error("cannot spy on both getter and setter");
if ("getter" in t)
return [t.getter, "get"];
if ("setter" in t)
return [t.setter, "set"];
throw new Error("specify getter or setter to spy on");
})(), [d, o] = b(e, s) || [];
S(
o || s in e,
`${String(s)} does not exist`
);
let c = !1;
n === "value" && o && !o.value && o.get && (n = "get", c = !0, r = o.get());
let p;
o ? p = o[n] : n !== "value" ? p = () => e[s] : p = e[s], p && j(p) && (p = p[y].getOriginal());
let g = (I) => {
let { value: F, ...O } = o || {
configurable: !0,
writable: !0
};
n !== "value" && delete O.writable, O[n] = I, u(e, s, O);
}, a = () => {
d !== e ? Reflect.deleteProperty(e, s) : o && !p ? u(e, s, o) : g(p);
};
r || (r = p);
let i = E(R(r), r);
n === "value" && P(i, p);
let m = i[y];
return l(m, "restore", a), l(m, "getOriginal", () => c ? p() : p), l(m, "willCall", (I) => (m.impl = I, i)), g(
c ? () => (P(i, r), i) : i
), x.add(i), i;
}
var K = /* @__PURE__ */ new Set([
"length",
"name",
"prototype"
]);
function D(e) {
let t = /* @__PURE__ */ new Set(), r = {};
for (; e && e !== Object.prototype && e !== Function.prototype; ) {
let s = [
...Object.getOwnPropertyNames(e),
...Object.getOwnPropertySymbols(e)
];
for (let n of s)
r[n] || K.has(n) || (t.add(n), r[n] = Object.getOwnPropertyDescriptor(e, n));
e = Object.getPrototypeOf(e);
}
return {
properties: t,
descriptors: r
};
}
function E(e, t) {
if (!t || // the original is already a spy, so it has all the properties
y in t)
return e;
let { properties: r, descriptors: s } = D(t);
for (let n of r) {
let d = s[n];
b(e, n) || u(e, n, d);
}
return e;
}
function Z(e, t, r) {
let s = M(e, t, r);
return A(s), ["restore", "getOriginal", "willCall"].forEach((n) => {
l(s, n, s[y][n]);
}), s;
}
function j(e) {
return v(e) && "getOriginal" in e[y];
}
// src/restoreAll.ts
function te() {
for (let e of x)
e.restore();
x.clear();
}
export {
R as createInternalSpy,
T as getInternalState,
M as internalSpyOn,
te as restoreAll,
x as spies,
Y as spy,
Z as spyOn
};