@krate/core 0.4.0-beta.1 → 0.4.0-beta.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/bin/krate CHANGED
Binary file
package/dist/config.d.ts CHANGED
@@ -11,7 +11,7 @@
11
11
  * outDir: "dist",
12
12
  * plugins: [
13
13
  * sitemap({ baseUrl: "https://example.com" }),
14
- * docs({ contentDir: "content/docs", title: "Docs" }),
14
+ * docs({ contentDir: "src/content/docs", title: "Docs" }),
15
15
  * ],
16
16
  * });
17
17
  * ```
@@ -158,6 +158,33 @@ export interface KrateConfig {
158
158
  runtimeDirs?: string[];
159
159
  pathAliases?: Record<string, string[]>;
160
160
  tsBaseDir?: string;
161
+ /**
162
+ * Output mode. Default (`undefined`) allows request-time rendering
163
+ * (SSR/ISR/streaming and dynamic route fallbacks). `"static"` produces a
164
+ * fully static build: dynamic routes render only the params returned by
165
+ * `generateStaticParams`, unknown params 404, and SSR/ISR/streaming are
166
+ * disabled. A page can opt back in with `export const dynamicParams = true`.
167
+ */
168
+ output?: "static";
169
+ /**
170
+ * Compiler-enforced quality gates. When configured, `krate build` runs the
171
+ * rules and fails on findings at or above `failOn`; `krate check` runs the
172
+ * same rules on an existing build. Categories run by default only when a
173
+ * `checks` object is present.
174
+ */
175
+ checks?: ChecksConfig;
176
+ /**
177
+ * Typed content collections. Either a plain object or `defineContent({...})`:
178
+ *
179
+ * ```ts
180
+ * export default defineConfig({
181
+ * content: defineContent({
182
+ * blog: { dir: "src/content/blog", schema: { title: "string" } },
183
+ * }),
184
+ * });
185
+ * ```
186
+ */
187
+ content?: ContentConfig;
161
188
  /** Optional validation function called at build time with the loaded config. */
162
189
  validate?: (config: KrateConfig) => void | Promise<void>;
163
190
  }
@@ -175,4 +202,79 @@ export declare function sitemap(options: SitemapPluginOptions): PluginConfig;
175
202
  * content directory.
176
203
  */
177
204
  export declare function docs(options?: DocsPluginOptions): PluginConfig;
205
+ /** Shorthand field types accepted in a collection schema. */
206
+ export type ContentFieldType = "string" | "number" | "boolean" | "string[]" | "number[]" | "date";
207
+ /** Object form of a schema field. */
208
+ export interface ContentField {
209
+ type: ContentFieldType;
210
+ /** Require the field to be present in frontmatter (default: false). */
211
+ required?: boolean;
212
+ }
213
+ /** One field: a shorthand type string or a {@link ContentField} object. */
214
+ export type ContentFieldSpec = ContentFieldType | ContentField;
215
+ /** A single content collection. */
216
+ export interface ContentCollection {
217
+ /** Directory containing the collection's markdown/mdx entries, relative to
218
+ * the project root (default: `src/content/<name>`). */
219
+ dir?: string;
220
+ /** Frontmatter schema; each key maps to a field spec. */
221
+ schema?: Record<string, ContentFieldSpec>;
222
+ }
223
+ /** The shape passed to {@link defineContent}. */
224
+ export type ContentConfig = Record<string, ContentCollection>;
225
+ /**
226
+ * Define typed content collections. Optional identity helper — you can also
227
+ * pass a plain object to `defineConfig({ content: {...} })`; it exists purely
228
+ * for type-checking and editor assistance.
229
+ *
230
+ * Krate validates each entry's frontmatter against the schema at build time and
231
+ * generates typed declarations (`.krate/types/content.d.ts`).
232
+ *
233
+ * ```ts
234
+ * import { defineConfig, defineContent } from "@krate/core";
235
+ *
236
+ * export default defineConfig({
237
+ * content: defineContent({
238
+ * blog: {
239
+ * dir: "src/content/blog",
240
+ * schema: {
241
+ * title: "string",
242
+ * order: { type: "number", required: true },
243
+ * tags: "string[]",
244
+ * },
245
+ * },
246
+ * }),
247
+ * });
248
+ * ```
249
+ */
250
+ export declare function defineContent(config: ContentConfig): ContentConfig;
251
+ /** Severity for a check rule or category. `false` disables it. */
252
+ export type CheckSeverity = "error" | "warning" | "off" | boolean;
253
+ /** Built-in check rule IDs. */
254
+ export type CheckRuleId = "a11y/img-alt" | "a11y/heading-order" | "a11y/accessible-name" | "seo/title" | "seo/description" | "seo/canonical" | "seo/og" | "seo/lang" | "perf/js-budget" | "perf/image-dims";
255
+ export interface ChecksConfig {
256
+ /** Master switch (default: true when `checks` is present). */
257
+ enabled?: boolean;
258
+ /** Accessibility rules. `false` turns the category off. */
259
+ a11y?: CheckSeverity;
260
+ /** SEO rules. */
261
+ seo?: CheckSeverity;
262
+ /** Performance-budget rules. */
263
+ perf?: CheckSeverity;
264
+ /** Per-rule severity overrides, keyed by rule ID. */
265
+ rules?: Partial<Record<CheckRuleId, CheckSeverity>>;
266
+ /** Rule IDs to suppress entirely. */
267
+ ignore?: CheckRuleId[];
268
+ /** Per-route budgets. `js` is the client-JS budget in kilobytes. */
269
+ budget?: {
270
+ js?: number;
271
+ };
272
+ /** Minimum severity that fails `krate check` / the build (default "error"). */
273
+ failOn?: "error" | "warning";
274
+ /**
275
+ * Paths (relative to the project root) to JS/TS modules that export a custom
276
+ * `check(page, krate)` rule. Runs in the embedded QuickJS runtime.
277
+ */
278
+ custom?: string[];
279
+ }
178
280
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/dist/config.js CHANGED
@@ -11,7 +11,7 @@
11
11
  * outDir: "dist",
12
12
  * plugins: [
13
13
  * sitemap({ baseUrl: "https://example.com" }),
14
- * docs({ contentDir: "content/docs", title: "Docs" }),
14
+ * docs({ contentDir: "src/content/docs", title: "Docs" }),
15
15
  * ],
16
16
  * });
17
17
  * ```
