@blaaiz/docs-core 0.2.0 → 0.4.0

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/dist/index.d.cts CHANGED
@@ -617,15 +617,33 @@ interface PlannedApiPage {
617
617
  /** Position within the group. */
618
618
  readonly order: number;
619
619
  }
620
+ /**
621
+ * A child folder of a planned API group, at its position among the group's
622
+ * pages. The generator merges these with the resolved page slugs to write the
623
+ * group's `meta.json` in declared order.
624
+ *
625
+ * @public
626
+ */
627
+ interface PlannedGroupChild {
628
+ readonly order: number;
629
+ /** The child folder's name within the group directory. */
630
+ readonly folder: string;
631
+ }
620
632
  /**
621
633
  * A planned API group folder. The generator fills its page order once the
622
- * operation slugs are known.
634
+ * operation slugs are known, interleaving {@link PlannedGroupChild} folders at
635
+ * their declared positions. A group with `root: true` is an API tab's folder.
623
636
  *
624
637
  * @public
625
638
  */
626
639
  interface PlannedApiGroup {
627
640
  readonly dir: string;
628
641
  readonly title: string;
642
+ readonly children: readonly PlannedGroupChild[];
643
+ /** Set on an API tab's own folder, so the sidebar scopes to the tab. */
644
+ readonly root?: boolean;
645
+ /** The tab's icon, on a `root` group. */
646
+ readonly icon?: string;
629
647
  }
630
648
  /**
631
649
  * A `meta.json` file the plan wants written.
@@ -647,8 +665,14 @@ interface DocsTreePlan {
647
665
  readonly specs: readonly string[];
648
666
  readonly apiPages: readonly PlannedApiPage[];
649
667
  readonly apiGroups: readonly PlannedApiGroup[];
650
- /** Fully-known meta files: the root, tab folders, and doc groups. */
668
+ /** Fully-known meta files: the root, doc tab folders, and doc groups. */
651
669
  readonly metas: readonly PlannedMeta[];
670
+ /**
671
+ * Doc pages declared inside API tabs. The plan cannot place them in the
672
+ * generated folders, so the generator reports them instead of dropping them
673
+ * silently; they stay reachable at their own URLs.
674
+ */
675
+ readonly apiTabDocPages: readonly string[];
652
676
  }
653
677
  /**
654
678
  * Options for {@link planDocsTree}.
@@ -656,23 +680,27 @@ interface DocsTreePlan {
656
680
  * @public
657
681
  */
658
682
  interface PlanDocsTreeOptions {
659
- /** Folder for generated API pages. Default `api`. */
683
+ /** Folder for generated API pages when one tab publishes them. Default `api`. */
660
684
  readonly apiDir?: string;
661
685
  }
662
686
  /**
663
687
  * Plan the content tree for a navigation.
664
688
  *
665
689
  * Conventions (Mintlify-shaped):
666
- * - A tab whose items reference OpenAPI files becomes the API tab; its groups
667
- * become folders under `apiDir`, named by slugified group title.
690
+ * - A tab whose items reference OpenAPI files becomes an API tab. With one API
691
+ * tab its folder is `apiDir`; with several, each tab's folder is its
692
+ * slugified title, so tabs never collide. Groups become nested folders named
693
+ * by slugified group title, to any depth.
668
694
  * - A tab of doc pages becomes the folder its pages share (their first path
669
- * segment); a doc group's pages must share one directory.
695
+ * segment); a doc group's pages must share one directory. Doc groups nest.
670
696
  * - Root-level doc pages (no `/` in the path) are listed in the root meta.
671
697
  * - Tab folders get `root: true`, so the sidebar scopes to the active tab.
698
+ * - Sidebar order is declaration order, pages and groups interleaved.
672
699
  *
673
700
  * @param navigation - the parsed navigation
674
701
  * @param options - the API folder name
675
702
  * @returns the plan the generator executes
703
+ * @throws when two sibling groups slugify to the same folder
676
704
  * @public
677
705
  */
678
706
  declare function planDocsTree(navigation: Navigation, options?: PlanDocsTreeOptions): DocsTreePlan;
