@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
6 lines (5 loc) • 1.97 kB
JavaScript
/*
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
See https://js.arcgis.com/4.32/esri/copyright.txt for details.
*/
import{collectClassPaths as e}from"./utils.js";function n(e){const n=o(e),t=[],a=p(n),c={};i("api","",e.api,n,a.api,c);const s={};i("spec","",e.spec,n,a.spec,s);const u=r(n);for(const i in c){const e=c[i],n=s[i],p=u[e.container.id],r=`${e.container.name} (${n.container.name})${e.container.typeValue?` <${e.container.typeValue}>`:""}`;t.push({name:r,api:e,spec:n,indent:p})}return t}function t(e,n,p,r,o,c,s,u,f){if(s.has(r))return f;for(const d of r.properties){const l=n?`${n}.${d.name}`:d.name,m=p?`${p}.${d.name}`:d.name,y=o[m];if(y){const n=c[y[e].id];f.push({name:l,type:"ref",ref:y,refName:n,required:d.required}),i(e,m,y[e],o,c,u)}else"string"==typeof d.type?f.push(a(l,d)):(s.add(r),t(e,l,m,d.type,o,c,s,u,f))}return s.delete(r),f}function i(e,n,i,p,r,o){if(i.id in o)return o;const a={container:i,text:null,props:[]};return r[i.id].forEach((e=>o[e]=a)),t(e,"",n,i,p,r,new Set,o,a.props),a.props.sort(c),o}function p(e){const n={api:{},spec:{}};for(const t in e){const i=e[t],p=`${i.api.name} (${i.spec.name})${i.api.typeValue?` <${i.api.typeValue}>`:""}`;let r=n.api[i.api.id];r||(r=new Set,n.api[i.api.id]=r),r.add(p);let o=n.spec[i.spec.id];o||(o=new Set,n.spec[i.spec.id]=o),o.add(p)}return n}function r(e){const n={};for(const t in e){const i=t?t.split(".").length:0,p=e[t].api.id;n[p]=p in n?Math.min(i,n[p]):i}return n}function o(n){const t=e(n.api),i=e(n.spec),p={};p[""]={api:n.api,spec:n.spec};for(const e in t){const n=i[e];if(n){const i=t[e];p[e]={api:i,spec:n}}}return p}function a(e,n){return{name:e,type:n.enum||("string"==typeof n.type?n.type:""),default:JSON.stringify(n.default),required:n.required}}function c(e,n){const t=e.name.localeCompare(n.name);if(0!==t)return t;const i=(e.type||"").localeCompare(n.type||"");return 0!==i?i:(e.default||"").localeCompare(n.default||"")}export{n as collect};