- 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
22 lines
1.0 KiB
TypeScript
22 lines
1.0 KiB
TypeScript
/**
|
|
* `invariant` is used to [assert](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-7.html#assertion-functions) that the `condition` is [truthy](https://github.com/getify/You-Dont-Know-JS/blob/bdbe570600d4e1107d0b131787903ca1c9ec8140/up%20%26%20going/ch2.md#truthy--falsy).
|
|
*
|
|
* 💥 `invariant` will `throw` an `Error` if the `condition` is [falsey](https://github.com/getify/You-Dont-Know-JS/blob/bdbe570600d4e1107d0b131787903ca1c9ec8140/up%20%26%20going/ch2.md#truthy--falsy)
|
|
*
|
|
* 🤏 `message`s are not displayed in production environments to help keep bundles small
|
|
*
|
|
* @example
|
|
*
|
|
* ```ts
|
|
* const value: Person | null = { name: 'Alex' };
|
|
* invariant(value, 'Expected value to be a person');
|
|
* // type of `value`` has been narrowed to `Person`
|
|
* ```
|
|
*/
|
|
export default function invariant(condition: any,
|
|
/**
|
|
* Can provide a string, or a function that returns a string for cases where
|
|
* the message takes a fair amount of effort to compute
|
|
*/
|
|
message?: string | (() => string)): asserts condition;
|