@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.
Files changed (154) hide show
  1. package/LICENSE +173 -0
  2. package/README.md +2 -0
  3. package/dist/index.d.ts +2 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +0 -0
  6. package/dist/lib/layouts/app/index.d.ts +15 -0
  7. package/dist/lib/layouts/app/index.d.ts.map +1 -0
  8. package/dist/lib/layouts/app/index.js +44 -0
  9. package/dist/lib/layouts/docs/components.d.ts +4 -0
  10. package/dist/lib/layouts/docs/components.d.ts.map +1 -0
  11. package/dist/lib/layouts/docs/components.js +29 -0
  12. package/dist/lib/layouts/docs/index.d.ts +3 -0
  13. package/dist/lib/layouts/docs/index.d.ts.map +1 -0
  14. package/dist/lib/layouts/docs/index.js +2 -0
  15. package/dist/lib/layouts/docs/layout-components.d.ts +9 -0
  16. package/dist/lib/layouts/docs/layout-components.d.ts.map +1 -0
  17. package/dist/lib/layouts/docs/layout-components.js +81 -0
  18. package/dist/lib/layouts/docs/layouts.d.ts +6 -0
  19. package/dist/lib/layouts/docs/layouts.d.ts.map +1 -0
  20. package/dist/lib/layouts/docs/layouts.js +11 -0
  21. package/dist/lib/layouts/docs/page-actions.d.ts +4 -0
  22. package/dist/lib/layouts/docs/page-actions.d.ts.map +1 -0
  23. package/dist/lib/layouts/docs/page-actions.js +154 -0
  24. package/dist/lib/layouts/docs/page-actions.variants.d.ts +44 -0
  25. package/dist/lib/layouts/docs/page-actions.variants.d.ts.map +1 -0
  26. package/dist/lib/layouts/docs/page-actions.variants.js +17 -0
  27. package/dist/lib/layouts/docs/page-content.d.ts +11 -0
  28. package/dist/lib/layouts/docs/page-content.d.ts.map +1 -0
  29. package/dist/lib/layouts/docs/page-content.js +13 -0
  30. package/dist/lib/layouts/docs/pages.d.ts +57 -0
  31. package/dist/lib/layouts/docs/pages.d.ts.map +1 -0
  32. package/dist/lib/layouts/docs/pages.js +36 -0
  33. package/dist/lib/layouts/docs/types.d.ts +21 -0
  34. package/dist/lib/layouts/docs/types.d.ts.map +1 -0
  35. package/dist/lib/mdx/index.d.ts +26 -0
  36. package/dist/lib/mdx/index.d.ts.map +1 -0
  37. package/dist/lib/mdx/index.js +10 -0
  38. package/dist/lib/pages/docs/openapi/index.d.ts +2 -0
  39. package/dist/lib/pages/docs/openapi/index.d.ts.map +1 -0
  40. package/dist/lib/pages/docs/openapi/index.js +5 -0
  41. package/dist/lib/pages/docs/route/index.d.ts +35 -0
  42. package/dist/lib/pages/docs/route/index.d.ts.map +1 -0
  43. package/dist/lib/pages/docs/route/index.js +59 -0
  44. package/dist/lib/provider/next/config.d.ts +3 -0
  45. package/dist/lib/provider/next/config.d.ts.map +1 -0
  46. package/dist/lib/provider/next/config.js +6 -0
  47. package/dist/lib/provider/next/index.d.ts +3 -0
  48. package/dist/lib/provider/next/index.d.ts.map +1 -0
  49. package/dist/lib/provider/next/index.js +3 -0
  50. package/dist/lib/provider/next/provider.d.ts +3 -0
  51. package/dist/lib/provider/next/provider.d.ts.map +1 -0
  52. package/dist/lib/provider/next/provider.js +24 -0
  53. package/dist/lib/provider/next/root-document.d.ts +3 -0
  54. package/dist/lib/provider/next/root-document.d.ts.map +1 -0
  55. package/dist/lib/provider/next/root-document.js +27 -0
  56. package/dist/lib/provider/shared/config.d.ts +4 -0
  57. package/dist/lib/provider/shared/config.d.ts.map +1 -0
  58. package/dist/lib/provider/shared/config.js +10 -0
  59. package/dist/lib/provider/shared/devtools.d.ts +10 -0
  60. package/dist/lib/provider/shared/devtools.d.ts.map +1 -0
  61. package/dist/lib/provider/shared/devtools.js +24 -0
  62. package/dist/lib/provider/shared/provider.d.ts +13 -0
  63. package/dist/lib/provider/shared/provider.d.ts.map +1 -0
  64. package/dist/lib/provider/shared/provider.js +40 -0
  65. package/{lib/provider/src → dist/lib/provider/shared}/types.d.ts +16 -19
  66. package/dist/lib/provider/shared/types.d.ts.map +1 -0
  67. package/dist/lib/provider/shared/types.js +4 -0
  68. package/dist/lib/provider/tanstack/config.d.ts +4 -0
  69. package/dist/lib/provider/tanstack/config.d.ts.map +1 -0
  70. package/dist/lib/provider/tanstack/config.js +11 -0
  71. package/dist/lib/provider/tanstack/index.d.ts +4 -0
  72. package/dist/lib/provider/tanstack/index.d.ts.map +1 -0
  73. package/dist/lib/provider/tanstack/index.js +4 -0
  74. package/dist/lib/provider/tanstack/provider.d.ts +3 -0
  75. package/dist/lib/provider/tanstack/provider.d.ts.map +1 -0
  76. package/dist/lib/provider/tanstack/provider.js +22 -0
  77. package/dist/lib/provider/tanstack/root-document.d.ts +8 -0
  78. package/dist/lib/provider/tanstack/root-document.d.ts.map +1 -0
  79. package/dist/lib/provider/tanstack/root-document.js +28 -0
  80. package/dist/lib/provider/tanstack-docs/config.d.ts +14 -0
  81. package/dist/lib/provider/tanstack-docs/config.d.ts.map +1 -0
  82. package/dist/lib/provider/tanstack-docs/config.js +39 -0
  83. package/dist/lib/provider/tanstack-docs/i18n.d.ts +4 -0
  84. package/dist/lib/provider/tanstack-docs/i18n.d.ts.map +1 -0
  85. package/dist/lib/provider/tanstack-docs/i18n.js +30 -0
  86. package/dist/lib/provider/tanstack-docs/index.d.ts +5 -0
  87. package/dist/lib/provider/tanstack-docs/index.d.ts.map +1 -0
  88. package/dist/lib/provider/tanstack-docs/index.js +5 -0
  89. package/dist/lib/provider/tanstack-docs/routes.d.ts +13 -0
  90. package/dist/lib/provider/tanstack-docs/routes.d.ts.map +1 -0
  91. package/dist/lib/provider/tanstack-docs/routes.js +23 -0
  92. package/dist/lib/provider/tanstack-docs/search.d.ts +4 -0
  93. package/dist/lib/provider/tanstack-docs/search.d.ts.map +1 -0
  94. package/dist/lib/provider/tanstack-docs/search.js +24 -0
  95. package/dist/lib/provider/vite/config.d.ts +3 -0
  96. package/dist/lib/provider/vite/config.d.ts.map +1 -0
  97. package/dist/lib/provider/vite/config.js +29 -0
  98. package/dist/lib/provider/vite/index.d.ts +4 -0
  99. package/dist/lib/provider/vite/index.d.ts.map +1 -0
  100. package/dist/lib/provider/vite/index.js +4 -0
  101. package/dist/lib/provider/vite/provider.d.ts +3 -0
  102. package/dist/lib/provider/vite/provider.d.ts.map +1 -0
  103. package/dist/lib/provider/vite/provider.js +13 -0
  104. package/dist/lib/router/tanstack/index.d.ts +3 -0
  105. package/dist/lib/router/tanstack/index.d.ts.map +1 -0
  106. package/dist/lib/router/tanstack/index.js +3 -0
  107. package/dist/lib/router/tanstack/root.d.ts +3 -0
  108. package/dist/lib/router/tanstack/root.d.ts.map +1 -0
  109. package/dist/lib/router/tanstack/root.js +22 -0
  110. package/dist/lib/router/tanstack/router.d.ts +3 -0
  111. package/dist/lib/router/tanstack/router.d.ts.map +1 -0
  112. package/dist/lib/router/tanstack/router.js +22 -0
  113. package/dist/lib/runtime/docs/head.d.ts +46 -0
  114. package/dist/lib/runtime/docs/head.d.ts.map +1 -0
  115. package/dist/lib/runtime/docs/head.js +80 -0
  116. package/dist/lib/runtime/docs/i18n.d.ts +33 -0
  117. package/dist/lib/runtime/docs/i18n.d.ts.map +1 -0
  118. package/dist/lib/runtime/docs/i18n.js +41 -0
  119. package/dist/lib/runtime/docs/icons.d.ts +26 -0
  120. package/dist/lib/runtime/docs/icons.d.ts.map +1 -0
  121. package/dist/lib/runtime/docs/icons.js +103 -0
  122. package/dist/lib/runtime/docs/index.d.ts +9 -0
  123. package/dist/lib/runtime/docs/index.d.ts.map +1 -0
  124. package/dist/lib/runtime/docs/index.js +9 -0
  125. package/dist/lib/runtime/docs/openapi.d.ts +41 -0
  126. package/dist/lib/runtime/docs/openapi.d.ts.map +1 -0
  127. package/dist/lib/runtime/docs/openapi.js +40 -0
  128. package/dist/lib/runtime/docs/pages.d.ts +98 -0
  129. package/dist/lib/runtime/docs/pages.d.ts.map +1 -0
  130. package/dist/lib/runtime/docs/pages.js +89 -0
  131. package/dist/lib/runtime/docs/routes.d.ts +17 -0
  132. package/dist/lib/runtime/docs/routes.d.ts.map +1 -0
  133. package/dist/lib/runtime/docs/routes.js +45 -0
  134. package/dist/lib/runtime/docs/runtime.d.ts +185 -0
  135. package/dist/lib/runtime/docs/runtime.d.ts.map +1 -0
  136. package/dist/lib/runtime/docs/runtime.js +55 -0
  137. package/dist/lib/runtime/docs/static.d.ts +16 -0
  138. package/dist/lib/runtime/docs/static.d.ts.map +1 -0
  139. package/dist/lib/runtime/docs/static.js +20 -0
  140. package/dist/lib/story/index.d.ts +2 -0
  141. package/dist/lib/story/index.d.ts.map +1 -0
  142. package/dist/lib/story/index.js +5 -0
  143. package/dist/styles/docs/index.css +2 -0
  144. package/package.json +91 -20
  145. package/C2Q2AJ2U-DTgcxQMB.mjs +0 -33
  146. package/CTUG6TWM-DqDj0HqV.mjs +0 -42
  147. package/PPK4CBG4-Bam-TzhH.mjs +0 -8999
  148. package/index-B5yPbrKI.mjs +0 -2259
  149. package/index-BVFA6t6h.mjs +0 -2213
  150. package/index-CbtQygO9.mjs +0 -55716
  151. package/index.d.ts +0 -1
  152. package/index.mjs +0 -5
  153. package/lib/provider/src/index.d.ts +0 -6
  154. 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,9 @@
1
+ export * from './runtime';
2
+ export * from './icons';
3
+ export * from './i18n';
4
+ export * from './routes';
5
+ export * from './head';
6
+ export * from './openapi';
7
+ export * from './pages';
8
+ export * from './static';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -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 };