@@ -36,3 +36,31 @@ export function sitemap(options) {
36
36
  export function docs(options = {}) {
37
37
  return { name: "docs", order: 10, options };
38
38
  }
39
+ /**
40
+ * Define typed content collections. Optional identity helper — you can also
41
+ * pass a plain object to `defineConfig({ content: {...} })`; it exists purely
42
+ * for type-checking and editor assistance.
43
+ *
44
+ * Krate validates each entry's frontmatter against the schema at build time and
45
+ * generates typed declarations (`.krate/types/content.d.ts`).
46
+ *
47
+ * ```ts
48
+ * import { defineConfig, defineContent } from "@krate/core";
49
+ *
50
+ * export default defineConfig({
51
+ * content: defineContent({
52
+ * blog: {
53
+ * dir: "src/content/blog",
54
+ * schema: {
55
+ * title: "string",
56
+ * order: { type: "number", required: true },
57
+ * tags: "string[]",
58
+ * },
59
+ * },
60
+ * }),
61
+ * });
62
+ * ```
63
+ */
64
+ export function defineContent(config) {
65
+ return config;
66
+ }
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { defineConfig, docs, sitemap } from "./config.js";
2
- export type { KrateConfig, PluginConfig, DevServerConfig, TailwindConfig, CSPConfig, MarkdownConfig, SSRConfig, RedirectConfig, RewriteConfig, SEOConfig, RobotsConfig, DocsPluginOptions, DocsSidebarItem, DocsSearchOptions, DocsThemeDescriptor, DocsThemeOptions, SitemapPluginOptions, RuntimeName, } from "./config.js";
1
+ export { defineConfig, docs, sitemap, defineContent } from "./config.js";
2
+ export type { KrateConfig, PluginConfig, DevServerConfig, TailwindConfig, CSPConfig, MarkdownConfig, SSRConfig, RedirectConfig, RewriteConfig, SEOConfig, RobotsConfig, DocsPluginOptions, DocsSidebarItem, DocsSearchOptions, DocsThemeDescriptor, DocsThemeOptions, SitemapPluginOptions, RuntimeName, ContentConfig, ContentCollection, ContentField, ContentFieldSpec, ContentFieldType, ChecksConfig, CheckSeverity, CheckRuleId, } from "./config.js";
3
3
  export type { DocsLayoutProps } from "./config.js";
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC1D,YAAY,EACV,WAAW,EACX,YAAY,EACZ,eAAe,EACf,cAAc,EACd,SAAS,EACT,cAAc,EACd,SAAS,EACT,cAAc,EACd,aAAa,EACb,SAAS,EACT,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,EACpB,WAAW,GACZ,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACzE,YAAY,EACV,WAAW,EACX,YAAY,EACZ,eAAe,EACf,cAAc,EACd,SAAS,EACT,cAAc,EACd,SAAS,EACT,cAAc,EACd,aAAa,EACb,SAAS,EACT,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,EACpB,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,WAAW,GACZ,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC"}
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- export { defineConfig, docs, sitemap } from "./config.js";
1
+ export { defineConfig, docs, sitemap, defineContent } from "./config.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@krate/core",
3
- "version": "0.4.0-beta.1",
3
+ "version": "0.4.0-beta.2",
4
4
  "description": "The Krate CLI — a Go-native static site generator with signal-based reactivity.",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
@@ -37,20 +37,20 @@
37
37
  "install.js"
38
38
  ],
39
39
  "dependencies": {
40
- "@krate/plugin": "0.4.0-beta.1"
40
+ "@krate/plugin": "0.4.0-beta.2"
41
41
  },
42
42
  "devDependencies": {
43
43
  "@types/node": "^20.19.43",
44
44
  "typescript": "^5.5.0"
45
45
  },
46
46
  "optionalDependencies": {
47
- "@krate/core-darwin-arm64": "0.4.0-beta.1",
48
- "@krate/core-darwin-x64": "0.4.0-beta.1",
49
- "@krate/core-linux-arm64": "0.4.0-beta.1",
50
- "@krate/core-linux-x64": "0.4.0-beta.1",
51
- "@krate/core-linux-x64-musl": "0.4.0-beta.1",
52
- "@krate/core-win32-arm64": "0.4.0-beta.1",
53
- "@krate/core-win32-x64": "0.4.0-beta.1"
47
+ "@krate/core-darwin-arm64": "0.4.0-beta.2",
48
+ "@krate/core-darwin-x64": "0.4.0-beta.2",
49
+ "@krate/core-linux-arm64": "0.4.0-beta.2",
50
+ "@krate/core-linux-x64": "0.4.0-beta.2",
51
+ "@krate/core-linux-x64-musl": "0.4.0-beta.2",
52
+ "@krate/core-win32-arm64": "0.4.0-beta.2",
53
+ "@krate/core-win32-x64": "0.4.0-beta.2"
54
54
  },
55
55
  "scripts": {
56
56
  "build": "tsc",