@sigx/ssg 0.4.1 β 0.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +49 -208
- package/dist/errors.d.ts +11 -11
- package/dist/errors.d.ts.map +1 -1
- package/dist/mdx/rehype-headings.d.ts.map +1 -1
- package/dist/mdx/shiki.d.ts.map +1 -1
- package/dist/plugin.d.ts.map +1 -1
- package/dist/vite/plugin.d.ts.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -1,46 +1,28 @@
|
|
|
1
1
|
# @sigx/ssg
|
|
2
2
|
|
|
3
|
-
Static
|
|
3
|
+
Static site generator for [SignalX](https://github.com/signalxjs/core) with file-based routing, MDX, and pluggable themes.
|
|
4
4
|
|
|
5
5
|
## Features
|
|
6
6
|
|
|
7
|
-
- π **File-based routing**
|
|
8
|
-
- π **Layout system**
|
|
9
|
-
- π **MDX
|
|
10
|
-
- π¨ **Pluggable themes**
|
|
11
|
-
-
|
|
12
|
-
- β‘ **Fast builds**
|
|
13
|
-
- π **Zero-config mode**
|
|
14
|
-
- πΊοΈ **Sitemap generation**
|
|
15
|
-
- π οΈ **CLI tools** - `ssg dev`, `ssg build`, and `ssg preview` commands
|
|
7
|
+
- π **File-based routing** β `src/pages/` becomes routes automatically
|
|
8
|
+
- π **Layout system** β wrap pages with reusable layouts
|
|
9
|
+
- π **MDX** β write content with Markdown + SignalX components
|
|
10
|
+
- π¨ **Pluggable themes** β install a theme package (e.g. `@sigx/ssg-theme-daisyui`) or build your own
|
|
11
|
+
- π₯ **Vite HMR** β instant updates during development
|
|
12
|
+
- β‘ **Fast builds** β parallel rendering with streaming
|
|
13
|
+
- π **Zero-config mode** β works out of the box with sensible defaults
|
|
14
|
+
- πΊοΈ **Sitemap generation** β automatic `sitemap.xml` and `robots.txt`
|
|
16
15
|
|
|
17
16
|
## Installation
|
|
18
17
|
|
|
19
18
|
```bash
|
|
20
|
-
npm install @sigx/ssg sigx @sigx/router
|
|
19
|
+
npm install @sigx/ssg sigx @sigx/router
|
|
20
|
+
npm install -D vite @sigx/vite
|
|
21
21
|
```
|
|
22
22
|
|
|
23
|
-
##
|
|
23
|
+
## Usage
|
|
24
24
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
The simplest way to get started - just create pages and run:
|
|
28
|
-
|
|
29
|
-
```bash
|
|
30
|
-
# Create a page
|
|
31
|
-
mkdir -p src/pages
|
|
32
|
-
echo 'export default () => <h1>Hello World</h1>' > src/pages/index.tsx
|
|
33
|
-
|
|
34
|
-
# Start development
|
|
35
|
-
npx ssg dev
|
|
36
|
-
|
|
37
|
-
# Build for production
|
|
38
|
-
npx ssg build
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
### With configuration
|
|
42
|
-
|
|
43
|
-
Create `ssg.config.ts`:
|
|
25
|
+
`@sigx/ssg` ships as a [`@sigx/cli`](https://github.com/signalxjs/cli) plugin and a Vite plugin you can use directly. Drop a `ssg.config.ts` in your project root to opt in:
|
|
44
26
|
|
|
45
27
|
```ts
|
|
46
28
|
// ssg.config.ts
|
|
@@ -51,49 +33,32 @@ export default defineSSGConfig({
|
|
|
51
33
|
title: 'My Site',
|
|
52
34
|
description: 'Built with SignalX SSG',
|
|
53
35
|
url: 'https://example.com',
|
|
54
|
-
fonts: ['Inter:wght@400;500;600;700'],
|
|
55
36
|
},
|
|
56
37
|
});
|
|
57
38
|
```
|
|
58
39
|
|
|
59
|
-
###
|
|
40
|
+
### Via `@sigx/cli`
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
npx sigx ssg dev # start dev server
|
|
44
|
+
npx sigx ssg build # build static site
|
|
45
|
+
npx sigx ssg preview # preview the production build
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### Via the Vite plugin
|
|
60
49
|
|
|
61
50
|
```ts
|
|
62
51
|
// vite.config.ts
|
|
63
52
|
import { defineConfig } from 'vite';
|
|
64
|
-
import
|
|
65
|
-
import
|
|
53
|
+
import sigx from '@sigx/vite';
|
|
54
|
+
import ssg from '@sigx/ssg/vite';
|
|
66
55
|
|
|
67
56
|
export default defineConfig({
|
|
68
|
-
plugins: [
|
|
69
|
-
sigxPlugin(),
|
|
70
|
-
ssgPlugin(),
|
|
71
|
-
],
|
|
72
|
-
});
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
### Create pages
|
|
76
|
-
|
|
77
|
-
```tsx
|
|
78
|
-
// src/pages/index.tsx
|
|
79
|
-
import { component } from 'sigx';
|
|
80
|
-
|
|
81
|
-
export default component(() => {
|
|
82
|
-
return () => (
|
|
83
|
-
<div>
|
|
84
|
-
<h1>Welcome to my site!</h1>
|
|
85
|
-
</div>
|
|
86
|
-
);
|
|
57
|
+
plugins: [sigx(), ssg()],
|
|
87
58
|
});
|
|
88
59
|
```
|
|
89
60
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
```bash
|
|
93
|
-
npx ssg build
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
## File-based Routing
|
|
61
|
+
## File-based routing
|
|
97
62
|
|
|
98
63
|
Pages in `src/pages/` are automatically converted to routes:
|
|
99
64
|
|
|
@@ -105,16 +70,13 @@ Pages in `src/pages/` are automatically converted to routes:
|
|
|
105
70
|
| `src/pages/blog/[slug].tsx` | `/blog/:slug` |
|
|
106
71
|
| `src/pages/docs/[...path].tsx` | `/docs/*path` |
|
|
107
72
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
For dynamic routes, export a `getStaticPaths` function:
|
|
73
|
+
Dynamic routes export `getStaticPaths`:
|
|
111
74
|
|
|
112
75
|
```tsx
|
|
113
76
|
// src/pages/blog/[slug].tsx
|
|
114
77
|
import { component } from 'sigx';
|
|
115
78
|
|
|
116
79
|
export async function getStaticPaths() {
|
|
117
|
-
// Fetch your data from any source
|
|
118
80
|
const posts = await fetchBlogPosts();
|
|
119
81
|
return posts.map(post => ({
|
|
120
82
|
params: { slug: post.slug },
|
|
@@ -122,13 +84,11 @@ export async function getStaticPaths() {
|
|
|
122
84
|
}));
|
|
123
85
|
}
|
|
124
86
|
|
|
125
|
-
export default component(({ props }) =>
|
|
126
|
-
|
|
127
|
-
<
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
);
|
|
131
|
-
});
|
|
87
|
+
export default component(({ props }) => () => (
|
|
88
|
+
<article>
|
|
89
|
+
<h1>{props.post.title}</h1>
|
|
90
|
+
</article>
|
|
91
|
+
));
|
|
132
92
|
```
|
|
133
93
|
|
|
134
94
|
## Layouts
|
|
@@ -139,22 +99,16 @@ Create layouts in `src/layouts/`:
|
|
|
139
99
|
// src/layouts/default.tsx
|
|
140
100
|
import { component } from 'sigx';
|
|
141
101
|
|
|
142
|
-
export default component(({ slots
|
|
143
|
-
|
|
144
|
-
<
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
{slots.default()}
|
|
150
|
-
</main>
|
|
151
|
-
<footer>Β© 2024</footer>
|
|
152
|
-
</div>
|
|
153
|
-
);
|
|
154
|
-
});
|
|
102
|
+
export default component(({ slots }) => () => (
|
|
103
|
+
<div class="layout">
|
|
104
|
+
<header><nav>My Site</nav></header>
|
|
105
|
+
<main>{slots.default()}</main>
|
|
106
|
+
<footer>Β©</footer>
|
|
107
|
+
</div>
|
|
108
|
+
));
|
|
155
109
|
```
|
|
156
110
|
|
|
157
|
-
Specify layout in frontmatter or
|
|
111
|
+
Specify the layout in frontmatter or by exporting it:
|
|
158
112
|
|
|
159
113
|
```mdx
|
|
160
114
|
---
|
|
@@ -165,149 +119,57 @@ layout: docs
|
|
|
165
119
|
# Content here
|
|
166
120
|
```
|
|
167
121
|
|
|
168
|
-
Or in TSX:
|
|
169
|
-
|
|
170
122
|
```tsx
|
|
171
123
|
export const layout = 'docs';
|
|
172
124
|
```
|
|
173
125
|
|
|
174
126
|
## MDX
|
|
175
127
|
|
|
176
|
-
Write content with MDX:
|
|
177
|
-
|
|
178
128
|
```mdx
|
|
179
129
|
---
|
|
180
130
|
title: Hello World
|
|
181
|
-
date:
|
|
131
|
+
date: 2026-05-10
|
|
182
132
|
---
|
|
183
133
|
|
|
184
134
|
# {frontmatter.title}
|
|
185
135
|
|
|
186
|
-
This is **markdown** with SignalX components
|
|
136
|
+
This is **markdown** with SignalX components mixed in:
|
|
187
137
|
|
|
188
138
|
<Counter initial={5} />
|
|
189
139
|
```
|
|
190
140
|
|
|
191
141
|
## Themes
|
|
192
142
|
|
|
193
|
-
Install a theme
|
|
143
|
+
Install a theme:
|
|
194
144
|
|
|
195
145
|
```bash
|
|
196
146
|
npm install @sigx/ssg-theme-daisyui
|
|
197
147
|
```
|
|
198
148
|
|
|
199
|
-
Configure in ssg.config.ts:
|
|
200
|
-
|
|
201
149
|
```ts
|
|
150
|
+
// ssg.config.ts
|
|
202
151
|
export default defineSSGConfig({
|
|
203
152
|
theme: '@sigx/ssg-theme-daisyui',
|
|
204
153
|
});
|
|
205
154
|
```
|
|
206
155
|
|
|
207
|
-
|
|
208
|
-
- Pre-built layouts (default, docs, blog, etc.)
|
|
209
|
-
- UI components
|
|
210
|
-
- CSS styles
|
|
211
|
-
|
|
212
|
-
## Hydration
|
|
213
|
-
|
|
214
|
-
SSG pages are pre-rendered at build time as static HTML. Interactive components are "hydrated" on the client side to become reactive.
|
|
215
|
-
|
|
216
|
-
### Islands Architecture
|
|
156
|
+
A theme bundles layouts, components, and CSS so you don't have to.
|
|
217
157
|
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
```tsx
|
|
221
|
-
import { Counter } from './components/Counter';
|
|
222
|
-
|
|
223
|
-
export default component(() => {
|
|
224
|
-
return () => (
|
|
225
|
-
<div>
|
|
226
|
-
{/* Static content - no JS needed */}
|
|
227
|
-
<h1>Welcome to my site</h1>
|
|
228
|
-
|
|
229
|
-
{/* Interactive islands with different hydration strategies */}
|
|
230
|
-
<Counter client:load />
|
|
231
|
-
<LazyWidget client:idle />
|
|
232
|
-
<OffscreenChart client:visible />
|
|
233
|
-
<MobileMenu client:media="(max-width: 768px)" />
|
|
234
|
-
<BrowserOnlyWidget client:only />
|
|
235
|
-
</div>
|
|
236
|
-
);
|
|
237
|
-
});
|
|
238
|
-
```
|
|
158
|
+
## Islands hydration
|
|
239
159
|
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
| Directive | When it Hydrates | Use Case |
|
|
243
|
-
|-----------|------------------|----------|
|
|
244
|
-
| `client:load` | Immediately on page load | Critical interactive elements |
|
|
245
|
-
| `client:idle` | When browser is idle (`requestIdleCallback`) | Non-critical interactivity |
|
|
246
|
-
| `client:visible` | When scrolled into viewport (`IntersectionObserver`) | Below-the-fold components |
|
|
247
|
-
| `client:media="query"` | When media query matches | Mobile-only components |
|
|
248
|
-
| `client:only` | Not SSR'd, renders only on client | Browser API dependencies |
|
|
249
|
-
|
|
250
|
-
### Example: Interactive Counter
|
|
251
|
-
|
|
252
|
-
```tsx
|
|
253
|
-
// src/components/Counter.tsx
|
|
254
|
-
import { component, signal } from 'sigx';
|
|
255
|
-
|
|
256
|
-
export const Counter = component(() => {
|
|
257
|
-
const count = signal(0);
|
|
258
|
-
|
|
259
|
-
return () => (
|
|
260
|
-
<div class="counter">
|
|
261
|
-
<button onClick={() => count.value--}>-</button>
|
|
262
|
-
<span>{count.value}</span>
|
|
263
|
-
<button onClick={() => count.value++}>+</button>
|
|
264
|
-
</div>
|
|
265
|
-
);
|
|
266
|
-
}, { name: 'Counter' });
|
|
267
|
-
```
|
|
268
|
-
|
|
269
|
-
```tsx
|
|
270
|
-
// src/pages/index.tsx
|
|
271
|
-
import { Counter } from '../components/Counter';
|
|
272
|
-
|
|
273
|
-
export default component(() => {
|
|
274
|
-
return () => (
|
|
275
|
-
<main>
|
|
276
|
-
<h1>Counter Demo</h1>
|
|
277
|
-
<Counter client:load />
|
|
278
|
-
</main>
|
|
279
|
-
);
|
|
280
|
-
});
|
|
281
|
-
```
|
|
282
|
-
|
|
283
|
-
### How It Works
|
|
284
|
-
|
|
285
|
-
1. **Build time**: Pages are rendered to static HTML with component markers
|
|
286
|
-
2. **Page load**: Browser receives pre-rendered HTML (fast First Contentful Paint)
|
|
287
|
-
3. **Hydration**: JavaScript attaches event handlers and reactivity to existing DOM
|
|
288
|
-
4. **Interactivity**: Components become fully interactive without re-rendering
|
|
289
|
-
|
|
290
|
-
### Benefits
|
|
291
|
-
|
|
292
|
-
- **Fast initial load** - HTML is ready immediately, no JavaScript blocking
|
|
293
|
-
- **SEO friendly** - Search engines see full content
|
|
294
|
-
- **Progressive enhancement** - Content is visible before JS loads
|
|
295
|
-
- **Reduced JavaScript** - Only hydrate what needs to be interactive
|
|
296
|
-
- **Fine-grained control** - Choose when each component becomes interactive
|
|
160
|
+
`@sigx/ssg` works with [`@sigx/ssr-islands`](https://github.com/signalxjs/ssr-islands) for selective hydration via `client:*` directives. See the islands README for details.
|
|
297
161
|
|
|
298
162
|
## Configuration
|
|
299
163
|
|
|
300
|
-
Full
|
|
164
|
+
Full options:
|
|
301
165
|
|
|
302
166
|
```ts
|
|
303
167
|
defineSSGConfig({
|
|
304
|
-
// Directories
|
|
305
168
|
pages: 'src/pages',
|
|
306
169
|
layouts: 'src/layouts',
|
|
307
170
|
content: 'src/content',
|
|
308
171
|
outDir: 'dist',
|
|
309
172
|
|
|
310
|
-
// Site metadata
|
|
311
173
|
site: {
|
|
312
174
|
title: 'My Site',
|
|
313
175
|
description: 'Site description',
|
|
@@ -320,11 +182,9 @@ defineSSGConfig({
|
|
|
320
182
|
themeColor: '#000000',
|
|
321
183
|
},
|
|
322
184
|
|
|
323
|
-
// Theme
|
|
324
185
|
theme: '@sigx/ssg-theme-daisyui',
|
|
325
186
|
defaultLayout: 'default',
|
|
326
187
|
|
|
327
|
-
// Markdown options
|
|
328
188
|
markdown: {
|
|
329
189
|
shiki: {
|
|
330
190
|
light: 'github-light',
|
|
@@ -334,25 +194,6 @@ defineSSGConfig({
|
|
|
334
194
|
});
|
|
335
195
|
```
|
|
336
196
|
|
|
337
|
-
## CLI
|
|
338
|
-
|
|
339
|
-
```bash
|
|
340
|
-
# Start development server
|
|
341
|
-
npx ssg dev
|
|
342
|
-
|
|
343
|
-
# Build static site (generates sitemap.xml and robots.txt)
|
|
344
|
-
npx ssg build
|
|
345
|
-
|
|
346
|
-
# Preview production build
|
|
347
|
-
npx ssg preview
|
|
348
|
-
|
|
349
|
-
# With custom config
|
|
350
|
-
npx ssg build --config=./my-config.ts
|
|
351
|
-
|
|
352
|
-
# With options
|
|
353
|
-
npx ssg dev --port=3000 --open
|
|
354
|
-
```
|
|
355
|
-
|
|
356
197
|
## License
|
|
357
198
|
|
|
358
|
-
MIT
|
|
199
|
+
MIT Β© Andreas Ekdahl
|
package/dist/errors.d.ts
CHANGED
|
@@ -28,17 +28,17 @@ export declare class SSGError extends Error {
|
|
|
28
28
|
* Error codes for categorization
|
|
29
29
|
*/
|
|
30
30
|
export declare const ErrorCodes: {
|
|
31
|
-
readonly CONFIG_NOT_FOUND:
|
|
32
|
-
readonly CONFIG_INVALID:
|
|
33
|
-
readonly CONFIG_THEME_NOT_FOUND:
|
|
34
|
-
readonly PAGE_NOT_FOUND:
|
|
35
|
-
readonly PAGE_INVALID_EXPORT:
|
|
36
|
-
readonly DYNAMIC_ROUTE_NO_PATHS:
|
|
37
|
-
readonly LAYOUT_NOT_FOUND:
|
|
38
|
-
readonly BUILD_RENDER_FAILED:
|
|
39
|
-
readonly BUILD_VITE_FAILED:
|
|
40
|
-
readonly MDX_PARSE_ERROR:
|
|
41
|
-
readonly MDX_FRONTMATTER_ERROR:
|
|
31
|
+
readonly CONFIG_NOT_FOUND: 'SSG001';
|
|
32
|
+
readonly CONFIG_INVALID: 'SSG002';
|
|
33
|
+
readonly CONFIG_THEME_NOT_FOUND: 'SSG003';
|
|
34
|
+
readonly PAGE_NOT_FOUND: 'SSG100';
|
|
35
|
+
readonly PAGE_INVALID_EXPORT: 'SSG101';
|
|
36
|
+
readonly DYNAMIC_ROUTE_NO_PATHS: 'SSG102';
|
|
37
|
+
readonly LAYOUT_NOT_FOUND: 'SSG103';
|
|
38
|
+
readonly BUILD_RENDER_FAILED: 'SSG300';
|
|
39
|
+
readonly BUILD_VITE_FAILED: 'SSG301';
|
|
40
|
+
readonly MDX_PARSE_ERROR: 'SSG400';
|
|
41
|
+
readonly MDX_FRONTMATTER_ERROR: 'SSG401';
|
|
42
42
|
};
|
|
43
43
|
export declare function configNotFoundError(searchedPaths: string[]): SSGError;
|
|
44
44
|
export declare function themeNotFoundError(themeName: string): SSGError;
|
package/dist/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;GAEG;AACH,qBAAa,QAAS,SAAQ,KAAK;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAE7B,YACI,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,KAAK,CAAC,EAAE,KAAK,CAAC;KACjB,EASJ;IAED;;OAEG;IACH,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAuB5B;CACJ;AAED;;GAEG;AACH,eAAO,MAAM,UAAU
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;GAEG;AACH,qBAAa,QAAS,SAAQ,KAAK;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAE7B,YACI,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,KAAK,CAAC,EAAE,KAAK,CAAC;KACjB,EASJ;IAED;;OAEG;IACH,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAuB5B;CACJ;AAED;;GAEG;AACH,eAAO,MAAM,UAAU;aAEnB,gBAAgB,EAAE,QAAQ;aAC1B,cAAc,EAAE,QAAQ;aACxB,sBAAsB,EAAE,QAAQ;aAGhC,cAAc,EAAE,QAAQ;aACxB,mBAAmB,EAAE,QAAQ;aAC7B,sBAAsB,EAAE,QAAQ;aAChC,gBAAgB,EAAE,QAAQ;aAG1B,mBAAmB,EAAE,QAAQ;aAC7B,iBAAiB,EAAE,QAAQ;aAG3B,eAAe,EAAE,QAAQ;aACzB,qBAAqB,EAAE,QAAQ;CACzB,CAAC;AAMX,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,QAAQ,CAUrE;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ,CAQ9D;AAMD,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,GAAG,QAAQ,CAa9G;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,QAAQ,CAYjF;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAY5D;AAMD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,QAAQ,CAYrE;AAMD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,QAAQ,CAcjF;AAMD;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,KAAK,CAgBhE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAC/B,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,IAAI,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,CAAC,CAAC,CAIZ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rehype-headings.d.ts","sourceRoot":"","sources":["../../src/mdx/rehype-headings.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH;;GAEG;AACH,MAAM,WAAW,qBAAqB;IAClC;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,GAAE,qBAA0B,
|
|
1
|
+
{"version":3,"file":"rehype-headings.d.ts","sourceRoot":"","sources":["../../src/mdx/rehype-headings.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH;;GAEG;AACH,MAAM,WAAW,qBAAqB;IAClC;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,GAAE,qBAA0B,UAGvD,GAAG,QAAQ,GAAG,UA4B/B;eAEc,qBAAqB"}
|
package/dist/mdx/shiki.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shiki.d.ts","sourceRoot":"","sources":["../../src/mdx/shiki.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAqB,KAAK,WAAW,EAA2C,MAAM,OAAO,CAAC;AACrG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAgB5C;;GAEG;AACH,wBAAsB,cAAc,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAW/E;AAED;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAAC;AAErD;;GAEG;AACH,wBAAsB,aAAa,CAC/B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,WAAW,EACpB,IAAI,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAA;CAAE,GAC/D,OAAO,CAAC,MAAM,CAAC,CA6GjB;AAsDD;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,CAAC,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"shiki.d.ts","sourceRoot":"","sources":["../../src/mdx/shiki.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAqB,KAAK,WAAW,EAA2C,MAAM,OAAO,CAAC;AACrG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAgB5C;;GAEG;AACH,wBAAsB,cAAc,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAW/E;AAED;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAAC;AAErD;;GAEG;AACH,wBAAsB,aAAa,CAC/B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,WAAW,EACpB,IAAI,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAA;CAAE,GAC/D,OAAO,CAAC,MAAM,CAAC,CA6GjB;AAsDD;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,CAAC,EAAE,WAAW,UACxB,GAAG,mBA+E1B;AA8BD;;GAEG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAW9D"}
|
package/dist/plugin.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA;;;;;GAKG
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/vite/plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAiC,MAAM,MAAM,CAAC;AAGlE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAsB1C;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,OAAO,CAAC,SAAS,CAAC;IACxD;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB;AAQD;;GAEG;AACH,wBAAgB,SAAS,CAAC,OAAO,GAAE,gBAAqB,GAAG,MAAM,EAAE,CA8SlE;AAED;;GAEG;
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/vite/plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAiC,MAAM,MAAM,CAAC;AAGlE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAsB1C;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,OAAO,CAAC,SAAS,CAAC;IACxD;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB;AAQD;;GAEG;AACH,wBAAgB,SAAS,CAAC,OAAO,GAAE,gBAAqB,GAAG,MAAM,EAAE,CA8SlE;AAED;;GAEG;eACY,SAAS"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sigx/ssg",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.2",
|
|
4
4
|
"description": "Static Site Generator for SignalX with file-based routing, MDX support, and pluggable themes",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -57,6 +57,7 @@
|
|
|
57
57
|
"url": "https://github.com/signalxjs/ssg/issues"
|
|
58
58
|
},
|
|
59
59
|
"dependencies": {
|
|
60
|
+
"@sigx/router": "^0.4.2",
|
|
60
61
|
"@sigx/server-renderer": "^0.4.1",
|
|
61
62
|
"esbuild": "^0.27.0",
|
|
62
63
|
"fast-glob": "^3.3.2",
|
|
@@ -73,8 +74,7 @@
|
|
|
73
74
|
"remark-rehype": "^11.1.1",
|
|
74
75
|
"shiki": "^1.24.0",
|
|
75
76
|
"unified": "^11.0.5",
|
|
76
|
-
"unist-util-visit": "^5.0.0"
|
|
77
|
-
"@sigx/router": "^0.4.1"
|
|
77
|
+
"unist-util-visit": "^5.0.0"
|
|
78
78
|
},
|
|
79
79
|
"peerDependencies": {
|
|
80
80
|
"@sigx/cli": "*",
|