mirror of
https://github.com/pbakaus/impeccable.git
synced 2026-09-14 15:16:35 +03:00
25 lines
4.5 KiB
JSON
25 lines
4.5 KiB
JSON
{
|
|
"steps": [
|
|
{
|
|
"stdout": "{\"mode\":\"insert\",\"position\":\"after\",\"file\":\"node_modules/.impeccable-live/ab12cd34/manifest.json\",\"sourceFile\":\"src/routes/+page.svelte\",\"previewMode\":\"svelte-component\",\"componentDir\":\"node_modules/.impeccable-live/ab12cd34\",\"propContract\":[],\"insertLine\":1,\"sourceInsertLine\":21,\"anchorStartLine\":17,\"anchorEndLine\":20,\"commentSyntax\":{\"open\":\"<!--\",\"close\":\"-->\"},\"styleMode\":\"svelte-component\",\"styleTag\":null,\"cssSelectorPrefixExamples\":[],\"cssAuthoring\":{\"mode\":\"svelte-component\",\"styleTag\":null,\"strategy\":\"component-style-block\",\"rulePattern\":\".semantic-class { ... }\",\"selectorExamples\":[\".expense-row { padding: 22px; }\",\".expense-row { padding: 22px; }\",\".expense-row { padding: 22px; }\"],\"requirements\":[\"Write each variant as a real Svelte component file (v1.svelte, v2.svelte, ...).\",\"Keep the prop names from propContract; bind dynamic text with {propName}, not literal snapshot text.\",\"Put variant CSS in the component <style> block using semantic class selectors.\",\"Author param-driven CSS against var(--p-<id>, default) and [data-p-<id>] using :global(...) so the runtime knob values reach the mounted root.\",\"Declare params in componentDir/params.json keyed by variant number (e.g. {\\\"1\\\": [...], \\\"2\\\": [...]}), NOT as a data-impeccable-params attribute.\",\"Do not use @scope or data-impeccable-variant selectors in component files.\",\"Do not edit the route source file during generation; only edit files under componentDir.\"],\"forbidden\":[\"Do not use @scope blocks in Svelte component variants.\",\"Do not copy live DOM snapshot text into markup when propContract provides bindings.\",\"Do not add data-impeccable-* attributes inside component files. Svelte parses { in attribute values as an expression, so data-impeccable-params with JSON breaks the build; use componentDir/params.json instead.\"],\"paramsFile\":\"params.json\"}}\n",
|
|
"stderr": "",
|
|
"exit": 0,
|
|
"signal": null
|
|
},
|
|
{
|
|
"stdout": "{\"handled\":true,\"verify\":{\"clean\":true,\"findings\":[]},\"file\":\"src/routes/+page.svelte\",\"sourceFile\":\"src/routes/+page.svelte\",\"previewMode\":\"svelte-component\",\"componentDir\":\"node_modules/.impeccable-live/ab12cd34\",\"carbonize\":false}\n",
|
|
"stderr": "",
|
|
"exit": 0,
|
|
"signal": null
|
|
}
|
|
],
|
|
"files": {
|
|
".impeccable/live/accept-receipts/ab12cd34.json": "{\n \"id\": \"ab12cd34\",\n \"operation\": \"accept\",\n \"variantId\": \"1\",\n \"result\": {\n \"handled\": true,\n \"verify\": {\n \"clean\": true,\n \"findings\": []\n },\n \"file\": \"src/routes/+page.svelte\",\n \"sourceFile\": \"src/routes/+page.svelte\",\n \"previewMode\": \"svelte-component\",\n \"componentDir\": \"node_modules/.impeccable-live/ab12cd34\",\n \"carbonize\": false\n },\n \"completedAt\": \"<ISO>\"\n}\n",
|
|
".impeccable/live/config.json": "{\n \"files\": [\"src/app.html\"],\n \"insertBefore\": \"</body>\",\n \"commentSyntax\": \"html\"\n}\n",
|
|
"node_modules/.impeccable-live/__probe.js": "export const impeccableLivePreviewProbe = true;\n",
|
|
"node_modules/.impeccable-live/__runtime.js": "export { mount, unmount } from 'svelte';\n",
|
|
"src/app.html": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <meta charset=\"utf-8\" />\n <title>SvelteKit Fixture</title>\n %sveltekit.head%\n </head>\n <body data-sveltekit-preload-data=\"hover\">\n <div style=\"display: contents\">%sveltekit.body%</div>\n </body>\n</html>\n",
|
|
"src/routes/+page.svelte": "<script>\n let title = 'SvelteKit Fixture';\n let expenses = [\n { id: 1, label: 'Coffee', amount: 3 },\n { id: 2, label: 'Lunch', amount: 12 },\n ];\n</script>\n\n<main class=\"page\">\n <h1 class=\"hero-title\">{title}</h1>\n <p class=\"hero-hook\">Minimal SvelteKit route for oracle live-mode goldens.</p>\n <ul class=\"expense-list\">\n {#each expenses as expense (expense.id)}\n <li class=\"expense-row\">{expense.label}: {expense.amount}</li>\n {/each}\n </ul>\n <section id=\"features\" class=\"feature-grid\">\n <article class=\"feature-card\">One</article>\n <article class=\"feature-card\">Two</article>\n </section>\n<div class=\"impeccable-insert-preview\">Insert variant 1</div>\n</main>\n\n<style>\n .hero-title { font-size: 2rem; }\n .expense-list { list-style: none; padding: 0; }\n .expense-row { padding: 4px 0; }\n .impeccable-insert-preview { display: block; }\n</style>\n"
|
|
}
|
|
}
|