@redocly/openapi-docs 3.9.0-next.0 → 3.9.0-next.2

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/empty.d.ts CHANGED
@@ -1 +1,2 @@
1
1
  export function isatty(): void;
2
+ export function createRequire(): void;
package/lib/empty.js CHANGED
@@ -1,2 +1,2 @@
1
- module.exports={isatty:()=>{}};
1
+ module.exports={isatty:()=>{},createRequire:()=>{}};
2
2
  //# sourceMappingURL=empty.js.map
package/lib/index.d.ts CHANGED
@@ -3,6 +3,7 @@ export type { IMenuItem } from './services/types';
3
3
  export type { OperationModel, SchemaModel, ContentItemModel } from './models/types';
4
4
  export type { CodeSampleOptions } from './models/code-sample-options';
5
5
  export type { SecurityDetails, OpenAPIDefinition, OpenAPIOperation, OpenAPIParameterLocation, OpenAPISchema, } from './types';
6
+ export { simplifyAstStructure } from './utils/simplifyAstStructure';
6
7
  export { getOperation } from './models/operation';
7
8
  export { getServerEnvName } from './utils/environments';
8
9
  export { getTagOrGroup } from './models/group';
package/lib/index.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.convertOperationToReplayValue=exports.EmbeddedReplay=exports.normalizeOptions=exports.buildContentItems=exports.OpenAPIParser=exports.isOperationName=exports.JsonPointer=exports.getMarkdownHeaderId=exports.StoreProvider=exports.AppProvider=exports.RedoclyOpenAPIDocsStandalone=exports.RedoclyOpenAPIDocs=exports.RedocExample=exports.RedocSchema=exports.ResponseSamples=exports.RequestSamples=exports.generateDeepLink=exports.getTagOrGroup=exports.getServerEnvName=exports.getOperation=void 0,exports.useOpenapiDocsOptions=useOpenapiDocsOptions;const jotai_1=require("jotai"),store_1=require("./jotai/store");var operation_1=require("./models/operation");Object.defineProperty(exports,"getOperation",{enumerable:!0,get:function(){return operation_1.getOperation}});var environments_1=require("./utils/environments");Object.defineProperty(exports,"getServerEnvName",{enumerable:!0,get:function(){return environments_1.getServerEnvName}});var group_1=require("./models/group");Object.defineProperty(exports,"getTagOrGroup",{enumerable:!0,get:function(){return group_1.getTagOrGroup}});var common_1=require("./components/common");Object.defineProperty(exports,"generateDeepLink",{enumerable:!0,get:function(){return common_1.generateDeepLink}});var RequestSamples_1=require("./components/RequestSamples");Object.defineProperty(exports,"RequestSamples",{enumerable:!0,get:function(){return RequestSamples_1.RequestSamples}});var ResponseSamples_1=require("./components/ResponseSamples");Object.defineProperty(exports,"ResponseSamples",{enumerable:!0,get:function(){return ResponseSamples_1.ResponseSamples}});var pluggable_1=require("./components/pluggable");Object.defineProperty(exports,"RedocSchema",{enumerable:!0,get:function(){return pluggable_1.RedocSchema}}),Object.defineProperty(exports,"RedocExample",{enumerable:!0,get:function(){return pluggable_1.RedocExample}});var RedoclyOpenAPIDocs_1=require("./components/RedoclyOpenAPIDocs");Object.defineProperty(exports,"RedoclyOpenAPIDocs",{enumerable:!0,get:function(){return RedoclyOpenAPIDocs_1.RedoclyOpenAPIDocs}}),Object.defineProperty(exports,"RedoclyOpenAPIDocsStandalone",{enumerable:!0,get:function(){return RedoclyOpenAPIDocs_1.RedoclyOpenAPIDocsStandalone}}),Object.defineProperty(exports,"AppProvider",{enumerable:!0,get:function(){return RedoclyOpenAPIDocs_1.AppProvider}}),Object.defineProperty(exports,"StoreProvider",{enumerable:!0,get:function(){return RedoclyOpenAPIDocs_1.StoreProvider}}),Object.defineProperty(exports,"getMarkdownHeaderId",{enumerable:!0,get:function(){return RedoclyOpenAPIDocs_1.getMarkdownHeaderId}});var JsonPointer_1=require("./utils/JsonPointer");Object.defineProperty(exports,"JsonPointer",{enumerable:!0,get:function(){return JsonPointer_1.JsonPointer}});var openapi_1=require("./utils/openapi");Object.defineProperty(exports,"isOperationName",{enumerable:!0,get:function(){return openapi_1.isOperationName}});var services_1=require("./services");Object.defineProperty(exports,"OpenAPIParser",{enumerable:!0,get:function(){return services_1.OpenAPIParser}});var services_2=require("./services");function useOpenapiDocsOptions(){return(0,jotai_1.useAtomValue)(store_1.globalOptionsAtom)}Object.defineProperty(exports,"buildContentItems",{enumerable:!0,get:function(){return services_2.buildContentItems}}),Object.defineProperty(exports,"normalizeOptions",{enumerable:!0,get:function(){return services_2.normalizeOptions}});var EmbeddedReplay_1=require("./components/Replay/EmbeddedReplay");Object.defineProperty(exports,"EmbeddedReplay",{enumerable:!0,get:function(){return EmbeddedReplay_1.EmbeddedReplay}});var utils_1=require("./components/Replay/utils");Object.defineProperty(exports,"convertOperationToReplayValue",{enumerable:!0,get:function(){return utils_1.convertOperationToReplayValue}});
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.convertOperationToReplayValue=exports.EmbeddedReplay=exports.normalizeOptions=exports.buildContentItems=exports.OpenAPIParser=exports.isOperationName=exports.JsonPointer=exports.getMarkdownHeaderId=exports.StoreProvider=exports.AppProvider=exports.RedoclyOpenAPIDocsStandalone=exports.RedoclyOpenAPIDocs=exports.RedocExample=exports.RedocSchema=exports.ResponseSamples=exports.RequestSamples=exports.generateDeepLink=exports.getTagOrGroup=exports.getServerEnvName=exports.getOperation=exports.simplifyAstStructure=void 0,exports.useOpenapiDocsOptions=useOpenapiDocsOptions;const jotai_1=require("jotai"),store_1=require("./jotai/store");var simplifyAstStructure_1=require("./utils/simplifyAstStructure");Object.defineProperty(exports,"simplifyAstStructure",{enumerable:!0,get:function(){return simplifyAstStructure_1.simplifyAstStructure}});var operation_1=require("./models/operation");Object.defineProperty(exports,"getOperation",{enumerable:!0,get:function(){return operation_1.getOperation}});var environments_1=require("./utils/environments");Object.defineProperty(exports,"getServerEnvName",{enumerable:!0,get:function(){return environments_1.getServerEnvName}});var group_1=require("./models/group");Object.defineProperty(exports,"getTagOrGroup",{enumerable:!0,get:function(){return group_1.getTagOrGroup}});var common_1=require("./components/common");Object.defineProperty(exports,"generateDeepLink",{enumerable:!0,get:function(){return common_1.generateDeepLink}});var RequestSamples_1=require("./components/RequestSamples");Object.defineProperty(exports,"RequestSamples",{enumerable:!0,get:function(){return RequestSamples_1.RequestSamples}});var ResponseSamples_1=require("./components/ResponseSamples");Object.defineProperty(exports,"ResponseSamples",{enumerable:!0,get:function(){return ResponseSamples_1.ResponseSamples}});var pluggable_1=require("./components/pluggable");Object.defineProperty(exports,"RedocSchema",{enumerable:!0,get:function(){return pluggable_1.RedocSchema}}),Object.defineProperty(exports,"RedocExample",{enumerable:!0,get:function(){return pluggable_1.RedocExample}});var RedoclyOpenAPIDocs_1=require("./components/RedoclyOpenAPIDocs");Object.defineProperty(exports,"RedoclyOpenAPIDocs",{enumerable:!0,get:function(){return RedoclyOpenAPIDocs_1.RedoclyOpenAPIDocs}}),Object.defineProperty(exports,"RedoclyOpenAPIDocsStandalone",{enumerable:!0,get:function(){return RedoclyOpenAPIDocs_1.RedoclyOpenAPIDocsStandalone}}),Object.defineProperty(exports,"AppProvider",{enumerable:!0,get:function(){return RedoclyOpenAPIDocs_1.AppProvider}}),Object.defineProperty(exports,"StoreProvider",{enumerable:!0,get:function(){return RedoclyOpenAPIDocs_1.StoreProvider}}),Object.defineProperty(exports,"getMarkdownHeaderId",{enumerable:!0,get:function(){return RedoclyOpenAPIDocs_1.getMarkdownHeaderId}});var JsonPointer_1=require("./utils/JsonPointer");Object.defineProperty(exports,"JsonPointer",{enumerable:!0,get:function(){return JsonPointer_1.JsonPointer}});var openapi_1=require("./utils/openapi");Object.defineProperty(exports,"isOperationName",{enumerable:!0,get:function(){return openapi_1.isOperationName}});var services_1=require("./services");Object.defineProperty(exports,"OpenAPIParser",{enumerable:!0,get:function(){return services_1.OpenAPIParser}});var services_2=require("./services");function useOpenapiDocsOptions(){return(0,jotai_1.useAtomValue)(store_1.globalOptionsAtom)}Object.defineProperty(exports,"buildContentItems",{enumerable:!0,get:function(){return services_2.buildContentItems}}),Object.defineProperty(exports,"normalizeOptions",{enumerable:!0,get:function(){return services_2.normalizeOptions}});var EmbeddedReplay_1=require("./components/Replay/EmbeddedReplay");Object.defineProperty(exports,"EmbeddedReplay",{enumerable:!0,get:function(){return EmbeddedReplay_1.EmbeddedReplay}});var utils_1=require("./components/Replay/utils");Object.defineProperty(exports,"convertOperationToReplayValue",{enumerable:!0,get:function(){return utils_1.convertOperationToReplayValue}});
2
2
  //# sourceMappingURL=index.js.map
