@kanonak-protocol/sdk 3.52.0 → 3.53.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/browser.js 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-B7QSKW7E.js";import{a as Qe}from"./chunk-IIODYDKS.js";import"./chunk-3NEUHF7E.js";import{a as H,b as L,c as W,d as F}from"./chunk-VHUJSHH7.js";import{a as Pe,b as we,c as he}from"./chunk-HMDTGNEA.js";import{a as ke,b as be}from"./chunk-DC774EQL.js";import"./chunk-NIGFQYVA.js";import{A as We,B as Fe,C as Ge,E as Xe,a as Ke,b as xe,c as Se,d as Re,f as De,g as Be,h as Ce,i as Ee,j as je,k as ve,l as _e,m as Ie,n as Ae,o as Te,p as Oe,q as Ve,r as $e,s as Ue,t as ze,u as Me,v as Ne,w as Je,x as He,y as qe,z as Le}from"./chunk-XHCSTAUK.js";import{c as pe}from"./chunk-YYFIJNSP.js";import{a as Y,c as le}from"./chunk-H2LEQLVD.js";import{a as q}from"./chunk-7CUTGGH3.js";import{a as ye}from"./chunk-N224PFBI.js";import"./chunk-Q4DKP5DO.js";import{a as O,b as V,c as $,d as U,e as z,f as M,g as N,h as J}from"./chunk-FQHALFRR.js";import{b as ue,c as de}from"./chunk-64TVBQFR.js";import{a as G,b as X,c as Q,d as ee,e as re,f as te,g as ne,h as oe,i as se,j as ie,k as ae,l as ce}from"./chunk-W6T7MOKY.js";import{a as Z}from"./chunk-FUUTGGJS.js";var j="kanonak-credentials",u="credentials",Ye=1,f=class{async get(r){let e=d(r),t=await h();return new Promise((o,a)=>{let s=t.transaction(u,"readonly"),i=s.objectStore(u).get(e);i.onsuccess=()=>o(i.result??null),i.onerror=()=>a(new Error(`IndexedDB read failed for '${e}': ${i.error?.message}`)),s.oncomplete=()=>t.close()})}async store(r,e){let t=d(r),o=await h();return new Promise((a,s)=>{let l=o.transaction(u,"readwrite"),c=l.objectStore(u).put(e,t);c.onsuccess=()=>a(),c.onerror=()=>s(new Error(`IndexedDB write failed for '${t}': ${c.error?.message}`)),l.oncomplete=()=>o.close()})}async remove(r){let e=d(r),t=await h();return new Promise((o,a)=>{let s=t.transaction(u,"readwrite"),i=s.objectStore(u).delete(e);i.onsuccess=()=>o(),i.onerror=()=>a(new Error(`IndexedDB delete failed for '${e}': ${i.error?.message}`)),s.oncomplete=()=>t.close()})}async list(){let r=await h();return new Promise((e,t)=>{let o=r.transaction(u,"readonly"),s=o.objectStore(u).getAllKeys();s.onsuccess=()=>e(s.result??[]),s.onerror=()=>t(new Error(`IndexedDB list failed: ${s.error?.message}`)),o.oncomplete=()=>r.close()})}};function h(){return new Promise((n,r)=>{let e=indexedDB.open(j,Ye);e.onupgradeneeded=()=>{let t=e.result;t.objectStoreNames.contains(u)||t.createObjectStore(u)},e.onsuccess=()=>n(e.result),e.onerror=()=>r(new Error(`Failed to open IndexedDB '${j}': ${e.error?.message}
1
+ import{a as ge,b as fe,c as me,d as C,e as E,f as d}from"./chunk-WDQONH3P.js";import{a as Qe}from"./chunk-IIODYDKS.js";import"./chunk-3NEUHF7E.js";import{a as H,b as L,c as W,d as F}from"./chunk-VHUJSHH7.js";import{a as Pe,b as we,c as he}from"./chunk-CYDDQF6S.js";import{a as ke,b as be}from"./chunk-DC774EQL.js";import"./chunk-NIGFQYVA.js";import{A as We,B as Fe,C as Ge,E as Xe,a as Ke,b as xe,c as Se,d as Re,f as De,g as Be,h as Ce,i as Ee,j as je,k as ve,l as _e,m as Ie,n as Ae,o as Te,p as Oe,q as Ve,r as $e,s as Ue,t as ze,u as Me,v as Ne,w as Je,x as He,y as qe,z as Le}from"./chunk-BSJ6PEKE.js";import{c as pe}from"./chunk-VJT6YUWK.js";import{a as Y,c as le}from"./chunk-H2LEQLVD.js";import{a as q}from"./chunk-7CUTGGH3.js";import{a as ye}from"./chunk-N224PFBI.js";import"./chunk-Q4DKP5DO.js";import{a as O,b as V,c as $,d as U,e as z,f as M,g as N,h as J}from"./chunk-FQHALFRR.js";import{b as ue,c as de}from"./chunk-64TVBQFR.js";import{a as G,b as X,c as Q,d as ee,e as re,f as te,g as ne,h as oe,i as se,j as ie,k as ae,l as ce}from"./chunk-W6T7MOKY.js";import{a as Z}from"./chunk-FUUTGGJS.js";var j="kanonak-credentials",u="credentials",Ye=1,f=class{async get(r){let e=d(r),t=await h();return new Promise((o,a)=>{let s=t.transaction(u,"readonly"),i=s.objectStore(u).get(e);i.onsuccess=()=>o(i.result??null),i.onerror=()=>a(new Error(`IndexedDB read failed for '${e}': ${i.error?.message}`)),s.oncomplete=()=>t.close()})}async store(r,e){let t=d(r),o=await h();return new Promise((a,s)=>{let l=o.transaction(u,"readwrite"),c=l.objectStore(u).put(e,t);c.onsuccess=()=>a(),c.onerror=()=>s(new Error(`IndexedDB write failed for '${t}': ${c.error?.message}`)),l.oncomplete=()=>o.close()})}async remove(r){let e=d(r),t=await h();return new Promise((o,a)=>{let s=t.transaction(u,"readwrite"),i=s.objectStore(u).delete(e);i.onsuccess=()=>o(),i.onerror=()=>a(new Error(`IndexedDB delete failed for '${e}': ${i.error?.message}`)),s.oncomplete=()=>t.close()})}async list(){let r=await h();return new Promise((e,t)=>{let o=r.transaction(u,"readonly"),s=o.objectStore(u).getAllKeys();s.onsuccess=()=>e(s.result??[]),s.onerror=()=>t(new Error(`IndexedDB list failed: ${s.error?.message}`)),o.oncomplete=()=>r.close()})}};function h(){return new Promise((n,r)=>{let e=indexedDB.open(j,Ye);e.onupgradeneeded=()=>{let t=e.result;t.objectStoreNames.contains(u)||t.createObjectStore(u)},e.onsuccess=()=>n(e.result),e.onerror=()=>r(new Error(`Failed to open IndexedDB '${j}': ${e.error?.message}
2
2
  Credential storage requires IndexedDB support in your browser.`))})}async function _(){let n=await crypto.subtle.generateKey({name:"ECDSA",namedCurve:"P-256"},!1,["sign"]),r=await crypto.subtle.exportKey("jwk",n.publicKey);return{signingKey:n.privateKey,publicKeyJwk:r}}async function k(){let n=await crypto.subtle.generateKey({name:"ECDSA",namedCurve:"P-256"},!0,["sign"]),r=await crypto.subtle.exportKey("jwk",n.publicKey),e=await crypto.subtle.exportKey("jwk",n.privateKey);return{keys:{signingKey:n.privateKey,publicKeyJwk:r},dpopKeyPair:{publicKey:r,privateKey:e}}}async function b(n){return{signingKey:await crypto.subtle.importKey("jwk",n.privateKey,{name:"ECDSA",namedCurve:"P-256"},!1,["sign"]),publicKeyJwk:n.publicKey}}async function K(n,r,e,t,o){let a={alg:"ES256",typ:"dpop+jwt",jwk:{kty:n.publicKeyJwk.kty,crv:n.publicKeyJwk.crv,x:n.publicKeyJwk.x,y:n.publicKeyJwk.y}},s={jti:crypto.randomUUID(),htm:r.toUpperCase(),htu:e,iat:Math.floor(Date.now()/1e3)};return t&&(s.ath=await er(t)),o&&(s.nonce=o),await Ze(a,s,n.signingKey)}function x(n){return!n||n.length===0?!1:n.some(r=>r.toUpperCase()==="ES256")}async function Ze(n,r,e){let t=v(JSON.stringify(n)),o=v(JSON.stringify(r)),a=new TextEncoder().encode(`${t}.${o}`),s=await crypto.subtle.sign({name:"ECDSA",hash:"SHA-256"},e,a),l=D(s);return`${t}.${o}.${l}`}async function er(n){let r=new TextEncoder().encode(n),e=await crypto.subtle.digest("SHA-256",r);return D(e)}function v(n){let r=new TextEncoder().encode(n);return D(r.buffer)}function D(n){let r=new Uint8Array(n),e="";for(let t=0;t<r.length;t++)e+=String.fromCharCode(r[t]);return btoa(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}var rr=300*1e3,S=class{credentialBackend;callbackUrl;constructor(r){this.credentialBackend=new f,this.callbackUrl=r??`${window.location.origin}/browser/callback.html`}async authorize(r){let e=d(r),t=await this.discover(e);if(!t)return{success:!1,error:`No OAuth discovery endpoint found for '${e}'.`};if(!t.authorizationEndpoint||!t.tokenEndpoint)return{success:!1,error:`OAuth metadata incomplete for '${e}'.`};let o=x(t.dpopSigningAlgValuesSupported),a=null,s=null;if(o){let g=await k();a=g.keys,s=g.dpopKeyPair}let l=await this.credentialBackend.get(e),i=l?.clientId??null,c=l?.clientSecret??null;if(!i&&t.registrationEndpoint){let g=await this.registerClient(t.registrationEndpoint);if(!g)return{success:!1,error:`Dynamic client registration failed for '${e}'.`};i=g.clientId,c=g.clientSecret??null}if(!i)return{success:!1,error:`No OAuth client credentials for '${e}'.`};let m=tr(),p=await nr(m),R=or(),A=sr(t.authorizationEndpoint,i,this.callbackUrl,R,p),y=await this.openAuthPopup(A,R);if(!y)return{success:!1,error:"Authorization timed out or was cancelled."};if(y.error)return{success:!1,error:`Authorization failed: ${y.error}`};if(!y.code)return{success:!1,error:"No authorization code received."};if(y.state!==R)return{success:!1,error:"State mismatch \u2014 possible CSRF attack."};let P=await this.exchangeCode(t.tokenEndpoint,i,c,y.code,this.callbackUrl,m,a);if(!P)return{success:!1,error:"Token exchange failed."};let T={clientId:i,clientSecret:c,accessToken:P.accessToken??null,refreshToken:P.refreshToken??null,expiresAt:P.expiresIn?new Date(Date.now()+P.expiresIn*1e3).toISOString():null,tokenEndpoint:t.tokenEndpoint,dpopKeyPair:s};return await this.credentialBackend.store(e,T),{success:!0,host:e}}async getCredentialWithKeys(r){let e=await this.credentialBackend.get(r);if(!e)return null;let t=null;return e.dpopKeyPair&&(t=await b(e.dpopKeyPair)),{credential:e,dpopKeys:t}}async logout(r){let e=d(r);return await this.credentialBackend.remove(e),{success:!0,host:e}}async listAuthenticated(){return this.credentialBackend.list()}async discover(r){for(let e of[`https://${r}/.well-known/oauth-authorization-server`,`https://${r}/.well-known/openid-configuration`])try{let t=await fetch(e);if(!t.ok)continue;let o=await t.json();return{issuer:w(o.issuer),authorizationEndpoint:w(o.authorization_endpoint),tokenEndpoint:w(o.token_endpoint),registrationEndpoint:w(o.registration_endpoint),revocationEndpoint:w(o.revocation_endpoint),dpopSigningAlgValuesSupported:I(o.dpop_signing_alg_values_supported),codeChallengeMethodsSupported:I(o.code_challenge_methods_supported)}}catch{continue}return null}async registerClient(r){try{let e=await fetch(r,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({client_name:"Kanonak Browser",redirect_uris:[this.callbackUrl],grant_types:["authorization_code","refresh_token"],response_types:["code"],token_endpoint_auth_method:"none"})});if(!e.ok)return null;let t=await e.json(),o=t.client_id;return o?{clientId:o,clientSecret:t.client_secret}:null}catch{return null}}openAuthPopup(r,e){return new Promise(t=>{let o=window.open(r,"kanonak-auth","width=500,height=700,menubar=no,toolbar=no,location=yes,status=no");if(!o){t(null);return}let a=setTimeout(()=>{i(),t(null)},rr),s=c=>{c.origin===window.location.origin&&(!c.data||c.data.type!=="kanonak-auth-callback"||(i(),t({code:c.data.code??void 0,state:c.data.state??void 0,error:c.data.error??void 0})))},l=setInterval(()=>{o.closed&&(i(),t(null))},500),i=()=>{clearTimeout(a),clearInterval(l),window.removeEventListener("message",s);try{o.close()}catch{}};window.addEventListener("message",s)})}async exchangeCode(r,e,t,o,a,s,l){let i=new URLSearchParams({grant_type:"authorization_code",client_id:e,code:o,redirect_uri:a,code_verifier:s});t&&i.set("client_secret",t);let c={"Content-Type":"application/x-www-form-urlencoded"};l&&(c.DPoP=await K(l,"POST",r));try{let m=await fetch(r,{method:"POST",headers:c,body:i.toString()});if(!m.ok)return null;let p=await m.json();return{accessToken:p.access_token,refreshToken:p.refresh_token,expiresIn:typeof p.expires_in=="number"?p.expires_in:void 0}}catch{return null}}};function tr(){let n=new Uint8Array(32);return crypto.getRandomValues(n),B(n.buffer)}async function nr(n){let r=new TextEncoder().encode(n),e=await crypto.subtle.digest("SHA-256",r);return B(e)}function or(){let n=new Uint8Array(16);return crypto.getRandomValues(n),B(n.buffer)}function sr(n,r,e,t,o){let a=new URLSearchParams({client_id:r,response_type:"code",redirect_uri:e,state:t,code_challenge:o,code_challenge_method:"S256"});return`${n}?${a}`}function B(n){let r=new Uint8Array(n),e="";for(let t=0;t<r.length;t++)e+=String.fromCharCode(r[t]);return btoa(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function w(n){return typeof n=="string"?n:null}function I(n){return Array.isArray(n)?n.filter(r=>typeof r=="string"):null}export{Ne as AmbiguousReferenceRule,se as BooleanStatement,f as BrowserCredentialBackend,S as BrowserOAuthFlow,Fe as ClassDefinitionRule,Ie as ClassHierarchyCycleRule,X as DefinedKanonak,ze as DefinitionPropertyReferenceRule,fe as EdgeType,Y as EmbeddedKanonak,je as EmbeddedKanonakTypeRule,ae as EmbeddedStatement,me as GraphBuilder,F as HttpKanonakDocumentRepository,ve as ImportExistenceRule,H as InMemoryKanonakDocumentRepository,Ue as InstancePropertyReferenceRule,G as Kanonak,we as KanonakDocumentPositions,pe as KanonakObjectParser,Xe as KanonakObjectValidator,q as KanonakParser,Z as KanonakUri,ke as KanonakUriBuilder,ce as ListStatement,Ge as MarkdownLinkRule,le as MarkdownStatement,$e as NamespaceImportCycleRule,De as NamespacePrefixRule,ge as NodeType,oe as NumberStatement,He as ObjectPropertyImportRule,qe as ObjectPropertyValueValidationRule,Se as OntologyValidationError,Ke as OntologyValidationResult,Le as PropertyDomainRule,Ae as PropertyHierarchyCycleRule,Pe as PropertyMetadata,Je as PropertyRangeReferenceRule,Te as PropertyRangeRequiredRule,Ce as PropertyTypeSpecificityRule,We as PropertyValueTypeRule,L as PublisherConfigResolver,W as PublisherIndex,ee as ReferenceKanonak,ie as ReferenceStatement,Be as ResourceNamingRule,ue as ResourceResolver,ye as ResourceTypeClassifier,te as ScalarStatement,re as Statement,ne as StringStatement,Oe as SubClassOfReferenceRule,Ve as SubPropertyOfReferenceRule,Q as SubjectKanonak,Ee as SubjectKanonakTypeRequiredRule,de as TypeResolver,_e as UnresolvedReferenceRule,Re as ValidationContext,xe as ValidationSeverity,Me as XsdImportRule,x as browserServerSupportsDPoP,O as compareVersions,K as createBrowserDPoPProof,U as createVersion,Qe as findDerivation,be as findInstancesByType,$ as formatVersion,k as generateBrowserDPoPKeyPair,_ as generateBrowserDPoPKeys,E as hasValidToken,b as importDPoPKeys,M as isCompatibleVersion,C as isExpired,N as isMajorCompatible,d as normalizeHost,z as parseVersionString,he as parseWithPositions,J as pickHighestDocument,V as versionsEqual};
@@ -1,4 +1,4 @@
1
- import{a as me,c as v}from"./chunk-YYFIJNSP.js";import{a as ae,c as pe}from"./chunk-H2LEQLVD.js";import{a as se}from"./chunk-7CUTGGH3.js";import{d as fe,f as de,g as ge}from"./chunk-N224PFBI.js";import{i as ue,l as J}from"./chunk-Q4DKP5DO.js";import{c as V}from"./chunk-FQHALFRR.js";import{a as P,b as D,c as ye}from"./chunk-64TVBQFR.js";import{c as G,k as le,l as ce}from"./chunk-W6T7MOKY.js";var A=class{isValid=!1;errors=[];warnings=[];get totalIssues(){return this.errors.length+this.warnings.length}};var R=(r=>(r.Warning="Warning",r.Error="Error",r))(R||{});var g=class{ruleType="";severity="Error";lineNumber;column;entityName;propertyName;propertyPath;message="";suggestion;actualValue;expectedValue;toString(){let e="";return this.lineNumber!==void 0&&(e+=`Line ${this.lineNumber}: `),this.entityName&&(e+=`[${this.entityName}] `),e+=this.message,e}};var ee=class d{resolvedDocuments=[];currentEntityPath;withPath(e){let r=new d;return r.resolvedDocuments=this.resolvedDocuments,r.currentEntityPath=e,r}};var re=class{constructor(e){this.underlying=e;this.repository=new oe(e)}underlying;repository;kanonaksPromise=null;importClosureCache=new Map;classDeclarationsCache=new Map;propertyNamesCache=new Map;allDocumentsPromise=null;getKanonaks(){return this.kanonaksPromise||(this.kanonaksPromise=new v().parseKanonaks(this.underlying)),this.kanonaksPromise}async getImportClosure(e){let r=this.importClosureCache.get(e);return r||(r=this.computeImportClosure(e),this.importClosureCache.set(e,r),r)}async getClassDeclarations(e){let r=this.classDeclarationsCache.get(e);return r||(r=this.computeClassDeclarations(e),this.classDeclarationsCache.set(e,r),r)}async getPropertyNames(e){let r=this.propertyNamesCache.get(e);return r||(r=this.computePropertyNames(e),this.propertyNamesCache.set(e,r),r)}getAllDocuments(){return this.allDocumentsPromise||(this.allDocumentsPromise=this.underlying.getAllDocumentsAsync()),this.allDocumentsPromise}async computeImportClosure(e){let r=new Set([e]),t=[e],o=await this.buildDocsByIdIndex();for(;t.length>0;){let s=t.shift(),i=o.get(s);if(i?.metadata.imports)for(let[n,l]of Object.entries(i.metadata.imports))for(let a of l){let c=await this.repository.getHighestCompatibleVersionAsync(n,a);if(!c)continue;let p=te(c);!p||r.has(p)||(r.add(p),t.push(p))}}return r}async buildDocsByIdIndex(){let e=await this.getAllDocuments(),r=new Map;for(let t of e){let o=te(t);o&&r.set(o,t)}return r}async computeClassDeclarations(e){let r=await this.findDocById(e),t=new Map;if(!r)return t;for(let[o,s]of Object.entries(r.body)){if(!he(s))continue;let i=s,n=be(i,"type");if(n==="Class"||n?.endsWith(".Class")){let l=De(i);t.set(o,l)}}return t}async computePropertyNames(e){let r=await this.findDocById(e),t=new Set;if(!r)return t;for(let[o,s]of Object.entries(r.body)){if(!he(s))continue;let n=be(s,"type");(n==="ObjectProperty"||n?.endsWith(".ObjectProperty")||n==="DatatypeProperty"||n?.endsWith(".DatatypeProperty")||n==="AnnotationProperty"||n?.endsWith(".AnnotationProperty")||n==="Property"||n?.endsWith(".Property"))&&t.add(o)}return t}async findDocById(e){let r=await this.getAllDocuments();for(let t of r)if(te(t)===e)return t}};function te(d){let e=d.metadata.namespace_;if(!(!e||!e.version))return`${e.publisher}/${e.package_}@${V(e.version)}`}function he(d){return typeof d=="object"&&d!==null&&!Array.isArray(d)}function be(d,e){if(e in d)return Re(d[e]);for(let r of Object.keys(d))if(r.endsWith(`.${e}`))return Re(d[r])}function Re(d){return Array.isArray(d)?d.length>0?String(d[0]):void 0:d==null?void 0:String(d)}function De(d){let e=d.subClassOf;if(e===void 0){for(let r of Object.keys(d))if(r.endsWith(".subClassOf")){e=d[r];break}}return P(e)}var oe=class{constructor(e){this.inner=e}inner;highestVersionCache=new Map;byNamespaceCache=new Map;getAllDocumentsAsync(){return this.inner.getAllDocumentsAsync()}getDocumentAsync(e){return this.inner.getDocumentAsync(e)}getDocumentsByNamespaceAsync(e,r){let t=`${e}/${r}`,o=this.byNamespaceCache.get(t);return o||(o=this.inner.getDocumentsByNamespaceAsync(e,r),this.byNamespaceCache.set(t,o),o)}getHighestCompatibleVersionAsync(e,r){let t=r.version,o=t?`${t.major}.${t.minor}.${t.patch}`:"",s=`${e}/${r.packageName}@${r.versionOperator}:${o}`,i=this.highestVersionCache.get(s);return i||(i=this.inner.getHighestCompatibleVersionAsync(e,r),this.highestVersionCache.set(s,i),i)}saveDocumentAsync(){throw new Error("CachingRepository is read-only during a validation pass.")}deleteDocumentAsync(){throw new Error("CachingRepository is read-only during a validation pass.")}clearNamespaceAsync(){throw new Error("CachingRepository is read-only during a validation pass.")}getAllDocumentReferencesAsync(){return this.inner.getAllDocumentReferencesAsync()}getDocumentContentAsync(e){return this.inner.getDocumentContentAsync(e)}getDocumentUriAsync(e){return this.inner.getDocumentUriAsync(e)}};var I=class d{static NAMESPACE_PREFIX_PATTERN=/^(rdfs|xsd|owl|rdf|dc|foaf|skos|dct|dcterms|geo|time|prov|schema|og|dbo):/i;ruleName="NamespacePrefix";validate(e){let r=[];for(let[t,o]of Object.entries(e.body))o&&typeof o=="object"&&!Array.isArray(o)&&this.validateEntity(t,o,r);return r}validateEntity(e,r,t){for(let[o,s]of Object.entries(r)){let i=s?.toString()??"";if(i&&d.NAMESPACE_PREFIX_PATTERN.test(i)){let n=this.getSuggestionForPrefixedValue(i),l=e.split(".")[0],a=new g;a.ruleType=this.ruleName,a.severity="Error",a.entityName=l,a.propertyName=e,a.actualValue=o,a.expectedValue=n,a.message=`Invalid namespace prefix '${i}'. Use '${n}' without prefix.`,a.suggestion="Kanonak YAML uses simple type names. Namespace resolution is handled through imports.",t.push(a)}s&&typeof s=="object"&&!Array.isArray(s)&&this.validateEntity(`${e}.${o}`,s,t)}}getSuggestionForPrefixedValue(e){let r=e.toLowerCase();if(r==="rdfs:class"||r==="owl:class")return"Class";if(r==="rdfs:property"||r==="rdf:property")return"DatatypeProperty or ObjectProperty";if(r.startsWith("xsd:"))return e.substring(4);let t=e.indexOf(":");return t>=0?e.substring(t+1):e}};var O=class d{static RESERVED_WORDS=new Set(["kanonak","imports","namespace","type","label","comment","subclassof","domain","range","required","functional"]);static VALID_PROPERTIES=new Set(["type","label","comment","subClassOf","subPropertyOf","domain","range","required","functional","inverseOf","transitive","symmetric","inverseFunctional"]);static VALID_NAME_PATTERN=/^[a-zA-Z][a-zA-Z0-9_-]*$/;static VALID_AUGMENTATION_PATTERN=/^[a-zA-Z][a-zA-Z0-9_-]*\.[a-zA-Z][a-zA-Z0-9_-]*$/;static VALID_PROPERTY_NAME_PATTERN=/^[a-zA-Z][a-zA-Z0-9_.]*$/;ruleName="ResourceNaming";validate(e){let r=[],t=e.metadata?.namespace_?.publisher==="kanonak.org"&&e.metadata?.namespace_?.package_?.startsWith("core-");for(let[o,s]of Object.entries(e.body)){let i=d.VALID_AUGMENTATION_PATTERN.test(o);if(!i&&!t&&d.RESERVED_WORDS.has(o.toLowerCase())){let n=new g;n.ruleType=this.ruleName,n.severity="Error",n.entityName=o,n.message=`Entity name '${o}' is a reserved word and cannot be used.`,n.suggestion="Choose a different name that doesn't conflict with Kanonak reserved words.",r.push(n);continue}if(!i&&!d.VALID_NAME_PATTERN.test(o)){let n;/^\d/.test(o)?n="Entity names must start with a letter, not a number.":o.includes(" ")?n="Entity names cannot contain spaces. Use camelCase or underscores instead.":n="Entity names must start with a letter and contain only letters, numbers, and underscores.";let l=new g;l.ruleType=this.ruleName,l.severity="Error",l.entityName=o,l.message=`Invalid entity name '${o}'. ${n}`,l.suggestion=n,r.push(l)}s&&typeof s=="object"&&!Array.isArray(s)&&this.validatePropertyNames(o,s,r)}return r}validatePropertyNames(e,r,t){for(let o of Object.keys(r))if(!d.VALID_PROPERTIES.has(o)&&!d.VALID_PROPERTY_NAME_PATTERN.test(o)){let s=new g;s.ruleType=this.ruleName,s.severity="Warning",s.entityName=e,s.propertyName=o,s.message=`Property name '${o}' in entity '${e}' doesn't follow naming conventions.`,s.suggestion="Property names should start with a letter and contain only letters, numbers, and underscores.",t.push(s)}}};var w=class d{static XSD_TYPES=new Set(["string","integer","int","long","short","byte","decimal","float","double","boolean","bool","datetime","date","time","duration","anyuri","anysimpletype","nonnegativeinteger","positiveinteger","negativeinteger","nonpositiveinteger","unsignedint","unsignedlong","unsignedshort","unsignedbyte","base64binary","hexbinary"]);ruleName="PropertyTypeSpecificity";validate(e){let r=[];if(e.metadata?.namespace_?.publisher==="kanonak.org"&&e.metadata?.namespace_?.package_?.startsWith("core-"))return r;let t=this.isPropertyDefinedAsClass(e);for(let[o,s]of Object.entries(e.body))if(s&&typeof s=="object"&&!Array.isArray(s)){let i=s,n=i.type;if(n){let l=[];if(Array.isArray(n))for(let a of n){let c=a?.toString();c&&c==="Property"&&!t&&l.push(c)}else{let a=n?.toString();a&&a==="Property"&&!t&&l.push(a)}for(let a of l){let c=this.getPropertyValue(i,"range"),p=this.determinePropertyType(c),y=new g;y.ruleType=this.ruleName,y.severity="Error",y.entityName=o,y.propertyName="type",y.actualValue=a,y.expectedValue=p,y.message=`Invalid property type '${a}'. Use '${p}' instead.`,y.suggestion="Properties should specify their type: DatatypeProperty for data values, ObjectProperty for relationships.",r.push(y)}}}return r}determinePropertyType(e){return!e||e.trim().length===0?"DatatypeProperty or ObjectProperty":d.XSD_TYPES.has(e.toLowerCase())?"DatatypeProperty":/^[A-Z]/.test(e)?"ObjectProperty":"DatatypeProperty or ObjectProperty"}getPropertyValue(e,r){let t=e[r];return t?t.toString():null}isPropertyDefinedAsClass(e){let r=e.body.Property;if(r&&typeof r=="object"&&!Array.isArray(r)){let o=r.type;if(o){let s=o.toString();return s==="Class"||s.endsWith(".Class")}}return!1}};var j=class{get ruleName(){return"SubjectKanonakTypeRequired"}validate(e){let r=[];for(let[t,o]of Object.entries(e.body)){if(typeof o!="object"||o===null||Array.isArray(o)||t.includes("."))continue;let s=o,i="type"in s,n=s.type?.toString().trim();if(!i||!n){let l=new g;l.ruleType=this.ruleName,l.severity="Error",l.entityName=t,l.propertyName="type",l.message=`Subject Kanonak '${t}' must have a 'type' property.`,l.suggestion=`Add a type statement like:
1
+ import{a as me,c as v}from"./chunk-VJT6YUWK.js";import{a as ae,c as pe}from"./chunk-H2LEQLVD.js";import{a as se}from"./chunk-7CUTGGH3.js";import{d as fe,f as de,g as ge}from"./chunk-N224PFBI.js";import{i as ue,l as J}from"./chunk-Q4DKP5DO.js";import{c as V}from"./chunk-FQHALFRR.js";import{a as P,b as D,c as ye}from"./chunk-64TVBQFR.js";import{c as G,k as le,l as ce}from"./chunk-W6T7MOKY.js";var A=class{isValid=!1;errors=[];warnings=[];get totalIssues(){return this.errors.length+this.warnings.length}};var R=(r=>(r.Warning="Warning",r.Error="Error",r))(R||{});var g=class{ruleType="";severity="Error";lineNumber;column;entityName;propertyName;propertyPath;message="";suggestion;actualValue;expectedValue;toString(){let e="";return this.lineNumber!==void 0&&(e+=`Line ${this.lineNumber}: `),this.entityName&&(e+=`[${this.entityName}] `),e+=this.message,e}};var ee=class d{resolvedDocuments=[];currentEntityPath;withPath(e){let r=new d;return r.resolvedDocuments=this.resolvedDocuments,r.currentEntityPath=e,r}};var re=class{constructor(e){this.underlying=e;this.repository=new oe(e)}underlying;repository;kanonaksPromise=null;importClosureCache=new Map;classDeclarationsCache=new Map;propertyNamesCache=new Map;allDocumentsPromise=null;getKanonaks(){return this.kanonaksPromise||(this.kanonaksPromise=new v().parseKanonaks(this.underlying)),this.kanonaksPromise}async getImportClosure(e){let r=this.importClosureCache.get(e);return r||(r=this.computeImportClosure(e),this.importClosureCache.set(e,r),r)}async getClassDeclarations(e){let r=this.classDeclarationsCache.get(e);return r||(r=this.computeClassDeclarations(e),this.classDeclarationsCache.set(e,r),r)}async getPropertyNames(e){let r=this.propertyNamesCache.get(e);return r||(r=this.computePropertyNames(e),this.propertyNamesCache.set(e,r),r)}getAllDocuments(){return this.allDocumentsPromise||(this.allDocumentsPromise=this.underlying.getAllDocumentsAsync()),this.allDocumentsPromise}async computeImportClosure(e){let r=new Set([e]),t=[e],o=await this.buildDocsByIdIndex();for(;t.length>0;){let s=t.shift(),i=o.get(s);if(i?.metadata.imports)for(let[n,l]of Object.entries(i.metadata.imports))for(let a of l){let c=await this.repository.getHighestCompatibleVersionAsync(n,a);if(!c)continue;let p=te(c);!p||r.has(p)||(r.add(p),t.push(p))}}return r}async buildDocsByIdIndex(){let e=await this.getAllDocuments(),r=new Map;for(let t of e){let o=te(t);o&&r.set(o,t)}return r}async computeClassDeclarations(e){let r=await this.findDocById(e),t=new Map;if(!r)return t;for(let[o,s]of Object.entries(r.body)){if(!he(s))continue;let i=s,n=be(i,"type");if(n==="Class"||n?.endsWith(".Class")){let l=De(i);t.set(o,l)}}return t}async computePropertyNames(e){let r=await this.findDocById(e),t=new Set;if(!r)return t;for(let[o,s]of Object.entries(r.body)){if(!he(s))continue;let n=be(s,"type");(n==="ObjectProperty"||n?.endsWith(".ObjectProperty")||n==="DatatypeProperty"||n?.endsWith(".DatatypeProperty")||n==="AnnotationProperty"||n?.endsWith(".AnnotationProperty")||n==="Property"||n?.endsWith(".Property"))&&t.add(o)}return t}async findDocById(e){let r=await this.getAllDocuments();for(let t of r)if(te(t)===e)return t}};function te(d){let e=d.metadata.namespace_;if(!(!e||!e.version))return`${e.publisher}/${e.package_}@${V(e.version)}`}function he(d){return typeof d=="object"&&d!==null&&!Array.isArray(d)}function be(d,e){if(e in d)return Re(d[e]);for(let r of Object.keys(d))if(r.endsWith(`.${e}`))return Re(d[r])}function Re(d){return Array.isArray(d)?d.length>0?String(d[0]):void 0:d==null?void 0:String(d)}function De(d){let e=d.subClassOf;if(e===void 0){for(let r of Object.keys(d))if(r.endsWith(".subClassOf")){e=d[r];break}}return P(e)}var oe=class{constructor(e){this.inner=e}inner;highestVersionCache=new Map;byNamespaceCache=new Map;getAllDocumentsAsync(){return this.inner.getAllDocumentsAsync()}getDocumentAsync(e){return this.inner.getDocumentAsync(e)}getDocumentsByNamespaceAsync(e,r){let t=`${e}/${r}`,o=this.byNamespaceCache.get(t);return o||(o=this.inner.getDocumentsByNamespaceAsync(e,r),this.byNamespaceCache.set(t,o),o)}getHighestCompatibleVersionAsync(e,r){let t=r.version,o=t?`${t.major}.${t.minor}.${t.patch}`:"",s=`${e}/${r.packageName}@${r.versionOperator}:${o}`,i=this.highestVersionCache.get(s);return i||(i=this.inner.getHighestCompatibleVersionAsync(e,r),this.highestVersionCache.set(s,i),i)}saveDocumentAsync(){throw new Error("CachingRepository is read-only during a validation pass.")}deleteDocumentAsync(){throw new Error("CachingRepository is read-only during a validation pass.")}clearNamespaceAsync(){throw new Error("CachingRepository is read-only during a validation pass.")}getAllDocumentReferencesAsync(){return this.inner.getAllDocumentReferencesAsync()}getDocumentContentAsync(e){return this.inner.getDocumentContentAsync(e)}getDocumentUriAsync(e){return this.inner.getDocumentUriAsync(e)}};var I=class d{static NAMESPACE_PREFIX_PATTERN=/^(rdfs|xsd|owl|rdf|dc|foaf|skos|dct|dcterms|geo|time|prov|schema|og|dbo):/i;ruleName="NamespacePrefix";validate(e){let r=[];for(let[t,o]of Object.entries(e.body))o&&typeof o=="object"&&!Array.isArray(o)&&this.validateEntity(t,o,r);return r}validateEntity(e,r,t){for(let[o,s]of Object.entries(r)){let i=s?.toString()??"";if(i&&d.NAMESPACE_PREFIX_PATTERN.test(i)){let n=this.getSuggestionForPrefixedValue(i),l=e.split(".")[0],a=new g;a.ruleType=this.ruleName,a.severity="Error",a.entityName=l,a.propertyName=e,a.actualValue=o,a.expectedValue=n,a.message=`Invalid namespace prefix '${i}'. Use '${n}' without prefix.`,a.suggestion="Kanonak YAML uses simple type names. Namespace resolution is handled through imports.",t.push(a)}s&&typeof s=="object"&&!Array.isArray(s)&&this.validateEntity(`${e}.${o}`,s,t)}}getSuggestionForPrefixedValue(e){let r=e.toLowerCase();if(r==="rdfs:class"||r==="owl:class")return"Class";if(r==="rdfs:property"||r==="rdf:property")return"DatatypeProperty or ObjectProperty";if(r.startsWith("xsd:"))return e.substring(4);let t=e.indexOf(":");return t>=0?e.substring(t+1):e}};var O=class d{static RESERVED_WORDS=new Set(["kanonak","imports","namespace","type","label","comment","subclassof","domain","range","required","functional"]);static VALID_PROPERTIES=new Set(["type","label","comment","subClassOf","subPropertyOf","domain","range","required","functional","inverseOf","transitive","symmetric","inverseFunctional"]);static VALID_NAME_PATTERN=/^[a-zA-Z][a-zA-Z0-9_-]*$/;static VALID_AUGMENTATION_PATTERN=/^[a-zA-Z][a-zA-Z0-9_-]*\.[a-zA-Z][a-zA-Z0-9_-]*$/;static VALID_PROPERTY_NAME_PATTERN=/^[a-zA-Z][a-zA-Z0-9_.]*$/;ruleName="ResourceNaming";validate(e){let r=[],t=e.metadata?.namespace_?.publisher==="kanonak.org"&&e.metadata?.namespace_?.package_?.startsWith("core-");for(let[o,s]of Object.entries(e.body)){let i=d.VALID_AUGMENTATION_PATTERN.test(o);if(!i&&!t&&d.RESERVED_WORDS.has(o.toLowerCase())){let n=new g;n.ruleType=this.ruleName,n.severity="Error",n.entityName=o,n.message=`Entity name '${o}' is a reserved word and cannot be used.`,n.suggestion="Choose a different name that doesn't conflict with Kanonak reserved words.",r.push(n);continue}if(!i&&!d.VALID_NAME_PATTERN.test(o)){let n;/^\d/.test(o)?n="Entity names must start with a letter, not a number.":o.includes(" ")?n="Entity names cannot contain spaces. Use camelCase or underscores instead.":n="Entity names must start with a letter and contain only letters, numbers, and underscores.";let l=new g;l.ruleType=this.ruleName,l.severity="Error",l.entityName=o,l.message=`Invalid entity name '${o}'. ${n}`,l.suggestion=n,r.push(l)}s&&typeof s=="object"&&!Array.isArray(s)&&this.validatePropertyNames(o,s,r)}return r}validatePropertyNames(e,r,t){for(let o of Object.keys(r))if(!d.VALID_PROPERTIES.has(o)&&!d.VALID_PROPERTY_NAME_PATTERN.test(o)){let s=new g;s.ruleType=this.ruleName,s.severity="Warning",s.entityName=e,s.propertyName=o,s.message=`Property name '${o}' in entity '${e}' doesn't follow naming conventions.`,s.suggestion="Property names should start with a letter and contain only letters, numbers, and underscores.",t.push(s)}}};var w=class d{static XSD_TYPES=new Set(["string","integer","int","long","short","byte","decimal","float","double","boolean","bool","datetime","date","time","duration","anyuri","anysimpletype","nonnegativeinteger","positiveinteger","negativeinteger","nonpositiveinteger","unsignedint","unsignedlong","unsignedshort","unsignedbyte","base64binary","hexbinary"]);ruleName="PropertyTypeSpecificity";validate(e){let r=[];if(e.metadata?.namespace_?.publisher==="kanonak.org"&&e.metadata?.namespace_?.package_?.startsWith("core-"))return r;let t=this.isPropertyDefinedAsClass(e);for(let[o,s]of Object.entries(e.body))if(s&&typeof s=="object"&&!Array.isArray(s)){let i=s,n=i.type;if(n){let l=[];if(Array.isArray(n))for(let a of n){let c=a?.toString();c&&c==="Property"&&!t&&l.push(c)}else{let a=n?.toString();a&&a==="Property"&&!t&&l.push(a)}for(let a of l){let c=this.getPropertyValue(i,"range"),p=this.determinePropertyType(c),y=new g;y.ruleType=this.ruleName,y.severity="Error",y.entityName=o,y.propertyName="type",y.actualValue=a,y.expectedValue=p,y.message=`Invalid property type '${a}'. Use '${p}' instead.`,y.suggestion="Properties should specify their type: DatatypeProperty for data values, ObjectProperty for relationships.",r.push(y)}}}return r}determinePropertyType(e){return!e||e.trim().length===0?"DatatypeProperty or ObjectProperty":d.XSD_TYPES.has(e.toLowerCase())?"DatatypeProperty":/^[A-Z]/.test(e)?"ObjectProperty":"DatatypeProperty or ObjectProperty"}getPropertyValue(e,r){let t=e[r];return t?t.toString():null}isPropertyDefinedAsClass(e){let r=e.body.Property;if(r&&typeof r=="object"&&!Array.isArray(r)){let o=r.type;if(o){let s=o.toString();return s==="Class"||s.endsWith(".Class")}}return!1}};var j=class{get ruleName(){return"SubjectKanonakTypeRequired"}validate(e){let r=[];for(let[t,o]of Object.entries(e.body)){if(typeof o!="object"||o===null||Array.isArray(o)||t.includes("."))continue;let s=o,i="type"in s,n=s.type?.toString().trim();if(!i||!n){let l=new g;l.ruleType=this.ruleName,l.severity="Error",l.entityName=t,l.propertyName="type",l.message=`Subject Kanonak '${t}' must have a 'type' property.`,l.suggestion=`Add a type statement like:
2
2
  type: Scene
3
3
 
4
4
  Only embedded objects can infer type from their parent property's range. Subject Kanonaks (top-level entities) must explicitly declare their type.`,l.expectedValue="A valid class name (Scene, Character, Story, etc.)",r.push(l)}}return r}};var E=class{get ruleName(){return"EmbeddedKanonakType"}async validateAsync(e,r){let t=[],o=new D(r),s=await this.buildPropertyRangeMap(e,o);for(let[i,n]of Object.entries(e.body))typeof n=="object"&&n!==null&&!Array.isArray(n)&&await this.checkEmbeddedTypes(i,n,void 0,s,o,e,t,0);return t}pickRange(e,r,t){if(e.length===0)return;if(e.length===1)return e[0].range;let o=r.indexOf(".");if(o>0){let s=r.substring(0,o),i=e.find(n=>n.declaringAlias===s);if(i)return i.range}if(t){let s=this.localName(t),i=e.find(n=>this.localName(n.domain)===s);if(i)return i.range}return e[0].range}async checkEmbeddedTypes(e,r,t,o,s,i,n,l){if(l>0){let c=r.type;if(c!=null){let p=await this.validateEmbeddedType(e,String(c),t,s,i);p&&n.push(p)}}let a=r.type!==void 0&&r.type!==null?String(r.type):void 0;for(let[c,p]of Object.entries(r)){let y=this.localName(c),m=o.get(y),f=(m!==void 0?this.pickRange(m,c,a):void 0)??t;if(typeof p=="object"&&p!==null)if(Array.isArray(p))for(let b=0;b<p.length;b++){let h=p[b];typeof h=="object"&&h!==null&&!Array.isArray(h)&&await this.checkEmbeddedTypes(`${e}.${c}[${b}]`,h,f,o,s,i,n,l+1)}else await this.checkEmbeddedTypes(`${e}.${c}`,p,f,o,s,i,n,l+1)}}async validateEmbeddedType(e,r,t,o,s){if(r.length===0||!t)return null;let i=this.localName(r),n=this.localName(t);if(n==="Resource"||n==="Class")return null;let l=e.split(".")[0];if(i===n){let c=new g;return c.ruleType=this.ruleName,c.severity="Warning",c.entityName=l,c.propertyName=e,c.actualValue=r,c.expectedValue=t,c.message=`Embedded object at '${e}' declares 'type: ${r}', which equals the parent property's range '${t}'. The declaration is redundant \u2014 the type is already inferred from the property's range.`,c.suggestion=`Remove the 'type: ${r}' line, or keep it if explicitness is preferred over concision.`,c}if(await o.isSubclassOfAsync(r,t,s)||(i!==r||n!==t)&&await o.isSubclassOfAsync(i,n,s))return null;let a=new g;return a.ruleType=this.ruleName,a.severity="Error",a.entityName=l,a.propertyName=e,a.actualValue=r,a.expectedValue=t,a.message=`Embedded object at '${e}' has 'type: ${r}', which is not a subclass of the parent property's range '${t}'.`,a.suggestion=`Either remove the 'type: ${r}' line (so the type is inferred from the property's range '${t}'), or add 'subClassOf: ${t}' to the '${r}' class definition so the relationship holds.`,a}localName(e){let r=e.lastIndexOf(".");return r<0||r===e.length-1?e:e.substring(r+1)}async buildPropertyRangeMap(e,r){let t=new Map,o=await r.buildEntityIndexAsync(e),s=new Map;for(let[i,n]of o){let l=n.entity.type;if(l==null)continue;let a=String(l),c=this.localName(a);if(!(c==="Property"||c==="DatatypeProperty"||c==="ObjectProperty"||c==="AnnotationProperty"))continue;let y=n.entity.range;if(y==null)continue;let m=String(y);if(m.length===0)continue;let u=n.entity.domain,f=u!=null?String(u):"",b=n.uri.toString(),h=s.get(b),k=i.includes(".");(!h||k&&!h.entityName.includes("."))&&s.set(b,{entityName:i,domain:f,range:m})}for(let i of s.values()){let n=this.localName(i.entityName),l=i.entityName.indexOf("."),a=l>0?i.entityName.substring(0,l):void 0,c=t.get(n)??[];c.push({domain:i.domain,range:i.range,declaringAlias:a}),t.set(n,c)}return t}};var $=class{ruleName="ImportExistence";async validateAsync(e,r){let t=[];if(!e.metadata?.imports)return t;let o=await r.getAllDocumentsAsync();for(let[s,i]of Object.entries(e.metadata.imports))for(let n of i)if(!await r.getHighestCompatibleVersionAsync(s,n)){let a=await this.determineImportErrorAsync(r,s,n,o),c=new g;c.ruleType=this.ruleName,c.severity="Error",c.message=a.message,c.suggestion=a.suggestion,c.entityName=`Import: ${s}/${n.packageName}`,c.actualValue=n.toString(),c.expectedValue=a.expectedValue,t.push(c)}return t}async determineImportErrorAsync(e,r,t,o){let s=await e.getDocumentsByNamespaceAsync(r,t.packageName);if(s.length===0){let a=o.filter(m=>m.metadata.namespace_?.publisher===r).map(m=>m.metadata.namespace_.package_).filter((m,u,f)=>f.indexOf(m)===u),c=this.findSimilarPackages(t.packageName,a),p=`Import '${r}/${t.package_}' not found - package does not exist`,y=c.length>0?`Did you mean: ${c.slice(0,3).join(", ")}?`:a.length>0?`Available packages in ${r}: ${a.slice(0,5).join(", ")}`:`No packages found for publisher '${r}'. Verify the publisher name is correct.`;return{message:p,suggestion:y,expectedValue:"Existing package"}}let n=s.filter(a=>a.metadata.namespace_?.version).map(a=>a.metadata.namespace_.version.toString()).sort().join(", "),l=this.getAcceptableVersionRange(t);return{message:`Import '${r}/${t.toString()}' version mismatch - no compatible version found`,suggestion:`Available versions: ${n}. Required: ${l}`,expectedValue:l}}getAcceptableVersionRange(e){switch(e.versionOperator){case 0:return`exactly ${e.version.major}.${e.version.minor}.${e.version.patch}`;case 1:return`${e.version.major}.${e.version.minor}.${e.version.patch} to ${e.version.major}.${e.version.minor}.x`;case 2:return e.version.major===0?`0.${e.version.minor}.x`:`${e.version.major}.x.x`;case 3:return`any version >= ${e.version.major}.${e.version.minor}.${e.version.patch}`;default:return e.toString()}}findSimilarPackages(e,r){if(r.length===0)return[];let t=r.filter(i=>i.toLowerCase().includes(e.toLowerCase())||e.toLowerCase().includes(i.toLowerCase()));if(t.length>0)return t.sort((i,n)=>i.length-n.length);let o=r.map(i=>({package:i,distance:this.levenshteinDistance(e.toLowerCase(),i.toLowerCase())})).sort((i,n)=>i.distance-n.distance),s=Math.max(3,Math.floor(e.length*.4));return o.filter(i=>i.distance<=s).map(i=>i.package)}levenshteinDistance(e,r){if(!e||e.length===0)return r?.length??0;if(!r||r.length===0)return e.length;let t=e.length,o=r.length,s=Array(t+1).fill(null).map(()=>Array(o+1).fill(0));for(let i=0;i<=t;i++)s[i][0]=i;for(let i=0;i<=o;i++)s[0][i]=i;for(let i=1;i<=t;i++)for(let n=1;n<=o;n++){let l=e[i-1]===r[n-1]?0:1;s[i][n]=Math.min(Math.min(s[i-1][n]+1,s[i][n-1]+1),s[i-1][n-1]+l)}return s[t][o]}};var S=class{ruleName="UnresolvedReference";async validateAsync(e,r){let t=[],o=new D(r),s=await o.buildEntityIndexAsync(e),i=new Set;for(let[n,l]of s.entries()){let a=l.entity.type;if(a){let c=a.toString();(c==="ObjectProperty"||c.endsWith(".ObjectProperty"))&&i.add(n)}}for(let[n,l]of Object.entries(e.body)){if(!l||typeof l!="object"||Array.isArray(l))continue;let a=l,c=this.getPropertyValue(a,"type");if(!(!c||c==="Class"||c.endsWith("Property")||c==="AnnotationProperty"))for(let[p,y]of Object.entries(a))p==="type"||p==="label"||p==="comment"||!(i.has(p)||Array.from(i).some(u=>u.endsWith(`.${p}`)))||await this.validateReferenceValue(n,p,y,e,o,t)}return t}async validateReferenceValue(e,r,t,o,s,i){if(t!=null){if(typeof t=="string")await s.resolveEntityAsync(t,o)||i.push(this.createUnresolvedReferenceError(e,r,t));else if(Array.isArray(t))for(let n=0;n<t.length;n++){let l=t[n];typeof l=="string"&&(await s.resolveEntityAsync(l,o)||i.push(this.createUnresolvedReferenceError(e,`${r}[${n}]`,l)))}}}createUnresolvedReferenceError(e,r,t){let o=`The entity '${t}' cannot be found in the current document or any imported namespaces.
@@ -1,2 +1,2 @@
1
- import{b as V}from"./chunk-YYFIJNSP.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{b as V}from"./chunk-VJT6YUWK.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 +1 @@
1
- import{c as _}from"./chunk-YYFIJNSP.js";import{a as j,b as x}from"./chunk-H2LEQLVD.js";import{d as l,e as u,f as b,g as $,h as s,j as h}from"./chunk-64TVBQFR.js";import{c as S,d as O,g as I,h as T,i as g,j as v,k as L,l as q}from"./chunk-W6T7MOKY.js";var d=class{all=new Set;byPIdx=new Map;bySPIdx=new Map;byPOIdx=new Map;tripleList=[];add(e){let t=b(e);return this.all.has(t)?!1:(this.all.add(t),this.tripleList.push(e),P(this.byPIdx,e.p,e),P(this.bySPIdx,`${e.s}|${e.p}`,e),e.o.kind==="uri"&&P(this.byPOIdx,`${e.p}|${e.o.key}`,e),!0)}has(e){return this.all.has(b(e))}size(){return this.tripleList.length}snapshot(){return this.tripleList.slice()}byPredicate(e){let t=this.byPIdx.get(e);return t?t.slice():[]}bySubjectPredicate(e,t){let r=this.bySPIdx.get(`${e}|${t}`);return r?r.slice():[]}byPredicateObject(e,t){let r=this.byPOIdx.get(`${e}|${t}`);return r?r.slice():[]}subjectsWithPredicateObject(e,t){let r=this.byPOIdx.get(`${e}|${t}`);if(!r)return[];let n=new Set;for(let a of r)n.add(a.s);return Array.from(n)}uriObjectsOf(e,t){let r=this.bySPIdx.get(`${e}|${t}`);if(!r)return[];let n=new Set;for(let a of r)a.o.kind==="uri"&&n.add(a.o.key);return Array.from(n)}hasUri(e,t,r){return this.all.has(`${e}|${t}|u:${r}`)}hasTriple(e,t,r){return this.all.has(`${e}|${t}|${$(r)}`)}};function P(o,e,t){let r=o.get(e);r?r.push(t):o.set(e,[t])}var w={name:"rdfs2",apply(o,e){let t=!1;for(let r of o.byPredicate(e.domain)){if(r.o.kind!=="uri")continue;let n=r.s,a=r.o.key;for(let i of o.byPredicate(n))o.add(s(i.s,e.type,a))&&(t=!0)}return t}},C={name:"rdfs3",apply(o,e){let t=!1;for(let r of o.byPredicate(e.range)){if(r.o.kind!=="uri")continue;let n=r.s,a=r.o.key;for(let i of o.byPredicate(n))i.o.kind==="uri"&&o.add(s(i.o.key,e.type,a))&&(t=!0)}return t}},A={name:"rdfs5",apply(o,e){let t=!1;for(let r of o.byPredicate(e.subPropertyOf)){if(r.o.kind!=="uri")continue;let n=r.s,a=r.o.key;for(let i of o.bySubjectPredicate(a,e.subPropertyOf))i.o.kind==="uri"&&o.add(s(n,e.subPropertyOf,i.o.key))&&(t=!0)}return t}},V={name:"rdfs7",apply(o,e){let t=!1;for(let r of o.byPredicate(e.subPropertyOf)){if(r.o.kind!=="uri")continue;let n=r.s,a=r.o.key;if(n!==a)for(let i of o.byPredicate(n)){let f={s:i.s,p:a,o:i.o};o.add(f)&&(t=!0)}}return t}},W={name:"rdfs9",apply(o,e){let t=!1;for(let r of o.byPredicate(e.subClassOf)){if(r.o.kind!=="uri")continue;let n=r.s,a=r.o.key;if(n!==a)for(let i of o.byPredicateObject(e.type,n))o.add(s(i.s,e.type,a))&&(t=!0)}return t}},F={name:"rdfs11",apply(o,e){let t=!1;for(let r of o.byPredicate(e.subClassOf)){if(r.o.kind!=="uri")continue;let n=r.s,a=r.o.key;for(let i of o.bySubjectPredicate(a,e.subClassOf))i.o.kind==="uri"&&o.add(s(n,e.subClassOf,i.o.key))&&(t=!0)}return t}},k=[w,C,A,V,W,F];var N={name:"prp-trp",apply(o,e){let t=!1,r=o.subjectsWithPredicateObject(e.type,e.transitiveProperty);for(let n of r){let a=o.byPredicate(n);for(let i of a){if(i.o.kind!=="uri")continue;let f=i.o.key;for(let c of o.bySubjectPredicate(f,n))c.o.kind==="uri"&&i.s!==c.o.key&&o.add(s(i.s,n,c.o.key))&&(t=!0)}}return t}},D={name:"prp-symp",apply(o,e){let t=!1,r=o.subjectsWithPredicateObject(e.type,e.symmetricProperty);for(let n of r)for(let a of o.byPredicate(n))a.o.kind==="uri"&&o.add(s(a.o.key,n,a.s))&&(t=!0);return t}},z={name:"prp-inv1",apply(o,e){let t=!1;for(let r of o.byPredicate(e.inverseOf)){if(r.o.kind!=="uri")continue;let n=r.s,a=r.o.key;for(let i of o.byPredicate(n))i.o.kind==="uri"&&o.add(s(i.o.key,a,i.s))&&(t=!0)}return t}},B={name:"prp-inv2",apply(o,e){let t=!1;for(let r of o.byPredicate(e.inverseOf)){if(r.o.kind!=="uri")continue;let n=r.s,a=r.o.key;for(let i of o.byPredicate(a))i.o.kind==="uri"&&o.add(s(i.o.key,n,i.s))&&(t=!0)}return t}},M={name:"prp-eqp1",apply(o,e){let t=!1;for(let r of o.byPredicate(e.equivalentProperty)){if(r.o.kind!=="uri")continue;let n=r.s,a=r.o.key;if(n!==a)for(let i of o.byPredicate(n))o.add({s:i.s,p:a,o:i.o})&&(t=!0)}return t}},G={name:"prp-eqp2",apply(o,e){let t=!1;for(let r of o.byPredicate(e.equivalentProperty)){if(r.o.kind!=="uri")continue;let n=r.s,a=r.o.key;if(n!==a)for(let i of o.byPredicate(a))o.add({s:i.s,p:n,o:i.o})&&(t=!0)}return t}},H={name:"cax-eqc1",apply(o,e){let t=!1;for(let r of o.byPredicate(e.equivalentClass)){if(r.o.kind!=="uri")continue;let n=r.s,a=r.o.key;if(n!==a)for(let i of o.byPredicateObject(e.type,n))o.add(s(i.s,e.type,a))&&(t=!0)}return t}},J={name:"cax-eqc2",apply(o,e){let t=!1;for(let r of o.byPredicate(e.equivalentClass)){if(r.o.kind!=="uri")continue;let n=r.s,a=r.o.key;if(n!==a)for(let i of o.byPredicateObject(e.type,a))o.add(s(i.s,e.type,n))&&(t=!0)}return t}},Q={name:"eq-rep-s",apply(o,e){let t=!1;for(let r of o.byPredicate(e.sameAs)){if(r.o.kind!=="uri")continue;let n=r.s,a=r.o.key;if(n!==a){for(let i of o.snapshot())i.s===n&&o.add({s:a,p:i.p,o:i.o})&&(t=!0);for(let i of o.snapshot())i.s===a&&o.add({s:n,p:i.p,o:i.o})&&(t=!0)}}return t}},X={name:"eq-rep-o",apply(o,e){let t=!1;for(let r of o.byPredicate(e.sameAs)){if(r.o.kind!=="uri")continue;let n=r.s,a=r.o.key;if(n!==a)for(let i of o.snapshot())i.o.kind==="uri"&&(i.o.key===n?o.add(s(i.s,i.p,a))&&(t=!0):i.o.key===a&&o.add(s(i.s,i.p,n))&&(t=!0))}return t}},K=[N,D,z,B,M,G,H,J,Q,X];var y=class{constructor(e,t){this.store=e;this.vocabulary=t}store;vocabulary;getInstancesOfClass(e){let t=p(e);return this.store.subjectsWithPredicateObject(this.vocabulary.type,t)}getSubclasses(e){let t=p(e);return this.store.subjectsWithPredicateObject(this.vocabulary.subClassOf,t).filter(n=>n!==t)}getSuperclasses(e){let t=p(e);return this.store.uriObjectsOf(t,this.vocabulary.subClassOf).filter(r=>r!==t)}getTypesOfIndividual(e){return this.store.uriObjectsOf(p(e),this.vocabulary.type)}isInstanceOf(e,t){return this.store.hasUri(p(e),this.vocabulary.type,p(t))}triples(){return this.store.snapshot()}size(){return this.store.size()}};function p(o){return typeof o=="string"?o:u(o.publisher,o.package_,o.name)}var R=class{vocabulary;profile;maxIterations;constructor(e={}){this.vocabulary=e.vocabulary??new h,this.profile=e.profile??"owl-rl-classification",this.maxIterations=e.maxIterations??100}async reason(e){let t=new d,n=await new _().parseKanonaks(e),a=new U;for(let c of n)if(c instanceof S){let m=Y(c);if(!m)continue;for(let E of c.statement)this.emitStatement(m,E,t,a)}let i=[...k];this.profile==="owl-rl-classification"&&i.push(...K);let f=0;for(;f<this.maxIterations;){let c=!1;for(let m of i)m.apply(t,this.vocabulary)&&(c=!0);if(!c)break;f++}return new y(t,this.vocabulary)}emitStatement(e,t,r,n){let a=Z(t);if(a){if(t instanceof I){r.add({s:e,p:a,o:{kind:"literal",lexical:t.object,datatype:"string"}});return}if(t instanceof T){r.add({s:e,p:a,o:{kind:"literal",lexical:String(t.object),datatype:"number"}});return}if(t instanceof g){r.add({s:e,p:a,o:{kind:"literal",lexical:String(t.object),datatype:"boolean"}});return}if(t instanceof v){let i=l(t.object.subject);r.add(s(e,a,i));return}if(t instanceof L){let i=n.next();r.add({s:e,p:a,o:{kind:"blank",id:i}}),this.emitEmbedded(i,t.object,r,n);return}if(t instanceof q){for(let i of t.object??[])this.emitListItem(e,a,i,r,n);return}}}emitListItem(e,t,r,n,a){if(r instanceof O)n.add(s(e,t,l(r.subject)));else if(r instanceof j){let i=a.next();n.add({s:e,p:t,o:{kind:"blank",id:i}}),this.emitEmbedded(i,r,n,a)}else if(r instanceof x){let i=typeof r.value=="number"?"number":typeof r.value=="boolean"?"boolean":"string";n.add({s:e,p:t,o:{kind:"literal",lexical:String(r.value),datatype:i}})}}emitEmbedded(e,t,r,n){let a=`_:${e}`;for(let i of t.statement)this.emitStatement(a,i,r,n)}},U=class{counter=0;next(){return`b${this.counter++}`}};function Y(o){let e=o.namespace??"",t=e.indexOf("@"),r=t===-1?e:e.substring(0,t),n=r.indexOf("/");if(n===-1)return null;let a=r.substring(0,n),i=r.substring(n+1);return!a||!i||!o.name?null:u(a,i,o.name)}function Z(o){let e=o.predicate;return e?.subject?l(e.subject):null}export{d as a,k as b,K as c,y as d,R as e};
1
+ import{c as _}from"./chunk-VJT6YUWK.js";import{a as j,b as x}from"./chunk-H2LEQLVD.js";import{d as l,e as u,f as b,g as $,h as s,j as h}from"./chunk-64TVBQFR.js";import{c as S,d as O,g as I,h as T,i as g,j as v,k as L,l as q}from"./chunk-W6T7MOKY.js";var d=class{all=new Set;byPIdx=new Map;bySPIdx=new Map;byPOIdx=new Map;tripleList=[];add(e){let t=b(e);return this.all.has(t)?!1:(this.all.add(t),this.tripleList.push(e),P(this.byPIdx,e.p,e),P(this.bySPIdx,`${e.s}|${e.p}`,e),e.o.kind==="uri"&&P(this.byPOIdx,`${e.p}|${e.o.key}`,e),!0)}has(e){return this.all.has(b(e))}size(){return this.tripleList.length}snapshot(){return this.tripleList.slice()}byPredicate(e){let t=this.byPIdx.get(e);return t?t.slice():[]}bySubjectPredicate(e,t){let r=this.bySPIdx.get(`${e}|${t}`);return r?r.slice():[]}byPredicateObject(e,t){let r=this.byPOIdx.get(`${e}|${t}`);return r?r.slice():[]}subjectsWithPredicateObject(e,t){let r=this.byPOIdx.get(`${e}|${t}`);if(!r)return[];let n=new Set;for(let a of r)n.add(a.s);return Array.from(n)}uriObjectsOf(e,t){let r=this.bySPIdx.get(`${e}|${t}`);if(!r)return[];let n=new Set;for(let a of r)a.o.kind==="uri"&&n.add(a.o.key);return Array.from(n)}hasUri(e,t,r){return this.all.has(`${e}|${t}|u:${r}`)}hasTriple(e,t,r){return this.all.has(`${e}|${t}|${$(r)}`)}};function P(o,e,t){let r=o.get(e);r?r.push(t):o.set(e,[t])}var w={name:"rdfs2",apply(o,e){let t=!1;for(let r of o.byPredicate(e.domain)){if(r.o.kind!=="uri")continue;let n=r.s,a=r.o.key;for(let i of o.byPredicate(n))o.add(s(i.s,e.type,a))&&(t=!0)}return t}},C={name:"rdfs3",apply(o,e){let t=!1;for(let r of o.byPredicate(e.range)){if(r.o.kind!=="uri")continue;let n=r.s,a=r.o.key;for(let i of o.byPredicate(n))i.o.kind==="uri"&&o.add(s(i.o.key,e.type,a))&&(t=!0)}return t}},A={name:"rdfs5",apply(o,e){let t=!1;for(let r of o.byPredicate(e.subPropertyOf)){if(r.o.kind!=="uri")continue;let n=r.s,a=r.o.key;for(let i of o.bySubjectPredicate(a,e.subPropertyOf))i.o.kind==="uri"&&o.add(s(n,e.subPropertyOf,i.o.key))&&(t=!0)}return t}},V={name:"rdfs7",apply(o,e){let t=!1;for(let r of o.byPredicate(e.subPropertyOf)){if(r.o.kind!=="uri")continue;let n=r.s,a=r.o.key;if(n!==a)for(let i of o.byPredicate(n)){let f={s:i.s,p:a,o:i.o};o.add(f)&&(t=!0)}}return t}},W={name:"rdfs9",apply(o,e){let t=!1;for(let r of o.byPredicate(e.subClassOf)){if(r.o.kind!=="uri")continue;let n=r.s,a=r.o.key;if(n!==a)for(let i of o.byPredicateObject(e.type,n))o.add(s(i.s,e.type,a))&&(t=!0)}return t}},F={name:"rdfs11",apply(o,e){let t=!1;for(let r of o.byPredicate(e.subClassOf)){if(r.o.kind!=="uri")continue;let n=r.s,a=r.o.key;for(let i of o.bySubjectPredicate(a,e.subClassOf))i.o.kind==="uri"&&o.add(s(n,e.subClassOf,i.o.key))&&(t=!0)}return t}},k=[w,C,A,V,W,F];var N={name:"prp-trp",apply(o,e){let t=!1,r=o.subjectsWithPredicateObject(e.type,e.transitiveProperty);for(let n of r){let a=o.byPredicate(n);for(let i of a){if(i.o.kind!=="uri")continue;let f=i.o.key;for(let c of o.bySubjectPredicate(f,n))c.o.kind==="uri"&&i.s!==c.o.key&&o.add(s(i.s,n,c.o.key))&&(t=!0)}}return t}},D={name:"prp-symp",apply(o,e){let t=!1,r=o.subjectsWithPredicateObject(e.type,e.symmetricProperty);for(let n of r)for(let a of o.byPredicate(n))a.o.kind==="uri"&&o.add(s(a.o.key,n,a.s))&&(t=!0);return t}},z={name:"prp-inv1",apply(o,e){let t=!1;for(let r of o.byPredicate(e.inverseOf)){if(r.o.kind!=="uri")continue;let n=r.s,a=r.o.key;for(let i of o.byPredicate(n))i.o.kind==="uri"&&o.add(s(i.o.key,a,i.s))&&(t=!0)}return t}},B={name:"prp-inv2",apply(o,e){let t=!1;for(let r of o.byPredicate(e.inverseOf)){if(r.o.kind!=="uri")continue;let n=r.s,a=r.o.key;for(let i of o.byPredicate(a))i.o.kind==="uri"&&o.add(s(i.o.key,n,i.s))&&(t=!0)}return t}},M={name:"prp-eqp1",apply(o,e){let t=!1;for(let r of o.byPredicate(e.equivalentProperty)){if(r.o.kind!=="uri")continue;let n=r.s,a=r.o.key;if(n!==a)for(let i of o.byPredicate(n))o.add({s:i.s,p:a,o:i.o})&&(t=!0)}return t}},G={name:"prp-eqp2",apply(o,e){let t=!1;for(let r of o.byPredicate(e.equivalentProperty)){if(r.o.kind!=="uri")continue;let n=r.s,a=r.o.key;if(n!==a)for(let i of o.byPredicate(a))o.add({s:i.s,p:n,o:i.o})&&(t=!0)}return t}},H={name:"cax-eqc1",apply(o,e){let t=!1;for(let r of o.byPredicate(e.equivalentClass)){if(r.o.kind!=="uri")continue;let n=r.s,a=r.o.key;if(n!==a)for(let i of o.byPredicateObject(e.type,n))o.add(s(i.s,e.type,a))&&(t=!0)}return t}},J={name:"cax-eqc2",apply(o,e){let t=!1;for(let r of o.byPredicate(e.equivalentClass)){if(r.o.kind!=="uri")continue;let n=r.s,a=r.o.key;if(n!==a)for(let i of o.byPredicateObject(e.type,a))o.add(s(i.s,e.type,n))&&(t=!0)}return t}},Q={name:"eq-rep-s",apply(o,e){let t=!1;for(let r of o.byPredicate(e.sameAs)){if(r.o.kind!=="uri")continue;let n=r.s,a=r.o.key;if(n!==a){for(let i of o.snapshot())i.s===n&&o.add({s:a,p:i.p,o:i.o})&&(t=!0);for(let i of o.snapshot())i.s===a&&o.add({s:n,p:i.p,o:i.o})&&(t=!0)}}return t}},X={name:"eq-rep-o",apply(o,e){let t=!1;for(let r of o.byPredicate(e.sameAs)){if(r.o.kind!=="uri")continue;let n=r.s,a=r.o.key;if(n!==a)for(let i of o.snapshot())i.o.kind==="uri"&&(i.o.key===n?o.add(s(i.s,i.p,a))&&(t=!0):i.o.key===a&&o.add(s(i.s,i.p,n))&&(t=!0))}return t}},K=[N,D,z,B,M,G,H,J,Q,X];var y=class{constructor(e,t){this.store=e;this.vocabulary=t}store;vocabulary;getInstancesOfClass(e){let t=p(e);return this.store.subjectsWithPredicateObject(this.vocabulary.type,t)}getSubclasses(e){let t=p(e);return this.store.subjectsWithPredicateObject(this.vocabulary.subClassOf,t).filter(n=>n!==t)}getSuperclasses(e){let t=p(e);return this.store.uriObjectsOf(t,this.vocabulary.subClassOf).filter(r=>r!==t)}getTypesOfIndividual(e){return this.store.uriObjectsOf(p(e),this.vocabulary.type)}isInstanceOf(e,t){return this.store.hasUri(p(e),this.vocabulary.type,p(t))}triples(){return this.store.snapshot()}size(){return this.store.size()}};function p(o){return typeof o=="string"?o:u(o.publisher,o.package_,o.name)}var R=class{vocabulary;profile;maxIterations;constructor(e={}){this.vocabulary=e.vocabulary??new h,this.profile=e.profile??"owl-rl-classification",this.maxIterations=e.maxIterations??100}async reason(e){let t=new d,n=await new _().parseKanonaks(e),a=new U;for(let c of n)if(c instanceof S){let m=Y(c);if(!m)continue;for(let E of c.statement)this.emitStatement(m,E,t,a)}let i=[...k];this.profile==="owl-rl-classification"&&i.push(...K);let f=0;for(;f<this.maxIterations;){let c=!1;for(let m of i)m.apply(t,this.vocabulary)&&(c=!0);if(!c)break;f++}return new y(t,this.vocabulary)}emitStatement(e,t,r,n){let a=Z(t);if(a){if(t instanceof I){r.add({s:e,p:a,o:{kind:"literal",lexical:t.object,datatype:"string"}});return}if(t instanceof T){r.add({s:e,p:a,o:{kind:"literal",lexical:String(t.object),datatype:"number"}});return}if(t instanceof g){r.add({s:e,p:a,o:{kind:"literal",lexical:String(t.object),datatype:"boolean"}});return}if(t instanceof v){let i=l(t.object.subject);r.add(s(e,a,i));return}if(t instanceof L){let i=n.next();r.add({s:e,p:a,o:{kind:"blank",id:i}}),this.emitEmbedded(i,t.object,r,n);return}if(t instanceof q){for(let i of t.object??[])this.emitListItem(e,a,i,r,n);return}}}emitListItem(e,t,r,n,a){if(r instanceof O)n.add(s(e,t,l(r.subject)));else if(r instanceof j){let i=a.next();n.add({s:e,p:t,o:{kind:"blank",id:i}}),this.emitEmbedded(i,r,n,a)}else if(r instanceof x){let i=typeof r.value=="number"?"number":typeof r.value=="boolean"?"boolean":"string";n.add({s:e,p:t,o:{kind:"literal",lexical:String(r.value),datatype:i}})}}emitEmbedded(e,t,r,n){let a=`_:${e}`;for(let i of t.statement)this.emitStatement(a,i,r,n)}},U=class{counter=0;next(){return`b${this.counter++}`}};function Y(o){let e=o.namespace??"",t=e.indexOf("@"),r=t===-1?e:e.substring(0,t),n=r.indexOf("/");if(n===-1)return null;let a=r.substring(0,n),i=r.substring(n+1);return!a||!i||!o.name?null:u(a,i,o.name)}function Z(o){let e=o.predicate;return e?.subject?l(e.subject):null}export{d as a,k as b,K as c,y as d,R as e};
@@ -0,0 +1 @@
1
+ import{a as j,b as P,c as T}from"./chunk-H2LEQLVD.js";import{a as x}from"./chunk-7CUTGGH3.js";import{b as L,c as N,i as O}from"./chunk-64TVBQFR.js";import{c as h,d as g,g as K,h as I,i as D,j as R,k as S,l as w}from"./chunk-W6T7MOKY.js";var V=/\[\[([^\[\]\n]+)\]\]/g,C=/\[\[/g,$=/```[\s\S]*?```|`[^`\n]*`/g;function B(p){let e=[];for(let t of p.matchAll($))e.push([t.index,t.index+t[0].length]);return e}function U(p){if(!p||!p.includes("[["))return[];let e=B(p),t=o=>e.some(([n,s])=>o>=n&&o<s),r=new Set(A(p).map(o=>o.startOffset)),a=[];for(let o of p.matchAll(C)){let n=o.index;if(t(n)||r.has(n))continue;let s=p.slice(n,n+48).replace(/\s+/g," ").trim();a.push({startOffset:n,snippet:s})}return a}function A(p){if(!p||!p.includes("[["))return[];let e=[];for(let a of p.matchAll($))e.push([a.index,a.index+a[0].length]);let t=a=>e.some(([o,n])=>a>=o&&a<n),r=[];for(let a of p.matchAll(V)){let o=a.index;if(t(o))continue;let n=a[1],s=n.indexOf("|"),c=(s===-1?n:n.slice(0,s)).trim();if(c.length===0)continue;let m=s===-1?"":n.slice(s+1).trim(),f={reference:c,startOffset:o,endOffset:o+a[0].length};m.length>0&&(f.displayText=m),r.push(f)}return r}var _=class{constructor(e){}async parseKanonaks(e){let t=[],r=await e.getAllDocumentsAsync(),a=new L(e),o=new N(a);for(let i of r){let u=i.metadata.namespace_?.toString()??"";for(let[y,l]of Object.entries(i.body)){let k=new h,d=this.resolveCanonicalEntity(y,i,u);k.namespace=d.namespace,k.name=d.name,k.statement=[];let b=await this.parseStatements(l,i,a,o,e);k.statement.push(...b),t.push(k)}}let n=new Map,s=new Map,c=[];for(let i of t)if(i instanceof h){let u=`${i.namespace}/${i.name}`,y=n.get(u);if(y){let l=s.get(u);for(let k of i.statement){let d=v(k);l.has(d)||(l.add(d),y.statement.push(k))}}else{let l=new Set,k=[];for(let d of i.statement){let b=v(d);l.has(b)||(l.add(b),k.push(d))}i.statement=k,s.set(u,l),n.set(u,i),c.push(i)}}else c.push(i);let m=new Set;for(let i of c)if(i instanceof h){let u=i.namespace||"",y=u.indexOf("/"),l=y>=0?u.slice(0,y):"",k=y>=0?u.slice(y+1):"",d=k.indexOf("@"),b=d>=0?k.slice(0,d):k;m.add(`${l}/${b}/${i.name}`)}let f=i=>m.has(`${i.publisher}/${i.package_}/${i.name}`);for(let i of c)i instanceof h&&this.canonicalizeStatementBuiltins(i.statement,f);return c}canonicalizeStatementBuiltins(e,t){for(let r of e){let a=r.predicate?.subject;if(O(a,t),r instanceof R)r.object instanceof g&&O(r.object.subject,t);else if(r instanceof S)r.object&&this.canonicalizeStatementBuiltins(r.object.statement,t);else if(r instanceof w)for(let o of r.object??[])o instanceof g?O(o.subject,t):o instanceof j&&this.canonicalizeStatementBuiltins(o.statement,t)}}resolveCanonicalEntity(e,t,r){if(!e.includes(".")||!t.metadata?.imports)return{namespace:r,name:e};let a=e.indexOf("."),o=e.substring(0,a),n=e.substring(a+1);for(let[s,c]of Object.entries(t.metadata.imports))for(let m of c)if((m.alias??m.packageName)===o){let i=m.version;return{namespace:`${s}/${m.packageName}@${i.major}.${i.minor}.${i.patch}`,name:n}}return{namespace:r,name:e}}async parseStatements(e,t,r,a,o){let n=[];if(typeof e!="object"||e===null||Array.isArray(e))return n;for(let[s,c]of Object.entries(e))try{let m=await this.getPropertyMetadata(s,t,r,o,a);if(!m)continue;let f=await this.parsePropertyValue(s,c,m,t,r,a);f&&n.push(f)}catch(m){console.error(`Error parsing property ${s}:`,m)}return n}async getPropertyMetadata(e,t,r,a,o){let n=await r.resolveEntityAsync(e,t);if(!n)return;let s=n.entity,c=s.type?.toString()??"",m=c.includes(".")?c.substring(c.lastIndexOf(".")+1):c;if(!new Set(["Property","DatatypeProperty","ObjectProperty","AnnotationProperty"]).has(m))return;let i=o.getPropertyTypeClassification(c),u=s.range?.toString(),y;if(i==="ObjectProperty")y="ObjectProperty";else if(i==="DatatypeProperty")y="DatatypeProperty";else{let d=u&&u.includes(".")?u.substring(u.lastIndexOf(".")+1):u??"";(u?o.isKnownXsdDatatypeName(u):!1)||d==="Literal"?y="DatatypeProperty":y="ObjectProperty"}let l;if(u){let d=t;if(n.isImported&&n.definedInNamespace&&typeof a.getDocumentAsync=="function"){let M=await a.getDocumentAsync(n.definedInNamespace);M&&(d=M)}l=(await r.resolveEntityAsync(u,d))?.uri}return{propertyUri:n.uri.toString(),propertyType:y,range:u,rangeUri:l,isImported:n.isImported,definedInNamespace:n.definedInNamespace}}async parsePropertyValue(e,t,r,a,o,n){let s=r.propertyUri;if(t!=null){if(Array.isArray(t))return this.parseListValue(s,t,r,a,o,n);if(r.propertyType==="DatatypeProperty")return this.parseDatatypeValue(s,t,r,a,o,n);if(r.propertyType==="ObjectProperty")return this.parseObjectValue(s,t,r,a,o,n)}}async parseDatatypeValue(e,t,r,a,o,n){if(t instanceof Date)return K.parse(e,t.toISOString());if(typeof t=="string")return n.isSubstitutableDatatype(r.rangeUri)?await this.parseSubstitutableValue(e,t,a,o):K.parse(e,t);if(typeof t=="number")return I.parse(e,t);if(typeof t=="boolean"){let s=new D;return s.predicate=g.parse(e),s.object=t,s}}async parseSubstitutableValue(e,t,r,a){let o=new T;o.predicate=g.parse(e),o.object=t;for(let n of A(t)){let s=await a.resolveEntityAsync(n.reference,r),c;s&&(c=new g,c.subject=s.uri);let m={reference:n.reference,startOffset:n.startOffset,endOffset:n.endOffset};n.displayText!==void 0&&(m.displayText=n.displayText),c!==void 0&&(m.target=c),o.links.push(m)}return o}async parseObjectValue(e,t,r,a,o,n){if(typeof t=="string"){let s=await this.resolveReference(t,a,o);if(!s)return;let c=new R;return c.predicate=g.parse(e),c.object=s,c}if(typeof t=="object"&&!Array.isArray(t)){let s=new j;if(s.statement=await this.parseStatements(t,a,o,n,{}),s.statement.length>0){let f=new S;return f.predicate=g.parse(e),f.object=s,f}let c=[];for(let[f,i]of Object.entries(t))if(typeof i=="object"&&i!==null&&!Array.isArray(i)){let u=new j;u.name=f,u.statement=await this.parseStatements(i,a,o,n,{}),c.push(u)}else if(typeof i=="string"){let u=await this.resolveReference(i,a,o);u&&c.push(u)}if(c.length>0){let f=new w;return f.predicate=g.parse(e),f.object=c,f}let m=new S;return m.predicate=g.parse(e),m.object=s,m}}async parseListValue(e,t,r,a,o,n){let s=[],c=r.propertyType==="DatatypeProperty";for(let f of t){if(c&&(typeof f=="string"||typeof f=="number"||typeof f=="boolean")){let i=new P;i.value=f,s.push(i);continue}if(c&&f instanceof Date){let i=new P;i.value=f.toISOString(),s.push(i);continue}if(typeof f=="string"){let i=await this.resolveReference(f,a,o);i&&s.push(i)}else if(typeof f=="object"&&f!==null&&!Array.isArray(f)){let i=new j;i.statement=await this.parseStatements(f,a,o,n,{}),s.push(i)}}let m=new w;return m.predicate=g.parse(e),m.object=s,m}async resolveReference(e,t,r){let a=await r.resolveEntityAsync(e,t);if(a){let n=new g;return n.subject=a.uri,n}let o=t.metadata?.namespace_;if(o){let{KanonakUri:n}=await import("./KanonakUri-4VJGV3FN.js"),s=o.version??{major:0,minor:0,patch:0,toString:()=>"0.0.0",equals:()=>!1,getHashCode:()=>0,compareTo:()=>0};if(e.includes(".")){let m=e.indexOf("."),f=e.substring(0,m),i=e.substring(m+1);if(t.metadata?.imports){for(let[u,y]of Object.entries(t.metadata.imports))for(let l of y)if((l.alias??l.packageName)===f){let d=new g;return d.subject=new n(u,l.packageName,i,l.version),d}}}let c=new g;return c.subject=new n(o.publisher,o.package_,e,s),c}return null}async saveKanonaks(e,t){let r=new Map;for(let a of e)a instanceof h&&a.namespace&&(r.has(a.namespace)||r.set(a.namespace,[]),r.get(a.namespace).push(a));for(let[a,o]of r){let n=await this.convertKanonaksToDocument(a,o),s=`${a.split("@")[0]}.yml`;await t.saveDocumentAsync(n,s)}}async serializeToYaml(e,t){let r=e.filter(n=>n instanceof h&&n.namespace===t);if(r.length===0)throw new Error(`No kanonaks found with namespace '${t}'`);let a=await this.convertKanonaksToDocument(t,r);return new x().save(a)}async convertKanonaksToDocument(e,t){let a={metadata:{namespace_:e,get allImports(){if(!this.imports)return[];let n=[];for(let s of Object.values(this.imports))n.push(...s);return n}},body:{}},o=new Map;for(let n of t){let s={};for(let c of n.statement){let[m,f]=this.convertStatementToProperty(c);m&&f!==null&&f!==void 0&&(s[m]=f),this.collectImportsFromStatement(c,e,o)}a.body[n.name]=s}return a}convertStatementToProperty(e){if(e instanceof K)return[e.predicate.subject.name,e.object];if(e instanceof I)return[e.predicate.subject.name,e.object];if(e instanceof D)return[e.predicate.subject.name,e.object];if(e instanceof R)return[e.predicate.subject.name,e.object.subject.name];if(e instanceof w){let t=this.convertKanonakListToValue(e.object);return[e.predicate.subject.name,t]}else if(e instanceof S){let t=this.convertEmbeddedKanonakToValue(e.object);return[e.predicate.subject.name,t]}return[null,null]}convertKanonakListToValue(e){let t=[];for(let r of e)r instanceof g?t.push(r.subject.name):r instanceof j&&t.push(this.convertEmbeddedKanonakToValue(r));return t}convertEmbeddedKanonakToValue(e){let t={};for(let r of e.statement){let[a,o]=this.convertStatementToProperty(r);a&&o!==null&&o!==void 0&&(t[a]=o)}return t}collectImportsFromStatement(e,t,r){}};function v(p){let e=p.predicate?.subject;return(e?`${e.publisher}/${e.package_}/${e.name}`:"?")+"="+z(p)}function z(p){return p instanceof T?"m:"+String(p.object):p instanceof K?"s:"+String(p.object):p instanceof I?"n:"+String(p.object):p instanceof D?"b:"+String(p.object):p instanceof R?"r:"+E(p.object):p instanceof S?"e:"+E(p.object):p instanceof w?"l:["+(p.object??[]).map(E).join("|")+"]":"x"}function E(p){if(!p)return"";if(p instanceof g){let e=p.subject;return"R("+(e?`${e.publisher}/${e.package_}/${e.name}`:"")+")"}return p instanceof j?"E("+(p.statement??[]).map(v).join(";")+")":p instanceof P?"L("+String(p.value)+")":"N"}export{U as a,A as b,_ as c};
@@ -1,2 +1,2 @@
1
- import{c as R}from"./chunk-YYFIJNSP.js";import{c as S}from"./chunk-H2LEQLVD.js";import{a as h}from"./chunk-N224PFBI.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{c as R}from"./chunk-VJT6YUWK.js";import{c as S}from"./chunk-H2LEQLVD.js";import{a as h}from"./chunk-N224PFBI.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};
@@ -0,0 +1,102 @@
1
+ import{a as me}from"./chunk-NIGFQYVA.js";import{a as z,c as Le}from"./chunk-H2LEQLVD.js";import{a as Te,f as Ce,h as Ae,i as ve,k as Ze}from"./chunk-Q4DKP5DO.js";import{a as ye,e as oe}from"./chunk-FQHALFRR.js";import{c as J,d as S,g as B,h as pe,i as re,j as x,k as X,l as D}from"./chunk-W6T7MOKY.js";import{a as Xe}from"./chunk-FUUTGGJS.js";var be="kanonak.org",tn="look",Re="core-rdf",Kn={publisher:be,package_:tn,name:"displayLabel"},yn={publisher:be,package_:tn,name:"displaySummary"},Ln={publisher:be,package_:Re,name:"type"},Un={publisher:be,package_:Re,name:"subClassOf"},On={publisher:be,package_:Re,name:"label"},In={publisher:be,package_:Re,name:"comment"},Qe=new Xe(be,Re,"Resource");function E(g,e){let n=en(g,e,Kn)??On,a=en(g,e,yn)??In,t=Ae(e,n)??e.name,o=Ae(e,a);return{label:t,summary:o}}function en(g,e,n){let a=ve(e,n);if(a)return a;let t=new Set,o=nn(e,Ln);for(;o.length>0;){let s=o.shift(),i=Te(s);if(t.has(i))continue;t.add(i);let c=Ce(g,s);if(!c)continue;let r=ve(c,n);if(r)return r;o.push(...nn(c,Un))}if(!t.has(Te(Qe))){let s=Ce(g,Qe);if(s){let i=ve(s,n);if(i)return i}}}function nn(g,e){let n=ve(g,e);if(n)return[n];let a=[];for(let t of Ze(g,e))t instanceof S&&a.push(t.subject);return a}function Me(g,e={}){let n=g.replace(/\r\n/g,`
2
+ `).split(`
3
+ `),a=[],t=0;for(;t<n.length;){let o=n[t];if(o.trim()===""){t++;continue}let s=/^(\s*)```(\S*)\s*$/.exec(o);if(s){let r=s[2],l=[];for(t++;t<n.length&&!/^(\s*)```\s*$/.test(n[t]);)l.push(n[t]),t++;t++;let u=l.join(`
4
+ `),p=r&&e.highlight?e.highlight(r,u):je(u),k=r?` class="language-${sn(r)}"`:"";a.push(`<pre class="kan-code"><code${k}>${p}</code></pre>`);continue}let i=/^(#{1,6})\s+(.*)$/.exec(o);if(i){let r=i[1].length,l=$e(i[2].trim());a.push(`<h${r}>${l}</h${r}>`),t++;continue}if(o.includes("|")&&t+1<n.length&&an(n[t+1])){let r=Pe(o),l=wn(n[t+1]);t+=2;let u=[];for(;t<n.length&&n[t].trim()!==""&&n[t].includes("|");)u.push(Pe(n[t])),t++;a.push(xn(r,l,u));continue}if(/^\s*[-*]\s+/.test(o)){let r=[];for(;t<n.length&&/^\s*[-*]\s+/.test(n[t]);){let l=[n[t].replace(/^\s*[-*]\s+/,"")];for(t++;t<n.length&&n[t].trim()!==""&&!/^\s*[-*]\s+/.test(n[t])&&!/^\s*\d+\.\s+/.test(n[t]);)l.push(n[t]),t++;t<n.length&&n[t].trim()===""&&t++,r.push(`<li>${$e(l.join(" ").trim())}</li>`)}a.push(`<ul>
5
+ ${r.join(`
6
+ `)}
7
+ </ul>`);continue}if(/^\s*\d+\.\s+/.test(o)){let r=[];for(;t<n.length&&/^\s*\d+\.\s+/.test(n[t]);){let l=[n[t].replace(/^\s*\d+\.\s+/,"")];for(t++;t<n.length&&n[t].trim()!==""&&!/^\s*\d+\.\s+/.test(n[t])&&!/^\s*[-*]\s+/.test(n[t]);)l.push(n[t]),t++;t<n.length&&n[t].trim()===""&&t++,r.push(`<li>${$e(l.join(" ").trim())}</li>`)}a.push(`<ol>
8
+ ${r.join(`
9
+ `)}
10
+ </ol>`);continue}let c=[o];for(t++;t<n.length&&n[t].trim()!==""&&!/^(#{1,6})\s+/.test(n[t])&&!/^(\s*)```/.test(n[t])&&!/^\s*[-*]\s+/.test(n[t])&&!/^\s*\d+\.\s+/.test(n[t])&&!(n[t].includes("|")&&t+1<n.length&&an(n[t+1]));)c.push(n[t]),t++;a.push(`<p>${$e(c.join(" "))}</p>`)}return a.join(`
11
+ `)}function an(g){return g.includes("-")?/^[\s|:-]+$/.test(g):!1}function Pe(g){let e=g.trim();return e.startsWith("|")&&(e=e.slice(1)),e.endsWith("|")&&(e=e.slice(0,-1)),e.split("|").map(n=>n.trim())}function wn(g){return Pe(g).map(e=>{let n=e.startsWith(":"),a=e.endsWith(":");return n&&a?"center":a?"right":n?"left":null})}function xn(g,e,n){let a=s=>{let i=e[s];return i?` style="text-align:${i}"`:""},t=g.map((s,i)=>`<th${a(i)}>${$e(s)}</th>`).join(""),o=n.map(s=>`<tr>${s.map((c,r)=>`<td${a(r)}>${$e(c)}</td>`).join("")}</tr>`).join(`
12
+ `);return`<table>
13
+ <thead><tr>${t}</tr></thead>
14
+ <tbody>
15
+ ${o}
16
+ </tbody>
17
+ </table>`}function $e(g){let e=je(g);return e=e.replace(/`([^`\n]+)`/g,(n,a)=>`<code>${a}</code>`),e=e.replace(/\[([^\]]+)\]\(([^)\s]+)\)/g,(n,a,t)=>`<a href="${sn(t)}">${a}</a>`),e=e.replace(/\*\*([^*\n]+)\*\*/g,(n,a)=>`<strong>${a}</strong>`),e=e.replace(/(^|[^*])\*([^*\n]+)\*(?!\*)/g,(n,a,t)=>`${a}<em>${t}</em>`),e=e.replace(/(^|[\s(])_([^_\n]+)_(?=[\s).,;:!?]|$)/g,(n,a,t)=>`${a}<em>${t}</em>`),e}function je(g){return g.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function sn(g){return g.replace(/"/g,"&quot;").replace(/&/g,"&amp;")}var Ue=class{byLang=new Map;constructor(e){for(let n of e){if(!n.language)continue;let a=[];for(let t of n.rules){if(!t.tokenClass||!t.pattern)continue;let o;try{o=new RegExp(t.pattern,"y")}catch{continue}a.push({tokenClass:t.tokenClass,re:o})}this.byLang.set(n.language,a)}}has(e){return this.byLang.has(e)}highlight(e,n){let a=this.byLang.get(e);return!a||a.length===0?je(n):n.split(`
18
+ `).map(t=>this.highlightLine(t,a)).join(`
19
+ `)}highlightLine(e,n){let a="",t=0;for(;t<e.length;){let o=!1;for(let s of n){s.re.lastIndex=t;let i=s.re.exec(e);if(i&&i[0].length>0){a+=`<span class="kan-tok-${s.tokenClass}">${je(i[0])}</span>`,t+=i[0].length,o=!0;break}}o||(a+=je(e[t]),t++)}return a}};var xe={publisher:"kanonak.org",package_:"derivation",name:"look"},Ee={publisher:"kanonak.org",package_:"derivation",name:"tokens"},ce={publisher:"kanonak.org",package_:"core-rdf",name:"Resource"},Ve={publisher:"kanonak.org",package_:"core-rdf",name:"label"},on={publisher:"kanonak.org",package_:"core-rdf",name:"comment"},En={publisher:"kanonak.org",package_:"core-rdf",name:"range"},Fn={publisher:"kanonak.org",package_:"core-rdf",name:"Class"},Tn={publisher:"kanonak.org",package_:"core-owl",name:"Class"},Cn={publisher:"kanonak.org",package_:"look",name:"Hero"},An={publisher:"kanonak.org",package_:"look",name:"PropertyList"},Pn={publisher:"kanonak.org",package_:"look",name:"PropertyTable"},Mn={publisher:"kanonak.org",package_:"look",name:"BadgeRow"},Vn={publisher:"kanonak.org",package_:"look",name:"ChipRow"},Nn={publisher:"kanonak.org",package_:"look",name:"ReferenceList"},Dn={publisher:"kanonak.org",package_:"look",name:"ReferencedBy"},Hn={publisher:"kanonak.org",package_:"look",name:"Instances"},rn={publisher:"kanonak.org",package_:"look",name:"Markdown"},Bn={publisher:"kanonak.org",package_:"look",name:"NavGroup"},Gn={publisher:"kanonak.org",package_:"look",name:"nav"},Ne={publisher:"kanonak.org",package_:"look",name:"NavLink"},Wn={publisher:"kanonak.org",package_:"look",name:"footer"},zn={publisher:"kanonak.org",package_:"look",name:"text"},Yn={publisher:"kanonak.org",package_:"look",name:"links"},cn={publisher:"kanonak.org",package_:"look",name:"target"},qn={publisher:"kanonak.org",package_:"look",name:"ResourceGrid"},Jn={publisher:"kanonak.org",package_:"look",name:"Timeline"},Xn={publisher:"kanonak.org",package_:"look",name:"VersionDiff"},Zn={publisher:"kanonak.org",package_:"look",name:"Figure"},Qn={publisher:"kanonak.org",package_:"look",name:"StatRow"},et={publisher:"kanonak.org",package_:"look",name:"Horizon"},nt={publisher:"kanonak.org",package_:"look",name:"PackageContents"},De={publisher:"kanonak.org",package_:"core-kanonak",name:"Package"},tt={publisher:"kanonak.org",package_:"core-kanonak",name:"Publisher"},at={publisher:"kanonak.org",package_:"look",name:"FeaturedResource"},st={publisher:"kanonak.org",package_:"look",name:"PublisherPackages"},ot={publisher:"kanonak.org",package_:"look",name:"packages"},rt={publisher:"kanonak.org",package_:"code-grammars",name:"CodeGrammar"},it={publisher:"kanonak.org",package_:"code-grammars",name:"language"},ct={publisher:"kanonak.org",package_:"code-grammars",name:"rule"},lt={publisher:"kanonak.org",package_:"code-grammars",name:"tokenClass"},ut={publisher:"kanonak.org",package_:"code-grammars",name:"pattern"},dt={publisher:"kanonak.org",package_:"look",name:"Links"},pt={publisher:"kanonak.org",package_:"link",name:"url"},ft={publisher:"kanonak.org",package_:"link",name:"links"};var kt={publisher:"kanonak.org",package_:"look",name:"Distribution"},gt={publisher:"kanonak.org",package_:"look",name:"alphaPath"},ht={publisher:"kanonak.org",package_:"look",name:"betaPath"},ln={publisher:"kanonak.org",package_:"look",name:"SectionHeading"},mt={publisher:"kanonak.org",package_:"look",name:"SectionNav"},un={publisher:"kanonak.org",package_:"look",name:"heading"},bt={publisher:"kanonak.org",package_:"look",name:"note"},$t={publisher:"kanonak.org",package_:"look",name:"VersionDelta"},jt={publisher:"kanonak.org",package_:"look",name:"TimePlot"},_t={publisher:"kanonak.org",package_:"look",name:"Details"},vt={publisher:"kanonak.org",package_:"look",name:"EmbeddedViews"},Rt={publisher:"kanonak.org",package_:"look",name:"skip"},St={publisher:"kanonak.org",package_:"derivation",name:"derivations"},Kt={publisher:"kanonak.org",package_:"look",name:"laneBy"},yt={publisher:"kanonak.org",package_:"look",name:"stats"},Lt={publisher:"kanonak.org",package_:"look",name:"statPath"},Ut={publisher:"kanonak.org",package_:"look",name:"statLabel"},dn={publisher:"kanonak.org",package_:"look",name:"labelPath"},Ot={publisher:"kanonak.org",package_:"look",name:"badgePath"},He={publisher:"kanonak.org",package_:"look",name:"orderBy"},pn={publisher:"kanonak.org",package_:"look",name:"track"},Oe={publisher:"kanonak.org",package_:"look",name:"metricPath"},Be={publisher:"kanonak.org",package_:"look",name:"hueBy"},fn={publisher:"kanonak.org",package_:"look",name:"lowerPath"},kn={publisher:"kanonak.org",package_:"look",name:"upperPath"},It={publisher:"kanonak.org",package_:"look",name:"axisMin"},wt={publisher:"kanonak.org",package_:"look",name:"axisMax"},xt={publisher:"kanonak.org",package_:"look",name:"valueLabel"};var gn={publisher:"kanonak.org",package_:"look",name:"semanticSvg"},Et={publisher:"kanonak.org",package_:"look",name:"tierChip"},Ft={publisher:"kanonak.org",package_:"look",name:"tierIcon"},Tt={publisher:"kanonak.org",package_:"look",name:"tierCard"},Ct={publisher:"kanonak.org",package_:"look",name:"tierFull"},At={publisher:"kanonak.org",package_:"core-rdf",name:"type"},hn=6,Ge={publisher:"kanonak.org",package_:"look",name:"bands"},Pt={publisher:"kanonak.org",package_:"look",name:"title"},Mt={publisher:"kanonak.org",package_:"look",name:"eyebrow"},Vt={publisher:"kanonak.org",package_:"look",name:"subtitle"},mn={publisher:"kanonak.org",package_:"look",name:"badges"},Y={publisher:"kanonak.org",package_:"look",name:"source"},Nt={publisher:"kanonak.org",package_:"look",name:"via"},Dt={publisher:"kanonak.org",package_:"look",name:"size"},Ht={publisher:"kanonak.org",package_:"look",name:"icon"},Bt={publisher:"kanonak.org",package_:"look",name:"avatar"},Gt={publisher:"kanonak.org",package_:"look",name:"contents"},Wt={publisher:"kanonak.org",package_:"look",name:"transitive"},zt={publisher:"kanonak.org",package_:"look",name:"chips"},bn={publisher:"kanonak.org",package_:"look",name:"entries"},Yt={publisher:"kanonak.org",package_:"look",name:"urlForm"},Je=class{constructor(e){this.catalog=e}catalog;_codeHighlighter;findCascadedLook(e){let n=qt(e)?void 0:Ie(e);return n?{declaration:n,sourceClass:{publisher:P(e),package_:(e.namespace||"").split("/")[1]?.split("@")[0]??"",name:e.name}}:this.lookFromTypeRefs(ae(e))}lookFromTypeRefs(e){let n=new Set,a=[...e];for(;a.length>0;){let o=a.shift().subject,s=V(o);if(n.has(s))continue;n.add(s);let i=le(this.catalog,o);for(let c of i){let r=Ie(c);if(r)return{declaration:r,sourceClass:{publisher:o.publisher,package_:o.package_,name:o.name}}}for(let c of i)for(let r of Ke(c))a.push(r)}if(!n.has(V(ce)))for(let t of le(this.catalog,ce)){let o=Ie(t);if(o)return{declaration:o,sourceClass:{...ce}}}}findCascadedTokens(e){let n=new Map;for(let[o,s]of We(e))n.has(o)||n.set(o,s);let a=new Set,t=ae(e);for(;t.length>0;){let o=t.shift(),s=V(o.subject);if(a.has(s))continue;a.add(s);let i=le(this.catalog,o.subject);if(i.length!==0)for(let c of i){for(let[r,l]of We(c))n.has(r)||n.set(r,l);for(let r of Ke(c))t.push(r)}}if(!a.has(V(ce))){let o=le(this.catalog,ce);for(let s of o)for(let[i,c]of We(s))n.has(i)||n.set(i,c)}return n}renderSvg(e){let n=E(this.catalog,e).label,a=(n.trim().charAt(0)||"?").toUpperCase(),t=`${e.namespace??""}/${e.name}`,o={label:n,firstLetter:a,uri:t},s=this.collectCascadedSvgTiers(e),i=h=>this.applyPlaceholders(h,e,o),c=i(s.tierChip??""),r=i(s.tierIcon??""),l=i(s.tierCard??""),u=i(s.tierFull??""),k=[...this.findCascadedTokens(e)].map(([h,f])=>`--kan-${h}: ${f};`).join(" ");return`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 400" style="${ue(k)}">
20
+ <style>
21
+ .tier-chip,.tier-icon,.tier-card{display:none}
22
+ .tier-full{display:block}
23
+ @media (max-width:400px){.tier-full{display:none}.tier-card{display:block}}
24
+ @media (max-width:160px){.tier-card{display:none}.tier-icon{display:block}}
25
+ @media (max-width:60px){.tier-icon{display:none}.tier-chip{display:block}}
26
+ </style>
27
+ <g class="tier-chip">${c}</g>
28
+ <g class="tier-icon">${r}</g>
29
+ <g class="tier-card">${l}</g>
30
+ <g class="tier-full">${u}</g>
31
+ </svg>`}applyPlaceholders(e,n,a){return e.replace(/\{\{([^}]+)\}\}/g,(t,o)=>{let s=o.trim();if(a[s]!==void 0)return ue(a[s]);let i=s.indexOf(":");if(i>0){let r=s.slice(0,i),l=s.slice(i+1).trim();if(r==="delta"||r==="deltaArrow"||r==="deltaColor"||r==="deltaDir"){let u=this.metricDelta(n,l);return r==="deltaColor"?u?u.dir==="up"?"#34d399":u.dir==="down"?"#f87171":"#9aa5b8":"#9aa5b8":r==="deltaDir"?u?u.dir:"new":u?r==="deltaArrow"?u.dir==="up"?"\u25B2":u.dir==="down"?"\u25BC":"\u2014":ue(`${u.delta>0?"+":""}${u.delta.toFixed(2)}`):""}if(r==="svg")return this.resolvePath(n,l)??""}let c=this.resolvePath(n,s);return c===void 0?`{{${s}}}`:ue(c)})}metricDelta(e,n){let a=k=>{let h=this.resolvePath(k,n),f=h===void 0?NaN:parseFloat(h);return Number.isFinite(f)?f:void 0},t=a(e);if(t===void 0)return;let o=k=>oe((k.namespace||"").split("@")[1]??"")??{major:0,minor:0,patch:0},s=(k,h)=>k.major-h.major||k.minor-h.minor||k.patch-h.patch,i={publisher:P(e),package_:(e.namespace||"").split("/")[1]?.split("@")[0]??"",name:e.name},c=o(e),r,l;for(let k of le(this.catalog,i)){let h=o(k);s(h,c)<0&&(!l||s(h,l)>0)&&(r=k,l=h)}if(!r)return;let u=a(r);if(u===void 0)return;let p=t-u;return{delta:p,dir:Math.abs(p)<.005?"flat":p>0?"up":"down"}}resolvePath(e,n){let a=n.split("/").map(t=>t.trim()).filter(t=>t.length>0);if(a.length!==0)return this.resolvePathSteps(e,a)}resolvePathSteps(e,n){let a=Jt(n[0]),t=Xt(e,a);if(!t)return;let o=n.length===1;if(t instanceof X)return o?void 0:this.resolvePathSteps(t.object,n.slice(1));if(t instanceof x&&t.object instanceof S){let s=t.object.subject,i=le(this.catalog,s);if(i.length===0){let r=G(this.catalog,s);r&&i.push(r)}if(o){for(let r of i){let l=E(this.catalog,r);if(l.label!==r.name)return l.label}return s.name}let c=n.slice(1);for(let r of i){let l=this.resolvePathSteps(r,c);if(l!==void 0)return l}return}if(o&&(t instanceof B||t instanceof pe||t instanceof re))return String(t.object)}collectCascadedSvgTiers(e){let n={},a=s=>{let i=M(s,gn);if(!(i instanceof X))return;let c=i.object,r=L(c,Et),l=L(c,Ft),u=L(c,Tt),p=L(c,Ct);n.tierChip===void 0&&r!==void 0&&(n.tierChip=r),n.tierIcon===void 0&&l!==void 0&&(n.tierIcon=l),n.tierCard===void 0&&u!==void 0&&(n.tierCard=u),n.tierFull===void 0&&p!==void 0&&(n.tierFull=p)};a(e);let t=new Set,o=ae(e);for(;o.length>0;){let s=o.shift(),i=V(s.subject);if(t.has(i))continue;t.add(i);let c=le(this.catalog,s.subject);for(let r of c){a(r);for(let l of Ke(r))o.push(l)}}if(!t.has(V(ce)))for(let s of le(this.catalog,ce))a(s);return n}renderStylesheet(e){let n=this.findCascadedTokens(e),a=[];for(let[s,i]of n)a.push(` --kan-${s}: ${i};`);let t=a.length>0?`:root {
32
+ ${a.join(`
33
+ `)}
34
+ }`:":root { /* no tokens resolved */ }",o=this.findBaseStylesheet(P(e))??"";return`${t}
35
+ ${o}`}findBaseStylesheet(e){let n="kanonak.org/site/content",a=r=>oe((r.namespace||"").split("@")[1]??""),t,o,s,i;for(let r of this.catalog){if(!(r instanceof J)||r.name!=="base-stylesheet")continue;let l=r.namespace||"";if(l.startsWith(`${e}/look-styles@`)){let u=a(r);u&&(!o||ye(u,o)>0)&&(t=r,o=u)}else if(l.startsWith("kanonak.org/look-styles@")){let u=a(r);u&&(!i||ye(u,i)>0)&&(s=r,i=u)}}let c=t??s;if(c)for(let r of c.statement){let l=r.predicate?.subject;if(!l)continue;if(`${l.publisher}/${l.package_}/${l.name}`===n&&r instanceof B)return r.object}}renderHtml(e){let n=this.findCascadedLook(e);if(!n)return`<!-- LookRenderer: no derivation.look found for ${e.namespace}/${e.name} -->`;let a=ze(n.declaration);if(a.length===0)return"<!-- LookRenderer: look declaration has no bands -->";let t=P(e),o=this.collectSectionHeadings(a),s=[];for(let i of a)s.push(this.renderBand(i,e,t,o));return s.join(`
36
+ `)}collectSectionHeadings(e){let n=[];for(let a of e){let t=Se(a);if(!t||!v(t,ln))continue;let o=L(a,un);o&&n.push({slug:jn(o),label:o})}return n}publisherSubject(e){for(let a of this.catalog)if(a instanceof J&&P(a)===e&&ae(a).some(t=>v(t.subject,tt)))return a;let n=new J;return n.namespace=e,n.name=e,n.statement=[x.parse("kanonak.org/core-rdf/type","kanonak.org/core-kanonak/Publisher"),B.parse("kanonak.org/core-rdf/label",e)],n}hasDeclaredView(e){let n=this.findCascadedLook(e);return n?!(t=>t.publisher===ce.publisher&&t.package_===ce.package_&&t.name===ce.name||t.publisher===De.publisher&&t.package_===De.package_&&t.name===De.name)(n.sourceClass):!1}renderPackageVersionList(e,n,a){let t=P(a),o=this.renderNavGroup(a,t),s=this.renderBreadcrumb(a,t,{bareOverview:!0}),i=n.map(r=>`<a class="kan-resource-card" href="/${d(e)}/${d(r)}/"><h3 class="kan-resource-card-title">${d(r)}</h3></a>`).join(`
37
+ `),c=`<header class="kan-hero">
38
+ <span class="kan-hero-eyebrow">PACKAGE</span>
39
+ <h1 class="kan-hero-title">${d(e)}</h1>
40
+ </header>
41
+ <section class="kan-resource-grid">
42
+ ${i}
43
+ </section>`;return`<!doctype html>
44
+ <html lang="en">
45
+ <head>
46
+ <meta charset="utf-8">
47
+ <meta name="viewport" content="width=device-width, initial-scale=1">
48
+ <title>${d(e)}</title>
49
+ <link rel="stylesheet" href="${d(a.name)}.css">
50
+ </head>
51
+ <body>
52
+ ${o}
53
+ ${s}
54
+ <main class="kan-main">
55
+ ${c}
56
+ </main>
57
+ </body>
58
+ </html>
59
+ `}renderDocument(e,n){let a=this.renderHtml(e),t=E(this.catalog,e).label,o=n?.rootIndex?"index.css":`${e.name}.css`,s=!n?.rootIndex&&this.hasSvgDerivation(e)?`<figure class="kan-figure"><img src="${d(e.name)}.svg" alt=""></figure>
60
+ `:"",i=P(e),c=this.renderNavGroup(e,i),r=this.renderSiteFooter(i),l=n?.rootIndex?"":this.renderBreadcrumb(e,i,n);return`<!doctype html>
61
+ <html lang="en">
62
+ <head>
63
+ <meta charset="utf-8">
64
+ <meta name="viewport" content="width=device-width, initial-scale=1">
65
+ <title>${d(t)}</title>
66
+ <link rel="stylesheet" href="${d(o)}">
67
+ </head>
68
+ <body>
69
+ ${c}
70
+ ${l}
71
+ <main class="kan-main">
72
+ ${s}${a}
73
+ </main>
74
+ ${r}
75
+ </body>
76
+ </html>
77
+ `}hasSvgDerivation(e){let n=new Set,a=ae(e);for(;a.length>0;){let t=a.shift(),o=V(t.subject);if(n.has(o))continue;n.add(o);let s=G(this.catalog,t.subject);if(s){for(let i of s.statement)if(i instanceof D&&de(i,"kanonak.org","derivation","derivations")){for(let c of i.object??[])if(c instanceof z)for(let r of c.statement){if(!(r instanceof x)||!de(r,"kanonak.org","derivation","format")||!(r.object instanceof S))continue;let l=r.object.subject;if(l.publisher==="kanonak.org"&&l.package_==="formats"&&l.name==="svg")return!0}}for(let i of Ke(s))a.push(i)}}return!1}renderBand(e,n,a,t=[],o=""){let s=Se(e);return s?v(s,mt)?this.renderSectionNav(t):v(s,Cn)?this.renderHero(e,n,a):v(s,An)?this.renderPropertyList(e,n,a):v(s,Pn)?this.renderPropertyTable(e,n,a,o):v(s,Mn)?this.renderBadgeRow(e,n,a):v(s,Vn)?this.renderChipRow(e,n,a):v(s,Nn)?this.renderReferenceList(e,n,a):v(s,Dn)?this.renderReferencedBy(e,n,a):v(s,Hn)?this.renderInstances(e,n,a):v(s,rn)?this.renderMarkdown(e,n,a):v(s,dt)?this.renderLinks(e,n):v(s,Bn)?this.renderNavGroup(n,a):v(s,qn)?this.renderResourceGrid(e,a,n):v(s,Jn)?this.renderTimeline(e,a):v(s,Xn)?this.renderVersionDiff(e,a):v(s,Zn)?this.renderFigure(e,n,a):v(s,Qn)?this.renderStatRow(e,n):v(s,et)?this.renderHorizon(e,n,a):v(s,nt)?this.renderPackageContents(n,a):v(s,at)?this.renderFeaturedResource(e,a):v(s,st)?this.renderPublisherPackages(e,a):v(s,kt)?this.renderDistribution(e,n):v(s,ln)?this.renderSectionHeading(e):v(s,$t)?this.renderVersionDelta(e,n):v(s,jt)?this.renderTimePlot(e,n,a):v(s,_t)?this.renderDetails(e,n,a):v(s,vt)?this.renderEmbeddedViews(e,n,a,o):`<!-- LookRenderer: unsupported band ${s.publisher}/${s.package_}/${s.name} -->`:"<!-- LookRenderer: band has no rdf:type -->"}collectTrackedSeries(e,n,a,t){let{hueBy:o,lowerPath:s,upperPath:i}=t??{},c=new Map,r=e.length,l=(u,p)=>{let k=this.resolvePath(u,p);return k===void 0?NaN:parseFloat(k)};return e.forEach((u,p)=>{let k=this.readPropertyValueReferences(u,n);for(let h of k){let f=G(this.catalog,{publisher:h.subject.publisher,package_:h.subject.package_,name:h.subject.name,...h.subject.version?{version:h.subject.version}:{}});if(!f)continue;let m=h.subject.name,b=c.get(m);b||(b={key:m,label:E(this.catalog,f).label,points:new Array(r).fill(null),...s?{lower:new Array(r).fill(null)}:{},...i?{upper:new Array(r).fill(null)}:{}},c.set(m,b));let j=l(f,a);if(Number.isFinite(j)&&(b.points[p]=j),s&&b.lower){let $=l(f,s);Number.isFinite($)&&(b.lower[p]=$)}if(i&&b.upper){let $=l(f,i);Number.isFinite($)&&(b.upper[p]=$)}if(o){let $=l(f,o);Number.isFinite($)&&(b.hue=$)}b.lastSubject=f}}),[...c.values()]}hrefForSubject(e,n,a="="){let t=e.namespace||"",o=t.split("/")[1]?.split("@")[0]??"",s=t.split("@")[1]??"",i=s?oe(s):void 0;return me.formatResourceUrl({publisher:P(e),package_:o,name:e.name,...i?{version:i}:{}},a,{contextPublisher:n})}renderVersionDiff(e,n){let a=F(e,Y);if(!a)return"<!-- LookRenderer.VersionDiff: no look.source -->";let t=L(e,Oe),o=F(e,pn);if(!o||!t)return"<!-- LookRenderer.VersionDiff: needs look.track + look.metricPath -->";let s=F(e,He),i=L(e,Be),c=this.findInstancesOfClass(a);if(c.length===0)return"<!-- LookRenderer.VersionDiff: no instances -->";let r=k=>s?this.readPropertyValueText(k,s)??"":"",l=c.slice().sort((k,h)=>r(k).localeCompare(r(h))),u=this.collectTrackedSeries(l,o,t,{hueBy:i});return u.length===0?"<!-- LookRenderer.VersionDiff: no tracked series -->":`<section class="kan-vdiff">${u.map((k,h)=>{let f=k.hue!==void 0?k.hue:Math.round(h*360/u.length),m=k.points.filter(y=>y!==null);if(m.length===0)return"";let b=m[0],j=m[m.length-1],$=j-b,K;if(Math.abs($)>=.005){let y=$>0?"up":"down",w=$>0?"\u25B2":"\u25BC";K=`<span class="kan-vdiff-delta ${y}">${$>0?"+":""}${$.toFixed(2)} ${w}</span>`}else K='<span class="kan-vdiff-delta flat">\u2014</span>';let O=k.lastSubject&&this.isLinkable(P(k.lastSubject),n)?`<a href="${d(this.hrefForSubject(k.lastSubject,n))}">${d(k.label)}</a>`:d(k.label);return`<div class="kan-vdiff-row" style="--kan-vdiff-hue:${f}"><span class="kan-vdiff-label">${O}</span><span class="kan-vdiff-start">${b.toFixed(2)}</span>`+this.sparkline(k.points,f)+`<span class="kan-vdiff-end">${j.toFixed(2)}</span>`+K+"</div>"}).join("")}</section>`}sparkline(e,n){let s=`hsl(${n},65%,60%)`,i=e.filter(m=>m!==null);if(i.length===0)return'<svg class="kan-vdiff-spark" viewBox="0 0 132 30" xmlns="http://www.w3.org/2000/svg"></svg>';let c=Math.min(...i),l=Math.max(...i)-c,u=e.length,p=m=>u<=1?132/2:4+m/(u-1)*124,k=m=>l<1e-9?30/2:26-(m-c)/l*22,h=[],f=[];return e.forEach((m,b)=>{if(m===null)return;let j=p(b),$=k(m);h.push(`${j.toFixed(1)},${$.toFixed(1)}`),f.push(`<circle cx="${j.toFixed(1)}" cy="${$.toFixed(1)}" r="2" fill="${s}"/>`)}),`<svg class="kan-vdiff-spark" viewBox="0 0 132 30" preserveAspectRatio="none" xmlns="http://www.w3.org/2000/svg" role="img"><polyline points="${h.join(" ")}" fill="none" stroke="${s}" stroke-width="1.5" stroke-linejoin="round" stroke-linecap="round"/>`+f.join("")+"</svg>"}svgUrlForSubject(e,n,a="="){return`${this.hrefForSubject(e,n,a)}.svg`}renderFigure(e,n,a){let t=n,o=F(e,Y);if(o){let l=G(this.catalog,o);l&&(t=l)}let s=this.svgUrlForSubject(t,a),i=E(this.catalog,t).label,c=L(e,Dt);return`<figure class="kan-figure${c==="small"||c==="medium"||c==="large"?` kan-figure-${c}`:""}"><img class="kan-figure-img" src="${d(s)}" alt="${d(i)}" loading="lazy"/></figure>`}renderStatRow(e,n){let a=M(e,yt),t=this.gatherValueItems(a).filter(s=>s instanceof z);if(t.length===0)return"<!-- LookRenderer.StatRow: no look.stats -->";let o=[];for(let s of t){let i=L(s,Lt);if(!i)continue;let c=this.resolvePath(n,i);if(c===void 0)continue;let r=L(s,Ut)??"";o.push('<div class="kan-stat">'+(r?`<span class="kan-stat-label">${d(r)}</span>`:"")+`<span class="kan-stat-val">${d(c)}</span></div>`)}return o.length===0?"":`<div class="kan-stat-row">${o.join("")}</div>`}renderHorizon(e,n,a){let t=F(e,Y);if(!t)return"<!-- LookRenderer.Horizon: no look.source -->";let o=this.gatherValueItems(M(n,t)).filter(i=>i instanceof z);return o.length===0?"":`<section class="kan-horizon">${o.map(i=>this.renderConditionNode(i,a,0)).join("")}</section>`}renderConditionNode(e,n,a){let t=Se(e),o=t?this.readLabelForUri({publisher:t.publisher,package_:t.package_,name:t.name})??t.name:"Condition",s=[],i=[];for(let p of e.statement){let k=p.predicate?.subject;if(!k||k.name==="type")continue;let h=this.readLabelForUri({publisher:k.publisher,package_:k.package_,name:k.name})??k.name;if(p instanceof B||p instanceof pe||p instanceof re)s.push(`<div class="kan-cond-field"><span class="kan-cond-key">${d(h)}</span><span class="kan-cond-v">${d(String(p.object))}</span></div>`);else if(p instanceof x&&p.object instanceof S){let f=p.object.subject,m=this.readLabelForUri({publisher:f.publisher,package_:f.package_,name:f.name})??f.name;s.push(`<div class="kan-cond-field"><span class="kan-cond-key">${d(h)}</span><span class="kan-cond-v">${d(m)}</span></div>`)}else if(p instanceof X)i.push(this.renderConditionNode(p.object,n,a+1));else if(p instanceof D)for(let f of p.object??[])f instanceof z&&i.push(this.renderConditionNode(f,n,a+1))}let c=s.length?`<div class="kan-cond-fields">${s.join("")}</div>`:"",r=i.length?`<div class="kan-cond-children">${i.join("")}</div>`:"",l=i.length>0,u=l?`<span class="kan-cond-op">${d(o)}</span>`:`<div class="kan-cond-type">${d(o)}</div>`;return`<div class="kan-cond ${l?"kan-cond-branch":"kan-cond-leaf"}">${u}${c}${r}</div>`}renderSectionHeading(e){let n=e,a=L(n,un);if(!a)return"<!-- LookRenderer.SectionHeading: no look.heading -->";let t=L(n,bt);return`<div class="kan-section" id="${jn(a)}"><h2 class="kan-section-title">${d(a)}</h2>`+(t?`<p class="kan-section-note">${d(t)}</p>`:"")+"</div>"}renderSectionNav(e){return e.length===0?"<!-- LookRenderer.SectionNav: no section headings in this view -->":`<nav class="kan-section-nav" aria-label="On this page">${e.map(a=>`<a class="kan-section-nav-link" href="#${d(a.slug)}">${d(a.label)}</a>`).join("")}</nav>`}renderVersionDelta(e,n){let t=L(e,Oe);if(!t)return"<!-- LookRenderer.VersionDelta: no look.metricPath -->";let o=C=>{let N=this.resolvePath(C,t),Z=N===void 0?NaN:parseFloat(N);return Number.isFinite(Z)?Z:void 0},s=o(n);if(s===void 0)return"";let i=C=>oe((C.namespace||"").split("@")[1]??"")??{major:0,minor:0,patch:0},c=(C,N)=>C.major-N.major||C.minor-N.minor||C.patch-N.patch,r={publisher:P(n),package_:(n.namespace||"").split("/")[1]?.split("@")[0]??"",name:n.name},l=i(n),u,p;for(let C of le(this.catalog,r)){let N=i(C);c(N,l)<0&&(!p||c(N,p)>0)&&(u=C,p=N)}if(!u||!p)return'<div class="kan-delta kan-delta-first">First tracked in this version</div>';let k=o(u);if(k===void 0)return"";let h=s-k,f=Math.abs(h)<.005?"flat":h>0?"up":"down",m=f==="up"?"\u25B2":f==="down"?"\u25BC":"\u2014",b=f==="up"?"#34d399":f==="down"?"#f87171":"var(--kan-text-faint)",j=`${p.major}.${p.minor}.${p.patch}`,$=320,K=46,O=14,y=30,w=C=>O+Math.min(1,Math.max(0,C))*($-2*O),T=w(k),H=w(s),fe=`<svg class="kan-delta-track" viewBox="0 0 ${$} ${K}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img"><line x1="${O}" y1="${y}" x2="${$-O}" y2="${y}" class="kan-delta-base"/><line x1="${T.toFixed(1)}" y1="${y}" x2="${H.toFixed(1)}" y2="${y}" stroke="${b}" stroke-width="3"/><circle cx="${T.toFixed(1)}" cy="${y}" r="4" class="kan-delta-prev"/><circle cx="${H.toFixed(1)}" cy="${y}" r="5.5" fill="${b}"/><text x="${T.toFixed(1)}" y="${y-9}" text-anchor="middle" class="kan-delta-tick kan-delta-tick-prev">${k.toFixed(2)}</text><text x="${H.toFixed(1)}" y="${y+17}" text-anchor="middle" class="kan-delta-tick">${s.toFixed(2)}</text></svg>`;return`<div class="kan-delta"><div class="kan-delta-head"><span class="kan-delta-vs">vs ${d(j)}</span><span class="kan-delta-badge ${f}">${h>0?"+":""}${h.toFixed(2)} ${m}</span></div>`+fe+"</div>"}renderTimePlot(e,n,a){let t=F(e,Y),o=F(e,He);if(!t||!o)return"<!-- LookRenderer.TimePlot: needs look.source + look.orderBy -->";let s=e,i=L(s,Kt),c=L(s,dn),r=[];for(let R of this.readPropertyValueReferences(n,t)){let W=G(this.catalog,{publisher:R.subject.publisher,package_:R.subject.package_,name:R.subject.name,...R.subject.version?{version:R.subject.version}:{}});if(!W)continue;let U=this.readPropertyValueText(W,o)??"",I=Date.parse(U);if(!Number.isFinite(I))continue;let se=i?this.resolvePath(W,i)??"":"",_=(c?this.resolvePath(W,c):void 0)??E(this.catalog,W).label;r.push({t:I,dateStr:U,lane:se,label:_,href:this.hrefForSubject(W,a),linkable:this.isLinkable(P(W),a)})}if(r.length===0)return"<!-- LookRenderer.TimePlot: no dated points -->";let l=[];for(let R of r)l.includes(R.lane)||l.push(R.lane);let u=Math.min(...r.map(R=>R.t)),p=Math.max(...r.map(R=>R.t));p===u&&(p=u+1);let k=l.some(R=>R),h=720,f=k?96:16,m=18,b=12,j=24,$=36,K=b+l.length*$+j,O=f,y=h-m,w=y-O,T=R=>O+(R-u)/(p-u)*w,H=R=>b+R*$+$/2,fe=R=>Math.round(R*360/Math.max(1,l.length)),C=[];l.forEach((R,W)=>{let U=H(W);C.push(`<line x1="${O}" y1="${U.toFixed(1)}" x2="${y}" y2="${U.toFixed(1)}" class="kan-plot-guide"/>`),R&&C.push(`<text x="${(f-8).toFixed(1)}" y="${(U+4).toFixed(1)}" text-anchor="end" class="kan-plot-lane">${ue(R)}</text>`)});let N={},Z=[];for(let R of r){let W=l.indexOf(R.lane),I=((N[R.lane]=(N[R.lane]??0)+1)%3-1)*7,se=T(R.t),_=H(W)+I,A=`${we(R.dateStr)} \xB7 ${R.label}`,Q=`<circle cx="${se.toFixed(1)}" cy="${_.toFixed(1)}" r="5" fill="hsl(${fe(W)},65%,60%)" class="kan-plot-pt"><title>${ue(A)}</title></circle>`;Z.push(R.linkable?`<a href="${d(R.href)}" class="kan-plot-link">${Q}</a>`:Q)}let ge=`<text x="${O}" y="${(K-6).toFixed(1)}" text-anchor="start" class="kan-plot-axis">${ue(we(new Date(u).toISOString()))}</text><text x="${y}" y="${(K-6).toFixed(1)}" text-anchor="end" class="kan-plot-axis">${ue(we(new Date(p).toISOString()))}</text>`;return`<section class="kan-plot">${`<svg class="kan-plot-svg" viewBox="0 0 ${h} ${K}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">`+C.join("")+Z.join("")+ge+"</svg>"}</section>`}renderDetails(e,n,a){let t=Ye(e,Rt),o=this.detailRows(n,a,t);return o?`<dl class="kan-details">${o}</dl>`:"<!-- LookRenderer.Details: no properties -->"}detailRows(e,n,a){let t=[];for(let o of e.statement){let s=o.predicate?.subject;if(!s||this.isMetaPredicate(s)||a.some(r=>v(r,s)))continue;let i=this.readLabelForUri({publisher:s.publisher,package_:s.package_,name:s.name})??s.name,c=this.detailValue(o,n,a);c&&t.push(`<dt class="kan-details-key">${d(i)}</dt><dd class="kan-details-val">${c}</dd>`)}return t.join("")}detailValue(e,n,a){if(e instanceof B)return vn(e.object);if(e instanceof pe||e instanceof re)return d(String(e.object));if(e instanceof x&&e.object instanceof S)return this.detailReferenceLink(e.object,n);if(e instanceof X)return this.detailEmbedded(e.object,n,a);if(e instanceof D){let t=e.object??[];return t.length>0&&t.every(o=>o instanceof z)?t.map(o=>this.detailEmbedded(o,n,a)).join(""):t.map(o=>o instanceof S?this.detailReferenceLink(o,n):o instanceof z?this.detailEmbedded(o,n,a):d(String(o))).filter(o=>o).join(", ")}return""}detailReferenceLink(e,n){let a=this.readLabelForUri({publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name})??e.subject.name;if(!this.isLinkable(e.subject.publisher,n))return`<span class="kan-link-plain">${d(a)}</span>`;let t=this.urlForReference(e,void 0,n);return`<img class="kan-md-chip" src="${d(`${t}.svg`)}" alt="" loading="lazy"><a class="kan-link" href="${d(t)}">${d(a)}</a>`}detailEmbedded(e,n,a){let t=Se(e),o=t?this.readLabelForUri({publisher:t.publisher,package_:t.package_,name:t.name})??t.name:"",s=this.detailRows(e,n,a);return'<div class="kan-details-embed">'+(o?`<span class="kan-details-type">${d(o)}</span>`:"")+(s?`<dl class="kan-details">${s}</dl>`:"")+"</div>"}rangeTypeRefs(e){let n=G(this.catalog,e);if(!n)return[];let a=M(n,En);return a instanceof x&&a.object instanceof S?[a.object]:[]}renderEmbeddedViews(e,n,a,t=""){let o=F(e,Y);if(!o)return"<!-- LookRenderer: EmbeddedViews missing look.source -->";let s=this.gatherValueItems(M(n,o)).filter(k=>k instanceof z);if(s.length===0)return"";let i=t?`${t}.${o.name}`:o.name,c=M(e,Gt),r=c instanceof re?c.object===!0:c instanceof B&&c.object==="true",l=[],u=s.map(k=>{let h=k,f=k.name?`${i}.${k.name}`:"";if(r&&f){let y=E(this.catalog,h).label||k.name||f;l.push(`<a class="kan-section-nav-link" href="#${d(f)}">${d(y)}</a>`)}let m=ae(h),b=m.length>0?m:this.rangeTypeRefs(o),j=Ie(h)?this.findCascadedLook(h):this.lookFromTypeRefs(b),$="";if(j)$=ze(j.declaration).map(y=>this.renderBand(y,h,a,[],f)).join(`
78
+ `);else{let y=this.detailRows(k,a,[]);$=y?`<dl class="kan-details">${y}</dl>`:""}let K=f?` id="${d(f)}"`:"",O=f?this.anchorLink(f):"";return`<section class="kan-embedded-view"${K}>${O}${$}</section>`});return`<div class="kan-embedded-views">${l.length>0?`<nav class="kan-section-nav" aria-label="On this page">${l.join("")}</nav>
79
+ `:""}${u.join(`
80
+ `)}</div>`}anchorLink(e){return`<a class="kan-anchor" href="#${d(e)}" title="${d(e)}" aria-label="Link to this resource">#</a>`}isMetaPredicate(e){return v(e,At)||v(e,Ve)||v(e,on)||v(e,xe)||v(e,Ee)||v(e,St)||v(e,gn)||v(e,ft)}renderPackageContents(e,n){let a=e.namespace||"";if(!a)return"";let t=this.catalog.filter(s=>s instanceof J&&s.namespace===a&&s.name!==e.name);return t.length===0?`<!-- LookRenderer.PackageContents: no members in ${a} -->`:(t.sort((s,i)=>{let c=E(this.catalog,s).label,r=E(this.catalog,i).label;return c.localeCompare(r)}),`<section class="kan-pkg-grid">${t.map(s=>{let i=E(this.catalog,s),c=i.label,r=i.summary,l=r?qe(r,160):"",u=this.hrefForSubject(s,n),p=this.svgUrlForSubject(s,n);return`<a class="kan-pkg-card" href="${d(u)}"><img class="kan-pkg-card-svg" src="${d(p)}" alt="" loading="lazy"/><span class="kan-pkg-card-body"><span class="kan-pkg-card-title">${d(c)}</span>`+(l?`<span class="kan-pkg-card-comment">${d(l)}</span>`:"")+"</span></a>"}).join("")}</section>`)}renderReferencedBy(e,n,a){let t=F(e,Nt),o={publisher:P(n),package_:(n.namespace||"").split("/")[1]?.split("@")[0]??"",name:n.name},s=V(o),i=p=>oe((p.namespace||"").split("@")[1]??"")??{major:0,minor:0,patch:0},c=(p,k)=>p.major-k.major||p.minor-k.minor||p.patch-k.patch,r=new Map;for(let p of this.catalog){if(!(p instanceof J))continue;let k=V({publisher:P(p),package_:(p.namespace||"").split("/")[1]?.split("@")[0]??"",name:p.name});if(k!==s)for(let h of p.statement){let f=h.predicate?.subject;if(!f||f.name==="type"||t&&V(f)!==V(t))continue;let m=[];if(h instanceof x&&h.object instanceof S)m.push(h.object);else if(h instanceof D)for(let K of h.object??[])K instanceof S&&m.push(K);if(!m.some(K=>V(K.subject)===s))continue;let b=V(f),j=r.get(b);j||(j={label:this.readLabelForUri(f)??f.name,best:new Map},r.set(b,j));let $=j.best.get(k);(!$||c(i(p),i($))>0)&&j.best.set(k,p)}}return r.size===0?"<!-- LookRenderer.ReferencedBy: no incoming references -->":`<div class="kan-section"><h2 class="kan-section-title">Referenced by</h2></div>${[...r.values()].sort((p,k)=>p.label.localeCompare(k.label)).map(p=>{let h=[...p.best.values()].sort((f,m)=>E(this.catalog,f).label.localeCompare(E(this.catalog,m).label)).map(f=>this.resourceCard(f,a,n.namespace??void 0)).join("");return`<div class="kan-rel-group"><h3 class="kan-rel-prop"><span class="kan-rel-dir" title="incoming \u2014 references this resource">\u2190</span> ${d(p.label)}</h3><section class="kan-pkg-grid">${h}</section></div>`}).join("")}`}resourceCard(e,n,a){let t=E(this.catalog,e),o=t.summary?qe(t.summary,160):"",s=ae(e).map(m=>this.readLabelForUri({publisher:m.subject.publisher,package_:m.subject.package_,name:m.subject.name})??m.subject.name),c='<span class="kan-pkg-card-body">'+(s.length>0?`<span class="kan-card-types">${s.map(m=>`<span class="kan-card-type">${d(m)}</span>`).join("")}</span>`:"")+`<span class="kan-pkg-card-title">${d(t.label)}</span>`+(o?`<span class="kan-pkg-card-comment">${d(o)}</span>`:"")+"</span>",r=this.isLinkable(P(e),n),l=r?`<a class="kan-pkg-card-link" href="${d(this.hrefForSubject(e,n))}"><img class="kan-pkg-card-svg" src="${d(this.svgUrlForSubject(e,n))}" alt="" loading="lazy"/>`+c+"</a>":`<span class="kan-pkg-card-link">${c}</span>`,u=e.namespace||"",p=u.split("/")[0]??"",[k,h]=(u.split("/")[1]??"").split("@"),f="";if(k&&u!==a){let m=h?`<span class="kan-card-at">@</span><span class="kan-card-ver">${d(h)}</span>`:"";if(r){let b=`<span class="kan-card-pkg">${d(k)}</span>${m}`;f=`<a class="kan-pkg-card-foot" href="/${d(k)}${h?"/"+d(h):""}" title="${d(h?`${k}@${h}`:k)}">${b}</a>`}else{let b=`<span class="kan-card-pub">${d(p)}/</span><span class="kan-card-pkg">${d(k)}</span>${m}`;f=`<span class="kan-pkg-card-foot" title="${d(h?`${p}/${k}@${h}`:`${p}/${k}`)}">${b}</span>`}}return`<div class="kan-pkg-card kan-pkg-card--foot">${l}${f}</div>`}renderInstances(e,n,a){let t={publisher:P(n),package_:(n.namespace||"").split("/")[1]?.split("@")[0]??"",name:n.name},o=M(e,Wt),s=o instanceof re?o.object===!0:o instanceof B&&o.object==="true",i=s?this.subclassClosure(t):new Set([V(t)]),c=b=>oe((b.namespace||"").split("@")[1]??"")??{major:0,minor:0,patch:0},r=(b,j)=>b.major-j.major||b.minor-j.minor||b.patch-j.patch,l=new Map;for(let b of this.catalog){if(!(b instanceof J)||!ae(b).some(O=>i.has(V(O.subject))))continue;let $=V({publisher:P(b),package_:(b.namespace||"").split("/")[1]?.split("@")[0]??"",name:b.name}),K=l.get($);(!K||r(c(b),c(K))>0)&&l.set($,b)}let u=[...l.values()];if(u.length===0)return"<!-- LookRenderer.Instances: none -->";u.sort((b,j)=>E(this.catalog,b).label.localeCompare(E(this.catalog,j).label));let p=48,k=u.slice(0,p),h=k.map(b=>this.resourceCard(b,a,n.namespace??void 0)),f=u.length>p?` <span class="kan-count">${k.length} of ${u.length}</span>`:` <span class="kan-count">${u.length}</span>`;return`<div class="kan-section"><h2 class="kan-section-title">${s?"Instances (including subtypes)":"Instances"}${f}</h2></div><section class="kan-pkg-grid">${h.join("")}</section>`}subclassClosure(e){let n=new Set([V(e)]),a=!0;for(;a;){a=!1;for(let t of this.catalog){if(!(t instanceof J))continue;let o=V({publisher:P(t),package_:(t.namespace||"").split("/")[1]?.split("@")[0]??"",name:t.name});if(!n.has(o)){for(let s of Ke(t))if(n.has(V(s.subject))){n.add(o),a=!0;break}}}}return n}referencesTarget(e,n,a){for(let t of e.statement){let o=t.predicate?.subject;if(o?.name==="type"||a&&!(o&&V(o)===V(a)))continue;let s=[];if(t instanceof x&&t.object instanceof S)s.push(t.object);else if(t instanceof D)for(let i of t.object??[])i instanceof S&&s.push(i);for(let i of s)if(V(i.subject)===n)return!0}return!1}renderFeaturedResource(e,n){let a=F(e,Y);if(!a)return"<!-- LookRenderer.FeaturedResource: no look.source -->";let t=le(this.catalog,a),o=r=>oe((r.namespace||"").split("@")[1]??"")??{major:0,minor:0,patch:0},s=t.length>0?t.slice().sort((r,l)=>{let u=o(r),p=o(l);return p.major-u.major||p.minor-u.minor||p.patch-u.patch})[0]:G(this.catalog,a);if(!s)return`<!-- LookRenderer.FeaturedResource: ${a.publisher}/${a.package_}/${a.name} not found -->`;let i=this.renderHtml(s),c=this.hrefForSubject(s,n);return`<section class="kan-featured"><a class="kan-featured-permalink" href="${d(c)}">View full resource \u2192</a>`+i+"</section>"}renderDistribution(e,n){let a=e,t=U=>{let I=L(a,U);if(!I)return;let se=this.resolvePath(n,I),_=se===void 0?NaN:parseFloat(se);return Number.isFinite(_)?_:void 0},o=t(gt),s=t(ht);if(o===void 0||s===void 0||o<=0||s<=0)return"<!-- LookRenderer.Distribution: needs resolvable alphaPath + betaPath (> 0) -->";let i=t(Oe)??o/(o+s),c=t(fn),r=t(kn),l=t(Be),u=l!==void 0?`hsl(${l},65%,60%)`:"var(--kan-accent)",p=U=>Number.isInteger(U)?String(U):U.toFixed(1),k=280,h=168,f={top:14,right:14,bottom:24,left:14},m=k-f.left-f.right,b=h-f.top-f.bottom,j=120,$=1e-4,K=[],O=[],y=0;for(let U=0;U<=j;U++){let I=U/j;I<$?I=$:I>1-$&&(I=1-$);let se=Math.exp((o-1)*Math.log(I)+(s-1)*Math.log(1-I));K.push(I),O.push(se),se>y&&(y=se)}let w=U=>f.left+Math.min(1,Math.max(0,U))*m,T=U=>f.top+(1-(y>0?U/y:0))*b,H=f.top+b,fe=K.map((U,I)=>`${w(U).toFixed(1)},${T(O[I]).toFixed(1)}`),C=`M${w(0).toFixed(1)},${H.toFixed(1)} L${fe.join(" L")} L${w(1).toFixed(1)},${H.toFixed(1)} Z`,N="";if(c!==void 0&&r!==void 0&&r>c){let U=[`${w(c).toFixed(1)},${H.toFixed(1)}`];for(let I=0;I<=j;I++)K[I]>=c&&K[I]<=r&&U.push(`${w(K[I]).toFixed(1)},${T(O[I]).toFixed(1)}`);U.push(`${w(r).toFixed(1)},${H.toFixed(1)}`),N=`<path d="M${U.join(" L")} Z" fill="${u}" fill-opacity="0.3"/>`}let Z=w(i),ge=`<line x1="${Z.toFixed(1)}" y1="${f.top.toFixed(1)}" x2="${Z.toFixed(1)}" y2="${H.toFixed(1)}" stroke="${u}" stroke-width="1.5" stroke-dasharray="3 3"/><text x="${Z.toFixed(1)}" y="${(f.top-3).toFixed(1)}" text-anchor="middle" class="kan-dist-mean">\u03BC ${i.toFixed(2)}</text>`,_e=`<text x="${w(0).toFixed(1)}" y="${(H+15).toFixed(1)}" text-anchor="start" class="kan-dist-axis">0</text><text x="${w(1).toFixed(1)}" y="${(H+15).toFixed(1)}" text-anchor="end" class="kan-dist-axis">1</text>`,R=`<svg class="kan-dist-svg" viewBox="0 0 ${k} ${h}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img"><line x1="${f.left}" y1="${H.toFixed(1)}" x2="${(k-f.right).toFixed(1)}" y2="${H.toFixed(1)}" class="kan-dist-base"/><path d="${C}" fill="${u}" fill-opacity="0.12"/>`+N+`<polyline points="${fe.join(" ")}" fill="none" stroke="${u}" stroke-width="2"/>`+ge+_e+"</svg>",W=c!==void 0&&r!==void 0?` \xB7 95% CI [${c.toFixed(2)}\u2013${r.toFixed(2)}]`:"";return`<figure class="kan-dist">${R}<figcaption class="kan-dist-caption">Beta(${p(o)}, ${p(s)})${W}</figcaption></figure>`}renderPublisherPackages(e,n){let a=new Map;for(let c of this.catalog){if(!(c instanceof J)||P(c)!==n)continue;let r=(c.namespace||"").split("/")[1]?.split("@")[0]??"";if(!r||c.name!==r)continue;let l=a.get(r),u=oe((c.namespace||"").split("@")[1]??""),p=l?oe((l.namespace||"").split("@")[1]??""):void 0;(!l||u&&(!p||ye(u,p)>0))&&a.set(r,c)}let t,o=M(e,ot),s=o instanceof D?o.object??[]:o instanceof x&&o.object instanceof S?[o.object]:[];if(s.length>0){t=[];for(let c of s){if(!(c instanceof S))continue;let r=c.subject.package_,l=a.get(r);l&&t.push([r,l])}}else t=[...a.entries()].sort((c,r)=>c[0].localeCompare(r[0]));return t.length===0?"":`<section class="kan-pkg-grid">${t.map(([c,r])=>{let l=E(this.catalog,r),u=l.label,p=l.summary,k=p?qe(p,160):"",h=this.svgUrlForSubject(r,n);return`<a class="kan-pkg-card" href="/${d(c)}"><img class="kan-pkg-card-svg" src="${d(h)}" alt="" loading="lazy"/><span class="kan-pkg-card-body"><span class="kan-pkg-card-title">${d(u)}</span>`+(k?`<span class="kan-pkg-card-comment">${d(k)}</span>`:"")+"</span></a>"}).join("")}</section>`}renderTimeline(e,n){let a=F(e,Y);if(!a)return"<!-- LookRenderer.Timeline: no look.source -->";let t=F(e,He),o=this.findInstancesOfClass(a);if(o.length===0)return"<!-- LookRenderer.Timeline: no instances -->";let s=u=>t?this.readPropertyValueText(u,t)??"":"",i=o.slice().sort((u,p)=>s(u).localeCompare(s(p))),c=F(e,pn),r=L(e,Oe);return c&&r?this.renderTrajectoryChart(i,c,r,e,n,s):`<section class="kan-timeline"><ol>
81
+ ${i.map(u=>{let p=u.namespace||"",k=p.split("/")[1]?.split("@")[0]??"",h=p.split("@")[1]??"",f=h?oe(h):void 0,m=me.formatResourceUrl({publisher:P(u),package_:k,name:u.name,...f?{version:f}:{}},"=",{contextPublisher:n}),b=s(u),j=b?`<span class="kan-timeline-date">${d(b)}</span>`:"",$=h||u.name;return`<li class="kan-timeline-node"><a href="${d(m)}"><span class="kan-timeline-key">${d($)}</span>${j}</a></li>`}).join(`
82
+ `)}
83
+ </ol></section>`}renderTrajectoryChart(e,n,a,t,o,s){let i=t,c=L(i,Be),r=L(i,fn),l=L(i,kn),u=L(i,xt),p=$n(i,It),k=$n(i,wt),h=e.length,f=this.collectTrackedSeries(e,n,a,{hueBy:c,lowerPath:r,upperPath:l});if(f.length===0)return"<!-- LookRenderer.Timeline: no tracked series -->";let m=[];for(let _ of f){for(let A of _.points)A!==null&&m.push(A);for(let A of _.lower??[])A!==null&&m.push(A);for(let A of _.upper??[])A!==null&&m.push(A)}if(m.length===0)return"<!-- LookRenderer.Timeline: no metric values -->";let b=Math.min(...m),j=Math.max(...m);j-b<1e-9&&(b-=.5,j+=.5);let $=(j-b)*.08,K=p!==void 0?p:b-$,O=k!==void 0?k:j+$;O-K<1e-9&&(O=K+1);let y=1e3,w=440,T={top:28,right:24,bottom:56,left:52},H=y-T.left-T.right,fe=w-T.top-T.bottom,C=_=>h<=1?T.left+H/2:T.left+_/(h-1)*H,N=_=>T.top+(1-(_-K)/(O-K))*fe,Z=(_,A)=>_.hue!==void 0?_.hue:Math.round(A*360/f.length),ge=[];for(let _=0;_<5;_++){let A=K+_*(O-K)/4,Q=N(A);ge.push(`<line x1="${T.left}" y1="${Q.toFixed(1)}" x2="${(y-T.right).toFixed(1)}" y2="${Q.toFixed(1)}" class="kan-fan-grid"/>`),ge.push(`<text x="${(T.left-8).toFixed(1)}" y="${(Q+4).toFixed(1)}" class="kan-fan-axis" text-anchor="end">${A.toFixed(2)}</text>`)}let _e=[];e.forEach((_,A)=>{let Q=this.hrefForSubject(_,o),ee=(_.namespace||"").split("@")[1]??"",q=C(A),ne=we(s(_));_e.push(`<a href="${d(Q)}" class="kan-fan-xtick"><line x1="${q.toFixed(1)}" y1="${T.top}" x2="${q.toFixed(1)}" y2="${(w-T.bottom).toFixed(1)}" class="kan-fan-vline"/><text x="${q.toFixed(1)}" y="${(w-T.bottom+20).toFixed(1)}" class="kan-fan-xlabel" text-anchor="middle">${ue(ee||_.name)}</text>`+(ne?`<text x="${q.toFixed(1)}" y="${(w-T.bottom+36).toFixed(1)}" class="kan-fan-xdate" text-anchor="middle">${ue(ne)}</text>`:"")+"</a>")});let R=[];f.forEach((_,A)=>{if(!_.lower||!_.upper)return;let Q=Z(_,A),ee=[],q=[];for(let te=0;te<h;te++){let he=_.upper[te],ke=_.lower[te];he==null||ke===null||ke===void 0||(ee.push(`${C(te).toFixed(1)},${N(he).toFixed(1)}`),q.unshift(`${C(te).toFixed(1)},${N(ke).toFixed(1)}`))}let ne=ee.concat(q);ne.length<3||R.push(`<polygon class="kan-fan-band" points="${ne.join(" ")}" fill="hsl(${Q},65%,60%)"/>`)});let W=[];f.forEach((_,A)=>{let ee=`hsl(${Z(_,A)},65%,60%)`,q=[],ne=[];_.points.forEach((te,he)=>{if(te===null)return;let ke=C(he),ie=N(te);q.push(`${ke.toFixed(1)},${ie.toFixed(1)}`),ne.push(`<circle cx="${ke.toFixed(1)}" cy="${ie.toFixed(1)}" r="3.5" fill="${ee}"/>`)}),q.length!==0&&W.push(`<g class="kan-fan-series" data-series="${d(_.key)}"><polyline points="${q.join(" ")}" fill="none" stroke="${ee}" stroke-width="2" stroke-linejoin="round" stroke-linecap="round"/>`+ne.join("")+"</g>")});let U=`<svg class="kan-fan-svg" viewBox="0 0 ${y} ${w}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">`+ge.join("")+_e.join("")+R.join("")+W.join("")+"</svg>",I=u?`${d(u)}=`:"",se=f.map((_,A)=>{let Q=Z(_,A),ee=_.points.filter(ie=>ie!==null),q=ee.length?ee[0]:void 0,ne=ee.length?ee[ee.length-1]:void 0,te="";if(ne!==void 0&&q!==void 0){let ie=ne-q;if(Math.abs(ie)>=.005){let Rn=ie>0?"up":"down",Sn=ie>0?"\u25B2":"\u25BC";te=` <span class="kan-fan-delta ${Rn}">${ie>0?"+":""}${ie.toFixed(2)} ${Sn}</span>`}else te=' <span class="kan-fan-delta flat">\u2014</span>'}let he=ne!==void 0?`${I}${ne.toFixed(2)}`:"\u2014",ke=_.lastSubject&&this.isLinkable(P(_.lastSubject),o)?`<a href="${d(this.hrefForSubject(_.lastSubject,o))}">${d(_.label)}</a>`:d(_.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">${ke}</span><span class="kan-fan-legend-cur">${he}${te}</span></div>`});return`<section class="kan-fan"><div class="kan-fan-chart">${U}</div><div class="kan-fan-legend">${se.join("")}</div></section>`}renderResourceGrid(e,n,a){let t=F(e,Y);if(!t)return"<!-- LookRenderer.ResourceGrid: no look.source -->";let o=G(this.catalog,t),s=o?ae(o).some(r=>{let l=r.subject.name;return l==="ObjectProperty"||l==="DatatypeProperty"||l==="Property"}):!1,i=[];if(s&&a){let r=this.readPropertyValueReferences(a,t);for(let l of r){let u=G(this.catalog,{publisher:l.subject.publisher,package_:l.subject.package_,name:l.subject.name,...l.subject.version?{version:l.subject.version}:{}});u&&i.push(u)}}else i=this.findInstancesOfClass(t);if(i.length===0)return`<!-- LookRenderer.ResourceGrid: no resources for ${t.publisher}/${t.package_}/${t.name} -->`;let c=[];for(let r of i){let l=E(this.catalog,r),u=l.label,p=l.summary,k=r.namespace||"",h=k.split("/")[1]?.split("@")[0]??"",f=k.split("@")[1]??"",m=f?oe(f):void 0,b=me.formatResourceUrl({publisher:P(r),package_:h,name:r.name,...m?{version:m}:{}},"=",{contextPublisher:n}),j=p?`<p class="kan-resource-card-subtitle">${d(p)}</p>`:"",$=`<h3 class="kan-resource-card-title">${d(u)}</h3>${j}`;c.push(this.isLinkable(P(r),n)?`<a class="kan-resource-card" href="${d(b)}">${$}</a>`:`<span class="kan-resource-card">${$}</span>`)}return`<section class="kan-resource-grid">
84
+ ${c.join(`
85
+ `)}
86
+ </section>`}findInstancesOfClass(e){let n=[];for(let a of this.catalog){if(!(a instanceof J))continue;ae(a).map(s=>s.subject).some(s=>s.publisher===e.publisher&&s.package_===e.package_&&s.name===e.name)&&n.push(a)}return n}renderBreadcrumb(e,n,a){let o=(e.namespace||"").split("/");if(o.length<2)return"";let s=o[0],i=o[1]??"",c=i.split("@")[0]??"",r=i.split("@")[1]??"";if(!s||!c)return"";if(a?.bareOverview)return`<nav class="kan-breadcrumb"><ol>
87
+ <li><a href="/">${d(s)}</a></li>
88
+ <li aria-current="page">${d(c)}</li>
89
+ </ol></nav>`;let l=e.name,p=!!G(this.catalog,{publisher:s,package_:c,name:c}),k=r?`${c}@${r}`:c,h=r?`/${c}/${r}/${c}`:`/${c}/${c}`,f=e.name===c,m=[];return m.push(`<li><a href="/">${d(s)}</a></li>`),f?m.push(`<li aria-current="page">${d(k)}</li>`):(m.push(p?`<li><a href="${d(h)}">${d(k)}</a></li>`:`<li>${d(k)}</li>`),m.push(`<li aria-current="page">${d(l)}</li>`)),`<nav class="kan-breadcrumb"><ol>
90
+ ${m.join(`
91
+ `)}
92
+ </ol></nav>`}renderNavGroup(e,n){let a=M(this.publisherSubject(n),Gn),t=a instanceof D?a.object??[]:a instanceof x&&a.object instanceof S?[a.object]:[];if(t.length===0)return"";let o=[];for(let s of t){if(!(s instanceof S))continue;let i=G(this.catalog,{publisher:s.subject.publisher,package_:s.subject.package_,name:s.subject.name}),{href:c,label:r}=this.resolveNavEntry(s,i,n),l=`/${e.namespace?.split("/")[1]?.split("@")[0]}/${(e.namespace||"").split("@")[1]}/${e.name}`,u=c===l?' aria-current="page"':"";o.push(`<li><a class="kan-nav-link" href="${d(c)}"${u}>${d(r)}</a></li>`)}return`<nav class="kan-site-nav"><ul>
93
+ ${o.join(`
94
+ `)}
95
+ </ul></nav>`}renderSiteFooter(e){let n=M(this.publisherSubject(e),Wn),a;if(n instanceof X?a=n.object:n instanceof x&&n.object instanceof S&&(a=G(this.catalog,{publisher:n.object.subject.publisher,package_:n.object.subject.package_,name:n.object.subject.name})),!a)return"";let t=L(a,zn),o=M(a,Yn),s=o instanceof D?o.object??[]:o instanceof x&&o.object instanceof S?[o.object]:[],i=[];for(let r of s){if(!(r instanceof S))continue;let l=G(this.catalog,{publisher:r.subject.publisher,package_:r.subject.package_,name:r.subject.name}),{href:u,label:p}=this.resolveNavEntry(r,l,e);i.push(`<a class="kan-footer-link" href="${d(u)}">${d(p)}</a>`)}if(!t&&i.length===0)return"";let c=[];return i.length>0&&c.push(`<div class="kan-footer-links">${i.join("")}</div>`),t&&c.push(`<p class="kan-footer-text">${d(t)}</p>`),`<footer class="kan-site-footer">${c.join(`
96
+ `)}</footer>`}resolveNavEntry(e,n,a){if(n&&ae(n).map(c=>c.subject).some(c=>c.publisher===Ne.publisher&&c.package_===Ne.package_&&c.name===Ne.name)){let c=L(n,Ve),r=M(n,cn);if(r instanceof x&&r.object instanceof S){let l=r.object,u=this.readLabelForUri({publisher:l.subject.publisher,package_:l.subject.package_,name:l.subject.name});return{href:this.urlForReference(l,cn,a),label:c??u??l.subject.name}}}let t=me.formatResourceUrl({publisher:e.subject.publisher,package_:e.subject.package_,...e.subject.version?{version:e.subject.version}:{},name:e.subject.name},"*",{contextPublisher:a}),o=n?E(this.catalog,n).label:e.subject.name;return{href:t,label:o}}codeHighlighter(){return this._codeHighlighter||(this._codeHighlighter=new Ue(this.collectGrammars())),this._codeHighlighter}collectGrammars(){let e=[];for(let n of this.catalog){if(!(n instanceof J)||!ae(n).some(i=>v(i.subject,rt)))continue;let a=L(n,it);if(!a)continue;let t=M(n,ct),o=t instanceof D?t.object??[]:[],s=[];for(let i of o){if(!(i instanceof z))continue;let c=F(i,lt),r=L(i,ut);!c||!r||s.push({tokenClass:c.name,pattern:r})}e.push({language:a,rules:s})}return e}renderLinks(e,n){let a=F(e,Y);if(!a)return"";let t=M(n,a),o=[];t instanceof D?o=t.object??[]:t instanceof X?o=[t.object]:t instanceof x&&t.object instanceof S&&(o=[t.object]);let s=[];for(let i of o){let c;if(i instanceof z?c=i:i instanceof S&&(c=G(this.catalog,{publisher:i.subject.publisher,package_:i.subject.package_,name:i.subject.name})),!c)continue;let r=L(c,pt);if(!r)continue;let l=L(c,Ve)??r,u=L(c,on),p=u?` title="${d(u)}"`:"";s.push(`<a class="kan-extlink" href="${d(r)}"${p} target="_blank" rel="noopener noreferrer">${d(l)}</a>`)}return s.length===0?"":`<section class="kan-extlink-row">${s.join("")}</section>`}renderMarkdown(e,n,a){let t=F(e,Y);if(!t)return"<!-- LookRenderer.Markdown: no look.source -->";let o=M(n,t),s=new Map,i;if(o instanceof Le?i=this.resolveMarkdownLinks(o,a,s):o instanceof B?i=o.object:i=this.readPropertyValueText(n,t),!i)return"";let c=this.codeHighlighter(),r=Me(i,{highlight:(l,u)=>c.highlight(l,u)});for(let[l,u]of s){let p=new RegExp('(<a href="'+_n(l)+'">)([^<]*)(</a>)',"g");r=r.replace(p,`$1<img class="kan-md-chip" src="${d(u)}" alt="" loading="lazy">$2$3`)}return`<section class="kan-markdown">
97
+ ${r}
98
+ </section>`}resolveMarkdownLinks(e,n,a){let t=e.object,o=[...e.links].sort((s,i)=>i.startOffset-s.startOffset);for(let s of o){let i;if(s.target&&this.isLinkable(s.target.subject.publisher,n)){let c=s.target.subject,r=(s.displayText??this.readLabelForUri({publisher:c.publisher,package_:c.package_,name:c.name})??s.reference).replace(/[[\]]/g,""),l=me.formatResourceUrl({publisher:c.publisher,package_:c.package_,name:c.name,...c.version?{version:c.version}:{}},"=",{contextPublisher:n});a&&a.set(l,`${l}.svg`),i=`[${r}](${l})`}else if(s.target){let c=s.target.subject;i=(s.displayText??this.readLabelForUri({publisher:c.publisher,package_:c.package_,name:c.name})??s.reference).replace(/[[\]]/g,"")}else i=s.displayText??s.reference;t=t.slice(0,s.startOffset)+i+t.slice(s.endOffset)}return t}renderRawMarkdown(e){let n=this.findCascadedLook(e);if(!n)return;let a=ze(n.declaration),t=[];for(let o of a){let s=Se(o);if(!s||!v(s,rn))continue;let i=F(o,Y);if(!i)continue;let c=this.readPropertyValueText(e,i);c&&t.push(c)}return t.length>0?t.join(`
99
+
100
+ `):void 0}renderHero(e,n,a){let t=f=>{let m=M(e,f);return m instanceof re?m.object===!0:m instanceof B&&m.object==="true"},o=t(Bt),s=!o&&t(Ht),i=o||s,r=[`<header class="${o?"kan-hero kan-hero-has-avatar":s?"kan-hero kan-hero-has-icon":"kan-hero"}">`];if(i){let f=this.svgUrlForSubject(n,a),m=o?"kan-hero-avatar":"kan-hero-icon";r.push(`<img class="${m}" src="${d(f)}" alt="" loading="lazy"/>`),r.push('<div class="kan-hero-text">')}let l=F(e,Mt);if(l){let f=this.readPropertyValueText(n,l);f&&r.push(`<span class="kan-hero-eyebrow">${d(Fe(f)??f)}</span>`)}let u=F(e,Pt),p="";u&&(p=this.readPropertyValueText(n,u)??""),p||(p=E(this.catalog,n).label),r.push(`<h1 class="kan-hero-title">${d(Fe(p)??p)}</h1>`);let k=F(e,Vt);if(k){let f=this.readPropertyValueText(n,k);f&&r.push(`<p class="kan-hero-subtitle">${d(Fe(f)??f)}</p>`)}let h=F(e,mn);if(h){let f=this.readPropertyValueReferences(n,h);if(f.length>0){let m=f.map(b=>this.renderBadge(b,mn,a)).join("");r.push(`<div class="kan-hero-badges">${m}</div>`)}}return i&&r.push("</div>"),r.push("</header>"),r.join(`
101
+ `)}renderPropertyList(e,n,a){let t=F(e,Y);if(!t)return"<!-- LookRenderer: PropertyList missing look.source -->";let o=this.readLabelForUri(t)??t.name,s=M(n,t),i=this.gatherValueItems(s),c=i.length>0?i.map(r=>`<li>${this.renderInlineValue(r,Y,a)}</li>`).join(""):'<li class="kan-empty">(no values)</li>';return['<section class="kan-property-list">',`<h3 class="kan-property-list-title">${d(o)}</h3>`,`<ul class="kan-property-list-items">${c}</ul>`,"</section>"].join(`
102
+ `)}renderPropertyTable(e,n,a,t=""){let o=F(e,Y);if(!o)return"<!-- LookRenderer: PropertyTable missing look.source -->";let s=this.gatherValueItems(M(n,o)).filter(r=>r instanceof z);if(s.length===0)return"";let i=this.readLabelForUri(o)??o.name,c=t?`${t}.${o.name}`:o.name;return this.renderEmbeddedTable(s,a,i,c)}renderEmbeddedTable(e,n,a,t){let o=[],s=new Set;for(let f of e)for(let m of f.statement){let b=m.predicate?.subject;if(!b||this.isMetaPredicate(b))continue;let j=`${b.publisher}/${b.package_}/${b.name}`;s.has(j)||(s.add(j),o.push({uri:{publisher:b.publisher,package_:b.package_,name:b.name},label:this.readLabelForUri(b)??b.name}))}if(o.length===0)return"";let i=e.map(f=>E(this.catalog,f).label),c=e.some((f,m)=>i[m]!==""&&i[m]!==f.name),r=!!t,l=(r?'<th class="kan-anchor-col"></th>':"")+(c?"<th></th>":"")+o.map(f=>`<th>${d(f.label)}</th>`).join(""),u=e.map((f,m)=>{let b=r&&f.name?`${t}.${f.name}`:"",j=b?` id="${d(b)}"`:"",$=r?`<td class="kan-anchor-col">${b?this.anchorLink(b):""}</td>`:"",K=c?`<th scope="row">${d(i[m]??"")}</th>`:"",O=o.map(y=>{let w=M(f,y.uri);return`<td>${w?this.tableCellValue(w,n):""}</td>`}).join("");return`<tr${j}>${$}${K}${O}</tr>`}).join(""),p=r&&t?` id="${d(t)}"`:"",k=r&&t?this.anchorLink(t):"",h=a?`<caption>${d(a)}${k}</caption>`:"";return`<table class="kan-property-table"${p}>${h}<thead><tr>${l}</tr></thead><tbody>${u}</tbody></table>`}tableCellValue(e,n){if(e instanceof Le)return this.statementToMarkdownHtml(e,n);if(e instanceof B)return vn(e.object);if(e instanceof pe||e instanceof re)return d(String(e.object));if(e instanceof x&&e.object instanceof S)return this.detailReferenceLink(e.object,n);if(e instanceof X)return this.renderEmbeddedTable([e.object],n);if(e instanceof D){let a=e.object??[],t=a.filter(o=>o instanceof z);return t.length>0&&t.length===a.length?this.renderEmbeddedTable(t,n):a.map(o=>o instanceof S?this.detailReferenceLink(o,n):o instanceof z?this.renderEmbeddedTable([o],n):d(String(o))).filter(o=>o).join(", ")}return""}statementToMarkdownHtml(e,n){let a=new Map,t;if(e instanceof Le?t=this.resolveMarkdownLinks(e,n,a):e instanceof B&&(t=e.object),!t)return"";let o=this.codeHighlighter(),s=Me(t,{highlight:(i,c)=>o.highlight(i,c)});for(let[i,c]of a){let r=new RegExp('(<a href="'+_n(i)+'">)([^<]*)(</a>)',"g");s=s.replace(r,`$1<img class="kan-md-chip" src="${d(c)}" alt="" loading="lazy">$2$3`)}return s}renderBadgeRow(e,n,a){let t=F(e,Y);if(!t)return"<!-- LookRenderer: BadgeRow missing look.source -->";let o=this.readPropertyValueReferences(n,t);return o.length===0?"":`<div class="kan-badge-row">${o.map(i=>this.renderBadge(i,Y,a)).join("")}</div>`}renderChipRow(e,n,a){let t=Ye(e,zt);if(t.length===0)return"<!-- LookRenderer: ChipRow has no look.chips -->";let o=[];for(let s of t){let i=M(n,s);if(!i)continue;let c=this.readLabelForUri(s)??s.name,r=this.renderStatementInlineValue(i,s,a);r&&o.push(`<span class="kan-chip"><span class="kan-chip-key">${d(c)}</span> <span class="kan-chip-val">${r}</span></span>`)}return o.length===0?"":`<div class="kan-chip-row">${o.join("")}</div>`}renderReferenceList(e,n,a){let t=Ye(e,bn);if(t.length===0)return"<!-- LookRenderer: ReferenceList has no look.entries -->";let o=L(e,dn),s=L(e,Ot),i=[];for(let c of t){let r=this.readPropertyValueReferences(n,c);if(r.length===0)continue;let l=this.readLabelForUri(c)??c.name;if(o){let u=r.map(p=>this.renderDetailRow(p,o,s,a)).filter(p=>p).join("");u&&i.push(`<dt>${d(l)}</dt><dd><ul class="kan-ref-rows">${u}</ul></dd>`)}else{let u=r.map(p=>this.renderReferenceLink(p,bn,a)).join(", ");i.push(`<dt>${d(l)}</dt><dd>${u}</dd>`)}}return i.length===0?"":`<dl class="kan-reference-list">${i.join("")}</dl>`}renderDetailRow(e,n,a,t){let o=G(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 s=this.resolvePath(o,n)??E(this.catalog,o).label,i="";if(a){let u=this.resolvePath(o,a);u&&(i=`<span class="kan-ref-badge">${d(u)}</span>`)}let c=`<span class="kan-ref-text">${d(s)}</span>${i}`;if(!this.isLinkable(P(o),t))return`<li class="kan-ref-row"><span class="kan-ref-rowlink">${c}</span></li>`;let r=this.hrefForSubject(o,t),l=this.svgUrlForSubject(o,t);return`<li class="kan-ref-row"><a class="kan-ref-rowlink" href="${d(r)}"><img class="kan-ref-icon" src="${d(l)}" alt="" loading="lazy"/>`+c+"</a></li>"}readPropertyValueText(e,n){let a=M(e,n);if(a){if(a instanceof B)return a.object;if(a instanceof x){let t=a.object;return this.readLabelForUri({publisher:t.subject.publisher,package_:t.subject.package_,name:t.subject.name})??t.subject.name}if(a instanceof X)return this.readEmbeddedText(a.object,0)||void 0;if(a instanceof D)return(a.object??[]).map(o=>o instanceof S?this.readLabelForUri({publisher:o.subject.publisher,package_:o.subject.package_,name:o.subject.name})??o.subject.name:o instanceof z?this.readEmbeddedText(o,0):String(o)).filter(o=>o).join(", ")}}readEmbeddedText(e,n){if(n>=hn)return"\u2026";let a=[];for(let t of e.statement)if(t.predicate?.subject?.name!=="type")if(t instanceof B)a.push(t.object);else if(t instanceof pe||t instanceof re)a.push(String(t.object));else if(t instanceof x){let s=t.object;a.push(this.readLabelForUri({publisher:s.subject.publisher,package_:s.subject.package_,name:s.subject.name})??s.subject.name)}else t instanceof X&&a.push(this.readEmbeddedText(t.object,n+1));return a.filter(t=>t).join(", ")}readPropertyValueReferences(e,n){let a=M(e,n);if(!a)return[];if(a instanceof x)return[a.object];if(a instanceof D){let t=[];for(let o of a.object??[])o instanceof S&&t.push(o);return t}return[]}gatherValueItems(e){return e?e instanceof D?e.object??[]:e instanceof x?[e.object]:e instanceof X?[e.object]:e instanceof B?[e.object]:e instanceof pe||e instanceof re?[e.object]:[]:[]}renderInlineValue(e,n,a,t=0){return e instanceof S?this.renderReferenceLink(e,n,a):e instanceof z?this.renderEmbeddedInline(e,a,t):typeof e=="string"?d(e):typeof e=="number"||typeof e=="boolean"?d(String(e)):""}renderStatementInlineValue(e,n,a,t=0){return e instanceof B?d(e.object):e instanceof pe||e instanceof re?d(String(e.object)):e instanceof x?this.renderReferenceLink(e.object,n,a):e instanceof X?this.renderEmbeddedInline(e.object,a,t):e instanceof D?(e.object??[]).map(s=>this.renderInlineValue(s,n,a,t)).filter(s=>s).join(", "):""}renderEmbeddedInline(e,n,a=0){if(a>=hn)return"\u2026";let t=[];for(let o of e.statement){let s=o.predicate?.subject;if(!s||s.name==="type")continue;let i=this.readLabelForUri({publisher:s.publisher,package_:s.package_,name:s.name})??s.name,c=this.renderStatementInlineValue(o,s,n,a+1);c&&t.push(`<dt>${d(i)}</dt><dd>${c}</dd>`)}return t.length?`<dl class="kan-embedded">${t.join("")}</dl>`:""}renderReferenceLink(e,n,a){let t=this.readLabelForUri({publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name})??e.subject.name;if(!this.isLinkable(e.subject.publisher,a))return`<span class="kan-link-plain">${d(t)}</span>`;let o=this.urlForReference(e,n,a);return`<a class="kan-link" href="${d(o)}">${d(t)}</a>`}isLinkable(e,n){return e===n}renderBadge(e,n,a){let t=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}),s=o?` title="${d(o)}"`:"";if(!this.isLinkable(e.subject.publisher,a))return`<span class="kan-badge"${s}>${d(t)}</span>`;let i=this.urlForReference(e,n,a);return`<a class="kan-badge" href="${d(i)}"${s}>${d(t)}</a>`}urlForReference(e,n,a){let t=n?this.getUrlFormForProperty(n):"=";return me.formatResourceUrl({publisher:e.subject.publisher,package_:e.subject.package_,...e.subject.version?{version:e.subject.version}:{},name:e.subject.name},t,{contextPublisher:a})}getUrlFormForProperty(e){let n=G(this.catalog,e);if(!n)return"=";let a=L(n,Yt);return a==="*"||a==="^"||a==="~"||a==="="?a:"="}readLabelForUri(e){let n=G(this.catalog,e);if(n)return E(this.catalog,n).label}readCommentForUri(e){let n=G(this.catalog,e);if(n)return E(this.catalog,n).summary}};function We(g){let e=new Map;for(let n of g.statement){if(!(n instanceof X)||!de(n,Ee.publisher,Ee.package_,Ee.name))continue;let a=n.object;for(let t of a.statement){if(!(t instanceof B))continue;let o=t.predicate?.subject?.name;if(!o)continue;let s=t.object;e.has(o)||e.set(o,s)}}return e}function Ie(g){for(let e of g.statement)if(e instanceof X&&de(e,xe.publisher,xe.package_,xe.name))return e.object}function ze(g){for(let e of g.statement){if(!(e instanceof D)||!de(e,Ge.publisher,Ge.package_,Ge.name))continue;let n=[];for(let a of e.object??[])a instanceof z&&n.push(a);return n}return[]}function Se(g){for(let e of g.statement)if(e instanceof x&&e.predicate?.subject?.name==="type"&&e.object instanceof S){let n=e.object.subject;return{publisher:n.publisher,package_:n.package_,name:n.name}}}function F(g,e){for(let n of g.statement)if(n instanceof x&&de(n,e.publisher,e.package_,e.name)&&n.object instanceof S){let a=n.object.subject;return{publisher:a.publisher,package_:a.package_,name:a.name}}}function Ye(g,e){for(let n of g.statement){if(!(n instanceof D)||!de(n,e.publisher,e.package_,e.name))continue;let a=[];for(let t of n.object??[])t instanceof S&&a.push({publisher:t.subject.publisher,package_:t.subject.package_,name:t.subject.name});return a}return[]}function M(g,e){for(let n of g.statement)if(de(n,e.publisher,e.package_,e.name))return n}function L(g,e){for(let n of g.statement)if(n instanceof B&&de(n,e.publisher,e.package_,e.name))return n.object}function $n(g,e){for(let n of g.statement)if(n instanceof pe&&de(n,e.publisher,e.package_,e.name))return n.object}function qt(g){for(let e of ae(g))if(v(e.subject,Fn)||v(e.subject,Tn))return!0;return!1}function ae(g){let e=[];for(let n of g.statement)if(n instanceof x){if(n.predicate?.subject?.name!=="type")continue;n.object instanceof S&&e.push(n.object)}else if(n instanceof D){if(n.predicate?.subject?.name!=="type")continue;for(let a of n.object??[])a instanceof S&&e.push(a)}return e}function Ke(g){let e=[];for(let n of g.statement)if(n instanceof x){if(n.predicate?.subject?.name!=="subClassOf")continue;n.object instanceof S&&e.push(n.object)}else if(n instanceof D){if(n.predicate?.subject?.name!=="subClassOf")continue;for(let a of n.object??[])a instanceof S&&e.push(a)}return e}function le(g,e){let n=[];for(let a of g){if(!(a instanceof J)||a.name!==e.name)continue;(a.namespace||"").startsWith(`${e.publisher}/${e.package_}@`)&&n.push(a)}return n}function G(g,e){let n="version"in e?e.version:void 0;if(n){let a=`${e.publisher}/${e.package_}@${n.major}.${n.minor}.${n.patch}`;for(let t of g)if(t instanceof J&&t.name===e.name&&t.namespace===a)return t}for(let a of g){if(!(a instanceof J)||a.name!==e.name)continue;if((a.namespace||"").startsWith(`${e.publisher}/${e.package_}@`))return a}}function de(g,e,n,a){let t=g.predicate?.subject;return t?t.publisher===e&&t.package_===n&&t.name===a:!1}function v(g,e){return g.publisher===e.publisher&&g.package_===e.package_&&g.name===e.name}function V(g){return`${g.publisher}/${g.package_}/${g.name}`}function P(g){let e=g.namespace||"",n=e.indexOf("/");return n>=0?e.substring(0,n):e}function d(g){return g.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function Jt(g){let e=g.lastIndexOf(".");return e>=0?g.substring(e+1):g}function Xt(g,e){for(let n of g.statement)if(n.predicate?.subject?.name===e)return n}function ue(g){return g.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function qe(g,e){return g.length<=e?g:g.slice(0,e).replace(/\s+\S*$/,"")+"\u2026"}function jn(g){return g.toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}function _n(g){return g.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function vn(g){let e=Fe(g);return d(e||g)}function Fe(g){let e=/^(\d{4})-(\d{2})-(\d{2})([T ]\d{2}:\d{2}(?::\d{2})?(?:\.\d+)?(?:Z|[+-]\d{2}:?\d{2})?)?$/.exec(g.trim());if(!e)return;let n=Date.parse(g);if(!Number.isFinite(n))return;let a=new Date(n),o=`${["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"][a.getUTCMonth()]} ${a.getUTCDate()}, ${a.getUTCFullYear()}`;if(!e[4])return o;let s=a.getUTCHours(),i=(s+11)%12+1,c=s>=12?"PM":"AM";return`${o} \xB7 ${i}:${String(a.getUTCMinutes()).padStart(2,"0")} ${c} UTC`}function we(g){if(!g)return"";let e=/^(\d{4})-(\d{2})-(\d{2})/.exec(g);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)}`:g}export{E as a,Me as b,Je as c};
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import{a as ct,b as lt,c as dt,d as ut,e as pt}from"./chunk-DGR77PRS.js";import{a as or,c as ar}from"./chunk-2WQR7OHH.js";import{a as at,b as it,c as st,d as b,e as S,f as i}from"./chunk-B7QSKW7E.js";import{a as nr}from"./chunk-IIODYDKS.js";import"./chunk-3NEUHF7E.js";import{a as Te,b as je,c as Le,d as Fe,e as De,f as Ue,g as Ve,h as He}from"./chunk-H673KOGN.js";import{a as Ie,b as Ne,c as Oe,d as Ae}from"./chunk-VHUJSHH7.js";import{a as ft,b as yt,c as gt,d as ht}from"./chunk-HMDTGNEA.js";import{a as kt,b as $t}from"./chunk-DC774EQL.js";import{a as Ct}from"./chunk-NIGFQYVA.js";import{A as Qt,B as er,C as tr,E as rr,a as vt,b as Et,c as Kt,d as It,e as Bt,f as Tt,g as jt,h as Lt,i as Ft,j as Dt,k as Nt,l as Ot,m as At,n as Ut,o as Vt,p as Ht,q as Mt,r as _t,s as zt,t as Gt,u as Wt,v as Jt,w as qt,x as Yt,y as Xt,z as Zt}from"./chunk-XHCSTAUK.js";import{a as tt,b as rt,c as nt}from"./chunk-YYFIJNSP.js";import{a as F,b as N,c as We}from"./chunk-H2LEQLVD.js";import{a as Be}from"./chunk-7CUTGGH3.js";import{a as ot,b as bt,c as St,d as Pt,e as Rt,f as wt,g as xt}from"./chunk-N224PFBI.js";import"./chunk-Q4DKP5DO.js";import{a as Pe,b as Re,c as we,d as xe,e as $e,f as ve,g as Ee,h as Ke}from"./chunk-FQHALFRR.js";import{b as Je,c as qe,d as Ye,e as Xe,f as Ze,h as Qe,j as et}from"./chunk-64TVBQFR.js";import{a as Me,b as j,c as L,d as D,e as ze,f as Ge,g as O,h as A,i as U,j as V,k as H,l as M}from"./chunk-W6T7MOKY.js";import{a as _e}from"./chunk-FUUTGGJS.js";import{a as mt}from"./chunk-ODIECDN7.js";import{VersionOperator as yo}from"@kanonak-protocol/types/document/models/enums";import{existsSync as Rr,readFileSync as wr}from"fs";import{homedir as xr}from"os";import{join as $r}from"path";import{execFile as ir}from"child_process";import{promisify as sr}from"util";var C=sr(ir),P="kanonak",R="/usr/bin/security",p=class{async get(e){let r=i(e);try{let{stdout:n}=await C(R,["find-generic-password","-s",P,"-a",r,"-w"],{timeout:1e4});try{return JSON.parse(n.trim())}catch{throw new Error(`Stored credential for '${r}' is corrupted (not valid JSON).
1
+ import{a as ct,b as lt,c as dt,d as ut,e as pt}from"./chunk-SD5QKNBC.js";import{a as or,c as ar}from"./chunk-WQZBKRDG.js";import{a as at,b as it,c as st,d as b,e as S,f as i}from"./chunk-WDQONH3P.js";import{a as nr}from"./chunk-IIODYDKS.js";import"./chunk-3NEUHF7E.js";import{a as Te,b as je,c as Le,d as Fe,e as De,f as Ue,g as Ve,h as He}from"./chunk-H673KOGN.js";import{a as Ie,b as Ne,c as Oe,d as Ae}from"./chunk-VHUJSHH7.js";import{a as ft,b as yt,c as gt,d as ht}from"./chunk-CYDDQF6S.js";import{a as kt,b as $t}from"./chunk-DC774EQL.js";import{a as Ct}from"./chunk-NIGFQYVA.js";import{A as Qt,B as er,C as tr,E as rr,a as vt,b as Et,c as Kt,d as It,e as Bt,f as Tt,g as jt,h as Lt,i as Ft,j as Dt,k as Nt,l as Ot,m as At,n as Ut,o as Vt,p as Ht,q as Mt,r as _t,s as zt,t as Gt,u as Wt,v as Jt,w as qt,x as Yt,y as Xt,z as Zt}from"./chunk-BSJ6PEKE.js";import{a as tt,b as rt,c as nt}from"./chunk-VJT6YUWK.js";import{a as F,b as N,c as We}from"./chunk-H2LEQLVD.js";import{a as Be}from"./chunk-7CUTGGH3.js";import{a as ot,b as bt,c as St,d as Pt,e as Rt,f as wt,g as xt}from"./chunk-N224PFBI.js";import"./chunk-Q4DKP5DO.js";import{a as Pe,b as Re,c as we,d as xe,e as $e,f as ve,g as Ee,h as Ke}from"./chunk-FQHALFRR.js";import{b as Je,c as qe,d as Ye,e as Xe,f as Ze,h as Qe,j as et}from"./chunk-64TVBQFR.js";import{a as Me,b as j,c as L,d as D,e as ze,f as Ge,g as O,h as A,i as U,j as V,k as H,l as M}from"./chunk-W6T7MOKY.js";import{a as _e}from"./chunk-FUUTGGJS.js";import{a as mt}from"./chunk-ODIECDN7.js";import{VersionOperator as yo}from"@kanonak-protocol/types/document/models/enums";import{existsSync as Rr,readFileSync as wr}from"fs";import{homedir as xr}from"os";import{join as $r}from"path";import{execFile as ir}from"child_process";import{promisify as sr}from"util";var C=sr(ir),P="kanonak",R="/usr/bin/security",p=class{async get(e){let r=i(e);try{let{stdout:n}=await C(R,["find-generic-password","-s",P,"-a",r,"-w"],{timeout:1e4});try{return JSON.parse(n.trim())}catch{throw new Error(`Stored credential for '${r}' is corrupted (not valid JSON).
2
2
  Run 'kanonak logout ${r}' then 'kanonak login ${r}' to fix.`)}}catch(n){if(X(n,44))return null;throw new Error(`macOS Keychain read failed for '${r}': ${w(n)}
3
3
  The Keychain may be locked or inaccessible.
4
4
  Try unlocking it via Keychain Access.app or running 'security unlock-keychain'.`)}}async store(e,r){let n=i(e),o=JSON.stringify(r);try{await C(R,["add-generic-password","-s",P,"-a",n,"-U","-w",o],{timeout:1e4})}catch(a){throw new Error(`macOS Keychain write failed for '${n}': ${w(a)}