@kanonak-protocol/sdk 3.39.0 → 3.41.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.d.ts CHANGED
@@ -12,7 +12,7 @@ export { KanonakParser, KanonakObjectParser, PropertyMetadata, KanonakDocumentPo
12
12
  export type { IKanonakObjectParser, SourcePosition, ImportPackageEntry, ParsedDocumentWithPositions, } from './parsing/index.js';
13
13
  export { GraphBuilder, NodeType, EdgeType } from './graph/index.js';
14
14
  export type { GraphNode, GraphEdge, GraphData } from './graph/index.js';
15
- export { OntologyValidationResult, OntologyValidationError, ValidationSeverity, ValidationContext, KanonakObjectValidator, NamespacePrefixRule, ResourceNamingRule, PropertyTypeSpecificityRule, SubjectKanonakTypeRequiredRule, EmbeddedKanonakTypeRule, ImportExistenceRule, UnresolvedReferenceRule, TypeAmbiguityRule, ClassHierarchyCycleRule, PropertyHierarchyCycleRule, PropertyRangeRequiredRule, SubClassOfReferenceRule, SubPropertyOfReferenceRule, NamespaceImportCycleRule, InstancePropertyReferenceRule, DefinitionPropertyReferenceRule, XsdImportRule, AmbiguousReferenceRule, PropertyRangeReferenceRule, ObjectPropertyImportRule, ObjectPropertyValueValidationRule, PropertyDomainRule, PropertyValueTypeRule, ClassDefinitionRule, MarkdownLinkRule } from './validation/index.js';
15
+ export { OntologyValidationResult, OntologyValidationError, ValidationSeverity, ValidationContext, KanonakObjectValidator, NamespacePrefixRule, ResourceNamingRule, PropertyTypeSpecificityRule, SubjectKanonakTypeRequiredRule, EmbeddedKanonakTypeRule, ImportExistenceRule, UnresolvedReferenceRule, ClassHierarchyCycleRule, PropertyHierarchyCycleRule, PropertyRangeRequiredRule, SubClassOfReferenceRule, SubPropertyOfReferenceRule, NamespaceImportCycleRule, InstancePropertyReferenceRule, DefinitionPropertyReferenceRule, XsdImportRule, AmbiguousReferenceRule, PropertyRangeReferenceRule, ObjectPropertyImportRule, ObjectPropertyValueValidationRule, PropertyDomainRule, PropertyValueTypeRule, ClassDefinitionRule, MarkdownLinkRule } from './validation/index.js';
16
16
  export type { IKanonakObjectValidator, IDocumentValidationRule, IRepositoryValidationRule } from './validation/index.js';
17
17
  export { Kanonak, DefinedKanonak, SubjectKanonak, EmbeddedKanonak, ReferenceKanonak } from './kanonaks/index.js';
18
18
  export type { IStatement } from './statements/index.js';
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-EGHULU3U.js";import{a as Ye}from"./chunk-KE4QZNDZ.js";import{a as H,b as L,c as W,d as F}from"./chunk-VQFL5C7Q.js";import{a as Pe,b as we,c as he}from"./chunk-RZ57SDAT.js";import{a as ye,b as ke,e as be}from"./chunk-4TJZIM7A.js";import"./chunk-NIGFQYVA.js";import{A as We,B as Fe,C as Ge,D as Xe,E as Qe,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 Ae,n as Ie,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-YRMZ5R2W.js";import"./chunk-FJ35VIV6.js";import{a as Y,c as le,f as pe}from"./chunk-SQDXESNM.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 q}from"./chunk-7CUTGGH3.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-5ILSX24H.js";import{a as Z}from"./chunk-FUUTGGJS.js";var j="kanonak-credentials",u="credentials",Ze=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,Ze);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
- 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 rr(t)),o&&(s.nonce=o),await er(a,s,n.signingKey)}function x(n){return!n||n.length===0?!1:n.some(r=>r.toUpperCase()==="ES256")}async function er(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 rr(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 tr=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=nr(),p=await or(m),R=sr(),I=ir(t.authorizationEndpoint,i,this.callbackUrl,R,p),y=await this.openAuthPopup(I,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:A(o.dpop_signing_alg_values_supported),codeChallengeMethodsSupported:A(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)},tr),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 nr(){let n=new Uint8Array(32);return crypto.getRandomValues(n),B(n.buffer)}async function or(n){let r=new TextEncoder().encode(n),e=await crypto.subtle.digest("SHA-256",r);return B(e)}function sr(){let n=new Uint8Array(16);return crypto.getRandomValues(n),B(n.buffer)}function ir(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 A(n){return Array.isArray(n)?n.filter(r=>typeof r=="string"):null}export{Je as AmbiguousReferenceRule,se as BooleanStatement,f as BrowserCredentialBackend,S as BrowserOAuthFlow,Ge as ClassDefinitionRule,Ie as ClassHierarchyCycleRule,X as DefinedKanonak,Me 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,ze as InstancePropertyReferenceRule,G as Kanonak,we as KanonakDocumentPositions,pe as KanonakObjectParser,Qe as KanonakObjectValidator,q as KanonakParser,Z as KanonakUri,ke as KanonakUriBuilder,ce as ListStatement,Xe as MarkdownLinkRule,le as MarkdownStatement,Ue as NamespaceImportCycleRule,De as NamespacePrefixRule,ge as NodeType,oe as NumberStatement,qe as ObjectPropertyImportRule,Le as ObjectPropertyValueValidationRule,Se as OntologyValidationError,Ke as OntologyValidationResult,We as PropertyDomainRule,Te as PropertyHierarchyCycleRule,Pe as PropertyMetadata,He as PropertyRangeReferenceRule,Oe as PropertyRangeRequiredRule,Ce as PropertyTypeSpecificityRule,Fe 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,Ve as SubClassOfReferenceRule,$e as SubPropertyOfReferenceRule,Q as SubjectKanonak,Ee as SubjectKanonakTypeRequiredRule,Ae as TypeAmbiguityRule,de as TypeResolver,_e as UnresolvedReferenceRule,Re as ValidationContext,xe as ValidationSeverity,Ne as XsdImportRule,x as browserServerSupportsDPoP,O as compareVersions,K as createBrowserDPoPProof,U as createVersion,Ye 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};
1
+ import{a as ge,b as fe,c as me,d as C,e as E,f as d}from"./chunk-RCI34BYO.js";import{a as Qe}from"./chunk-BFZZ6YGX.js";import{a as H,b as L,c as W,d as F}from"./chunk-VQFL5C7Q.js";import{a as Pe,b as we,c as he}from"./chunk-NIJV5UYW.js";import{a as ye,b as ke,e as be}from"./chunk-4TJZIM7A.js";import"./chunk-NIGFQYVA.js";import{A as We,B as Fe,C as Ge,D 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-SKTXJV4T.js";import"./chunk-FJ35VIV6.js";import{a as Y,c as le,f as pe}from"./chunk-FMYLEPMC.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 q}from"./chunk-7CUTGGH3.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-HEMBMX7T.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
+ 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};
@@ -1 +1 @@
1
- import{a as S}from"./chunk-SQDXESNM.js";import{c as v,d as u,g as j,j as p,k as h,l as k}from"./chunk-W6T7MOKY.js";function fe(t,n,e,a){let r=D(t);if(r.length>0){let i=r.find(f=>m(f.format,n)&&m(f.variant,e));return i?{transformation:i.transformation,source:"instance"}:void 0}let o=new Set,s=U(t);for(;s.length>0;){let i=s.shift(),f=y(i.subject);if(o.has(f))continue;o.add(f);let c=R(a,i.subject);if(!c)continue;let K=D(c).find(d=>m(d.format,n)&&m(d.variant,e));if(K)return{transformation:K.transformation,source:{publisher:i.subject.publisher,package_:i.subject.package_,name:i.subject.name}};for(let d of T(c))s.push(d)}let l={publisher:"kanonak.org",package_:"core-rdf",name:"Resource"};if(!o.has(y(l))){let i=R(a,l);if(i){let c=D(i).find(g=>m(g.format,n)&&m(g.variant,e));if(c)return{transformation:c.transformation,source:l}}}}function D(t){let n=[];for(let e of t.statement)if(e instanceof k&&b(e,"kanonak.org","derivation","derivations"))for(let a of e.object??[]){if(!(a instanceof S))continue;let r=E(a);r&&n.push(r)}return n}function E(t){let n,e,a;for(let r of t.statement)r instanceof p?b(r,"kanonak.org","derivation","format")?n=x(r):b(r,"kanonak.org","derivation","variant")&&(e=x(r)):r instanceof h&&b(r,"kanonak.org","derivation","transformation")&&(a=_(r.object));if(!(!n||!a))return e||(e={publisher:"kanonak.org",package_:"derivation",name:"default"}),{format:n,variant:e,transformation:a}}function _(t){let n,e,a,r;for(let o of t.statement){if(!(o instanceof j))continue;let s=o.predicate?.subject?.name;s==="publisher"?n=o.object:s==="package"?e=o.object:s==="version"?a=o.object:s==="name"&&(r=o.object)}if(!(!n||!e||!a||!r))return{publisher:n,package_:e,version:a,name:r}}function U(t){let n=[];for(let e of t.statement)e instanceof p&&e.predicate?.subject?.name==="type"&&e.object instanceof u&&n.push(e.object);return n}function T(t){let n=[];for(let e of t.statement)if(e instanceof p){if(e.predicate?.subject?.name!=="subClassOf")continue;e.object instanceof u&&n.push(e.object)}else if(e instanceof k){if(e.predicate?.subject?.name!=="subClassOf")continue;for(let a of e.object??[])a instanceof u&&n.push(a)}return n}function R(t,n){for(let e of t){if(!(e instanceof v)||e.name!==n.name)continue;if((e.namespace||"").startsWith(`${n.publisher}/${n.package_}@`))return e}}function b(t,n,e,a){let r=t.predicate?.subject;return r?r.publisher===n&&r.package_===e&&r.name===a:!1}function x(t){let n=t.object.subject;return{publisher:n.publisher,package_:n.package_,name:n.name}}function m(t,n){return t.publisher===n.publisher&&t.package_===n.package_&&t.name===n.name}function y(t){return`${t.publisher}/${t.package_}/${t.name}`}export{fe as a};
1
+ import{a as S}from"./chunk-FMYLEPMC.js";import{c as v,d as u,g as j,j as p,k as h,l as k}from"./chunk-W6T7MOKY.js";function fe(t,n,e,a){let r=D(t);if(r.length>0){let i=r.find(f=>m(f.format,n)&&m(f.variant,e));return i?{transformation:i.transformation,source:"instance"}:void 0}let o=new Set,s=U(t);for(;s.length>0;){let i=s.shift(),f=y(i.subject);if(o.has(f))continue;o.add(f);let c=R(a,i.subject);if(!c)continue;let K=D(c).find(d=>m(d.format,n)&&m(d.variant,e));if(K)return{transformation:K.transformation,source:{publisher:i.subject.publisher,package_:i.subject.package_,name:i.subject.name}};for(let d of T(c))s.push(d)}let l={publisher:"kanonak.org",package_:"core-rdf",name:"Resource"};if(!o.has(y(l))){let i=R(a,l);if(i){let c=D(i).find(g=>m(g.format,n)&&m(g.variant,e));if(c)return{transformation:c.transformation,source:l}}}}function D(t){let n=[];for(let e of t.statement)if(e instanceof k&&b(e,"kanonak.org","derivation","derivations"))for(let a of e.object??[]){if(!(a instanceof S))continue;let r=E(a);r&&n.push(r)}return n}function E(t){let n,e,a;for(let r of t.statement)r instanceof p?b(r,"kanonak.org","derivation","format")?n=x(r):b(r,"kanonak.org","derivation","variant")&&(e=x(r)):r instanceof h&&b(r,"kanonak.org","derivation","transformation")&&(a=_(r.object));if(!(!n||!a))return e||(e={publisher:"kanonak.org",package_:"derivation",name:"default"}),{format:n,variant:e,transformation:a}}function _(t){let n,e,a,r;for(let o of t.statement){if(!(o instanceof j))continue;let s=o.predicate?.subject?.name;s==="publisher"?n=o.object:s==="package"?e=o.object:s==="version"?a=o.object:s==="name"&&(r=o.object)}if(!(!n||!e||!a||!r))return{publisher:n,package_:e,version:a,name:r}}function U(t){let n=[];for(let e of t.statement)e instanceof p&&e.predicate?.subject?.name==="type"&&e.object instanceof u&&n.push(e.object);return n}function T(t){let n=[];for(let e of t.statement)if(e instanceof p){if(e.predicate?.subject?.name!=="subClassOf")continue;e.object instanceof u&&n.push(e.object)}else if(e instanceof k){if(e.predicate?.subject?.name!=="subClassOf")continue;for(let a of e.object??[])a instanceof u&&n.push(a)}return n}function R(t,n){for(let e of t){if(!(e instanceof v)||e.name!==n.name)continue;if((e.namespace||"").startsWith(`${n.publisher}/${n.package_}@`))return e}}function b(t,n,e,a){let r=t.predicate?.subject;return r?r.publisher===n&&r.package_===e&&r.name===a:!1}function x(t){let n=t.object.subject;return{publisher:n.publisher,package_:n.package_,name:n.name}}function m(t,n){return t.publisher===n.publisher&&t.package_===n.package_&&t.name===n.name}function y(t){return`${t.publisher}/${t.package_}/${t.name}`}export{fe as a};
@@ -0,0 +1,116 @@
1
+ import{a as fe}from"./chunk-NIGFQYVA.js";import{a as ce,c as Ae}from"./chunk-FMYLEPMC.js";import{c as ne,d as A,g as te,h as me,i as Ke,j as H,k as pe,l as J}from"./chunk-W6T7MOKY.js";function Ne(d){let e=d.replace(/\r\n/g,`
2
+ `).split(`
3
+ `),t=[],n=0;for(;n<e.length;){let s=e[n];if(s.trim()===""){n++;continue}let o=/^(\s*)```(\S*)\s*$/.exec(s);if(o){let i=o[2],c=[];for(n++;n<e.length&&!/^(\s*)```\s*$/.test(e[n]);)c.push(e[n]),n++;n++;let l=Me(c.join(`
4
+ `)),p=i?` class="language-${Ve(i)}"`:"";t.push(`<pre><code${p}>${l}</code></pre>`);continue}let a=/^(#{1,6})\s+(.*)$/.exec(s);if(a){let i=a[1].length,c=he(a[2].trim());t.push(`<h${i}>${c}</h${i}>`),n++;continue}if(s.includes("|")&&n+1<e.length&&Ce(e[n+1])){let i=ye(s),c=sn(e[n+1]);n+=2;let l=[];for(;n<e.length&&e[n].trim()!==""&&e[n].includes("|");)l.push(ye(e[n])),n++;t.push(an(i,c,l));continue}if(/^\s*[-*]\s+/.test(s)){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>${he(c.join(" ").trim())}</li>`)}t.push(`<ul>
5
+ ${i.join(`
6
+ `)}
7
+ </ul>`);continue}if(/^\s*\d+\.\s+/.test(s)){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>${he(c.join(" ").trim())}</li>`)}t.push(`<ol>
8
+ ${i.join(`
9
+ `)}
10
+ </ol>`);continue}let r=[s];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&&Ce(e[n+1]));)r.push(e[n]),n++;t.push(`<p>${he(r.join(" "))}</p>`)}return t.join(`
11
+ `)}function Ce(d){return d.includes("-")?/^[\s|:-]+$/.test(d):!1}function ye(d){let e=d.trim();return e.startsWith("|")&&(e=e.slice(1)),e.endsWith("|")&&(e=e.slice(0,-1)),e.split("|").map(t=>t.trim())}function sn(d){return ye(d).map(e=>{let t=e.startsWith(":"),n=e.endsWith(":");return t&&n?"center":n?"right":t?"left":null})}function an(d,e,t){let n=a=>{let r=e[a];return r?` style="text-align:${r}"`:""},s=d.map((a,r)=>`<th${n(r)}>${he(a)}</th>`).join(""),o=t.map(a=>`<tr>${a.map((i,c)=>`<td${n(c)}>${he(i)}</td>`).join("")}</tr>`).join(`
12
+ `);return`<table>
13
+ <thead><tr>${s}</tr></thead>
14
+ <tbody>
15
+ ${o}
16
+ </tbody>
17
+ </table>`}function he(d){let e=Me(d);return e=e.replace(/`([^`\n]+)`/g,(t,n)=>`<code>${n}</code>`),e=e.replace(/\[([^\]]+)\]\(([^)\s]+)\)/g,(t,n,s)=>`<a href="${Ve(s)}">${n}</a>`),e=e.replace(/\*\*([^*\n]+)\*\*/g,(t,n)=>`<strong>${n}</strong>`),e=e.replace(/(^|[^*])\*([^*\n]+)\*(?!\*)/g,(t,n,s)=>`${n}<em>${s}</em>`),e=e.replace(/(^|[\s(])_([^_\n]+)_(?=[\s).,;:!?]|$)/g,(t,n,s)=>`${n}<em>${s}</em>`),e}function Me(d){return d.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function Ve(d){return d.replace(/"/g,"&quot;").replace(/&/g,"&amp;")}var Le={publisher:"kanonak.org",package_:"derivation",name:"look"},Oe={publisher:"kanonak.org",package_:"derivation",name:"tokens"},se={publisher:"kanonak.org",package_:"core-rdf",name:"Resource"},N={publisher:"kanonak.org",package_:"core-rdf",name:"label"},be={publisher:"kanonak.org",package_:"core-rdf",name:"comment"},rn={publisher:"kanonak.org",package_:"look",name:"Hero"},on={publisher:"kanonak.org",package_:"look",name:"PropertyList"},cn={publisher:"kanonak.org",package_:"look",name:"BadgeRow"},ln={publisher:"kanonak.org",package_:"look",name:"ChipRow"},un={publisher:"kanonak.org",package_:"look",name:"ReferenceList"},He={publisher:"kanonak.org",package_:"look",name:"Markdown"},$e={publisher:"kanonak.org",package_:"look",name:"NavGroup"},we={publisher:"kanonak.org",package_:"look",name:"NavLink"},Be={publisher:"kanonak.org",package_:"look",name:"target"},dn={publisher:"kanonak.org",package_:"look",name:"ResourceGrid"},pn={publisher:"kanonak.org",package_:"look",name:"Timeline"},fn={publisher:"kanonak.org",package_:"look",name:"VersionDiff"},kn={publisher:"kanonak.org",package_:"look",name:"Figure"},gn={publisher:"kanonak.org",package_:"look",name:"StatRow"},hn={publisher:"kanonak.org",package_:"look",name:"Horizon"},mn={publisher:"kanonak.org",package_:"look",name:"PackageContents"},xe={publisher:"kanonak.org",package_:"core-kanonak",name:"Package"},bn={publisher:"kanonak.org",package_:"look",name:"FeaturedResource"},$n={publisher:"kanonak.org",package_:"look",name:"PublisherPackages"},jn={publisher:"kanonak.org",package_:"look",name:"PublisherView"},_n={publisher:"kanonak.org",package_:"look",name:"Distribution"},vn={publisher:"kanonak.org",package_:"look",name:"alphaPath"},Rn={publisher:"kanonak.org",package_:"look",name:"betaPath"},Sn={publisher:"kanonak.org",package_:"look",name:"SectionHeading"},xn={publisher:"kanonak.org",package_:"look",name:"heading"},Kn={publisher:"kanonak.org",package_:"look",name:"note"},yn={publisher:"kanonak.org",package_:"look",name:"VersionDelta"},Ln={publisher:"kanonak.org",package_:"look",name:"TimePlot"},On={publisher:"kanonak.org",package_:"look",name:"laneBy"},wn={publisher:"kanonak.org",package_:"look",name:"stats"},Fn={publisher:"kanonak.org",package_:"look",name:"statPath"},Un={publisher:"kanonak.org",package_:"look",name:"statLabel"},De={publisher:"kanonak.org",package_:"look",name:"labelPath"},In={publisher:"kanonak.org",package_:"look",name:"badgePath"},Fe={publisher:"kanonak.org",package_:"look",name:"orderBy"},Ge={publisher:"kanonak.org",package_:"look",name:"track"},je={publisher:"kanonak.org",package_:"look",name:"metricPath"},Ue={publisher:"kanonak.org",package_:"look",name:"hueBy"},We={publisher:"kanonak.org",package_:"look",name:"lowerPath"},Ye={publisher:"kanonak.org",package_:"look",name:"upperPath"},Pn={publisher:"kanonak.org",package_:"look",name:"axisMin"},En={publisher:"kanonak.org",package_:"look",name:"axisMax"},Tn={publisher:"kanonak.org",package_:"look",name:"valueLabel"};var An={publisher:"kanonak.org",package_:"look",name:"semanticSvg"},Cn={publisher:"kanonak.org",package_:"look",name:"tierChip"},Nn={publisher:"kanonak.org",package_:"look",name:"tierIcon"},Mn={publisher:"kanonak.org",package_:"look",name:"tierCard"},Vn={publisher:"kanonak.org",package_:"look",name:"tierFull"};var Ie={publisher:"kanonak.org",package_:"look",name:"bands"},Hn={publisher:"kanonak.org",package_:"look",name:"title"},Bn={publisher:"kanonak.org",package_:"look",name:"eyebrow"},Dn={publisher:"kanonak.org",package_:"look",name:"subtitle"},ze={publisher:"kanonak.org",package_:"look",name:"badges"},W={publisher:"kanonak.org",package_:"look",name:"source"},Gn={publisher:"kanonak.org",package_:"look",name:"chips"},Pe={publisher:"kanonak.org",package_:"look",name:"entries"},Wn={publisher:"kanonak.org",package_:"look",name:"urlForm"},Te=class{constructor(e){this.catalog=e}catalog;findCascadedLook(e){let t=_e(e);if(t)return{declaration:t,sourceClass:{publisher:X(e),package_:(e.namespace||"").split("/")[1]?.split("@")[0]??"",name:e.name}};let n=new Set,s=le(e);for(;s.length>0;){let o=s.shift(),a=Yn(o.subject),r=ke(a);if(n.has(r))continue;n.add(r);let i=ue(this.catalog,a);for(let c of i){let l=_e(c);if(l)return{declaration:l,sourceClass:{publisher:a.publisher,package_:a.package_,name:a.name}}}for(let c of i)for(let l of Re(c))s.push(l)}if(!n.has(ke(se)))for(let o of ue(this.catalog,se)){let a=_e(o);if(a)return{declaration:a,sourceClass:{...se}}}}findCascadedTokens(e){let t=new Map;for(let[o,a]of Ee(e))t.has(o)||t.set(o,a);let n=new Set,s=le(e);for(;s.length>0;){let o=s.shift(),a=ke(o.subject);if(n.has(a))continue;n.add(a);let r=ue(this.catalog,o.subject);if(r.length!==0)for(let i of r){for(let[c,l]of Ee(i))t.has(c)||t.set(c,l);for(let c of Re(i))s.push(c)}}if(!n.has(ke(se))){let o=ue(this.catalog,se);for(let a of o)for(let[r,i]of Ee(a))t.has(r)||t.set(r,i)}return t}renderSvg(e){let t=$(e,N)??e.name,n=(t.trim().charAt(0)||"?").toUpperCase(),s=`${e.namespace??""}/${e.name}`,o={label:t,firstLetter:n,uri:s},a=this.collectCascadedSvgTiers(e),r=h=>this.applyPlaceholders(h,e,o),i=r(a.tierChip??""),c=r(a.tierIcon??""),l=r(a.tierCard??""),p=r(a.tierFull??""),g=[...this.findCascadedTokens(e)].map(([h,k])=>`--kan-${h}: ${k};`).join(" ");return`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 400" width="400" height="400" style="${oe(g)}">
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,(s,o)=>{let a=o.trim();if(n[a]!==void 0)return oe(n[a]);let r=this.resolvePath(t,a);return r===void 0?`{{${a}}}`:oe(r)})}resolvePath(e,t){let n=t.split("/").map(r=>r.trim()).filter(r=>r.length>0);if(n.length===0)return;let s=e;for(let r=0;r<n.length-1;r++){if(!s)return;let i=Ze(n[r]),c=Qe(s,i);if(!c)return;if(c instanceof H&&c.object instanceof A){let l=M(this.catalog,c.object.subject);if(!l)return;s=l}else if(c instanceof pe)s=c.object;else return}if(!s)return;let o=Ze(n[n.length-1]),a=Qe(s,o);if(a){if(a instanceof te||a instanceof me||a instanceof Ke)return String(a.object);if(a instanceof H&&a.object instanceof A){let r=a.object,i=M(this.catalog,r.subject);return i?$(i,N)??r.subject.name:r.subject.name}}}collectCascadedSvgTiers(e){let t={},n=a=>{let r=ae(a,An);if(!(r instanceof pe))return;let i=r.object,c=$(i,Cn),l=$(i,Nn),p=$(i,Mn),f=$(i,Vn);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&&f!==void 0&&(t.tierFull=f)};n(e);let s=new Set,o=le(e);for(;o.length>0;){let a=o.shift(),r=ke(a.subject);if(s.has(r))continue;s.add(r);let i=ue(this.catalog,a.subject);for(let c of i){n(c);for(let l of Re(c))o.push(l)}}if(!s.has(ke(se)))for(let a of ue(this.catalog,se))n(a);return t}renderStylesheet(e){let t=this.findCascadedTokens(e),n=[];for(let[a,r]of t)n.push(` --kan-${a}: ${r};`);let s=n.length>0?`:root {
30
+ ${n.join(`
31
+ `)}
32
+ }`:":root { /* no tokens resolved */ }",o=this.findBaseStylesheet(X(e))??"";return`${s}
33
+ ${o}`}findBaseStylesheet(e){let t="kanonak.org/site/content",n,s;for(let a of this.catalog){if(!(a instanceof ne)||a.name!=="base-stylesheet")continue;let r=a.namespace||"";r.startsWith(`${e}/look-styles@`)?n=a:r.startsWith("kanonak.org/look-styles@")&&(s=a)}let o=n??s;if(o)for(let a of o.statement){let r=a.predicate?.subject;if(!r)continue;if(`${r.publisher}/${r.package_}/${r.name}`===t&&a instanceof te)return a.object}}renderHtml(e){let t=this.findCascadedLook(e);if(!t)return`<!-- LookRenderer: no derivation.look found for ${e.namespace}/${e.name} -->`;let n=qe(t.declaration);if(n.length===0)return"<!-- LookRenderer: look declaration has no bands -->";let s=X(e),o=[];for(let a of n)o.push(this.renderBand(a,e,s));return o.join(`
34
+ `)}renderPublisherIndex(e,t,n){let s=n?this.renderNavGroup(n,e):"",o=t.map(r=>{let i=r.comment?`<p class="kan-resource-card-subtitle">${u(r.comment)}</p>`:"";return`<a class="kan-resource-card" href="${u(r.href)}"><h3 class="kan-resource-card-title">${u(r.label)}</h3>${i}</a>`}).join(`
35
+ `),a=`<header class="kan-hero">
36
+ <h1 class="kan-hero-title">${u(e)}</h1>
37
+ </header>
38
+ <section class="kan-resource-grid">
39
+ ${o}
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>${u(e)}</title>
46
+ <link rel="stylesheet" href="index.css">
47
+ </head>
48
+ <body>
49
+ ${s}
50
+ <main class="kan-main">
51
+ ${a}
52
+ </main>
53
+ </body>
54
+ </html>
55
+ `}renderPublisherIndexStylesheet(e){return e?this.renderStylesheet(e):""}hasDeclaredView(e){let t=this.findCascadedLook(e);return t?!(s=>s.publisher===se.publisher&&s.package_===se.package_&&s.name===se.name||s.publisher===xe.publisher&&s.package_===xe.package_&&s.name===xe.name)(t.sourceClass):!1}renderPackageVersionList(e,t,n){let s=X(n),o=this.renderNavGroup(n,s),a=this.renderBreadcrumb(n,s,{bareOverview:!0}),r=t.map(c=>`<a class="kan-resource-card" href="/${u(e)}/${u(c)}/"><h3 class="kan-resource-card-title">${u(c)}</h3></a>`).join(`
56
+ `),i=`<header class="kan-hero">
57
+ <span class="kan-hero-eyebrow">PACKAGE</span>
58
+ <h1 class="kan-hero-title">${u(e)}</h1>
59
+ </header>
60
+ <section class="kan-resource-grid">
61
+ ${r}
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>${u(e)}</title>
68
+ <link rel="stylesheet" href="${u(n.name)}.css">
69
+ </head>
70
+ <body>
71
+ ${o}
72
+ ${a}
73
+ <main class="kan-main">
74
+ ${i}
75
+ </main>
76
+ </body>
77
+ </html>
78
+ `}renderDocument(e,t){let n=this.renderHtml(e),s=this.readPropertyValueText(e,N)??e.name,o=t?.rootIndex?"index.css":`${e.name}.css`,a=!t?.rootIndex&&this.hasSvgDerivation(e)?`<figure class="kan-figure"><img src="${u(e.name)}.svg" alt=""></figure>
79
+ `:"",r=X(e),i=this.renderNavGroup(e,r),c=t?.rootIndex?"":this.renderBreadcrumb(e,r,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>${u(s)}</title>
85
+ <link rel="stylesheet" href="${u(o)}">
86
+ </head>
87
+ <body>
88
+ ${i}
89
+ ${c}
90
+ <main class="kan-main">
91
+ ${a}${n}
92
+ </main>
93
+ </body>
94
+ </html>
95
+ `}hasSvgDerivation(e){let t=new Set,n=le(e);for(;n.length>0;){let s=n.shift(),o=ke(s.subject);if(t.has(o))continue;t.add(o);let a=M(this.catalog,s.subject);if(a){for(let r of a.statement)if(r instanceof J&&re(r,"kanonak.org","derivation","derivations")){for(let i of r.object??[])if(i instanceof ce)for(let c of i.statement){if(!(c instanceof H)||!re(c,"kanonak.org","derivation","format")||!(c.object instanceof A))continue;let l=c.object.subject;if(l.publisher==="kanonak.org"&&l.package_==="formats"&&l.name==="svg")return!0}}for(let r of Re(a))n.push(r)}}return!1}renderBand(e,t,n){let s=ve(e);return s?F(s,rn)?this.renderHero(e,t,n):F(s,on)?this.renderPropertyList(e,t,n):F(s,cn)?this.renderBadgeRow(e,t,n):F(s,ln)?this.renderChipRow(e,t,n):F(s,un)?this.renderReferenceList(e,t,n):F(s,He)?this.renderMarkdown(e,t,n):F(s,$e)?this.renderNavGroup(t,n):F(s,dn)?this.renderResourceGrid(e,n,t):F(s,pn)?this.renderTimeline(e,n):F(s,fn)?this.renderVersionDiff(e,n):F(s,kn)?this.renderFigure(e,t,n):F(s,gn)?this.renderStatRow(e,t):F(s,hn)?this.renderHorizon(e,t,n):F(s,mn)?this.renderPackageContents(t,n):F(s,bn)?this.renderFeaturedResource(e,n):F(s,$n)?this.renderPublisherPackages(n):F(s,_n)?this.renderDistribution(e,t):F(s,Sn)?this.renderSectionHeading(e):F(s,yn)?this.renderVersionDelta(e,t):F(s,Ln)?this.renderTimePlot(e,t):`<!-- LookRenderer: unsupported band ${s.publisher}/${s.package_}/${s.name} -->`:"<!-- LookRenderer: band has no rdf:type -->"}collectTrackedSeries(e,t,n,s){let{hueBy:o,lowerPath:a,upperPath:r}=s??{},i=new Map,c=e.length,l=(p,f)=>{let g=this.resolvePath(p,f);return g===void 0?NaN:parseFloat(g)};return e.forEach((p,f)=>{let g=this.readPropertyValueReferences(p,t);for(let h of g){let k=M(this.catalog,{publisher:h.subject.publisher,package_:h.subject.package_,name:h.subject.name,...h.subject.version?{version:h.subject.version}:{}});if(!k)continue;let m=h.subject.name,v=i.get(m);v||(v={key:m,label:$(k,N)??m,points:new Array(c).fill(null),...a?{lower:new Array(c).fill(null)}:{},...r?{upper:new Array(c).fill(null)}:{}},i.set(m,v));let S=l(k,n);if(Number.isFinite(S)&&(v.points[f]=S),a&&v.lower){let j=l(k,a);Number.isFinite(j)&&(v.lower[f]=j)}if(r&&v.upper){let j=l(k,r);Number.isFinite(j)&&(v.upper[f]=j)}if(o){let j=l(k,o);Number.isFinite(j)&&(v.hue=j)}v.lastSubject=k}}),[...i.values()]}hrefForSubject(e,t,n="="){let s=e.namespace||"",o=s.split("/")[1]?.split("@")[0]??"",a=s.split("@")[1]??"",r=a?this.parseVersion(a):void 0;return fe.formatResourceUrl({publisher:X(e),package_:o,name:e.name,...r?{version:r}:{}},n,{contextPublisher:t})}renderVersionDiff(e,t){let n=P(e,W);if(!n)return"<!-- LookRenderer.VersionDiff: no look.source -->";let s=$(e,je),o=P(e,Ge);if(!o||!s)return"<!-- LookRenderer.VersionDiff: needs look.track + look.metricPath -->";let a=P(e,Fe),r=$(e,Ue),i=this.findInstancesOfClass(n);if(i.length===0)return"<!-- LookRenderer.VersionDiff: no instances -->";let c=g=>a?this.readPropertyValueText(g,a)??"":"",l=i.slice().sort((g,h)=>c(g).localeCompare(c(h))),p=this.collectTrackedSeries(l,o,s,{hueBy:r});return p.length===0?"<!-- LookRenderer.VersionDiff: no tracked series -->":`<section class="kan-vdiff">${p.map((g,h)=>{let k=g.hue!==void 0?g.hue:Math.round(h*360/p.length),m=g.points.filter(L=>L!==null);if(m.length===0)return"";let v=m[0],S=m[m.length-1],j=S-v,y;if(Math.abs(j)>=.005){let L=j>0?"up":"down",O=j>0?"\u25B2":"\u25BC";y=`<span class="kan-vdiff-delta ${L}">${j>0?"+":""}${j.toFixed(2)} ${O}</span>`}else y='<span class="kan-vdiff-delta flat">\u2014</span>';let E=g.lastSubject?`<a href="${u(this.hrefForSubject(g.lastSubject,t))}">${u(g.label)}</a>`:u(g.label);return`<div class="kan-vdiff-row" style="--kan-vdiff-hue:${k}"><span class="kan-vdiff-label">${E}</span><span class="kan-vdiff-start">${v.toFixed(2)}</span>`+this.sparkline(g.points,k)+`<span class="kan-vdiff-end">${S.toFixed(2)}</span>`+y+"</div>"}).join("")}</section>`}sparkline(e,t){let a=`hsl(${t},65%,60%)`,r=e.filter(m=>m!==null);if(r.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(...r),l=Math.max(...r)-i,p=e.length,f=m=>p<=1?132/2:4+m/(p-1)*124,g=m=>l<1e-9?30/2:26-(m-i)/l*22,h=[],k=[];return e.forEach((m,v)=>{if(m===null)return;let S=f(v),j=g(m);h.push(`${S.toFixed(1)},${j.toFixed(1)}`),k.push(`<circle cx="${S.toFixed(1)}" cy="${j.toFixed(1)}" r="2" fill="${a}"/>`)}),`<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="${a}" stroke-width="1.5" stroke-linejoin="round" stroke-linecap="round"/>`+k.join("")+"</svg>"}svgUrlForSubject(e,t,n="="){return`${this.hrefForSubject(e,t,n)}.svg`}renderFigure(e,t,n){let s=t,o=P(e,W);if(o){let i=M(this.catalog,o);i&&(s=i)}let a=this.svgUrlForSubject(s,n),r=$(s,N)??s.name;return`<figure class="kan-figure"><img class="kan-figure-img" src="${u(a)}" alt="${u(r)}" loading="lazy"/></figure>`}renderStatRow(e,t){let n=ae(e,wn),s=this.gatherValueItems(n).filter(a=>a instanceof ce);if(s.length===0)return"<!-- LookRenderer.StatRow: no look.stats -->";let o=[];for(let a of s){let r=$(a,Fn);if(!r)continue;let i=this.resolvePath(t,r);if(i===void 0)continue;let c=$(a,Un)??"";o.push('<div class="kan-stat">'+(c?`<span class="kan-stat-label">${u(c)}</span>`:"")+`<span class="kan-stat-val">${u(i)}</span></div>`)}return o.length===0?"":`<div class="kan-stat-row">${o.join("")}</div>`}renderHorizon(e,t,n){let s=P(e,W);if(!s)return"<!-- LookRenderer.Horizon: no look.source -->";let o=this.gatherValueItems(ae(t,s)).filter(r=>r instanceof ce);return o.length===0?"":`<section class="kan-horizon">${o.map(r=>this.renderConditionNode(r,n,0)).join("")}</section>`}renderConditionNode(e,t,n){let s=ve(e),o=s?this.readLabelForUri({publisher:s.publisher,package_:s.package_,name:s.name})??s.name:"Condition",a=[],r=[];for(let f of e.statement){let g=f.predicate?.subject;if(!g||g.name==="type")continue;let h=this.readLabelForUri({publisher:g.publisher,package_:g.package_,name:g.name})??g.name;if(f instanceof te||f instanceof me||f instanceof Ke)a.push(`<div class="kan-cond-field"><span class="kan-cond-key">${u(h)}</span><span class="kan-cond-v">${u(String(f.object))}</span></div>`);else if(f instanceof H&&f.object instanceof A){let k=f.object.subject,m=this.readLabelForUri({publisher:k.publisher,package_:k.package_,name:k.name})??k.name;a.push(`<div class="kan-cond-field"><span class="kan-cond-key">${u(h)}</span><span class="kan-cond-v">${u(m)}</span></div>`)}else if(f instanceof pe)r.push(this.renderConditionNode(f.object,t,n+1));else if(f instanceof J)for(let k of f.object??[])k instanceof ce&&r.push(this.renderConditionNode(k,t,n+1))}let i=a.length?`<div class="kan-cond-fields">${a.join("")}</div>`:"",c=r.length?`<div class="kan-cond-children">${r.join("")}</div>`:"",l=r.length>0,p=l?`<span class="kan-cond-op">${u(o)}</span>`:`<div class="kan-cond-type">${u(o)}</div>`;return`<div class="kan-cond ${l?"kan-cond-branch":"kan-cond-leaf"}">${p}${i}${c}</div>`}renderSectionHeading(e){let t=e,n=$(t,xn);if(!n)return"<!-- LookRenderer.SectionHeading: no look.heading -->";let s=$(t,Kn);return`<div class="kan-section"><h2 class="kan-section-title">${u(n)}</h2>`+(s?`<p class="kan-section-note">${u(s)}</p>`:"")+"</div>"}renderVersionDelta(e,t){let s=$(e,je);if(!s)return"<!-- LookRenderer.VersionDelta: no look.metricPath -->";let o=w=>{let U=this.resolvePath(w,s),Y=U===void 0?NaN:parseFloat(U);return Number.isFinite(Y)?Y:void 0},a=o(t);if(a===void 0)return"";let r=w=>this.parseVersion((w.namespace||"").split("@")[1]??"")??{major:0,minor:0,patch:0},i=(w,U)=>w.major-U.major||w.minor-U.minor||w.patch-U.patch,c={publisher:X(t),package_:(t.namespace||"").split("/")[1]?.split("@")[0]??"",name:t.name},l=r(t),p,f;for(let w of ue(this.catalog,c)){let U=r(w);i(U,l)<0&&(!f||i(U,f)>0)&&(p=w,f=U)}if(!p||!f)return'<div class="kan-delta kan-delta-first">First tracked in this version</div>';let g=o(p);if(g===void 0)return"";let h=a-g,k=Math.abs(h)<.005?"flat":h>0?"up":"down",m=k==="up"?"\u25B2":k==="down"?"\u25BC":"\u2014",v=k==="up"?"#34d399":k==="down"?"#f87171":"var(--kan-text-faint)",S=`${f.major}.${f.minor}.${f.patch}`,j=320,y=46,E=14,L=30,O=w=>E+Math.min(1,Math.max(0,w))*(j-2*E),K=O(g),T=O(a),Z=`<svg class="kan-delta-track" viewBox="0 0 ${j} ${y}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img"><line x1="${E}" y1="${L}" x2="${j-E}" y2="${L}" class="kan-delta-base"/><line x1="${K.toFixed(1)}" y1="${L}" x2="${T.toFixed(1)}" y2="${L}" stroke="${v}" stroke-width="3"/><circle cx="${K.toFixed(1)}" cy="${L}" r="4" class="kan-delta-prev"/><circle cx="${T.toFixed(1)}" cy="${L}" r="5.5" fill="${v}"/><text x="${K.toFixed(1)}" y="${L-9}" text-anchor="middle" class="kan-delta-tick kan-delta-tick-prev">${g.toFixed(2)}</text><text x="${T.toFixed(1)}" y="${L+17}" text-anchor="middle" class="kan-delta-tick">${a.toFixed(2)}</text></svg>`;return`<div class="kan-delta"><div class="kan-delta-head"><span class="kan-delta-vs">vs ${u(S)}</span><span class="kan-delta-badge ${k}">${h>0?"+":""}${h.toFixed(2)} ${m}</span></div>`+Z+"</div>"}renderTimePlot(e,t){let n=P(e,W),s=P(e,Fe);if(!n||!s)return"<!-- LookRenderer.TimePlot: needs look.source + look.orderBy -->";let o=e,a=$(o,On),r=$(o,De),i=[];for(let _ of this.readPropertyValueReferences(t,n)){let C=M(this.catalog,{publisher:_.subject.publisher,package_:_.subject.package_,name:_.subject.name,..._.subject.version?{version:_.subject.version}:{}});if(!C)continue;let z=this.readPropertyValueText(C,s)??"",R=Date.parse(z);if(!Number.isFinite(R))continue;let x=a?this.resolvePath(C,a)??"":"",q=(r?this.resolvePath(C,r):void 0)??$(C,N)??C.name;i.push({t:R,dateStr:z,lane:x,label:q})}if(i.length===0)return"<!-- LookRenderer.TimePlot: no dated points -->";let c=[];for(let _ of i)c.includes(_.lane)||c.push(_.lane);let l=Math.min(...i.map(_=>_.t)),p=Math.max(...i.map(_=>_.t));p===l&&(p=l+1);let f=c.some(_=>_),g=720,h=f?96:16,k=18,m=12,v=24,S=36,j=m+c.length*S+v,y=h,E=g-k,L=E-y,O=_=>y+(_-l)/(p-l)*L,K=_=>m+_*S+S/2,T=_=>Math.round(_*360/Math.max(1,c.length)),Z=[];c.forEach((_,C)=>{let z=K(C);Z.push(`<line x1="${y}" y1="${z.toFixed(1)}" x2="${E}" y2="${z.toFixed(1)}" class="kan-plot-guide"/>`),_&&Z.push(`<text x="${(h-8).toFixed(1)}" y="${(z+4).toFixed(1)}" text-anchor="end" class="kan-plot-lane">${oe(_)}</text>`)});let w={},U=[];for(let _ of i){let C=c.indexOf(_.lane),R=((w[_.lane]=(w[_.lane]??0)+1)%3-1)*7,x=O(_.t),q=K(C)+R,b=`${Se(_.dateStr)} \xB7 ${_.label}`;U.push(`<circle cx="${x.toFixed(1)}" cy="${q.toFixed(1)}" r="5" fill="hsl(${T(C)},65%,60%)" class="kan-plot-pt"><title>${oe(b)}</title></circle>`)}let Y=`<text x="${y}" y="${(j-6).toFixed(1)}" text-anchor="start" class="kan-plot-axis">${oe(Se(new Date(l).toISOString()))}</text><text x="${E}" y="${(j-6).toFixed(1)}" text-anchor="end" class="kan-plot-axis">${oe(Se(new Date(p).toISOString()))}</text>`;return`<section class="kan-plot">${`<svg class="kan-plot-svg" viewBox="0 0 ${g} ${j}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">`+Z.join("")+U.join("")+Y+"</svg>"}</section>`}renderPackageContents(e,t){let n=e.namespace||"";if(!n)return"";let s=this.catalog.filter(a=>a instanceof ne&&a.namespace===n&&a.name!==e.name);return s.length===0?`<!-- LookRenderer.PackageContents: no members in ${n} -->`:(s.sort((a,r)=>{let i=$(a,N)??a.name,c=$(r,N)??r.name;return i.localeCompare(c)}),`<section class="kan-pkg-grid">${s.map(a=>{let r=$(a,N)??a.name,i=$(a,be),c=i?en(i,160):"",l=this.hrefForSubject(a,t),p=this.svgUrlForSubject(a,t);return`<a class="kan-pkg-card" href="${u(l)}"><img class="kan-pkg-card-svg" src="${u(p)}" alt="" loading="lazy"/><span class="kan-pkg-card-body"><span class="kan-pkg-card-title">${u(r)}</span>`+(c?`<span class="kan-pkg-card-comment">${u(c)}</span>`:"")+"</span></a>"}).join("")}</section>`)}renderFeaturedResource(e,t){let n=P(e,W);if(!n)return"<!-- LookRenderer.FeaturedResource: no look.source -->";let s=ue(this.catalog,n),o=c=>this.parseVersion((c.namespace||"").split("@")[1]??"")??{major:0,minor:0,patch:0},a=s.length>0?s.slice().sort((c,l)=>{let p=o(c),f=o(l);return f.major-p.major||f.minor-p.minor||f.patch-p.patch})[0]:M(this.catalog,n);if(!a)return`<!-- LookRenderer.FeaturedResource: ${n.publisher}/${n.package_}/${n.name} not found -->`;let r=this.renderHtml(a),i=this.hrefForSubject(a,t);return`<section class="kan-featured"><a class="kan-featured-permalink" href="${u(i)}">View full resource \u2192</a>`+r+"</section>"}renderDistribution(e,t){let n=e,s=R=>{let x=$(n,R);if(!x)return;let q=this.resolvePath(t,x),b=q===void 0?NaN:parseFloat(q);return Number.isFinite(b)?b:void 0},o=s(vn),a=s(Rn);if(o===void 0||a===void 0||o<=0||a<=0)return"<!-- LookRenderer.Distribution: needs resolvable alphaPath + betaPath (> 0) -->";let r=s(je)??o/(o+a),i=s(We),c=s(Ye),l=s(Ue),p=l!==void 0?`hsl(${l},65%,60%)`:"var(--kan-accent)",f=R=>Number.isInteger(R)?String(R):R.toFixed(1),g=280,h=168,k={top:14,right:14,bottom:24,left:14},m=g-k.left-k.right,v=h-k.top-k.bottom,S=120,j=1e-4,y=[],E=[],L=0;for(let R=0;R<=S;R++){let x=R/S;x<j?x=j:x>1-j&&(x=1-j);let q=Math.exp((o-1)*Math.log(x)+(a-1)*Math.log(1-x));y.push(x),E.push(q),q>L&&(L=q)}let O=R=>k.left+Math.min(1,Math.max(0,R))*m,K=R=>k.top+(1-(L>0?R/L:0))*v,T=k.top+v,Z=y.map((R,x)=>`${O(R).toFixed(1)},${K(E[x]).toFixed(1)}`),w=`M${O(0).toFixed(1)},${T.toFixed(1)} L${Z.join(" L")} L${O(1).toFixed(1)},${T.toFixed(1)} Z`,U="";if(i!==void 0&&c!==void 0&&c>i){let R=[`${O(i).toFixed(1)},${T.toFixed(1)}`];for(let x=0;x<=S;x++)y[x]>=i&&y[x]<=c&&R.push(`${O(y[x]).toFixed(1)},${K(E[x]).toFixed(1)}`);R.push(`${O(c).toFixed(1)},${T.toFixed(1)}`),U=`<path d="M${R.join(" L")} Z" fill="${p}" fill-opacity="0.3"/>`}let Y=O(r),ge=`<line x1="${Y.toFixed(1)}" y1="${k.top.toFixed(1)}" x2="${Y.toFixed(1)}" y2="${T.toFixed(1)}" stroke="${p}" stroke-width="1.5" stroke-dasharray="3 3"/><text x="${Y.toFixed(1)}" y="${(k.top-3).toFixed(1)}" text-anchor="middle" class="kan-dist-mean">\u03BC ${r.toFixed(2)}</text>`,_=`<text x="${O(0).toFixed(1)}" y="${(T+15).toFixed(1)}" text-anchor="start" class="kan-dist-axis">0</text><text x="${O(1).toFixed(1)}" y="${(T+15).toFixed(1)}" text-anchor="end" class="kan-dist-axis">1</text>`,C=`<svg class="kan-dist-svg" viewBox="0 0 ${g} ${h}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img"><line x1="${k.left}" y1="${T.toFixed(1)}" x2="${(g-k.right).toFixed(1)}" y2="${T.toFixed(1)}" class="kan-dist-base"/><path d="${w}" fill="${p}" fill-opacity="0.12"/>`+U+`<polyline points="${Z.join(" ")}" fill="none" stroke="${p}" stroke-width="2"/>`+ge+_+"</svg>",z=i!==void 0&&c!==void 0?` \xB7 95% CI [${i.toFixed(2)}\u2013${c.toFixed(2)}]`:"";return`<figure class="kan-dist">${C}<figcaption class="kan-dist-caption">Beta(${f(o)}, ${f(a)})${z}</figcaption></figure>`}renderPublisherPackages(e){let t=new Map,n=r=>this.parseVersion((r.namespace||"").split("@")[1]??"")??{major:0,minor:0,patch:0},s=(r,i)=>r.major>i.major||r.major===i.major&&(r.minor>i.minor||r.minor===i.minor&&r.patch>i.patch);for(let r of this.catalog){if(!(r instanceof ne)||X(r)!==e)continue;let i=(r.namespace||"").split("/")[1]?.split("@")[0]??"";if(!i||r.name!==i)continue;let c=t.get(i);(!c||s(n(r),n(c)))&&t.set(i,r)}let o=[...t.entries()].sort((r,i)=>r[0].localeCompare(i[0]));return o.length===0?"":`<section class="kan-pkg-grid">${o.map(([r,i])=>{let c=$(i,N)??r,l=$(i,be),p=l?en(l,160):"",f=this.svgUrlForSubject(i,e);return`<a class="kan-pkg-card" href="/${u(r)}"><img class="kan-pkg-card-svg" src="${u(f)}" alt="" loading="lazy"/><span class="kan-pkg-card-body"><span class="kan-pkg-card-title">${u(c)}</span>`+(p?`<span class="kan-pkg-card-comment">${u(p)}</span>`:"")+"</span></a>"}).join("")}</section>`}findPublisherRootView(e){for(let t of this.catalog){if(!(t instanceof ne)||X(t)!==e)continue;let n=_e(t);if(!n)continue;let s=ve(n);if(s&&F(s,jn))return t}}renderTimeline(e,t){let n=P(e,W);if(!n)return"<!-- LookRenderer.Timeline: no look.source -->";let s=P(e,Fe),o=this.findInstancesOfClass(n);if(o.length===0)return"<!-- LookRenderer.Timeline: no instances -->";let a=p=>s?this.readPropertyValueText(p,s)??"":"",r=o.slice().sort((p,f)=>a(p).localeCompare(a(f))),i=P(e,Ge),c=$(e,je);return i&&c?this.renderTrajectoryChart(r,i,c,e,t,a):`<section class="kan-timeline"><ol>
96
+ ${r.map(p=>{let f=p.namespace||"",g=f.split("/")[1]?.split("@")[0]??"",h=f.split("@")[1]??"",k=h?this.parseVersion(h):void 0,m=fe.formatResourceUrl({publisher:X(p),package_:g,name:p.name,...k?{version:k}:{}},"=",{contextPublisher:t}),v=a(p),S=v?`<span class="kan-timeline-date">${u(v)}</span>`:"",j=h||p.name;return`<li class="kan-timeline-node"><a href="${u(m)}"><span class="kan-timeline-key">${u(j)}</span>${S}</a></li>`}).join(`
97
+ `)}
98
+ </ol></section>`}renderTrajectoryChart(e,t,n,s,o,a){let r=s,i=$(r,Ue),c=$(r,We),l=$(r,Ye),p=$(r,Tn),f=Xe(r,Pn),g=Xe(r,En),h=e.length,k=this.collectTrackedSeries(e,t,n,{hueBy:i,lowerPath:c,upperPath:l});if(k.length===0)return"<!-- LookRenderer.Timeline: no tracked series -->";let m=[];for(let b of k){for(let I of b.points)I!==null&&m.push(I);for(let I of b.lower??[])I!==null&&m.push(I);for(let I of b.upper??[])I!==null&&m.push(I)}if(m.length===0)return"<!-- LookRenderer.Timeline: no metric values -->";let v=Math.min(...m),S=Math.max(...m);S-v<1e-9&&(v-=.5,S+=.5);let j=(S-v)*.08,y=f!==void 0?f:v-j,E=g!==void 0?g:S+j;E-y<1e-9&&(E=y+1);let L=1e3,O=440,K={top:28,right:24,bottom:56,left:52},T=L-K.left-K.right,Z=O-K.top-K.bottom,w=b=>h<=1?K.left+T/2:K.left+b/(h-1)*T,U=b=>K.top+(1-(b-y)/(E-y))*Z,Y=(b,I)=>b.hue!==void 0?b.hue:Math.round(I*360/k.length),ge=[];for(let b=0;b<5;b++){let I=y+b*(E-y)/4,Q=U(I);ge.push(`<line x1="${K.left}" y1="${Q.toFixed(1)}" x2="${(L-K.right).toFixed(1)}" y2="${Q.toFixed(1)}" class="kan-fan-grid"/>`),ge.push(`<text x="${(K.left-8).toFixed(1)}" y="${(Q+4).toFixed(1)}" class="kan-fan-axis" text-anchor="end">${I.toFixed(2)}</text>`)}let _=[];e.forEach((b,I)=>{let Q=this.hrefForSubject(b,o),B=(b.namespace||"").split("@")[1]??"",V=w(I),D=Se(a(b));_.push(`<a href="${u(Q)}" class="kan-fan-xtick"><line x1="${V.toFixed(1)}" y1="${K.top}" x2="${V.toFixed(1)}" y2="${(O-K.bottom).toFixed(1)}" class="kan-fan-vline"/><text x="${V.toFixed(1)}" y="${(O-K.bottom+20).toFixed(1)}" class="kan-fan-xlabel" text-anchor="middle">${oe(B||b.name)}</text>`+(D?`<text x="${V.toFixed(1)}" y="${(O-K.bottom+36).toFixed(1)}" class="kan-fan-xdate" text-anchor="middle">${oe(D)}</text>`:"")+"</a>")});let C=[];k.forEach((b,I)=>{if(!b.lower||!b.upper)return;let Q=Y(b,I),B=[],V=[];for(let G=0;G<h;G++){let de=b.upper[G],ie=b.lower[G];de==null||ie===null||ie===void 0||(B.push(`${w(G).toFixed(1)},${U(de).toFixed(1)}`),V.unshift(`${w(G).toFixed(1)},${U(ie).toFixed(1)}`))}let D=B.concat(V);D.length<3||C.push(`<polygon class="kan-fan-band" points="${D.join(" ")}" fill="hsl(${Q},65%,60%)"/>`)});let z=[];k.forEach((b,I)=>{let B=`hsl(${Y(b,I)},65%,60%)`,V=[],D=[];b.points.forEach((G,de)=>{if(G===null)return;let ie=w(de),ee=U(G);V.push(`${ie.toFixed(1)},${ee.toFixed(1)}`),D.push(`<circle cx="${ie.toFixed(1)}" cy="${ee.toFixed(1)}" r="3.5" fill="${B}"/>`)}),V.length!==0&&z.push(`<g class="kan-fan-series" data-series="${u(b.key)}"><polyline points="${V.join(" ")}" fill="none" stroke="${B}" stroke-width="2" stroke-linejoin="round" stroke-linecap="round"/>`+D.join("")+"</g>")});let R=`<svg class="kan-fan-svg" viewBox="0 0 ${L} ${O}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">`+ge.join("")+_.join("")+C.join("")+z.join("")+"</svg>",x=p?`${u(p)}=`:"",q=k.map((b,I)=>{let Q=Y(b,I),B=b.points.filter(ee=>ee!==null),V=B.length?B[0]:void 0,D=B.length?B[B.length-1]:void 0,G="";if(D!==void 0&&V!==void 0){let ee=D-V;if(Math.abs(ee)>=.005){let nn=ee>0?"up":"down",tn=ee>0?"\u25B2":"\u25BC";G=` <span class="kan-fan-delta ${nn}">${ee>0?"+":""}${ee.toFixed(2)} ${tn}</span>`}else G=' <span class="kan-fan-delta flat">\u2014</span>'}let de=D!==void 0?`${x}${D.toFixed(2)}`:"\u2014",ie=b.lastSubject?`<a href="${u(this.hrefForSubject(b.lastSubject,o))}">${u(b.label)}</a>`:u(b.label);return`<div class="kan-fan-legend-item" style="--kan-fan-hue:${Q}"><span class="kan-fan-swatch"></span><span class="kan-fan-legend-label">${ie}</span><span class="kan-fan-legend-cur">${de}${G}</span></div>`});return`<section class="kan-fan"><div class="kan-fan-chart">${R}</div><div class="kan-fan-legend">${q.join("")}</div></section>`}renderResourceGrid(e,t,n){let s=P(e,W);if(!s)return"<!-- LookRenderer.ResourceGrid: no look.source -->";let o=M(this.catalog,s),a=o?le(o).some(c=>{let l=c.subject.name;return l==="ObjectProperty"||l==="DatatypeProperty"||l==="Property"}):!1,r=[];if(a&&n){let c=this.readPropertyValueReferences(n,s);for(let l of c){let p=M(this.catalog,{publisher:l.subject.publisher,package_:l.subject.package_,name:l.subject.name,...l.subject.version?{version:l.subject.version}:{}});p&&r.push(p)}}else r=this.findInstancesOfClass(s);if(r.length===0)return`<!-- LookRenderer.ResourceGrid: no resources for ${s.publisher}/${s.package_}/${s.name} -->`;let i=[];for(let c of r){let l=$(c,N)??c.name,p=$(c,be),f=c.namespace||"",g=f.split("/")[1]?.split("@")[0]??"",h=f.split("@")[1]??"",k=h?this.parseVersion(h):void 0,m=fe.formatResourceUrl({publisher:X(c),package_:g,name:c.name,...k?{version:k}:{}},"=",{contextPublisher:t}),v=p?`<p class="kan-resource-card-subtitle">${u(p)}</p>`:"";i.push(`<a class="kan-resource-card" href="${u(m)}"><h3 class="kan-resource-card-title">${u(l)}</h3>${v}</a>`)}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 ne))continue;le(n).map(a=>a.subject).some(a=>a.publisher===e.publisher&&a.package_===e.package_&&a.name===e.name)&&t.push(n)}return t}renderBreadcrumb(e,t,n){let o=(e.namespace||"").split("/");if(o.length<2)return"";let a=o[0],r=o[1]??"",i=r.split("@")[0]??"",c=r.split("@")[1]??"";if(!a||!i)return"";if(n?.bareOverview)return`<nav class="kan-breadcrumb"><ol>
102
+ <li><a href="/">${u(a)}</a></li>
103
+ <li aria-current="page">${u(i)}</li>
104
+ </ol></nav>`;let l=e.name,f=!!M(this.catalog,{publisher:a,package_:i,name:i}),g=c?`${i}@${c}`:i,h=c?`/${i}/${c}/${i}`:`/${i}/${i}`,k=e.name===i,m=[];return m.push(`<li><a href="/">${u(a)}</a></li>`),k?m.push(`<li aria-current="page">${u(g)}</li>`):(m.push(f?`<li><a href="${u(h)}">${u(g)}</a></li>`:`<li>${u(g)}</li>`),m.push(`<li aria-current="page">${u(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 s=ae(n,Pe);if(!(s instanceof J))return"";let o=s.object??[];if(o.length===0)return"";let a=[];for(let r of o){if(!(r instanceof A))continue;let i=M(this.catalog,{publisher:r.subject.publisher,package_:r.subject.package_,name:r.subject.name}),{href:c,label:l}=this.resolveNavEntry(r,i,t),p=`/${e.namespace?.split("/")[1]?.split("@")[0]}/${(e.namespace||"").split("@")[1]}/${e.name}`,f=c===p?' aria-current="page"':"";a.push(`<li><a class="kan-nav-link" href="${u(c)}"${f}>${u(l)}</a></li>`)}return`<nav class="kan-site-nav"><ul>
108
+ ${a.join(`
109
+ `)}
110
+ </ul></nav>`}resolveNavEntry(e,t,n){if(t&&le(t).map(i=>i.subject).some(i=>i.publisher===we.publisher&&i.package_===we.package_&&i.name===we.name)){let i=$(t,N),c=ae(t,Be);if(c instanceof H&&c.object instanceof A){let l=c.object,p=this.readLabelForUri({publisher:l.subject.publisher,package_:l.subject.package_,name:l.subject.name});return{href:this.urlForReference(l,Be,n),label:i??p??l.subject.name}}}let s=fe.formatResourceUrl({publisher:e.subject.publisher,package_:e.subject.package_,...e.subject.version?{version:e.subject.version}:{},name:e.subject.name},"*",{contextPublisher:n}),o=t?$(t,N)??e.subject.name:e.subject.name;return{href:s,label:o}}findNavGroupForPublisher(e){for(let t of this.catalog){if(!(t instanceof ne)||!(t.namespace||"").startsWith(`${e}/`))continue;if(le(t).map(a=>a.subject).some(a=>a.publisher===$e.publisher&&a.package_===$e.package_&&a.name===$e.name))return t}}renderMarkdown(e,t,n){let s=P(e,W);if(!s)return"<!-- LookRenderer.Markdown: no look.source -->";let o=ae(t,s),a;return o instanceof Ae?a=this.resolveMarkdownLinks(o,n):o instanceof te?a=o.object:a=this.readPropertyValueText(t,s),a?`<section class="kan-markdown">
111
+ ${Ne(a)}
112
+ </section>`:""}resolveMarkdownLinks(e,t){let n=e.object,s=[...e.links].sort((o,a)=>a.startOffset-o.startOffset);for(let o of s){let a;if(o.target){let r=o.target.subject,i=(o.displayText??this.readLabelForUri({publisher:r.publisher,package_:r.package_,name:r.name})??o.reference).replace(/[[\]]/g,""),c=fe.formatResourceUrl({publisher:r.publisher,package_:r.package_,name:r.name,...r.version?{version:r.version}:{}},"=",{contextPublisher:t});a=`[${i}](${c})`}else a=o.displayText??o.reference;n=n.slice(0,o.startOffset)+a+n.slice(o.endOffset)}return n}renderRawMarkdown(e){let t=this.findCascadedLook(e);if(!t)return;let n=qe(t.declaration),s=[];for(let o of n){let a=ve(o);if(!a||!F(a,He))continue;let r=P(o,W);if(!r)continue;let i=this.readPropertyValueText(e,r);i&&s.push(i)}return s.length>0?s.join(`
113
+
114
+ `):void 0}renderHero(e,t,n){let s=['<header class="kan-hero">'],o=P(e,Bn);if(o){let l=this.readPropertyValueText(t,o);l&&s.push(`<span class="kan-hero-eyebrow">${u(l)}</span>`)}let a=P(e,Hn),r="";a&&(r=this.readPropertyValueText(t,a)??""),r||(r=t.name),s.push(`<h1 class="kan-hero-title">${u(r)}</h1>`);let i=P(e,Dn);if(i){let l=this.readPropertyValueText(t,i);l&&s.push(`<p class="kan-hero-subtitle">${u(l)}</p>`)}let c=P(e,ze);if(c){let l=this.readPropertyValueReferences(t,c);if(l.length>0){let p=l.map(f=>this.renderBadge(f,ze,n)).join("");s.push(`<div class="kan-hero-badges">${p}</div>`)}}return s.push("</header>"),s.join(`
115
+ `)}renderPropertyList(e,t,n){let s=P(e,W);if(!s)return"<!-- LookRenderer: PropertyList missing look.source -->";let o=this.readLabelForUri(s)??s.name,a=ae(t,s),r=this.gatherValueItems(a),i=r.length>0?r.map(c=>`<li>${this.renderInlineValue(c,W,n)}</li>`).join(""):'<li class="kan-empty">(no values)</li>';return['<section class="kan-property-list">',`<h3 class="kan-property-list-title">${u(o)}</h3>`,`<ul class="kan-property-list-items">${i}</ul>`,"</section>"].join(`
116
+ `)}renderBadgeRow(e,t,n){let s=P(e,W);if(!s)return"<!-- LookRenderer: BadgeRow missing look.source -->";let o=this.readPropertyValueReferences(t,s);return o.length===0?"":`<div class="kan-badge-row">${o.map(r=>this.renderBadge(r,W,n)).join("")}</div>`}renderChipRow(e,t,n){let s=Je(e,Gn);if(s.length===0)return"<!-- LookRenderer: ChipRow has no look.chips -->";let o=[];for(let a of s){let r=ae(t,a);if(!r)continue;let i=this.readLabelForUri(a)??a.name,c=this.renderStatementInlineValue(r,a,n);c&&o.push(`<span class="kan-chip"><span class="kan-chip-key">${u(i)}</span> <span class="kan-chip-val">${c}</span></span>`)}return o.length===0?"":`<div class="kan-chip-row">${o.join("")}</div>`}renderReferenceList(e,t,n){let s=Je(e,Pe);if(s.length===0)return"<!-- LookRenderer: ReferenceList has no look.entries -->";let o=$(e,De),a=$(e,In),r=[];for(let i of s){let c=this.readPropertyValueReferences(t,i);if(c.length===0)continue;let l=this.readLabelForUri(i)??i.name;if(o){let p=c.map(f=>this.renderDetailRow(f,o,a,n)).filter(f=>f).join("");p&&r.push(`<dt>${u(l)}</dt><dd><ul class="kan-ref-rows">${p}</ul></dd>`)}else{let p=c.map(f=>this.renderReferenceLink(f,Pe,n)).join(", ");r.push(`<dt>${u(l)}</dt><dd>${p}</dd>`)}}return r.length===0?"":`<dl class="kan-reference-list">${r.join("")}</dl>`}renderDetailRow(e,t,n,s){let o=M(this.catalog,{publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name,...e.subject.version?{version:e.subject.version}:{}});if(!o)return"";let a=this.resolvePath(o,t)??$(o,N)??o.name,r=this.hrefForSubject(o,s),i=this.svgUrlForSubject(o,s),c="";if(n){let l=this.resolvePath(o,n);l&&(c=`<span class="kan-ref-badge">${u(l)}</span>`)}return`<li class="kan-ref-row"><a class="kan-ref-rowlink" href="${u(r)}"><img class="kan-ref-icon" src="${u(i)}" alt="" loading="lazy"/><span class="kan-ref-text">${u(a)}</span>${c}</a></li>`}readPropertyValueText(e,t){let n=ae(e,t);if(n){if(n instanceof te)return n.object;if(n instanceof H){let s=n.object;return this.readLabelForUri({publisher:s.subject.publisher,package_:s.subject.package_,name:s.subject.name})??s.subject.name}if(n instanceof J)return(n.object??[]).map(o=>o instanceof A?this.readLabelForUri({publisher:o.subject.publisher,package_:o.subject.package_,name:o.subject.name})??o.subject.name:o instanceof ce?o.name??"":String(o)).filter(o=>o).join(", ")}}readPropertyValueReferences(e,t){let n=ae(e,t);if(!n)return[];if(n instanceof H)return[n.object];if(n instanceof J){let s=[];for(let o of n.object??[])o instanceof A&&s.push(o);return s}return[]}gatherValueItems(e){return e?e instanceof J?e.object??[]:e instanceof H?[e.object]:e instanceof pe?[e.object]:e instanceof te?[e.object]:[]:[]}renderInlineValue(e,t,n){return e instanceof A?this.renderReferenceLink(e,t,n):e instanceof ce?u(e.name??"(embedded)"):typeof e=="string"?u(e):typeof e=="number"||typeof e=="boolean"?u(String(e)):""}renderStatementInlineValue(e,t,n){return e instanceof te?u(e.object):e instanceof H?this.renderReferenceLink(e.object,t,n):e instanceof J?(e.object??[]).map(o=>this.renderInlineValue(o,t,n)).filter(o=>o).join(", "):""}renderReferenceLink(e,t,n){let s=this.readLabelForUri({publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name})??e.subject.name,o=this.urlForReference(e,t,n);return`<a class="kan-link" href="${u(o)}">${u(s)}</a>`}renderBadge(e,t,n){let s=this.readLabelForUri({publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name})??e.subject.name,o=this.readCommentForUri({publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name}),a=this.urlForReference(e,t,n),r=o?` title="${u(o)}"`:"";return`<a class="kan-badge" href="${u(a)}"${r}>${u(s)}</a>`}urlForReference(e,t,n){let s=t?this.getUrlFormForProperty(t):"=";return fe.formatResourceUrl({publisher:e.subject.publisher,package_:e.subject.package_,...e.subject.version?{version:e.subject.version}:{},name:e.subject.name},s,{contextPublisher:n})}getUrlFormForProperty(e){let t=M(this.catalog,e);if(!t)return"=";let n=$(t,Wn);return n==="*"||n==="^"||n==="~"||n==="="?n:"="}readLabelForUri(e){let t=M(this.catalog,e);if(t)return $(t,N)}readCommentForUri(e){let t=M(this.catalog,e);if(t)return $(t,be)}};function Ee(d){let e=new Map;for(let t of d.statement){if(!(t instanceof pe)||!re(t,Oe.publisher,Oe.package_,Oe.name))continue;let n=t.object;for(let s of n.statement){if(!(s instanceof te))continue;let o=s.predicate?.subject?.name;if(!o)continue;let a=s.object;e.has(o)||e.set(o,a)}}return e}function _e(d){for(let e of d.statement)if(e instanceof pe&&re(e,Le.publisher,Le.package_,Le.name))return e.object}function qe(d){for(let e of d.statement){if(!(e instanceof J)||!re(e,Ie.publisher,Ie.package_,Ie.name))continue;let t=[];for(let n of e.object??[])n instanceof ce&&t.push(n);return t}return[]}function ve(d){for(let e of d.statement)if(e instanceof H&&e.predicate?.subject?.name==="type"&&e.object instanceof A){let t=e.object.subject;return{publisher:t.publisher,package_:t.package_,name:t.name}}}function P(d,e){for(let t of d.statement)if(t instanceof H&&re(t,e.publisher,e.package_,e.name)&&t.object instanceof A){let n=t.object.subject;return{publisher:n.publisher,package_:n.package_,name:n.name}}}function Je(d,e){for(let t of d.statement){if(!(t instanceof J)||!re(t,e.publisher,e.package_,e.name))continue;let n=[];for(let s of t.object??[])s instanceof A&&n.push({publisher:s.subject.publisher,package_:s.subject.package_,name:s.subject.name});return n}return[]}function ae(d,e){for(let t of d.statement)if(re(t,e.publisher,e.package_,e.name))return t}function $(d,e){for(let t of d.statement)if(t instanceof te&&re(t,e.publisher,e.package_,e.name))return t.object}function Xe(d,e){for(let t of d.statement)if(t instanceof me&&re(t,e.publisher,e.package_,e.name))return t.object}function le(d){let e=[];for(let t of d.statement)if(t instanceof H){if(t.predicate?.subject?.name!=="type")continue;t.object instanceof A&&e.push(t.object)}else if(t instanceof J){if(t.predicate?.subject?.name!=="type")continue;for(let n of t.object??[])n instanceof A&&e.push(n)}return e}function Re(d){let e=[];for(let t of d.statement)if(t instanceof H){if(t.predicate?.subject?.name!=="subClassOf")continue;t.object instanceof A&&e.push(t.object)}else if(t instanceof J){if(t.predicate?.subject?.name!=="subClassOf")continue;for(let n of t.object??[])n instanceof A&&e.push(n)}return e}function ue(d,e){let t=[];for(let n of d){if(!(n instanceof ne)||n.name!==e.name)continue;(n.namespace||"").startsWith(`${e.publisher}/${e.package_}@`)&&t.push(n)}return t}function M(d,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 s of d)if(s instanceof ne&&s.name===e.name&&s.namespace===n)return s}for(let n of d){if(!(n instanceof ne)||n.name!==e.name)continue;if((n.namespace||"").startsWith(`${e.publisher}/${e.package_}@`))return n}}function re(d,e,t,n){let s=d.predicate?.subject;return s?s.publisher===e&&s.package_===t&&s.name===n:!1}function F(d,e){return d.publisher===e.publisher&&d.package_===e.package_&&d.name===e.name}function ke(d){return`${d.publisher}/${d.package_}/${d.name}`}function Yn(d){return d.name==="Package"?{...xe}:d}function X(d){let e=d.namespace||"",t=e.indexOf("/");return t>=0?e.substring(0,t):e}function u(d){return d.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function Ze(d){let e=d.lastIndexOf(".");return e>=0?d.substring(e+1):d}function Qe(d,e){for(let t of d.statement)if(t.predicate?.subject?.name===e)return t}function oe(d){return d.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function en(d,e){return d.length<=e?d:d.slice(0,e).replace(/\s+\S*$/,"")+"\u2026"}function Se(d){if(!d)return"";let e=/^(\d{4})-(\d{2})-(\d{2})/.exec(d);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)}`:d}export{Ne as a,Te as b};
@@ -1 +1 @@
1
- import{a as M,b as T,c as w,d,g,h as P,i as S,j as D,k as K,l as j}from"./chunk-W6T7MOKY.js";import{a as I}from"./chunk-7CUTGGH3.js";import{b as x,c as A}from"./chunk-5ILSX24H.js";var k=class extends T{name};var h=class extends M{value};var R=class extends g{links=[]};var N=/\[\[([^\[\]\n]+)\]\]/g,V=/\[\[/g,E=/```[\s\S]*?```|`[^`\n]*`/g;function _(u){let e=[];for(let t of u.matchAll(E))e.push([t.index,t.index+t[0].length]);return e}function q(u){if(!u||!u.includes("[["))return[];let e=_(u),t=o=>e.some(([n,a])=>o>=n&&o<a),s=new Set(O(u).map(o=>o.startOffset)),r=[];for(let o of u.matchAll(V)){let n=o.index;if(t(n)||s.has(n))continue;let a=u.slice(n,n+48).replace(/\s+/g," ").trim();r.push({startOffset:n,snippet:a})}return r}function O(u){if(!u||!u.includes("[["))return[];let e=[];for(let r of u.matchAll(E))e.push([r.index,r.index+r[0].length]);let t=r=>e.some(([o,n])=>r>=o&&r<n),s=[];for(let r of u.matchAll(N)){let o=r.index;if(t(o))continue;let n=r[1],a=n.indexOf("|"),i=(a===-1?n:n.slice(0,a)).trim();if(i.length===0)continue;let p=a===-1?"":n.slice(a+1).trim(),c={reference:i,startOffset:o,endOffset:o+r[0].length};p.length>0&&(c.displayText=p),s.push(c)}return s}var v=class{constructor(e){}async parseKanonaks(e){let t=[],s=await e.getAllDocumentsAsync(),r=new x(e),o=new A(r);for(let i of s){let p=i.metadata.namespace_?.toString()??"";for(let[c,m]of Object.entries(i.body)){let f=new w,l=this.resolveCanonicalEntity(c,i,p);f.namespace=l.namespace,f.name=l.name,f.statement=[];let y=await this.parseStatements(m,i,r,o,e);f.statement.push(...y),t.push(f)}}let n=new Map,a=[];for(let i of t)if(i instanceof w){let p=`${i.namespace}/${i.name}`,c=n.get(p);c?c.statement.push(...i.statement):(n.set(p,i),a.push(i))}else a.push(i);return a}resolveCanonicalEntity(e,t,s){if(!e.includes(".")||!t.metadata?.imports)return{namespace:s,name:e};let r=e.indexOf("."),o=e.substring(0,r),n=e.substring(r+1);for(let[a,i]of Object.entries(t.metadata.imports))for(let p of i)if((p.alias??p.packageName)===o){let m=p.version;return{namespace:`${a}/${p.packageName}@${m.major}.${m.minor}.${m.patch}`,name:n}}return{namespace:s,name:e}}async parseStatements(e,t,s,r,o){let n=[];if(typeof e!="object"||e===null||Array.isArray(e))return n;for(let[a,i]of Object.entries(e))try{let p=await this.getPropertyMetadata(a,t,s,o,r);if(!p)continue;let c=await this.parsePropertyValue(a,i,p,t,s,r);c&&n.push(c)}catch(p){console.error(`Error parsing property ${a}:`,p)}return n}async getPropertyMetadata(e,t,s,r,o){let n=await s.resolveEntityAsync(e,t);if(!n)return;let a=n.entity,i=a.type?.toString()??"",p=i.includes(".")?i.substring(i.lastIndexOf(".")+1):i;if(!new Set(["Property","DatatypeProperty","ObjectProperty","AnnotationProperty"]).has(p))return;let m=o.getPropertyTypeClassification(i),f=a.range?.toString(),l;if(m==="ObjectProperty")l="ObjectProperty";else if(m==="DatatypeProperty")l="DatatypeProperty";else{let b=f&&f.includes(".")?f.substring(f.lastIndexOf(".")+1):f??"";(f?o.isKnownXsdDatatypeName(f):!1)||b==="Literal"?l="DatatypeProperty":l="ObjectProperty"}let y;return f&&(y=(await s.resolveEntityAsync(f,t))?.uri),{propertyUri:n.uri.toString(),propertyType:l,range:f,rangeUri:y,isImported:n.isImported,definedInNamespace:n.definedInNamespace}}async parsePropertyValue(e,t,s,r,o,n){let a=s.propertyUri;if(t!=null){if(Array.isArray(t))return this.parseListValue(a,t,s,r,o,n);if(s.propertyType==="DatatypeProperty")return this.parseDatatypeValue(a,t,s,r,o,n);if(s.propertyType==="ObjectProperty")return this.parseObjectValue(a,t,s,r,o,n)}}async parseDatatypeValue(e,t,s,r,o,n){if(t instanceof Date)return g.parse(e,t.toISOString());if(typeof t=="string")return n.isSubstitutableDatatype(s.rangeUri)?await this.parseSubstitutableValue(e,t,r,o):g.parse(e,t);if(typeof t=="number")return P.parse(e,t);if(typeof t=="boolean"){let a=new S;return a.predicate=d.parse(e),a.object=t,a}}async parseSubstitutableValue(e,t,s,r){let o=new R;o.predicate=d.parse(e),o.object=t;for(let n of O(t)){let a=await r.resolveEntityAsync(n.reference,s),i;a&&(i=new d,i.subject=a.uri);let p={reference:n.reference,startOffset:n.startOffset,endOffset:n.endOffset};n.displayText!==void 0&&(p.displayText=n.displayText),i!==void 0&&(p.target=i),o.links.push(p)}return o}async parseObjectValue(e,t,s,r,o,n){if(typeof t=="string"){let a=await this.resolveReference(t,r,o);if(!a)return;let i=new D;return i.predicate=d.parse(e),i.object=a,i}if(typeof t=="object"&&!Array.isArray(t)){let a=new k;if(a.statement=await this.parseStatements(t,r,o,n,{}),a.statement.length>0){let c=new K;return c.predicate=d.parse(e),c.object=a,c}let i=[];for(let[c,m]of Object.entries(t))if(typeof m=="object"&&m!==null&&!Array.isArray(m)){let f=new k;f.name=c,f.statement=await this.parseStatements(m,r,o,n,{}),i.push(f)}else if(typeof m=="string"){let f=await this.resolveReference(m,r,o);f&&i.push(f)}if(i.length>0){let c=new j;return c.predicate=d.parse(e),c.object=i,c}let p=new K;return p.predicate=d.parse(e),p.object=a,p}}async parseListValue(e,t,s,r,o,n){let a=[],i=s.propertyType==="DatatypeProperty";for(let c of t){if(i&&(typeof c=="string"||typeof c=="number"||typeof c=="boolean")){let m=new h;m.value=c,a.push(m);continue}if(i&&c instanceof Date){let m=new h;m.value=c.toISOString(),a.push(m);continue}if(typeof c=="string"){let m=await this.resolveReference(c,r,o);m&&a.push(m)}else if(typeof c=="object"&&c!==null&&!Array.isArray(c)){let m=new k;m.statement=await this.parseStatements(c,r,o,n,{}),a.push(m)}}let p=new j;return p.predicate=d.parse(e),p.object=a,p}async resolveReference(e,t,s){let r=await s.resolveEntityAsync(e,t);if(r){let n=new d;return n.subject=r.uri,n}let o=t.metadata?.namespace_;if(o){let{KanonakUri:n}=await import("./KanonakUri-4VJGV3FN.js"),a=o.version??{major:0,minor:0,patch:0,toString:()=>"0.0.0",equals:()=>!1,getHashCode:()=>0,compareTo:()=>0};if(e.includes(".")){let p=e.indexOf("."),c=e.substring(0,p),m=e.substring(p+1);if(t.metadata?.imports){for(let[f,l]of Object.entries(t.metadata.imports))for(let y of l)if((y.alias??y.packageName)===c){let b=new d;return b.subject=new n(f,y.packageName,m,y.version),b}}}let i=new d;return i.subject=new n(o.publisher,o.package_,e,a),i}return null}async saveKanonaks(e,t){let s=new Map;for(let r of e)r instanceof w&&r.namespace&&(s.has(r.namespace)||s.set(r.namespace,[]),s.get(r.namespace).push(r));for(let[r,o]of s){let n=await this.convertKanonaksToDocument(r,o),a=`${r.split("@")[0]}.yml`;await t.saveDocumentAsync(n,a)}}async serializeToYaml(e,t){let s=e.filter(n=>n instanceof w&&n.namespace===t);if(s.length===0)throw new Error(`No kanonaks found with namespace '${t}'`);let r=await this.convertKanonaksToDocument(t,s);return new I().save(r)}async convertKanonaksToDocument(e,t){let r={metadata:{namespace_:e,get allImports(){if(!this.imports)return[];let n=[];for(let a of Object.values(this.imports))n.push(...a);return n}},body:{}},o=new Map;for(let n of t){let a={};for(let i of n.statement){let[p,c]=this.convertStatementToProperty(i);p&&c!==null&&c!==void 0&&(a[p]=c),this.collectImportsFromStatement(i,e,o)}r.body[n.name]=a}return r}convertStatementToProperty(e){if(e instanceof g)return[e.predicate.subject.name,e.object];if(e instanceof P)return[e.predicate.subject.name,e.object];if(e instanceof S)return[e.predicate.subject.name,e.object];if(e instanceof D)return[e.predicate.subject.name,e.object.subject.name];if(e instanceof j){let t=this.convertKanonakListToValue(e.object);return[e.predicate.subject.name,t]}else if(e instanceof K){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 d?t.push(s.subject.name):s instanceof k&&t.push(this.convertEmbeddedKanonakToValue(s));return t}convertEmbeddedKanonakToValue(e){let t={};for(let s of e.statement){let[r,o]=this.convertStatementToProperty(s);r&&o!==null&&o!==void 0&&(t[r]=o)}return t}collectImportsFromStatement(e,t,s){}};export{k as a,h as b,R as c,q as d,O as e,v as f};
1
+ import{a as M,b as T,c as w,d,g,h as P,i as S,j as D,k as K,l as j}from"./chunk-W6T7MOKY.js";import{a as I}from"./chunk-7CUTGGH3.js";import{b as x,c as A}from"./chunk-HEMBMX7T.js";var k=class extends T{name};var h=class extends M{value};var R=class extends g{links=[]};var N=/\[\[([^\[\]\n]+)\]\]/g,V=/\[\[/g,E=/```[\s\S]*?```|`[^`\n]*`/g;function _(u){let e=[];for(let t of u.matchAll(E))e.push([t.index,t.index+t[0].length]);return e}function q(u){if(!u||!u.includes("[["))return[];let e=_(u),t=o=>e.some(([n,a])=>o>=n&&o<a),s=new Set(O(u).map(o=>o.startOffset)),r=[];for(let o of u.matchAll(V)){let n=o.index;if(t(n)||s.has(n))continue;let a=u.slice(n,n+48).replace(/\s+/g," ").trim();r.push({startOffset:n,snippet:a})}return r}function O(u){if(!u||!u.includes("[["))return[];let e=[];for(let r of u.matchAll(E))e.push([r.index,r.index+r[0].length]);let t=r=>e.some(([o,n])=>r>=o&&r<n),s=[];for(let r of u.matchAll(N)){let o=r.index;if(t(o))continue;let n=r[1],a=n.indexOf("|"),i=(a===-1?n:n.slice(0,a)).trim();if(i.length===0)continue;let p=a===-1?"":n.slice(a+1).trim(),c={reference:i,startOffset:o,endOffset:o+r[0].length};p.length>0&&(c.displayText=p),s.push(c)}return s}var v=class{constructor(e){}async parseKanonaks(e){let t=[],s=await e.getAllDocumentsAsync(),r=new x(e),o=new A(r);for(let i of s){let p=i.metadata.namespace_?.toString()??"";for(let[c,m]of Object.entries(i.body)){let f=new w,l=this.resolveCanonicalEntity(c,i,p);f.namespace=l.namespace,f.name=l.name,f.statement=[];let y=await this.parseStatements(m,i,r,o,e);f.statement.push(...y),t.push(f)}}let n=new Map,a=[];for(let i of t)if(i instanceof w){let p=`${i.namespace}/${i.name}`,c=n.get(p);c?c.statement.push(...i.statement):(n.set(p,i),a.push(i))}else a.push(i);return a}resolveCanonicalEntity(e,t,s){if(!e.includes(".")||!t.metadata?.imports)return{namespace:s,name:e};let r=e.indexOf("."),o=e.substring(0,r),n=e.substring(r+1);for(let[a,i]of Object.entries(t.metadata.imports))for(let p of i)if((p.alias??p.packageName)===o){let m=p.version;return{namespace:`${a}/${p.packageName}@${m.major}.${m.minor}.${m.patch}`,name:n}}return{namespace:s,name:e}}async parseStatements(e,t,s,r,o){let n=[];if(typeof e!="object"||e===null||Array.isArray(e))return n;for(let[a,i]of Object.entries(e))try{let p=await this.getPropertyMetadata(a,t,s,o,r);if(!p)continue;let c=await this.parsePropertyValue(a,i,p,t,s,r);c&&n.push(c)}catch(p){console.error(`Error parsing property ${a}:`,p)}return n}async getPropertyMetadata(e,t,s,r,o){let n=await s.resolveEntityAsync(e,t);if(!n)return;let a=n.entity,i=a.type?.toString()??"",p=i.includes(".")?i.substring(i.lastIndexOf(".")+1):i;if(!new Set(["Property","DatatypeProperty","ObjectProperty","AnnotationProperty"]).has(p))return;let m=o.getPropertyTypeClassification(i),f=a.range?.toString(),l;if(m==="ObjectProperty")l="ObjectProperty";else if(m==="DatatypeProperty")l="DatatypeProperty";else{let b=f&&f.includes(".")?f.substring(f.lastIndexOf(".")+1):f??"";(f?o.isKnownXsdDatatypeName(f):!1)||b==="Literal"?l="DatatypeProperty":l="ObjectProperty"}let y;return f&&(y=(await s.resolveEntityAsync(f,t))?.uri),{propertyUri:n.uri.toString(),propertyType:l,range:f,rangeUri:y,isImported:n.isImported,definedInNamespace:n.definedInNamespace}}async parsePropertyValue(e,t,s,r,o,n){let a=s.propertyUri;if(t!=null){if(Array.isArray(t))return this.parseListValue(a,t,s,r,o,n);if(s.propertyType==="DatatypeProperty")return this.parseDatatypeValue(a,t,s,r,o,n);if(s.propertyType==="ObjectProperty")return this.parseObjectValue(a,t,s,r,o,n)}}async parseDatatypeValue(e,t,s,r,o,n){if(t instanceof Date)return g.parse(e,t.toISOString());if(typeof t=="string")return n.isSubstitutableDatatype(s.rangeUri)?await this.parseSubstitutableValue(e,t,r,o):g.parse(e,t);if(typeof t=="number")return P.parse(e,t);if(typeof t=="boolean"){let a=new S;return a.predicate=d.parse(e),a.object=t,a}}async parseSubstitutableValue(e,t,s,r){let o=new R;o.predicate=d.parse(e),o.object=t;for(let n of O(t)){let a=await r.resolveEntityAsync(n.reference,s),i;a&&(i=new d,i.subject=a.uri);let p={reference:n.reference,startOffset:n.startOffset,endOffset:n.endOffset};n.displayText!==void 0&&(p.displayText=n.displayText),i!==void 0&&(p.target=i),o.links.push(p)}return o}async parseObjectValue(e,t,s,r,o,n){if(typeof t=="string"){let a=await this.resolveReference(t,r,o);if(!a)return;let i=new D;return i.predicate=d.parse(e),i.object=a,i}if(typeof t=="object"&&!Array.isArray(t)){let a=new k;if(a.statement=await this.parseStatements(t,r,o,n,{}),a.statement.length>0){let c=new K;return c.predicate=d.parse(e),c.object=a,c}let i=[];for(let[c,m]of Object.entries(t))if(typeof m=="object"&&m!==null&&!Array.isArray(m)){let f=new k;f.name=c,f.statement=await this.parseStatements(m,r,o,n,{}),i.push(f)}else if(typeof m=="string"){let f=await this.resolveReference(m,r,o);f&&i.push(f)}if(i.length>0){let c=new j;return c.predicate=d.parse(e),c.object=i,c}let p=new K;return p.predicate=d.parse(e),p.object=a,p}}async parseListValue(e,t,s,r,o,n){let a=[],i=s.propertyType==="DatatypeProperty";for(let c of t){if(i&&(typeof c=="string"||typeof c=="number"||typeof c=="boolean")){let m=new h;m.value=c,a.push(m);continue}if(i&&c instanceof Date){let m=new h;m.value=c.toISOString(),a.push(m);continue}if(typeof c=="string"){let m=await this.resolveReference(c,r,o);m&&a.push(m)}else if(typeof c=="object"&&c!==null&&!Array.isArray(c)){let m=new k;m.statement=await this.parseStatements(c,r,o,n,{}),a.push(m)}}let p=new j;return p.predicate=d.parse(e),p.object=a,p}async resolveReference(e,t,s){let r=await s.resolveEntityAsync(e,t);if(r){let n=new d;return n.subject=r.uri,n}let o=t.metadata?.namespace_;if(o){let{KanonakUri:n}=await import("./KanonakUri-4VJGV3FN.js"),a=o.version??{major:0,minor:0,patch:0,toString:()=>"0.0.0",equals:()=>!1,getHashCode:()=>0,compareTo:()=>0};if(e.includes(".")){let p=e.indexOf("."),c=e.substring(0,p),m=e.substring(p+1);if(t.metadata?.imports){for(let[f,l]of Object.entries(t.metadata.imports))for(let y of l)if((y.alias??y.packageName)===c){let b=new d;return b.subject=new n(f,y.packageName,m,y.version),b}}}let i=new d;return i.subject=new n(o.publisher,o.package_,e,a),i}return null}async saveKanonaks(e,t){let s=new Map;for(let r of e)r instanceof w&&r.namespace&&(s.has(r.namespace)||s.set(r.namespace,[]),s.get(r.namespace).push(r));for(let[r,o]of s){let n=await this.convertKanonaksToDocument(r,o),a=`${r.split("@")[0]}.yml`;await t.saveDocumentAsync(n,a)}}async serializeToYaml(e,t){let s=e.filter(n=>n instanceof w&&n.namespace===t);if(s.length===0)throw new Error(`No kanonaks found with namespace '${t}'`);let r=await this.convertKanonaksToDocument(t,s);return new I().save(r)}async convertKanonaksToDocument(e,t){let r={metadata:{namespace_:e,get allImports(){if(!this.imports)return[];let n=[];for(let a of Object.values(this.imports))n.push(...a);return n}},body:{}},o=new Map;for(let n of t){let a={};for(let i of n.statement){let[p,c]=this.convertStatementToProperty(i);p&&c!==null&&c!==void 0&&(a[p]=c),this.collectImportsFromStatement(i,e,o)}r.body[n.name]=a}return r}convertStatementToProperty(e){if(e instanceof g)return[e.predicate.subject.name,e.object];if(e instanceof P)return[e.predicate.subject.name,e.object];if(e instanceof S)return[e.predicate.subject.name,e.object];if(e instanceof D)return[e.predicate.subject.name,e.object.subject.name];if(e instanceof j){let t=this.convertKanonakListToValue(e.object);return[e.predicate.subject.name,t]}else if(e instanceof K){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 d?t.push(s.subject.name):s instanceof k&&t.push(this.convertEmbeddedKanonakToValue(s));return t}convertEmbeddedKanonakToValue(e){let t={};for(let s of e.statement){let[r,o]=this.convertStatementToProperty(s);r&&o!==null&&o!==void 0&&(t[r]=o)}return t}collectImportsFromStatement(e,t,s){}};export{k as a,h as b,R as c,q as d,O as e,v as f};
@@ -0,0 +1 @@
1
+ import{a as k}from"./chunk-FUUTGGJS.js";function R(d){if(Array.isArray(d))return d.map(t=>t?.toString()??"").filter(t=>t.length>0);let e=d?.toString();return e?[e]:[]}var A=class{cache=new Map;repository;logger;constructor(e,t){this.repository=e,this.logger=t}async resolveEntityAsync(e,t){let s=t.metadata?.namespace_?.toString()??"unknown",n=this.cache.get(s);if(n){let a=n.get(e);if(a)return a}let r=await this.buildEntityIndexAsyncInternal(t,new Set,"");return this.cache.set(s,r),r.get(e)??null}async resolveAllEntitiesAsync(e,t){let s=await this.buildAllEntitiesIndexAsync(t,new Set,"");if(e.includes(".")){let n=e.split("."),r=n[0],a=n[1],c=await this.findDocumentForAlias(t,r);return c?await this.resolveAllEntitiesAsync(a,c):[]}return s.filter(n=>n.entityName===e)}async buildAllEntitiesIndexAsync(e,t,s){let n=[],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)`),n;t.add(r);let a=s.length===0?r:`${s} \u2192 ${r}`;for(let[c,o]of Object.entries(e.body))if(!c.includes(".")&&o&&typeof o=="object"&&!Array.isArray(o)){let i=e.metadata.namespace_?.version??{major:1,minor:0,patch:0,toString:()=>"1.0.0",equals:()=>!1,getHashCode:()=>0,compareTo:()=>0};n.push({entityName:c,uri:new k(e.metadata.namespace_.publisher,e.metadata.namespace_.package_,c,i),entity:o,definedInNamespace:r,isImported:s.length>0,importPath:a})}if(this.logger?.debug?.(`Collected ${n.length} entities from ${r}`),e.metadata?.imports){let c=Object.values(e.metadata.imports).reduce((o,i)=>o+i.length,0);this.logger?.debug?.(`Processing ${c} import(s) for ${r}`);for(let[o,i]of Object.entries(e.metadata.imports))for(let g of i)try{this.logger?.debug?.(`Resolving import: ${o}/${g.packageName}`);let l=await this.repository.getHighestCompatibleVersionAsync(o,g);if(l){this.logger?.debug?.(`Successfully loaded import: ${l.metadata?.namespace_?.toString()}`);let u=await this.buildAllEntitiesIndexAsync(l,t,a);n.push(...u),this.logger?.debug?.(`Added ${u.length} entities from import ${l.metadata?.namespace_?.toString()}`)}else this.logger?.warn?.(`Failed to load import: ${o}/${g.packageName}`)}catch(l){let u=l;throw this.logger?.error?.(`Failed to process import ${o}/${g.packageName} for namespace ${r}. Error: ${u.message}`,u),new Error(`Failed to process import ${o}/${g.packageName} for namespace ${r}. See inner exception for details.`,{cause:l})}}return n}async buildEntityIndexAsync(e){return await this.buildEntityIndexAsyncInternal(e,new Set,"")}async buildEntityIndexAsyncInternal(e,t,s){let n=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)`),n;t.add(r);let a=s.length===0?r:`${s} \u2192 ${r}`,c=0;for(let[o,i]of Object.entries(e.body))if(!o.includes(".")&&i&&typeof i=="object"&&!Array.isArray(i)&&!n.has(o)){let g=e.metadata.namespace_?.version??{major:1,minor:0,patch:0,toString:()=>"1.0.0",equals:()=>!1,getHashCode:()=>0,compareTo:()=>0};n.set(o,{entityName:o,uri:new k(e.metadata.namespace_.publisher,e.metadata.namespace_.package_,o,g),entity:i,definedInNamespace:r,isImported:s.length>0,importPath:a}),c++}if(this.logger?.debug?.(`Indexed ${c} entities from ${r}`),e.metadata?.imports){let o=Object.values(e.metadata.imports).reduce((i,g)=>i+g.length,0);this.logger?.debug?.(`Processing ${o} import(s) for ${r}`);for(let[i,g]of Object.entries(e.metadata.imports))for(let l of g)try{this.logger?.debug?.(`Resolving import: ${i}/${l.packageName}`);let u=await this.repository.getHighestCompatibleVersionAsync(i,l);if(u){this.logger?.debug?.(`Successfully loaded import: ${u.metadata?.namespace_?.toString()}`);let h=await this.buildEntityIndexAsyncInternal(u,t,a),b=0;for(let[y,m]of h.entries()){let p=n.get(y);if(!p)n.set(y,m),b++;else if(p.isImported&&m.isImported&&(p.uri.publisher!==m.uri.publisher||p.uri.package_!==m.uri.package_)){let f=p.isAmbiguous?p:{...p,isAmbiguous:!0,ambiguousNamespaces:[p.definedInNamespace]};f.ambiguousNamespaces.includes(m.definedInNamespace)||f.ambiguousNamespaces.push(m.definedInNamespace),n.set(y,f),this.logger?.warn?.(`Ambiguous reference '${y}': defined in ${f.ambiguousNamespaces.join(", ")}`)}if(l.alias&&!y.includes(".")){let f=`${l.alias}.${y}`;n.has(f)||(n.set(f,m),b++)}}this.logger?.debug?.(`Merged ${b} entities from import ${u.metadata?.namespace_?.toString()}`)}else this.logger?.warn?.(`Failed to load import: ${i}/${l.packageName}`)}catch(u){let h=u;throw this.logger?.error?.(`Failed to process import ${i}/${l.packageName} for namespace ${r}. Error: ${h.message}`,h),new Error(`Failed to process import ${i}/${l.packageName} for namespace ${r}. See inner exception for details.`,{cause:u})}}return n}async findDocumentForAlias(e,t){if(!e.metadata?.imports)return null;for(let[s,n]of Object.entries(e.metadata.imports))for(let r of n){if(r.alias===t)return await this.repository.getHighestCompatibleVersionAsync(s,r);if(!r.alias&&r.packageName===t)return await this.repository.getHighestCompatibleVersionAsync(s,r)}return null}clearCache(){this.cache.clear()}clearCacheForDocument(e){this.cache.delete(e)}async isSubclassOfAsync(e,t,s){if(e===t)return!0;let n=new Set;return await this.isSubclassOfRecursiveAsync(e,t,s,n)}async isSubclassOfRecursiveAsync(e,t,s,n){if(n.has(e))return!1;n.add(e);let r=await this.resolveEntityAsync(e,s);if(!r?.entity)return!1;let a=r.entity.subClassOf;if(a){let c=R(a);for(let o of c)if(o===t||await this.isSubclassOfRecursiveAsync(o,t,s,n))return!0}return!1}async isSubpropertyOfAsync(e,t,s){if(e===t)return!0;let n=new Set;return await this.isSubpropertyOfRecursiveAsync(e,t,s,n)}async isSubpropertyOfRecursiveAsync(e,t,s,n){if(n.has(e))return!1;n.add(e);let r=await this.resolveEntityAsync(e,s);if(!r?.entity)return!1;let a=r.entity.subPropertyOf;if(a){let c=R(a);for(let o of c)if(o===t||await this.isSubpropertyOfRecursiveAsync(o,t,s,n))return!0}return!1}};var w=class d{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"&&d.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 d.KNOWN_XSD_DATATYPES.has(t.toLowerCase())}async isClassTypeAsync(e,t){if(this.isKnownXsdDatatypeName(e))return!1;let s=await this.resourceResolver.resolveEntityAsync(e,t);if(s){let n=s.entity.type;if(n){let r=String(n);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))}};export{R as a,A as b,w as c};
@@ -1 +1 @@
1
- import{a as S,b as j,f as w}from"./chunk-SQDXESNM.js";import{c as x,d as g,g as T,h as I,i as v,j as $,k as q,l as L}from"./chunk-W6T7MOKY.js";function u(t){return`${t.publisher}/${t.package_}/${t.name}`}function c(t,e,r){return`${t}/${e}/${r}`}function k(t){return`${t.s}|${t.p}|${P(t.o)}`}function P(t){switch(t.kind){case"uri":return`u:${t.key}`;case"literal":return`l:${t.datatype}:${t.lexical}`;case"blank":return`b:${t.id}`}}function s(t,e,r){return{s:t,p:e,o:{kind:"uri",key:r}}}var y=class{all=new Set;byPIdx=new Map;bySPIdx=new Map;byPOIdx=new Map;tripleList=[];add(e){let r=k(e);return this.all.has(r)?!1:(this.all.add(r),this.tripleList.push(e),h(this.byPIdx,e.p,e),h(this.bySPIdx,`${e.s}|${e.p}`,e),e.o.kind==="uri"&&h(this.byPOIdx,`${e.p}|${e.o.key}`,e),!0)}has(e){return this.all.has(k(e))}size(){return this.tripleList.length}snapshot(){return this.tripleList.slice()}byPredicate(e){let r=this.byPIdx.get(e);return r?r.slice():[]}bySubjectPredicate(e,r){let o=this.bySPIdx.get(`${e}|${r}`);return o?o.slice():[]}byPredicateObject(e,r){let o=this.byPOIdx.get(`${e}|${r}`);return o?o.slice():[]}subjectsWithPredicateObject(e,r){let o=this.byPOIdx.get(`${e}|${r}`);if(!o)return[];let i=new Set;for(let a of o)i.add(a.s);return Array.from(i)}uriObjectsOf(e,r){let o=this.bySPIdx.get(`${e}|${r}`);if(!o)return[];let i=new Set;for(let a of o)a.o.kind==="uri"&&i.add(a.o.key);return Array.from(i)}hasUri(e,r,o){return this.all.has(`${e}|${r}|u:${o}`)}hasTriple(e,r,o){return this.all.has(`${e}|${r}|${P(o)}`)}};function h(t,e,r){let o=t.get(e);o?o.push(r):t.set(e,[r])}var d=class{type=c("kanonak.org","core-rdf","type");subClassOf=c("kanonak.org","core-rdf","subClassOf");subPropertyOf=c("kanonak.org","core-rdf","subPropertyOf");domain=c("kanonak.org","core-rdf","domain");range=c("kanonak.org","core-rdf","range");equivalentClass=c("kanonak.org","core-owl","equivalentClass");equivalentProperty=c("kanonak.org","core-owl","equivalentProperty");inverseOf=c("kanonak.org","core-owl","inverseOf");sameAs=c("kanonak.org","core-owl","sameAs");transitiveProperty=c("kanonak.org","core-owl","TransitiveProperty");symmetricProperty=c("kanonak.org","core-owl","SymmetricProperty")};var _={name:"rdfs2",apply(t,e){let r=!1;for(let o of t.byPredicate(e.domain)){if(o.o.kind!=="uri")continue;let i=o.s,a=o.o.key;for(let n of t.byPredicate(i))t.add(s(n.s,e.type,a))&&(r=!0)}return r}},E={name:"rdfs3",apply(t,e){let r=!1;for(let o of t.byPredicate(e.range)){if(o.o.kind!=="uri")continue;let i=o.s,a=o.o.key;for(let n of t.byPredicate(i))n.o.kind==="uri"&&t.add(s(n.o.key,e.type,a))&&(r=!0)}return r}},A={name:"rdfs5",apply(t,e){let r=!1;for(let o of t.byPredicate(e.subPropertyOf)){if(o.o.kind!=="uri")continue;let i=o.s,a=o.o.key;for(let n of t.bySubjectPredicate(a,e.subPropertyOf))n.o.kind==="uri"&&t.add(s(i,e.subPropertyOf,n.o.key))&&(r=!0)}return r}},V={name:"rdfs7",apply(t,e){let r=!1;for(let o of t.byPredicate(e.subPropertyOf)){if(o.o.kind!=="uri")continue;let i=o.s,a=o.o.key;if(i!==a)for(let n of t.byPredicate(i)){let p={s:n.s,p:a,o:n.o};t.add(p)&&(r=!0)}}return r}},W={name:"rdfs9",apply(t,e){let r=!1;for(let o of t.byPredicate(e.subClassOf)){if(o.o.kind!=="uri")continue;let i=o.s,a=o.o.key;if(i!==a)for(let n of t.byPredicateObject(e.type,i))t.add(s(n.s,e.type,a))&&(r=!0)}return r}},F={name:"rdfs11",apply(t,e){let r=!1;for(let o of t.byPredicate(e.subClassOf)){if(o.o.kind!=="uri")continue;let i=o.s,a=o.o.key;for(let n of t.bySubjectPredicate(a,e.subClassOf))n.o.kind==="uri"&&t.add(s(i,e.subClassOf,n.o.key))&&(r=!0)}return r}},K=[_,E,A,V,W,F];var N={name:"prp-trp",apply(t,e){let r=!1,o=t.subjectsWithPredicateObject(e.type,e.transitiveProperty);for(let i of o){let a=t.byPredicate(i);for(let n of a){if(n.o.kind!=="uri")continue;let p=n.o.key;for(let l of t.bySubjectPredicate(p,i))l.o.kind==="uri"&&n.s!==l.o.key&&t.add(s(n.s,i,l.o.key))&&(r=!0)}}return r}},D={name:"prp-symp",apply(t,e){let r=!1,o=t.subjectsWithPredicateObject(e.type,e.symmetricProperty);for(let i of o)for(let a of t.byPredicate(i))a.o.kind==="uri"&&t.add(s(a.o.key,i,a.s))&&(r=!0);return r}},M={name:"prp-inv1",apply(t,e){let r=!1;for(let o of t.byPredicate(e.inverseOf)){if(o.o.kind!=="uri")continue;let i=o.s,a=o.o.key;for(let n of t.byPredicate(i))n.o.kind==="uri"&&t.add(s(n.o.key,a,n.s))&&(r=!0)}return r}},z={name:"prp-inv2",apply(t,e){let r=!1;for(let o of t.byPredicate(e.inverseOf)){if(o.o.kind!=="uri")continue;let i=o.s,a=o.o.key;for(let n of t.byPredicate(a))n.o.kind==="uri"&&t.add(s(n.o.key,i,n.s))&&(r=!0)}return r}},B={name:"prp-eqp1",apply(t,e){let r=!1;for(let o of t.byPredicate(e.equivalentProperty)){if(o.o.kind!=="uri")continue;let i=o.s,a=o.o.key;if(i!==a)for(let n of t.byPredicate(i))t.add({s:n.s,p:a,o:n.o})&&(r=!0)}return r}},G={name:"prp-eqp2",apply(t,e){let r=!1;for(let o of t.byPredicate(e.equivalentProperty)){if(o.o.kind!=="uri")continue;let i=o.s,a=o.o.key;if(i!==a)for(let n of t.byPredicate(a))t.add({s:n.s,p:i,o:n.o})&&(r=!0)}return r}},H={name:"cax-eqc1",apply(t,e){let r=!1;for(let o of t.byPredicate(e.equivalentClass)){if(o.o.kind!=="uri")continue;let i=o.s,a=o.o.key;if(i!==a)for(let n of t.byPredicateObject(e.type,i))t.add(s(n.s,e.type,a))&&(r=!0)}return r}},J={name:"cax-eqc2",apply(t,e){let r=!1;for(let o of t.byPredicate(e.equivalentClass)){if(o.o.kind!=="uri")continue;let i=o.s,a=o.o.key;if(i!==a)for(let n of t.byPredicateObject(e.type,a))t.add(s(n.s,e.type,i))&&(r=!0)}return r}},Q={name:"eq-rep-s",apply(t,e){let r=!1;for(let o of t.byPredicate(e.sameAs)){if(o.o.kind!=="uri")continue;let i=o.s,a=o.o.key;if(i!==a){for(let n of t.snapshot())n.s===i&&t.add({s:a,p:n.p,o:n.o})&&(r=!0);for(let n of t.snapshot())n.s===a&&t.add({s:i,p:n.p,o:n.o})&&(r=!0)}}return r}},X={name:"eq-rep-o",apply(t,e){let r=!1;for(let o of t.byPredicate(e.sameAs)){if(o.o.kind!=="uri")continue;let i=o.s,a=o.o.key;if(i!==a)for(let n of t.snapshot())n.o.kind==="uri"&&(n.o.key===i?t.add(s(n.s,n.p,a))&&(r=!0):n.o.key===a&&t.add(s(n.s,n.p,i))&&(r=!0))}return r}},U=[N,D,M,z,B,G,H,J,Q,X];var m=class{constructor(e,r){this.store=e;this.vocabulary=r}store;vocabulary;getInstancesOfClass(e){let r=f(e);return this.store.subjectsWithPredicateObject(this.vocabulary.type,r)}getSubclasses(e){let r=f(e);return this.store.subjectsWithPredicateObject(this.vocabulary.subClassOf,r).filter(i=>i!==r)}getSuperclasses(e){let r=f(e);return this.store.uriObjectsOf(r,this.vocabulary.subClassOf).filter(o=>o!==r)}getTypesOfIndividual(e){return this.store.uriObjectsOf(f(e),this.vocabulary.type)}isInstanceOf(e,r){return this.store.hasUri(f(e),this.vocabulary.type,f(r))}triples(){return this.store.snapshot()}size(){return this.store.size()}};function f(t){return typeof t=="string"?t:c(t.publisher,t.package_,t.name)}var R=class{vocabulary;profile;maxIterations;constructor(e={}){this.vocabulary=e.vocabulary??new d,this.profile=e.profile??"owl-rl-classification",this.maxIterations=e.maxIterations??100}async reason(e){let r=new y,i=await new w().parseKanonaks(e),a=new O;for(let l of i)if(l instanceof x){let b=Y(l);if(!b)continue;for(let C of l.statement)this.emitStatement(b,C,r,a)}let n=[...K];this.profile==="owl-rl-classification"&&n.push(...U);let p=0;for(;p<this.maxIterations;){let l=!1;for(let b of n)b.apply(r,this.vocabulary)&&(l=!0);if(!l)break;p++}return new m(r,this.vocabulary)}emitStatement(e,r,o,i){let a=Z(r);if(a){if(r instanceof T){o.add({s:e,p:a,o:{kind:"literal",lexical:r.object,datatype:"string"}});return}if(r instanceof I){o.add({s:e,p:a,o:{kind:"literal",lexical:String(r.object),datatype:"number"}});return}if(r instanceof v){o.add({s:e,p:a,o:{kind:"literal",lexical:String(r.object),datatype:"boolean"}});return}if(r instanceof $){let n=u(r.object.subject);o.add(s(e,a,n));return}if(r instanceof q){let n=i.next();o.add({s:e,p:a,o:{kind:"blank",id:n}}),this.emitEmbedded(n,r.object,o,i);return}if(r instanceof L){for(let n of r.object??[])this.emitListItem(e,a,n,o,i);return}}}emitListItem(e,r,o,i,a){if(o instanceof g)i.add(s(e,r,u(o.subject)));else if(o instanceof S){let n=a.next();i.add({s:e,p:r,o:{kind:"blank",id:n}}),this.emitEmbedded(n,o,i,a)}else if(o instanceof j){let n=typeof o.value=="number"?"number":typeof o.value=="boolean"?"boolean":"string";i.add({s:e,p:r,o:{kind:"literal",lexical:String(o.value),datatype:n}})}}emitEmbedded(e,r,o,i){let a=`_:${e}`;for(let n of r.statement)this.emitStatement(a,n,o,i)}},O=class{counter=0;next(){return`b${this.counter++}`}};function Y(t){let e=t.namespace??"",r=e.indexOf("@"),o=r===-1?e:e.substring(0,r),i=o.indexOf("/");if(i===-1)return null;let a=o.substring(0,i),n=o.substring(i+1);return!a||!n||!t.name?null:c(a,n,t.name)}function Z(t){let e=t.predicate;return e?.subject?u(e.subject):null}export{u as a,c as b,k as c,s as d,y as e,d as f,K as g,U as h,m as i,R as j};
1
+ import{a as S,b as j,f as w}from"./chunk-FMYLEPMC.js";import{c as x,d as g,g as T,h as I,i as v,j as $,k as q,l as L}from"./chunk-W6T7MOKY.js";function u(t){return`${t.publisher}/${t.package_}/${t.name}`}function c(t,e,r){return`${t}/${e}/${r}`}function k(t){return`${t.s}|${t.p}|${P(t.o)}`}function P(t){switch(t.kind){case"uri":return`u:${t.key}`;case"literal":return`l:${t.datatype}:${t.lexical}`;case"blank":return`b:${t.id}`}}function s(t,e,r){return{s:t,p:e,o:{kind:"uri",key:r}}}var y=class{all=new Set;byPIdx=new Map;bySPIdx=new Map;byPOIdx=new Map;tripleList=[];add(e){let r=k(e);return this.all.has(r)?!1:(this.all.add(r),this.tripleList.push(e),h(this.byPIdx,e.p,e),h(this.bySPIdx,`${e.s}|${e.p}`,e),e.o.kind==="uri"&&h(this.byPOIdx,`${e.p}|${e.o.key}`,e),!0)}has(e){return this.all.has(k(e))}size(){return this.tripleList.length}snapshot(){return this.tripleList.slice()}byPredicate(e){let r=this.byPIdx.get(e);return r?r.slice():[]}bySubjectPredicate(e,r){let o=this.bySPIdx.get(`${e}|${r}`);return o?o.slice():[]}byPredicateObject(e,r){let o=this.byPOIdx.get(`${e}|${r}`);return o?o.slice():[]}subjectsWithPredicateObject(e,r){let o=this.byPOIdx.get(`${e}|${r}`);if(!o)return[];let i=new Set;for(let a of o)i.add(a.s);return Array.from(i)}uriObjectsOf(e,r){let o=this.bySPIdx.get(`${e}|${r}`);if(!o)return[];let i=new Set;for(let a of o)a.o.kind==="uri"&&i.add(a.o.key);return Array.from(i)}hasUri(e,r,o){return this.all.has(`${e}|${r}|u:${o}`)}hasTriple(e,r,o){return this.all.has(`${e}|${r}|${P(o)}`)}};function h(t,e,r){let o=t.get(e);o?o.push(r):t.set(e,[r])}var d=class{type=c("kanonak.org","core-rdf","type");subClassOf=c("kanonak.org","core-rdf","subClassOf");subPropertyOf=c("kanonak.org","core-rdf","subPropertyOf");domain=c("kanonak.org","core-rdf","domain");range=c("kanonak.org","core-rdf","range");equivalentClass=c("kanonak.org","core-owl","equivalentClass");equivalentProperty=c("kanonak.org","core-owl","equivalentProperty");inverseOf=c("kanonak.org","core-owl","inverseOf");sameAs=c("kanonak.org","core-owl","sameAs");transitiveProperty=c("kanonak.org","core-owl","TransitiveProperty");symmetricProperty=c("kanonak.org","core-owl","SymmetricProperty")};var _={name:"rdfs2",apply(t,e){let r=!1;for(let o of t.byPredicate(e.domain)){if(o.o.kind!=="uri")continue;let i=o.s,a=o.o.key;for(let n of t.byPredicate(i))t.add(s(n.s,e.type,a))&&(r=!0)}return r}},E={name:"rdfs3",apply(t,e){let r=!1;for(let o of t.byPredicate(e.range)){if(o.o.kind!=="uri")continue;let i=o.s,a=o.o.key;for(let n of t.byPredicate(i))n.o.kind==="uri"&&t.add(s(n.o.key,e.type,a))&&(r=!0)}return r}},A={name:"rdfs5",apply(t,e){let r=!1;for(let o of t.byPredicate(e.subPropertyOf)){if(o.o.kind!=="uri")continue;let i=o.s,a=o.o.key;for(let n of t.bySubjectPredicate(a,e.subPropertyOf))n.o.kind==="uri"&&t.add(s(i,e.subPropertyOf,n.o.key))&&(r=!0)}return r}},V={name:"rdfs7",apply(t,e){let r=!1;for(let o of t.byPredicate(e.subPropertyOf)){if(o.o.kind!=="uri")continue;let i=o.s,a=o.o.key;if(i!==a)for(let n of t.byPredicate(i)){let p={s:n.s,p:a,o:n.o};t.add(p)&&(r=!0)}}return r}},W={name:"rdfs9",apply(t,e){let r=!1;for(let o of t.byPredicate(e.subClassOf)){if(o.o.kind!=="uri")continue;let i=o.s,a=o.o.key;if(i!==a)for(let n of t.byPredicateObject(e.type,i))t.add(s(n.s,e.type,a))&&(r=!0)}return r}},F={name:"rdfs11",apply(t,e){let r=!1;for(let o of t.byPredicate(e.subClassOf)){if(o.o.kind!=="uri")continue;let i=o.s,a=o.o.key;for(let n of t.bySubjectPredicate(a,e.subClassOf))n.o.kind==="uri"&&t.add(s(i,e.subClassOf,n.o.key))&&(r=!0)}return r}},K=[_,E,A,V,W,F];var N={name:"prp-trp",apply(t,e){let r=!1,o=t.subjectsWithPredicateObject(e.type,e.transitiveProperty);for(let i of o){let a=t.byPredicate(i);for(let n of a){if(n.o.kind!=="uri")continue;let p=n.o.key;for(let l of t.bySubjectPredicate(p,i))l.o.kind==="uri"&&n.s!==l.o.key&&t.add(s(n.s,i,l.o.key))&&(r=!0)}}return r}},D={name:"prp-symp",apply(t,e){let r=!1,o=t.subjectsWithPredicateObject(e.type,e.symmetricProperty);for(let i of o)for(let a of t.byPredicate(i))a.o.kind==="uri"&&t.add(s(a.o.key,i,a.s))&&(r=!0);return r}},M={name:"prp-inv1",apply(t,e){let r=!1;for(let o of t.byPredicate(e.inverseOf)){if(o.o.kind!=="uri")continue;let i=o.s,a=o.o.key;for(let n of t.byPredicate(i))n.o.kind==="uri"&&t.add(s(n.o.key,a,n.s))&&(r=!0)}return r}},z={name:"prp-inv2",apply(t,e){let r=!1;for(let o of t.byPredicate(e.inverseOf)){if(o.o.kind!=="uri")continue;let i=o.s,a=o.o.key;for(let n of t.byPredicate(a))n.o.kind==="uri"&&t.add(s(n.o.key,i,n.s))&&(r=!0)}return r}},B={name:"prp-eqp1",apply(t,e){let r=!1;for(let o of t.byPredicate(e.equivalentProperty)){if(o.o.kind!=="uri")continue;let i=o.s,a=o.o.key;if(i!==a)for(let n of t.byPredicate(i))t.add({s:n.s,p:a,o:n.o})&&(r=!0)}return r}},G={name:"prp-eqp2",apply(t,e){let r=!1;for(let o of t.byPredicate(e.equivalentProperty)){if(o.o.kind!=="uri")continue;let i=o.s,a=o.o.key;if(i!==a)for(let n of t.byPredicate(a))t.add({s:n.s,p:i,o:n.o})&&(r=!0)}return r}},H={name:"cax-eqc1",apply(t,e){let r=!1;for(let o of t.byPredicate(e.equivalentClass)){if(o.o.kind!=="uri")continue;let i=o.s,a=o.o.key;if(i!==a)for(let n of t.byPredicateObject(e.type,i))t.add(s(n.s,e.type,a))&&(r=!0)}return r}},J={name:"cax-eqc2",apply(t,e){let r=!1;for(let o of t.byPredicate(e.equivalentClass)){if(o.o.kind!=="uri")continue;let i=o.s,a=o.o.key;if(i!==a)for(let n of t.byPredicateObject(e.type,a))t.add(s(n.s,e.type,i))&&(r=!0)}return r}},Q={name:"eq-rep-s",apply(t,e){let r=!1;for(let o of t.byPredicate(e.sameAs)){if(o.o.kind!=="uri")continue;let i=o.s,a=o.o.key;if(i!==a){for(let n of t.snapshot())n.s===i&&t.add({s:a,p:n.p,o:n.o})&&(r=!0);for(let n of t.snapshot())n.s===a&&t.add({s:i,p:n.p,o:n.o})&&(r=!0)}}return r}},X={name:"eq-rep-o",apply(t,e){let r=!1;for(let o of t.byPredicate(e.sameAs)){if(o.o.kind!=="uri")continue;let i=o.s,a=o.o.key;if(i!==a)for(let n of t.snapshot())n.o.kind==="uri"&&(n.o.key===i?t.add(s(n.s,n.p,a))&&(r=!0):n.o.key===a&&t.add(s(n.s,n.p,i))&&(r=!0))}return r}},U=[N,D,M,z,B,G,H,J,Q,X];var m=class{constructor(e,r){this.store=e;this.vocabulary=r}store;vocabulary;getInstancesOfClass(e){let r=f(e);return this.store.subjectsWithPredicateObject(this.vocabulary.type,r)}getSubclasses(e){let r=f(e);return this.store.subjectsWithPredicateObject(this.vocabulary.subClassOf,r).filter(i=>i!==r)}getSuperclasses(e){let r=f(e);return this.store.uriObjectsOf(r,this.vocabulary.subClassOf).filter(o=>o!==r)}getTypesOfIndividual(e){return this.store.uriObjectsOf(f(e),this.vocabulary.type)}isInstanceOf(e,r){return this.store.hasUri(f(e),this.vocabulary.type,f(r))}triples(){return this.store.snapshot()}size(){return this.store.size()}};function f(t){return typeof t=="string"?t:c(t.publisher,t.package_,t.name)}var R=class{vocabulary;profile;maxIterations;constructor(e={}){this.vocabulary=e.vocabulary??new d,this.profile=e.profile??"owl-rl-classification",this.maxIterations=e.maxIterations??100}async reason(e){let r=new y,i=await new w().parseKanonaks(e),a=new O;for(let l of i)if(l instanceof x){let b=Y(l);if(!b)continue;for(let C of l.statement)this.emitStatement(b,C,r,a)}let n=[...K];this.profile==="owl-rl-classification"&&n.push(...U);let p=0;for(;p<this.maxIterations;){let l=!1;for(let b of n)b.apply(r,this.vocabulary)&&(l=!0);if(!l)break;p++}return new m(r,this.vocabulary)}emitStatement(e,r,o,i){let a=Z(r);if(a){if(r instanceof T){o.add({s:e,p:a,o:{kind:"literal",lexical:r.object,datatype:"string"}});return}if(r instanceof I){o.add({s:e,p:a,o:{kind:"literal",lexical:String(r.object),datatype:"number"}});return}if(r instanceof v){o.add({s:e,p:a,o:{kind:"literal",lexical:String(r.object),datatype:"boolean"}});return}if(r instanceof $){let n=u(r.object.subject);o.add(s(e,a,n));return}if(r instanceof q){let n=i.next();o.add({s:e,p:a,o:{kind:"blank",id:n}}),this.emitEmbedded(n,r.object,o,i);return}if(r instanceof L){for(let n of r.object??[])this.emitListItem(e,a,n,o,i);return}}}emitListItem(e,r,o,i,a){if(o instanceof g)i.add(s(e,r,u(o.subject)));else if(o instanceof S){let n=a.next();i.add({s:e,p:r,o:{kind:"blank",id:n}}),this.emitEmbedded(n,o,i,a)}else if(o instanceof j){let n=typeof o.value=="number"?"number":typeof o.value=="boolean"?"boolean":"string";i.add({s:e,p:r,o:{kind:"literal",lexical:String(o.value),datatype:n}})}}emitEmbedded(e,r,o,i){let a=`_:${e}`;for(let n of r.statement)this.emitStatement(a,n,o,i)}},O=class{counter=0;next(){return`b${this.counter++}`}};function Y(t){let e=t.namespace??"",r=e.indexOf("@"),o=r===-1?e:e.substring(0,r),i=o.indexOf("/");if(i===-1)return null;let a=o.substring(0,i),n=o.substring(i+1);return!a||!n||!t.name?null:c(a,n,t.name)}function Z(t){let e=t.predicate;return e?.subject?u(e.subject):null}export{u as a,c as b,k as c,s as d,y as e,d as f,K as g,U as h,m as i,R as j};
@@ -1,2 +1,2 @@
1
- import{e as V}from"./chunk-SQDXESNM.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]===`
1
+ import{e as V}from"./chunk-FMYLEPMC.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};
@@ -1,2 +1,2 @@
1
- import{a as h}from"./chunk-4TJZIM7A.js";import{c as S,f as R}from"./chunk-SQDXESNM.js";var E=(t=>(t.Class="Class",t.DatatypeProperty="DatatypeProperty",t.ObjectProperty="ObjectProperty",t.AnnotationProperty="AnnotationProperty",t.Instance="Instance",t.Datatype="Datatype",t.Unknown="Unknown",t))(E||{}),A=(o=>(o.InstanceOf="instanceOf",o.SubClassOf="subClassOf",o.Domain="domain",o.Range="range",o.ObjectRelationship="objectRelationship",o.SubPropertyOf="subPropertyOf",o.PropertyValue="propertyValue",o.EmbeddedLink="embeddedLink",o))(A||{}),$=class{static async buildFromRepository(n){let l=await new R().parseKanonaks(n),p=await n.getAllDocumentsAsync(),a=[],s=[],t=new Set,o=new Set,d=new Map;for(let y of l){let c=y;c.name&&(h.isClassType(c)&&t.add(c.name),(h.isObjectPropertyType(c)||h.isGenericPropertyType(c))&&o.add(c.name))}for(let y of p)for(let[c,g]of Object.entries(y.body))o.has(c)&&g?.range&&typeof g.range=="string"&&d.set(c,g.range);let u=new Map;for(let y of l){let c=y;c.name&&u.set(c.name,c)}for(let y of p){let c=y.metadata.namespace_,g=c?`${c.publisher}/${c.package_}`:"",i=c?.version?`${c.version.major}.${c.version.minor}.${c.version.patch}`:"",f=x(y);for(let[m,b]of Object.entries(y.body)){if(!b||typeof b!="object")continue;let P=u.get(m),k="Unknown";if(P){let T=P;h.isClassType(T)?k="Class":h.isObjectPropertyType(T)?k="ObjectProperty":h.isDatatypePropertyType(T)?k="DatatypeProperty":h.isAnnotationPropertyType(T)?k="AnnotationProperty":h.isDatatypeType(T)?k="Datatype":h.isGenericPropertyType(T)?k="ObjectProperty":h.isInstanceOfKnownClass(T,t)&&(k="Instance")}let j=g&&i?`${g}/${m}@${i}`:m,C={};for(let[T,O]of Object.entries(b))T!=="type"&&(typeof O!="object"||O===null)&&(C[T]=O);a.push({id:j,label:b.label??m,type:k,namespace:g,properties:C}),v(j,b,k,t,o,s,g,i,f),N(j,b,o,d,a,s,g,i,f),L(j,P,s)}}return{nodes:a,edges:s}}static buildFromDocument(n){let r=[],l=[],p=n.metadata.namespace_,a=p?.version?`${p.version.major}.${p.version.minor}.${p.version.patch}`:"",s=p?`${p.publisher}/${p.package_}`:"",t=new Set,o=new Set,d=new Map,u=x(n);for(let[g,i]of Object.entries(n.body)){let f=i?.type;f&&(K(f,u)&&t.add(g),M(f,u)&&(o.add(g),i.range&&typeof i.range=="string"&&d.set(g,i.range)))}for(let[g,i]of Object.entries(n.body)){if(!i||typeof i!="object")continue;let f=i.type,m=U(f,g,t,u),b=s&&a?`${s}/${g}@${a}`:g,P={};for(let[k,j]of Object.entries(i))k!=="type"&&(typeof j!="object"||j===null)&&(P[k]=j);r.push({id:b,label:i.label??g,type:m,namespace:s,properties:P}),v(b,i,m,t,o,l,s,a,u),N(b,i,o,d,r,l,s,a,u)}let y=new Set(r.map(g=>g.id)),c=l.filter(g=>y.has(g.source)&&y.has(g.target));return{nodes:r,edges:c}}};function x(e,n){let r=new Map;if(e.metadata?.imports)for(let[l,p]of Object.entries(e.metadata.imports))for(let a of p){let s=a.alias??a.packageName,t=a.version,o=`${t.major}.${t.minor}.${t.patch}`;r.set(s,{publisher:l,package_:a.packageName,version:o})}return r}var _={"kanonak.org/core-rdf/Class":"Class","kanonak.org/core-owl/Class":"Class","kanonak.org/core-rdfs/Class":"Class","kanonak.org/core-owl/ObjectProperty":"ObjectProperty","kanonak.org/core-owl/DatatypeProperty":"DatatypeProperty","kanonak.org/core-owl/AnnotationProperty":"AnnotationProperty","kanonak.org/core-rdf/Property":"ObjectProperty","kanonak.org/core-rdfs/Datatype":"Datatype"},G=new Set(["kanonak.org/core-owl/ObjectProperty","kanonak.org/core-owl/DatatypeProperty","kanonak.org/core-owl/AnnotationProperty","kanonak.org/core-rdf/Property"]);function D(e,n){if(e.includes(".")){let r=e.indexOf("."),l=e.substring(0,r),p=e.substring(r+1),a=n.get(l);if(a)return`${a.publisher}/${a.package_}/${p}`}return null}function K(e,n){let r=D(e,n);return r?_[r]==="Class":!1}function M(e,n){let r=D(e,n);return r?G.has(r):!1}function U(e,n,r,l){if(!e||e==="Package")return"Unknown";let p=D(e,l);if(p){let s=_[p];if(s)return s;let t=p.split("/").pop()?.split("@")[0]??"";return r.has(t)?"Instance":"Unknown"}let a=e.split(".").pop()??e;return r.has(a)?"Instance":"Unknown"}var I=new Set(["type","label","comment","version","publisher","imports","license","match","alias","package"]);function v(e,n,r,l,p,a,s,t,o){let d=n.type,u=n.subClassOf;if(u){let i=Array.isArray(u)?u:[u];for(let f of i)typeof f=="string"&&a.push({source:e,target:w(f,s,t,o),type:"subClassOf",label:"subClassOf"})}let y=n.subPropertyOf;if(y){let i=Array.isArray(y)?y:[y];for(let f of i)typeof f=="string"&&a.push({source:e,target:w(f,s,t,o),type:"subPropertyOf",label:"subPropertyOf"})}if(r==="Instance"&&d){let i=d.split(".").pop()??d;a.push({source:e,target:w(i,s,t,o),type:"instanceOf",label:"type"})}if(r==="Instance")for(let[i,f]of Object.entries(n)){if(I.has(i)||!p.has(i))continue;let m=Array.isArray(f)?f:[f];for(let b of m)typeof b=="string"&&V(b)&&a.push({source:e,target:w(b,s,t,o),type:"propertyValue",label:i,propertyId:w(i,s,t,o)})}let c=r==="ObjectProperty"||r==="DatatypeProperty",g=n.domain&&n.range;if((c||g)&&n.domain&&n.range){let i=typeof n.domain=="string"?n.domain:null,f=typeof n.range=="string"?n.range:null;i&&f&&a.push({source:w(i,s,t,o),target:w(f,s,t,o),type:"objectRelationship",label:n.label??e.split("/").pop()??"",propertyId:e})}}function N(e,n,r,l,p,a,s,t,o){for(let[d,u]of Object.entries(n)){if(I.has(d)||typeof u!="object"||u===null||Array.isArray(u))continue;let y=u,c=`${e}/${d}`,g=l.get(d),i=g?g.split(".").pop()??g:"Unknown",f={};for(let[b,P]of Object.entries(y))(typeof P!="object"||P===null)&&(f[b]=P);p.push({id:c,label:`${i} (embedded)`,type:"Instance",namespace:s,properties:f});let m=s&&t?`${s}/${d}@${t}`:d;a.push({source:e,target:c,type:"propertyValue",label:d,propertyId:r.has(d)?m:void 0}),g&&a.push({source:c,target:w(i,s,t,o),type:"instanceOf",label:"type (inferred)"}),N(c,y,r,l,p,a,s,t,o)}}function L(e,n,r){let l=n?.statement;if(Array.isArray(l))for(let p of l){if(!(p instanceof S))continue;let a=p.predicate?.subject?.name??"";for(let s of p.links){let t=s.target?.subject;if(!t)continue;let o=t.version,d=o&&typeof o.major=="number"?`@${o.major}.${o.minor}.${o.patch}`:"";r.push({source:e,target:`${t.publisher}/${t.package_}/${t.name}${d}`,type:"embeddedLink",label:a})}}}function V(e){return!(!e||e.includes(" ")||e.includes(`
1
+ import{a as h}from"./chunk-4TJZIM7A.js";import{c as S,f as R}from"./chunk-FMYLEPMC.js";var E=(t=>(t.Class="Class",t.DatatypeProperty="DatatypeProperty",t.ObjectProperty="ObjectProperty",t.AnnotationProperty="AnnotationProperty",t.Instance="Instance",t.Datatype="Datatype",t.Unknown="Unknown",t))(E||{}),A=(o=>(o.InstanceOf="instanceOf",o.SubClassOf="subClassOf",o.Domain="domain",o.Range="range",o.ObjectRelationship="objectRelationship",o.SubPropertyOf="subPropertyOf",o.PropertyValue="propertyValue",o.EmbeddedLink="embeddedLink",o))(A||{}),$=class{static async buildFromRepository(n){let l=await new R().parseKanonaks(n),p=await n.getAllDocumentsAsync(),a=[],s=[],t=new Set,o=new Set,d=new Map;for(let y of l){let c=y;c.name&&(h.isClassType(c)&&t.add(c.name),(h.isObjectPropertyType(c)||h.isGenericPropertyType(c))&&o.add(c.name))}for(let y of p)for(let[c,g]of Object.entries(y.body))o.has(c)&&g?.range&&typeof g.range=="string"&&d.set(c,g.range);let u=new Map;for(let y of l){let c=y;c.name&&u.set(c.name,c)}for(let y of p){let c=y.metadata.namespace_,g=c?`${c.publisher}/${c.package_}`:"",i=c?.version?`${c.version.major}.${c.version.minor}.${c.version.patch}`:"",f=x(y);for(let[m,b]of Object.entries(y.body)){if(!b||typeof b!="object")continue;let P=u.get(m),k="Unknown";if(P){let T=P;h.isClassType(T)?k="Class":h.isObjectPropertyType(T)?k="ObjectProperty":h.isDatatypePropertyType(T)?k="DatatypeProperty":h.isAnnotationPropertyType(T)?k="AnnotationProperty":h.isDatatypeType(T)?k="Datatype":h.isGenericPropertyType(T)?k="ObjectProperty":h.isInstanceOfKnownClass(T,t)&&(k="Instance")}let j=g&&i?`${g}/${m}@${i}`:m,C={};for(let[T,O]of Object.entries(b))T!=="type"&&(typeof O!="object"||O===null)&&(C[T]=O);a.push({id:j,label:b.label??m,type:k,namespace:g,properties:C}),v(j,b,k,t,o,s,g,i,f),N(j,b,o,d,a,s,g,i,f),L(j,P,s)}}return{nodes:a,edges:s}}static buildFromDocument(n){let r=[],l=[],p=n.metadata.namespace_,a=p?.version?`${p.version.major}.${p.version.minor}.${p.version.patch}`:"",s=p?`${p.publisher}/${p.package_}`:"",t=new Set,o=new Set,d=new Map,u=x(n);for(let[g,i]of Object.entries(n.body)){let f=i?.type;f&&(K(f,u)&&t.add(g),M(f,u)&&(o.add(g),i.range&&typeof i.range=="string"&&d.set(g,i.range)))}for(let[g,i]of Object.entries(n.body)){if(!i||typeof i!="object")continue;let f=i.type,m=U(f,g,t,u),b=s&&a?`${s}/${g}@${a}`:g,P={};for(let[k,j]of Object.entries(i))k!=="type"&&(typeof j!="object"||j===null)&&(P[k]=j);r.push({id:b,label:i.label??g,type:m,namespace:s,properties:P}),v(b,i,m,t,o,l,s,a,u),N(b,i,o,d,r,l,s,a,u)}let y=new Set(r.map(g=>g.id)),c=l.filter(g=>y.has(g.source)&&y.has(g.target));return{nodes:r,edges:c}}};function x(e,n){let r=new Map;if(e.metadata?.imports)for(let[l,p]of Object.entries(e.metadata.imports))for(let a of p){let s=a.alias??a.packageName,t=a.version,o=`${t.major}.${t.minor}.${t.patch}`;r.set(s,{publisher:l,package_:a.packageName,version:o})}return r}var _={"kanonak.org/core-rdf/Class":"Class","kanonak.org/core-owl/Class":"Class","kanonak.org/core-rdfs/Class":"Class","kanonak.org/core-owl/ObjectProperty":"ObjectProperty","kanonak.org/core-owl/DatatypeProperty":"DatatypeProperty","kanonak.org/core-owl/AnnotationProperty":"AnnotationProperty","kanonak.org/core-rdf/Property":"ObjectProperty","kanonak.org/core-rdfs/Datatype":"Datatype"},G=new Set(["kanonak.org/core-owl/ObjectProperty","kanonak.org/core-owl/DatatypeProperty","kanonak.org/core-owl/AnnotationProperty","kanonak.org/core-rdf/Property"]);function D(e,n){if(e.includes(".")){let r=e.indexOf("."),l=e.substring(0,r),p=e.substring(r+1),a=n.get(l);if(a)return`${a.publisher}/${a.package_}/${p}`}return null}function K(e,n){let r=D(e,n);return r?_[r]==="Class":!1}function M(e,n){let r=D(e,n);return r?G.has(r):!1}function U(e,n,r,l){if(!e||e==="Package")return"Unknown";let p=D(e,l);if(p){let s=_[p];if(s)return s;let t=p.split("/").pop()?.split("@")[0]??"";return r.has(t)?"Instance":"Unknown"}let a=e.split(".").pop()??e;return r.has(a)?"Instance":"Unknown"}var I=new Set(["type","label","comment","version","publisher","imports","license","match","alias","package"]);function v(e,n,r,l,p,a,s,t,o){let d=n.type,u=n.subClassOf;if(u){let i=Array.isArray(u)?u:[u];for(let f of i)typeof f=="string"&&a.push({source:e,target:w(f,s,t,o),type:"subClassOf",label:"subClassOf"})}let y=n.subPropertyOf;if(y){let i=Array.isArray(y)?y:[y];for(let f of i)typeof f=="string"&&a.push({source:e,target:w(f,s,t,o),type:"subPropertyOf",label:"subPropertyOf"})}if(r==="Instance"&&d){let i=d.split(".").pop()??d;a.push({source:e,target:w(i,s,t,o),type:"instanceOf",label:"type"})}if(r==="Instance")for(let[i,f]of Object.entries(n)){if(I.has(i)||!p.has(i))continue;let m=Array.isArray(f)?f:[f];for(let b of m)typeof b=="string"&&V(b)&&a.push({source:e,target:w(b,s,t,o),type:"propertyValue",label:i,propertyId:w(i,s,t,o)})}let c=r==="ObjectProperty"||r==="DatatypeProperty",g=n.domain&&n.range;if((c||g)&&n.domain&&n.range){let i=typeof n.domain=="string"?n.domain:null,f=typeof n.range=="string"?n.range:null;i&&f&&a.push({source:w(i,s,t,o),target:w(f,s,t,o),type:"objectRelationship",label:n.label??e.split("/").pop()??"",propertyId:e})}}function N(e,n,r,l,p,a,s,t,o){for(let[d,u]of Object.entries(n)){if(I.has(d)||typeof u!="object"||u===null||Array.isArray(u))continue;let y=u,c=`${e}/${d}`,g=l.get(d),i=g?g.split(".").pop()??g:"Unknown",f={};for(let[b,P]of Object.entries(y))(typeof P!="object"||P===null)&&(f[b]=P);p.push({id:c,label:`${i} (embedded)`,type:"Instance",namespace:s,properties:f});let m=s&&t?`${s}/${d}@${t}`:d;a.push({source:e,target:c,type:"propertyValue",label:d,propertyId:r.has(d)?m:void 0}),g&&a.push({source:c,target:w(i,s,t,o),type:"instanceOf",label:"type (inferred)"}),N(c,y,r,l,p,a,s,t,o)}}function L(e,n,r){let l=n?.statement;if(Array.isArray(l))for(let p of l){if(!(p instanceof S))continue;let a=p.predicate?.subject?.name??"";for(let s of p.links){let t=s.target?.subject;if(!t)continue;let o=t.version,d=o&&typeof o.major=="number"?`@${o.major}.${o.minor}.${o.patch}`:"";r.push({source:e,target:`${t.publisher}/${t.package_}/${t.name}${d}`,type:"embeddedLink",label:a})}}}function V(e){return!(!e||e.includes(" ")||e.includes(`
2
2
  `)||e.startsWith("http://")||e.startsWith("https://")||/^\d{4}-\d{2}/.test(e)||/^\d+(\.\d+)?$/.test(e))}function w(e,n,r,l){if(e.includes("@")&&e.includes("/"))return e;if(e.includes(".")){let p=e.indexOf("."),a=e.substring(0,p),s=e.substring(p+1);if(l){let t=l.get(a);if(t)return`${t.publisher}/${t.package_}/${s}@${t.version}`}return n&&r?`${n}/${s}@${r}`:s}return n&&r?`${n}/${e}@${r}`:e}function Y(e){if(!e.expiresAt)return!1;let n=new Date(e.expiresAt),r=300*1e3;return n.getTime()<=Date.now()+r}function Q(e){return!!e.accessToken&&!Y(e)}function X(e){let n=e.replace(/^https?:\/\//,"").replace(/^git:\/\//,"").replace(/\/+$/,"").trim();if(!n)throw new Error("Publisher host cannot be empty");return n}export{E as a,A as b,$ as c,Y as d,Q as e,X as f};