@redocly/openapi-docs 3.12.0-next.0 → 3.12.0-next.1

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.
@@ -1 +1 @@
1
- import{jsx as d}from"react/jsx-runtime";import{memo as v,useCallback as g,useEffect as b,useMemo as y}from"react";import S from"@markdoc/markdoc";import{LayoutVariant as O,markdoc as A}from"@redocly/theme";import{createStore as E,Provider as k}from"jotai";import{normalizeOptions as D,OpenAPIParser as N}from"../../services/index.js";import{getMarkdownHeaderId as j}from"./utils.js";import{normalizeServers as C}from"../../utils/index.js";import{SchemaDefinition as P}from"../SchemaDefinition/index.js";import{appStore as x,appStoreOverrideAtom as H,environmentAtom as M,layoutAtom as l,userClaimsAtom as I}from"../../jotai/app.js";import{mapObject as L}from"../../utils/object.js";import{mergeInMockServer as R}from"../../models/operation.js";import{getDefaultOperationStore as T,operationStore as V}from"../../jotai/operation.js";import{getServerEnvName as z}from"../../utils/environments.js";import{globalStoreAtom as _}from"../../jotai/store.js";const q={ignoreNamedSchemas:["java.io.ObjectStreamField"],maxDisplayedEnumValues:10,markdocOptions:{tags:{schemaDefinition:{render:"SchemaDefinition",attributes:{schemaRef:{type:String},exampleRef:{type:String},showReadOnly:{type:Boolean},showWriteOnly:{type:Boolean},htmlWrap:{type:String,default:!1}}}},nodes:{heading:{children:["inline"],attributes:{id:{type:String},level:{type:Number,required:!0,default:1}},transform(n,i){const t=n.transformAttributes(i),m=n.transformChildren(i),e=typeof t.id=="string"?t.id:j(m);return new S.Tag("Heading",{...t,id:e,level:n.attributes.level},m)}}},components:{SchemaDefinition:P,Heading:A.components.Heading}}},re=v(({children:n,options:i,definitionUrl:t,definition:m,withState:e})=>{const p=g(()=>{const r=D(i,q),o=new N(m,t,r);return{options:r,parser:o}},[m,t,i]),s=y(()=>{const r=E(),o=p();r.set(_,o);const u=C(o.parser.definitionUrl,R(o.parser.definition?.servers||[],o.options.mockServer)),c=Object.fromEntries(u.map(a=>[z(a),{server:a.url,...L(a.variables||{},f=>f.default||"")}]));return r.sub(x,()=>{}),r.set(l,o.options?.layout||O.THREE_PANEL),r.set(M,{environments:c}),r.set(I,e?.userClaims||{}),e&&r.set(H,{environment:e.environment,environments:e.environments,activeMimeName:e.activeMimeName,userClaims:e.userClaims}),e?.operation&&r.set(V(e.operation.pointer),T(e.operation.pointer,e.operation.state.requestValues)),r},[p,e]);return b(()=>{e?.layout&&s.set(l,e?.layout)},[s,e?.layout]),d(k,{store:s,children:n})});export{re as StoreProvider};
1
+ import{jsx as d}from"react/jsx-runtime";import{memo as v,useCallback as g,useEffect as b,useMemo as y}from"react";import S from"@markdoc/markdoc";import{LayoutVariant as O,markdoc as E}from"@redocly/theme";import{createStore as A,Provider as N}from"jotai";import{normalizeOptions as k,OpenAPIParser as D}from"../../services/index.js";import{getMarkdownHeaderId as j}from"./utils.js";import{normalizeServers as x}from"../../utils/index.js";import{SchemaDefinition as C}from"../SchemaDefinition/index.js";import{appStore as P,appStoreOverrideAtom as H,environmentAtom as M,layoutAtom as l,userClaimsAtom as I}from"../../jotai/app.js";import{mapObject as L}from"../../utils/object.js";import{mergeInMockServer as R}from"../../models/operation.js";import{getDefaultOperationStore as T,operationStore as V}from"../../jotai/operation.js";import{getServerEnvName as z}from"../../utils/environments.js";import{globalStoreAtom as _}from"../../jotai/store.js";const q={ignoreNamedSchemas:["java.io.ObjectStreamField"],maxDisplayedEnumValues:10,markdocOptions:{tags:{schemaDefinition:{render:"SchemaDefinition",attributes:{schemaRef:{type:String},exampleRef:{type:String},showReadOnly:{type:Boolean},showWriteOnly:{type:Boolean},htmlWrap:{type:String,default:!1}}}},nodes:{heading:{children:["inline"],attributes:{id:{type:String},level:{type:Number,required:!0,default:1}},transform(n,i){const t=n.transformAttributes(i),m=n.transformChildren(i),e=typeof t.id=="string"?t.id:j(m);return new S.Tag("Heading",{...t,id:e,level:n.attributes.level},m)}}},components:{SchemaDefinition:C,Heading:E.components.Heading}}},re=v(({children:n,options:i,definitionUrl:t,definition:m,withState:e})=>{const p=g(()=>{const r=k(i,q),o=new D(m,t,r);return{options:r,parser:o}},[m,t,i]),a=y(()=>{const r=A(),o=p();r.set(_,o);const c=x(o.parser.definitionUrl,R(o.parser.definition?.servers||[],o.options.mockServer)),u=Object.fromEntries(c.map(s=>[z(s),{server:s.url,...L(s.variables||{},f=>f.default||"")}]));if(r.sub(P,()=>{}),r.set(l,o.options?.layout||O.THREE_PANEL),r.set(M,{environments:u}),r.set(I,e?.userClaims||{}),e&&r.set(H,{environment:e.environment,environments:e.environments,activeMimeName:e.activeMimeName,userClaims:e.userClaims}),e?.operation){const s=T(e.operation.pointer,e.operation.state.requestValues,e.operation.state.activeExampleName);r.set(V(e.operation.pointer),s)}return r},[p,e]);return b(()=>{e?.layout&&a.set(l,e?.layout)},[a,e?.layout]),d(N,{store:a,children:n})});export{re as StoreProvider};
@@ -3,7 +3,8 @@ export type ReplayProps = {
3
3
  activeOperationId: string;
4
4
  fullOpenApi: OpenAPIDefinition;
5
5
  corsProxyUrl?: string;
6
+ pointer: string;
6
7
  };
