specra 0.2.8 → 0.2.10
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/config/category.schema.json +52 -0
- package/config/product.schema.json +70 -0
- package/config/version.schema.json +83 -0
- package/dist/category.js +1 -1
- package/dist/components/docs/CategoryIndex.svelte +2 -2
- package/dist/components/docs/MdxContent.svelte +1 -8
- package/dist/components/docs/MdxContent.svelte.d.ts +10 -0
- package/dist/components/docs/NotFoundContent.svelte +10 -2
- package/dist/components/docs/NotFoundContent.svelte.d.ts +1 -0
- package/dist/components/docs/SidebarMenuItems.svelte +3 -7
- package/dist/config.server.js +2 -2
- package/dist/dev-utils.js +1 -1
- package/dist/mdx-cache.js +1 -1
- package/dist/mdx-components.d.ts +22 -0
- package/dist/mdx.js +1 -1
- package/dist/sidebar-utils.js +3 -10
- package/dist/styles/globals.css +19 -8
- package/package.json +6 -3
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$ref": "#/definitions/CategoryConfig",
|
|
3
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
4
|
+
"definitions": {
|
|
5
|
+
"CategoryConfig": {
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"properties": {
|
|
8
|
+
"collapsed": {
|
|
9
|
+
"type": "boolean"
|
|
10
|
+
},
|
|
11
|
+
"collapsible": {
|
|
12
|
+
"type": "boolean"
|
|
13
|
+
},
|
|
14
|
+
"icon": {
|
|
15
|
+
"type": "string"
|
|
16
|
+
},
|
|
17
|
+
"label": {
|
|
18
|
+
"type": "string"
|
|
19
|
+
},
|
|
20
|
+
"link": {
|
|
21
|
+
"additionalProperties": false,
|
|
22
|
+
"properties": {
|
|
23
|
+
"slug": {
|
|
24
|
+
"type": "string"
|
|
25
|
+
},
|
|
26
|
+
"type": {
|
|
27
|
+
"enum": [
|
|
28
|
+
"generated-index",
|
|
29
|
+
"doc"
|
|
30
|
+
],
|
|
31
|
+
"type": "string"
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
"required": [
|
|
35
|
+
"type"
|
|
36
|
+
],
|
|
37
|
+
"type": "object"
|
|
38
|
+
},
|
|
39
|
+
"position": {
|
|
40
|
+
"type": "number"
|
|
41
|
+
},
|
|
42
|
+
"sidebar_position": {
|
|
43
|
+
"type": "number"
|
|
44
|
+
},
|
|
45
|
+
"tab_group": {
|
|
46
|
+
"type": "string"
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
"type": "object"
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$ref": "#/definitions/ProductConfig",
|
|
3
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
4
|
+
"definitions": {
|
|
5
|
+
"ProductConfig": {
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"description": "Per-product configuration loaded from docs/{product}/_product_.json Products sit above versions in the config hierarchy.",
|
|
8
|
+
"properties": {
|
|
9
|
+
"activeVersion": {
|
|
10
|
+
"description": "Default version for this product (overrides global site.activeVersion)",
|
|
11
|
+
"type": "string"
|
|
12
|
+
},
|
|
13
|
+
"badge": {
|
|
14
|
+
"description": "Badge text shown next to the product (e.g., \"New\", \"Beta\")",
|
|
15
|
+
"type": "string"
|
|
16
|
+
},
|
|
17
|
+
"description": {
|
|
18
|
+
"description": "Short description of the product",
|
|
19
|
+
"type": "string"
|
|
20
|
+
},
|
|
21
|
+
"icon": {
|
|
22
|
+
"description": "Icon identifier for the product dropdown (lucide icon name)",
|
|
23
|
+
"type": "string"
|
|
24
|
+
},
|
|
25
|
+
"label": {
|
|
26
|
+
"description": "Display name in the product switcher",
|
|
27
|
+
"type": "string"
|
|
28
|
+
},
|
|
29
|
+
"position": {
|
|
30
|
+
"description": "Order in the product dropdown (lower = first)",
|
|
31
|
+
"type": "number"
|
|
32
|
+
},
|
|
33
|
+
"tabGroups": {
|
|
34
|
+
"description": "Product-level tab group overrides",
|
|
35
|
+
"items": {
|
|
36
|
+
"$ref": "#/definitions/TabGroup"
|
|
37
|
+
},
|
|
38
|
+
"type": "array"
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
"required": [
|
|
42
|
+
"label"
|
|
43
|
+
],
|
|
44
|
+
"type": "object"
|
|
45
|
+
},
|
|
46
|
+
"TabGroup": {
|
|
47
|
+
"additionalProperties": false,
|
|
48
|
+
"description": "Tab group for organizing documentation",
|
|
49
|
+
"properties": {
|
|
50
|
+
"icon": {
|
|
51
|
+
"description": "Optional icon name (lucide-react icon)",
|
|
52
|
+
"type": "string"
|
|
53
|
+
},
|
|
54
|
+
"id": {
|
|
55
|
+
"description": "Unique identifier for the tab group",
|
|
56
|
+
"type": "string"
|
|
57
|
+
},
|
|
58
|
+
"label": {
|
|
59
|
+
"description": "Display label for the tab",
|
|
60
|
+
"type": "string"
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
"required": [
|
|
64
|
+
"id",
|
|
65
|
+
"label"
|
|
66
|
+
],
|
|
67
|
+
"type": "object"
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$ref": "#/definitions/VersionConfig",
|
|
3
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
4
|
+
"definitions": {
|
|
5
|
+
"BannerConfig": {
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"description": "Banner configuration for version-level or site-level banners. Site-wide banner configuration",
|
|
8
|
+
"properties": {
|
|
9
|
+
"text": {
|
|
10
|
+
"description": "Banner message text. Supports markdown links like [text](/url).",
|
|
11
|
+
"type": "string"
|
|
12
|
+
},
|
|
13
|
+
"type": {
|
|
14
|
+
"description": "Banner style: info, warning, error, success Banner type",
|
|
15
|
+
"enum": [
|
|
16
|
+
"info",
|
|
17
|
+
"warning",
|
|
18
|
+
"error",
|
|
19
|
+
"success"
|
|
20
|
+
],
|
|
21
|
+
"type": "string"
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"required": [
|
|
25
|
+
"text"
|
|
26
|
+
],
|
|
27
|
+
"type": "object"
|
|
28
|
+
},
|
|
29
|
+
"TabGroup": {
|
|
30
|
+
"additionalProperties": false,
|
|
31
|
+
"description": "Tab group for organizing documentation",
|
|
32
|
+
"properties": {
|
|
33
|
+
"icon": {
|
|
34
|
+
"description": "Optional icon name (lucide-react icon)",
|
|
35
|
+
"type": "string"
|
|
36
|
+
},
|
|
37
|
+
"id": {
|
|
38
|
+
"description": "Unique identifier for the tab group",
|
|
39
|
+
"type": "string"
|
|
40
|
+
},
|
|
41
|
+
"label": {
|
|
42
|
+
"description": "Display label for the tab",
|
|
43
|
+
"type": "string"
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
"required": [
|
|
47
|
+
"id",
|
|
48
|
+
"label"
|
|
49
|
+
],
|
|
50
|
+
"type": "object"
|
|
51
|
+
},
|
|
52
|
+
"VersionConfig": {
|
|
53
|
+
"additionalProperties": false,
|
|
54
|
+
"description": "Per-version configuration that can override global config settings. Loaded from docs/{version}/_version_.json",
|
|
55
|
+
"properties": {
|
|
56
|
+
"badge": {
|
|
57
|
+
"description": "Short badge text shown next to the version (e.g., \"Beta\", \"LTS\", \"Deprecated\").",
|
|
58
|
+
"type": "string"
|
|
59
|
+
},
|
|
60
|
+
"banner": {
|
|
61
|
+
"$ref": "#/definitions/BannerConfig",
|
|
62
|
+
"description": "Banner shown at the top of every page in this version. Overrides global banner."
|
|
63
|
+
},
|
|
64
|
+
"hidden": {
|
|
65
|
+
"description": "Hide this version from the version switcher. Useful for unreleased versions.",
|
|
66
|
+
"type": "boolean"
|
|
67
|
+
},
|
|
68
|
+
"label": {
|
|
69
|
+
"description": "Display label for this version (e.g., \"v1.0 (Stable)\"). Defaults to directory name.",
|
|
70
|
+
"type": "string"
|
|
71
|
+
},
|
|
72
|
+
"tabGroups": {
|
|
73
|
+
"description": "Override tab groups for this version. Empty array = no tabs.",
|
|
74
|
+
"items": {
|
|
75
|
+
"$ref": "#/definitions/TabGroup"
|
|
76
|
+
},
|
|
77
|
+
"type": "array"
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
"type": "object"
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
package/dist/category.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Note: This file uses server-only APIs (fs, path) and should only be imported in Server Components
|
|
2
2
|
import fs from "fs";
|
|
3
3
|
import path from "path";
|
|
4
|
-
const DOCS_DIR = path.join(process.cwd(), "docs");
|
|
4
|
+
const DOCS_DIR = typeof process !== 'undefined' ? path.join(process.cwd(), "docs") : "docs";
|
|
5
5
|
/**
|
|
6
6
|
* Read category.json from a folder
|
|
7
7
|
*/
|
|
@@ -42,8 +42,8 @@
|
|
|
42
42
|
// Match direct children of this category path
|
|
43
43
|
if (!docPath.startsWith(categoryPath + '/')) return false;
|
|
44
44
|
const remaining = docPath.slice(categoryPath.length + 1);
|
|
45
|
-
// Only direct children (no further slashes
|
|
46
|
-
return !remaining.includes('/')
|
|
45
|
+
// Only direct children (no further slashes)
|
|
46
|
+
return !remaining.includes('/');
|
|
47
47
|
})
|
|
48
48
|
.sort((a, b) => {
|
|
49
49
|
const posA = a.meta?.sidebar_position ?? 999;
|
|
@@ -1,14 +1,7 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
import MdxContent from './MdxContent.svelte';
|
|
3
3
|
import type { Component } from 'svelte';
|
|
4
|
-
|
|
5
|
-
interface MdxNode {
|
|
6
|
-
type: 'html' | 'component';
|
|
7
|
-
content?: string;
|
|
8
|
-
name?: string;
|
|
9
|
-
props?: Record<string, any>;
|
|
10
|
-
children?: MdxNode[];
|
|
11
|
-
}
|
|
4
|
+
import type { MdxNode } from '../../mdx.js';
|
|
12
5
|
|
|
13
6
|
interface Props {
|
|
14
7
|
nodes: MdxNode[];
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import MdxContent from './MdxContent.svelte';
|
|
2
|
+
import type { Component } from 'svelte';
|
|
3
|
+
import type { MdxNode } from '../../mdx.js';
|
|
4
|
+
interface Props {
|
|
5
|
+
nodes: MdxNode[];
|
|
6
|
+
components: Record<string, Component>;
|
|
7
|
+
}
|
|
8
|
+
declare const MdxContent: Component<Props, {}, "">;
|
|
9
|
+
type MdxContent = ReturnType<typeof MdxContent>;
|
|
10
|
+
export default MdxContent;
|
|
@@ -3,11 +3,19 @@
|
|
|
3
3
|
|
|
4
4
|
interface Props {
|
|
5
5
|
version?: string;
|
|
6
|
+
product?: string;
|
|
6
7
|
}
|
|
7
8
|
|
|
8
|
-
let { version = '' }: Props = $props();
|
|
9
|
+
let { version = '', product = '' }: Props = $props();
|
|
9
10
|
|
|
10
|
-
|
|
11
|
+
/** URL prefix: /docs/{product}/{version} for named products, /docs/{version} for default */
|
|
12
|
+
const homeLink = $derived(
|
|
13
|
+
product && product !== '_default_' && version
|
|
14
|
+
? `/docs/${product}/${version}`
|
|
15
|
+
: version
|
|
16
|
+
? `/docs/${version}`
|
|
17
|
+
: '/'
|
|
18
|
+
);
|
|
11
19
|
</script>
|
|
12
20
|
|
|
13
21
|
<div class="flex flex-col items-center justify-center min-h-[60vh] text-center px-4">
|
|
@@ -134,9 +134,8 @@
|
|
|
134
134
|
if (isIndexFile) {
|
|
135
135
|
rootGroups[groupName].position = doc.sidebar_position ?? 999;
|
|
136
136
|
rootGroups[groupName].icon = doc.categoryIcon;
|
|
137
|
-
} else {
|
|
138
|
-
rootGroups[groupName].items.push(doc);
|
|
139
137
|
}
|
|
138
|
+
rootGroups[groupName].items.push(doc);
|
|
140
139
|
return;
|
|
141
140
|
}
|
|
142
141
|
|
|
@@ -179,17 +178,14 @@
|
|
|
179
178
|
if (doc.categoryIcon) {
|
|
180
179
|
currentLevel[folder].icon = doc.categoryIcon;
|
|
181
180
|
}
|
|
182
|
-
} else {
|
|
183
|
-
currentLevel[folder].items.push(doc);
|
|
184
181
|
}
|
|
182
|
+
currentLevel[folder].items.push(doc);
|
|
185
183
|
}
|
|
186
184
|
|
|
187
185
|
currentLevel = currentLevel[folder].children;
|
|
188
186
|
}
|
|
189
187
|
} else {
|
|
190
|
-
|
|
191
|
-
standalone.push(doc);
|
|
192
|
-
}
|
|
188
|
+
standalone.push(doc);
|
|
193
189
|
}
|
|
194
190
|
});
|
|
195
191
|
|
package/dist/config.server.js
CHANGED
|
@@ -150,7 +150,7 @@ export function reloadConfig(userConfig) {
|
|
|
150
150
|
* Returns null if the file doesn't exist or is invalid.
|
|
151
151
|
*/
|
|
152
152
|
const versionConfigCache = new Map();
|
|
153
|
-
const VCFG_TTL = process.env
|
|
153
|
+
const VCFG_TTL = (typeof process !== 'undefined' && process.env?.NODE_ENV === 'development') ? 5000 : 60000;
|
|
154
154
|
export function loadVersionConfig(version, product) {
|
|
155
155
|
const cacheKey = product && product !== "_default_" ? `${product}:${version}` : version;
|
|
156
156
|
const cached = versionConfigCache.get(cacheKey);
|
|
@@ -240,7 +240,7 @@ const productsCache = {
|
|
|
240
240
|
data: null,
|
|
241
241
|
timestamp: 0,
|
|
242
242
|
};
|
|
243
|
-
const PCFG_TTL = process.env
|
|
243
|
+
const PCFG_TTL = (typeof process !== 'undefined' && process.env?.NODE_ENV === 'development') ? 5000 : 60000;
|
|
244
244
|
/** Cache for individual product configs */
|
|
245
245
|
const productConfigCache = new Map();
|
|
246
246
|
/**
|
package/dist/dev-utils.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Development utilities for debugging and performance monitoring
|
|
3
3
|
* Only active in development mode
|
|
4
4
|
*/
|
|
5
|
-
const isDevelopment = process.env
|
|
5
|
+
const isDevelopment = typeof process !== 'undefined' && process.env?.NODE_ENV === 'development';
|
|
6
6
|
/**
|
|
7
7
|
* Performance timer for measuring operation duration
|
|
8
8
|
*/
|
package/dist/mdx-cache.js
CHANGED
|
@@ -10,7 +10,7 @@ import { clearProductCaches } from './config.server';
|
|
|
10
10
|
import { watch } from 'fs';
|
|
11
11
|
import { join } from 'path';
|
|
12
12
|
import { PerfTimer, logCacheOperation } from './dev-utils';
|
|
13
|
-
const isDevelopment = process.env
|
|
13
|
+
const isDevelopment = typeof process !== 'undefined' && process.env?.NODE_ENV === 'development';
|
|
14
14
|
// Cache stores
|
|
15
15
|
const versionsCache = {
|
|
16
16
|
data: null,
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MDX/mdsvex component map for Specra documentation.
|
|
3
|
+
*
|
|
4
|
+
* In mdsvex, custom components are imported directly in .svx files.
|
|
5
|
+
* This file exports the component map for programmatic use.
|
|
6
|
+
*
|
|
7
|
+
* Usage in .svx files:
|
|
8
|
+
* ```svelte
|
|
9
|
+
* <script>
|
|
10
|
+
* import { Callout, CodeBlock, Tabs, Tab } from 'specra/components'
|
|
11
|
+
* </script>
|
|
12
|
+
*
|
|
13
|
+
* <Callout type="info">This is a callout</Callout>
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
import type { Component } from 'svelte';
|
|
17
|
+
import { Callout, Accordion, AccordionItem, Tabs, Tab, Image, Video, Card, CardGrid, ImageCard, ImageCardGrid, Steps, Step, Icon, Mermaid, Math, Columns, Column, DocBadge, Tooltip, Frame, CodeBlock, Timeline, TimelineItem, ApiEndpoint, ApiParams, ApiResponse, ApiPlayground, ApiReference } from './components/docs';
|
|
18
|
+
export { Callout, Accordion, AccordionItem, Tabs, Tab, Image, Video, Card, CardGrid, ImageCard, ImageCardGrid, Steps, Step, Icon, Mermaid, Math, Columns, Column, DocBadge, Tooltip, Frame, CodeBlock, Timeline, TimelineItem, ApiEndpoint, ApiParams, ApiResponse, ApiPlayground, ApiReference, };
|
|
19
|
+
/**
|
|
20
|
+
* Component map for passing to layout components that render MDX content.
|
|
21
|
+
*/
|
|
22
|
+
export declare const mdxComponents: Record<string, Component>;
|
package/dist/mdx.js
CHANGED
|
@@ -15,7 +15,7 @@ import { getAllCategoryConfigs } from "./category";
|
|
|
15
15
|
import { sortSidebarItems, sortSidebarGroups, buildSidebarStructure } from "./sidebar-utils";
|
|
16
16
|
import { sanitizePath, validatePathWithinDirectory, validateMDXSecurity } from "./mdx-security";
|
|
17
17
|
import { getConfig } from "./config";
|
|
18
|
-
const DOCS_DIR = path.join(process.cwd(), "docs");
|
|
18
|
+
const DOCS_DIR = typeof process !== 'undefined' ? path.join(process.cwd(), "docs") : "docs";
|
|
19
19
|
/**
|
|
20
20
|
* Resolve the docs directory for a given version and optional product.
|
|
21
21
|
* - Default product or omitted: docs/{version}/
|
package/dist/sidebar-utils.js
CHANGED
|
@@ -79,13 +79,10 @@ export function buildSidebarStructure(docs) {
|
|
|
79
79
|
};
|
|
80
80
|
}
|
|
81
81
|
if (isIndexFile) {
|
|
82
|
-
// Use categoryPosition if available (from _category_.json), otherwise sidebar_position from frontmatter
|
|
83
82
|
rootGroups[groupName].position = doc.categoryPosition ?? doc.meta.sidebar_position ?? 999;
|
|
84
83
|
rootGroups[groupName].icon = doc.categoryIcon;
|
|
85
84
|
}
|
|
86
|
-
|
|
87
|
-
rootGroups[groupName].items.push(doc);
|
|
88
|
-
}
|
|
85
|
+
rootGroups[groupName].items.push(doc);
|
|
89
86
|
return;
|
|
90
87
|
}
|
|
91
88
|
if (pathParts.length > 1) {
|
|
@@ -127,17 +124,13 @@ export function buildSidebarStructure(docs) {
|
|
|
127
124
|
currentLevel[folder].defaultCollapsed = doc.categoryCollapsed;
|
|
128
125
|
}
|
|
129
126
|
}
|
|
130
|
-
|
|
131
|
-
currentLevel[folder].items.push(doc);
|
|
132
|
-
}
|
|
127
|
+
currentLevel[folder].items.push(doc);
|
|
133
128
|
}
|
|
134
129
|
currentLevel = currentLevel[folder].children;
|
|
135
130
|
}
|
|
136
131
|
}
|
|
137
132
|
else {
|
|
138
|
-
|
|
139
|
-
standalone.push(doc);
|
|
140
|
-
}
|
|
133
|
+
standalone.push(doc);
|
|
141
134
|
}
|
|
142
135
|
});
|
|
143
136
|
return { rootGroups, standalone };
|
package/dist/styles/globals.css
CHANGED
|
@@ -159,28 +159,39 @@
|
|
|
159
159
|
text-decoration: none;
|
|
160
160
|
}
|
|
161
161
|
|
|
162
|
-
/*
|
|
162
|
+
/* Prose text links - underlined for readability */
|
|
163
163
|
main .prose a {
|
|
164
164
|
color: var(--color-primary);
|
|
165
|
-
text-decoration:
|
|
166
|
-
|
|
165
|
+
text-decoration: underline;
|
|
166
|
+
text-underline-offset: 3px;
|
|
167
|
+
text-decoration-thickness: 1px;
|
|
168
|
+
text-decoration-color: color-mix(in srgb, var(--color-primary) 40%, transparent);
|
|
169
|
+
transition: text-decoration-color 0.2s ease;
|
|
167
170
|
}
|
|
168
171
|
|
|
169
172
|
main .prose a:hover {
|
|
170
|
-
text-decoration:
|
|
171
|
-
color: var(--color-primary);
|
|
173
|
+
text-decoration-color: var(--color-primary);
|
|
172
174
|
}
|
|
173
175
|
|
|
174
|
-
/* Prose links in documentation */
|
|
175
176
|
.prose a {
|
|
176
177
|
color: var(--color-primary);
|
|
177
|
-
text-decoration:
|
|
178
|
+
text-decoration: underline;
|
|
179
|
+
text-underline-offset: 3px;
|
|
180
|
+
text-decoration-thickness: 1px;
|
|
181
|
+
text-decoration-color: color-mix(in srgb, var(--color-primary) 40%, transparent);
|
|
178
182
|
font-weight: 500;
|
|
179
183
|
}
|
|
180
184
|
|
|
181
185
|
.prose a:hover {
|
|
186
|
+
text-decoration-color: var(--color-primary);
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
/* Navigation/UI links inside prose - no underline */
|
|
190
|
+
.prose .not-prose a,
|
|
191
|
+
.prose nav a,
|
|
192
|
+
.prose [data-doc-nav] a,
|
|
193
|
+
.prose .doc-navigation a {
|
|
182
194
|
text-decoration: none !important;
|
|
183
|
-
color: var(--color-primary);
|
|
184
195
|
}
|
|
185
196
|
|
|
186
197
|
/* Sidebar links - no underline on hover */
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "specra",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.10",
|
|
4
4
|
"description": "A modern documentation library for SvelteKit with built-in versioning, API reference generation, full-text search, and MDX support",
|
|
5
5
|
"svelte": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -34,7 +34,10 @@
|
|
|
34
34
|
},
|
|
35
35
|
"./styles": "./dist/styles/globals.css",
|
|
36
36
|
"./styles.css": "./dist/styles/globals.css",
|
|
37
|
-
"./config.schema.json": "./config/specra.config.schema.json"
|
|
37
|
+
"./config.schema.json": "./config/specra.config.schema.json",
|
|
38
|
+
"./version.schema.json": "./config/version.schema.json",
|
|
39
|
+
"./product.schema.json": "./config/product.schema.json",
|
|
40
|
+
"./category.schema.json": "./config/category.schema.json"
|
|
38
41
|
},
|
|
39
42
|
"files": [
|
|
40
43
|
"dist",
|
|
@@ -45,7 +48,7 @@
|
|
|
45
48
|
"dev": "svelte-package --watch",
|
|
46
49
|
"check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
|
|
47
50
|
"typecheck": "svelte-check --tsconfig ./tsconfig.json",
|
|
48
|
-
"generate:schema": "ts-json-schema-generator --path src/lib/config.types.ts --type SpecraConfig --out config/specra.config.schema.json"
|
|
51
|
+
"generate:schema": "ts-json-schema-generator --path src/lib/config.types.ts --type SpecraConfig --out config/specra.config.schema.json && ts-json-schema-generator --path src/lib/config.types.ts --type VersionConfig --out config/version.schema.json && ts-json-schema-generator --path src/lib/config.types.ts --type ProductConfig --out config/product.schema.json && ts-json-schema-generator --path src/lib/category.ts --type CategoryConfig --out config/category.schema.json"
|
|
49
52
|
},
|
|
50
53
|
"keywords": [
|
|
51
54
|
"documentation",
|