@kanonak-protocol/sdk 3.48.0 → 3.50.0
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/dist/browser.js +1 -1
- package/dist/chunk-2WQR7OHH.js +116 -0
- package/dist/chunk-64TVBQFR.js +1 -0
- package/dist/chunk-DC774EQL.js +1 -0
- package/dist/chunk-GQQAXZDK.js +1 -0
- package/dist/chunk-H2LEQLVD.js +1 -0
- package/dist/{chunk-EIOMVL5H.js → chunk-IIODYDKS.js} +1 -1
- package/dist/chunk-IO5RBK3J.js +1 -0
- package/dist/{chunk-NIJV5UYW.js → chunk-KDJYZ2YM.js} +1 -1
- package/dist/chunk-N224PFBI.js +1 -0
- package/dist/chunk-PPORQS4M.js +59 -0
- package/dist/chunk-Q4DKP5DO.js +1 -0
- package/dist/chunk-XWKCX5ZS.js +2 -0
- package/dist/index.d.ts +4 -4
- package/dist/index.js +13 -13
- package/dist/look/LookRenderer.d.ts +10 -2
- package/dist/look/displayValue.d.ts +27 -0
- package/dist/look/index.d.ts +1 -0
- package/dist/parsing/KanonakObjectParser.d.ts +6 -0
- package/dist/parsing/index.js +1 -1
- package/dist/reasoning/KanonakVocabulary.d.ts +35 -8
- package/dist/reasoning/index.d.ts +1 -1
- package/dist/reasoning/index.js +1 -1
- package/dist/resolution/TypeDirectedResolver.d.ts +36 -0
- package/dist/resolution/index.d.ts +2 -0
- package/dist/resolution/index.js +1 -1
- package/dist/search/SearchIndex.d.ts +51 -0
- package/dist/search/index.d.ts +2 -0
- package/dist/search/index.js +6 -0
- package/dist/server/index.js +1 -1
- package/dist/transformations/index.js +1 -1
- package/dist/uri-helpers/index.js +1 -1
- package/dist/validation/index.d.ts +1 -1
- package/dist/validation/index.js +1 -1
- package/dist/validation/rules/repository/DisplayLensScopeRule.d.ts +27 -0
- package/dist/validation/rules/repository/index.d.ts +1 -0
- package/package.json +9 -2
- package/dist/chunk-2JQMUZWN.js +0 -1
- package/dist/chunk-4TJZIM7A.js +0 -1
- package/dist/chunk-FJ35VIV6.js +0 -1
- package/dist/chunk-FMYLEPMC.js +0 -1
- package/dist/chunk-HEMBMX7T.js +0 -1
- package/dist/chunk-IOJMTW4T.js +0 -1
- package/dist/chunk-KPLFNUIL.js +0 -116
- package/dist/chunk-RCI34BYO.js +0 -2
- package/dist/chunk-SKTXJV4T.js +0 -54
package/dist/browser.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as ge,b as fe,c as me,d as C,e as E,f as d}from"./chunk-
|
|
1
|
+
import{a as ge,b as fe,c as me,d as C,e as E,f as d}from"./chunk-XWKCX5ZS.js";import{a as Qe}from"./chunk-IIODYDKS.js";import"./chunk-3NEUHF7E.js";import{a as H,b as L,c as W,d as F}from"./chunk-VHUJSHH7.js";import{a as Pe,b as we,c as he}from"./chunk-KDJYZ2YM.js";import{a as ke,b as be}from"./chunk-DC774EQL.js";import"./chunk-NIGFQYVA.js";import{A as We,B as Fe,C as Ge,E as Xe,a as Ke,b as xe,c as Se,d as Re,f as De,g as Be,h as Ce,i as Ee,j as je,k as ve,l as _e,m as Ie,n as Ae,o as Te,p as Oe,q as Ve,r as $e,s as Ue,t as ze,u as Me,v as Ne,w as Je,x as He,y as qe,z as Le}from"./chunk-PPORQS4M.js";import{c as pe}from"./chunk-IO5RBK3J.js";import{a as Y,c as le}from"./chunk-H2LEQLVD.js";import{a as q}from"./chunk-7CUTGGH3.js";import{a as ye}from"./chunk-N224PFBI.js";import"./chunk-Q4DKP5DO.js";import{a as O,b as V,c as $,d as U,e as z,f as M,g as N,h as J}from"./chunk-FQHALFRR.js";import{b as ue,c as de}from"./chunk-64TVBQFR.js";import{a as G,b as X,c as Q,d as ee,e as re,f as te,g as ne,h as oe,i as se,j as ie,k as ae,l as ce}from"./chunk-W6T7MOKY.js";import{a as Z}from"./chunk-FUUTGGJS.js";var j="kanonak-credentials",u="credentials",Ye=1,f=class{async get(r){let e=d(r),t=await h();return new Promise((o,a)=>{let s=t.transaction(u,"readonly"),i=s.objectStore(u).get(e);i.onsuccess=()=>o(i.result??null),i.onerror=()=>a(new Error(`IndexedDB read failed for '${e}': ${i.error?.message}`)),s.oncomplete=()=>t.close()})}async store(r,e){let t=d(r),o=await h();return new Promise((a,s)=>{let l=o.transaction(u,"readwrite"),c=l.objectStore(u).put(e,t);c.onsuccess=()=>a(),c.onerror=()=>s(new Error(`IndexedDB write failed for '${t}': ${c.error?.message}`)),l.oncomplete=()=>o.close()})}async remove(r){let e=d(r),t=await h();return new Promise((o,a)=>{let s=t.transaction(u,"readwrite"),i=s.objectStore(u).delete(e);i.onsuccess=()=>o(),i.onerror=()=>a(new Error(`IndexedDB delete failed for '${e}': ${i.error?.message}`)),s.oncomplete=()=>t.close()})}async list(){let r=await h();return new Promise((e,t)=>{let o=r.transaction(u,"readonly"),s=o.objectStore(u).getAllKeys();s.onsuccess=()=>e(s.result??[]),s.onerror=()=>t(new Error(`IndexedDB list failed: ${s.error?.message}`)),o.oncomplete=()=>r.close()})}};function h(){return new Promise((n,r)=>{let e=indexedDB.open(j,Ye);e.onupgradeneeded=()=>{let t=e.result;t.objectStoreNames.contains(u)||t.createObjectStore(u)},e.onsuccess=()=>n(e.result),e.onerror=()=>r(new Error(`Failed to open IndexedDB '${j}': ${e.error?.message}
|
|
2
2
|
Credential storage requires IndexedDB support in your browser.`))})}async function _(){let n=await crypto.subtle.generateKey({name:"ECDSA",namedCurve:"P-256"},!1,["sign"]),r=await crypto.subtle.exportKey("jwk",n.publicKey);return{signingKey:n.privateKey,publicKeyJwk:r}}async function k(){let n=await crypto.subtle.generateKey({name:"ECDSA",namedCurve:"P-256"},!0,["sign"]),r=await crypto.subtle.exportKey("jwk",n.publicKey),e=await crypto.subtle.exportKey("jwk",n.privateKey);return{keys:{signingKey:n.privateKey,publicKeyJwk:r},dpopKeyPair:{publicKey:r,privateKey:e}}}async function b(n){return{signingKey:await crypto.subtle.importKey("jwk",n.privateKey,{name:"ECDSA",namedCurve:"P-256"},!1,["sign"]),publicKeyJwk:n.publicKey}}async function K(n,r,e,t,o){let a={alg:"ES256",typ:"dpop+jwt",jwk:{kty:n.publicKeyJwk.kty,crv:n.publicKeyJwk.crv,x:n.publicKeyJwk.x,y:n.publicKeyJwk.y}},s={jti:crypto.randomUUID(),htm:r.toUpperCase(),htu:e,iat:Math.floor(Date.now()/1e3)};return t&&(s.ath=await er(t)),o&&(s.nonce=o),await Ze(a,s,n.signingKey)}function x(n){return!n||n.length===0?!1:n.some(r=>r.toUpperCase()==="ES256")}async function Ze(n,r,e){let t=v(JSON.stringify(n)),o=v(JSON.stringify(r)),a=new TextEncoder().encode(`${t}.${o}`),s=await crypto.subtle.sign({name:"ECDSA",hash:"SHA-256"},e,a),l=D(s);return`${t}.${o}.${l}`}async function er(n){let r=new TextEncoder().encode(n),e=await crypto.subtle.digest("SHA-256",r);return D(e)}function v(n){let r=new TextEncoder().encode(n);return D(r.buffer)}function D(n){let r=new Uint8Array(n),e="";for(let t=0;t<r.length;t++)e+=String.fromCharCode(r[t]);return btoa(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}var rr=300*1e3,S=class{credentialBackend;callbackUrl;constructor(r){this.credentialBackend=new f,this.callbackUrl=r??`${window.location.origin}/browser/callback.html`}async authorize(r){let e=d(r),t=await this.discover(e);if(!t)return{success:!1,error:`No OAuth discovery endpoint found for '${e}'.`};if(!t.authorizationEndpoint||!t.tokenEndpoint)return{success:!1,error:`OAuth metadata incomplete for '${e}'.`};let o=x(t.dpopSigningAlgValuesSupported),a=null,s=null;if(o){let g=await k();a=g.keys,s=g.dpopKeyPair}let l=await this.credentialBackend.get(e),i=l?.clientId??null,c=l?.clientSecret??null;if(!i&&t.registrationEndpoint){let g=await this.registerClient(t.registrationEndpoint);if(!g)return{success:!1,error:`Dynamic client registration failed for '${e}'.`};i=g.clientId,c=g.clientSecret??null}if(!i)return{success:!1,error:`No OAuth client credentials for '${e}'.`};let m=tr(),p=await nr(m),R=or(),A=sr(t.authorizationEndpoint,i,this.callbackUrl,R,p),y=await this.openAuthPopup(A,R);if(!y)return{success:!1,error:"Authorization timed out or was cancelled."};if(y.error)return{success:!1,error:`Authorization failed: ${y.error}`};if(!y.code)return{success:!1,error:"No authorization code received."};if(y.state!==R)return{success:!1,error:"State mismatch \u2014 possible CSRF attack."};let P=await this.exchangeCode(t.tokenEndpoint,i,c,y.code,this.callbackUrl,m,a);if(!P)return{success:!1,error:"Token exchange failed."};let T={clientId:i,clientSecret:c,accessToken:P.accessToken??null,refreshToken:P.refreshToken??null,expiresAt:P.expiresIn?new Date(Date.now()+P.expiresIn*1e3).toISOString():null,tokenEndpoint:t.tokenEndpoint,dpopKeyPair:s};return await this.credentialBackend.store(e,T),{success:!0,host:e}}async getCredentialWithKeys(r){let e=await this.credentialBackend.get(r);if(!e)return null;let t=null;return e.dpopKeyPair&&(t=await b(e.dpopKeyPair)),{credential:e,dpopKeys:t}}async logout(r){let e=d(r);return await this.credentialBackend.remove(e),{success:!0,host:e}}async listAuthenticated(){return this.credentialBackend.list()}async discover(r){for(let e of[`https://${r}/.well-known/oauth-authorization-server`,`https://${r}/.well-known/openid-configuration`])try{let t=await fetch(e);if(!t.ok)continue;let o=await t.json();return{issuer:w(o.issuer),authorizationEndpoint:w(o.authorization_endpoint),tokenEndpoint:w(o.token_endpoint),registrationEndpoint:w(o.registration_endpoint),revocationEndpoint:w(o.revocation_endpoint),dpopSigningAlgValuesSupported:I(o.dpop_signing_alg_values_supported),codeChallengeMethodsSupported:I(o.code_challenge_methods_supported)}}catch{continue}return null}async registerClient(r){try{let e=await fetch(r,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({client_name:"Kanonak Browser",redirect_uris:[this.callbackUrl],grant_types:["authorization_code","refresh_token"],response_types:["code"],token_endpoint_auth_method:"none"})});if(!e.ok)return null;let t=await e.json(),o=t.client_id;return o?{clientId:o,clientSecret:t.client_secret}:null}catch{return null}}openAuthPopup(r,e){return new Promise(t=>{let o=window.open(r,"kanonak-auth","width=500,height=700,menubar=no,toolbar=no,location=yes,status=no");if(!o){t(null);return}let a=setTimeout(()=>{i(),t(null)},rr),s=c=>{c.origin===window.location.origin&&(!c.data||c.data.type!=="kanonak-auth-callback"||(i(),t({code:c.data.code??void 0,state:c.data.state??void 0,error:c.data.error??void 0})))},l=setInterval(()=>{o.closed&&(i(),t(null))},500),i=()=>{clearTimeout(a),clearInterval(l),window.removeEventListener("message",s);try{o.close()}catch{}};window.addEventListener("message",s)})}async exchangeCode(r,e,t,o,a,s,l){let i=new URLSearchParams({grant_type:"authorization_code",client_id:e,code:o,redirect_uri:a,code_verifier:s});t&&i.set("client_secret",t);let c={"Content-Type":"application/x-www-form-urlencoded"};l&&(c.DPoP=await K(l,"POST",r));try{let m=await fetch(r,{method:"POST",headers:c,body:i.toString()});if(!m.ok)return null;let p=await m.json();return{accessToken:p.access_token,refreshToken:p.refresh_token,expiresIn:typeof p.expires_in=="number"?p.expires_in:void 0}}catch{return null}}};function tr(){let n=new Uint8Array(32);return crypto.getRandomValues(n),B(n.buffer)}async function nr(n){let r=new TextEncoder().encode(n),e=await crypto.subtle.digest("SHA-256",r);return B(e)}function or(){let n=new Uint8Array(16);return crypto.getRandomValues(n),B(n.buffer)}function sr(n,r,e,t,o){let a=new URLSearchParams({client_id:r,response_type:"code",redirect_uri:e,state:t,code_challenge:o,code_challenge_method:"S256"});return`${n}?${a}`}function B(n){let r=new Uint8Array(n),e="";for(let t=0;t<r.length;t++)e+=String.fromCharCode(r[t]);return btoa(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function w(n){return typeof n=="string"?n:null}function I(n){return Array.isArray(n)?n.filter(r=>typeof r=="string"):null}export{Ne as AmbiguousReferenceRule,se as BooleanStatement,f as BrowserCredentialBackend,S as BrowserOAuthFlow,Fe as ClassDefinitionRule,Ie as ClassHierarchyCycleRule,X as DefinedKanonak,ze as DefinitionPropertyReferenceRule,fe as EdgeType,Y as EmbeddedKanonak,je as EmbeddedKanonakTypeRule,ae as EmbeddedStatement,me as GraphBuilder,F as HttpKanonakDocumentRepository,ve as ImportExistenceRule,H as InMemoryKanonakDocumentRepository,Ue as InstancePropertyReferenceRule,G as Kanonak,we as KanonakDocumentPositions,pe as KanonakObjectParser,Xe as KanonakObjectValidator,q as KanonakParser,Z as KanonakUri,ke as KanonakUriBuilder,ce as ListStatement,Ge as MarkdownLinkRule,le as MarkdownStatement,$e as NamespaceImportCycleRule,De as NamespacePrefixRule,ge as NodeType,oe as NumberStatement,He as ObjectPropertyImportRule,qe as ObjectPropertyValueValidationRule,Se as OntologyValidationError,Ke as OntologyValidationResult,Le as PropertyDomainRule,Ae as PropertyHierarchyCycleRule,Pe as PropertyMetadata,Je as PropertyRangeReferenceRule,Te as PropertyRangeRequiredRule,Ce as PropertyTypeSpecificityRule,We as PropertyValueTypeRule,L as PublisherConfigResolver,W as PublisherIndex,ee as ReferenceKanonak,ie as ReferenceStatement,Be as ResourceNamingRule,ue as ResourceResolver,ye as ResourceTypeClassifier,te as ScalarStatement,re as Statement,ne as StringStatement,Oe as SubClassOfReferenceRule,Ve as SubPropertyOfReferenceRule,Q as SubjectKanonak,Ee as SubjectKanonakTypeRequiredRule,de as TypeResolver,_e as UnresolvedReferenceRule,Re as ValidationContext,xe as ValidationSeverity,Me as XsdImportRule,x as browserServerSupportsDPoP,O as compareVersions,K as createBrowserDPoPProof,U as createVersion,Qe as findDerivation,be as findInstancesByType,$ as formatVersion,k as generateBrowserDPoPKeyPair,_ as generateBrowserDPoPKeys,E as hasValidToken,b as importDPoPKeys,M as isCompatibleVersion,C as isExpired,N as isMajorCompatible,d as normalizeHost,z as parseVersionString,he as parseWithPositions,J as pickHighestDocument,V as versionsEqual};
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import{a as he}from"./chunk-NIGFQYVA.js";import{a as se,c as Ye}from"./chunk-H2LEQLVD.js";import{a as Fe,f as Ie,h as Ee,i as ve,k as qe}from"./chunk-Q4DKP5DO.js";import{a as we,e as We}from"./chunk-FQHALFRR.js";import{c as ee,d as I,g as J,h as de,i as pe,j as M,k as ne,l as B}from"./chunk-W6T7MOKY.js";import{a as ze}from"./chunk-FUUTGGJS.js";var me="kanonak.org",Qe="look",_e="core-rdf",_n={publisher:me,package_:Qe,name:"displayLabel"},Sn={publisher:me,package_:Qe,name:"displaySummary"},Rn={publisher:me,package_:_e,name:"type"},yn={publisher:me,package_:_e,name:"subClassOf"},Kn={publisher:me,package_:_e,name:"label"},Ln={publisher:me,package_:_e,name:"comment"},Je=new ze(me,_e,"Resource");function C(f,e){let t=Ze(f,e,_n)??Kn,n=Ze(f,e,Sn)??Ln,a=Ee(e,t)??e.name,r=Ee(e,n);return{label:a,summary:r}}function Ze(f,e,t){let n=ve(e,t);if(n)return n;let a=new Set,r=Xe(e,Rn);for(;r.length>0;){let s=r.shift(),o=Fe(s);if(a.has(o))continue;a.add(o);let i=Ie(f,s);if(!i)continue;let c=ve(i,t);if(c)return c;r.push(...Xe(i,yn))}if(!a.has(Fe(Je))){let s=Ie(f,Je);if(s){let o=ve(s,t);if(o)return o}}}function Xe(f,e){let t=ve(f,e);if(t)return[t];let n=[];for(let a of qe(f,e))a instanceof I&&n.push(a.subject);return n}function nn(f){let e=f.replace(/\r\n/g,`
|
|
2
|
+
`).split(`
|
|
3
|
+
`),t=[],n=0;for(;n<e.length;){let a=e[n];if(a.trim()===""){n++;continue}let r=/^(\s*)```(\S*)\s*$/.exec(a);if(r){let i=r[2],c=[];for(n++;n<e.length&&!/^(\s*)```\s*$/.test(e[n]);)c.push(e[n]),n++;n++;let l=tn(c.join(`
|
|
4
|
+
`)),p=i?` class="language-${an(i)}"`:"";t.push(`<pre><code${p}>${l}</code></pre>`);continue}let s=/^(#{1,6})\s+(.*)$/.exec(a);if(s){let i=s[1].length,c=be(s[2].trim());t.push(`<h${i}>${c}</h${i}>`),n++;continue}if(a.includes("|")&&n+1<e.length&&en(e[n+1])){let i=Te(a),c=xn(e[n+1]);n+=2;let l=[];for(;n<e.length&&e[n].trim()!==""&&e[n].includes("|");)l.push(Te(e[n])),n++;t.push(Un(i,c,l));continue}if(/^\s*[-*]\s+/.test(a)){let i=[];for(;n<e.length&&/^\s*[-*]\s+/.test(e[n]);){let c=[e[n].replace(/^\s*[-*]\s+/,"")];for(n++;n<e.length&&e[n].trim()!==""&&!/^\s*[-*]\s+/.test(e[n])&&!/^\s*\d+\.\s+/.test(e[n]);)c.push(e[n]),n++;n<e.length&&e[n].trim()===""&&n++,i.push(`<li>${be(c.join(" ").trim())}</li>`)}t.push(`<ul>
|
|
5
|
+
${i.join(`
|
|
6
|
+
`)}
|
|
7
|
+
</ul>`);continue}if(/^\s*\d+\.\s+/.test(a)){let i=[];for(;n<e.length&&/^\s*\d+\.\s+/.test(e[n]);){let c=[e[n].replace(/^\s*\d+\.\s+/,"")];for(n++;n<e.length&&e[n].trim()!==""&&!/^\s*\d+\.\s+/.test(e[n])&&!/^\s*[-*]\s+/.test(e[n]);)c.push(e[n]),n++;n<e.length&&e[n].trim()===""&&n++,i.push(`<li>${be(c.join(" ").trim())}</li>`)}t.push(`<ol>
|
|
8
|
+
${i.join(`
|
|
9
|
+
`)}
|
|
10
|
+
</ol>`);continue}let o=[a];for(n++;n<e.length&&e[n].trim()!==""&&!/^(#{1,6})\s+/.test(e[n])&&!/^(\s*)```/.test(e[n])&&!/^\s*[-*]\s+/.test(e[n])&&!/^\s*\d+\.\s+/.test(e[n])&&!(e[n].includes("|")&&n+1<e.length&&en(e[n+1]));)o.push(e[n]),n++;t.push(`<p>${be(o.join(" "))}</p>`)}return t.join(`
|
|
11
|
+
`)}function en(f){return f.includes("-")?/^[\s|:-]+$/.test(f):!1}function Te(f){let e=f.trim();return e.startsWith("|")&&(e=e.slice(1)),e.endsWith("|")&&(e=e.slice(0,-1)),e.split("|").map(t=>t.trim())}function xn(f){return Te(f).map(e=>{let t=e.startsWith(":"),n=e.endsWith(":");return t&&n?"center":n?"right":t?"left":null})}function Un(f,e,t){let n=s=>{let o=e[s];return o?` style="text-align:${o}"`:""},a=f.map((s,o)=>`<th${n(o)}>${be(s)}</th>`).join(""),r=t.map(s=>`<tr>${s.map((i,c)=>`<td${n(c)}>${be(i)}</td>`).join("")}</tr>`).join(`
|
|
12
|
+
`);return`<table>
|
|
13
|
+
<thead><tr>${a}</tr></thead>
|
|
14
|
+
<tbody>
|
|
15
|
+
${r}
|
|
16
|
+
</tbody>
|
|
17
|
+
</table>`}function be(f){let e=tn(f);return e=e.replace(/`([^`\n]+)`/g,(t,n)=>`<code>${n}</code>`),e=e.replace(/\[([^\]]+)\]\(([^)\s]+)\)/g,(t,n,a)=>`<a href="${an(a)}">${n}</a>`),e=e.replace(/\*\*([^*\n]+)\*\*/g,(t,n)=>`<strong>${n}</strong>`),e=e.replace(/(^|[^*])\*([^*\n]+)\*(?!\*)/g,(t,n,a)=>`${n}<em>${a}</em>`),e=e.replace(/(^|[\s(])_([^_\n]+)_(?=[\s).,;:!?]|$)/g,(t,n,a)=>`${n}<em>${a}</em>`),e}function tn(f){return f.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function an(f){return f.replace(/"/g,""").replace(/&/g,"&")}var xe={publisher:"kanonak.org",package_:"derivation",name:"look"},Ue={publisher:"kanonak.org",package_:"derivation",name:"tokens"},re={publisher:"kanonak.org",package_:"core-rdf",name:"Resource"},sn={publisher:"kanonak.org",package_:"core-rdf",name:"label"},On={publisher:"kanonak.org",package_:"core-rdf",name:"comment"},wn={publisher:"kanonak.org",package_:"look",name:"Hero"},Fn={publisher:"kanonak.org",package_:"look",name:"PropertyList"},In={publisher:"kanonak.org",package_:"look",name:"BadgeRow"},En={publisher:"kanonak.org",package_:"look",name:"ChipRow"},Tn={publisher:"kanonak.org",package_:"look",name:"ReferenceList"},Pn={publisher:"kanonak.org",package_:"look",name:"ReferencedBy"},rn={publisher:"kanonak.org",package_:"look",name:"Markdown"},Se={publisher:"kanonak.org",package_:"look",name:"NavGroup"},Pe={publisher:"kanonak.org",package_:"look",name:"NavLink"},on={publisher:"kanonak.org",package_:"look",name:"target"},Cn={publisher:"kanonak.org",package_:"look",name:"ResourceGrid"},An={publisher:"kanonak.org",package_:"look",name:"Timeline"},Vn={publisher:"kanonak.org",package_:"look",name:"VersionDiff"},Nn={publisher:"kanonak.org",package_:"look",name:"Figure"},Mn={publisher:"kanonak.org",package_:"look",name:"StatRow"},Dn={publisher:"kanonak.org",package_:"look",name:"Horizon"},Bn={publisher:"kanonak.org",package_:"look",name:"PackageContents"},Ce={publisher:"kanonak.org",package_:"core-kanonak",name:"Package"},Hn={publisher:"kanonak.org",package_:"look",name:"FeaturedResource"},Gn={publisher:"kanonak.org",package_:"look",name:"PublisherPackages"},Wn={publisher:"kanonak.org",package_:"look",name:"PublisherView"},zn={publisher:"kanonak.org",package_:"look",name:"Distribution"},Yn={publisher:"kanonak.org",package_:"look",name:"alphaPath"},qn={publisher:"kanonak.org",package_:"look",name:"betaPath"},cn={publisher:"kanonak.org",package_:"look",name:"SectionHeading"},Jn={publisher:"kanonak.org",package_:"look",name:"SectionNav"},ln={publisher:"kanonak.org",package_:"look",name:"heading"},Zn={publisher:"kanonak.org",package_:"look",name:"note"},Xn={publisher:"kanonak.org",package_:"look",name:"VersionDelta"},Qn={publisher:"kanonak.org",package_:"look",name:"TimePlot"},et={publisher:"kanonak.org",package_:"look",name:"Details"},nt={publisher:"kanonak.org",package_:"look",name:"skip"},tt={publisher:"kanonak.org",package_:"derivation",name:"derivations"},at={publisher:"kanonak.org",package_:"look",name:"laneBy"},st={publisher:"kanonak.org",package_:"look",name:"stats"},rt={publisher:"kanonak.org",package_:"look",name:"statPath"},ot={publisher:"kanonak.org",package_:"look",name:"statLabel"},un={publisher:"kanonak.org",package_:"look",name:"labelPath"},it={publisher:"kanonak.org",package_:"look",name:"badgePath"},Ae={publisher:"kanonak.org",package_:"look",name:"orderBy"},dn={publisher:"kanonak.org",package_:"look",name:"track"},Re={publisher:"kanonak.org",package_:"look",name:"metricPath"},Ve={publisher:"kanonak.org",package_:"look",name:"hueBy"},pn={publisher:"kanonak.org",package_:"look",name:"lowerPath"},fn={publisher:"kanonak.org",package_:"look",name:"upperPath"},ct={publisher:"kanonak.org",package_:"look",name:"axisMin"},lt={publisher:"kanonak.org",package_:"look",name:"axisMax"},ut={publisher:"kanonak.org",package_:"look",name:"valueLabel"};var kn={publisher:"kanonak.org",package_:"look",name:"semanticSvg"},dt={publisher:"kanonak.org",package_:"look",name:"tierChip"},pt={publisher:"kanonak.org",package_:"look",name:"tierIcon"},ft={publisher:"kanonak.org",package_:"look",name:"tierCard"},kt={publisher:"kanonak.org",package_:"look",name:"tierFull"},gt={publisher:"kanonak.org",package_:"core-rdf",name:"type"},gn=6,Ne={publisher:"kanonak.org",package_:"look",name:"bands"},ht={publisher:"kanonak.org",package_:"look",name:"title"},mt={publisher:"kanonak.org",package_:"look",name:"eyebrow"},bt={publisher:"kanonak.org",package_:"look",name:"subtitle"},hn={publisher:"kanonak.org",package_:"look",name:"badges"},Z={publisher:"kanonak.org",package_:"look",name:"source"},$t={publisher:"kanonak.org",package_:"look",name:"via"},jt={publisher:"kanonak.org",package_:"look",name:"size"},vt={publisher:"kanonak.org",package_:"look",name:"icon"},_t={publisher:"kanonak.org",package_:"look",name:"chips"},Me={publisher:"kanonak.org",package_:"look",name:"entries"},St={publisher:"kanonak.org",package_:"look",name:"urlForm"},Ge=class{constructor(e){this.catalog=e}catalog;findCascadedLook(e){let t=ye(e);if(t)return{declaration:t,sourceClass:{publisher:A(e),package_:(e.namespace||"").split("/")[1]?.split("@")[0]??"",name:e.name}};let n=new Set,a=fe(e);for(;a.length>0;){let s=a.shift().subject,o=Q(s);if(n.has(o))continue;n.add(o);let i=oe(this.catalog,s);for(let c of i){let l=ye(c);if(l)return{declaration:l,sourceClass:{publisher:s.publisher,package_:s.package_,name:s.name}}}for(let c of i)for(let l of Ke(c))a.push(l)}if(!n.has(Q(re)))for(let r of oe(this.catalog,re)){let s=ye(r);if(s)return{declaration:s,sourceClass:{...re}}}}findCascadedTokens(e){let t=new Map;for(let[r,s]of De(e))t.has(r)||t.set(r,s);let n=new Set,a=fe(e);for(;a.length>0;){let r=a.shift(),s=Q(r.subject);if(n.has(s))continue;n.add(s);let o=oe(this.catalog,r.subject);if(o.length!==0)for(let i of o){for(let[c,l]of De(i))t.has(c)||t.set(c,l);for(let c of Ke(i))a.push(c)}}if(!n.has(Q(re))){let r=oe(this.catalog,re);for(let s of r)for(let[o,i]of De(s))t.has(o)||t.set(o,i)}return t}renderSvg(e){let t=C(this.catalog,e).label,n=(t.trim().charAt(0)||"?").toUpperCase(),a=`${e.namespace??""}/${e.name}`,r={label:t,firstLetter:n,uri:a},s=this.collectCascadedSvgTiers(e),o=h=>this.applyPlaceholders(h,e,r),i=o(s.tierChip??""),c=o(s.tierIcon??""),l=o(s.tierCard??""),p=o(s.tierFull??""),k=[...this.findCascadedTokens(e)].map(([h,g])=>`--kan-${h}: ${g};`).join(" ");return`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 400" style="${ie(k)}">
|
|
18
|
+
<style>
|
|
19
|
+
.tier-chip,.tier-icon,.tier-card{display:none}
|
|
20
|
+
.tier-full{display:block}
|
|
21
|
+
@media (max-width:400px){.tier-full{display:none}.tier-card{display:block}}
|
|
22
|
+
@media (max-width:160px){.tier-card{display:none}.tier-icon{display:block}}
|
|
23
|
+
@media (max-width:60px){.tier-icon{display:none}.tier-chip{display:block}}
|
|
24
|
+
</style>
|
|
25
|
+
<g class="tier-chip">${i}</g>
|
|
26
|
+
<g class="tier-icon">${c}</g>
|
|
27
|
+
<g class="tier-card">${l}</g>
|
|
28
|
+
<g class="tier-full">${p}</g>
|
|
29
|
+
</svg>`}applyPlaceholders(e,t,n){return e.replace(/\{\{([^}]+)\}\}/g,(a,r)=>{let s=r.trim();if(n[s]!==void 0)return ie(n[s]);let o=s.indexOf(":");if(o>0){let c=s.slice(0,o),l=s.slice(o+1).trim();if(c==="delta"||c==="deltaArrow"||c==="deltaColor"||c==="deltaDir"){let p=this.metricDelta(t,l);return c==="deltaColor"?p?p.dir==="up"?"#34d399":p.dir==="down"?"#f87171":"#9aa5b8":"#9aa5b8":c==="deltaDir"?p?p.dir:"new":p?c==="deltaArrow"?p.dir==="up"?"\u25B2":p.dir==="down"?"\u25BC":"\u2014":ie(`${p.delta>0?"+":""}${p.delta.toFixed(2)}`):""}if(c==="svg")return this.resolvePath(t,l)??""}let i=this.resolvePath(t,s);return i===void 0?`{{${s}}}`:ie(i)})}metricDelta(e,t){let n=k=>{let h=this.resolvePath(k,t),g=h===void 0?NaN:parseFloat(h);return Number.isFinite(g)?g:void 0},a=n(e);if(a===void 0)return;let r=k=>this.parseVersion((k.namespace||"").split("@")[1]??"")??{major:0,minor:0,patch:0},s=(k,h)=>k.major-h.major||k.minor-h.minor||k.patch-h.patch,o={publisher:A(e),package_:(e.namespace||"").split("/")[1]?.split("@")[0]??"",name:e.name},i=r(e),c,l;for(let k of oe(this.catalog,o)){let h=r(k);s(h,i)<0&&(!l||s(h,l)>0)&&(c=k,l=h)}if(!c)return;let p=n(c);if(p===void 0)return;let u=a-p;return{delta:u,dir:Math.abs(u)<.005?"flat":u>0?"up":"down"}}resolvePath(e,t){let n=t.split("/").map(a=>a.trim()).filter(a=>a.length>0);if(n.length!==0)return this.resolvePathSteps(e,n)}resolvePathSteps(e,t){let n=Rt(t[0]),a=yt(e,n);if(!a)return;let r=t.length===1;if(a instanceof ne)return r?void 0:this.resolvePathSteps(a.object,t.slice(1));if(a instanceof M&&a.object instanceof I){let s=a.object.subject,o=oe(this.catalog,s);if(o.length===0){let c=H(this.catalog,s);c&&o.push(c)}if(r){for(let c of o){let l=C(this.catalog,c);if(l.label!==c.name)return l.label}return s.name}let i=t.slice(1);for(let c of o){let l=this.resolvePathSteps(c,i);if(l!==void 0)return l}return}if(r&&(a instanceof J||a instanceof de||a instanceof pe))return String(a.object)}collectCascadedSvgTiers(e){let t={},n=s=>{let o=te(s,kn);if(!(o instanceof ne))return;let i=o.object,c=L(i,dt),l=L(i,pt),p=L(i,ft),u=L(i,kt);t.tierChip===void 0&&c!==void 0&&(t.tierChip=c),t.tierIcon===void 0&&l!==void 0&&(t.tierIcon=l),t.tierCard===void 0&&p!==void 0&&(t.tierCard=p),t.tierFull===void 0&&u!==void 0&&(t.tierFull=u)};n(e);let a=new Set,r=fe(e);for(;r.length>0;){let s=r.shift(),o=Q(s.subject);if(a.has(o))continue;a.add(o);let i=oe(this.catalog,s.subject);for(let c of i){n(c);for(let l of Ke(c))r.push(l)}}if(!a.has(Q(re)))for(let s of oe(this.catalog,re))n(s);return t}renderStylesheet(e){let t=this.findCascadedTokens(e),n=[];for(let[s,o]of t)n.push(` --kan-${s}: ${o};`);let a=n.length>0?`:root {
|
|
30
|
+
${n.join(`
|
|
31
|
+
`)}
|
|
32
|
+
}`:":root { /* no tokens resolved */ }",r=this.findBaseStylesheet(A(e))??"";return`${a}
|
|
33
|
+
${r}`}findBaseStylesheet(e){let t="kanonak.org/site/content",n=c=>We((c.namespace||"").split("@")[1]??""),a,r,s,o;for(let c of this.catalog){if(!(c instanceof ee)||c.name!=="base-stylesheet")continue;let l=c.namespace||"";if(l.startsWith(`${e}/look-styles@`)){let p=n(c);p&&(!r||we(p,r)>0)&&(a=c,r=p)}else if(l.startsWith("kanonak.org/look-styles@")){let p=n(c);p&&(!o||we(p,o)>0)&&(s=c,o=p)}}let i=a??s;if(i)for(let c of i.statement){let l=c.predicate?.subject;if(!l)continue;if(`${l.publisher}/${l.package_}/${l.name}`===t&&c instanceof J)return c.object}}renderHtml(e){let t=this.findCascadedLook(e);if(!t)return`<!-- LookRenderer: no derivation.look found for ${e.namespace}/${e.name} -->`;let n=mn(t.declaration);if(n.length===0)return"<!-- LookRenderer: look declaration has no bands -->";let a=A(e),r=this.collectSectionHeadings(n),s=[];for(let o of n)s.push(this.renderBand(o,e,a,r));return s.join(`
|
|
34
|
+
`)}collectSectionHeadings(e){let t=[];for(let n of e){let a=$e(n);if(!a||!_(a,cn))continue;let r=L(n,ln);r&&t.push({slug:$n(r),label:r})}return t}renderPublisherIndex(e,t,n){let a=n?this.renderNavGroup(n,e):"",r=t.map(o=>{let i=o.comment?`<p class="kan-resource-card-subtitle">${d(o.comment)}</p>`:"";return`<a class="kan-resource-card" href="${d(o.href)}"><h3 class="kan-resource-card-title">${d(o.label)}</h3>${i}</a>`}).join(`
|
|
35
|
+
`),s=`<header class="kan-hero">
|
|
36
|
+
<h1 class="kan-hero-title">${d(e)}</h1>
|
|
37
|
+
</header>
|
|
38
|
+
<section class="kan-resource-grid">
|
|
39
|
+
${r}
|
|
40
|
+
</section>`;return`<!doctype html>
|
|
41
|
+
<html lang="en">
|
|
42
|
+
<head>
|
|
43
|
+
<meta charset="utf-8">
|
|
44
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
45
|
+
<title>${d(e)}</title>
|
|
46
|
+
<link rel="stylesheet" href="index.css">
|
|
47
|
+
</head>
|
|
48
|
+
<body>
|
|
49
|
+
${a}
|
|
50
|
+
<main class="kan-main">
|
|
51
|
+
${s}
|
|
52
|
+
</main>
|
|
53
|
+
</body>
|
|
54
|
+
</html>
|
|
55
|
+
`}renderPublisherIndexStylesheet(e){return e?this.renderStylesheet(e):""}hasDeclaredView(e){let t=this.findCascadedLook(e);return t?!(a=>a.publisher===re.publisher&&a.package_===re.package_&&a.name===re.name||a.publisher===Ce.publisher&&a.package_===Ce.package_&&a.name===Ce.name)(t.sourceClass):!1}renderPackageVersionList(e,t,n){let a=A(n),r=this.renderNavGroup(n,a),s=this.renderBreadcrumb(n,a,{bareOverview:!0}),o=t.map(c=>`<a class="kan-resource-card" href="/${d(e)}/${d(c)}/"><h3 class="kan-resource-card-title">${d(c)}</h3></a>`).join(`
|
|
56
|
+
`),i=`<header class="kan-hero">
|
|
57
|
+
<span class="kan-hero-eyebrow">PACKAGE</span>
|
|
58
|
+
<h1 class="kan-hero-title">${d(e)}</h1>
|
|
59
|
+
</header>
|
|
60
|
+
<section class="kan-resource-grid">
|
|
61
|
+
${o}
|
|
62
|
+
</section>`;return`<!doctype html>
|
|
63
|
+
<html lang="en">
|
|
64
|
+
<head>
|
|
65
|
+
<meta charset="utf-8">
|
|
66
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
67
|
+
<title>${d(e)}</title>
|
|
68
|
+
<link rel="stylesheet" href="${d(n.name)}.css">
|
|
69
|
+
</head>
|
|
70
|
+
<body>
|
|
71
|
+
${r}
|
|
72
|
+
${s}
|
|
73
|
+
<main class="kan-main">
|
|
74
|
+
${i}
|
|
75
|
+
</main>
|
|
76
|
+
</body>
|
|
77
|
+
</html>
|
|
78
|
+
`}renderDocument(e,t){let n=this.renderHtml(e),a=C(this.catalog,e).label,r=t?.rootIndex?"index.css":`${e.name}.css`,s=!t?.rootIndex&&this.hasSvgDerivation(e)?`<figure class="kan-figure"><img src="${d(e.name)}.svg" alt=""></figure>
|
|
79
|
+
`:"",o=A(e),i=this.renderNavGroup(e,o),c=t?.rootIndex?"":this.renderBreadcrumb(e,o,t);return`<!doctype html>
|
|
80
|
+
<html lang="en">
|
|
81
|
+
<head>
|
|
82
|
+
<meta charset="utf-8">
|
|
83
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
84
|
+
<title>${d(a)}</title>
|
|
85
|
+
<link rel="stylesheet" href="${d(r)}">
|
|
86
|
+
</head>
|
|
87
|
+
<body>
|
|
88
|
+
${i}
|
|
89
|
+
${c}
|
|
90
|
+
<main class="kan-main">
|
|
91
|
+
${s}${n}
|
|
92
|
+
</main>
|
|
93
|
+
</body>
|
|
94
|
+
</html>
|
|
95
|
+
`}hasSvgDerivation(e){let t=new Set,n=fe(e);for(;n.length>0;){let a=n.shift(),r=Q(a.subject);if(t.has(r))continue;t.add(r);let s=H(this.catalog,a.subject);if(s){for(let o of s.statement)if(o instanceof B&&ce(o,"kanonak.org","derivation","derivations")){for(let i of o.object??[])if(i instanceof se)for(let c of i.statement){if(!(c instanceof M)||!ce(c,"kanonak.org","derivation","format")||!(c.object instanceof I))continue;let l=c.object.subject;if(l.publisher==="kanonak.org"&&l.package_==="formats"&&l.name==="svg")return!0}}for(let o of Ke(s))n.push(o)}}return!1}renderBand(e,t,n,a=[]){let r=$e(e);return r?_(r,Jn)?this.renderSectionNav(a):_(r,wn)?this.renderHero(e,t,n):_(r,Fn)?this.renderPropertyList(e,t,n):_(r,In)?this.renderBadgeRow(e,t,n):_(r,En)?this.renderChipRow(e,t,n):_(r,Tn)?this.renderReferenceList(e,t,n):_(r,Pn)?this.renderReferencedBy(e,t,n):_(r,rn)?this.renderMarkdown(e,t,n):_(r,Se)?this.renderNavGroup(t,n):_(r,Cn)?this.renderResourceGrid(e,n,t):_(r,An)?this.renderTimeline(e,n):_(r,Vn)?this.renderVersionDiff(e,n):_(r,Nn)?this.renderFigure(e,t,n):_(r,Mn)?this.renderStatRow(e,t):_(r,Dn)?this.renderHorizon(e,t,n):_(r,Bn)?this.renderPackageContents(t,n):_(r,Hn)?this.renderFeaturedResource(e,n):_(r,Gn)?this.renderPublisherPackages(n):_(r,zn)?this.renderDistribution(e,t):_(r,cn)?this.renderSectionHeading(e):_(r,Xn)?this.renderVersionDelta(e,t):_(r,Qn)?this.renderTimePlot(e,t,n):_(r,et)?this.renderDetails(e,t,n):`<!-- LookRenderer: unsupported band ${r.publisher}/${r.package_}/${r.name} -->`:"<!-- LookRenderer: band has no rdf:type -->"}collectTrackedSeries(e,t,n,a){let{hueBy:r,lowerPath:s,upperPath:o}=a??{},i=new Map,c=e.length,l=(p,u)=>{let k=this.resolvePath(p,u);return k===void 0?NaN:parseFloat(k)};return e.forEach((p,u)=>{let k=this.readPropertyValueReferences(p,t);for(let h of k){let g=H(this.catalog,{publisher:h.subject.publisher,package_:h.subject.package_,name:h.subject.name,...h.subject.version?{version:h.subject.version}:{}});if(!g)continue;let m=h.subject.name,j=i.get(m);j||(j={key:m,label:C(this.catalog,g).label,points:new Array(c).fill(null),...s?{lower:new Array(c).fill(null)}:{},...o?{upper:new Array(c).fill(null)}:{}},i.set(m,j));let R=l(g,n);if(Number.isFinite(R)&&(j.points[u]=R),s&&j.lower){let $=l(g,s);Number.isFinite($)&&(j.lower[u]=$)}if(o&&j.upper){let $=l(g,o);Number.isFinite($)&&(j.upper[u]=$)}if(r){let $=l(g,r);Number.isFinite($)&&(j.hue=$)}j.lastSubject=g}}),[...i.values()]}hrefForSubject(e,t,n="="){let a=e.namespace||"",r=a.split("/")[1]?.split("@")[0]??"",s=a.split("@")[1]??"",o=s?this.parseVersion(s):void 0;return he.formatResourceUrl({publisher:A(e),package_:r,name:e.name,...o?{version:o}:{}},n,{contextPublisher:t})}renderVersionDiff(e,t){let n=T(e,Z);if(!n)return"<!-- LookRenderer.VersionDiff: no look.source -->";let a=L(e,Re),r=T(e,dn);if(!r||!a)return"<!-- LookRenderer.VersionDiff: needs look.track + look.metricPath -->";let s=T(e,Ae),o=L(e,Ve),i=this.findInstancesOfClass(n);if(i.length===0)return"<!-- LookRenderer.VersionDiff: no instances -->";let c=k=>s?this.readPropertyValueText(k,s)??"":"",l=i.slice().sort((k,h)=>c(k).localeCompare(c(h))),p=this.collectTrackedSeries(l,r,a,{hueBy:o});return p.length===0?"<!-- LookRenderer.VersionDiff: no tracked series -->":`<section class="kan-vdiff">${p.map((k,h)=>{let g=k.hue!==void 0?k.hue:Math.round(h*360/p.length),m=k.points.filter(K=>K!==null);if(m.length===0)return"";let j=m[0],R=m[m.length-1],$=R-j,w;if(Math.abs($)>=.005){let K=$>0?"up":"down",F=$>0?"\u25B2":"\u25BC";w=`<span class="kan-vdiff-delta ${K}">${$>0?"+":""}${$.toFixed(2)} ${F}</span>`}else w='<span class="kan-vdiff-delta flat">\u2014</span>';let P=k.lastSubject&&this.isLinkable(A(k.lastSubject),t)?`<a href="${d(this.hrefForSubject(k.lastSubject,t))}">${d(k.label)}</a>`:d(k.label);return`<div class="kan-vdiff-row" style="--kan-vdiff-hue:${g}"><span class="kan-vdiff-label">${P}</span><span class="kan-vdiff-start">${j.toFixed(2)}</span>`+this.sparkline(k.points,g)+`<span class="kan-vdiff-end">${R.toFixed(2)}</span>`+w+"</div>"}).join("")}</section>`}sparkline(e,t){let s=`hsl(${t},65%,60%)`,o=e.filter(m=>m!==null);if(o.length===0)return'<svg class="kan-vdiff-spark" viewBox="0 0 132 30" xmlns="http://www.w3.org/2000/svg"></svg>';let i=Math.min(...o),l=Math.max(...o)-i,p=e.length,u=m=>p<=1?132/2:4+m/(p-1)*124,k=m=>l<1e-9?30/2:26-(m-i)/l*22,h=[],g=[];return e.forEach((m,j)=>{if(m===null)return;let R=u(j),$=k(m);h.push(`${R.toFixed(1)},${$.toFixed(1)}`),g.push(`<circle cx="${R.toFixed(1)}" cy="${$.toFixed(1)}" r="2" fill="${s}"/>`)}),`<svg class="kan-vdiff-spark" viewBox="0 0 132 30" preserveAspectRatio="none" xmlns="http://www.w3.org/2000/svg" role="img"><polyline points="${h.join(" ")}" fill="none" stroke="${s}" stroke-width="1.5" stroke-linejoin="round" stroke-linecap="round"/>`+g.join("")+"</svg>"}svgUrlForSubject(e,t,n="="){return`${this.hrefForSubject(e,t,n)}.svg`}renderFigure(e,t,n){let a=t,r=T(e,Z);if(r){let l=H(this.catalog,r);l&&(a=l)}let s=this.svgUrlForSubject(a,n),o=C(this.catalog,a).label,i=L(e,jt);return`<figure class="kan-figure${i==="small"||i==="medium"||i==="large"?` kan-figure-${i}`:""}"><img class="kan-figure-img" src="${d(s)}" alt="${d(o)}" loading="lazy"/></figure>`}renderStatRow(e,t){let n=te(e,st),a=this.gatherValueItems(n).filter(s=>s instanceof se);if(a.length===0)return"<!-- LookRenderer.StatRow: no look.stats -->";let r=[];for(let s of a){let o=L(s,rt);if(!o)continue;let i=this.resolvePath(t,o);if(i===void 0)continue;let c=L(s,ot)??"";r.push('<div class="kan-stat">'+(c?`<span class="kan-stat-label">${d(c)}</span>`:"")+`<span class="kan-stat-val">${d(i)}</span></div>`)}return r.length===0?"":`<div class="kan-stat-row">${r.join("")}</div>`}renderHorizon(e,t,n){let a=T(e,Z);if(!a)return"<!-- LookRenderer.Horizon: no look.source -->";let r=this.gatherValueItems(te(t,a)).filter(o=>o instanceof se);return r.length===0?"":`<section class="kan-horizon">${r.map(o=>this.renderConditionNode(o,n,0)).join("")}</section>`}renderConditionNode(e,t,n){let a=$e(e),r=a?this.readLabelForUri({publisher:a.publisher,package_:a.package_,name:a.name})??a.name:"Condition",s=[],o=[];for(let u of e.statement){let k=u.predicate?.subject;if(!k||k.name==="type")continue;let h=this.readLabelForUri({publisher:k.publisher,package_:k.package_,name:k.name})??k.name;if(u instanceof J||u instanceof de||u instanceof pe)s.push(`<div class="kan-cond-field"><span class="kan-cond-key">${d(h)}</span><span class="kan-cond-v">${d(String(u.object))}</span></div>`);else if(u instanceof M&&u.object instanceof I){let g=u.object.subject,m=this.readLabelForUri({publisher:g.publisher,package_:g.package_,name:g.name})??g.name;s.push(`<div class="kan-cond-field"><span class="kan-cond-key">${d(h)}</span><span class="kan-cond-v">${d(m)}</span></div>`)}else if(u instanceof ne)o.push(this.renderConditionNode(u.object,t,n+1));else if(u instanceof B)for(let g of u.object??[])g instanceof se&&o.push(this.renderConditionNode(g,t,n+1))}let i=s.length?`<div class="kan-cond-fields">${s.join("")}</div>`:"",c=o.length?`<div class="kan-cond-children">${o.join("")}</div>`:"",l=o.length>0,p=l?`<span class="kan-cond-op">${d(r)}</span>`:`<div class="kan-cond-type">${d(r)}</div>`;return`<div class="kan-cond ${l?"kan-cond-branch":"kan-cond-leaf"}">${p}${i}${c}</div>`}renderSectionHeading(e){let t=e,n=L(t,ln);if(!n)return"<!-- LookRenderer.SectionHeading: no look.heading -->";let a=L(t,Zn);return`<div class="kan-section" id="${$n(n)}"><h2 class="kan-section-title">${d(n)}</h2>`+(a?`<p class="kan-section-note">${d(a)}</p>`:"")+"</div>"}renderSectionNav(e){return e.length===0?"<!-- LookRenderer.SectionNav: no section headings in this view -->":`<nav class="kan-section-nav" aria-label="On this page">${e.map(n=>`<a class="kan-section-nav-link" href="#${d(n.slug)}">${d(n.label)}</a>`).join("")}</nav>`}renderVersionDelta(e,t){let a=L(e,Re);if(!a)return"<!-- LookRenderer.VersionDelta: no look.metricPath -->";let r=U=>{let E=this.resolvePath(U,a),G=E===void 0?NaN:parseFloat(E);return Number.isFinite(G)?G:void 0},s=r(t);if(s===void 0)return"";let o=U=>this.parseVersion((U.namespace||"").split("@")[1]??"")??{major:0,minor:0,patch:0},i=(U,E)=>U.major-E.major||U.minor-E.minor||U.patch-E.patch,c={publisher:A(t),package_:(t.namespace||"").split("/")[1]?.split("@")[0]??"",name:t.name},l=o(t),p,u;for(let U of oe(this.catalog,c)){let E=o(U);i(E,l)<0&&(!u||i(E,u)>0)&&(p=U,u=E)}if(!p||!u)return'<div class="kan-delta kan-delta-first">First tracked in this version</div>';let k=r(p);if(k===void 0)return"";let h=s-k,g=Math.abs(h)<.005?"flat":h>0?"up":"down",m=g==="up"?"\u25B2":g==="down"?"\u25BC":"\u2014",j=g==="up"?"#34d399":g==="down"?"#f87171":"var(--kan-text-faint)",R=`${u.major}.${u.minor}.${u.patch}`,$=320,w=46,P=14,K=30,F=U=>P+Math.min(1,Math.max(0,U))*($-2*P),x=F(k),V=F(s),le=`<svg class="kan-delta-track" viewBox="0 0 ${$} ${w}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img"><line x1="${P}" y1="${K}" x2="${$-P}" y2="${K}" class="kan-delta-base"/><line x1="${x.toFixed(1)}" y1="${K}" x2="${V.toFixed(1)}" y2="${K}" stroke="${j}" stroke-width="3"/><circle cx="${x.toFixed(1)}" cy="${K}" r="4" class="kan-delta-prev"/><circle cx="${V.toFixed(1)}" cy="${K}" r="5.5" fill="${j}"/><text x="${x.toFixed(1)}" y="${K-9}" text-anchor="middle" class="kan-delta-tick kan-delta-tick-prev">${k.toFixed(2)}</text><text x="${V.toFixed(1)}" y="${K+17}" text-anchor="middle" class="kan-delta-tick">${s.toFixed(2)}</text></svg>`;return`<div class="kan-delta"><div class="kan-delta-head"><span class="kan-delta-vs">vs ${d(R)}</span><span class="kan-delta-badge ${g}">${h>0?"+":""}${h.toFixed(2)} ${m}</span></div>`+le+"</div>"}renderTimePlot(e,t,n){let a=T(e,Z),r=T(e,Ae);if(!a||!r)return"<!-- LookRenderer.TimePlot: needs look.source + look.orderBy -->";let s=e,o=L(s,at),i=L(s,un),c=[];for(let v of this.readPropertyValueReferences(t,a)){let N=H(this.catalog,{publisher:v.subject.publisher,package_:v.subject.package_,name:v.subject.name,...v.subject.version?{version:v.subject.version}:{}});if(!N)continue;let S=this.readPropertyValueText(N,r)??"",y=Date.parse(S);if(!Number.isFinite(y))continue;let X=o?this.resolvePath(N,o)??"":"",b=(i?this.resolvePath(N,i):void 0)??C(this.catalog,N).label;c.push({t:y,dateStr:S,lane:X,label:b,href:this.hrefForSubject(N,n),linkable:this.isLinkable(A(N),n)})}if(c.length===0)return"<!-- LookRenderer.TimePlot: no dated points -->";let l=[];for(let v of c)l.includes(v.lane)||l.push(v.lane);let p=Math.min(...c.map(v=>v.t)),u=Math.max(...c.map(v=>v.t));u===p&&(u=p+1);let k=l.some(v=>v),h=720,g=k?96:16,m=18,j=12,R=24,$=36,w=j+l.length*$+R,P=g,K=h-m,F=K-P,x=v=>P+(v-p)/(u-p)*F,V=v=>j+v*$+$/2,le=v=>Math.round(v*360/Math.max(1,l.length)),U=[];l.forEach((v,N)=>{let S=V(N);U.push(`<line x1="${P}" y1="${S.toFixed(1)}" x2="${K}" y2="${S.toFixed(1)}" class="kan-plot-guide"/>`),v&&U.push(`<text x="${(g-8).toFixed(1)}" y="${(S+4).toFixed(1)}" text-anchor="end" class="kan-plot-lane">${ie(v)}</text>`)});let E={},G=[];for(let v of c){let N=l.indexOf(v.lane),y=((E[v.lane]=(E[v.lane]??0)+1)%3-1)*7,X=x(v.t),b=V(N)+y,O=`${Le(v.dateStr)} \xB7 ${v.label}`,W=`<circle cx="${X.toFixed(1)}" cy="${b.toFixed(1)}" r="5" fill="hsl(${le(N)},65%,60%)" class="kan-plot-pt"><title>${ie(O)}</title></circle>`;G.push(v.linkable?`<a href="${d(v.href)}" class="kan-plot-link">${W}</a>`:W)}let ke=`<text x="${P}" y="${(w-6).toFixed(1)}" text-anchor="start" class="kan-plot-axis">${ie(Le(new Date(p).toISOString()))}</text><text x="${K}" y="${(w-6).toFixed(1)}" text-anchor="end" class="kan-plot-axis">${ie(Le(new Date(u).toISOString()))}</text>`;return`<section class="kan-plot">${`<svg class="kan-plot-svg" viewBox="0 0 ${h} ${w}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">`+U.join("")+G.join("")+ke+"</svg>"}</section>`}renderDetails(e,t,n){let a=Be(e,nt),r=this.detailRows(t,n,a);return r?`<dl class="kan-details">${r}</dl>`:"<!-- LookRenderer.Details: no properties -->"}detailRows(e,t,n){let a=[];for(let r of e.statement){let s=r.predicate?.subject;if(!s||this.isMetaPredicate(s)||n.some(c=>_(c,s)))continue;let o=this.readLabelForUri({publisher:s.publisher,package_:s.package_,name:s.name})??s.name,i=this.detailValue(r,t,n);i&&a.push(`<dt class="kan-details-key">${d(o)}</dt><dd class="kan-details-val">${i}</dd>`)}return a.join("")}detailValue(e,t,n){if(e instanceof J)return Lt(e.object);if(e instanceof de||e instanceof pe)return d(String(e.object));if(e instanceof M&&e.object instanceof I)return this.detailReferenceLink(e.object,t);if(e instanceof ne)return this.detailEmbedded(e.object,t,n);if(e instanceof B){let a=e.object??[];return a.length>0&&a.every(r=>r instanceof se)?a.map(r=>this.detailEmbedded(r,t,n)).join(""):a.map(r=>r instanceof I?this.detailReferenceLink(r,t):r instanceof se?this.detailEmbedded(r,t,n):d(String(r))).filter(r=>r).join(", ")}return""}detailReferenceLink(e,t){let n=this.readLabelForUri({publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name})??e.subject.name;if(!this.isLinkable(e.subject.publisher,t))return`<span class="kan-link-plain">${d(n)}</span>`;let a=this.urlForReference(e,void 0,t);return`<img class="kan-md-chip" src="${d(`${a}.svg`)}" alt="" loading="lazy"><a class="kan-link" href="${d(a)}">${d(n)}</a>`}detailEmbedded(e,t,n){let a=$e(e),r=a?this.readLabelForUri({publisher:a.publisher,package_:a.package_,name:a.name})??a.name:"",s=this.detailRows(e,t,n);return'<div class="kan-details-embed">'+(r?`<span class="kan-details-type">${d(r)}</span>`:"")+(s?`<dl class="kan-details">${s}</dl>`:"")+"</div>"}isMetaPredicate(e){return _(e,gt)||_(e,sn)||_(e,On)||_(e,xe)||_(e,Ue)||_(e,tt)||_(e,kn)}renderPackageContents(e,t){let n=e.namespace||"";if(!n)return"";let a=this.catalog.filter(s=>s instanceof ee&&s.namespace===n&&s.name!==e.name);return a.length===0?`<!-- LookRenderer.PackageContents: no members in ${n} -->`:(a.sort((s,o)=>{let i=C(this.catalog,s).label,c=C(this.catalog,o).label;return i.localeCompare(c)}),`<section class="kan-pkg-grid">${a.map(s=>{let o=C(this.catalog,s),i=o.label,c=o.summary,l=c?He(c,160):"",p=this.hrefForSubject(s,t),u=this.svgUrlForSubject(s,t);return`<a class="kan-pkg-card" href="${d(p)}"><img class="kan-pkg-card-svg" src="${d(u)}" alt="" loading="lazy"/><span class="kan-pkg-card-body"><span class="kan-pkg-card-title">${d(i)}</span>`+(l?`<span class="kan-pkg-card-comment">${d(l)}</span>`:"")+"</span></a>"}).join("")}</section>`)}renderReferencedBy(e,t,n){let a=T(e,$t),r={publisher:A(t),package_:(t.namespace||"").split("/")[1]?.split("@")[0]??"",name:t.name},s=Q(r),o=u=>this.parseVersion((u.namespace||"").split("@")[1]??"")??{major:0,minor:0,patch:0},i=(u,k)=>u.major-k.major||u.minor-k.minor||u.patch-k.patch,c=new Map;for(let u of this.catalog){if(!(u instanceof ee))continue;let k=Q({publisher:A(u),package_:(u.namespace||"").split("/")[1]?.split("@")[0]??"",name:u.name});if(k===s||!this.referencesTarget(u,s,a))continue;let h=c.get(k);(!h||i(o(u),o(h))>0)&&c.set(k,u)}let l=[...c.values()];return l.length===0?"<!-- LookRenderer.ReferencedBy: no incoming references -->":(l.sort((u,k)=>{let h=C(this.catalog,u).label,g=C(this.catalog,k).label;return h.localeCompare(g)}),`<section class="kan-pkg-grid">${l.map(u=>{let k=C(this.catalog,u),h=k.label,g=k.summary,m=g?He(g,160):"",j=`<span class="kan-pkg-card-body"><span class="kan-pkg-card-title">${d(h)}</span>`+(m?`<span class="kan-pkg-card-comment">${d(m)}</span>`:"")+"</span>";if(!this.isLinkable(A(u),n))return`<span class="kan-pkg-card">${j}</span>`;let R=this.hrefForSubject(u,n),$=this.svgUrlForSubject(u,n);return`<a class="kan-pkg-card" href="${d(R)}"><img class="kan-pkg-card-svg" src="${d($)}" alt="" loading="lazy"/>`+j+"</a>"}).join("")}</section>`)}referencesTarget(e,t,n){for(let a of e.statement){let r=a.predicate?.subject;if(r?.name==="type"||n&&!(r&&Q(r)===Q(n)))continue;let s=[];if(a instanceof M&&a.object instanceof I)s.push(a.object);else if(a instanceof B)for(let o of a.object??[])o instanceof I&&s.push(o);for(let o of s)if(Q(o.subject)===t)return!0}return!1}renderFeaturedResource(e,t){let n=T(e,Z);if(!n)return"<!-- LookRenderer.FeaturedResource: no look.source -->";let a=oe(this.catalog,n),r=c=>this.parseVersion((c.namespace||"").split("@")[1]??"")??{major:0,minor:0,patch:0},s=a.length>0?a.slice().sort((c,l)=>{let p=r(c),u=r(l);return u.major-p.major||u.minor-p.minor||u.patch-p.patch})[0]:H(this.catalog,n);if(!s)return`<!-- LookRenderer.FeaturedResource: ${n.publisher}/${n.package_}/${n.name} not found -->`;let o=this.renderHtml(s),i=this.hrefForSubject(s,t);return`<section class="kan-featured"><a class="kan-featured-permalink" href="${d(i)}">View full resource \u2192</a>`+o+"</section>"}renderDistribution(e,t){let n=e,a=S=>{let y=L(n,S);if(!y)return;let X=this.resolvePath(t,y),b=X===void 0?NaN:parseFloat(X);return Number.isFinite(b)?b:void 0},r=a(Yn),s=a(qn);if(r===void 0||s===void 0||r<=0||s<=0)return"<!-- LookRenderer.Distribution: needs resolvable alphaPath + betaPath (> 0) -->";let o=a(Re)??r/(r+s),i=a(pn),c=a(fn),l=a(Ve),p=l!==void 0?`hsl(${l},65%,60%)`:"var(--kan-accent)",u=S=>Number.isInteger(S)?String(S):S.toFixed(1),k=280,h=168,g={top:14,right:14,bottom:24,left:14},m=k-g.left-g.right,j=h-g.top-g.bottom,R=120,$=1e-4,w=[],P=[],K=0;for(let S=0;S<=R;S++){let y=S/R;y<$?y=$:y>1-$&&(y=1-$);let X=Math.exp((r-1)*Math.log(y)+(s-1)*Math.log(1-y));w.push(y),P.push(X),X>K&&(K=X)}let F=S=>g.left+Math.min(1,Math.max(0,S))*m,x=S=>g.top+(1-(K>0?S/K:0))*j,V=g.top+j,le=w.map((S,y)=>`${F(S).toFixed(1)},${x(P[y]).toFixed(1)}`),U=`M${F(0).toFixed(1)},${V.toFixed(1)} L${le.join(" L")} L${F(1).toFixed(1)},${V.toFixed(1)} Z`,E="";if(i!==void 0&&c!==void 0&&c>i){let S=[`${F(i).toFixed(1)},${V.toFixed(1)}`];for(let y=0;y<=R;y++)w[y]>=i&&w[y]<=c&&S.push(`${F(w[y]).toFixed(1)},${x(P[y]).toFixed(1)}`);S.push(`${F(c).toFixed(1)},${V.toFixed(1)}`),E=`<path d="M${S.join(" L")} Z" fill="${p}" fill-opacity="0.3"/>`}let G=F(o),ke=`<line x1="${G.toFixed(1)}" y1="${g.top.toFixed(1)}" x2="${G.toFixed(1)}" y2="${V.toFixed(1)}" stroke="${p}" stroke-width="1.5" stroke-dasharray="3 3"/><text x="${G.toFixed(1)}" y="${(g.top-3).toFixed(1)}" text-anchor="middle" class="kan-dist-mean">\u03BC ${o.toFixed(2)}</text>`,je=`<text x="${F(0).toFixed(1)}" y="${(V+15).toFixed(1)}" text-anchor="start" class="kan-dist-axis">0</text><text x="${F(1).toFixed(1)}" y="${(V+15).toFixed(1)}" text-anchor="end" class="kan-dist-axis">1</text>`,v=`<svg class="kan-dist-svg" viewBox="0 0 ${k} ${h}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img"><line x1="${g.left}" y1="${V.toFixed(1)}" x2="${(k-g.right).toFixed(1)}" y2="${V.toFixed(1)}" class="kan-dist-base"/><path d="${U}" fill="${p}" fill-opacity="0.12"/>`+E+`<polyline points="${le.join(" ")}" fill="none" stroke="${p}" stroke-width="2"/>`+ke+je+"</svg>",N=i!==void 0&&c!==void 0?` \xB7 95% CI [${i.toFixed(2)}\u2013${c.toFixed(2)}]`:"";return`<figure class="kan-dist">${v}<figcaption class="kan-dist-caption">Beta(${u(r)}, ${u(s)})${N}</figcaption></figure>`}renderPublisherPackages(e){let t=new Map,n=o=>this.parseVersion((o.namespace||"").split("@")[1]??"")??{major:0,minor:0,patch:0},a=(o,i)=>o.major>i.major||o.major===i.major&&(o.minor>i.minor||o.minor===i.minor&&o.patch>i.patch);for(let o of this.catalog){if(!(o instanceof ee)||A(o)!==e)continue;let i=(o.namespace||"").split("/")[1]?.split("@")[0]??"";if(!i||o.name!==i)continue;let c=t.get(i);(!c||a(n(o),n(c)))&&t.set(i,o)}let r=[...t.entries()].sort((o,i)=>o[0].localeCompare(i[0]));return r.length===0?"":`<section class="kan-pkg-grid">${r.map(([o,i])=>{let c=C(this.catalog,i),l=c.label,p=c.summary,u=p?He(p,160):"",k=this.svgUrlForSubject(i,e);return`<a class="kan-pkg-card" href="/${d(o)}"><img class="kan-pkg-card-svg" src="${d(k)}" alt="" loading="lazy"/><span class="kan-pkg-card-body"><span class="kan-pkg-card-title">${d(l)}</span>`+(u?`<span class="kan-pkg-card-comment">${d(u)}</span>`:"")+"</span></a>"}).join("")}</section>`}findPublisherRootView(e){for(let t of this.catalog){if(!(t instanceof ee)||A(t)!==e)continue;let n=ye(t);if(!n)continue;let a=$e(n);if(a&&_(a,Wn))return t}}renderTimeline(e,t){let n=T(e,Z);if(!n)return"<!-- LookRenderer.Timeline: no look.source -->";let a=T(e,Ae),r=this.findInstancesOfClass(n);if(r.length===0)return"<!-- LookRenderer.Timeline: no instances -->";let s=p=>a?this.readPropertyValueText(p,a)??"":"",o=r.slice().sort((p,u)=>s(p).localeCompare(s(u))),i=T(e,dn),c=L(e,Re);return i&&c?this.renderTrajectoryChart(o,i,c,e,t,s):`<section class="kan-timeline"><ol>
|
|
96
|
+
${o.map(p=>{let u=p.namespace||"",k=u.split("/")[1]?.split("@")[0]??"",h=u.split("@")[1]??"",g=h?this.parseVersion(h):void 0,m=he.formatResourceUrl({publisher:A(p),package_:k,name:p.name,...g?{version:g}:{}},"=",{contextPublisher:t}),j=s(p),R=j?`<span class="kan-timeline-date">${d(j)}</span>`:"",$=h||p.name;return`<li class="kan-timeline-node"><a href="${d(m)}"><span class="kan-timeline-key">${d($)}</span>${R}</a></li>`}).join(`
|
|
97
|
+
`)}
|
|
98
|
+
</ol></section>`}renderTrajectoryChart(e,t,n,a,r,s){let o=a,i=L(o,Ve),c=L(o,pn),l=L(o,fn),p=L(o,ut),u=bn(o,ct),k=bn(o,lt),h=e.length,g=this.collectTrackedSeries(e,t,n,{hueBy:i,lowerPath:c,upperPath:l});if(g.length===0)return"<!-- LookRenderer.Timeline: no tracked series -->";let m=[];for(let b of g){for(let O of b.points)O!==null&&m.push(O);for(let O of b.lower??[])O!==null&&m.push(O);for(let O of b.upper??[])O!==null&&m.push(O)}if(m.length===0)return"<!-- LookRenderer.Timeline: no metric values -->";let j=Math.min(...m),R=Math.max(...m);R-j<1e-9&&(j-=.5,R+=.5);let $=(R-j)*.08,w=u!==void 0?u:j-$,P=k!==void 0?k:R+$;P-w<1e-9&&(P=w+1);let K=1e3,F=440,x={top:28,right:24,bottom:56,left:52},V=K-x.left-x.right,le=F-x.top-x.bottom,U=b=>h<=1?x.left+V/2:x.left+b/(h-1)*V,E=b=>x.top+(1-(b-w)/(P-w))*le,G=(b,O)=>b.hue!==void 0?b.hue:Math.round(O*360/g.length),ke=[];for(let b=0;b<5;b++){let O=w+b*(P-w)/4,W=E(O);ke.push(`<line x1="${x.left}" y1="${W.toFixed(1)}" x2="${(K-x.right).toFixed(1)}" y2="${W.toFixed(1)}" class="kan-fan-grid"/>`),ke.push(`<text x="${(x.left-8).toFixed(1)}" y="${(W+4).toFixed(1)}" class="kan-fan-axis" text-anchor="end">${O.toFixed(2)}</text>`)}let je=[];e.forEach((b,O)=>{let W=this.hrefForSubject(b,r),z=(b.namespace||"").split("@")[1]??"",D=U(O),Y=Le(s(b));je.push(`<a href="${d(W)}" class="kan-fan-xtick"><line x1="${D.toFixed(1)}" y1="${x.top}" x2="${D.toFixed(1)}" y2="${(F-x.bottom).toFixed(1)}" class="kan-fan-vline"/><text x="${D.toFixed(1)}" y="${(F-x.bottom+20).toFixed(1)}" class="kan-fan-xlabel" text-anchor="middle">${ie(z||b.name)}</text>`+(Y?`<text x="${D.toFixed(1)}" y="${(F-x.bottom+36).toFixed(1)}" class="kan-fan-xdate" text-anchor="middle">${ie(Y)}</text>`:"")+"</a>")});let v=[];g.forEach((b,O)=>{if(!b.lower||!b.upper)return;let W=G(b,O),z=[],D=[];for(let q=0;q<h;q++){let ge=b.upper[q],ue=b.lower[q];ge==null||ue===null||ue===void 0||(z.push(`${U(q).toFixed(1)},${E(ge).toFixed(1)}`),D.unshift(`${U(q).toFixed(1)},${E(ue).toFixed(1)}`))}let Y=z.concat(D);Y.length<3||v.push(`<polygon class="kan-fan-band" points="${Y.join(" ")}" fill="hsl(${W},65%,60%)"/>`)});let N=[];g.forEach((b,O)=>{let z=`hsl(${G(b,O)},65%,60%)`,D=[],Y=[];b.points.forEach((q,ge)=>{if(q===null)return;let ue=U(ge),ae=E(q);D.push(`${ue.toFixed(1)},${ae.toFixed(1)}`),Y.push(`<circle cx="${ue.toFixed(1)}" cy="${ae.toFixed(1)}" r="3.5" fill="${z}"/>`)}),D.length!==0&&N.push(`<g class="kan-fan-series" data-series="${d(b.key)}"><polyline points="${D.join(" ")}" fill="none" stroke="${z}" stroke-width="2" stroke-linejoin="round" stroke-linecap="round"/>`+Y.join("")+"</g>")});let S=`<svg class="kan-fan-svg" viewBox="0 0 ${K} ${F}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">`+ke.join("")+je.join("")+v.join("")+N.join("")+"</svg>",y=p?`${d(p)}=`:"",X=g.map((b,O)=>{let W=G(b,O),z=b.points.filter(ae=>ae!==null),D=z.length?z[0]:void 0,Y=z.length?z[z.length-1]:void 0,q="";if(Y!==void 0&&D!==void 0){let ae=Y-D;if(Math.abs(ae)>=.005){let jn=ae>0?"up":"down",vn=ae>0?"\u25B2":"\u25BC";q=` <span class="kan-fan-delta ${jn}">${ae>0?"+":""}${ae.toFixed(2)} ${vn}</span>`}else q=' <span class="kan-fan-delta flat">\u2014</span>'}let ge=Y!==void 0?`${y}${Y.toFixed(2)}`:"\u2014",ue=b.lastSubject&&this.isLinkable(A(b.lastSubject),r)?`<a href="${d(this.hrefForSubject(b.lastSubject,r))}">${d(b.label)}</a>`:d(b.label);return`<div class="kan-fan-legend-item" style="--kan-fan-hue:${W}"><span class="kan-fan-swatch"></span><span class="kan-fan-legend-label">${ue}</span><span class="kan-fan-legend-cur">${ge}${q}</span></div>`});return`<section class="kan-fan"><div class="kan-fan-chart">${S}</div><div class="kan-fan-legend">${X.join("")}</div></section>`}renderResourceGrid(e,t,n){let a=T(e,Z);if(!a)return"<!-- LookRenderer.ResourceGrid: no look.source -->";let r=H(this.catalog,a),s=r?fe(r).some(c=>{let l=c.subject.name;return l==="ObjectProperty"||l==="DatatypeProperty"||l==="Property"}):!1,o=[];if(s&&n){let c=this.readPropertyValueReferences(n,a);for(let l of c){let p=H(this.catalog,{publisher:l.subject.publisher,package_:l.subject.package_,name:l.subject.name,...l.subject.version?{version:l.subject.version}:{}});p&&o.push(p)}}else o=this.findInstancesOfClass(a);if(o.length===0)return`<!-- LookRenderer.ResourceGrid: no resources for ${a.publisher}/${a.package_}/${a.name} -->`;let i=[];for(let c of o){let l=C(this.catalog,c),p=l.label,u=l.summary,k=c.namespace||"",h=k.split("/")[1]?.split("@")[0]??"",g=k.split("@")[1]??"",m=g?this.parseVersion(g):void 0,j=he.formatResourceUrl({publisher:A(c),package_:h,name:c.name,...m?{version:m}:{}},"=",{contextPublisher:t}),R=u?`<p class="kan-resource-card-subtitle">${d(u)}</p>`:"",$=`<h3 class="kan-resource-card-title">${d(p)}</h3>${R}`;i.push(this.isLinkable(A(c),t)?`<a class="kan-resource-card" href="${d(j)}">${$}</a>`:`<span class="kan-resource-card">${$}</span>`)}return`<section class="kan-resource-grid">
|
|
99
|
+
${i.join(`
|
|
100
|
+
`)}
|
|
101
|
+
</section>`}parseVersion(e){let t=e.split(".").map(Number);if(!(t.length!==3||t.some(n=>Number.isNaN(n))))return{major:t[0],minor:t[1],patch:t[2]}}findInstancesOfClass(e){let t=[];for(let n of this.catalog){if(!(n instanceof ee))continue;fe(n).map(s=>s.subject).some(s=>s.publisher===e.publisher&&s.package_===e.package_&&s.name===e.name)&&t.push(n)}return t}renderBreadcrumb(e,t,n){let r=(e.namespace||"").split("/");if(r.length<2)return"";let s=r[0],o=r[1]??"",i=o.split("@")[0]??"",c=o.split("@")[1]??"";if(!s||!i)return"";if(n?.bareOverview)return`<nav class="kan-breadcrumb"><ol>
|
|
102
|
+
<li><a href="/">${d(s)}</a></li>
|
|
103
|
+
<li aria-current="page">${d(i)}</li>
|
|
104
|
+
</ol></nav>`;let l=e.name,u=!!H(this.catalog,{publisher:s,package_:i,name:i}),k=c?`${i}@${c}`:i,h=c?`/${i}/${c}/${i}`:`/${i}/${i}`,g=e.name===i,m=[];return m.push(`<li><a href="/">${d(s)}</a></li>`),g?m.push(`<li aria-current="page">${d(k)}</li>`):(m.push(u?`<li><a href="${d(h)}">${d(k)}</a></li>`:`<li>${d(k)}</li>`),m.push(`<li aria-current="page">${d(l)}</li>`)),`<nav class="kan-breadcrumb"><ol>
|
|
105
|
+
${m.join(`
|
|
106
|
+
`)}
|
|
107
|
+
</ol></nav>`}renderNavGroup(e,t){let n=this.findNavGroupForPublisher(t);if(!n)return"";let a=te(n,Me);if(!(a instanceof B))return"";let r=a.object??[];if(r.length===0)return"";let s=[];for(let o of r){if(!(o instanceof I))continue;let i=H(this.catalog,{publisher:o.subject.publisher,package_:o.subject.package_,name:o.subject.name}),{href:c,label:l}=this.resolveNavEntry(o,i,t),p=`/${e.namespace?.split("/")[1]?.split("@")[0]}/${(e.namespace||"").split("@")[1]}/${e.name}`,u=c===p?' aria-current="page"':"";s.push(`<li><a class="kan-nav-link" href="${d(c)}"${u}>${d(l)}</a></li>`)}return`<nav class="kan-site-nav"><ul>
|
|
108
|
+
${s.join(`
|
|
109
|
+
`)}
|
|
110
|
+
</ul></nav>`}resolveNavEntry(e,t,n){if(t&&fe(t).map(i=>i.subject).some(i=>i.publisher===Pe.publisher&&i.package_===Pe.package_&&i.name===Pe.name)){let i=L(t,sn),c=te(t,on);if(c instanceof M&&c.object instanceof I){let l=c.object,p=this.readLabelForUri({publisher:l.subject.publisher,package_:l.subject.package_,name:l.subject.name});return{href:this.urlForReference(l,on,n),label:i??p??l.subject.name}}}let a=he.formatResourceUrl({publisher:e.subject.publisher,package_:e.subject.package_,...e.subject.version?{version:e.subject.version}:{},name:e.subject.name},"*",{contextPublisher:n}),r=t?C(this.catalog,t).label:e.subject.name;return{href:a,label:r}}findNavGroupForPublisher(e){for(let t of this.catalog){if(!(t instanceof ee)||!(t.namespace||"").startsWith(`${e}/`))continue;if(fe(t).map(s=>s.subject).some(s=>s.publisher===Se.publisher&&s.package_===Se.package_&&s.name===Se.name))return t}}renderMarkdown(e,t,n){let a=T(e,Z);if(!a)return"<!-- LookRenderer.Markdown: no look.source -->";let r=te(t,a),s=new Map,o;if(r instanceof Ye?o=this.resolveMarkdownLinks(r,n,s):r instanceof J?o=r.object:o=this.readPropertyValueText(t,a),!o)return"";let i=nn(o);for(let[c,l]of s){let p=new RegExp('(<a href="'+Kt(c)+'">)([^<]*)(</a>)',"g");i=i.replace(p,`$1<img class="kan-md-chip" src="${d(l)}" alt="" loading="lazy">$2$3`)}return`<section class="kan-markdown">
|
|
111
|
+
${i}
|
|
112
|
+
</section>`}resolveMarkdownLinks(e,t,n){let a=e.object,r=[...e.links].sort((s,o)=>o.startOffset-s.startOffset);for(let s of r){let o;if(s.target&&this.isLinkable(s.target.subject.publisher,t)){let i=s.target.subject,c=(s.displayText??this.readLabelForUri({publisher:i.publisher,package_:i.package_,name:i.name})??s.reference).replace(/[[\]]/g,""),l=he.formatResourceUrl({publisher:i.publisher,package_:i.package_,name:i.name,...i.version?{version:i.version}:{}},"=",{contextPublisher:t});n&&n.set(l,`${l}.svg`),o=`[${c}](${l})`}else if(s.target){let i=s.target.subject;o=(s.displayText??this.readLabelForUri({publisher:i.publisher,package_:i.package_,name:i.name})??s.reference).replace(/[[\]]/g,"")}else o=s.displayText??s.reference;a=a.slice(0,s.startOffset)+o+a.slice(s.endOffset)}return a}renderRawMarkdown(e){let t=this.findCascadedLook(e);if(!t)return;let n=mn(t.declaration),a=[];for(let r of n){let s=$e(r);if(!s||!_(s,rn))continue;let o=T(r,Z);if(!o)continue;let i=this.readPropertyValueText(e,o);i&&a.push(i)}return a.length>0?a.join(`
|
|
113
|
+
|
|
114
|
+
`):void 0}renderHero(e,t,n){let a=te(e,vt),r=a instanceof pe?a.object===!0:a instanceof J&&a.object==="true",s=[r?'<header class="kan-hero kan-hero-has-icon">':'<header class="kan-hero">'];if(r){let u=this.svgUrlForSubject(t,n);s.push(`<img class="kan-hero-icon" src="${d(u)}" alt="" loading="lazy"/>`)}r&&s.push('<div class="kan-hero-text">');let o=T(e,mt);if(o){let u=this.readPropertyValueText(t,o);u&&s.push(`<span class="kan-hero-eyebrow">${d(Oe(u)??u)}</span>`)}let i=T(e,ht),c="";i&&(c=this.readPropertyValueText(t,i)??""),c||(c=t.name),s.push(`<h1 class="kan-hero-title">${d(Oe(c)??c)}</h1>`);let l=T(e,bt);if(l){let u=this.readPropertyValueText(t,l);u&&s.push(`<p class="kan-hero-subtitle">${d(Oe(u)??u)}</p>`)}let p=T(e,hn);if(p){let u=this.readPropertyValueReferences(t,p);if(u.length>0){let k=u.map(h=>this.renderBadge(h,hn,n)).join("");s.push(`<div class="kan-hero-badges">${k}</div>`)}}return r&&s.push("</div>"),s.push("</header>"),s.join(`
|
|
115
|
+
`)}renderPropertyList(e,t,n){let a=T(e,Z);if(!a)return"<!-- LookRenderer: PropertyList missing look.source -->";let r=this.readLabelForUri(a)??a.name,s=te(t,a),o=this.gatherValueItems(s),i=o.length>0?o.map(c=>`<li>${this.renderInlineValue(c,Z,n)}</li>`).join(""):'<li class="kan-empty">(no values)</li>';return['<section class="kan-property-list">',`<h3 class="kan-property-list-title">${d(r)}</h3>`,`<ul class="kan-property-list-items">${i}</ul>`,"</section>"].join(`
|
|
116
|
+
`)}renderBadgeRow(e,t,n){let a=T(e,Z);if(!a)return"<!-- LookRenderer: BadgeRow missing look.source -->";let r=this.readPropertyValueReferences(t,a);return r.length===0?"":`<div class="kan-badge-row">${r.map(o=>this.renderBadge(o,Z,n)).join("")}</div>`}renderChipRow(e,t,n){let a=Be(e,_t);if(a.length===0)return"<!-- LookRenderer: ChipRow has no look.chips -->";let r=[];for(let s of a){let o=te(t,s);if(!o)continue;let i=this.readLabelForUri(s)??s.name,c=this.renderStatementInlineValue(o,s,n);c&&r.push(`<span class="kan-chip"><span class="kan-chip-key">${d(i)}</span> <span class="kan-chip-val">${c}</span></span>`)}return r.length===0?"":`<div class="kan-chip-row">${r.join("")}</div>`}renderReferenceList(e,t,n){let a=Be(e,Me);if(a.length===0)return"<!-- LookRenderer: ReferenceList has no look.entries -->";let r=L(e,un),s=L(e,it),o=[];for(let i of a){let c=this.readPropertyValueReferences(t,i);if(c.length===0)continue;let l=this.readLabelForUri(i)??i.name;if(r){let p=c.map(u=>this.renderDetailRow(u,r,s,n)).filter(u=>u).join("");p&&o.push(`<dt>${d(l)}</dt><dd><ul class="kan-ref-rows">${p}</ul></dd>`)}else{let p=c.map(u=>this.renderReferenceLink(u,Me,n)).join(", ");o.push(`<dt>${d(l)}</dt><dd>${p}</dd>`)}}return o.length===0?"":`<dl class="kan-reference-list">${o.join("")}</dl>`}renderDetailRow(e,t,n,a){let r=H(this.catalog,{publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name,...e.subject.version?{version:e.subject.version}:{}});if(!r)return"";let s=this.resolvePath(r,t)??C(this.catalog,r).label,o="";if(n){let p=this.resolvePath(r,n);p&&(o=`<span class="kan-ref-badge">${d(p)}</span>`)}let i=`<span class="kan-ref-text">${d(s)}</span>${o}`;if(!this.isLinkable(A(r),a))return`<li class="kan-ref-row"><span class="kan-ref-rowlink">${i}</span></li>`;let c=this.hrefForSubject(r,a),l=this.svgUrlForSubject(r,a);return`<li class="kan-ref-row"><a class="kan-ref-rowlink" href="${d(c)}"><img class="kan-ref-icon" src="${d(l)}" alt="" loading="lazy"/>`+i+"</a></li>"}readPropertyValueText(e,t){let n=te(e,t);if(n){if(n instanceof J)return n.object;if(n instanceof M){let a=n.object;return this.readLabelForUri({publisher:a.subject.publisher,package_:a.subject.package_,name:a.subject.name})??a.subject.name}if(n instanceof ne)return this.readEmbeddedText(n.object,0)||void 0;if(n instanceof B)return(n.object??[]).map(r=>r instanceof I?this.readLabelForUri({publisher:r.subject.publisher,package_:r.subject.package_,name:r.subject.name})??r.subject.name:r instanceof se?this.readEmbeddedText(r,0):String(r)).filter(r=>r).join(", ")}}readEmbeddedText(e,t){if(t>=gn)return"\u2026";let n=[];for(let a of e.statement)if(a.predicate?.subject?.name!=="type")if(a instanceof J)n.push(a.object);else if(a instanceof de||a instanceof pe)n.push(String(a.object));else if(a instanceof M){let s=a.object;n.push(this.readLabelForUri({publisher:s.subject.publisher,package_:s.subject.package_,name:s.subject.name})??s.subject.name)}else a instanceof ne&&n.push(this.readEmbeddedText(a.object,t+1));return n.filter(a=>a).join(", ")}readPropertyValueReferences(e,t){let n=te(e,t);if(!n)return[];if(n instanceof M)return[n.object];if(n instanceof B){let a=[];for(let r of n.object??[])r instanceof I&&a.push(r);return a}return[]}gatherValueItems(e){return e?e instanceof B?e.object??[]:e instanceof M?[e.object]:e instanceof ne?[e.object]:e instanceof J?[e.object]:e instanceof de||e instanceof pe?[e.object]:[]:[]}renderInlineValue(e,t,n,a=0){return e instanceof I?this.renderReferenceLink(e,t,n):e instanceof se?this.renderEmbeddedInline(e,n,a):typeof e=="string"?d(e):typeof e=="number"||typeof e=="boolean"?d(String(e)):""}renderStatementInlineValue(e,t,n,a=0){return e instanceof J?d(e.object):e instanceof de||e instanceof pe?d(String(e.object)):e instanceof M?this.renderReferenceLink(e.object,t,n):e instanceof ne?this.renderEmbeddedInline(e.object,n,a):e instanceof B?(e.object??[]).map(s=>this.renderInlineValue(s,t,n,a)).filter(s=>s).join(", "):""}renderEmbeddedInline(e,t,n=0){if(n>=gn)return"\u2026";let a=[];for(let r of e.statement){let s=r.predicate?.subject;if(!s||s.name==="type")continue;let o=this.readLabelForUri({publisher:s.publisher,package_:s.package_,name:s.name})??s.name,i=this.renderStatementInlineValue(r,s,t,n+1);i&&a.push(`<dt>${d(o)}</dt><dd>${i}</dd>`)}return a.length?`<dl class="kan-embedded">${a.join("")}</dl>`:""}renderReferenceLink(e,t,n){let a=this.readLabelForUri({publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name})??e.subject.name;if(!this.isLinkable(e.subject.publisher,n))return`<span class="kan-link-plain">${d(a)}</span>`;let r=this.urlForReference(e,t,n);return`<a class="kan-link" href="${d(r)}">${d(a)}</a>`}isLinkable(e,t){return e===t}renderBadge(e,t,n){let a=this.readLabelForUri({publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name})??e.subject.name,r=this.readCommentForUri({publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name}),s=r?` title="${d(r)}"`:"";if(!this.isLinkable(e.subject.publisher,n))return`<span class="kan-badge"${s}>${d(a)}</span>`;let o=this.urlForReference(e,t,n);return`<a class="kan-badge" href="${d(o)}"${s}>${d(a)}</a>`}urlForReference(e,t,n){let a=t?this.getUrlFormForProperty(t):"=";return he.formatResourceUrl({publisher:e.subject.publisher,package_:e.subject.package_,...e.subject.version?{version:e.subject.version}:{},name:e.subject.name},a,{contextPublisher:n})}getUrlFormForProperty(e){let t=H(this.catalog,e);if(!t)return"=";let n=L(t,St);return n==="*"||n==="^"||n==="~"||n==="="?n:"="}readLabelForUri(e){let t=H(this.catalog,e);if(t)return C(this.catalog,t).label}readCommentForUri(e){let t=H(this.catalog,e);if(t)return C(this.catalog,t).summary}};function De(f){let e=new Map;for(let t of f.statement){if(!(t instanceof ne)||!ce(t,Ue.publisher,Ue.package_,Ue.name))continue;let n=t.object;for(let a of n.statement){if(!(a instanceof J))continue;let r=a.predicate?.subject?.name;if(!r)continue;let s=a.object;e.has(r)||e.set(r,s)}}return e}function ye(f){for(let e of f.statement)if(e instanceof ne&&ce(e,xe.publisher,xe.package_,xe.name))return e.object}function mn(f){for(let e of f.statement){if(!(e instanceof B)||!ce(e,Ne.publisher,Ne.package_,Ne.name))continue;let t=[];for(let n of e.object??[])n instanceof se&&t.push(n);return t}return[]}function $e(f){for(let e of f.statement)if(e instanceof M&&e.predicate?.subject?.name==="type"&&e.object instanceof I){let t=e.object.subject;return{publisher:t.publisher,package_:t.package_,name:t.name}}}function T(f,e){for(let t of f.statement)if(t instanceof M&&ce(t,e.publisher,e.package_,e.name)&&t.object instanceof I){let n=t.object.subject;return{publisher:n.publisher,package_:n.package_,name:n.name}}}function Be(f,e){for(let t of f.statement){if(!(t instanceof B)||!ce(t,e.publisher,e.package_,e.name))continue;let n=[];for(let a of t.object??[])a instanceof I&&n.push({publisher:a.subject.publisher,package_:a.subject.package_,name:a.subject.name});return n}return[]}function te(f,e){for(let t of f.statement)if(ce(t,e.publisher,e.package_,e.name))return t}function L(f,e){for(let t of f.statement)if(t instanceof J&&ce(t,e.publisher,e.package_,e.name))return t.object}function bn(f,e){for(let t of f.statement)if(t instanceof de&&ce(t,e.publisher,e.package_,e.name))return t.object}function fe(f){let e=[];for(let t of f.statement)if(t instanceof M){if(t.predicate?.subject?.name!=="type")continue;t.object instanceof I&&e.push(t.object)}else if(t instanceof B){if(t.predicate?.subject?.name!=="type")continue;for(let n of t.object??[])n instanceof I&&e.push(n)}return e}function Ke(f){let e=[];for(let t of f.statement)if(t instanceof M){if(t.predicate?.subject?.name!=="subClassOf")continue;t.object instanceof I&&e.push(t.object)}else if(t instanceof B){if(t.predicate?.subject?.name!=="subClassOf")continue;for(let n of t.object??[])n instanceof I&&e.push(n)}return e}function oe(f,e){let t=[];for(let n of f){if(!(n instanceof ee)||n.name!==e.name)continue;(n.namespace||"").startsWith(`${e.publisher}/${e.package_}@`)&&t.push(n)}return t}function H(f,e){let t="version"in e?e.version:void 0;if(t){let n=`${e.publisher}/${e.package_}@${t.major}.${t.minor}.${t.patch}`;for(let a of f)if(a instanceof ee&&a.name===e.name&&a.namespace===n)return a}for(let n of f){if(!(n instanceof ee)||n.name!==e.name)continue;if((n.namespace||"").startsWith(`${e.publisher}/${e.package_}@`))return n}}function ce(f,e,t,n){let a=f.predicate?.subject;return a?a.publisher===e&&a.package_===t&&a.name===n:!1}function _(f,e){return f.publisher===e.publisher&&f.package_===e.package_&&f.name===e.name}function Q(f){return`${f.publisher}/${f.package_}/${f.name}`}function A(f){let e=f.namespace||"",t=e.indexOf("/");return t>=0?e.substring(0,t):e}function d(f){return f.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function Rt(f){let e=f.lastIndexOf(".");return e>=0?f.substring(e+1):f}function yt(f,e){for(let t of f.statement)if(t.predicate?.subject?.name===e)return t}function ie(f){return f.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}function He(f,e){return f.length<=e?f:f.slice(0,e).replace(/\s+\S*$/,"")+"\u2026"}function $n(f){return f.toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}function Kt(f){return f.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Lt(f){let e=Oe(f);if(e)return d(e);if(/^https?:\/\//i.test(f)){let t=f;try{t=new URL(f).hostname.replace(/^www\./,"")}catch{}return`<a class="kan-link" href="${d(f)}" target="_blank" rel="noopener">${d(t)} \u2197</a>`}return d(f)}function Oe(f){let e=/^(\d{4})-(\d{2})-(\d{2})([T ]\d{2}:\d{2}(?::\d{2})?(?:\.\d+)?(?:Z|[+-]\d{2}:?\d{2})?)?$/.exec(f.trim());if(!e)return;let t=Date.parse(f);if(!Number.isFinite(t))return;let n=new Date(t),r=`${["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"][n.getUTCMonth()]} ${n.getUTCDate()}, ${n.getUTCFullYear()}`;if(!e[4])return r;let s=n.getUTCHours(),o=(s+11)%12+1,i=s>=12?"PM":"AM";return`${r} \xB7 ${o}:${String(n.getUTCMinutes()).padStart(2,"0")} ${i} UTC`}function Le(f){if(!f)return"";let e=/^(\d{4})-(\d{2})-(\d{2})/.exec(f);return e?`${["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"][parseInt(e[2],10)-1]??e[2]} ${parseInt(e[3],10)}`:f}export{C as a,nn as b,Ge as c};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as P}from"./chunk-FUUTGGJS.js";function K(n){if(Array.isArray(n))return n.map(t=>t?.toString()??"").filter(t=>t.length>0);let e=n?.toString();return e?[e]:[]}var S=class{cache=new Map;repository;logger;constructor(e,t){this.repository=e,this.logger=t}async resolveEntityAsync(e,t){let a=t.metadata?.namespace_?.toString()??"unknown",s=this.cache.get(a);if(s){let p=s.get(e);if(p)return p}let r=await this.buildEntityIndexAsyncInternal(t,new Set,"");return this.cache.set(a,r),r.get(e)??null}async resolveAllEntitiesAsync(e,t){let a=await this.buildAllEntitiesIndexAsync(t,new Set,"");if(e.includes(".")){let s=e.split("."),r=s[0],p=s[1],g=await this.findDocumentForAlias(t,r);return g?await this.resolveAllEntitiesAsync(p,g):[]}return a.filter(s=>s.entityName===e)}async buildAllEntitiesIndexAsync(e,t,a){let s=[],r=e.metadata?.namespace_?.toString()??"unknown";if(this.logger?.debug?.(`Building ALL entities index for namespace: ${r}`),t.has(r))return this.logger?.debug?.(`Skipping ${r} - already visited (circular import prevention)`),s;t.add(r);let p=a.length===0?r:`${a} \u2192 ${r}`;for(let[g,i]of Object.entries(e.body))if(!g.includes(".")&&i&&typeof i=="object"&&!Array.isArray(i)){let u=e.metadata.namespace_?.version??{major:1,minor:0,patch:0,toString:()=>"1.0.0",equals:()=>!1,getHashCode:()=>0,compareTo:()=>0};s.push({entityName:g,uri:new P(e.metadata.namespace_.publisher,e.metadata.namespace_.package_,g,u),entity:i,definedInNamespace:r,isImported:a.length>0,importPath:p})}if(this.logger?.debug?.(`Collected ${s.length} entities from ${r}`),e.metadata?.imports){let g=Object.values(e.metadata.imports).reduce((i,u)=>i+u.length,0);this.logger?.debug?.(`Processing ${g} import(s) for ${r}`);for(let[i,u]of Object.entries(e.metadata.imports))for(let f of u)try{this.logger?.debug?.(`Resolving import: ${i}/${f.packageName}`);let y=await this.repository.getHighestCompatibleVersionAsync(i,f);if(y){this.logger?.debug?.(`Successfully loaded import: ${y.metadata?.namespace_?.toString()}`);let m=await this.buildAllEntitiesIndexAsync(y,t,p);s.push(...m),this.logger?.debug?.(`Added ${m.length} entities from import ${y.metadata?.namespace_?.toString()}`)}else this.logger?.warn?.(`Failed to load import: ${i}/${f.packageName}`)}catch(y){let m=y;throw this.logger?.error?.(`Failed to process import ${i}/${f.packageName} for namespace ${r}. Error: ${m.message}`,m),new Error(`Failed to process import ${i}/${f.packageName} for namespace ${r}. See inner exception for details.`,{cause:y})}}return s}async buildEntityIndexAsync(e){return await this.buildEntityIndexAsyncInternal(e,new Set,"")}async buildEntityIndexAsyncInternal(e,t,a){let s=new Map,r=e.metadata?.namespace_?.toString()??"unknown";if(this.logger?.debug?.(`Building entity index for namespace: ${r}`),t.has(r))return this.logger?.debug?.(`Skipping ${r} - already visited (circular import prevention)`),s;t.add(r);let p=a.length===0?r:`${a} \u2192 ${r}`,g=0;for(let[i,u]of Object.entries(e.body))if(!i.includes(".")&&u&&typeof u=="object"&&!Array.isArray(u)&&!s.has(i)){let f=e.metadata.namespace_?.version??{major:1,minor:0,patch:0,toString:()=>"1.0.0",equals:()=>!1,getHashCode:()=>0,compareTo:()=>0};s.set(i,{entityName:i,uri:new P(e.metadata.namespace_.publisher,e.metadata.namespace_.package_,i,f),entity:u,definedInNamespace:r,isImported:a.length>0,importPath:p}),g++}if(this.logger?.debug?.(`Indexed ${g} entities from ${r}`),e.metadata?.imports){let i=Object.values(e.metadata.imports).reduce((u,f)=>u+f.length,0);this.logger?.debug?.(`Processing ${i} import(s) for ${r}`);for(let[u,f]of Object.entries(e.metadata.imports))for(let y of f)try{this.logger?.debug?.(`Resolving import: ${u}/${y.packageName}`);let m=await this.repository.getHighestCompatibleVersionAsync(u,y);if(m){this.logger?.debug?.(`Successfully loaded import: ${m.metadata?.namespace_?.toString()}`);let A=await this.buildEntityIndexAsyncInternal(m,t,p),$=0;for(let[R,h]of A.entries()){let b=s.get(R);if(!b)s.set(R,h),$++;else if(b.isImported&&h.isImported&&(b.uri.publisher!==h.uri.publisher||b.uri.package_!==h.uri.package_)){let k=b.isAmbiguous?b:{...b,isAmbiguous:!0,ambiguousNamespaces:[b.definedInNamespace]};k.ambiguousNamespaces.includes(h.definedInNamespace)||k.ambiguousNamespaces.push(h.definedInNamespace),s.set(R,k),this.logger?.warn?.(`Ambiguous reference '${R}': defined in ${k.ambiguousNamespaces.join(", ")}`)}if(y.alias&&!R.includes(".")){let k=`${y.alias}.${R}`;s.has(k)||(s.set(k,h),$++)}}this.logger?.debug?.(`Merged ${$} entities from import ${m.metadata?.namespace_?.toString()}`)}else this.logger?.warn?.(`Failed to load import: ${u}/${y.packageName}`)}catch(m){let A=m;throw this.logger?.error?.(`Failed to process import ${u}/${y.packageName} for namespace ${r}. Error: ${A.message}`,A),new Error(`Failed to process import ${u}/${y.packageName} for namespace ${r}. See inner exception for details.`,{cause:m})}}return s}async findDocumentForAlias(e,t){if(!e.metadata?.imports)return null;for(let[a,s]of Object.entries(e.metadata.imports))for(let r of s){if(r.alias===t)return await this.repository.getHighestCompatibleVersionAsync(a,r);if(!r.alias&&r.packageName===t)return await this.repository.getHighestCompatibleVersionAsync(a,r)}return null}clearCache(){this.cache.clear()}clearCacheForDocument(e){this.cache.delete(e)}async isSubclassOfAsync(e,t,a){if(e===t)return!0;let s=new Set;return await this.isSubclassOfRecursiveAsync(e,t,a,s)}async isSubclassOfRecursiveAsync(e,t,a,s){if(s.has(e))return!1;s.add(e);let r=await this.resolveEntityAsync(e,a);if(!r?.entity)return!1;let p=r.entity.subClassOf;if(p){let g=K(p);for(let i of g)if(i===t||await this.isSubclassOfRecursiveAsync(i,t,a,s))return!0}return!1}async isSubpropertyOfAsync(e,t,a){if(e===t)return!0;let s=new Set;return await this.isSubpropertyOfRecursiveAsync(e,t,a,s)}async isSubpropertyOfRecursiveAsync(e,t,a,s){if(s.has(e))return!1;s.add(e);let r=await this.resolveEntityAsync(e,a);if(!r?.entity)return!1;let p=r.entity.subPropertyOf;if(p){let g=K(p);for(let i of g)if(i===t||await this.isSubpropertyOfRecursiveAsync(i,t,a,s))return!0}return!1}};var v=class n{static KNOWN_XSD_DATATYPES=new Set(["string","integer","int","boolean","bool","decimal","float","double","date","datetime","time","duration","anyuri","base64binary","hexbinary","long","short","byte","nonnegativeinteger","positiveinteger","negativeinteger","nonpositiveinteger","unsignedint","unsignedlong","unsignedshort","unsignedbyte"]);resourceResolver;constructor(e){this.resourceResolver=e}isXsdDatatype(e){return e?e.publisher==="kanonak.org"&&e.package_==="core-xsd"&&n.KNOWN_XSD_DATATYPES.has(e.name.toLowerCase()):!1}isLiteralType(e){return e?e.publisher==="kanonak.org"&&e.package_==="core-rdf"&&e.name==="Literal":!1}isMarkdownDatatype(e){return e?e.publisher==="kanonak.org"&&e.package_==="core-prose"&&e.name==="Markdown":!1}isSubstitutableDatatype(e){return e?e.publisher==="kanonak.org"&&e.package_==="core-prose"&&(e.name==="SubstitutableString"||e.name==="Markdown"):!1}isKnownXsdDatatypeName(e){let t=e.includes(".")?e.split(".")[1]:e;return n.KNOWN_XSD_DATATYPES.has(t.toLowerCase())}async isClassTypeAsync(e,t){if(this.isKnownXsdDatatypeName(e))return!1;let a=await this.resourceResolver.resolveEntityAsync(e,t);if(a){let s=a.entity.type;if(s){let r=String(s);return r==="Class"||r==="rdfs.Class"||r.endsWith(".Class")}}return!0}getPropertyTypeClassification(e){if(!e||e.trim().length===0)return"Property";switch(e.includes(".")?e.split(".")[1]:e){case"DatatypeProperty":return"DatatypeProperty";case"ObjectProperty":return"ObjectProperty";case"AnnotationProperty":return"AnnotationProperty";case"Property":return"Property";default:return"Property"}}isEffectiveDatatypeProperty(e,t){return!!(e==="DatatypeProperty"||e==="Property"&&this.isXsdDatatype(t)||e==="Property"&&this.isLiteralType(t))}isEffectiveObjectProperty(e,t){return!!(e==="ObjectProperty"||e==="Property"&&t&&!this.isXsdDatatype(t)&&!this.isLiteralType(t))}};function T(n){return`${n.publisher}/${n.package_}/${n.name}`}function c(n,e,t){return`${n}/${e}/${t}`}function L(n){return`${n.s}|${n.p}|${O(n.o)}`}function O(n){switch(n.kind){case"uri":return`u:${n.key}`;case"literal":return`l:${n.datatype}:${n.lexical}`;case"blank":return`b:${n.id}`}}function N(n,e,t){return{s:n,p:e,o:{kind:"uri",key:t}}}var l="kanonak.org",o="core-rdf",d="core-owl",D="core-kanonak",_=new Map([["type",o],["subClassOf",o],["subPropertyOf",o],["domain",o],["range",o],["label",o],["comment",o],["seeAlso",o],["isDefinedBy",o],["member",o],["Resource",o],["Class",o],["Property",o],["Datatype",o],["Literal",o],["List",o],["ObjectProperty",d],["DatatypeProperty",d],["AnnotationProperty",d],["Thing",d],["Nothing",d],["Package",D]]),x=new Set(["type","subClassOf","subPropertyOf","domain","range"]);function F(n,e){if(!n||!n.name)return;let t=_.get(n.name);if(t){if(x.has(n.name)){n.publisher=l,n.package_=t;return}n.publisher===l&&n.package_===t||n.publisher&&n.publisher.length>0&&(!e||e(n))||(n.publisher=l,n.package_=t)}}var w=class{type=c(l,o,"type");subClassOf=c(l,o,"subClassOf");subPropertyOf=c(l,o,"subPropertyOf");domain=c(l,o,"domain");range=c(l,o,"range");label=c(l,o,"label");comment=c(l,o,"comment");resource=c(l,o,"Resource");class_=c(l,o,"Class");datatype=c(l,o,"Datatype");literal=c(l,o,"Literal");equivalentClass=c(l,d,"equivalentClass");equivalentProperty=c(l,d,"equivalentProperty");inverseOf=c(l,d,"inverseOf");sameAs=c(l,d,"sameAs");transitiveProperty=c(l,d,"TransitiveProperty");symmetricProperty=c(l,d,"SymmetricProperty");objectProperty=c(l,d,"ObjectProperty");datatypeProperty=c(l,d,"DatatypeProperty");annotationProperty=c(l,d,"AnnotationProperty");package_=c(l,D,"Package")};export{K as a,S as b,v as c,T as d,c as e,L as f,O as g,N as h,F as i,w as j};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as m}from"./chunk-FUUTGGJS.js";var f=class{resourceResolver;constructor(e){this.resourceResolver=e}async buildFromNameAsync(e,r){return(await this.resourceResolver.resolveEntityAsync(e,r))?.uri??null}buildFromName(e,r,s){if(e.includes(".")){let o=e.split("."),c=o[0],u=o[1],a=this.findPackageNameForAlias(s,c);if(a){for(let i of r.values())if(i.entityName===u&&i.uri.package_===a)return i.uri}return null}let n=r.get(e);return n?n.uri:null}create(e,r,s,n){return new m(e,r,s,n)}findPackageNameForAlias(e,r){if(!e.metadata.imports)return null;for(let[s,n]of Object.entries(e.metadata.imports))for(let o of n)if(o.alias===r||!o.alias&&o.packageName===r)return o.packageName;return null}};async function R(t,e){let r=[],s=await t.getAllDocumentsAsync();for(let n of s){let o=n.metadata.namespace_;if(!o)continue;let c=o.publisher,u=o.package_,a=o.version?`${o.version.major}.${o.version.minor}.${o.version.patch}`:"0.0.0";for(let[i,p]of Object.entries(n.body)){if(!p||typeof p!="object")continue;let l=p.type;!l||typeof l!="string"||l!=="Package"&&d(l,e)&&r.push({entityName:i,entity:p,documentNamespace:`${c}/${u}@${a}`,publisher:c,package_:u,version:a})}}return r}function d(t,e){let r=y(t),s=y(e);return r===s}function y(t){let e=t.lastIndexOf(".");if(e!==-1)return t.substring(e+1);let r=t.lastIndexOf("/");return r!==-1?t.substring(r+1):t}export{f as a,R as b};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{c as _}from"./chunk-IO5RBK3J.js";import{a as j,b as x}from"./chunk-H2LEQLVD.js";import{d as l,e as u,f as b,g as $,h as s,j as h}from"./chunk-64TVBQFR.js";import{c as S,d as O,g as I,h as T,i as g,j as v,k as L,l as q}from"./chunk-W6T7MOKY.js";var d=class{all=new Set;byPIdx=new Map;bySPIdx=new Map;byPOIdx=new Map;tripleList=[];add(e){let t=b(e);return this.all.has(t)?!1:(this.all.add(t),this.tripleList.push(e),P(this.byPIdx,e.p,e),P(this.bySPIdx,`${e.s}|${e.p}`,e),e.o.kind==="uri"&&P(this.byPOIdx,`${e.p}|${e.o.key}`,e),!0)}has(e){return this.all.has(b(e))}size(){return this.tripleList.length}snapshot(){return this.tripleList.slice()}byPredicate(e){let t=this.byPIdx.get(e);return t?t.slice():[]}bySubjectPredicate(e,t){let r=this.bySPIdx.get(`${e}|${t}`);return r?r.slice():[]}byPredicateObject(e,t){let r=this.byPOIdx.get(`${e}|${t}`);return r?r.slice():[]}subjectsWithPredicateObject(e,t){let r=this.byPOIdx.get(`${e}|${t}`);if(!r)return[];let n=new Set;for(let a of r)n.add(a.s);return Array.from(n)}uriObjectsOf(e,t){let r=this.bySPIdx.get(`${e}|${t}`);if(!r)return[];let n=new Set;for(let a of r)a.o.kind==="uri"&&n.add(a.o.key);return Array.from(n)}hasUri(e,t,r){return this.all.has(`${e}|${t}|u:${r}`)}hasTriple(e,t,r){return this.all.has(`${e}|${t}|${$(r)}`)}};function P(o,e,t){let r=o.get(e);r?r.push(t):o.set(e,[t])}var w={name:"rdfs2",apply(o,e){let t=!1;for(let r of o.byPredicate(e.domain)){if(r.o.kind!=="uri")continue;let n=r.s,a=r.o.key;for(let i of o.byPredicate(n))o.add(s(i.s,e.type,a))&&(t=!0)}return t}},C={name:"rdfs3",apply(o,e){let t=!1;for(let r of o.byPredicate(e.range)){if(r.o.kind!=="uri")continue;let n=r.s,a=r.o.key;for(let i of o.byPredicate(n))i.o.kind==="uri"&&o.add(s(i.o.key,e.type,a))&&(t=!0)}return t}},A={name:"rdfs5",apply(o,e){let t=!1;for(let r of o.byPredicate(e.subPropertyOf)){if(r.o.kind!=="uri")continue;let n=r.s,a=r.o.key;for(let i of o.bySubjectPredicate(a,e.subPropertyOf))i.o.kind==="uri"&&o.add(s(n,e.subPropertyOf,i.o.key))&&(t=!0)}return t}},V={name:"rdfs7",apply(o,e){let t=!1;for(let r of o.byPredicate(e.subPropertyOf)){if(r.o.kind!=="uri")continue;let n=r.s,a=r.o.key;if(n!==a)for(let i of o.byPredicate(n)){let f={s:i.s,p:a,o:i.o};o.add(f)&&(t=!0)}}return t}},W={name:"rdfs9",apply(o,e){let t=!1;for(let r of o.byPredicate(e.subClassOf)){if(r.o.kind!=="uri")continue;let n=r.s,a=r.o.key;if(n!==a)for(let i of o.byPredicateObject(e.type,n))o.add(s(i.s,e.type,a))&&(t=!0)}return t}},F={name:"rdfs11",apply(o,e){let t=!1;for(let r of o.byPredicate(e.subClassOf)){if(r.o.kind!=="uri")continue;let n=r.s,a=r.o.key;for(let i of o.bySubjectPredicate(a,e.subClassOf))i.o.kind==="uri"&&o.add(s(n,e.subClassOf,i.o.key))&&(t=!0)}return t}},k=[w,C,A,V,W,F];var N={name:"prp-trp",apply(o,e){let t=!1,r=o.subjectsWithPredicateObject(e.type,e.transitiveProperty);for(let n of r){let a=o.byPredicate(n);for(let i of a){if(i.o.kind!=="uri")continue;let f=i.o.key;for(let c of o.bySubjectPredicate(f,n))c.o.kind==="uri"&&i.s!==c.o.key&&o.add(s(i.s,n,c.o.key))&&(t=!0)}}return t}},D={name:"prp-symp",apply(o,e){let t=!1,r=o.subjectsWithPredicateObject(e.type,e.symmetricProperty);for(let n of r)for(let a of o.byPredicate(n))a.o.kind==="uri"&&o.add(s(a.o.key,n,a.s))&&(t=!0);return t}},z={name:"prp-inv1",apply(o,e){let t=!1;for(let r of o.byPredicate(e.inverseOf)){if(r.o.kind!=="uri")continue;let n=r.s,a=r.o.key;for(let i of o.byPredicate(n))i.o.kind==="uri"&&o.add(s(i.o.key,a,i.s))&&(t=!0)}return t}},B={name:"prp-inv2",apply(o,e){let t=!1;for(let r of o.byPredicate(e.inverseOf)){if(r.o.kind!=="uri")continue;let n=r.s,a=r.o.key;for(let i of o.byPredicate(a))i.o.kind==="uri"&&o.add(s(i.o.key,n,i.s))&&(t=!0)}return t}},M={name:"prp-eqp1",apply(o,e){let t=!1;for(let r of o.byPredicate(e.equivalentProperty)){if(r.o.kind!=="uri")continue;let n=r.s,a=r.o.key;if(n!==a)for(let i of o.byPredicate(n))o.add({s:i.s,p:a,o:i.o})&&(t=!0)}return t}},G={name:"prp-eqp2",apply(o,e){let t=!1;for(let r of o.byPredicate(e.equivalentProperty)){if(r.o.kind!=="uri")continue;let n=r.s,a=r.o.key;if(n!==a)for(let i of o.byPredicate(a))o.add({s:i.s,p:n,o:i.o})&&(t=!0)}return t}},H={name:"cax-eqc1",apply(o,e){let t=!1;for(let r of o.byPredicate(e.equivalentClass)){if(r.o.kind!=="uri")continue;let n=r.s,a=r.o.key;if(n!==a)for(let i of o.byPredicateObject(e.type,n))o.add(s(i.s,e.type,a))&&(t=!0)}return t}},J={name:"cax-eqc2",apply(o,e){let t=!1;for(let r of o.byPredicate(e.equivalentClass)){if(r.o.kind!=="uri")continue;let n=r.s,a=r.o.key;if(n!==a)for(let i of o.byPredicateObject(e.type,a))o.add(s(i.s,e.type,n))&&(t=!0)}return t}},Q={name:"eq-rep-s",apply(o,e){let t=!1;for(let r of o.byPredicate(e.sameAs)){if(r.o.kind!=="uri")continue;let n=r.s,a=r.o.key;if(n!==a){for(let i of o.snapshot())i.s===n&&o.add({s:a,p:i.p,o:i.o})&&(t=!0);for(let i of o.snapshot())i.s===a&&o.add({s:n,p:i.p,o:i.o})&&(t=!0)}}return t}},X={name:"eq-rep-o",apply(o,e){let t=!1;for(let r of o.byPredicate(e.sameAs)){if(r.o.kind!=="uri")continue;let n=r.s,a=r.o.key;if(n!==a)for(let i of o.snapshot())i.o.kind==="uri"&&(i.o.key===n?o.add(s(i.s,i.p,a))&&(t=!0):i.o.key===a&&o.add(s(i.s,i.p,n))&&(t=!0))}return t}},K=[N,D,z,B,M,G,H,J,Q,X];var y=class{constructor(e,t){this.store=e;this.vocabulary=t}store;vocabulary;getInstancesOfClass(e){let t=p(e);return this.store.subjectsWithPredicateObject(this.vocabulary.type,t)}getSubclasses(e){let t=p(e);return this.store.subjectsWithPredicateObject(this.vocabulary.subClassOf,t).filter(n=>n!==t)}getSuperclasses(e){let t=p(e);return this.store.uriObjectsOf(t,this.vocabulary.subClassOf).filter(r=>r!==t)}getTypesOfIndividual(e){return this.store.uriObjectsOf(p(e),this.vocabulary.type)}isInstanceOf(e,t){return this.store.hasUri(p(e),this.vocabulary.type,p(t))}triples(){return this.store.snapshot()}size(){return this.store.size()}};function p(o){return typeof o=="string"?o:u(o.publisher,o.package_,o.name)}var R=class{vocabulary;profile;maxIterations;constructor(e={}){this.vocabulary=e.vocabulary??new h,this.profile=e.profile??"owl-rl-classification",this.maxIterations=e.maxIterations??100}async reason(e){let t=new d,n=await new _().parseKanonaks(e),a=new U;for(let c of n)if(c instanceof S){let m=Y(c);if(!m)continue;for(let E of c.statement)this.emitStatement(m,E,t,a)}let i=[...k];this.profile==="owl-rl-classification"&&i.push(...K);let f=0;for(;f<this.maxIterations;){let c=!1;for(let m of i)m.apply(t,this.vocabulary)&&(c=!0);if(!c)break;f++}return new y(t,this.vocabulary)}emitStatement(e,t,r,n){let a=Z(t);if(a){if(t instanceof I){r.add({s:e,p:a,o:{kind:"literal",lexical:t.object,datatype:"string"}});return}if(t instanceof T){r.add({s:e,p:a,o:{kind:"literal",lexical:String(t.object),datatype:"number"}});return}if(t instanceof g){r.add({s:e,p:a,o:{kind:"literal",lexical:String(t.object),datatype:"boolean"}});return}if(t instanceof v){let i=l(t.object.subject);r.add(s(e,a,i));return}if(t instanceof L){let i=n.next();r.add({s:e,p:a,o:{kind:"blank",id:i}}),this.emitEmbedded(i,t.object,r,n);return}if(t instanceof q){for(let i of t.object??[])this.emitListItem(e,a,i,r,n);return}}}emitListItem(e,t,r,n,a){if(r instanceof O)n.add(s(e,t,l(r.subject)));else if(r instanceof j){let i=a.next();n.add({s:e,p:t,o:{kind:"blank",id:i}}),this.emitEmbedded(i,r,n,a)}else if(r instanceof x){let i=typeof r.value=="number"?"number":typeof r.value=="boolean"?"boolean":"string";n.add({s:e,p:t,o:{kind:"literal",lexical:String(r.value),datatype:i}})}}emitEmbedded(e,t,r,n){let a=`_:${e}`;for(let i of t.statement)this.emitStatement(a,i,r,n)}},U=class{counter=0;next(){return`b${this.counter++}`}};function Y(o){let e=o.namespace??"",t=e.indexOf("@"),r=t===-1?e:e.substring(0,t),n=r.indexOf("/");if(n===-1)return null;let a=r.substring(0,n),i=r.substring(n+1);return!a||!i||!o.name?null:u(a,i,o.name)}function Z(o){let e=o.predicate;return e?.subject?l(e.subject):null}export{d as a,k as b,K as c,y as d,R as e};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as n,b as r,g as t}from"./chunk-W6T7MOKY.js";var s=class extends r{name};var o=class extends n{value};var a=class extends t{links=[]};export{s as a,o as b,a as c};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as R}from"./chunk-
|
|
1
|
+
import{a as R}from"./chunk-H2LEQLVD.js";import{a as j,e as b}from"./chunk-FQHALFRR.js";import{c as D,d as p,g as l,j as m,k as g,l as d}from"./chunk-W6T7MOKY.js";function te(t,n,e,r){let i=v(t);if(i.length>0){let s=h(i,n,e);return s?{transformation:s.transformation,source:"instance"}:void 0}let a=new Set,o=I(t);for(;o.length>0;){let s=o.shift(),c=_(s.subject);if(a.has(c))continue;a.add(c);let u=y(r,s.subject);if(!u)continue;let U=v(u),S=h(U,n,e);if(S)return{transformation:S.transformation,source:{publisher:s.subject.publisher,package_:s.subject.package_,name:s.subject.name}};for(let x of w(u))o.push(x)}let f={publisher:"kanonak.org",package_:"core-rdf",name:"Resource"};if(!a.has(_(f))){let s=y(r,f);if(s){let c=v(s),u=h(c,n,e);if(u)return{transformation:u.transformation,source:f}}}}function v(t){let n=[];for(let e of t.statement)if(e instanceof d&&k(e,"kanonak.org","derivation","derivations"))for(let r of e.object??[]){if(!(r instanceof R))continue;let i=T(r);i&&n.push(i)}return n}function h(t,n,e){let r=t.filter(o=>K(o.format,n)&&K(o.variant,e));if(r.length<=1)return r[0];let i=r[0].transformation,a=r[0];for(let o of r){let f=o.transformation;if(f.publisher!==i.publisher||f.package_!==i.package_||f.name!==i.name)continue;let s=b(a.transformation.version),c=b(f.version);s&&c&&j(c,s)>0&&(a=o)}return a}function T(t){let n,e,r;for(let i of t.statement)i instanceof m?k(i,"kanonak.org","derivation","format")?n=E(i):k(i,"kanonak.org","derivation","variant")&&(e=E(i)):i instanceof g&&k(i,"kanonak.org","derivation","transformation")&&(r=P(i.object));if(!(!n||!r))return e||(e={publisher:"kanonak.org",package_:"derivation",name:"default"}),{format:n,variant:e,transformation:r}}function P(t){let n,e,r,i;for(let a of t.statement){if(!(a instanceof l))continue;let o=a.predicate?.subject?.name;o==="publisher"?n=a.object:o==="package"?e=a.object:o==="version"?r=a.object:o==="name"&&(i=a.object)}if(!(!n||!e||!r||!i))return{publisher:n,package_:e,version:r,name:i}}function I(t){let n=[];for(let e of t.statement)e instanceof m&&e.predicate?.subject?.name==="type"&&e.object instanceof p&&n.push(e.object);return n}function w(t){let n=[];for(let e of t.statement)if(e instanceof m){if(e.predicate?.subject?.name!=="subClassOf")continue;e.object instanceof p&&n.push(e.object)}else if(e instanceof d){if(e.predicate?.subject?.name!=="subClassOf")continue;for(let r of e.object??[])r instanceof p&&n.push(r)}return n}function y(t,n){for(let e of t){if(!(e instanceof D)||e.name!==n.name)continue;if((e.namespace||"").startsWith(`${n.publisher}/${n.package_}@`))return e}}function k(t,n,e,r){let i=t.predicate?.subject;return i?i.publisher===n&&i.package_===e&&i.name===r:!1}function E(t){let n=t.object.subject;return{publisher:n.publisher,package_:n.package_,name:n.name}}function K(t,n){return t.publisher===n.publisher&&t.package_===n.package_&&t.name===n.name}function _(t){return`${t.publisher}/${t.package_}/${t.name}`}export{te as a};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as h,b as R,c as T}from"./chunk-H2LEQLVD.js";import{a as M}from"./chunk-7CUTGGH3.js";import{b as A,c as E,i as P}from"./chunk-64TVBQFR.js";import{c as g,d as l,g as j,h as I,i as O,j as S,k as w,l as K}from"./chunk-W6T7MOKY.js";var L=/\[\[([^\[\]\n]+)\]\]/g,N=/\[\[/g,v=/```[\s\S]*?```|`[^`\n]*`/g;function V(d){let e=[];for(let t of d.matchAll(v))e.push([t.index,t.index+t[0].length]);return e}function C(d){if(!d||!d.includes("[["))return[];let e=V(d),t=r=>e.some(([n,i])=>r>=n&&r<i),s=new Set(D(d).map(r=>r.startOffset)),a=[];for(let r of d.matchAll(N)){let n=r.index;if(t(n)||s.has(n))continue;let i=d.slice(n,n+48).replace(/\s+/g," ").trim();a.push({startOffset:n,snippet:i})}return a}function D(d){if(!d||!d.includes("[["))return[];let e=[];for(let a of d.matchAll(v))e.push([a.index,a.index+a[0].length]);let t=a=>e.some(([r,n])=>a>=r&&a<n),s=[];for(let a of d.matchAll(L)){let r=a.index;if(t(r))continue;let n=a[1],i=n.indexOf("|"),c=(i===-1?n:n.slice(0,i)).trim();if(c.length===0)continue;let m=i===-1?"":n.slice(i+1).trim(),o={reference:c,startOffset:r,endOffset:r+a[0].length};m.length>0&&(o.displayText=m),s.push(o)}return s}var x=class{constructor(e){}async parseKanonaks(e){let t=[],s=await e.getAllDocumentsAsync(),a=new A(e),r=new E(a);for(let o of s){let p=o.metadata.namespace_?.toString()??"";for(let[f,y]of Object.entries(o.body)){let u=new g,b=this.resolveCanonicalEntity(f,o,p);u.namespace=b.namespace,u.name=b.name,u.statement=[];let k=await this.parseStatements(y,o,a,r,e);u.statement.push(...k),t.push(u)}}let n=new Map,i=[];for(let o of t)if(o instanceof g){let p=`${o.namespace}/${o.name}`,f=n.get(p);f?f.statement.push(...o.statement):(n.set(p,o),i.push(o))}else i.push(o);let c=new Set;for(let o of i)if(o instanceof g){let p=o.namespace||"",f=p.indexOf("/"),y=f>=0?p.slice(0,f):"",u=f>=0?p.slice(f+1):"",b=u.indexOf("@"),k=b>=0?u.slice(0,b):u;c.add(`${y}/${k}/${o.name}`)}let m=o=>c.has(`${o.publisher}/${o.package_}/${o.name}`);for(let o of i)o instanceof g&&this.canonicalizeStatementBuiltins(o.statement,m);return i}canonicalizeStatementBuiltins(e,t){for(let s of e){let a=s.predicate?.subject;if(P(a,t),s instanceof S)s.object instanceof l&&P(s.object.subject,t);else if(s instanceof w)s.object&&this.canonicalizeStatementBuiltins(s.object.statement,t);else if(s instanceof K)for(let r of s.object??[])r instanceof l?P(r.subject,t):r instanceof h&&this.canonicalizeStatementBuiltins(r.statement,t)}}resolveCanonicalEntity(e,t,s){if(!e.includes(".")||!t.metadata?.imports)return{namespace:s,name:e};let a=e.indexOf("."),r=e.substring(0,a),n=e.substring(a+1);for(let[i,c]of Object.entries(t.metadata.imports))for(let m of c)if((m.alias??m.packageName)===r){let p=m.version;return{namespace:`${i}/${m.packageName}@${p.major}.${p.minor}.${p.patch}`,name:n}}return{namespace:s,name:e}}async parseStatements(e,t,s,a,r){let n=[];if(typeof e!="object"||e===null||Array.isArray(e))return n;for(let[i,c]of Object.entries(e))try{let m=await this.getPropertyMetadata(i,t,s,r,a);if(!m)continue;let o=await this.parsePropertyValue(i,c,m,t,s,a);o&&n.push(o)}catch(m){console.error(`Error parsing property ${i}:`,m)}return n}async getPropertyMetadata(e,t,s,a,r){let n=await s.resolveEntityAsync(e,t);if(!n)return;let i=n.entity,c=i.type?.toString()??"",m=c.includes(".")?c.substring(c.lastIndexOf(".")+1):c;if(!new Set(["Property","DatatypeProperty","ObjectProperty","AnnotationProperty"]).has(m))return;let p=r.getPropertyTypeClassification(c),f=i.range?.toString(),y;if(p==="ObjectProperty")y="ObjectProperty";else if(p==="DatatypeProperty")y="DatatypeProperty";else{let k=f&&f.includes(".")?f.substring(f.lastIndexOf(".")+1):f??"";(f?r.isKnownXsdDatatypeName(f):!1)||k==="Literal"?y="DatatypeProperty":y="ObjectProperty"}let u;return f&&(u=(await s.resolveEntityAsync(f,t))?.uri),{propertyUri:n.uri.toString(),propertyType:y,range:f,rangeUri:u,isImported:n.isImported,definedInNamespace:n.definedInNamespace}}async parsePropertyValue(e,t,s,a,r,n){let i=s.propertyUri;if(t!=null){if(Array.isArray(t))return this.parseListValue(i,t,s,a,r,n);if(s.propertyType==="DatatypeProperty")return this.parseDatatypeValue(i,t,s,a,r,n);if(s.propertyType==="ObjectProperty")return this.parseObjectValue(i,t,s,a,r,n)}}async parseDatatypeValue(e,t,s,a,r,n){if(t instanceof Date)return j.parse(e,t.toISOString());if(typeof t=="string")return n.isSubstitutableDatatype(s.rangeUri)?await this.parseSubstitutableValue(e,t,a,r):j.parse(e,t);if(typeof t=="number")return I.parse(e,t);if(typeof t=="boolean"){let i=new O;return i.predicate=l.parse(e),i.object=t,i}}async parseSubstitutableValue(e,t,s,a){let r=new T;r.predicate=l.parse(e),r.object=t;for(let n of D(t)){let i=await a.resolveEntityAsync(n.reference,s),c;i&&(c=new l,c.subject=i.uri);let m={reference:n.reference,startOffset:n.startOffset,endOffset:n.endOffset};n.displayText!==void 0&&(m.displayText=n.displayText),c!==void 0&&(m.target=c),r.links.push(m)}return r}async parseObjectValue(e,t,s,a,r,n){if(typeof t=="string"){let i=await this.resolveReference(t,a,r);if(!i)return;let c=new S;return c.predicate=l.parse(e),c.object=i,c}if(typeof t=="object"&&!Array.isArray(t)){let i=new h;if(i.statement=await this.parseStatements(t,a,r,n,{}),i.statement.length>0){let o=new w;return o.predicate=l.parse(e),o.object=i,o}let c=[];for(let[o,p]of Object.entries(t))if(typeof p=="object"&&p!==null&&!Array.isArray(p)){let f=new h;f.name=o,f.statement=await this.parseStatements(p,a,r,n,{}),c.push(f)}else if(typeof p=="string"){let f=await this.resolveReference(p,a,r);f&&c.push(f)}if(c.length>0){let o=new K;return o.predicate=l.parse(e),o.object=c,o}let m=new w;return m.predicate=l.parse(e),m.object=i,m}}async parseListValue(e,t,s,a,r,n){let i=[],c=s.propertyType==="DatatypeProperty";for(let o of t){if(c&&(typeof o=="string"||typeof o=="number"||typeof o=="boolean")){let p=new R;p.value=o,i.push(p);continue}if(c&&o instanceof Date){let p=new R;p.value=o.toISOString(),i.push(p);continue}if(typeof o=="string"){let p=await this.resolveReference(o,a,r);p&&i.push(p)}else if(typeof o=="object"&&o!==null&&!Array.isArray(o)){let p=new h;p.statement=await this.parseStatements(o,a,r,n,{}),i.push(p)}}let m=new K;return m.predicate=l.parse(e),m.object=i,m}async resolveReference(e,t,s){let a=await s.resolveEntityAsync(e,t);if(a){let n=new l;return n.subject=a.uri,n}let r=t.metadata?.namespace_;if(r){let{KanonakUri:n}=await import("./KanonakUri-4VJGV3FN.js"),i=r.version??{major:0,minor:0,patch:0,toString:()=>"0.0.0",equals:()=>!1,getHashCode:()=>0,compareTo:()=>0};if(e.includes(".")){let m=e.indexOf("."),o=e.substring(0,m),p=e.substring(m+1);if(t.metadata?.imports){for(let[f,y]of Object.entries(t.metadata.imports))for(let u of y)if((u.alias??u.packageName)===o){let k=new l;return k.subject=new n(f,u.packageName,p,u.version),k}}}let c=new l;return c.subject=new n(r.publisher,r.package_,e,i),c}return null}async saveKanonaks(e,t){let s=new Map;for(let a of e)a instanceof g&&a.namespace&&(s.has(a.namespace)||s.set(a.namespace,[]),s.get(a.namespace).push(a));for(let[a,r]of s){let n=await this.convertKanonaksToDocument(a,r),i=`${a.split("@")[0]}.yml`;await t.saveDocumentAsync(n,i)}}async serializeToYaml(e,t){let s=e.filter(n=>n instanceof g&&n.namespace===t);if(s.length===0)throw new Error(`No kanonaks found with namespace '${t}'`);let a=await this.convertKanonaksToDocument(t,s);return new M().save(a)}async convertKanonaksToDocument(e,t){let a={metadata:{namespace_:e,get allImports(){if(!this.imports)return[];let n=[];for(let i of Object.values(this.imports))n.push(...i);return n}},body:{}},r=new Map;for(let n of t){let i={};for(let c of n.statement){let[m,o]=this.convertStatementToProperty(c);m&&o!==null&&o!==void 0&&(i[m]=o),this.collectImportsFromStatement(c,e,r)}a.body[n.name]=i}return a}convertStatementToProperty(e){if(e instanceof j)return[e.predicate.subject.name,e.object];if(e instanceof I)return[e.predicate.subject.name,e.object];if(e instanceof O)return[e.predicate.subject.name,e.object];if(e instanceof S)return[e.predicate.subject.name,e.object.subject.name];if(e instanceof K){let t=this.convertKanonakListToValue(e.object);return[e.predicate.subject.name,t]}else if(e instanceof w){let t=this.convertEmbeddedKanonakToValue(e.object);return[e.predicate.subject.name,t]}return[null,null]}convertKanonakListToValue(e){let t=[];for(let s of e)s instanceof l?t.push(s.subject.name):s instanceof h&&t.push(this.convertEmbeddedKanonakToValue(s));return t}convertEmbeddedKanonakToValue(e){let t={};for(let s of e.statement){let[a,r]=this.convertStatementToProperty(s);a&&r!==null&&r!==void 0&&(t[a]=r)}return t}collectImportsFromStatement(e,t,s){}};export{C as a,D as b,x as c};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{b as V}from"./chunk-IO5RBK3J.js";import{a as E}from"./chunk-7CUTGGH3.js";var L=class{propertyUri;propertyType;range;rangeUri;isImported;definedInNamespace};import{parseDocument as O,LineCounter as R,isMap as h,isPair as f,isScalar as g,isSeq as I}from"yaml";var K=class i{entities=new Map;entityBlocks=new Map;properties=new Map;propertyValues=new Map;valueListItems=new Map;importPackages=new Map;nestedKeys=new Map;nestedValues=new Map;static fromContent(e){let t=new i,n=new R,r=O(e,{lineCounter:n});if(r.errors.length>0||!h(r.contents))return t;N(r.contents,[],n,t);for(let o of r.contents.items){if(!f(o)||!g(o.key))continue;let a=String(o.key.value),u=o.key.range;if(!u)continue;t.entities.set(a,d(u,n));let s=o.value,c=s&&typeof s=="object"&&"range"in s?s.range:void 0;if(c?t.entityBlocks.set(a,d([u[0],u[1],c[2]],n)):t.entityBlocks.set(a,d(u,n)),h(o.value)){let k=new Map,m=new Map,l=new Map;for(let P of o.value.items){if(!f(P)||!g(P.key))continue;let b=String(P.key.value),p=P.key.range;p&&k.set(b,d(p,n));let S=P.value;if(S&&typeof S=="object"&&"range"in S&&Array.isArray(S.range)){let v=S.range;m.set(b,d(v,n))}if(I(S)){let v=[];for(let M of S.items)M&&typeof M=="object"&&"range"in M&&Array.isArray(M.range)&&v.push(d(M.range,n));v.length>0&&l.set(b,v)}}k.size>0&&t.properties.set(a,k),m.size>0&&t.propertyValues.set(a,m),l.size>0&&t.valueListItems.set(a,l);let y=j(o.value,n);y.length>0&&t.importPackages.set(a,y)}}return t}getEntityPosition(e){return this.entities.get(e)}getEntityBlockPosition(e){return this.entityBlocks.get(e)}findEntityAtPosition(e,t){for(let[n,r]of this.entityBlocks)if(w(r,e,t))return n}findPropertyAtPosition(e,t){let n=this.findEntityAtPosition(e,t);if(!n)return;let r=this.properties.get(n),o=this.propertyValues.get(n);if(!r&&!o)return{entityName:n};let a,u;if(o)for(let[s,c]of o)w(c,e,t)&&(!u||C(c,u))&&(a=s,u=c);if(r)for(let[s,c]of r)w(c,e,t)&&(!u||C(c,u))&&(a=s,u=c);return a?{entityName:n,propertyName:a}:{entityName:n}}getPropertyPosition(e,t){return this.properties.get(e)?.get(t)}getPropertyValuePosition(e,t){return this.propertyValues.get(e)?.get(t)}getImportPackages(e){return this.importPackages.get(e)??[]}getAllImportPackages(){let e=[];for(let[t,n]of this.importPackages)for(let r of n)e.push({entityName:t,entry:r});return e}findPropertySourceName(e,t){let n=this.properties.get(e);if(n){if(n.has(t))return t;for(let r of n.keys()){let o=r.lastIndexOf(".");if((o===-1?r:r.substring(o+1))===t)return r}}}getListItemPosition(e,t,n){let r=this.valueListItems.get(e)?.get(t);if(!(!r||n<0||n>=r.length))return r[n]}getNodeKeyPosition(e){return this.nestedKeys.get(JSON.stringify(e))}getNodeValuePosition(e){return this.nestedValues.get(JSON.stringify(e))}setNestedKeyPosition(e,t){this.nestedKeys.set(e,t)}setNestedValuePosition(e,t){this.nestedValues.set(e,t)}getMostSpecificPosition(e,t,n){if(e){if(t!==void 0){if(n!==void 0){let a=this.getListItemPosition(e,t,n);if(a)return a}let r=this.getPropertyValuePosition(e,t);if(r)return r;let o=this.getPropertyPosition(e,t);if(o)return o}return this.getEntityPosition(e)}}};function j(i,e){let t=[];if(!h(i))return t;let n=i.items.find(r=>f(r)&&g(r.key)&&String(r.key.value)==="imports");if(!n||!f(n)||!I(n.value))return t;for(let r of n.value.items){if(!h(r))continue;let o=r.items.find(s=>f(s)&&g(s.key)&&String(s.key.value)==="publisher");if(!o||!f(o)||!g(o.value))continue;let a=String(o.value.value),u=r.items.find(s=>f(s)&&g(s.key)&&String(s.key.value)==="packages");if(!(!u||!f(u)||!I(u.value)))for(let s of u.value.items){if(!h(s))continue;let c=s.items.find(p=>f(p)&&g(p.key)&&String(p.key.value)==="package");if(!c||!f(c)||!g(c.value)||!c.value.range)continue;let k=String(c.value.value),m=s.items.find(p=>f(p)&&g(p.key)&&String(p.key.value)==="version"),l=m&&f(m)&&g(m.value)?String(m.value.value):"",y=s.items.find(p=>f(p)&&g(p.key)&&String(p.key.value)==="alias"),P=y&&f(y)&&g(y.value)?String(y.value.value):void 0,b=P!==void 0?{publisher:a,package_:k,version:l,alias:P,position:d(c.value.range,e)}:{publisher:a,package_:k,version:l,position:d(c.value.range,e)};t.push(b)}}return t}function w(i,e,t){return!(e<i.line||e>i.endLine||e===i.line&&t<i.column||e===i.endLine&&t>i.endColumn)}function C(i,e){let t=i.endLine-i.line,n=e.endLine-e.line;if(t!==n)return t<n;let r=i.endLine===i.line?i.endColumn-i.column:Number.MAX_SAFE_INTEGER,o=e.endLine===e.line?e.endColumn-e.column:Number.MAX_SAFE_INTEGER;return r<o}function N(i,e,t,n){if(h(i)){for(let r of i.items){if(!f(r)||!g(r.key))continue;let o=String(r.key.value),a=[...e,o],u=JSON.stringify(a);r.key.range&&n.setNestedKeyPosition(u,d(r.key.range,t));let s=r.value,c=D(s);c&&n.setNestedValuePosition(u,d(c,t)),N(s,a,t,n)}return}if(I(i)){for(let r=0;r<i.items.length;r++){let o=i.items[r],a=[...e,r],u=JSON.stringify(a),s=D(o);s&&n.setNestedValuePosition(u,d(s,t)),N(o,a,t,n)}return}}function D(i){if(!i||typeof i!="object"||!("range"in i))return;let e=i.range;return Array.isArray(e)&&e.length>=3?e:void 0}function d(i,e){let t=e.linePos(i[0]),n=e.linePos(i[2]);return{line:t.line-1,column:t.col-1,endLine:n.line-1,endColumn:n.col-1}}function x(i,e){let n=(e??new E).parse(i),r=K.fromContent(i);return{document:n,positions:r}}function W(i,e,t,n,r){if(e<n.line||e>n.endLine||e===n.line&&t<n.column||e===n.endLine&&t>=n.endColumn)return;let o=A(r,n.line,n.column),a=A(r,n.endLine,n.endColumn);if(o<0||a<0)return;let u=r.substring(o,a),s=V(u);if(s.length!==i.links.length)return;let c=e-n.line,k=e===n.line?t-n.column:t,m=A(u,c,k);if(!(m<0))for(let l=0;l<s.length;l++){let y=s[l];if(m>=y.startOffset&&m<y.endOffset)return i.links[l]}}function A(i,e,t){let n=0,r=0;for(let o=0;o<i.length;o++){if(n===e)return Math.min(r+t,i.length);i[o]===`
|
|
2
2
|
`&&(n++,r=o+1)}return n===e?Math.min(r+t,i.length):-1}export{L as a,K as b,x as c,W as d};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as p,f as U,h as _,i as m,k as j}from"./chunk-Q4DKP5DO.js";import{i as g}from"./chunk-64TVBQFR.js";import{c as K,d as S}from"./chunk-W6T7MOKY.js";import{a as b}from"./chunk-FUUTGGJS.js";var $=new Set(["kanonak.org/core-rdf","kanonak.org/core-owl","kanonak.org/core-xsd","kanonak.org/core-kanonak"]);function s(r){let n=r;if(n.entity&&typeof n.entity=="object"){let e=n.entity.type;if(typeof e=="string"){let a={publisher:"",package_:"",name:e.includes(".")?e.substring(e.lastIndexOf(".")+1):e};return g(a),{publisher:a.publisher,package_:a.package_,name:a.name}}}if(n.statement&&Array.isArray(n.statement)){for(let e of n.statement)if(e.predicate?.subject?.name==="type"&&e.object?.subject){let t=e.object.subject,a={publisher:t.publisher??"",package_:t.package_??"",name:t.name};return g(a),{publisher:a.publisher,package_:a.package_,name:a.name}}}return null}function c(r,n){return $.has(`${r}/${n}`)}var k=class r{static getTypeUri(n){return s(n)}static isCoreOntologyType(n){return c(n.publisher,n.package_)}static isClassType(n){let e=s(n);return e?c(e.publisher,e.package_)&&e.name==="Class":!1}static isDatatypeType(n){let e=s(n);return e?c(e.publisher,e.package_)&&e.name==="Datatype":!1}static isDatatypePropertyType(n){let e=s(n);return e?c(e.publisher,e.package_)&&e.name==="DatatypeProperty":!1}static isObjectPropertyType(n){let e=s(n);return e?c(e.publisher,e.package_)&&e.name==="ObjectProperty":!1}static isAnnotationPropertyType(n){let e=s(n);return e?c(e.publisher,e.package_)&&e.name==="AnnotationProperty":!1}static isGenericPropertyType(n){let e=s(n);return e?c(e.publisher,e.package_)&&e.name==="Property":!1}static isAnyPropertyType(n){let e=s(n);return!e||!c(e.publisher,e.package_)?!1:e.name==="Property"||e.name==="DatatypeProperty"||e.name==="ObjectProperty"||e.name==="AnnotationProperty"}static isSchemaDefinitionType(n){let e=s(n);return!e||!c(e.publisher,e.package_)?!1:e.name==="Class"||e.name==="Property"||e.name==="DatatypeProperty"||e.name==="ObjectProperty"||e.name==="AnnotationProperty"||e.name==="Datatype"}static isInstanceOfKnownClass(n,e){if(r.isSchemaDefinitionType(n))return!1;let t=s(n);return t?e.has(t.name):!1}};function P(r){if(!r||r.trim().length===0)throw new Error("Kanonak address string cannot be null or empty");let n=r.trim(),e=n.split("/");if(e.length===1){let t=e[0];if(!t)throw new Error(`Invalid Kanonak address: "${r}". Expected publisher, publisher/package[@version], or publisher/package[@version]/name.`);if(t.includes("@"))throw new Error(`Invalid Kanonak address: "${r}". A bare publisher cannot carry an @version qualifier \u2014 versions belong to packages.`);return{kind:"publisher",publisher:t}}if(e.length===2){let[t,a]=e;if(!t||!a)throw new Error(`Invalid Kanonak address: "${r}". Expected publisher/package[@version].`);let o=a.indexOf("@");if(o===-1)return{kind:"package",publisher:t,package_:a};let i=a.substring(0,o),u=a.substring(o+1);if(!i||!u)throw new Error(`Invalid Kanonak address: "${r}". Expected publisher/package[@version].`);let f=A(u);return{kind:"package",publisher:t,package_:i,version:f}}return{kind:"resource",uri:b.parse(n)}}function q(r){switch(r.kind){case"publisher":return r.publisher;case"package":return r.version?`${r.publisher}/${r.package_}@${r.version.major}.${r.version.minor}.${r.version.patch}`:`${r.publisher}/${r.package_}`;case"resource":return r.uri.toString()}}function A(r){let n=r.split(".").map(Number);return w(n[0]||0,n[1]||0,n[2]||0)}function w(r,n,e){return{major:r,minor:n,patch:e,toString:()=>`${r}.${n}.${e}`,equals:t=>!t||typeof t!="object"?!1:t.major===r&&t.minor===n&&t.patch===e,getHashCode:()=>r<<20|n<<10|e,compareTo:t=>r!==t.major?r-t.major:n!==t.minor?n-t.minor:e-t.patch}}var l="kanonak.org",y="core-rdf",T={publisher:l,package_:y,name:"domain"},v={publisher:l,package_:y,name:"range"},x={publisher:l,package_:y,name:"subClassOf"},D={publisher:l,package_:y,name:"type"},R={publisher:l,package_:y,name:"label"},C=new b(l,y,"Resource"),O=r=>r;function I(r){try{let n=P(`${r.namespace}/${r.name}`);return n.kind==="resource"?n.uri:void 0}catch{return}}function d(r,n){let e=m(r,n);if(e)return[e];let t=[];for(let a of j(r,n))a instanceof S&&t.push(a.subject);return t}function V(r,n){let e=new Set([p(C)]),t=new Set,a=[new b(n.publisher,n.package_,n.name)];for(;a.length>0;){let o=a.shift(),i=p(o);if(t.has(i))continue;t.add(i),e.add(i);let u=U(r,o);u&&a.push(...d(u,x))}return e}function B(r,n){let e=V(r,n),t=[],a=new Set;for(let o of r){if(!(o instanceof K))continue;let i=O(o);if(!k.isAnyPropertyType(i)||!d(o,T).some(E=>e.has(p(E))))continue;let f=I(o);if(!f)continue;let h=p(f);a.has(h)||(a.add(h),t.push({uri:f,label:_(o,R),kind:k.isObjectPropertyType(i)?"object":k.isDatatypePropertyType(i)?"datatype":"other",range:m(o,v)}))}return t}function Q(r,n,e){let t=B(r,n).find(a=>p(a.uri)===p(e));return t?{ok:!0,descriptor:t}:{ok:!1,message:`Property ${e.publisher}/${e.package_}/${e.name} is not in scope for ${n.publisher}/${n.package_}/${n.name}.`}}function X(r){return d(r,D)}export{k as a,P as b,q as c,I as d,B as e,Q as f,X as g};
|