@redocly/openapi-docs 3.7.0 → 3.8.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,2 +1,2 @@
1
- "use strict";var __rest=this&&this.__rest||function(e,t){var r={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(r[i]=e[i]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var n=0;for(i=Object.getOwnPropertySymbols(e);n<i.length;n++)t.indexOf(i[n])<0&&Object.prototype.propertyIsEnumerable.call(e,i[n])&&(r[i[n]]=e[i[n]])}return r};Object.defineProperty(exports,"__esModule",{value:!0}),exports.OpenAPIParser=void 0,exports.pushRef=pushRef,exports.concatRefStacks=concatRefStacks;const theme_1=require("@redocly/theme"),utils_1=require("../utils"),JsonPointer_1=require("../utils/JsonPointer"),normalizeOptions_1=require("./config-options/normalizeOptions");function pushRef(e,t){return t&&e[e.length-1]!==t?[...e,t]:e}function concatRefStacks(e,t){return t?e.concat(t):e}class OpenAPIParser{constructor(e,t,r=(0,normalizeOptions_1.normalizeOptions)({})){Object.defineProperty(this,"options",{enumerable:!0,configurable:!0,writable:!0,value:r}),Object.defineProperty(this,"definitionUrl",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"definition",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"allowMergeRefs",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,"byRef",{enumerable:!0,configurable:!0,writable:!0,value:e=>{let t;if(this.definition){"#"!==e.charAt(0)&&(e="#"+e),e=(0,utils_1.tryDecodeURIComponent)(e);try{t=JsonPointer_1.JsonPointer.get(this.definition,e)}catch(e){}return t||{}}}}),this.definition=Object.assign({},e),this.validate(e),this.definition=e,this.allowMergeRefs=e.openapi.startsWith("3.1");const i=theme_1.IS_BROWSER?window.location.href:"";(0,theme_1.isString)(t)&&(this.definitionUrl=new URL(t,i).href)}validate(e){if((0,theme_1.isUndefined)(e.openapi))throw new Error("Document must be valid OpenAPI 3.0.0 definition")}isRef(e){return!!e&&(void 0!==e.$ref&&null!==e.$ref)}deref(e,t=[],r=!1,i=0){const n=null==e?void 0:e["x-refsStack"];if(t=concatRefStacks(t,n),i>5)return{resolved:Object.assign({},e,{"x-complex":!0}),refsStack:t};if(this.isRef(e)){const n=(0,utils_1.getDefinitionName)(e.$ref);if(n&&this.options.ignoreNamedSchemas.has(n))return{resolved:{type:"object",title:n},refsStack:t};let s=this.byRef(e.$ref);if(!s)throw new Error(`Failed to resolve $ref "${e.$ref}"`);if(t.includes(e.$ref))s=Object.assign({},s,{"x-circular-ref":!0});else if(this.isRef(s)){s=this.deref(s,t,r,i).resolved}return this.allowMergeRefs&&(s=this.mergeRefs(e,s,r)),{resolved:s,refsStack:pushRef(t,e.$ref)}}return{resolved:e,refsStack:concatRefStacks(t,n)}}mergeRefs(e,t,r){const{$ref:i}=e,n=__rest(e,["$ref"]),s=Object.keys(n);if(0===s.length)return t;if(r&&s.some((e=>!["description","title","externalDocs","x-refsStack","x-parentRefs","readOnly","writeOnly","x-complex"].includes(e)))){const e=n,{description:r,title:i,readOnly:s,writeOnly:o}=e;return{allOf:[{description:r,title:i,readOnly:s,writeOnly:o},t,__rest(e,["description","title","readOnly","writeOnly"])]}}return Object.assign(Object.assign({},t),n)}mergeAllOf(e,t,r,i="",n=0){var s;if(e["x-circular-ref"])return e;if(void 0===(e=this.hoistOneOfs(e)).allOf)return Object.assign({absolutePointer:i},e);let o=Object.assign(Object.assign({},e),{"x-parentRefs":[],absolutePointer:JsonPointer_1.JsonPointer.join(i,["allOf"]),allOf:void 0,title:e.title||(0,utils_1.getDefinitionName)(t)});!(0,theme_1.isUndefined)(o.properties)&&(0,theme_1.isObject)(o.properties)&&(o.properties=Object.assign({},o.properties)),!(0,theme_1.isUndefined)(o.items)&&(0,theme_1.isObject)(o.items)&&(o.items=Object.assign({},o.items));const l=e.allOf.map(((e,t)=>{var s;const{resolved:l,refsStack:f}=this.deref(e,r,!0,n),a=e.$ref,c=a||JsonPointer_1.JsonPointer.join(i,[String(t)]);if(l["x-complex"])return{$ref:a,refsStack:pushRef(f,a),schema:{"x-complex":!0},absolutePointer:c};const p=this.mergeAllOf(l,a,f,c,n+1);return p["x-circular-ref"]&&p.allOf?void 0:(a&&(null===(s=o["x-parentRefs"])||void 0===s||s.push(...p["x-parentRefs"]||[],a)),{$ref:a,refsStack:pushRef(f,a),schema:p,absolutePointer:c})})).filter(Boolean);for(const[e,{schema:r,refsStack:i,absolutePointer:f}]of l.entries()){const l=r||{},{type:a,enum:c,properties:p,items:d,required:O,title:u,description:m,readOnly:h,writeOnly:y,oneOf:b,anyOf:_,"x-circular-ref":g,"x-complex":x}=l,j=__rest(l,["type","enum","properties","items","required","title","description","readOnly","writeOnly","oneOf","anyOf","x-circular-ref","x-complex"]);if(o.type===a||(0,theme_1.isUndefined)(o.type)||(0,theme_1.isUndefined)(a)||n){if((0,theme_1.isUndefined)(a)||(Array.isArray(a)&&Array.isArray(o.type)?o.type=[...a,...o.type]:o.type=a),(0,theme_1.isUndefined)(c)||(Array.isArray(c)&&Array.isArray(o.enum)?o.enum=Array.from(new Set([...c,...o.enum])):o.enum=c),!(0,theme_1.isUndefined)(p)&&(0,theme_1.isObject)(p)){o.properties=o.properties||{};for(const r in p){const l=concatRefStacks(i,null===(s=p[r])||void 0===s?void 0:s["x-refsStack"]);if(o.properties[r]){if(!g){const i=this.mergeAllOf({allOf:[o.properties[r],p[r]],"x-refsStack":l},t+"/properties/"+r,l,JsonPointer_1.JsonPointer.join(f,["allOf",String(e),"properties",r]),n+1);o.properties[r]=i}}else o.properties[r]=Object.assign(Object.assign({},p[r]),{absolutePointer:JsonPointer_1.JsonPointer.join(f,["properties",r]),"x-refsStack":l})}}if(!(0,theme_1.isUndefined)(d)&&!g&&!x){const e="boolean"==typeof o.items?{}:Object.assign({},o.items),s="boolean"==typeof r.items?{}:Object.assign({},r.items);o.items=this.mergeAllOf({allOf:[e,s]},t+"/items",i,"",n+1)}(0,theme_1.isUndefined)(b)||(o.oneOf=b),(0,theme_1.isUndefined)(_)||(o.anyOf=_),Array.isArray(O)&&(o.required=[...o.required||[],...O]),o=Object.assign(Object.assign(Object.assign({},o),{title:o.title||u,description:o.description||m,readOnly:(0,theme_1.isUndefined)(o.readOnly)?h:o.readOnly,writeOnly:(0,theme_1.isUndefined)(o.writeOnly)?y:o.writeOnly,"x-circular-ref":o["x-circular-ref"]||g,"x-complex":o["x-complex"]||x}),j)}}return o}findDerived(e){const t={},r=this.definition.components&&this.definition.components.schemas||{};for(const i in r){const{resolved:n}=this.deref(r[i]);!(0,theme_1.isUndefined)(n.allOf)&&n.allOf.find((t=>!(0,theme_1.isUndefined)(t.$ref)&&e.indexOf(t.$ref)>-1))&&(t["#/components/schemas/"+i]=[n["x-discriminator-value"]||i])}return t}hoistOneOfs(e){if((0,theme_1.isUndefined)(e.allOf))return e;const{allOf:t}=e,r=__rest(e,["allOf"]);for(let e=0;e<t.length;e++){const i=t[e],{oneOf:n}=i,s=__rest(i,["oneOf"]);if(n&&Array.isArray(n)){const i=t.slice(0,e),o=t.slice(e+1),l=Object.keys(s).length>0?[s]:[];return Object.assign(Object.assign({},r),{oneOf:n.map((e=>({allOf:[...i,...l,e,...o]})))})}}return e}}exports.OpenAPIParser=OpenAPIParser;
1
+ "use strict";var __rest=this&&this.__rest||function(e,t){var r={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(r[i]=e[i]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var n=0;for(i=Object.getOwnPropertySymbols(e);n<i.length;n++)t.indexOf(i[n])<0&&Object.prototype.propertyIsEnumerable.call(e,i[n])&&(r[i[n]]=e[i[n]])}return r};Object.defineProperty(exports,"__esModule",{value:!0}),exports.OpenAPIParser=void 0,exports.pushRef=pushRef,exports.concatRefStacks=concatRefStacks;const theme_1=require("@redocly/theme"),utils_1=require("../utils"),JsonPointer_1=require("../utils/JsonPointer"),normalizeOptions_1=require("./config-options/normalizeOptions");function pushRef(e,t){return t&&e[e.length-1]!==t?[...e,t]:e}function concatRefStacks(e,t){return t?e.concat(t):e}class OpenAPIParser{constructor(e,t,r=(0,normalizeOptions_1.normalizeOptions)({})){Object.defineProperty(this,"options",{enumerable:!0,configurable:!0,writable:!0,value:r}),Object.defineProperty(this,"definitionUrl",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"definition",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"allowMergeRefs",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,"byRef",{enumerable:!0,configurable:!0,writable:!0,value:e=>{let t;if(this.definition){"#"!==e.charAt(0)&&(e="#"+e),e=(0,utils_1.tryDecodeURIComponent)(e);try{t=JsonPointer_1.JsonPointer.get(this.definition,e)}catch(e){}return t||{}}}}),this.definition=Object.assign({},e),this.validate(e),this.definition=e,this.allowMergeRefs=e.openapi.startsWith("3.1");const i=theme_1.IS_BROWSER?window.location.href:"";(0,theme_1.isString)(t)&&(this.definitionUrl=new URL(t,i).href)}validate(e){if((0,theme_1.isUndefined)(e.openapi))throw new Error("Document must be valid OpenAPI 3.0.0 definition")}isRef(e){return!!e&&(void 0!==e.$ref&&null!==e.$ref)}deref(e,t=[],r=!1,i=0){const n=null==e?void 0:e["x-refsStack"];if(t=concatRefStacks(t,n),i>5)return{resolved:Object.assign({},e,{"x-complex":!0}),refsStack:t};if(this.isRef(e)){const n=(0,utils_1.getDefinitionName)(e.$ref);if(n&&this.options.ignoreNamedSchemas.has(n))return{resolved:{type:"object",title:n},refsStack:t};let s=this.byRef(e.$ref);if(!s)throw new Error(`Failed to resolve $ref "${e.$ref}"`);if(t.includes(e.$ref))s=Object.assign({},s,{"x-circular-ref":!0});else if(this.isRef(s)){s=this.deref(s,t,r,i).resolved}return this.allowMergeRefs&&(s=this.mergeRefs(e,s,r)),{resolved:s,refsStack:pushRef(t,e.$ref)}}return{resolved:e,refsStack:concatRefStacks(t,n)}}mergeRefs(e,t,r){const{$ref:i}=e,n=__rest(e,["$ref"]),s=Object.keys(n);if(0===s.length)return t;if(r&&s.some((e=>!["description","title","externalDocs","x-refsStack","x-parentRefs","readOnly","writeOnly","x-complex"].includes(e)))){const e=n,{description:r,title:i,readOnly:s,writeOnly:o}=e;return{allOf:[{description:r,title:i,readOnly:s,writeOnly:o},t,__rest(e,["description","title","readOnly","writeOnly"])]}}return Object.assign(Object.assign({},t),n)}mergeAllOf(e,t,r,i="",n=0){var s;if(e["x-circular-ref"])return e;if(void 0===(e=this.hoistOneOfs(e)).allOf)return Object.assign({absolutePointer:i},e);let o=Object.assign(Object.assign({},e),{"x-parentRefs":[],absolutePointer:JsonPointer_1.JsonPointer.join(i,["allOf"]),allOf:void 0,title:0===n?e.title||(0,utils_1.getDefinitionName)(t):e.title});!(0,theme_1.isUndefined)(o.properties)&&(0,theme_1.isObject)(o.properties)&&(o.properties=Object.assign({},o.properties)),!(0,theme_1.isUndefined)(o.items)&&(0,theme_1.isObject)(o.items)&&(o.items=Object.assign({},o.items));const l=e.allOf.map(((e,t)=>{var s;const{resolved:l,refsStack:f}=this.deref(e,r,!0,n),a=e.$ref,c=a||JsonPointer_1.JsonPointer.join(i,[String(t)]);if(l["x-complex"])return{$ref:a,refsStack:pushRef(f,a),schema:{"x-complex":!0},absolutePointer:c};const p=this.mergeAllOf(l,a,f,c,n+1);return p["x-circular-ref"]&&p.allOf?void 0:(a&&(null===(s=o["x-parentRefs"])||void 0===s||s.push(...p["x-parentRefs"]||[],a)),{$ref:a,refsStack:pushRef(f,a),schema:p,absolutePointer:c})})).filter(Boolean);for(const[e,{schema:r,refsStack:i,absolutePointer:f}]of l.entries()){const l=r||{},{type:a,enum:c,properties:p,items:d,required:O,title:u,description:m,readOnly:h,writeOnly:y,oneOf:b,anyOf:_,"x-circular-ref":g,"x-complex":x}=l,j=__rest(l,["type","enum","properties","items","required","title","description","readOnly","writeOnly","oneOf","anyOf","x-circular-ref","x-complex"]);if(o.type===a||(0,theme_1.isUndefined)(o.type)||(0,theme_1.isUndefined)(a)||n){if((0,theme_1.isUndefined)(a)||(Array.isArray(a)&&Array.isArray(o.type)?o.type=[...a,...o.type]:o.type=a),(0,theme_1.isUndefined)(c)||(Array.isArray(c)&&Array.isArray(o.enum)?o.enum=Array.from(new Set([...c,...o.enum])):o.enum=c),!(0,theme_1.isUndefined)(p)&&(0,theme_1.isObject)(p)){o.properties=o.properties||{};for(const r in p){const l=concatRefStacks(i,null===(s=p[r])||void 0===s?void 0:s["x-refsStack"]);if(o.properties[r]){if(!g){const i=this.mergeAllOf({allOf:[o.properties[r],p[r]],"x-refsStack":l},t+"/properties/"+r,l,JsonPointer_1.JsonPointer.join(f,["allOf",String(e),"properties",r]),n+1);o.properties[r]=i}}else o.properties[r]=Object.assign(Object.assign({},p[r]),{absolutePointer:JsonPointer_1.JsonPointer.join(f,["properties",r]),"x-refsStack":l})}}if(!(0,theme_1.isUndefined)(d)&&!g&&!x){const e="boolean"==typeof o.items?{}:Object.assign({},o.items),s="boolean"==typeof r.items?{}:Object.assign({},r.items);o.items=this.mergeAllOf({allOf:[e,s]},t+"/items",i,"",n+1)}(0,theme_1.isUndefined)(b)||(o.oneOf=b),(0,theme_1.isUndefined)(_)||(o.anyOf=_),Array.isArray(O)&&(o.required=[...o.required||[],...O]),o=Object.assign(Object.assign(Object.assign({},o),{title:o.title||u,description:o.description||m,readOnly:(0,theme_1.isUndefined)(o.readOnly)?h:o.readOnly,writeOnly:(0,theme_1.isUndefined)(o.writeOnly)?y:o.writeOnly,"x-circular-ref":o["x-circular-ref"]||g,"x-complex":o["x-complex"]||x}),j)}}return o}findDerived(e){const t={},r=this.definition.components&&this.definition.components.schemas||{};for(const i in r){const{resolved:n}=this.deref(r[i]);!(0,theme_1.isUndefined)(n.allOf)&&n.allOf.find((t=>!(0,theme_1.isUndefined)(t.$ref)&&e.indexOf(t.$ref)>-1))&&(t["#/components/schemas/"+i]=[n["x-discriminator-value"]||i])}return t}hoistOneOfs(e){if((0,theme_1.isUndefined)(e.allOf))return e;const{allOf:t}=e,r=__rest(e,["allOf"]);for(let e=0;e<t.length;e++){const i=t[e],{oneOf:n}=i,s=__rest(i,["oneOf"]);if(n&&Array.isArray(n)){const i=t.slice(0,e),o=t.slice(e+1),l=Object.keys(s).length>0?[s]:[];return Object.assign(Object.assign({},r),{oneOf:n.map((e=>({allOf:[...i,...l,e,...o]})))})}}return e}}exports.OpenAPIParser=OpenAPIParser;
2
2
  //# sourceMappingURL=OpenAPIParser.js.map
@@ -1,2 +1,2 @@
1
- var __rest=this&&this.__rest||function(e,t){var i={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(i[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var n=0;for(r=Object.getOwnPropertySymbols(e);n<r.length;n++)t.indexOf(r[n])<0&&Object.prototype.propertyIsEnumerable.call(e,r[n])&&(i[r[n]]=e[r[n]])}return i};import{IS_BROWSER,isObject,isString,isUndefined}from"@redocly/theme";import{tryDecodeURIComponent,getDefinitionName}from"../utils";import{JsonPointer}from"../utils/JsonPointer";import{normalizeOptions}from"./config-options/normalizeOptions";export function pushRef(e,t){return t&&e[e.length-1]!==t?[...e,t]:e}export function concatRefStacks(e,t){return t?e.concat(t):e}export class OpenAPIParser{constructor(e,t,i=normalizeOptions({})){Object.defineProperty(this,"options",{enumerable:!0,configurable:!0,writable:!0,value:i}),Object.defineProperty(this,"definitionUrl",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"definition",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"allowMergeRefs",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,"byRef",{enumerable:!0,configurable:!0,writable:!0,value:e=>{let t;if(this.definition){"#"!==e.charAt(0)&&(e="#"+e),e=tryDecodeURIComponent(e);try{t=JsonPointer.get(this.definition,e)}catch(e){}return t||{}}}}),this.definition=Object.assign({},e),this.validate(e),this.definition=e,this.allowMergeRefs=e.openapi.startsWith("3.1");const r=IS_BROWSER?window.location.href:"";isString(t)&&(this.definitionUrl=new URL(t,r).href)}validate(e){if(isUndefined(e.openapi))throw new Error("Document must be valid OpenAPI 3.0.0 definition")}isRef(e){return!!e&&(void 0!==e.$ref&&null!==e.$ref)}deref(e,t=[],i=!1,r=0){const n=null==e?void 0:e["x-refsStack"];if(t=concatRefStacks(t,n),r>5)return{resolved:Object.assign({},e,{"x-complex":!0}),refsStack:t};if(this.isRef(e)){const n=getDefinitionName(e.$ref);if(n&&this.options.ignoreNamedSchemas.has(n))return{resolved:{type:"object",title:n},refsStack:t};let s=this.byRef(e.$ref);if(!s)throw new Error(`Failed to resolve $ref "${e.$ref}"`);if(t.includes(e.$ref))s=Object.assign({},s,{"x-circular-ref":!0});else if(this.isRef(s)){s=this.deref(s,t,i,r).resolved}return this.allowMergeRefs&&(s=this.mergeRefs(e,s,i)),{resolved:s,refsStack:pushRef(t,e.$ref)}}return{resolved:e,refsStack:concatRefStacks(t,n)}}mergeRefs(e,t,i){const{$ref:r}=e,n=__rest(e,["$ref"]),s=Object.keys(n);if(0===s.length)return t;if(i&&s.some((e=>!["description","title","externalDocs","x-refsStack","x-parentRefs","readOnly","writeOnly","x-complex"].includes(e)))){const e=n,{description:i,title:r,readOnly:s,writeOnly:o}=e;return{allOf:[{description:i,title:r,readOnly:s,writeOnly:o},t,__rest(e,["description","title","readOnly","writeOnly"])]}}return Object.assign(Object.assign({},t),n)}mergeAllOf(e,t,i,r="",n=0){var s;if(e["x-circular-ref"])return e;if(void 0===(e=this.hoistOneOfs(e)).allOf)return Object.assign({absolutePointer:r},e);let o=Object.assign(Object.assign({},e),{"x-parentRefs":[],absolutePointer:JsonPointer.join(r,["allOf"]),allOf:void 0,title:e.title||getDefinitionName(t)});!isUndefined(o.properties)&&isObject(o.properties)&&(o.properties=Object.assign({},o.properties)),!isUndefined(o.items)&&isObject(o.items)&&(o.items=Object.assign({},o.items));const f=e.allOf.map(((e,t)=>{var s;const{resolved:f,refsStack:l}=this.deref(e,i,!0,n),a=e.$ref,c=a||JsonPointer.join(r,[String(t)]);if(f["x-complex"])return{$ref:a,refsStack:pushRef(l,a),schema:{"x-complex":!0},absolutePointer:c};const d=this.mergeAllOf(f,a,l,c,n+1);return d["x-circular-ref"]&&d.allOf?void 0:(a&&(null===(s=o["x-parentRefs"])||void 0===s||s.push(...d["x-parentRefs"]||[],a)),{$ref:a,refsStack:pushRef(l,a),schema:d,absolutePointer:c})})).filter(Boolean);for(const[e,{schema:i,refsStack:r,absolutePointer:l}]of f.entries()){const f=i||{},{type:a,enum:c,properties:d,items:p,required:O,title:u,description:m,readOnly:y,writeOnly:b,oneOf:h,anyOf:g,"x-circular-ref":x,"x-complex":j}=f,v=__rest(f,["type","enum","properties","items","required","title","description","readOnly","writeOnly","oneOf","anyOf","x-circular-ref","x-complex"]);if(o.type===a||isUndefined(o.type)||isUndefined(a)||n){if(isUndefined(a)||(Array.isArray(a)&&Array.isArray(o.type)?o.type=[...a,...o.type]:o.type=a),isUndefined(c)||(Array.isArray(c)&&Array.isArray(o.enum)?o.enum=Array.from(new Set([...c,...o.enum])):o.enum=c),!isUndefined(d)&&isObject(d)){o.properties=o.properties||{};for(const i in d){const f=concatRefStacks(r,null===(s=d[i])||void 0===s?void 0:s["x-refsStack"]);if(o.properties[i]){if(!x){const r=this.mergeAllOf({allOf:[o.properties[i],d[i]],"x-refsStack":f},t+"/properties/"+i,f,JsonPointer.join(l,["allOf",String(e),"properties",i]),n+1);o.properties[i]=r}}else o.properties[i]=Object.assign(Object.assign({},d[i]),{absolutePointer:JsonPointer.join(l,["properties",i]),"x-refsStack":f})}}if(!isUndefined(p)&&!x&&!j){const e="boolean"==typeof o.items?{}:Object.assign({},o.items),s="boolean"==typeof i.items?{}:Object.assign({},i.items);o.items=this.mergeAllOf({allOf:[e,s]},t+"/items",r,"",n+1)}isUndefined(h)||(o.oneOf=h),isUndefined(g)||(o.anyOf=g),Array.isArray(O)&&(o.required=[...o.required||[],...O]),o=Object.assign(Object.assign(Object.assign({},o),{title:o.title||u,description:o.description||m,readOnly:isUndefined(o.readOnly)?y:o.readOnly,writeOnly:isUndefined(o.writeOnly)?b:o.writeOnly,"x-circular-ref":o["x-circular-ref"]||x,"x-complex":o["x-complex"]||j}),v)}}return o}findDerived(e){const t={},i=this.definition.components&&this.definition.components.schemas||{};for(const r in i){const{resolved:n}=this.deref(i[r]);!isUndefined(n.allOf)&&n.allOf.find((t=>!isUndefined(t.$ref)&&e.indexOf(t.$ref)>-1))&&(t["#/components/schemas/"+r]=[n["x-discriminator-value"]||r])}return t}hoistOneOfs(e){if(isUndefined(e.allOf))return e;const{allOf:t}=e,i=__rest(e,["allOf"]);for(let e=0;e<t.length;e++){const r=t[e],{oneOf:n}=r,s=__rest(r,["oneOf"]);if(n&&Array.isArray(n)){const r=t.slice(0,e),o=t.slice(e+1),f=Object.keys(s).length>0?[s]:[];return Object.assign(Object.assign({},i),{oneOf:n.map((e=>({allOf:[...r,...f,e,...o]})))})}}return e}}
1
+ var __rest=this&&this.__rest||function(e,t){var i={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(i[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var n=0;for(r=Object.getOwnPropertySymbols(e);n<r.length;n++)t.indexOf(r[n])<0&&Object.prototype.propertyIsEnumerable.call(e,r[n])&&(i[r[n]]=e[r[n]])}return i};import{IS_BROWSER,isObject,isString,isUndefined}from"@redocly/theme";import{tryDecodeURIComponent,getDefinitionName}from"../utils";import{JsonPointer}from"../utils/JsonPointer";import{normalizeOptions}from"./config-options/normalizeOptions";export function pushRef(e,t){return t&&e[e.length-1]!==t?[...e,t]:e}export function concatRefStacks(e,t){return t?e.concat(t):e}export class OpenAPIParser{constructor(e,t,i=normalizeOptions({})){Object.defineProperty(this,"options",{enumerable:!0,configurable:!0,writable:!0,value:i}),Object.defineProperty(this,"definitionUrl",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"definition",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"allowMergeRefs",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,"byRef",{enumerable:!0,configurable:!0,writable:!0,value:e=>{let t;if(this.definition){"#"!==e.charAt(0)&&(e="#"+e),e=tryDecodeURIComponent(e);try{t=JsonPointer.get(this.definition,e)}catch(e){}return t||{}}}}),this.definition=Object.assign({},e),this.validate(e),this.definition=e,this.allowMergeRefs=e.openapi.startsWith("3.1");const r=IS_BROWSER?window.location.href:"";isString(t)&&(this.definitionUrl=new URL(t,r).href)}validate(e){if(isUndefined(e.openapi))throw new Error("Document must be valid OpenAPI 3.0.0 definition")}isRef(e){return!!e&&(void 0!==e.$ref&&null!==e.$ref)}deref(e,t=[],i=!1,r=0){const n=null==e?void 0:e["x-refsStack"];if(t=concatRefStacks(t,n),r>5)return{resolved:Object.assign({},e,{"x-complex":!0}),refsStack:t};if(this.isRef(e)){const n=getDefinitionName(e.$ref);if(n&&this.options.ignoreNamedSchemas.has(n))return{resolved:{type:"object",title:n},refsStack:t};let s=this.byRef(e.$ref);if(!s)throw new Error(`Failed to resolve $ref "${e.$ref}"`);if(t.includes(e.$ref))s=Object.assign({},s,{"x-circular-ref":!0});else if(this.isRef(s)){s=this.deref(s,t,i,r).resolved}return this.allowMergeRefs&&(s=this.mergeRefs(e,s,i)),{resolved:s,refsStack:pushRef(t,e.$ref)}}return{resolved:e,refsStack:concatRefStacks(t,n)}}mergeRefs(e,t,i){const{$ref:r}=e,n=__rest(e,["$ref"]),s=Object.keys(n);if(0===s.length)return t;if(i&&s.some((e=>!["description","title","externalDocs","x-refsStack","x-parentRefs","readOnly","writeOnly","x-complex"].includes(e)))){const e=n,{description:i,title:r,readOnly:s,writeOnly:o}=e;return{allOf:[{description:i,title:r,readOnly:s,writeOnly:o},t,__rest(e,["description","title","readOnly","writeOnly"])]}}return Object.assign(Object.assign({},t),n)}mergeAllOf(e,t,i,r="",n=0){var s;if(e["x-circular-ref"])return e;if(void 0===(e=this.hoistOneOfs(e)).allOf)return Object.assign({absolutePointer:r},e);let o=Object.assign(Object.assign({},e),{"x-parentRefs":[],absolutePointer:JsonPointer.join(r,["allOf"]),allOf:void 0,title:0===n?e.title||getDefinitionName(t):e.title});!isUndefined(o.properties)&&isObject(o.properties)&&(o.properties=Object.assign({},o.properties)),!isUndefined(o.items)&&isObject(o.items)&&(o.items=Object.assign({},o.items));const f=e.allOf.map(((e,t)=>{var s;const{resolved:f,refsStack:l}=this.deref(e,i,!0,n),a=e.$ref,c=a||JsonPointer.join(r,[String(t)]);if(f["x-complex"])return{$ref:a,refsStack:pushRef(l,a),schema:{"x-complex":!0},absolutePointer:c};const d=this.mergeAllOf(f,a,l,c,n+1);return d["x-circular-ref"]&&d.allOf?void 0:(a&&(null===(s=o["x-parentRefs"])||void 0===s||s.push(...d["x-parentRefs"]||[],a)),{$ref:a,refsStack:pushRef(l,a),schema:d,absolutePointer:c})})).filter(Boolean);for(const[e,{schema:i,refsStack:r,absolutePointer:l}]of f.entries()){const f=i||{},{type:a,enum:c,properties:d,items:p,required:O,title:u,description:m,readOnly:y,writeOnly:b,oneOf:h,anyOf:g,"x-circular-ref":x,"x-complex":j}=f,v=__rest(f,["type","enum","properties","items","required","title","description","readOnly","writeOnly","oneOf","anyOf","x-circular-ref","x-complex"]);if(o.type===a||isUndefined(o.type)||isUndefined(a)||n){if(isUndefined(a)||(Array.isArray(a)&&Array.isArray(o.type)?o.type=[...a,...o.type]:o.type=a),isUndefined(c)||(Array.isArray(c)&&Array.isArray(o.enum)?o.enum=Array.from(new Set([...c,...o.enum])):o.enum=c),!isUndefined(d)&&isObject(d)){o.properties=o.properties||{};for(const i in d){const f=concatRefStacks(r,null===(s=d[i])||void 0===s?void 0:s["x-refsStack"]);if(o.properties[i]){if(!x){const r=this.mergeAllOf({allOf:[o.properties[i],d[i]],"x-refsStack":f},t+"/properties/"+i,f,JsonPointer.join(l,["allOf",String(e),"properties",i]),n+1);o.properties[i]=r}}else o.properties[i]=Object.assign(Object.assign({},d[i]),{absolutePointer:JsonPointer.join(l,["properties",i]),"x-refsStack":f})}}if(!isUndefined(p)&&!x&&!j){const e="boolean"==typeof o.items?{}:Object.assign({},o.items),s="boolean"==typeof i.items?{}:Object.assign({},i.items);o.items=this.mergeAllOf({allOf:[e,s]},t+"/items",r,"",n+1)}isUndefined(h)||(o.oneOf=h),isUndefined(g)||(o.anyOf=g),Array.isArray(O)&&(o.required=[...o.required||[],...O]),o=Object.assign(Object.assign(Object.assign({},o),{title:o.title||u,description:o.description||m,readOnly:isUndefined(o.readOnly)?y:o.readOnly,writeOnly:isUndefined(o.writeOnly)?b:o.writeOnly,"x-circular-ref":o["x-circular-ref"]||x,"x-complex":o["x-complex"]||j}),v)}}return o}findDerived(e){const t={},i=this.definition.components&&this.definition.components.schemas||{};for(const r in i){const{resolved:n}=this.deref(i[r]);!isUndefined(n.allOf)&&n.allOf.find((t=>!isUndefined(t.$ref)&&e.indexOf(t.$ref)>-1))&&(t["#/components/schemas/"+r]=[n["x-discriminator-value"]||r])}return t}hoistOneOfs(e){if(isUndefined(e.allOf))return e;const{allOf:t}=e,i=__rest(e,["allOf"]);for(let e=0;e<t.length;e++){const r=t[e],{oneOf:n}=r,s=__rest(r,["oneOf"]);if(n&&Array.isArray(n)){const r=t.slice(0,e),o=t.slice(e+1),f=Object.keys(s).length>0?[s]:[];return Object.assign(Object.assign({},i),{oneOf:n.map((e=>({allOf:[...r,...f,e,...o]})))})}}return e}}
2
2
  //# sourceMappingURL=OpenAPIParser.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@redocly/openapi-docs",
3
- "version": "3.7.0",
3
+ "version": "3.8.0-next.1",
4
4
  "description": "Redocly OpenAPI Docs",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib-esm/index.js",
@@ -16,7 +16,7 @@
16
16
  "openapi-docs": "bin.js"
17
17
  },
18
18
  "peerDependencies": {
19
- "@redocly/theme": ">=0.51.0-next.0",
19
+ "@redocly/theme": ">=0.52.0-next.0",
20
20
  "core-js": "^3.1.4",
21
21
  "react": "^18.0.0",
22
22
  "react-dom": "^18.0.0",
@@ -24,16 +24,15 @@
24
24
  },
25
25
  "dependencies": {
26
26
  "@markdoc/markdoc": "0.5.1",
27
- "@redocly/openapi-core": "1.31.1",
27
+ "@redocly/openapi-core": "1.32.2",
28
28
  "deepmerge": "^4.2.2",
29
- "dompurify": "2.5.4",
29
+ "dompurify": "3.2.4",
30
30
  "fast-deep-equal": "^3.1.3",
31
31
  "jotai": "^2.4.2",
32
32
  "json-pointer": "^0.6.2",
33
33
  "jstoxml": "^5.0.2",
34
34
  "openapi-sampler": "^1.6.1",
35
35
  "path-browserify": "^1.0.1",
36
- "prismjs": "1.29.0",
37
36
  "react-router-dom": "^6.21.1",
38
37
  "slugify": "^1.4.4",
39
38
  "stringify-object": "^3.3.0",
@@ -44,22 +43,20 @@
44
43
  "url-template": "^2.0.8",
45
44
  "util": "~0.12.5",
46
45
  "web-vitals": "3.3.1",
47
- "@redocly/config": "0.22.0",
48
- "@redocly/replay": "0.10.0"
46
+ "@redocly/config": "0.22.1",
47
+ "@redocly/replay": "0.11.0-next.1"
49
48
  },
50
49
  "devDependencies": {
51
50
  "@shikijs/transformers": "1.24.0",
52
51
  "@testing-library/jest-dom": "6.1.5",
53
- "@testing-library/react": "14.1.2",
54
- "@testing-library/react-hooks": "^8.0.1",
52
+ "@testing-library/react": "15.0.6",
55
53
  "@testing-library/user-event": "14.5.1",
56
- "@types/dompurify": "2.4.0",
54
+ "@types/dompurify": "3.2.0",
57
55
  "@types/jest": "29.5.11",
58
56
  "@types/jest-when": "3.5.5",
59
57
  "@types/json-pointer": "1.0.34",
60
58
  "@types/json-schema": "^7.0.15",
61
59
  "@types/node": "22.10.5",
62
- "@types/prismjs": "1.26.4",
63
60
  "@types/react": "18.3.9",
64
61
  "@types/react-dom": "18.3.5",
65
62
  "@types/styled-components": "5.1.34",
@@ -79,9 +76,9 @@
79
76
  "json-schema": "0.4.0",
80
77
  "outdent": "0.8.0",
81
78
  "prettier-2": "npm:prettier@2.8.8",
82
- "react": "18.2.0",
83
- "react-dom": "18.2.0",
84
- "react-is": "18.2.0",
79
+ "react": "18.3.1",
80
+ "react-dom": "18.3.1",
81
+ "react-is": "18.3.1",
85
82
  "rimraf": "5.0.7",
86
83
  "shiki": "1.24.4",
87
84
  "string-replace-loader": "3.1.0",
@@ -96,7 +93,7 @@
96
93
  "webpack": "5.94.0",
97
94
  "webpack-cli": "5.1.4",
98
95
  "webpack-dev-server": "5.1.0",
99
- "@redocly/theme": "0.51.0"
96
+ "@redocly/theme": "0.52.0-next.1"
100
97
  },
101
98
  "scripts": {
102
99
  "start": "npm run copy-highlight-hook && webpack serve --mode=development --hot",