7
- declare function EmbeddedReplayComponent({ activeOperationId, corsProxyUrl, fullOpenApi }: ReplayProps): import("react/jsx-runtime").JSX.Element;
8
+ declare function EmbeddedReplayComponent({ activeOperationId, corsProxyUrl, fullOpenApi, pointer, }: ReplayProps): import("react/jsx-runtime").JSX.Element;
8
9
  export declare const EmbeddedReplay: import("react").MemoExoticComponent<typeof EmbeddedReplayComponent>;
9
10
  export {};
@@ -1,10 +1,10 @@
1
- import{jsx as e}from"react/jsx-runtime";import{Suspense as f,lazy as u,memo as b,useEffect as g,useState as v}from"react";import{useAtomValue as r}from"jotai";import{globalOptionsAtom as y}from"../../jotai/store.js";import{appStore as h,environmentsAtom as x}from"../../jotai/app.js";import{useTranslate as E}from"../../hooks/index.js";import{convertOperationToReplayValue as R}from"./utils.js";import{styled as n}from"../../styled-components.js";const S=u(async()=>import("@redocly/replay").then(o=>({default:o.EmbeddedReplay})));function L({activeOperationId:o,corsProxyUrl:i,fullOpenApi:d}){const t=E(),{mockServer:p}=r(y),s=r(h),m=r(x),[l,c]=v(!1);return g(()=>{c(!0)},[]),e(O,{children:l?e(f,{fallback:e(a,{children:t("openapi.loading","Loading...")}),children:e(S,{activeOperationId:o,api:d,settings:{environment:s.environment,predefinedEnvValues:m,corsProxyUrl:i,mockServer:p,disableCollectionsTab:!0,convertOperationToReplayValue:R}})}):e(a,{children:t("openapi.loading","Loading...")})})}const I=b(L),a=n.div`
1
+ import{jsx as e}from"react/jsx-runtime";import{Suspense as y,lazy as h,memo as S,useEffect as x,useState as E}from"react";import{useAtomValue as o}from"jotai";import{globalOptionsAtom as R}from"../../jotai/store.js";import{operationStore as O}from"../../jotai/operation.js";import{appStore as L,environmentsAtom as T}from"../../jotai/app.js";import{useTranslate as V}from"../../hooks/index.js";import{convertOperationToReplayValue as j}from"./utils.js";import{styled as a}from"../../styled-components.js";const A=h(async()=>import("@redocly/replay").then(t=>({default:t.EmbeddedReplay})));function C({activeOperationId:t,corsProxyUrl:d,fullOpenApi:p,pointer:s}){const r=V(),{mockServer:m}=o(R),l=o(O(s)),n=o(L),c=o(T),[f,u]=E(!1);return x(()=>{u(!0)},[]),e(k,{children:f?e(y,{fallback:e(i,{children:r("openapi.loading","Loading...")}),children:e(A,{activeOperationId:t,api:p,settings:{environment:n.environment,predefinedEnvValues:c,corsProxyUrl:d,mockServer:m,disableCollectionsTab:!0,convertOperationToReplayValue:(v,b,g)=>j(v,b,g,void 0,l,n)}})}):e(i,{children:r("openapi.loading","Loading...")})})}const G=S(C),i=a.div`
2
2
  display: flex;
