- 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
41 lines
1.0 KiB
JavaScript
41 lines
1.0 KiB
JavaScript
/** Convert for Text */
|
|
export function convertText(node, parent, ctx) {
|
|
const text = {
|
|
type: "SvelteText",
|
|
value: node.data,
|
|
parent,
|
|
...ctx.getConvertLocation(node),
|
|
};
|
|
extractTextTokens(node, ctx);
|
|
return text;
|
|
}
|
|
/** Convert for Text to Literal */
|
|
export function convertTextToLiteral(node, parent, ctx) {
|
|
const text = {
|
|
type: "SvelteLiteral",
|
|
value: node.data,
|
|
parent,
|
|
...ctx.getConvertLocation(node),
|
|
};
|
|
extractTextTokens(node, ctx);
|
|
return text;
|
|
}
|
|
/** Extract tokens */
|
|
function extractTextTokens(node, ctx) {
|
|
const loc = node;
|
|
let start = loc.start;
|
|
let word = false;
|
|
for (let index = loc.start; index < loc.end; index++) {
|
|
if (word !== Boolean(ctx.code[index].trim())) {
|
|
if (start < index) {
|
|
ctx.addToken("HTMLText", { start, end: index });
|
|
}
|
|
word = !word;
|
|
start = index;
|
|
}
|
|
}
|
|
if (start < loc.end) {
|
|
ctx.addToken("HTMLText", { start, end: loc.end });
|
|
}
|
|
}
|