{"_id":"@booga/vssg","_rev":"2-f77acd3c7c0bb204ddb5b9fae61c2107","name":"@booga/vssg","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"@booga/vssg","version":"0.1.0","author":{"name":"bvasilenko"},"license":"MIT","_id":"@booga/vssg@0.1.0","maintainers":[{"name":"dreaktor","email":"me@dreaktor.com"}],"dist":{"shasum":"10640348add23fff0196d613a8dfad97491caf59","tarball":"https://registry.npmjs.org/@booga/vssg/-/vssg-0.1.0.tgz","fileCount":10,"integrity":"sha512-qkRTANcwklGH/L3MZ4c0sQ1B0xJxcfRsrthcJMrAcnEdizHq8x3Bk754U3kLKaVHcUSkhnWabjn1UU/VRXya+g==","signatures":[{"sig":"MEUCIGMw86Se3wOo7In6ZhDJMFIg5gIhcqHWktVCKWxj8TIPAiEA+46Yz6pVabuqJXnly0MvZ/Vl/C3t5E0VMl6xJFa4AuM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":93414},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"16c8cff9082e5f4d738a4224ba433cd10851d094","scripts":{"dev":"tsup --watch","lint":"eslint .","test":"vitest run --coverage","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"dreaktor","email":"me@dreaktor.com"},"_npmVersion":"10.9.3","description":"Static site generator. MDX + React routes in, deterministic HTML out. Pipeline of stages: parse, compile, render, semantic-class extract, emit.","directories":{},"sideEffects":false,"_nodeVersion":"22.19.0","dependencies":{"zod":"^3.0.0","fast-glob":"^3.3.0","@booga/vmdx":"^0.1.0","@mdx-js/mdx":"^3.1.0","@booga/vrenderer":"^0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","react":"^18.0.0","eslint":"^9.0.0","vitest":"^2.1.0","globals":"^15.0.0","@eslint/js":"^9.0.0","typescript":"^5.0.0","@types/node":"^20.0.0","@types/react":"^18.3.0","typescript-eslint":"^8.0.0","@vitejs/plugin-react":"^4.0.0","@vitest/coverage-istanbul":"^2.1.9"},"peerDependencies":{"react":"^18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/vssg_0.1.0_1778869693131_0.2047029313001334","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@booga/vssg","version":"0.1.1","description":"Static site generator. MDX + React routes in, deterministic HTML out. Pipeline of stages: parse, compile, render, semantic-class extract, emit.","type":"module","sideEffects":false,"main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit","lint":"eslint .","test":"vitest run --coverage","test:watch":"vitest"},"dependencies":{"@booga/vmdx":"^0.1.1","@booga/vrenderer":"^0.1.1","@mdx-js/mdx":"^3.1.0","fast-glob":"^3.3.0","zod":"^3.0.0"},"peerDependencies":{"react":"^18.0.0"},"devDependencies":{"@eslint/js":"^9.0.0","@types/node":"^20.0.0","@types/react":"^18.3.0","@vitejs/plugin-react":"^4.0.0","@vitest/coverage-istanbul":"^2.1.9","eslint":"^9.0.0","globals":"^15.0.0","react":"^18.0.0","tsup":"^8.0.0","typescript":"^5.0.0","typescript-eslint":"^8.0.0","vitest":"^2.1.0"},"publishConfig":{"access":"public"},"license":"MIT","author":{"name":"bvasilenko"},"_id":"@booga/vssg@0.1.1","gitHead":"860c535c69898a7474a5e10cbf95dc2b7604b7e8","_nodeVersion":"22.19.0","_npmVersion":"10.9.3","dist":{"integrity":"sha512-Mw14pxbeMo593nTF/1Vab1yQTLRZqPY2GFS+QmBWND57TMcK/T/K3ZxZm3BoqcXpWlBBZOuEbhpmr8sAzk4Kaw==","shasum":"4376df0cd8d81f3a0f95f5e0e63dfae013ba9a27","tarball":"https://registry.npmjs.org/@booga/vssg/-/vssg-0.1.1.tgz","fileCount":10,"unpackedSize":93756,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIDNqyanuicJXNDFzREzWbY2szNeTLHGZqbhtcao3gM4OAiByLox5Yn8gfo58nnQ8DVLaL/gw4hbfHhNdvfsHt1bicw=="}]},"_npmUser":{"name":"dreaktor","email":"me@dreaktor.com"},"directories":{},"maintainers":[{"name":"dreaktor","email":"me@dreaktor.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/vssg_0.1.1_1779126953037_0.6708478168188003"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-15T18:28:13.051Z","modified":"2026-05-18T17:55:53.334Z","0.1.0":"2026-05-15T18:28:13.305Z","0.1.1":"2026-05-18T17:55:53.206Z"},"author":{"name":"bvasilenko"},"license":"MIT","description":"Static site generator. MDX + React routes in, deterministic HTML out. Pipeline of stages: parse, compile, render, semantic-class extract, emit.","maintainers":[{"name":"dreaktor","email":"me@dreaktor.com"}],"readme":"# vSsg\n\nStatic site generator. MDX + React component routes in, deterministic HTML out. Pipeline of stages: parse routes, compile MDX, render to HTML, extract semantic classes, emit HTML/Liquid. Build-time only; no watch mode, no dev server.\n\n## Install\n\n```bash\nnpm install @booga/vssg\n```\n\nPeer dep: `react ^18`.\n\n## Usage\n\n```ts\nimport { generate, defineConfig } from \"@booga/vssg\";\n\nconst config = defineConfig({\n  srcDir: \"./src\",\n  outDir: \"./dist\",\n  routes: \"routes/**/*.mdx\",     // glob or () => RouteEntry[]\n  targets: [\"html\", \"liquid\"],   // default: [\"html\"]\n  publicDir: \"./public\",\n  baseUrl: \"/\",\n});\n\nconst result = await generate(config);\n// { pages: number, assets: string[], durationMs: number }\n```\n\n## Pipeline\n\n```\nparseRoutes → compileMdx → render → extractSemantic → emitHtml → emitLiquid\n```\n\nEach stage is a `{ name: string; run: (ctx: PipelineCtx) => Promise<PipelineCtx> }`. Insert custom stages by passing a `stages` array as the second argument to `generate()`.\n\n## Semantic CSS\n\nComponents using `@booga/vdsl` DSL props emit `data-class` attributes. The `extractSemantic` stage collapses these into stable `.block-<hash>` classes and writes `semantic.css` with `@apply` rules for Tailwind to resolve.\n\n## Targets\n\n- `\"html\"` — writes `<route>.html` + `semantic.css` to `outDir`.\n- `\"liquid\"` — writes `<route>.liquid` templates referencing `.block-*` classes.\n\n## API\n\n| Export | Type | Description |\n|---|---|---|\n| `generate(config, stages?)` | `Promise<GenerateResult>` | Main entrypoint. Validates config, runs pipeline. |\n| `defineConfig(config)` | `SsgConfigInput` | Type helper. Identity function. |\n| `defaultStages` | `Stage[]` | The six built-in pipeline stages. |\n| `SsgConfigSchema` | Zod schema | Runtime config validation. |\n| `SsgConfig` | type | Resolved config (defaults applied). |\n| `SsgConfigInput` | type | User-facing input config (defaults optional). |\n| `Stage` | type | `{ name: string; run: (ctx) => Promise<ctx> }` |\n| `GenerateResult` | type | `{ pages, assets, durationMs }` |\n\n## Code of Conduct\n\nContributor Covenant 2.1 — [https://www.contributor-covenant.org/version/2/1/code_of_conduct/](https://www.contributor-covenant.org/version/2/1/code_of_conduct/)\n","readmeFilename":"README.md"}