@@ -54,14 +54,17 @@ export interface RCodeSampleConfig extends CodeSampleBasicConfig {
54
54
  export interface PayloadCodeSampleConfig extends CodeSampleBasicConfig {
55
55
  lang: 'Payload';
56
56
  }
57
+ export interface CustomLanguageCodeSampleConfig extends Omit<CodeSampleBasicConfig, 'lang'> {
58
+ lang: string;
59
+ }
57
60
  export type CodeSampleConfig = CurlCodeSampleConfig | JavaScriptCodeSampleConfig | NodeJsCodeSampleConfig | PythonCodeSampleConfig | Java8CodeSampleConfig | JavaCodeSampleConfig | CSharpCodeSampleConfig | CSharpNewtonsoftCodeSampleConfig | PHPCodeSampleConfig | GoCodeSampleConfig | RubyCodeSampleConfig | RCodeSampleConfig;
58
61
  /**
59
62
  * Code Samples Generator rules
60
- * - Reference docs always displays all user custom x-codeSamples
63
+ * - Openapi docs displays language from redocly config.
61
64
  * - In addition code samples will be generated only for defined languages in array
62
65
  */
63
66
  export interface CodeSamplesConfig {
64
- languages: (CodeSampleConfig | PayloadCodeSampleConfig)[];
67
+ languages: (CodeSampleConfig | PayloadCodeSampleConfig | CustomLanguageCodeSampleConfig)[];
65
68
  skipOptionalParameters?: boolean;
66
69
  withOAuth2Call?: boolean;
67
70
  onSampleTabClick?: (label: string) => void;
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.addMarkdownItems=addMarkdownItems;const markdoc_1=require("@markdoc/markdoc"),theme_1=require("@redocly/theme"),models_1=require("../../models"),utils_1=require("../../utils");function addMarkdownItems(e,t,i){const n=(0,theme_1.isString)(e)?(0,markdoc_1.parse)(e):markdoc_1.Ast.fromJSON(JSON.stringify(null==e?void 0:e.result)),r=[];let o;const s=(e,t,i=r,n,o)=>{let s;e=(0,utils_1.unescapeHTMLChars)(e),n.attributes.id?s=n.attributes.id:(s=o?`${o}/${(0,utils_1.safeSlugify)(e)}`:`section/${(0,utils_1.safeSlugify)(e)}`,n.attributes.id=s);const l={id:s.toLowerCase(),name:e,level:t,items:[],ast:[n]};return i.push(l),l},l=(e,t)=>{var i,n;null===(n=null===(i=e[e.length-1])||void 0===i?void 0:i.ast)||void 0===n||n.push(t)},d=e=>{var t;for(const i of e.children){const e=getMarkdownContent(i)||"";"heading"===i.type&&1===i.attributes.level?o=s(e,i.attributes.level,void 0,i):i.attributes.level?s(e,i.attributes.level,null==o?void 0:o.items,i,null==o?void 0:o.id):(null===(t=null==o?void 0:o.items)||void 0===t?void 0:t.length)?l(null==o?void 0:o.items,i):(null==r?void 0:r.length)&&l(r,i)}};if(Array.isArray(n))for(const e of n)d(e);else d(n);return mapHeadingsDeep(t,r,i)}function mapHeadingsDeep(e,t,i=1){return t.map((t=>{const n=(0,models_1.getTagOrGroup)("section",t,e);return n.depth=i,t.items&&(n.items=mapHeadingsDeep(n,t.items,i+1)),n}))}function getMarkdownContent(e){var t,i;return"string"==typeof(null===(t=null==e?void 0:e.attributes)||void 0===t?void 0:t.content)?null===(i=e.attributes)||void 0===i?void 0:i.content:(null==e?void 0:e.children)?getMarkdownContent(e.children[0]):void 0}
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.addMarkdownItems=addMarkdownItems;const markdoc_1=require("@markdoc/markdoc"),theme_1=require("@redocly/theme"),models_1=require("../../models"),utils_1=require("../../utils"),simplifyAstStructure_1=require("../../utils/simplifyAstStructure");function addMarkdownItems(t,e,i){const r=(0,theme_1.isString)(t)?(0,simplifyAstStructure_1.simplifyAstStructure)((0,markdoc_1.parse)(t)):markdoc_1.Ast.fromJSON(JSON.stringify(null==t?void 0:t.result)),s=[];let n;const l=(t,e,i=s,r,n)=>{let l;t=(0,utils_1.unescapeHTMLChars)(t),r.attributes.id?l=r.attributes.id:(l=n?`${n}/${(0,utils_1.safeSlugify)(t)}`:`section/${(0,utils_1.safeSlugify)(t)}`,r.attributes.id=l);const o={id:l.toLowerCase(),name:t,level:e,items:[],ast:[r]};return i.push(o),o},o=(t,e)=>{var i,r;null===(r=null===(i=t[t.length-1])||void 0===i?void 0:i.ast)||void 0===r||r.push(e)},u=t=>{var e;const i=getMarkdownContent(t)||"";"heading"===t.type&&1===t.attributes.level?n=l(i,t.attributes.level,void 0,t):t.attributes.level?l(i,t.attributes.level,null==n?void 0:n.items,t,null==n?void 0:n.id):(null===(e=null==n?void 0:n.items)||void 0===e?void 0:e.length)?o(null==n?void 0:n.items,t):(null==s?void 0:s.length)&&o(s,t)};if(Array.isArray(r))for(const t of r)u(t);else u(r);return mapHeadingsDeep(e,s,i)}function mapHeadingsDeep(t,e,i=1){return e.map((e=>{const r=(0,models_1.getTagOrGroup)("section",e,t);return r.depth=i,e.items&&(r.items=mapHeadingsDeep(r,e.items,i+1)),r}))}function getMarkdownContent(t){var e,i;return"string"==typeof(null===(e=null==t?void 0:t.attributes)||void 0===e?void 0:e.content)?null===(i=t.attributes)||void 0===i?void 0:i.content:(null==t?void 0:t.children)?getMarkdownContent(t.children[0]):void 0}
2
2
  //# sourceMappingURL=markdown.js.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getValueFromMdParsedExtension=exports.normalizeText=exports.dottedString=exports.isMergeableObject=exports.deleteEmptyArrayItem=exports.isArrayOfObjects=void 0,exports.mapWithLast=mapWithLast,exports.mapValues=mapValues,exports.flattenByProp=flattenByProp,exports.stripTrailingSlash=stripTrailingSlash,exports.isNumeric=isNumeric,exports.appendToMdHeading=appendToMdHeading,exports.isAbsoluteUrl=isAbsoluteUrl,exports.resolveUrl=resolveUrl,exports.titleize=titleize,exports.removeQueryStringAndHash=removeQueryStringAndHash,exports.escapeHTMLAttrChars=escapeHTMLAttrChars,exports.unescapeHTMLChars=unescapeHTMLChars,exports.sanitizeItemId=sanitizeItemId,exports.useSchemaTitle=useSchemaTitle,exports.get=get,exports.joinStringFactory=joinStringFactory,exports.getWindowReferenceOptions=getWindowReferenceOptions,exports.getJsUrl=getJsUrl,exports.isLastInArray=isLastInArray,exports.isLastProperty=isLastProperty;const url_1=require("url"),theme_1=require("@redocly/theme"),openapi_1=require("./openapi"),JsonPointer_1=require("./JsonPointer");function mapWithLast(e,t){const r=[];for(let n=0;n<e.length-1;n++)r.push(t(e[n],!1));return 0!==e.length&&r.push(t(e[e.length-1],!0)),r}function mapValues(e,t){const r={};for(const n in e)Object.prototype.hasOwnProperty.call(e,n)&&(r[n]=t(e[n],n,e));return r}function flattenByProp(e,t){const r=[],n=e=>{for(const s of e)r.push(s),s[t]&&n(s[t])};return n(e),r}function stripTrailingSlash(e){return e.endsWith("/")?e.substring(0,e.length-1):e}function isNumeric(e){return!isNaN(parseFloat(e))&&isFinite(e)}function appendToMdHeading(e,t,r){const n=new RegExp(`(^|\\n)#\\s?${t}\\s*\\n`,"i"),s=new RegExp(`((\\n|^)#\\s*${t}\\s*(\\n|$)(?:.|\\n)*?)(\\n#|$)`,"i");if(n.test(e))return e.replace(s,`$1\n\n${r}\n$4`);{const n=""===e||e.endsWith("\n\n")?"":e.endsWith("\n")?"\n":"\n\n";return`${e}${n}# ${t}\n\n${r}`}}const isArrayOfObjects=e=>Array.isArray(e)&&e.some((e=>(0,theme_1.isObject)(e)));exports.isArrayOfObjects=isArrayOfObjects;const deleteEmptyArrayItem=e=>e.filter((e=>!!e));exports.deleteEmptyArrayItem=deleteEmptyArrayItem;const isMergeableObject=e=>(0,theme_1.isObject)(e)&&!Array.isArray(e);function isAbsoluteUrl(e){return/(?:^[a-z][a-z0-9+.-]*:|\/\/)/i.test(e)}function resolveUrl(e,t){let r;if(t.startsWith("//")){const{protocol:n}=(0,url_1.parse)(e);r=`${n||"https:"}${t}`}else if(isAbsoluteUrl(t))r=t;else if(t.startsWith("/")){const n=(0,url_1.parse)(e);r=(0,url_1.format)(Object.assign(Object.assign({},n),{pathname:t}))}else r=stripTrailingSlash(e)+"/"+t;return stripTrailingSlash(r)}function titleize(e){return e.charAt(0).toUpperCase()+e.slice(1)}function removeQueryStringAndHash(e){try{const t=parseURL(e);return t.search="",t.hash="",t.toString()}catch(t){return e}}function parseURL(e){return"undefined"==typeof URL?new(require("url").URL)(e):new URL(e)}function escapeHTMLAttrChars(e){return e.replace(/["\\]/g,"\\$&")}function unescapeHTMLChars(e){return e.replace(/&#(\d+);/g,((e,t)=>String.fromCharCode(parseInt(t,10)))).replace(/&amp;/g,"&").replace(/&quot;/g,'"')}function sanitizeItemId(e){return e&&e.replace(/#/g,"_").toLowerCase()}function useSchemaTitle(e,t){return t||(0,openapi_1.isNamedDefinition)(e)&&JsonPointer_1.JsonPointer.baseName(e)||""}function get(e={},t,r){return"string"==typeof t&&(t=t.split(".")),t.reduce(((e,t)=>e&&e[t]?e[t]:r),e)}function joinStringFactory(e){return(...t)=>t.filter(Boolean).join(e)}function getWindowReferenceOptions(e){var t;return theme_1.IS_BROWSER?null===(t=null===window||void 0===window?void 0:window.REFERENCE_DOCS_OPTIONS)||void 0===t?void 0:t[e]:null}function getJsUrl(){var e;if(!theme_1.IS_BROWSER)return"";const t=+new Date+Math.random();try{return document.currentScript&&(document.currentScript.async||document.currentScript.defer)||document.write(`<script id="dummy${t}"><\/script>`),(null===(e=document.getElementById("dummy"+t))||void 0===e?void 0:e.previousSibling).src}catch(e){return""}}exports.isMergeableObject=isMergeableObject,exports.dottedString=joinStringFactory(".");const normalizeText=e=>(0,theme_1.isString)(e)?e:null==e?void 0:e.raw;exports.normalizeText=normalizeText;const getValueFromMdParsedExtension=(e,t)=>{const r=(null==e?void 0:e[`x-parsed-md-${t}`])||(null==e?void 0:e[t]);if("x-enumDescriptions"!==t)return r;let n={};for(const e in r)e.startsWith("x-parsed-md")||(n[e]=(null==r?void 0:r[`x-parsed-md-${e}`])||(null==r?void 0:r[e]));return Object.keys(n).length?n:r};function isLastInArray(e,t){return t===e.length-1}function isLastProperty(e,t){const r=Object.keys(e);return r.indexOf(t)===r.length-1}exports.getValueFromMdParsedExtension=getValueFromMdParsedExtension;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getValueFromMdParsedExtension=exports.normalizeText=exports.dottedString=exports.isMergeableObject=exports.deleteEmptyArrayItem=exports.isArrayOfObjects=void 0,exports.mapWithLast=mapWithLast,exports.mapValues=mapValues,exports.flattenByProp=flattenByProp,exports.stripTrailingSlash=stripTrailingSlash,exports.isNumeric=isNumeric,exports.appendToMdHeading=appendToMdHeading,exports.isAbsoluteUrl=isAbsoluteUrl,exports.resolveUrl=resolveUrl,exports.titleize=titleize,exports.removeQueryStringAndHash=removeQueryStringAndHash,exports.escapeHTMLAttrChars=escapeHTMLAttrChars,exports.unescapeHTMLChars=unescapeHTMLChars,exports.sanitizeItemId=sanitizeItemId,exports.useSchemaTitle=useSchemaTitle,exports.get=get,exports.joinStringFactory=joinStringFactory,exports.getWindowReferenceOptions=getWindowReferenceOptions,exports.getJsUrl=getJsUrl,exports.isLastInArray=isLastInArray,exports.isLastProperty=isLastProperty;const url_1=require("url"),theme_1=require("@redocly/theme"),openapi_1=require("./openapi"),JsonPointer_1=require("./JsonPointer");function mapWithLast(e,t){const r=[];for(let n=0;n<e.length-1;n++)r.push(t(e[n],!1));return 0!==e.length&&r.push(t(e[e.length-1],!0)),r}function mapValues(e,t){const r={};for(const n in e)Object.prototype.hasOwnProperty.call(e,n)&&(r[n]=t(e[n],n,e));return r}function flattenByProp(e,t){const r=[],n=e=>{for(const s of e)r.push(s),s[t]&&n(s[t])};return n(e),r}function stripTrailingSlash(e){return e.endsWith("/")?e.substring(0,e.length-1):e}function isNumeric(e){return!isNaN(parseFloat(e))&&isFinite(e)}function appendToMdHeading(e,t,r){const n=new RegExp(`(^|\\n)#\\s?${t}\\s*\\n`,"i"),s=new RegExp(`((\\n|^)#\\s*${t}\\s*(\\n|$)(?:.|\\n)*?)(\\n#|$)`,"i");if(n.test(e))return e.replace(s,`$1\n\n${r}\n$4`);{const n=""===e||e.endsWith("\n\n")?"":e.endsWith("\n")?"\n":"\n\n";return`${e}${n}# ${t}\n\n${r}`}}const isArrayOfObjects=e=>Array.isArray(e)&&e.some((e=>(0,theme_1.isObject)(e)));exports.isArrayOfObjects=isArrayOfObjects;const deleteEmptyArrayItem=e=>e.filter((e=>!!e));exports.deleteEmptyArrayItem=deleteEmptyArrayItem;const isMergeableObject=e=>(0,theme_1.isObject)(e)&&!Array.isArray(e);function isAbsoluteUrl(e){return/(?:^[a-z][a-z0-9+.-]*:|\/\/)/i.test(e)}function resolveUrl(e,t){let r;if(t.startsWith("//")){const{protocol:n}=(0,url_1.parse)(e);r=`${n||"https:"}${t}`}else if(isAbsoluteUrl(t))r=t;else if(t.startsWith("/")){const n=(0,url_1.parse)(e);r=(0,url_1.format)(Object.assign(Object.assign({},n),{pathname:t}))}else r=stripTrailingSlash(e)+"/"+t;return stripTrailingSlash(r)}function titleize(e){return e.charAt(0).toUpperCase()+e.slice(1)}function removeQueryStringAndHash(e){try{const t=parseURL(e);return t.search="",t.hash="",t.toString()}catch(t){return e}}function parseURL(e){return"undefined"==typeof URL?new(require("url").URL)(e):new URL(e)}function escapeHTMLAttrChars(e){return e.replace(/["\\]/g,"\\$&")}function unescapeHTMLChars(e){return e.replace(/&#(\d+);/g,((e,t)=>String.fromCharCode(parseInt(t,10)))).replace(/&amp;/g,"&").replace(/&quot;/g,'"')}function sanitizeItemId(e){return e&&e.replace(/#/g,"_").toLowerCase()}function useSchemaTitle(e,t){return t||(0,openapi_1.isNamedDefinition)(e)&&JsonPointer_1.JsonPointer.baseName(e)||""}function get(e={},t,r){return"string"==typeof t&&(t=t.split(".")),t.reduce(((e,t)=>e&&e[t]?e[t]:r),e)}function joinStringFactory(e){return(...t)=>t.filter(Boolean).join(e)}function getWindowReferenceOptions(e){var t;return theme_1.IS_BROWSER?null===(t=null===window||void 0===window?void 0:window.REFERENCE_DOCS_OPTIONS)||void 0===t?void 0:t[e]:null}function getJsUrl(){var e;if(!theme_1.IS_BROWSER)return"";const t=+new Date+Math.random();try{return document.currentScript&&(document.currentScript.async||document.currentScript.defer)||document.write(`<script id="dummy${t}"><\/script>`),(null===(e=document.getElementById("dummy"+t))||void 0===e?void 0:e.previousSibling).src}catch(e){return""}}exports.isMergeableObject=isMergeableObject,exports.dottedString=joinStringFactory(".");const normalizeText=e=>(0,theme_1.isString)(e)?e:null==e?void 0:e.raw;exports.normalizeText=normalizeText;const getValueFromMdParsedExtension=(e,t)=>{const r=(null==e?void 0:e[`x-parsed-md-${t}`])||(null==e?void 0:e[t]);if(!(null==e?void 0:e[`x-parsed-md-${t}`]))return null==e?void 0:e[t];if("x-enumDescriptions"!==t)return normalizeMarkdownValue(e,t);let n={};for(const e in r)e.startsWith("x-parsed-md")||(n[e]=(null==r?void 0:r[`x-parsed-md-${e}`])||(null==r?void 0:r[e]));return Object.keys(n).length?n:r};function normalizeMarkdownValue(e,t){var r;const n=(null==e?void 0:e[`x-parsed-md-${t}`])||(null==e?void 0:e[t]);return(null==n?void 0:n.raw)?n:{result:(null==n?void 0:n.result)||(null===(r=null==e?void 0:e[t])||void 0===r?void 0:r.result)||(null==e?void 0:e[t]),raw:null==e?void 0:e[t]}}function isLastInArray(e,t){return t===e.length-1}function isLastProperty(e,t){const r=Object.keys(e);return r.indexOf(t)===r.length-1}exports.getValueFromMdParsedExtension=getValueFromMdParsedExtension;
2
2
  //# sourceMappingURL=helpers.js.map
@@ -1,2 +1,2 @@
1
- "use strict";var __awaiter=this&&this.__awaiter||function(e,n,t,o){return new(t||(t=Promise))((function(r,i){function c(e){try{u(o.next(e))}catch(e){i(e)}}function a(e){try{u(o.throw(e))}catch(e){i(e)}}function u(e){var n;e.done?r(e.value):(n=e.value,n instanceof t?n:new t((function(e){e(n)}))).then(c,a)}u((o=o.apply(e,n||[])).next())}))};Object.defineProperty(exports,"__esModule",{value:!0}),exports.loadAndBundleDefinition=loadAndBundleDefinition,exports.convertSwagger2OpenAPI=convertSwagger2OpenAPI;const bundle_1=require("@redocly/openapi-core/lib/bundle"),config_1=require("@redocly/openapi-core/lib/config/config"),swagger2openapi_1=require("swagger2openapi"),theme_1=require("@redocly/theme"),createParsedDocument_1=require("./createParsedDocument");function loadAndBundleDefinition(e){return __awaiter(this,void 0,void 0,(function*(){const n=new config_1.Config({}),t={config:n,base:theme_1.IS_BROWSER?window.location.href:process.cwd()};theme_1.IS_BROWSER&&(n.resolve.http.customFetch=global.fetch),"object"==typeof e&&null!==e?t.doc=(0,createParsedDocument_1.createParsedDocument)(e):t.ref=e;const{bundle:{parsed:o}}=yield(0,bundle_1.bundle)(t);return void 0!==o.swagger?convertSwagger2OpenAPI(o):o}))}function convertSwagger2OpenAPI(e){return e.paths||(e.paths={}),new Promise(((n,t)=>(0,swagger2openapi_1.convertObj)(e,{patch:!0,warnOnly:!0,text:"{}",anchors:!0},((e,o)=>{if(e)return t(e);n(null==o?void 0:o.openapi)}))))}
1
+ "use strict";var __awaiter=this&&this.__awaiter||function(e,n,t,o){return new(t||(t=Promise))((function(r,a){function i(e){try{u(o.next(e))}catch(e){a(e)}}function c(e){try{u(o.throw(e))}catch(e){a(e)}}function u(e){var n;e.done?r(e.value):(n=e.value,n instanceof t?n:new t((function(e){e(n)}))).then(i,c)}u((o=o.apply(e,n||[])).next())}))};Object.defineProperty(exports,"__esModule",{value:!0}),exports.loadAndBundleDefinition=loadAndBundleDefinition,exports.convertSwagger2OpenAPI=convertSwagger2OpenAPI;const openapi_core_1=require("@redocly/openapi-core"),swagger2openapi_1=require("swagger2openapi"),theme_1=require("@redocly/theme"),createParsedDocument_1=require("./createParsedDocument");function loadAndBundleDefinition(e){return __awaiter(this,void 0,void 0,(function*(){const n=new openapi_core_1.Config({}),t={config:n,base:theme_1.IS_BROWSER?window.location.href:process.cwd()};theme_1.IS_BROWSER&&(n.resolve.http.customFetch=global.fetch),"object"==typeof e&&null!==e?t.doc=(0,createParsedDocument_1.createParsedDocument)(e):t.ref=e;const{bundle:{parsed:o}}=yield(0,openapi_core_1.bundle)(t);return void 0!==o.swagger?convertSwagger2OpenAPI(o):o}))}function convertSwagger2OpenAPI(e){return e.paths||(e.paths={}),new Promise(((n,t)=>(0,swagger2openapi_1.convertObj)(e,{patch:!0,warnOnly:!0,text:"{}",anchors:!0},((e,o)=>{if(e)return t(e);n(null==o?void 0:o.openapi)}))))}
2
2
  //# sourceMappingURL=loadAndBundleSpec.js.map
@@ -1 +1,7 @@
1
- export declare function saveTextBeforeHeading(description: string | GenericObject): any;
1
+ import type { Node } from '@markdoc/markdoc';
2
+ interface DescriptionObject {
3
+ result: string | Node | Node[];
4
+ raw: string;
5
+ }
6
+ export declare function saveTextBeforeHeading(description: string | DescriptionObject): string | DescriptionObject;
7
+ export {};
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.saveTextBeforeHeading=saveTextBeforeHeading;const markdoc_1=require("@markdoc/markdoc"),theme_1=require("@redocly/theme"),utils_1=require("../services/utils");function saveTextBeforeHeading(e){if(!(0,theme_1.isString)(e)&&(null==e?void 0:e.result)){const r=(0,utils_1.deepClone)(e),i=markdoc_1.Ast.fromJSON(JSON.stringify(null==r?void 0:r.result));if(Array.isArray(i))for(const e of i)modifyNodeByHeading(e);else modifyNodeByHeading(i);return r.result=JSON.stringify(i),r.raw=saveTextBeforeHeading(r.raw),r}const r=new RegExp("^#{1,6}?\\s+","m"),i=e.search(r);return i>-1?e.substring(0,i):e}function modifyNodeByHeading(e){if(!Array.isArray(e.children))return;const r=e.children.findIndex((e=>"heading"===e.type));return-1===r||(e.children=e.children.slice(0,r)),e}
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.saveTextBeforeHeading=saveTextBeforeHeading;const markdoc_1=require("@markdoc/markdoc"),theme_1=require("@redocly/theme");function saveTextBeforeHeading(e){if(!e)return"";if(!(0,theme_1.isString)(e))return(null==e?void 0:e.result)?{result:modifyNodeByHeading(markdoc_1.Ast.fromJSON(JSON.stringify(e.result)))||"",raw:saveTextBeforeHeading(e.raw)}:e;const r=new RegExp("^#{1,6}?\\s+","m"),i=e.search(r);return i>-1?e.substring(0,i):e}function modifyNodeByHeading(e){if(Array.isArray(e)){const r=e.findIndex((e=>"heading"===e.type));return-1===r?e:e.slice(0,r)}if(!e.children||!Array.isArray(e.children))return;const r=e.children.findIndex((e=>"heading"===e.type));return-1===r||(e.children=e.children.slice(0,r)),e}
2
2
  //# sourceMappingURL=saveTextBeforeHeading.js.map
@@ -0,0 +1,2 @@
1
+ import type { Node } from '@markdoc/markdoc';
2
+ export declare const simplifyAstStructure: (ast: Node) => Node | Node[];
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.simplifyAstStructure=void 0;const simplifyAstStructure=t=>{var e,l;i(t);for(const l of t.walk())i(l),(null===(e=null==l?void 0:l.children)||void 0===e?void 0:e.length)&&(0,exports.simplifyAstStructure)(l);function i(t){(null==t?void 0:t.location)&&delete t.location,void 0===t.tag&&delete t.tag}return"document"===t.type&&(null===(l=null==t?void 0:t.children)||void 0===l?void 0:l.length)?null==t?void 0:t.children:t};exports.simplifyAstStructure=simplifyAstStructure;
2
+ //# sourceMappingURL=simplifyAstStructure.js.map
@@ -1 +1,2 @@
1
1
  export function isatty(): void;
2
+ export function createRequire(): void;
package/lib-esm/empty.js CHANGED
@@ -1,2 +1,2 @@
1
- module.exports={isatty:()=>{}};
1
+ module.exports={isatty:()=>{},createRequire:()=>{}};
2
2
  //# sourceMappingURL=empty.js.map
@@ -3,6 +3,7 @@ export type { IMenuItem } from './services/types';
3
3
  export type { OperationModel, SchemaModel, ContentItemModel } from './models/types';
4
4
  export type { CodeSampleOptions } from './models/code-sample-options';
5
5
  export type { SecurityDetails, OpenAPIDefinition, OpenAPIOperation, OpenAPIParameterLocation, OpenAPISchema, } from './types';
6
+ export { simplifyAstStructure } from './utils/simplifyAstStructure';
6
7
  export { getOperation } from './models/operation';
7
8
  export { getServerEnvName } from './utils/environments';
8
9
  export { getTagOrGroup } from './models/group';
package/lib-esm/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import{useAtomValue}from"jotai";import{globalOptionsAtom}from"./jotai/store";export{getOperation}from"./models/operation";export{getServerEnvName}from"./utils/environments";export{getTagOrGroup}from"./models/group";export{generateDeepLink}from"./components/common";export{RequestSamples}from"./components/RequestSamples";export{ResponseSamples}from"./components/ResponseSamples";export{RedocSchema,RedocExample}from"./components/pluggable";export{RedoclyOpenAPIDocs,RedoclyOpenAPIDocsStandalone,AppProvider,StoreProvider,getMarkdownHeaderId}from"./components/RedoclyOpenAPIDocs";export{JsonPointer}from"./utils/JsonPointer";export{isOperationName}from"./utils/openapi";export{OpenAPIParser}from"./services";export{buildContentItems,normalizeOptions}from"./services";export function useOpenapiDocsOptions(){return useAtomValue(globalOptionsAtom)}export{EmbeddedReplay}from"./components/Replay/EmbeddedReplay";export{convertOperationToReplayValue}from"./components/Replay/utils";
1
+ import{useAtomValue}from"jotai";import{globalOptionsAtom}from"./jotai/store";export{simplifyAstStructure}from"./utils/simplifyAstStructure";export{getOperation}from"./models/operation";export{getServerEnvName}from"./utils/environments";export{getTagOrGroup}from"./models/group";export{generateDeepLink}from"./components/common";export{RequestSamples}from"./components/RequestSamples";export{ResponseSamples}from"./components/ResponseSamples";export{RedocSchema,RedocExample}from"./components/pluggable";export{RedoclyOpenAPIDocs,RedoclyOpenAPIDocsStandalone,AppProvider,StoreProvider,getMarkdownHeaderId}from"./components/RedoclyOpenAPIDocs";export{JsonPointer}from"./utils/JsonPointer";export{isOperationName}from"./utils/openapi";export{OpenAPIParser}from"./services";export{buildContentItems,normalizeOptions}from"./services";export function useOpenapiDocsOptions(){return useAtomValue(globalOptionsAtom)}export{EmbeddedReplay}from"./components/Replay/EmbeddedReplay";export{convertOperationToReplayValue}from"./components/Replay/utils";
2
2
  //# sourceMappingURL=index.js.map
@@ -54,14 +54,17 @@ export interface RCodeSampleConfig extends CodeSampleBasicConfig {
54
54
  export interface PayloadCodeSampleConfig extends CodeSampleBasicConfig {
55
55
  lang: 'Payload';
56
56
  }
57
+ export interface CustomLanguageCodeSampleConfig extends Omit<CodeSampleBasicConfig, 'lang'> {
58
+ lang: string;
59
+ }
57
60
  export type CodeSampleConfig = CurlCodeSampleConfig | JavaScriptCodeSampleConfig | NodeJsCodeSampleConfig | PythonCodeSampleConfig | Java8CodeSampleConfig | JavaCodeSampleConfig | CSharpCodeSampleConfig | CSharpNewtonsoftCodeSampleConfig | PHPCodeSampleConfig | GoCodeSampleConfig | RubyCodeSampleConfig | RCodeSampleConfig;
58
61
  /**
59
62
  * Code Samples Generator rules
60
- * - Reference docs always displays all user custom x-codeSamples
63
+ * - Openapi docs displays language from redocly config.
61
64
  * - In addition code samples will be generated only for defined languages in array
62
65
  */
63
66
  export interface CodeSamplesConfig {
64
- languages: (CodeSampleConfig | PayloadCodeSampleConfig)[];
67
+ languages: (CodeSampleConfig | PayloadCodeSampleConfig | CustomLanguageCodeSampleConfig)[];
65
68
  skipOptionalParameters?: boolean;
66
69
  withOAuth2Call?: boolean;
67
70
  onSampleTabClick?: (label: string) => void;
@@ -1,2 +1,2 @@
1
- import{parse,Ast}from"@markdoc/markdoc";import{isString}from"@redocly/theme";import{getTagOrGroup}from"../../models";import{safeSlugify,unescapeHTMLChars}from"../../utils";export function addMarkdownItems(t,e,i){const n=isString(t)?parse(t):Ast.fromJSON(JSON.stringify(null==t?void 0:t.result)),o=[];let r;const s=(t,e,i=o,n,r)=>{let s;t=unescapeHTMLChars(t),n.attributes.id?s=n.attributes.id:(s=r?`${r}/${safeSlugify(t)}`:`section/${safeSlugify(t)}`,n.attributes.id=s);const l={id:s.toLowerCase(),name:t,level:e,items:[],ast:[n]};return i.push(l),l},l=(t,e)=>{var i,n;null===(n=null===(i=t[t.length-1])||void 0===i?void 0:i.ast)||void 0===n||n.push(e)},a=t=>{var e;for(const i of t.children){const t=getMarkdownContent(i)||"";"heading"===i.type&&1===i.attributes.level?r=s(t,i.attributes.level,void 0,i):i.attributes.level?s(t,i.attributes.level,null==r?void 0:r.items,i,null==r?void 0:r.id):(null===(e=null==r?void 0:r.items)||void 0===e?void 0:e.length)?l(null==r?void 0:r.items,i):(null==o?void 0:o.length)&&l(o,i)}};if(Array.isArray(n))for(const t of n)a(t);else a(n);return mapHeadingsDeep(e,o,i)}function mapHeadingsDeep(t,e,i=1){return e.map((e=>{const n=getTagOrGroup("section",e,t);return n.depth=i,e.items&&(n.items=mapHeadingsDeep(n,e.items,i+1)),n}))}function getMarkdownContent(t){var e,i;return"string"==typeof(null===(e=null==t?void 0:t.attributes)||void 0===e?void 0:e.content)?null===(i=t.attributes)||void 0===i?void 0:i.content:(null==t?void 0:t.children)?getMarkdownContent(t.children[0]):void 0}
1
+ import{parse,Ast}from"@markdoc/markdoc";import{isString}from"@redocly/theme";import{getTagOrGroup}from"../../models";import{safeSlugify,unescapeHTMLChars}from"../../utils";import{simplifyAstStructure}from"../../utils/simplifyAstStructure";export function addMarkdownItems(t,e,i){const r=isString(t)?simplifyAstStructure(parse(t)):Ast.fromJSON(JSON.stringify(null==t?void 0:t.result)),n=[];let o;const s=(t,e,i=n,r,o)=>{let s;t=unescapeHTMLChars(t),r.attributes.id?s=r.attributes.id:(s=o?`${o}/${safeSlugify(t)}`:`section/${safeSlugify(t)}`,r.attributes.id=s);const l={id:s.toLowerCase(),name:t,level:e,items:[],ast:[r]};return i.push(l),l},l=(t,e)=>{var i,r;null===(r=null===(i=t[t.length-1])||void 0===i?void 0:i.ast)||void 0===r||r.push(e)},u=t=>{var e;const i=getMarkdownContent(t)||"";"heading"===t.type&&1===t.attributes.level?o=s(i,t.attributes.level,void 0,t):t.attributes.level?s(i,t.attributes.level,null==o?void 0:o.items,t,null==o?void 0:o.id):(null===(e=null==o?void 0:o.items)||void 0===e?void 0:e.length)?l(null==o?void 0:o.items,t):(null==n?void 0:n.length)&&l(n,t)};if(Array.isArray(r))for(const t of r)u(t);else u(r);return mapHeadingsDeep(e,n,i)}function mapHeadingsDeep(t,e,i=1){return e.map((e=>{const r=getTagOrGroup("section",e,t);return r.depth=i,e.items&&(r.items=mapHeadingsDeep(r,e.items,i+1)),r}))}function getMarkdownContent(t){var e,i;return"string"==typeof(null===(e=null==t?void 0:t.attributes)||void 0===e?void 0:e.content)?null===(i=t.attributes)||void 0===i?void 0:i.content:(null==t?void 0:t.children)?getMarkdownContent(t.children[0]):void 0}
2
2
  //# sourceMappingURL=markdown.js.map
@@ -1,2 +1,2 @@
1
- import{format,parse}from"url";import{IS_BROWSER,isObject,isString}from"@redocly/theme";import{isNamedDefinition}from"./openapi";import{JsonPointer}from"./JsonPointer";export function mapWithLast(t,e){const r=[];for(let n=0;n<t.length-1;n++)r.push(e(t[n],!1));return 0!==t.length&&r.push(e(t[t.length-1],!0)),r}export function mapValues(t,e){const r={};for(const n in t)Object.prototype.hasOwnProperty.call(t,n)&&(r[n]=e(t[n],n,t));return r}export function flattenByProp(t,e){const r=[],n=t=>{for(const o of t)r.push(o),o[e]&&n(o[e])};return n(t),r}export function stripTrailingSlash(t){return t.endsWith("/")?t.substring(0,t.length-1):t}export function isNumeric(t){return!isNaN(parseFloat(t))&&isFinite(t)}export function appendToMdHeading(t,e,r){const n=new RegExp(`(^|\\n)#\\s?${e}\\s*\\n`,"i"),o=new RegExp(`((\\n|^)#\\s*${e}\\s*(\\n|$)(?:.|\\n)*?)(\\n#|$)`,"i");if(n.test(t))return t.replace(o,`$1\n\n${r}\n$4`);{const n=""===t||t.endsWith("\n\n")?"":t.endsWith("\n")?"\n":"\n\n";return`${t}${n}# ${e}\n\n${r}`}}export const isArrayOfObjects=t=>Array.isArray(t)&&t.some((t=>isObject(t)));export const deleteEmptyArrayItem=t=>t.filter((t=>!!t));export const isMergeableObject=t=>isObject(t)&&!Array.isArray(t);export function isAbsoluteUrl(t){return/(?:^[a-z][a-z0-9+.-]*:|\/\/)/i.test(t)}export function resolveUrl(t,e){let r;if(e.startsWith("//")){const{protocol:n}=parse(t);r=`${n||"https:"}${e}`}else if(isAbsoluteUrl(e))r=e;else if(e.startsWith("/")){const n=parse(t);r=format(Object.assign(Object.assign({},n),{pathname:e}))}else r=stripTrailingSlash(t)+"/"+e;return stripTrailingSlash(r)}export function titleize(t){return t.charAt(0).toUpperCase()+t.slice(1)}export function removeQueryStringAndHash(t){try{const e=parseURL(t);return e.search="",e.hash="",e.toString()}catch(e){return t}}function parseURL(t){return"undefined"==typeof URL?new(require("url").URL)(t):new URL(t)}export function escapeHTMLAttrChars(t){return t.replace(/["\\]/g,"\\$&")}export function unescapeHTMLChars(t){return t.replace(/&#(\d+);/g,((t,e)=>String.fromCharCode(parseInt(e,10)))).replace(/&amp;/g,"&").replace(/&quot;/g,'"')}export function sanitizeItemId(t){return t&&t.replace(/#/g,"_").toLowerCase()}export function useSchemaTitle(t,e){return e||isNamedDefinition(t)&&JsonPointer.baseName(t)||""}export function get(t={},e,r){return"string"==typeof e&&(e=e.split(".")),e.reduce(((t,e)=>t&&t[e]?t[e]:r),t)}export function joinStringFactory(t){return(...e)=>e.filter(Boolean).join(t)}export const dottedString=joinStringFactory(".");export function getWindowReferenceOptions(t){var e;return IS_BROWSER?null===(e=null===window||void 0===window?void 0:window.REFERENCE_DOCS_OPTIONS)||void 0===e?void 0:e[t]:null}export function getJsUrl(){var t;if(!IS_BROWSER)return"";const e=+new Date+Math.random();try{return document.currentScript&&(document.currentScript.async||document.currentScript.defer)||document.write(`<script id="dummy${e}"><\/script>`),(null===(t=document.getElementById("dummy"+e))||void 0===t?void 0:t.previousSibling).src}catch(t){return""}}export const normalizeText=t=>isString(t)?t:null==t?void 0:t.raw;export const getValueFromMdParsedExtension=(t,e)=>{const r=(null==t?void 0:t[`x-parsed-md-${e}`])||(null==t?void 0:t[e]);if("x-enumDescriptions"!==e)return r;let n={};for(const t in r)t.startsWith("x-parsed-md")||(n[t]=(null==r?void 0:r[`x-parsed-md-${t}`])||(null==r?void 0:r[t]));return Object.keys(n).length?n:r};export function isLastInArray(t,e){return e===t.length-1}export function isLastProperty(t,e){const r=Object.keys(t);return r.indexOf(e)===r.length-1}
1
+ import{format,parse}from"url";import{IS_BROWSER,isObject,isString}from"@redocly/theme";import{isNamedDefinition}from"./openapi";import{JsonPointer}from"./JsonPointer";export function mapWithLast(t,e){const r=[];for(let n=0;n<t.length-1;n++)r.push(e(t[n],!1));return 0!==t.length&&r.push(e(t[t.length-1],!0)),r}export function mapValues(t,e){const r={};for(const n in t)Object.prototype.hasOwnProperty.call(t,n)&&(r[n]=e(t[n],n,t));return r}export function flattenByProp(t,e){const r=[],n=t=>{for(const o of t)r.push(o),o[e]&&n(o[e])};return n(t),r}export function stripTrailingSlash(t){return t.endsWith("/")?t.substring(0,t.length-1):t}export function isNumeric(t){return!isNaN(parseFloat(t))&&isFinite(t)}export function appendToMdHeading(t,e,r){const n=new RegExp(`(^|\\n)#\\s?${e}\\s*\\n`,"i"),o=new RegExp(`((\\n|^)#\\s*${e}\\s*(\\n|$)(?:.|\\n)*?)(\\n#|$)`,"i");if(n.test(t))return t.replace(o,`$1\n\n${r}\n$4`);{const n=""===t||t.endsWith("\n\n")?"":t.endsWith("\n")?"\n":"\n\n";return`${t}${n}# ${e}\n\n${r}`}}export const isArrayOfObjects=t=>Array.isArray(t)&&t.some((t=>isObject(t)));export const deleteEmptyArrayItem=t=>t.filter((t=>!!t));export const isMergeableObject=t=>isObject(t)&&!Array.isArray(t);export function isAbsoluteUrl(t){return/(?:^[a-z][a-z0-9+.-]*:|\/\/)/i.test(t)}export function resolveUrl(t,e){let r;if(e.startsWith("//")){const{protocol:n}=parse(t);r=`${n||"https:"}${e}`}else if(isAbsoluteUrl(e))r=e;else if(e.startsWith("/")){const n=parse(t);r=format(Object.assign(Object.assign({},n),{pathname:e}))}else r=stripTrailingSlash(t)+"/"+e;return stripTrailingSlash(r)}export function titleize(t){return t.charAt(0).toUpperCase()+t.slice(1)}export function removeQueryStringAndHash(t){try{const e=parseURL(t);return e.search="",e.hash="",e.toString()}catch(e){return t}}function parseURL(t){return"undefined"==typeof URL?new(require("url").URL)(t):new URL(t)}export function escapeHTMLAttrChars(t){return t.replace(/["\\]/g,"\\$&")}export function unescapeHTMLChars(t){return t.replace(/&#(\d+);/g,((t,e)=>String.fromCharCode(parseInt(e,10)))).replace(/&amp;/g,"&").replace(/&quot;/g,'"')}export function sanitizeItemId(t){return t&&t.replace(/#/g,"_").toLowerCase()}export function useSchemaTitle(t,e){return e||isNamedDefinition(t)&&JsonPointer.baseName(t)||""}export function get(t={},e,r){return"string"==typeof e&&(e=e.split(".")),e.reduce(((t,e)=>t&&t[e]?t[e]:r),t)}export function joinStringFactory(t){return(...e)=>e.filter(Boolean).join(t)}export const dottedString=joinStringFactory(".");export function getWindowReferenceOptions(t){var e;return IS_BROWSER?null===(e=null===window||void 0===window?void 0:window.REFERENCE_DOCS_OPTIONS)||void 0===e?void 0:e[t]:null}export function getJsUrl(){var t;if(!IS_BROWSER)return"";const e=+new Date+Math.random();try{return document.currentScript&&(document.currentScript.async||document.currentScript.defer)||document.write(`<script id="dummy${e}"><\/script>`),(null===(t=document.getElementById("dummy"+e))||void 0===t?void 0:t.previousSibling).src}catch(t){return""}}export const normalizeText=t=>isString(t)?t:null==t?void 0:t.raw;export const getValueFromMdParsedExtension=(t,e)=>{const r=(null==t?void 0:t[`x-parsed-md-${e}`])||(null==t?void 0:t[e]);if(!(null==t?void 0:t[`x-parsed-md-${e}`]))return null==t?void 0:t[e];if("x-enumDescriptions"!==e)return normalizeMarkdownValue(t,e);let n={};for(const t in r)t.startsWith("x-parsed-md")||(n[t]=(null==r?void 0:r[`x-parsed-md-${t}`])||(null==r?void 0:r[t]));return Object.keys(n).length?n:r};function normalizeMarkdownValue(t,e){var r;const n=(null==t?void 0:t[`x-parsed-md-${e}`])||(null==t?void 0:t[e]);return(null==n?void 0:n.raw)?n:{result:(null==n?void 0:n.result)||(null===(r=null==t?void 0:t[e])||void 0===r?void 0:r.result)||(null==t?void 0:t[e]),raw:null==t?void 0:t[e]}}export function isLastInArray(t,e){return e===t.length-1}export function isLastProperty(t,e){const r=Object.keys(t);return r.indexOf(e)===r.length-1}
2
2
  //# sourceMappingURL=helpers.js.map
@@ -1,2 +1,2 @@
1
- var __awaiter=this&&this.__awaiter||function(e,n,o,t){return new(o||(o=Promise))((function(r,i){function c(e){try{u(t.next(e))}catch(e){i(e)}}function a(e){try{u(t.throw(e))}catch(e){i(e)}}function u(e){var n;e.done?r(e.value):(n=e.value,n instanceof o?n:new o((function(e){e(n)}))).then(c,a)}u((t=t.apply(e,n||[])).next())}))};import{bundle}from"@redocly/openapi-core/lib/bundle";import{Config}from"@redocly/openapi-core/lib/config/config";import{convertObj}from"swagger2openapi";import{IS_BROWSER}from"@redocly/theme";import{createParsedDocument}from"./createParsedDocument";export function loadAndBundleDefinition(e){return __awaiter(this,void 0,void 0,(function*(){const n=new Config({}),o={config:n,base:IS_BROWSER?window.location.href:process.cwd()};IS_BROWSER&&(n.resolve.http.customFetch=global.fetch),"object"==typeof e&&null!==e?o.doc=createParsedDocument(e):o.ref=e;const{bundle:{parsed:t}}=yield bundle(o);return void 0!==t.swagger?convertSwagger2OpenAPI(t):t}))}export function convertSwagger2OpenAPI(e){return e.paths||(e.paths={}),new Promise(((n,o)=>convertObj(e,{patch:!0,warnOnly:!0,text:"{}",anchors:!0},((e,t)=>{if(e)return o(e);n(null==t?void 0:t.openapi)}))))}
1
+ var __awaiter=this&&this.__awaiter||function(e,n,t,o){return new(t||(t=Promise))((function(r,c){function i(e){try{u(o.next(e))}catch(e){c(e)}}function a(e){try{u(o.throw(e))}catch(e){c(e)}}function u(e){var n;e.done?r(e.value):(n=e.value,n instanceof t?n:new t((function(e){e(n)}))).then(i,a)}u((o=o.apply(e,n||[])).next())}))};import{bundle,Config}from"@redocly/openapi-core";import{convertObj}from"swagger2openapi";import{IS_BROWSER}from"@redocly/theme";import{createParsedDocument}from"./createParsedDocument";export function loadAndBundleDefinition(e){return __awaiter(this,void 0,void 0,(function*(){const n=new Config({}),t={config:n,base:IS_BROWSER?window.location.href:process.cwd()};IS_BROWSER&&(n.resolve.http.customFetch=global.fetch),"object"==typeof e&&null!==e?t.doc=createParsedDocument(e):t.ref=e;const{bundle:{parsed:o}}=yield bundle(t);return void 0!==o.swagger?convertSwagger2OpenAPI(o):o}))}export function convertSwagger2OpenAPI(e){return e.paths||(e.paths={}),new Promise(((n,t)=>convertObj(e,{patch:!0,warnOnly:!0,text:"{}",anchors:!0},((e,o)=>{if(e)return t(e);n(null==o?void 0:o.openapi)}))))}
2
2
  //# sourceMappingURL=loadAndBundleSpec.js.map
@@ -1 +1,7 @@
1
- export declare function saveTextBeforeHeading(description: string | GenericObject): any;
1
+ import type { Node } from '@markdoc/markdoc';
2
+ interface DescriptionObject {
3
+ result: string | Node | Node[];
4
+ raw: string;
5
+ }
6
+ export declare function saveTextBeforeHeading(description: string | DescriptionObject): string | DescriptionObject;
7
+ export {};
@@ -1,2 +1,2 @@
1
- import{Ast}from"@markdoc/markdoc";import{isString}from"@redocly/theme";import{deepClone}from"../services/utils";export function saveTextBeforeHeading(e){if(!isString(e)&&(null==e?void 0:e.result)){const r=deepClone(e),i=Ast.fromJSON(JSON.stringify(null==r?void 0:r.result));if(Array.isArray(i))for(const e of i)modifyNodeByHeading(e);else modifyNodeByHeading(i);return r.result=JSON.stringify(i),r.raw=saveTextBeforeHeading(r.raw),r}const r=new RegExp("^#{1,6}?\\s+","m"),i=e.search(r);return i>-1?e.substring(0,i):e}function modifyNodeByHeading(e){if(!Array.isArray(e.children))return;const r=e.children.findIndex((e=>"heading"===e.type));return-1===r||(e.children=e.children.slice(0,r)),e}
1
+ import{Ast}from"@markdoc/markdoc";import{isString}from"@redocly/theme";export function saveTextBeforeHeading(r){if(!r)return"";if(!isString(r))return(null==r?void 0:r.result)?{result:modifyNodeByHeading(Ast.fromJSON(JSON.stringify(r.result)))||"",raw:saveTextBeforeHeading(r.raw)}:r;const e=new RegExp("^#{1,6}?\\s+","m"),i=r.search(e);return i>-1?r.substring(0,i):r}function modifyNodeByHeading(r){if(Array.isArray(r)){const e=r.findIndex((r=>"heading"===r.type));return-1===e?r:r.slice(0,e)}if(!r.children||!Array.isArray(r.children))return;const e=r.children.findIndex((r=>"heading"===r.type));return-1===e||(r.children=r.children.slice(0,e)),r}
2
2
  //# sourceMappingURL=saveTextBeforeHeading.js.map
@@ -0,0 +1,2 @@
1
+ import type { Node } from '@markdoc/markdoc';
2
+ export declare const simplifyAstStructure: (ast: Node) => Node | Node[];
@@ -0,0 +1,2 @@
1
+ export const simplifyAstStructure=l=>{var t,o;i(l);for(const o of l.walk())i(o),(null===(t=null==o?void 0:o.children)||void 0===t?void 0:t.length)&&simplifyAstStructure(o);function i(l){(null==l?void 0:l.location)&&delete l.location,void 0===l.tag&&delete l.tag}return"document"===l.type&&(null===(o=null==l?void 0:l.children)||void 0===o?void 0:o.length)?null==l?void 0:l.children:l};
2
+ //# sourceMappingURL=simplifyAstStructure.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@redocly/openapi-docs",
3
- "version": "3.9.0-next.0",
3
+ "version": "3.9.0-next.2",
4
4
  "description": "Redocly OpenAPI Docs",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib-esm/index.js",
@@ -24,7 +24,7 @@
24
24
  },
25
25
  "dependencies": {
26
26
  "@markdoc/markdoc": "0.5.1",
27
- "@redocly/openapi-core": "1.34.1",
27
+ "@redocly/openapi-core": "1.34.2",
28
28
  "deepmerge": "^4.2.2",
29
29
  "dompurify": "3.2.4",
30
30
  "fast-deep-equal": "^3.1.3",
@@ -43,8 +43,8 @@
43
43
  "url-template": "^2.0.8",
44
44
  "util": "~0.12.5",
45
45
  "web-vitals": "3.3.1",
46
- "@redocly/config": "0.23.0",
47
- "@redocly/replay": "0.12.0-next.0"
46
+ "@redocly/replay": "0.12.0-next.2",
47
+ "@redocly/config": "0.24.0"
48
48
  },
49
49
  "devDependencies": {
50
50
  "@shikijs/transformers": "1.24.0",
@@ -66,7 +66,7 @@
66
66
  "css-loader": "6.11.0",
67
67
  "esbuild-loader": "4.2.2",
68
68
  "fork-ts-checker-webpack-plugin": "9.0.2",
69
- "html-webpack-plugin": "4.5.2",
69
+ "html-webpack-plugin": "5.6.0",
70
70
  "jest": "29.5.0",
71
71
  "jest-environment-jsdom": "29.5.0",
72
72
  "jest-styled-components": "7.2.0",
@@ -81,7 +81,7 @@
81
81
  "rimraf": "5.0.7",
82
82
  "shiki": "1.24.4",
83
83
  "string-replace-loader": "3.1.0",
84
- "style-loader": "1.3.0",
84
+ "style-loader": "3.3.4",
85
85
  "styled-components": "5.3.11",
86
86
  "terser": "5.16.3",
87
87
  "ts-jest": "29.1.2",
@@ -92,7 +92,7 @@
92
92
  "webpack": "5.94.0",
93
93
  "webpack-cli": "5.1.4",
94
94
  "webpack-dev-server": "5.1.0",
95
- "@redocly/theme": "0.53.0-next.0"
95
+ "@redocly/theme": "0.53.0-next.2"
96
96
  },
97
97
  "scripts": {
98
98
  "start": "npm run copy-highlight-hook && webpack serve --mode=development --hot",