@vezham/start 0.3.3 → 26.0.0-alpha.6
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/LICENSE +173 -0
- package/README.md +2 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +0 -0
- package/dist/lib/layouts/app/index.d.ts +15 -0
- package/dist/lib/layouts/app/index.d.ts.map +1 -0
- package/dist/lib/layouts/app/index.js +44 -0
- package/dist/lib/layouts/docs/components.d.ts +4 -0
- package/dist/lib/layouts/docs/components.d.ts.map +1 -0
- package/dist/lib/layouts/docs/components.js +29 -0
- package/dist/lib/layouts/docs/index.d.ts +3 -0
- package/dist/lib/layouts/docs/index.d.ts.map +1 -0
- package/dist/lib/layouts/docs/index.js +2 -0
- package/dist/lib/layouts/docs/layout-components.d.ts +9 -0
- package/dist/lib/layouts/docs/layout-components.d.ts.map +1 -0
- package/dist/lib/layouts/docs/layout-components.js +81 -0
- package/dist/lib/layouts/docs/layouts.d.ts +6 -0
- package/dist/lib/layouts/docs/layouts.d.ts.map +1 -0
- package/dist/lib/layouts/docs/layouts.js +11 -0
- package/dist/lib/layouts/docs/page-actions.d.ts +4 -0
- package/dist/lib/layouts/docs/page-actions.d.ts.map +1 -0
- package/dist/lib/layouts/docs/page-actions.js +154 -0
- package/dist/lib/layouts/docs/page-actions.variants.d.ts +44 -0
- package/dist/lib/layouts/docs/page-actions.variants.d.ts.map +1 -0
- package/dist/lib/layouts/docs/page-actions.variants.js +17 -0
- package/dist/lib/layouts/docs/page-content.d.ts +11 -0
- package/dist/lib/layouts/docs/page-content.d.ts.map +1 -0
- package/dist/lib/layouts/docs/page-content.js +13 -0
- package/dist/lib/layouts/docs/pages.d.ts +57 -0
- package/dist/lib/layouts/docs/pages.d.ts.map +1 -0
- package/dist/lib/layouts/docs/pages.js +36 -0
- package/dist/lib/layouts/docs/types.d.ts +21 -0
- package/dist/lib/layouts/docs/types.d.ts.map +1 -0
- package/dist/lib/mdx/index.d.ts +26 -0
- package/dist/lib/mdx/index.d.ts.map +1 -0
- package/dist/lib/mdx/index.js +10 -0
- package/dist/lib/pages/docs/openapi/index.d.ts +2 -0
- package/dist/lib/pages/docs/openapi/index.d.ts.map +1 -0
- package/dist/lib/pages/docs/openapi/index.js +5 -0
- package/dist/lib/pages/docs/route/index.d.ts +35 -0
- package/dist/lib/pages/docs/route/index.d.ts.map +1 -0
- package/dist/lib/pages/docs/route/index.js +59 -0
- package/dist/lib/provider/next/config.d.ts +3 -0
- package/dist/lib/provider/next/config.d.ts.map +1 -0
- package/dist/lib/provider/next/config.js +6 -0
- package/dist/lib/provider/next/index.d.ts +3 -0
- package/dist/lib/provider/next/index.d.ts.map +1 -0
- package/dist/lib/provider/next/index.js +3 -0
- package/dist/lib/provider/next/provider.d.ts +3 -0
- package/dist/lib/provider/next/provider.d.ts.map +1 -0
- package/dist/lib/provider/next/provider.js +24 -0
- package/dist/lib/provider/next/root-document.d.ts +3 -0
- package/dist/lib/provider/next/root-document.d.ts.map +1 -0
- package/dist/lib/provider/next/root-document.js +27 -0
- package/dist/lib/provider/shared/config.d.ts +4 -0
- package/dist/lib/provider/shared/config.d.ts.map +1 -0
- package/dist/lib/provider/shared/config.js +10 -0
- package/dist/lib/provider/shared/devtools.d.ts +10 -0
- package/dist/lib/provider/shared/devtools.d.ts.map +1 -0
- package/dist/lib/provider/shared/devtools.js +24 -0
- package/dist/lib/provider/shared/provider.d.ts +13 -0
- package/dist/lib/provider/shared/provider.d.ts.map +1 -0
- package/dist/lib/provider/shared/provider.js +40 -0
- package/{lib/provider/src → dist/lib/provider/shared}/types.d.ts +16 -19
- package/dist/lib/provider/shared/types.d.ts.map +1 -0
- package/dist/lib/provider/shared/types.js +4 -0
- package/dist/lib/provider/tanstack/config.d.ts +4 -0
- package/dist/lib/provider/tanstack/config.d.ts.map +1 -0
- package/dist/lib/provider/tanstack/config.js +11 -0
- package/dist/lib/provider/tanstack/index.d.ts +4 -0
- package/dist/lib/provider/tanstack/index.d.ts.map +1 -0
- package/dist/lib/provider/tanstack/index.js +4 -0
- package/dist/lib/provider/tanstack/provider.d.ts +3 -0
- package/dist/lib/provider/tanstack/provider.d.ts.map +1 -0
- package/dist/lib/provider/tanstack/provider.js +22 -0
- package/dist/lib/provider/tanstack/root-document.d.ts +8 -0
- package/dist/lib/provider/tanstack/root-document.d.ts.map +1 -0
- package/dist/lib/provider/tanstack/root-document.js +28 -0
- package/dist/lib/provider/tanstack-docs/config.d.ts +14 -0
- package/dist/lib/provider/tanstack-docs/config.d.ts.map +1 -0
- package/dist/lib/provider/tanstack-docs/config.js +39 -0
- package/dist/lib/provider/tanstack-docs/i18n.d.ts +4 -0
- package/dist/lib/provider/tanstack-docs/i18n.d.ts.map +1 -0
- package/dist/lib/provider/tanstack-docs/i18n.js +30 -0
- package/dist/lib/provider/tanstack-docs/index.d.ts +5 -0
- package/dist/lib/provider/tanstack-docs/index.d.ts.map +1 -0
- package/dist/lib/provider/tanstack-docs/index.js +5 -0
- package/dist/lib/provider/tanstack-docs/routes.d.ts +13 -0
- package/dist/lib/provider/tanstack-docs/routes.d.ts.map +1 -0
- package/dist/lib/provider/tanstack-docs/routes.js +23 -0
- package/dist/lib/provider/tanstack-docs/search.d.ts +4 -0
- package/dist/lib/provider/tanstack-docs/search.d.ts.map +1 -0
- package/dist/lib/provider/tanstack-docs/search.js +24 -0
- package/dist/lib/provider/vite/config.d.ts +3 -0
- package/dist/lib/provider/vite/config.d.ts.map +1 -0
- package/dist/lib/provider/vite/config.js +29 -0
- package/dist/lib/provider/vite/index.d.ts +4 -0
- package/dist/lib/provider/vite/index.d.ts.map +1 -0
- package/dist/lib/provider/vite/index.js +4 -0
- package/dist/lib/provider/vite/provider.d.ts +3 -0
- package/dist/lib/provider/vite/provider.d.ts.map +1 -0
- package/dist/lib/provider/vite/provider.js +13 -0
- package/dist/lib/router/tanstack/index.d.ts +3 -0
- package/dist/lib/router/tanstack/index.d.ts.map +1 -0
- package/dist/lib/router/tanstack/index.js +3 -0
- package/dist/lib/router/tanstack/root.d.ts +3 -0
- package/dist/lib/router/tanstack/root.d.ts.map +1 -0
- package/dist/lib/router/tanstack/root.js +22 -0
- package/dist/lib/router/tanstack/router.d.ts +3 -0
- package/dist/lib/router/tanstack/router.d.ts.map +1 -0
- package/dist/lib/router/tanstack/router.js +22 -0
- package/dist/lib/runtime/docs/head.d.ts +46 -0
- package/dist/lib/runtime/docs/head.d.ts.map +1 -0
- package/dist/lib/runtime/docs/head.js +80 -0
- package/dist/lib/runtime/docs/i18n.d.ts +33 -0
- package/dist/lib/runtime/docs/i18n.d.ts.map +1 -0
- package/dist/lib/runtime/docs/i18n.js +41 -0
- package/dist/lib/runtime/docs/icons.d.ts +26 -0
- package/dist/lib/runtime/docs/icons.d.ts.map +1 -0
- package/dist/lib/runtime/docs/icons.js +103 -0
- package/dist/lib/runtime/docs/index.d.ts +9 -0
- package/dist/lib/runtime/docs/index.d.ts.map +1 -0
- package/dist/lib/runtime/docs/index.js +9 -0
- package/dist/lib/runtime/docs/openapi.d.ts +41 -0
- package/dist/lib/runtime/docs/openapi.d.ts.map +1 -0
- package/dist/lib/runtime/docs/openapi.js +40 -0
- package/dist/lib/runtime/docs/pages.d.ts +98 -0
- package/dist/lib/runtime/docs/pages.d.ts.map +1 -0
- package/dist/lib/runtime/docs/pages.js +89 -0
- package/dist/lib/runtime/docs/routes.d.ts +17 -0
- package/dist/lib/runtime/docs/routes.d.ts.map +1 -0
- package/dist/lib/runtime/docs/routes.js +45 -0
- package/dist/lib/runtime/docs/runtime.d.ts +185 -0
- package/dist/lib/runtime/docs/runtime.d.ts.map +1 -0
- package/dist/lib/runtime/docs/runtime.js +55 -0
- package/dist/lib/runtime/docs/static.d.ts +16 -0
- package/dist/lib/runtime/docs/static.d.ts.map +1 -0
- package/dist/lib/runtime/docs/static.js +20 -0
- package/dist/lib/story/index.d.ts +2 -0
- package/dist/lib/story/index.d.ts.map +1 -0
- package/dist/lib/story/index.js +5 -0
- package/dist/styles/docs/index.css +2 -0
- package/package.json +91 -20
- package/C2Q2AJ2U-DTgcxQMB.mjs +0 -33
- package/CTUG6TWM-DqDj0HqV.mjs +0 -42
- package/PPK4CBG4-Bam-TzhH.mjs +0 -8999
- package/index-B5yPbrKI.mjs +0 -2259
- package/index-BVFA6t6h.mjs +0 -2213
- package/index-CbtQygO9.mjs +0 -55716
- package/index.d.ts +0 -1
- package/index.mjs +0 -5
- package/lib/provider/src/index.d.ts +0 -6
- package/style.css +0 -1
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { defineI18n } from "@vezham/docs-core/i18n";
|
|
2
|
+
//#region src/lib/runtime/docs/i18n.ts
|
|
3
|
+
var createDocsI18n = (config) => {
|
|
4
|
+
const { hideLocale = "default-locale", languages, ...i18nConfig } = config;
|
|
5
|
+
return defineI18n({
|
|
6
|
+
...i18nConfig,
|
|
7
|
+
hideLocale,
|
|
8
|
+
languages: [...languages]
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var normalizeLocale = (i18n, lang) => {
|
|
12
|
+
return i18n.languages.includes(lang) ? lang : i18n.defaultLanguage;
|
|
13
|
+
};
|
|
14
|
+
var isOptionalLocaleParam = (i18n, lang) => {
|
|
15
|
+
return !lang || i18n.languages.includes(lang);
|
|
16
|
+
};
|
|
17
|
+
var isDefaultLocaleParam = (i18n, lang) => {
|
|
18
|
+
return lang === i18n.defaultLanguage;
|
|
19
|
+
};
|
|
20
|
+
var escapeRegExp = (value) => {
|
|
21
|
+
return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
22
|
+
};
|
|
23
|
+
var getDefaultLocaleRedirectHref = (i18n, href) => {
|
|
24
|
+
const defaultLocalePattern = escapeRegExp(i18n.defaultLanguage);
|
|
25
|
+
const defaultLocalePrefix = new RegExp(`^/${defaultLocalePattern}(?=/|\\?|#|$)`);
|
|
26
|
+
if (!defaultLocalePrefix.test(href)) return;
|
|
27
|
+
return href.replace(defaultLocalePrefix, "") || "/";
|
|
28
|
+
};
|
|
29
|
+
var localizedUrl = (i18n, locale, path) => {
|
|
30
|
+
const normalizedPath = path.startsWith("/") ? path : `/${path}`;
|
|
31
|
+
return locale === i18n.defaultLanguage ? normalizedPath : `/${locale}${normalizedPath}`;
|
|
32
|
+
};
|
|
33
|
+
var localizedRouteParam = (i18n, locale) => {
|
|
34
|
+
return locale && locale !== i18n.defaultLanguage ? locale : void 0;
|
|
35
|
+
};
|
|
36
|
+
var localizeRouteBase = ({ defaultLanguage, lang, languages, routeBase }) => {
|
|
37
|
+
const locale = languages.find((language) => language === lang);
|
|
38
|
+
return locale && locale !== defaultLanguage ? `/${locale}${routeBase}` : routeBase;
|
|
39
|
+
};
|
|
40
|
+
//#endregion
|
|
41
|
+
export { createDocsI18n, getDefaultLocaleRedirectHref, isDefaultLocaleParam, isOptionalLocaleParam, localizeRouteBase, localizedRouteParam, localizedUrl, normalizeLocale };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { CSSProperties, ReactNode } from 'react';
|
|
2
|
+
import { LoaderPlugin } from '@vezham/docs-core/source';
|
|
3
|
+
import { metaSchema, pageSchema } from '@vezham/docs-core/source/schema';
|
|
4
|
+
export declare const defaultDocsIconAssetBaseUrl = "https://cdn.jsdelivr.net/npm/@vezham/icons@1.0.7/dist/cdn/icons";
|
|
5
|
+
export type DocsIconName = string;
|
|
6
|
+
export type DocsIconWeight = 'outline' | 'filled' | 'duotone';
|
|
7
|
+
export type DocsIconAlt = string | ((iconName: DocsIconName) => string);
|
|
8
|
+
export type DocsIconFrontmatter = {
|
|
9
|
+
iconAlt?: string;
|
|
10
|
+
iconColor?: CSSProperties['color'];
|
|
11
|
+
iconWeight?: DocsIconWeight;
|
|
12
|
+
};
|
|
13
|
+
export type DocsIconResolverOptions = {
|
|
14
|
+
alt?: DocsIconAlt;
|
|
15
|
+
assetBaseUrl?: string;
|
|
16
|
+
color?: CSSProperties['color'];
|
|
17
|
+
defaultIcon?: DocsIconName;
|
|
18
|
+
size?: number | string;
|
|
19
|
+
weight?: DocsIconWeight;
|
|
20
|
+
};
|
|
21
|
+
export declare const docsPageSchema: typeof pageSchema;
|
|
22
|
+
export declare const docsMetaSchema: typeof metaSchema;
|
|
23
|
+
export declare const toDocsIconName: (value: string) => string;
|
|
24
|
+
export declare const createDocsIconResolver: ({ alt, assetBaseUrl, color, defaultIcon, size, weight }?: DocsIconResolverOptions) => (icon?: string) => ReactNode;
|
|
25
|
+
export declare const docsIconsPlugin: (options?: DocsIconResolverOptions) => LoaderPlugin;
|
|
26
|
+
//# sourceMappingURL=icons.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../../../../src/lib/runtime/docs/icons.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,SAAS,EAAiB,MAAM,OAAO,CAAA;AAEzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAA;AAExE,eAAO,MAAM,2BAA2B,oEAC2B,CAAA;AAEnE,MAAM,MAAM,YAAY,GAAG,MAAM,CAAA;AAEjC,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAA;AAE7D,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,CAAC,QAAQ,EAAE,YAAY,KAAK,MAAM,CAAC,CAAA;AAEvE,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAA;IAClC,UAAU,CAAC,EAAE,cAAc,CAAA;CAC5B,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG;IACpC,GAAG,CAAC,EAAE,WAAW,CAAA;IACjB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,KAAK,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAA;IAC9B,WAAW,CAAC,EAAE,YAAY,CAAA;IAC1B,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACtB,MAAM,CAAC,EAAE,cAAc,CAAA;CACxB,CAAA;AAED,eAAO,MAAM,cAAc,EAIV,OAAO,UAAU,CAAA;AAElC,eAAO,MAAM,cAAc,EAIV,OAAO,UAAU,CAAA;AAUlC,eAAO,MAAM,cAAc,GAAI,OAAO,MAAM,WAE3C,CAAA;AAuBD,eAAO,MAAM,sBAAsB,GAAI,0DAOpC,uBAA4B,MACrB,OAAO,MAAM,KAAG,SAoCzB,CAAA;AAgDD,eAAO,MAAM,eAAe,GAC1B,UAAS,uBAA4B,KACpC,YAuBD,CAAA"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { createElement } from "react";
|
|
2
|
+
import { metaSchema, pageSchema } from "@vezham/docs-core/source/schema";
|
|
3
|
+
//#region src/lib/runtime/docs/icons.ts
|
|
4
|
+
var defaultDocsIconAssetBaseUrl = "https://cdn.jsdelivr.net/npm/@vezham/icons@1.0.7/dist/cdn/icons";
|
|
5
|
+
var docsPageSchema = pageSchema.extend({
|
|
6
|
+
iconAlt: pageSchema.shape.description,
|
|
7
|
+
iconColor: pageSchema.shape.description,
|
|
8
|
+
iconWeight: pageSchema.shape.description
|
|
9
|
+
});
|
|
10
|
+
var docsMetaSchema = metaSchema.extend({
|
|
11
|
+
iconAlt: metaSchema.shape.description,
|
|
12
|
+
iconColor: metaSchema.shape.description,
|
|
13
|
+
iconWeight: metaSchema.shape.description
|
|
14
|
+
});
|
|
15
|
+
var toKebabIconName = (value) => {
|
|
16
|
+
return value.replace(/_/g, "-").replace(/([a-z0-9])([A-Z])/g, "$1-$2").replace(/([A-Z]+)([A-Z][a-z])/g, "$1-$2").toLowerCase();
|
|
17
|
+
};
|
|
18
|
+
var toDocsIconName = (value) => {
|
|
19
|
+
return toKebabIconName(value);
|
|
20
|
+
};
|
|
21
|
+
var isDocsIconWeight = (value) => {
|
|
22
|
+
return value === "outline" || value === "filled" || value === "duotone";
|
|
23
|
+
};
|
|
24
|
+
var getDocsIconAlt = (alt, iconName) => {
|
|
25
|
+
return typeof alt === "function" ? alt(iconName) : alt;
|
|
26
|
+
};
|
|
27
|
+
var getDocsIconAssetUrl = (iconName, weight, assetBaseUrl) => {
|
|
28
|
+
const suffix = weight === "filled" || weight === "duotone" ? `-${weight}` : "";
|
|
29
|
+
return `${assetBaseUrl.replace(/\/$/, "")}/${iconName}${suffix}.svg`;
|
|
30
|
+
};
|
|
31
|
+
var createDocsIconResolver = ({ alt, assetBaseUrl = defaultDocsIconAssetBaseUrl, color, defaultIcon, size = 16, weight } = {}) => {
|
|
32
|
+
return (icon) => {
|
|
33
|
+
const iconName = icon ?? defaultIcon;
|
|
34
|
+
if (iconName === void 0) return;
|
|
35
|
+
const normalizedIconName = toDocsIconName(iconName);
|
|
36
|
+
const iconSize = typeof size === "number" ? `${size}px` : size;
|
|
37
|
+
const iconUrl = getDocsIconAssetUrl(normalizedIconName, weight, assetBaseUrl);
|
|
38
|
+
const altText = getDocsIconAlt(alt, normalizedIconName);
|
|
39
|
+
const style = {
|
|
40
|
+
WebkitMask: `url("${iconUrl}") center / contain no-repeat`,
|
|
41
|
+
backgroundColor: "currentColor",
|
|
42
|
+
color,
|
|
43
|
+
display: "inline-block",
|
|
44
|
+
flexShrink: 0,
|
|
45
|
+
height: iconSize,
|
|
46
|
+
mask: `url("${iconUrl}") center / contain no-repeat`,
|
|
47
|
+
verticalAlign: "middle",
|
|
48
|
+
width: iconSize
|
|
49
|
+
};
|
|
50
|
+
return createElement("span", {
|
|
51
|
+
...altText ? {
|
|
52
|
+
"aria-label": altText,
|
|
53
|
+
role: "img"
|
|
54
|
+
} : { "aria-hidden": true },
|
|
55
|
+
"data-vx-icon": normalizedIconName,
|
|
56
|
+
"data-vx-icon-weight": weight,
|
|
57
|
+
style
|
|
58
|
+
});
|
|
59
|
+
};
|
|
60
|
+
};
|
|
61
|
+
var getString = (value) => {
|
|
62
|
+
return typeof value === "string" ? value : void 0;
|
|
63
|
+
};
|
|
64
|
+
var getDocsIconFrontmatter = (data) => {
|
|
65
|
+
if (!data || typeof data !== "object") return {};
|
|
66
|
+
const frontmatter = data;
|
|
67
|
+
const iconWeight = frontmatter.iconWeight;
|
|
68
|
+
return {
|
|
69
|
+
iconAlt: getString(frontmatter.iconAlt),
|
|
70
|
+
iconColor: getString(frontmatter.iconColor),
|
|
71
|
+
iconWeight: isDocsIconWeight(iconWeight) ? iconWeight : void 0
|
|
72
|
+
};
|
|
73
|
+
};
|
|
74
|
+
var createFrontmatterDocsIconResolver = (frontmatter, options) => {
|
|
75
|
+
return createDocsIconResolver({
|
|
76
|
+
...options,
|
|
77
|
+
alt: frontmatter.iconAlt ?? options.alt,
|
|
78
|
+
color: frontmatter.iconColor ?? options.color,
|
|
79
|
+
weight: frontmatter.iconWeight ?? options.weight
|
|
80
|
+
});
|
|
81
|
+
};
|
|
82
|
+
var resolveDocsNodeIcon = (node, options, frontmatter = {}) => {
|
|
83
|
+
if (node.icon === void 0 || typeof node.icon === "string") node.icon = createFrontmatterDocsIconResolver(frontmatter, options)(node.icon);
|
|
84
|
+
return node;
|
|
85
|
+
};
|
|
86
|
+
var docsIconsPlugin = (options = {}) => ({
|
|
87
|
+
name: "vezham:docs-icons",
|
|
88
|
+
transformPageTree: {
|
|
89
|
+
file(node, filePath) {
|
|
90
|
+
const file = filePath ? this.storage.read(filePath) : void 0;
|
|
91
|
+
return resolveDocsNodeIcon(node, options, file?.format === "page" ? getDocsIconFrontmatter(file.data) : void 0);
|
|
92
|
+
},
|
|
93
|
+
folder(node, _folderPath, metaPath) {
|
|
94
|
+
const file = metaPath ? this.storage.read(metaPath) : void 0;
|
|
95
|
+
return resolveDocsNodeIcon(node, options, file?.format === "meta" ? getDocsIconFrontmatter(file.data) : void 0);
|
|
96
|
+
},
|
|
97
|
+
separator(node) {
|
|
98
|
+
return resolveDocsNodeIcon(node, options);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
//#endregion
|
|
103
|
+
export { createDocsIconResolver, defaultDocsIconAssetBaseUrl, docsIconsPlugin, docsMetaSchema, docsPageSchema, toDocsIconName };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/runtime/docs/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA;AACvB,cAAc,QAAQ,CAAA;AACtB,cAAc,UAAU,CAAA;AACxB,cAAc,QAAQ,CAAA;AACtB,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { createDocsI18n, getDefaultLocaleRedirectHref, isDefaultLocaleParam, isOptionalLocaleParam, localizeRouteBase, localizedRouteParam, localizedUrl, normalizeLocale } from "./i18n.js";
|
|
2
|
+
import { createDocsIconResolver, defaultDocsIconAssetBaseUrl, docsIconsPlugin, docsMetaSchema, docsPageSchema, toDocsIconName } from "./icons.js";
|
|
3
|
+
import { createOpenAPIFromSources, getDocsLLMText, getOpenAPIDocumentId, openAPIDocumentIdFromPath, parseOpenAPIDocument, preloadDocsOpenAPIPage } from "./openapi.js";
|
|
4
|
+
import { decodeMarkdownUrl, defaultDocsImageRoute, defaultDocsRoute, encodeMarkdownUrl, getDocsImageRoute, normalizeDocsRoutePath, replaceDocsRouteBase } from "./routes.js";
|
|
5
|
+
import { createDocsRuntime, createDocsSource, createSearchServer, createStaticDocsRuntimeBase, createStaticDocsSource, getDocsLLMSIndex } from "./runtime.js";
|
|
6
|
+
import { getDocsOgImagePath, getDocsRouteHead } from "./head.js";
|
|
7
|
+
import { createDocsPageRuntime } from "./pages.js";
|
|
8
|
+
import { createStaticDocsRuntime } from "./static.js";
|
|
9
|
+
export { createDocsI18n, createDocsIconResolver, createDocsPageRuntime, createDocsRuntime, createDocsSource, createOpenAPIFromSources, createSearchServer, createStaticDocsRuntime, createStaticDocsRuntimeBase, createStaticDocsSource, decodeMarkdownUrl, defaultDocsIconAssetBaseUrl, defaultDocsImageRoute, defaultDocsRoute, docsIconsPlugin, docsMetaSchema, docsPageSchema, encodeMarkdownUrl, getDefaultLocaleRedirectHref, getDocsImageRoute, getDocsLLMSIndex, getDocsLLMText, getDocsOgImagePath, getDocsRouteHead, getOpenAPIDocumentId, isDefaultLocaleParam, isOptionalLocaleParam, localizeRouteBase, localizedRouteParam, localizedUrl, normalizeDocsRoutePath, normalizeLocale, openAPIDocumentIdFromPath, parseOpenAPIDocument, preloadDocsOpenAPIPage, replaceDocsRouteBase, toDocsIconName };
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { OpenAPIOptions, createOpenAPI } from '@vezham/docs-openapi/server';
|
|
2
|
+
type OpenAPIDocument = Exclude<NonNullable<OpenAPIOptions['input']>, string[]>[string];
|
|
3
|
+
export type DocsOpenAPIPlugin = {
|
|
4
|
+
loaderPlugin: () => ReturnType<ReturnType<typeof createOpenAPI>['loaderPlugin']>;
|
|
5
|
+
};
|
|
6
|
+
export type DocsOpenAPIRuntime = {
|
|
7
|
+
getSchema: (documentId: string) => Promise<unknown>;
|
|
8
|
+
};
|
|
9
|
+
export type DocsOpenAPIPreloader = {
|
|
10
|
+
preloadOpenAPIPage: (page: never) => Promise<unknown>;
|
|
11
|
+
};
|
|
12
|
+
export type OpenAPISourceFiles = Record<string, string>;
|
|
13
|
+
export type CreateOpenAPIFromSourcesOptions = {
|
|
14
|
+
files?: OpenAPISourceFiles;
|
|
15
|
+
openapiDir?: string;
|
|
16
|
+
rootDocument?: string;
|
|
17
|
+
rootDocumentId?: string;
|
|
18
|
+
};
|
|
19
|
+
export type DocsPageLike = {
|
|
20
|
+
data: {
|
|
21
|
+
_openapi?: {
|
|
22
|
+
preload?: unknown;
|
|
23
|
+
};
|
|
24
|
+
description?: string;
|
|
25
|
+
getText?: (mode: 'processed' | 'raw') => Promise<string>;
|
|
26
|
+
title?: string;
|
|
27
|
+
};
|
|
28
|
+
locale?: string;
|
|
29
|
+
slugs?: string[];
|
|
30
|
+
url: string;
|
|
31
|
+
};
|
|
32
|
+
export declare const parseOpenAPIDocument: (filePath: string, source: string) => OpenAPIDocument;
|
|
33
|
+
export declare const openAPIDocumentIdFromPath: (filePath: string, openapiDir?: string) => string;
|
|
34
|
+
export declare const createOpenAPIFromSources: ({ files, openapiDir, rootDocument, rootDocumentId }: CreateOpenAPIFromSourcesOptions) => import('@vezham/docs-openapi/server').OpenAPIServer;
|
|
35
|
+
export declare const getOpenAPIDocumentId: (page: DocsPageLike) => string | undefined;
|
|
36
|
+
export declare const preloadDocsOpenAPIPage: <Page extends DocsPageLike>(page: Page, openapi: {
|
|
37
|
+
preloadOpenAPIPage: (page: Page) => Promise<unknown>;
|
|
38
|
+
}) => Promise<unknown>;
|
|
39
|
+
export declare const getDocsLLMText: (page: DocsPageLike, openapi?: Pick<DocsOpenAPIRuntime, "getSchema">) => Promise<string>;
|
|
40
|
+
export {};
|
|
41
|
+
//# sourceMappingURL=openapi.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../../../../src/lib/runtime/docs/openapi.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,cAAc,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAEhF,KAAK,eAAe,GAAG,OAAO,CAC5B,WAAW,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,EACpC,MAAM,EAAE,CACT,CAAC,MAAM,CAAC,CAAA;AAET,MAAM,MAAM,iBAAiB,GAAG;IAC9B,YAAY,EAAE,MAAM,UAAU,CAC5B,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC,cAAc,CAAC,CACjD,CAAA;CACF,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,SAAS,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;CACpD,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,kBAAkB,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;CACtD,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAEvD,MAAM,MAAM,+BAA+B,GAAG;IAC5C,KAAK,CAAC,EAAE,kBAAkB,CAAA;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE;QACJ,QAAQ,CAAC,EAAE;YACT,OAAO,CAAC,EAAE,OAAO,CAAA;SAClB,CAAA;QACD,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,GAAG,KAAK,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;QACxD,KAAK,CAAC,EAAE,MAAM,CAAA;KACf,CAAA;IACD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,GAAG,EAAE,MAAM,CAAA;CACZ,CAAA;AAMD,eAAO,MAAM,oBAAoB,GAC/B,UAAU,MAAM,EAChB,QAAQ,MAAM,KACb,eAIF,CAAA;AAED,eAAO,MAAM,yBAAyB,GACpC,UAAU,MAAM,EAChB,mBAAsB,WAgBvB,CAAA;AAED,eAAO,MAAM,wBAAwB,GAAI,qDAKtC,+BAA+B,wDAmBjC,CAAA;AAED,eAAO,MAAM,oBAAoB,GAAI,MAAM,YAAY,uBAMtD,CAAA;AAED,eAAO,MAAM,sBAAsB,GAAU,IAAI,SAAS,YAAY,EACpE,MAAM,IAAI,EACV,SAAS;IACP,kBAAkB,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;CACrD,qBAKF,CAAA;AAED,eAAO,MAAM,cAAc,GACzB,MAAM,YAAY,EAClB,UAAU,IAAI,CAAC,kBAAkB,EAAE,WAAW,CAAC,oBAiBhD,CAAA"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { parse } from "yaml";
|
|
2
|
+
import { createOpenAPI } from "@vezham/docs-openapi/server";
|
|
3
|
+
//#region src/lib/runtime/docs/openapi.ts
|
|
4
|
+
var slash = (value) => {
|
|
5
|
+
return value.split("\\").join("/");
|
|
6
|
+
};
|
|
7
|
+
var parseOpenAPIDocument = (filePath, source) => {
|
|
8
|
+
return filePath.endsWith(".json") ? JSON.parse(source) : parse(source);
|
|
9
|
+
};
|
|
10
|
+
var openAPIDocumentIdFromPath = (filePath, openapiDir = "openapi") => {
|
|
11
|
+
const segments = slash(filePath).split("/");
|
|
12
|
+
const openapiDirIndex = segments.lastIndexOf(openapiDir);
|
|
13
|
+
const idSegments = (openapiDirIndex === -1 ? slash(filePath) : segments.slice(openapiDirIndex + 1).join("/")).replace(/\.(?:json|yaml|yml)$/, "").split("/");
|
|
14
|
+
if (idSegments[idSegments.length - 1] === "index") idSegments.pop();
|
|
15
|
+
return idSegments.length === 0 ? "openapi" : idSegments.join("/");
|
|
16
|
+
};
|
|
17
|
+
var createOpenAPIFromSources = ({ files = {}, openapiDir, rootDocument, rootDocumentId = "openapi" }) => {
|
|
18
|
+
return createOpenAPI({ input: {
|
|
19
|
+
...rootDocument ? { [rootDocumentId]: parseOpenAPIDocument("openapi/index.yaml", rootDocument) } : {},
|
|
20
|
+
...Object.fromEntries(Object.entries(files).map(([filePath, source]) => [openAPIDocumentIdFromPath(filePath, openapiDir), parseOpenAPIDocument(filePath, source)]))
|
|
21
|
+
} });
|
|
22
|
+
};
|
|
23
|
+
var getOpenAPIDocumentId = (page) => {
|
|
24
|
+
const preload = page.data._openapi?.preload;
|
|
25
|
+
return Array.isArray(preload) && typeof preload[0] === "string" ? preload[0] : void 0;
|
|
26
|
+
};
|
|
27
|
+
var preloadDocsOpenAPIPage = async (page, openapi) => {
|
|
28
|
+
return getOpenAPIDocumentId(page) ? openapi.preloadOpenAPIPage(page) : void 0;
|
|
29
|
+
};
|
|
30
|
+
var getDocsLLMText = async (page, openapi) => {
|
|
31
|
+
const documentId = getOpenAPIDocumentId(page);
|
|
32
|
+
if (documentId && openapi) return JSON.stringify(await openapi.getSchema(documentId), null, 2);
|
|
33
|
+
if (!page.data.getText) throw new Error(`Cannot render LLM text for ${page.url}`);
|
|
34
|
+
const processed = await page.data.getText("processed");
|
|
35
|
+
return `# ${page.data.title ?? "Untitled"} (${page.url})
|
|
36
|
+
|
|
37
|
+
${processed}`;
|
|
38
|
+
};
|
|
39
|
+
//#endregion
|
|
40
|
+
export { createOpenAPIFromSources, getDocsLLMText, getOpenAPIDocumentId, openAPIDocumentIdFromPath, parseOpenAPIDocument, preloadDocsOpenAPIPage };
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { StaticSource } from '@vezham/docs-core/source';
|
|
2
|
+
import { DocsRouteHeadOptions } from './head';
|
|
3
|
+
import { createStaticDocsRuntimeBase } from './runtime';
|
|
4
|
+
export type DocsPageInput = {
|
|
5
|
+
lang?: string;
|
|
6
|
+
pathFormat?: 'slug' | 'markdown-url';
|
|
7
|
+
slugs: string[];
|
|
8
|
+
};
|
|
9
|
+
export declare const createDocsPageRuntime: <Docs extends StaticSource, const Languages extends readonly string[]>({ docs, runtime, head }: {
|
|
10
|
+
docs: {
|
|
11
|
+
getPage: (path: string) => {
|
|
12
|
+
preload: () => unknown;
|
|
13
|
+
} | undefined;
|
|
14
|
+
};
|
|
15
|
+
runtime: ReturnType<typeof createStaticDocsRuntimeBase<Docs, Languages>>;
|
|
16
|
+
head: Omit<DocsRouteHeadOptions, "defaultLanguage" | "languages">;
|
|
17
|
+
}) => {
|
|
18
|
+
getDocsPage: ({ lang, pathFormat, slugs }: DocsPageInput) => {
|
|
19
|
+
locale: Languages[number];
|
|
20
|
+
page: {
|
|
21
|
+
docs: Docs;
|
|
22
|
+
} extends infer T ? T extends {
|
|
23
|
+
docs: Docs;
|
|
24
|
+
} ? T extends Record<infer K extends string, import('@vezham/docs-core/source').SourceUnion<{
|
|
25
|
+
pageData: import('@vezham/docs-core/source').PageData;
|
|
26
|
+
metaData: import('@vezham/docs-core/source').MetaData;
|
|
27
|
+
}>> ? { [k in K]: T[k] extends import('@vezham/docs-core/source').SourceUnion<infer D extends {
|
|
28
|
+
pageData: import('@vezham/docs-core/source').PageData;
|
|
29
|
+
metaData: import('@vezham/docs-core/source').MetaData;
|
|
30
|
+
}> ? import('@vezham/docs-core/source').Page<k, D["pageData"]> : never; }[K] : T extends import('@vezham/docs-core/source').SourceUnion<infer D extends {
|
|
31
|
+
pageData: import('@vezham/docs-core/source').PageData;
|
|
32
|
+
metaData: import('@vezham/docs-core/source').MetaData;
|
|
33
|
+
}> ? import('@vezham/docs-core/source').Page<undefined, D["pageData"]> : never : never : never;
|
|
34
|
+
};
|
|
35
|
+
loadDocsPage: ({ slugs, lang, routeBase }: {
|
|
36
|
+
slugs: string[];
|
|
37
|
+
lang?: string;
|
|
38
|
+
routeBase?: string;
|
|
39
|
+
}) => Promise<{
|
|
40
|
+
locale: Languages[number];
|
|
41
|
+
title: string | undefined;
|
|
42
|
+
description: string | undefined;
|
|
43
|
+
routePath: string;
|
|
44
|
+
path: string;
|
|
45
|
+
markdownUrl: string;
|
|
46
|
+
pageTree: import('@vezham/docs-core/source/client').SerializedPageTree;
|
|
47
|
+
openapiData: unknown;
|
|
48
|
+
}>;
|
|
49
|
+
getDocsRouteHead: (data?: Awaited<ReturnType<({ slugs, lang, routeBase }: {
|
|
50
|
+
slugs: string[];
|
|
51
|
+
lang?: string;
|
|
52
|
+
routeBase?: string;
|
|
53
|
+
}) => Promise<{
|
|
54
|
+
locale: Languages[number];
|
|
55
|
+
title: string | undefined;
|
|
56
|
+
description: string | undefined;
|
|
57
|
+
routePath: string;
|
|
58
|
+
path: string;
|
|
59
|
+
markdownUrl: string;
|
|
60
|
+
pageTree: import('@vezham/docs-core/source/client').SerializedPageTree;
|
|
61
|
+
openapiData: unknown;
|
|
62
|
+
}>>>) => {
|
|
63
|
+
meta?: undefined;
|
|
64
|
+
} | {
|
|
65
|
+
meta: ({
|
|
66
|
+
title: string;
|
|
67
|
+
name?: undefined;
|
|
68
|
+
content?: undefined;
|
|
69
|
+
property?: undefined;
|
|
70
|
+
} | {
|
|
71
|
+
name: string;
|
|
72
|
+
content: string;
|
|
73
|
+
title?: undefined;
|
|
74
|
+
property?: undefined;
|
|
75
|
+
} | {
|
|
76
|
+
property: string;
|
|
77
|
+
content: string;
|
|
78
|
+
title?: undefined;
|
|
79
|
+
name?: undefined;
|
|
80
|
+
})[];
|
|
81
|
+
};
|
|
82
|
+
createDocsLoader: (routeBase?: string) => ({ params }: {
|
|
83
|
+
params: {
|
|
84
|
+
lang?: string;
|
|
85
|
+
_splat?: string;
|
|
86
|
+
};
|
|
87
|
+
}) => Promise<{
|
|
88
|
+
locale: Languages[number];
|
|
89
|
+
title: string | undefined;
|
|
90
|
+
description: string | undefined;
|
|
91
|
+
routePath: string;
|
|
92
|
+
path: string;
|
|
93
|
+
markdownUrl: string;
|
|
94
|
+
pageTree: import('@vezham/docs-core/source/client').SerializedPageTree;
|
|
95
|
+
openapiData: unknown;
|
|
96
|
+
}>;
|
|
97
|
+
};
|
|
98
|
+
//# sourceMappingURL=pages.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pages.d.ts","sourceRoot":"","sources":["../../../../src/lib/runtime/docs/pages.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAE5D,OAAO,EAAE,KAAK,oBAAoB,EAAoB,MAAM,QAAQ,CAAA;AAYpE,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,WAAW,CAAA;AAE5D,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,UAAU,CAAC,EAAE,MAAM,GAAG,cAAc,CAAA;IACpC,KAAK,EAAE,MAAM,EAAE,CAAA;CAChB,CAAA;AAED,eAAO,MAAM,qBAAqB,GAChC,IAAI,SAAS,YAAY,EACzB,KAAK,CAAC,SAAS,SAAS,SAAS,MAAM,EAAE,EACzC,yBAIC;IACD,IAAI,EAAE;QAAE,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK;YAAE,OAAO,EAAE,MAAM,OAAO,CAAA;SAAE,GAAG,SAAS,CAAA;KAAE,CAAA;IAC3E,OAAO,EAAE,UAAU,CAAC,OAAO,2BAA2B,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAA;IACxE,IAAI,EAAE,IAAI,CAAC,oBAAoB,EAAE,iBAAiB,GAAG,WAAW,CAAC,CAAA;CAClE;+CAImD,aAAa;;;;;;;;;;;;;;;;;+CAqB5D;QACD,KAAK,EAAE,MAAM,EAAE,CAAA;QACf,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,SAAS,CAAC,EAAE,MAAM,CAAA;KACnB;;;;;;;;;;8BAgE2B,OAAO,CAAC,UAAU,8BApE3C;QACD,KAAK,EAAE,MAAM,EAAE,CAAA;QACf,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,SAAS,CAAC,EAAE,MAAM,CAAA;KACnB;;;;;;;;;OAgEkE,CAAC;;;;;;;;;;;;;;;;;;;;+CAQ/D,YAAY;QAAE,MAAM,EAAE;YAAE,IAAI,CAAC,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE;;;;;;;;;;CAOhE,CAAA"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { isOptionalLocaleParam, localizeRouteBase, normalizeLocale } from "./i18n.js";
|
|
2
|
+
import { decodeMarkdownUrl, encodeMarkdownUrl, replaceDocsRouteBase } from "./routes.js";
|
|
3
|
+
import { getDocsRouteHead } from "./head.js";
|
|
4
|
+
import { notFound } from "@tanstack/react-router";
|
|
5
|
+
//#region src/lib/runtime/docs/pages.ts
|
|
6
|
+
var createDocsPageRuntime = ({ docs, runtime, head }) => {
|
|
7
|
+
const { i18n, source, preloadOpenAPIPage } = runtime;
|
|
8
|
+
const docsRoute = head.docsRoute ?? "/docs";
|
|
9
|
+
const getDocsPage = ({ lang, pathFormat, slugs }) => {
|
|
10
|
+
if (!isOptionalLocaleParam(i18n, lang)) throw notFound();
|
|
11
|
+
const locale = normalizeLocale(i18n, lang);
|
|
12
|
+
const resolvedSlugs = pathFormat === "markdown-url" ? decodeMarkdownUrl(slugs) : slugs;
|
|
13
|
+
const page = source.getPage(resolvedSlugs, locale);
|
|
14
|
+
if (!page) throw notFound();
|
|
15
|
+
return {
|
|
16
|
+
locale,
|
|
17
|
+
page
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
const loadDocsPage = async ({ slugs, lang, routeBase = docsRoute }) => {
|
|
21
|
+
const { locale, page } = getDocsPage({
|
|
22
|
+
slugs,
|
|
23
|
+
lang
|
|
24
|
+
});
|
|
25
|
+
const resolvedRouteBase = localizeRouteBase({
|
|
26
|
+
defaultLanguage: i18n.defaultLanguage,
|
|
27
|
+
lang,
|
|
28
|
+
languages: i18n.languages,
|
|
29
|
+
routeBase
|
|
30
|
+
});
|
|
31
|
+
const remapPage = (item) => ({
|
|
32
|
+
...item,
|
|
33
|
+
url: replaceDocsRouteBase({
|
|
34
|
+
docsRoute,
|
|
35
|
+
languages: i18n.languages,
|
|
36
|
+
pagePath: item.url,
|
|
37
|
+
routeBase: resolvedRouteBase
|
|
38
|
+
})
|
|
39
|
+
});
|
|
40
|
+
const remapNode = (node) => {
|
|
41
|
+
if (node.type === "page") return remapPage(node);
|
|
42
|
+
if (node.type !== "folder") return node;
|
|
43
|
+
return {
|
|
44
|
+
...node,
|
|
45
|
+
index: node.index ? remapPage(node.index) : void 0,
|
|
46
|
+
children: node.children.map(remapNode)
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
const remapTree = (tree) => ({
|
|
50
|
+
...tree,
|
|
51
|
+
$id: `${tree.$id ?? locale}:${resolvedRouteBase}`,
|
|
52
|
+
children: tree.children.map(remapNode),
|
|
53
|
+
fallback: tree.fallback ? remapTree(tree.fallback) : void 0
|
|
54
|
+
});
|
|
55
|
+
const data = {
|
|
56
|
+
locale,
|
|
57
|
+
title: page.data.title,
|
|
58
|
+
description: page.data.description,
|
|
59
|
+
routePath: replaceDocsRouteBase({
|
|
60
|
+
docsRoute,
|
|
61
|
+
languages: i18n.languages,
|
|
62
|
+
pagePath: page.url,
|
|
63
|
+
routeBase: resolvedRouteBase
|
|
64
|
+
}),
|
|
65
|
+
path: page.path,
|
|
66
|
+
markdownUrl: encodeMarkdownUrl(page.slugs, page.locale, docsRoute, i18n.defaultLanguage),
|
|
67
|
+
pageTree: await source.serializePageTree(routeBase === docsRoute ? source.getPageTree(locale) : remapTree(source.getPageTree(locale))),
|
|
68
|
+
openapiData: await preloadOpenAPIPage(page)
|
|
69
|
+
};
|
|
70
|
+
await docs.getPage(data.path)?.preload();
|
|
71
|
+
return data;
|
|
72
|
+
};
|
|
73
|
+
return {
|
|
74
|
+
getDocsPage,
|
|
75
|
+
loadDocsPage,
|
|
76
|
+
getDocsRouteHead: (data) => getDocsRouteHead(data, {
|
|
77
|
+
...head,
|
|
78
|
+
defaultLanguage: i18n.defaultLanguage,
|
|
79
|
+
languages: i18n.languages
|
|
80
|
+
}),
|
|
81
|
+
createDocsLoader: (routeBase = docsRoute) => ({ params }) => loadDocsPage({
|
|
82
|
+
slugs: params._splat?.split("/") ?? [],
|
|
83
|
+
lang: params.lang,
|
|
84
|
+
routeBase
|
|
85
|
+
})
|
|
86
|
+
};
|
|
87
|
+
};
|
|
88
|
+
//#endregion
|
|
89
|
+
export { createDocsPageRuntime };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare const defaultDocsRoute = "/docs";
|
|
2
|
+
export declare const getDocsImageRoute: (docsRoute?: string) => string;
|
|
3
|
+
export declare const defaultDocsImageRoute: string;
|
|
4
|
+
export declare const encodeMarkdownUrl: (slugs: string[], locale?: string, docsRoute?: string, defaultLocale?: string) => string;
|
|
5
|
+
export declare const decodeMarkdownUrl: (segments: string[]) => string[];
|
|
6
|
+
export declare const replaceDocsRouteBase: ({ docsRoute, languages, pagePath, routeBase }: {
|
|
7
|
+
docsRoute?: string;
|
|
8
|
+
languages: readonly string[];
|
|
9
|
+
pagePath: string;
|
|
10
|
+
routeBase: string;
|
|
11
|
+
}) => string;
|
|
12
|
+
export declare const normalizeDocsRoutePath: ({ docsRoute, languages, routePath }: {
|
|
13
|
+
docsRoute?: string;
|
|
14
|
+
languages: readonly string[];
|
|
15
|
+
routePath: string;
|
|
16
|
+
}) => string;
|
|
17
|
+
//# sourceMappingURL=routes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../../../src/lib/runtime/docs/routes.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,UAAU,CAAA;AAEvC,eAAO,MAAM,iBAAiB,GAAI,kBAA4B,WAE7D,CAAA;AAED,eAAO,MAAM,qBAAqB,QAAsB,CAAA;AAExD,eAAO,MAAM,iBAAiB,GAC5B,OAAO,MAAM,EAAE,EACf,SAAS,MAAM,EACf,kBAA4B,EAC5B,gBAAgB,MAAM,WAiBvB,CAAA;AAED,eAAO,MAAM,iBAAiB,GAAI,UAAU,MAAM,EAAE,aAanD,CAAA;AAED,eAAO,MAAM,oBAAoB,GAAI,+CAKlC;IACD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,SAAS,MAAM,EAAE,CAAA;IAC5B,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;CAClB,WA0BA,CAAA;AAED,eAAO,MAAM,sBAAsB,GAAI,qCAIpC;IACD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,SAAS,MAAM,EAAE,CAAA;IAC5B,SAAS,EAAE,MAAM,CAAA;CAClB,WAcA,CAAA"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
//#region src/lib/runtime/docs/routes.ts
|
|
2
|
+
var defaultDocsRoute = "/docs";
|
|
3
|
+
var getDocsImageRoute = (docsRoute = defaultDocsRoute) => {
|
|
4
|
+
return `/og${docsRoute}`;
|
|
5
|
+
};
|
|
6
|
+
var defaultDocsImageRoute = getDocsImageRoute();
|
|
7
|
+
var encodeMarkdownUrl = (slugs, locale, docsRoute = defaultDocsRoute, defaultLocale) => {
|
|
8
|
+
const segments = [...slugs];
|
|
9
|
+
const localePrefix = locale && locale !== defaultLocale ? locale : void 0;
|
|
10
|
+
if (segments.length === 0) segments.push("index.md");
|
|
11
|
+
else segments[segments.length - 1] += ".md";
|
|
12
|
+
return "/" + [
|
|
13
|
+
localePrefix,
|
|
14
|
+
...docsRoute.split("/"),
|
|
15
|
+
...segments
|
|
16
|
+
].filter(Boolean).join("/");
|
|
17
|
+
};
|
|
18
|
+
var decodeMarkdownUrl = (segments) => {
|
|
19
|
+
if (segments.length === 0) return [];
|
|
20
|
+
const out = [...segments];
|
|
21
|
+
out[out.length - 1] = out[out.length - 1].replace(/\.md$/, "");
|
|
22
|
+
if (out.length === 1 && out[0] === "index") out.pop();
|
|
23
|
+
return out;
|
|
24
|
+
};
|
|
25
|
+
var replaceDocsRouteBase = ({ docsRoute = defaultDocsRoute, languages, pagePath, routeBase }) => {
|
|
26
|
+
if (routeBase === docsRoute) return pagePath;
|
|
27
|
+
if (pagePath === docsRoute) return routeBase;
|
|
28
|
+
if (pagePath.startsWith(`${docsRoute}/`)) return `${routeBase}${pagePath.slice(docsRoute.length)}`;
|
|
29
|
+
for (const lang of languages) {
|
|
30
|
+
const localizedDocsRoute = `/${lang}${docsRoute}`;
|
|
31
|
+
if (pagePath === localizedDocsRoute) return routeBase;
|
|
32
|
+
if (pagePath.startsWith(`${localizedDocsRoute}/`)) return `${routeBase}${pagePath.slice(localizedDocsRoute.length)}`;
|
|
33
|
+
}
|
|
34
|
+
return pagePath;
|
|
35
|
+
};
|
|
36
|
+
var normalizeDocsRoutePath = ({ docsRoute = defaultDocsRoute, languages, routePath }) => {
|
|
37
|
+
for (const lang of languages) {
|
|
38
|
+
const localizedDocsRoute = `/${lang}${docsRoute}`;
|
|
39
|
+
if (routePath === localizedDocsRoute) return docsRoute;
|
|
40
|
+
if (routePath.startsWith(`${localizedDocsRoute}/`)) return routePath.slice(`/${lang}`.length);
|
|
41
|
+
}
|
|
42
|
+
return routePath;
|
|
43
|
+
};
|
|
44
|
+
//#endregion
|
|
45
|
+
export { decodeMarkdownUrl, defaultDocsImageRoute, defaultDocsRoute, encodeMarkdownUrl, getDocsImageRoute, normalizeDocsRoutePath, replaceDocsRouteBase };
|