@@ -1055,6 +1083,79 @@ interface SignOutOptions {
1055
1083
  */
1056
1084
  declare function createSignOut(options?: SignOutOptions): () => Response;
1057
1085
 
1086
+ /**
1087
+ * The whole of a site's auth, assembled from `docs.config.ts`.
1088
+ *
1089
+ * A site mounts the same five files whatever its access mode — middleware,
1090
+ * the sign-in page, and the provider routes — and `createSiteAuth` decides
1091
+ * what they do. On a public site the gate passes everything and the handlers
1092
+ * answer `501`, so the files cost nothing; switching to workspace mode is a
1093
+ * config edit and two environment variables, never new files.
1094
+ *
1095
+ * @packageDocumentation
1096
+ */
1097
+
1098
+ /**
1099
+ * Options for {@link createSiteAuth}.
1100
+ *
1101
+ * @public
1102
+ */
1103
+ interface SiteAuthOptions {
1104
+ /**
1105
+ * Path prefixes the gate never blocks, besides the built-in ones. Defaults
1106
+ * to `['/api/proxy']`: the try-it proxy is allow-list-bounded and injects
1107
+ * no secrets, so it needs no session.
1108
+ */
1109
+ readonly publicPaths?: readonly string[];
1110
+ /** Reads an environment variable. Defaults to `process.env`. */
1111
+ readonly env?: (name: string) => string | undefined;
1112
+ }
1113
+ /**
1114
+ * Everything a site's auth files mount, in both access modes.
1115
+ *
1116
+ * @public
1117
+ */
1118
+ interface SiteAuth {
1119
+ /** Whether the site is in workspace mode. */
1120
+ readonly enabled: boolean;
1121
+ /** Where the gate sends blocked requests. */
1122
+ readonly signInPath: string;
1123
+ /** Whether the shared-secret form should be offered. */
1124
+ readonly secretEnabled: boolean;
1125
+ /** Whether the Google button should be offered. */
1126
+ readonly googleEnabled: boolean;
1127
+ /** `null` to allow a request, a redirect `Response` to block it. */
1128
+ readonly gate: (request: Request) => Promise<Response | null>;
1129
+ /** The email provider's endpoint. `501` when not offered. */
1130
+ readonly emailSignIn: (request: Request) => Promise<Response>;
1131
+ /** The shared-secret provider's endpoint. `501` when not offered. */
1132
+ readonly secretSignIn: (request: Request) => Promise<Response>;
1133
+ /** The Google OAuth endpoints. `501` when not offered. */
1134
+ readonly google: {
1135
+ readonly start: (request: Request) => Response;
1136
+ readonly callback: (request: Request) => Promise<Response>;
1137
+ };
1138
+ /** Clears the session and redirects to the sign-in path. */
1139
+ readonly signOut: () => Response;
1140
+ }
1141
+ /**
1142
+ * Assemble a site's gate, sign-in handlers, and sign-out from its `auth`
1143
+ * config. Accepts both access modes, so the mounting files never change:
1144
+ * `'public'` yields a pass-everything gate and `501` handlers, a workspace
1145
+ * block yields the live flows for exactly the providers it declares.
1146
+ *
1147
+ * In workspace mode the session-signing secret is required and read from the
1148
+ * environment variable named by `sessionSecretEnv` (default
1149
+ * `DOCS_SESSION_SECRET`); a missing value fails at startup with the variable's
1150
+ * name rather than signing sessions with a guessable fallback.
1151
+ *
1152
+ * @param auth - the `auth` field of `docs.config.ts`
1153
+ * @param options - extra public paths and the environment reader
1154
+ * @returns the assembled handlers
1155
+ * @public
1156
+ */
1157
+ declare function createSiteAuth(auth: DocsConfig['auth'], options?: SiteAuthOptions): SiteAuth;
1158
+
1058
1159
  /**
1059
1160
  * OpenAPI-to-Markdown rendering for LLM corpora.
1060
1161
  *
@@ -1179,4 +1280,4 @@ declare class OpenApiMergeError extends Error {
1179
1280
  */
1180
1281
  declare function mergeOpenApiDocuments(inputs: readonly unknown[], options: MergeOpenApiOptions): OpenApiDocument;
1181
1282
 
1182
- export { AiConfig, type AiMessage, type AskAiDocumentsSource, type AskAiRoute, type AskAiRouteOptions, type AskAiSource, type AuthGateOptions, type BuildSitemapOptions, type CreateMarkdownRouteOptions, type CreateTryItProxyOptions, DocsConfig, type DocsMetadata, type DocsRobots, type DocsSitemapEntry, type DocsTreePlan, type EmailSignInOptions, type FetchLike, type GoogleAuthHandlers, type GoogleAuthOptions, type IndexedDocument, InvalidNavigationError, type MarkdownRoute, type MdxReader, type MdxToMarkdownOptions, type MergeOpenApiOptions, Navigation, OpenApiDocument, OpenApiInfo, OpenApiMergeError, type OpenApiOperationRef, OpenApiServer, type PageSeo, type PlanDocsTreeOptions, type PlannedApiGroup, type PlannedApiPage, type PlannedMeta, ProxyTargetError, SESSION_COOKIE, type SearchDocument, type SearchIndex, type SearchResult, type SecretSignInOptions, type SessionPayload, type SignOutOptions, type SitemapChangeFrequency, type SitemapEntry, ThemeConfig, type TryItEnvelope, type TryItProxyRoute, assertAllowedTarget, buildMetadata, buildRobots, buildSearchIndex, buildSessionCookie, buildSitemap, buildThemeCss, clearSessionCookie, createAskAiRoute, createAuthGate, createEmailSignIn, createGoogleAuth, createMarkdownRoute, createSecretSignIn, createSignOut, createTryItProxy, createTryItProxyRoute, isAllowedEmail, mdxToMarkdown, mergeOpenApiDocuments, openApiOperationToMarkdown, parseNavigation, planDocsTree, readCookie, searchIndex, signSession, unwrapProxyTarget, verifySession };
1283
+ export { AiConfig, type AiMessage, type AskAiDocumentsSource, type AskAiRoute, type AskAiRouteOptions, type AskAiSource, type AuthGateOptions, type BuildSitemapOptions, type CreateMarkdownRouteOptions, type CreateTryItProxyOptions, DocsConfig, type DocsMetadata, type DocsRobots, type DocsSitemapEntry, type DocsTreePlan, type EmailSignInOptions, type FetchLike, type GoogleAuthHandlers, type GoogleAuthOptions, type IndexedDocument, InvalidNavigationError, type MarkdownRoute, type MdxReader, type MdxToMarkdownOptions, type MergeOpenApiOptions, Navigation, OpenApiDocument, OpenApiInfo, OpenApiMergeError, type OpenApiOperationRef, OpenApiServer, type PageSeo, type PlanDocsTreeOptions, type PlannedApiGroup, type PlannedApiPage, type PlannedGroupChild, type PlannedMeta, ProxyTargetError, SESSION_COOKIE, type SearchDocument, type SearchIndex, type SearchResult, type SecretSignInOptions, type SessionPayload, type SignOutOptions, type SiteAuth, type SiteAuthOptions, type SitemapChangeFrequency, type SitemapEntry, ThemeConfig, type TryItEnvelope, type TryItProxyRoute, assertAllowedTarget, buildMetadata, buildRobots, buildSearchIndex, buildSessionCookie, buildSitemap, buildThemeCss, clearSessionCookie, createAskAiRoute, createAuthGate, createEmailSignIn, createGoogleAuth, createMarkdownRoute, createSecretSignIn, createSignOut, createSiteAuth, createTryItProxy, createTryItProxyRoute, isAllowedEmail, mdxToMarkdown, mergeOpenApiDocuments, openApiOperationToMarkdown, parseNavigation, planDocsTree, readCookie, searchIndex, signSession, unwrapProxyTarget, verifySession };
package/dist/index.d.ts CHANGED
@@ -617,15 +617,33 @@ interface PlannedApiPage {
617
617
  /** Position within the group. */
618
618
  readonly order: number;
619
619
  }
620
+ /**
621
+ * A child folder of a planned API group, at its position among the group's
622
+ * pages. The generator merges these with the resolved page slugs to write the
623
+ * group's `meta.json` in declared order.
624
+ *
625
+ * @public
626
+ */
627
+ interface PlannedGroupChild {
628
+ readonly order: number;
629
+ /** The child folder's name within the group directory. */
630
+ readonly folder: string;
631
+ }
620
632
  /**
621
633
  * A planned API group folder. The generator fills its page order once the
622
- * operation slugs are known.
634
+ * operation slugs are known, interleaving {@link PlannedGroupChild} folders at
635
+ * their declared positions. A group with `root: true` is an API tab's folder.
623
636
  *
624
637
  * @public
625
638
  */
626
639
  interface PlannedApiGroup {
627
640
  readonly dir: string;
628
641
  readonly title: string;
642
+ readonly children: readonly PlannedGroupChild[];
643
+ /** Set on an API tab's own folder, so the sidebar scopes to the tab. */
644
+ readonly root?: boolean;
645
+ /** The tab's icon, on a `root` group. */
646
+ readonly icon?: string;
629
647
  }
630
648
  /**
631
649
  * A `meta.json` file the plan wants written.
@@ -647,8 +665,14 @@ interface DocsTreePlan {
647
665
  readonly specs: readonly string[];
648
666
  readonly apiPages: readonly PlannedApiPage[];
649
667
  readonly apiGroups: readonly PlannedApiGroup[];
650
- /** Fully-known meta files: the root, tab folders, and doc groups. */
668
+ /** Fully-known meta files: the root, doc tab folders, and doc groups. */
651
669
  readonly metas: readonly PlannedMeta[];
670
+ /**
671
+ * Doc pages declared inside API tabs. The plan cannot place them in the
672
+ * generated folders, so the generator reports them instead of dropping them
673
+ * silently; they stay reachable at their own URLs.
674
+ */
675
+ readonly apiTabDocPages: readonly string[];
652
676
  }
