@redocly/api-docs 0.2.0-next.6 → 0.2.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.
- package/lib/RedocStandalone.d.ts +2 -2
- package/lib/RedocStandalone.js +1 -1
- package/lib/RedoclyApiDocs.js +1 -1
- package/lib/RedoclyApiDocsStandalone.d.ts +2 -2
- package/lib/RedoclyApiDocsStandalone.js +3 -3
- package/lib/adapters/graphql/group/utils.js +1 -1
- package/lib/adapters/openapi/configure/resolve-request-values.js +1 -1
- package/lib/adapters/openapi/items/operation/content.js +1 -1
- package/lib/components/Header/HeaderItem.js +5 -5
- package/lib/components/Header/HeaderPageActions.d.ts +4 -0
- package/lib/components/Header/HeaderPageActions.js +1 -0
- package/lib/components/Header/PageActions.d.ts +4 -0
- package/lib/components/Header/PageActions.js +11 -0
- package/lib/components/ItemContent/hooks.js +1 -1
- package/lib/components/Mcp/McpPrompt.js +1 -1
- package/lib/components/Mcp/McpTool.js +1 -1
- package/lib/components/Mcp/utils.d.ts +1 -1
- package/lib/components/Mcp/utils.js +1 -1
- package/lib/components/Schema/views/DiscriminatorPropertyRow.js +1 -1
- package/lib/components/Schema/views/Examples.js +1 -1
- package/lib/components/Security/SecurityFlowDetail.js +1 -1
- package/lib/components/common/DeepLinkAnchor.js +9 -9
- package/lib/components/markdoc/SchemaDefinition.js +1 -1
- package/lib/components/panels/ExampleItem/ResponseExampleItem.js +1 -1
- package/lib/components/panels/LanguageItem/LanguagePanelItem.js +5 -1
- package/lib/components/panels/LanguageItem/styled.js +17 -14
- package/lib/components/panels/McpExamplePanelItem.js +2 -2
- package/lib/components/panels/styled.js +1 -1
- package/lib/components/pluggable/RedocResponseSamples.js +1 -1
- package/lib/hoc/withLicenseGate.d.ts +5 -0
- package/lib/hoc/withLicenseGate.js +1 -0
- package/lib/hoc/withStoreProvider.d.ts +2 -0
- package/lib/hoc/withStoreProvider.js +1 -1
- package/lib/hooks/useCopySpecSlice.d.ts +9 -0
- package/lib/hooks/useCopySpecSlice.js +1 -0
- package/lib/hooks/useDeepLinkSection.js +1 -1
- package/lib/hooks/useLicense.js +1 -1
- package/lib/hooks/useLicenseGate.d.ts +6 -0
- package/lib/hooks/useLicenseGate.js +1 -0
- package/lib/hooks/useUrlHash.d.ts +3 -2
- package/lib/hooks/useUrlHash.js +1 -1
- package/lib/index.d.ts +3 -1
- package/lib/index.js +1 -1
- package/lib/jotai/store.d.ts +4 -0
- package/lib/jotai/store.js +1 -1
- package/lib/options/helpers.d.ts +0 -1
- package/lib/options/helpers.js +1 -1
- package/lib/options/normalizeOptions.js +1 -1
- package/lib/options/standaloneLayoutVars.d.ts +3 -0
- package/lib/options/standaloneLayoutVars.js +1 -0
- package/lib/services/code-samples/replay/from-openapi-document.d.ts +8 -1
- package/lib/services/code-samples/replay/from-openapi-document.js +1 -1
- package/lib/services/code-samples/replay/index.d.ts +1 -1
- package/lib/services/code-samples/replay/index.js +1 -1
- package/lib/services/license/check.d.ts +1 -0
- package/lib/services/license/check.js +1 -1
- package/lib/services/search/indexer.js +1 -1
- package/lib/services/spec-slice/assistant-links.d.ts +9 -0
- package/lib/services/spec-slice/assistant-links.js +5 -0
- package/lib/services/spec-slice/asyncapi-slice.d.ts +5 -0
- package/lib/services/spec-slice/asyncapi-slice.js +1 -0
- package/lib/services/spec-slice/clone-strip.d.ts +1 -0
- package/lib/services/spec-slice/clone-strip.js +1 -0
- package/lib/services/spec-slice/component-closure.d.ts +6 -0
- package/lib/services/spec-slice/component-closure.js +1 -0
- package/lib/services/spec-slice/graphql-slice.d.ts +2 -0
- package/lib/services/spec-slice/graphql-slice.js +1 -0
- package/lib/services/spec-slice/index.d.ts +6 -0
- package/lib/services/spec-slice/index.js +1 -0
- package/lib/services/spec-slice/openapi-slice.d.ts +6 -0
- package/lib/services/spec-slice/openapi-slice.js +1 -0
- package/lib/services/spec-slice/resolve-scope.d.ts +4 -0
- package/lib/services/spec-slice/resolve-scope.js +1 -0
- package/lib/services/spec-slice/types.d.ts +37 -0
- package/lib/services/spec-slice/types.js +0 -0
- package/lib/standalone.js +2 -2
- package/lib/types/content.d.ts +2 -2
- package/lib/types/options.d.ts +0 -6
- package/lib/utils/compose.d.ts +1 -0
- package/lib/utils/x-logo.d.ts +1 -1
- package/lib/utils/x-logo.js +1 -1
- package/package.json +11 -12
package/lib/RedocStandalone.d.ts
CHANGED
|
@@ -26,8 +26,8 @@ type PreparedApiDocs = {
|
|
|
26
26
|
store: ApiStore;
|
|
27
27
|
options: RawApiDocsOptions;
|
|
28
28
|
specType: ApiSpecType;
|
|
29
|
-
/** Bundled definition
|
|
30
|
-
document?: Record<string, unknown
|
|
29
|
+
/** Bundled definition, or the raw SDL string for GraphQL. */
|
|
30
|
+
document?: Record<string, unknown> | string;
|
|
31
31
|
};
|
|
32
32
|
export declare function detectSpecType({ definition, definitionUrl, specType, }: Pick<RedocStandaloneProps, 'definition' | 'definitionUrl' | 'specType'>): ApiSpecType | undefined;
|
|
33
33
|
declare function prepareApiDocs({ definition, definitionUrl, specType, options, basePath, }: Pick<RedocStandaloneProps, 'definition' | 'definitionUrl' | 'specType' | 'options' | 'basePath'>): Promise<PreparedApiDocs>;
|
package/lib/RedocStandalone.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Fragment as
|
|
1
|
+
import{Fragment as b,jsx as d,jsxs as x}from"react/jsx-runtime";import{useEffect as E,useMemo as L,useState as P}from"react";import{Loading as S}from"@redocly/theme/components/Loaders/Loading";import{RedoclyApiDocsStandalone as T}from"./RedoclyApiDocsStandalone.js";import{buildItems as k}from"./adapters/build.js";import{markdocParser as D}from"./components/markdoc/markdocParser.js";import{argValueToBoolean as w}from"./options/helpers.js";import{loadAndBundleDefinition as I}from"./utils/loadAndBundleSpec.js";import{logoFromDefinition as v}from"./utils/x-logo.js";import{apiSpecType as s}from"./types/common.js";const B=/\.(graphql|gql)([?#]|$)/i;function F({definition:e,definitionUrl:r,specType:o}){if(o)return o;if(typeof e=="string"||B.test(r??""))return s.GRAPHQL;if(e&&typeof e=="object")return"asyncapi"in e?s.ASYNCAPI:s.OPENAPI}function G(e){if(typeof e!="object"||e===null)throw new Error('"definition" must be an object when "skipBundle" is enabled');return e}async function H({definition:e,definitionUrl:r,specType:o,skipBundle:a}){if(e===void 0&&r===void 0)throw new Error('Either "definition" or "definitionUrl" must be provided');const n=F({definition:e,definitionUrl:r,specType:o});if(n===s.GRAPHQL){const p=typeof e=="string"?e:await(await fetch(r)).text(),{parse:i}=await import("graphql");return{document:i(p),type:s.GRAPHQL,sdl:p}}const t=a?G(e):await I(e??r),c=n??(t&&typeof t=="object"&&"asyncapi"in t?s.ASYNCAPI:s.OPENAPI);return{document:t,type:c}}async function h({definition:e,definitionUrl:r,specType:o,options:a={},basePath:n="/"}){const t=await H({definition:e,definitionUrl:r,specType:o,skipBundle:w(a.skipBundle,!1)}),c={specType:t.type,metadata:{type:t.type},...a},{items:p,store:i}=await k({type:t.type,document:t.document,options:c,basePath:n,markdownParser:D});return{items:p,store:i,options:c,specType:t.type,document:t.type===s.GRAPHQL?t.sdl:t.document}}const j=({definition:e,definitionUrl:r,specType:o,options:a,basePath:n="/",logo:t,markdownAdapter:c,telemetryConfig:p,onLoaded:i,children:f})=>{const[u,y]=P(null),[g,A]=P(null),R=L(()=>({typeOfUsage:"react",...p}),[p]);return E(()=>{let m=!1;return y(null),A(null),h({definition:e,definitionUrl:r,specType:o,options:a,basePath:n}).then(l=>{m||(y(l),i?.())}).catch(l=>{m||(A(l),i?.(l))}),()=>{m=!0}},[e,r,o,n]),g?x("div",{role:"alert",style:{padding:"1em",fontFamily:"monospace",color:"#e53e3e"},children:["Failed to load API definition: ",g.message]}):u?d(T,{items:u.items,store:u.store,basePath:n,options:u.options,logo:t??v(u.document),markdownAdapter:c,telemetryConfig:R,definition:u.document,definitionUrl:r}):f!==void 0?d(b,{children:f}):w(a?.hideLoading,!1)?null:d(S,{color:"--loading-spinner-color"})};var z=j;export{j as RedocStandalone,z as default,F as detectSpecType,h as prepareApiDocs};
|
package/lib/RedoclyApiDocs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as o,jsxs as f}from"react/jsx-runtime";import{memo as T,useMemo as v}from"react";import{useAtomValue as S}from"jotai";import{GlobalStyle as x}from"@redocly/theme/core/openapi";import{RedocTelemetry as R}from"./telemetry/RedocTelemetry.js";import{TelemetryContext as b}from"./contexts/telemetry.js";import{MarkdownAdapterProvider as P}from"./contexts/markdownAdapter.js";import{specTypeAtom as A}from"./jotai/store.js";import{useApiDocsRoutes as
|
|
1
|
+
import{jsx as o,jsxs as f}from"react/jsx-runtime";import{memo as T,useMemo as v}from"react";import{useAtomValue as S}from"jotai";import{GlobalStyle as x}from"@redocly/theme/core/openapi";import{RedocTelemetry as R}from"./telemetry/RedocTelemetry.js";import{TelemetryContext as b}from"./contexts/telemetry.js";import{MarkdownAdapterProvider as P}from"./contexts/markdownAdapter.js";import{specTypeAtom as A}from"./jotai/store.js";import{useApiDocsRoutes as w}from"./hooks/useApiDocsRoutes.js";import{useVisitedChannelsTracker as U}from"./hooks/useVisitedChannelsTracker.js";import{useRouterHashBridge as C}from"./hooks/useRouterHashBridge.js";import{useScrollSpyUrlSync as D}from"./hooks/useScrollSpyUrlSync.js";import{useTelemetryPageMetrics as V}from"./hooks/useTelemetryPageMetrics.js";import{useInitialTelemetry as j}from"./hooks/useInitialTelemetry.js";import{EntryPage as I}from"./pages/EntryPage.js";import{ErrorBoundary as k}from"./components/ErrorBoundary.js";import{compose as B}from"./utils/compose.js";import{withRouter as M}from"./hoc/withRouter.js";import{withStoreProvider as N}from"./hoc/withStoreProvider.js";import{withLicenseGate as O}from"./hoc/withLicenseGate.js";import{withReplayPrefetch as E}from"./hoc/withReplayPrefetch.js";const d=e=>{const{items:t=[],basePath:s,markdownAdapter:y,telemetryConfig:r}=e,{routeIndex:h}=w(t,s),m=S(A),i=r?.specType,c=r?.collectorUrl,p=r?.serviceName,n=r?.serviceVersion,l=r?.disabled,a=r?.typeOfUsage,g=v(()=>new R({specType:i??m,collectorUrl:c,serviceName:p,serviceVersion:n,disabled:l,typeOfUsage:a}),[m,i,c,p,n,l,a]);return o(P,{value:y,children:f(b.Provider,{value:g,children:[o(G,{}),o(H,{routeIndex:h,basePath:s})]})})};function G(){return U(),C(),D(),null}const H=({routeIndex:e,basePath:t})=>(V(),j(),f(k,{children:[o(x,{}),o(I,{routeIndex:e,basePath:t})]})),u=B(N,M,T,e=>O(e),e=>E(e,{respectHideReplay:!0}))(d);var pe=u;export{u as RedoclyApiDocs,d as RedoclyApiDocsComponent,pe as default};
|
|
@@ -11,8 +11,8 @@ type RedoclyApiDocsStandaloneProps = {
|
|
|
11
11
|
logo?: RawLogo;
|
|
12
12
|
telemetryConfig?: Partial<RedocTelemetryConfig>;
|
|
13
13
|
markdownAdapter?: MarkdownAdapter;
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
definition?: Record<string, unknown> | string;
|
|
15
|
+
definitionUrl?: string;
|
|
16
16
|
};
|
|
17
17
|
declare const RedoclyApiDocsStandalone: import("react").FC<any>;
|
|
18
18
|
export { RedoclyApiDocsStandalone };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{jsx as o,jsxs as l}from"react/jsx-runtime";import{memo as S,useMemo as i}from"react";import{createMarkdocAdapter as x}from"./components/markdoc/markdocAdapter.js";import{styled as d}from"styled-components";import{useAtomValue as a}from"jotai";import{SidebarLogo as k}from"@redocly/theme/components/SidebarLogo/SidebarLogo";import{ThemeDataContext as A}from"@redocly/theme/core/openapi";import{RedoclyApiDocsComponent as w}from"./RedoclyApiDocs.js";import{SideMenu as L}from"./components/SideMenu/SideMenu.js";import{StickySidebar as C}from"./components/StickySidebar/StickySidebar.js";import{getStandaloneLayoutStyle as j}from"./options/standaloneLayoutVars.js";import{toSidebarLogo as z}from"./utils/logo.js";import{globalOptionsAtom as D,storeAtom as M}from"./jotai/store.js";import{collapsedSidebarAtom as T}from"./jotai/app.js";import{useLicenseGate as O}from"./hooks/useLicenseGate.js";import{compose as P}from"./utils/compose.js";import{withRouter as R}from"./hoc/withRouter.js";import{withStoreProvider as H}from"./hoc/withStoreProvider.js";import{useCodeHighlight as I}from"./hooks/useCodeHighlight.js";const _=({children:e})=>{const r=i(()=>({hooks:{useCodeHighlight:()=>({highlight:I})}}),[]);return o(A.Provider,{value:r,children:e})},c=P(H,R,S)(({items:e,basePath:r,logo:p,telemetryConfig:h,markdownAdapter:n})=>{const t=a(D),f=a(M),{gatedItems:m,overlay:g}=O(e),{markdocOptions:s}=t,b=i(()=>n??x(s),[n,s]),u=a(T),v=z(p)??t.apiLogo??f.logo,y=i(()=>j(t),[t]);return o(_,{children:l(G,{style:y,children:[g,l(C,{className:"menu-content",collapsedSidebar:u,children:[o(k,{dataTestId:"logo",...v}),o(L,{items:m})]}),o(N,{children:o(w,{items:m,basePath:r,markdownAdapter:b,telemetryConfig:h})})]})})}),G=d.div`
|
|
2
2
|
display: flex;
|
|
3
3
|
position: relative;
|
|
4
4
|
min-height: 100vh;
|
|
@@ -20,7 +20,7 @@ import{Fragment as j,jsx as o,jsxs as f}from"react/jsx-runtime";import{memo as D
|
|
|
20
20
|
* {
|
|
21
21
|
box-sizing: border-box;
|
|
22
22
|
}
|
|
23
|
-
`,
|
|
23
|
+
`,N=d.div`
|
|
24
24
|
flex: 1;
|
|
25
25
|
min-width: 0;
|
|
26
|
-
`;var
|
|
26
|
+
`;var ao=c;export{c as RedoclyApiDocsStandalone,ao as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{contentType as
|
|
1
|
+
import{contentType as m,nodeTypes as l}from"../../../types/common.js";import{safeSlugify as p}from"../../../utils/string.js";import{joinWithSeparator as u}from"../../../utils/url.js";import{itemVariant as e}from"../../../types/common.js";import{DEFAULT_GROUP_LABELS as T}from"../utils/constants.js";import{buildGroupItemsPanelContent as E}from"../panels/group-items.js";import{graphqlContext as f}from"../buildContext.js";const A={[e.QUERY]:"queries",[e.MUTATION]:"mutations",[e.SUBSCRIPTION]:"subscriptions",[e.DIRECTIVE]:"directives",[e.OBJECT]:"objects",[e.INTERFACE]:"interfaces",[e.INPUT]:"inputs",[e.UNION]:"unions",[e.ENUM]:"enums",[e.SCALAR]:"scalars"};function d({typeGroup:t,items:r,label:i,parentPath:c}){const o=f.get(),n=i??(t?T[t]:"Overview"),s=i?void 0:t?A[t]:"info.title",a=u(c??o.basePath,p(n?.toLowerCase()));return{type:"group",label:n,labelTranslationKey:s,link:a,routeSlug:a,items:r,content:o.processContent?{contentType:m.GROUP,children:[{nodeType:l.CONTAINER,children:[{nodeType:l.HEADER,level:2,label:n,labelTranslationKey:s,showPageActions:!0}],panels:[E(r,o,t)]}]}:null}}export{d as createGroup};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{configure as
|
|
1
|
+
import{configure as p}from"@redocly/theme/ext/configure";import{getOperationData as f}from"../utils/operation.js";function d(n){const{operationInfo:e,info:r,servers:s,basePath:a,dynamicRequestValues:t}=n,{userClaims:i}=n;if(t!=null&&Object.keys(t).length>0)return t;const{slug:u}=f(e,a),c=e.summary||e.operationId||e.pathName||"Unknown Operation",l={userClaims:i,info:r,operation:{name:c,path:e.pathName??"",operationId:e.operationId,href:u,method:e.httpVerb??""},servers:s},o=(p(l)??{}).requestValues;return o!=null&&Object.keys(o).length>0?o:{}}export{d as resolveRequestValues};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{REDOCLY_TEAMS_RBAC as J}from"@redocly/config";import{contentType as me,itemVariant as ue,nodeTypes as h,panelKind as z,schemaKind as B}from"../../../../types/common.js";import{readRbacScope as C,rbacProp as O,registerExample as W,pickRenderableDescription as te,registerSchema as H,resolveContent as G,resolveRef as $}from"../../../helpers.js";import{applyIgnoreNamedSchemasDeep as se}from"../../utils/applyIgnoreNamedSchemasDeep.js";import{isStatusCode as ye}from"../../../../utils/status-code.js";import{parseMarkdown as _}from"../../../utils/parseMarkdown.js";import{extractDescriptionSegments as he,resolveMarkdocHeadingIds as Q}from"../../../utils/markdoc.js";import{getExtensionsForDisplay as Z}from"../../../../utils/extract-extensions.js";import{openApiContext as M}from"../../buildContext.js";import{buildCodeSampleSource as fe}from"../../build-code-sample-source.js";import{pickOperationServers as be}from"../../utils/merge-mock-server.js";import{mergeInMockServer as xe}from"../../utils/merge-mock-server.js";import{normalizePath as Se}from"../../../../utils/url.js";import{toRelativePath as ne}from"../../../../utils/url.js";import{encodeJsonPointerSegment as N}from"../../../../utils/refPointer.js";import{hasOpenApiExampleValue as re,resolveOpenApiExampleValue as ee}from"../../resolve-openapi-example-value.js";const X="request",oe="responses",ie="callbacks";function Te(){const e=new Map;return(r,s)=>{const o=`${r}/${s}`,n=e.get(o)??0;return e.set(o,n+1),n===0?o:`${o}~${n}`}}function Ue(e,r){const{options:s,storeCtx:o,basePath:n}=M.get(),t=e.summary||e.operationId||e.pathName||"Unknown Operation",c=[],{feedback:l}=s,i=e.isWebhook||!1,p=[{nodeType:h.HEADER,level:2,label:t,badges:e["x-badges"],isWebhook:i,deprecated:e.deprecated,showPageActions:!0}],a=Z(e,s.showExtensions);Object.keys(a).length>0&&p.push({nodeType:h.EXTENSIONS,extensions:a}),c.push({nodeType:h.CONTAINER,children:p,panels:[]});const m=s.ignoreNamedSchemas,y=e["x-codeSamples"]?.map(({lang:u,label:I,source:L})=>({lang:u,label:I,source:L}));let b=be(e.servers,o?.document?.servers).filter(u=>typeof u?.url=="string");b=xe(b,s.mockServer);const f=b.map(u=>{const I=C(u);return{url:u.url??"",name:u.name,description:typeof u.description=="string"?u.description:void 0,...u.isMockServer&&{isMockServer:!0},variables:u.variables&&Object.keys(u.variables).length>0?Object.fromEntries(Object.entries(u.variables).map(([L,V])=>[L,{default:V.default}])):void 0,...O(I)}}),x=ae(e,m),d=ne(r,n);let E=[];e.description&&(Q(e.description,d,X),E=he(e.description,s));const g=E.some(u=>u.kind==="schemaDefinition"),S=x.find(u=>u.nodeType===h.ITEM&&u.variant==="body"),q=qe(e,m,i,d||void 0),R=S?.schemaId,k=S?.mediaTypes,j=S?.mediaTypeSchemas,v=C(S),A=[{children:[{kind:z.CODE_SAMPLE,source:q,definitionSamples:y?.length?y:void 0,isWebhook:i,hideReplay:e["x-hideReplay"]===!0,servers:f?.length?f:void 0,schemaId:R,exampleIds:S?.exampleIds,mediaTypes:k,mediaTypeSchemas:j,examples:S?.exampleIds?.map(()=>({}))??[]}],...O(v)}];if(x.length>0||E.length>0)if(g){c.push({nodeType:h.CONTAINER,children:[{nodeType:h.HEADER,level:4,label:"Request",labelTranslationKey:"request",deepLinkSuffix:X}],panels:[]});for(const u of E)u.kind==="schemaDefinition"?c.push(u.node):c.push({nodeType:h.CONTAINER,children:[u.node],panels:[]});c.push({nodeType:h.CONTAINER,children:[...x],panels:A})}else c.push({nodeType:h.CONTAINER,children:[{nodeType:h.HEADER,level:4,label:"Request",labelTranslationKey:"request",deepLinkSuffix:X},...E.map(u=>u.node),...x],panels:A});else c.push({nodeType:h.CONTAINER,children:[{nodeType:h.HEADER,level:4,label:"Request",labelTranslationKey:"request",deepLinkSuffix:X},{nodeType:h.EMPTY_MESSAGE,label:"No request data",labelTranslationKey:"noRequestData"}],panels:A});if(e.responses){const u=de(e,s,d,m);if(u){const I=u.responses?.some(P=>P.schemaId||(P.exampleIds?.length??0)>0),L=u?.responses?.map(P=>{const le=P[J];return{code:P.code,schemaId:P.schemaId,exampleIds:P.exampleIds,mediaTypes:P.mediaTypes,mediaTypeContent:P.mediaTypeContent,...O(le)}}),V=[];I&&V.push({children:[{kind:z.RESPONSE,headerTitle:"Response",responseCodes:L,examples:[]}]});const pe=C(e.responses);c.push({nodeType:h.CONTAINER,children:[{nodeType:h.HEADER,level:4,label:"Responses",labelTranslationKey:"responses",deepLinkSuffix:"responses"},u],panels:V.length>0?V:[],...O(pe)})}}Array.isArray(e.callbacks)&&e.callbacks.length>0&&c.push(...Ee(e,d,m)),l?.hide!==!0&&c.push({nodeType:h.CONTAINER,children:[{nodeType:h.FEEDBACK,pageSlug:Se(ne(r,n))}],panels:[]});const D=x.some(u=>{const I=u;return I.variant==="body"&&((I.exampleIds?.length??0)>0||!!I.schemaId)})||(y?.length??0)>0;return{contentType:me.ITEM,itemVariant:ue.HTTP_ITEM,seo:e["x-seo"],meta:{sourceId:e.operationId,name:t,deprecated:e.deprecated,isWebhook:e.isWebhook||!1,pointer:e.pointer,hasSamples:D},children:c}}function Ee(e,r,s){const o=[{nodeType:h.CONTAINER,children:[{nodeType:h.HEADER,level:4,label:"Callbacks",labelTranslationKey:"callbacks",deepLinkSuffix:ie}],panels:[]}],n=Te();for(const t of e.callbacks??[])if(t.operations)for(const c of t.operations){const l=c.httpVerb??"post",i=n(t.name,l);o.push(Ce(e,t,c,i,r,s))}return o}function Ce(e,r,s,o,n,t){const{options:c}=M.get(),l=s.httpVerb??"post",i={pointer:e.pointer+"/callbacks/"+r.name+"/"+l,pathName:s.pathName??r.url??"",httpVerb:l,summary:s.summary,deprecated:s.deprecated,isWebhook:!1,isAdditionalOperation:!1,tags:[],parameters:s.parameters,requestBody:s.requestBody,responses:s.responses,servers:s.servers,security:s.security},p=ae(i,t),a=de(i,c,`${n}/callbacks/${o}`,t),m=[...p];a&&m.push(a);const y=s.externalDocs,T=Z(s,c.showExtensions);let b;s.description&&(b=_(s.description,c),Q(b??[],n,`${ie}/${o}`));const f={httpVerb:l,pathName:i.pathName,summary:i.summary,operationId:typeof s.operationId=="string"?s.operationId:void 0,description:b,deprecated:i.deprecated,callbackName:r.name,callbackId:o,externalDocs:y?{url:y.url,description:y.description}:void 0,extensions:Object.keys(T).length>0?T:void 0,contentChildren:m.length>0?m:void 0},x=ge(s,i,o,t),d=C(r);return{nodeType:h.CONTAINER,children:[{nodeType:h.ITEM,variant:"callback",callback:f,pointer:e.pointer+"/callbacks"}],panels:x,...O(d)}}function ge(e,r,s,o){const{storeCtx:n}=M.get(),t=[];if(!e.requestBody||!("content"in e.requestBody))return t;const c=n?.document??{},l=$(c,e.requestBody,o)??e.requestBody,i=G(c,l,o);if(!i)return t;const p=Object.keys(i);let a=!1;const m={};for(const[f,x]of Object.entries(i)){let d;if(x.schema){const S=x.schema;d=H(n.schemaStore,n.hashIndex,{kind:B.JSON_SCHEMA,data:S})}const E=`${r.pointer}/requestBody/content/${N(f)}`.replace(/^\//,""),g=[];if(x.example!==void 0){const S=W(n.exampleStore,{value:x.example,id:`${E}/example`});g.push(S),a=!0}if(x.examples)for(const[S,q]of Object.entries(x.examples)){const R=$(c,q,o);if(R&&re(R)){const k=W(n.exampleStore,{value:ee(R),summary:R.summary??S,description:te(R.description),id:`${E}/examples/${N(S)}`});g.push(k),a=!0}}m[f]={schemaId:d,exampleIds:g.length>0?g:void 0},d&&(a=!0)}const y=e["x-codeSamples"];if(!(a||(y?.length??0)>0))return t;const b=e.servers?.filter(f=>f.url).map(({url:f,name:x,description:d,variables:E})=>({url:f,name:x,description:d,variables:E}));return t.push({children:[{kind:z.CALLBACK_PAYLOAD,callbackName:s,path:r.pathName,httpVerb:r.httpVerb,servers:b?.length?b:void 0,definitionSamples:y,mediaTypes:p.length>0?p:void 0,mediaTypeSchemas:Object.keys(m).length>0?m:void 0,examples:[]}]}),t}function Re(e,r,s){const o=$(r,e,s)??e,{$ref:n,...t}=e,c=typeof n=="string"?{...o,...t}:o;return se(c,s)}function F(e,r,s){if(!e||typeof e!="object")return;const o=e,n=$(r,o,s)??o;return se(n,s)}function Oe(e,r,s){if(!e||typeof e!="object")return;const o=C(e),n={},t=[];for(const[c,l]of Object.entries(e)){if(c===J)continue;const i=$(r,l,s)??l,p=i.content,a=p?p[Object.keys(p)[0]]:void 0,m=i.schema??a?.schema??a?.itemSchema,y=F(m,r,s);if(!y)continue;const T=ce(i.examples,r,s),b=C(l)??C(i)??o;n[c]={...y,...i.description!==void 0&&{description:i.description},...i.example!==void 0&&{example:i.example},...T&&{examples:T},...O(b)},i.required&&t.push(c)}if(Object.keys(n).length!==0)return{type:"object",properties:n,...t.length>0?{required:t}:{}}}function Ae(e){if(typeof e=="string"||e&&typeof e=="object"&&"$$mdtype"in e||Array.isArray(e)&&e.length>0&&e.every(r=>!!r&&typeof r=="object"&&"$$mdtype"in r))return e}function U(e,r){const{storeCtx:s,options:o}=M.get(),n=s.document;return e.map(t=>{const c=t.schema;let l={};if(c&&typeof c=="object")l=c;else if(t.content&&typeof t.content=="object"){const T=t.content,b=Object.keys(T)[0],f=b?T[b]?.schema:void 0;f&&typeof f=="object"&&(l=f)}const i=H(s.schemaStore,s.hashIndex,{kind:B.JSON_SCHEMA,data:l}),p=t["x-badges"],a=l["x-badges"],m=Array.isArray(p)?p:Array.isArray(a)?a:void 0,y=Z(t,o.showExtensions);return{name:String(t.name??""),in:typeof t.in=="string"?t.in:void 0,schemaId:i,description:Ae(t.description),required:t.required===!0?!0:void 0,deprecated:t.deprecated===!0?!0:void 0,example:t.example,examples:ce(t.examples,n,r),...m?.length?{badges:m}:{},...Object.keys(y).length?{extensions:y}:{},...O(C(t))}})}function ce(e,r,s){if(!e||typeof e!="object")return;const o={};for(const[n,t]of Object.entries(e)){if(!t||typeof t!="object")continue;const c=$(r,t,s)??t;if(!re(c))continue;const l=ee(c);o[n]={...typeof c.summary=="string"&&{summary:c.summary},...typeof c.description=="string"&&{description:c.description},...l!==void 0&&{value:typeof l=="string"?l:JSON.stringify(l)}}}return Object.keys(o).length>0?o:void 0}function ae(e,r){const{storeCtx:s,options:o}=M.get(),n=[],t=s.document,c=ve(e);if(c&&n.push(c),e.parameters&&Array.isArray(e.parameters)){const i=e.parameters.map(d=>Re(d,t,r)),p=i.filter(d=>d.in==="header"),a=i.filter(d=>d.in==="query"),m=i.filter(d=>d.in==="path"),y=i.filter(d=>d.in==="cookie"),T=i.filter(d=>d.in==="querystring"),b=T.filter(d=>!d.content||typeof d.content!="object"),f=T.filter(d=>d.content&&typeof d.content=="object"),x=T.length>0;m.length>0&&n.push({nodeType:h.ITEM,variant:"path",label:"Path",labelTranslationKey:"path",parameters:U(m,r),pointer:e.pointer+"/parameters"}),a.length>0&&!x&&n.push({nodeType:h.ITEM,variant:"query",label:"Query",labelTranslationKey:"query",parameters:U(a,r),pointer:e.pointer+"/parameters"}),b.length>0&&n.push({nodeType:h.ITEM,variant:"querystring",label:"Query String",labelTranslationKey:"querystring",parameters:U(b,r),pointer:e.pointer+"/parameters"});for(const d of f){const E=d.content,g=Object.keys(E),S={};for(const j of g){const v=E[j];if(!v)continue;let A;const K=v.itemSchema,w=v.schema??K,D=F(w,t,r);D&&(A=H(s.schemaStore,s.hashIndex,{kind:B.JSON_SCHEMA,data:D}));const u=Y(v,r);S[j]={schemaId:A,exampleIds:u,...O(C(w))}}const q=g[0],R=q?S[q]:void 0,k=_(d.description,o);n.push({nodeType:h.ITEM,variant:"querystring-body",label:String(d.name??""),required:d.required===!0?!0:void 0,mediaTypes:g.length>0?g:void 0,mediaTypeSchemas:Object.keys(S).length>0?S:void 0,schemaId:R?.schemaId,exampleIds:R?.exampleIds,pointer:e.pointer+"/parameters",...k!==void 0?{description:k}:{},...O(C(d))})}y.length>0&&n.push({nodeType:h.ITEM,variant:"cookies",label:"Cookies",labelTranslationKey:"cookie",parameters:U(y,r),pointer:e.pointer+"/parameters"}),p.length>0&&n.push({nodeType:h.ITEM,variant:"headers",label:"Headers",labelTranslationKey:"header",parameters:U(p,r),pointer:e.pointer+"/parameters"})}if(e.requestBody){const l=$(t,e.requestBody,r)??e.requestBody,i=G(t,l,r),p=i?Object.keys(i):void 0;let a,m,y;if(i&&p){y={};for(const d of p){const E=i[d];if(!E)continue;let g;const S=E.itemSchema,q=E.schema??S,R=F(q,t,r);R&&(g=H(s.schemaStore,s.hashIndex,{kind:B.JSON_SCHEMA,data:R}));const k=Y(E,r,`${e.pointer}/requestBody/content/${N(d)}`);y[d]={schemaId:g,exampleIds:k,...O(C(q))}}const f=p[0],x=f?y[f]:void 0;a=x?.schemaId,m=x?.exampleIds}const T=_(l.description,o),b=C(e.requestBody)??C(l);n.push({nodeType:h.ITEM,variant:"body",label:"Request Body",labelTranslationKey:"body",required:l.required,mediaTypes:p,mediaTypeSchemas:y,schemaId:a,exampleIds:m,pointer:e.pointer+"/requestBody",...T!==void 0?{description:T}:{},...O(b)})}return n}function de(e,r,s,o){if(!e.responses)return;const{storeCtx:n}=M.get(),t=n?.document??{},c=e.responses,i=Object.entries(c).filter(([p])=>ye(p)).map(([p,a])=>{const m=$(t,a,o)??a;let y=C(a)??C(m);const T=G(t,m,o),b=T?Object.keys(T):[],f=b[0],x=f&&T?T[f]:void 0;let d,E,g,S;if(T&&b.length>0){S={};for(const v of b){const A=T[v];if(!A)continue;let K;const w=A.itemSchema,D=A.schema??w,u=F(D,t,o);u&&(K=H(n.schemaStore,n.hashIndex,{kind:B.JSON_SCHEMA,data:u}));const I=Y(A,o,`${e.pointer}/responses/${N(p)}/content/${N(v)}`);S[v]={schemaId:K,exampleIds:I,...O(C(D))}}const j=f?S[f]:void 0;d=j?.schemaId,E=j?.exampleIds}else if(x){const j=x.itemSchema,v=x.schema??j,A=F(v,t,o);A&&(y=y??C(v),d=H(n.schemaStore,n.hashIndex,{kind:B.JSON_SCHEMA,data:A})),E=Y(x,o,f?`${e.pointer}/responses/${N(p)}/content/${N(f)}`:void 0)}const q=Oe(m.headers,t,o);q&&(g=H(n.schemaStore,n.hashIndex,{kind:B.JSON_SCHEMA,data:q}));let R;m.description&&(R=_(m.description,r),Q(R??[],s,`${oe}/${p}`));const k=m["x-summary"]?_(m["x-summary"],r):void 0;return k&&Q(k,s,`${oe}/${p}/summary`),{code:p,summary:k,description:R,mediaType:f,mediaTypes:b.length>0?b:void 0,mediaTypeContent:S,schemaId:d,exampleIds:E,headers:m.headers,headerSchemaId:g,...O(y)}});return{nodeType:h.ITEM,variant:"responses",responses:i,pointer:e.pointer+"/responses"}}function Y(e,r,s){const{storeCtx:o}=M.get(),n=[],t=o.document,c=s?.replace(/^\//,"");if(e.example!==void 0){const l=W(o.exampleStore,{value:e.example,...c&&{id:`${c}/example`}});n.push(l)}if(e.examples&&typeof e.examples=="object"){const l=C(e.examples);for(const[i,p]of Object.entries(e.examples)){if(i===J||!p||typeof p!="object")continue;const a=$(t,p,r)??p,m=C(p)??C(a)??l,y=W(o.exampleStore,{value:ee(a),key:i,summary:typeof a.summary=="string"?a.summary:i,description:te(a.description),externalValue:typeof a.externalValue=="string"?a.externalValue:void 0,...O(m),...c&&{id:`${c}/examples/${N(i)}`}});n.push(y)}}return n.length>0?n:void 0}function ve(e){const{storeCtx:r,options:s}=M.get();if(!e.security||!Array.isArray(e.security)||e.security.length===0)return;const o=e.security.map(n=>{const t=Object.entries(n);if(t.length===0)return null;const c=r?.document?.components?.securitySchemes,l=t.map(([i,p])=>{const a=r?.securitySchemeStore[i],m=C(c?.[i])??a?.[J];return{name:i,scopes:Array.isArray(p)?p:void 0,type:a?.type,scheme:a?.scheme,bearerFormat:a?.bearerFormat,in:a?.in,paramName:a?.paramName,description:a?.description?_(a.description,s):a?.description,openIdConnectUrl:a?.openIdConnectUrl,oauth2MetadataUrl:a?.oauth2MetadataUrl,deprecated:a?.deprecated,flows:a?.flows,...O(m)}}).filter(i=>i.name);return l.length>0?{schemes:l}:null}).filter(n=>n!==null);if(o.length!==0)return{nodeType:h.SECURITY,requirements:o}}function qe(e,r,s,o){const{storeCtx:n}=M.get(),{options:t}=M.get();if(!n)throw new Error("OpenAPI store context is not initialized");return fe(e,n,r,s,o,t)}export{Ue as buildItemContent,Te as createCallbackIdFactory};
|
|
1
|
+
import{REDOCLY_TEAMS_RBAC as J}from"@redocly/config";import{contentType as me,itemVariant as ue,nodeTypes as h,panelKind as z,schemaKind as B}from"../../../../types/common.js";import{readRbacScope as C,rbacProp as R,registerExample as W,pickRenderableDescription as te,registerSchema as H,resolveContent as G,resolveRef as $}from"../../../helpers.js";import{applyIgnoreNamedSchemasDeep as se}from"../../utils/applyIgnoreNamedSchemasDeep.js";import{isStatusCode as ye}from"../../../../utils/status-code.js";import{parseMarkdown as _}from"../../../utils/parseMarkdown.js";import{extractDescriptionSegments as he,resolveMarkdocHeadingIds as Q}from"../../../utils/markdoc.js";import{getExtensionsForDisplay as Z}from"../../../../utils/extract-extensions.js";import{openApiContext as M}from"../../buildContext.js";import{buildCodeSampleSource as fe}from"../../build-code-sample-source.js";import{pickOperationServers as be}from"../../utils/merge-mock-server.js";import{mergeInMockServer as xe}from"../../utils/merge-mock-server.js";import{normalizePath as Se}from"../../../../utils/url.js";import{toRelativePath as ne}from"../../../../utils/url.js";import{encodeJsonPointerSegment as N}from"../../../../utils/refPointer.js";import{hasOpenApiExampleValue as re,resolveOpenApiExampleValue as ee}from"../../resolve-openapi-example-value.js";const X="request",oe="responses",ie="callbacks";function Te(){const e=new Map;return(r,s)=>{const o=`${r}/${s}`,n=e.get(o)??0;return e.set(o,n+1),n===0?o:`${o}~${n}`}}function Ue(e,r){const{options:s,storeCtx:o,basePath:n}=M.get(),t=e.summary||e.operationId||e.pathName||"Unknown Operation",c=[],{feedback:l}=s,i=e.isWebhook||!1,p=[{nodeType:h.HEADER,level:2,label:t,badges:e["x-badges"],isWebhook:i,deprecated:e.deprecated,showPageActions:!0}],a=Z(e,s.showExtensions);Object.keys(a).length>0&&p.push({nodeType:h.EXTENSIONS,extensions:a}),c.push({nodeType:h.CONTAINER,children:p,panels:[]});const m=s.ignoreNamedSchemas,y=e["x-codeSamples"]?.map(({lang:u,label:I,source:L})=>({lang:u,label:I,source:L}));let b=be(e.servers,o?.document?.servers).filter(u=>typeof u?.url=="string");b=xe(b,s.mockServer);const f=b.map(u=>{const I=C(u);return{url:u.url??"",name:u.name,description:typeof u.description=="string"?u.description:void 0,...u.isMockServer&&{isMockServer:!0},variables:u.variables&&Object.keys(u.variables).length>0?Object.fromEntries(Object.entries(u.variables).map(([L,V])=>[L,{default:V.default}])):void 0,...R(I)}}),x=ae(e,m),d=ne(r,n);let E=[];e.description&&(Q(e.description,d,X),E=he(e.description,s));const g=E.some(u=>u.kind==="schemaDefinition"),S=x.find(u=>u.nodeType===h.ITEM&&u.variant==="body"),q=qe(e,m,i,d||void 0),O=S?.schemaId,k=S?.mediaTypes,j=S?.mediaTypeSchemas,v=C(S),A=[{children:[{kind:z.CODE_SAMPLE,source:q,definitionSamples:y?.length?y:void 0,isWebhook:i,hideReplay:e["x-hideReplay"]===!0,servers:f?.length?f:void 0,schemaId:O,exampleIds:S?.exampleIds,mediaTypes:k,mediaTypeSchemas:j,examples:S?.exampleIds?.map(()=>({}))??[]}],...R(v)}];if(x.length>0||E.length>0)if(g){c.push({nodeType:h.CONTAINER,children:[{nodeType:h.HEADER,level:4,label:"Request",labelTranslationKey:"request",deepLinkSuffix:X}],panels:[]});for(const u of E)u.kind==="schemaDefinition"?c.push(u.node):c.push({nodeType:h.CONTAINER,children:[u.node],panels:[]});c.push({nodeType:h.CONTAINER,children:[...x],panels:A})}else c.push({nodeType:h.CONTAINER,children:[{nodeType:h.HEADER,level:4,label:"Request",labelTranslationKey:"request",deepLinkSuffix:X},...E.map(u=>u.node),...x],panels:A});else c.push({nodeType:h.CONTAINER,children:[{nodeType:h.HEADER,level:4,label:"Request",labelTranslationKey:"request",deepLinkSuffix:X},{nodeType:h.EMPTY_MESSAGE,label:"No request data",labelTranslationKey:"noRequestData"}],panels:A});if(e.responses){const u=de(e,s,d,m);if(u){const I=u.responses?.some(P=>P.schemaId||(P.exampleIds?.length??0)>0),L=u?.responses?.map(P=>{const le=P[J];return{code:P.code,schemaId:P.schemaId,exampleIds:P.exampleIds,mediaTypes:P.mediaTypes,mediaTypeContent:P.mediaTypeContent,...R(le)}}),V=[];I&&V.push({children:[{kind:z.RESPONSE,responseCodes:L,examples:[]}]});const pe=C(e.responses);c.push({nodeType:h.CONTAINER,children:[{nodeType:h.HEADER,level:4,label:"Responses",labelTranslationKey:"responses",deepLinkSuffix:"responses"},u],panels:V.length>0?V:[],...R(pe)})}}Array.isArray(e.callbacks)&&e.callbacks.length>0&&c.push(...Ee(e,d,m)),l?.hide!==!0&&c.push({nodeType:h.CONTAINER,children:[{nodeType:h.FEEDBACK,pageSlug:Se(ne(r,n))}],panels:[]});const D=x.some(u=>{const I=u;return I.variant==="body"&&((I.exampleIds?.length??0)>0||!!I.schemaId)})||(y?.length??0)>0;return{contentType:me.ITEM,itemVariant:ue.HTTP_ITEM,seo:e["x-seo"],meta:{sourceId:e.operationId,name:t,deprecated:e.deprecated,isWebhook:e.isWebhook||!1,pointer:e.pointer,hasSamples:D},children:c}}function Ee(e,r,s){const o=[{nodeType:h.CONTAINER,children:[{nodeType:h.HEADER,level:4,label:"Callbacks",labelTranslationKey:"callbacks",deepLinkSuffix:ie}],panels:[]}],n=Te();for(const t of e.callbacks??[])if(t.operations)for(const c of t.operations){const l=c.httpVerb??"post",i=n(t.name,l);o.push(Ce(e,t,c,i,r,s))}return o}function Ce(e,r,s,o,n,t){const{options:c}=M.get(),l=s.httpVerb??"post",i={pointer:e.pointer+"/callbacks/"+r.name+"/"+l,pathName:s.pathName??r.url??"",httpVerb:l,summary:s.summary,deprecated:s.deprecated,isWebhook:!1,isAdditionalOperation:!1,tags:[],parameters:s.parameters,requestBody:s.requestBody,responses:s.responses,servers:s.servers,security:s.security},p=ae(i,t),a=de(i,c,`${n}/callbacks/${o}`,t),m=[...p];a&&m.push(a);const y=s.externalDocs,T=Z(s,c.showExtensions);let b;s.description&&(b=_(s.description,c),Q(b??[],n,`${ie}/${o}`));const f={httpVerb:l,pathName:i.pathName,summary:i.summary,operationId:typeof s.operationId=="string"?s.operationId:void 0,description:b,deprecated:i.deprecated,callbackName:r.name,callbackId:o,externalDocs:y?{url:y.url,description:y.description}:void 0,extensions:Object.keys(T).length>0?T:void 0,contentChildren:m.length>0?m:void 0},x=ge(s,i,o,t),d=C(r);return{nodeType:h.CONTAINER,children:[{nodeType:h.ITEM,variant:"callback",callback:f,pointer:e.pointer+"/callbacks"}],panels:x,...R(d)}}function ge(e,r,s,o){const{storeCtx:n}=M.get(),t=[];if(!e.requestBody||!("content"in e.requestBody))return t;const c=n?.document??{},l=$(c,e.requestBody,o)??e.requestBody,i=G(c,l,o);if(!i)return t;const p=Object.keys(i);let a=!1;const m={};for(const[f,x]of Object.entries(i)){let d;if(x.schema){const S=x.schema;d=H(n.schemaStore,n.hashIndex,{kind:B.JSON_SCHEMA,data:S})}const E=`${r.pointer}/requestBody/content/${N(f)}`.replace(/^\//,""),g=[];if(x.example!==void 0){const S=W(n.exampleStore,{value:x.example,id:`${E}/example`});g.push(S),a=!0}if(x.examples)for(const[S,q]of Object.entries(x.examples)){const O=$(c,q,o);if(O&&re(O)){const k=W(n.exampleStore,{value:ee(O),summary:O.summary??S,description:te(O.description),id:`${E}/examples/${N(S)}`});g.push(k),a=!0}}m[f]={schemaId:d,exampleIds:g.length>0?g:void 0},d&&(a=!0)}const y=e["x-codeSamples"];if(!(a||(y?.length??0)>0))return t;const b=e.servers?.filter(f=>f.url).map(({url:f,name:x,description:d,variables:E})=>({url:f,name:x,description:d,variables:E}));return t.push({children:[{kind:z.CALLBACK_PAYLOAD,callbackName:s,path:r.pathName,httpVerb:r.httpVerb,servers:b?.length?b:void 0,definitionSamples:y,mediaTypes:p.length>0?p:void 0,mediaTypeSchemas:Object.keys(m).length>0?m:void 0,examples:[]}]}),t}function Oe(e,r,s){const o=$(r,e,s)??e,{$ref:n,...t}=e,c=typeof n=="string"?{...o,...t}:o;return se(c,s)}function F(e,r,s){if(!e||typeof e!="object")return;const o=e,n=$(r,o,s)??o;return se(n,s)}function Re(e,r,s){if(!e||typeof e!="object")return;const o=C(e),n={},t=[];for(const[c,l]of Object.entries(e)){if(c===J)continue;const i=$(r,l,s)??l,p=i.content,a=p?p[Object.keys(p)[0]]:void 0,m=i.schema??a?.schema??a?.itemSchema,y=F(m,r,s);if(!y)continue;const T=ce(i.examples,r,s),b=C(l)??C(i)??o;n[c]={...y,...i.description!==void 0&&{description:i.description},...i.example!==void 0&&{example:i.example},...T&&{examples:T},...R(b)},i.required&&t.push(c)}if(Object.keys(n).length!==0)return{type:"object",properties:n,...t.length>0?{required:t}:{}}}function Ae(e){if(typeof e=="string"||e&&typeof e=="object"&&"$$mdtype"in e||Array.isArray(e)&&e.length>0&&e.every(r=>!!r&&typeof r=="object"&&"$$mdtype"in r))return e}function U(e,r){const{storeCtx:s,options:o}=M.get(),n=s.document;return e.map(t=>{const c=t.schema;let l={};if(c&&typeof c=="object")l=c;else if(t.content&&typeof t.content=="object"){const T=t.content,b=Object.keys(T)[0],f=b?T[b]?.schema:void 0;f&&typeof f=="object"&&(l=f)}const i=H(s.schemaStore,s.hashIndex,{kind:B.JSON_SCHEMA,data:l}),p=t["x-badges"],a=l["x-badges"],m=Array.isArray(p)?p:Array.isArray(a)?a:void 0,y=Z(t,o.showExtensions);return{name:String(t.name??""),in:typeof t.in=="string"?t.in:void 0,schemaId:i,description:Ae(t.description),required:t.required===!0?!0:void 0,deprecated:t.deprecated===!0?!0:void 0,example:t.example,examples:ce(t.examples,n,r),...m?.length?{badges:m}:{},...Object.keys(y).length?{extensions:y}:{},...R(C(t))}})}function ce(e,r,s){if(!e||typeof e!="object")return;const o={};for(const[n,t]of Object.entries(e)){if(!t||typeof t!="object")continue;const c=$(r,t,s)??t;if(!re(c))continue;const l=ee(c);o[n]={...typeof c.summary=="string"&&{summary:c.summary},...typeof c.description=="string"&&{description:c.description},...l!==void 0&&{value:typeof l=="string"?l:JSON.stringify(l)}}}return Object.keys(o).length>0?o:void 0}function ae(e,r){const{storeCtx:s,options:o}=M.get(),n=[],t=s.document,c=ve(e);if(c&&n.push(c),e.parameters&&Array.isArray(e.parameters)){const i=e.parameters.map(d=>Oe(d,t,r)),p=i.filter(d=>d.in==="header"),a=i.filter(d=>d.in==="query"),m=i.filter(d=>d.in==="path"),y=i.filter(d=>d.in==="cookie"),T=i.filter(d=>d.in==="querystring"),b=T.filter(d=>!d.content||typeof d.content!="object"),f=T.filter(d=>d.content&&typeof d.content=="object"),x=T.length>0;m.length>0&&n.push({nodeType:h.ITEM,variant:"path",label:"Path",labelTranslationKey:"path",parameters:U(m,r),pointer:e.pointer+"/parameters"}),a.length>0&&!x&&n.push({nodeType:h.ITEM,variant:"query",label:"Query",labelTranslationKey:"query",parameters:U(a,r),pointer:e.pointer+"/parameters"}),b.length>0&&n.push({nodeType:h.ITEM,variant:"querystring",label:"Query String",labelTranslationKey:"querystring",parameters:U(b,r),pointer:e.pointer+"/parameters"});for(const d of f){const E=d.content,g=Object.keys(E),S={};for(const j of g){const v=E[j];if(!v)continue;let A;const K=v.itemSchema,w=v.schema??K,D=F(w,t,r);D&&(A=H(s.schemaStore,s.hashIndex,{kind:B.JSON_SCHEMA,data:D}));const u=Y(v,r);S[j]={schemaId:A,exampleIds:u,...R(C(w))}}const q=g[0],O=q?S[q]:void 0,k=_(d.description,o);n.push({nodeType:h.ITEM,variant:"querystring-body",label:String(d.name??""),required:d.required===!0?!0:void 0,mediaTypes:g.length>0?g:void 0,mediaTypeSchemas:Object.keys(S).length>0?S:void 0,schemaId:O?.schemaId,exampleIds:O?.exampleIds,pointer:e.pointer+"/parameters",...k!==void 0?{description:k}:{},...R(C(d))})}y.length>0&&n.push({nodeType:h.ITEM,variant:"cookies",label:"Cookies",labelTranslationKey:"cookie",parameters:U(y,r),pointer:e.pointer+"/parameters"}),p.length>0&&n.push({nodeType:h.ITEM,variant:"headers",label:"Headers",labelTranslationKey:"header",parameters:U(p,r),pointer:e.pointer+"/parameters"})}if(e.requestBody){const l=$(t,e.requestBody,r)??e.requestBody,i=G(t,l,r),p=i?Object.keys(i):void 0;let a,m,y;if(i&&p){y={};for(const d of p){const E=i[d];if(!E)continue;let g;const S=E.itemSchema,q=E.schema??S,O=F(q,t,r);O&&(g=H(s.schemaStore,s.hashIndex,{kind:B.JSON_SCHEMA,data:O}));const k=Y(E,r,`${e.pointer}/requestBody/content/${N(d)}`);y[d]={schemaId:g,exampleIds:k,...R(C(q))}}const f=p[0],x=f?y[f]:void 0;a=x?.schemaId,m=x?.exampleIds}const T=_(l.description,o),b=C(e.requestBody)??C(l);n.push({nodeType:h.ITEM,variant:"body",label:"Request Body",labelTranslationKey:"body",required:l.required,mediaTypes:p,mediaTypeSchemas:y,schemaId:a,exampleIds:m,pointer:e.pointer+"/requestBody",...T!==void 0?{description:T}:{},...R(b)})}return n}function de(e,r,s,o){if(!e.responses)return;const{storeCtx:n}=M.get(),t=n?.document??{},c=e.responses,i=Object.entries(c).filter(([p])=>ye(p)).map(([p,a])=>{const m=$(t,a,o)??a;let y=C(a)??C(m);const T=G(t,m,o),b=T?Object.keys(T):[],f=b[0],x=f&&T?T[f]:void 0;let d,E,g,S;if(T&&b.length>0){S={};for(const v of b){const A=T[v];if(!A)continue;let K;const w=A.itemSchema,D=A.schema??w,u=F(D,t,o);u&&(K=H(n.schemaStore,n.hashIndex,{kind:B.JSON_SCHEMA,data:u}));const I=Y(A,o,`${e.pointer}/responses/${N(p)}/content/${N(v)}`);S[v]={schemaId:K,exampleIds:I,...R(C(D))}}const j=f?S[f]:void 0;d=j?.schemaId,E=j?.exampleIds}else if(x){const j=x.itemSchema,v=x.schema??j,A=F(v,t,o);A&&(y=y??C(v),d=H(n.schemaStore,n.hashIndex,{kind:B.JSON_SCHEMA,data:A})),E=Y(x,o,f?`${e.pointer}/responses/${N(p)}/content/${N(f)}`:void 0)}const q=Re(m.headers,t,o);q&&(g=H(n.schemaStore,n.hashIndex,{kind:B.JSON_SCHEMA,data:q}));let O;m.description&&(O=_(m.description,r),Q(O??[],s,`${oe}/${p}`));const k=m["x-summary"]?_(m["x-summary"],r):void 0;return k&&Q(k,s,`${oe}/${p}/summary`),{code:p,summary:k,description:O,mediaType:f,mediaTypes:b.length>0?b:void 0,mediaTypeContent:S,schemaId:d,exampleIds:E,headers:m.headers,headerSchemaId:g,...R(y)}});return{nodeType:h.ITEM,variant:"responses",responses:i,pointer:e.pointer+"/responses"}}function Y(e,r,s){const{storeCtx:o}=M.get(),n=[],t=o.document,c=s?.replace(/^\//,"");if(e.example!==void 0){const l=W(o.exampleStore,{value:e.example,...c&&{id:`${c}/example`}});n.push(l)}if(e.examples&&typeof e.examples=="object"){const l=C(e.examples);for(const[i,p]of Object.entries(e.examples)){if(i===J||!p||typeof p!="object")continue;const a=$(t,p,r)??p,m=C(p)??C(a)??l,y=W(o.exampleStore,{value:ee(a),key:i,summary:typeof a.summary=="string"?a.summary:i,description:te(a.description),externalValue:typeof a.externalValue=="string"?a.externalValue:void 0,...R(m),...c&&{id:`${c}/examples/${N(i)}`}});n.push(y)}}return n.length>0?n:void 0}function ve(e){const{storeCtx:r,options:s}=M.get();if(!e.security||!Array.isArray(e.security)||e.security.length===0)return;const o=e.security.map(n=>{const t=Object.entries(n);if(t.length===0)return null;const c=r?.document?.components?.securitySchemes,l=t.map(([i,p])=>{const a=r?.securitySchemeStore[i],m=C(c?.[i])??a?.[J];return{name:i,scopes:Array.isArray(p)?p:void 0,type:a?.type,scheme:a?.scheme,bearerFormat:a?.bearerFormat,in:a?.in,paramName:a?.paramName,description:a?.description?_(a.description,s):a?.description,openIdConnectUrl:a?.openIdConnectUrl,oauth2MetadataUrl:a?.oauth2MetadataUrl,deprecated:a?.deprecated,flows:a?.flows,...R(m)}}).filter(i=>i.name);return l.length>0?{schemes:l}:null}).filter(n=>n!==null);if(o.length!==0)return{nodeType:h.SECURITY,requirements:o}}function qe(e,r,s,o){const{storeCtx:n}=M.get(),{options:t}=M.get();if(!n)throw new Error("OpenAPI store context is not initialized");return fe(e,n,r,s,o,t)}export{Ue as buildItemContent,Te as createCallbackIdFactory};
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import{Fragment as B,jsx as r,jsxs as l}from"react/jsx-runtime";import{useMemo as d,memo as Q,useContext as U}from"react";import{useAtomValue as E}from"jotai";import{styled as t,css as c}from"styled-components";import{apiSpecType as I}from"../../types/common.js";import{H1 as V}from"@redocly/theme/components/Typography/H1";import{H2 as Y}from"@redocly/theme/components/Typography/H2";import{H3 as J}from"@redocly/theme/components/Typography/H3";import{H4 as X}from"@redocly/theme/components/Typography/H4";import{
|
|
1
|
+
import{Fragment as B,jsx as r,jsxs as l}from"react/jsx-runtime";import{useMemo as d,memo as Q,useContext as U}from"react";import{useAtomValue as E}from"jotai";import{styled as t,css as c}from"styled-components";import{apiSpecType as I}from"../../types/common.js";import{H1 as V}from"@redocly/theme/components/Typography/H1";import{H2 as Y}from"@redocly/theme/components/Typography/H2";import{H3 as J}from"@redocly/theme/components/Typography/H3";import{H4 as X}from"@redocly/theme/components/Typography/H4";import{breakpoints as Z}from"@redocly/theme/core/openapi";import{useSpecTranslate as ee}from"../../hooks/useTranslate.js";import{resolveText as re}from"../../utils/resolveText.js";import{routingBasePathAtom as te,specTypeAtom as oe}from"../../jotai/store.js";import{GraphQLHeaderExtras as ae}from"../graphql/GraphQLHeaderExtras.js";import{StyledBadge as D,TextBadge as ne,renderPropertyBadge as W}from"../common/Badge.js";import{DeepLinkAnchor as ie,deepLinkHoverReveal as se}from"../common/DeepLinkAnchor.js";import{joinWithSeparator as le,toRelativePath as pe}from"../../utils/url.js";import{encodeBackSlashes as de}from"../../utils/string.js";import{buildDeepLinkUrl as ce,getDeepLinkId as me}from"../../utils/deep-link.js";import{useNavigationUrlNormalizer as ge}from"../../hooks/useNormalizeUrl.js";import{ItemIdContext as he}from"../../hooks/useDeepLinkSection.js";import{ArgsCollapsed as fe}from"../graphql/styled.js";import{ResponsesDeepLinkAnchor as be}from"./ResponseDeepLinkAnchor.js";import{HeaderResponseCodeTabs as ue}from"./HeaderResponseCodeTabs.js";import{HeaderPageActions as xe}from"./HeaderPageActions.js";import{ExpandAllButton as ve}from"../common/ExpandAllButton.js";import{useHeaderExpandableKeys as He,useResponseCodes as we,useHeaderHasRenderedCollapsibles as ke}from"./hooks.js";function ye({node:e,path:m,parentNode:_}){const{level:g,label:q,badges:u,deprecated:z,graphqlReturnType:j,graphqlArgs:x,graphqlDeprecated:G,graphqlOperationType:N,showPageActions:F=!1,deepLinkSuffix:a,protocolTag:w,isWebhook:y}=e,$=E(oe),v=ee(),o=$===I.GRAPHQL,A=z||o&&G,i=E(te),k=ge(),h=U(he),s=we(_,a),K=s?.[0]||"",f=re(v,e.labelTranslationKey,e.label),p=d(()=>m?pe(m,i):"",[m,i]),H=d(()=>p?k(a?ce(i,p,a):le(i,de(p.toLowerCase()))):"",[p,i,a,k]),R=a==="responses"&&!!s&&s.length>0&&!!m,T=He(a),M=ke(a),C=d(()=>u?.filter(n=>n.position==="before")??[],[u]),L=d(()=>u?.filter(n=>n.position!=="before")??[],[u]),P=d(()=>!H||g<=1?null:R?r(be,{routingBasePath:i,relativePath:p,itemId:h??"",label:`link to ${f}`}):r(ie,{to:H,label:`link to ${f}`}),[H,g,R,i,p,h,f]),S=d(()=>{const n=l(B,{children:[P,C.map(W),f,L.map(W)]});switch(g){case 1:return r(Be,{$inline:o,children:n});case 2:return l(Ee,{$inline:o,children:[n,A&&r(D,{$deprecated:!0,children:v("badges.deprecated","deprecated")}),y&&r(D,{webhook:!0,children:v("badges.webhook","Webhook")})]});case 3:return r(Ie,{$inline:o,children:n});case 4:return r(De,{$inline:o,children:n});case 5:return r(We,{$inline:o,children:n});default:return null}},[P,C,f,L,g,A,v,y,o]),O=!o&&g===4&&a==="responses";return l(B,{children:[w&&r(Pe,{color:w.color,borderless:!0,children:w.label}),l($e,{id:a?me(H):void 0,$spacingBeforeResponses:O,$isAsyncApi:$===I.ASYNCAPI,children:[l(Te,{$badgeCount:s?.length??0,children:[o?l(Se,{children:[S,x&&x.length>0&&l(Ce,{"data-testid":"collapsed-args",$size:"lg",children:["(",x.length===1?x[0].name:"...args",")"]})]}):S,s&&s.length>0&&r(ue,{codes:s,itemId:h??"",firstCode:K}),T.length>0&&M&&h&&r(ve,{itemId:h,deepLinkKeys:T})]}),F&&r(Le,{children:r(xe,{pageSlug:m||i})})]}),o&&r(ae,{returnType:j,operationName:q,operationType:N})]})}const $e=t.div`
|
|
2
2
|
container-type: inline-size;
|
|
3
3
|
container-name: api-docs-heading;
|
|
4
4
|
position: relative;
|
|
5
5
|
display: flex;
|
|
6
6
|
align-items: flex-start;
|
|
7
7
|
gap: var(--spacing-base);
|
|
8
|
-
${
|
|
8
|
+
${se}
|
|
9
9
|
margin-bottom: var(--spacing-base);
|
|
10
10
|
flex-wrap: nowrap;
|
|
11
11
|
gap: var(--spacing-xs);
|
|
@@ -29,7 +29,7 @@ import{Fragment as B,jsx as r,jsxs as l}from"react/jsx-runtime";import{useMemo a
|
|
|
29
29
|
margin-top: var(--spacing-xl);
|
|
30
30
|
`}
|
|
31
31
|
|
|
32
|
-
@media screen and (max-width: ${
|
|
32
|
+
@media screen and (max-width: ${Z.small}) {
|
|
33
33
|
gap: 0;
|
|
34
34
|
}
|
|
35
35
|
`,Ae=250,Re=64,Te=t.div`
|
|
@@ -51,12 +51,12 @@ import{Fragment as B,jsx as r,jsxs as l}from"react/jsx-runtime";import{useMemo a
|
|
|
51
51
|
}
|
|
52
52
|
}
|
|
53
53
|
`}
|
|
54
|
-
`,Ce=t(
|
|
54
|
+
`,Ce=t(fe)`
|
|
55
55
|
margin-left: var(--spacing-xs);
|
|
56
56
|
`,Le=t.div`
|
|
57
57
|
flex-shrink: 0;
|
|
58
58
|
margin-left: auto;
|
|
59
|
-
`,Pe=t(
|
|
59
|
+
`,Pe=t(ne)`
|
|
60
60
|
display: block;
|
|
61
61
|
align-self: flex-start;
|
|
62
62
|
margin-top: var(--spacing-md);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as r}from"react/jsx-runtime";import{PageActions as e}from"@redocly/theme/components/PageActions/PageActions";function i({pageSlug:o}){return r(e,{pageSlug:o})}export{i as HeaderPageActions};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import{jsx as e}from"react/jsx-runtime";import{useEffect as S,useRef as b,useState as y}from"react";import{styled as g}from"styled-components";import{Button as x}from"@redocly/theme/components/Button/Button";import{SplitButton as I}from"@redocly/theme/components/SplitButton/SplitButton";import{DropdownMenu as L}from"@redocly/theme/components/Dropdown/DropdownMenu";import{DropdownMenuItem as A}from"@redocly/theme/components/Dropdown/DropdownMenuItem";import{PageActionsMenuItem as w}from"@redocly/theme/components/PageActions/PageActionsMenuItem";import{CopyIcon as h}from"@redocly/theme/icons/CopyIcon/CopyIcon";import{ChatGptIcon as k}from"@redocly/theme/icons/ChatGptIcon/ChatGptIcon";import{ClaudeIcon as v}from"@redocly/theme/icons/ClaudeIcon/ClaudeIcon";import{Spinner as D}from"@redocly/theme/icons/Spinner/Spinner";import{CheckmarkFilledIcon as G}from"@redocly/theme/icons/CheckmarkFilledIcon/CheckmarkFilledIcon";import{ClipboardService as M}from"@redocly/theme/core/openapi";import{useSpecTranslate as P}from"../../hooks/useTranslate.js";import{useCopySpecSlice as _}from"../../hooks/useCopySpecSlice.js";import{ASSISTANT_LINK_BASES as C,buildInlinePromptLink as B,buildFetchSpecPromptLink as O}from"../../services/spec-slice/index.js";const R=1e3;function N(i){if(i)try{return new URL(i,document.baseURI).toString()}catch{return}}function it({pageSlug:i}){const o=P(),n=_(i),[l,c]=y("idle"),a=b(void 0);if(S(()=>()=>clearTimeout(a.current),[]),!n)return null;const u=async()=>{if(l!=="processing"){c("processing");try{const t=await n.getText();M.copyCustom(t),c("done"),clearTimeout(a.current),a.current=setTimeout(()=>c("idle"),R)}catch(t){console.error(t),c("idle")}}},d=async t=>{const r=window.open("","_blank");try{const p=await n.getText(),f=N(n.specUrl),s=B(t,p,n.contentKind)??(f?O(t,f,n.scope):void 0);if(!s){r?.close();return}r?r.location.href=s:window.open(s,"_blank")}catch(p){r?.close(),console.error(p)}},m=[{buttonText:o("page.actions.copyButtonText","Copy"),title:o("page.actions.copyTitle","Copy for LLM"),description:o("page.actions.copyDescription",n.contentKind==="graphql"?"Copy page as GraphQL SDL for LLMs":"Copy page as YAML for LLMs"),iconComponent:h,onClick:u},{buttonText:o("page.actions.claudeButtonText","Open in Claude"),title:o("page.actions.claudeTitle","Open in Claude"),description:o("page.actions.claudeDescription","Get insights from Claude"),iconComponent:v,onClick:()=>d(C.claude)},{buttonText:o("page.actions.chatGptButtonText","Open in ChatGPT"),title:o("page.actions.chatGptTitle","Open in ChatGPT"),description:o("page.actions.chatGptDescription","Get insights from ChatGPT"),iconComponent:k,onClick:()=>d(C.chatgpt)}],T=m.map((t,r)=>e(A,{onAction:()=>"onClick"in t?t.onClick():void 0,children:e(w,{pageAction:t})},`${t.title}-${r}`));return e(z,{"data-testid":"page-actions",children:e(I,{portalled:!0,variant:"outlined",size:"medium",toggleAriaLabel:o("page.actions.moreActions","More actions"),button:e(x,{variant:"outlined",icon:U(l),onClick:u,children:m[0].buttonText}),children:e(E,{children:T})})})}function U(i){switch(i){case"processing":return e(D,{color:"var(--page-actions-processing-icon-color)"});case"done":return e(G,{color:"var(--page-actions-done-icon-color)"});default:return e(h,{})}}const z=g.div`
|
|
2
|
+
margin-left: auto;
|
|
3
|
+
padding-left: var(--page-actions-padding-left);
|
|
4
|
+
--button-color: var(--page-actions-button-text-color);
|
|
5
|
+
|
|
6
|
+
.button-group-size-medium .button.button-size-medium {
|
|
7
|
+
--button-icon-left-padding: var(--page-actions-button-padding);
|
|
8
|
+
}
|
|
9
|
+
`,E=g(L)`
|
|
10
|
+
--dropdown-menu-max-height: var(--page-actions-dropdown-max-height);
|
|
11
|
+
`;export{it as PageActions};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{useContext as d,useMemo as l}from"react";import{useAtomValue as p}from"jotai";import{exampleStoreAtom as h,generatedExampleAtom as x,buildExampleAtomKey as S}from"../../jotai/examples.js";import{convertSampleToString as g}from"../../services/code-samples/index.js";import{isSequentialMediaType as A}from"../../utils/media-type.js";import{schemaStoreAtom as
|
|
1
|
+
import{useContext as d,useMemo as l}from"react";import{useAtomValue as p}from"jotai";import{exampleStoreAtom as h,generatedExampleAtom as x,buildExampleAtomKey as S}from"../../jotai/examples.js";import{convertSampleToString as g}from"../../services/code-samples/index.js";import{isSequentialMediaType as A}from"../../utils/media-type.js";import{schemaStoreAtom as E}from"../../jotai/schema.js";import{buildOpenApiSectionSuffix as C,extractDeepLinkParamFromHash as I,hashIsForItem as L,hashIsInsideCallback as b,hashIsOutsideCallbacks as k,hashToElementId as v}from"../../utils/deep-link.js";import{ItemIdContext as D,useCallbackScope as w}from"../../hooks/useDeepLinkSection.js";import{useUrlHash as y}from"../../hooks/useUrlHash.js";import{routingBasePathAtom as B}from"../../jotai/store.js";import{useDeepLinkUrl as F}from"../../hooks/useDeepLinkSection.js";import{toElementId as H}from"../../utils/url.js";function K(e){const t=p(h);return!e||e.length===0?[]:e.map(o=>t[o]).filter(Boolean)}function N(e,t,o,n){const i=K(t),s=d(D)??"",r=n?.toLowerCase(),a=e?S(e,o,n,s):"",f=p(x(a)),u=p(E);if(i.length>0){if(r&&A(r)){const m=e?u[e]?.data:void 0;return i.map(c=>typeof c.value=="string"?c.value:g(c.value,r,m))}return i.map(m=>m.value)}return f!==void 0?[f]:[]}function Q(e,t){const o=l(()=>e?C("response",t,e):"",[e,t]);return F(o)}function W(e,t,o){const n=y(),i=p(B),s=w();return l(()=>{if(!e)return;const r=v(n),a=(H(e,i)??"").toLowerCase();if(!L(r,a)||!(s?b(r,a,s):k(r,a)))return;const u=I(n,o);if(u)return t?.find(m=>m.toLowerCase()===u)},[n,e,t,o,i,s])}export{K as useExampleEntries,W as useKeyFromHash,N as useResolvedExamples,Q as useResponseSectionDeepLink};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as e,jsxs as m}from"react/jsx-runtime";import{memo as h,useMemo as n}from"react";import{useAtomValue as g}from"jotai";import{storeAtom as M}from"../../jotai/store.js";import{useSpecTranslate as
|
|
1
|
+
import{jsx as e,jsxs as m}from"react/jsx-runtime";import{memo as h,useMemo as n}from"react";import{useAtomValue as g}from"jotai";import{storeAtom as M}from"../../jotai/store.js";import{useSpecTranslate as S}from"../../hooks/useTranslate.js";import{SchemaView as x}from"../Schema/SchemaView.js";import{ContentWrapper as c}from"../common/ContentWrapper.js";import{DeepLinkAnchor as A}from"../common/DeepLinkAnchor.js";import{Markdown as D}from"../common/Markdown.js";import{getDeepLinkId as k}from"../../utils/deep-link.js";import{DeepLinkSectionContext as L,useDeepLinkUrl as P}from"../../hooks/useDeepLinkSection.js";import{McpSection as b,McpSubRow as a,McpTitle as j,McpTitleWrapper as w}from"./styled.js";import{buildMcpExamplePanel as C,buildPromptArgumentsSchema as T,useMcpDescriptionAst as v}from"./utils.js";function V({name:p}){const i=g(M),u=S(),r=n(()=>i.mcp?.prompts?.find(f=>f.name===p),[i.mcp,p]),s=v(r?.description),t=n(()=>r?.arguments?.length?T(r.arguments):null,[r]),l=n(()=>t?[C(t,"arguments")]:void 0,[t]),o=P("arguments"),d=n(()=>({t:"arguments"}),[]);return r?m(b,{children:[s?e(c,{children:e(a,{children:e(D,{source:s})})}):null,t&&e(c,{panels:l,children:m(a,{children:[e(w,{id:k(o),children:m(j,{children:[o&&e(A,{to:o,label:"link to Arguments"}),u("openapi.mcp.inputSchema","Arguments")]})}),e(L.Provider,{value:d,children:e(x,{schema:t,expandByDefault:!0})})]})})]}):null}const J=h(V);export{J as McpPrompt};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as t,jsxs as o}from"react/jsx-runtime";import{memo as b,useMemo as n}from"react";import{useAtomValue as j}from"jotai";import{storeAtom as v}from"../../jotai/store.js";import{useSpecTranslate as
|
|
1
|
+
import{jsx as t,jsxs as o}from"react/jsx-runtime";import{memo as b,useMemo as n}from"react";import{useAtomValue as j}from"jotai";import{storeAtom as v}from"../../jotai/store.js";import{useSpecTranslate as w}from"../../hooks/useTranslate.js";import{SchemaView as l}from"../Schema/SchemaView.js";import{ContentWrapper as r}from"../common/ContentWrapper.js";import{DeepLinkAnchor as h}from"../common/DeepLinkAnchor.js";import{Markdown as C}from"../common/Markdown.js";import{getDeepLinkId as d}from"../../utils/deep-link.js";import{DeepLinkSectionContext as f,useDeepLinkUrl as S}from"../../hooks/useDeepLinkSection.js";import{McpSection as I,McpSubRow as u,McpTitle as D,McpTitleWrapper as M}from"./styled.js";import{buildMcpExamplePanel as k,useMcpDescriptionAst as y}from"./utils.js";function B({name:m}){const a=j(v),p=w(),e=n(()=>a.mcp?.tools?.find(P=>P.name===m),[a.mcp,m]),s=y(e?.description),x=n(()=>e?.inputSchema?[k(e.inputSchema,"input")]:void 0,[e?.inputSchema]),L=n(()=>e?.outputSchema?[k(e.outputSchema,"output")]:void 0,[e?.outputSchema]),c=S("input-schema"),T=n(()=>({t:"input-schema"}),[]),i=S("output-schema"),A=n(()=>({t:"output-schema"}),[]);return e?o(I,{children:[t(r,{children:o(u,{children:[o("p",{children:[p("openapi.mcp.toolName","Tool name"),": ",t("code",{children:e.name})]}),s?t(C,{source:s}):null]})}),e.inputSchema&&t(r,{panels:x,children:o(u,{children:[t(M,{id:d(c),children:o(D,{children:[c&&t(h,{to:c,label:"link to Input schema"}),p("openapi.mcp.inputSchema","Input schema")]})}),t(f.Provider,{value:T,children:t(l,{schema:e.inputSchema,expandByDefault:!0})})]})}),e.outputSchema&&t(r,{panels:L,children:o(u,{children:[t(M,{id:d(i),children:o(D,{children:[i&&t(h,{to:i,label:"link to Output schema"}),p("openapi.mcp.outputSchema","Output schema")]})}),t(f.Provider,{value:A,children:t(l,{schema:e.outputSchema,expandByDefault:!0})})]})})]}):null}const H=b(B);export{H as McpTool};
|
|
@@ -2,6 +2,6 @@ import type { McpExampleNode } from '../../types/content.js';
|
|
|
2
2
|
import type { McpPromptArgument, McpResource, OpenAPISchema } from '../../types/openapi.js';
|
|
3
3
|
export declare function useMcpDescriptionAst(description: unknown): unknown;
|
|
4
4
|
export declare function sampleSchema(schema: OpenAPISchema): unknown;
|
|
5
|
-
export declare function buildMcpExamplePanel(schema: OpenAPISchema,
|
|
5
|
+
export declare function buildMcpExamplePanel(schema: OpenAPISchema, example: 'input' | 'output' | 'arguments'): McpExampleNode;
|
|
6
6
|
export declare function buildResourceContentPanel(resource: McpResource): McpExampleNode | null;
|
|
7
7
|
export declare function buildPromptArgumentsSchema(args: McpPromptArgument[]): OpenAPISchema | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{useMemo as i}from"react";import*as
|
|
1
|
+
import{useMemo as i}from"react";import*as o from"openapi-sampler";import{panelKind as p}from"../../types/common.js";import{resolveMarkdocHeadingIds as a}from"../../adapters/utils/markdoc.js";import{useMarkdownAdapter as m}from"../../contexts/markdownAdapter.js";import{useHashItemId as u}from"../../hooks/useDeepLinkSection.js";function h(t){const e=m(),r=u();return i(()=>{if(!t)return null;const n=e.parse(t);return r&&n&&typeof n=="object"&&a(n,r),n},[e,t,r])}function l(t){try{return o.sample(t,{quiet:!0})}catch{return{}}}function E(t,e){return{children:[{kind:p.MCP_EXAMPLE,headerTitleTranslationKey:e==="output"?"openapi.mcp.outputExample":e==="arguments"?"openapi.mcp.argumentsExample":"openapi.mcp.inputExample",data:l(t)}]}}function M(t){const e=t.text??t.blob;return e===void 0?null:{children:[{kind:p.MCP_EXAMPLE,headerTitleTranslationKey:"openapi.mcp.exampleTitle",data:e,language:t.mimeType}]}}function b(t){return t.length?{type:"object",properties:Object.fromEntries(t.map(e=>[e.name,{type:"string",example:e.example??"string",description:typeof e.description=="string"?e.description:void 0}])),required:t.filter(e=>e.required).map(e=>e.name)}:null}export{E as buildMcpExamplePanel,b as buildPromptArgumentsSchema,M as buildResourceContentPanel,l as sampleSchema,h as useMcpDescriptionAst};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as r,jsxs as t}from"react/jsx-runtime";import{useAtomValue as w}from"jotai";import{PropertyItem as T,Row as B,NameWrapper as R,PropertyName as j,RequiredLabel as k,SchemaTypeLabel as F,SwitcherWrapper as q,SwitcherBadge as A,FieldDetail as m,FieldDetailLabel as o,FieldDetailValue as I,DefaultValueTag as N,ExampleValueTag as C,ExampleJsonViewer as _,ParentPrefix as O}from"../styled.js";import{isStructuredExample as W}from"../../../types/schema.js";import{SchemaDescription as $}from"../SchemaDescription.js";import{SchemaEnumValues as J}from"./SchemaEnumValues.js";import{SchemaEnumDescriptions as M}from"./SchemaEnumDescriptions.js";import{getDiscriminatorEnumRender as z,getSchemaEnumRowLabel as G}from"../utils.js";import{SchemaVariantSelector as H}from"./SchemaVariantSelector.js";import{SchemaTitleLabel as K}from"./SchemaTitleLabel.js";import{Pattern as Q}from"./Pattern.js";import{DeepLinkAnchor as U}from"../../common/DeepLinkAnchor.js";import{getDeepLinkId as X,stripVariantMarkers as Y}from"../../../utils/deep-link.js";import{globalOptionsAtom as Z}from"../../../jotai/store.js";import{useSchemaFieldDeepLink as ee}from"../hooks/useSchemaFieldDeepLink.js";import{useSpecTranslate as re}from"../../../hooks/useTranslate.js";import{SECTION_ATTR as te}from"../../../constants/openapi.js";import{renderPropertyBadge as u}from"../../common/Badge.js";import{splitBadgesByPosition as ie}from"../../../utils/split-badges-by-position.js";function Ee({fieldName:a,property:e,isFirst:h,mappingKeys:f,optionEntries:p,activeIdx:x,fieldParentsName:s=[],onSelect:g}){const{hidePropertiesPrefix:D,jsonSamplesExpandLevel:S}=w(Z),i=re(),{enumDescriptions:c,enumValues:n}=z(e,f),b=G(e.type,n.length),L=e.const!==void 0&&e.const!=="",y=[...s,a].join("/"),l=ee(y),{before:E,after:V}=ie(e.badges);return t(T,{$isFirst:h,id:X(l),children:[t(B,{children:[t(R,{children:[l&&r(U,{to:l,label:`link to ${a}`,variant:"field"}),!D&&s.map((P,v)=>{const d=Y(P);return d?t(O,{children:[d,".","\u200B"]},v):null}),E.map(u),r(j,{className:"schema-name",children:a})]}),r(F,{children:e.type}),r(K,{title:e.title,schemaName:e.schemaName}),e.isRequired?r(k,{children:i("required","required")}):null,V.map(u)]}),r($,{value:e.description}),e.default!==void 0?t(m,{children:[t(o,{children:[i("default","Default"),":"]}),r(N,{children:e.default})]}):null,c?r(M,{values:c}):n.length>0?r(J,{label:b,values:n}):null,e.example!==void 0?t(m,{children:[t(o,{children:[i("example","Example"),":"]}),W(e.example)?r(_,{data:e.example,expandLevel:S,controls:!1}):r(C,{children:e.example})]}):null,r(Q,{pattern:e.pattern}),t(q,{[te]:"switcher",children:[r(A,{children:"Discriminator"}),r(H,{optionEntries:p,activeIndex:x,onChange:g,"data-testid":"discriminator-schema"})]}),L?t(m,{children:[t(o,{children:[i("value","Value"),":"]}),r(I,{children:e.const})]}):null]})}export{Ee as DiscriminatorPropertyRow};
|
|
1
|
+
import{jsx as r,jsxs as t}from"react/jsx-runtime";import{useAtomValue as w}from"jotai";import{PropertyItem as T,Row as B,NameWrapper as R,PropertyName as j,RequiredLabel as k,SchemaTypeLabel as F,SwitcherWrapper as q,SwitcherBadge as A,FieldDetail as m,FieldDetailLabel as o,FieldDetailValue as I,DefaultValueTag as N,ExampleValueTag as C,ExampleJsonViewer as _,ParentPrefix as O}from"../styled.js";import{isStructuredExample as W}from"../../../types/schema.js";import{SchemaDescription as $}from"../SchemaDescription.js";import{SchemaEnumValues as J}from"./SchemaEnumValues.js";import{SchemaEnumDescriptions as M}from"./SchemaEnumDescriptions.js";import{getDiscriminatorEnumRender as z,getSchemaEnumRowLabel as G}from"../utils.js";import{SchemaVariantSelector as H}from"./SchemaVariantSelector.js";import{SchemaTitleLabel as K}from"./SchemaTitleLabel.js";import{Pattern as Q}from"./Pattern.js";import{DeepLinkAnchor as U}from"../../common/DeepLinkAnchor.js";import{getDeepLinkId as X,stripVariantMarkers as Y}from"../../../utils/deep-link.js";import{globalOptionsAtom as Z}from"../../../jotai/store.js";import{useSchemaFieldDeepLink as ee}from"../hooks/useSchemaFieldDeepLink.js";import{useSpecTranslate as re}from"../../../hooks/useTranslate.js";import{SECTION_ATTR as te}from"../../../constants/openapi.js";import{renderPropertyBadge as u}from"../../common/Badge.js";import{splitBadgesByPosition as ie}from"../../../utils/split-badges-by-position.js";function Ee({fieldName:a,property:e,isFirst:h,mappingKeys:f,optionEntries:p,activeIdx:x,fieldParentsName:s=[],onSelect:g}){const{hidePropertiesPrefix:D,jsonSamplesExpandLevel:S}=w(Z),i=re(),{enumDescriptions:c,enumValues:n}=z(e,f),b=G(e.type,n.length),L=e.const!==void 0&&e.const!=="",y=[...s,a].join("/"),l=ee(y),{before:E,after:V}=ie(e.badges);return t(T,{$isFirst:h,id:X(l),children:[t(B,{children:[t(R,{children:[l&&r(U,{to:l,label:`link to ${a}`,variant:"field"}),!D&&s.map((P,v)=>{const d=Y(P);return d?t(O,{children:[d,".","\u200B"]},v):null}),E.map(u),r(j,{className:"schema-name",children:a})]}),r(F,{children:e.type}),r(K,{title:e.title,schemaName:e.schemaName}),e.isRequired?r(k,{children:i("required","required")}):null,V.map(u)]}),r($,{value:e.description}),e.default!==void 0?t(m,{children:[t(o,{children:[i("default","Default"),":"]}),r(N,{children:e.default})]}):null,c?r(M,{values:c}):n.length>0?r(J,{label:b,values:n}):null,e.example!==void 0?t(m,{children:[t(o,{children:[i("example","Example"),":"]}),W(e.example)?r(_,{data:e.example,expandLevel:S,controls:!1}):r(C,{children:e.example})]}):null,r(Q,{pattern:e.pattern}),t(q,{[te]:"switcher",children:[r(A,{children:i("discriminator","Discriminator")}),r(H,{optionEntries:p,activeIndex:x,onChange:g,"data-testid":"discriminator-schema"})]}),L?t(m,{children:[t(o,{children:[i("value","Value"),":"]}),r(I,{children:e.const})]}):null]})}export{Ee as DiscriminatorPropertyRow};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Fragment as
|
|
1
|
+
import{Fragment as a,jsx as r,jsxs as n}from"react/jsx-runtime";import{useSpecTranslate as m}from"../../../hooks/useTranslate.js";import{FieldDetail as c,FieldDetailLabel as o,ExamplesList as u,ExampleItem as p,ExampleSummary as d,ExampleDescription as x}from"../styled.js";import{ExpandableExample as f}from"./ExpandableExample.js";function b({examples:l}){const s=m();if(!l)return null;const i=Object.entries(l);return i.length===0?null:n(a,{children:[r(c,{children:n(o,{children:[s("examples","Examples"),":"]})}),r(u,{children:i.map(([t,e])=>n(p,{children:[r(d,{children:e.summary||t}),e.description?r(x,{children:e.description}):null,e.value!==void 0?r(f,{value:e.value}):null]},t))})]})}export{b as Examples};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Fragment as p,jsx as e,jsxs as
|
|
1
|
+
import{Fragment as p,jsx as e,jsxs as i}from"react/jsx-runtime";import{useState as T}from"react";import{ChevronRightIcon as z}from"@redocly/theme/icons/ChevronRightIcon/ChevronRightIcon";import{useSpecTranslate as R}from"../../hooks/useTranslate.js";import{normalizeScopes as g}from"../../utils/security-scope.js";import{Markdown as C}from"../common/Markdown.js";import{OptionalScopesChevron as A,OptionalScopesList as x,OptionalScopesToggle as L,DeprecatedBadge as D,FlowDescription as I,FlowProperties as j,FlowTitle as k,FlowTitleWrapper as M,FlowTypeBody as _,FlowTypeName as $,FlowTypeSection as q,FlowTypeTag as P,FlowWrapper as E,PropertyLabel as B,PropertyRow as H,PropertyValue as N,SchemeLink as s,ScopesLabel as W,ScopesList as K,ScopesSection as O}from"./styled.js";import{ScopeTagWithTooltip as b}from"./ScopeTagWithTooltip.js";const w=24;function ce({scheme:r}){const o=R(),{type:t,name:n}=r;return!t||!n?null:i(E,{children:[i(M,{children:[e(k,{children:n}),r.deprecated&&e(D,{children:o("badges.deprecated","deprecated")})]}),r.description&&e(I,{children:typeof r.description=="string"?r.description:e(C,{source:r.description})}),i(j,{children:[t==="http"&&e(V,{scheme:r,translate:o}),t==="apiKey"&&e(X,{scheme:r,translate:o}),t==="oauth2"&&e(G,{scheme:r,translate:o}),t==="openIdConnect"&&e(Q,{scheme:r,translate:o})]})]})}function V({scheme:r,translate:o}){return i(p,{children:[e(a,{label:o("httpAuthorizationScheme","HTTP Authorization Scheme"),value:r.type}),e(a,{label:o("bearerFormat","Bearer Format"),value:r.bearerFormat}),e(h,{scopes:r.scopes,translate:o})]})}function X({scheme:r,translate:o}){const t=r.in?`${r.in.charAt(0).toUpperCase()+r.in.slice(1)} `:"";return i(p,{children:[e(a,{label:`${t}${o("parameterName","parameter name")}:`,value:r.paramName}),e(h,{scopes:r.scopes,translate:o})]})}function G({scheme:r,translate:o}){const t=r.flows;if(!t)return e(p,{});const n=Z(t),l=Object.entries(t).filter(([,c])=>c!=null);return i(p,{children:[r.oauth2MetadataUrl&&e(a,{label:`${o("oauth2MetadataUrl","OAuth2 Metadata URL")}:`,value:e(s,{href:r.oauth2MetadataUrl,target:"_blank",rel:"noopener noreferrer",children:r.oauth2MetadataUrl})}),l.map(([c,u])=>e(J,{flowType:c,flow:u,requiredScopes:r.scopes,translate:o},c)),e(h,{scopes:r.scopes,scopeDescriptions:n,translate:o})]})}function J({flowType:r,flow:o,requiredScopes:t,translate:n}){const[l,c]=T(!1),{authorizationUrl:u,tokenUrl:f,refreshUrl:S,deviceAuthorizationUrl:m,scopes:v}=o,U=Y(t,v),y=()=>{c(d=>!d)};return i(q,{children:[i(P,{children:[e("span",{children:n("flowType","Flow type")}),e($,{children:r})]}),i(_,{children:[u&&e(a,{label:`${n("authorizationUrl","Authorization URL")}:`,value:e(s,{href:u,children:u})}),m&&e(a,{label:`${n("deviceAuthorizationUrl","Device Authorization URL")}:`,value:e(s,{href:m,children:m})}),f&&e(a,{label:`${n("tokenUrl","Token URL")}:`,value:e(s,{href:f,children:f})}),S&&e(a,{label:`${n("refreshUrl","Refresh URL")}:`,value:e(s,{href:S,children:S})}),U.length>0&&i(O,{children:[i(L,{type:"button",onClick:y,children:[l?n("hideOptionalScopes","Hide optional scopes"):n("showOptionalScopes","Show optional scopes"),e(A,{isOpen:l,children:e(z,{size:"var(--font-size-base)",color:"var(--tree-content-color-default)"})})]}),e(x,{isOpen:l,children:U.map(([d,F])=>e(a,{label:e(b,{text:d,maxChars:w,large:!0}),value:F||" "},d))})]})]})]})}function Q({scheme:r,translate:o}){return i(p,{children:[r.openIdConnectUrl&&e(a,{label:o("connectUrl","Connect URL"),value:e(s,{href:r.openIdConnectUrl,target:"_blank",rel:"noopener noreferrer",children:r.openIdConnectUrl})}),e(h,{scopes:r.scopes,translate:o})]})}function a({label:r,value:o}){return o?i(H,{children:[e(B,{children:r}),e(N,{children:o})]}):null}function Y(r,o){if(!o)return[];const t=new Set(g(r));return Object.entries(o).filter(([n])=>!t.has(n.trim()))}function h({scopes:r,scopeDescriptions:o,translate:t}){const n=g(r);return n.length===0?null:o&&o.size>0?i(p,{children:[e(a,{label:t("requiredScopes","Required scopes"),value:" "}),n.map(l=>e(a,{label:e(b,{text:l,maxChars:w,large:!0}),value:o.get(l)||" "},l))]}):i(O,{children:[e(W,{children:t("requiredScopes","Required scopes")}),e(K,{children:n.map(l=>e(b,{text:l,maxChars:w,large:!0},l))})]})}function Z(r){if(!r)return null;const o=new Map;return Object.values(r).forEach(t=>{t?.scopes&&Object.entries(t.scopes).forEach(([n,l])=>{const c=n.trim();!c||o.has(c)||o.set(c,l)})}),o.size>0?o:null}export{ce as SecurityFlowDetail};
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import{jsx as o}from"react/jsx-runtime";import{memo as f,useCallback as v}from"react";import{styled as
|
|
2
|
-
& [${
|
|
1
|
+
import{jsx as o}from"react/jsx-runtime";import{memo as f,useCallback as v}from"react";import{styled as a,css as l}from"styled-components";import{Link as g}from"react-router";import{useUrlHash as k}from"../../hooks/useUrlHash.js";import{useAtomValue as u}from"jotai";import{LinkIcon as b}from"@redocly/theme/icons/LinkIcon/LinkIcon";import{ClipboardService as x}from"@redocly/theme/core/openapi";import{globalOptionsAtom as y}from"../../jotai/store.js";import{hashToElementId as s}from"../../utils/deep-link.js";function A({to:e,label:c,variant:p="heading"}){const{onDeepLinkClick:i}=u(y),m=k({trackSilentReplaces:!0}),t=e.split("#")[1],d=!!t&&s(m)===s(t),h=v(n=>{x.copyCustom(n.currentTarget.href),i&&(n.preventDefault(),i(e))},[i,e]);return o(C,{className:"deep-link-anchor","data-deep-link-anchor":!0,children:o(L,{$variant:p,to:e,"aria-label":c??`link to ${e}`,"aria-current":d?"location":void 0,onClick:h,children:o(b,{color:"--heading-anchor-color"})})})}const j=f(A),r="data-deep-link-anchor",O=`
|
|
2
|
+
& [${r}] svg {
|
|
3
3
|
visibility: hidden;
|
|
4
4
|
}
|
|
5
|
-
&:hover [${
|
|
6
|
-
& [${
|
|
5
|
+
&:hover [${r}] svg,
|
|
6
|
+
& [${r}] a:focus svg {
|
|
7
7
|
visibility: visible;
|
|
8
8
|
}
|
|
9
|
-
`,C=
|
|
9
|
+
`,C=a.span`
|
|
10
10
|
position: relative;
|
|
11
11
|
display: inline-flex;
|
|
12
12
|
align-items: center;
|
|
13
13
|
vertical-align: middle;
|
|
14
|
-
`,L=
|
|
14
|
+
`,L=a(g)`
|
|
15
15
|
position: absolute;
|
|
16
16
|
top: 50%;
|
|
17
17
|
transform: translate(-100%, -50%);
|
|
@@ -19,9 +19,9 @@ import{jsx as o}from"react/jsx-runtime";import{memo as f,useCallback as v}from"r
|
|
|
19
19
|
display: flex;
|
|
20
20
|
align-items: center;
|
|
21
21
|
|
|
22
|
-
${({$variant:
|
|
22
|
+
${({$variant:e})=>e==="field"?l`
|
|
23
23
|
left: -2px;
|
|
24
|
-
`:
|
|
24
|
+
`:l`
|
|
25
25
|
left: 0;
|
|
26
26
|
padding-right: var(--heading-anchor-offset-right, 4px);
|
|
27
27
|
`}
|
|
@@ -29,4 +29,4 @@ import{jsx as o}from"react/jsx-runtime";import{memo as f,useCallback as v}from"r
|
|
|
29
29
|
&&[aria-current] svg {
|
|
30
30
|
visibility: visible;
|
|
31
31
|
}
|
|
32
|
-
`;export{
|
|
32
|
+
`;export{r as DEEP_LINK_ANCHOR_ATTR,j as DeepLinkAnchor,O as deepLinkHoverReveal};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{Fragment as y,jsx as
|
|
1
|
+
import{Fragment as y,jsx as r,jsxs as v}from"react/jsx-runtime";import{memo as g,useMemo as s}from"react";import{styled as k}from"styled-components";import{useAtomValue as D}from"jotai";import{panelKind as P}from"../../types/common.js";import{refPointerToStoreId as d}from"../../utils/refPointer.js";import{DeepLinkSectionContext as j}from"../../hooks/useDeepLinkSection.js";import{schemaEntryAtom as E}from"../../jotai/schema.js";import{useResolvedExamples as I}from"../ItemContent/hooks.js";import{SchemaView as C}from"../Schema/SchemaView.js";import{Markdown as O}from"../common/Markdown.js";import{ContentWrapper as w}from"../common/ContentWrapper.js";import{SchemaCatalogLink as L}from"../SchemaCatalogLink.js";import{detectJsonSchemaType as T,isPrimitiveLikeSchema as _}from"../../services/schema/propertyBuilder.js";function b(e){const m=e.type||T(e);return!_(e,m)}function A({schemaRef:e,exampleRef:m,showReadOnly:f=!0,showWriteOnly:u=!1}){const t=d(e),a=d(m),n=D(E(t??"")),c=s(()=>a?[a]:void 0,[a]),h=I(t,c,"response","application/json"),S=s(()=>({pathOnly:!0}),[]),p=s(()=>{const o=n?.data,i=o?.description;if(!(!i||typeof i=="string"&&!i.trim()||!o||!b(o)))return i},[n?.data]),l=h.length>0,x=s(()=>!t||!n||!l?void 0:[{children:[{kind:P.RESPONSE,schemaId:t,exampleIds:c,hideHeaderTitle:!0,examples:[]}]}],[t,n,l,c]);return!t||!n?r(y,{}):r("div",{"data-testid":"schema-definition",children:v(w,{panels:x,children:[e&&r(L,{schemaRef:e}),p?r(F,{children:r(O,{source:p})}):null,r(j.Provider,{value:S,children:r(C,{expandByDefault:!0,level:1,schemaId:t,skipReadOnly:!f,skipWriteOnly:!u})})]})})}const X=g(A),F=k.div`
|
|
2
2
|
margin-bottom: var(--spacing-vertical);
|
|
3
3
|
p:last-child {
|
|
4
4
|
margin-bottom: 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Fragment as Z,jsx as a,jsxs as
|
|
1
|
+
import{Fragment as Z,jsx as a,jsxs as $}from"react/jsx-runtime";import{useState as B,useMemo as D,useCallback as O,useContext as ee}from"react";import{useAtom as te,useAtomValue as R,useSetAtom as oe}from"jotai";import{PanelHeaderTitle as ne}from"@redocly/theme/components/Panel/PanelHeaderTitle";import{CodeBlockPanel as se}from"../styled.js";import{findExampleIdByKey as T}from"../../../services/code-samples/example-key.js";import{useResolvedExamples as ae,useExampleEntries as ie}from"../../ItemContent/hooks.js";import{useBodySamplingSchemaId as de,useSchemaVariantSelection as ce}from"./hooks.js";import{activeMediaTypeAtom as pe}from"../../../jotai/app.js";import{exampleStoreAtom as me}from"../../../jotai/examples.js";import{itemStoreAtom as re,itemStoreFieldAtom as F}from"../../../jotai/itemStore.js";import{ItemIdContext as le}from"../../../hooks/useDeepLinkSection.js";import{VariantPicker as ye,ExampleDescription as fe,ExampleSelector as xe,MediaTypeSelector as ue,PayloadDisplay as he}from"./selectors.js";import{ResponsePanelHeader as Te}from"./styled.js";import{ResponseCodesTabList as Ie,ResponseCodeTab as ve}from"../../common/ResponseCodeTabs.js";import{useSpecTranslate as Ce}from"../../../hooks/useTranslate.js";function Se(n,e,i){if(e===void 0||!n?.length)return;const c=s=>i[s];for(const s of n){for(const[I,v]of Object.entries(s.mediaTypeContent??{}))if(T(v.exampleIds,e,c))return{code:s.code,mediaType:I};if(T(s.exampleIds,e,c))return{code:s.code}}}function Ne({node:n}){const{responseCodes:e}=n,i=Ce(),c=ee(le)??"",s=oe(re(c)),I=R(F({itemId:c,key:"activeResponseCode"})),v=R(F({itemId:c,key:"activeExampleKey"})),p=R(me),m=D(()=>Se(e,n.exampleKey,p),[e,n.exampleKey,p]),f=I||m?.code||e?.[0]?.code,d=e?.find(t=>t.code===f)??e?.[0],r=D(()=>d?.mediaTypeContent?Object.keys(d.mediaTypeContent):d?.mediaTypes??[],[d]),[C,N]=te(pe),[V,_]=B(!1),S=m&&m.code===f&&m.mediaType&&r.includes(m.mediaType)?m.mediaType:void 0,u=!V&&S?S:C&&r.includes(C)?C:S??r[0],M=d?.mediaTypeContent?.[u??""],K=!!e?.length,E=M?.schemaId??d?.schemaId??(K?void 0:n.schemaId),o=M?.exampleIds??d?.exampleIds??(K?void 0:n.exampleIds),G=!e?.length||!!(E||o?.length),g=r.length>0?u??r[0]:"application/json",L=ce(o?.length?void 0:E),U=de(E,g),k=ae(U,o,"response",g),q=ie(o),h=`${f}|${u}|${o?.join(",")}`,b=T(o,v||void 0,t=>p[t]),j=b?o?.indexOf(b)??-1:-1,A=T(o,n.exampleKey,t=>p[t]),H=A?o?.indexOf(A)??-1:-1,[w,P]=B({}),l=w[h],x=j>=0?j:l?.picked?l.idx:H>=0?H:l?.idx??0;if(!l||l.idx!==x){const t=l?.picked??!1;P(y=>({...y,[h]:{idx:x,picked:t}}))}const z=O(t=>{P(Y=>({...Y,[h]:{idx:t,picked:!0}}));const y=o?.[t],X=y?p[y]?.key:void 0;s({activeExampleKey:X??""})},[h,o,p,s]),J=k[x]??k[0],Q=q[x]?.description,W=O(()=>{if(!(n.hideHeaderTitle&&!e?.length))return $(Te,{children:[!n.hideHeaderTitle&&a(ne,{children:i("response","Response")}),e&&e.length>0&&a(Ie,{children:e.map(t=>{const y=t.code===(f??e[0]?.code);return a(ve,{type:"button",$active:y,$code:t.code,onClick:()=>s({activeResponseCode:t.code}),children:t.code},t.code)})})]})},[e,f,n.hideHeaderTitle,s,i]);return k.length===0&&!e?.length?a(Z,{}):$(se,{className:"panel-response-samples",header:W,isExpandable:!1,children:[a(ue,{mediaTypes:r,value:u,onChange:t=>{_(!0),N(t)},label:i("contentType","Response media type")}),!o?.length&&a(ye,{selection:L}),a(xe,{exampleIds:o,selectedIdx:x,onSelect:z}),a(fe,{description:Q}),a(he,{payload:J,emptyMessage:G?`// ${i("noResponseExample","No response sample")}`:i("noResponseContent","No content"),mediaType:g})]})}export{Ne as ResponseExampleItem};
|
|
@@ -1 +1,5 @@
|
|
|
1
|
-
import{jsx as s}from"react/jsx-runtime";import{useEffect as
|
|
1
|
+
import{jsx as s}from"react/jsx-runtime";import{useEffect as g}from"react";import{useAtom as c}from"jotai";import{styled as f}from"styled-components";import{useSpecTranslate as u}from"../../../hooks/useTranslate.js";import{resolveText as d}from"../../../utils/resolveText.js";import{languageAtom as y}from"../../../jotai/app.js";import{OverviewPanel as L}from"../styled.js";import{LanguageList as v}from"./LanguageList.js";function b({node:t}){const i=t.children[0],m=u(),l=i?.options??[],[{activeLanguage:a},o]=c(y),r=l.map(n=>({title:n.title,key:n.key,lang:n.lang})),e=r[0]?.key;g(()=>{!a&&e&&o(e)},[a,e,o]);const p=d(m,t.titleTranslationKey,t.title);return s(x,{header:p,className:"panel-api-docs",isExpandable:!1,children:s(v,{languages:r,activeLanguage:a||e})})}const x=f(L)`
|
|
2
|
+
[data-component-name='Panel/PanelBody'] {
|
|
3
|
+
padding-top: 0;
|
|
4
|
+
}
|
|
5
|
+
`;export{b as LanguagePanelItem};
|