- 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
19 lines
1.2 KiB
TypeScript
19 lines
1.2 KiB
TypeScript
import type { array, join } from "./arrays.ts";
|
|
import type { NonNegativeIntegerLiteral } from "./numbers.ts";
|
|
export type Key = string | symbol;
|
|
export type toArkKey<o, k extends keyof o> = k extends number ? [
|
|
o,
|
|
number
|
|
] extends [array, k] ? NonNegativeIntegerLiteral : `${k}` : k;
|
|
export type arkIndexableOf<o> = arkKeyOf<o> extends infer k ? k extends `${infer index extends number}` ? index | k : k : never;
|
|
export type arkKeyOf<o> = [
|
|
o
|
|
] extends [object] ? [
|
|
o
|
|
] extends [array] ? arkArrayKeyOf<o> : arkObjectLiteralKeyOf<o> : never;
|
|
type arkArrayKeyOf<a extends array> = number extends a["length"] ? NonNegativeIntegerLiteral : keyof a extends infer i ? i extends `${number}` ? i : never : never;
|
|
type arkObjectLiteralKeyOf<o extends object> = keyof o extends infer k ? k extends number ? `${k}` : k : never;
|
|
export type arkGet<o, k extends arkIndexableOf<o>> = o[k extends keyof o ? k : NonNegativeIntegerLiteral extends k ? number & keyof o : k extends number ? `${k}` & keyof o : never];
|
|
export type writeInvalidKeysMessage<o extends string, keys extends array<string>> = `Key${keys["length"] extends 1 ? "" : "s"} ${join<keys, ", ">} ${keys["length"] extends 1 ? "does" : "do"} not exist on ${o}`;
|
|
export {};
|