653
677
  /**
654
678
  * Options for {@link planDocsTree}.
@@ -656,23 +680,27 @@ interface DocsTreePlan {
656
680
  * @public
657
681
  */
658
682
  interface PlanDocsTreeOptions {
659
- /** Folder for generated API pages. Default `api`. */
683
+ /** Folder for generated API pages when one tab publishes them. Default `api`. */
660
684
  readonly apiDir?: string;
661
685
  }
662
686
  /**
663
687
  * Plan the content tree for a navigation.
664
688
  *
665
689
  * Conventions (Mintlify-shaped):
666
- * - A tab whose items reference OpenAPI files becomes the API tab; its groups
667
- * become folders under `apiDir`, named by slugified group title.
690
+ * - A tab whose items reference OpenAPI files becomes an API tab. With one API
691
+ * tab its folder is `apiDir`; with several, each tab's folder is its
692
+ * slugified title, so tabs never collide. Groups become nested folders named
693
+ * by slugified group title, to any depth.
668
694
  * - A tab of doc pages becomes the folder its pages share (their first path
669
- * segment); a doc group's pages must share one directory.
695
+ * segment); a doc group's pages must share one directory. Doc groups nest.
670
696
  * - Root-level doc pages (no `/` in the path) are listed in the root meta.
671
697
  * - Tab folders get `root: true`, so the sidebar scopes to the active tab.
698
+ * - Sidebar order is declaration order, pages and groups interleaved.
672
699
  *
673
700
  * @param navigation - the parsed navigation
674
701
  * @param options - the API folder name
675
702
  * @returns the plan the generator executes
703
+ * @throws when two sibling groups slugify to the same folder
676
704
  * @public
677
705
  */
