@apiboost/omnispec 1.1.0-next.6 → 1.1.0-next.8

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 (70) hide show
  1. package/README.md +4 -0
  2. package/dist/cjs/asyncapi/index.js +4 -4
  3. package/dist/cjs/chunks/{AsyncApiSpec-TKogbIW6.js → AsyncApiSpec-g7Htcn89.js} +4 -4
  4. package/dist/cjs/chunks/{AsyncApiSpec-TKogbIW6.js.map → AsyncApiSpec-g7Htcn89.js.map} +1 -1
  5. package/dist/cjs/chunks/{Collapsible-BfmA9-9j.js → Collapsible-2_XxRGv-.js} +2 -2
  6. package/dist/cjs/chunks/{Collapsible-BfmA9-9j.js.map → Collapsible-2_XxRGv-.js.map} +1 -1
  7. package/dist/cjs/chunks/{ErrorBoundary-B4HaKqgp.js → ErrorBoundary-DokoK3KD.js} +2 -2
  8. package/dist/cjs/chunks/{ErrorBoundary-B4HaKqgp.js.map → ErrorBoundary-DokoK3KD.js.map} +1 -1
  9. package/dist/cjs/chunks/{OmniSpecRenderer-BUy3S_g-.js → OmniSpecRenderer-BJFT4Wum.js} +6 -6
  10. package/dist/cjs/chunks/{OmniSpecRenderer-BUy3S_g-.js.map → OmniSpecRenderer-BJFT4Wum.js.map} +1 -1
  11. package/dist/cjs/chunks/{OpenApiSpec-gHi0WNaL.js → OpenApiSpec-Cwg1Jecs.js} +27 -17
  12. package/dist/cjs/chunks/OpenApiSpec-Cwg1Jecs.js.map +1 -0
  13. package/dist/cjs/chunks/{OpenIdConnectManual-Ci5ApLr2.js → OpenIdConnectManual-9sxtgylu.js} +30 -4
  14. package/dist/cjs/chunks/OpenIdConnectManual-9sxtgylu.js.map +1 -0
  15. package/dist/cjs/chunks/{useSpecDetector-CEVOaUGf.js → useSpecDetector-CAauxHEE.js} +3 -24
  16. package/dist/cjs/chunks/useSpecDetector-CAauxHEE.js.map +1 -0
  17. package/dist/cjs/chunks/{useSpecFetcher-DSW4ivlk.js → useSpecFetcher-CpXe_imr.js} +2 -2
  18. package/dist/cjs/chunks/useSpecFetcher-CpXe_imr.js.map +1 -0
  19. package/dist/cjs/core/public.js +4 -4
  20. package/dist/cjs/index.js +8 -8
  21. package/dist/cjs/openapi/index.js +5 -5
  22. package/dist/cjs/wc/index.js +4 -4
  23. package/dist/esm/asyncapi/index.js +4 -4
  24. package/dist/esm/chunks/{AsyncApiSpec-DkQzir1h.js → AsyncApiSpec-dPymWhNP.js} +4 -4
  25. package/dist/esm/chunks/{AsyncApiSpec-DkQzir1h.js.map → AsyncApiSpec-dPymWhNP.js.map} +1 -1
  26. package/dist/esm/chunks/{Collapsible-CAN3BvNV.js → Collapsible-DJnJiyJI.js} +2 -2
  27. package/dist/esm/chunks/{Collapsible-CAN3BvNV.js.map → Collapsible-DJnJiyJI.js.map} +1 -1
  28. package/dist/esm/chunks/{ErrorBoundary-Djn7CSf3.js → ErrorBoundary-Ba5GPfFd.js} +2 -2
  29. package/dist/esm/chunks/{ErrorBoundary-Djn7CSf3.js.map → ErrorBoundary-Ba5GPfFd.js.map} +1 -1
  30. package/dist/esm/chunks/{OmniSpecRenderer-eqAJuEto.js → OmniSpecRenderer-B1ysJ64C.js} +6 -6
  31. package/dist/esm/chunks/{OmniSpecRenderer-eqAJuEto.js.map → OmniSpecRenderer-B1ysJ64C.js.map} +1 -1
  32. package/dist/esm/chunks/{OpenApiSpec-BuNo8dSM.js → OpenApiSpec-DvXokteJ.js} +27 -17
  33. package/dist/esm/chunks/OpenApiSpec-DvXokteJ.js.map +1 -0
  34. package/dist/esm/chunks/{OpenIdConnectManual-CzR3QdaN.js → OpenIdConnectManual-CXdMGONf.js} +30 -4
  35. package/dist/esm/chunks/OpenIdConnectManual-CXdMGONf.js.map +1 -0
  36. package/dist/esm/chunks/{useSpecDetector-BvnIv0YM.js → useSpecDetector-YPvOiNwd.js} +3 -24
  37. package/dist/esm/chunks/useSpecDetector-YPvOiNwd.js.map +1 -0
  38. package/dist/esm/chunks/{useSpecFetcher-D1G2eiXA.js → useSpecFetcher-DRDJ1CzD.js} +2 -2
  39. package/dist/esm/chunks/useSpecFetcher-DRDJ1CzD.js.map +1 -0
  40. package/dist/esm/core/public.js +4 -4
  41. package/dist/esm/index.js +8 -8
  42. package/dist/esm/openapi/index.js +5 -5
  43. package/dist/esm/wc/index.js +4 -4
  44. package/dist/types/core/components/Auth/ApiKeyAuth.d.ts.map +1 -1
  45. package/dist/types/core/components/TryIt/TryItPanel.d.ts +2 -0
  46. package/dist/types/core/components/TryIt/TryItPanel.d.ts.map +1 -1
  47. package/dist/types/core/components/common/UpgradePrompt.d.ts.map +1 -1
  48. package/dist/types/core/context/AuthContext.d.ts +13 -0
  49. package/dist/types/core/context/AuthContext.d.ts.map +1 -1
  50. package/dist/types/core/context/ConfigContext.d.ts +5 -0
  51. package/dist/types/core/context/ConfigContext.d.ts.map +1 -1
  52. package/dist/types/core/public.d.ts +2 -1
  53. package/dist/types/core/public.d.ts.map +1 -1
  54. package/dist/types/core/types/auth.types.d.ts +15 -0
  55. package/dist/types/core/types/auth.types.d.ts.map +1 -1
  56. package/dist/types/core/utils/auth-placement.d.ts +31 -0
  57. package/dist/types/core/utils/auth-placement.d.ts.map +1 -0
  58. package/dist/types/openapi/OpenApiSpec.d.ts +1 -1
  59. package/dist/types/openapi/OpenApiSpec.d.ts.map +1 -1
  60. package/dist/wc/standalone.js +1 -1
  61. package/dist/wc/standalone.js.map +1 -1
  62. package/package.json +1 -1
  63. package/dist/cjs/chunks/OpenApiSpec-gHi0WNaL.js.map +0 -1
  64. package/dist/cjs/chunks/OpenIdConnectManual-Ci5ApLr2.js.map +0 -1
  65. package/dist/cjs/chunks/useSpecDetector-CEVOaUGf.js.map +0 -1
  66. package/dist/cjs/chunks/useSpecFetcher-DSW4ivlk.js.map +0 -1
  67. package/dist/esm/chunks/OpenApiSpec-BuNo8dSM.js.map +0 -1
  68. package/dist/esm/chunks/OpenIdConnectManual-CzR3QdaN.js.map +0 -1
  69. package/dist/esm/chunks/useSpecDetector-BvnIv0YM.js.map +0 -1
  70. package/dist/esm/chunks/useSpecFetcher-D1G2eiXA.js.map +0 -1
