- 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
58 lines
1.5 KiB
JavaScript
58 lines
1.5 KiB
JavaScript
const ASCII_LOWER_CASE_CACHE = new Map();
|
|
const ASCII_UPPER_CASE_CACHE = new Map();
|
|
/**
|
|
* String utility.
|
|
*/
|
|
export default class StringUtility {
|
|
/**
|
|
* ASCII lowercase.
|
|
*
|
|
* @see https://infra.spec.whatwg.org/#ascii-lowercase
|
|
* @param text Text.
|
|
* @returns Lowercase text.
|
|
*/
|
|
static asciiLowerCase(text) {
|
|
const cached = ASCII_LOWER_CASE_CACHE.get(text);
|
|
if (cached) {
|
|
return cached;
|
|
}
|
|
let newText = '';
|
|
for (const char of text) {
|
|
const value = char.charCodeAt(0);
|
|
if (value >= 65 && value <= 90) {
|
|
newText += String.fromCharCode(value + 32);
|
|
}
|
|
else {
|
|
newText += char;
|
|
}
|
|
}
|
|
ASCII_LOWER_CASE_CACHE.set(text, newText);
|
|
return newText;
|
|
}
|
|
/**
|
|
* ASCII uppercase.
|
|
*
|
|
* @see https://infra.spec.whatwg.org/#ascii-uppercase
|
|
* @param text Text.
|
|
* @returns Uppercase text.
|
|
*/
|
|
static asciiUpperCase(text) {
|
|
const cached = ASCII_UPPER_CASE_CACHE.get(text);
|
|
if (cached) {
|
|
return cached;
|
|
}
|
|
let newText = '';
|
|
for (const char of text) {
|
|
const value = char.charCodeAt(0);
|
|
if (value >= 97 && value <= 122) {
|
|
newText += String.fromCharCode(value - 32);
|
|
}
|
|
else {
|
|
newText += char;
|
|
}
|
|
}
|
|
ASCII_UPPER_CASE_CACHE.set(text, newText);
|
|
return newText;
|
|
}
|
|
}
|
|
//# sourceMappingURL=StringUtility.js.map
|