3
3
  justify-content: center;
4
4
  align-items: center;
5
5
  min-height: 100px;
6
- `,O=n.div`
6
+ `,k=a.div`
7
7
  border: 1px solid var(--border-color-primary);
8
8
  border-radius: var(--border-radius-lg);
9
9
  padding: 0;
10
- `;export{I as EmbeddedReplay};
10
+ `;export{G as EmbeddedReplay};
@@ -1,7 +1,9 @@
1
1
  import type { UserClaims } from '@redocly/theme';
2
2
  import type { OpenAPIDefinition } from '../../types/index.js';
3
+ import type { OperationStore } from '../../jotai/operation.js';
4
+ import type { AppStore } from '../../jotai/app.js';
3
5
  import { type SecurityRequirement } from '../../models/index.js';
4
- export declare function convertOperationToReplayValue(path: string, method: string, openAPI: OpenAPIDefinition, userClaims?: UserClaims): {
6
+ export declare function convertOperationToReplayValue(path: string, method: string, openAPI: OpenAPIDefinition, userClaims?: UserClaims, operationState?: OperationStore, appState?: AppStore): {
5
7
  id: string;
6
8
  name: string;
7
9
  method: string;
@@ -1 +1 @@
1
- import{isPrimitive as p}from"@redocly/theme";import{getOperation as d}from"../../models/index.js";import{normalizeOptions as f,OpenAPIParser as h}from"../../services/index.js";import{JsonPointer as x}from"../../utils/index.js";function v(t,a,n,r){if(!n)return;const e=new h(n),i=e.definition.paths?.[t],m=i?.[a],o=d(e,{...m,pathName:t,httpVerb:a,pathParameters:i.parameters||[],pathServers:i.servers||[]},void 0,f({}),"",{isCallback:!1},r);return o?{id:o.id,name:o.name,method:o.httpVerb,operationId:o.operationId,parameters:b(o.parameters),body:g(o.requestBody,n),path:o.path,href:o.href,servers:o.servers,security:w(o.security),responses:Object.fromEntries(o.responses.map(s=>[s.code,{code:s.code,description:s.description,mediaTypes:s.content?.mediaTypes.reduce((c,u)=>(c[u.name]={name:u.name,schema:l(u.schema?.rawSchema,n)},c),{})}]))}:void 0}function C(t){return function(a,n,r){const e=v(a,n,r,t);if(e)return{...e,operationId:e.operationId||x.compile(["paths",e.path,e.method])}}}function b(t,a){const n=new Set,r=t.map(e=>(n.add(e.in+":"+e.name),{name:e.name,in:e.in,required:e.required,description:e.description,example:a?.[String(e.in)]?.[e.name]||e.example,schema:e.schema}));for(const[e,i]of Object.entries(a||{}))for(const[m,o]of Object.entries(i||{}))n.has(e+":"+m)||r.push({name:m,in:e,required:!1,description:"",example:String(o),schema:void 0});return r}function S({type:t,format:a,enum:n}){return t==="string"&&(a==="binary"||a==="base64")?"file":t==="object"?"multiline":n.length>0?"select":"text"}function O(t,a){const n=t[0]?.example||t[0]?.examples;if(n)return n;if(t.schema?.example)return t.schema.example;const r=a?.default?.value||a?.default?.rawValue;return r?.[t.name]?p(r?.[t.name])?String(r?.[t.name]):JSON.stringify(r?.[t.name]):""}function g(t,a,n){if(!t||!t.content?.mediaTypes){if(!n)return;const{activeExampleName:r,...e}=n;return{activeExampleName:r,mediaTypes:Object.fromEntries(Object.entries(e).map(([i,m])=>[i,{name:i,examples:{default:{value:m}},schema:{},parameters:[]}]))}}return{required:t.required,activeExampleName:n?.activeExampleName,mediaTypes:t.content.mediaTypes.reduce((r,e)=>{const i=e.schema,m=n?.[e.name]?{default:{value:n?.[e.name],rawValue:n?.[e.name],mime:e.name}}:e.examples||e.formExamples;return r[e.name]={name:e.name,examples:m,schema:l(e.schema?.rawSchema,a),parameters:i?.fields?.map(o=>({inputType:S(o.schema),name:o.name,example:O(o,m)}))},r},{})}}function l(t,a){if(!(!t||!a))return{...t,components:a?.components||{}}}function w(t){if(t)return t.map(({schemes:a})=>a.map(n=>{const r={id:n.id,type:n.type,in:n.in,openIdConnectUrl:n.openIdConnectUrl,scopes:n.scopes,scheme:n.scheme,name:n.name,flows:n.flows,"x-defaultAccessToken":n["x-defaultAccessToken"],"x-defaultTokenType":n["x-defaultTokenType"],"x-defaultClientId":n["x-defaultClientId"],"x-defaultClientSecret":n["x-defaultClientSecret"],"x-defaultUsername":n["x-defaultUsername"],"x-defaultPassword":n["x-defaultPassword"]};return Object.keys(r).forEach(e=>r[e]===void 0&&delete r[e]),r}))}export{v as convertOperationToReplayValue,C as convertOperationToReplayValueForRedoc,w as convertRequestSecurity};
1
+ import{isPrimitive as x}from"@redocly/theme";import{getOperation as h}from"../../models/index.js";import{normalizeOptions as v,OpenAPIParser as b}from"../../services/index.js";import{JsonPointer as E}from"../../utils/index.js";function O(t,a,n,r,e,c){if(!n)return;const i=new b(n),s=i.definition.paths?.[t],d=s?.[a],m=h(i,{...d,pathName:t,httpVerb:a,pathParameters:s.parameters||[],pathServers:s.servers||[]},void 0,v({}),"",{isCallback:!1},r);if(!m)return;const f=c?.activeMimeName||"application/json";return{id:m.id,name:m.name,method:m.httpVerb,operationId:m.operationId,parameters:N(m.parameters,e?.requestValues),body:w(m.requestBody,n,e?.requestValues?.body?{activeExampleName:e?.activeExampleName,[f]:e?.requestValues?.body}:e?.activeExampleName?{activeExampleName:e?.activeExampleName}:void 0),path:m.path,href:m.href,servers:m.servers,security:y(m.security),responses:Object.fromEntries(m.responses.map(u=>[u.code,{code:u.code,description:u.description,mediaTypes:u.content?.mediaTypes.reduce((l,o)=>(l[o.name]={name:o.name,schema:p(o.schema?.rawSchema,n)},l),{})}]))}}function P(t){return function(a,n,r){const e=O(a,n,r,t);if(e)return{...e,operationId:e.operationId||E.compile(["paths",e.path,e.method])}}}function N(t,a){const n=new Set,r=t.map(e=>(n.add(e.in+":"+e.name),{name:e.name,in:e.in,required:e.required,description:e.description,example:a?.[String(e.in)]?.[e.name]||e.example,schema:e.schema}));for(const[e,c]of Object.entries(a||{}))for(const[i,s]of Object.entries(c||{}))n.has(e+":"+i)||r.push({name:i,in:e,required:!1,description:"",example:String(s),schema:void 0});return r}function V({type:t,format:a,enum:n}){return t==="string"&&(a==="binary"||a==="base64")?"file":t==="object"?"multiline":n.length>0?"select":"text"}function g(t,a){const n=t[0]?.example||t[0]?.examples;if(n)return n;if(t.schema?.example)return t.schema.example;const r=a?.default?.value||a?.default?.rawValue;return r?.[t.name]?x(r?.[t.name])?String(r?.[t.name]):JSON.stringify(r?.[t.name]):""}function w(t,a,n){if(!t||!t.content?.mediaTypes){if(!n)return;const{activeExampleName:r,...e}=n;return{activeExampleName:r,mediaTypes:Object.fromEntries(Object.entries(e).map(([c,i])=>[c,{name:c,examples:{default:{value:i}},schema:{},parameters:[]}]))}}return{required:t.required,activeExampleName:n?.activeExampleName,mediaTypes:t.content.mediaTypes.reduce((r,e)=>{const c=e.schema,i=n?.[e.name]?{default:{value:n?.[e.name],rawValue:n?.[e.name],mime:e.name}}:e.examples||e.formExamples;return r[e.name]={name:e.name,examples:i,schema:p(e.schema?.rawSchema,a),parameters:c?.fields?.map(s=>({inputType:V(s.schema),name:s.name,example:g(s,i)}))},r},{})}}function p(t,a){if(!(!t||!a))return{...t,components:a?.components||{}}}function y(t){if(t)return t.map(({schemes:a})=>a.map(n=>{const r={id:n.id,type:n.type,in:n.in,openIdConnectUrl:n.openIdConnectUrl,scopes:n.scopes,scheme:n.scheme,name:n.name,flows:n.flows,"x-defaultAccessToken":n["x-defaultAccessToken"],"x-defaultTokenType":n["x-defaultTokenType"],"x-defaultClientId":n["x-defaultClientId"],"x-defaultClientSecret":n["x-defaultClientSecret"],"x-defaultUsername":n["x-defaultUsername"],"x-defaultPassword":n["x-defaultPassword"]};return Object.keys(r).forEach(e=>r[e]===void 0&&delete r[e]),r}))}export{O as convertOperationToReplayValue,P as convertOperationToReplayValueForRedoc,y as convertRequestSecurity};
@@ -16,8 +16,8 @@ export type OperationStore = {
16
16
  };
17
17
  export declare function getDefaultOperationStore(pointer: string, requestValues?: {
18
18
  [field: string]: any;
19
- }): {
20
- activeExampleName: undefined;
19
+ }, activeExampleName?: string): {
20
+ activeExampleName: string | undefined;
21
21
  activeOneOf: {
22
22
  [x: string]: number;
23
23
  };
@@ -1 +1 @@
1
- import{atom as a}from"jotai";import{atomFamily as d}from"jotai/utils";import s from"deepmerge";function n(e,t={}){return{activeExampleName:void 0,activeOneOf:{[e]:0},requestValues:t,request:{expandedAll:void 0},response:{expandedAll:void 0}}}const o=a({}),c=d(e=>a(t=>t(o)?.[e]||n(e),(t,m,l)=>{const r=t(o),p=r[e]||n(e);m(o,{...r,[e]:s(p,l)})}));export{o as allOperations,n as getDefaultOperationStore,c as operationStore};
1
+ import{atom as a}from"jotai";import{atomFamily as s}from"jotai/utils";import u from"deepmerge";function l(e,t={},o){return{activeExampleName:o,activeOneOf:{[e]:0},requestValues:t,request:{expandedAll:void 0},response:{expandedAll:void 0}}}const r=a({}),c=s(e=>a(t=>t(r)?.[e]||l(e),(t,o,m)=>{const n=t(r),p=n[e]||l(e);o(r,{...n,[e]:u(p,m)})}));export{r as allOperations,l as getDefaultOperationStore,c as operationStore};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@redocly/openapi-docs",
3
- "version": "3.12.0-next.0",
3
+ "version": "3.12.0-next.1",
4
4
  "description": "Redocly OpenAPI Docs",
5
5
  "type": "module",
6
6
  "main": "lib/index.js",