678
706
  declare function planDocsTree(navigation: Navigation, options?: PlanDocsTreeOptions): DocsTreePlan;
@@ -1055,6 +1083,79 @@ interface SignOutOptions {
1055
1083
  */
1056
1084
  declare function createSignOut(options?: SignOutOptions): () => Response;
1057
1085
 
1086
+ /**
1087
+ * The whole of a site's auth, assembled from `docs.config.ts`.
1088
+ *
1089
+ * A site mounts the same five files whatever its access mode — middleware,
1090
+ * the sign-in page, and the provider routes — and `createSiteAuth` decides
1091
+ * what they do. On a public site the gate passes everything and the handlers
1092
+ * answer `501`, so the files cost nothing; switching to workspace mode is a
1093
+ * config edit and two environment variables, never new files.
1094
+ *
1095
+ * @packageDocumentation
1096
+ */
1097
+
1098
+ /**
1099
+ * Options for {@link createSiteAuth}.
1100
+ *
1101
+ * @public
1102
+ */
1103
+ interface SiteAuthOptions {
1104
+ /**
1105
+ * Path prefixes the gate never blocks, besides the built-in ones. Defaults
1106
+ * to `['/api/proxy']`: the try-it proxy is allow-list-bounded and injects
1107
+ * no secrets, so it needs no session.
1108
+ */
1109
+ readonly publicPaths?: readonly string[];
1110
+ /** Reads an environment variable. Defaults to `process.env`. */
1111
+ readonly env?: (name: string) => string | undefined;
1112
+ }
1113
+ /**
1114
+ * Everything a site's auth files mount, in both access modes.
1115
+ *
1116
+ * @public
1117
+ */
1118
+ interface SiteAuth {
1119
+ /** Whether the site is in workspace mode. */
1120
+ readonly enabled: boolean;
1121
+ /** Where the gate sends blocked requests. */
1122
+ readonly signInPath: string;
1123
+ /** Whether the shared-secret form should be offered. */
1124
+ readonly secretEnabled: boolean;
1125
+ /** Whether the Google button should be offered. */
1126
+ readonly googleEnabled: boolean;
1127
+ /** `null` to allow a request, a redirect `Response` to block it. */
1128
+ readonly gate: (request: Request) => Promise<Response | null>;
1129
+ /** The email provider's endpoint. `501` when not offered. */
1130
+ readonly emailSignIn: (request: Request) => Promise<Response>;
1131
+ /** The shared-secret provider's endpoint. `501` when not offered. */
1132
+ readonly secretSignIn: (request: Request) => Promise<Response>;
1133
+ /** The Google OAuth endpoints. `501` when not offered. */
1134
+ readonly google: {
1135
+ readonly start: (request: Request) => Response;
1136
+ readonly callback: (request: Request) => Promise<Response>;
1137
+ };
1138
+ /** Clears the session and redirects to the sign-in path. */
1139
+ readonly signOut: () => Response;
1140
+ }
1141
+ /**
1142
+ * Assemble a site's gate, sign-in handlers, and sign-out from its `auth`
1143
+ * config. Accepts both access modes, so the mounting files never change:
1144
+ * `'public'` yields a pass-everything gate and `501` handlers, a workspace
1145
+ * block yields the live flows for exactly the providers it declares.
1146
+ *
1147
+ * In workspace mode the session-signing secret is required and read from the
1148
+ * environment variable named by `sessionSecretEnv` (default
1149
+ * `DOCS_SESSION_SECRET`); a missing value fails at startup with the variable's
1150
+ * name rather than signing sessions with a guessable fallback.
1151
+ *
1152
+ * @param auth - the `auth` field of `docs.config.ts`
1153
+ * @param options - extra public paths and the environment reader
1154
+ * @returns the assembled handlers
1155
+ * @public
1156
+ */
1157
+ declare function createSiteAuth(auth: DocsConfig['auth'], options?: SiteAuthOptions): SiteAuth;
1158
+
1058
1159
  /**
1059
1160
  * OpenAPI-to-Markdown rendering for LLM corpora.
1060
1161
  *
@@ -1179,4 +1280,4 @@ declare class OpenApiMergeError extends Error {
1179
1280
  */
1180
1281
  declare function mergeOpenApiDocuments(inputs: readonly unknown[], options: MergeOpenApiOptions): OpenApiDocument;
1181
1282
 
1182
- export { AiConfig, type AiMessage, type AskAiDocumentsSource, type AskAiRoute, type AskAiRouteOptions, type AskAiSource, type AuthGateOptions, type BuildSitemapOptions, type CreateMarkdownRouteOptions, type CreateTryItProxyOptions, DocsConfig, type DocsMetadata, type DocsRobots, type DocsSitemapEntry, type DocsTreePlan, type EmailSignInOptions, type FetchLike, type GoogleAuthHandlers, type GoogleAuthOptions, type IndexedDocument, InvalidNavigationError, type MarkdownRoute, type MdxReader, type MdxToMarkdownOptions, type MergeOpenApiOptions, Navigation, OpenApiDocument, OpenApiInfo, OpenApiMergeError, type OpenApiOperationRef, OpenApiServer, type PageSeo, type PlanDocsTreeOptions, type PlannedApiGroup, type PlannedApiPage, type PlannedMeta, ProxyTargetError, SESSION_COOKIE, type SearchDocument, type SearchIndex, type SearchResult, type SecretSignInOptions, type SessionPayload, type SignOutOptions, type SitemapChangeFrequency, type SitemapEntry, ThemeConfig, type TryItEnvelope, type TryItProxyRoute, assertAllowedTarget, buildMetadata, buildRobots, buildSearchIndex, buildSessionCookie, buildSitemap, buildThemeCss, clearSessionCookie, createAskAiRoute, createAuthGate, createEmailSignIn, createGoogleAuth, createMarkdownRoute, createSecretSignIn, createSignOut, createTryItProxy, createTryItProxyRoute, isAllowedEmail, mdxToMarkdown, mergeOpenApiDocuments, openApiOperationToMarkdown, parseNavigation, planDocsTree, readCookie, searchIndex, signSession, unwrapProxyTarget, verifySession };
1283
+ export { AiConfig, type AiMessage, type AskAiDocumentsSource, type AskAiRoute, type AskAiRouteOptions, type AskAiSource, type AuthGateOptions, type BuildSitemapOptions, type CreateMarkdownRouteOptions, type CreateTryItProxyOptions, DocsConfig, type DocsMetadata, type DocsRobots, type DocsSitemapEntry, type DocsTreePlan, type EmailSignInOptions, type FetchLike, type GoogleAuthHandlers, type GoogleAuthOptions, type IndexedDocument, InvalidNavigationError, type MarkdownRoute, type MdxReader, type MdxToMarkdownOptions, type MergeOpenApiOptions, Navigation, OpenApiDocument, OpenApiInfo, OpenApiMergeError, type OpenApiOperationRef, OpenApiServer, type PageSeo, type PlanDocsTreeOptions, type PlannedApiGroup, type PlannedApiPage, type PlannedGroupChild, type PlannedMeta, ProxyTargetError, SESSION_COOKIE, type SearchDocument, type SearchIndex, type SearchResult, type SecretSignInOptions, type SessionPayload, type SignOutOptions, type SiteAuth, type SiteAuthOptions, type SitemapChangeFrequency, type SitemapEntry, ThemeConfig, type TryItEnvelope, type TryItProxyRoute, assertAllowedTarget, buildMetadata, buildRobots, buildSearchIndex, buildSessionCookie, buildSitemap, buildThemeCss, clearSessionCookie, createAskAiRoute, createAuthGate, createEmailSignIn, createGoogleAuth, createMarkdownRoute, createSecretSignIn, createSignOut, createSiteAuth, createTryItProxy, createTryItProxyRoute, isAllowedEmail, mdxToMarkdown, mergeOpenApiDocuments, openApiOperationToMarkdown, parseNavigation, planDocsTree, readCookie, searchIndex, signSession, unwrapProxyTarget, verifySession };
package/dist/index.js CHANGED
@@ -1,3 +1,3 @@
1
- export { AI_PROVIDER_MODELS, AI_PROVIDER_NAMES, AiConfigError, DocsConfigError, InvalidNavigationError, OpenApiMergeError, ProxyTargetError, SESSION_COOKIE, assertAllowedTarget, buildMetadata, buildRobots, buildSearchIndex, buildSessionCookie, buildSitemap, buildThemeCss, clearSessionCookie, createAskAiRoute, createAuthGate, createEmailSignIn, createGoogleAuth, createMarkdownRoute, createSecretSignIn, createSignOut, createTryItProxy, createTryItProxyRoute, defineDocsConfig, isAllowedEmail, mdxToMarkdown, mergeOpenApiDocuments, openApiOperationToMarkdown, parseNavigation, planDocsTree, readCookie, resolveAiConfig, searchIndex, signSession, unwrapProxyTarget, validateDocsConfig, verifySession } from './chunk-3ZX4WIE3.js';
1
+ export { AI_PROVIDER_MODELS, AI_PROVIDER_NAMES, AiConfigError, DocsConfigError, InvalidNavigationError, OpenApiMergeError, ProxyTargetError, SESSION_COOKIE, assertAllowedTarget, buildMetadata, buildRobots, buildSearchIndex, buildSessionCookie, buildSitemap, buildThemeCss, clearSessionCookie, createAskAiRoute, createAuthGate, createEmailSignIn, createGoogleAuth, createMarkdownRoute, createSecretSignIn, createSignOut, createSiteAuth, createTryItProxy, createTryItProxyRoute, defineDocsConfig, isAllowedEmail, mdxToMarkdown, mergeOpenApiDocuments, openApiOperationToMarkdown, parseNavigation, planDocsTree, readCookie, resolveAiConfig, searchIndex, signSession, unwrapProxyTarget, validateDocsConfig, verifySession } from './chunk-JHN5XQPU.js';
2
2
  //# sourceMappingURL=index.js.map
3
3
  //# sourceMappingURL=index.js.map
package/dist/ui.cjs CHANGED
@@ -61,7 +61,7 @@ function apiMethodBadges(methods) {
61
61
  name: /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "api-nav-item", children: [
62
62
  /* @__PURE__ */ jsxRuntime.jsx(MethodBadge, { method }),
63
63
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "api-nav-text", children: node.name })
64
- ] })
64
+ ] }, node.url)
65
65
  };
66
66
  }
67
67
  };