@powerduck/tree 0.7.20 → 0.7.22
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/README.md +8 -0
- package/dist/adapters/index.cjs +1 -1
- package/dist/adapters/index.js +1 -1
- package/dist/chunk-F5XBVD6Q.js +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.js +1 -1
- package/package.json +2 -3
- package/dist/chunk-FUR7BOZE.js +0 -1
package/README.md
CHANGED
|
@@ -620,3 +620,11 @@ npm run benchmark # Build and compare the old/new sorting comparator
|
|
|
620
620
|
The benchmark reports medians from seven runs over a deterministic shuffled input.
|
|
621
621
|
It measures sorting, traversal, and filtering only, not end-to-end browser latency.
|
|
622
622
|
See [QUALITY.md](./QUALITY.md) for findings, evidence, and remaining limitations.
|
|
623
|
+
|
|
624
|
+
## 0.7.21 — Portable builds
|
|
625
|
+
|
|
626
|
+
The build no longer creates React/React DOM symlinks pointing into a hard-coded developer workspace. React remains a peer dependency supplied by the consuming application.
|
|
627
|
+
|
|
628
|
+
### Extended HTTP methods
|
|
629
|
+
|
|
630
|
+
HTTP operation discovery includes all nine fixed OpenAPI 3.2 methods (including `trace` and `query`) and custom verbs in `additionalOperations`, such as `PROPFIND`, `REPORT`, and `CUSTOM-VERB`. Shared method helpers come from `@powerduck/openapi-parser/methods`; path metadata is not interpreted as an operation. Custom verbs must be valid HTTP tokens. Use OpenAPI 3.2 when declaring QUERY or `additionalOperations`.
|
package/dist/adapters/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var F=Object.defineProperty;var de=Object.getOwnPropertyDescriptor;var ce=Object.getOwnPropertyNames;var ue=Object.prototype.hasOwnProperty;var pe=(e,t)=>{for(var o in t)F(e,o,{get:t[o],enumerable:!0})},me=(e,t,o,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of ce(t))!ue.call(e,n)&&n!==o&&F(e,n,{get:()=>t[n],enumerable:!(r=de(t,n))||r.enumerable});return e};var fe=e=>me(F({},"__esModule",{value:!0}),e);var We={};pe(We,{buildDocTree:()=>se,buildOpenApiTree:()=>V,buildSchemaTree:()=>ne,findSchemaNodeByPath:()=>te,formatSchemaType:()=>re});module.exports=fe(We);function*ge(e,t=1/0){let o=new Set,r=[];for(let n=e.length-1;n>=0;n--)r.push({node:e[n],depth:1});for(;r.length;){let n=r.pop();if(o.has(n.node)||n.depth>t)continue;o.add(n.node),yield n;let d=n.node.children??[];for(let s=d.length-1;s>=0;s--)r.push({node:d[s],parent:n,depth:n.depth+1})}}var le=new Intl.Collator("en-US",{numeric:!0,sensitivity:"base"});function g(e){return[...e].sort((t,o)=>{let r=(t.order??Number.MAX_SAFE_INTEGER)-(o.order??Number.MAX_SAFE_INTEGER);return(Number.isNaN(r)?0:r)||le.compare(t.name,o.name)||t.id.localeCompare(o.id)})}function v(e){return Array.from(ge(e),({node:t,depth:o})=>({node:t,depth:o}))}function J(e,t,o){let r=new Map;for(let c of e)r.has(c.name)?o.push(`Duplicate tag "${c.name}" was ignored.`):r.set(c.name,c);let n=new Map;for(let c of r.values())c.parent&&!r.has(c.parent)&&o.push(`Tag "${c.name}" references unknown parent "${c.parent}", treating as root.`),n.set(c.name,c.parent&&r.has(c.parent)?c.parent:null);let d=new Set;for(let c of r.keys()){let p=new Set,i=c;for(;i!==null&&!d.has(i);){if(p.has(i)){o.push(`Circular tag reference detected at "${i}". Breaking cycle.`),n.set(i,null);break}p.add(i),i=n.get(i)??null}for(let u of p)d.add(u)}let s=new Map(Array.from(r,([c,p])=>[c,t(p)])),a=[];for(let[c,p]of s){let i=n.get(c);if(i==null)a.push(p);else{let u=s.get(i);(u.children??(u.children=[])).push(p)}}for(let c of s.values())c.children&&(c.children=g(c.children));return g(a)}var z=["get","put","post","delete","options","head","patch","trace"],he={showInternal:!1,showComponents:!0,showWebhooks:!0,defaultExpandDepth:2};function y(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)?e:null}function w(e){return typeof e=="string"&&e.trim().length>0?e.trim():void 0}function Te(e){return typeof e=="number"&&Number.isFinite(e)?e:void 0}function P(e){return typeof e=="boolean"?e:void 0}function $(e){return Array.isArray(e)?e:void 0}function C(e,t){return t?!1:P(e["x-scalar-ignore"])===!0||P(e["x-internal"])===!0}function A(e){return Te(e["x-order"])}function Ne(e){return w(e["x-displayName"])}function ye(e){let t=y(e.paths);if(!t)return[];let o=[];for(let[r,n]of Object.entries(t)){let d=y(n);if(d)for(let s of z){let a=d[s];if(a==null)continue;let c=y(a);if(!c)continue;let p=w(c.operationId),i=w(c.summary),u=$(c.tags)?.filter(l=>typeof l=="string").map(l=>l.trim()).filter(l=>l.length>0)??[],m=i??p??`${s.toUpperCase()} ${r}`,f=p??`${s}:${r}`,T=`/paths/${encodeURIComponent(r)}/${s}`;o.push({id:f,path:r,method:s,name:m,summary:i,operationId:p,deprecated:P(c.deprecated)===!0,tags:u,pointer:T,raw:c})}}return o}function Oe(e){let t=$(e.tags);if(!t)return[];let o=[];for(let r of t){let n=y(r),d=w(n?.name);!d||!n||o.push({name:d,displayName:Ne(n)??d,description:w(n.description),parent:w(n.parent),order:A(n),raw:n})}return o}function be(e){return e.some(t=>t.parent!==void 0)}function U(e){return{id:`op:root:${e.id}`,name:e.name,order:A(e.raw),metadata:{method:e.method,path:e.path,operationId:e.operationId,deprecated:e.deprecated,summary:e.summary,pointer:e.pointer,source:"fallback",kind:"operation"}}}function we(e,t,o,r){let n=new Map,d=[];for(let i of t)if(!C(i.raw,o.showInternal)){if(i.tags.length===0){d.push(i);continue}for(let u of i.tags){let m=n.get(u)??[];m.push(i),n.set(u,m)}}let s=i=>{let m=(n.get(i.name)??[]).map(f=>({id:`op:${i.name}:${f.id}`,name:f.name,order:A(f.raw),metadata:{method:f.method,path:f.path,operationId:f.operationId,deprecated:f.deprecated,summary:f.summary,pointer:f.pointer,source:"oas32-parent",kind:"operation"}}));return{id:`tag:${i.name}`,name:i.displayName,order:i.order,children:g(m),metadata:{source:"oas32-parent",kind:"tag"}}},a=new Set(e.map(i=>i.name)),c=[...e];for(let i of n.keys())a.has(i)||c.push({name:i,displayName:i,raw:{}});let p=J(c,s,r);return g([...p,...d.map(U)])}function ke(e){let t=$(e["x-tagGroups"]);if(!t)return[];let o=(r,n)=>{let d=y(r),s=w(d?.name),a=$(d?.tags)?.filter(p=>typeof p=="string").map(p=>p.trim()).filter(p=>p.length>0)??[];if(!s)return null;let c=$(d?.groups)?.map((p,i)=>o(p,i)).filter(p=>p!==null)??[];return{name:s,tags:a,groups:c.length>0?c:void 0,order:A(d??{})??n}};return t.map((r,n)=>o(r,n)).filter(r=>r!==null)}function De(e,t,o,r){let n=new Map;for(let i of t)n.set(i.name,i.displayName);let d=new Map,s=[];for(let i of o)if(!C(i.raw,r.showInternal)){if(i.tags.length===0){s.push(i);continue}for(let u of i.tags){let m=d.get(u)??[];m.push(i),d.set(u,m)}}let a=i=>(d.get(i)??[]).map(m=>({id:`op:${i}:${m.id}`,name:m.name,order:A(m.raw),metadata:{method:m.method,path:m.path,operationId:m.operationId,deprecated:m.deprecated,summary:m.summary,pointer:m.pointer,source:"tag-group",kind:"operation"}})),c=i=>({id:`tag:${i}`,name:n.get(i)??i,children:g(a(i)),metadata:{source:"tag-group",kind:"tag"}}),p=i=>{let u=[];for(let m of i.tags)d.get(m)?.length&&u.push(c(m));for(let m of i.groups??[])u.push(p(m));return{id:`tag-group:${i.name}`,name:i.name,order:i.order,children:g(u),metadata:{source:"tag-group",kind:"tag-group"}}};return g([...e.map(p),...s.map(U)])}function Ae(e,t,o){let r=new Map,n=[],d=new Map;for(let u=0;u<e.length;u+=1){let m=e[u];d.set(m.name,m.order??u)}for(let u of t)if(!C(u.raw,o.showInternal)){if(u.tags.length===0){n.push(u);continue}for(let m of u.tags){let f=r.get(m)??[];f.push(u),r.set(m,f)}}let s=new Map;for(let u of e)s.set(u.name,u.displayName);let a=(u,m)=>{let T=(r.get(u)??[]).map(l=>({id:`op:${u}:${l.id}`,name:l.name,order:A(l.raw),metadata:{method:l.method,path:l.path,operationId:l.operationId,deprecated:l.deprecated,summary:l.summary,pointer:l.pointer,source:"tag",kind:"operation"}}));return{id:`tag:${u}`,name:s.get(u)??u,order:d.get(u)??m,children:g(T),metadata:{source:"tag",kind:"tag"}}},c=[],p=new Set;e.forEach((u,m)=>{p.add(u.name),c.push(a(u.name,m))});let i=e.length;for(let u of r.keys())p.has(u)||(c.push(a(u,i)),i+=1);return g([...c,...n.map(U)])}function Re(e,t){if(!t.showComponents)return;let o=y(e.components),r=y(o?.schemas);if(!r)return;let n=[];for(let[d,s]of Object.entries(r)){let a=y(s);!a||C(a,t.showInternal)||n.push({id:`schema:${d}`,name:d,order:A(a),metadata:{pointer:`/components/schemas/${encodeURIComponent(d)}`,source:"tag",kind:"schema"}})}if(n.length!==0)return{id:"section:components",name:"Components",order:Number.MAX_SAFE_INTEGER-1,children:g(n),metadata:{source:"section",kind:"section",section:"components"}}}function Se(e,t){if(!t.showWebhooks)return;let o=y(e.webhooks);if(!o)return;let r=[];for(let[n,d]of Object.entries(o)){let s=y(d);if(s)for(let a of z){let c=s[a],p=y(c);if(!p||C(p,t.showInternal))continue;let i=w(p.operationId),u=w(p.summary),m=u??i??`${a.toUpperCase()} ${n}`;r.push({id:`webhook:${n}:${a}`,name:m,order:A(p),metadata:{method:a,path:n,operationId:i,deprecated:P(p.deprecated)===!0,summary:u,pointer:`/webhooks/${encodeURIComponent(n)}/${a}`,source:"tag",kind:"webhook"}})}}if(r.length!==0)return{id:"section:webhooks",name:"Webhooks",order:Number.MAX_SAFE_INTEGER-2,children:g(r),metadata:{source:"section",kind:"section",section:"webhooks"}}}function V(e,t={}){let o={...he,...t},r=[],n=y(e);if(!n)return{root:{id:"root",name:"OpenAPI",children:[],metadata:{kind:"root"}},warnings:["Document is null or not an object."]};let d=ye(n),s=Oe(n),a;if(be(s))a=we(s,d,o,r);else{let m=ke(n);m.length>0?a=De(m,s,d,o):a=Ae(s,d,o)}let c=Se(n,o),p=Re(n,o),u=[{id:"section:apis",name:"APIs",children:a,metadata:{kind:"section",source:"section",section:"apis"},order:0},...c?[c]:[],...p?[p]:[]];return{root:{id:"root",name:"OpenAPI",children:g(u),metadata:{kind:"root"}},warnings:r}}var Y={openapi:0,info:1,servers:2,paths:3,webhooks:4,components:5,security:6,tags:7,externalDocs:8,jsonSchemaDialect:9},j={maxDepth:8,maxNodes:1e4,showDeprecated:!0,expandCombinators:!0,showArrayItems:!0},Q=new Set(["string","number","integer","boolean","null"]);function M(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)?e:null}function L(e){return typeof e=="string"&&e.trim().length>0?e.trim():void 0}function Z(e){return typeof e=="boolean"?e:void 0}function K(e){return Array.isArray(e)?e:void 0}function Ie(e){let t=e.type;if(typeof t=="string"||Array.isArray(t)&&t.every(o=>typeof o=="string"))return t}function xe(e){return e?Array.isArray(e)?e.every(t=>Q.has(t)):Q.has(e):!1}function $e(e){if(!e)return"unknown";switch(Array.isArray(e)?e[0]:e){case"object":return"object";case"array":return"array";case"string":return"string";case"number":return"number";case"integer":return"integer";case"boolean":return"boolean";case"null":return"null";default:return"unknown"}}function ee(e){return e?Array.isArray(e)?e.join(" | "):e:"any"}function S(e){return e.map(t=>t.replace(/[\\.\[\]]/g,o=>`\\${o}`)).join(".")||"root"}function B(e,t,o,r,n,d){n.remaining--;let s=Ie(t),a=L(t.format),c=L(t.description),p=Z(t.deprecated)===!0,i=$e(s),u={jsonPath:o,type:s,format:a,required:d,deprecated:p,description:c,kind:i},m=L(t.$ref);if(m){if(n.refStack.has(m))return n.warnings.push(`Circular $ref detected at ${o.join(".")}: ${m}. Breaking recursion.`),{id:S(o),name:e,metadata:{...u,kind:"ref",isLeaf:!0}};n.refStack.add(m)}let f,T=xe(s),l=n.activeSchemas.has(t);if(l&&n.warnings.push(`Circular schema object detected at ${S(o)}.`),l||r>=n.options.maxDepth||n.remaining<=0)return m&&n.refStack.delete(m),{id:S(o),name:e,metadata:{...u,isLeaf:!0}};n.activeSchemas.add(t);let k=M(t.properties);if(k){let R=K(t.required)??[],O=new Set(R.filter(b=>typeof b=="string")),q=[];for(let[b,I]of Object.entries(k)){if(n.remaining<=0)break;let x=M(I);x&&(!n.options.showDeprecated&&Z(x.deprecated)===!0||q.push(B(b,x,[...o,"properties",b],r+1,n,O.has(b))))}f=[...f??[],...g(q)],T=!1}if(n.remaining>0&&n.options.showArrayItems&&s==="array"){let R=M(t.items);if(R){let O=B("items",R,[...o,"items"],r+1,n,!1);f=[...f??[],O],T=!1}else u.hasItems=!1}if(n.options.expandCombinators){let R=[{key:"allOf",kind:"allOf"},{key:"anyOf",kind:"anyOf"},{key:"oneOf",kind:"oneOf"}];for(let{key:O,kind:q}of R){if(n.remaining<=0)break;let b=K(t[O]);if(!b?.length)continue;n.remaining--;let I=[];for(let D=0;D<b.length&&n.remaining>0;D++){let ae=b[D],X=M(ae);if(!X){n.remaining--,I.push({id:S([...o,O,String(D)]),name:`[${D}]`,metadata:{jsonPath:[...o,O,String(D)],kind:"unknown",isLeaf:!0}});continue}I.push(B(`[${D}]`,X,[...o,O,String(D)],r+1,n,!1))}let x={id:S([...o,O]),name:O,children:g(I),metadata:{jsonPath:[...o,O],kind:q}};f=[...f??[],x],T=!1}}return K(t.enum)?.length&&!f?.length&&(u.kind="enum",T=!0),m&&n.refStack.delete(m),n.activeSchemas.delete(t),{id:S(o),name:e,order:Object.prototype.hasOwnProperty.call(Y,e)?Y[e]:void 0,metadata:{...u,isLeaf:T},children:f}}function ne(e,t={}){let o={...j,...t};o.maxDepth=Number.isFinite(o.maxDepth)?Math.min(128,Math.max(0,Math.trunc(o.maxDepth))):j.maxDepth,o.maxNodes=Number.isFinite(o.maxNodes)?Math.min(1e5,Math.max(1,Math.trunc(o.maxNodes))):j.maxNodes;let r=[],n=M(e);if(!n)return{root:{id:"root",name:"Schema",metadata:{jsonPath:[],kind:"root",isLeaf:!0}},warnings:["Schema is null or not an object."]};let d={options:o,warnings:r,refStack:new Set,activeSchemas:new Set,remaining:o.maxNodes},s=B("root",n,[],0,d,!0);return d.remaining<=0&&r.push(`Schema node limit (${o.maxNodes}) reached; remaining branches were omitted.`),{root:s,warnings:r}}function te(e,t){if(t.length===0)return e;let o=JSON.stringify(t),r=[e],n=new Set;for(let d=0;d<r.length;d++){let s=r[d];if(!s||n.has(s))continue;if(n.add(s),JSON.stringify(s.metadata?.jsonPath)===o)return s;for(let c of s.children??[])r.push(c)}}function re(e){return e.kind==="enum"?"enum":e.kind==="ref"?"$ref":e.format?`${ee(e.type)} (${e.format})`:ee(e.type)}var Ce=["get","put","post","delete","options","head","patch","trace"],Me={showInternal:!1,showComponents:!1,showWebhooks:!0,expandOperationDetails:!1};function h(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)?e:null}function N(e){return typeof e=="string"&&e.trim().length>0?e.trim():void 0}function E(e){return typeof e=="boolean"?e:void 0}function H(e){return Array.isArray(e)?e:void 0}function _(e,t){return t?!1:E(e["x-scalar-ignore"])===!0||E(e["x-internal"])===!0}function W(e){let t=e["x-order"];return typeof t=="number"&&Number.isFinite(t)?t:void 0}function Ee(e){return N(e["x-displayName"])}function Ge(e,t){let o=[];for(let r of e){let n=h(r);if(!n)continue;let d=N(n.name),s=N(n.in);if(!d||!s)continue;let a=`${s}:${d}`;o.push({id:`${t}/parameters/${encodeURIComponent(a)}`,name:d,metadata:{paramIn:s,required:E(n.required)===!0,description:N(n.description),pointer:`${t}/parameters`,kind:"parameter"}})}return g(o)}function qe(e,t){let o=[];for(let[r,n]of Object.entries(e)){let d=h(n);if(!d)continue;let s=N(d.description),a=h(d.content),c=[];if(a)for(let[p]of Object.entries(a))c.push({id:`${t}/responses/${encodeURIComponent(r)}/content/${encodeURIComponent(p)}`,name:p,metadata:{contentType:p,pointer:`${t}/responses/${encodeURIComponent(r)}/content/${encodeURIComponent(p)}`,kind:"content"}});o.push({id:`${t}/responses/${encodeURIComponent(r)}`,name:r,metadata:{statusCode:r,description:s,pointer:`${t}/responses/${encodeURIComponent(r)}`,kind:"response"},children:c.length>0?c:void 0})}return g(o)}function Je(e,t){let o=[],r=H(e.parameters);if(r?.length){let s=Ge(r,t);s.length>0&&o.push({id:`${t}/parameters`,name:"Parameters",children:s,metadata:{pointer:`${t}/parameters`,kind:"parameters"}})}let n=h(e.requestBody);if(n){let s=h(n.content),a=[];if(s)for(let[c]of Object.entries(s))a.push({id:`${t}/requestBody/content/${encodeURIComponent(c)}`,name:c,metadata:{contentType:c,pointer:`${t}/requestBody/content/${encodeURIComponent(c)}`,kind:"content"}});o.push({id:`${t}/requestBody`,name:"Request Body",metadata:{description:N(n.description),required:E(n.required)===!0,pointer:`${t}/requestBody`,kind:"request-body"},children:a.length>0?a:void 0})}let d=h(e.responses);if(d){let s=qe(d,t);s.length>0&&o.push({id:`${t}/responses`,name:"Responses",children:s,metadata:{pointer:`${t}/responses`,kind:"responses"}})}return o}function Pe(e){let t=h(e.paths);if(!t)return[];let o=[];for(let[r,n]of Object.entries(t)){let d=h(n);if(d)for(let s of Ce){let a=d[s],c=h(a);if(!c)continue;let p=N(c.operationId),i=N(c.summary),u=N(c.description),m=H(c.tags)?.filter(k=>typeof k=="string").map(k=>k.trim()).filter(k=>k.length>0)??[],f=i??p??`${s.toUpperCase()} ${r}`,T=p??`${s}:${r}`,l=`/paths/${encodeURIComponent(r)}/${s}`;o.push({id:T,path:r,method:s,name:f,summary:i,description:u,operationId:p,deprecated:E(c.deprecated)===!0,tags:m,pointer:l,raw:c})}}return o}function Be(e){let t=H(e.tags);if(!t)return[];let o=[];for(let r of t){let n=h(r),d=N(n?.name);!d||!n||o.push({name:d,displayName:Ee(n)??d,description:N(n.description),parent:N(n.parent),order:W(n)})}return o}function _e(e){return e.some(t=>t.parent!==void 0)}function G(e,t,o,r){let n=t.expandOperationDetails?Je(e.raw,e.pointer):void 0;return{id:`op:${r}:${e.id}`,name:e.name,order:W(e.raw),metadata:{method:e.method,path:e.path,operationId:e.operationId,deprecated:e.deprecated,summary:e.summary,description:e.description,pointer:e.pointer,source:o,kind:"operation"},children:n&&n.length>0?n:void 0}}function Fe(e,t,o,r){let n=new Map;for(let i of t){if(_(i.raw,o.showInternal))continue;let u=i.tags.length>0?i.tags:["Other"];for(let m of u){let f=n.get(m)??[];f.push(i),n.set(m,f)}}let d=i=>{let m=(n.get(i.name)??[]).map(f=>G(f,o,"oas32-parent",i.name));return{id:`tag:${i.name}`,name:i.displayName,order:i.order,children:g(m),metadata:{description:i.description,source:"oas32-parent",kind:"tag"}}},s=new Set(e.map(i=>i.name)),a=[...e];for(let i of n.keys())i!=="Other"&&!s.has(i)&&a.push({name:i,displayName:i});let c=J(a,d,r),p=n.get("Other")??[];if(p.length>0&&!e.some(i=>i.name==="Other")){let i=p.map(u=>G(u,o,"fallback","Other"));c.push({id:"tag:Other",name:"Other",order:Number.MAX_SAFE_INTEGER,children:g(i),metadata:{source:"fallback",kind:"tag"}})}return g(c)}function Ue(e,t,o){let r=new Map,n=new Map;for(let a=0;a<e.length;a+=1)n.set(e[a].name,a);for(let a of t){if(_(a.raw,o.showInternal))continue;let c=a.tags.length>0?a.tags:["Other"];for(let p of c){let i=r.get(p)??[];i.push(a),r.set(p,i)}}let d=new Map;for(let a of e)d.set(a.name,a.displayName);let s=[];for(let[a,c]of r){let p=c.map(i=>G(i,o,"tag",a));s.push({id:`tag:${a}`,name:d.get(a)??a,order:a==="Other"?Number.MAX_SAFE_INTEGER:n.get(a),children:g(p),metadata:{source:"tag",kind:"tag"}})}return g(s)}function je(e){return Array.isArray(e["x-tagGroups"])&&e["x-tagGroups"].length>0}function oe(e,t,o=0,r={active:new Set,remaining:1e4,warned:!1}){if(!Array.isArray(e))return[];if(o>=128||r.active.has(e))return t.push("Nested tag groups were truncated at a cycle or the 128-level limit."),[];r.active.add(e);let n=[];for(let d of e){if(r.remaining<=0){r.warned||t.push("Tag group limit (10,000) reached; remaining groups were omitted."),r.warned=!0;break}let s=h(d);if(!s||typeof s.name!="string")continue;r.remaining--;let a={name:s.name};Array.isArray(s.tags)&&(a.tags=s.tags.filter(c=>typeof c=="string")),Array.isArray(s.groups)&&(a.groups=oe(s.groups,t,o+1,r)),n.push(a)}return r.active.delete(e),n}function ie(e,t,o,r,n,d=0){let s=[];if(e.tags)for(let a of e.tags){let c=t.get(a);if(!c||c.length===0)continue;let p=c.map(i=>G(i,n,"tag-group",a));s.push({id:`tag:${a}`,name:o.get(a)??a,order:r.get(a),children:g(p),metadata:{source:"tag-group",kind:"tag"}})}if(e.groups)for(let a of e.groups)s.push(ie(a,t,o,r,n,d+1));return{id:`tag-group:${e.name}`,name:e.name,order:d*1e3,children:g(s),metadata:{source:"tag-group",kind:"tag-group"}}}function Le(e,t,o,r,n){let d=new Map,s=new Map,a=new Map;for(let u=0;u<t.length;u+=1)s.set(t[u].name,u),a.set(t[u].name,t[u].displayName);for(let u of o){if(_(u.raw,r.showInternal))continue;let m=u.tags.length>0?u.tags:["Other"];for(let f of m){let T=d.get(f)??[];T.push(u),d.set(f,T)}}let p=oe(e["x-tagGroups"],n).map(u=>ie(u,d,a,s,r)),i=d.get("Other");if(i&&i.length>0){let u=i.map(m=>G(m,r,"fallback","Other"));p.push({id:"tag:Other",name:"Other",order:Number.MAX_SAFE_INTEGER,children:g(u),metadata:{source:"fallback",kind:"tag"}})}return g(p)}function Ke(e,t){if(!t.showComponents)return;let o=h(e.components),r=h(o?.schemas);if(!r)return;let n=[];for(let[d,s]of Object.entries(r)){let a=h(s);!a||_(a,t.showInternal)||n.push({id:`schema:${d}`,name:d,order:W(a),metadata:{description:N(a.description),pointer:`/components/schemas/${encodeURIComponent(d)}`,source:"tag",kind:"schema"}})}if(n.length!==0)return{id:"section:components",name:"Components",order:Number.MAX_SAFE_INTEGER-1,children:g(n),metadata:{source:"tag",kind:"component"}}}function He(e){let t=new Map,o=v(e);for(let r=o.length-1;r>=0;r--){let n=o[r].node,d=n.children?.map(a=>t.get(a)).filter(Boolean),s=(n.metadata?.kind==="operation"?1:0)+(d?.reduce((a,c)=>a+(c.metadata?.operationCount??0),0)??0);t.set(n,{...n,children:d,metadata:{...n.metadata,operationCount:s}})}return e.map(r=>t.get(r))}function se(e,t={}){let o={...Me,...t},r=[],n=h(e);if(!n)return{root:{id:"root",name:"API Documentation",children:[],metadata:{kind:"root"}},warnings:["Document is null or not an object."]};let d=Pe(n),s=Be(n),a;_e(s)?a=Fe(s,d,o,r):je(n)?a=Le(n,s,d,o,r):a=Ue(s,d,o);let c=Ke(n,o),p=He([...a,...c?[c]:[]]);return{root:{id:"root",name:"API Documentation",children:g(p),metadata:{kind:"root"}},warnings:r}}0&&(module.exports={buildDocTree,buildOpenApiTree,buildSchemaTree,findSchemaNodeByPath,formatSchemaType});
|
|
1
|
+
"use strict";var j=Object.defineProperty;var ce=Object.getOwnPropertyDescriptor;var ue=Object.getOwnPropertyNames;var pe=Object.prototype.hasOwnProperty;var me=(e,t)=>{for(var o in t)j(e,o,{get:t[o],enumerable:!0})},fe=(e,t,o,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of ue(t))!pe.call(e,n)&&n!==o&&j(e,n,{get:()=>t[n],enumerable:!(r=ce(t,n))||r.enumerable});return e};var ge=e=>fe(j({},"__esModule",{value:!0}),e);var Xe={};me(Xe,{buildDocTree:()=>ae,buildOpenApiTree:()=>Y,buildSchemaTree:()=>te,findSchemaNodeByPath:()=>re,formatSchemaType:()=>oe});module.exports=ge(Xe);var S=require("@powerduck/openapi-parser/methods");function*le(e,t=1/0){let o=new Set,r=[];for(let n=e.length-1;n>=0;n--)r.push({node:e[n],depth:1});for(;r.length;){let n=r.pop();if(o.has(n.node)||n.depth>t)continue;o.add(n.node),yield n;let d=n.node.children??[];for(let s=d.length-1;s>=0;s--)r.push({node:d[s],parent:n,depth:n.depth+1})}}var he=new Intl.Collator("en-US",{numeric:!0,sensitivity:"base"});function g(e){return[...e].sort((t,o)=>{let r=(t.order??Number.MAX_SAFE_INTEGER)-(o.order??Number.MAX_SAFE_INTEGER);return(Number.isNaN(r)?0:r)||he.compare(t.name,o.name)||t.id.localeCompare(o.id)})}function V(e){return Array.from(le(e),({node:t,depth:o})=>({node:t,depth:o}))}function P(e,t,o){let r=new Map;for(let c of e)r.has(c.name)?o.push(`Duplicate tag "${c.name}" was ignored.`):r.set(c.name,c);let n=new Map;for(let c of r.values())c.parent&&!r.has(c.parent)&&o.push(`Tag "${c.name}" references unknown parent "${c.parent}", treating as root.`),n.set(c.name,c.parent&&r.has(c.parent)?c.parent:null);let d=new Set;for(let c of r.keys()){let p=new Set,i=c;for(;i!==null&&!d.has(i);){if(p.has(i)){o.push(`Circular tag reference detected at "${i}". Breaking cycle.`),n.set(i,null);break}p.add(i),i=n.get(i)??null}for(let u of p)d.add(u)}let s=new Map(Array.from(r,([c,p])=>[c,t(p)])),a=[];for(let[c,p]of s){let i=n.get(c);if(i==null)a.push(p);else{let u=s.get(i);(u.children??(u.children=[])).push(p)}}for(let c of s.values())c.children&&(c.children=g(c.children));return g(a)}var Te={showInternal:!1,showComponents:!0,showWebhooks:!0,defaultExpandDepth:2};function y(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)?e:null}function w(e){return typeof e=="string"&&e.trim().length>0?e.trim():void 0}function Ne(e){return typeof e=="number"&&Number.isFinite(e)?e:void 0}function B(e){return typeof e=="boolean"?e:void 0}function C(e){return Array.isArray(e)?e:void 0}function M(e,t){return t?!1:B(e["x-scalar-ignore"])===!0||B(e["x-internal"])===!0}function R(e){return Ne(e["x-order"])}function ye(e){return w(e["x-displayName"])}function Oe(e){let t=y(e.paths);if(!t)return[];let o=[];for(let[r,n]of Object.entries(t)){let d=y(n);if(d)for(let[s,a]of(0,S.operationEntries)(d)){if(a==null)continue;let c=y(a);if(!c)continue;let p=w(c.operationId),i=w(c.summary),u=C(c.tags)?.filter(l=>typeof l=="string").map(l=>l.trim()).filter(l=>l.length>0)??[],m=i??p??`${s.toUpperCase()} ${r}`,f=p??`${s}:${r}`,T=`/paths/${encodeURIComponent(r)}/${(0,S.operationPath)(s,d).map(encodeURIComponent).join("/")}`;o.push({id:f,path:r,method:s,name:m,summary:i,operationId:p,deprecated:B(c.deprecated)===!0,tags:u,pointer:T,raw:c})}}return o}function be(e){let t=C(e.tags);if(!t)return[];let o=[];for(let r of t){let n=y(r),d=w(n?.name);!d||!n||o.push({name:d,displayName:ye(n)??d,description:w(n.description),parent:w(n.parent),order:R(n),raw:n})}return o}function we(e){return e.some(t=>t.parent!==void 0)}function L(e){return{id:`op:root:${e.id}`,name:e.name,order:R(e.raw),metadata:{method:e.method,path:e.path,operationId:e.operationId,deprecated:e.deprecated,summary:e.summary,pointer:e.pointer,source:"fallback",kind:"operation"}}}function ke(e,t,o,r){let n=new Map,d=[];for(let i of t)if(!M(i.raw,o.showInternal)){if(i.tags.length===0){d.push(i);continue}for(let u of i.tags){let m=n.get(u)??[];m.push(i),n.set(u,m)}}let s=i=>{let m=(n.get(i.name)??[]).map(f=>({id:`op:${i.name}:${f.id}`,name:f.name,order:R(f.raw),metadata:{method:f.method,path:f.path,operationId:f.operationId,deprecated:f.deprecated,summary:f.summary,pointer:f.pointer,source:"oas32-parent",kind:"operation"}}));return{id:`tag:${i.name}`,name:i.displayName,order:i.order,children:g(m),metadata:{source:"oas32-parent",kind:"tag"}}},a=new Set(e.map(i=>i.name)),c=[...e];for(let i of n.keys())a.has(i)||c.push({name:i,displayName:i,raw:{}});let p=P(c,s,r);return g([...p,...d.map(L)])}function De(e){let t=C(e["x-tagGroups"]);if(!t)return[];let o=(r,n)=>{let d=y(r),s=w(d?.name),a=C(d?.tags)?.filter(p=>typeof p=="string").map(p=>p.trim()).filter(p=>p.length>0)??[];if(!s)return null;let c=C(d?.groups)?.map((p,i)=>o(p,i)).filter(p=>p!==null)??[];return{name:s,tags:a,groups:c.length>0?c:void 0,order:R(d??{})??n}};return t.map((r,n)=>o(r,n)).filter(r=>r!==null)}function Re(e,t,o,r){let n=new Map;for(let i of t)n.set(i.name,i.displayName);let d=new Map,s=[];for(let i of o)if(!M(i.raw,r.showInternal)){if(i.tags.length===0){s.push(i);continue}for(let u of i.tags){let m=d.get(u)??[];m.push(i),d.set(u,m)}}let a=i=>(d.get(i)??[]).map(m=>({id:`op:${i}:${m.id}`,name:m.name,order:R(m.raw),metadata:{method:m.method,path:m.path,operationId:m.operationId,deprecated:m.deprecated,summary:m.summary,pointer:m.pointer,source:"tag-group",kind:"operation"}})),c=i=>({id:`tag:${i}`,name:n.get(i)??i,children:g(a(i)),metadata:{source:"tag-group",kind:"tag"}}),p=i=>{let u=[];for(let m of i.tags)d.get(m)?.length&&u.push(c(m));for(let m of i.groups??[])u.push(p(m));return{id:`tag-group:${i.name}`,name:i.name,order:i.order,children:g(u),metadata:{source:"tag-group",kind:"tag-group"}}};return g([...e.map(p),...s.map(L)])}function Ae(e,t,o){let r=new Map,n=[],d=new Map;for(let u=0;u<e.length;u+=1){let m=e[u];d.set(m.name,m.order??u)}for(let u of t)if(!M(u.raw,o.showInternal)){if(u.tags.length===0){n.push(u);continue}for(let m of u.tags){let f=r.get(m)??[];f.push(u),r.set(m,f)}}let s=new Map;for(let u of e)s.set(u.name,u.displayName);let a=(u,m)=>{let T=(r.get(u)??[]).map(l=>({id:`op:${u}:${l.id}`,name:l.name,order:R(l.raw),metadata:{method:l.method,path:l.path,operationId:l.operationId,deprecated:l.deprecated,summary:l.summary,pointer:l.pointer,source:"tag",kind:"operation"}}));return{id:`tag:${u}`,name:s.get(u)??u,order:d.get(u)??m,children:g(T),metadata:{source:"tag",kind:"tag"}}},c=[],p=new Set;e.forEach((u,m)=>{p.add(u.name),c.push(a(u.name,m))});let i=e.length;for(let u of r.keys())p.has(u)||(c.push(a(u,i)),i+=1);return g([...c,...n.map(L)])}function Se(e,t){if(!t.showComponents)return;let o=y(e.components),r=y(o?.schemas);if(!r)return;let n=[];for(let[d,s]of Object.entries(r)){let a=y(s);!a||M(a,t.showInternal)||n.push({id:`schema:${d}`,name:d,order:R(a),metadata:{pointer:`/components/schemas/${encodeURIComponent(d)}`,source:"tag",kind:"schema"}})}if(n.length!==0)return{id:"section:components",name:"Components",order:Number.MAX_SAFE_INTEGER-1,children:g(n),metadata:{source:"section",kind:"section",section:"components"}}}function Ie(e,t){if(!t.showWebhooks)return;let o=y(e.webhooks);if(!o)return;let r=[];for(let[n,d]of Object.entries(o)){let s=y(d);if(s)for(let[a,c]of(0,S.operationEntries)(s)){let p=y(c);if(!p||M(p,t.showInternal))continue;let i=w(p.operationId),u=w(p.summary),m=u??i??`${a.toUpperCase()} ${n}`;r.push({id:`webhook:${n}:${a}`,name:m,order:R(p),metadata:{method:a,path:n,operationId:i,deprecated:B(p.deprecated)===!0,summary:u,pointer:`/webhooks/${encodeURIComponent(n)}/${(0,S.operationPath)(a,s).map(encodeURIComponent).join("/")}`,source:"tag",kind:"webhook"}})}}if(r.length!==0)return{id:"section:webhooks",name:"Webhooks",order:Number.MAX_SAFE_INTEGER-2,children:g(r),metadata:{source:"section",kind:"section",section:"webhooks"}}}function Y(e,t={}){let o={...Te,...t},r=[],n=y(e);if(!n)return{root:{id:"root",name:"OpenAPI",children:[],metadata:{kind:"root"}},warnings:["Document is null or not an object."]};let d=Oe(n),s=be(n),a;if(we(s))a=ke(s,d,o,r);else{let m=De(n);m.length>0?a=Re(m,s,d,o):a=Ae(s,d,o)}let c=Ie(n,o),p=Se(n,o),u=[{id:"section:apis",name:"APIs",children:a,metadata:{kind:"section",source:"section",section:"apis"},order:0},...c?[c]:[],...p?[p]:[]];return{root:{id:"root",name:"OpenAPI",children:g(u),metadata:{kind:"root"}},warnings:r}}var Q={openapi:0,info:1,servers:2,paths:3,webhooks:4,components:5,security:6,tags:7,externalDocs:8,jsonSchemaDialect:9},K={maxDepth:8,maxNodes:1e4,showDeprecated:!0,expandCombinators:!0,showArrayItems:!0},Z=new Set(["string","number","integer","boolean","null"]);function E(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)?e:null}function W(e){return typeof e=="string"&&e.trim().length>0?e.trim():void 0}function ee(e){return typeof e=="boolean"?e:void 0}function X(e){return Array.isArray(e)?e:void 0}function xe(e){let t=e.type;if(typeof t=="string"||Array.isArray(t)&&t.every(o=>typeof o=="string"))return t}function $e(e){return e?Array.isArray(e)?e.every(t=>Z.has(t)):Z.has(e):!1}function Ce(e){if(!e)return"unknown";switch(Array.isArray(e)?e[0]:e){case"object":return"object";case"array":return"array";case"string":return"string";case"number":return"number";case"integer":return"integer";case"boolean":return"boolean";case"null":return"null";default:return"unknown"}}function ne(e){return e?Array.isArray(e)?e.join(" | "):e:"any"}function I(e){return e.map(t=>t.replace(/[\\.\[\]]/g,o=>`\\${o}`)).join(".")||"root"}function U(e,t,o,r,n,d){n.remaining--;let s=xe(t),a=W(t.format),c=W(t.description),p=ee(t.deprecated)===!0,i=Ce(s),u={jsonPath:o,type:s,format:a,required:d,deprecated:p,description:c,kind:i},m=W(t.$ref);if(m){if(n.refStack.has(m))return n.warnings.push(`Circular $ref detected at ${o.join(".")}: ${m}. Breaking recursion.`),{id:I(o),name:e,metadata:{...u,kind:"ref",isLeaf:!0}};n.refStack.add(m)}let f,T=$e(s),l=n.activeSchemas.has(t);if(l&&n.warnings.push(`Circular schema object detected at ${I(o)}.`),l||r>=n.options.maxDepth||n.remaining<=0)return m&&n.refStack.delete(m),{id:I(o),name:e,metadata:{...u,isLeaf:!0}};n.activeSchemas.add(t);let k=E(t.properties);if(k){let A=X(t.required)??[],O=new Set(A.filter(b=>typeof b=="string")),J=[];for(let[b,x]of Object.entries(k)){if(n.remaining<=0)break;let $=E(x);$&&(!n.options.showDeprecated&&ee($.deprecated)===!0||J.push(U(b,$,[...o,"properties",b],r+1,n,O.has(b))))}f=[...f??[],...g(J)],T=!1}if(n.remaining>0&&n.options.showArrayItems&&s==="array"){let A=E(t.items);if(A){let O=U("items",A,[...o,"items"],r+1,n,!1);f=[...f??[],O],T=!1}else u.hasItems=!1}if(n.options.expandCombinators){let A=[{key:"allOf",kind:"allOf"},{key:"anyOf",kind:"anyOf"},{key:"oneOf",kind:"oneOf"}];for(let{key:O,kind:J}of A){if(n.remaining<=0)break;let b=X(t[O]);if(!b?.length)continue;n.remaining--;let x=[];for(let D=0;D<b.length&&n.remaining>0;D++){let de=b[D],z=E(de);if(!z){n.remaining--,x.push({id:I([...o,O,String(D)]),name:`[${D}]`,metadata:{jsonPath:[...o,O,String(D)],kind:"unknown",isLeaf:!0}});continue}x.push(U(`[${D}]`,z,[...o,O,String(D)],r+1,n,!1))}let $={id:I([...o,O]),name:O,children:g(x),metadata:{jsonPath:[...o,O],kind:J}};f=[...f??[],$],T=!1}}return X(t.enum)?.length&&!f?.length&&(u.kind="enum",T=!0),m&&n.refStack.delete(m),n.activeSchemas.delete(t),{id:I(o),name:e,order:Object.prototype.hasOwnProperty.call(Q,e)?Q[e]:void 0,metadata:{...u,isLeaf:T},children:f}}function te(e,t={}){let o={...K,...t};o.maxDepth=Number.isFinite(o.maxDepth)?Math.min(128,Math.max(0,Math.trunc(o.maxDepth))):K.maxDepth,o.maxNodes=Number.isFinite(o.maxNodes)?Math.min(1e5,Math.max(1,Math.trunc(o.maxNodes))):K.maxNodes;let r=[],n=E(e);if(!n)return{root:{id:"root",name:"Schema",metadata:{jsonPath:[],kind:"root",isLeaf:!0}},warnings:["Schema is null or not an object."]};let d={options:o,warnings:r,refStack:new Set,activeSchemas:new Set,remaining:o.maxNodes},s=U("root",n,[],0,d,!0);return d.remaining<=0&&r.push(`Schema node limit (${o.maxNodes}) reached; remaining branches were omitted.`),{root:s,warnings:r}}function re(e,t){if(t.length===0)return e;let o=JSON.stringify(t),r=[e],n=new Set;for(let d=0;d<r.length;d++){let s=r[d];if(!s||n.has(s))continue;if(n.add(s),JSON.stringify(s.metadata?.jsonPath)===o)return s;for(let c of s.children??[])r.push(c)}}function oe(e){return e.kind==="enum"?"enum":e.kind==="ref"?"$ref":e.format?`${ne(e.type)} (${e.format})`:ne(e.type)}var F=require("@powerduck/openapi-parser/methods");var Me={showInternal:!1,showComponents:!1,showWebhooks:!0,expandOperationDetails:!1};function h(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)?e:null}function N(e){return typeof e=="string"&&e.trim().length>0?e.trim():void 0}function G(e){return typeof e=="boolean"?e:void 0}function v(e){return Array.isArray(e)?e:void 0}function _(e,t){return t?!1:G(e["x-scalar-ignore"])===!0||G(e["x-internal"])===!0}function H(e){let t=e["x-order"];return typeof t=="number"&&Number.isFinite(t)?t:void 0}function Ee(e){return N(e["x-displayName"])}function Ge(e,t){let o=[];for(let r of e){let n=h(r);if(!n)continue;let d=N(n.name),s=N(n.in);if(!d||!s)continue;let a=`${s}:${d}`;o.push({id:`${t}/parameters/${encodeURIComponent(a)}`,name:d,metadata:{paramIn:s,required:G(n.required)===!0,description:N(n.description),pointer:`${t}/parameters`,kind:"parameter"}})}return g(o)}function qe(e,t){let o=[];for(let[r,n]of Object.entries(e)){let d=h(n);if(!d)continue;let s=N(d.description),a=h(d.content),c=[];if(a)for(let[p]of Object.entries(a))c.push({id:`${t}/responses/${encodeURIComponent(r)}/content/${encodeURIComponent(p)}`,name:p,metadata:{contentType:p,pointer:`${t}/responses/${encodeURIComponent(r)}/content/${encodeURIComponent(p)}`,kind:"content"}});o.push({id:`${t}/responses/${encodeURIComponent(r)}`,name:r,metadata:{statusCode:r,description:s,pointer:`${t}/responses/${encodeURIComponent(r)}`,kind:"response"},children:c.length>0?c:void 0})}return g(o)}function Je(e,t){let o=[],r=v(e.parameters);if(r?.length){let s=Ge(r,t);s.length>0&&o.push({id:`${t}/parameters`,name:"Parameters",children:s,metadata:{pointer:`${t}/parameters`,kind:"parameters"}})}let n=h(e.requestBody);if(n){let s=h(n.content),a=[];if(s)for(let[c]of Object.entries(s))a.push({id:`${t}/requestBody/content/${encodeURIComponent(c)}`,name:c,metadata:{contentType:c,pointer:`${t}/requestBody/content/${encodeURIComponent(c)}`,kind:"content"}});o.push({id:`${t}/requestBody`,name:"Request Body",metadata:{description:N(n.description),required:G(n.required)===!0,pointer:`${t}/requestBody`,kind:"request-body"},children:a.length>0?a:void 0})}let d=h(e.responses);if(d){let s=qe(d,t);s.length>0&&o.push({id:`${t}/responses`,name:"Responses",children:s,metadata:{pointer:`${t}/responses`,kind:"responses"}})}return o}function Pe(e){let t=h(e.paths);if(!t)return[];let o=[];for(let[r,n]of Object.entries(t)){let d=h(n);if(d)for(let[s,a]of(0,F.operationEntries)(d)){let c=h(a);if(!c)continue;let p=N(c.operationId),i=N(c.summary),u=N(c.description),m=v(c.tags)?.filter(k=>typeof k=="string").map(k=>k.trim()).filter(k=>k.length>0)??[],f=i??p??`${s.toUpperCase()} ${r}`,T=p??`${s}:${r}`,l=`/paths/${encodeURIComponent(r)}/${(0,F.operationPath)(s,d).map(encodeURIComponent).join("/")}`;o.push({id:T,path:r,method:s,name:f,summary:i,description:u,operationId:p,deprecated:G(c.deprecated)===!0,tags:m,pointer:l,raw:c})}}return o}function Be(e){let t=v(e.tags);if(!t)return[];let o=[];for(let r of t){let n=h(r),d=N(n?.name);!d||!n||o.push({name:d,displayName:Ee(n)??d,description:N(n.description),parent:N(n.parent),order:H(n)})}return o}function Ue(e){return e.some(t=>t.parent!==void 0)}function q(e,t,o,r){let n=t.expandOperationDetails?Je(e.raw,e.pointer):void 0;return{id:`op:${r}:${e.id}`,name:e.name,order:H(e.raw),metadata:{method:e.method,path:e.path,operationId:e.operationId,deprecated:e.deprecated,summary:e.summary,description:e.description,pointer:e.pointer,source:o,kind:"operation"},children:n&&n.length>0?n:void 0}}function Fe(e,t,o,r){let n=new Map;for(let i of t){if(_(i.raw,o.showInternal))continue;let u=i.tags.length>0?i.tags:["Other"];for(let m of u){let f=n.get(m)??[];f.push(i),n.set(m,f)}}let d=i=>{let m=(n.get(i.name)??[]).map(f=>q(f,o,"oas32-parent",i.name));return{id:`tag:${i.name}`,name:i.displayName,order:i.order,children:g(m),metadata:{description:i.description,source:"oas32-parent",kind:"tag"}}},s=new Set(e.map(i=>i.name)),a=[...e];for(let i of n.keys())i!=="Other"&&!s.has(i)&&a.push({name:i,displayName:i});let c=P(a,d,r),p=n.get("Other")??[];if(p.length>0&&!e.some(i=>i.name==="Other")){let i=p.map(u=>q(u,o,"fallback","Other"));c.push({id:"tag:Other",name:"Other",order:Number.MAX_SAFE_INTEGER,children:g(i),metadata:{source:"fallback",kind:"tag"}})}return g(c)}function _e(e,t,o){let r=new Map,n=new Map;for(let a=0;a<e.length;a+=1)n.set(e[a].name,a);for(let a of t){if(_(a.raw,o.showInternal))continue;let c=a.tags.length>0?a.tags:["Other"];for(let p of c){let i=r.get(p)??[];i.push(a),r.set(p,i)}}let d=new Map;for(let a of e)d.set(a.name,a.displayName);let s=[];for(let[a,c]of r){let p=c.map(i=>q(i,o,"tag",a));s.push({id:`tag:${a}`,name:d.get(a)??a,order:a==="Other"?Number.MAX_SAFE_INTEGER:n.get(a),children:g(p),metadata:{source:"tag",kind:"tag"}})}return g(s)}function je(e){return Array.isArray(e["x-tagGroups"])&&e["x-tagGroups"].length>0}function ie(e,t,o=0,r={active:new Set,remaining:1e4,warned:!1}){if(!Array.isArray(e))return[];if(o>=128||r.active.has(e))return t.push("Nested tag groups were truncated at a cycle or the 128-level limit."),[];r.active.add(e);let n=[];for(let d of e){if(r.remaining<=0){r.warned||t.push("Tag group limit (10,000) reached; remaining groups were omitted."),r.warned=!0;break}let s=h(d);if(!s||typeof s.name!="string")continue;r.remaining--;let a={name:s.name};Array.isArray(s.tags)&&(a.tags=s.tags.filter(c=>typeof c=="string")),Array.isArray(s.groups)&&(a.groups=ie(s.groups,t,o+1,r)),n.push(a)}return r.active.delete(e),n}function se(e,t,o,r,n,d=0){let s=[];if(e.tags)for(let a of e.tags){let c=t.get(a);if(!c||c.length===0)continue;let p=c.map(i=>q(i,n,"tag-group",a));s.push({id:`tag:${a}`,name:o.get(a)??a,order:r.get(a),children:g(p),metadata:{source:"tag-group",kind:"tag"}})}if(e.groups)for(let a of e.groups)s.push(se(a,t,o,r,n,d+1));return{id:`tag-group:${e.name}`,name:e.name,order:d*1e3,children:g(s),metadata:{source:"tag-group",kind:"tag-group"}}}function Le(e,t,o,r,n){let d=new Map,s=new Map,a=new Map;for(let u=0;u<t.length;u+=1)s.set(t[u].name,u),a.set(t[u].name,t[u].displayName);for(let u of o){if(_(u.raw,r.showInternal))continue;let m=u.tags.length>0?u.tags:["Other"];for(let f of m){let T=d.get(f)??[];T.push(u),d.set(f,T)}}let p=ie(e["x-tagGroups"],n).map(u=>se(u,d,a,s,r)),i=d.get("Other");if(i&&i.length>0){let u=i.map(m=>q(m,r,"fallback","Other"));p.push({id:"tag:Other",name:"Other",order:Number.MAX_SAFE_INTEGER,children:g(u),metadata:{source:"fallback",kind:"tag"}})}return g(p)}function Ke(e,t){if(!t.showComponents)return;let o=h(e.components),r=h(o?.schemas);if(!r)return;let n=[];for(let[d,s]of Object.entries(r)){let a=h(s);!a||_(a,t.showInternal)||n.push({id:`schema:${d}`,name:d,order:H(a),metadata:{description:N(a.description),pointer:`/components/schemas/${encodeURIComponent(d)}`,source:"tag",kind:"schema"}})}if(n.length!==0)return{id:"section:components",name:"Components",order:Number.MAX_SAFE_INTEGER-1,children:g(n),metadata:{source:"tag",kind:"component"}}}function We(e){let t=new Map,o=V(e);for(let r=o.length-1;r>=0;r--){let n=o[r].node,d=n.children?.map(a=>t.get(a)).filter(Boolean),s=(n.metadata?.kind==="operation"?1:0)+(d?.reduce((a,c)=>a+(c.metadata?.operationCount??0),0)??0);t.set(n,{...n,children:d,metadata:{...n.metadata,operationCount:s}})}return e.map(r=>t.get(r))}function ae(e,t={}){let o={...Me,...t},r=[],n=h(e);if(!n)return{root:{id:"root",name:"API Documentation",children:[],metadata:{kind:"root"}},warnings:["Document is null or not an object."]};let d=Pe(n),s=Be(n),a;Ue(s)?a=Fe(s,d,o,r):je(n)?a=Le(n,s,d,o,r):a=_e(s,d,o);let c=Ke(n,o),p=We([...a,...c?[c]:[]]);return{root:{id:"root",name:"API Documentation",children:g(p),metadata:{kind:"root"}},warnings:r}}0&&(module.exports={buildDocTree,buildOpenApiTree,buildSchemaTree,findSchemaNodeByPath,formatSchemaType});
|
package/dist/adapters/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a,b,c,d,e}from"../chunk-
|
|
1
|
+
import{a,b,c,d,e}from"../chunk-F5XBVD6Q.js";import"../chunk-AHHDXXHL.js";export{e as buildDocTree,a as buildOpenApiTree,b as buildSchemaTree,c as findSchemaNodeByPath,d as formatSchemaType};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{g as f,l as H}from"./chunk-AHHDXXHL.js";import{operationEntries as z,operationPath as V}from"@powerduck/openapi-parser/methods";function P(e,t,r){let o=new Map;for(let c of e)o.has(c.name)?r.push(`Duplicate tag "${c.name}" was ignored.`):o.set(c.name,c);let n=new Map;for(let c of o.values())c.parent&&!o.has(c.parent)&&r.push(`Tag "${c.name}" references unknown parent "${c.parent}", treating as root.`),n.set(c.name,c.parent&&o.has(c.parent)?c.parent:null);let d=new Set;for(let c of o.keys()){let u=new Set,a=c;for(;a!==null&&!d.has(a);){if(u.has(a)){r.push(`Circular tag reference detected at "${a}". Breaking cycle.`),n.set(a,null);break}u.add(a),a=n.get(a)??null}for(let p of u)d.add(p)}let s=new Map(Array.from(o,([c,u])=>[c,t(u)])),i=[];for(let[c,u]of s){let a=n.get(c);if(a==null)i.push(u);else{let p=s.get(a);(p.children??(p.children=[])).push(u)}}for(let c of s.values())c.children&&(c.children=f(c.children));return f(i)}var oe={showInternal:!1,showComponents:!0,showWebhooks:!0,defaultExpandDepth:2};function N(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)?e:null}function w(e){return typeof e=="string"&&e.trim().length>0?e.trim():void 0}function re(e){return typeof e=="number"&&Number.isFinite(e)?e:void 0}function B(e){return typeof e=="boolean"?e:void 0}function C(e){return Array.isArray(e)?e:void 0}function x(e,t){return t?!1:B(e["x-scalar-ignore"])===!0||B(e["x-internal"])===!0}function R(e){return re(e["x-order"])}function ae(e){return w(e["x-displayName"])}function ie(e){let t=N(e.paths);if(!t)return[];let r=[];for(let[o,n]of Object.entries(t)){let d=N(n);if(d)for(let[s,i]of z(d)){if(i==null)continue;let c=N(i);if(!c)continue;let u=w(c.operationId),a=w(c.summary),p=C(c.tags)?.filter(l=>typeof l=="string").map(l=>l.trim()).filter(l=>l.length>0)??[],m=a??u??`${s.toUpperCase()} ${o}`,g=u??`${s}:${o}`,T=`/paths/${encodeURIComponent(o)}/${V(s,d).map(encodeURIComponent).join("/")}`;r.push({id:g,path:o,method:s,name:m,summary:a,operationId:u,deprecated:B(c.deprecated)===!0,tags:p,pointer:T,raw:c})}}return r}function se(e){let t=C(e.tags);if(!t)return[];let r=[];for(let o of t){let n=N(o),d=w(n?.name);!d||!n||r.push({name:d,displayName:ae(n)??d,description:w(n.description),parent:w(n.parent),order:R(n),raw:n})}return r}function de(e){return e.some(t=>t.parent!==void 0)}function j(e){return{id:`op:root:${e.id}`,name:e.name,order:R(e.raw),metadata:{method:e.method,path:e.path,operationId:e.operationId,deprecated:e.deprecated,summary:e.summary,pointer:e.pointer,source:"fallback",kind:"operation"}}}function ce(e,t,r,o){let n=new Map,d=[];for(let a of t)if(!x(a.raw,r.showInternal)){if(a.tags.length===0){d.push(a);continue}for(let p of a.tags){let m=n.get(p)??[];m.push(a),n.set(p,m)}}let s=a=>{let m=(n.get(a.name)??[]).map(g=>({id:`op:${a.name}:${g.id}`,name:g.name,order:R(g.raw),metadata:{method:g.method,path:g.path,operationId:g.operationId,deprecated:g.deprecated,summary:g.summary,pointer:g.pointer,source:"oas32-parent",kind:"operation"}}));return{id:`tag:${a.name}`,name:a.displayName,order:a.order,children:f(m),metadata:{source:"oas32-parent",kind:"tag"}}},i=new Set(e.map(a=>a.name)),c=[...e];for(let a of n.keys())i.has(a)||c.push({name:a,displayName:a,raw:{}});let u=P(c,s,o);return f([...u,...d.map(j)])}function pe(e){let t=C(e["x-tagGroups"]);if(!t)return[];let r=(o,n)=>{let d=N(o),s=w(d?.name),i=C(d?.tags)?.filter(u=>typeof u=="string").map(u=>u.trim()).filter(u=>u.length>0)??[];if(!s)return null;let c=C(d?.groups)?.map((u,a)=>r(u,a)).filter(u=>u!==null)??[];return{name:s,tags:i,groups:c.length>0?c:void 0,order:R(d??{})??n}};return t.map((o,n)=>r(o,n)).filter(o=>o!==null)}function ue(e,t,r,o){let n=new Map;for(let a of t)n.set(a.name,a.displayName);let d=new Map,s=[];for(let a of r)if(!x(a.raw,o.showInternal)){if(a.tags.length===0){s.push(a);continue}for(let p of a.tags){let m=d.get(p)??[];m.push(a),d.set(p,m)}}let i=a=>(d.get(a)??[]).map(m=>({id:`op:${a}:${m.id}`,name:m.name,order:R(m.raw),metadata:{method:m.method,path:m.path,operationId:m.operationId,deprecated:m.deprecated,summary:m.summary,pointer:m.pointer,source:"tag-group",kind:"operation"}})),c=a=>({id:`tag:${a}`,name:n.get(a)??a,children:f(i(a)),metadata:{source:"tag-group",kind:"tag"}}),u=a=>{let p=[];for(let m of a.tags)d.get(m)?.length&&p.push(c(m));for(let m of a.groups??[])p.push(u(m));return{id:`tag-group:${a.name}`,name:a.name,order:a.order,children:f(p),metadata:{source:"tag-group",kind:"tag-group"}}};return f([...e.map(u),...s.map(j)])}function me(e,t,r){let o=new Map,n=[],d=new Map;for(let p=0;p<e.length;p+=1){let m=e[p];d.set(m.name,m.order??p)}for(let p of t)if(!x(p.raw,r.showInternal)){if(p.tags.length===0){n.push(p);continue}for(let m of p.tags){let g=o.get(m)??[];g.push(p),o.set(m,g)}}let s=new Map;for(let p of e)s.set(p.name,p.displayName);let i=(p,m)=>{let T=(o.get(p)??[]).map(l=>({id:`op:${p}:${l.id}`,name:l.name,order:R(l.raw),metadata:{method:l.method,path:l.path,operationId:l.operationId,deprecated:l.deprecated,summary:l.summary,pointer:l.pointer,source:"tag",kind:"operation"}}));return{id:`tag:${p}`,name:s.get(p)??p,order:d.get(p)??m,children:f(T),metadata:{source:"tag",kind:"tag"}}},c=[],u=new Set;e.forEach((p,m)=>{u.add(p.name),c.push(i(p.name,m))});let a=e.length;for(let p of o.keys())u.has(p)||(c.push(i(p,a)),a+=1);return f([...c,...n.map(j)])}function ge(e,t){if(!t.showComponents)return;let r=N(e.components),o=N(r?.schemas);if(!o)return;let n=[];for(let[d,s]of Object.entries(o)){let i=N(s);!i||x(i,t.showInternal)||n.push({id:`schema:${d}`,name:d,order:R(i),metadata:{pointer:`/components/schemas/${encodeURIComponent(d)}`,source:"tag",kind:"schema"}})}if(n.length!==0)return{id:"section:components",name:"Components",order:Number.MAX_SAFE_INTEGER-1,children:f(n),metadata:{source:"section",kind:"section",section:"components"}}}function fe(e,t){if(!t.showWebhooks)return;let r=N(e.webhooks);if(!r)return;let o=[];for(let[n,d]of Object.entries(r)){let s=N(d);if(s)for(let[i,c]of z(s)){let u=N(c);if(!u||x(u,t.showInternal))continue;let a=w(u.operationId),p=w(u.summary),m=p??a??`${i.toUpperCase()} ${n}`;o.push({id:`webhook:${n}:${i}`,name:m,order:R(u),metadata:{method:i,path:n,operationId:a,deprecated:B(u.deprecated)===!0,summary:p,pointer:`/webhooks/${encodeURIComponent(n)}/${V(i,s).map(encodeURIComponent).join("/")}`,source:"tag",kind:"webhook"}})}}if(o.length!==0)return{id:"section:webhooks",name:"Webhooks",order:Number.MAX_SAFE_INTEGER-2,children:f(o),metadata:{source:"section",kind:"section",section:"webhooks"}}}function le(e,t={}){let r={...oe,...t},o=[],n=N(e);if(!n)return{root:{id:"root",name:"OpenAPI",children:[],metadata:{kind:"root"}},warnings:["Document is null or not an object."]};let d=ie(n),s=se(n),i;if(de(s))i=ce(s,d,r,o);else{let m=pe(n);m.length>0?i=ue(m,s,d,r):i=me(s,d,r)}let c=fe(n,r),u=ge(n,r),p=[{id:"section:apis",name:"APIs",children:i,metadata:{kind:"section",source:"section",section:"apis"},order:0},...c?[c]:[],...u?[u]:[]];return{root:{id:"root",name:"OpenAPI",children:f(p),metadata:{kind:"root"}},warnings:o}}var Y={openapi:0,info:1,servers:2,paths:3,webhooks:4,components:5,security:6,tags:7,externalDocs:8,jsonSchemaDialect:9},F={maxDepth:8,maxNodes:1e4,showDeprecated:!0,expandCombinators:!0,showArrayItems:!0},Q=new Set(["string","number","integer","boolean","null"]);function M(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)?e:null}function _(e){return typeof e=="string"&&e.trim().length>0?e.trim():void 0}function Z(e){return typeof e=="boolean"?e:void 0}function L(e){return Array.isArray(e)?e:void 0}function he(e){let t=e.type;if(typeof t=="string"||Array.isArray(t)&&t.every(r=>typeof r=="string"))return t}function Te(e){return e?Array.isArray(e)?e.every(t=>Q.has(t)):Q.has(e):!1}function Oe(e){if(!e)return"unknown";switch(Array.isArray(e)?e[0]:e){case"object":return"object";case"array":return"array";case"string":return"string";case"number":return"number";case"integer":return"integer";case"boolean":return"boolean";case"null":return"null";default:return"unknown"}}function v(e){return e?Array.isArray(e)?e.join(" | "):e:"any"}function S(e){return e.map(t=>t.replace(/[\\.\[\]]/g,r=>`\\${r}`)).join(".")||"root"}function E(e,t,r,o,n,d){n.remaining--;let s=he(t),i=_(t.format),c=_(t.description),u=Z(t.deprecated)===!0,a=Oe(s),p={jsonPath:r,type:s,format:i,required:d,deprecated:u,description:c,kind:a},m=_(t.$ref);if(m){if(n.refStack.has(m))return n.warnings.push(`Circular $ref detected at ${r.join(".")}: ${m}. Breaking recursion.`),{id:S(r),name:e,metadata:{...p,kind:"ref",isLeaf:!0}};n.refStack.add(m)}let g,T=Te(s),l=n.activeSchemas.has(t);if(l&&n.warnings.push(`Circular schema object detected at ${S(r)}.`),l||o>=n.options.maxDepth||n.remaining<=0)return m&&n.refStack.delete(m),{id:S(r),name:e,metadata:{...p,isLeaf:!0}};n.activeSchemas.add(t);let k=M(t.properties);if(k){let A=L(t.required)??[],y=new Set(A.filter(b=>typeof b=="string")),J=[];for(let[b,I]of Object.entries(k)){if(n.remaining<=0)break;let $=M(I);$&&(!n.options.showDeprecated&&Z($.deprecated)===!0||J.push(E(b,$,[...r,"properties",b],o+1,n,y.has(b))))}g=[...g??[],...f(J)],T=!1}if(n.remaining>0&&n.options.showArrayItems&&s==="array"){let A=M(t.items);if(A){let y=E("items",A,[...r,"items"],o+1,n,!1);g=[...g??[],y],T=!1}else p.hasItems=!1}if(n.options.expandCombinators){let A=[{key:"allOf",kind:"allOf"},{key:"anyOf",kind:"anyOf"},{key:"oneOf",kind:"oneOf"}];for(let{key:y,kind:J}of A){if(n.remaining<=0)break;let b=L(t[y]);if(!b?.length)continue;n.remaining--;let I=[];for(let D=0;D<b.length&&n.remaining>0;D++){let te=b[D],X=M(te);if(!X){n.remaining--,I.push({id:S([...r,y,String(D)]),name:`[${D}]`,metadata:{jsonPath:[...r,y,String(D)],kind:"unknown",isLeaf:!0}});continue}I.push(E(`[${D}]`,X,[...r,y,String(D)],o+1,n,!1))}let $={id:S([...r,y]),name:y,children:f(I),metadata:{jsonPath:[...r,y],kind:J}};g=[...g??[],$],T=!1}}return L(t.enum)?.length&&!g?.length&&(p.kind="enum",T=!0),m&&n.refStack.delete(m),n.activeSchemas.delete(t),{id:S(r),name:e,order:Object.prototype.hasOwnProperty.call(Y,e)?Y[e]:void 0,metadata:{...p,isLeaf:T},children:g}}function Ne(e,t={}){let r={...F,...t};r.maxDepth=Number.isFinite(r.maxDepth)?Math.min(128,Math.max(0,Math.trunc(r.maxDepth))):F.maxDepth,r.maxNodes=Number.isFinite(r.maxNodes)?Math.min(1e5,Math.max(1,Math.trunc(r.maxNodes))):F.maxNodes;let o=[],n=M(e);if(!n)return{root:{id:"root",name:"Schema",metadata:{jsonPath:[],kind:"root",isLeaf:!0}},warnings:["Schema is null or not an object."]};let d={options:r,warnings:o,refStack:new Set,activeSchemas:new Set,remaining:r.maxNodes},s=E("root",n,[],0,d,!0);return d.remaining<=0&&o.push(`Schema node limit (${r.maxNodes}) reached; remaining branches were omitted.`),{root:s,warnings:o}}function ye(e,t){if(t.length===0)return e;let r=JSON.stringify(t),o=[e],n=new Set;for(let d=0;d<o.length;d++){let s=o[d];if(!s||n.has(s))continue;if(n.add(s),JSON.stringify(s.metadata?.jsonPath)===r)return s;for(let c of s.children??[])o.push(c)}}function be(e){return e.kind==="enum"?"enum":e.kind==="ref"?"$ref":e.format?`${v(e.type)} (${e.format})`:v(e.type)}import{operationEntries as we,operationPath as ke}from"@powerduck/openapi-parser/methods";var De={showInternal:!1,showComponents:!1,showWebhooks:!0,expandOperationDetails:!1};function h(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)?e:null}function O(e){return typeof e=="string"&&e.trim().length>0?e.trim():void 0}function q(e){return typeof e=="boolean"?e:void 0}function K(e){return Array.isArray(e)?e:void 0}function U(e,t){return t?!1:q(e["x-scalar-ignore"])===!0||q(e["x-internal"])===!0}function W(e){let t=e["x-order"];return typeof t=="number"&&Number.isFinite(t)?t:void 0}function Re(e){return O(e["x-displayName"])}function Ae(e,t){let r=[];for(let o of e){let n=h(o);if(!n)continue;let d=O(n.name),s=O(n.in);if(!d||!s)continue;let i=`${s}:${d}`;r.push({id:`${t}/parameters/${encodeURIComponent(i)}`,name:d,metadata:{paramIn:s,required:q(n.required)===!0,description:O(n.description),pointer:`${t}/parameters`,kind:"parameter"}})}return f(r)}function Se(e,t){let r=[];for(let[o,n]of Object.entries(e)){let d=h(n);if(!d)continue;let s=O(d.description),i=h(d.content),c=[];if(i)for(let[u]of Object.entries(i))c.push({id:`${t}/responses/${encodeURIComponent(o)}/content/${encodeURIComponent(u)}`,name:u,metadata:{contentType:u,pointer:`${t}/responses/${encodeURIComponent(o)}/content/${encodeURIComponent(u)}`,kind:"content"}});r.push({id:`${t}/responses/${encodeURIComponent(o)}`,name:o,metadata:{statusCode:o,description:s,pointer:`${t}/responses/${encodeURIComponent(o)}`,kind:"response"},children:c.length>0?c:void 0})}return f(r)}function Ie(e,t){let r=[],o=K(e.parameters);if(o?.length){let s=Ae(o,t);s.length>0&&r.push({id:`${t}/parameters`,name:"Parameters",children:s,metadata:{pointer:`${t}/parameters`,kind:"parameters"}})}let n=h(e.requestBody);if(n){let s=h(n.content),i=[];if(s)for(let[c]of Object.entries(s))i.push({id:`${t}/requestBody/content/${encodeURIComponent(c)}`,name:c,metadata:{contentType:c,pointer:`${t}/requestBody/content/${encodeURIComponent(c)}`,kind:"content"}});r.push({id:`${t}/requestBody`,name:"Request Body",metadata:{description:O(n.description),required:q(n.required)===!0,pointer:`${t}/requestBody`,kind:"request-body"},children:i.length>0?i:void 0})}let d=h(e.responses);if(d){let s=Se(d,t);s.length>0&&r.push({id:`${t}/responses`,name:"Responses",children:s,metadata:{pointer:`${t}/responses`,kind:"responses"}})}return r}function $e(e){let t=h(e.paths);if(!t)return[];let r=[];for(let[o,n]of Object.entries(t)){let d=h(n);if(d)for(let[s,i]of we(d)){let c=h(i);if(!c)continue;let u=O(c.operationId),a=O(c.summary),p=O(c.description),m=K(c.tags)?.filter(k=>typeof k=="string").map(k=>k.trim()).filter(k=>k.length>0)??[],g=a??u??`${s.toUpperCase()} ${o}`,T=u??`${s}:${o}`,l=`/paths/${encodeURIComponent(o)}/${ke(s,d).map(encodeURIComponent).join("/")}`;r.push({id:T,path:o,method:s,name:g,summary:a,description:p,operationId:u,deprecated:q(c.deprecated)===!0,tags:m,pointer:l,raw:c})}}return r}function Ce(e){let t=K(e.tags);if(!t)return[];let r=[];for(let o of t){let n=h(o),d=O(n?.name);!d||!n||r.push({name:d,displayName:Re(n)??d,description:O(n.description),parent:O(n.parent),order:W(n)})}return r}function xe(e){return e.some(t=>t.parent!==void 0)}function G(e,t,r,o){let n=t.expandOperationDetails?Ie(e.raw,e.pointer):void 0;return{id:`op:${o}:${e.id}`,name:e.name,order:W(e.raw),metadata:{method:e.method,path:e.path,operationId:e.operationId,deprecated:e.deprecated,summary:e.summary,description:e.description,pointer:e.pointer,source:r,kind:"operation"},children:n&&n.length>0?n:void 0}}function Me(e,t,r,o){let n=new Map;for(let a of t){if(U(a.raw,r.showInternal))continue;let p=a.tags.length>0?a.tags:["Other"];for(let m of p){let g=n.get(m)??[];g.push(a),n.set(m,g)}}let d=a=>{let m=(n.get(a.name)??[]).map(g=>G(g,r,"oas32-parent",a.name));return{id:`tag:${a.name}`,name:a.displayName,order:a.order,children:f(m),metadata:{description:a.description,source:"oas32-parent",kind:"tag"}}},s=new Set(e.map(a=>a.name)),i=[...e];for(let a of n.keys())a!=="Other"&&!s.has(a)&&i.push({name:a,displayName:a});let c=P(i,d,o),u=n.get("Other")??[];if(u.length>0&&!e.some(a=>a.name==="Other")){let a=u.map(p=>G(p,r,"fallback","Other"));c.push({id:"tag:Other",name:"Other",order:Number.MAX_SAFE_INTEGER,children:f(a),metadata:{source:"fallback",kind:"tag"}})}return f(c)}function qe(e,t,r){let o=new Map,n=new Map;for(let i=0;i<e.length;i+=1)n.set(e[i].name,i);for(let i of t){if(U(i.raw,r.showInternal))continue;let c=i.tags.length>0?i.tags:["Other"];for(let u of c){let a=o.get(u)??[];a.push(i),o.set(u,a)}}let d=new Map;for(let i of e)d.set(i.name,i.displayName);let s=[];for(let[i,c]of o){let u=c.map(a=>G(a,r,"tag",i));s.push({id:`tag:${i}`,name:d.get(i)??i,order:i==="Other"?Number.MAX_SAFE_INTEGER:n.get(i),children:f(u),metadata:{source:"tag",kind:"tag"}})}return f(s)}function Ge(e){return Array.isArray(e["x-tagGroups"])&&e["x-tagGroups"].length>0}function ee(e,t,r=0,o={active:new Set,remaining:1e4,warned:!1}){if(!Array.isArray(e))return[];if(r>=128||o.active.has(e))return t.push("Nested tag groups were truncated at a cycle or the 128-level limit."),[];o.active.add(e);let n=[];for(let d of e){if(o.remaining<=0){o.warned||t.push("Tag group limit (10,000) reached; remaining groups were omitted."),o.warned=!0;break}let s=h(d);if(!s||typeof s.name!="string")continue;o.remaining--;let i={name:s.name};Array.isArray(s.tags)&&(i.tags=s.tags.filter(c=>typeof c=="string")),Array.isArray(s.groups)&&(i.groups=ee(s.groups,t,r+1,o)),n.push(i)}return o.active.delete(e),n}function ne(e,t,r,o,n,d=0){let s=[];if(e.tags)for(let i of e.tags){let c=t.get(i);if(!c||c.length===0)continue;let u=c.map(a=>G(a,n,"tag-group",i));s.push({id:`tag:${i}`,name:r.get(i)??i,order:o.get(i),children:f(u),metadata:{source:"tag-group",kind:"tag"}})}if(e.groups)for(let i of e.groups)s.push(ne(i,t,r,o,n,d+1));return{id:`tag-group:${e.name}`,name:e.name,order:d*1e3,children:f(s),metadata:{source:"tag-group",kind:"tag-group"}}}function Je(e,t,r,o,n){let d=new Map,s=new Map,i=new Map;for(let p=0;p<t.length;p+=1)s.set(t[p].name,p),i.set(t[p].name,t[p].displayName);for(let p of r){if(U(p.raw,o.showInternal))continue;let m=p.tags.length>0?p.tags:["Other"];for(let g of m){let T=d.get(g)??[];T.push(p),d.set(g,T)}}let u=ee(e["x-tagGroups"],n).map(p=>ne(p,d,i,s,o)),a=d.get("Other");if(a&&a.length>0){let p=a.map(m=>G(m,o,"fallback","Other"));u.push({id:"tag:Other",name:"Other",order:Number.MAX_SAFE_INTEGER,children:f(p),metadata:{source:"fallback",kind:"tag"}})}return f(u)}function Pe(e,t){if(!t.showComponents)return;let r=h(e.components),o=h(r?.schemas);if(!o)return;let n=[];for(let[d,s]of Object.entries(o)){let i=h(s);!i||U(i,t.showInternal)||n.push({id:`schema:${d}`,name:d,order:W(i),metadata:{description:O(i.description),pointer:`/components/schemas/${encodeURIComponent(d)}`,source:"tag",kind:"schema"}})}if(n.length!==0)return{id:"section:components",name:"Components",order:Number.MAX_SAFE_INTEGER-1,children:f(n),metadata:{source:"tag",kind:"component"}}}function Be(e){let t=new Map,r=H(e);for(let o=r.length-1;o>=0;o--){let n=r[o].node,d=n.children?.map(i=>t.get(i)).filter(Boolean),s=(n.metadata?.kind==="operation"?1:0)+(d?.reduce((i,c)=>i+(c.metadata?.operationCount??0),0)??0);t.set(n,{...n,children:d,metadata:{...n.metadata,operationCount:s}})}return e.map(o=>t.get(o))}function Ee(e,t={}){let r={...De,...t},o=[],n=h(e);if(!n)return{root:{id:"root",name:"API Documentation",children:[],metadata:{kind:"root"}},warnings:["Document is null or not an object."]};let d=$e(n),s=Ce(n),i;xe(s)?i=Me(s,d,r,o):Ge(n)?i=Je(n,s,d,r,o):i=qe(s,d,r);let c=Pe(n,r),u=Be([...i,...c?[c]:[]]);return{root:{id:"root",name:"API Documentation",children:f(u),metadata:{kind:"root"}},warnings:o}}export{le as a,Ne as b,ye as c,be as d,Ee as e};
|
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var v=Object.defineProperty;var Ae=Object.getOwnPropertyDescriptor;var Se=Object.getOwnPropertyNames;var xe=Object.prototype.hasOwnProperty;var Ie=(e,n)=>{for(var o in n)v(e,o,{get:n[o],enumerable:!0})},$e=(e,n,o,r)=>{if(n&&typeof n=="object"||typeof n=="function")for(let t of Se(n))!xe.call(e,t)&&t!==o&&v(e,t,{get:()=>n[t],enumerable:!(r=Ae(n,t))||r.enumerable});return e};var Ce=e=>$e(v({},"__esModule",{value:!0}),e);var pn={};Ie(pn,{buildDocTree:()=>De,buildOpenApiTree:()=>ge,buildSchemaTree:()=>ye,countNodes:()=>oe,filterTree:()=>ae,findNode:()=>C,findPath:()=>H,findSchemaNodeByPath:()=>Oe,flattenTree:()=>_,formatSchemaType:()=>be,getBranchIds:()=>de,getExpandableIds:()=>W,getLeaves:()=>re,getMaxDepth:()=>ie,insertChild:()=>ce,isTreeNode:()=>te,moveNode:()=>me,removeNode:()=>X,reorderNode:()=>ue,sortNodes:()=>g,sortTree:()=>se,updateNode:()=>M});module.exports=Ce(pn);function te(e){return e!=null}function*A(e,n=1/0){let o=new Set,r=[];for(let t=e.length-1;t>=0;t--)r.push({node:e[t],depth:1});for(;r.length;){let t=r.pop();if(o.has(t.node)||t.depth>n)continue;o.add(t.node),yield t;let a=t.node.children??[];for(let i=a.length-1;i>=0;i--)r.push({node:a[i],parent:t,depth:t.depth+1})}}function C(e,n){for(let{node:o}of A(e))if(o.id===n)return o}function H(e,n,o=[]){for(let r of A(e)){if(r.node.id!==n)continue;let t=[],a=r;for(;a;)t.push(a.node),a=a.parent;t.reverse();let i=[...o,...t];return{nodes:i,target:r.node,parent:i[i.length-2],ancestorIds:i.slice(0,-1).map(d=>d.id)}}return null}function re(e){let n=[];for(let{node:o}of A(e))o.children?.length||n.push(o);return n}function oe(e){let n=0;for(let o of A(e))n++;return n}function ie(e){let n=0;for(let o of A(e))n=Math.max(n,o.depth);return n}var Me=new Intl.Collator("en-US",{numeric:!0,sensitivity:"base"});function g(e){return[...e].sort((n,o)=>{let r=(n.order??Number.MAX_SAFE_INTEGER)-(o.order??Number.MAX_SAFE_INTEGER);return(Number.isNaN(r)?0:r)||Me.compare(n.name,o.name)||n.id.localeCompare(o.id)})}function F(e,n,o=()=>!0){let r=new Set,t=new Map,a=[{source:e,output:[],index:0}];for(;a.length;){let i=a[a.length-1];if(i.index<i.source.length){let s=i.source[i.index++];if(r.has(s))continue;if(t.has(s)){let p=t.get(s);p&&i.output.push(p)}else if(s.children?.length&&o(s))r.add(s),a.push({source:s.children,output:[],index:0,owner:s});else{let p=n(s);t.set(s,p),p&&i.output.push(p)}continue}a.pop();let d=i.source.length===i.output.length&&i.source.every((s,p)=>s===i.output[p])?i.source:i.output;if(!i.owner)return d;let c=i.owner,u=n(d===c.children?c:{...c,children:d});r.delete(c),t.set(c,u),u&&a[a.length-1].output.push(u)}return e}function se(e){return g(F(e,n=>n.children?.length?{...n,children:g(n.children)}:n))}function ae(e,n){let o=n.query.trim().toLowerCase();return o?F(e,r=>r.name.toLowerCase().includes(o)||r.id.toLowerCase().includes(o)||(n.keepAncestors??!0)&&r.children?.length?r:null):e}function W(e,n={}){let o=[];for(let{node:r,depth:t}of A(e,n.maxDepth??1/0))t<=(n.maxDepth??1/0)&&(!(n.onlyWithChildren??!0)||r.children?.length)&&o.push(r.id);return o}function de(e){return W(e)}function _(e){return Array.from(A(e),({node:n,depth:o})=>({node:n,depth:o}))}function M(e,n,o){return F(e,r=>r.id===n?o(r):r,r=>r.id!==n)}function X(e,n){return F(e,o=>o.id===n?null:o,o=>o.id!==n)}function ce(e,n,o){return M(e,n,r=>({...r,children:[...r.children??[],o]}))}function pe(e,n){return Math.max(0,Math.min(Number.isNaN(e)?0:Math.trunc(e),n))}function ue(e,n,o){let r=H(e,n);if(!r)return null;let t=r.parent?.children??e,a=t.indexOf(r.target),i=pe(o,t.length-1),d={nodes:e,moved:r.target,parentId:r.parent?.id??null,fromIndex:a,toIndex:i};if(i===a)return d;let c=[...t];return c.splice(a,1),c.splice(i,0,r.target),{...d,nodes:r.parent?M(e,r.parent.id,u=>({...u,children:c})):c}}function me(e,n,o,r){let t=C(e,n);if(!t||o!==null&&(!C(e,o)||C([t],o)))return null;let a=X(e,n),i=d=>{let c=[...d];return c.splice(pe(r??c.length,c.length),0,t),c};return o===null?i(a):M(a,o,d=>({...d,children:i(d.children??[])}))}function U(e,n,o){let r=new Map;for(let c of e)r.has(c.name)?o.push(`Duplicate tag "${c.name}" was ignored.`):r.set(c.name,c);let t=new Map;for(let c of r.values())c.parent&&!r.has(c.parent)&&o.push(`Tag "${c.name}" references unknown parent "${c.parent}", treating as root.`),t.set(c.name,c.parent&&r.has(c.parent)?c.parent:null);let a=new Set;for(let c of r.keys()){let u=new Set,s=c;for(;s!==null&&!a.has(s);){if(u.has(s)){o.push(`Circular tag reference detected at "${s}". Breaking cycle.`),t.set(s,null);break}u.add(s),s=t.get(s)??null}for(let p of u)a.add(p)}let i=new Map(Array.from(r,([c,u])=>[c,n(u)])),d=[];for(let[c,u]of i){let s=t.get(c);if(s==null)d.push(u);else{let p=i.get(s);(p.children??(p.children=[])).push(u)}}for(let c of i.values())c.children&&(c.children=g(c.children));return g(d)}var fe=["get","put","post","delete","options","head","patch","trace"],Ee={showInternal:!1,showComponents:!0,showWebhooks:!0,defaultExpandDepth:2};function y(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)?e:null}function w(e){return typeof e=="string"&&e.trim().length>0?e.trim():void 0}function Ge(e){return typeof e=="number"&&Number.isFinite(e)?e:void 0}function j(e){return typeof e=="boolean"?e:void 0}function E(e){return Array.isArray(e)?e:void 0}function G(e,n){return n?!1:j(e["x-scalar-ignore"])===!0||j(e["x-internal"])===!0}function R(e){return Ge(e["x-order"])}function qe(e){return w(e["x-displayName"])}function Pe(e){let n=y(e.paths);if(!n)return[];let o=[];for(let[r,t]of Object.entries(n)){let a=y(t);if(a)for(let i of fe){let d=a[i];if(d==null)continue;let c=y(d);if(!c)continue;let u=w(c.operationId),s=w(c.summary),p=E(c.tags)?.filter(l=>typeof l=="string").map(l=>l.trim()).filter(l=>l.length>0)??[],m=s??u??`${i.toUpperCase()} ${r}`,f=u??`${i}:${r}`,T=`/paths/${encodeURIComponent(r)}/${i}`;o.push({id:f,path:r,method:i,name:m,summary:s,operationId:u,deprecated:j(c.deprecated)===!0,tags:p,pointer:T,raw:c})}}return o}function Je(e){let n=E(e.tags);if(!n)return[];let o=[];for(let r of n){let t=y(r),a=w(t?.name);!a||!t||o.push({name:a,displayName:qe(t)??a,description:w(t.description),parent:w(t.parent),order:R(t),raw:t})}return o}function Be(e){return e.some(n=>n.parent!==void 0)}function z(e){return{id:`op:root:${e.id}`,name:e.name,order:R(e.raw),metadata:{method:e.method,path:e.path,operationId:e.operationId,deprecated:e.deprecated,summary:e.summary,pointer:e.pointer,source:"fallback",kind:"operation"}}}function Fe(e,n,o,r){let t=new Map,a=[];for(let s of n)if(!G(s.raw,o.showInternal)){if(s.tags.length===0){a.push(s);continue}for(let p of s.tags){let m=t.get(p)??[];m.push(s),t.set(p,m)}}let i=s=>{let m=(t.get(s.name)??[]).map(f=>({id:`op:${s.name}:${f.id}`,name:f.name,order:R(f.raw),metadata:{method:f.method,path:f.path,operationId:f.operationId,deprecated:f.deprecated,summary:f.summary,pointer:f.pointer,source:"oas32-parent",kind:"operation"}}));return{id:`tag:${s.name}`,name:s.displayName,order:s.order,children:g(m),metadata:{source:"oas32-parent",kind:"tag"}}},d=new Set(e.map(s=>s.name)),c=[...e];for(let s of t.keys())d.has(s)||c.push({name:s,displayName:s,raw:{}});let u=U(c,i,r);return g([...u,...a.map(z)])}function _e(e){let n=E(e["x-tagGroups"]);if(!n)return[];let o=(r,t)=>{let a=y(r),i=w(a?.name),d=E(a?.tags)?.filter(u=>typeof u=="string").map(u=>u.trim()).filter(u=>u.length>0)??[];if(!i)return null;let c=E(a?.groups)?.map((u,s)=>o(u,s)).filter(u=>u!==null)??[];return{name:i,tags:d,groups:c.length>0?c:void 0,order:R(a??{})??t}};return n.map((r,t)=>o(r,t)).filter(r=>r!==null)}function Ue(e,n,o,r){let t=new Map;for(let s of n)t.set(s.name,s.displayName);let a=new Map,i=[];for(let s of o)if(!G(s.raw,r.showInternal)){if(s.tags.length===0){i.push(s);continue}for(let p of s.tags){let m=a.get(p)??[];m.push(s),a.set(p,m)}}let d=s=>(a.get(s)??[]).map(m=>({id:`op:${s}:${m.id}`,name:m.name,order:R(m.raw),metadata:{method:m.method,path:m.path,operationId:m.operationId,deprecated:m.deprecated,summary:m.summary,pointer:m.pointer,source:"tag-group",kind:"operation"}})),c=s=>({id:`tag:${s}`,name:t.get(s)??s,children:g(d(s)),metadata:{source:"tag-group",kind:"tag"}}),u=s=>{let p=[];for(let m of s.tags)a.get(m)?.length&&p.push(c(m));for(let m of s.groups??[])p.push(u(m));return{id:`tag-group:${s.name}`,name:s.name,order:s.order,children:g(p),metadata:{source:"tag-group",kind:"tag-group"}}};return g([...e.map(u),...i.map(z)])}function je(e,n,o){let r=new Map,t=[],a=new Map;for(let p=0;p<e.length;p+=1){let m=e[p];a.set(m.name,m.order??p)}for(let p of n)if(!G(p.raw,o.showInternal)){if(p.tags.length===0){t.push(p);continue}for(let m of p.tags){let f=r.get(m)??[];f.push(p),r.set(m,f)}}let i=new Map;for(let p of e)i.set(p.name,p.displayName);let d=(p,m)=>{let T=(r.get(p)??[]).map(l=>({id:`op:${p}:${l.id}`,name:l.name,order:R(l.raw),metadata:{method:l.method,path:l.path,operationId:l.operationId,deprecated:l.deprecated,summary:l.summary,pointer:l.pointer,source:"tag",kind:"operation"}}));return{id:`tag:${p}`,name:i.get(p)??p,order:a.get(p)??m,children:g(T),metadata:{source:"tag",kind:"tag"}}},c=[],u=new Set;e.forEach((p,m)=>{u.add(p.name),c.push(d(p.name,m))});let s=e.length;for(let p of r.keys())u.has(p)||(c.push(d(p,s)),s+=1);return g([...c,...t.map(z)])}function Le(e,n){if(!n.showComponents)return;let o=y(e.components),r=y(o?.schemas);if(!r)return;let t=[];for(let[a,i]of Object.entries(r)){let d=y(i);!d||G(d,n.showInternal)||t.push({id:`schema:${a}`,name:a,order:R(d),metadata:{pointer:`/components/schemas/${encodeURIComponent(a)}`,source:"tag",kind:"schema"}})}if(t.length!==0)return{id:"section:components",name:"Components",order:Number.MAX_SAFE_INTEGER-1,children:g(t),metadata:{source:"section",kind:"section",section:"components"}}}function Ke(e,n){if(!n.showWebhooks)return;let o=y(e.webhooks);if(!o)return;let r=[];for(let[t,a]of Object.entries(o)){let i=y(a);if(i)for(let d of fe){let c=i[d],u=y(c);if(!u||G(u,n.showInternal))continue;let s=w(u.operationId),p=w(u.summary),m=p??s??`${d.toUpperCase()} ${t}`;r.push({id:`webhook:${t}:${d}`,name:m,order:R(u),metadata:{method:d,path:t,operationId:s,deprecated:j(u.deprecated)===!0,summary:p,pointer:`/webhooks/${encodeURIComponent(t)}/${d}`,source:"tag",kind:"webhook"}})}}if(r.length!==0)return{id:"section:webhooks",name:"Webhooks",order:Number.MAX_SAFE_INTEGER-2,children:g(r),metadata:{source:"section",kind:"section",section:"webhooks"}}}function ge(e,n={}){let o={...Ee,...n},r=[],t=y(e);if(!t)return{root:{id:"root",name:"OpenAPI",children:[],metadata:{kind:"root"}},warnings:["Document is null or not an object."]};let a=Pe(t),i=Je(t),d;if(Be(i))d=Fe(i,a,o,r);else{let m=_e(t);m.length>0?d=Ue(m,i,a,o):d=je(i,a,o)}let c=Ke(t,o),u=Le(t,o),p=[{id:"section:apis",name:"APIs",children:d,metadata:{kind:"section",source:"section",section:"apis"},order:0},...c?[c]:[],...u?[u]:[]];return{root:{id:"root",name:"OpenAPI",children:g(p),metadata:{kind:"root"}},warnings:r}}var le={openapi:0,info:1,servers:2,paths:3,webhooks:4,components:5,security:6,tags:7,externalDocs:8,jsonSchemaDialect:9},V={maxDepth:8,maxNodes:1e4,showDeprecated:!0,expandCombinators:!0,showArrayItems:!0},he=new Set(["string","number","integer","boolean","null"]);function q(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)?e:null}function Y(e){return typeof e=="string"&&e.trim().length>0?e.trim():void 0}function Te(e){return typeof e=="boolean"?e:void 0}function Q(e){return Array.isArray(e)?e:void 0}function ve(e){let n=e.type;if(typeof n=="string"||Array.isArray(n)&&n.every(o=>typeof o=="string"))return n}function He(e){return e?Array.isArray(e)?e.every(n=>he.has(n)):he.has(e):!1}function We(e){if(!e)return"unknown";switch(Array.isArray(e)?e[0]:e){case"object":return"object";case"array":return"array";case"string":return"string";case"number":return"number";case"integer":return"integer";case"boolean":return"boolean";case"null":return"null";default:return"unknown"}}function Ne(e){return e?Array.isArray(e)?e.join(" | "):e:"any"}function x(e){return e.map(n=>n.replace(/[\\.\[\]]/g,o=>`\\${o}`)).join(".")||"root"}function L(e,n,o,r,t,a){t.remaining--;let i=ve(n),d=Y(n.format),c=Y(n.description),u=Te(n.deprecated)===!0,s=We(i),p={jsonPath:o,type:i,format:d,required:a,deprecated:u,description:c,kind:s},m=Y(n.$ref);if(m){if(t.refStack.has(m))return t.warnings.push(`Circular $ref detected at ${o.join(".")}: ${m}. Breaking recursion.`),{id:x(o),name:e,metadata:{...p,kind:"ref",isLeaf:!0}};t.refStack.add(m)}let f,T=He(i),l=t.activeSchemas.has(n);if(l&&t.warnings.push(`Circular schema object detected at ${x(o)}.`),l||r>=t.options.maxDepth||t.remaining<=0)return m&&t.refStack.delete(m),{id:x(o),name:e,metadata:{...p,isLeaf:!0}};t.activeSchemas.add(n);let k=q(n.properties);if(k){let S=Q(n.required)??[],O=new Set(S.filter(b=>typeof b=="string")),B=[];for(let[b,I]of Object.entries(k)){if(t.remaining<=0)break;let $=q(I);$&&(!t.options.showDeprecated&&Te($.deprecated)===!0||B.push(L(b,$,[...o,"properties",b],r+1,t,O.has(b))))}f=[...f??[],...g(B)],T=!1}if(t.remaining>0&&t.options.showArrayItems&&i==="array"){let S=q(n.items);if(S){let O=L("items",S,[...o,"items"],r+1,t,!1);f=[...f??[],O],T=!1}else p.hasItems=!1}if(t.options.expandCombinators){let S=[{key:"allOf",kind:"allOf"},{key:"anyOf",kind:"anyOf"},{key:"oneOf",kind:"oneOf"}];for(let{key:O,kind:B}of S){if(t.remaining<=0)break;let b=Q(n[O]);if(!b?.length)continue;t.remaining--;let I=[];for(let D=0;D<b.length&&t.remaining>0;D++){let Re=b[D],ne=q(Re);if(!ne){t.remaining--,I.push({id:x([...o,O,String(D)]),name:`[${D}]`,metadata:{jsonPath:[...o,O,String(D)],kind:"unknown",isLeaf:!0}});continue}I.push(L(`[${D}]`,ne,[...o,O,String(D)],r+1,t,!1))}let $={id:x([...o,O]),name:O,children:g(I),metadata:{jsonPath:[...o,O],kind:B}};f=[...f??[],$],T=!1}}return Q(n.enum)?.length&&!f?.length&&(p.kind="enum",T=!0),m&&t.refStack.delete(m),t.activeSchemas.delete(n),{id:x(o),name:e,order:Object.prototype.hasOwnProperty.call(le,e)?le[e]:void 0,metadata:{...p,isLeaf:T},children:f}}function ye(e,n={}){let o={...V,...n};o.maxDepth=Number.isFinite(o.maxDepth)?Math.min(128,Math.max(0,Math.trunc(o.maxDepth))):V.maxDepth,o.maxNodes=Number.isFinite(o.maxNodes)?Math.min(1e5,Math.max(1,Math.trunc(o.maxNodes))):V.maxNodes;let r=[],t=q(e);if(!t)return{root:{id:"root",name:"Schema",metadata:{jsonPath:[],kind:"root",isLeaf:!0}},warnings:["Schema is null or not an object."]};let a={options:o,warnings:r,refStack:new Set,activeSchemas:new Set,remaining:o.maxNodes},i=L("root",t,[],0,a,!0);return a.remaining<=0&&r.push(`Schema node limit (${o.maxNodes}) reached; remaining branches were omitted.`),{root:i,warnings:r}}function Oe(e,n){if(n.length===0)return e;let o=JSON.stringify(n),r=[e],t=new Set;for(let a=0;a<r.length;a++){let i=r[a];if(!i||t.has(i))continue;if(t.add(i),JSON.stringify(i.metadata?.jsonPath)===o)return i;for(let c of i.children??[])r.push(c)}}function be(e){return e.kind==="enum"?"enum":e.kind==="ref"?"$ref":e.format?`${Ne(e.type)} (${e.format})`:Ne(e.type)}var Xe=["get","put","post","delete","options","head","patch","trace"],ze={showInternal:!1,showComponents:!1,showWebhooks:!0,expandOperationDetails:!1};function h(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)?e:null}function N(e){return typeof e=="string"&&e.trim().length>0?e.trim():void 0}function P(e){return typeof e=="boolean"?e:void 0}function Z(e){return Array.isArray(e)?e:void 0}function K(e,n){return n?!1:P(e["x-scalar-ignore"])===!0||P(e["x-internal"])===!0}function ee(e){let n=e["x-order"];return typeof n=="number"&&Number.isFinite(n)?n:void 0}function Ve(e){return N(e["x-displayName"])}function Ye(e,n){let o=[];for(let r of e){let t=h(r);if(!t)continue;let a=N(t.name),i=N(t.in);if(!a||!i)continue;let d=`${i}:${a}`;o.push({id:`${n}/parameters/${encodeURIComponent(d)}`,name:a,metadata:{paramIn:i,required:P(t.required)===!0,description:N(t.description),pointer:`${n}/parameters`,kind:"parameter"}})}return g(o)}function Qe(e,n){let o=[];for(let[r,t]of Object.entries(e)){let a=h(t);if(!a)continue;let i=N(a.description),d=h(a.content),c=[];if(d)for(let[u]of Object.entries(d))c.push({id:`${n}/responses/${encodeURIComponent(r)}/content/${encodeURIComponent(u)}`,name:u,metadata:{contentType:u,pointer:`${n}/responses/${encodeURIComponent(r)}/content/${encodeURIComponent(u)}`,kind:"content"}});o.push({id:`${n}/responses/${encodeURIComponent(r)}`,name:r,metadata:{statusCode:r,description:i,pointer:`${n}/responses/${encodeURIComponent(r)}`,kind:"response"},children:c.length>0?c:void 0})}return g(o)}function Ze(e,n){let o=[],r=Z(e.parameters);if(r?.length){let i=Ye(r,n);i.length>0&&o.push({id:`${n}/parameters`,name:"Parameters",children:i,metadata:{pointer:`${n}/parameters`,kind:"parameters"}})}let t=h(e.requestBody);if(t){let i=h(t.content),d=[];if(i)for(let[c]of Object.entries(i))d.push({id:`${n}/requestBody/content/${encodeURIComponent(c)}`,name:c,metadata:{contentType:c,pointer:`${n}/requestBody/content/${encodeURIComponent(c)}`,kind:"content"}});o.push({id:`${n}/requestBody`,name:"Request Body",metadata:{description:N(t.description),required:P(t.required)===!0,pointer:`${n}/requestBody`,kind:"request-body"},children:d.length>0?d:void 0})}let a=h(e.responses);if(a){let i=Qe(a,n);i.length>0&&o.push({id:`${n}/responses`,name:"Responses",children:i,metadata:{pointer:`${n}/responses`,kind:"responses"}})}return o}function en(e){let n=h(e.paths);if(!n)return[];let o=[];for(let[r,t]of Object.entries(n)){let a=h(t);if(a)for(let i of Xe){let d=a[i],c=h(d);if(!c)continue;let u=N(c.operationId),s=N(c.summary),p=N(c.description),m=Z(c.tags)?.filter(k=>typeof k=="string").map(k=>k.trim()).filter(k=>k.length>0)??[],f=s??u??`${i.toUpperCase()} ${r}`,T=u??`${i}:${r}`,l=`/paths/${encodeURIComponent(r)}/${i}`;o.push({id:T,path:r,method:i,name:f,summary:s,description:p,operationId:u,deprecated:P(c.deprecated)===!0,tags:m,pointer:l,raw:c})}}return o}function nn(e){let n=Z(e.tags);if(!n)return[];let o=[];for(let r of n){let t=h(r),a=N(t?.name);!a||!t||o.push({name:a,displayName:Ve(t)??a,description:N(t.description),parent:N(t.parent),order:ee(t)})}return o}function tn(e){return e.some(n=>n.parent!==void 0)}function J(e,n,o,r){let t=n.expandOperationDetails?Ze(e.raw,e.pointer):void 0;return{id:`op:${r}:${e.id}`,name:e.name,order:ee(e.raw),metadata:{method:e.method,path:e.path,operationId:e.operationId,deprecated:e.deprecated,summary:e.summary,description:e.description,pointer:e.pointer,source:o,kind:"operation"},children:t&&t.length>0?t:void 0}}function rn(e,n,o,r){let t=new Map;for(let s of n){if(K(s.raw,o.showInternal))continue;let p=s.tags.length>0?s.tags:["Other"];for(let m of p){let f=t.get(m)??[];f.push(s),t.set(m,f)}}let a=s=>{let m=(t.get(s.name)??[]).map(f=>J(f,o,"oas32-parent",s.name));return{id:`tag:${s.name}`,name:s.displayName,order:s.order,children:g(m),metadata:{description:s.description,source:"oas32-parent",kind:"tag"}}},i=new Set(e.map(s=>s.name)),d=[...e];for(let s of t.keys())s!=="Other"&&!i.has(s)&&d.push({name:s,displayName:s});let c=U(d,a,r),u=t.get("Other")??[];if(u.length>0&&!e.some(s=>s.name==="Other")){let s=u.map(p=>J(p,o,"fallback","Other"));c.push({id:"tag:Other",name:"Other",order:Number.MAX_SAFE_INTEGER,children:g(s),metadata:{source:"fallback",kind:"tag"}})}return g(c)}function on(e,n,o){let r=new Map,t=new Map;for(let d=0;d<e.length;d+=1)t.set(e[d].name,d);for(let d of n){if(K(d.raw,o.showInternal))continue;let c=d.tags.length>0?d.tags:["Other"];for(let u of c){let s=r.get(u)??[];s.push(d),r.set(u,s)}}let a=new Map;for(let d of e)a.set(d.name,d.displayName);let i=[];for(let[d,c]of r){let u=c.map(s=>J(s,o,"tag",d));i.push({id:`tag:${d}`,name:a.get(d)??d,order:d==="Other"?Number.MAX_SAFE_INTEGER:t.get(d),children:g(u),metadata:{source:"tag",kind:"tag"}})}return g(i)}function sn(e){return Array.isArray(e["x-tagGroups"])&&e["x-tagGroups"].length>0}function we(e,n,o=0,r={active:new Set,remaining:1e4,warned:!1}){if(!Array.isArray(e))return[];if(o>=128||r.active.has(e))return n.push("Nested tag groups were truncated at a cycle or the 128-level limit."),[];r.active.add(e);let t=[];for(let a of e){if(r.remaining<=0){r.warned||n.push("Tag group limit (10,000) reached; remaining groups were omitted."),r.warned=!0;break}let i=h(a);if(!i||typeof i.name!="string")continue;r.remaining--;let d={name:i.name};Array.isArray(i.tags)&&(d.tags=i.tags.filter(c=>typeof c=="string")),Array.isArray(i.groups)&&(d.groups=we(i.groups,n,o+1,r)),t.push(d)}return r.active.delete(e),t}function ke(e,n,o,r,t,a=0){let i=[];if(e.tags)for(let d of e.tags){let c=n.get(d);if(!c||c.length===0)continue;let u=c.map(s=>J(s,t,"tag-group",d));i.push({id:`tag:${d}`,name:o.get(d)??d,order:r.get(d),children:g(u),metadata:{source:"tag-group",kind:"tag"}})}if(e.groups)for(let d of e.groups)i.push(ke(d,n,o,r,t,a+1));return{id:`tag-group:${e.name}`,name:e.name,order:a*1e3,children:g(i),metadata:{source:"tag-group",kind:"tag-group"}}}function an(e,n,o,r,t){let a=new Map,i=new Map,d=new Map;for(let p=0;p<n.length;p+=1)i.set(n[p].name,p),d.set(n[p].name,n[p].displayName);for(let p of o){if(K(p.raw,r.showInternal))continue;let m=p.tags.length>0?p.tags:["Other"];for(let f of m){let T=a.get(f)??[];T.push(p),a.set(f,T)}}let u=we(e["x-tagGroups"],t).map(p=>ke(p,a,d,i,r)),s=a.get("Other");if(s&&s.length>0){let p=s.map(m=>J(m,r,"fallback","Other"));u.push({id:"tag:Other",name:"Other",order:Number.MAX_SAFE_INTEGER,children:g(p),metadata:{source:"fallback",kind:"tag"}})}return g(u)}function dn(e,n){if(!n.showComponents)return;let o=h(e.components),r=h(o?.schemas);if(!r)return;let t=[];for(let[a,i]of Object.entries(r)){let d=h(i);!d||K(d,n.showInternal)||t.push({id:`schema:${a}`,name:a,order:ee(d),metadata:{description:N(d.description),pointer:`/components/schemas/${encodeURIComponent(a)}`,source:"tag",kind:"schema"}})}if(t.length!==0)return{id:"section:components",name:"Components",order:Number.MAX_SAFE_INTEGER-1,children:g(t),metadata:{source:"tag",kind:"component"}}}function cn(e){let n=new Map,o=_(e);for(let r=o.length-1;r>=0;r--){let t=o[r].node,a=t.children?.map(d=>n.get(d)).filter(Boolean),i=(t.metadata?.kind==="operation"?1:0)+(a?.reduce((d,c)=>d+(c.metadata?.operationCount??0),0)??0);n.set(t,{...t,children:a,metadata:{...t.metadata,operationCount:i}})}return e.map(r=>n.get(r))}function De(e,n={}){let o={...ze,...n},r=[],t=h(e);if(!t)return{root:{id:"root",name:"API Documentation",children:[],metadata:{kind:"root"}},warnings:["Document is null or not an object."]};let a=en(t),i=nn(t),d;tn(i)?d=rn(i,a,o,r):sn(t)?d=an(t,i,a,o,r):d=on(i,a,o);let c=dn(t,o),u=cn([...d,...c?[c]:[]]);return{root:{id:"root",name:"API Documentation",children:g(u),metadata:{kind:"root"}},warnings:r}}0&&(module.exports={buildDocTree,buildOpenApiTree,buildSchemaTree,countNodes,filterTree,findNode,findPath,findSchemaNodeByPath,flattenTree,formatSchemaType,getBranchIds,getExpandableIds,getLeaves,getMaxDepth,insertChild,isTreeNode,moveNode,removeNode,reorderNode,sortNodes,sortTree,updateNode});
|
|
1
|
+
"use strict";var X=Object.defineProperty;var Se=Object.getOwnPropertyDescriptor;var xe=Object.getOwnPropertyNames;var Ie=Object.prototype.hasOwnProperty;var $e=(e,n)=>{for(var o in n)X(e,o,{get:n[o],enumerable:!0})},Ce=(e,n,o,r)=>{if(n&&typeof n=="object"||typeof n=="function")for(let t of xe(n))!Ie.call(e,t)&&t!==o&&X(e,t,{get:()=>n[t],enumerable:!(r=Se(n,t))||r.enumerable});return e};var Me=e=>Ce(X({},"__esModule",{value:!0}),e);var pn={};$e(pn,{buildDocTree:()=>Re,buildOpenApiTree:()=>le,buildSchemaTree:()=>Oe,countNodes:()=>se,filterTree:()=>ce,findNode:()=>M,findPath:()=>H,findSchemaNodeByPath:()=>be,flattenTree:()=>_,formatSchemaType:()=>we,getBranchIds:()=>pe,getExpandableIds:()=>z,getLeaves:()=>ie,getMaxDepth:()=>ae,insertChild:()=>ue,isTreeNode:()=>oe,moveNode:()=>ge,removeNode:()=>V,reorderNode:()=>fe,sortNodes:()=>g,sortTree:()=>de,updateNode:()=>E});module.exports=Me(pn);function oe(e){return e!=null}function*A(e,n=1/0){let o=new Set,r=[];for(let t=e.length-1;t>=0;t--)r.push({node:e[t],depth:1});for(;r.length;){let t=r.pop();if(o.has(t.node)||t.depth>n)continue;o.add(t.node),yield t;let a=t.node.children??[];for(let i=a.length-1;i>=0;i--)r.push({node:a[i],parent:t,depth:t.depth+1})}}function M(e,n){for(let{node:o}of A(e))if(o.id===n)return o}function H(e,n,o=[]){for(let r of A(e)){if(r.node.id!==n)continue;let t=[],a=r;for(;a;)t.push(a.node),a=a.parent;t.reverse();let i=[...o,...t];return{nodes:i,target:r.node,parent:i[i.length-2],ancestorIds:i.slice(0,-1).map(d=>d.id)}}return null}function ie(e){let n=[];for(let{node:o}of A(e))o.children?.length||n.push(o);return n}function se(e){let n=0;for(let o of A(e))n++;return n}function ae(e){let n=0;for(let o of A(e))n=Math.max(n,o.depth);return n}var Ee=new Intl.Collator("en-US",{numeric:!0,sensitivity:"base"});function g(e){return[...e].sort((n,o)=>{let r=(n.order??Number.MAX_SAFE_INTEGER)-(o.order??Number.MAX_SAFE_INTEGER);return(Number.isNaN(r)?0:r)||Ee.compare(n.name,o.name)||n.id.localeCompare(o.id)})}function U(e,n,o=()=>!0){let r=new Set,t=new Map,a=[{source:e,output:[],index:0}];for(;a.length;){let i=a[a.length-1];if(i.index<i.source.length){let s=i.source[i.index++];if(r.has(s))continue;if(t.has(s)){let p=t.get(s);p&&i.output.push(p)}else if(s.children?.length&&o(s))r.add(s),a.push({source:s.children,output:[],index:0,owner:s});else{let p=n(s);t.set(s,p),p&&i.output.push(p)}continue}a.pop();let d=i.source.length===i.output.length&&i.source.every((s,p)=>s===i.output[p])?i.source:i.output;if(!i.owner)return d;let c=i.owner,u=n(d===c.children?c:{...c,children:d});r.delete(c),t.set(c,u),u&&a[a.length-1].output.push(u)}return e}function de(e){return g(U(e,n=>n.children?.length?{...n,children:g(n.children)}:n))}function ce(e,n){let o=n.query.trim().toLowerCase();return o?U(e,r=>r.name.toLowerCase().includes(o)||r.id.toLowerCase().includes(o)||(n.keepAncestors??!0)&&r.children?.length?r:null):e}function z(e,n={}){let o=[];for(let{node:r,depth:t}of A(e,n.maxDepth??1/0))t<=(n.maxDepth??1/0)&&(!(n.onlyWithChildren??!0)||r.children?.length)&&o.push(r.id);return o}function pe(e){return z(e)}function _(e){return Array.from(A(e),({node:n,depth:o})=>({node:n,depth:o}))}function E(e,n,o){return U(e,r=>r.id===n?o(r):r,r=>r.id!==n)}function V(e,n){return U(e,o=>o.id===n?null:o,o=>o.id!==n)}function ue(e,n,o){return E(e,n,r=>({...r,children:[...r.children??[],o]}))}function me(e,n){return Math.max(0,Math.min(Number.isNaN(e)?0:Math.trunc(e),n))}function fe(e,n,o){let r=H(e,n);if(!r)return null;let t=r.parent?.children??e,a=t.indexOf(r.target),i=me(o,t.length-1),d={nodes:e,moved:r.target,parentId:r.parent?.id??null,fromIndex:a,toIndex:i};if(i===a)return d;let c=[...t];return c.splice(a,1),c.splice(i,0,r.target),{...d,nodes:r.parent?E(e,r.parent.id,u=>({...u,children:c})):c}}function ge(e,n,o,r){let t=M(e,n);if(!t||o!==null&&(!M(e,o)||M([t],o)))return null;let a=V(e,n),i=d=>{let c=[...d];return c.splice(me(r??c.length,c.length),0,t),c};return o===null?i(a):E(a,o,d=>({...d,children:i(d.children??[])}))}var x=require("@powerduck/openapi-parser/methods");function j(e,n,o){let r=new Map;for(let c of e)r.has(c.name)?o.push(`Duplicate tag "${c.name}" was ignored.`):r.set(c.name,c);let t=new Map;for(let c of r.values())c.parent&&!r.has(c.parent)&&o.push(`Tag "${c.name}" references unknown parent "${c.parent}", treating as root.`),t.set(c.name,c.parent&&r.has(c.parent)?c.parent:null);let a=new Set;for(let c of r.keys()){let u=new Set,s=c;for(;s!==null&&!a.has(s);){if(u.has(s)){o.push(`Circular tag reference detected at "${s}". Breaking cycle.`),t.set(s,null);break}u.add(s),s=t.get(s)??null}for(let p of u)a.add(p)}let i=new Map(Array.from(r,([c,u])=>[c,n(u)])),d=[];for(let[c,u]of i){let s=t.get(c);if(s==null)d.push(u);else{let p=i.get(s);(p.children??(p.children=[])).push(u)}}for(let c of i.values())c.children&&(c.children=g(c.children));return g(d)}var Ge={showInternal:!1,showComponents:!0,showWebhooks:!0,defaultExpandDepth:2};function y(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)?e:null}function w(e){return typeof e=="string"&&e.trim().length>0?e.trim():void 0}function qe(e){return typeof e=="number"&&Number.isFinite(e)?e:void 0}function L(e){return typeof e=="boolean"?e:void 0}function G(e){return Array.isArray(e)?e:void 0}function q(e,n){return n?!1:L(e["x-scalar-ignore"])===!0||L(e["x-internal"])===!0}function R(e){return qe(e["x-order"])}function Pe(e){return w(e["x-displayName"])}function Je(e){let n=y(e.paths);if(!n)return[];let o=[];for(let[r,t]of Object.entries(n)){let a=y(t);if(a)for(let[i,d]of(0,x.operationEntries)(a)){if(d==null)continue;let c=y(d);if(!c)continue;let u=w(c.operationId),s=w(c.summary),p=G(c.tags)?.filter(l=>typeof l=="string").map(l=>l.trim()).filter(l=>l.length>0)??[],m=s??u??`${i.toUpperCase()} ${r}`,f=u??`${i}:${r}`,T=`/paths/${encodeURIComponent(r)}/${(0,x.operationPath)(i,a).map(encodeURIComponent).join("/")}`;o.push({id:f,path:r,method:i,name:m,summary:s,operationId:u,deprecated:L(c.deprecated)===!0,tags:p,pointer:T,raw:c})}}return o}function Be(e){let n=G(e.tags);if(!n)return[];let o=[];for(let r of n){let t=y(r),a=w(t?.name);!a||!t||o.push({name:a,displayName:Pe(t)??a,description:w(t.description),parent:w(t.parent),order:R(t),raw:t})}return o}function Fe(e){return e.some(n=>n.parent!==void 0)}function Y(e){return{id:`op:root:${e.id}`,name:e.name,order:R(e.raw),metadata:{method:e.method,path:e.path,operationId:e.operationId,deprecated:e.deprecated,summary:e.summary,pointer:e.pointer,source:"fallback",kind:"operation"}}}function Ue(e,n,o,r){let t=new Map,a=[];for(let s of n)if(!q(s.raw,o.showInternal)){if(s.tags.length===0){a.push(s);continue}for(let p of s.tags){let m=t.get(p)??[];m.push(s),t.set(p,m)}}let i=s=>{let m=(t.get(s.name)??[]).map(f=>({id:`op:${s.name}:${f.id}`,name:f.name,order:R(f.raw),metadata:{method:f.method,path:f.path,operationId:f.operationId,deprecated:f.deprecated,summary:f.summary,pointer:f.pointer,source:"oas32-parent",kind:"operation"}}));return{id:`tag:${s.name}`,name:s.displayName,order:s.order,children:g(m),metadata:{source:"oas32-parent",kind:"tag"}}},d=new Set(e.map(s=>s.name)),c=[...e];for(let s of t.keys())d.has(s)||c.push({name:s,displayName:s,raw:{}});let u=j(c,i,r);return g([...u,...a.map(Y)])}function _e(e){let n=G(e["x-tagGroups"]);if(!n)return[];let o=(r,t)=>{let a=y(r),i=w(a?.name),d=G(a?.tags)?.filter(u=>typeof u=="string").map(u=>u.trim()).filter(u=>u.length>0)??[];if(!i)return null;let c=G(a?.groups)?.map((u,s)=>o(u,s)).filter(u=>u!==null)??[];return{name:i,tags:d,groups:c.length>0?c:void 0,order:R(a??{})??t}};return n.map((r,t)=>o(r,t)).filter(r=>r!==null)}function je(e,n,o,r){let t=new Map;for(let s of n)t.set(s.name,s.displayName);let a=new Map,i=[];for(let s of o)if(!q(s.raw,r.showInternal)){if(s.tags.length===0){i.push(s);continue}for(let p of s.tags){let m=a.get(p)??[];m.push(s),a.set(p,m)}}let d=s=>(a.get(s)??[]).map(m=>({id:`op:${s}:${m.id}`,name:m.name,order:R(m.raw),metadata:{method:m.method,path:m.path,operationId:m.operationId,deprecated:m.deprecated,summary:m.summary,pointer:m.pointer,source:"tag-group",kind:"operation"}})),c=s=>({id:`tag:${s}`,name:t.get(s)??s,children:g(d(s)),metadata:{source:"tag-group",kind:"tag"}}),u=s=>{let p=[];for(let m of s.tags)a.get(m)?.length&&p.push(c(m));for(let m of s.groups??[])p.push(u(m));return{id:`tag-group:${s.name}`,name:s.name,order:s.order,children:g(p),metadata:{source:"tag-group",kind:"tag-group"}}};return g([...e.map(u),...i.map(Y)])}function Le(e,n,o){let r=new Map,t=[],a=new Map;for(let p=0;p<e.length;p+=1){let m=e[p];a.set(m.name,m.order??p)}for(let p of n)if(!q(p.raw,o.showInternal)){if(p.tags.length===0){t.push(p);continue}for(let m of p.tags){let f=r.get(m)??[];f.push(p),r.set(m,f)}}let i=new Map;for(let p of e)i.set(p.name,p.displayName);let d=(p,m)=>{let T=(r.get(p)??[]).map(l=>({id:`op:${p}:${l.id}`,name:l.name,order:R(l.raw),metadata:{method:l.method,path:l.path,operationId:l.operationId,deprecated:l.deprecated,summary:l.summary,pointer:l.pointer,source:"tag",kind:"operation"}}));return{id:`tag:${p}`,name:i.get(p)??p,order:a.get(p)??m,children:g(T),metadata:{source:"tag",kind:"tag"}}},c=[],u=new Set;e.forEach((p,m)=>{u.add(p.name),c.push(d(p.name,m))});let s=e.length;for(let p of r.keys())u.has(p)||(c.push(d(p,s)),s+=1);return g([...c,...t.map(Y)])}function Ke(e,n){if(!n.showComponents)return;let o=y(e.components),r=y(o?.schemas);if(!r)return;let t=[];for(let[a,i]of Object.entries(r)){let d=y(i);!d||q(d,n.showInternal)||t.push({id:`schema:${a}`,name:a,order:R(d),metadata:{pointer:`/components/schemas/${encodeURIComponent(a)}`,source:"tag",kind:"schema"}})}if(t.length!==0)return{id:"section:components",name:"Components",order:Number.MAX_SAFE_INTEGER-1,children:g(t),metadata:{source:"section",kind:"section",section:"components"}}}function ve(e,n){if(!n.showWebhooks)return;let o=y(e.webhooks);if(!o)return;let r=[];for(let[t,a]of Object.entries(o)){let i=y(a);if(i)for(let[d,c]of(0,x.operationEntries)(i)){let u=y(c);if(!u||q(u,n.showInternal))continue;let s=w(u.operationId),p=w(u.summary),m=p??s??`${d.toUpperCase()} ${t}`;r.push({id:`webhook:${t}:${d}`,name:m,order:R(u),metadata:{method:d,path:t,operationId:s,deprecated:L(u.deprecated)===!0,summary:p,pointer:`/webhooks/${encodeURIComponent(t)}/${(0,x.operationPath)(d,i).map(encodeURIComponent).join("/")}`,source:"tag",kind:"webhook"}})}}if(r.length!==0)return{id:"section:webhooks",name:"Webhooks",order:Number.MAX_SAFE_INTEGER-2,children:g(r),metadata:{source:"section",kind:"section",section:"webhooks"}}}function le(e,n={}){let o={...Ge,...n},r=[],t=y(e);if(!t)return{root:{id:"root",name:"OpenAPI",children:[],metadata:{kind:"root"}},warnings:["Document is null or not an object."]};let a=Je(t),i=Be(t),d;if(Fe(i))d=Ue(i,a,o,r);else{let m=_e(t);m.length>0?d=je(m,i,a,o):d=Le(i,a,o)}let c=ve(t,o),u=Ke(t,o),p=[{id:"section:apis",name:"APIs",children:d,metadata:{kind:"section",source:"section",section:"apis"},order:0},...c?[c]:[],...u?[u]:[]];return{root:{id:"root",name:"OpenAPI",children:g(p),metadata:{kind:"root"}},warnings:r}}var he={openapi:0,info:1,servers:2,paths:3,webhooks:4,components:5,security:6,tags:7,externalDocs:8,jsonSchemaDialect:9},Q={maxDepth:8,maxNodes:1e4,showDeprecated:!0,expandCombinators:!0,showArrayItems:!0},Te=new Set(["string","number","integer","boolean","null"]);function P(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)?e:null}function Z(e){return typeof e=="string"&&e.trim().length>0?e.trim():void 0}function Ne(e){return typeof e=="boolean"?e:void 0}function ee(e){return Array.isArray(e)?e:void 0}function We(e){let n=e.type;if(typeof n=="string"||Array.isArray(n)&&n.every(o=>typeof o=="string"))return n}function Xe(e){return e?Array.isArray(e)?e.every(n=>Te.has(n)):Te.has(e):!1}function He(e){if(!e)return"unknown";switch(Array.isArray(e)?e[0]:e){case"object":return"object";case"array":return"array";case"string":return"string";case"number":return"number";case"integer":return"integer";case"boolean":return"boolean";case"null":return"null";default:return"unknown"}}function ye(e){return e?Array.isArray(e)?e.join(" | "):e:"any"}function I(e){return e.map(n=>n.replace(/[\\.\[\]]/g,o=>`\\${o}`)).join(".")||"root"}function K(e,n,o,r,t,a){t.remaining--;let i=We(n),d=Z(n.format),c=Z(n.description),u=Ne(n.deprecated)===!0,s=He(i),p={jsonPath:o,type:i,format:d,required:a,deprecated:u,description:c,kind:s},m=Z(n.$ref);if(m){if(t.refStack.has(m))return t.warnings.push(`Circular $ref detected at ${o.join(".")}: ${m}. Breaking recursion.`),{id:I(o),name:e,metadata:{...p,kind:"ref",isLeaf:!0}};t.refStack.add(m)}let f,T=Xe(i),l=t.activeSchemas.has(n);if(l&&t.warnings.push(`Circular schema object detected at ${I(o)}.`),l||r>=t.options.maxDepth||t.remaining<=0)return m&&t.refStack.delete(m),{id:I(o),name:e,metadata:{...p,isLeaf:!0}};t.activeSchemas.add(n);let k=P(n.properties);if(k){let S=ee(n.required)??[],O=new Set(S.filter(b=>typeof b=="string")),F=[];for(let[b,$]of Object.entries(k)){if(t.remaining<=0)break;let C=P($);C&&(!t.options.showDeprecated&&Ne(C.deprecated)===!0||F.push(K(b,C,[...o,"properties",b],r+1,t,O.has(b))))}f=[...f??[],...g(F)],T=!1}if(t.remaining>0&&t.options.showArrayItems&&i==="array"){let S=P(n.items);if(S){let O=K("items",S,[...o,"items"],r+1,t,!1);f=[...f??[],O],T=!1}else p.hasItems=!1}if(t.options.expandCombinators){let S=[{key:"allOf",kind:"allOf"},{key:"anyOf",kind:"anyOf"},{key:"oneOf",kind:"oneOf"}];for(let{key:O,kind:F}of S){if(t.remaining<=0)break;let b=ee(n[O]);if(!b?.length)continue;t.remaining--;let $=[];for(let D=0;D<b.length&&t.remaining>0;D++){let Ae=b[D],re=P(Ae);if(!re){t.remaining--,$.push({id:I([...o,O,String(D)]),name:`[${D}]`,metadata:{jsonPath:[...o,O,String(D)],kind:"unknown",isLeaf:!0}});continue}$.push(K(`[${D}]`,re,[...o,O,String(D)],r+1,t,!1))}let C={id:I([...o,O]),name:O,children:g($),metadata:{jsonPath:[...o,O],kind:F}};f=[...f??[],C],T=!1}}return ee(n.enum)?.length&&!f?.length&&(p.kind="enum",T=!0),m&&t.refStack.delete(m),t.activeSchemas.delete(n),{id:I(o),name:e,order:Object.prototype.hasOwnProperty.call(he,e)?he[e]:void 0,metadata:{...p,isLeaf:T},children:f}}function Oe(e,n={}){let o={...Q,...n};o.maxDepth=Number.isFinite(o.maxDepth)?Math.min(128,Math.max(0,Math.trunc(o.maxDepth))):Q.maxDepth,o.maxNodes=Number.isFinite(o.maxNodes)?Math.min(1e5,Math.max(1,Math.trunc(o.maxNodes))):Q.maxNodes;let r=[],t=P(e);if(!t)return{root:{id:"root",name:"Schema",metadata:{jsonPath:[],kind:"root",isLeaf:!0}},warnings:["Schema is null or not an object."]};let a={options:o,warnings:r,refStack:new Set,activeSchemas:new Set,remaining:o.maxNodes},i=K("root",t,[],0,a,!0);return a.remaining<=0&&r.push(`Schema node limit (${o.maxNodes}) reached; remaining branches were omitted.`),{root:i,warnings:r}}function be(e,n){if(n.length===0)return e;let o=JSON.stringify(n),r=[e],t=new Set;for(let a=0;a<r.length;a++){let i=r[a];if(!i||t.has(i))continue;if(t.add(i),JSON.stringify(i.metadata?.jsonPath)===o)return i;for(let c of i.children??[])r.push(c)}}function we(e){return e.kind==="enum"?"enum":e.kind==="ref"?"$ref":e.format?`${ye(e.type)} (${e.format})`:ye(e.type)}var v=require("@powerduck/openapi-parser/methods");var ze={showInternal:!1,showComponents:!1,showWebhooks:!0,expandOperationDetails:!1};function h(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)?e:null}function N(e){return typeof e=="string"&&e.trim().length>0?e.trim():void 0}function J(e){return typeof e=="boolean"?e:void 0}function ne(e){return Array.isArray(e)?e:void 0}function W(e,n){return n?!1:J(e["x-scalar-ignore"])===!0||J(e["x-internal"])===!0}function te(e){let n=e["x-order"];return typeof n=="number"&&Number.isFinite(n)?n:void 0}function Ve(e){return N(e["x-displayName"])}function Ye(e,n){let o=[];for(let r of e){let t=h(r);if(!t)continue;let a=N(t.name),i=N(t.in);if(!a||!i)continue;let d=`${i}:${a}`;o.push({id:`${n}/parameters/${encodeURIComponent(d)}`,name:a,metadata:{paramIn:i,required:J(t.required)===!0,description:N(t.description),pointer:`${n}/parameters`,kind:"parameter"}})}return g(o)}function Qe(e,n){let o=[];for(let[r,t]of Object.entries(e)){let a=h(t);if(!a)continue;let i=N(a.description),d=h(a.content),c=[];if(d)for(let[u]of Object.entries(d))c.push({id:`${n}/responses/${encodeURIComponent(r)}/content/${encodeURIComponent(u)}`,name:u,metadata:{contentType:u,pointer:`${n}/responses/${encodeURIComponent(r)}/content/${encodeURIComponent(u)}`,kind:"content"}});o.push({id:`${n}/responses/${encodeURIComponent(r)}`,name:r,metadata:{statusCode:r,description:i,pointer:`${n}/responses/${encodeURIComponent(r)}`,kind:"response"},children:c.length>0?c:void 0})}return g(o)}function Ze(e,n){let o=[],r=ne(e.parameters);if(r?.length){let i=Ye(r,n);i.length>0&&o.push({id:`${n}/parameters`,name:"Parameters",children:i,metadata:{pointer:`${n}/parameters`,kind:"parameters"}})}let t=h(e.requestBody);if(t){let i=h(t.content),d=[];if(i)for(let[c]of Object.entries(i))d.push({id:`${n}/requestBody/content/${encodeURIComponent(c)}`,name:c,metadata:{contentType:c,pointer:`${n}/requestBody/content/${encodeURIComponent(c)}`,kind:"content"}});o.push({id:`${n}/requestBody`,name:"Request Body",metadata:{description:N(t.description),required:J(t.required)===!0,pointer:`${n}/requestBody`,kind:"request-body"},children:d.length>0?d:void 0})}let a=h(e.responses);if(a){let i=Qe(a,n);i.length>0&&o.push({id:`${n}/responses`,name:"Responses",children:i,metadata:{pointer:`${n}/responses`,kind:"responses"}})}return o}function en(e){let n=h(e.paths);if(!n)return[];let o=[];for(let[r,t]of Object.entries(n)){let a=h(t);if(a)for(let[i,d]of(0,v.operationEntries)(a)){let c=h(d);if(!c)continue;let u=N(c.operationId),s=N(c.summary),p=N(c.description),m=ne(c.tags)?.filter(k=>typeof k=="string").map(k=>k.trim()).filter(k=>k.length>0)??[],f=s??u??`${i.toUpperCase()} ${r}`,T=u??`${i}:${r}`,l=`/paths/${encodeURIComponent(r)}/${(0,v.operationPath)(i,a).map(encodeURIComponent).join("/")}`;o.push({id:T,path:r,method:i,name:f,summary:s,description:p,operationId:u,deprecated:J(c.deprecated)===!0,tags:m,pointer:l,raw:c})}}return o}function nn(e){let n=ne(e.tags);if(!n)return[];let o=[];for(let r of n){let t=h(r),a=N(t?.name);!a||!t||o.push({name:a,displayName:Ve(t)??a,description:N(t.description),parent:N(t.parent),order:te(t)})}return o}function tn(e){return e.some(n=>n.parent!==void 0)}function B(e,n,o,r){let t=n.expandOperationDetails?Ze(e.raw,e.pointer):void 0;return{id:`op:${r}:${e.id}`,name:e.name,order:te(e.raw),metadata:{method:e.method,path:e.path,operationId:e.operationId,deprecated:e.deprecated,summary:e.summary,description:e.description,pointer:e.pointer,source:o,kind:"operation"},children:t&&t.length>0?t:void 0}}function rn(e,n,o,r){let t=new Map;for(let s of n){if(W(s.raw,o.showInternal))continue;let p=s.tags.length>0?s.tags:["Other"];for(let m of p){let f=t.get(m)??[];f.push(s),t.set(m,f)}}let a=s=>{let m=(t.get(s.name)??[]).map(f=>B(f,o,"oas32-parent",s.name));return{id:`tag:${s.name}`,name:s.displayName,order:s.order,children:g(m),metadata:{description:s.description,source:"oas32-parent",kind:"tag"}}},i=new Set(e.map(s=>s.name)),d=[...e];for(let s of t.keys())s!=="Other"&&!i.has(s)&&d.push({name:s,displayName:s});let c=j(d,a,r),u=t.get("Other")??[];if(u.length>0&&!e.some(s=>s.name==="Other")){let s=u.map(p=>B(p,o,"fallback","Other"));c.push({id:"tag:Other",name:"Other",order:Number.MAX_SAFE_INTEGER,children:g(s),metadata:{source:"fallback",kind:"tag"}})}return g(c)}function on(e,n,o){let r=new Map,t=new Map;for(let d=0;d<e.length;d+=1)t.set(e[d].name,d);for(let d of n){if(W(d.raw,o.showInternal))continue;let c=d.tags.length>0?d.tags:["Other"];for(let u of c){let s=r.get(u)??[];s.push(d),r.set(u,s)}}let a=new Map;for(let d of e)a.set(d.name,d.displayName);let i=[];for(let[d,c]of r){let u=c.map(s=>B(s,o,"tag",d));i.push({id:`tag:${d}`,name:a.get(d)??d,order:d==="Other"?Number.MAX_SAFE_INTEGER:t.get(d),children:g(u),metadata:{source:"tag",kind:"tag"}})}return g(i)}function sn(e){return Array.isArray(e["x-tagGroups"])&&e["x-tagGroups"].length>0}function ke(e,n,o=0,r={active:new Set,remaining:1e4,warned:!1}){if(!Array.isArray(e))return[];if(o>=128||r.active.has(e))return n.push("Nested tag groups were truncated at a cycle or the 128-level limit."),[];r.active.add(e);let t=[];for(let a of e){if(r.remaining<=0){r.warned||n.push("Tag group limit (10,000) reached; remaining groups were omitted."),r.warned=!0;break}let i=h(a);if(!i||typeof i.name!="string")continue;r.remaining--;let d={name:i.name};Array.isArray(i.tags)&&(d.tags=i.tags.filter(c=>typeof c=="string")),Array.isArray(i.groups)&&(d.groups=ke(i.groups,n,o+1,r)),t.push(d)}return r.active.delete(e),t}function De(e,n,o,r,t,a=0){let i=[];if(e.tags)for(let d of e.tags){let c=n.get(d);if(!c||c.length===0)continue;let u=c.map(s=>B(s,t,"tag-group",d));i.push({id:`tag:${d}`,name:o.get(d)??d,order:r.get(d),children:g(u),metadata:{source:"tag-group",kind:"tag"}})}if(e.groups)for(let d of e.groups)i.push(De(d,n,o,r,t,a+1));return{id:`tag-group:${e.name}`,name:e.name,order:a*1e3,children:g(i),metadata:{source:"tag-group",kind:"tag-group"}}}function an(e,n,o,r,t){let a=new Map,i=new Map,d=new Map;for(let p=0;p<n.length;p+=1)i.set(n[p].name,p),d.set(n[p].name,n[p].displayName);for(let p of o){if(W(p.raw,r.showInternal))continue;let m=p.tags.length>0?p.tags:["Other"];for(let f of m){let T=a.get(f)??[];T.push(p),a.set(f,T)}}let u=ke(e["x-tagGroups"],t).map(p=>De(p,a,d,i,r)),s=a.get("Other");if(s&&s.length>0){let p=s.map(m=>B(m,r,"fallback","Other"));u.push({id:"tag:Other",name:"Other",order:Number.MAX_SAFE_INTEGER,children:g(p),metadata:{source:"fallback",kind:"tag"}})}return g(u)}function dn(e,n){if(!n.showComponents)return;let o=h(e.components),r=h(o?.schemas);if(!r)return;let t=[];for(let[a,i]of Object.entries(r)){let d=h(i);!d||W(d,n.showInternal)||t.push({id:`schema:${a}`,name:a,order:te(d),metadata:{description:N(d.description),pointer:`/components/schemas/${encodeURIComponent(a)}`,source:"tag",kind:"schema"}})}if(t.length!==0)return{id:"section:components",name:"Components",order:Number.MAX_SAFE_INTEGER-1,children:g(t),metadata:{source:"tag",kind:"component"}}}function cn(e){let n=new Map,o=_(e);for(let r=o.length-1;r>=0;r--){let t=o[r].node,a=t.children?.map(d=>n.get(d)).filter(Boolean),i=(t.metadata?.kind==="operation"?1:0)+(a?.reduce((d,c)=>d+(c.metadata?.operationCount??0),0)??0);n.set(t,{...t,children:a,metadata:{...t.metadata,operationCount:i}})}return e.map(r=>n.get(r))}function Re(e,n={}){let o={...ze,...n},r=[],t=h(e);if(!t)return{root:{id:"root",name:"API Documentation",children:[],metadata:{kind:"root"}},warnings:["Document is null or not an object."]};let a=en(t),i=nn(t),d;tn(i)?d=rn(i,a,o,r):sn(t)?d=an(t,i,a,o,r):d=on(i,a,o);let c=dn(t,o),u=cn([...d,...c?[c]:[]]);return{root:{id:"root",name:"API Documentation",children:g(u),metadata:{kind:"root"}},warnings:r}}0&&(module.exports={buildDocTree,buildOpenApiTree,buildSchemaTree,countNodes,filterTree,findNode,findPath,findSchemaNodeByPath,flattenTree,formatSchemaType,getBranchIds,getExpandableIds,getLeaves,getMaxDepth,insertChild,isTreeNode,moveNode,removeNode,reorderNode,sortNodes,sortTree,updateNode});
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as l,b as n,c as q,d as s,e as u}from"./chunk-
|
|
1
|
+
import{a as l,b as n,c as q,d as s,e as u}from"./chunk-F5XBVD6Q.js";import"./chunk-NHPRTISE.js";import{a as o,b as r,c as e,d as f,e as m,f as p,g as t,h as x,i as a,j as b,k as c,l as d,m as g,n as h,o as i,p as j,q as k}from"./chunk-AHHDXXHL.js";export{u as buildDocTree,l as buildOpenApiTree,n as buildSchemaTree,m as countNodes,a as filterTree,r as findNode,e as findPath,q as findSchemaNodeByPath,d as flattenTree,s as formatSchemaType,c as getBranchIds,b as getExpandableIds,f as getLeaves,p as getMaxDepth,i as insertChild,o as isTreeNode,k as moveNode,h as removeNode,j as reorderNode,t as sortNodes,x as sortTree,g as updateNode};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@powerduck/tree",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.22",
|
|
4
4
|
"description": "Extensible tree component for API navigation, schema exploration, and documentation. Supports OpenAPI 3.2 nested tags, x-tagGroups, and custom data sources.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "powerduck",
|
|
@@ -40,7 +40,6 @@
|
|
|
40
40
|
],
|
|
41
41
|
"scripts": {
|
|
42
42
|
"build": "tsup",
|
|
43
|
-
"postbuild": "ln -sf /Users/electron/powerduck-react/node_modules/react node_modules/react && ln -sf /Users/electron/powerduck-react/node_modules/react-dom node_modules/react-dom",
|
|
44
43
|
"test": "vitest run",
|
|
45
44
|
"test:watch": "vitest",
|
|
46
45
|
"typecheck": "tsc --noEmit",
|
|
@@ -68,7 +67,7 @@
|
|
|
68
67
|
}
|
|
69
68
|
},
|
|
70
69
|
"dependencies": {
|
|
71
|
-
"@powerduck/openapi-parser": "^0.3.
|
|
70
|
+
"@powerduck/openapi-parser": "^0.3.9",
|
|
72
71
|
"react-icons": "^5.7.0"
|
|
73
72
|
},
|
|
74
73
|
"devDependencies": {
|
package/dist/chunk-FUR7BOZE.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{g as f,l as X}from"./chunk-AHHDXXHL.js";function P(e,t,r){let o=new Map;for(let c of e)o.has(c.name)?r.push(`Duplicate tag "${c.name}" was ignored.`):o.set(c.name,c);let n=new Map;for(let c of o.values())c.parent&&!o.has(c.parent)&&r.push(`Tag "${c.name}" references unknown parent "${c.parent}", treating as root.`),n.set(c.name,c.parent&&o.has(c.parent)?c.parent:null);let d=new Set;for(let c of o.keys()){let u=new Set,a=c;for(;a!==null&&!d.has(a);){if(u.has(a)){r.push(`Circular tag reference detected at "${a}". Breaking cycle.`),n.set(a,null);break}u.add(a),a=n.get(a)??null}for(let p of u)d.add(p)}let i=new Map(Array.from(o,([c,u])=>[c,t(u)])),s=[];for(let[c,u]of i){let a=n.get(c);if(a==null)s.push(u);else{let p=i.get(a);(p.children??(p.children=[])).push(u)}}for(let c of i.values())c.children&&(c.children=f(c.children));return f(s)}var z=["get","put","post","delete","options","head","patch","trace"],te={showInternal:!1,showComponents:!0,showWebhooks:!0,defaultExpandDepth:2};function N(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)?e:null}function w(e){return typeof e=="string"&&e.trim().length>0?e.trim():void 0}function oe(e){return typeof e=="number"&&Number.isFinite(e)?e:void 0}function B(e){return typeof e=="boolean"?e:void 0}function x(e){return Array.isArray(e)?e:void 0}function C(e,t){return t?!1:B(e["x-scalar-ignore"])===!0||B(e["x-internal"])===!0}function A(e){return oe(e["x-order"])}function re(e){return w(e["x-displayName"])}function ae(e){let t=N(e.paths);if(!t)return[];let r=[];for(let[o,n]of Object.entries(t)){let d=N(n);if(d)for(let i of z){let s=d[i];if(s==null)continue;let c=N(s);if(!c)continue;let u=w(c.operationId),a=w(c.summary),p=x(c.tags)?.filter(l=>typeof l=="string").map(l=>l.trim()).filter(l=>l.length>0)??[],m=a??u??`${i.toUpperCase()} ${o}`,g=u??`${i}:${o}`,T=`/paths/${encodeURIComponent(o)}/${i}`;r.push({id:g,path:o,method:i,name:m,summary:a,operationId:u,deprecated:B(c.deprecated)===!0,tags:p,pointer:T,raw:c})}}return r}function se(e){let t=x(e.tags);if(!t)return[];let r=[];for(let o of t){let n=N(o),d=w(n?.name);!d||!n||r.push({name:d,displayName:re(n)??d,description:w(n.description),parent:w(n.parent),order:A(n),raw:n})}return r}function ie(e){return e.some(t=>t.parent!==void 0)}function _(e){return{id:`op:root:${e.id}`,name:e.name,order:A(e.raw),metadata:{method:e.method,path:e.path,operationId:e.operationId,deprecated:e.deprecated,summary:e.summary,pointer:e.pointer,source:"fallback",kind:"operation"}}}function de(e,t,r,o){let n=new Map,d=[];for(let a of t)if(!C(a.raw,r.showInternal)){if(a.tags.length===0){d.push(a);continue}for(let p of a.tags){let m=n.get(p)??[];m.push(a),n.set(p,m)}}let i=a=>{let m=(n.get(a.name)??[]).map(g=>({id:`op:${a.name}:${g.id}`,name:g.name,order:A(g.raw),metadata:{method:g.method,path:g.path,operationId:g.operationId,deprecated:g.deprecated,summary:g.summary,pointer:g.pointer,source:"oas32-parent",kind:"operation"}}));return{id:`tag:${a.name}`,name:a.displayName,order:a.order,children:f(m),metadata:{source:"oas32-parent",kind:"tag"}}},s=new Set(e.map(a=>a.name)),c=[...e];for(let a of n.keys())s.has(a)||c.push({name:a,displayName:a,raw:{}});let u=P(c,i,o);return f([...u,...d.map(_)])}function ce(e){let t=x(e["x-tagGroups"]);if(!t)return[];let r=(o,n)=>{let d=N(o),i=w(d?.name),s=x(d?.tags)?.filter(u=>typeof u=="string").map(u=>u.trim()).filter(u=>u.length>0)??[];if(!i)return null;let c=x(d?.groups)?.map((u,a)=>r(u,a)).filter(u=>u!==null)??[];return{name:i,tags:s,groups:c.length>0?c:void 0,order:A(d??{})??n}};return t.map((o,n)=>r(o,n)).filter(o=>o!==null)}function pe(e,t,r,o){let n=new Map;for(let a of t)n.set(a.name,a.displayName);let d=new Map,i=[];for(let a of r)if(!C(a.raw,o.showInternal)){if(a.tags.length===0){i.push(a);continue}for(let p of a.tags){let m=d.get(p)??[];m.push(a),d.set(p,m)}}let s=a=>(d.get(a)??[]).map(m=>({id:`op:${a}:${m.id}`,name:m.name,order:A(m.raw),metadata:{method:m.method,path:m.path,operationId:m.operationId,deprecated:m.deprecated,summary:m.summary,pointer:m.pointer,source:"tag-group",kind:"operation"}})),c=a=>({id:`tag:${a}`,name:n.get(a)??a,children:f(s(a)),metadata:{source:"tag-group",kind:"tag"}}),u=a=>{let p=[];for(let m of a.tags)d.get(m)?.length&&p.push(c(m));for(let m of a.groups??[])p.push(u(m));return{id:`tag-group:${a.name}`,name:a.name,order:a.order,children:f(p),metadata:{source:"tag-group",kind:"tag-group"}}};return f([...e.map(u),...i.map(_)])}function ue(e,t,r){let o=new Map,n=[],d=new Map;for(let p=0;p<e.length;p+=1){let m=e[p];d.set(m.name,m.order??p)}for(let p of t)if(!C(p.raw,r.showInternal)){if(p.tags.length===0){n.push(p);continue}for(let m of p.tags){let g=o.get(m)??[];g.push(p),o.set(m,g)}}let i=new Map;for(let p of e)i.set(p.name,p.displayName);let s=(p,m)=>{let T=(o.get(p)??[]).map(l=>({id:`op:${p}:${l.id}`,name:l.name,order:A(l.raw),metadata:{method:l.method,path:l.path,operationId:l.operationId,deprecated:l.deprecated,summary:l.summary,pointer:l.pointer,source:"tag",kind:"operation"}}));return{id:`tag:${p}`,name:i.get(p)??p,order:d.get(p)??m,children:f(T),metadata:{source:"tag",kind:"tag"}}},c=[],u=new Set;e.forEach((p,m)=>{u.add(p.name),c.push(s(p.name,m))});let a=e.length;for(let p of o.keys())u.has(p)||(c.push(s(p,a)),a+=1);return f([...c,...n.map(_)])}function me(e,t){if(!t.showComponents)return;let r=N(e.components),o=N(r?.schemas);if(!o)return;let n=[];for(let[d,i]of Object.entries(o)){let s=N(i);!s||C(s,t.showInternal)||n.push({id:`schema:${d}`,name:d,order:A(s),metadata:{pointer:`/components/schemas/${encodeURIComponent(d)}`,source:"tag",kind:"schema"}})}if(n.length!==0)return{id:"section:components",name:"Components",order:Number.MAX_SAFE_INTEGER-1,children:f(n),metadata:{source:"section",kind:"section",section:"components"}}}function ge(e,t){if(!t.showWebhooks)return;let r=N(e.webhooks);if(!r)return;let o=[];for(let[n,d]of Object.entries(r)){let i=N(d);if(i)for(let s of z){let c=i[s],u=N(c);if(!u||C(u,t.showInternal))continue;let a=w(u.operationId),p=w(u.summary),m=p??a??`${s.toUpperCase()} ${n}`;o.push({id:`webhook:${n}:${s}`,name:m,order:A(u),metadata:{method:s,path:n,operationId:a,deprecated:B(u.deprecated)===!0,summary:p,pointer:`/webhooks/${encodeURIComponent(n)}/${s}`,source:"tag",kind:"webhook"}})}}if(o.length!==0)return{id:"section:webhooks",name:"Webhooks",order:Number.MAX_SAFE_INTEGER-2,children:f(o),metadata:{source:"section",kind:"section",section:"webhooks"}}}function fe(e,t={}){let r={...te,...t},o=[],n=N(e);if(!n)return{root:{id:"root",name:"OpenAPI",children:[],metadata:{kind:"root"}},warnings:["Document is null or not an object."]};let d=ae(n),i=se(n),s;if(ie(i))s=de(i,d,r,o);else{let m=ce(n);m.length>0?s=pe(m,i,d,r):s=ue(i,d,r)}let c=ge(n,r),u=me(n,r),p=[{id:"section:apis",name:"APIs",children:s,metadata:{kind:"section",source:"section",section:"apis"},order:0},...c?[c]:[],...u?[u]:[]];return{root:{id:"root",name:"OpenAPI",children:f(p),metadata:{kind:"root"}},warnings:o}}var V={openapi:0,info:1,servers:2,paths:3,webhooks:4,components:5,security:6,tags:7,externalDocs:8,jsonSchemaDialect:9},j={maxDepth:8,maxNodes:1e4,showDeprecated:!0,expandCombinators:!0,showArrayItems:!0},Y=new Set(["string","number","integer","boolean","null"]);function M(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)?e:null}function F(e){return typeof e=="string"&&e.trim().length>0?e.trim():void 0}function Q(e){return typeof e=="boolean"?e:void 0}function L(e){return Array.isArray(e)?e:void 0}function le(e){let t=e.type;if(typeof t=="string"||Array.isArray(t)&&t.every(r=>typeof r=="string"))return t}function he(e){return e?Array.isArray(e)?e.every(t=>Y.has(t)):Y.has(e):!1}function Te(e){if(!e)return"unknown";switch(Array.isArray(e)?e[0]:e){case"object":return"object";case"array":return"array";case"string":return"string";case"number":return"number";case"integer":return"integer";case"boolean":return"boolean";case"null":return"null";default:return"unknown"}}function Z(e){return e?Array.isArray(e)?e.join(" | "):e:"any"}function S(e){return e.map(t=>t.replace(/[\\.\[\]]/g,r=>`\\${r}`)).join(".")||"root"}function E(e,t,r,o,n,d){n.remaining--;let i=le(t),s=F(t.format),c=F(t.description),u=Q(t.deprecated)===!0,a=Te(i),p={jsonPath:r,type:i,format:s,required:d,deprecated:u,description:c,kind:a},m=F(t.$ref);if(m){if(n.refStack.has(m))return n.warnings.push(`Circular $ref detected at ${r.join(".")}: ${m}. Breaking recursion.`),{id:S(r),name:e,metadata:{...p,kind:"ref",isLeaf:!0}};n.refStack.add(m)}let g,T=he(i),l=n.activeSchemas.has(t);if(l&&n.warnings.push(`Circular schema object detected at ${S(r)}.`),l||o>=n.options.maxDepth||n.remaining<=0)return m&&n.refStack.delete(m),{id:S(r),name:e,metadata:{...p,isLeaf:!0}};n.activeSchemas.add(t);let k=M(t.properties);if(k){let R=L(t.required)??[],y=new Set(R.filter(b=>typeof b=="string")),J=[];for(let[b,$]of Object.entries(k)){if(n.remaining<=0)break;let I=M($);I&&(!n.options.showDeprecated&&Q(I.deprecated)===!0||J.push(E(b,I,[...r,"properties",b],o+1,n,y.has(b))))}g=[...g??[],...f(J)],T=!1}if(n.remaining>0&&n.options.showArrayItems&&i==="array"){let R=M(t.items);if(R){let y=E("items",R,[...r,"items"],o+1,n,!1);g=[...g??[],y],T=!1}else p.hasItems=!1}if(n.options.expandCombinators){let R=[{key:"allOf",kind:"allOf"},{key:"anyOf",kind:"anyOf"},{key:"oneOf",kind:"oneOf"}];for(let{key:y,kind:J}of R){if(n.remaining<=0)break;let b=L(t[y]);if(!b?.length)continue;n.remaining--;let $=[];for(let D=0;D<b.length&&n.remaining>0;D++){let ne=b[D],W=M(ne);if(!W){n.remaining--,$.push({id:S([...r,y,String(D)]),name:`[${D}]`,metadata:{jsonPath:[...r,y,String(D)],kind:"unknown",isLeaf:!0}});continue}$.push(E(`[${D}]`,W,[...r,y,String(D)],o+1,n,!1))}let I={id:S([...r,y]),name:y,children:f($),metadata:{jsonPath:[...r,y],kind:J}};g=[...g??[],I],T=!1}}return L(t.enum)?.length&&!g?.length&&(p.kind="enum",T=!0),m&&n.refStack.delete(m),n.activeSchemas.delete(t),{id:S(r),name:e,order:Object.prototype.hasOwnProperty.call(V,e)?V[e]:void 0,metadata:{...p,isLeaf:T},children:g}}function Oe(e,t={}){let r={...j,...t};r.maxDepth=Number.isFinite(r.maxDepth)?Math.min(128,Math.max(0,Math.trunc(r.maxDepth))):j.maxDepth,r.maxNodes=Number.isFinite(r.maxNodes)?Math.min(1e5,Math.max(1,Math.trunc(r.maxNodes))):j.maxNodes;let o=[],n=M(e);if(!n)return{root:{id:"root",name:"Schema",metadata:{jsonPath:[],kind:"root",isLeaf:!0}},warnings:["Schema is null or not an object."]};let d={options:r,warnings:o,refStack:new Set,activeSchemas:new Set,remaining:r.maxNodes},i=E("root",n,[],0,d,!0);return d.remaining<=0&&o.push(`Schema node limit (${r.maxNodes}) reached; remaining branches were omitted.`),{root:i,warnings:o}}function Ne(e,t){if(t.length===0)return e;let r=JSON.stringify(t),o=[e],n=new Set;for(let d=0;d<o.length;d++){let i=o[d];if(!i||n.has(i))continue;if(n.add(i),JSON.stringify(i.metadata?.jsonPath)===r)return i;for(let c of i.children??[])o.push(c)}}function ye(e){return e.kind==="enum"?"enum":e.kind==="ref"?"$ref":e.format?`${Z(e.type)} (${e.format})`:Z(e.type)}var be=["get","put","post","delete","options","head","patch","trace"],we={showInternal:!1,showComponents:!1,showWebhooks:!0,expandOperationDetails:!1};function h(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)?e:null}function O(e){return typeof e=="string"&&e.trim().length>0?e.trim():void 0}function q(e){return typeof e=="boolean"?e:void 0}function K(e){return Array.isArray(e)?e:void 0}function U(e,t){return t?!1:q(e["x-scalar-ignore"])===!0||q(e["x-internal"])===!0}function H(e){let t=e["x-order"];return typeof t=="number"&&Number.isFinite(t)?t:void 0}function ke(e){return O(e["x-displayName"])}function De(e,t){let r=[];for(let o of e){let n=h(o);if(!n)continue;let d=O(n.name),i=O(n.in);if(!d||!i)continue;let s=`${i}:${d}`;r.push({id:`${t}/parameters/${encodeURIComponent(s)}`,name:d,metadata:{paramIn:i,required:q(n.required)===!0,description:O(n.description),pointer:`${t}/parameters`,kind:"parameter"}})}return f(r)}function Ae(e,t){let r=[];for(let[o,n]of Object.entries(e)){let d=h(n);if(!d)continue;let i=O(d.description),s=h(d.content),c=[];if(s)for(let[u]of Object.entries(s))c.push({id:`${t}/responses/${encodeURIComponent(o)}/content/${encodeURIComponent(u)}`,name:u,metadata:{contentType:u,pointer:`${t}/responses/${encodeURIComponent(o)}/content/${encodeURIComponent(u)}`,kind:"content"}});r.push({id:`${t}/responses/${encodeURIComponent(o)}`,name:o,metadata:{statusCode:o,description:i,pointer:`${t}/responses/${encodeURIComponent(o)}`,kind:"response"},children:c.length>0?c:void 0})}return f(r)}function Re(e,t){let r=[],o=K(e.parameters);if(o?.length){let i=De(o,t);i.length>0&&r.push({id:`${t}/parameters`,name:"Parameters",children:i,metadata:{pointer:`${t}/parameters`,kind:"parameters"}})}let n=h(e.requestBody);if(n){let i=h(n.content),s=[];if(i)for(let[c]of Object.entries(i))s.push({id:`${t}/requestBody/content/${encodeURIComponent(c)}`,name:c,metadata:{contentType:c,pointer:`${t}/requestBody/content/${encodeURIComponent(c)}`,kind:"content"}});r.push({id:`${t}/requestBody`,name:"Request Body",metadata:{description:O(n.description),required:q(n.required)===!0,pointer:`${t}/requestBody`,kind:"request-body"},children:s.length>0?s:void 0})}let d=h(e.responses);if(d){let i=Ae(d,t);i.length>0&&r.push({id:`${t}/responses`,name:"Responses",children:i,metadata:{pointer:`${t}/responses`,kind:"responses"}})}return r}function Se(e){let t=h(e.paths);if(!t)return[];let r=[];for(let[o,n]of Object.entries(t)){let d=h(n);if(d)for(let i of be){let s=d[i],c=h(s);if(!c)continue;let u=O(c.operationId),a=O(c.summary),p=O(c.description),m=K(c.tags)?.filter(k=>typeof k=="string").map(k=>k.trim()).filter(k=>k.length>0)??[],g=a??u??`${i.toUpperCase()} ${o}`,T=u??`${i}:${o}`,l=`/paths/${encodeURIComponent(o)}/${i}`;r.push({id:T,path:o,method:i,name:g,summary:a,description:p,operationId:u,deprecated:q(c.deprecated)===!0,tags:m,pointer:l,raw:c})}}return r}function $e(e){let t=K(e.tags);if(!t)return[];let r=[];for(let o of t){let n=h(o),d=O(n?.name);!d||!n||r.push({name:d,displayName:ke(n)??d,description:O(n.description),parent:O(n.parent),order:H(n)})}return r}function Ie(e){return e.some(t=>t.parent!==void 0)}function G(e,t,r,o){let n=t.expandOperationDetails?Re(e.raw,e.pointer):void 0;return{id:`op:${o}:${e.id}`,name:e.name,order:H(e.raw),metadata:{method:e.method,path:e.path,operationId:e.operationId,deprecated:e.deprecated,summary:e.summary,description:e.description,pointer:e.pointer,source:r,kind:"operation"},children:n&&n.length>0?n:void 0}}function xe(e,t,r,o){let n=new Map;for(let a of t){if(U(a.raw,r.showInternal))continue;let p=a.tags.length>0?a.tags:["Other"];for(let m of p){let g=n.get(m)??[];g.push(a),n.set(m,g)}}let d=a=>{let m=(n.get(a.name)??[]).map(g=>G(g,r,"oas32-parent",a.name));return{id:`tag:${a.name}`,name:a.displayName,order:a.order,children:f(m),metadata:{description:a.description,source:"oas32-parent",kind:"tag"}}},i=new Set(e.map(a=>a.name)),s=[...e];for(let a of n.keys())a!=="Other"&&!i.has(a)&&s.push({name:a,displayName:a});let c=P(s,d,o),u=n.get("Other")??[];if(u.length>0&&!e.some(a=>a.name==="Other")){let a=u.map(p=>G(p,r,"fallback","Other"));c.push({id:"tag:Other",name:"Other",order:Number.MAX_SAFE_INTEGER,children:f(a),metadata:{source:"fallback",kind:"tag"}})}return f(c)}function Ce(e,t,r){let o=new Map,n=new Map;for(let s=0;s<e.length;s+=1)n.set(e[s].name,s);for(let s of t){if(U(s.raw,r.showInternal))continue;let c=s.tags.length>0?s.tags:["Other"];for(let u of c){let a=o.get(u)??[];a.push(s),o.set(u,a)}}let d=new Map;for(let s of e)d.set(s.name,s.displayName);let i=[];for(let[s,c]of o){let u=c.map(a=>G(a,r,"tag",s));i.push({id:`tag:${s}`,name:d.get(s)??s,order:s==="Other"?Number.MAX_SAFE_INTEGER:n.get(s),children:f(u),metadata:{source:"tag",kind:"tag"}})}return f(i)}function Me(e){return Array.isArray(e["x-tagGroups"])&&e["x-tagGroups"].length>0}function v(e,t,r=0,o={active:new Set,remaining:1e4,warned:!1}){if(!Array.isArray(e))return[];if(r>=128||o.active.has(e))return t.push("Nested tag groups were truncated at a cycle or the 128-level limit."),[];o.active.add(e);let n=[];for(let d of e){if(o.remaining<=0){o.warned||t.push("Tag group limit (10,000) reached; remaining groups were omitted."),o.warned=!0;break}let i=h(d);if(!i||typeof i.name!="string")continue;o.remaining--;let s={name:i.name};Array.isArray(i.tags)&&(s.tags=i.tags.filter(c=>typeof c=="string")),Array.isArray(i.groups)&&(s.groups=v(i.groups,t,r+1,o)),n.push(s)}return o.active.delete(e),n}function ee(e,t,r,o,n,d=0){let i=[];if(e.tags)for(let s of e.tags){let c=t.get(s);if(!c||c.length===0)continue;let u=c.map(a=>G(a,n,"tag-group",s));i.push({id:`tag:${s}`,name:r.get(s)??s,order:o.get(s),children:f(u),metadata:{source:"tag-group",kind:"tag"}})}if(e.groups)for(let s of e.groups)i.push(ee(s,t,r,o,n,d+1));return{id:`tag-group:${e.name}`,name:e.name,order:d*1e3,children:f(i),metadata:{source:"tag-group",kind:"tag-group"}}}function qe(e,t,r,o,n){let d=new Map,i=new Map,s=new Map;for(let p=0;p<t.length;p+=1)i.set(t[p].name,p),s.set(t[p].name,t[p].displayName);for(let p of r){if(U(p.raw,o.showInternal))continue;let m=p.tags.length>0?p.tags:["Other"];for(let g of m){let T=d.get(g)??[];T.push(p),d.set(g,T)}}let u=v(e["x-tagGroups"],n).map(p=>ee(p,d,s,i,o)),a=d.get("Other");if(a&&a.length>0){let p=a.map(m=>G(m,o,"fallback","Other"));u.push({id:"tag:Other",name:"Other",order:Number.MAX_SAFE_INTEGER,children:f(p),metadata:{source:"fallback",kind:"tag"}})}return f(u)}function Ge(e,t){if(!t.showComponents)return;let r=h(e.components),o=h(r?.schemas);if(!o)return;let n=[];for(let[d,i]of Object.entries(o)){let s=h(i);!s||U(s,t.showInternal)||n.push({id:`schema:${d}`,name:d,order:H(s),metadata:{description:O(s.description),pointer:`/components/schemas/${encodeURIComponent(d)}`,source:"tag",kind:"schema"}})}if(n.length!==0)return{id:"section:components",name:"Components",order:Number.MAX_SAFE_INTEGER-1,children:f(n),metadata:{source:"tag",kind:"component"}}}function Je(e){let t=new Map,r=X(e);for(let o=r.length-1;o>=0;o--){let n=r[o].node,d=n.children?.map(s=>t.get(s)).filter(Boolean),i=(n.metadata?.kind==="operation"?1:0)+(d?.reduce((s,c)=>s+(c.metadata?.operationCount??0),0)??0);t.set(n,{...n,children:d,metadata:{...n.metadata,operationCount:i}})}return e.map(o=>t.get(o))}function Pe(e,t={}){let r={...we,...t},o=[],n=h(e);if(!n)return{root:{id:"root",name:"API Documentation",children:[],metadata:{kind:"root"}},warnings:["Document is null or not an object."]};let d=Se(n),i=$e(n),s;Ie(i)?s=xe(i,d,r,o):Me(n)?s=qe(n,i,d,r,o):s=Ce(i,d,r);let c=Ge(n,r),u=Je([...s,...c?[c]:[]]);return{root:{id:"root",name:"API Documentation",children:f(u),metadata:{kind:"root"}},warnings:o}}export{fe as a,Oe as b,Ne as c,ye as d,Pe as e};
|