@@ -1,6 +1,6 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { Component } from 'react';
3
- import { E as ErrorMessage } from './useSpecFetcher-D1G2eiXA.js';
3
+ import { E as ErrorMessage } from './useSpecFetcher-DRDJ1CzD.js';
4
4
 
5
5
  class ErrorBoundary extends Component {
6
6
  constructor(props) {
@@ -31,4 +31,4 @@ class ErrorBoundary extends Component {
31
31
  }
32
32
 
33
33
  export { ErrorBoundary as E };
34
- //# sourceMappingURL=ErrorBoundary-Djn7CSf3.js.map
34
+ //# sourceMappingURL=ErrorBoundary-Ba5GPfFd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ErrorBoundary-Djn7CSf3.js","sources":["../../../src/core/components/common/ErrorBoundary.tsx"],"sourcesContent":["/**\n * This source file is part of the Apiboost(R) OmniSpec Core.\n *\n * Copyright (c) Apiboost, Inc.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * See LICENSE.md and LICENSING.md in the project root for license information.\n */\n\nimport { Component } from 'react'\nimport type { ErrorInfo, ReactNode } from 'react'\nimport { ErrorMessage } from './ErrorMessage'\n\ninterface ErrorBoundaryProps {\n children: ReactNode\n /** Title shown in the fallback UI. */\n title?: string\n /**\n * Custom fallback. Receives the caught error. When omitted, a themed\n * `ErrorMessage` is rendered so a render-phase crash never takes down the\n * host page (required hardening for the embeddable widget).\n */\n fallback?: (error: Error) => ReactNode\n /** Optional hook for logging/telemetry when a render crash is caught. */\n onError?: (error: Error, info: ErrorInfo) => void\n}\n\ninterface ErrorBoundaryState {\n error: Error | null\n}\n\n/**\n * Catches render-phase exceptions from any descendant and renders a graceful\n * fallback instead of crashing the whole React tree. React error boundaries\n * must be class components — there is no hooks equivalent.\n */\nexport class ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {\n constructor(props: ErrorBoundaryProps) {\n super(props)\n this.state = { error: null }\n }\n\n static getDerivedStateFromError(error: Error): ErrorBoundaryState {\n return { error }\n }\n\n componentDidCatch(error: Error, info: ErrorInfo): void {\n this.props.onError?.(error, info)\n // eslint-disable-next-line no-console\n console.error('[omnispec] Render error caught by ErrorBoundary:', error, info)\n }\n\n render(): ReactNode {\n const { error } = this.state\n if (error) {\n if (this.props.fallback) return this.props.fallback(error)\n return (\n <ErrorMessage\n title={this.props.title ?? 'Something went wrong'}\n message={error.message || 'An unexpected error occurred while rendering the documentation.'}\n />\n )\n }\n return this.props.children\n }\n}\n"],"names":[],"mappings":";;;;AAqCO,MAAM,sBAAsB,SAAA,CAAkD;AAAA,EACnF,YAAY,KAAA,EAA2B;AACrC,IAAA,KAAA,CAAM,KAAK,CAAA;AACX,IAAA,IAAA,CAAK,KAAA,GAAQ,EAAE,KAAA,EAAO,IAAA,EAAK;AAAA,EAC7B;AAAA,EAEA,OAAO,yBAAyB,KAAA,EAAkC;AAChE,IAAA,OAAO,EAAE,KAAA,EAAM;AAAA,EACjB;AAAA,EAEA,iBAAA,CAAkB,OAAc,IAAA,EAAuB;AACrD,IAAA,IAAA,CAAK,KAAA,CAAM,OAAA,GAAU,KAAA,EAAO,IAAI,CAAA;AAEhC,IAAA,OAAA,CAAQ,KAAA,CAAM,kDAAA,EAAoD,KAAA,EAAO,IAAI,CAAA;AAAA,EAC/E;AAAA,EAEA,MAAA,GAAoB;AAClB,IAAA,MAAM,EAAE,KAAA,EAAM,GAAI,IAAA,CAAK,KAAA;AACvB,IAAA,IAAI,KAAA,EAAO;AACT,MAAA,IAAI,KAAK,KAAA,CAAM,QAAA,SAAiB,IAAA,CAAK,KAAA,CAAM,SAAS,KAAK,CAAA;AACzD,MAAA,uBACE,GAAA;AAAA,QAAC,YAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAO,IAAA,CAAK,KAAA,CAAM,KAAA,IAAS,sBAAA;AAAA,UAC3B,OAAA,EAAS,MAAM,OAAA,IAAW;AAAA;AAAA,OAC5B;AAAA,IAEJ;AACA,IAAA,OAAO,KAAK,KAAA,CAAM,QAAA;AAAA,EACpB;AACF;;;;"}
1
+ {"version":3,"file":"ErrorBoundary-Ba5GPfFd.js","sources":["../../../src/core/components/common/ErrorBoundary.tsx"],"sourcesContent":["/**\n * This source file is part of the Apiboost(R) OmniSpec Core.\n *\n * Copyright (c) Apiboost, Inc.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * See LICENSE.md and LICENSING.md in the project root for license information.\n */\n\nimport { Component } from 'react'\nimport type { ErrorInfo, ReactNode } from 'react'\nimport { ErrorMessage } from './ErrorMessage'\n\ninterface ErrorBoundaryProps {\n children: ReactNode\n /** Title shown in the fallback UI. */\n title?: string\n /**\n * Custom fallback. Receives the caught error. When omitted, a themed\n * `ErrorMessage` is rendered so a render-phase crash never takes down the\n * host page (required hardening for the embeddable widget).\n */\n fallback?: (error: Error) => ReactNode\n /** Optional hook for logging/telemetry when a render crash is caught. */\n onError?: (error: Error, info: ErrorInfo) => void\n}\n\ninterface ErrorBoundaryState {\n error: Error | null\n}\n\n/**\n * Catches render-phase exceptions from any descendant and renders a graceful\n * fallback instead of crashing the whole React tree. React error boundaries\n * must be class components — there is no hooks equivalent.\n */\nexport class ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {\n constructor(props: ErrorBoundaryProps) {\n super(props)\n this.state = { error: null }\n }\n\n static getDerivedStateFromError(error: Error): ErrorBoundaryState {\n return { error }\n }\n\n componentDidCatch(error: Error, info: ErrorInfo): void {\n this.props.onError?.(error, info)\n // eslint-disable-next-line no-console\n console.error('[omnispec] Render error caught by ErrorBoundary:', error, info)\n }\n\n render(): ReactNode {\n const { error } = this.state\n if (error) {\n if (this.props.fallback) return this.props.fallback(error)\n return (\n <ErrorMessage\n title={this.props.title ?? 'Something went wrong'}\n message={error.message || 'An unexpected error occurred while rendering the documentation.'}\n />\n )\n }\n return this.props.children\n }\n}\n"],"names":[],"mappings":";;;;AAqCO,MAAM,sBAAsB,SAAA,CAAkD;AAAA,EACnF,YAAY,KAAA,EAA2B;AACrC,IAAA,KAAA,CAAM,KAAK,CAAA;AACX,IAAA,IAAA,CAAK,KAAA,GAAQ,EAAE,KAAA,EAAO,IAAA,EAAK;AAAA,EAC7B;AAAA,EAEA,OAAO,yBAAyB,KAAA,EAAkC;AAChE,IAAA,OAAO,EAAE,KAAA,EAAM;AAAA,EACjB;AAAA,EAEA,iBAAA,CAAkB,OAAc,IAAA,EAAuB;AACrD,IAAA,IAAA,CAAK,KAAA,CAAM,OAAA,GAAU,KAAA,EAAO,IAAI,CAAA;AAEhC,IAAA,OAAA,CAAQ,KAAA,CAAM,kDAAA,EAAoD,KAAA,EAAO,IAAI,CAAA;AAAA,EAC/E;AAAA,EAEA,MAAA,GAAoB;AAClB,IAAA,MAAM,EAAE,KAAA,EAAM,GAAI,IAAA,CAAK,KAAA;AACvB,IAAA,IAAI,KAAA,EAAO;AACT,MAAA,IAAI,KAAK,KAAA,CAAM,QAAA,SAAiB,IAAA,CAAK,KAAA,CAAM,SAAS,KAAK,CAAA;AACzD,MAAA,uBACE,GAAA;AAAA,QAAC,YAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAO,IAAA,CAAK,KAAA,CAAM,KAAA,IAAS,sBAAA;AAAA,UAC3B,OAAA,EAAS,MAAM,OAAA,IAAW;AAAA;AAAA,OAC5B;AAAA,IAEJ;AACA,IAAA,OAAO,KAAK,KAAA,CAAM,QAAA;AAAA,EACpB;AACF;;;;"}
@@ -1,14 +1,14 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { lazy, useMemo, Suspense } from 'react';
3
- import { a as useSpecFetcher, T as ThemeProvider, L as LoadingScreen, b as SpecStatusScreen, E as ErrorMessage } from './useSpecFetcher-D1G2eiXA.js';
4
- import { u as useSpecDetector, U as UpgradePrompt } from './useSpecDetector-BvnIv0YM.js';
5
- import { E as ErrorBoundary } from './ErrorBoundary-Djn7CSf3.js';
3
+ import { a as useSpecFetcher, T as ThemeProvider, L as LoadingScreen, b as SpecStatusScreen, E as ErrorMessage } from './useSpecFetcher-DRDJ1CzD.js';
4
+ import { u as useSpecDetector, U as UpgradePrompt } from './useSpecDetector-YPvOiNwd.js';
5
+ import { E as ErrorBoundary } from './ErrorBoundary-Ba5GPfFd.js';
6
6
 
7
7
  const OpenApiSpec = lazy(
8
- () => import('./OpenApiSpec-BuNo8dSM.js').then(function (n) { return n.b; }).then((m) => ({ default: m.OpenApiSpec }))
8
+ () => import('./OpenApiSpec-DvXokteJ.js').then(function (n) { return n.b; }).then((m) => ({ default: m.OpenApiSpec }))
9
9
  );
10
10
  const AsyncApiSpec = lazy(
11
- () => import('./AsyncApiSpec-DkQzir1h.js').then((m) => ({ default: m.AsyncApiSpec }))
11
+ () => import('./AsyncApiSpec-dPymWhNP.js').then((m) => ({ default: m.AsyncApiSpec }))
12
12
  );
13
13
  function OmniSpecRenderer({ specType, spec, theme, docsUrl, upgradeUrl, pro, ...props }) {
14
14
  const { data: rawContent, state } = useSpecFetcher(spec);
@@ -99,4 +99,4 @@ function SpecRenderer({ type, props, registeredRenderers, docsUrl, upgradeUrl })
99
99
  }
100
100
 
101
101
  export { OmniSpecRenderer as O };
102
- //# sourceMappingURL=OmniSpecRenderer-eqAJuEto.js.map
102
+ //# sourceMappingURL=OmniSpecRenderer-B1ysJ64C.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"OmniSpecRenderer-eqAJuEto.js","sources":["../../../src/unified/OmniSpecRenderer.tsx"],"sourcesContent":["/**\n * This source file is part of the Apiboost(R) OmniSpec Core.\n *\n * Copyright (c) Apiboost, Inc.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * See LICENSE.md and LICENSING.md in the project root for license information.\n */\n\nimport { lazy, Suspense, useMemo } from 'react'\nimport type { ComponentType } from 'react'\nimport type { BaseSpecProps } from '../core/types/common.types'\nimport type { SpecType } from '../core/types/spec-detection.types'\nimport { useSpecFetcher } from '../core/hooks/useSpecFetcher'\nimport { useSpecDetector } from '../core/hooks/useSpecDetector'\nimport { ThemeProvider } from '../core/themes/ThemeProvider'\nimport { LoadingScreen } from '../core/components/common/LoadingScreen'\nimport { ErrorMessage } from '../core/components/common/ErrorMessage'\nimport { ErrorBoundary } from '../core/components/common/ErrorBoundary'\nimport { UpgradePrompt } from '../core/components/common/UpgradePrompt'\nimport { SpecStatusScreen } from '../core/components/Layout/SpecStatusScreen'\n\nconst OpenApiSpec = lazy(() =>\n import('../openapi/OpenApiSpec').then((m) => ({ default: m.OpenApiSpec })),\n)\nconst AsyncApiSpec = lazy(() =>\n import('../asyncapi/AsyncApiSpec').then((m) => ({ default: m.AsyncApiSpec })),\n)\n\nexport interface OmniSpecRendererProps extends BaseSpecProps {\n specType?: SpecType\n docsUrl?: string\n upgradeUrl?: string\n}\n\nexport function OmniSpecRenderer({ specType, spec, theme, docsUrl, upgradeUrl, pro, ...props }: OmniSpecRendererProps) {\n const { data: rawContent, state } = useSpecFetcher<string>(spec)\n const detected = useSpecDetector(rawContent, specType)\n const proRenderers = useMemo(() => pro?.renderers ?? new Map(), [pro?.renderers])\n\n if (state.status === 'loading') {\n return (\n <ThemeProvider theme={theme}>\n <LoadingScreen />\n </ThemeProvider>\n )\n }\n\n // Non-fatal spec problems (failed load, unrecognized content) render in the\n // content area while the host's nav/chrome stays put, so the user can\n // navigate away. Fatal render errors still use the ErrorBoundary fallback.\n if (state.status === 'error') {\n return (\n <SpecStatusScreen\n theme={theme}\n layout={props.layout}\n sidebarPosition={props.sidebarPosition}\n slots={props.slots}\n sidebarNav={props.sidebarNav}\n premiumThemingEnabled={pro?.premiumThemingEnabled ?? false}\n >\n <ErrorMessage title=\"Failed to load specification\" message={state.error} />\n </SpecStatusScreen>\n )\n }\n\n if (!detected) {\n return (\n <SpecStatusScreen\n theme={theme}\n layout={props.layout}\n sidebarPosition={props.sidebarPosition}\n slots={props.slots}\n sidebarNav={props.sidebarNav}\n premiumThemingEnabled={pro?.premiumThemingEnabled ?? false}\n >\n <ErrorMessage\n title=\"Unable to detect specification type\"\n message=\"The provided content could not be recognized as a supported API specification (OpenAPI, AsyncAPI, GraphQL, SOAP, or gRPC).\"\n />\n </SpecStatusScreen>\n )\n }\n\n const specProps = { ...props, spec, theme, pro }\n\n return (\n <ErrorBoundary\n fallback={(error) => (\n <ThemeProvider theme={theme}>\n <ErrorMessage\n title=\"Failed to render specification\"\n message={error.message || 'An unexpected error occurred while rendering the documentation.'}\n />\n </ThemeProvider>\n )}\n >\n <Suspense\n fallback={\n <ThemeProvider theme={theme}>\n <LoadingScreen />\n </ThemeProvider>\n }\n >\n <SpecRenderer\n type={detected.type}\n props={specProps}\n registeredRenderers={proRenderers}\n docsUrl={docsUrl}\n upgradeUrl={upgradeUrl}\n />\n </Suspense>\n </ErrorBoundary>\n )\n}\n\ninterface SpecRendererProps {\n type: SpecType\n props: BaseSpecProps\n registeredRenderers: Map<SpecType, ComponentType<BaseSpecProps>>\n docsUrl?: string\n upgradeUrl?: string\n}\n\nfunction SpecRenderer({ type, props, registeredRenderers, docsUrl, upgradeUrl }: SpecRendererProps) {\n const RegisteredRenderer = registeredRenderers.get(type)\n if (RegisteredRenderer) {\n return <RegisteredRenderer {...props} />\n }\n\n switch (type) {\n case 'openapi-2':\n case 'openapi-3':\n return <OpenApiSpec {...props} />\n case 'asyncapi-2':\n case 'asyncapi-3':\n return <AsyncApiSpec {...props} />\n default:\n return (\n <ThemeProvider theme={props.theme}>\n <UpgradePrompt specType={type} docsUrl={docsUrl} upgradeUrl={upgradeUrl} />\n </ThemeProvider>\n )\n }\n}\n"],"names":[],"mappings":";;;;;;AAuBA,MAAM,WAAA,GAAc,IAAA;AAAA,EAAK,MACvB,OAAO,2BAAwB,oCAAA,CAAE,IAAA,CAAK,CAAC,CAAA,MAAO,EAAE,OAAA,EAAS,CAAA,CAAE,WAAA,EAAY,CAAE;AAC3E,CAAA;AACA,MAAM,YAAA,GAAe,IAAA;AAAA,EAAK,MACxB,OAAO,4BAA0B,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,MAAO,EAAE,OAAA,EAAS,CAAA,CAAE,YAAA,EAAa,CAAE;AAC9E,CAAA;AAQO,SAAS,gBAAA,CAAiB,EAAE,QAAA,EAAU,IAAA,EAAM,KAAA,EAAO,SAAS,UAAA,EAAY,GAAA,EAAK,GAAG,KAAA,EAAM,EAA0B;AACrH,EAAA,MAAM,EAAE,IAAA,EAAM,UAAA,EAAY,KAAA,EAAM,GAAI,eAAuB,IAAI,CAAA;AAC/D,EAAA,MAAM,QAAA,GAAW,eAAA,CAAgB,UAAA,EAAY,QAAQ,CAAA;AACrD,EAAA,MAAM,YAAA,GAAe,OAAA,CAAQ,MAAM,GAAA,EAAK,SAAA,oBAAa,IAAI,GAAA,EAAI,EAAG,CAAC,GAAA,EAAK,SAAS,CAAC,CAAA;AAEhF,EAAA,IAAI,KAAA,CAAM,WAAW,SAAA,EAAW;AAC9B,IAAA,uBACE,GAAA,CAAC,aAAA,EAAA,EAAc,KAAA,EACb,QAAA,kBAAA,GAAA,CAAC,iBAAc,CAAA,EACjB,CAAA;AAAA,EAEJ;AAKA,EAAA,IAAI,KAAA,CAAM,WAAW,OAAA,EAAS;AAC5B,IAAA,uBACE,GAAA;AAAA,MAAC,gBAAA;AAAA,MAAA;AAAA,QACC,KAAA;AAAA,QACA,QAAQ,KAAA,CAAM,MAAA;AAAA,QACd,iBAAiB,KAAA,CAAM,eAAA;AAAA,QACvB,OAAO,KAAA,CAAM,KAAA;AAAA,QACb,YAAY,KAAA,CAAM,UAAA;AAAA,QAClB,qBAAA,EAAuB,KAAK,qBAAA,IAAyB,KAAA;AAAA,QAErD,8BAAC,YAAA,EAAA,EAAa,KAAA,EAAM,8BAAA,EAA+B,OAAA,EAAS,MAAM,KAAA,EAAO;AAAA;AAAA,KAC3E;AAAA,EAEJ;AAEA,EAAA,IAAI,CAAC,QAAA,EAAU;AACb,IAAA,uBACE,GAAA;AAAA,MAAC,gBAAA;AAAA,MAAA;AAAA,QACC,KAAA;AAAA,QACA,QAAQ,KAAA,CAAM,MAAA;AAAA,QACd,iBAAiB,KAAA,CAAM,eAAA;AAAA,QACvB,OAAO,KAAA,CAAM,KAAA;AAAA,QACb,YAAY,KAAA,CAAM,UAAA;AAAA,QAClB,qBAAA,EAAuB,KAAK,qBAAA,IAAyB,KAAA;AAAA,QAErD,QAAA,kBAAA,GAAA;AAAA,UAAC,YAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAM,qCAAA;AAAA,YACN,OAAA,EAAQ;AAAA;AAAA;AACV;AAAA,KACF;AAAA,EAEJ;AAEA,EAAA,MAAM,YAAY,EAAE,GAAG,KAAA,EAAO,IAAA,EAAM,OAAO,GAAA,EAAI;AAE/C,EAAA,uBACE,GAAA;AAAA,IAAC,aAAA;AAAA,IAAA;AAAA,MACC,QAAA,EAAU,CAAC,KAAA,qBACT,GAAA,CAAC,iBAAc,KAAA,EACb,QAAA,kBAAA,GAAA;AAAA,QAAC,YAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAM,gCAAA;AAAA,UACN,OAAA,EAAS,MAAM,OAAA,IAAW;AAAA;AAAA,OAC5B,EACF,CAAA;AAAA,MAGF,QAAA,kBAAA,GAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,0BACE,GAAA,CAAC,aAAA,EAAA,EAAc,KAAA,EACb,QAAA,kBAAA,GAAA,CAAC,iBAAc,CAAA,EACjB,CAAA;AAAA,UAGF,QAAA,kBAAA,GAAA;AAAA,YAAC,YAAA;AAAA,YAAA;AAAA,cACC,MAAM,QAAA,CAAS,IAAA;AAAA,cACf,KAAA,EAAO,SAAA;AAAA,cACP,mBAAA,EAAqB,YAAA;AAAA,cACrB,OAAA;AAAA,cACA;AAAA;AAAA;AACF;AAAA;AACF;AAAA,GACF;AAEJ;AAUA,SAAS,aAAa,EAAE,IAAA,EAAM,OAAO,mBAAA,EAAqB,OAAA,EAAS,YAAW,EAAsB;AAClG,EAAA,MAAM,kBAAA,GAAqB,mBAAA,CAAoB,GAAA,CAAI,IAAI,CAAA;AACvD,EAAA,IAAI,kBAAA,EAAoB;AACtB,IAAA,uBAAO,GAAA,CAAC,kBAAA,EAAA,EAAoB,GAAG,KAAA,EAAO,CAAA;AAAA,EACxC;AAEA,EAAA,QAAQ,IAAA;AAAM,IACZ,KAAK,WAAA;AAAA,IACL,KAAK,WAAA;AACH,MAAA,uBAAO,GAAA,CAAC,WAAA,EAAA,EAAa,GAAG,KAAA,EAAO,CAAA;AAAA,IACjC,KAAK,YAAA;AAAA,IACL,KAAK,YAAA;AACH,MAAA,uBAAO,GAAA,CAAC,YAAA,EAAA,EAAc,GAAG,KAAA,EAAO,CAAA;AAAA,IAClC;AACE,MAAA,uBACE,GAAA,CAAC,aAAA,EAAA,EAAc,KAAA,EAAO,KAAA,CAAM,KAAA,EAC1B,QAAA,kBAAA,GAAA,CAAC,aAAA,EAAA,EAAc,QAAA,EAAU,IAAA,EAAM,OAAA,EAAkB,UAAA,EAAwB,CAAA,EAC3E,CAAA;AAAA;AAGR;;;;"}
1
+ {"version":3,"file":"OmniSpecRenderer-B1ysJ64C.js","sources":["../../../src/unified/OmniSpecRenderer.tsx"],"sourcesContent":["/**\n * This source file is part of the Apiboost(R) OmniSpec Core.\n *\n * Copyright (c) Apiboost, Inc.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * See LICENSE.md and LICENSING.md in the project root for license information.\n */\n\nimport { lazy, Suspense, useMemo } from 'react'\nimport type { ComponentType } from 'react'\nimport type { BaseSpecProps } from '../core/types/common.types'\nimport type { SpecType } from '../core/types/spec-detection.types'\nimport { useSpecFetcher } from '../core/hooks/useSpecFetcher'\nimport { useSpecDetector } from '../core/hooks/useSpecDetector'\nimport { ThemeProvider } from '../core/themes/ThemeProvider'\nimport { LoadingScreen } from '../core/components/common/LoadingScreen'\nimport { ErrorMessage } from '../core/components/common/ErrorMessage'\nimport { ErrorBoundary } from '../core/components/common/ErrorBoundary'\nimport { UpgradePrompt } from '../core/components/common/UpgradePrompt'\nimport { SpecStatusScreen } from '../core/components/Layout/SpecStatusScreen'\n\nconst OpenApiSpec = lazy(() =>\n import('../openapi/OpenApiSpec').then((m) => ({ default: m.OpenApiSpec })),\n)\nconst AsyncApiSpec = lazy(() =>\n import('../asyncapi/AsyncApiSpec').then((m) => ({ default: m.AsyncApiSpec })),\n)\n\nexport interface OmniSpecRendererProps extends BaseSpecProps {\n specType?: SpecType\n docsUrl?: string\n upgradeUrl?: string\n}\n\nexport function OmniSpecRenderer({ specType, spec, theme, docsUrl, upgradeUrl, pro, ...props }: OmniSpecRendererProps) {\n const { data: rawContent, state } = useSpecFetcher<string>(spec)\n const detected = useSpecDetector(rawContent, specType)\n const proRenderers = useMemo(() => pro?.renderers ?? new Map(), [pro?.renderers])\n\n if (state.status === 'loading') {\n return (\n <ThemeProvider theme={theme}>\n <LoadingScreen />\n </ThemeProvider>\n )\n }\n\n // Non-fatal spec problems (failed load, unrecognized content) render in the\n // content area while the host's nav/chrome stays put, so the user can\n // navigate away. Fatal render errors still use the ErrorBoundary fallback.\n if (state.status === 'error') {\n return (\n <SpecStatusScreen\n theme={theme}\n layout={props.layout}\n sidebarPosition={props.sidebarPosition}\n slots={props.slots}\n sidebarNav={props.sidebarNav}\n premiumThemingEnabled={pro?.premiumThemingEnabled ?? false}\n >\n <ErrorMessage title=\"Failed to load specification\" message={state.error} />\n </SpecStatusScreen>\n )\n }\n\n if (!detected) {\n return (\n <SpecStatusScreen\n theme={theme}\n layout={props.layout}\n sidebarPosition={props.sidebarPosition}\n slots={props.slots}\n sidebarNav={props.sidebarNav}\n premiumThemingEnabled={pro?.premiumThemingEnabled ?? false}\n >\n <ErrorMessage\n title=\"Unable to detect specification type\"\n message=\"The provided content could not be recognized as a supported API specification (OpenAPI, AsyncAPI, GraphQL, SOAP, or gRPC).\"\n />\n </SpecStatusScreen>\n )\n }\n\n const specProps = { ...props, spec, theme, pro }\n\n return (\n <ErrorBoundary\n fallback={(error) => (\n <ThemeProvider theme={theme}>\n <ErrorMessage\n title=\"Failed to render specification\"\n message={error.message || 'An unexpected error occurred while rendering the documentation.'}\n />\n </ThemeProvider>\n )}\n >\n <Suspense\n fallback={\n <ThemeProvider theme={theme}>\n <LoadingScreen />\n </ThemeProvider>\n }\n >\n <SpecRenderer\n type={detected.type}\n props={specProps}\n registeredRenderers={proRenderers}\n docsUrl={docsUrl}\n upgradeUrl={upgradeUrl}\n />\n </Suspense>\n </ErrorBoundary>\n )\n}\n\ninterface SpecRendererProps {\n type: SpecType\n props: BaseSpecProps\n registeredRenderers: Map<SpecType, ComponentType<BaseSpecProps>>\n docsUrl?: string\n upgradeUrl?: string\n}\n\nfunction SpecRenderer({ type, props, registeredRenderers, docsUrl, upgradeUrl }: SpecRendererProps) {\n const RegisteredRenderer = registeredRenderers.get(type)\n if (RegisteredRenderer) {\n return <RegisteredRenderer {...props} />\n }\n\n switch (type) {\n case 'openapi-2':\n case 'openapi-3':\n return <OpenApiSpec {...props} />\n case 'asyncapi-2':\n case 'asyncapi-3':\n return <AsyncApiSpec {...props} />\n default:\n return (\n <ThemeProvider theme={props.theme}>\n <UpgradePrompt specType={type} docsUrl={docsUrl} upgradeUrl={upgradeUrl} />\n </ThemeProvider>\n )\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1,11 +1,11 @@
1
1
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
2
2
  import { useState, useCallback, useRef, useEffect, useMemo, useId, memo } from 'react';
3
3
  import { css, cx } from '@emotion/css';
4
- import { j as useConfig, I as Icon, a as useSpecFetcher, m as mq, B as Button, S as SpecType, r as resolveSchemaStyle, T as ThemeProvider, L as LoadingScreen, b as SpecStatusScreen, E as ErrorMessage, N as NavTree, h as buildSidebar, C as ConfigProvider, e as DocLayout } from './useSpecFetcher-D1G2eiXA.js';
5
- import { M as MarkdownRenderer, T as Tabs, x as generateExample, f as MethodBar, t as SchemaTree, A as schemaToNodes, K as buildConstraints, J as ExampleSelector, I as getNamedExamples, C as CodeBlock, d as ExpandableCard, R as ReferenceLayout, a as Collapsible, D as useHashScroll, w as flattenNavItemIds, G as useScrollSpy, u as SearchBar, L as ExpandProvider, v as SpecToolbar, z as resolveDownloadLink } from './Collapsible-CAN3BvNV.js';
6
- import { e as authStyles, d as SecretInput, u as useAuth, O as OAuth2AuthManual, a as OpenIdConnectManual, g as ApiKeyAuth, M as Modal, l as loadTryItState, h as saveTryItState, f as sendProxiedRequest, s as sendDirectRequest, C as CodeSamples, b as ResponseViewer, i as clearTryItState, L as LinkableHeading, S as SamplesPanel, R as ReferenceOperationDetail, c as ResponsiveColumns, A as AuthProvider } from './OpenIdConnectManual-CzR3QdaN.js';
4
+ import { j as useConfig, I as Icon, a as useSpecFetcher, m as mq, B as Button, S as SpecType, r as resolveSchemaStyle, T as ThemeProvider, L as LoadingScreen, b as SpecStatusScreen, E as ErrorMessage, N as NavTree, h as buildSidebar, C as ConfigProvider, e as DocLayout } from './useSpecFetcher-DRDJ1CzD.js';
5
+ import { M as MarkdownRenderer, T as Tabs, x as generateExample, f as MethodBar, t as SchemaTree, A as schemaToNodes, K as buildConstraints, J as ExampleSelector, I as getNamedExamples, C as CodeBlock, d as ExpandableCard, R as ReferenceLayout, a as Collapsible, D as useHashScroll, w as flattenNavItemIds, G as useScrollSpy, u as SearchBar, L as ExpandProvider, v as SpecToolbar, z as resolveDownloadLink } from './Collapsible-DJnJiyJI.js';
6
+ import { e as authStyles, d as SecretInput, u as useAuth, O as OAuth2AuthManual, a as OpenIdConnectManual, g as ApiKeyAuth, M as Modal, l as loadTryItState, h as saveTryItState, f as sendProxiedRequest, s as sendDirectRequest, C as CodeSamples, b as ResponseViewer, i as clearTryItState, L as LinkableHeading, S as SamplesPanel, R as ReferenceOperationDetail, c as ResponsiveColumns, A as AuthProvider } from './OpenIdConnectManual-CXdMGONf.js';
7
7
  import { r as resolveRefs, p as parse } from './ref-resolver-B0C36NuQ.js';
8
- import { E as ErrorBoundary } from './ErrorBoundary-Djn7CSf3.js';
8
+ import { E as ErrorBoundary } from './ErrorBoundary-Ba5GPfFd.js';
9
9
 
10
10
  const AUTH_SCHEME_LABELS = {
11
11
  apiKey: "API Key",
@@ -1203,8 +1203,10 @@ function TryItPanel({
1203
1203
  onRequest,
1204
1204
  onResponse
1205
1205
  }) {
1206
- const { allowTryIt, proxyUrl, proxyHeaders, specKey, tryItPersistTtl } = useConfig();
1207
- const { getAuthHeaders, appliedAuth, openAuthPanel, hasAuth, clearAuth } = useAuth();
1206
+ const { allowTryIt, proxyUrl, proxyHeaders, specKey, tryItPersistTtl, onTryItRequest, onTryItResponse } = useConfig();
1207
+ const emitRequest = onRequest ?? onTryItRequest;
1208
+ const emitResponse = onResponse ?? onTryItResponse;
1209
+ const { getAuthPlacement, appliedAuth, openAuthPanel, hasAuth, clearAuth } = useAuth();
1208
1210
  const authorized = appliedAuth.size > 0;
1209
1211
  const persistenceDisabled = tryItPersistTtl === 0;
1210
1212
  const operationKey = `${method.toUpperCase()} ${path}`;
@@ -1304,8 +1306,9 @@ function TryItPanel({
1304
1306
  });
1305
1307
  }, [exampleSignature]);
1306
1308
  const buildRequest = useCallback(() => {
1307
- const authHeaders = getAuthHeaders();
1308
- const headers = { ...authHeaders };
1309
+ const authPlacement = getAuthPlacement();
1310
+ const headers = { ...authPlacement.headers };
1311
+ if (authPlacement.cookieHeader) headers["Cookie"] = authPlacement.cookieHeader;
1309
1312
  for (const param of parameters) {
1310
1313
  if (param.in === "header" && paramValues[param.name]) {
1311
1314
  headers[param.name] = paramValues[param.name];
@@ -1320,7 +1323,7 @@ function TryItPanel({
1320
1323
  const isUrlEncoded = contentType.includes("application/x-www-form-urlencoded");
1321
1324
  const hasFormFieldValues = Object.values(multipartFields).some((v) => v !== null && v !== "");
1322
1325
  const pathParams = {};
1323
- const queryParams = {};
1326
+ const queryParams = { ...authPlacement.queryParams };
1324
1327
  for (const param of parameters) {
1325
1328
  const val = paramValues[param.name];
1326
1329
  if (!val) continue;
@@ -1377,21 +1380,21 @@ function TryItPanel({
1377
1380
  body: encodedBody,
1378
1381
  bodyType: contentType
1379
1382
  };
1380
- }, [parameters, paramValues, body, contentType, multipartFields, customHeaders, method, path, getAuthHeaders]);
1383
+ }, [parameters, paramValues, body, contentType, multipartFields, customHeaders, method, path, getAuthPlacement]);
1381
1384
  const handleSend = useCallback(async () => {
1382
1385
  setLoading(true);
1383
1386
  setError(void 0);
1384
1387
  setResponse(null);
1385
1388
  const request2 = buildRequest();
1386
- onRequest?.(request2);
1387
1389
  const fullRequest = {
1388
1390
  ...request2,
1389
1391
  url: serverUrl + request2.url
1390
1392
  };
1393
+ emitRequest?.(fullRequest);
1391
1394
  try {
1392
1395
  const res = proxyUrl ? await sendProxiedRequest(proxyUrl, fullRequest, proxyHeaders) : await sendDirectRequest(fullRequest);
1393
1396
  setResponse(res);
1394
- onResponse?.(res);
1397
+ emitResponse?.(res);
1395
1398
  } catch (err) {
1396
1399
  const message = err instanceof Error ? err.message : "Request failed";
1397
1400
  if (!proxyUrl && message.includes("Failed to fetch")) {
@@ -1404,13 +1407,15 @@ function TryItPanel({
1404
1407
  } finally {
1405
1408
  setLoading(false);
1406
1409
  }
1407
- }, [proxyUrl, proxyHeaders, buildRequest, serverUrl, onRequest, onResponse]);
1410
+ }, [proxyUrl, proxyHeaders, buildRequest, serverUrl, emitRequest, emitResponse]);
1408
1411
  const schemaBody = useMemo(() => {
1409
1412
  if (!requestBodySchema) return void 0;
1410
1413
  return JSON.stringify(generateExample(requestBodySchema), null, 2);
1411
1414
  }, [requestBodySchema]);
1412
1415
  if (!allowTryIt) return null;
1413
1416
  const request = buildRequest();
1417
+ const cookieAuthNames = Object.keys(getAuthPlacement().cookies);
1418
+ const cookieAuthDirect = !proxyUrl && cookieAuthNames.length > 0;
1414
1419
  const hasBodyMethods = ["post", "put", "patch"].includes(method.toLowerCase());
1415
1420
  const codeSampleRequest = useMemo(() => {
1416
1421
  const r = { ...request };
@@ -1493,6 +1498,11 @@ function TryItPanel({
1493
1498
  children: loading ? "Sending..." : "Send"
1494
1499
  }
1495
1500
  ) }),
1501
+ cookieAuthDirect && /* @__PURE__ */ jsx("div", { className: validationMsgStyle, role: "status", children: /* @__PURE__ */ jsxs("span", { children: [
1502
+ "Browsers cannot set cookies on cross-origin requests, so your cookie credential (",
1503
+ cookieAuthNames.join(", "),
1504
+ ") will not be sent in direct mode. Configure a proxyUrl to send it, or use the code sample."
1505
+ ] }) }),
1496
1506
  (sendBlocked || authMismatch) && /* @__PURE__ */ jsxs("div", { className: validationMsgStyle, role: "status", children: [
1497
1507
  missingRequiredParams.length > 0 && /* @__PURE__ */ jsxs("span", { children: [
1498
1508
  "Required: ",
@@ -2801,8 +2811,8 @@ function OpenApiSpec({
2801
2811
  sidebarNav,
2802
2812
  slots = {},
2803
2813
  onSpecLoaded,
2804
- onTryItRequest: _onTryItRequest,
2805
- onTryItResponse: _onTryItResponse,
2814
+ onTryItRequest,
2815
+ onTryItResponse,
2806
2816
  className
2807
2817
  }) {
2808
2818
  const refOptions = useMemo(() => ({
@@ -3014,7 +3024,7 @@ function OpenApiSpec({
3014
3024
  ] });
3015
3025
  const sidebar = buildSidebar(sidebarNav, specNav);
3016
3026
  const resolvedDownloadLink = resolveDownloadLink(downloadLink, spec);
3017
- return /* @__PURE__ */ jsx(ConfigProvider, { config: { proxyUrl, proxyHeaders, oauth, allowTryIt, layout, sidebarPosition, tryItLayout, defaultExpandOperations, displayMode: resolvedDisplayMode, schemaStyle: resolvedSchemaStyle, slots, proRenderers: pro?.renderers ?? /* @__PURE__ */ new Map(), premiumThemingEnabled: pro?.premiumThemingEnabled ?? false, interactiveAuth: pro?.interactiveAuth, interactiveOAuth, specKey: `${parsedSpec.title}@${parsedSpec.version}`, tryItPersistTtl }, children: /* @__PURE__ */ jsx(ExpandProvider, { expandAll: allExpanded, expandGeneration, children: /* @__PURE__ */ jsx(ThemeProvider, { theme, children: /* @__PURE__ */ jsx(AuthProvider, { schemes: parsedSpec.securitySchemes, children: /* @__PURE__ */ jsxs("div", { className: `omnispec-openapi ${className ?? ""}`, children: [
3027
+ return /* @__PURE__ */ jsx(ConfigProvider, { config: { proxyUrl, proxyHeaders, oauth, allowTryIt, layout, sidebarPosition, tryItLayout, defaultExpandOperations, displayMode: resolvedDisplayMode, schemaStyle: resolvedSchemaStyle, slots, proRenderers: pro?.renderers ?? /* @__PURE__ */ new Map(), premiumThemingEnabled: pro?.premiumThemingEnabled ?? false, interactiveAuth: pro?.interactiveAuth, interactiveOAuth, specKey: `${parsedSpec.title}@${parsedSpec.version}`, tryItPersistTtl, onTryItRequest, onTryItResponse }, children: /* @__PURE__ */ jsx(ExpandProvider, { expandAll: allExpanded, expandGeneration, children: /* @__PURE__ */ jsx(ThemeProvider, { theme, children: /* @__PURE__ */ jsx(AuthProvider, { schemes: parsedSpec.securitySchemes, children: /* @__PURE__ */ jsxs("div", { className: `omnispec-openapi ${className ?? ""}`, children: [
3018
3028
  /* @__PURE__ */ jsx(AuthPanelModal, { serverUrl }),
3019
3029
  /* @__PURE__ */ jsx(ErrorBoundary, { title: "Failed to render this API reference", children: /* @__PURE__ */ jsx(
3020
3030
  DocLayout,
@@ -3150,4 +3160,4 @@ var OpenApiSpec$1 = /*#__PURE__*/Object.freeze({
3150
3160
  });
3151
3161
 
3152
3162
  export { OpenApiSpec as O, authSchemeLabel as a, OpenApiSpec$1 as b };
3153
- //# sourceMappingURL=OpenApiSpec-BuNo8dSM.js.map
3163
+ //# sourceMappingURL=OpenApiSpec-DvXokteJ.js.map