@kanonak-protocol/sdk 3.45.0 → 3.47.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-RCI34BYO.js";import{a as Qe}from"./chunk-BFZZ6YGX.js";import{a as H,b as L,c as W,d as F}from"./chunk-VHUJSHH7.js";import{a as Pe,b as we,c as he}from"./chunk-NIJV5UYW.js";import{a as ye,b as ke,e as be}from"./chunk-4TJZIM7A.js";import"./chunk-NIGFQYVA.js";import{A as We,B as Fe,C as Ge,D as Xe,a as Ke,b as xe,c as Se,d as Re,f as De,g as Be,h as Ce,i as Ee,j as je,k as ve,l as _e,m as Ie,n as Ae,o as Te,p as Oe,q as Ve,r as $e,s as Ue,t as ze,u as Me,v as Ne,w as Je,x as He,y as qe,z as Le}from"./chunk-SKTXJV4T.js";import"./chunk-FJ35VIV6.js";import{a as Y,c as le,f as pe}from"./chunk-FMYLEPMC.js";import{a as G,b as X,c as Q,d as ee,e as re,f as te,g as ne,h as oe,i as se,j as ie,k as ae,l as ce}from"./chunk-W6T7MOKY.js";import{a as q}from"./chunk-7CUTGGH3.js";import{a as O,b as V,c as $,d as U,e as z,f as M,g as N,h as J}from"./chunk-FQHALFRR.js";import{b as ue,c as de}from"./chunk-HEMBMX7T.js";import{a as Z}from"./chunk-FUUTGGJS.js";var j="kanonak-credentials",u="credentials",Ye=1,f=class{async get(r){let e=d(r),t=await h();return new Promise((o,a)=>{let s=t.transaction(u,"readonly"),i=s.objectStore(u).get(e);i.onsuccess=()=>o(i.result??null),i.onerror=()=>a(new Error(`IndexedDB read failed for '${e}': ${i.error?.message}`)),s.oncomplete=()=>t.close()})}async store(r,e){let t=d(r),o=await h();return new Promise((a,s)=>{let l=o.transaction(u,"readwrite"),c=l.objectStore(u).put(e,t);c.onsuccess=()=>a(),c.onerror=()=>s(new Error(`IndexedDB write failed for '${t}': ${c.error?.message}`)),l.oncomplete=()=>o.close()})}async remove(r){let e=d(r),t=await h();return new Promise((o,a)=>{let s=t.transaction(u,"readwrite"),i=s.objectStore(u).delete(e);i.onsuccess=()=>o(),i.onerror=()=>a(new Error(`IndexedDB delete failed for '${e}': ${i.error?.message}`)),s.oncomplete=()=>t.close()})}async list(){let r=await h();return new Promise((e,t)=>{let o=r.transaction(u,"readonly"),s=o.objectStore(u).getAllKeys();s.onsuccess=()=>e(s.result??[]),s.onerror=()=>t(new Error(`IndexedDB list failed: ${s.error?.message}`)),o.oncomplete=()=>r.close()})}};function h(){return new Promise((n,r)=>{let e=indexedDB.open(j,Ye);e.onupgradeneeded=()=>{let t=e.result;t.objectStoreNames.contains(u)||t.createObjectStore(u)},e.onsuccess=()=>n(e.result),e.onerror=()=>r(new Error(`Failed to open IndexedDB '${j}': ${e.error?.message}
1
+ import{a as ge,b as fe,c as me,d as C,e as E,f as d}from"./chunk-RCI34BYO.js";import{a as Qe}from"./chunk-JGVDV6PM.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-NIJV5UYW.js";import{a as ye,b as ke,e as be}from"./chunk-4TJZIM7A.js";import"./chunk-NIGFQYVA.js";import{A as We,B as Fe,C as Ge,D as Xe,a as Ke,b as xe,c as Se,d as Re,f as De,g as Be,h as Ce,i as Ee,j as je,k as ve,l as _e,m as Ie,n as Ae,o as Te,p as Oe,q as Ve,r as $e,s as Ue,t as ze,u as Me,v as Ne,w as Je,x as He,y as qe,z as Le}from"./chunk-SKTXJV4T.js";import"./chunk-FJ35VIV6.js";import{a as Y,c as le,f as pe}from"./chunk-FMYLEPMC.js";import{a as G,b as X,c as Q,d as ee,e as re,f as te,g as ne,h as oe,i as se,j as ie,k as ae,l as ce}from"./chunk-W6T7MOKY.js";import{a as q}from"./chunk-7CUTGGH3.js";import{a as O,b as V,c as $,d as U,e as z,f as M,g as N,h as J}from"./chunk-FQHALFRR.js";import{b as ue,c as de}from"./chunk-HEMBMX7T.js";import{a as Z}from"./chunk-FUUTGGJS.js";var j="kanonak-credentials",u="credentials",Ye=1,f=class{async get(r){let e=d(r),t=await h();return new Promise((o,a)=>{let s=t.transaction(u,"readonly"),i=s.objectStore(u).get(e);i.onsuccess=()=>o(i.result??null),i.onerror=()=>a(new Error(`IndexedDB read failed for '${e}': ${i.error?.message}`)),s.oncomplete=()=>t.close()})}async store(r,e){let t=d(r),o=await h();return new Promise((a,s)=>{let l=o.transaction(u,"readwrite"),c=l.objectStore(u).put(e,t);c.onsuccess=()=>a(),c.onerror=()=>s(new Error(`IndexedDB write failed for '${t}': ${c.error?.message}`)),l.oncomplete=()=>o.close()})}async remove(r){let e=d(r),t=await h();return new Promise((o,a)=>{let s=t.transaction(u,"readwrite"),i=s.objectStore(u).delete(e);i.onsuccess=()=>o(),i.onerror=()=>a(new Error(`IndexedDB delete failed for '${e}': ${i.error?.message}`)),s.oncomplete=()=>t.close()})}async list(){let r=await h();return new Promise((e,t)=>{let o=r.transaction(u,"readonly"),s=o.objectStore(u).getAllKeys();s.onsuccess=()=>e(s.result??[]),s.onerror=()=>t(new Error(`IndexedDB list failed: ${s.error?.message}`)),o.oncomplete=()=>r.close()})}};function h(){return new Promise((n,r)=>{let e=indexedDB.open(j,Ye);e.onupgradeneeded=()=>{let t=e.result;t.objectStoreNames.contains(u)||t.createObjectStore(u)},e.onsuccess=()=>n(e.result),e.onerror=()=>r(new Error(`Failed to open IndexedDB '${j}': ${e.error?.message}
2
2
  Credential storage requires IndexedDB support in your browser.`))})}async function _(){let n=await crypto.subtle.generateKey({name:"ECDSA",namedCurve:"P-256"},!1,["sign"]),r=await crypto.subtle.exportKey("jwk",n.publicKey);return{signingKey:n.privateKey,publicKeyJwk:r}}async function k(){let n=await crypto.subtle.generateKey({name:"ECDSA",namedCurve:"P-256"},!0,["sign"]),r=await crypto.subtle.exportKey("jwk",n.publicKey),e=await crypto.subtle.exportKey("jwk",n.privateKey);return{keys:{signingKey:n.privateKey,publicKeyJwk:r},dpopKeyPair:{publicKey:r,privateKey:e}}}async function b(n){return{signingKey:await crypto.subtle.importKey("jwk",n.privateKey,{name:"ECDSA",namedCurve:"P-256"},!1,["sign"]),publicKeyJwk:n.publicKey}}async function K(n,r,e,t,o){let a={alg:"ES256",typ:"dpop+jwt",jwk:{kty:n.publicKeyJwk.kty,crv:n.publicKeyJwk.crv,x:n.publicKeyJwk.x,y:n.publicKeyJwk.y}},s={jti:crypto.randomUUID(),htm:r.toUpperCase(),htu:e,iat:Math.floor(Date.now()/1e3)};return t&&(s.ath=await er(t)),o&&(s.nonce=o),await Ze(a,s,n.signingKey)}function x(n){return!n||n.length===0?!1:n.some(r=>r.toUpperCase()==="ES256")}async function Ze(n,r,e){let t=v(JSON.stringify(n)),o=v(JSON.stringify(r)),a=new TextEncoder().encode(`${t}.${o}`),s=await crypto.subtle.sign({name:"ECDSA",hash:"SHA-256"},e,a),l=D(s);return`${t}.${o}.${l}`}async function er(n){let r=new TextEncoder().encode(n),e=await crypto.subtle.digest("SHA-256",r);return D(e)}function v(n){let r=new TextEncoder().encode(n);return D(r.buffer)}function D(n){let r=new Uint8Array(n),e="";for(let t=0;t<r.length;t++)e+=String.fromCharCode(r[t]);return btoa(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}var rr=300*1e3,S=class{credentialBackend;callbackUrl;constructor(r){this.credentialBackend=new f,this.callbackUrl=r??`${window.location.origin}/browser/callback.html`}async authorize(r){let e=d(r),t=await this.discover(e);if(!t)return{success:!1,error:`No OAuth discovery endpoint found for '${e}'.`};if(!t.authorizationEndpoint||!t.tokenEndpoint)return{success:!1,error:`OAuth metadata incomplete for '${e}'.`};let o=x(t.dpopSigningAlgValuesSupported),a=null,s=null;if(o){let g=await k();a=g.keys,s=g.dpopKeyPair}let l=await this.credentialBackend.get(e),i=l?.clientId??null,c=l?.clientSecret??null;if(!i&&t.registrationEndpoint){let g=await this.registerClient(t.registrationEndpoint);if(!g)return{success:!1,error:`Dynamic client registration failed for '${e}'.`};i=g.clientId,c=g.clientSecret??null}if(!i)return{success:!1,error:`No OAuth client credentials for '${e}'.`};let m=tr(),p=await nr(m),R=or(),A=sr(t.authorizationEndpoint,i,this.callbackUrl,R,p),y=await this.openAuthPopup(A,R);if(!y)return{success:!1,error:"Authorization timed out or was cancelled."};if(y.error)return{success:!1,error:`Authorization failed: ${y.error}`};if(!y.code)return{success:!1,error:"No authorization code received."};if(y.state!==R)return{success:!1,error:"State mismatch \u2014 possible CSRF attack."};let P=await this.exchangeCode(t.tokenEndpoint,i,c,y.code,this.callbackUrl,m,a);if(!P)return{success:!1,error:"Token exchange failed."};let T={clientId:i,clientSecret:c,accessToken:P.accessToken??null,refreshToken:P.refreshToken??null,expiresAt:P.expiresIn?new Date(Date.now()+P.expiresIn*1e3).toISOString():null,tokenEndpoint:t.tokenEndpoint,dpopKeyPair:s};return await this.credentialBackend.store(e,T),{success:!0,host:e}}async getCredentialWithKeys(r){let e=await this.credentialBackend.get(r);if(!e)return null;let t=null;return e.dpopKeyPair&&(t=await b(e.dpopKeyPair)),{credential:e,dpopKeys:t}}async logout(r){let e=d(r);return await this.credentialBackend.remove(e),{success:!0,host:e}}async listAuthenticated(){return this.credentialBackend.list()}async discover(r){for(let e of[`https://${r}/.well-known/oauth-authorization-server`,`https://${r}/.well-known/openid-configuration`])try{let t=await fetch(e);if(!t.ok)continue;let o=await t.json();return{issuer:w(o.issuer),authorizationEndpoint:w(o.authorization_endpoint),tokenEndpoint:w(o.token_endpoint),registrationEndpoint:w(o.registration_endpoint),revocationEndpoint:w(o.revocation_endpoint),dpopSigningAlgValuesSupported:I(o.dpop_signing_alg_values_supported),codeChallengeMethodsSupported:I(o.code_challenge_methods_supported)}}catch{continue}return null}async registerClient(r){try{let e=await fetch(r,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({client_name:"Kanonak Browser",redirect_uris:[this.callbackUrl],grant_types:["authorization_code","refresh_token"],response_types:["code"],token_endpoint_auth_method:"none"})});if(!e.ok)return null;let t=await e.json(),o=t.client_id;return o?{clientId:o,clientSecret:t.client_secret}:null}catch{return null}}openAuthPopup(r,e){return new Promise(t=>{let o=window.open(r,"kanonak-auth","width=500,height=700,menubar=no,toolbar=no,location=yes,status=no");if(!o){t(null);return}let a=setTimeout(()=>{i(),t(null)},rr),s=c=>{c.origin===window.location.origin&&(!c.data||c.data.type!=="kanonak-auth-callback"||(i(),t({code:c.data.code??void 0,state:c.data.state??void 0,error:c.data.error??void 0})))},l=setInterval(()=>{o.closed&&(i(),t(null))},500),i=()=>{clearTimeout(a),clearInterval(l),window.removeEventListener("message",s);try{o.close()}catch{}};window.addEventListener("message",s)})}async exchangeCode(r,e,t,o,a,s,l){let i=new URLSearchParams({grant_type:"authorization_code",client_id:e,code:o,redirect_uri:a,code_verifier:s});t&&i.set("client_secret",t);let c={"Content-Type":"application/x-www-form-urlencoded"};l&&(c.DPoP=await K(l,"POST",r));try{let m=await fetch(r,{method:"POST",headers:c,body:i.toString()});if(!m.ok)return null;let p=await m.json();return{accessToken:p.access_token,refreshToken:p.refresh_token,expiresIn:typeof p.expires_in=="number"?p.expires_in:void 0}}catch{return null}}};function tr(){let n=new Uint8Array(32);return crypto.getRandomValues(n),B(n.buffer)}async function nr(n){let r=new TextEncoder().encode(n),e=await crypto.subtle.digest("SHA-256",r);return B(e)}function or(){let n=new Uint8Array(16);return crypto.getRandomValues(n),B(n.buffer)}function sr(n,r,e,t,o){let a=new URLSearchParams({client_id:r,response_type:"code",redirect_uri:e,state:t,code_challenge:o,code_challenge_method:"S256"});return`${n}?${a}`}function B(n){let r=new Uint8Array(n),e="";for(let t=0;t<r.length;t++)e+=String.fromCharCode(r[t]);return btoa(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function w(n){return typeof n=="string"?n:null}function I(n){return Array.isArray(n)?n.filter(r=>typeof r=="string"):null}export{Ne as AmbiguousReferenceRule,se as BooleanStatement,f as BrowserCredentialBackend,S as BrowserOAuthFlow,Fe as ClassDefinitionRule,Ie as ClassHierarchyCycleRule,X as DefinedKanonak,ze as DefinitionPropertyReferenceRule,fe as EdgeType,Y as EmbeddedKanonak,je as EmbeddedKanonakTypeRule,ae as EmbeddedStatement,me as GraphBuilder,F as HttpKanonakDocumentRepository,ve as ImportExistenceRule,H as InMemoryKanonakDocumentRepository,Ue as InstancePropertyReferenceRule,G as Kanonak,we as KanonakDocumentPositions,pe as KanonakObjectParser,Xe as KanonakObjectValidator,q as KanonakParser,Z as KanonakUri,ke as KanonakUriBuilder,ce as ListStatement,Ge as MarkdownLinkRule,le as MarkdownStatement,$e as NamespaceImportCycleRule,De as NamespacePrefixRule,ge as NodeType,oe as NumberStatement,He as ObjectPropertyImportRule,qe as ObjectPropertyValueValidationRule,Se as OntologyValidationError,Ke as OntologyValidationResult,Le as PropertyDomainRule,Ae as PropertyHierarchyCycleRule,Pe as PropertyMetadata,Je as PropertyRangeReferenceRule,Te as PropertyRangeRequiredRule,Ce as PropertyTypeSpecificityRule,We as PropertyValueTypeRule,L as PublisherConfigResolver,W as PublisherIndex,ee as ReferenceKanonak,ie as ReferenceStatement,Be as ResourceNamingRule,ue as ResourceResolver,ye as ResourceTypeClassifier,te as ScalarStatement,re as Statement,ne as StringStatement,Oe as SubClassOfReferenceRule,Ve as SubPropertyOfReferenceRule,Q as SubjectKanonak,Ee as SubjectKanonakTypeRequiredRule,de as TypeResolver,_e as UnresolvedReferenceRule,Re as ValidationContext,xe as ValidationSeverity,Me as XsdImportRule,x as browserServerSupportsDPoP,O as compareVersions,K as createBrowserDPoPProof,U as createVersion,Qe as findDerivation,be as findInstancesByType,$ as formatVersion,k as generateBrowserDPoPKeyPair,_ as generateBrowserDPoPKeys,E as hasValidToken,b as importDPoPKeys,M as isCompatibleVersion,C as isExpired,N as isMajorCompatible,d as normalizeHost,z as parseVersionString,he as parseWithPositions,J as pickHighestDocument,V as versionsEqual};
@@ -0,0 +1 @@
1
+ import{a as g}from"./chunk-FMYLEPMC.js";import{c as l,d as u,g as v,j as p,k as h,l as d}from"./chunk-W6T7MOKY.js";import{a as K,e as b}from"./chunk-FQHALFRR.js";function pe(t,n,e,i){let r=S(t);if(r.length>0){let s=j(r,n,e);return s?{transformation:s.transformation,source:"instance"}:void 0}let a=new Set,o=I(t);for(;o.length>0;){let s=o.shift(),c=x(s.subject);if(a.has(c))continue;a.add(c);let m=R(i,s.subject);if(!m)continue;let _=S(m),D=j(_,n,e);if(D)return{transformation:D.transformation,source:{publisher:s.subject.publisher,package_:s.subject.package_,name:s.subject.name}};for(let U of L(m))o.push(U)}let f={publisher:"kanonak.org",package_:"core-rdf",name:"Resource"};if(!a.has(x(f))){let s=R(i,f);if(s){let c=S(s),m=j(c,n,e);if(m)return{transformation:m.transformation,source:f}}}}function S(t){let n=[];for(let e of t.statement)if(e instanceof d&&k(e,"kanonak.org","derivation","derivations"))for(let i of e.object??[]){if(!(i instanceof g))continue;let r=T(i);r&&n.push(r)}return n}function j(t,n,e){let i=t.filter(o=>E(o.format,n)&&E(o.variant,e));if(i.length<=1)return i[0];let r=i[0].transformation,a=i[0];for(let o of i){let f=o.transformation;if(f.publisher!==r.publisher||f.package_!==r.package_||f.name!==r.name)continue;let s=b(a.transformation.version),c=b(f.version);s&&c&&K(c,s)>0&&(a=o)}return a}function T(t){let n,e,i;for(let r of t.statement)r instanceof p?k(r,"kanonak.org","derivation","format")?n=y(r):k(r,"kanonak.org","derivation","variant")&&(e=y(r)):r instanceof h&&k(r,"kanonak.org","derivation","transformation")&&(i=P(r.object));if(!(!n||!i))return e||(e={publisher:"kanonak.org",package_:"derivation",name:"default"}),{format:n,variant:e,transformation:i}}function P(t){let n,e,i,r;for(let a of t.statement){if(!(a instanceof v))continue;let o=a.predicate?.subject?.name;o==="publisher"?n=a.object:o==="package"?e=a.object:o==="version"?i=a.object:o==="name"&&(r=a.object)}if(!(!n||!e||!i||!r))return{publisher:n,package_:e,version:i,name:r}}function I(t){let n=[];for(let e of t.statement)e instanceof p&&e.predicate?.subject?.name==="type"&&e.object instanceof u&&n.push(e.object);return n}function L(t){let n=[];for(let e of t.statement)if(e instanceof p){if(e.predicate?.subject?.name!=="subClassOf")continue;e.object instanceof u&&n.push(e.object)}else if(e instanceof d){if(e.predicate?.subject?.name!=="subClassOf")continue;for(let i of e.object??[])i instanceof u&&n.push(i)}return n}function R(t,n){for(let e of t){if(!(e instanceof l)||e.name!==n.name)continue;if((e.namespace||"").startsWith(`${n.publisher}/${n.package_}@`))return e}}function k(t,n,e,i){let r=t.predicate?.subject;return r?r.publisher===n&&r.package_===e&&r.name===i:!1}function y(t){let n=t.object.subject;return{publisher:n.publisher,package_:n.package_,name:n.name}}function E(t,n){return t.publisher===n.publisher&&t.package_===n.package_&&t.name===n.name}function x(t){return`${t.publisher}/${t.package_}/${t.name}`}export{pe as a};
@@ -1,20 +1,20 @@
1
- import{a as he}from"./chunk-NIGFQYVA.js";import{a as ae,c as Me}from"./chunk-FMYLEPMC.js";import{c as ee,d as P,g as J,h as de,i as pe,j as V,k as ne,l as B}from"./chunk-W6T7MOKY.js";function De(f){let e=f.replace(/\r\n/g,`
1
+ import{a as he}from"./chunk-NIGFQYVA.js";import{a as ae,c as De}from"./chunk-FMYLEPMC.js";import{c as ee,d as P,g as J,h as de,i as pe,j as M,k as ne,l as B}from"./chunk-W6T7MOKY.js";import{a as we,e as Me}from"./chunk-FQHALFRR.js";function He(f){let e=f.replace(/\r\n/g,`
2
2
  `).split(`
3
- `),t=[],n=0;for(;n<e.length;){let s=e[n];if(s.trim()===""){n++;continue}let r=/^(\s*)```(\S*)\s*$/.exec(s);if(r){let i=r[2],c=[];for(n++;n<e.length&&!/^(\s*)```\s*$/.test(e[n]);)c.push(e[n]),n++;n++;let l=Be(c.join(`
4
- `)),p=i?` class="language-${He(i)}"`:"";t.push(`<pre><code${p}>${l}</code></pre>`);continue}let a=/^(#{1,6})\s+(.*)$/.exec(s);if(a){let i=a[1].length,c=me(a[2].trim());t.push(`<h${i}>${c}</h${i}>`),n++;continue}if(s.includes("|")&&n+1<e.length&&Ve(e[n+1])){let i=we(s),c=cn(e[n+1]);n+=2;let l=[];for(;n<e.length&&e[n].trim()!==""&&e[n].includes("|");)l.push(we(e[n])),n++;t.push(ln(i,c,l));continue}if(/^\s*[-*]\s+/.test(s)){let i=[];for(;n<e.length&&/^\s*[-*]\s+/.test(e[n]);){let c=[e[n].replace(/^\s*[-*]\s+/,"")];for(n++;n<e.length&&e[n].trim()!==""&&!/^\s*[-*]\s+/.test(e[n])&&!/^\s*\d+\.\s+/.test(e[n]);)c.push(e[n]),n++;n<e.length&&e[n].trim()===""&&n++,i.push(`<li>${me(c.join(" ").trim())}</li>`)}t.push(`<ul>
3
+ `),t=[],n=0;for(;n<e.length;){let s=e[n];if(s.trim()===""){n++;continue}let r=/^(\s*)```(\S*)\s*$/.exec(s);if(r){let i=r[2],c=[];for(n++;n<e.length&&!/^(\s*)```\s*$/.test(e[n]);)c.push(e[n]),n++;n++;let l=Ge(c.join(`
4
+ `)),p=i?` class="language-${We(i)}"`:"";t.push(`<pre><code${p}>${l}</code></pre>`);continue}let a=/^(#{1,6})\s+(.*)$/.exec(s);if(a){let i=a[1].length,c=me(a[2].trim());t.push(`<h${i}>${c}</h${i}>`),n++;continue}if(s.includes("|")&&n+1<e.length&&Be(e[n+1])){let i=Ue(s),c=un(e[n+1]);n+=2;let l=[];for(;n<e.length&&e[n].trim()!==""&&e[n].includes("|");)l.push(Ue(e[n])),n++;t.push(dn(i,c,l));continue}if(/^\s*[-*]\s+/.test(s)){let i=[];for(;n<e.length&&/^\s*[-*]\s+/.test(e[n]);){let c=[e[n].replace(/^\s*[-*]\s+/,"")];for(n++;n<e.length&&e[n].trim()!==""&&!/^\s*[-*]\s+/.test(e[n])&&!/^\s*\d+\.\s+/.test(e[n]);)c.push(e[n]),n++;n<e.length&&e[n].trim()===""&&n++,i.push(`<li>${me(c.join(" ").trim())}</li>`)}t.push(`<ul>
5
5
  ${i.join(`
6
6
  `)}
7
7
  </ul>`);continue}if(/^\s*\d+\.\s+/.test(s)){let i=[];for(;n<e.length&&/^\s*\d+\.\s+/.test(e[n]);){let c=[e[n].replace(/^\s*\d+\.\s+/,"")];for(n++;n<e.length&&e[n].trim()!==""&&!/^\s*\d+\.\s+/.test(e[n])&&!/^\s*[-*]\s+/.test(e[n]);)c.push(e[n]),n++;n<e.length&&e[n].trim()===""&&n++,i.push(`<li>${me(c.join(" ").trim())}</li>`)}t.push(`<ol>
8
8
  ${i.join(`
9
9
  `)}
10
- </ol>`);continue}let o=[s];for(n++;n<e.length&&e[n].trim()!==""&&!/^(#{1,6})\s+/.test(e[n])&&!/^(\s*)```/.test(e[n])&&!/^\s*[-*]\s+/.test(e[n])&&!/^\s*\d+\.\s+/.test(e[n])&&!(e[n].includes("|")&&n+1<e.length&&Ve(e[n+1]));)o.push(e[n]),n++;t.push(`<p>${me(o.join(" "))}</p>`)}return t.join(`
11
- `)}function Ve(f){return f.includes("-")?/^[\s|:-]+$/.test(f):!1}function we(f){let e=f.trim();return e.startsWith("|")&&(e=e.slice(1)),e.endsWith("|")&&(e=e.slice(0,-1)),e.split("|").map(t=>t.trim())}function cn(f){return we(f).map(e=>{let t=e.startsWith(":"),n=e.endsWith(":");return t&&n?"center":n?"right":t?"left":null})}function ln(f,e,t){let n=a=>{let o=e[a];return o?` style="text-align:${o}"`:""},s=f.map((a,o)=>`<th${n(o)}>${me(a)}</th>`).join(""),r=t.map(a=>`<tr>${a.map((i,c)=>`<td${n(c)}>${me(i)}</td>`).join("")}</tr>`).join(`
10
+ </ol>`);continue}let o=[s];for(n++;n<e.length&&e[n].trim()!==""&&!/^(#{1,6})\s+/.test(e[n])&&!/^(\s*)```/.test(e[n])&&!/^\s*[-*]\s+/.test(e[n])&&!/^\s*\d+\.\s+/.test(e[n])&&!(e[n].includes("|")&&n+1<e.length&&Be(e[n+1]));)o.push(e[n]),n++;t.push(`<p>${me(o.join(" "))}</p>`)}return t.join(`
11
+ `)}function Be(f){return f.includes("-")?/^[\s|:-]+$/.test(f):!1}function Ue(f){let e=f.trim();return e.startsWith("|")&&(e=e.slice(1)),e.endsWith("|")&&(e=e.slice(0,-1)),e.split("|").map(t=>t.trim())}function un(f){return Ue(f).map(e=>{let t=e.startsWith(":"),n=e.endsWith(":");return t&&n?"center":n?"right":t?"left":null})}function dn(f,e,t){let n=a=>{let o=e[a];return o?` style="text-align:${o}"`:""},s=f.map((a,o)=>`<th${n(o)}>${me(a)}</th>`).join(""),r=t.map(a=>`<tr>${a.map((i,c)=>`<td${n(c)}>${me(i)}</td>`).join("")}</tr>`).join(`
12
12
  `);return`<table>
13
13
  <thead><tr>${s}</tr></thead>
14
14
  <tbody>
15
15
  ${r}
16
16
  </tbody>
17
- </table>`}function me(f){let e=Be(f);return e=e.replace(/`([^`\n]+)`/g,(t,n)=>`<code>${n}</code>`),e=e.replace(/\[([^\]]+)\]\(([^)\s]+)\)/g,(t,n,s)=>`<a href="${He(s)}">${n}</a>`),e=e.replace(/\*\*([^*\n]+)\*\*/g,(t,n)=>`<strong>${n}</strong>`),e=e.replace(/(^|[^*])\*([^*\n]+)\*(?!\*)/g,(t,n,s)=>`${n}<em>${s}</em>`),e=e.replace(/(^|[\s(])_([^_\n]+)_(?=[\s).,;:!?]|$)/g,(t,n,s)=>`${n}<em>${s}</em>`),e}function Be(f){return f.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function He(f){return f.replace(/"/g,"&quot;").replace(/&/g,"&amp;")}var ye={publisher:"kanonak.org",package_:"derivation",name:"look"},xe={publisher:"kanonak.org",package_:"derivation",name:"tokens"},re={publisher:"kanonak.org",package_:"core-rdf",name:"Resource"},N={publisher:"kanonak.org",package_:"core-rdf",name:"label"},be={publisher:"kanonak.org",package_:"core-rdf",name:"comment"},un={publisher:"kanonak.org",package_:"look",name:"Hero"},dn={publisher:"kanonak.org",package_:"look",name:"PropertyList"},pn={publisher:"kanonak.org",package_:"look",name:"BadgeRow"},fn={publisher:"kanonak.org",package_:"look",name:"ChipRow"},kn={publisher:"kanonak.org",package_:"look",name:"ReferenceList"},gn={publisher:"kanonak.org",package_:"look",name:"ReferencedBy"},Ge={publisher:"kanonak.org",package_:"look",name:"Markdown"},ve={publisher:"kanonak.org",package_:"look",name:"NavGroup"},Ue={publisher:"kanonak.org",package_:"look",name:"NavLink"},We={publisher:"kanonak.org",package_:"look",name:"target"},hn={publisher:"kanonak.org",package_:"look",name:"ResourceGrid"},mn={publisher:"kanonak.org",package_:"look",name:"Timeline"},bn={publisher:"kanonak.org",package_:"look",name:"VersionDiff"},$n={publisher:"kanonak.org",package_:"look",name:"Figure"},jn={publisher:"kanonak.org",package_:"look",name:"StatRow"},vn={publisher:"kanonak.org",package_:"look",name:"Horizon"},_n={publisher:"kanonak.org",package_:"look",name:"PackageContents"},Le={publisher:"kanonak.org",package_:"core-kanonak",name:"Package"},Rn={publisher:"kanonak.org",package_:"look",name:"FeaturedResource"},Sn={publisher:"kanonak.org",package_:"look",name:"PublisherPackages"},Kn={publisher:"kanonak.org",package_:"look",name:"PublisherView"},yn={publisher:"kanonak.org",package_:"look",name:"Distribution"},xn={publisher:"kanonak.org",package_:"look",name:"alphaPath"},Ln={publisher:"kanonak.org",package_:"look",name:"betaPath"},ze={publisher:"kanonak.org",package_:"look",name:"SectionHeading"},On={publisher:"kanonak.org",package_:"look",name:"SectionNav"},Ye={publisher:"kanonak.org",package_:"look",name:"heading"},wn={publisher:"kanonak.org",package_:"look",name:"note"},Un={publisher:"kanonak.org",package_:"look",name:"VersionDelta"},Fn={publisher:"kanonak.org",package_:"look",name:"TimePlot"},In={publisher:"kanonak.org",package_:"look",name:"Details"},En={publisher:"kanonak.org",package_:"look",name:"skip"},Tn={publisher:"kanonak.org",package_:"derivation",name:"derivations"},Pn={publisher:"kanonak.org",package_:"look",name:"laneBy"},Cn={publisher:"kanonak.org",package_:"look",name:"stats"},An={publisher:"kanonak.org",package_:"look",name:"statPath"},Nn={publisher:"kanonak.org",package_:"look",name:"statLabel"},qe={publisher:"kanonak.org",package_:"look",name:"labelPath"},Mn={publisher:"kanonak.org",package_:"look",name:"badgePath"},Fe={publisher:"kanonak.org",package_:"look",name:"orderBy"},Je={publisher:"kanonak.org",package_:"look",name:"track"},_e={publisher:"kanonak.org",package_:"look",name:"metricPath"},Ie={publisher:"kanonak.org",package_:"look",name:"hueBy"},Ze={publisher:"kanonak.org",package_:"look",name:"lowerPath"},Xe={publisher:"kanonak.org",package_:"look",name:"upperPath"},Vn={publisher:"kanonak.org",package_:"look",name:"axisMin"},Dn={publisher:"kanonak.org",package_:"look",name:"axisMax"},Bn={publisher:"kanonak.org",package_:"look",name:"valueLabel"};var Qe={publisher:"kanonak.org",package_:"look",name:"semanticSvg"},Hn={publisher:"kanonak.org",package_:"look",name:"tierChip"},Gn={publisher:"kanonak.org",package_:"look",name:"tierIcon"},Wn={publisher:"kanonak.org",package_:"look",name:"tierCard"},zn={publisher:"kanonak.org",package_:"look",name:"tierFull"},Yn={publisher:"kanonak.org",package_:"core-rdf",name:"type"},en=6,Ee={publisher:"kanonak.org",package_:"look",name:"bands"},qn={publisher:"kanonak.org",package_:"look",name:"title"},Jn={publisher:"kanonak.org",package_:"look",name:"eyebrow"},Zn={publisher:"kanonak.org",package_:"look",name:"subtitle"},nn={publisher:"kanonak.org",package_:"look",name:"badges"},Z={publisher:"kanonak.org",package_:"look",name:"source"},Xn={publisher:"kanonak.org",package_:"look",name:"via"},Qn={publisher:"kanonak.org",package_:"look",name:"size"},et={publisher:"kanonak.org",package_:"look",name:"icon"},nt={publisher:"kanonak.org",package_:"look",name:"chips"},Te={publisher:"kanonak.org",package_:"look",name:"entries"},tt={publisher:"kanonak.org",package_:"look",name:"urlForm"},Ne=class{constructor(e){this.catalog=e}catalog;findCascadedLook(e){let t=Re(e);if(t)return{declaration:t,sourceClass:{publisher:C(e),package_:(e.namespace||"").split("/")[1]?.split("@")[0]??"",name:e.name}};let n=new Set,s=fe(e);for(;s.length>0;){let r=s.shift(),a=st(r.subject),o=Q(a);if(n.has(o))continue;n.add(o);let i=oe(this.catalog,a);for(let c of i){let l=Re(c);if(l)return{declaration:l,sourceClass:{publisher:a.publisher,package_:a.package_,name:a.name}}}for(let c of i)for(let l of Se(c))s.push(l)}if(!n.has(Q(re)))for(let r of oe(this.catalog,re)){let a=Re(r);if(a)return{declaration:a,sourceClass:{...re}}}}findCascadedTokens(e){let t=new Map;for(let[r,a]of Pe(e))t.has(r)||t.set(r,a);let n=new Set,s=fe(e);for(;s.length>0;){let r=s.shift(),a=Q(r.subject);if(n.has(a))continue;n.add(a);let o=oe(this.catalog,r.subject);if(o.length!==0)for(let i of o){for(let[c,l]of Pe(i))t.has(c)||t.set(c,l);for(let c of Se(i))s.push(c)}}if(!n.has(Q(re))){let r=oe(this.catalog,re);for(let a of r)for(let[o,i]of Pe(a))t.has(o)||t.set(o,i)}return t}renderSvg(e){let t=b(e,N)??e.name,n=(t.trim().charAt(0)||"?").toUpperCase(),s=`${e.namespace??""}/${e.name}`,r={label:t,firstLetter:n,uri:s},a=this.collectCascadedSvgTiers(e),o=h=>this.applyPlaceholders(h,e,r),i=o(a.tierChip??""),c=o(a.tierIcon??""),l=o(a.tierCard??""),p=o(a.tierFull??""),k=[...this.findCascadedTokens(e)].map(([h,g])=>`--kan-${h}: ${g};`).join(" ");return`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 400" style="${ie(k)}">
17
+ </table>`}function me(f){let e=Ge(f);return e=e.replace(/`([^`\n]+)`/g,(t,n)=>`<code>${n}</code>`),e=e.replace(/\[([^\]]+)\]\(([^)\s]+)\)/g,(t,n,s)=>`<a href="${We(s)}">${n}</a>`),e=e.replace(/\*\*([^*\n]+)\*\*/g,(t,n)=>`<strong>${n}</strong>`),e=e.replace(/(^|[^*])\*([^*\n]+)\*(?!\*)/g,(t,n,s)=>`${n}<em>${s}</em>`),e=e.replace(/(^|[\s(])_([^_\n]+)_(?=[\s).,;:!?]|$)/g,(t,n,s)=>`${n}<em>${s}</em>`),e}function Ge(f){return f.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function We(f){return f.replace(/"/g,"&quot;").replace(/&/g,"&amp;")}var ye={publisher:"kanonak.org",package_:"derivation",name:"look"},xe={publisher:"kanonak.org",package_:"derivation",name:"tokens"},re={publisher:"kanonak.org",package_:"core-rdf",name:"Resource"},N={publisher:"kanonak.org",package_:"core-rdf",name:"label"},be={publisher:"kanonak.org",package_:"core-rdf",name:"comment"},pn={publisher:"kanonak.org",package_:"look",name:"Hero"},fn={publisher:"kanonak.org",package_:"look",name:"PropertyList"},kn={publisher:"kanonak.org",package_:"look",name:"BadgeRow"},gn={publisher:"kanonak.org",package_:"look",name:"ChipRow"},hn={publisher:"kanonak.org",package_:"look",name:"ReferenceList"},mn={publisher:"kanonak.org",package_:"look",name:"ReferencedBy"},ze={publisher:"kanonak.org",package_:"look",name:"Markdown"},ve={publisher:"kanonak.org",package_:"look",name:"NavGroup"},Fe={publisher:"kanonak.org",package_:"look",name:"NavLink"},Ye={publisher:"kanonak.org",package_:"look",name:"target"},bn={publisher:"kanonak.org",package_:"look",name:"ResourceGrid"},$n={publisher:"kanonak.org",package_:"look",name:"Timeline"},jn={publisher:"kanonak.org",package_:"look",name:"VersionDiff"},vn={publisher:"kanonak.org",package_:"look",name:"Figure"},_n={publisher:"kanonak.org",package_:"look",name:"StatRow"},Sn={publisher:"kanonak.org",package_:"look",name:"Horizon"},Rn={publisher:"kanonak.org",package_:"look",name:"PackageContents"},Le={publisher:"kanonak.org",package_:"core-kanonak",name:"Package"},Kn={publisher:"kanonak.org",package_:"look",name:"FeaturedResource"},yn={publisher:"kanonak.org",package_:"look",name:"PublisherPackages"},xn={publisher:"kanonak.org",package_:"look",name:"PublisherView"},Ln={publisher:"kanonak.org",package_:"look",name:"Distribution"},On={publisher:"kanonak.org",package_:"look",name:"alphaPath"},wn={publisher:"kanonak.org",package_:"look",name:"betaPath"},qe={publisher:"kanonak.org",package_:"look",name:"SectionHeading"},Un={publisher:"kanonak.org",package_:"look",name:"SectionNav"},Je={publisher:"kanonak.org",package_:"look",name:"heading"},Fn={publisher:"kanonak.org",package_:"look",name:"note"},In={publisher:"kanonak.org",package_:"look",name:"VersionDelta"},En={publisher:"kanonak.org",package_:"look",name:"TimePlot"},Tn={publisher:"kanonak.org",package_:"look",name:"Details"},Pn={publisher:"kanonak.org",package_:"look",name:"skip"},Cn={publisher:"kanonak.org",package_:"derivation",name:"derivations"},An={publisher:"kanonak.org",package_:"look",name:"laneBy"},Nn={publisher:"kanonak.org",package_:"look",name:"stats"},Vn={publisher:"kanonak.org",package_:"look",name:"statPath"},Mn={publisher:"kanonak.org",package_:"look",name:"statLabel"},Ze={publisher:"kanonak.org",package_:"look",name:"labelPath"},Dn={publisher:"kanonak.org",package_:"look",name:"badgePath"},Ie={publisher:"kanonak.org",package_:"look",name:"orderBy"},Xe={publisher:"kanonak.org",package_:"look",name:"track"},_e={publisher:"kanonak.org",package_:"look",name:"metricPath"},Ee={publisher:"kanonak.org",package_:"look",name:"hueBy"},Qe={publisher:"kanonak.org",package_:"look",name:"lowerPath"},en={publisher:"kanonak.org",package_:"look",name:"upperPath"},Bn={publisher:"kanonak.org",package_:"look",name:"axisMin"},Hn={publisher:"kanonak.org",package_:"look",name:"axisMax"},Gn={publisher:"kanonak.org",package_:"look",name:"valueLabel"};var nn={publisher:"kanonak.org",package_:"look",name:"semanticSvg"},Wn={publisher:"kanonak.org",package_:"look",name:"tierChip"},zn={publisher:"kanonak.org",package_:"look",name:"tierIcon"},Yn={publisher:"kanonak.org",package_:"look",name:"tierCard"},qn={publisher:"kanonak.org",package_:"look",name:"tierFull"},Jn={publisher:"kanonak.org",package_:"core-rdf",name:"type"},tn=6,Te={publisher:"kanonak.org",package_:"look",name:"bands"},Zn={publisher:"kanonak.org",package_:"look",name:"title"},Xn={publisher:"kanonak.org",package_:"look",name:"eyebrow"},Qn={publisher:"kanonak.org",package_:"look",name:"subtitle"},sn={publisher:"kanonak.org",package_:"look",name:"badges"},Z={publisher:"kanonak.org",package_:"look",name:"source"},et={publisher:"kanonak.org",package_:"look",name:"via"},nt={publisher:"kanonak.org",package_:"look",name:"size"},tt={publisher:"kanonak.org",package_:"look",name:"icon"},st={publisher:"kanonak.org",package_:"look",name:"chips"},Pe={publisher:"kanonak.org",package_:"look",name:"entries"},at={publisher:"kanonak.org",package_:"look",name:"urlForm"},Ve=class{constructor(e){this.catalog=e}catalog;findCascadedLook(e){let t=Se(e);if(t)return{declaration:t,sourceClass:{publisher:C(e),package_:(e.namespace||"").split("/")[1]?.split("@")[0]??"",name:e.name}};let n=new Set,s=fe(e);for(;s.length>0;){let r=s.shift(),a=rt(r.subject),o=Q(a);if(n.has(o))continue;n.add(o);let i=oe(this.catalog,a);for(let c of i){let l=Se(c);if(l)return{declaration:l,sourceClass:{publisher:a.publisher,package_:a.package_,name:a.name}}}for(let c of i)for(let l of Re(c))s.push(l)}if(!n.has(Q(re)))for(let r of oe(this.catalog,re)){let a=Se(r);if(a)return{declaration:a,sourceClass:{...re}}}}findCascadedTokens(e){let t=new Map;for(let[r,a]of Ce(e))t.has(r)||t.set(r,a);let n=new Set,s=fe(e);for(;s.length>0;){let r=s.shift(),a=Q(r.subject);if(n.has(a))continue;n.add(a);let o=oe(this.catalog,r.subject);if(o.length!==0)for(let i of o){for(let[c,l]of Ce(i))t.has(c)||t.set(c,l);for(let c of Re(i))s.push(c)}}if(!n.has(Q(re))){let r=oe(this.catalog,re);for(let a of r)for(let[o,i]of Ce(a))t.has(o)||t.set(o,i)}return t}renderSvg(e){let t=b(e,N)??e.name,n=(t.trim().charAt(0)||"?").toUpperCase(),s=`${e.namespace??""}/${e.name}`,r={label:t,firstLetter:n,uri:s},a=this.collectCascadedSvgTiers(e),o=h=>this.applyPlaceholders(h,e,r),i=o(a.tierChip??""),c=o(a.tierIcon??""),l=o(a.tierCard??""),p=o(a.tierFull??""),k=[...this.findCascadedTokens(e)].map(([h,g])=>`--kan-${h}: ${g};`).join(" ");return`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 400" style="${ie(k)}">
18
18
  <style>
19
19
  .tier-chip,.tier-icon,.tier-card{display:none}
20
20
  .tier-full{display:block}
@@ -26,12 +26,12 @@ ${r}
26
26
  <g class="tier-icon">${c}</g>
27
27
  <g class="tier-card">${l}</g>
28
28
  <g class="tier-full">${p}</g>
29
- </svg>`}applyPlaceholders(e,t,n){return e.replace(/\{\{([^}]+)\}\}/g,(s,r)=>{let a=r.trim();if(n[a]!==void 0)return ie(n[a]);let o=a.indexOf(":");if(o>0){let c=a.slice(0,o),l=a.slice(o+1).trim();if(c==="delta"||c==="deltaArrow"||c==="deltaColor"||c==="deltaDir"){let p=this.metricDelta(t,l);return c==="deltaColor"?p?p.dir==="up"?"#34d399":p.dir==="down"?"#f87171":"#9aa5b8":"#9aa5b8":c==="deltaDir"?p?p.dir:"new":p?c==="deltaArrow"?p.dir==="up"?"\u25B2":p.dir==="down"?"\u25BC":"\u2014":ie(`${p.delta>0?"+":""}${p.delta.toFixed(2)}`):""}if(c==="svg")return this.resolvePath(t,l)??""}let i=this.resolvePath(t,a);return i===void 0?`{{${a}}}`:ie(i)})}metricDelta(e,t){let n=k=>{let h=this.resolvePath(k,t),g=h===void 0?NaN:parseFloat(h);return Number.isFinite(g)?g:void 0},s=n(e);if(s===void 0)return;let r=k=>this.parseVersion((k.namespace||"").split("@")[1]??"")??{major:0,minor:0,patch:0},a=(k,h)=>k.major-h.major||k.minor-h.minor||k.patch-h.patch,o={publisher:C(e),package_:(e.namespace||"").split("/")[1]?.split("@")[0]??"",name:e.name},i=r(e),c,l;for(let k of oe(this.catalog,o)){let h=r(k);a(h,i)<0&&(!l||a(h,l)>0)&&(c=k,l=h)}if(!c)return;let p=n(c);if(p===void 0)return;let u=s-p;return{delta:u,dir:Math.abs(u)<.005?"flat":u>0?"up":"down"}}resolvePath(e,t){let n=t.split("/").map(s=>s.trim()).filter(s=>s.length>0);if(n.length!==0)return this.resolvePathSteps(e,n)}resolvePathSteps(e,t){let n=at(t[0]),s=rt(e,n);if(!s)return;let r=t.length===1;if(s instanceof ne)return r?void 0:this.resolvePathSteps(s.object,t.slice(1));if(s instanceof V&&s.object instanceof P){let a=s.object.subject,o=oe(this.catalog,a);if(o.length===0){let c=H(this.catalog,a);c&&o.push(c)}if(r){for(let c of o){let l=b(c,N);if(l!==void 0)return l}return a.name}let i=t.slice(1);for(let c of o){let l=this.resolvePathSteps(c,i);if(l!==void 0)return l}return}if(r&&(s instanceof J||s instanceof de||s instanceof pe))return String(s.object)}collectCascadedSvgTiers(e){let t={},n=a=>{let o=te(a,Qe);if(!(o instanceof ne))return;let i=o.object,c=b(i,Hn),l=b(i,Gn),p=b(i,Wn),u=b(i,zn);t.tierChip===void 0&&c!==void 0&&(t.tierChip=c),t.tierIcon===void 0&&l!==void 0&&(t.tierIcon=l),t.tierCard===void 0&&p!==void 0&&(t.tierCard=p),t.tierFull===void 0&&u!==void 0&&(t.tierFull=u)};n(e);let s=new Set,r=fe(e);for(;r.length>0;){let a=r.shift(),o=Q(a.subject);if(s.has(o))continue;s.add(o);let i=oe(this.catalog,a.subject);for(let c of i){n(c);for(let l of Se(c))r.push(l)}}if(!s.has(Q(re)))for(let a of oe(this.catalog,re))n(a);return t}renderStylesheet(e){let t=this.findCascadedTokens(e),n=[];for(let[a,o]of t)n.push(` --kan-${a}: ${o};`);let s=n.length>0?`:root {
29
+ </svg>`}applyPlaceholders(e,t,n){return e.replace(/\{\{([^}]+)\}\}/g,(s,r)=>{let a=r.trim();if(n[a]!==void 0)return ie(n[a]);let o=a.indexOf(":");if(o>0){let c=a.slice(0,o),l=a.slice(o+1).trim();if(c==="delta"||c==="deltaArrow"||c==="deltaColor"||c==="deltaDir"){let p=this.metricDelta(t,l);return c==="deltaColor"?p?p.dir==="up"?"#34d399":p.dir==="down"?"#f87171":"#9aa5b8":"#9aa5b8":c==="deltaDir"?p?p.dir:"new":p?c==="deltaArrow"?p.dir==="up"?"\u25B2":p.dir==="down"?"\u25BC":"\u2014":ie(`${p.delta>0?"+":""}${p.delta.toFixed(2)}`):""}if(c==="svg")return this.resolvePath(t,l)??""}let i=this.resolvePath(t,a);return i===void 0?`{{${a}}}`:ie(i)})}metricDelta(e,t){let n=k=>{let h=this.resolvePath(k,t),g=h===void 0?NaN:parseFloat(h);return Number.isFinite(g)?g:void 0},s=n(e);if(s===void 0)return;let r=k=>this.parseVersion((k.namespace||"").split("@")[1]??"")??{major:0,minor:0,patch:0},a=(k,h)=>k.major-h.major||k.minor-h.minor||k.patch-h.patch,o={publisher:C(e),package_:(e.namespace||"").split("/")[1]?.split("@")[0]??"",name:e.name},i=r(e),c,l;for(let k of oe(this.catalog,o)){let h=r(k);a(h,i)<0&&(!l||a(h,l)>0)&&(c=k,l=h)}if(!c)return;let p=n(c);if(p===void 0)return;let u=s-p;return{delta:u,dir:Math.abs(u)<.005?"flat":u>0?"up":"down"}}resolvePath(e,t){let n=t.split("/").map(s=>s.trim()).filter(s=>s.length>0);if(n.length!==0)return this.resolvePathSteps(e,n)}resolvePathSteps(e,t){let n=ot(t[0]),s=it(e,n);if(!s)return;let r=t.length===1;if(s instanceof ne)return r?void 0:this.resolvePathSteps(s.object,t.slice(1));if(s instanceof M&&s.object instanceof P){let a=s.object.subject,o=oe(this.catalog,a);if(o.length===0){let c=H(this.catalog,a);c&&o.push(c)}if(r){for(let c of o){let l=b(c,N);if(l!==void 0)return l}return a.name}let i=t.slice(1);for(let c of o){let l=this.resolvePathSteps(c,i);if(l!==void 0)return l}return}if(r&&(s instanceof J||s instanceof de||s instanceof pe))return String(s.object)}collectCascadedSvgTiers(e){let t={},n=a=>{let o=te(a,nn);if(!(o instanceof ne))return;let i=o.object,c=b(i,Wn),l=b(i,zn),p=b(i,Yn),u=b(i,qn);t.tierChip===void 0&&c!==void 0&&(t.tierChip=c),t.tierIcon===void 0&&l!==void 0&&(t.tierIcon=l),t.tierCard===void 0&&p!==void 0&&(t.tierCard=p),t.tierFull===void 0&&u!==void 0&&(t.tierFull=u)};n(e);let s=new Set,r=fe(e);for(;r.length>0;){let a=r.shift(),o=Q(a.subject);if(s.has(o))continue;s.add(o);let i=oe(this.catalog,a.subject);for(let c of i){n(c);for(let l of Re(c))r.push(l)}}if(!s.has(Q(re)))for(let a of oe(this.catalog,re))n(a);return t}renderStylesheet(e){let t=this.findCascadedTokens(e),n=[];for(let[a,o]of t)n.push(` --kan-${a}: ${o};`);let s=n.length>0?`:root {
30
30
  ${n.join(`
31
31
  `)}
32
32
  }`:":root { /* no tokens resolved */ }",r=this.findBaseStylesheet(C(e))??"";return`${s}
33
- ${r}`}findBaseStylesheet(e){let t="kanonak.org/site/content",n,s;for(let a of this.catalog){if(!(a instanceof ee)||a.name!=="base-stylesheet")continue;let o=a.namespace||"";o.startsWith(`${e}/look-styles@`)?n=a:o.startsWith("kanonak.org/look-styles@")&&(s=a)}let r=n??s;if(r)for(let a of r.statement){let o=a.predicate?.subject;if(!o)continue;if(`${o.publisher}/${o.package_}/${o.name}`===t&&a instanceof J)return a.object}}renderHtml(e){let t=this.findCascadedLook(e);if(!t)return`<!-- LookRenderer: no derivation.look found for ${e.namespace}/${e.name} -->`;let n=tn(t.declaration);if(n.length===0)return"<!-- LookRenderer: look declaration has no bands -->";let s=C(e),r=this.collectSectionHeadings(n),a=[];for(let o of n)a.push(this.renderBand(o,e,s,r));return a.join(`
34
- `)}collectSectionHeadings(e){let t=[];for(let n of e){let s=$e(n);if(!s||!R(s,ze))continue;let r=b(n,Ye);r&&t.push({slug:an(r),label:r})}return t}renderPublisherIndex(e,t,n){let s=n?this.renderNavGroup(n,e):"",r=t.map(o=>{let i=o.comment?`<p class="kan-resource-card-subtitle">${d(o.comment)}</p>`:"";return`<a class="kan-resource-card" href="${d(o.href)}"><h3 class="kan-resource-card-title">${d(o.label)}</h3>${i}</a>`}).join(`
33
+ ${r}`}findBaseStylesheet(e){let t="kanonak.org/site/content",n=c=>Me((c.namespace||"").split("@")[1]??""),s,r,a,o;for(let c of this.catalog){if(!(c instanceof ee)||c.name!=="base-stylesheet")continue;let l=c.namespace||"";if(l.startsWith(`${e}/look-styles@`)){let p=n(c);p&&(!r||we(p,r)>0)&&(s=c,r=p)}else if(l.startsWith("kanonak.org/look-styles@")){let p=n(c);p&&(!o||we(p,o)>0)&&(a=c,o=p)}}let i=s??a;if(i)for(let c of i.statement){let l=c.predicate?.subject;if(!l)continue;if(`${l.publisher}/${l.package_}/${l.name}`===t&&c instanceof J)return c.object}}renderHtml(e){let t=this.findCascadedLook(e);if(!t)return`<!-- LookRenderer: no derivation.look found for ${e.namespace}/${e.name} -->`;let n=an(t.declaration);if(n.length===0)return"<!-- LookRenderer: look declaration has no bands -->";let s=C(e),r=this.collectSectionHeadings(n),a=[];for(let o of n)a.push(this.renderBand(o,e,s,r));return a.join(`
34
+ `)}collectSectionHeadings(e){let t=[];for(let n of e){let s=$e(n);if(!s||!S(s,qe))continue;let r=b(n,Je);r&&t.push({slug:on(r),label:r})}return t}renderPublisherIndex(e,t,n){let s=n?this.renderNavGroup(n,e):"",r=t.map(o=>{let i=o.comment?`<p class="kan-resource-card-subtitle">${d(o.comment)}</p>`:"";return`<a class="kan-resource-card" href="${d(o.href)}"><h3 class="kan-resource-card-title">${d(o.label)}</h3>${i}</a>`}).join(`
35
35
  `),a=`<header class="kan-hero">
36
36
  <h1 class="kan-hero-title">${d(e)}</h1>
37
37
  </header>
@@ -92,10 +92,10 @@ ${a}${n}
92
92
  </main>
93
93
  </body>
94
94
  </html>
95
- `}hasSvgDerivation(e){let t=new Set,n=fe(e);for(;n.length>0;){let s=n.shift(),r=Q(s.subject);if(t.has(r))continue;t.add(r);let a=H(this.catalog,s.subject);if(a){for(let o of a.statement)if(o instanceof B&&ce(o,"kanonak.org","derivation","derivations")){for(let i of o.object??[])if(i instanceof ae)for(let c of i.statement){if(!(c instanceof V)||!ce(c,"kanonak.org","derivation","format")||!(c.object instanceof P))continue;let l=c.object.subject;if(l.publisher==="kanonak.org"&&l.package_==="formats"&&l.name==="svg")return!0}}for(let o of Se(a))n.push(o)}}return!1}renderBand(e,t,n,s=[]){let r=$e(e);return r?R(r,On)?this.renderSectionNav(s):R(r,un)?this.renderHero(e,t,n):R(r,dn)?this.renderPropertyList(e,t,n):R(r,pn)?this.renderBadgeRow(e,t,n):R(r,fn)?this.renderChipRow(e,t,n):R(r,kn)?this.renderReferenceList(e,t,n):R(r,gn)?this.renderReferencedBy(e,t,n):R(r,Ge)?this.renderMarkdown(e,t,n):R(r,ve)?this.renderNavGroup(t,n):R(r,hn)?this.renderResourceGrid(e,n,t):R(r,mn)?this.renderTimeline(e,n):R(r,bn)?this.renderVersionDiff(e,n):R(r,$n)?this.renderFigure(e,t,n):R(r,jn)?this.renderStatRow(e,t):R(r,vn)?this.renderHorizon(e,t,n):R(r,_n)?this.renderPackageContents(t,n):R(r,Rn)?this.renderFeaturedResource(e,n):R(r,Sn)?this.renderPublisherPackages(n):R(r,yn)?this.renderDistribution(e,t):R(r,ze)?this.renderSectionHeading(e):R(r,Un)?this.renderVersionDelta(e,t):R(r,Fn)?this.renderTimePlot(e,t,n):R(r,In)?this.renderDetails(e,t,n):`<!-- LookRenderer: unsupported band ${r.publisher}/${r.package_}/${r.name} -->`:"<!-- LookRenderer: band has no rdf:type -->"}collectTrackedSeries(e,t,n,s){let{hueBy:r,lowerPath:a,upperPath:o}=s??{},i=new Map,c=e.length,l=(p,u)=>{let k=this.resolvePath(p,u);return k===void 0?NaN:parseFloat(k)};return e.forEach((p,u)=>{let k=this.readPropertyValueReferences(p,t);for(let h of k){let g=H(this.catalog,{publisher:h.subject.publisher,package_:h.subject.package_,name:h.subject.name,...h.subject.version?{version:h.subject.version}:{}});if(!g)continue;let m=h.subject.name,v=i.get(m);v||(v={key:m,label:b(g,N)??m,points:new Array(c).fill(null),...a?{lower:new Array(c).fill(null)}:{},...o?{upper:new Array(c).fill(null)}:{}},i.set(m,v));let K=l(g,n);if(Number.isFinite(K)&&(v.points[u]=K),a&&v.lower){let _=l(g,a);Number.isFinite(_)&&(v.lower[u]=_)}if(o&&v.upper){let _=l(g,o);Number.isFinite(_)&&(v.upper[u]=_)}if(r){let _=l(g,r);Number.isFinite(_)&&(v.hue=_)}v.lastSubject=g}}),[...i.values()]}hrefForSubject(e,t,n="="){let s=e.namespace||"",r=s.split("/")[1]?.split("@")[0]??"",a=s.split("@")[1]??"",o=a?this.parseVersion(a):void 0;return he.formatResourceUrl({publisher:C(e),package_:r,name:e.name,...o?{version:o}:{}},n,{contextPublisher:t})}renderVersionDiff(e,t){let n=E(e,Z);if(!n)return"<!-- LookRenderer.VersionDiff: no look.source -->";let s=b(e,_e),r=E(e,Je);if(!r||!s)return"<!-- LookRenderer.VersionDiff: needs look.track + look.metricPath -->";let a=E(e,Fe),o=b(e,Ie),i=this.findInstancesOfClass(n);if(i.length===0)return"<!-- LookRenderer.VersionDiff: no instances -->";let c=k=>a?this.readPropertyValueText(k,a)??"":"",l=i.slice().sort((k,h)=>c(k).localeCompare(c(h))),p=this.collectTrackedSeries(l,r,s,{hueBy:o});return p.length===0?"<!-- LookRenderer.VersionDiff: no tracked series -->":`<section class="kan-vdiff">${p.map((k,h)=>{let g=k.hue!==void 0?k.hue:Math.round(h*360/p.length),m=k.points.filter(x=>x!==null);if(m.length===0)return"";let v=m[0],K=m[m.length-1],_=K-v,U;if(Math.abs(_)>=.005){let x=_>0?"up":"down",F=_>0?"\u25B2":"\u25BC";U=`<span class="kan-vdiff-delta ${x}">${_>0?"+":""}${_.toFixed(2)} ${F}</span>`}else U='<span class="kan-vdiff-delta flat">\u2014</span>';let T=k.lastSubject&&this.isLinkable(C(k.lastSubject),t)?`<a href="${d(this.hrefForSubject(k.lastSubject,t))}">${d(k.label)}</a>`:d(k.label);return`<div class="kan-vdiff-row" style="--kan-vdiff-hue:${g}"><span class="kan-vdiff-label">${T}</span><span class="kan-vdiff-start">${v.toFixed(2)}</span>`+this.sparkline(k.points,g)+`<span class="kan-vdiff-end">${K.toFixed(2)}</span>`+U+"</div>"}).join("")}</section>`}sparkline(e,t){let a=`hsl(${t},65%,60%)`,o=e.filter(m=>m!==null);if(o.length===0)return'<svg class="kan-vdiff-spark" viewBox="0 0 132 30" xmlns="http://www.w3.org/2000/svg"></svg>';let i=Math.min(...o),l=Math.max(...o)-i,p=e.length,u=m=>p<=1?132/2:4+m/(p-1)*124,k=m=>l<1e-9?30/2:26-(m-i)/l*22,h=[],g=[];return e.forEach((m,v)=>{if(m===null)return;let K=u(v),_=k(m);h.push(`${K.toFixed(1)},${_.toFixed(1)}`),g.push(`<circle cx="${K.toFixed(1)}" cy="${_.toFixed(1)}" r="2" fill="${a}"/>`)}),`<svg class="kan-vdiff-spark" viewBox="0 0 132 30" preserveAspectRatio="none" xmlns="http://www.w3.org/2000/svg" role="img"><polyline points="${h.join(" ")}" fill="none" stroke="${a}" stroke-width="1.5" stroke-linejoin="round" stroke-linecap="round"/>`+g.join("")+"</svg>"}svgUrlForSubject(e,t,n="="){return`${this.hrefForSubject(e,t,n)}.svg`}renderFigure(e,t,n){let s=t,r=E(e,Z);if(r){let l=H(this.catalog,r);l&&(s=l)}let a=this.svgUrlForSubject(s,n),o=b(s,N)??s.name,i=b(e,Qn);return`<figure class="kan-figure${i==="small"||i==="medium"||i==="large"?` kan-figure-${i}`:""}"><img class="kan-figure-img" src="${d(a)}" alt="${d(o)}" loading="lazy"/></figure>`}renderStatRow(e,t){let n=te(e,Cn),s=this.gatherValueItems(n).filter(a=>a instanceof ae);if(s.length===0)return"<!-- LookRenderer.StatRow: no look.stats -->";let r=[];for(let a of s){let o=b(a,An);if(!o)continue;let i=this.resolvePath(t,o);if(i===void 0)continue;let c=b(a,Nn)??"";r.push('<div class="kan-stat">'+(c?`<span class="kan-stat-label">${d(c)}</span>`:"")+`<span class="kan-stat-val">${d(i)}</span></div>`)}return r.length===0?"":`<div class="kan-stat-row">${r.join("")}</div>`}renderHorizon(e,t,n){let s=E(e,Z);if(!s)return"<!-- LookRenderer.Horizon: no look.source -->";let r=this.gatherValueItems(te(t,s)).filter(o=>o instanceof ae);return r.length===0?"":`<section class="kan-horizon">${r.map(o=>this.renderConditionNode(o,n,0)).join("")}</section>`}renderConditionNode(e,t,n){let s=$e(e),r=s?this.readLabelForUri({publisher:s.publisher,package_:s.package_,name:s.name})??s.name:"Condition",a=[],o=[];for(let u of e.statement){let k=u.predicate?.subject;if(!k||k.name==="type")continue;let h=this.readLabelForUri({publisher:k.publisher,package_:k.package_,name:k.name})??k.name;if(u instanceof J||u instanceof de||u instanceof pe)a.push(`<div class="kan-cond-field"><span class="kan-cond-key">${d(h)}</span><span class="kan-cond-v">${d(String(u.object))}</span></div>`);else if(u instanceof V&&u.object instanceof P){let g=u.object.subject,m=this.readLabelForUri({publisher:g.publisher,package_:g.package_,name:g.name})??g.name;a.push(`<div class="kan-cond-field"><span class="kan-cond-key">${d(h)}</span><span class="kan-cond-v">${d(m)}</span></div>`)}else if(u instanceof ne)o.push(this.renderConditionNode(u.object,t,n+1));else if(u instanceof B)for(let g of u.object??[])g instanceof ae&&o.push(this.renderConditionNode(g,t,n+1))}let i=a.length?`<div class="kan-cond-fields">${a.join("")}</div>`:"",c=o.length?`<div class="kan-cond-children">${o.join("")}</div>`:"",l=o.length>0,p=l?`<span class="kan-cond-op">${d(r)}</span>`:`<div class="kan-cond-type">${d(r)}</div>`;return`<div class="kan-cond ${l?"kan-cond-branch":"kan-cond-leaf"}">${p}${i}${c}</div>`}renderSectionHeading(e){let t=e,n=b(t,Ye);if(!n)return"<!-- LookRenderer.SectionHeading: no look.heading -->";let s=b(t,wn);return`<div class="kan-section" id="${an(n)}"><h2 class="kan-section-title">${d(n)}</h2>`+(s?`<p class="kan-section-note">${d(s)}</p>`:"")+"</div>"}renderSectionNav(e){return e.length===0?"<!-- LookRenderer.SectionNav: no section headings in this view -->":`<nav class="kan-section-nav" aria-label="On this page">${e.map(n=>`<a class="kan-section-nav-link" href="#${d(n.slug)}">${d(n.label)}</a>`).join("")}</nav>`}renderVersionDelta(e,t){let s=b(e,_e);if(!s)return"<!-- LookRenderer.VersionDelta: no look.metricPath -->";let r=O=>{let I=this.resolvePath(O,s),G=I===void 0?NaN:parseFloat(I);return Number.isFinite(G)?G:void 0},a=r(t);if(a===void 0)return"";let o=O=>this.parseVersion((O.namespace||"").split("@")[1]??"")??{major:0,minor:0,patch:0},i=(O,I)=>O.major-I.major||O.minor-I.minor||O.patch-I.patch,c={publisher:C(t),package_:(t.namespace||"").split("/")[1]?.split("@")[0]??"",name:t.name},l=o(t),p,u;for(let O of oe(this.catalog,c)){let I=o(O);i(I,l)<0&&(!u||i(I,u)>0)&&(p=O,u=I)}if(!p||!u)return'<div class="kan-delta kan-delta-first">First tracked in this version</div>';let k=r(p);if(k===void 0)return"";let h=a-k,g=Math.abs(h)<.005?"flat":h>0?"up":"down",m=g==="up"?"\u25B2":g==="down"?"\u25BC":"\u2014",v=g==="up"?"#34d399":g==="down"?"#f87171":"var(--kan-text-faint)",K=`${u.major}.${u.minor}.${u.patch}`,_=320,U=46,T=14,x=30,F=O=>T+Math.min(1,Math.max(0,O))*(_-2*T),L=F(k),A=F(a),le=`<svg class="kan-delta-track" viewBox="0 0 ${_} ${U}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img"><line x1="${T}" y1="${x}" x2="${_-T}" y2="${x}" class="kan-delta-base"/><line x1="${L.toFixed(1)}" y1="${x}" x2="${A.toFixed(1)}" y2="${x}" stroke="${v}" stroke-width="3"/><circle cx="${L.toFixed(1)}" cy="${x}" r="4" class="kan-delta-prev"/><circle cx="${A.toFixed(1)}" cy="${x}" r="5.5" fill="${v}"/><text x="${L.toFixed(1)}" y="${x-9}" text-anchor="middle" class="kan-delta-tick kan-delta-tick-prev">${k.toFixed(2)}</text><text x="${A.toFixed(1)}" y="${x+17}" text-anchor="middle" class="kan-delta-tick">${a.toFixed(2)}</text></svg>`;return`<div class="kan-delta"><div class="kan-delta-head"><span class="kan-delta-vs">vs ${d(K)}</span><span class="kan-delta-badge ${g}">${h>0?"+":""}${h.toFixed(2)} ${m}</span></div>`+le+"</div>"}renderTimePlot(e,t,n){let s=E(e,Z),r=E(e,Fe);if(!s||!r)return"<!-- LookRenderer.TimePlot: needs look.source + look.orderBy -->";let a=e,o=b(a,Pn),i=b(a,qe),c=[];for(let j of this.readPropertyValueReferences(t,s)){let M=H(this.catalog,{publisher:j.subject.publisher,package_:j.subject.package_,name:j.subject.name,...j.subject.version?{version:j.subject.version}:{}});if(!M)continue;let S=this.readPropertyValueText(M,r)??"",y=Date.parse(S);if(!Number.isFinite(y))continue;let X=o?this.resolvePath(M,o)??"":"",$=(i?this.resolvePath(M,i):void 0)??b(M,N)??M.name;c.push({t:y,dateStr:S,lane:X,label:$,href:this.hrefForSubject(M,n),linkable:this.isLinkable(C(M),n)})}if(c.length===0)return"<!-- LookRenderer.TimePlot: no dated points -->";let l=[];for(let j of c)l.includes(j.lane)||l.push(j.lane);let p=Math.min(...c.map(j=>j.t)),u=Math.max(...c.map(j=>j.t));u===p&&(u=p+1);let k=l.some(j=>j),h=720,g=k?96:16,m=18,v=12,K=24,_=36,U=v+l.length*_+K,T=g,x=h-m,F=x-T,L=j=>T+(j-p)/(u-p)*F,A=j=>v+j*_+_/2,le=j=>Math.round(j*360/Math.max(1,l.length)),O=[];l.forEach((j,M)=>{let S=A(M);O.push(`<line x1="${T}" y1="${S.toFixed(1)}" x2="${x}" y2="${S.toFixed(1)}" class="kan-plot-guide"/>`),j&&O.push(`<text x="${(g-8).toFixed(1)}" y="${(S+4).toFixed(1)}" text-anchor="end" class="kan-plot-lane">${ie(j)}</text>`)});let I={},G=[];for(let j of c){let M=l.indexOf(j.lane),y=((I[j.lane]=(I[j.lane]??0)+1)%3-1)*7,X=L(j.t),$=A(M)+y,w=`${Ke(j.dateStr)} \xB7 ${j.label}`,W=`<circle cx="${X.toFixed(1)}" cy="${$.toFixed(1)}" r="5" fill="hsl(${le(M)},65%,60%)" class="kan-plot-pt"><title>${ie(w)}</title></circle>`;G.push(j.linkable?`<a href="${d(j.href)}" class="kan-plot-link">${W}</a>`:W)}let ke=`<text x="${T}" y="${(U-6).toFixed(1)}" text-anchor="start" class="kan-plot-axis">${ie(Ke(new Date(p).toISOString()))}</text><text x="${x}" y="${(U-6).toFixed(1)}" text-anchor="end" class="kan-plot-axis">${ie(Ke(new Date(u).toISOString()))}</text>`;return`<section class="kan-plot">${`<svg class="kan-plot-svg" viewBox="0 0 ${h} ${U}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">`+O.join("")+G.join("")+ke+"</svg>"}</section>`}renderDetails(e,t,n){let s=Ce(e,En),r=this.detailRows(t,n,s);return r?`<dl class="kan-details">${r}</dl>`:"<!-- LookRenderer.Details: no properties -->"}detailRows(e,t,n){let s=[];for(let r of e.statement){let a=r.predicate?.subject;if(!a||this.isMetaPredicate(a)||n.some(c=>R(c,a)))continue;let o=this.readLabelForUri({publisher:a.publisher,package_:a.package_,name:a.name})??a.name,i=this.detailValue(r,t,n);i&&s.push(`<dt class="kan-details-key">${d(o)}</dt><dd class="kan-details-val">${i}</dd>`)}return s.join("")}detailValue(e,t,n){if(e instanceof J)return it(e.object);if(e instanceof de||e instanceof pe)return d(String(e.object));if(e instanceof V&&e.object instanceof P)return this.detailReferenceLink(e.object,t);if(e instanceof ne)return this.detailEmbedded(e.object,t,n);if(e instanceof B){let s=e.object??[];return s.length>0&&s.every(r=>r instanceof ae)?s.map(r=>this.detailEmbedded(r,t,n)).join(""):s.map(r=>r instanceof P?this.detailReferenceLink(r,t):r instanceof ae?this.detailEmbedded(r,t,n):d(String(r))).filter(r=>r).join(", ")}return""}detailReferenceLink(e,t){let n=this.readLabelForUri({publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name})??e.subject.name;if(!this.isLinkable(e.subject.publisher,t))return`<span class="kan-link-plain">${d(n)}</span>`;let s=this.urlForReference(e,void 0,t);return`<img class="kan-md-chip" src="${d(`${s}.svg`)}" alt="" loading="lazy"><a class="kan-link" href="${d(s)}">${d(n)}</a>`}detailEmbedded(e,t,n){let s=$e(e),r=s?this.readLabelForUri({publisher:s.publisher,package_:s.package_,name:s.name})??s.name:"",a=this.detailRows(e,t,n);return'<div class="kan-details-embed">'+(r?`<span class="kan-details-type">${d(r)}</span>`:"")+(a?`<dl class="kan-details">${a}</dl>`:"")+"</div>"}isMetaPredicate(e){return R(e,Yn)||R(e,N)||R(e,be)||R(e,ye)||R(e,xe)||R(e,Tn)||R(e,Qe)}renderPackageContents(e,t){let n=e.namespace||"";if(!n)return"";let s=this.catalog.filter(a=>a instanceof ee&&a.namespace===n&&a.name!==e.name);return s.length===0?`<!-- LookRenderer.PackageContents: no members in ${n} -->`:(s.sort((a,o)=>{let i=b(a,N)??a.name,c=b(o,N)??o.name;return i.localeCompare(c)}),`<section class="kan-pkg-grid">${s.map(a=>{let o=b(a,N)??a.name,i=b(a,be),c=i?Ae(i,160):"",l=this.hrefForSubject(a,t),p=this.svgUrlForSubject(a,t);return`<a class="kan-pkg-card" href="${d(l)}"><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(o)}</span>`+(c?`<span class="kan-pkg-card-comment">${d(c)}</span>`:"")+"</span></a>"}).join("")}</section>`)}renderReferencedBy(e,t,n){let s=E(e,Xn),r={publisher:C(t),package_:(t.namespace||"").split("/")[1]?.split("@")[0]??"",name:t.name},a=Q(r),o=u=>this.parseVersion((u.namespace||"").split("@")[1]??"")??{major:0,minor:0,patch:0},i=(u,k)=>u.major-k.major||u.minor-k.minor||u.patch-k.patch,c=new Map;for(let u of this.catalog){if(!(u instanceof ee))continue;let k=Q({publisher:C(u),package_:(u.namespace||"").split("/")[1]?.split("@")[0]??"",name:u.name});if(k===a||!this.referencesTarget(u,a,s))continue;let h=c.get(k);(!h||i(o(u),o(h))>0)&&c.set(k,u)}let l=[...c.values()];return l.length===0?"<!-- LookRenderer.ReferencedBy: no incoming references -->":(l.sort((u,k)=>{let h=b(u,N)??u.name,g=b(k,N)??k.name;return h.localeCompare(g)}),`<section class="kan-pkg-grid">${l.map(u=>{let k=b(u,N)??u.name,h=b(u,be),g=h?Ae(h,160):"",m=`<span class="kan-pkg-card-body"><span class="kan-pkg-card-title">${d(k)}</span>`+(g?`<span class="kan-pkg-card-comment">${d(g)}</span>`:"")+"</span>";if(!this.isLinkable(C(u),n))return`<span class="kan-pkg-card">${m}</span>`;let v=this.hrefForSubject(u,n),K=this.svgUrlForSubject(u,n);return`<a class="kan-pkg-card" href="${d(v)}"><img class="kan-pkg-card-svg" src="${d(K)}" alt="" loading="lazy"/>`+m+"</a>"}).join("")}</section>`)}referencesTarget(e,t,n){for(let s of e.statement){let r=s.predicate?.subject;if(r?.name==="type"||n&&!(r&&Q(r)===Q(n)))continue;let a=[];if(s instanceof V&&s.object instanceof P)a.push(s.object);else if(s instanceof B)for(let o of s.object??[])o instanceof P&&a.push(o);for(let o of a)if(Q(o.subject)===t)return!0}return!1}renderFeaturedResource(e,t){let n=E(e,Z);if(!n)return"<!-- LookRenderer.FeaturedResource: no look.source -->";let s=oe(this.catalog,n),r=c=>this.parseVersion((c.namespace||"").split("@")[1]??"")??{major:0,minor:0,patch:0},a=s.length>0?s.slice().sort((c,l)=>{let p=r(c),u=r(l);return u.major-p.major||u.minor-p.minor||u.patch-p.patch})[0]:H(this.catalog,n);if(!a)return`<!-- LookRenderer.FeaturedResource: ${n.publisher}/${n.package_}/${n.name} not found -->`;let o=this.renderHtml(a),i=this.hrefForSubject(a,t);return`<section class="kan-featured"><a class="kan-featured-permalink" href="${d(i)}">View full resource \u2192</a>`+o+"</section>"}renderDistribution(e,t){let n=e,s=S=>{let y=b(n,S);if(!y)return;let X=this.resolvePath(t,y),$=X===void 0?NaN:parseFloat(X);return Number.isFinite($)?$:void 0},r=s(xn),a=s(Ln);if(r===void 0||a===void 0||r<=0||a<=0)return"<!-- LookRenderer.Distribution: needs resolvable alphaPath + betaPath (> 0) -->";let o=s(_e)??r/(r+a),i=s(Ze),c=s(Xe),l=s(Ie),p=l!==void 0?`hsl(${l},65%,60%)`:"var(--kan-accent)",u=S=>Number.isInteger(S)?String(S):S.toFixed(1),k=280,h=168,g={top:14,right:14,bottom:24,left:14},m=k-g.left-g.right,v=h-g.top-g.bottom,K=120,_=1e-4,U=[],T=[],x=0;for(let S=0;S<=K;S++){let y=S/K;y<_?y=_:y>1-_&&(y=1-_);let X=Math.exp((r-1)*Math.log(y)+(a-1)*Math.log(1-y));U.push(y),T.push(X),X>x&&(x=X)}let F=S=>g.left+Math.min(1,Math.max(0,S))*m,L=S=>g.top+(1-(x>0?S/x:0))*v,A=g.top+v,le=U.map((S,y)=>`${F(S).toFixed(1)},${L(T[y]).toFixed(1)}`),O=`M${F(0).toFixed(1)},${A.toFixed(1)} L${le.join(" L")} L${F(1).toFixed(1)},${A.toFixed(1)} Z`,I="";if(i!==void 0&&c!==void 0&&c>i){let S=[`${F(i).toFixed(1)},${A.toFixed(1)}`];for(let y=0;y<=K;y++)U[y]>=i&&U[y]<=c&&S.push(`${F(U[y]).toFixed(1)},${L(T[y]).toFixed(1)}`);S.push(`${F(c).toFixed(1)},${A.toFixed(1)}`),I=`<path d="M${S.join(" L")} Z" fill="${p}" fill-opacity="0.3"/>`}let G=F(o),ke=`<line x1="${G.toFixed(1)}" y1="${g.top.toFixed(1)}" x2="${G.toFixed(1)}" y2="${A.toFixed(1)}" stroke="${p}" stroke-width="1.5" stroke-dasharray="3 3"/><text x="${G.toFixed(1)}" y="${(g.top-3).toFixed(1)}" text-anchor="middle" class="kan-dist-mean">\u03BC ${o.toFixed(2)}</text>`,je=`<text x="${F(0).toFixed(1)}" y="${(A+15).toFixed(1)}" text-anchor="start" class="kan-dist-axis">0</text><text x="${F(1).toFixed(1)}" y="${(A+15).toFixed(1)}" text-anchor="end" class="kan-dist-axis">1</text>`,j=`<svg class="kan-dist-svg" viewBox="0 0 ${k} ${h}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img"><line x1="${g.left}" y1="${A.toFixed(1)}" x2="${(k-g.right).toFixed(1)}" y2="${A.toFixed(1)}" class="kan-dist-base"/><path d="${O}" fill="${p}" fill-opacity="0.12"/>`+I+`<polyline points="${le.join(" ")}" fill="none" stroke="${p}" stroke-width="2"/>`+ke+je+"</svg>",M=i!==void 0&&c!==void 0?` \xB7 95% CI [${i.toFixed(2)}\u2013${c.toFixed(2)}]`:"";return`<figure class="kan-dist">${j}<figcaption class="kan-dist-caption">Beta(${u(r)}, ${u(a)})${M}</figcaption></figure>`}renderPublisherPackages(e){let t=new Map,n=o=>this.parseVersion((o.namespace||"").split("@")[1]??"")??{major:0,minor:0,patch:0},s=(o,i)=>o.major>i.major||o.major===i.major&&(o.minor>i.minor||o.minor===i.minor&&o.patch>i.patch);for(let o of this.catalog){if(!(o instanceof ee)||C(o)!==e)continue;let i=(o.namespace||"").split("/")[1]?.split("@")[0]??"";if(!i||o.name!==i)continue;let c=t.get(i);(!c||s(n(o),n(c)))&&t.set(i,o)}let r=[...t.entries()].sort((o,i)=>o[0].localeCompare(i[0]));return r.length===0?"":`<section class="kan-pkg-grid">${r.map(([o,i])=>{let c=b(i,N)??o,l=b(i,be),p=l?Ae(l,160):"",u=this.svgUrlForSubject(i,e);return`<a class="kan-pkg-card" href="/${d(o)}"><img class="kan-pkg-card-svg" src="${d(u)}" alt="" loading="lazy"/><span class="kan-pkg-card-body"><span class="kan-pkg-card-title">${d(c)}</span>`+(p?`<span class="kan-pkg-card-comment">${d(p)}</span>`:"")+"</span></a>"}).join("")}</section>`}findPublisherRootView(e){for(let t of this.catalog){if(!(t instanceof ee)||C(t)!==e)continue;let n=Re(t);if(!n)continue;let s=$e(n);if(s&&R(s,Kn))return t}}renderTimeline(e,t){let n=E(e,Z);if(!n)return"<!-- LookRenderer.Timeline: no look.source -->";let s=E(e,Fe),r=this.findInstancesOfClass(n);if(r.length===0)return"<!-- LookRenderer.Timeline: no instances -->";let a=p=>s?this.readPropertyValueText(p,s)??"":"",o=r.slice().sort((p,u)=>a(p).localeCompare(a(u))),i=E(e,Je),c=b(e,_e);return i&&c?this.renderTrajectoryChart(o,i,c,e,t,a):`<section class="kan-timeline"><ol>
95
+ `}hasSvgDerivation(e){let t=new Set,n=fe(e);for(;n.length>0;){let s=n.shift(),r=Q(s.subject);if(t.has(r))continue;t.add(r);let a=H(this.catalog,s.subject);if(a){for(let o of a.statement)if(o instanceof B&&ce(o,"kanonak.org","derivation","derivations")){for(let i of o.object??[])if(i instanceof ae)for(let c of i.statement){if(!(c instanceof M)||!ce(c,"kanonak.org","derivation","format")||!(c.object instanceof P))continue;let l=c.object.subject;if(l.publisher==="kanonak.org"&&l.package_==="formats"&&l.name==="svg")return!0}}for(let o of Re(a))n.push(o)}}return!1}renderBand(e,t,n,s=[]){let r=$e(e);return r?S(r,Un)?this.renderSectionNav(s):S(r,pn)?this.renderHero(e,t,n):S(r,fn)?this.renderPropertyList(e,t,n):S(r,kn)?this.renderBadgeRow(e,t,n):S(r,gn)?this.renderChipRow(e,t,n):S(r,hn)?this.renderReferenceList(e,t,n):S(r,mn)?this.renderReferencedBy(e,t,n):S(r,ze)?this.renderMarkdown(e,t,n):S(r,ve)?this.renderNavGroup(t,n):S(r,bn)?this.renderResourceGrid(e,n,t):S(r,$n)?this.renderTimeline(e,n):S(r,jn)?this.renderVersionDiff(e,n):S(r,vn)?this.renderFigure(e,t,n):S(r,_n)?this.renderStatRow(e,t):S(r,Sn)?this.renderHorizon(e,t,n):S(r,Rn)?this.renderPackageContents(t,n):S(r,Kn)?this.renderFeaturedResource(e,n):S(r,yn)?this.renderPublisherPackages(n):S(r,Ln)?this.renderDistribution(e,t):S(r,qe)?this.renderSectionHeading(e):S(r,In)?this.renderVersionDelta(e,t):S(r,En)?this.renderTimePlot(e,t,n):S(r,Tn)?this.renderDetails(e,t,n):`<!-- LookRenderer: unsupported band ${r.publisher}/${r.package_}/${r.name} -->`:"<!-- LookRenderer: band has no rdf:type -->"}collectTrackedSeries(e,t,n,s){let{hueBy:r,lowerPath:a,upperPath:o}=s??{},i=new Map,c=e.length,l=(p,u)=>{let k=this.resolvePath(p,u);return k===void 0?NaN:parseFloat(k)};return e.forEach((p,u)=>{let k=this.readPropertyValueReferences(p,t);for(let h of k){let g=H(this.catalog,{publisher:h.subject.publisher,package_:h.subject.package_,name:h.subject.name,...h.subject.version?{version:h.subject.version}:{}});if(!g)continue;let m=h.subject.name,v=i.get(m);v||(v={key:m,label:b(g,N)??m,points:new Array(c).fill(null),...a?{lower:new Array(c).fill(null)}:{},...o?{upper:new Array(c).fill(null)}:{}},i.set(m,v));let K=l(g,n);if(Number.isFinite(K)&&(v.points[u]=K),a&&v.lower){let _=l(g,a);Number.isFinite(_)&&(v.lower[u]=_)}if(o&&v.upper){let _=l(g,o);Number.isFinite(_)&&(v.upper[u]=_)}if(r){let _=l(g,r);Number.isFinite(_)&&(v.hue=_)}v.lastSubject=g}}),[...i.values()]}hrefForSubject(e,t,n="="){let s=e.namespace||"",r=s.split("/")[1]?.split("@")[0]??"",a=s.split("@")[1]??"",o=a?this.parseVersion(a):void 0;return he.formatResourceUrl({publisher:C(e),package_:r,name:e.name,...o?{version:o}:{}},n,{contextPublisher:t})}renderVersionDiff(e,t){let n=E(e,Z);if(!n)return"<!-- LookRenderer.VersionDiff: no look.source -->";let s=b(e,_e),r=E(e,Xe);if(!r||!s)return"<!-- LookRenderer.VersionDiff: needs look.track + look.metricPath -->";let a=E(e,Ie),o=b(e,Ee),i=this.findInstancesOfClass(n);if(i.length===0)return"<!-- LookRenderer.VersionDiff: no instances -->";let c=k=>a?this.readPropertyValueText(k,a)??"":"",l=i.slice().sort((k,h)=>c(k).localeCompare(c(h))),p=this.collectTrackedSeries(l,r,s,{hueBy:o});return p.length===0?"<!-- LookRenderer.VersionDiff: no tracked series -->":`<section class="kan-vdiff">${p.map((k,h)=>{let g=k.hue!==void 0?k.hue:Math.round(h*360/p.length),m=k.points.filter(x=>x!==null);if(m.length===0)return"";let v=m[0],K=m[m.length-1],_=K-v,U;if(Math.abs(_)>=.005){let x=_>0?"up":"down",F=_>0?"\u25B2":"\u25BC";U=`<span class="kan-vdiff-delta ${x}">${_>0?"+":""}${_.toFixed(2)} ${F}</span>`}else U='<span class="kan-vdiff-delta flat">\u2014</span>';let T=k.lastSubject&&this.isLinkable(C(k.lastSubject),t)?`<a href="${d(this.hrefForSubject(k.lastSubject,t))}">${d(k.label)}</a>`:d(k.label);return`<div class="kan-vdiff-row" style="--kan-vdiff-hue:${g}"><span class="kan-vdiff-label">${T}</span><span class="kan-vdiff-start">${v.toFixed(2)}</span>`+this.sparkline(k.points,g)+`<span class="kan-vdiff-end">${K.toFixed(2)}</span>`+U+"</div>"}).join("")}</section>`}sparkline(e,t){let a=`hsl(${t},65%,60%)`,o=e.filter(m=>m!==null);if(o.length===0)return'<svg class="kan-vdiff-spark" viewBox="0 0 132 30" xmlns="http://www.w3.org/2000/svg"></svg>';let i=Math.min(...o),l=Math.max(...o)-i,p=e.length,u=m=>p<=1?132/2:4+m/(p-1)*124,k=m=>l<1e-9?30/2:26-(m-i)/l*22,h=[],g=[];return e.forEach((m,v)=>{if(m===null)return;let K=u(v),_=k(m);h.push(`${K.toFixed(1)},${_.toFixed(1)}`),g.push(`<circle cx="${K.toFixed(1)}" cy="${_.toFixed(1)}" r="2" fill="${a}"/>`)}),`<svg class="kan-vdiff-spark" viewBox="0 0 132 30" preserveAspectRatio="none" xmlns="http://www.w3.org/2000/svg" role="img"><polyline points="${h.join(" ")}" fill="none" stroke="${a}" stroke-width="1.5" stroke-linejoin="round" stroke-linecap="round"/>`+g.join("")+"</svg>"}svgUrlForSubject(e,t,n="="){return`${this.hrefForSubject(e,t,n)}.svg`}renderFigure(e,t,n){let s=t,r=E(e,Z);if(r){let l=H(this.catalog,r);l&&(s=l)}let a=this.svgUrlForSubject(s,n),o=b(s,N)??s.name,i=b(e,nt);return`<figure class="kan-figure${i==="small"||i==="medium"||i==="large"?` kan-figure-${i}`:""}"><img class="kan-figure-img" src="${d(a)}" alt="${d(o)}" loading="lazy"/></figure>`}renderStatRow(e,t){let n=te(e,Nn),s=this.gatherValueItems(n).filter(a=>a instanceof ae);if(s.length===0)return"<!-- LookRenderer.StatRow: no look.stats -->";let r=[];for(let a of s){let o=b(a,Vn);if(!o)continue;let i=this.resolvePath(t,o);if(i===void 0)continue;let c=b(a,Mn)??"";r.push('<div class="kan-stat">'+(c?`<span class="kan-stat-label">${d(c)}</span>`:"")+`<span class="kan-stat-val">${d(i)}</span></div>`)}return r.length===0?"":`<div class="kan-stat-row">${r.join("")}</div>`}renderHorizon(e,t,n){let s=E(e,Z);if(!s)return"<!-- LookRenderer.Horizon: no look.source -->";let r=this.gatherValueItems(te(t,s)).filter(o=>o instanceof ae);return r.length===0?"":`<section class="kan-horizon">${r.map(o=>this.renderConditionNode(o,n,0)).join("")}</section>`}renderConditionNode(e,t,n){let s=$e(e),r=s?this.readLabelForUri({publisher:s.publisher,package_:s.package_,name:s.name})??s.name:"Condition",a=[],o=[];for(let u of e.statement){let k=u.predicate?.subject;if(!k||k.name==="type")continue;let h=this.readLabelForUri({publisher:k.publisher,package_:k.package_,name:k.name})??k.name;if(u instanceof J||u instanceof de||u instanceof pe)a.push(`<div class="kan-cond-field"><span class="kan-cond-key">${d(h)}</span><span class="kan-cond-v">${d(String(u.object))}</span></div>`);else if(u instanceof M&&u.object instanceof P){let g=u.object.subject,m=this.readLabelForUri({publisher:g.publisher,package_:g.package_,name:g.name})??g.name;a.push(`<div class="kan-cond-field"><span class="kan-cond-key">${d(h)}</span><span class="kan-cond-v">${d(m)}</span></div>`)}else if(u instanceof ne)o.push(this.renderConditionNode(u.object,t,n+1));else if(u instanceof B)for(let g of u.object??[])g instanceof ae&&o.push(this.renderConditionNode(g,t,n+1))}let i=a.length?`<div class="kan-cond-fields">${a.join("")}</div>`:"",c=o.length?`<div class="kan-cond-children">${o.join("")}</div>`:"",l=o.length>0,p=l?`<span class="kan-cond-op">${d(r)}</span>`:`<div class="kan-cond-type">${d(r)}</div>`;return`<div class="kan-cond ${l?"kan-cond-branch":"kan-cond-leaf"}">${p}${i}${c}</div>`}renderSectionHeading(e){let t=e,n=b(t,Je);if(!n)return"<!-- LookRenderer.SectionHeading: no look.heading -->";let s=b(t,Fn);return`<div class="kan-section" id="${on(n)}"><h2 class="kan-section-title">${d(n)}</h2>`+(s?`<p class="kan-section-note">${d(s)}</p>`:"")+"</div>"}renderSectionNav(e){return e.length===0?"<!-- LookRenderer.SectionNav: no section headings in this view -->":`<nav class="kan-section-nav" aria-label="On this page">${e.map(n=>`<a class="kan-section-nav-link" href="#${d(n.slug)}">${d(n.label)}</a>`).join("")}</nav>`}renderVersionDelta(e,t){let s=b(e,_e);if(!s)return"<!-- LookRenderer.VersionDelta: no look.metricPath -->";let r=O=>{let I=this.resolvePath(O,s),G=I===void 0?NaN:parseFloat(I);return Number.isFinite(G)?G:void 0},a=r(t);if(a===void 0)return"";let o=O=>this.parseVersion((O.namespace||"").split("@")[1]??"")??{major:0,minor:0,patch:0},i=(O,I)=>O.major-I.major||O.minor-I.minor||O.patch-I.patch,c={publisher:C(t),package_:(t.namespace||"").split("/")[1]?.split("@")[0]??"",name:t.name},l=o(t),p,u;for(let O of oe(this.catalog,c)){let I=o(O);i(I,l)<0&&(!u||i(I,u)>0)&&(p=O,u=I)}if(!p||!u)return'<div class="kan-delta kan-delta-first">First tracked in this version</div>';let k=r(p);if(k===void 0)return"";let h=a-k,g=Math.abs(h)<.005?"flat":h>0?"up":"down",m=g==="up"?"\u25B2":g==="down"?"\u25BC":"\u2014",v=g==="up"?"#34d399":g==="down"?"#f87171":"var(--kan-text-faint)",K=`${u.major}.${u.minor}.${u.patch}`,_=320,U=46,T=14,x=30,F=O=>T+Math.min(1,Math.max(0,O))*(_-2*T),L=F(k),A=F(a),le=`<svg class="kan-delta-track" viewBox="0 0 ${_} ${U}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img"><line x1="${T}" y1="${x}" x2="${_-T}" y2="${x}" class="kan-delta-base"/><line x1="${L.toFixed(1)}" y1="${x}" x2="${A.toFixed(1)}" y2="${x}" stroke="${v}" stroke-width="3"/><circle cx="${L.toFixed(1)}" cy="${x}" r="4" class="kan-delta-prev"/><circle cx="${A.toFixed(1)}" cy="${x}" r="5.5" fill="${v}"/><text x="${L.toFixed(1)}" y="${x-9}" text-anchor="middle" class="kan-delta-tick kan-delta-tick-prev">${k.toFixed(2)}</text><text x="${A.toFixed(1)}" y="${x+17}" text-anchor="middle" class="kan-delta-tick">${a.toFixed(2)}</text></svg>`;return`<div class="kan-delta"><div class="kan-delta-head"><span class="kan-delta-vs">vs ${d(K)}</span><span class="kan-delta-badge ${g}">${h>0?"+":""}${h.toFixed(2)} ${m}</span></div>`+le+"</div>"}renderTimePlot(e,t,n){let s=E(e,Z),r=E(e,Ie);if(!s||!r)return"<!-- LookRenderer.TimePlot: needs look.source + look.orderBy -->";let a=e,o=b(a,An),i=b(a,Ze),c=[];for(let j of this.readPropertyValueReferences(t,s)){let V=H(this.catalog,{publisher:j.subject.publisher,package_:j.subject.package_,name:j.subject.name,...j.subject.version?{version:j.subject.version}:{}});if(!V)continue;let R=this.readPropertyValueText(V,r)??"",y=Date.parse(R);if(!Number.isFinite(y))continue;let X=o?this.resolvePath(V,o)??"":"",$=(i?this.resolvePath(V,i):void 0)??b(V,N)??V.name;c.push({t:y,dateStr:R,lane:X,label:$,href:this.hrefForSubject(V,n),linkable:this.isLinkable(C(V),n)})}if(c.length===0)return"<!-- LookRenderer.TimePlot: no dated points -->";let l=[];for(let j of c)l.includes(j.lane)||l.push(j.lane);let p=Math.min(...c.map(j=>j.t)),u=Math.max(...c.map(j=>j.t));u===p&&(u=p+1);let k=l.some(j=>j),h=720,g=k?96:16,m=18,v=12,K=24,_=36,U=v+l.length*_+K,T=g,x=h-m,F=x-T,L=j=>T+(j-p)/(u-p)*F,A=j=>v+j*_+_/2,le=j=>Math.round(j*360/Math.max(1,l.length)),O=[];l.forEach((j,V)=>{let R=A(V);O.push(`<line x1="${T}" y1="${R.toFixed(1)}" x2="${x}" y2="${R.toFixed(1)}" class="kan-plot-guide"/>`),j&&O.push(`<text x="${(g-8).toFixed(1)}" y="${(R+4).toFixed(1)}" text-anchor="end" class="kan-plot-lane">${ie(j)}</text>`)});let I={},G=[];for(let j of c){let V=l.indexOf(j.lane),y=((I[j.lane]=(I[j.lane]??0)+1)%3-1)*7,X=L(j.t),$=A(V)+y,w=`${Ke(j.dateStr)} \xB7 ${j.label}`,W=`<circle cx="${X.toFixed(1)}" cy="${$.toFixed(1)}" r="5" fill="hsl(${le(V)},65%,60%)" class="kan-plot-pt"><title>${ie(w)}</title></circle>`;G.push(j.linkable?`<a href="${d(j.href)}" class="kan-plot-link">${W}</a>`:W)}let ke=`<text x="${T}" y="${(U-6).toFixed(1)}" text-anchor="start" class="kan-plot-axis">${ie(Ke(new Date(p).toISOString()))}</text><text x="${x}" y="${(U-6).toFixed(1)}" text-anchor="end" class="kan-plot-axis">${ie(Ke(new Date(u).toISOString()))}</text>`;return`<section class="kan-plot">${`<svg class="kan-plot-svg" viewBox="0 0 ${h} ${U}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">`+O.join("")+G.join("")+ke+"</svg>"}</section>`}renderDetails(e,t,n){let s=Ae(e,Pn),r=this.detailRows(t,n,s);return r?`<dl class="kan-details">${r}</dl>`:"<!-- LookRenderer.Details: no properties -->"}detailRows(e,t,n){let s=[];for(let r of e.statement){let a=r.predicate?.subject;if(!a||this.isMetaPredicate(a)||n.some(c=>S(c,a)))continue;let o=this.readLabelForUri({publisher:a.publisher,package_:a.package_,name:a.name})??a.name,i=this.detailValue(r,t,n);i&&s.push(`<dt class="kan-details-key">${d(o)}</dt><dd class="kan-details-val">${i}</dd>`)}return s.join("")}detailValue(e,t,n){if(e instanceof J)return lt(e.object);if(e instanceof de||e instanceof pe)return d(String(e.object));if(e instanceof M&&e.object instanceof P)return this.detailReferenceLink(e.object,t);if(e instanceof ne)return this.detailEmbedded(e.object,t,n);if(e instanceof B){let s=e.object??[];return s.length>0&&s.every(r=>r instanceof ae)?s.map(r=>this.detailEmbedded(r,t,n)).join(""):s.map(r=>r instanceof P?this.detailReferenceLink(r,t):r instanceof ae?this.detailEmbedded(r,t,n):d(String(r))).filter(r=>r).join(", ")}return""}detailReferenceLink(e,t){let n=this.readLabelForUri({publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name})??e.subject.name;if(!this.isLinkable(e.subject.publisher,t))return`<span class="kan-link-plain">${d(n)}</span>`;let s=this.urlForReference(e,void 0,t);return`<img class="kan-md-chip" src="${d(`${s}.svg`)}" alt="" loading="lazy"><a class="kan-link" href="${d(s)}">${d(n)}</a>`}detailEmbedded(e,t,n){let s=$e(e),r=s?this.readLabelForUri({publisher:s.publisher,package_:s.package_,name:s.name})??s.name:"",a=this.detailRows(e,t,n);return'<div class="kan-details-embed">'+(r?`<span class="kan-details-type">${d(r)}</span>`:"")+(a?`<dl class="kan-details">${a}</dl>`:"")+"</div>"}isMetaPredicate(e){return S(e,Jn)||S(e,N)||S(e,be)||S(e,ye)||S(e,xe)||S(e,Cn)||S(e,nn)}renderPackageContents(e,t){let n=e.namespace||"";if(!n)return"";let s=this.catalog.filter(a=>a instanceof ee&&a.namespace===n&&a.name!==e.name);return s.length===0?`<!-- LookRenderer.PackageContents: no members in ${n} -->`:(s.sort((a,o)=>{let i=b(a,N)??a.name,c=b(o,N)??o.name;return i.localeCompare(c)}),`<section class="kan-pkg-grid">${s.map(a=>{let o=b(a,N)??a.name,i=b(a,be),c=i?Ne(i,160):"",l=this.hrefForSubject(a,t),p=this.svgUrlForSubject(a,t);return`<a class="kan-pkg-card" href="${d(l)}"><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(o)}</span>`+(c?`<span class="kan-pkg-card-comment">${d(c)}</span>`:"")+"</span></a>"}).join("")}</section>`)}renderReferencedBy(e,t,n){let s=E(e,et),r={publisher:C(t),package_:(t.namespace||"").split("/")[1]?.split("@")[0]??"",name:t.name},a=Q(r),o=u=>this.parseVersion((u.namespace||"").split("@")[1]??"")??{major:0,minor:0,patch:0},i=(u,k)=>u.major-k.major||u.minor-k.minor||u.patch-k.patch,c=new Map;for(let u of this.catalog){if(!(u instanceof ee))continue;let k=Q({publisher:C(u),package_:(u.namespace||"").split("/")[1]?.split("@")[0]??"",name:u.name});if(k===a||!this.referencesTarget(u,a,s))continue;let h=c.get(k);(!h||i(o(u),o(h))>0)&&c.set(k,u)}let l=[...c.values()];return l.length===0?"<!-- LookRenderer.ReferencedBy: no incoming references -->":(l.sort((u,k)=>{let h=b(u,N)??u.name,g=b(k,N)??k.name;return h.localeCompare(g)}),`<section class="kan-pkg-grid">${l.map(u=>{let k=b(u,N)??u.name,h=b(u,be),g=h?Ne(h,160):"",m=`<span class="kan-pkg-card-body"><span class="kan-pkg-card-title">${d(k)}</span>`+(g?`<span class="kan-pkg-card-comment">${d(g)}</span>`:"")+"</span>";if(!this.isLinkable(C(u),n))return`<span class="kan-pkg-card">${m}</span>`;let v=this.hrefForSubject(u,n),K=this.svgUrlForSubject(u,n);return`<a class="kan-pkg-card" href="${d(v)}"><img class="kan-pkg-card-svg" src="${d(K)}" alt="" loading="lazy"/>`+m+"</a>"}).join("")}</section>`)}referencesTarget(e,t,n){for(let s of e.statement){let r=s.predicate?.subject;if(r?.name==="type"||n&&!(r&&Q(r)===Q(n)))continue;let a=[];if(s instanceof M&&s.object instanceof P)a.push(s.object);else if(s instanceof B)for(let o of s.object??[])o instanceof P&&a.push(o);for(let o of a)if(Q(o.subject)===t)return!0}return!1}renderFeaturedResource(e,t){let n=E(e,Z);if(!n)return"<!-- LookRenderer.FeaturedResource: no look.source -->";let s=oe(this.catalog,n),r=c=>this.parseVersion((c.namespace||"").split("@")[1]??"")??{major:0,minor:0,patch:0},a=s.length>0?s.slice().sort((c,l)=>{let p=r(c),u=r(l);return u.major-p.major||u.minor-p.minor||u.patch-p.patch})[0]:H(this.catalog,n);if(!a)return`<!-- LookRenderer.FeaturedResource: ${n.publisher}/${n.package_}/${n.name} not found -->`;let o=this.renderHtml(a),i=this.hrefForSubject(a,t);return`<section class="kan-featured"><a class="kan-featured-permalink" href="${d(i)}">View full resource \u2192</a>`+o+"</section>"}renderDistribution(e,t){let n=e,s=R=>{let y=b(n,R);if(!y)return;let X=this.resolvePath(t,y),$=X===void 0?NaN:parseFloat(X);return Number.isFinite($)?$:void 0},r=s(On),a=s(wn);if(r===void 0||a===void 0||r<=0||a<=0)return"<!-- LookRenderer.Distribution: needs resolvable alphaPath + betaPath (> 0) -->";let o=s(_e)??r/(r+a),i=s(Qe),c=s(en),l=s(Ee),p=l!==void 0?`hsl(${l},65%,60%)`:"var(--kan-accent)",u=R=>Number.isInteger(R)?String(R):R.toFixed(1),k=280,h=168,g={top:14,right:14,bottom:24,left:14},m=k-g.left-g.right,v=h-g.top-g.bottom,K=120,_=1e-4,U=[],T=[],x=0;for(let R=0;R<=K;R++){let y=R/K;y<_?y=_:y>1-_&&(y=1-_);let X=Math.exp((r-1)*Math.log(y)+(a-1)*Math.log(1-y));U.push(y),T.push(X),X>x&&(x=X)}let F=R=>g.left+Math.min(1,Math.max(0,R))*m,L=R=>g.top+(1-(x>0?R/x:0))*v,A=g.top+v,le=U.map((R,y)=>`${F(R).toFixed(1)},${L(T[y]).toFixed(1)}`),O=`M${F(0).toFixed(1)},${A.toFixed(1)} L${le.join(" L")} L${F(1).toFixed(1)},${A.toFixed(1)} Z`,I="";if(i!==void 0&&c!==void 0&&c>i){let R=[`${F(i).toFixed(1)},${A.toFixed(1)}`];for(let y=0;y<=K;y++)U[y]>=i&&U[y]<=c&&R.push(`${F(U[y]).toFixed(1)},${L(T[y]).toFixed(1)}`);R.push(`${F(c).toFixed(1)},${A.toFixed(1)}`),I=`<path d="M${R.join(" L")} Z" fill="${p}" fill-opacity="0.3"/>`}let G=F(o),ke=`<line x1="${G.toFixed(1)}" y1="${g.top.toFixed(1)}" x2="${G.toFixed(1)}" y2="${A.toFixed(1)}" stroke="${p}" stroke-width="1.5" stroke-dasharray="3 3"/><text x="${G.toFixed(1)}" y="${(g.top-3).toFixed(1)}" text-anchor="middle" class="kan-dist-mean">\u03BC ${o.toFixed(2)}</text>`,je=`<text x="${F(0).toFixed(1)}" y="${(A+15).toFixed(1)}" text-anchor="start" class="kan-dist-axis">0</text><text x="${F(1).toFixed(1)}" y="${(A+15).toFixed(1)}" text-anchor="end" class="kan-dist-axis">1</text>`,j=`<svg class="kan-dist-svg" viewBox="0 0 ${k} ${h}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img"><line x1="${g.left}" y1="${A.toFixed(1)}" x2="${(k-g.right).toFixed(1)}" y2="${A.toFixed(1)}" class="kan-dist-base"/><path d="${O}" fill="${p}" fill-opacity="0.12"/>`+I+`<polyline points="${le.join(" ")}" fill="none" stroke="${p}" stroke-width="2"/>`+ke+je+"</svg>",V=i!==void 0&&c!==void 0?` \xB7 95% CI [${i.toFixed(2)}\u2013${c.toFixed(2)}]`:"";return`<figure class="kan-dist">${j}<figcaption class="kan-dist-caption">Beta(${u(r)}, ${u(a)})${V}</figcaption></figure>`}renderPublisherPackages(e){let t=new Map,n=o=>this.parseVersion((o.namespace||"").split("@")[1]??"")??{major:0,minor:0,patch:0},s=(o,i)=>o.major>i.major||o.major===i.major&&(o.minor>i.minor||o.minor===i.minor&&o.patch>i.patch);for(let o of this.catalog){if(!(o instanceof ee)||C(o)!==e)continue;let i=(o.namespace||"").split("/")[1]?.split("@")[0]??"";if(!i||o.name!==i)continue;let c=t.get(i);(!c||s(n(o),n(c)))&&t.set(i,o)}let r=[...t.entries()].sort((o,i)=>o[0].localeCompare(i[0]));return r.length===0?"":`<section class="kan-pkg-grid">${r.map(([o,i])=>{let c=b(i,N)??o,l=b(i,be),p=l?Ne(l,160):"",u=this.svgUrlForSubject(i,e);return`<a class="kan-pkg-card" href="/${d(o)}"><img class="kan-pkg-card-svg" src="${d(u)}" alt="" loading="lazy"/><span class="kan-pkg-card-body"><span class="kan-pkg-card-title">${d(c)}</span>`+(p?`<span class="kan-pkg-card-comment">${d(p)}</span>`:"")+"</span></a>"}).join("")}</section>`}findPublisherRootView(e){for(let t of this.catalog){if(!(t instanceof ee)||C(t)!==e)continue;let n=Se(t);if(!n)continue;let s=$e(n);if(s&&S(s,xn))return t}}renderTimeline(e,t){let n=E(e,Z);if(!n)return"<!-- LookRenderer.Timeline: no look.source -->";let s=E(e,Ie),r=this.findInstancesOfClass(n);if(r.length===0)return"<!-- LookRenderer.Timeline: no instances -->";let a=p=>s?this.readPropertyValueText(p,s)??"":"",o=r.slice().sort((p,u)=>a(p).localeCompare(a(u))),i=E(e,Xe),c=b(e,_e);return i&&c?this.renderTrajectoryChart(o,i,c,e,t,a):`<section class="kan-timeline"><ol>
96
96
  ${o.map(p=>{let u=p.namespace||"",k=u.split("/")[1]?.split("@")[0]??"",h=u.split("@")[1]??"",g=h?this.parseVersion(h):void 0,m=he.formatResourceUrl({publisher:C(p),package_:k,name:p.name,...g?{version:g}:{}},"=",{contextPublisher:t}),v=a(p),K=v?`<span class="kan-timeline-date">${d(v)}</span>`:"",_=h||p.name;return`<li class="kan-timeline-node"><a href="${d(m)}"><span class="kan-timeline-key">${d(_)}</span>${K}</a></li>`}).join(`
97
97
  `)}
98
- </ol></section>`}renderTrajectoryChart(e,t,n,s,r,a){let o=s,i=b(o,Ie),c=b(o,Ze),l=b(o,Xe),p=b(o,Bn),u=sn(o,Vn),k=sn(o,Dn),h=e.length,g=this.collectTrackedSeries(e,t,n,{hueBy:i,lowerPath:c,upperPath:l});if(g.length===0)return"<!-- LookRenderer.Timeline: no tracked series -->";let m=[];for(let $ of g){for(let w of $.points)w!==null&&m.push(w);for(let w of $.lower??[])w!==null&&m.push(w);for(let w of $.upper??[])w!==null&&m.push(w)}if(m.length===0)return"<!-- LookRenderer.Timeline: no metric values -->";let v=Math.min(...m),K=Math.max(...m);K-v<1e-9&&(v-=.5,K+=.5);let _=(K-v)*.08,U=u!==void 0?u:v-_,T=k!==void 0?k:K+_;T-U<1e-9&&(T=U+1);let x=1e3,F=440,L={top:28,right:24,bottom:56,left:52},A=x-L.left-L.right,le=F-L.top-L.bottom,O=$=>h<=1?L.left+A/2:L.left+$/(h-1)*A,I=$=>L.top+(1-($-U)/(T-U))*le,G=($,w)=>$.hue!==void 0?$.hue:Math.round(w*360/g.length),ke=[];for(let $=0;$<5;$++){let w=U+$*(T-U)/4,W=I(w);ke.push(`<line x1="${L.left}" y1="${W.toFixed(1)}" x2="${(x-L.right).toFixed(1)}" y2="${W.toFixed(1)}" class="kan-fan-grid"/>`),ke.push(`<text x="${(L.left-8).toFixed(1)}" y="${(W+4).toFixed(1)}" class="kan-fan-axis" text-anchor="end">${w.toFixed(2)}</text>`)}let je=[];e.forEach(($,w)=>{let W=this.hrefForSubject($,r),z=($.namespace||"").split("@")[1]??"",D=O(w),Y=Ke(a($));je.push(`<a href="${d(W)}" class="kan-fan-xtick"><line x1="${D.toFixed(1)}" y1="${L.top}" x2="${D.toFixed(1)}" y2="${(F-L.bottom).toFixed(1)}" class="kan-fan-vline"/><text x="${D.toFixed(1)}" y="${(F-L.bottom+20).toFixed(1)}" class="kan-fan-xlabel" text-anchor="middle">${ie(z||$.name)}</text>`+(Y?`<text x="${D.toFixed(1)}" y="${(F-L.bottom+36).toFixed(1)}" class="kan-fan-xdate" text-anchor="middle">${ie(Y)}</text>`:"")+"</a>")});let j=[];g.forEach(($,w)=>{if(!$.lower||!$.upper)return;let W=G($,w),z=[],D=[];for(let q=0;q<h;q++){let ge=$.upper[q],ue=$.lower[q];ge==null||ue===null||ue===void 0||(z.push(`${O(q).toFixed(1)},${I(ge).toFixed(1)}`),D.unshift(`${O(q).toFixed(1)},${I(ue).toFixed(1)}`))}let Y=z.concat(D);Y.length<3||j.push(`<polygon class="kan-fan-band" points="${Y.join(" ")}" fill="hsl(${W},65%,60%)"/>`)});let M=[];g.forEach(($,w)=>{let z=`hsl(${G($,w)},65%,60%)`,D=[],Y=[];$.points.forEach((q,ge)=>{if(q===null)return;let ue=O(ge),se=I(q);D.push(`${ue.toFixed(1)},${se.toFixed(1)}`),Y.push(`<circle cx="${ue.toFixed(1)}" cy="${se.toFixed(1)}" r="3.5" fill="${z}"/>`)}),D.length!==0&&M.push(`<g class="kan-fan-series" data-series="${d($.key)}"><polyline points="${D.join(" ")}" fill="none" stroke="${z}" stroke-width="2" stroke-linejoin="round" stroke-linecap="round"/>`+Y.join("")+"</g>")});let S=`<svg class="kan-fan-svg" viewBox="0 0 ${x} ${F}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">`+ke.join("")+je.join("")+j.join("")+M.join("")+"</svg>",y=p?`${d(p)}=`:"",X=g.map(($,w)=>{let W=G($,w),z=$.points.filter(se=>se!==null),D=z.length?z[0]:void 0,Y=z.length?z[z.length-1]:void 0,q="";if(Y!==void 0&&D!==void 0){let se=Y-D;if(Math.abs(se)>=.005){let rn=se>0?"up":"down",on=se>0?"\u25B2":"\u25BC";q=` <span class="kan-fan-delta ${rn}">${se>0?"+":""}${se.toFixed(2)} ${on}</span>`}else q=' <span class="kan-fan-delta flat">\u2014</span>'}let ge=Y!==void 0?`${y}${Y.toFixed(2)}`:"\u2014",ue=$.lastSubject&&this.isLinkable(C($.lastSubject),r)?`<a href="${d(this.hrefForSubject($.lastSubject,r))}">${d($.label)}</a>`:d($.label);return`<div class="kan-fan-legend-item" style="--kan-fan-hue:${W}"><span class="kan-fan-swatch"></span><span class="kan-fan-legend-label">${ue}</span><span class="kan-fan-legend-cur">${ge}${q}</span></div>`});return`<section class="kan-fan"><div class="kan-fan-chart">${S}</div><div class="kan-fan-legend">${X.join("")}</div></section>`}renderResourceGrid(e,t,n){let s=E(e,Z);if(!s)return"<!-- LookRenderer.ResourceGrid: no look.source -->";let r=H(this.catalog,s),a=r?fe(r).some(c=>{let l=c.subject.name;return l==="ObjectProperty"||l==="DatatypeProperty"||l==="Property"}):!1,o=[];if(a&&n){let c=this.readPropertyValueReferences(n,s);for(let l of c){let p=H(this.catalog,{publisher:l.subject.publisher,package_:l.subject.package_,name:l.subject.name,...l.subject.version?{version:l.subject.version}:{}});p&&o.push(p)}}else o=this.findInstancesOfClass(s);if(o.length===0)return`<!-- LookRenderer.ResourceGrid: no resources for ${s.publisher}/${s.package_}/${s.name} -->`;let i=[];for(let c of o){let l=b(c,N)??c.name,p=b(c,be),u=c.namespace||"",k=u.split("/")[1]?.split("@")[0]??"",h=u.split("@")[1]??"",g=h?this.parseVersion(h):void 0,m=he.formatResourceUrl({publisher:C(c),package_:k,name:c.name,...g?{version:g}:{}},"=",{contextPublisher:t}),v=p?`<p class="kan-resource-card-subtitle">${d(p)}</p>`:"",K=`<h3 class="kan-resource-card-title">${d(l)}</h3>${v}`;i.push(this.isLinkable(C(c),t)?`<a class="kan-resource-card" href="${d(m)}">${K}</a>`:`<span class="kan-resource-card">${K}</span>`)}return`<section class="kan-resource-grid">
98
+ </ol></section>`}renderTrajectoryChart(e,t,n,s,r,a){let o=s,i=b(o,Ee),c=b(o,Qe),l=b(o,en),p=b(o,Gn),u=rn(o,Bn),k=rn(o,Hn),h=e.length,g=this.collectTrackedSeries(e,t,n,{hueBy:i,lowerPath:c,upperPath:l});if(g.length===0)return"<!-- LookRenderer.Timeline: no tracked series -->";let m=[];for(let $ of g){for(let w of $.points)w!==null&&m.push(w);for(let w of $.lower??[])w!==null&&m.push(w);for(let w of $.upper??[])w!==null&&m.push(w)}if(m.length===0)return"<!-- LookRenderer.Timeline: no metric values -->";let v=Math.min(...m),K=Math.max(...m);K-v<1e-9&&(v-=.5,K+=.5);let _=(K-v)*.08,U=u!==void 0?u:v-_,T=k!==void 0?k:K+_;T-U<1e-9&&(T=U+1);let x=1e3,F=440,L={top:28,right:24,bottom:56,left:52},A=x-L.left-L.right,le=F-L.top-L.bottom,O=$=>h<=1?L.left+A/2:L.left+$/(h-1)*A,I=$=>L.top+(1-($-U)/(T-U))*le,G=($,w)=>$.hue!==void 0?$.hue:Math.round(w*360/g.length),ke=[];for(let $=0;$<5;$++){let w=U+$*(T-U)/4,W=I(w);ke.push(`<line x1="${L.left}" y1="${W.toFixed(1)}" x2="${(x-L.right).toFixed(1)}" y2="${W.toFixed(1)}" class="kan-fan-grid"/>`),ke.push(`<text x="${(L.left-8).toFixed(1)}" y="${(W+4).toFixed(1)}" class="kan-fan-axis" text-anchor="end">${w.toFixed(2)}</text>`)}let je=[];e.forEach(($,w)=>{let W=this.hrefForSubject($,r),z=($.namespace||"").split("@")[1]??"",D=O(w),Y=Ke(a($));je.push(`<a href="${d(W)}" class="kan-fan-xtick"><line x1="${D.toFixed(1)}" y1="${L.top}" x2="${D.toFixed(1)}" y2="${(F-L.bottom).toFixed(1)}" class="kan-fan-vline"/><text x="${D.toFixed(1)}" y="${(F-L.bottom+20).toFixed(1)}" class="kan-fan-xlabel" text-anchor="middle">${ie(z||$.name)}</text>`+(Y?`<text x="${D.toFixed(1)}" y="${(F-L.bottom+36).toFixed(1)}" class="kan-fan-xdate" text-anchor="middle">${ie(Y)}</text>`:"")+"</a>")});let j=[];g.forEach(($,w)=>{if(!$.lower||!$.upper)return;let W=G($,w),z=[],D=[];for(let q=0;q<h;q++){let ge=$.upper[q],ue=$.lower[q];ge==null||ue===null||ue===void 0||(z.push(`${O(q).toFixed(1)},${I(ge).toFixed(1)}`),D.unshift(`${O(q).toFixed(1)},${I(ue).toFixed(1)}`))}let Y=z.concat(D);Y.length<3||j.push(`<polygon class="kan-fan-band" points="${Y.join(" ")}" fill="hsl(${W},65%,60%)"/>`)});let V=[];g.forEach(($,w)=>{let z=`hsl(${G($,w)},65%,60%)`,D=[],Y=[];$.points.forEach((q,ge)=>{if(q===null)return;let ue=O(ge),se=I(q);D.push(`${ue.toFixed(1)},${se.toFixed(1)}`),Y.push(`<circle cx="${ue.toFixed(1)}" cy="${se.toFixed(1)}" r="3.5" fill="${z}"/>`)}),D.length!==0&&V.push(`<g class="kan-fan-series" data-series="${d($.key)}"><polyline points="${D.join(" ")}" fill="none" stroke="${z}" stroke-width="2" stroke-linejoin="round" stroke-linecap="round"/>`+Y.join("")+"</g>")});let R=`<svg class="kan-fan-svg" viewBox="0 0 ${x} ${F}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">`+ke.join("")+je.join("")+j.join("")+V.join("")+"</svg>",y=p?`${d(p)}=`:"",X=g.map(($,w)=>{let W=G($,w),z=$.points.filter(se=>se!==null),D=z.length?z[0]:void 0,Y=z.length?z[z.length-1]:void 0,q="";if(Y!==void 0&&D!==void 0){let se=Y-D;if(Math.abs(se)>=.005){let cn=se>0?"up":"down",ln=se>0?"\u25B2":"\u25BC";q=` <span class="kan-fan-delta ${cn}">${se>0?"+":""}${se.toFixed(2)} ${ln}</span>`}else q=' <span class="kan-fan-delta flat">\u2014</span>'}let ge=Y!==void 0?`${y}${Y.toFixed(2)}`:"\u2014",ue=$.lastSubject&&this.isLinkable(C($.lastSubject),r)?`<a href="${d(this.hrefForSubject($.lastSubject,r))}">${d($.label)}</a>`:d($.label);return`<div class="kan-fan-legend-item" style="--kan-fan-hue:${W}"><span class="kan-fan-swatch"></span><span class="kan-fan-legend-label">${ue}</span><span class="kan-fan-legend-cur">${ge}${q}</span></div>`});return`<section class="kan-fan"><div class="kan-fan-chart">${R}</div><div class="kan-fan-legend">${X.join("")}</div></section>`}renderResourceGrid(e,t,n){let s=E(e,Z);if(!s)return"<!-- LookRenderer.ResourceGrid: no look.source -->";let r=H(this.catalog,s),a=r?fe(r).some(c=>{let l=c.subject.name;return l==="ObjectProperty"||l==="DatatypeProperty"||l==="Property"}):!1,o=[];if(a&&n){let c=this.readPropertyValueReferences(n,s);for(let l of c){let p=H(this.catalog,{publisher:l.subject.publisher,package_:l.subject.package_,name:l.subject.name,...l.subject.version?{version:l.subject.version}:{}});p&&o.push(p)}}else o=this.findInstancesOfClass(s);if(o.length===0)return`<!-- LookRenderer.ResourceGrid: no resources for ${s.publisher}/${s.package_}/${s.name} -->`;let i=[];for(let c of o){let l=b(c,N)??c.name,p=b(c,be),u=c.namespace||"",k=u.split("/")[1]?.split("@")[0]??"",h=u.split("@")[1]??"",g=h?this.parseVersion(h):void 0,m=he.formatResourceUrl({publisher:C(c),package_:k,name:c.name,...g?{version:g}:{}},"=",{contextPublisher:t}),v=p?`<p class="kan-resource-card-subtitle">${d(p)}</p>`:"",K=`<h3 class="kan-resource-card-title">${d(l)}</h3>${v}`;i.push(this.isLinkable(C(c),t)?`<a class="kan-resource-card" href="${d(m)}">${K}</a>`:`<span class="kan-resource-card">${K}</span>`)}return`<section class="kan-resource-grid">
99
99
  ${i.join(`
100
100
  `)}
101
101
  </section>`}parseVersion(e){let t=e.split(".").map(Number);if(!(t.length!==3||t.some(n=>Number.isNaN(n))))return{major:t[0],minor:t[1],patch:t[2]}}findInstancesOfClass(e){let t=[];for(let n of this.catalog){if(!(n instanceof ee))continue;fe(n).map(a=>a.subject).some(a=>a.publisher===e.publisher&&a.package_===e.package_&&a.name===e.name)&&t.push(n)}return t}renderBreadcrumb(e,t,n){let r=(e.namespace||"").split("/");if(r.length<2)return"";let a=r[0],o=r[1]??"",i=o.split("@")[0]??"",c=o.split("@")[1]??"";if(!a||!i)return"";if(n?.bareOverview)return`<nav class="kan-breadcrumb"><ol>
@@ -104,13 +104,13 @@ ${i.join(`
104
104
  </ol></nav>`;let l=e.name,u=!!H(this.catalog,{publisher:a,package_:i,name:i}),k=c?`${i}@${c}`:i,h=c?`/${i}/${c}/${i}`:`/${i}/${i}`,g=e.name===i,m=[];return m.push(`<li><a href="/">${d(a)}</a></li>`),g?m.push(`<li aria-current="page">${d(k)}</li>`):(m.push(u?`<li><a href="${d(h)}">${d(k)}</a></li>`:`<li>${d(k)}</li>`),m.push(`<li aria-current="page">${d(l)}</li>`)),`<nav class="kan-breadcrumb"><ol>
105
105
  ${m.join(`
106
106
  `)}
107
- </ol></nav>`}renderNavGroup(e,t){let n=this.findNavGroupForPublisher(t);if(!n)return"";let s=te(n,Te);if(!(s instanceof B))return"";let r=s.object??[];if(r.length===0)return"";let a=[];for(let o of r){if(!(o instanceof P))continue;let i=H(this.catalog,{publisher:o.subject.publisher,package_:o.subject.package_,name:o.subject.name}),{href:c,label:l}=this.resolveNavEntry(o,i,t),p=`/${e.namespace?.split("/")[1]?.split("@")[0]}/${(e.namespace||"").split("@")[1]}/${e.name}`,u=c===p?' aria-current="page"':"";a.push(`<li><a class="kan-nav-link" href="${d(c)}"${u}>${d(l)}</a></li>`)}return`<nav class="kan-site-nav"><ul>
107
+ </ol></nav>`}renderNavGroup(e,t){let n=this.findNavGroupForPublisher(t);if(!n)return"";let s=te(n,Pe);if(!(s instanceof B))return"";let r=s.object??[];if(r.length===0)return"";let a=[];for(let o of r){if(!(o instanceof P))continue;let i=H(this.catalog,{publisher:o.subject.publisher,package_:o.subject.package_,name:o.subject.name}),{href:c,label:l}=this.resolveNavEntry(o,i,t),p=`/${e.namespace?.split("/")[1]?.split("@")[0]}/${(e.namespace||"").split("@")[1]}/${e.name}`,u=c===p?' aria-current="page"':"";a.push(`<li><a class="kan-nav-link" href="${d(c)}"${u}>${d(l)}</a></li>`)}return`<nav class="kan-site-nav"><ul>
108
108
  ${a.join(`
109
109
  `)}
110
- </ul></nav>`}resolveNavEntry(e,t,n){if(t&&fe(t).map(i=>i.subject).some(i=>i.publisher===Ue.publisher&&i.package_===Ue.package_&&i.name===Ue.name)){let i=b(t,N),c=te(t,We);if(c instanceof V&&c.object instanceof P){let l=c.object,p=this.readLabelForUri({publisher:l.subject.publisher,package_:l.subject.package_,name:l.subject.name});return{href:this.urlForReference(l,We,n),label:i??p??l.subject.name}}}let s=he.formatResourceUrl({publisher:e.subject.publisher,package_:e.subject.package_,...e.subject.version?{version:e.subject.version}:{},name:e.subject.name},"*",{contextPublisher:n}),r=t?b(t,N)??e.subject.name:e.subject.name;return{href:s,label:r}}findNavGroupForPublisher(e){for(let t of this.catalog){if(!(t instanceof ee)||!(t.namespace||"").startsWith(`${e}/`))continue;if(fe(t).map(a=>a.subject).some(a=>a.publisher===ve.publisher&&a.package_===ve.package_&&a.name===ve.name))return t}}renderMarkdown(e,t,n){let s=E(e,Z);if(!s)return"<!-- LookRenderer.Markdown: no look.source -->";let r=te(t,s),a=new Map,o;if(r instanceof Me?o=this.resolveMarkdownLinks(r,n,a):r instanceof J?o=r.object:o=this.readPropertyValueText(t,s),!o)return"";let i=De(o);for(let[c,l]of a){let p=new RegExp('(<a href="'+ot(c)+'">)([^<]*)(</a>)',"g");i=i.replace(p,`$1<img class="kan-md-chip" src="${d(l)}" alt="" loading="lazy">$2$3`)}return`<section class="kan-markdown">
110
+ </ul></nav>`}resolveNavEntry(e,t,n){if(t&&fe(t).map(i=>i.subject).some(i=>i.publisher===Fe.publisher&&i.package_===Fe.package_&&i.name===Fe.name)){let i=b(t,N),c=te(t,Ye);if(c instanceof M&&c.object instanceof P){let l=c.object,p=this.readLabelForUri({publisher:l.subject.publisher,package_:l.subject.package_,name:l.subject.name});return{href:this.urlForReference(l,Ye,n),label:i??p??l.subject.name}}}let s=he.formatResourceUrl({publisher:e.subject.publisher,package_:e.subject.package_,...e.subject.version?{version:e.subject.version}:{},name:e.subject.name},"*",{contextPublisher:n}),r=t?b(t,N)??e.subject.name:e.subject.name;return{href:s,label:r}}findNavGroupForPublisher(e){for(let t of this.catalog){if(!(t instanceof ee)||!(t.namespace||"").startsWith(`${e}/`))continue;if(fe(t).map(a=>a.subject).some(a=>a.publisher===ve.publisher&&a.package_===ve.package_&&a.name===ve.name))return t}}renderMarkdown(e,t,n){let s=E(e,Z);if(!s)return"<!-- LookRenderer.Markdown: no look.source -->";let r=te(t,s),a=new Map,o;if(r instanceof De?o=this.resolveMarkdownLinks(r,n,a):r instanceof J?o=r.object:o=this.readPropertyValueText(t,s),!o)return"";let i=He(o);for(let[c,l]of a){let p=new RegExp('(<a href="'+ct(c)+'">)([^<]*)(</a>)',"g");i=i.replace(p,`$1<img class="kan-md-chip" src="${d(l)}" alt="" loading="lazy">$2$3`)}return`<section class="kan-markdown">
111
111
  ${i}
112
- </section>`}resolveMarkdownLinks(e,t,n){let s=e.object,r=[...e.links].sort((a,o)=>o.startOffset-a.startOffset);for(let a of r){let o;if(a.target&&this.isLinkable(a.target.subject.publisher,t)){let i=a.target.subject,c=(a.displayText??this.readLabelForUri({publisher:i.publisher,package_:i.package_,name:i.name})??a.reference).replace(/[[\]]/g,""),l=he.formatResourceUrl({publisher:i.publisher,package_:i.package_,name:i.name,...i.version?{version:i.version}:{}},"=",{contextPublisher:t});n&&n.set(l,`${l}.svg`),o=`[${c}](${l})`}else if(a.target){let i=a.target.subject;o=(a.displayText??this.readLabelForUri({publisher:i.publisher,package_:i.package_,name:i.name})??a.reference).replace(/[[\]]/g,"")}else o=a.displayText??a.reference;s=s.slice(0,a.startOffset)+o+s.slice(a.endOffset)}return s}renderRawMarkdown(e){let t=this.findCascadedLook(e);if(!t)return;let n=tn(t.declaration),s=[];for(let r of n){let a=$e(r);if(!a||!R(a,Ge))continue;let o=E(r,Z);if(!o)continue;let i=this.readPropertyValueText(e,o);i&&s.push(i)}return s.length>0?s.join(`
112
+ </section>`}resolveMarkdownLinks(e,t,n){let s=e.object,r=[...e.links].sort((a,o)=>o.startOffset-a.startOffset);for(let a of r){let o;if(a.target&&this.isLinkable(a.target.subject.publisher,t)){let i=a.target.subject,c=(a.displayText??this.readLabelForUri({publisher:i.publisher,package_:i.package_,name:i.name})??a.reference).replace(/[[\]]/g,""),l=he.formatResourceUrl({publisher:i.publisher,package_:i.package_,name:i.name,...i.version?{version:i.version}:{}},"=",{contextPublisher:t});n&&n.set(l,`${l}.svg`),o=`[${c}](${l})`}else if(a.target){let i=a.target.subject;o=(a.displayText??this.readLabelForUri({publisher:i.publisher,package_:i.package_,name:i.name})??a.reference).replace(/[[\]]/g,"")}else o=a.displayText??a.reference;s=s.slice(0,a.startOffset)+o+s.slice(a.endOffset)}return s}renderRawMarkdown(e){let t=this.findCascadedLook(e);if(!t)return;let n=an(t.declaration),s=[];for(let r of n){let a=$e(r);if(!a||!S(a,ze))continue;let o=E(r,Z);if(!o)continue;let i=this.readPropertyValueText(e,o);i&&s.push(i)}return s.length>0?s.join(`
113
113
 
114
- `):void 0}renderHero(e,t,n){let s=te(e,et),r=s instanceof pe?s.object===!0:s instanceof J&&s.object==="true",a=[r?'<header class="kan-hero kan-hero-has-icon">':'<header class="kan-hero">'];if(r){let u=this.svgUrlForSubject(t,n);a.push(`<img class="kan-hero-icon" src="${d(u)}" alt="" loading="lazy"/>`)}r&&a.push('<div class="kan-hero-text">');let o=E(e,Jn);if(o){let u=this.readPropertyValueText(t,o);u&&a.push(`<span class="kan-hero-eyebrow">${d(Oe(u)??u)}</span>`)}let i=E(e,qn),c="";i&&(c=this.readPropertyValueText(t,i)??""),c||(c=t.name),a.push(`<h1 class="kan-hero-title">${d(Oe(c)??c)}</h1>`);let l=E(e,Zn);if(l){let u=this.readPropertyValueText(t,l);u&&a.push(`<p class="kan-hero-subtitle">${d(Oe(u)??u)}</p>`)}let p=E(e,nn);if(p){let u=this.readPropertyValueReferences(t,p);if(u.length>0){let k=u.map(h=>this.renderBadge(h,nn,n)).join("");a.push(`<div class="kan-hero-badges">${k}</div>`)}}return r&&a.push("</div>"),a.push("</header>"),a.join(`
114
+ `):void 0}renderHero(e,t,n){let s=te(e,tt),r=s instanceof pe?s.object===!0:s instanceof J&&s.object==="true",a=[r?'<header class="kan-hero kan-hero-has-icon">':'<header class="kan-hero">'];if(r){let u=this.svgUrlForSubject(t,n);a.push(`<img class="kan-hero-icon" src="${d(u)}" alt="" loading="lazy"/>`)}r&&a.push('<div class="kan-hero-text">');let o=E(e,Xn);if(o){let u=this.readPropertyValueText(t,o);u&&a.push(`<span class="kan-hero-eyebrow">${d(Oe(u)??u)}</span>`)}let i=E(e,Zn),c="";i&&(c=this.readPropertyValueText(t,i)??""),c||(c=t.name),a.push(`<h1 class="kan-hero-title">${d(Oe(c)??c)}</h1>`);let l=E(e,Qn);if(l){let u=this.readPropertyValueText(t,l);u&&a.push(`<p class="kan-hero-subtitle">${d(Oe(u)??u)}</p>`)}let p=E(e,sn);if(p){let u=this.readPropertyValueReferences(t,p);if(u.length>0){let k=u.map(h=>this.renderBadge(h,sn,n)).join("");a.push(`<div class="kan-hero-badges">${k}</div>`)}}return r&&a.push("</div>"),a.push("</header>"),a.join(`
115
115
  `)}renderPropertyList(e,t,n){let s=E(e,Z);if(!s)return"<!-- LookRenderer: PropertyList missing look.source -->";let r=this.readLabelForUri(s)??s.name,a=te(t,s),o=this.gatherValueItems(a),i=o.length>0?o.map(c=>`<li>${this.renderInlineValue(c,Z,n)}</li>`).join(""):'<li class="kan-empty">(no values)</li>';return['<section class="kan-property-list">',`<h3 class="kan-property-list-title">${d(r)}</h3>`,`<ul class="kan-property-list-items">${i}</ul>`,"</section>"].join(`
116
- `)}renderBadgeRow(e,t,n){let s=E(e,Z);if(!s)return"<!-- LookRenderer: BadgeRow missing look.source -->";let r=this.readPropertyValueReferences(t,s);return r.length===0?"":`<div class="kan-badge-row">${r.map(o=>this.renderBadge(o,Z,n)).join("")}</div>`}renderChipRow(e,t,n){let s=Ce(e,nt);if(s.length===0)return"<!-- LookRenderer: ChipRow has no look.chips -->";let r=[];for(let a of s){let o=te(t,a);if(!o)continue;let i=this.readLabelForUri(a)??a.name,c=this.renderStatementInlineValue(o,a,n);c&&r.push(`<span class="kan-chip"><span class="kan-chip-key">${d(i)}</span> <span class="kan-chip-val">${c}</span></span>`)}return r.length===0?"":`<div class="kan-chip-row">${r.join("")}</div>`}renderReferenceList(e,t,n){let s=Ce(e,Te);if(s.length===0)return"<!-- LookRenderer: ReferenceList has no look.entries -->";let r=b(e,qe),a=b(e,Mn),o=[];for(let i of s){let c=this.readPropertyValueReferences(t,i);if(c.length===0)continue;let l=this.readLabelForUri(i)??i.name;if(r){let p=c.map(u=>this.renderDetailRow(u,r,a,n)).filter(u=>u).join("");p&&o.push(`<dt>${d(l)}</dt><dd><ul class="kan-ref-rows">${p}</ul></dd>`)}else{let p=c.map(u=>this.renderReferenceLink(u,Te,n)).join(", ");o.push(`<dt>${d(l)}</dt><dd>${p}</dd>`)}}return o.length===0?"":`<dl class="kan-reference-list">${o.join("")}</dl>`}renderDetailRow(e,t,n,s){let r=H(this.catalog,{publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name,...e.subject.version?{version:e.subject.version}:{}});if(!r)return"";let a=this.resolvePath(r,t)??b(r,N)??r.name,o="";if(n){let p=this.resolvePath(r,n);p&&(o=`<span class="kan-ref-badge">${d(p)}</span>`)}let i=`<span class="kan-ref-text">${d(a)}</span>${o}`;if(!this.isLinkable(C(r),s))return`<li class="kan-ref-row"><span class="kan-ref-rowlink">${i}</span></li>`;let c=this.hrefForSubject(r,s),l=this.svgUrlForSubject(r,s);return`<li class="kan-ref-row"><a class="kan-ref-rowlink" href="${d(c)}"><img class="kan-ref-icon" src="${d(l)}" alt="" loading="lazy"/>`+i+"</a></li>"}readPropertyValueText(e,t){let n=te(e,t);if(n){if(n instanceof J)return n.object;if(n instanceof V){let s=n.object;return this.readLabelForUri({publisher:s.subject.publisher,package_:s.subject.package_,name:s.subject.name})??s.subject.name}if(n instanceof ne)return this.readEmbeddedText(n.object,0)||void 0;if(n instanceof B)return(n.object??[]).map(r=>r instanceof P?this.readLabelForUri({publisher:r.subject.publisher,package_:r.subject.package_,name:r.subject.name})??r.subject.name:r instanceof ae?this.readEmbeddedText(r,0):String(r)).filter(r=>r).join(", ")}}readEmbeddedText(e,t){if(t>=en)return"\u2026";let n=[];for(let s of e.statement)if(s.predicate?.subject?.name!=="type")if(s instanceof J)n.push(s.object);else if(s instanceof de||s instanceof pe)n.push(String(s.object));else if(s instanceof V){let a=s.object;n.push(this.readLabelForUri({publisher:a.subject.publisher,package_:a.subject.package_,name:a.subject.name})??a.subject.name)}else s instanceof ne&&n.push(this.readEmbeddedText(s.object,t+1));return n.filter(s=>s).join(", ")}readPropertyValueReferences(e,t){let n=te(e,t);if(!n)return[];if(n instanceof V)return[n.object];if(n instanceof B){let s=[];for(let r of n.object??[])r instanceof P&&s.push(r);return s}return[]}gatherValueItems(e){return e?e instanceof B?e.object??[]:e instanceof V?[e.object]:e instanceof ne?[e.object]:e instanceof J?[e.object]:e instanceof de||e instanceof pe?[e.object]:[]:[]}renderInlineValue(e,t,n,s=0){return e instanceof P?this.renderReferenceLink(e,t,n):e instanceof ae?this.renderEmbeddedInline(e,n,s):typeof e=="string"?d(e):typeof e=="number"||typeof e=="boolean"?d(String(e)):""}renderStatementInlineValue(e,t,n,s=0){return e instanceof J?d(e.object):e instanceof de||e instanceof pe?d(String(e.object)):e instanceof V?this.renderReferenceLink(e.object,t,n):e instanceof ne?this.renderEmbeddedInline(e.object,n,s):e instanceof B?(e.object??[]).map(a=>this.renderInlineValue(a,t,n,s)).filter(a=>a).join(", "):""}renderEmbeddedInline(e,t,n=0){if(n>=en)return"\u2026";let s=[];for(let r of e.statement){let a=r.predicate?.subject;if(!a||a.name==="type")continue;let o=this.readLabelForUri({publisher:a.publisher,package_:a.package_,name:a.name})??a.name,i=this.renderStatementInlineValue(r,a,t,n+1);i&&s.push(`<dt>${d(o)}</dt><dd>${i}</dd>`)}return s.length?`<dl class="kan-embedded">${s.join("")}</dl>`:""}renderReferenceLink(e,t,n){let s=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(s)}</span>`;let r=this.urlForReference(e,t,n);return`<a class="kan-link" href="${d(r)}">${d(s)}</a>`}isLinkable(e,t){return e===t}renderBadge(e,t,n){let s=this.readLabelForUri({publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name})??e.subject.name,r=this.readCommentForUri({publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name}),a=r?` title="${d(r)}"`:"";if(!this.isLinkable(e.subject.publisher,n))return`<span class="kan-badge"${a}>${d(s)}</span>`;let o=this.urlForReference(e,t,n);return`<a class="kan-badge" href="${d(o)}"${a}>${d(s)}</a>`}urlForReference(e,t,n){let s=t?this.getUrlFormForProperty(t):"=";return he.formatResourceUrl({publisher:e.subject.publisher,package_:e.subject.package_,...e.subject.version?{version:e.subject.version}:{},name:e.subject.name},s,{contextPublisher:n})}getUrlFormForProperty(e){let t=H(this.catalog,e);if(!t)return"=";let n=b(t,tt);return n==="*"||n==="^"||n==="~"||n==="="?n:"="}readLabelForUri(e){let t=H(this.catalog,e);if(t)return b(t,N)}readCommentForUri(e){let t=H(this.catalog,e);if(t)return b(t,be)}};function Pe(f){let e=new Map;for(let t of f.statement){if(!(t instanceof ne)||!ce(t,xe.publisher,xe.package_,xe.name))continue;let n=t.object;for(let s of n.statement){if(!(s instanceof J))continue;let r=s.predicate?.subject?.name;if(!r)continue;let a=s.object;e.has(r)||e.set(r,a)}}return e}function Re(f){for(let e of f.statement)if(e instanceof ne&&ce(e,ye.publisher,ye.package_,ye.name))return e.object}function tn(f){for(let e of f.statement){if(!(e instanceof B)||!ce(e,Ee.publisher,Ee.package_,Ee.name))continue;let t=[];for(let n of e.object??[])n instanceof ae&&t.push(n);return t}return[]}function $e(f){for(let e of f.statement)if(e instanceof V&&e.predicate?.subject?.name==="type"&&e.object instanceof P){let t=e.object.subject;return{publisher:t.publisher,package_:t.package_,name:t.name}}}function E(f,e){for(let t of f.statement)if(t instanceof V&&ce(t,e.publisher,e.package_,e.name)&&t.object instanceof P){let n=t.object.subject;return{publisher:n.publisher,package_:n.package_,name:n.name}}}function Ce(f,e){for(let t of f.statement){if(!(t instanceof B)||!ce(t,e.publisher,e.package_,e.name))continue;let n=[];for(let s of t.object??[])s instanceof P&&n.push({publisher:s.subject.publisher,package_:s.subject.package_,name:s.subject.name});return n}return[]}function te(f,e){for(let t of f.statement)if(ce(t,e.publisher,e.package_,e.name))return t}function b(f,e){for(let t of f.statement)if(t instanceof J&&ce(t,e.publisher,e.package_,e.name))return t.object}function sn(f,e){for(let t of f.statement)if(t instanceof de&&ce(t,e.publisher,e.package_,e.name))return t.object}function fe(f){let e=[];for(let t of f.statement)if(t instanceof V){if(t.predicate?.subject?.name!=="type")continue;t.object instanceof P&&e.push(t.object)}else if(t instanceof B){if(t.predicate?.subject?.name!=="type")continue;for(let n of t.object??[])n instanceof P&&e.push(n)}return e}function Se(f){let e=[];for(let t of f.statement)if(t instanceof V){if(t.predicate?.subject?.name!=="subClassOf")continue;t.object instanceof P&&e.push(t.object)}else if(t instanceof B){if(t.predicate?.subject?.name!=="subClassOf")continue;for(let n of t.object??[])n instanceof P&&e.push(n)}return e}function oe(f,e){let t=[];for(let n of f){if(!(n instanceof ee)||n.name!==e.name)continue;(n.namespace||"").startsWith(`${e.publisher}/${e.package_}@`)&&t.push(n)}return t}function H(f,e){let t="version"in e?e.version:void 0;if(t){let n=`${e.publisher}/${e.package_}@${t.major}.${t.minor}.${t.patch}`;for(let s of f)if(s instanceof ee&&s.name===e.name&&s.namespace===n)return s}for(let n of f){if(!(n instanceof ee)||n.name!==e.name)continue;if((n.namespace||"").startsWith(`${e.publisher}/${e.package_}@`))return n}}function ce(f,e,t,n){let s=f.predicate?.subject;return s?s.publisher===e&&s.package_===t&&s.name===n:!1}function R(f,e){return f.publisher===e.publisher&&f.package_===e.package_&&f.name===e.name}function Q(f){return`${f.publisher}/${f.package_}/${f.name}`}function st(f){return f.name==="Package"?{...Le}:f}function C(f){let e=f.namespace||"",t=e.indexOf("/");return t>=0?e.substring(0,t):e}function d(f){return f.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function at(f){let e=f.lastIndexOf(".");return e>=0?f.substring(e+1):f}function rt(f,e){for(let t of f.statement)if(t.predicate?.subject?.name===e)return t}function ie(f){return f.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function Ae(f,e){return f.length<=e?f:f.slice(0,e).replace(/\s+\S*$/,"")+"\u2026"}function an(f){return f.toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}function ot(f){return f.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function it(f){let e=Oe(f);if(e)return d(e);if(/^https?:\/\//i.test(f)){let t=f;try{t=new URL(f).hostname.replace(/^www\./,"")}catch{}return`<a class="kan-link" href="${d(f)}" target="_blank" rel="noopener">${d(t)} \u2197</a>`}return d(f)}function Oe(f){let e=/^(\d{4})-(\d{2})-(\d{2})([T ]\d{2}:\d{2}(?::\d{2})?(?:\.\d+)?(?:Z|[+-]\d{2}:?\d{2})?)?$/.exec(f.trim());if(!e)return;let t=Date.parse(f);if(!Number.isFinite(t))return;let n=new Date(t),r=`${["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"][n.getUTCMonth()]} ${n.getUTCDate()}, ${n.getUTCFullYear()}`;if(!e[4])return r;let a=n.getUTCHours(),o=(a+11)%12+1,i=a>=12?"PM":"AM";return`${r} \xB7 ${o}:${String(n.getUTCMinutes()).padStart(2,"0")} ${i} UTC`}function Ke(f){if(!f)return"";let e=/^(\d{4})-(\d{2})-(\d{2})/.exec(f);return e?`${["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"][parseInt(e[2],10)-1]??e[2]} ${parseInt(e[3],10)}`:f}export{De as a,Ne as b};
116
+ `)}renderBadgeRow(e,t,n){let s=E(e,Z);if(!s)return"<!-- LookRenderer: BadgeRow missing look.source -->";let r=this.readPropertyValueReferences(t,s);return r.length===0?"":`<div class="kan-badge-row">${r.map(o=>this.renderBadge(o,Z,n)).join("")}</div>`}renderChipRow(e,t,n){let s=Ae(e,st);if(s.length===0)return"<!-- LookRenderer: ChipRow has no look.chips -->";let r=[];for(let a of s){let o=te(t,a);if(!o)continue;let i=this.readLabelForUri(a)??a.name,c=this.renderStatementInlineValue(o,a,n);c&&r.push(`<span class="kan-chip"><span class="kan-chip-key">${d(i)}</span> <span class="kan-chip-val">${c}</span></span>`)}return r.length===0?"":`<div class="kan-chip-row">${r.join("")}</div>`}renderReferenceList(e,t,n){let s=Ae(e,Pe);if(s.length===0)return"<!-- LookRenderer: ReferenceList has no look.entries -->";let r=b(e,Ze),a=b(e,Dn),o=[];for(let i of s){let c=this.readPropertyValueReferences(t,i);if(c.length===0)continue;let l=this.readLabelForUri(i)??i.name;if(r){let p=c.map(u=>this.renderDetailRow(u,r,a,n)).filter(u=>u).join("");p&&o.push(`<dt>${d(l)}</dt><dd><ul class="kan-ref-rows">${p}</ul></dd>`)}else{let p=c.map(u=>this.renderReferenceLink(u,Pe,n)).join(", ");o.push(`<dt>${d(l)}</dt><dd>${p}</dd>`)}}return o.length===0?"":`<dl class="kan-reference-list">${o.join("")}</dl>`}renderDetailRow(e,t,n,s){let r=H(this.catalog,{publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name,...e.subject.version?{version:e.subject.version}:{}});if(!r)return"";let a=this.resolvePath(r,t)??b(r,N)??r.name,o="";if(n){let p=this.resolvePath(r,n);p&&(o=`<span class="kan-ref-badge">${d(p)}</span>`)}let i=`<span class="kan-ref-text">${d(a)}</span>${o}`;if(!this.isLinkable(C(r),s))return`<li class="kan-ref-row"><span class="kan-ref-rowlink">${i}</span></li>`;let c=this.hrefForSubject(r,s),l=this.svgUrlForSubject(r,s);return`<li class="kan-ref-row"><a class="kan-ref-rowlink" href="${d(c)}"><img class="kan-ref-icon" src="${d(l)}" alt="" loading="lazy"/>`+i+"</a></li>"}readPropertyValueText(e,t){let n=te(e,t);if(n){if(n instanceof J)return n.object;if(n instanceof M){let s=n.object;return this.readLabelForUri({publisher:s.subject.publisher,package_:s.subject.package_,name:s.subject.name})??s.subject.name}if(n instanceof ne)return this.readEmbeddedText(n.object,0)||void 0;if(n instanceof B)return(n.object??[]).map(r=>r instanceof P?this.readLabelForUri({publisher:r.subject.publisher,package_:r.subject.package_,name:r.subject.name})??r.subject.name:r instanceof ae?this.readEmbeddedText(r,0):String(r)).filter(r=>r).join(", ")}}readEmbeddedText(e,t){if(t>=tn)return"\u2026";let n=[];for(let s of e.statement)if(s.predicate?.subject?.name!=="type")if(s instanceof J)n.push(s.object);else if(s instanceof de||s instanceof pe)n.push(String(s.object));else if(s instanceof M){let a=s.object;n.push(this.readLabelForUri({publisher:a.subject.publisher,package_:a.subject.package_,name:a.subject.name})??a.subject.name)}else s instanceof ne&&n.push(this.readEmbeddedText(s.object,t+1));return n.filter(s=>s).join(", ")}readPropertyValueReferences(e,t){let n=te(e,t);if(!n)return[];if(n instanceof M)return[n.object];if(n instanceof B){let s=[];for(let r of n.object??[])r instanceof P&&s.push(r);return s}return[]}gatherValueItems(e){return e?e instanceof B?e.object??[]:e instanceof M?[e.object]:e instanceof ne?[e.object]:e instanceof J?[e.object]:e instanceof de||e instanceof pe?[e.object]:[]:[]}renderInlineValue(e,t,n,s=0){return e instanceof P?this.renderReferenceLink(e,t,n):e instanceof ae?this.renderEmbeddedInline(e,n,s):typeof e=="string"?d(e):typeof e=="number"||typeof e=="boolean"?d(String(e)):""}renderStatementInlineValue(e,t,n,s=0){return e instanceof J?d(e.object):e instanceof de||e instanceof pe?d(String(e.object)):e instanceof M?this.renderReferenceLink(e.object,t,n):e instanceof ne?this.renderEmbeddedInline(e.object,n,s):e instanceof B?(e.object??[]).map(a=>this.renderInlineValue(a,t,n,s)).filter(a=>a).join(", "):""}renderEmbeddedInline(e,t,n=0){if(n>=tn)return"\u2026";let s=[];for(let r of e.statement){let a=r.predicate?.subject;if(!a||a.name==="type")continue;let o=this.readLabelForUri({publisher:a.publisher,package_:a.package_,name:a.name})??a.name,i=this.renderStatementInlineValue(r,a,t,n+1);i&&s.push(`<dt>${d(o)}</dt><dd>${i}</dd>`)}return s.length?`<dl class="kan-embedded">${s.join("")}</dl>`:""}renderReferenceLink(e,t,n){let s=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(s)}</span>`;let r=this.urlForReference(e,t,n);return`<a class="kan-link" href="${d(r)}">${d(s)}</a>`}isLinkable(e,t){return e===t}renderBadge(e,t,n){let s=this.readLabelForUri({publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name})??e.subject.name,r=this.readCommentForUri({publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name}),a=r?` title="${d(r)}"`:"";if(!this.isLinkable(e.subject.publisher,n))return`<span class="kan-badge"${a}>${d(s)}</span>`;let o=this.urlForReference(e,t,n);return`<a class="kan-badge" href="${d(o)}"${a}>${d(s)}</a>`}urlForReference(e,t,n){let s=t?this.getUrlFormForProperty(t):"=";return he.formatResourceUrl({publisher:e.subject.publisher,package_:e.subject.package_,...e.subject.version?{version:e.subject.version}:{},name:e.subject.name},s,{contextPublisher:n})}getUrlFormForProperty(e){let t=H(this.catalog,e);if(!t)return"=";let n=b(t,at);return n==="*"||n==="^"||n==="~"||n==="="?n:"="}readLabelForUri(e){let t=H(this.catalog,e);if(t)return b(t,N)}readCommentForUri(e){let t=H(this.catalog,e);if(t)return b(t,be)}};function Ce(f){let e=new Map;for(let t of f.statement){if(!(t instanceof ne)||!ce(t,xe.publisher,xe.package_,xe.name))continue;let n=t.object;for(let s of n.statement){if(!(s instanceof J))continue;let r=s.predicate?.subject?.name;if(!r)continue;let a=s.object;e.has(r)||e.set(r,a)}}return e}function Se(f){for(let e of f.statement)if(e instanceof ne&&ce(e,ye.publisher,ye.package_,ye.name))return e.object}function an(f){for(let e of f.statement){if(!(e instanceof B)||!ce(e,Te.publisher,Te.package_,Te.name))continue;let t=[];for(let n of e.object??[])n instanceof ae&&t.push(n);return t}return[]}function $e(f){for(let e of f.statement)if(e instanceof M&&e.predicate?.subject?.name==="type"&&e.object instanceof P){let t=e.object.subject;return{publisher:t.publisher,package_:t.package_,name:t.name}}}function E(f,e){for(let t of f.statement)if(t instanceof M&&ce(t,e.publisher,e.package_,e.name)&&t.object instanceof P){let n=t.object.subject;return{publisher:n.publisher,package_:n.package_,name:n.name}}}function Ae(f,e){for(let t of f.statement){if(!(t instanceof B)||!ce(t,e.publisher,e.package_,e.name))continue;let n=[];for(let s of t.object??[])s instanceof P&&n.push({publisher:s.subject.publisher,package_:s.subject.package_,name:s.subject.name});return n}return[]}function te(f,e){for(let t of f.statement)if(ce(t,e.publisher,e.package_,e.name))return t}function b(f,e){for(let t of f.statement)if(t instanceof J&&ce(t,e.publisher,e.package_,e.name))return t.object}function rn(f,e){for(let t of f.statement)if(t instanceof de&&ce(t,e.publisher,e.package_,e.name))return t.object}function fe(f){let e=[];for(let t of f.statement)if(t instanceof M){if(t.predicate?.subject?.name!=="type")continue;t.object instanceof P&&e.push(t.object)}else if(t instanceof B){if(t.predicate?.subject?.name!=="type")continue;for(let n of t.object??[])n instanceof P&&e.push(n)}return e}function Re(f){let e=[];for(let t of f.statement)if(t instanceof M){if(t.predicate?.subject?.name!=="subClassOf")continue;t.object instanceof P&&e.push(t.object)}else if(t instanceof B){if(t.predicate?.subject?.name!=="subClassOf")continue;for(let n of t.object??[])n instanceof P&&e.push(n)}return e}function oe(f,e){let t=[];for(let n of f){if(!(n instanceof ee)||n.name!==e.name)continue;(n.namespace||"").startsWith(`${e.publisher}/${e.package_}@`)&&t.push(n)}return t}function H(f,e){let t="version"in e?e.version:void 0;if(t){let n=`${e.publisher}/${e.package_}@${t.major}.${t.minor}.${t.patch}`;for(let s of f)if(s instanceof ee&&s.name===e.name&&s.namespace===n)return s}for(let n of f){if(!(n instanceof ee)||n.name!==e.name)continue;if((n.namespace||"").startsWith(`${e.publisher}/${e.package_}@`))return n}}function ce(f,e,t,n){let s=f.predicate?.subject;return s?s.publisher===e&&s.package_===t&&s.name===n:!1}function S(f,e){return f.publisher===e.publisher&&f.package_===e.package_&&f.name===e.name}function Q(f){return`${f.publisher}/${f.package_}/${f.name}`}function rt(f){return f.name==="Package"?{...Le}:f}function C(f){let e=f.namespace||"",t=e.indexOf("/");return t>=0?e.substring(0,t):e}function d(f){return f.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function ot(f){let e=f.lastIndexOf(".");return e>=0?f.substring(e+1):f}function it(f,e){for(let t of f.statement)if(t.predicate?.subject?.name===e)return t}function ie(f){return f.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function Ne(f,e){return f.length<=e?f:f.slice(0,e).replace(/\s+\S*$/,"")+"\u2026"}function on(f){return f.toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}function ct(f){return f.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function lt(f){let e=Oe(f);if(e)return d(e);if(/^https?:\/\//i.test(f)){let t=f;try{t=new URL(f).hostname.replace(/^www\./,"")}catch{}return`<a class="kan-link" href="${d(f)}" target="_blank" rel="noopener">${d(t)} \u2197</a>`}return d(f)}function Oe(f){let e=/^(\d{4})-(\d{2})-(\d{2})([T ]\d{2}:\d{2}(?::\d{2})?(?:\.\d+)?(?:Z|[+-]\d{2}:?\d{2})?)?$/.exec(f.trim());if(!e)return;let t=Date.parse(f);if(!Number.isFinite(t))return;let n=new Date(t),r=`${["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"][n.getUTCMonth()]} ${n.getUTCDate()}, ${n.getUTCFullYear()}`;if(!e[4])return r;let a=n.getUTCHours(),o=(a+11)%12+1,i=a>=12?"PM":"AM";return`${r} \xB7 ${o}:${String(n.getUTCMinutes()).padStart(2,"0")} ${i} UTC`}function Ke(f){if(!f)return"";let e=/^(\d{4})-(\d{2})-(\d{2})/.exec(f);return e?`${["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"][parseInt(e[2],10)-1]??e[2]} ${parseInt(e[3],10)}`:f}export{He as a,Ve as b};
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import{a as et,b as tt,c as rt,d as nt,e as ot,f as at,g as it,h as st,i as ct,j as lt}from"./chunk-IOJMTW4T.js";import{b as Xt}from"./chunk-VBTBY53W.js";import{a as Xe,b as Ze,c as Qe,d as b,e as S,f as i}from"./chunk-RCI34BYO.js";import{a as Yt}from"./chunk-BFZZ6YGX.js";import{a as Te,b as je,c as Le,d as Fe,e as Ne}from"./chunk-5AH6GIPO.js";import{a as Be,b as De,c as Oe,d as Ae}from"./chunk-VHUJSHH7.js";import{a as ut,b as pt,c as mt,d as ft}from"./chunk-NIJV5UYW.js";import{a as Ye,b as yt,c as gt,d as ht,e as bt}from"./chunk-4TJZIM7A.js";import{a as kt}from"./chunk-NIGFQYVA.js";import{A as Gt,B as Wt,C as Jt,D as qt,a as St,b as Ct,c as Pt,d as Rt,e as wt,f as xt,g as $t,h as vt,i as Et,j as Kt,k as Bt,l as It,m as Tt,n as jt,o as Lt,p as Ft,q as Nt,r as Dt,s as Ot,t as At,u as Ut,v as Mt,w as Vt,x as Ht,y as _t,z as zt}from"./chunk-SKTXJV4T.js";import"./chunk-FJ35VIV6.js";import{a as F,b as D,c as _e,d as We,e as Je,f as qe}from"./chunk-FMYLEPMC.js";import{a as Ue,b as j,c as L,d as N,e as Ve,f as He,g as O,h as A,i as U,j as M,k as V,l as H}from"./chunk-W6T7MOKY.js";import{a as Ie}from"./chunk-7CUTGGH3.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 ze,c as Ge}from"./chunk-HEMBMX7T.js";import{a as Me}from"./chunk-FUUTGGJS.js";import{a as dt}from"./chunk-ODIECDN7.js";import{VersionOperator as io}from"@kanonak-protocol/types/document/models/enums";import{existsSync as yr,readFileSync as gr}from"fs";import{homedir as hr}from"os";import{join as kr}from"path";import{execFile as Zt}from"child_process";import{promisify as Qt}from"util";var C=Qt(Zt),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 et,b as tt,c as rt,d as nt,e as ot,f as at,g as it,h as st,i as ct,j as lt}from"./chunk-IOJMTW4T.js";import{b as Xt}from"./chunk-KPLFNUIL.js";import{a as Xe,b as Ze,c as Qe,d as b,e as S,f as i}from"./chunk-RCI34BYO.js";import{a as Yt}from"./chunk-JGVDV6PM.js";import{a as Te,b as je,c as Le,d as Fe,e as Ne}from"./chunk-5AH6GIPO.js";import{a as Be,b as De,c as Oe,d as Ae}from"./chunk-VHUJSHH7.js";import{a as ut,b as pt,c as mt,d as ft}from"./chunk-NIJV5UYW.js";import{a as Ye,b as yt,c as gt,d as ht,e as bt}from"./chunk-4TJZIM7A.js";import{a as kt}from"./chunk-NIGFQYVA.js";import{A as Gt,B as Wt,C as Jt,D as qt,a as St,b as Ct,c as Pt,d as Rt,e as wt,f as xt,g as $t,h as vt,i as Et,j as Kt,k as Bt,l as It,m as Tt,n as jt,o as Lt,p as Ft,q as Nt,r as Dt,s as Ot,t as At,u as Ut,v as Mt,w as Vt,x as Ht,y as _t,z as zt}from"./chunk-SKTXJV4T.js";import"./chunk-FJ35VIV6.js";import{a as F,b as D,c as _e,d as We,e as Je,f as qe}from"./chunk-FMYLEPMC.js";import{a as Ue,b as j,c as L,d as N,e as Ve,f as He,g as O,h as A,i as U,j as M,k as V,l as H}from"./chunk-W6T7MOKY.js";import{a as Ie}from"./chunk-7CUTGGH3.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 ze,c as Ge}from"./chunk-HEMBMX7T.js";import{a as Me}from"./chunk-FUUTGGJS.js";import{a as dt}from"./chunk-ODIECDN7.js";import{VersionOperator as io}from"@kanonak-protocol/types/document/models/enums";import{existsSync as yr,readFileSync as gr}from"fs";import{homedir as hr}from"os";import{join as kr}from"path";import{execFile as Zt}from"child_process";import{promisify as Qt}from"util";var C=Qt(Zt),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)}
@@ -15,6 +15,7 @@
15
15
  import type { IKanonakDocumentRepository } from '@kanonak-protocol/types/document/models';
16
16
  import { KanonakParser, KanonakObjectParser } from '../parsing/index.js';
17
17
  import { type EntityUri } from '../uri-helpers/index.js';
18
+ import type { Version } from '@kanonak-protocol/types/document/models/types';
18
19
  import { type DerivationLookupResult } from '../derivation/findDerivation.js';
19
20
  export interface RenderedArtifact {
20
21
  /** Serialized output content. */
@@ -106,7 +107,9 @@ export declare class TransformationEngine {
106
107
  * findDerivation).
107
108
  */
108
109
  runTransformation(opts: {
109
- transformation: EntityUri;
110
+ transformation: EntityUri & {
111
+ version?: Version;
112
+ };
110
113
  input: EntityUri;
111
114
  format: EntityUri;
112
115
  /** Suppress backend default chrome. See render's omitWrapper. */
@@ -1,33 +1,33 @@
1
- import{b as E,c as F,d as f,f as M}from"../chunk-2JQMUZWN.js";import{a as X,b as ye}from"../chunk-VBTBY53W.js";import{a as Oe}from"../chunk-BFZZ6YGX.js";import"../chunk-NIJV5UYW.js";import"../chunk-NIGFQYVA.js";import{a as Ue}from"../chunk-FJ35VIV6.js";import{a as C,c as Re,f as Ce}from"../chunk-FMYLEPMC.js";import{b as K,c as w,d as b,g as L,h as U,i as O,j,k as T,l as S}from"../chunk-W6T7MOKY.js";import{a as Le}from"../chunk-7CUTGGH3.js";import"../chunk-HEMBMX7T.js";import"../chunk-FUUTGGJS.js";var gt="kanonak.org",yt="document-ast",m=t=>({publisher:gt,package_:yt,name:t}),k={Document:m("Document"),Block:m("Block"),Inline:m("Inline"),StructuredValue:m("StructuredValue"),Heading:m("Heading"),Paragraph:m("Paragraph"),RawBlock:m("RawBlock"),Text:m("Text"),StructuredMap:m("StructuredMap"),StructuredEntry:m("StructuredEntry"),StructuredList:m("StructuredList"),StringScalar:m("StringScalar"),IntegerScalar:m("IntegerScalar"),EscapeHint:m("EscapeHint"),MediaType:m("MediaType"),metadata:m("metadata"),children:m("children"),level:m("level"),inlines:m("inlines"),text:m("text"),entries:m("entries"),key:m("key"),value:m("value"),escapeHint:m("escapeHint"),items:m("items"),stringValue:m("stringValue"),integerValue:m("integerValue"),rawContent:m("rawContent"),mediaType:m("mediaType"),mimeType:m("mimeType"),ESC_RAW:m("esc-raw"),ESC_YAML_SAFE:m("esc-yaml-safe"),ESC_TOML_STRING:m("esc-toml-string"),ESC_TOML_MULTILINE:m("esc-toml-multiline"),ESC_JSON:m("esc-json"),ESC_DYNAMODB_BOOL:m("esc-dynamodb-bool"),ESC_DYNAMODB_NUMBER:m("esc-dynamodb-number"),ESC_DYNAMODB_NULL:m("esc-dynamodb-null"),TEXT_PLAIN:m("text-plain"),TEXT_MARKDOWN:m("text-markdown"),TEXT_HTML:m("text-html"),TEXT_CSS:m("text-css"),APPLICATION_JSON:m("application-json"),TEXT_YAML:m("text-yaml"),IMAGE_SVG_XML:m("image-svg-xml"),ResourceLink:m("ResourceLink"),target:m("target"),linkLabel:m("linkLabel"),PropertyList:m("PropertyList"),propertyEntries:m("propertyEntries"),PropertyEntry:m("PropertyEntry"),propertyKey:m("propertyKey"),propertyValue:m("propertyValue"),Table:m("Table"),tableColumnLabels:m("tableColumnLabels"),tableRows:m("tableRows"),TableRow:m("TableRow"),tableCells:m("tableCells")};function Ne(t,e){return t.publisher===e.publisher&&t.package_===e.package_&&t.name===e.name}var Y=class{backendUri="kanonak.org/transformations/markdown-with-frontmatter";render(e,n){let r=kt(e.metadata,n),a=wt(e.children),u=["---",...r,"---","",a].join(`
1
+ import{b as E,c as F,d as f,f as M}from"../chunk-2JQMUZWN.js";import{a as X,b as ye}from"../chunk-KPLFNUIL.js";import{a as Ne}from"../chunk-JGVDV6PM.js";import"../chunk-NIJV5UYW.js";import"../chunk-NIGFQYVA.js";import{a as Oe}from"../chunk-FJ35VIV6.js";import{a as C,c as Ce,f as Ue}from"../chunk-FMYLEPMC.js";import{b as K,c as w,d as b,g as L,h as U,i as O,j,k as T,l as S}from"../chunk-W6T7MOKY.js";import{a as Re}from"../chunk-7CUTGGH3.js";import{e as Le}from"../chunk-FQHALFRR.js";import"../chunk-HEMBMX7T.js";import"../chunk-FUUTGGJS.js";var yt="kanonak.org",kt="document-ast",m=t=>({publisher:yt,package_:kt,name:t}),k={Document:m("Document"),Block:m("Block"),Inline:m("Inline"),StructuredValue:m("StructuredValue"),Heading:m("Heading"),Paragraph:m("Paragraph"),RawBlock:m("RawBlock"),Text:m("Text"),StructuredMap:m("StructuredMap"),StructuredEntry:m("StructuredEntry"),StructuredList:m("StructuredList"),StringScalar:m("StringScalar"),IntegerScalar:m("IntegerScalar"),EscapeHint:m("EscapeHint"),MediaType:m("MediaType"),metadata:m("metadata"),children:m("children"),level:m("level"),inlines:m("inlines"),text:m("text"),entries:m("entries"),key:m("key"),value:m("value"),escapeHint:m("escapeHint"),items:m("items"),stringValue:m("stringValue"),integerValue:m("integerValue"),rawContent:m("rawContent"),mediaType:m("mediaType"),mimeType:m("mimeType"),ESC_RAW:m("esc-raw"),ESC_YAML_SAFE:m("esc-yaml-safe"),ESC_TOML_STRING:m("esc-toml-string"),ESC_TOML_MULTILINE:m("esc-toml-multiline"),ESC_JSON:m("esc-json"),ESC_DYNAMODB_BOOL:m("esc-dynamodb-bool"),ESC_DYNAMODB_NUMBER:m("esc-dynamodb-number"),ESC_DYNAMODB_NULL:m("esc-dynamodb-null"),TEXT_PLAIN:m("text-plain"),TEXT_MARKDOWN:m("text-markdown"),TEXT_HTML:m("text-html"),TEXT_CSS:m("text-css"),APPLICATION_JSON:m("application-json"),TEXT_YAML:m("text-yaml"),IMAGE_SVG_XML:m("image-svg-xml"),ResourceLink:m("ResourceLink"),target:m("target"),linkLabel:m("linkLabel"),PropertyList:m("PropertyList"),propertyEntries:m("propertyEntries"),PropertyEntry:m("PropertyEntry"),propertyKey:m("propertyKey"),propertyValue:m("propertyValue"),Table:m("Table"),tableColumnLabels:m("tableColumnLabels"),tableRows:m("tableRows"),TableRow:m("TableRow"),tableCells:m("tableCells")};function Ie(t,e){return t.publisher===e.publisher&&t.package_===e.package_&&t.name===e.name}var Y=class{backendUri="kanonak.org/transformations/markdown-with-frontmatter";render(e,n){let r=ht(e.metadata,n),a=St(e.children),u=["---",...r,"---","",a].join(`
2
2
  `);return n?.trailingNewline&&(u.endsWith(`
3
3
  `)||(u+=`
4
- `)),u}};function kt(t,e){if(!t)return[];let n=new Map;for(let c of t.entries)n.set(ue(c.key),c);let r=new Map;if(e?.metadataRenames)for(let[c,l]of e.metadataRenames)r.set(ue(c),l);let i=(e?.metadataKeys??t.entries.map(c=>c.key)).map(ue),u=[];for(let c of i){let l=n.get(c);if(!l)continue;let p=r.get(c),y=ue(p??c),h=Ie(l.value,l.escapeHint);h!==void 0&&u.push(`${y}: ${h}`)}return u}function ue(t){let e=t.lastIndexOf(".");return e===-1?t:t.substring(e+1)||t}function Ie(t,e){switch(t.kind){case"StringScalar":return ht(t.stringValue,e);case"IntegerScalar":return String(t.integerValue);case"StructuredList":{let n=[];for(let r of t.items){let a=Ie(r,e);a!==void 0&&n.push(a)}return n.join(", ")}case"StructuredMap":return;default:return}}function ht(t,e){return!e||Ne(e,k.ESC_RAW)?t:Ne(e,k.ESC_YAML_SAFE)?bt(t):t}function bt(t){return t.includes(`
4
+ `)),u}};function ht(t,e){if(!t)return[];let n=new Map;for(let c of t.entries)n.set(ue(c.key),c);let r=new Map;if(e?.metadataRenames)for(let[c,l]of e.metadataRenames)r.set(ue(c),l);let i=(e?.metadataKeys??t.entries.map(c=>c.key)).map(ue),u=[];for(let c of i){let l=n.get(c);if(!l)continue;let p=r.get(c),y=ue(p??c),h=Me(l.value,l.escapeHint);h!==void 0&&u.push(`${y}: ${h}`)}return u}function ue(t){let e=t.lastIndexOf(".");return e===-1?t:t.substring(e+1)||t}function Me(t,e){switch(t.kind){case"StringScalar":return bt(t.stringValue,e);case"IntegerScalar":return String(t.integerValue);case"StructuredList":{let n=[];for(let r of t.items){let a=Me(r,e);a!==void 0&&n.push(a)}return n.join(", ")}case"StructuredMap":return;default:return}}function bt(t,e){return!e||Ie(e,k.ESC_RAW)?t:Ie(e,k.ESC_YAML_SAFE)?wt(t):t}function wt(t){return t.includes(`
5
5
  `)?`|-
6
6
  ${t.replace(/\n/g,`
7
- `).trimEnd()}`:/[:#\[\]{}&*!|>'"%@`,]/.test(t)?`"${t.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`:t}function wt(t){let e=[];for(let n of t){let r=he(n);r&&e.push(r)}return e.join(`
7
+ `).trimEnd()}`:/[:#\[\]{}&*!|>'"%@`,]/.test(t)?`"${t.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`:t}function St(t){let e=[];for(let n of t){let r=he(n);r&&e.push(r)}return e.join(`
8
8
 
9
- `)}function he(t){switch(t.kind){case"Heading":return`${"#".repeat(t.level)} ${ce(t.inlines)}`;case"Paragraph":return ce(t.inlines);case"RawBlock":return t.rawContent;case"PropertyList":return Me(t);case"Table":return St(t);default:return""}}function St(t){let e=t.tableColumnLabels??[],n=t.tableRows??[];if(e.length===0&&n.length===0)return"";let r=`| ${e.map(ke).join(" | ")} |`,a=`| ${e.map(()=>"---").join(" | ")} |`,i=n.map(u=>`| ${(u.tableCells??[]).map(Et).join(" | ")} |`);return[r,a,...i].join(`
10
- `)}function Et(t){let e=t;return!e||typeof e!="object"||!e.kind?"":e.kind==="Text"||e.kind==="ResourceLink"||e.kind==="Badge"?ke(ce([e])):ke(he(e).replace(/\n+/g," "))}function ke(t){return t==null?"":String(t).replace(/\|/g,"\\|")}function Me(t,e=0){if(!t.propertyEntries||t.propertyEntries.length===0)return"";let n=" ".repeat(e),r=[];for(let a of t.propertyEntries){let i=`${n}**${a.propertyKey}:**`,u=vt(a.propertyValue,e+1);u.includes(`
9
+ `)}function he(t){switch(t.kind){case"Heading":return`${"#".repeat(t.level)} ${ce(t.inlines)}`;case"Paragraph":return ce(t.inlines);case"RawBlock":return t.rawContent;case"PropertyList":return _e(t);case"Table":return Et(t);default:return""}}function Et(t){let e=t.tableColumnLabels??[],n=t.tableRows??[];if(e.length===0&&n.length===0)return"";let r=`| ${e.map(ke).join(" | ")} |`,a=`| ${e.map(()=>"---").join(" | ")} |`,i=n.map(u=>`| ${(u.tableCells??[]).map(vt).join(" | ")} |`);return[r,a,...i].join(`
10
+ `)}function vt(t){let e=t;return!e||typeof e!="object"||!e.kind?"":e.kind==="Text"||e.kind==="ResourceLink"||e.kind==="Badge"?ke(ce([e])):ke(he(e).replace(/\n+/g," "))}function ke(t){return t==null?"":String(t).replace(/\|/g,"\\|")}function _e(t,e=0){if(!t.propertyEntries||t.propertyEntries.length===0)return"";let n=" ".repeat(e),r=[];for(let a of t.propertyEntries){let i=`${n}**${a.propertyKey}:**`,u=$t(a.propertyValue,e+1);u.includes(`
11
11
  `)?r.push(`${i}
12
12
  ${u}`):r.push(`${i} ${u}`)}return r.join(`
13
13
 
14
- `)}function vt(t,e){if(!t||t.length===0)return"";let n=[],r=[];for(let a of t){let i=a;!i||typeof i!="object"||!i.kind||(i.kind==="Text"||i.kind==="ResourceLink"||i.kind==="Badge"?n.push(ce([i])):i.kind==="PropertyList"?r.push(Me(i,e)):r.push(he(i)))}return r.length===0?n.join(""):n.length===0?r.join(`
14
+ `)}function $t(t,e){if(!t||t.length===0)return"";let n=[],r=[];for(let a of t){let i=a;!i||typeof i!="object"||!i.kind||(i.kind==="Text"||i.kind==="ResourceLink"||i.kind==="Badge"?n.push(ce([i])):i.kind==="PropertyList"?r.push(_e(i,e)):r.push(he(i)))}return r.length===0?n.join(""):n.length===0?r.join(`
15
15
 
16
16
  `):`${n.join("")}
17
17
 
18
18
  ${r.join(`
19
19
 
20
- `)}`}function ce(t){let e=[];for(let n of t)n.kind==="Text"?e.push(n.text):n.kind==="ResourceLink"?e.push($t(n)):n.kind==="Badge"&&e.push(Vt(n));return e.join("")}function $t(t){let e=Pe(t.target);if(!e)return t.linkLabel??"[unresolved link]";let n=F(e),r=t.linkLabel&&t.linkLabel.length>0?t.linkLabel:e.name,a=t.linkTooltip?` "${_e(t.linkTooltip)}"`:"";return`[${r}](${n}${a})`}function Vt(t){if(!t.badgeTarget)return`*${t.badgeLabel}*`;let e=Pe(t.badgeTarget);if(!e)return`*${t.badgeLabel}*`;let n=F(e),r=t.badgeTooltip?` "${_e(t.badgeTooltip)}"`:"";return`*[${t.badgeLabel}](${n}${r})*`}function _e(t){return t==null?"":String(t).replace(/"/g,'\\"')}function Pe(t){if(!t||typeof t!="object")return;let e=t;if(e.subject&&e.subject.publisher&&e.subject.package_&&e.subject.name){let r={publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name};return e.subject.version&&(r.version=e.subject.version),r}let n=t;if(typeof n.namespace=="string"&&typeof n.name=="string"&&n.name.length>0){let r=/^([^/]+)\/([^@]+)@(\d+)\.(\d+)\.(\d+)$/.exec(n.namespace);if(r)return{publisher:r[1],package_:r[2],name:n.name,version:{major:Number(r[3]),minor:Number(r[4]),patch:Number(r[5])}}}}function jt(t,e){return t.publisher===e.publisher&&t.package_===e.package_&&t.name===e.name}var Z=class{backendUri="kanonak.org/transformations/toml";render(e,n){let a=At(e.metadata,n).join(`
20
+ `)}`}function ce(t){let e=[];for(let n of t)n.kind==="Text"?e.push(n.text):n.kind==="ResourceLink"?e.push(Vt(n)):n.kind==="Badge"&&e.push(jt(n));return e.join("")}function Vt(t){let e=Fe(t.target);if(!e)return t.linkLabel??"[unresolved link]";let n=F(e),r=t.linkLabel&&t.linkLabel.length>0?t.linkLabel:e.name,a=t.linkTooltip?` "${Pe(t.linkTooltip)}"`:"";return`[${r}](${n}${a})`}function jt(t){if(!t.badgeTarget)return`*${t.badgeLabel}*`;let e=Fe(t.badgeTarget);if(!e)return`*${t.badgeLabel}*`;let n=F(e),r=t.badgeTooltip?` "${Pe(t.badgeTooltip)}"`:"";return`*[${t.badgeLabel}](${n}${r})*`}function Pe(t){return t==null?"":String(t).replace(/"/g,'\\"')}function Fe(t){if(!t||typeof t!="object")return;let e=t;if(e.subject&&e.subject.publisher&&e.subject.package_&&e.subject.name){let r={publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name};return e.subject.version&&(r.version=e.subject.version),r}let n=t;if(typeof n.namespace=="string"&&typeof n.name=="string"&&n.name.length>0){let r=/^([^/]+)\/([^@]+)@(\d+)\.(\d+)\.(\d+)$/.exec(n.namespace);if(r)return{publisher:r[1],package_:r[2],name:n.name,version:{major:Number(r[3]),minor:Number(r[4]),patch:Number(r[5])}}}}function At(t,e){return t.publisher===e.publisher&&t.package_===e.package_&&t.name===e.name}var Z=class{backendUri="kanonak.org/transformations/toml";render(e,n){let a=Dt(e.metadata,n).join(`
21
21
  `);return n?.trailingNewline&&(a.endsWith(`
22
22
  `)||(a+=`
23
- `)),a}};function At(t,e){if(!t)return[];let n=new Map;for(let i of t.entries)n.set(i.key,i);let r=e?.metadataKeys??t.entries.map(i=>i.key),a=[];for(let i of r){let u=n.get(i);if(!u)continue;let c=e?.metadataRenames.get(i)??i,l=Fe(u.value,u.escapeHint);l!==void 0&&a.push(`${c} = ${l}`)}return a}function Fe(t,e){switch(t.kind){case"StringScalar":return Dt(t.stringValue,e);case"IntegerScalar":return String(t.integerValue);case"StructuredList":{let n=[];for(let r of t.items){let a=Fe(r,e);a!==void 0&&n.push(a)}return`[${n.join(", ")}]`}case"StructuredMap":return;default:return}}function Dt(t,e){return e&&jt(e,k.ESC_TOML_MULTILINE)?Tt(t):Kt(t)}function Kt(t){return`"${t.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\n/g,"\\n")}"`}function Tt(t){return`"""
23
+ `)),a}};function Dt(t,e){if(!t)return[];let n=new Map;for(let i of t.entries)n.set(i.key,i);let r=e?.metadataKeys??t.entries.map(i=>i.key),a=[];for(let i of r){let u=n.get(i);if(!u)continue;let c=e?.metadataRenames.get(i)??i,l=qe(u.value,u.escapeHint);l!==void 0&&a.push(`${c} = ${l}`)}return a}function qe(t,e){switch(t.kind){case"StringScalar":return Kt(t.stringValue,e);case"IntegerScalar":return String(t.integerValue);case"StructuredList":{let n=[];for(let r of t.items){let a=qe(r,e);a!==void 0&&n.push(a)}return`[${n.join(", ")}]`}case"StructuredMap":return;default:return}}function Kt(t,e){return e&&At(e,k.ESC_TOML_MULTILINE)?Bt(t):Tt(t)}function Tt(t){return`"${t.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\n/g,"\\n")}"`}function Bt(t){return`"""
24
24
  ${t.replace(/"""/g,'\\"\\"\\"')}
25
25
  """`}var Q=class{backendUri="kanonak.org/transformations/json";render(e,n){let r=JSON.stringify(e,null,2);return n?.trailingNewline&&!r.endsWith(`
26
26
  `)?r+`
27
- `:r}};function be(t,e){return t.publisher===e.publisher&&t.package_===e.package_&&t.name===e.name}var x=class{backendUri="kanonak.org/transformations/html";render(e,n){let r=Rt(e.children);if(n?.omitWrapper){let c=r.endsWith(`
27
+ `:r}};function be(t,e){return t.publisher===e.publisher&&t.package_===e.package_&&t.name===e.name}var x=class{backendUri="kanonak.org/transformations/html";render(e,n){let r=Ct(e.children);if(n?.omitWrapper){let c=r.endsWith(`
28
28
  `)?r:`${r}
29
29
  `;return n.trailingNewline===!1&&c.endsWith(`
30
- `)?c.slice(0,-1):c}let a=Bt(e.metadata)??"Untitled",i=Lt(e.metadata,n),u=`<!DOCTYPE html>
30
+ `)?c.slice(0,-1):c}let a=Lt(e.metadata)??"Untitled",i=Rt(e.metadata,n),u=`<!DOCTYPE html>
31
31
  <html lang="en">
32
32
  <head>
33
33
  <meta charset="utf-8">
@@ -57,35 +57,35 @@ ${i}${r}
57
57
  </body>
58
58
  </html>
59
59
  `;return n?.trailingNewline===!1&&u.endsWith(`
60
- `)?u.slice(0,-1):u}};function Bt(t){if(t){for(let e of t.entries)if((e.key==="title"||e.key==="name")&&e.value.kind==="StringScalar")return e.value.stringValue}}function Lt(t,e){if(!t||t.entries.length===0)return"";let n=e?.metadataKeys??t.entries.map(i=>i.key),r=new Map(t.entries.map(i=>[i.key,i])),a=[];for(let i of n){let u=r.get(i);if(!u)continue;let c=e?.metadataRenames.get(i)??i,l=qe(u.value);l!==void 0&&a.push(` <dt>${N(c)}</dt>
60
+ `)?u.slice(0,-1):u}};function Lt(t){if(t){for(let e of t.entries)if((e.key==="title"||e.key==="name")&&e.value.kind==="StringScalar")return e.value.stringValue}}function Rt(t,e){if(!t||t.entries.length===0)return"";let n=e?.metadataKeys??t.entries.map(i=>i.key),r=new Map(t.entries.map(i=>[i.key,i])),a=[];for(let i of n){let u=r.get(i);if(!u)continue;let c=e?.metadataRenames.get(i)??i,l=We(u.value);l!==void 0&&a.push(` <dt>${N(c)}</dt>
61
61
  <dd>${l}</dd>`)}return a.length===0?"":`<dl class="metadata">
62
62
  ${a.join(`
63
63
  `)}
64
64
  </dl>
65
- `}function qe(t){switch(t.kind){case"StringScalar":return N(t.stringValue);case"IntegerScalar":return String(t.integerValue);case"StructuredList":{let e=[];for(let n of t.items){let r=qe(n);r!==void 0&&e.push(`<code>${r}</code>`)}return e.join(", ")}case"StructuredMap":return;default:return}}function Rt(t){let e=[];for(let n of t){let r=we(n);r&&e.push(r)}return e.join(`
66
- `)}function we(t){switch(t.kind){case"Heading":{let e=Math.max(1,Math.min(6,t.level));return`<h${e}>${de(t.inlines)}</h${e}>`}case"Paragraph":return`<p>${de(t.inlines)}</p>`;case"RawBlock":return Mt(t);case"PropertyList":return Nt(t);case"Table":return Ct(t);default:return""}}function Ct(t){let e=t.tableColumnLabels??[],n=t.tableRows??[],r=e.length>0?`<thead>
65
+ `}function We(t){switch(t.kind){case"StringScalar":return N(t.stringValue);case"IntegerScalar":return String(t.integerValue);case"StructuredList":{let e=[];for(let n of t.items){let r=We(n);r!==void 0&&e.push(`<code>${r}</code>`)}return e.join(", ")}case"StructuredMap":return;default:return}}function Ct(t){let e=[];for(let n of t){let r=we(n);r&&e.push(r)}return e.join(`
66
+ `)}function we(t){switch(t.kind){case"Heading":{let e=Math.max(1,Math.min(6,t.level));return`<h${e}>${de(t.inlines)}</h${e}>`}case"Paragraph":return`<p>${de(t.inlines)}</p>`;case"RawBlock":return _t(t);case"PropertyList":return It(t);case"Table":return Ut(t);default:return""}}function Ut(t){let e=t.tableColumnLabels??[],n=t.tableRows??[],r=e.length>0?`<thead>
67
67
  <tr>${e.map(i=>`<th>${N(i)}</th>`).join("")}</tr>
68
68
  </thead>
69
69
  `:"",a=n.length>0?`<tbody>
70
- ${n.map(Ut).join(`
70
+ ${n.map(Ot).join(`
71
71
  `)}
72
72
  </tbody>
73
73
  `:"";return`<table class="property-table">
74
- ${r}${a}</table>`}function Ut(t){return` <tr>${(t.tableCells??[]).map(r=>`<td>${Ot(r)}</td>`).join("")}</tr>`}function Ot(t){let e=t;return!e||typeof e!="object"||!e.kind?"":e.kind==="Text"||e.kind==="ResourceLink"||e.kind==="Badge"?de([e]):we(e)}function Nt(t){if(!t.propertyEntries||t.propertyEntries.length===0)return"";let e=[];for(let n of t.propertyEntries){let a=`<dt${n.propertyTooltip?` title="${H(n.propertyTooltip)}"`:""}>${N(n.propertyKey)}</dt>`,i=`<dd>${It(n.propertyValue)}</dd>`;e.push(a,i)}return`<dl class="property-list">
74
+ ${r}${a}</table>`}function Ot(t){return` <tr>${(t.tableCells??[]).map(r=>`<td>${Nt(r)}</td>`).join("")}</tr>`}function Nt(t){let e=t;return!e||typeof e!="object"||!e.kind?"":e.kind==="Text"||e.kind==="ResourceLink"||e.kind==="Badge"?de([e]):we(e)}function It(t){if(!t.propertyEntries||t.propertyEntries.length===0)return"";let e=[];for(let n of t.propertyEntries){let a=`<dt${n.propertyTooltip?` title="${H(n.propertyTooltip)}"`:""}>${N(n.propertyKey)}</dt>`,i=`<dd>${Mt(n.propertyValue)}</dd>`;e.push(a,i)}return`<dl class="property-list">
75
75
  ${e.join(`
76
76
  `)}
77
- </dl>`}function It(t){if(!t||t.length===0)return"";let e=[];for(let n of t){let r=n;!r||typeof r!="object"||!r.kind||(r.kind==="Text"||r.kind==="ResourceLink"||r.kind==="Badge"?e.push(de([r])):e.push(we(r)))}return e.join("")}function Mt(t){let e=t.mediaType;return e&&be(e,k.TEXT_MARKDOWN)?X(t.rawContent):e&&be(e,k.TEXT_HTML)?t.rawContent:e&&be(e,k.IMAGE_SVG_XML)?`<figure class="svg-figure">
77
+ </dl>`}function Mt(t){if(!t||t.length===0)return"";let e=[];for(let n of t){let r=n;!r||typeof r!="object"||!r.kind||(r.kind==="Text"||r.kind==="ResourceLink"||r.kind==="Badge"?e.push(de([r])):e.push(we(r)))}return e.join("")}function _t(t){let e=t.mediaType;return e&&be(e,k.TEXT_MARKDOWN)?X(t.rawContent):e&&be(e,k.TEXT_HTML)?t.rawContent:e&&be(e,k.IMAGE_SVG_XML)?`<figure class="svg-figure">
78
78
  ${t.rawContent}
79
- </figure>`:`<pre${e?` class="media-${H(e.name)}"`:""}><code>${N(t.rawContent)}</code></pre>`}function de(t){let e=[];for(let n of t)n.kind==="Text"?e.push(N(n.text)):n.kind==="ResourceLink"?e.push(_t(n)):n.kind==="Badge"&&e.push(Pt(n));return e.join("")}function _t(t){let e=We(t.target);if(!e)return N(t.linkLabel??"[unresolved link]");let n=F(e),r=t.linkLabel&&t.linkLabel.length>0?t.linkLabel:e.name,a=t.linkTooltip?` title="${H(t.linkTooltip)}"`:"";return`<a class="kan-link" href="${H(n)}"${a}>${N(r)}</a>`}function Pt(t){let e=t.badgeTooltip?` title="${H(t.badgeTooltip)}"`:"",n=N(t.badgeLabel);if(!t.badgeTarget)return`<span class="kan-badge"${e}>${n}</span>`;let r=We(t.badgeTarget);if(!r)return`<span class="kan-badge"${e}>${n}</span>`;let a=F(r);return`<a class="kan-badge" href="${H(a)}"${e}>${n}</a>`}function We(t){if(!t||typeof t!="object")return;let e=t;if(e.subject&&e.subject.publisher&&e.subject.package_&&e.subject.name){let r={publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name};return e.subject.version&&(r.version=e.subject.version),r}let n=t;if(typeof n.namespace=="string"&&typeof n.name=="string"&&n.name.length>0){let r=/^([^/]+)\/([^@]+)@(\d+)\.(\d+)\.(\d+)$/.exec(n.namespace);if(r)return{publisher:r[1],package_:r[2],name:n.name,version:{major:Number(r[3]),minor:Number(r[4]),patch:Number(r[5])}}}}function N(t){return t==null?"":String(t).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function H(t){return t==null?"":String(t).replace(/"/g,"&quot;").replace(/&/g,"&amp;")}function Ft(t,e){return t.publisher===e.publisher&&t.package_===e.package_&&t.name===e.name}var ee=class{backendUri="kanonak.org/transformations/svg";render(e,n){for(let r of e.children)if(r.kind==="RawBlock"&&r.mediaType&&Ft(r.mediaType,k.IMAGE_SVG_XML)){let a=r.rawContent;return n?.trailingNewline&&!a.endsWith(`
79
+ </figure>`:`<pre${e?` class="media-${H(e.name)}"`:""}><code>${N(t.rawContent)}</code></pre>`}function de(t){let e=[];for(let n of t)n.kind==="Text"?e.push(N(n.text)):n.kind==="ResourceLink"?e.push(Pt(n)):n.kind==="Badge"&&e.push(Ft(n));return e.join("")}function Pt(t){let e=He(t.target);if(!e)return N(t.linkLabel??"[unresolved link]");let n=F(e),r=t.linkLabel&&t.linkLabel.length>0?t.linkLabel:e.name,a=t.linkTooltip?` title="${H(t.linkTooltip)}"`:"";return`<a class="kan-link" href="${H(n)}"${a}>${N(r)}</a>`}function Ft(t){let e=t.badgeTooltip?` title="${H(t.badgeTooltip)}"`:"",n=N(t.badgeLabel);if(!t.badgeTarget)return`<span class="kan-badge"${e}>${n}</span>`;let r=He(t.badgeTarget);if(!r)return`<span class="kan-badge"${e}>${n}</span>`;let a=F(r);return`<a class="kan-badge" href="${H(a)}"${e}>${n}</a>`}function He(t){if(!t||typeof t!="object")return;let e=t;if(e.subject&&e.subject.publisher&&e.subject.package_&&e.subject.name){let r={publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name};return e.subject.version&&(r.version=e.subject.version),r}let n=t;if(typeof n.namespace=="string"&&typeof n.name=="string"&&n.name.length>0){let r=/^([^/]+)\/([^@]+)@(\d+)\.(\d+)\.(\d+)$/.exec(n.namespace);if(r)return{publisher:r[1],package_:r[2],name:n.name,version:{major:Number(r[3]),minor:Number(r[4]),patch:Number(r[5])}}}}function N(t){return t==null?"":String(t).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function H(t){return t==null?"":String(t).replace(/"/g,"&quot;").replace(/&/g,"&amp;")}function qt(t,e){return t.publisher===e.publisher&&t.package_===e.package_&&t.name===e.name}var ee=class{backendUri="kanonak.org/transformations/svg";render(e,n){for(let r of e.children)if(r.kind==="RawBlock"&&r.mediaType&&qt(r.mediaType,k.IMAGE_SVG_XML)){let a=r.rawContent;return n?.trailingNewline&&!a.endsWith(`
80
80
  `)&&(a+=`
81
- `),a}return'<svg xmlns="http://www.w3.org/2000/svg" width="1" height="1"/>'}};function qt(t,e){return t.publisher===e.publisher&&t.package_===e.package_&&t.name===e.name}var te=class{backendUri="kanonak.org/transformations/stylesheet";render(e,n){let r=[];for(let i of e.children)i.kind==="RawBlock"&&i.mediaType&&qt(i.mediaType,k.TEXT_CSS)&&r.push(i.rawContent);let a=r.join(`
81
+ `),a}return'<svg xmlns="http://www.w3.org/2000/svg" width="1" height="1"/>'}};function Wt(t,e){return t.publisher===e.publisher&&t.package_===e.package_&&t.name===e.name}var te=class{backendUri="kanonak.org/transformations/stylesheet";render(e,n){let r=[];for(let i of e.children)i.kind==="RawBlock"&&i.mediaType&&Wt(i.mediaType,k.TEXT_CSS)&&r.push(i.rawContent);let a=r.join(`
82
82
 
83
83
  `);return n?.trailingNewline&&a.length>0&&!a.endsWith(`
84
84
  `)&&(a+=`
85
- `),a}};function Wt(t,e){return t.publisher===e.publisher&&t.package_===e.package_&&t.name===e.name}var ne=class{backendUri="kanonak.org/transformations/yaml";render(e,n){let r=[];for(let i of e.children)i.kind==="RawBlock"&&i.mediaType&&Wt(i.mediaType,k.TEXT_YAML)&&r.push(i.rawContent);let a=r.join(`
85
+ `),a}};function Ht(t,e){return t.publisher===e.publisher&&t.package_===e.package_&&t.name===e.name}var ne=class{backendUri="kanonak.org/transformations/yaml";render(e,n){let r=[];for(let i of e.children)i.kind==="RawBlock"&&i.mediaType&&Ht(i.mediaType,k.TEXT_YAML)&&r.push(i.rawContent);let a=r.join(`
86
86
 
87
87
  `);return n?.trailingNewline&&a.length>0&&!a.endsWith(`
88
88
  `)&&(a+=`
89
- `),a}};function re(t,e){return t.publisher===e.publisher&&t.package_===e.package_&&t.name===e.name}var ae=class{backendUri="kanonak.org/transformations/dynamodb-json";render(e,n){if(!e.metadata)throw new Error("dynamodb-json backend: Document has no `metadata` channel. This backend serializes Document.metadata into DynamoDB attribute-value JSON \u2014 the transformation must populate that channel. (No silent empty artifact.)");let r=He(e.metadata,n),a=JSON.stringify(r,null,2);return n?.trailingNewline&&!a.endsWith(`
89
+ `),a}};function re(t,e){return t.publisher===e.publisher&&t.package_===e.package_&&t.name===e.name}var ae=class{backendUri="kanonak.org/transformations/dynamodb-json";render(e,n){if(!e.metadata)throw new Error("dynamodb-json backend: Document has no `metadata` channel. This backend serializes Document.metadata into DynamoDB attribute-value JSON \u2014 the transformation must populate that channel. (No silent empty artifact.)");let r=ze(e.metadata,n),a=JSON.stringify(r,null,2);return n?.trailingNewline&&!a.endsWith(`
90
90
  `)&&(a+=`
91
- `),a}};function He(t,e){let n=new Map;for(let i of t.entries)n.set(i.key,i);let r=e?.metadataKeys??t.entries.map(i=>i.key),a={};for(let i of r){let u=n.get(i);if(!u)continue;let c=e?.metadataRenames.get(i)??i;a[c]=ze(u.value,u.escapeHint)}return{M:a}}function ze(t,e){switch(t.kind){case"StructuredMap":return He(t);case"StructuredList":return{L:t.items.map(n=>ze(n,void 0))};case"StringScalar":return Ht(t.stringValue,e??t.escapeHint);case"IntegerScalar":return zt(t.integerValue,e??t.escapeHint)}}function Ht(t,e){if(e&&re(e,k.ESC_DYNAMODB_BOOL)){if(t==="true")return{BOOL:!0};if(t==="false")return{BOOL:!1};throw new Error(`dynamodb-json backend: a StringScalar hinted esc-dynamodb-bool must have the value "true" or "false"; got ${JSON.stringify(t)}.`)}if(e&&re(e,k.ESC_DYNAMODB_NULL))return{NULL:!0};if(e&&re(e,k.ESC_DYNAMODB_NUMBER)){if(t.trim()===""||Number.isNaN(Number(t)))throw new Error(`dynamodb-json backend: a StringScalar hinted esc-dynamodb-number must hold a numeric literal; got ${JSON.stringify(t)}.`);return{N:t}}return{S:t}}function zt(t,e){if(e&&re(e,k.ESC_DYNAMODB_BOOL))throw new Error(`dynamodb-json backend: esc-dynamodb-bool cannot apply to an IntegerScalar (value ${t}). Use a StringScalar "true"/"false".`);if(e&&re(e,k.ESC_DYNAMODB_NULL))throw new Error(`dynamodb-json backend: esc-dynamodb-null cannot apply to an IntegerScalar (value ${t}). Use a StringScalar hinted esc-dynamodb-null.`);return{N:String(t)}}var ie=class{constructor(e,n,r){this.repository=e;this.parser=n;this.objectParser=r}repository;parser;objectParser;cache=new Map;async resolveSubject(e,n){let r=M(n,e);if(r)return r;let a=e.version,i=a&&typeof a.major=="number"?`@${a.major}.${a.minor}.${a.patch}`:"",u=`${e.publisher}/${e.package_}${i}`,c=this.cache.get(u);if(!c){let p=await this.repository.getDocumentsByNamespaceAsync(e.publisher,e.package_);if(p.length===0)return;let y=a&&typeof a.major=="number"?p.find(D=>{let $=D.metadata?.namespace_?.version;return $&&$.major===a.major&&$.minor===a.minor&&$.patch===a.patch})??p[0]:p[0],h=new Ue(y,this.repository);c=await this.objectParser.parseKanonaks(h),this.cache.set(u,c)}let l=M(c,e);if(l)return l;for(let p of c)if(p instanceof w&&p.name===e.name)return p}};var Gt="kanonak.org",Jt="transformations",Zn=3,s=t=>({publisher:Gt,package_:Jt,name:t}),o={Transformation:s("Transformation"),InstanceTransformation:s("InstanceTransformation"),SetTransformation:s("SetTransformation"),inputPattern:s("inputPattern"),rule:s("rule"),artifactName:s("artifactName"),outputs:s("outputs"),formatOverrides:s("formatOverrides"),partitionBy:s("partitionBy"),InputPattern:s("InputPattern"),matchesClass:s("matchesClass"),requires:s("requires"),sortBy:s("sortBy"),SortKey:s("SortKey"),byProperty:s("byProperty"),order:s("order"),SortOrder:s("SortOrder"),ascending:s("ascending"),descending:s("descending"),OutputFormat:s("OutputFormat"),backendUri:s("backendUri"),FormatOverride:s("FormatOverride"),formatTarget:s("formatTarget"),metadataKeys:s("metadataKeys"),metadataRenames:s("metadataRenames"),trailingNewline:s("trailingNewline"),omitWrapper:s("omitWrapper"),RenameEntry:s("RenameEntry"),fromKey:s("fromKey"),toKey:s("toKey"),FMT_MARKDOWN_FRONTMATTER:s("markdown-with-frontmatter"),FMT_PLAIN_MARKDOWN:s("plain-markdown"),FMT_TOML:s("toml"),FMT_JSON:s("json"),FMT_HTML:s("html"),FMT_SVG:s("svg"),Expression:s("Expression"),ListSourcedExpression:s("ListSourcedExpression"),ListAggregate:s("ListAggregate"),IteratingExpression:s("IteratingExpression"),BuildAstNode:s("BuildAstNode"),astClass:s("astClass"),set:s("set"),AstFieldBinding:s("AstFieldBinding"),field:s("field"),bindValue:s("bindValue"),When:s("When"),condition:s("condition"),thenBuild:s("thenBuild"),elseBuild:s("elseBuild"),Concat:s("Concat"),parts:s("parts"),Fallback:s("Fallback"),primary:s("primary"),alternate:s("alternate"),StringLiteral:s("StringLiteral"),stringLiteral:s("stringLiteral"),IntegerLiteral:s("IntegerLiteral"),integerLiteral:s("integerLiteral"),DecimalLiteral:s("DecimalLiteral"),decimalLiteral:s("decimalLiteral"),BooleanLiteral:s("BooleanLiteral"),booleanLiteral:s("booleanLiteral"),VarRef:s("VarRef"),varName:s("varName"),PropertyRead:s("PropertyRead"),readSource:s("readSource"),readProp:s("readProp"),Traverse:s("Traverse"),traverseSource:s("traverseSource"),through:s("through"),step:s("step"),UriName:s("UriName"),uriNameOf:s("uriNameOf"),UriPublisher:s("UriPublisher"),uriPublisherOf:s("uriPublisherOf"),UriPackage:s("UriPackage"),uriPackageOf:s("uriPackageOf"),UriVersion:s("UriVersion"),uriVersionOf:s("uriVersionOf"),SubjectUri:s("SubjectUri"),subjectOf:s("subjectOf"),UriLiteral:s("UriLiteral"),refTo:s("refTo"),DisplayLabel:s("DisplayLabel"),labelTarget:s("labelTarget"),labelSource:s("labelSource"),ResolveRef:s("ResolveRef"),resolveSource:s("resolveSource"),Normalize:s("Normalize"),normSource:s("normSource"),normKind:s("normKind"),NormalizeKind:s("NormalizeKind"),NORM_TRIM_END:s("trim-end"),IsSet:s("IsSet"),checkExpr:s("checkExpr"),ExpressionFragment:s("ExpressionFragment"),body:s("body"),CallFragment:s("CallFragment"),fragmentRef:s("fragmentRef"),source:s("source"),Join:s("Join"),separator:s("separator"),Count:s("Count"),Sum:s("Sum"),Min:s("Min"),Max:s("Max"),Average:s("Average"),loopVar:s("loopVar"),ForEach:s("ForEach"),emit:s("emit"),ListMap:s("ListMap"),mapBody:s("mapBody"),Filter:s("Filter"),predicate:s("predicate"),PartitionBy:s("PartitionBy"),partitionKey:s("partitionKey"),DistinctBy:s("DistinctBy"),distinctKey:s("distinctKey"),Partition:s("Partition"),key:s("key"),members:s("members"),AllStatements:s("AllStatements"),statementsOf:s("statementsOf"),StatementPredicate:s("StatementPredicate"),predicateOf:s("predicateOf"),StatementValue:s("StatementValue"),valueOf:s("valueOf"),DateFormat:s("DateFormat"),dateSource:s("dateSource"),dateFormat:s("dateFormat"),BinaryArithmetic:s("BinaryArithmetic"),arithLeft:s("arithLeft"),arithRight:s("arithRight"),Add:s("Add"),Subtract:s("Subtract"),Multiply:s("Multiply"),Divide:s("Divide"),Reverse:s("Reverse"),WindowedMap:s("WindowedMap"),windowSize:s("windowSize"),windowVar:s("windowVar"),windowBody:s("windowBody"),PairwiseMap:s("PairwiseMap"),firstVar:s("firstVar"),secondVar:s("secondVar"),pairBody:s("pairBody"),Scan:s("Scan"),initialState:s("initialState"),stateVar:s("stateVar"),elementVar:s("elementVar"),accumulate:s("accumulate"),ListItemAt:s("ListItemAt"),itemIndex:s("itemIndex"),BinaryComparison:s("BinaryComparison"),compareLeft:s("compareLeft"),compareRight:s("compareRight"),Equals:s("Equals"),GreaterThan:s("GreaterThan"),LessThan:s("LessThan"),GreaterThanOrEqual:s("GreaterThanOrEqual"),LessThanOrEqual:s("LessThanOrEqual"),Not:s("Not"),operand:s("operand"),BooleanLogic:s("BooleanLogic"),operands:s("operands"),And:s("And"),Or:s("Or"),Contains:s("Contains"),haystack:s("haystack"),needle:s("needle"),UnaryNumericOp:s("UnaryNumericOp"),value:s("value"),Abs:s("Abs"),Negate:s("Negate"),KindPredicate:s("KindPredicate"),IsReference:s("IsReference"),IsEmbedded:s("IsEmbedded"),IsList:s("IsList"),kindCheck:s("kindCheck"),IsString:s("IsString"),IsNumber:s("IsNumber"),IsBoolean:s("IsBoolean"),StatementObject:s("StatementObject"),statementSource:s("statementSource"),Let:s("Let"),letName:s("letName"),letValue:s("letValue"),letBody:s("letBody"),GetStatementByName:s("GetStatementByName"),inSubject:s("inSubject"),byName:s("byName"),RenderMarkdown:s("RenderMarkdown"),renderSource:s("renderSource"),renderProp:s("renderProp"),renderFormat:s("renderFormat"),RenderFormat:s("RenderFormat"),RENDER_HTML:s("render-html"),RENDER_MARKDOWN:s("render-markdown")};var g=class extends Error{constructor(n,r){super(`${n} (at ${r})`);this.path=r}path};function fe(t,e){let n=t.name,r=on(e),a={catalog:e,depth:0};if(f(t,o.InstanceTransformation))return Xt(t,n,a,r);if(f(t,o.SetTransformation))return Yt(t,n,a,r);throw new g("Subject is not a recognized v3 transformation type \u2014 expected InstanceTransformation or SetTransformation",n)}function Xt(t,e,n,r){return{kind:"instance",name:t.name,inputPattern:Qe(t,e),rule:le(t,o.rule,`${e}.rule`,n),artifactName:le(t,o.artifactName,`${e}.artifactName`,n),outputs:xe(t,`${e}.outputs`),overrides:et(t,`${e}.formatOverrides`,n),fragments:r}}function Yt(t,e,n,r){let a=_(t,o.partitionBy);return{kind:"set",name:t.name,inputPattern:Qe(t,e),rule:le(t,o.rule,`${e}.rule`,n),artifactName:le(t,o.artifactName,`${e}.artifactName`,n),outputs:xe(t,`${e}.outputs`),overrides:et(t,`${e}.formatOverrides`,n),partitionBy:a,fragments:r}}function Qe(t,e){let n=oe(t,o.inputPattern);if(!n)throw new g("inputPattern is required",e);return Zt(n,`${e}.inputPattern`)}function Zt(t,e){let n=_(t,o.matchesClass);if(!n)throw new g("matchesClass is required",e);let r=[];for(let u of A(t,o.requires))if(u instanceof j)r.push(ve(u.object.subject));else if(u instanceof S)for(let c of u.object)c instanceof b&&r.push(ve(c.subject));let a=[],i=0;for(let u of A(t,o.sortBy))if(u instanceof S)for(let c of u.object)c instanceof C&&a.push(Ge(c,`${e}.sortBy[${i++}]`));else u instanceof T&&a.push(Ge(u.object,`${e}.sortBy[${i++}]`));return{matchesClass:n,requires:r,sortBy:a}}function Ge(t,e){let n=_(t,o.byProperty);if(!n)throw new g("SortKey.byProperty is required",e);let r=_(t,o.order);if(!r)throw new g("SortKey.order is required",e);if(E(r,o.ascending))return{byProperty:n,order:"ascending"};if(E(r,o.descending))return{byProperty:n,order:"descending"};throw new g(`SortKey.order must reference tx.ascending or tx.descending; got ${r.publisher}/${r.package_}/${r.name}`,e)}function le(t,e,n,r){let a=oe(t,e);if(!a)throw new g("expression is required",n);return G(a,n,r)}function G(t,e,n){if(f(t,o.StringLiteral))return{kind:"string-literal",value:V(t,o.stringLiteral,e)};if(f(t,o.IntegerLiteral))return{kind:"integer-literal",value:Ze(t,o.integerLiteral,e)};if(f(t,o.DecimalLiteral))return{kind:"decimal-literal",value:Ze(t,o.decimalLiteral,e)};if(f(t,o.BooleanLiteral))return{kind:"boolean-literal",value:cn(t,o.booleanLiteral,e)};if(f(t,o.VarRef))return{kind:"var-ref",varName:V(t,o.varName,e)};if(f(t,o.PropertyRead))return{kind:"property-read",source:d(t,o.readSource,`${e}.readSource`,n),readProp:q(t,o.readProp,e,"readProp")};if(f(t,o.Traverse))return{kind:"traverse",source:d(t,o.traverseSource,`${e}.traverseSource`,n),through:q(t,o.through,e,"through"),step:d(t,o.step,`${e}.step`,n)};if(f(t,o.BuildAstNode))return{kind:"build-ast-node",astClass:q(t,o.astClass,e,"astClass"),set:xt(t,`${e}.set`,n)};if(f(t,o.When))return{kind:"when",condition:d(t,o.condition,`${e}.condition`,n),thenBuild:d(t,o.thenBuild,`${e}.thenBuild`,n),elseBuild:Qt(t,o.elseBuild,`${e}.elseBuild`,n)};if(f(t,o.Concat))return{kind:"concat",parts:Se(t,o.parts,`${e}.parts`,n)};if(f(t,o.Fallback))return{kind:"fallback",primary:d(t,o.primary,`${e}.primary`,n),alternate:d(t,o.alternate,`${e}.alternate`,n)};if(f(t,o.UriName))return{kind:"uri-name",source:d(t,o.uriNameOf,`${e}.uriNameOf`,n)};if(f(t,o.UriPublisher))return{kind:"uri-publisher",source:d(t,o.uriPublisherOf,`${e}.uriPublisherOf`,n)};if(f(t,o.UriPackage))return{kind:"uri-package",source:d(t,o.uriPackageOf,`${e}.uriPackageOf`,n)};if(f(t,o.UriVersion))return{kind:"uri-version",source:d(t,o.uriVersionOf,`${e}.uriVersionOf`,n)};if(f(t,o.SubjectUri))return{kind:"subject-uri",source:d(t,o.subjectOf,`${e}.subjectOf`,n)};if(f(t,o.UriLiteral))return{kind:"uri-literal",refTo:q(t,o.refTo,e,"refTo")};if(f(t,o.DisplayLabel))return{kind:"display-label",labelTarget:q(t,o.labelTarget,e,"labelTarget"),labelSource:q(t,o.labelSource,e,"labelSource")};if(f(t,o.ResolveRef))return{kind:"resolve-ref",source:d(t,o.resolveSource,`${e}.resolveSource`,n)};if(f(t,o.Normalize))return{kind:"normalize",source:d(t,o.normSource,`${e}.normSource`,n),normKind:en(t,e)};if(f(t,o.RenderMarkdown))return{kind:"render-markdown",source:d(t,o.renderSource,`${e}.renderSource`,n),readProp:q(t,o.renderProp,e,"renderProp"),format:tn(t,e)};if(f(t,o.IsSet))return{kind:"is-set",check:d(t,o.checkExpr,`${e}.checkExpr`,n)};if(f(t,o.CallFragment))return rn(t,e,n);if(f(t,o.Join))return{kind:"join",source:d(t,o.source,`${e}.source`,n),separator:V(t,o.separator,e)};if(f(t,o.Count))return{kind:"count",source:d(t,o.source,`${e}.source`,n)};if(f(t,o.Sum))return{kind:"sum",source:d(t,o.source,`${e}.source`,n)};if(f(t,o.Min))return{kind:"min",source:d(t,o.source,`${e}.source`,n)};if(f(t,o.Max))return{kind:"max",source:d(t,o.source,`${e}.source`,n)};if(f(t,o.Average))return{kind:"average",source:d(t,o.source,`${e}.source`,n)};if(f(t,o.ForEach))return{kind:"for-each",source:d(t,o.source,`${e}.source`,n),loopVar:V(t,o.loopVar,e),emit:d(t,o.emit,`${e}.emit`,n)};if(f(t,o.ListMap))return{kind:"list-map",source:d(t,o.source,`${e}.source`,n),loopVar:V(t,o.loopVar,e),mapBody:d(t,o.mapBody,`${e}.mapBody`,n)};if(f(t,o.Filter))return{kind:"filter",source:d(t,o.source,`${e}.source`,n),loopVar:V(t,o.loopVar,e),predicate:d(t,o.predicate,`${e}.predicate`,n)};if(f(t,o.PartitionBy))return{kind:"partition-by",source:d(t,o.source,`${e}.source`,n),loopVar:V(t,o.loopVar,e),partitionKey:d(t,o.partitionKey,`${e}.partitionKey`,n)};if(f(t,o.DistinctBy))return{kind:"distinct-by",source:d(t,o.source,`${e}.source`,n),loopVar:V(t,o.loopVar,e),distinctKey:d(t,o.distinctKey,`${e}.distinctKey`,n)};if(f(t,o.AllStatements))return{kind:"all-statements",source:d(t,o.statementsOf,`${e}.statementsOf`,n)};if(f(t,o.StatementPredicate))return{kind:"statement-predicate",source:d(t,o.predicateOf,`${e}.predicateOf`,n)};if(f(t,o.StatementValue))return{kind:"statement-value",source:d(t,o.valueOf,`${e}.valueOf`,n)};if(f(t,o.DateFormat))return{kind:"date-format",source:d(t,o.dateSource,`${e}.dateSource`,n),format:nn(t,e)};if(f(t,o.Add))return{kind:"add",left:d(t,o.arithLeft,`${e}.arithLeft`,n),right:d(t,o.arithRight,`${e}.arithRight`,n)};if(f(t,o.Subtract))return{kind:"subtract",left:d(t,o.arithLeft,`${e}.arithLeft`,n),right:d(t,o.arithRight,`${e}.arithRight`,n)};if(f(t,o.Multiply))return{kind:"multiply",left:d(t,o.arithLeft,`${e}.arithLeft`,n),right:d(t,o.arithRight,`${e}.arithRight`,n)};if(f(t,o.Divide))return{kind:"divide",left:d(t,o.arithLeft,`${e}.arithLeft`,n),right:d(t,o.arithRight,`${e}.arithRight`,n)};if(f(t,o.Reverse))return{kind:"reverse",source:d(t,o.source,`${e}.source`,n)};if(f(t,o.WindowedMap)){let r=tt(t,o.windowSize);if(r===void 0||!Number.isInteger(r)||r<1)throw new g("windowSize must be a positive integer",`${e}.windowSize`);return{kind:"windowed-map",source:d(t,o.source,`${e}.source`,n),windowSize:r,windowVar:V(t,o.windowVar,e),windowBody:d(t,o.windowBody,`${e}.windowBody`,n)}}if(f(t,o.PairwiseMap))return{kind:"pairwise-map",source:d(t,o.source,`${e}.source`,n),firstVar:V(t,o.firstVar,e),secondVar:V(t,o.secondVar,e),pairBody:d(t,o.pairBody,`${e}.pairBody`,n)};if(f(t,o.Scan))return{kind:"scan",source:d(t,o.source,`${e}.source`,n),initialState:d(t,o.initialState,`${e}.initialState`,n),stateVar:V(t,o.stateVar,e),elementVar:V(t,o.elementVar,e),accumulate:d(t,o.accumulate,`${e}.accumulate`,n)};if(f(t,o.ListItemAt))return{kind:"list-item-at",source:d(t,o.source,`${e}.source`,n),itemIndex:d(t,o.itemIndex,`${e}.itemIndex`,n)};if(f(t,o.Equals))return{kind:"equals",left:d(t,o.compareLeft,`${e}.compareLeft`,n),right:d(t,o.compareRight,`${e}.compareRight`,n)};if(f(t,o.GreaterThan))return{kind:"greater-than",left:d(t,o.compareLeft,`${e}.compareLeft`,n),right:d(t,o.compareRight,`${e}.compareRight`,n)};if(f(t,o.LessThan))return{kind:"less-than",left:d(t,o.compareLeft,`${e}.compareLeft`,n),right:d(t,o.compareRight,`${e}.compareRight`,n)};if(f(t,o.GreaterThanOrEqual))return{kind:"greater-than-or-equal",left:d(t,o.compareLeft,`${e}.compareLeft`,n),right:d(t,o.compareRight,`${e}.compareRight`,n)};if(f(t,o.LessThanOrEqual))return{kind:"less-than-or-equal",left:d(t,o.compareLeft,`${e}.compareLeft`,n),right:d(t,o.compareRight,`${e}.compareRight`,n)};if(f(t,o.Not))return{kind:"not",operand:d(t,o.operand,`${e}.operand`,n)};if(f(t,o.And))return{kind:"and",operands:Se(t,o.operands,`${e}.operands`,n)};if(f(t,o.Or))return{kind:"or",operands:Se(t,o.operands,`${e}.operands`,n)};if(f(t,o.Contains))return{kind:"contains",haystack:d(t,o.haystack,`${e}.haystack`,n),needle:d(t,o.needle,`${e}.needle`,n)};if(f(t,o.Abs))return{kind:"abs",value:d(t,o.value,`${e}.value`,n)};if(f(t,o.Negate))return{kind:"negate",value:d(t,o.value,`${e}.value`,n)};if(f(t,o.IsReference))return{kind:"is-reference",check:d(t,o.kindCheck,`${e}.kindCheck`,n)};if(f(t,o.IsEmbedded))return{kind:"is-embedded",check:d(t,o.kindCheck,`${e}.kindCheck`,n)};if(f(t,o.IsList))return{kind:"is-list",check:d(t,o.kindCheck,`${e}.kindCheck`,n)};if(f(t,o.IsString))return{kind:"is-string",check:d(t,o.kindCheck,`${e}.kindCheck`,n)};if(f(t,o.IsNumber))return{kind:"is-number",check:d(t,o.kindCheck,`${e}.kindCheck`,n)};if(f(t,o.IsBoolean))return{kind:"is-boolean",check:d(t,o.kindCheck,`${e}.kindCheck`,n)};if(f(t,o.StatementObject))return{kind:"statement-object",source:d(t,o.statementSource,`${e}.statementSource`,n)};if(f(t,o.Let))return{kind:"let",bindName:V(t,o.letName,e),bindValue:d(t,o.letValue,`${e}.letValue`,n),body:d(t,o.letBody,`${e}.letBody`,n)};if(f(t,o.GetStatementByName))return{kind:"get-statement-by-name",inSubject:d(t,o.inSubject,`${e}.inSubject`,n),byName:d(t,o.byName,`${e}.byName`,n)};throw new g("Expression is not of a recognized v3 type \u2014 embedded has no matching subclass of tx.Expression",e)}function d(t,e,n,r){let a=oe(t,e);if(!a)throw new g("child expression is required",n);return G(a,n,r)}function Qt(t,e,n,r){let a=oe(t,e);if(a)return G(a,n,r)}function Se(t,e,n,r){let a=[],i=0;for(let u of A(t,e))if(u instanceof S)for(let c of u.object)c instanceof C&&a.push(G(c,`${n}[${i++}]`,r));else u instanceof T&&a.push(G(u.object,`${n}[${i++}]`,r));return a}function xt(t,e,n){let r=[],a=0;for(let i of A(t,o.set))if(i instanceof S)for(let u of i.object)u instanceof C&&r.push(Je(u,`${e}[${a++}]`,n));else i instanceof T&&r.push(Je(i.object,`${e}[${a++}]`,n));return r}function Je(t,e,n){return{field:q(t,o.field,e,"field"),value:d(t,o.bindValue,`${e}.bindValue`,n)}}function en(t,e){let n=_(t,o.normKind);if(!n)throw new g("normKind is required",e);if(E(n,o.NORM_TRIM_END))return"trim-end";throw new g(`Unknown NormalizeKind: ${n.publisher}/${n.package_}/${n.name}`,e)}function tn(t,e){let n=_(t,o.renderFormat);if(!n)throw new g("renderFormat is required",e);if(E(n,o.RENDER_HTML))return"html";if(E(n,o.RENDER_MARKDOWN))return"markdown";throw new g(`Unknown RenderFormat: ${n.publisher}/${n.package_}/${n.name}`,e)}var Xe=new Set(["iso-date","iso-datetime","short-date","long-date","year","month-year"]);function nn(t,e){let n=z(t,o.dateFormat);if(!n)throw new g("dateFormat is required",e);if(!Xe.has(n))throw new g(`Unknown dateFormat "${n}"; supported: ${[...Xe].join(", ")}`,e);return n}function rn(t,e,n){let r=_(t,o.fragmentRef);if(!r)throw new g("fragmentRef is required",e);if(!sn(n.catalog,r))throw new g(`ExpressionFragment not found: ${r.publisher}/${r.package_}/${r.name}`,e);return{kind:"call-fragment",fragmentKey:an(r)}}function an(t){return`${t.publisher}/${t.package_}/${t.name}`}function on(t){let e=new Map,n=[];for(let r of t){if(!(r instanceof w)||!f(r,o.ExpressionFragment))continue;let a=oe(r,o.body);if(!a)continue;let i=(r.namespace||"").split("@")[0]||"",u=i.indexOf("/");if(u<0)continue;let c=i.substring(0,u),l=i.substring(u+1),p=`${c}/${l}/${r.name}`;n.push({key:p,subject:r,bodyEmb:a,pubPkgName:`${i}/${r.name}`})}for(let r of n){let a=G(r.bodyEmb,`fragment(${r.pubPkgName})`,{catalog:t,depth:0});e.set(r.key,a)}return e}function sn(t,e){for(let n of t)if(!(!(n instanceof w)||n.name!==e.name||!(n.namespace||"").startsWith(`${e.publisher}/${e.package_}@`))&&f(n,o.ExpressionFragment))return n}function xe(t,e){let n=new Set;for(let r of A(t,o.outputs))if(r instanceof j)n.add(r.object.subject.name);else if(r instanceof S)for(let a of r.object)a instanceof b&&n.add(a.subject.name);if(n.size===0)throw new g("outputs is required (at least one OutputFormat)",e);return n}function et(t,e,n){let r=new Map,a=0;for(let i of A(t,o.formatOverrides))if(i instanceof S){for(let u of i.object)if(u instanceof C){let[c,l]=Ye(u,`${e}[${a++}]`);r.set(c,l)}}else if(i instanceof T){let[u,c]=Ye(i.object,`${e}[${a++}]`);r.set(u,c)}return r}function Ye(t,e){let n=_(t,o.formatTarget);if(!n)throw new g("formatTarget is required",e);let r=[];for(let c of A(t,o.metadataKeys))if(c instanceof L)r.push(c.object);else if(c instanceof S)for(let l of c.object){let p=l.value;typeof p=="string"&&r.push(p)}let a=new Map;for(let c of A(t,o.metadataRenames))if(c instanceof S){for(let l of c.object)if(l instanceof C){let p=z(l,o.fromKey),y=z(l,o.toKey);p&&y&&a.set(p,y)}}else if(c instanceof T){let l=c.object,p=z(l,o.fromKey),y=z(l,o.toKey);p&&y&&a.set(p,y)}let i=Ee(t,o.trailingNewline),u=Ee(t,o.omitWrapper);return[n.name,{metadataKeys:r.length>0?r:void 0,metadataRenames:a,trailingNewline:i,omitWrapper:u}]}function un(t){return t.predicate?.subject}function A(t,e){let n=[];for(let r of t.statement){let a=un(r);a&&E(a,e)&&n.push(r)}return n}function oe(t,e){for(let n of A(t,e))if(n instanceof T)return n.object}function _(t,e){for(let n of A(t,e))if(n instanceof j)return ve(n.object.subject)}function z(t,e){for(let n of A(t,e))if(n instanceof L)return n.object}function tt(t,e){for(let n of A(t,e))if(n instanceof U)return n.object}function Ee(t,e){for(let n of A(t,e))if(n instanceof O)return n.object}function V(t,e,n){let r=z(t,e);if(r===void 0)throw new g(`${e.name} (string) is required`,n);return r}function Ze(t,e,n){let r=tt(t,e);if(r===void 0)throw new g(`${e.name} (number) is required`,n);return r}function cn(t,e,n){let r=Ee(t,e);if(r===void 0)throw new g(`${e.name} (boolean) is required`,n);return r}function q(t,e,n,r){let a=_(t,e);if(!a)throw new g(`${r} (URI reference) is required`,n);return a}function ve(t){return{publisher:t.publisher,package_:t.package_,name:t.name}}var dn={publisher:"kanonak.org",package_:"core-rdf",name:"label"},I=class extends Error{},pe=class{constructor(e,n,r=new Map){this.resolver=e;this.catalog=n;this.fragments=r}resolver;catalog;fragments;async evaluate(e,n){switch(e.kind){case"string-literal":return e.value;case"integer-literal":return e.value;case"decimal-literal":return e.value;case"boolean-literal":return e.value;case"uri-literal":return{...e.refTo};case"var-ref":{if(!n.has(e.varName))throw new I(`Unbound variable "${e.varName}"`);return n.get(e.varName)}case"concat":{let r=[];for(let a of e.parts){let i=await this.evaluate(a,n);if(i!=null)if(Array.isArray(i))for(let u of i)r.push(u);else r.push(i)}return r}case"fallback":{let r=await this.evaluate(e.primary,n);return nt(r)?r:this.evaluate(e.alternate,n)}case"when":return await this.evaluate(e.condition,n)===!0?this.evaluate(e.thenBuild,n):e.elseBuild?this.evaluate(e.elseBuild,n):void 0;case"is-set":{let r=await this.evaluate(e.check,n);return nt(r)}case"property-read":{let r=await this.evaluate(e.source,n);return me(r,e.readProp)}case"traverse":{let r=await this.evaluate(e.source,n);if(!(r instanceof K))return;let a=fn(r,e.through),i=[];for(let u of a){let c=await this.resolver.resolveSubject(u,this.catalog);if(!c)continue;let l=new Map(n);l.set("input",c);let p=await this.evaluate(e.step,l);p!=null&&i.push(se(p))}return i.join("")}case"uri-name":{let r=await this.evaluate(e.source,n);return J(r)?r.name:r instanceof b?r.subject.name:r instanceof w?r.name:r instanceof C?r.name??"":void 0}case"uri-publisher":{let r=await this.evaluate(e.source,n);return $e(r)?.publisher}case"uri-package":{let r=await this.evaluate(e.source,n);return $e(r)?.package_}case"uri-version":{let r=await this.evaluate(e.source,n);return $e(r)?.version}case"subject-uri":{let r=await this.evaluate(e.source,n);if(r instanceof w){let a=r.namespace??"",i=r.name??"";return!a||!i?void 0:`${a}/${i}`}if(r instanceof b){let a=r.subject,i=a.version;return i&&typeof i.major=="number"?`${a.publisher}/${a.package_}@${i.major}.${i.minor}.${i.patch}/${a.name}`:`${a.publisher}/${a.package_}/${a.name}`}return}case"display-label":{let r=await this.resolver.resolveSubject({...e.labelTarget},this.catalog);return r?me(r,e.labelSource):void 0}case"resolve-ref":{let r=await this.evaluate(e.source,n);return r instanceof w?r:r instanceof b?await this.resolver.resolveSubject(r.subject,this.catalog):J(r)?await this.resolver.resolveSubject(r,this.catalog):void 0}case"normalize":{let r=await this.evaluate(e.source,n),a=r==null?"":se(r);return e.normKind==="trim-end"?a.replace(/[\s\r\n]+$/u,""):a}case"render-markdown":{let r=await this.evaluate(e.source,n);if(!(r instanceof K))return;let a;for(let u of r.statement){let c=je(u);if(c&&E(c,e.readProp)){a=u;break}}if(!(a instanceof Re)){let u=me(r,e.readProp);return u==null?void 0:se(u)}let i=await this.renderMarkdownLinks(a);return e.format==="html"?X(i):i}case"build-ast-node":{let r={kind:e.astClass.name};for(let a of e.set){let i=await this.evaluate(a.value,n);if(i==null||Array.isArray(i)&&i.length===0)continue;let u=a.field.name;pn.has(u)&&(Array.isArray(i)&&i.every(c=>rt(c))?i=i.map(c=>String(c)).join(""):rt(i)&&(i=String(i))),r[u]=i}return r}case"call-fragment":{let r=this.fragments.get(e.fragmentKey);if(!r)throw new I(`ExpressionFragment ${e.fragmentKey} not found in registry`);return this.evaluate(r,n)}case"join":return(await this.evaluateList(e.source,n)).map(a=>a==null?"":se(a)).join(e.separator);case"count":return(await this.evaluateList(e.source,n)).length;case"sum":{let r=await this.evaluateList(e.source,n),a=0;for(let i of r)a+=v(i,"Sum");return a}case"min":{let r=await this.evaluateList(e.source,n);if(r.length===0)throw new I("Min on an empty list is undefined; guard with IsSet");let a=v(r[0],"Min");for(let i=1;i<r.length;i++){let u=v(r[i],"Min");u<a&&(a=u)}return a}case"max":{let r=await this.evaluateList(e.source,n);if(r.length===0)throw new I("Max on an empty list is undefined; guard with IsSet");let a=v(r[0],"Max");for(let i=1;i<r.length;i++){let u=v(r[i],"Max");u>a&&(a=u)}return a}case"average":{let r=await this.evaluateList(e.source,n);if(r.length===0)throw new I("Average on an empty list is undefined; guard with IsSet");let a=0;for(let i of r)a+=v(i,"Average");return a/r.length}case"for-each":{let r=await this.evaluateList(e.source,n),a=[];for(let i of r){let u=new Map(n);u.set(e.loopVar,B(i));let c=await this.evaluate(e.emit,u);if(c!=null)if(Array.isArray(c))for(let l of c)a.push(l);else a.push(c)}return a}case"list-map":{let r=await this.evaluateList(e.source,n),a=[];for(let i of r){let u=new Map(n);u.set(e.loopVar,B(i)),a.push(await this.evaluate(e.mapBody,u))}return a}case"filter":{let r=await this.evaluateList(e.source,n),a=[];for(let i of r){let u=new Map(n);u.set(e.loopVar,B(i)),await this.evaluate(e.predicate,u)===!0&&a.push(i)}return a}case"partition-by":{let r=await this.evaluateList(e.source,n),a=new Map,i=[];for(let u of r){let c=new Map(n);c.set(e.loopVar,B(u));let l=await this.evaluate(e.partitionKey,c),p=ot(l),y=a.get(p);y||(y={kind:"Partition",key:l,members:[]},a.set(p,y),i.push(p)),y.members.push(u)}return i.map(u=>a.get(u))}case"distinct-by":{let r=await this.evaluateList(e.source,n),a=new Set,i=[];for(let u of r){let c=new Map(n);c.set(e.loopVar,B(u));let l=await this.evaluate(e.distinctKey,c),p=ot(l);a.has(p)||(a.add(p),i.push(u))}return i}case"all-statements":{let r=await this.evaluate(e.source,n);return r instanceof K?r.statement:[]}case"statement-predicate":{let r=await this.evaluate(e.source,n);if(Ve(r)){let a=r.predicate;if(a instanceof b)return a}return}case"statement-value":{let r=await this.evaluate(e.source,n);return Ve(r)?kn(r):void 0}case"date-format":{let r=await this.evaluate(e.source,n),a=r==null?"":se(r);return a?yn(a,e.format):""}case"add":{let r=v(await this.evaluate(e.left,n),"Add"),a=v(await this.evaluate(e.right,n),"Add");return r+a}case"subtract":{let r=v(await this.evaluate(e.left,n),"Subtract"),a=v(await this.evaluate(e.right,n),"Subtract");return r-a}case"multiply":{let r=v(await this.evaluate(e.left,n),"Multiply"),a=v(await this.evaluate(e.right,n),"Multiply");return r*a}case"divide":{let r=v(await this.evaluate(e.left,n),"Divide"),a=v(await this.evaluate(e.right,n),"Divide");if(a===0)throw new I("Divide by zero; guard with When");return r/a}case"reverse":{if(e.source.kind==="reverse")return this.evaluate(e.source.source,n);let r=await this.evaluateReverseIterator(e.source,n);return r!==void 0?r:[...await this.evaluateList(e.source,n)].reverse()}case"windowed-map":{let r=await this.evaluateList(e.source,n);if(r.length<e.windowSize)return[];let a=[];for(let i=0;i+e.windowSize<=r.length;i++){let u=r.slice(i,i+e.windowSize),c=new Map(n);c.set(e.windowVar,u);let l=await this.evaluate(e.windowBody,c);if(l!=null)if(Array.isArray(l))for(let p of l)a.push(p);else a.push(l)}return a}case"pairwise-map":{let r=await this.evaluateList(e.source,n);if(r.length<2)return[];let a=[];for(let i=0;i+1<r.length;i++){let u=new Map(n);u.set(e.firstVar,B(r[i])),u.set(e.secondVar,B(r[i+1]));let c=await this.evaluate(e.pairBody,u);if(c!=null)if(Array.isArray(c))for(let l of c)a.push(l);else a.push(c)}return a}case"scan":{let r=await this.evaluateList(e.source,n);if(r.length===0)return[];let a=await this.evaluate(e.initialState,n),i=[];for(let u of r){let c=new Map(n);c.set(e.stateVar,a),c.set(e.elementVar,B(u));let l=await this.evaluate(e.accumulate,c);i.push(l),a=l}return i}case"list-item-at":{let r=await this.evaluateList(e.source,n),a=await this.evaluate(e.itemIndex,n);return typeof a!="number"||!Number.isInteger(a)||a<0||a>=r.length?void 0:r[a]}case"equals":{let r=await this.evaluate(e.left,n),a=await this.evaluate(e.right,n);return at(r,a)}case"greater-than":{let r=await this.evaluate(e.left,n),a=await this.evaluate(e.right,n);return typeof r!="number"||typeof a!="number"?!1:r>a}case"less-than":{let r=await this.evaluate(e.left,n),a=await this.evaluate(e.right,n);return typeof r!="number"||typeof a!="number"?!1:r<a}case"greater-than-or-equal":{let r=await this.evaluate(e.left,n),a=await this.evaluate(e.right,n);return typeof r!="number"||typeof a!="number"?!1:r>=a}case"less-than-or-equal":{let r=await this.evaluate(e.left,n),a=await this.evaluate(e.right,n);return typeof r!="number"||typeof a!="number"?!1:r<=a}case"not":{let r=await this.evaluate(e.operand,n);return r===!0?!1:r===!1?!0:void 0}case"and":{for(let r of e.operands)if(await this.evaluate(r,n)!==!0)return!1;return!0}case"or":{for(let r of e.operands)if(await this.evaluate(r,n)===!0)return!0;return!1}case"contains":{let r=await this.evaluateList(e.haystack,n),a=await this.evaluate(e.needle,n);for(let i of r)if(at(i,a))return!0;return!1}case"abs":{let r=v(await this.evaluate(e.value,n),"Abs");return Math.abs(r)}case"negate":return-v(await this.evaluate(e.value,n),"Negate");case"is-reference":{let r=await this.evaluate(e.check,n);return r instanceof b||r instanceof w}case"is-embedded":return await this.evaluate(e.check,n)instanceof C;case"is-list":{let r=await this.evaluate(e.check,n);return Array.isArray(r)}case"is-string":return typeof await this.evaluate(e.check,n)=="string";case"is-number":return typeof await this.evaluate(e.check,n)=="number";case"is-boolean":return typeof await this.evaluate(e.check,n)=="boolean";case"statement-object":{let r=await this.evaluate(e.source,n);if(!Ve(r))return;let a=r;return a instanceof L||a instanceof U||a instanceof O||a instanceof j||a instanceof T||a instanceof S?a.object:void 0}case"let":{let r=await this.evaluate(e.bindValue,n),a=new Map(n);return a.set(e.bindName,r),this.evaluate(e.body,a)}case"get-statement-by-name":{let r=await this.evaluate(e.inSubject,n),a=await this.evaluate(e.byName,n);if(!(r instanceof K)||typeof a!="string")return;for(let i of r.statement)if(i.predicate?.subject?.name===a)return i;return}default:{let r=e;throw new I("Unknown expression kind")}}}async renderMarkdownLinks(e){let n=e.object,r="",a=0;for(let i of e.links){if(r+=n.slice(a,i.startOffset),i.target){let u=i.target.subject,c=i.displayText??await this.resolveLabel(u)??u.name;r+=`[${c}](${F(u)})`}else r+=i.displayText??i.reference;a=i.endOffset}return r+=n.slice(a),r}async resolveLabel(e){let n=await this.resolver.resolveSubject(e,this.catalog);if(!n)return;let r=me(n,dn);return typeof r=="string"?r:void 0}async evaluateList(e,n){let r=await this.evaluate(e,n);return r==null?[]:Array.isArray(r)?r:[r]}async evaluateReverseIterator(e,n){if(e.kind==="pairwise-map"){let r=await this.evaluateList(e.source,n);if(r.length<2)return[];let a=[];for(let i=r.length-1;i>=1;i--){let u=new Map(n);u.set(e.firstVar,B(r[i-1])),u.set(e.secondVar,B(r[i]));let c=await this.evaluate(e.pairBody,u);if(c!=null)if(Array.isArray(c))for(let l of c)a.push(l);else a.push(c)}return a}if(e.kind==="for-each"){let r=await this.evaluateList(e.source,n),a=[];for(let i=r.length-1;i>=0;i--){let u=new Map(n);u.set(e.loopVar,B(r[i]));let c=await this.evaluate(e.emit,u);if(c!=null)if(Array.isArray(c))for(let l of c)a.push(l);else a.push(c)}return a}if(e.kind==="list-map"){let r=await this.evaluateList(e.source,n),a=[];for(let i=r.length-1;i>=0;i--){let u=new Map(n);u.set(e.loopVar,B(r[i])),a.push(await this.evaluate(e.mapBody,u))}return a}if(e.kind==="windowed-map"){let r=await this.evaluateList(e.source,n);if(r.length<e.windowSize)return[];let a=[];for(let i=r.length-e.windowSize;i>=0;i--){let u=r.slice(i,i+e.windowSize),c=new Map(n);c.set(e.windowVar,u);let l=await this.evaluate(e.windowBody,c);if(l!=null)if(Array.isArray(l))for(let p of l)a.push(p);else a.push(l)}return a}}};function me(t,e){if(t instanceof K)return ln(t,e);if(mn(t))return E(e,o.key)?t.key:E(e,o.members)?t.members:void 0}function ln(t,e){for(let n of t.statement){let r=je(n);if(!(!r||!E(r,e))&&(n instanceof L||n instanceof U||n instanceof O||n instanceof j||n instanceof T||n instanceof S))return n.object}}function fn(t,e){let n=[];for(let r of t.statement){let a=je(r);if(!(!a||!E(a,e))){if(r instanceof j)n.push(r.object.subject);else if(r instanceof S)for(let i of r.object)i instanceof b&&n.push(i.subject)}}return n}function je(t){return t.predicate?.subject}function se(t){if(t==null)return"";if(typeof t=="string")return t;if(typeof t=="number"||typeof t=="boolean")return String(t);if(t instanceof K)return t.name??"";if(t instanceof b)return t.subject.name;if(J(t))return t.name;let e=t.value;return typeof e=="string"?e:typeof e=="number"||typeof e=="boolean"?String(e):""}function B(t){return t!==null&&typeof t=="object"&&!Array.isArray(t)&&!(t instanceof K)&&!(t instanceof b)&&!(t instanceof C)&&"value"in t?t.value:t}function nt(t){return t==null?!1:typeof t=="string"||Array.isArray(t)?t.length>0:typeof t=="boolean"?t===!0:!0}function J(t){return typeof t=="object"&&t!==null&&typeof t.publisher=="string"&&typeof t.package_=="string"&&typeof t.name=="string"}function mn(t){return typeof t=="object"&&t!==null&&t.kind==="Partition"&&Array.isArray(t.members)}function v(t,e){if(typeof t=="number"&&Number.isFinite(t))return t;throw new I(`${e} requires numeric elements; got ${gn(t)}`)}function $e(t){if(t instanceof w){let e=t.namespace??"",n=e.indexOf("/"),r=e.indexOf("@",n+1);return n<0||r<0?void 0:{publisher:e.substring(0,n),package_:e.substring(n+1,r),version:e.substring(r+1),name:t.name??""}}if(t instanceof b){let e=t.subject,n=e.version;return{publisher:e.publisher,package_:e.package_,version:n&&typeof n.major=="number"?`${n.major}.${n.minor}.${n.patch}`:"",name:e.name}}if(J(t))return{publisher:t.publisher,package_:t.package_,version:"",name:t.name}}var pn=new Set(["stringValue","text","rawContent","key","propertyKey","linkLabel"]);function rt(t){return typeof t=="string"||typeof t=="number"||typeof t=="boolean"}function gn(t){return t===void 0?"undefined":t===null?"null":Array.isArray(t)?`array(${t.length})`:typeof t}function yn(t,e){let n=new Date(t);if(isNaN(n.getTime()))return"";let r=n.getUTCFullYear(),a=["January","February","March","April","May","June","July","August","September","October","November","December"][n.getUTCMonth()],i=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"][n.getUTCMonth()],u=n.getUTCDate(),c=(l,p=2)=>String(l).padStart(p,"0");switch(e){case"iso-date":return`${r}-${c(n.getUTCMonth()+1)}-${c(u)}`;case"iso-datetime":return`${r}-${c(n.getUTCMonth()+1)}-${c(u)}T${c(n.getUTCHours())}:${c(n.getUTCMinutes())}:${c(n.getUTCSeconds())}Z`;case"short-date":return`${i} ${u}`;case"long-date":return`${a} ${u}, ${r}`;case"year":return String(r);case"month-year":return`${a} ${r}`}}function at(t,e){if(t==null||e===void 0||e===null)return!1;if(t===e)return!0;let n=typeof t=="object"&&"value"in t?t.value:void 0,r=typeof e=="object"&&"value"in e?e.value:void 0,a=n??t,i=r??e,u=it(t),c=it(e);return u&&c?u.publisher===c.publisher&&u.package_===c.package_&&u.name===c.name:typeof a=="string"&&typeof i=="string"||typeof a=="number"&&typeof i=="number"||typeof a=="boolean"&&typeof i=="boolean"?a===i:!1}function it(t){if(t instanceof b){let e=t.subject;return{publisher:e.publisher,package_:e.package_,name:e.name}}if(t instanceof w){let e=t.namespace??"",n=e.indexOf("/"),r=e.indexOf("@",n+1);if(n<0)return;let a=e.substring(0,n),i=r>=0?e.substring(n+1,r):e.substring(n+1);return{publisher:a,package_:i,name:t.name??""}}if(J(t))return{publisher:t.publisher,package_:t.package_,name:t.name}}function Ve(t){return t instanceof L||t instanceof U||t instanceof O||t instanceof j||t instanceof T||t instanceof S}function kn(t){return t instanceof L||t instanceof U||t instanceof O?String(t.object??""):t instanceof j?t.object?.subject?.name??"":t instanceof T?"[embedded]":t instanceof S?(t.object??[]).map(n=>{if(n instanceof b)return n.subject.name;let r=n.name;if(r&&r.length>0)return r;let a=n.value;return typeof a=="string"||typeof a=="number"||typeof a=="boolean"?String(a):"[embedded]"}).join(", "):""}function ot(t){if(t===void 0)return"\0undef";if(t===null)return"\0null";if(typeof t=="string")return`s:${t}`;if(typeof t=="number")return`n:${t}`;if(typeof t=="boolean")return`b:${t}`;if(t instanceof b){let e=t.subject;return`r:${e.publisher}/${e.package_}/${e.name}`}if(t instanceof K){let e=t.name??"";return`k:${t.namespace??""}/${e}`}return J(t)?`u:${t.publisher}/${t.package_}/${t.name}`:`o:${JSON.stringify(t)}`}var hn={"markdown-with-frontmatter":{formatUri:"kanonak.org/transformations/markdown-with-frontmatter",extension:".md"},"plain-markdown":{formatUri:"kanonak.org/transformations/plain-markdown",extension:".md"},toml:{formatUri:"kanonak.org/transformations/toml",extension:".toml"},json:{formatUri:"kanonak.org/transformations/json",extension:".json"},html:{formatUri:"kanonak.org/transformations/html",extension:".html"},svg:{formatUri:"kanonak.org/transformations/svg",extension:".svg"},stylesheet:{formatUri:"kanonak.org/transformations/stylesheet",extension:".css"},yaml:{formatUri:"kanonak.org/transformations/yaml",extension:".yaml"},"dynamodb-json":{formatUri:"kanonak.org/transformations/dynamodb-json",extension:".json"}},W=class extends Error{},ge=class{backends=new Map;constructor(){this.register(new Y),this.register(new Z),this.register(new Q),this.register(new x),this.register(new ee),this.register(new te),this.register(new ne),this.register(new ae)}register(e){this.backends.set(e.backendUri,e)}async run(e){let n=e.transformationKanonaks??e.allKanonaks,r=fe(e.transformation,n);if(!r.outputs.has(e.outputFormat))throw new W(`Transformation "${r.name}" does not declare output format "${e.outputFormat}". Declared: ${Array.from(r.outputs).join(", ")}`);let a=this.findBackend(e.outputFormat);if(!a)throw new W(`No backend registered for OutputFormat "${e.outputFormat}".`);let i=new ie(e.repository,e.parser,e.objectParser),u=new pe(i,e.allKanonaks,r.fragments);return r.kind==="instance"?this.runInstance(r,e,a,u):this.runSet(r,e,a,u)}async runInstance(e,n,r,a){let i=st(n.instances,e.inputPattern.requires),u=ut(i,e.inputPattern.sortBy),c=[];for(let l of u){let p=new Map;p.set("input",l);let y=await a.evaluate(e.rule,p);Ae(y,e.name,`input "${l.name}"`);let h=De(await a.evaluate(e.artifactName,p),e.name,`input "${l.name}"`),D=Ke(e.overrides.get(n.outputFormat),n.runtimeOverride),$=r.render(y,D);c.push({fileName:h,format:n.outputFormat,content:$,source:{kind:"instance",sourceName:l.name}})}return c}async runSet(e,n,r,a){let i=st(n.instances,e.inputPattern.requires),u=ut(i,e.inputPattern.sortBy);return e.partitionBy?this.runSetWithPartition(e,u,n,r,a):this.runSetSingle(e,u,n,r,a)}async runSetSingle(e,n,r,a,i){let u=new Map;u.set("inputs",n);let c=await i.evaluate(e.rule,u);Ae(c,e.name,"set");let l=De(await i.evaluate(e.artifactName,u),e.name,"set"),p=Ke(e.overrides.get(r.outputFormat),r.runtimeOverride),y=a.render(c,p);return[{fileName:l,format:r.outputFormat,content:y,source:{kind:"set",memberCount:n.length}}]}async runSetWithPartition(e,n,r,a,i){let u=e.partitionBy,c=new Map,l=[];for(let y of n){let h=Sn(y,u);if(h==null)continue;let D=En(h),$=c.get(D);$||($={keyValue:h,keyDisplay:vn(h),members:[]},c.set(D,$),l.push(D)),$.members.push(y)}let p=[];for(let y of l){let h=c.get(y),D=new Map;D.set("inputs",h.members),D.set("key",h.keyValue);let $=await i.evaluate(e.rule,D);Ae($,e.name,`partition "${h.keyDisplay}"`);let ft=De(await i.evaluate(e.artifactName,D),e.name,`partition "${h.keyDisplay}"`),mt=Ke(e.overrides.get(r.outputFormat),r.runtimeOverride),pt=a.render($,mt);p.push({fileName:ft,format:r.outputFormat,content:pt,source:{kind:"set",memberCount:h.members.length,partitionKey:h.keyDisplay}})}return p}findBackend(e){let n=hn[e];if(n)return this.backends.get(n.formatUri)}};function st(t,e){return e.length===0?t:t.filter(n=>{for(let r of e)if(!wn(n,r))return!1;return!0})}function ut(t,e){if(e.length===0)return t;let n=[...t];return n.sort((r,a)=>{for(let i of e){let u=ct(r,i.byProperty),c=ct(a,i.byProperty),l=bn(u,c,i.order);if(l!==0)return l}return 0}),n}function ct(t,e){for(let n of t.statement){let r=Te(n);if(!(!r||!E(r,e))){if(n instanceof L||n instanceof U||n instanceof O)return n.object;if(n instanceof S)throw new W(`Sort property "${e.name}" on instance "${t.name??"?"}" resolves to a list \u2014 list-typed properties are not sortable. Use a scalar property.`);if(n instanceof j)throw new W(`Sort property "${e.name}" on instance "${t.name??"?"}" resolves to a reference \u2014 reference-typed properties don't have a natural total order. Use a scalar property.`)}}}function bn(t,e,n){if(t===void 0&&e===void 0)return 0;if(t===void 0)return n==="ascending"?1:-1;if(e===void 0)return n==="ascending"?-1:1;let r;return typeof t=="number"&&typeof e=="number"?r=t-e:r=String(t).localeCompare(String(e)),n==="ascending"?r:-r}function wn(t,e){for(let n of t.statement){let r=Te(n);if(!r||!E(r,e))continue;let a=n.object;if(a!=null&&!(typeof a=="string"&&a.length===0)&&!(Array.isArray(a)&&a.length===0))return!0}return!1}function Sn(t,e){for(let n of t.statement){let r=Te(n);if(!(!r||!E(r,e))&&(n instanceof L||n instanceof U||n instanceof O||n instanceof j||n instanceof S))return n.object}}function Te(t){return t.predicate?.subject}function En(t){if(t===void 0)return" undef";if(t===null)return" null";if(typeof t=="string")return`s:${t}`;if(typeof t=="number")return`n:${t}`;if(typeof t=="boolean")return`b:${t}`;if(t instanceof b){let e=t.subject;return`r:${e.publisher}/${e.package_}/${e.name}`}if(t instanceof K){let e=t.name??"";return`k:${t.namespace??""}/${e}`}if(typeof t=="object"&&t!==null&&typeof t.name=="string"&&typeof t.publisher=="string"){let e=t;return`u:${e.publisher}/${e.package_}/${e.name}`}return`o:${JSON.stringify(t)}`}function vn(t){return t==null?"":typeof t=="string"?t:typeof t=="number"||typeof t=="boolean"?String(t):t instanceof b?t.subject.name:t instanceof K?t.name??"":typeof t=="object"&&t!==null&&typeof t.name=="string"?t.name:""}function Ae(t,e,n){if(typeof t!="object"||t===null||t.kind!=="Document")throw new W(`Transformation "${e}" rule did not yield a Document for ${n}. Got: ${dt(t)}`)}function De(t,e,n){if(typeof t=="string")return t;if(Array.isArray(t)&&t.every($n))return t.map(r=>String(r)).join("");throw new W(`Transformation "${e}" artifactName did not yield a string for ${n}. Got: ${dt(t)}`)}function $n(t){return typeof t=="string"||typeof t=="number"||typeof t=="boolean"}function dt(t){if(t===void 0)return"undefined";if(t===null)return"null";if(Array.isArray(t))return`array(${t.length})`;if(typeof t=="object"){let e=t.kind;return e?`object(kind=${e})`:"object"}return typeof t}function Ke(t,e){if(!t&&!e)return;let n={metadataRenames:e?.metadataRenames??t?.metadataRenames??new Map},r=e?.metadataKeys??t?.metadataKeys;r!==void 0&&(n.metadataKeys=r);let a=e?.trailingNewline??t?.trailingNewline;a!==void 0&&(n.trailingNewline=a);let i=e?.omitWrapper??t?.omitWrapper;return i!==void 0&&(n.omitWrapper=i),n}var R=class extends Error{constructor(n,r){super(n);this.cause=r;this.name="RenderError"}cause},lt={publisher:"kanonak.org",package_:"derivation",name:"default"},Be=class{constructor(e,n=new Le,r=new Ce){this.repository=e;this.parser=n;this.objectParser=r}repository;parser;objectParser;runner=new ge;cachedCatalog=void 0;invalidate(){this.cachedCatalog=void 0}async renderViaLook(e){let n=await this.getCatalog(),r=M(n,e.resource);if(!(r instanceof w))throw new R(`Resource not found: ${P(e.resource)}`);let a=new ye(n),i;if(e.format.name==="html")i=a.renderHtml(r);else if(e.format.name==="stylesheet")i=a.renderStylesheet(r);else throw new R(`LookRenderer does not support format ${P(e.format)} \u2014 only formats.html and formats.stylesheet are implemented in v0.1.`);return{content:i,format:e.format,filename:r.name}}async findDerivation(e){let n=await this.getCatalog(),r=M(n,e.resource);if(!(r instanceof w))return;let a=e.variant??lt;return Oe(r,e.format,a,n)}async render(e){if(e.format.name==="html"||e.format.name==="stylesheet"){let a=await this.getCatalog(),i=M(a,e.resource);if(i instanceof w){let c=new ye(a).findCascadedLook(i);if(c&&!jn(c.sourceClass)){let l=await this.findDerivation(e);if(!l||Vn(l))return this.renderViaLook({resource:e.resource,format:e.format})}}}let n=await this.findDerivation(e);if(!n)throw new R(`No derivation found for ${P(e.resource)} \u2192 format ${P(e.format)}`+(e.variant?` variant ${P(e.variant)}`:""));let r={transformation:{publisher:n.transformation.publisher,package_:n.transformation.package_,name:n.transformation.name},input:e.resource,format:e.format};return e.omitWrapper!==void 0&&(r.omitWrapper=e.omitWrapper),this.runTransformation(r)}async runTransformation(e){let n=await this.getCatalog(),r=M(n,e.transformation);if(!(r instanceof w))throw new R(`Transformation not found: ${P(e.transformation)}`);let a=M(n,e.input);if(!(a instanceof w))throw new R(`Input resource not found: ${P(e.input)}`);let i=fe(r,n),u=An(i.outputs,e.format);if(!u)throw new R(`Transformation ${P(e.transformation)} declares outputs [${[...i.outputs].join(", ")}], none of which corresponds to format ${P(e.format)}`);let c;try{c=await this.runner.run({transformation:r,instances:[a],allKanonaks:n,repository:this.repository,parser:this.parser,objectParser:this.objectParser,outputFormat:u,...e.omitWrapper!==void 0?{runtimeOverride:{metadataRenames:new Map,omitWrapper:e.omitWrapper}}:{}})}catch(l){throw new R(`Transformation execution failed: ${l.message}`,l)}if(c.length===0)throw new R("Transformation produced no artifacts");return{content:c[0].content,format:e.format,filename:c[0].fileName}}async getCatalog(){return this.cachedCatalog||(this.cachedCatalog=await this.objectParser.parseKanonaks(this.repository)),this.cachedCatalog}};function P(t){return`${t.publisher}/${t.package_}/${t.name}`}function Vn(t){return typeof t.source=="string"?!1:t.source.publisher==="kanonak.org"&&t.source.package_==="core-rdf"&&t.source.name==="Resource"}function jn(t){return t.publisher==="kanonak.org"&&t.package_==="core-rdf"&&t.name==="Resource"}function An(t,e){let n=e.name;if(t.has(n))return n;for(let r of t)if(r.startsWith(n+"-")||r===n)return r}export{te as CssBackend,lt as DEFAULT_VARIANT,k as DOCAST,yt as DOCAST_PKG,gt as DOCAST_PUB,ae as DynamoDbBackend,pe as ExpressionEngineV3,I as ExpressionEvalErrorV3,x as HtmlBackend,Q as JsonBackend,Y as MarkdownFrontmatterBackend,ie as ReferenceResolver,R as RenderError,hn as SUPPORTED_FORMATS_V3,ee as SvgBackend,o as TX_V3,Jt as TX_V3_PKG,Gt as TX_V3_PUB,Zn as TX_V3_VERSION_MAJOR,Z as TomlBackend,Be as TransformationEngine,g as TransformationLoadErrorV3,W as TransformationRunnerErrorV3,ge as TransformationRunnerV3,ne as YamlBackend,fe as compileTransformationV3,X as renderMarkdownToHtml};
91
+ `),a}};function ze(t,e){let n=new Map;for(let i of t.entries)n.set(i.key,i);let r=e?.metadataKeys??t.entries.map(i=>i.key),a={};for(let i of r){let u=n.get(i);if(!u)continue;let c=e?.metadataRenames.get(i)??i;a[c]=Ge(u.value,u.escapeHint)}return{M:a}}function Ge(t,e){switch(t.kind){case"StructuredMap":return ze(t);case"StructuredList":return{L:t.items.map(n=>Ge(n,void 0))};case"StringScalar":return zt(t.stringValue,e??t.escapeHint);case"IntegerScalar":return Gt(t.integerValue,e??t.escapeHint)}}function zt(t,e){if(e&&re(e,k.ESC_DYNAMODB_BOOL)){if(t==="true")return{BOOL:!0};if(t==="false")return{BOOL:!1};throw new Error(`dynamodb-json backend: a StringScalar hinted esc-dynamodb-bool must have the value "true" or "false"; got ${JSON.stringify(t)}.`)}if(e&&re(e,k.ESC_DYNAMODB_NULL))return{NULL:!0};if(e&&re(e,k.ESC_DYNAMODB_NUMBER)){if(t.trim()===""||Number.isNaN(Number(t)))throw new Error(`dynamodb-json backend: a StringScalar hinted esc-dynamodb-number must hold a numeric literal; got ${JSON.stringify(t)}.`);return{N:t}}return{S:t}}function Gt(t,e){if(e&&re(e,k.ESC_DYNAMODB_BOOL))throw new Error(`dynamodb-json backend: esc-dynamodb-bool cannot apply to an IntegerScalar (value ${t}). Use a StringScalar "true"/"false".`);if(e&&re(e,k.ESC_DYNAMODB_NULL))throw new Error(`dynamodb-json backend: esc-dynamodb-null cannot apply to an IntegerScalar (value ${t}). Use a StringScalar hinted esc-dynamodb-null.`);return{N:String(t)}}var ie=class{constructor(e,n,r){this.repository=e;this.parser=n;this.objectParser=r}repository;parser;objectParser;cache=new Map;async resolveSubject(e,n){let r=M(n,e);if(r)return r;let a=e.version,i=a&&typeof a.major=="number"?`@${a.major}.${a.minor}.${a.patch}`:"",u=`${e.publisher}/${e.package_}${i}`,c=this.cache.get(u);if(!c){let p=await this.repository.getDocumentsByNamespaceAsync(e.publisher,e.package_);if(p.length===0)return;let y=a&&typeof a.major=="number"?p.find(D=>{let $=D.metadata?.namespace_?.version;return $&&$.major===a.major&&$.minor===a.minor&&$.patch===a.patch})??p[0]:p[0],h=new Oe(y,this.repository);c=await this.objectParser.parseKanonaks(h),this.cache.set(u,c)}let l=M(c,e);if(l)return l;for(let p of c)if(p instanceof w&&p.name===e.name)return p}};var Jt="kanonak.org",Xt="transformations",Qn=3,s=t=>({publisher:Jt,package_:Xt,name:t}),o={Transformation:s("Transformation"),InstanceTransformation:s("InstanceTransformation"),SetTransformation:s("SetTransformation"),inputPattern:s("inputPattern"),rule:s("rule"),artifactName:s("artifactName"),outputs:s("outputs"),formatOverrides:s("formatOverrides"),partitionBy:s("partitionBy"),InputPattern:s("InputPattern"),matchesClass:s("matchesClass"),requires:s("requires"),sortBy:s("sortBy"),SortKey:s("SortKey"),byProperty:s("byProperty"),order:s("order"),SortOrder:s("SortOrder"),ascending:s("ascending"),descending:s("descending"),OutputFormat:s("OutputFormat"),backendUri:s("backendUri"),FormatOverride:s("FormatOverride"),formatTarget:s("formatTarget"),metadataKeys:s("metadataKeys"),metadataRenames:s("metadataRenames"),trailingNewline:s("trailingNewline"),omitWrapper:s("omitWrapper"),RenameEntry:s("RenameEntry"),fromKey:s("fromKey"),toKey:s("toKey"),FMT_MARKDOWN_FRONTMATTER:s("markdown-with-frontmatter"),FMT_PLAIN_MARKDOWN:s("plain-markdown"),FMT_TOML:s("toml"),FMT_JSON:s("json"),FMT_HTML:s("html"),FMT_SVG:s("svg"),Expression:s("Expression"),ListSourcedExpression:s("ListSourcedExpression"),ListAggregate:s("ListAggregate"),IteratingExpression:s("IteratingExpression"),BuildAstNode:s("BuildAstNode"),astClass:s("astClass"),set:s("set"),AstFieldBinding:s("AstFieldBinding"),field:s("field"),bindValue:s("bindValue"),When:s("When"),condition:s("condition"),thenBuild:s("thenBuild"),elseBuild:s("elseBuild"),Concat:s("Concat"),parts:s("parts"),Fallback:s("Fallback"),primary:s("primary"),alternate:s("alternate"),StringLiteral:s("StringLiteral"),stringLiteral:s("stringLiteral"),IntegerLiteral:s("IntegerLiteral"),integerLiteral:s("integerLiteral"),DecimalLiteral:s("DecimalLiteral"),decimalLiteral:s("decimalLiteral"),BooleanLiteral:s("BooleanLiteral"),booleanLiteral:s("booleanLiteral"),VarRef:s("VarRef"),varName:s("varName"),PropertyRead:s("PropertyRead"),readSource:s("readSource"),readProp:s("readProp"),Traverse:s("Traverse"),traverseSource:s("traverseSource"),through:s("through"),step:s("step"),UriName:s("UriName"),uriNameOf:s("uriNameOf"),UriPublisher:s("UriPublisher"),uriPublisherOf:s("uriPublisherOf"),UriPackage:s("UriPackage"),uriPackageOf:s("uriPackageOf"),UriVersion:s("UriVersion"),uriVersionOf:s("uriVersionOf"),SubjectUri:s("SubjectUri"),subjectOf:s("subjectOf"),UriLiteral:s("UriLiteral"),refTo:s("refTo"),DisplayLabel:s("DisplayLabel"),labelTarget:s("labelTarget"),labelSource:s("labelSource"),ResolveRef:s("ResolveRef"),resolveSource:s("resolveSource"),Normalize:s("Normalize"),normSource:s("normSource"),normKind:s("normKind"),NormalizeKind:s("NormalizeKind"),NORM_TRIM_END:s("trim-end"),IsSet:s("IsSet"),checkExpr:s("checkExpr"),ExpressionFragment:s("ExpressionFragment"),body:s("body"),CallFragment:s("CallFragment"),fragmentRef:s("fragmentRef"),source:s("source"),Join:s("Join"),separator:s("separator"),Count:s("Count"),Sum:s("Sum"),Min:s("Min"),Max:s("Max"),Average:s("Average"),loopVar:s("loopVar"),ForEach:s("ForEach"),emit:s("emit"),ListMap:s("ListMap"),mapBody:s("mapBody"),Filter:s("Filter"),predicate:s("predicate"),PartitionBy:s("PartitionBy"),partitionKey:s("partitionKey"),DistinctBy:s("DistinctBy"),distinctKey:s("distinctKey"),Partition:s("Partition"),key:s("key"),members:s("members"),AllStatements:s("AllStatements"),statementsOf:s("statementsOf"),StatementPredicate:s("StatementPredicate"),predicateOf:s("predicateOf"),StatementValue:s("StatementValue"),valueOf:s("valueOf"),DateFormat:s("DateFormat"),dateSource:s("dateSource"),dateFormat:s("dateFormat"),BinaryArithmetic:s("BinaryArithmetic"),arithLeft:s("arithLeft"),arithRight:s("arithRight"),Add:s("Add"),Subtract:s("Subtract"),Multiply:s("Multiply"),Divide:s("Divide"),Reverse:s("Reverse"),WindowedMap:s("WindowedMap"),windowSize:s("windowSize"),windowVar:s("windowVar"),windowBody:s("windowBody"),PairwiseMap:s("PairwiseMap"),firstVar:s("firstVar"),secondVar:s("secondVar"),pairBody:s("pairBody"),Scan:s("Scan"),initialState:s("initialState"),stateVar:s("stateVar"),elementVar:s("elementVar"),accumulate:s("accumulate"),ListItemAt:s("ListItemAt"),itemIndex:s("itemIndex"),BinaryComparison:s("BinaryComparison"),compareLeft:s("compareLeft"),compareRight:s("compareRight"),Equals:s("Equals"),GreaterThan:s("GreaterThan"),LessThan:s("LessThan"),GreaterThanOrEqual:s("GreaterThanOrEqual"),LessThanOrEqual:s("LessThanOrEqual"),Not:s("Not"),operand:s("operand"),BooleanLogic:s("BooleanLogic"),operands:s("operands"),And:s("And"),Or:s("Or"),Contains:s("Contains"),haystack:s("haystack"),needle:s("needle"),UnaryNumericOp:s("UnaryNumericOp"),value:s("value"),Abs:s("Abs"),Negate:s("Negate"),KindPredicate:s("KindPredicate"),IsReference:s("IsReference"),IsEmbedded:s("IsEmbedded"),IsList:s("IsList"),kindCheck:s("kindCheck"),IsString:s("IsString"),IsNumber:s("IsNumber"),IsBoolean:s("IsBoolean"),StatementObject:s("StatementObject"),statementSource:s("statementSource"),Let:s("Let"),letName:s("letName"),letValue:s("letValue"),letBody:s("letBody"),GetStatementByName:s("GetStatementByName"),inSubject:s("inSubject"),byName:s("byName"),RenderMarkdown:s("RenderMarkdown"),renderSource:s("renderSource"),renderProp:s("renderProp"),renderFormat:s("renderFormat"),RenderFormat:s("RenderFormat"),RENDER_HTML:s("render-html"),RENDER_MARKDOWN:s("render-markdown")};var g=class extends Error{constructor(n,r){super(`${n} (at ${r})`);this.path=r}path};function fe(t,e){let n=t.name,r=sn(e),a={catalog:e,depth:0};if(f(t,o.InstanceTransformation))return Yt(t,n,a,r);if(f(t,o.SetTransformation))return Zt(t,n,a,r);throw new g("Subject is not a recognized v3 transformation type \u2014 expected InstanceTransformation or SetTransformation",n)}function Yt(t,e,n,r){return{kind:"instance",name:t.name,inputPattern:xe(t,e),rule:le(t,o.rule,`${e}.rule`,n),artifactName:le(t,o.artifactName,`${e}.artifactName`,n),outputs:et(t,`${e}.outputs`),overrides:tt(t,`${e}.formatOverrides`,n),fragments:r}}function Zt(t,e,n,r){let a=_(t,o.partitionBy);return{kind:"set",name:t.name,inputPattern:xe(t,e),rule:le(t,o.rule,`${e}.rule`,n),artifactName:le(t,o.artifactName,`${e}.artifactName`,n),outputs:et(t,`${e}.outputs`),overrides:tt(t,`${e}.formatOverrides`,n),partitionBy:a,fragments:r}}function xe(t,e){let n=oe(t,o.inputPattern);if(!n)throw new g("inputPattern is required",e);return Qt(n,`${e}.inputPattern`)}function Qt(t,e){let n=_(t,o.matchesClass);if(!n)throw new g("matchesClass is required",e);let r=[];for(let u of A(t,o.requires))if(u instanceof j)r.push(ve(u.object.subject));else if(u instanceof S)for(let c of u.object)c instanceof b&&r.push(ve(c.subject));let a=[],i=0;for(let u of A(t,o.sortBy))if(u instanceof S)for(let c of u.object)c instanceof C&&a.push(Je(c,`${e}.sortBy[${i++}]`));else u instanceof T&&a.push(Je(u.object,`${e}.sortBy[${i++}]`));return{matchesClass:n,requires:r,sortBy:a}}function Je(t,e){let n=_(t,o.byProperty);if(!n)throw new g("SortKey.byProperty is required",e);let r=_(t,o.order);if(!r)throw new g("SortKey.order is required",e);if(E(r,o.ascending))return{byProperty:n,order:"ascending"};if(E(r,o.descending))return{byProperty:n,order:"descending"};throw new g(`SortKey.order must reference tx.ascending or tx.descending; got ${r.publisher}/${r.package_}/${r.name}`,e)}function le(t,e,n,r){let a=oe(t,e);if(!a)throw new g("expression is required",n);return G(a,n,r)}function G(t,e,n){if(f(t,o.StringLiteral))return{kind:"string-literal",value:V(t,o.stringLiteral,e)};if(f(t,o.IntegerLiteral))return{kind:"integer-literal",value:Qe(t,o.integerLiteral,e)};if(f(t,o.DecimalLiteral))return{kind:"decimal-literal",value:Qe(t,o.decimalLiteral,e)};if(f(t,o.BooleanLiteral))return{kind:"boolean-literal",value:dn(t,o.booleanLiteral,e)};if(f(t,o.VarRef))return{kind:"var-ref",varName:V(t,o.varName,e)};if(f(t,o.PropertyRead))return{kind:"property-read",source:d(t,o.readSource,`${e}.readSource`,n),readProp:q(t,o.readProp,e,"readProp")};if(f(t,o.Traverse))return{kind:"traverse",source:d(t,o.traverseSource,`${e}.traverseSource`,n),through:q(t,o.through,e,"through"),step:d(t,o.step,`${e}.step`,n)};if(f(t,o.BuildAstNode))return{kind:"build-ast-node",astClass:q(t,o.astClass,e,"astClass"),set:en(t,`${e}.set`,n)};if(f(t,o.When))return{kind:"when",condition:d(t,o.condition,`${e}.condition`,n),thenBuild:d(t,o.thenBuild,`${e}.thenBuild`,n),elseBuild:xt(t,o.elseBuild,`${e}.elseBuild`,n)};if(f(t,o.Concat))return{kind:"concat",parts:Se(t,o.parts,`${e}.parts`,n)};if(f(t,o.Fallback))return{kind:"fallback",primary:d(t,o.primary,`${e}.primary`,n),alternate:d(t,o.alternate,`${e}.alternate`,n)};if(f(t,o.UriName))return{kind:"uri-name",source:d(t,o.uriNameOf,`${e}.uriNameOf`,n)};if(f(t,o.UriPublisher))return{kind:"uri-publisher",source:d(t,o.uriPublisherOf,`${e}.uriPublisherOf`,n)};if(f(t,o.UriPackage))return{kind:"uri-package",source:d(t,o.uriPackageOf,`${e}.uriPackageOf`,n)};if(f(t,o.UriVersion))return{kind:"uri-version",source:d(t,o.uriVersionOf,`${e}.uriVersionOf`,n)};if(f(t,o.SubjectUri))return{kind:"subject-uri",source:d(t,o.subjectOf,`${e}.subjectOf`,n)};if(f(t,o.UriLiteral))return{kind:"uri-literal",refTo:q(t,o.refTo,e,"refTo")};if(f(t,o.DisplayLabel))return{kind:"display-label",labelTarget:q(t,o.labelTarget,e,"labelTarget"),labelSource:q(t,o.labelSource,e,"labelSource")};if(f(t,o.ResolveRef))return{kind:"resolve-ref",source:d(t,o.resolveSource,`${e}.resolveSource`,n)};if(f(t,o.Normalize))return{kind:"normalize",source:d(t,o.normSource,`${e}.normSource`,n),normKind:tn(t,e)};if(f(t,o.RenderMarkdown))return{kind:"render-markdown",source:d(t,o.renderSource,`${e}.renderSource`,n),readProp:q(t,o.renderProp,e,"renderProp"),format:nn(t,e)};if(f(t,o.IsSet))return{kind:"is-set",check:d(t,o.checkExpr,`${e}.checkExpr`,n)};if(f(t,o.CallFragment))return an(t,e,n);if(f(t,o.Join))return{kind:"join",source:d(t,o.source,`${e}.source`,n),separator:V(t,o.separator,e)};if(f(t,o.Count))return{kind:"count",source:d(t,o.source,`${e}.source`,n)};if(f(t,o.Sum))return{kind:"sum",source:d(t,o.source,`${e}.source`,n)};if(f(t,o.Min))return{kind:"min",source:d(t,o.source,`${e}.source`,n)};if(f(t,o.Max))return{kind:"max",source:d(t,o.source,`${e}.source`,n)};if(f(t,o.Average))return{kind:"average",source:d(t,o.source,`${e}.source`,n)};if(f(t,o.ForEach))return{kind:"for-each",source:d(t,o.source,`${e}.source`,n),loopVar:V(t,o.loopVar,e),emit:d(t,o.emit,`${e}.emit`,n)};if(f(t,o.ListMap))return{kind:"list-map",source:d(t,o.source,`${e}.source`,n),loopVar:V(t,o.loopVar,e),mapBody:d(t,o.mapBody,`${e}.mapBody`,n)};if(f(t,o.Filter))return{kind:"filter",source:d(t,o.source,`${e}.source`,n),loopVar:V(t,o.loopVar,e),predicate:d(t,o.predicate,`${e}.predicate`,n)};if(f(t,o.PartitionBy))return{kind:"partition-by",source:d(t,o.source,`${e}.source`,n),loopVar:V(t,o.loopVar,e),partitionKey:d(t,o.partitionKey,`${e}.partitionKey`,n)};if(f(t,o.DistinctBy))return{kind:"distinct-by",source:d(t,o.source,`${e}.source`,n),loopVar:V(t,o.loopVar,e),distinctKey:d(t,o.distinctKey,`${e}.distinctKey`,n)};if(f(t,o.AllStatements))return{kind:"all-statements",source:d(t,o.statementsOf,`${e}.statementsOf`,n)};if(f(t,o.StatementPredicate))return{kind:"statement-predicate",source:d(t,o.predicateOf,`${e}.predicateOf`,n)};if(f(t,o.StatementValue))return{kind:"statement-value",source:d(t,o.valueOf,`${e}.valueOf`,n)};if(f(t,o.DateFormat))return{kind:"date-format",source:d(t,o.dateSource,`${e}.dateSource`,n),format:rn(t,e)};if(f(t,o.Add))return{kind:"add",left:d(t,o.arithLeft,`${e}.arithLeft`,n),right:d(t,o.arithRight,`${e}.arithRight`,n)};if(f(t,o.Subtract))return{kind:"subtract",left:d(t,o.arithLeft,`${e}.arithLeft`,n),right:d(t,o.arithRight,`${e}.arithRight`,n)};if(f(t,o.Multiply))return{kind:"multiply",left:d(t,o.arithLeft,`${e}.arithLeft`,n),right:d(t,o.arithRight,`${e}.arithRight`,n)};if(f(t,o.Divide))return{kind:"divide",left:d(t,o.arithLeft,`${e}.arithLeft`,n),right:d(t,o.arithRight,`${e}.arithRight`,n)};if(f(t,o.Reverse))return{kind:"reverse",source:d(t,o.source,`${e}.source`,n)};if(f(t,o.WindowedMap)){let r=nt(t,o.windowSize);if(r===void 0||!Number.isInteger(r)||r<1)throw new g("windowSize must be a positive integer",`${e}.windowSize`);return{kind:"windowed-map",source:d(t,o.source,`${e}.source`,n),windowSize:r,windowVar:V(t,o.windowVar,e),windowBody:d(t,o.windowBody,`${e}.windowBody`,n)}}if(f(t,o.PairwiseMap))return{kind:"pairwise-map",source:d(t,o.source,`${e}.source`,n),firstVar:V(t,o.firstVar,e),secondVar:V(t,o.secondVar,e),pairBody:d(t,o.pairBody,`${e}.pairBody`,n)};if(f(t,o.Scan))return{kind:"scan",source:d(t,o.source,`${e}.source`,n),initialState:d(t,o.initialState,`${e}.initialState`,n),stateVar:V(t,o.stateVar,e),elementVar:V(t,o.elementVar,e),accumulate:d(t,o.accumulate,`${e}.accumulate`,n)};if(f(t,o.ListItemAt))return{kind:"list-item-at",source:d(t,o.source,`${e}.source`,n),itemIndex:d(t,o.itemIndex,`${e}.itemIndex`,n)};if(f(t,o.Equals))return{kind:"equals",left:d(t,o.compareLeft,`${e}.compareLeft`,n),right:d(t,o.compareRight,`${e}.compareRight`,n)};if(f(t,o.GreaterThan))return{kind:"greater-than",left:d(t,o.compareLeft,`${e}.compareLeft`,n),right:d(t,o.compareRight,`${e}.compareRight`,n)};if(f(t,o.LessThan))return{kind:"less-than",left:d(t,o.compareLeft,`${e}.compareLeft`,n),right:d(t,o.compareRight,`${e}.compareRight`,n)};if(f(t,o.GreaterThanOrEqual))return{kind:"greater-than-or-equal",left:d(t,o.compareLeft,`${e}.compareLeft`,n),right:d(t,o.compareRight,`${e}.compareRight`,n)};if(f(t,o.LessThanOrEqual))return{kind:"less-than-or-equal",left:d(t,o.compareLeft,`${e}.compareLeft`,n),right:d(t,o.compareRight,`${e}.compareRight`,n)};if(f(t,o.Not))return{kind:"not",operand:d(t,o.operand,`${e}.operand`,n)};if(f(t,o.And))return{kind:"and",operands:Se(t,o.operands,`${e}.operands`,n)};if(f(t,o.Or))return{kind:"or",operands:Se(t,o.operands,`${e}.operands`,n)};if(f(t,o.Contains))return{kind:"contains",haystack:d(t,o.haystack,`${e}.haystack`,n),needle:d(t,o.needle,`${e}.needle`,n)};if(f(t,o.Abs))return{kind:"abs",value:d(t,o.value,`${e}.value`,n)};if(f(t,o.Negate))return{kind:"negate",value:d(t,o.value,`${e}.value`,n)};if(f(t,o.IsReference))return{kind:"is-reference",check:d(t,o.kindCheck,`${e}.kindCheck`,n)};if(f(t,o.IsEmbedded))return{kind:"is-embedded",check:d(t,o.kindCheck,`${e}.kindCheck`,n)};if(f(t,o.IsList))return{kind:"is-list",check:d(t,o.kindCheck,`${e}.kindCheck`,n)};if(f(t,o.IsString))return{kind:"is-string",check:d(t,o.kindCheck,`${e}.kindCheck`,n)};if(f(t,o.IsNumber))return{kind:"is-number",check:d(t,o.kindCheck,`${e}.kindCheck`,n)};if(f(t,o.IsBoolean))return{kind:"is-boolean",check:d(t,o.kindCheck,`${e}.kindCheck`,n)};if(f(t,o.StatementObject))return{kind:"statement-object",source:d(t,o.statementSource,`${e}.statementSource`,n)};if(f(t,o.Let))return{kind:"let",bindName:V(t,o.letName,e),bindValue:d(t,o.letValue,`${e}.letValue`,n),body:d(t,o.letBody,`${e}.letBody`,n)};if(f(t,o.GetStatementByName))return{kind:"get-statement-by-name",inSubject:d(t,o.inSubject,`${e}.inSubject`,n),byName:d(t,o.byName,`${e}.byName`,n)};throw new g("Expression is not of a recognized v3 type \u2014 embedded has no matching subclass of tx.Expression",e)}function d(t,e,n,r){let a=oe(t,e);if(!a)throw new g("child expression is required",n);return G(a,n,r)}function xt(t,e,n,r){let a=oe(t,e);if(a)return G(a,n,r)}function Se(t,e,n,r){let a=[],i=0;for(let u of A(t,e))if(u instanceof S)for(let c of u.object)c instanceof C&&a.push(G(c,`${n}[${i++}]`,r));else u instanceof T&&a.push(G(u.object,`${n}[${i++}]`,r));return a}function en(t,e,n){let r=[],a=0;for(let i of A(t,o.set))if(i instanceof S)for(let u of i.object)u instanceof C&&r.push(Xe(u,`${e}[${a++}]`,n));else i instanceof T&&r.push(Xe(i.object,`${e}[${a++}]`,n));return r}function Xe(t,e,n){return{field:q(t,o.field,e,"field"),value:d(t,o.bindValue,`${e}.bindValue`,n)}}function tn(t,e){let n=_(t,o.normKind);if(!n)throw new g("normKind is required",e);if(E(n,o.NORM_TRIM_END))return"trim-end";throw new g(`Unknown NormalizeKind: ${n.publisher}/${n.package_}/${n.name}`,e)}function nn(t,e){let n=_(t,o.renderFormat);if(!n)throw new g("renderFormat is required",e);if(E(n,o.RENDER_HTML))return"html";if(E(n,o.RENDER_MARKDOWN))return"markdown";throw new g(`Unknown RenderFormat: ${n.publisher}/${n.package_}/${n.name}`,e)}var Ye=new Set(["iso-date","iso-datetime","short-date","long-date","year","month-year"]);function rn(t,e){let n=z(t,o.dateFormat);if(!n)throw new g("dateFormat is required",e);if(!Ye.has(n))throw new g(`Unknown dateFormat "${n}"; supported: ${[...Ye].join(", ")}`,e);return n}function an(t,e,n){let r=_(t,o.fragmentRef);if(!r)throw new g("fragmentRef is required",e);if(!un(n.catalog,r))throw new g(`ExpressionFragment not found: ${r.publisher}/${r.package_}/${r.name}`,e);return{kind:"call-fragment",fragmentKey:on(r)}}function on(t){return`${t.publisher}/${t.package_}/${t.name}`}function sn(t){let e=new Map,n=[];for(let r of t){if(!(r instanceof w)||!f(r,o.ExpressionFragment))continue;let a=oe(r,o.body);if(!a)continue;let i=(r.namespace||"").split("@")[0]||"",u=i.indexOf("/");if(u<0)continue;let c=i.substring(0,u),l=i.substring(u+1),p=`${c}/${l}/${r.name}`;n.push({key:p,subject:r,bodyEmb:a,pubPkgName:`${i}/${r.name}`})}for(let r of n){let a=G(r.bodyEmb,`fragment(${r.pubPkgName})`,{catalog:t,depth:0});e.set(r.key,a)}return e}function un(t,e){for(let n of t)if(!(!(n instanceof w)||n.name!==e.name||!(n.namespace||"").startsWith(`${e.publisher}/${e.package_}@`))&&f(n,o.ExpressionFragment))return n}function et(t,e){let n=new Set;for(let r of A(t,o.outputs))if(r instanceof j)n.add(r.object.subject.name);else if(r instanceof S)for(let a of r.object)a instanceof b&&n.add(a.subject.name);if(n.size===0)throw new g("outputs is required (at least one OutputFormat)",e);return n}function tt(t,e,n){let r=new Map,a=0;for(let i of A(t,o.formatOverrides))if(i instanceof S){for(let u of i.object)if(u instanceof C){let[c,l]=Ze(u,`${e}[${a++}]`);r.set(c,l)}}else if(i instanceof T){let[u,c]=Ze(i.object,`${e}[${a++}]`);r.set(u,c)}return r}function Ze(t,e){let n=_(t,o.formatTarget);if(!n)throw new g("formatTarget is required",e);let r=[];for(let c of A(t,o.metadataKeys))if(c instanceof L)r.push(c.object);else if(c instanceof S)for(let l of c.object){let p=l.value;typeof p=="string"&&r.push(p)}let a=new Map;for(let c of A(t,o.metadataRenames))if(c instanceof S){for(let l of c.object)if(l instanceof C){let p=z(l,o.fromKey),y=z(l,o.toKey);p&&y&&a.set(p,y)}}else if(c instanceof T){let l=c.object,p=z(l,o.fromKey),y=z(l,o.toKey);p&&y&&a.set(p,y)}let i=Ee(t,o.trailingNewline),u=Ee(t,o.omitWrapper);return[n.name,{metadataKeys:r.length>0?r:void 0,metadataRenames:a,trailingNewline:i,omitWrapper:u}]}function cn(t){return t.predicate?.subject}function A(t,e){let n=[];for(let r of t.statement){let a=cn(r);a&&E(a,e)&&n.push(r)}return n}function oe(t,e){for(let n of A(t,e))if(n instanceof T)return n.object}function _(t,e){for(let n of A(t,e))if(n instanceof j)return ve(n.object.subject)}function z(t,e){for(let n of A(t,e))if(n instanceof L)return n.object}function nt(t,e){for(let n of A(t,e))if(n instanceof U)return n.object}function Ee(t,e){for(let n of A(t,e))if(n instanceof O)return n.object}function V(t,e,n){let r=z(t,e);if(r===void 0)throw new g(`${e.name} (string) is required`,n);return r}function Qe(t,e,n){let r=nt(t,e);if(r===void 0)throw new g(`${e.name} (number) is required`,n);return r}function dn(t,e,n){let r=Ee(t,e);if(r===void 0)throw new g(`${e.name} (boolean) is required`,n);return r}function q(t,e,n,r){let a=_(t,e);if(!a)throw new g(`${r} (URI reference) is required`,n);return a}function ve(t){return{publisher:t.publisher,package_:t.package_,name:t.name}}var ln={publisher:"kanonak.org",package_:"core-rdf",name:"label"},I=class extends Error{},pe=class{constructor(e,n,r=new Map){this.resolver=e;this.catalog=n;this.fragments=r}resolver;catalog;fragments;async evaluate(e,n){switch(e.kind){case"string-literal":return e.value;case"integer-literal":return e.value;case"decimal-literal":return e.value;case"boolean-literal":return e.value;case"uri-literal":return{...e.refTo};case"var-ref":{if(!n.has(e.varName))throw new I(`Unbound variable "${e.varName}"`);return n.get(e.varName)}case"concat":{let r=[];for(let a of e.parts){let i=await this.evaluate(a,n);if(i!=null)if(Array.isArray(i))for(let u of i)r.push(u);else r.push(i)}return r}case"fallback":{let r=await this.evaluate(e.primary,n);return rt(r)?r:this.evaluate(e.alternate,n)}case"when":return await this.evaluate(e.condition,n)===!0?this.evaluate(e.thenBuild,n):e.elseBuild?this.evaluate(e.elseBuild,n):void 0;case"is-set":{let r=await this.evaluate(e.check,n);return rt(r)}case"property-read":{let r=await this.evaluate(e.source,n);return me(r,e.readProp)}case"traverse":{let r=await this.evaluate(e.source,n);if(!(r instanceof K))return;let a=mn(r,e.through),i=[];for(let u of a){let c=await this.resolver.resolveSubject(u,this.catalog);if(!c)continue;let l=new Map(n);l.set("input",c);let p=await this.evaluate(e.step,l);p!=null&&i.push(se(p))}return i.join("")}case"uri-name":{let r=await this.evaluate(e.source,n);return J(r)?r.name:r instanceof b?r.subject.name:r instanceof w?r.name:r instanceof C?r.name??"":void 0}case"uri-publisher":{let r=await this.evaluate(e.source,n);return $e(r)?.publisher}case"uri-package":{let r=await this.evaluate(e.source,n);return $e(r)?.package_}case"uri-version":{let r=await this.evaluate(e.source,n);return $e(r)?.version}case"subject-uri":{let r=await this.evaluate(e.source,n);if(r instanceof w){let a=r.namespace??"",i=r.name??"";return!a||!i?void 0:`${a}/${i}`}if(r instanceof b){let a=r.subject,i=a.version;return i&&typeof i.major=="number"?`${a.publisher}/${a.package_}@${i.major}.${i.minor}.${i.patch}/${a.name}`:`${a.publisher}/${a.package_}/${a.name}`}return}case"display-label":{let r=await this.resolver.resolveSubject({...e.labelTarget},this.catalog);return r?me(r,e.labelSource):void 0}case"resolve-ref":{let r=await this.evaluate(e.source,n);return r instanceof w?r:r instanceof b?await this.resolver.resolveSubject(r.subject,this.catalog):J(r)?await this.resolver.resolveSubject(r,this.catalog):void 0}case"normalize":{let r=await this.evaluate(e.source,n),a=r==null?"":se(r);return e.normKind==="trim-end"?a.replace(/[\s\r\n]+$/u,""):a}case"render-markdown":{let r=await this.evaluate(e.source,n);if(!(r instanceof K))return;let a;for(let u of r.statement){let c=je(u);if(c&&E(c,e.readProp)){a=u;break}}if(!(a instanceof Ce)){let u=me(r,e.readProp);return u==null?void 0:se(u)}let i=await this.renderMarkdownLinks(a);return e.format==="html"?X(i):i}case"build-ast-node":{let r={kind:e.astClass.name};for(let a of e.set){let i=await this.evaluate(a.value,n);if(i==null||Array.isArray(i)&&i.length===0)continue;let u=a.field.name;gn.has(u)&&(Array.isArray(i)&&i.every(c=>at(c))?i=i.map(c=>String(c)).join(""):at(i)&&(i=String(i))),r[u]=i}return r}case"call-fragment":{let r=this.fragments.get(e.fragmentKey);if(!r)throw new I(`ExpressionFragment ${e.fragmentKey} not found in registry`);return this.evaluate(r,n)}case"join":return(await this.evaluateList(e.source,n)).map(a=>a==null?"":se(a)).join(e.separator);case"count":return(await this.evaluateList(e.source,n)).length;case"sum":{let r=await this.evaluateList(e.source,n),a=0;for(let i of r)a+=v(i,"Sum");return a}case"min":{let r=await this.evaluateList(e.source,n);if(r.length===0)throw new I("Min on an empty list is undefined; guard with IsSet");let a=v(r[0],"Min");for(let i=1;i<r.length;i++){let u=v(r[i],"Min");u<a&&(a=u)}return a}case"max":{let r=await this.evaluateList(e.source,n);if(r.length===0)throw new I("Max on an empty list is undefined; guard with IsSet");let a=v(r[0],"Max");for(let i=1;i<r.length;i++){let u=v(r[i],"Max");u>a&&(a=u)}return a}case"average":{let r=await this.evaluateList(e.source,n);if(r.length===0)throw new I("Average on an empty list is undefined; guard with IsSet");let a=0;for(let i of r)a+=v(i,"Average");return a/r.length}case"for-each":{let r=await this.evaluateList(e.source,n),a=[];for(let i of r){let u=new Map(n);u.set(e.loopVar,B(i));let c=await this.evaluate(e.emit,u);if(c!=null)if(Array.isArray(c))for(let l of c)a.push(l);else a.push(c)}return a}case"list-map":{let r=await this.evaluateList(e.source,n),a=[];for(let i of r){let u=new Map(n);u.set(e.loopVar,B(i)),a.push(await this.evaluate(e.mapBody,u))}return a}case"filter":{let r=await this.evaluateList(e.source,n),a=[];for(let i of r){let u=new Map(n);u.set(e.loopVar,B(i)),await this.evaluate(e.predicate,u)===!0&&a.push(i)}return a}case"partition-by":{let r=await this.evaluateList(e.source,n),a=new Map,i=[];for(let u of r){let c=new Map(n);c.set(e.loopVar,B(u));let l=await this.evaluate(e.partitionKey,c),p=st(l),y=a.get(p);y||(y={kind:"Partition",key:l,members:[]},a.set(p,y),i.push(p)),y.members.push(u)}return i.map(u=>a.get(u))}case"distinct-by":{let r=await this.evaluateList(e.source,n),a=new Set,i=[];for(let u of r){let c=new Map(n);c.set(e.loopVar,B(u));let l=await this.evaluate(e.distinctKey,c),p=st(l);a.has(p)||(a.add(p),i.push(u))}return i}case"all-statements":{let r=await this.evaluate(e.source,n);return r instanceof K?r.statement:[]}case"statement-predicate":{let r=await this.evaluate(e.source,n);if(Ve(r)){let a=r.predicate;if(a instanceof b)return a}return}case"statement-value":{let r=await this.evaluate(e.source,n);return Ve(r)?hn(r):void 0}case"date-format":{let r=await this.evaluate(e.source,n),a=r==null?"":se(r);return a?kn(a,e.format):""}case"add":{let r=v(await this.evaluate(e.left,n),"Add"),a=v(await this.evaluate(e.right,n),"Add");return r+a}case"subtract":{let r=v(await this.evaluate(e.left,n),"Subtract"),a=v(await this.evaluate(e.right,n),"Subtract");return r-a}case"multiply":{let r=v(await this.evaluate(e.left,n),"Multiply"),a=v(await this.evaluate(e.right,n),"Multiply");return r*a}case"divide":{let r=v(await this.evaluate(e.left,n),"Divide"),a=v(await this.evaluate(e.right,n),"Divide");if(a===0)throw new I("Divide by zero; guard with When");return r/a}case"reverse":{if(e.source.kind==="reverse")return this.evaluate(e.source.source,n);let r=await this.evaluateReverseIterator(e.source,n);return r!==void 0?r:[...await this.evaluateList(e.source,n)].reverse()}case"windowed-map":{let r=await this.evaluateList(e.source,n);if(r.length<e.windowSize)return[];let a=[];for(let i=0;i+e.windowSize<=r.length;i++){let u=r.slice(i,i+e.windowSize),c=new Map(n);c.set(e.windowVar,u);let l=await this.evaluate(e.windowBody,c);if(l!=null)if(Array.isArray(l))for(let p of l)a.push(p);else a.push(l)}return a}case"pairwise-map":{let r=await this.evaluateList(e.source,n);if(r.length<2)return[];let a=[];for(let i=0;i+1<r.length;i++){let u=new Map(n);u.set(e.firstVar,B(r[i])),u.set(e.secondVar,B(r[i+1]));let c=await this.evaluate(e.pairBody,u);if(c!=null)if(Array.isArray(c))for(let l of c)a.push(l);else a.push(c)}return a}case"scan":{let r=await this.evaluateList(e.source,n);if(r.length===0)return[];let a=await this.evaluate(e.initialState,n),i=[];for(let u of r){let c=new Map(n);c.set(e.stateVar,a),c.set(e.elementVar,B(u));let l=await this.evaluate(e.accumulate,c);i.push(l),a=l}return i}case"list-item-at":{let r=await this.evaluateList(e.source,n),a=await this.evaluate(e.itemIndex,n);return typeof a!="number"||!Number.isInteger(a)||a<0||a>=r.length?void 0:r[a]}case"equals":{let r=await this.evaluate(e.left,n),a=await this.evaluate(e.right,n);return it(r,a)}case"greater-than":{let r=await this.evaluate(e.left,n),a=await this.evaluate(e.right,n);return typeof r!="number"||typeof a!="number"?!1:r>a}case"less-than":{let r=await this.evaluate(e.left,n),a=await this.evaluate(e.right,n);return typeof r!="number"||typeof a!="number"?!1:r<a}case"greater-than-or-equal":{let r=await this.evaluate(e.left,n),a=await this.evaluate(e.right,n);return typeof r!="number"||typeof a!="number"?!1:r>=a}case"less-than-or-equal":{let r=await this.evaluate(e.left,n),a=await this.evaluate(e.right,n);return typeof r!="number"||typeof a!="number"?!1:r<=a}case"not":{let r=await this.evaluate(e.operand,n);return r===!0?!1:r===!1?!0:void 0}case"and":{for(let r of e.operands)if(await this.evaluate(r,n)!==!0)return!1;return!0}case"or":{for(let r of e.operands)if(await this.evaluate(r,n)===!0)return!0;return!1}case"contains":{let r=await this.evaluateList(e.haystack,n),a=await this.evaluate(e.needle,n);for(let i of r)if(it(i,a))return!0;return!1}case"abs":{let r=v(await this.evaluate(e.value,n),"Abs");return Math.abs(r)}case"negate":return-v(await this.evaluate(e.value,n),"Negate");case"is-reference":{let r=await this.evaluate(e.check,n);return r instanceof b||r instanceof w}case"is-embedded":return await this.evaluate(e.check,n)instanceof C;case"is-list":{let r=await this.evaluate(e.check,n);return Array.isArray(r)}case"is-string":return typeof await this.evaluate(e.check,n)=="string";case"is-number":return typeof await this.evaluate(e.check,n)=="number";case"is-boolean":return typeof await this.evaluate(e.check,n)=="boolean";case"statement-object":{let r=await this.evaluate(e.source,n);if(!Ve(r))return;let a=r;return a instanceof L||a instanceof U||a instanceof O||a instanceof j||a instanceof T||a instanceof S?a.object:void 0}case"let":{let r=await this.evaluate(e.bindValue,n),a=new Map(n);return a.set(e.bindName,r),this.evaluate(e.body,a)}case"get-statement-by-name":{let r=await this.evaluate(e.inSubject,n),a=await this.evaluate(e.byName,n);if(!(r instanceof K)||typeof a!="string")return;for(let i of r.statement)if(i.predicate?.subject?.name===a)return i;return}default:{let r=e;throw new I("Unknown expression kind")}}}async renderMarkdownLinks(e){let n=e.object,r="",a=0;for(let i of e.links){if(r+=n.slice(a,i.startOffset),i.target){let u=i.target.subject,c=i.displayText??await this.resolveLabel(u)??u.name;r+=`[${c}](${F(u)})`}else r+=i.displayText??i.reference;a=i.endOffset}return r+=n.slice(a),r}async resolveLabel(e){let n=await this.resolver.resolveSubject(e,this.catalog);if(!n)return;let r=me(n,ln);return typeof r=="string"?r:void 0}async evaluateList(e,n){let r=await this.evaluate(e,n);return r==null?[]:Array.isArray(r)?r:[r]}async evaluateReverseIterator(e,n){if(e.kind==="pairwise-map"){let r=await this.evaluateList(e.source,n);if(r.length<2)return[];let a=[];for(let i=r.length-1;i>=1;i--){let u=new Map(n);u.set(e.firstVar,B(r[i-1])),u.set(e.secondVar,B(r[i]));let c=await this.evaluate(e.pairBody,u);if(c!=null)if(Array.isArray(c))for(let l of c)a.push(l);else a.push(c)}return a}if(e.kind==="for-each"){let r=await this.evaluateList(e.source,n),a=[];for(let i=r.length-1;i>=0;i--){let u=new Map(n);u.set(e.loopVar,B(r[i]));let c=await this.evaluate(e.emit,u);if(c!=null)if(Array.isArray(c))for(let l of c)a.push(l);else a.push(c)}return a}if(e.kind==="list-map"){let r=await this.evaluateList(e.source,n),a=[];for(let i=r.length-1;i>=0;i--){let u=new Map(n);u.set(e.loopVar,B(r[i])),a.push(await this.evaluate(e.mapBody,u))}return a}if(e.kind==="windowed-map"){let r=await this.evaluateList(e.source,n);if(r.length<e.windowSize)return[];let a=[];for(let i=r.length-e.windowSize;i>=0;i--){let u=r.slice(i,i+e.windowSize),c=new Map(n);c.set(e.windowVar,u);let l=await this.evaluate(e.windowBody,c);if(l!=null)if(Array.isArray(l))for(let p of l)a.push(p);else a.push(l)}return a}}};function me(t,e){if(t instanceof K)return fn(t,e);if(pn(t))return E(e,o.key)?t.key:E(e,o.members)?t.members:void 0}function fn(t,e){for(let n of t.statement){let r=je(n);if(!(!r||!E(r,e))&&(n instanceof L||n instanceof U||n instanceof O||n instanceof j||n instanceof T||n instanceof S))return n.object}}function mn(t,e){let n=[];for(let r of t.statement){let a=je(r);if(!(!a||!E(a,e))){if(r instanceof j)n.push(r.object.subject);else if(r instanceof S)for(let i of r.object)i instanceof b&&n.push(i.subject)}}return n}function je(t){return t.predicate?.subject}function se(t){if(t==null)return"";if(typeof t=="string")return t;if(typeof t=="number"||typeof t=="boolean")return String(t);if(t instanceof K)return t.name??"";if(t instanceof b)return t.subject.name;if(J(t))return t.name;let e=t.value;return typeof e=="string"?e:typeof e=="number"||typeof e=="boolean"?String(e):""}function B(t){return t!==null&&typeof t=="object"&&!Array.isArray(t)&&!(t instanceof K)&&!(t instanceof b)&&!(t instanceof C)&&"value"in t?t.value:t}function rt(t){return t==null?!1:typeof t=="string"||Array.isArray(t)?t.length>0:typeof t=="boolean"?t===!0:!0}function J(t){return typeof t=="object"&&t!==null&&typeof t.publisher=="string"&&typeof t.package_=="string"&&typeof t.name=="string"}function pn(t){return typeof t=="object"&&t!==null&&t.kind==="Partition"&&Array.isArray(t.members)}function v(t,e){if(typeof t=="number"&&Number.isFinite(t))return t;throw new I(`${e} requires numeric elements; got ${yn(t)}`)}function $e(t){if(t instanceof w){let e=t.namespace??"",n=e.indexOf("/"),r=e.indexOf("@",n+1);return n<0||r<0?void 0:{publisher:e.substring(0,n),package_:e.substring(n+1,r),version:e.substring(r+1),name:t.name??""}}if(t instanceof b){let e=t.subject,n=e.version;return{publisher:e.publisher,package_:e.package_,version:n&&typeof n.major=="number"?`${n.major}.${n.minor}.${n.patch}`:"",name:e.name}}if(J(t))return{publisher:t.publisher,package_:t.package_,version:"",name:t.name}}var gn=new Set(["stringValue","text","rawContent","key","propertyKey","linkLabel"]);function at(t){return typeof t=="string"||typeof t=="number"||typeof t=="boolean"}function yn(t){return t===void 0?"undefined":t===null?"null":Array.isArray(t)?`array(${t.length})`:typeof t}function kn(t,e){let n=new Date(t);if(isNaN(n.getTime()))return"";let r=n.getUTCFullYear(),a=["January","February","March","April","May","June","July","August","September","October","November","December"][n.getUTCMonth()],i=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"][n.getUTCMonth()],u=n.getUTCDate(),c=(l,p=2)=>String(l).padStart(p,"0");switch(e){case"iso-date":return`${r}-${c(n.getUTCMonth()+1)}-${c(u)}`;case"iso-datetime":return`${r}-${c(n.getUTCMonth()+1)}-${c(u)}T${c(n.getUTCHours())}:${c(n.getUTCMinutes())}:${c(n.getUTCSeconds())}Z`;case"short-date":return`${i} ${u}`;case"long-date":return`${a} ${u}, ${r}`;case"year":return String(r);case"month-year":return`${a} ${r}`}}function it(t,e){if(t==null||e===void 0||e===null)return!1;if(t===e)return!0;let n=typeof t=="object"&&"value"in t?t.value:void 0,r=typeof e=="object"&&"value"in e?e.value:void 0,a=n??t,i=r??e,u=ot(t),c=ot(e);return u&&c?u.publisher===c.publisher&&u.package_===c.package_&&u.name===c.name:typeof a=="string"&&typeof i=="string"||typeof a=="number"&&typeof i=="number"||typeof a=="boolean"&&typeof i=="boolean"?a===i:!1}function ot(t){if(t instanceof b){let e=t.subject;return{publisher:e.publisher,package_:e.package_,name:e.name}}if(t instanceof w){let e=t.namespace??"",n=e.indexOf("/"),r=e.indexOf("@",n+1);if(n<0)return;let a=e.substring(0,n),i=r>=0?e.substring(n+1,r):e.substring(n+1);return{publisher:a,package_:i,name:t.name??""}}if(J(t))return{publisher:t.publisher,package_:t.package_,name:t.name}}function Ve(t){return t instanceof L||t instanceof U||t instanceof O||t instanceof j||t instanceof T||t instanceof S}function hn(t){return t instanceof L||t instanceof U||t instanceof O?String(t.object??""):t instanceof j?t.object?.subject?.name??"":t instanceof T?"[embedded]":t instanceof S?(t.object??[]).map(n=>{if(n instanceof b)return n.subject.name;let r=n.name;if(r&&r.length>0)return r;let a=n.value;return typeof a=="string"||typeof a=="number"||typeof a=="boolean"?String(a):"[embedded]"}).join(", "):""}function st(t){if(t===void 0)return"\0undef";if(t===null)return"\0null";if(typeof t=="string")return`s:${t}`;if(typeof t=="number")return`n:${t}`;if(typeof t=="boolean")return`b:${t}`;if(t instanceof b){let e=t.subject;return`r:${e.publisher}/${e.package_}/${e.name}`}if(t instanceof K){let e=t.name??"";return`k:${t.namespace??""}/${e}`}return J(t)?`u:${t.publisher}/${t.package_}/${t.name}`:`o:${JSON.stringify(t)}`}var bn={"markdown-with-frontmatter":{formatUri:"kanonak.org/transformations/markdown-with-frontmatter",extension:".md"},"plain-markdown":{formatUri:"kanonak.org/transformations/plain-markdown",extension:".md"},toml:{formatUri:"kanonak.org/transformations/toml",extension:".toml"},json:{formatUri:"kanonak.org/transformations/json",extension:".json"},html:{formatUri:"kanonak.org/transformations/html",extension:".html"},svg:{formatUri:"kanonak.org/transformations/svg",extension:".svg"},stylesheet:{formatUri:"kanonak.org/transformations/stylesheet",extension:".css"},yaml:{formatUri:"kanonak.org/transformations/yaml",extension:".yaml"},"dynamodb-json":{formatUri:"kanonak.org/transformations/dynamodb-json",extension:".json"}},W=class extends Error{},ge=class{backends=new Map;constructor(){this.register(new Y),this.register(new Z),this.register(new Q),this.register(new x),this.register(new ee),this.register(new te),this.register(new ne),this.register(new ae)}register(e){this.backends.set(e.backendUri,e)}async run(e){let n=e.transformationKanonaks??e.allKanonaks,r=fe(e.transformation,n);if(!r.outputs.has(e.outputFormat))throw new W(`Transformation "${r.name}" does not declare output format "${e.outputFormat}". Declared: ${Array.from(r.outputs).join(", ")}`);let a=this.findBackend(e.outputFormat);if(!a)throw new W(`No backend registered for OutputFormat "${e.outputFormat}".`);let i=new ie(e.repository,e.parser,e.objectParser),u=new pe(i,e.allKanonaks,r.fragments);return r.kind==="instance"?this.runInstance(r,e,a,u):this.runSet(r,e,a,u)}async runInstance(e,n,r,a){let i=ut(n.instances,e.inputPattern.requires),u=ct(i,e.inputPattern.sortBy),c=[];for(let l of u){let p=new Map;p.set("input",l);let y=await a.evaluate(e.rule,p);Ae(y,e.name,`input "${l.name}"`);let h=De(await a.evaluate(e.artifactName,p),e.name,`input "${l.name}"`),D=Ke(e.overrides.get(n.outputFormat),n.runtimeOverride),$=r.render(y,D);c.push({fileName:h,format:n.outputFormat,content:$,source:{kind:"instance",sourceName:l.name}})}return c}async runSet(e,n,r,a){let i=ut(n.instances,e.inputPattern.requires),u=ct(i,e.inputPattern.sortBy);return e.partitionBy?this.runSetWithPartition(e,u,n,r,a):this.runSetSingle(e,u,n,r,a)}async runSetSingle(e,n,r,a,i){let u=new Map;u.set("inputs",n);let c=await i.evaluate(e.rule,u);Ae(c,e.name,"set");let l=De(await i.evaluate(e.artifactName,u),e.name,"set"),p=Ke(e.overrides.get(r.outputFormat),r.runtimeOverride),y=a.render(c,p);return[{fileName:l,format:r.outputFormat,content:y,source:{kind:"set",memberCount:n.length}}]}async runSetWithPartition(e,n,r,a,i){let u=e.partitionBy,c=new Map,l=[];for(let y of n){let h=En(y,u);if(h==null)continue;let D=vn(h),$=c.get(D);$||($={keyValue:h,keyDisplay:$n(h),members:[]},c.set(D,$),l.push(D)),$.members.push(y)}let p=[];for(let y of l){let h=c.get(y),D=new Map;D.set("inputs",h.members),D.set("key",h.keyValue);let $=await i.evaluate(e.rule,D);Ae($,e.name,`partition "${h.keyDisplay}"`);let mt=De(await i.evaluate(e.artifactName,D),e.name,`partition "${h.keyDisplay}"`),pt=Ke(e.overrides.get(r.outputFormat),r.runtimeOverride),gt=a.render($,pt);p.push({fileName:mt,format:r.outputFormat,content:gt,source:{kind:"set",memberCount:h.members.length,partitionKey:h.keyDisplay}})}return p}findBackend(e){let n=bn[e];if(n)return this.backends.get(n.formatUri)}};function ut(t,e){return e.length===0?t:t.filter(n=>{for(let r of e)if(!Sn(n,r))return!1;return!0})}function ct(t,e){if(e.length===0)return t;let n=[...t];return n.sort((r,a)=>{for(let i of e){let u=dt(r,i.byProperty),c=dt(a,i.byProperty),l=wn(u,c,i.order);if(l!==0)return l}return 0}),n}function dt(t,e){for(let n of t.statement){let r=Te(n);if(!(!r||!E(r,e))){if(n instanceof L||n instanceof U||n instanceof O)return n.object;if(n instanceof S)throw new W(`Sort property "${e.name}" on instance "${t.name??"?"}" resolves to a list \u2014 list-typed properties are not sortable. Use a scalar property.`);if(n instanceof j)throw new W(`Sort property "${e.name}" on instance "${t.name??"?"}" resolves to a reference \u2014 reference-typed properties don't have a natural total order. Use a scalar property.`)}}}function wn(t,e,n){if(t===void 0&&e===void 0)return 0;if(t===void 0)return n==="ascending"?1:-1;if(e===void 0)return n==="ascending"?-1:1;let r;return typeof t=="number"&&typeof e=="number"?r=t-e:r=String(t).localeCompare(String(e)),n==="ascending"?r:-r}function Sn(t,e){for(let n of t.statement){let r=Te(n);if(!r||!E(r,e))continue;let a=n.object;if(a!=null&&!(typeof a=="string"&&a.length===0)&&!(Array.isArray(a)&&a.length===0))return!0}return!1}function En(t,e){for(let n of t.statement){let r=Te(n);if(!(!r||!E(r,e))&&(n instanceof L||n instanceof U||n instanceof O||n instanceof j||n instanceof S))return n.object}}function Te(t){return t.predicate?.subject}function vn(t){if(t===void 0)return" undef";if(t===null)return" null";if(typeof t=="string")return`s:${t}`;if(typeof t=="number")return`n:${t}`;if(typeof t=="boolean")return`b:${t}`;if(t instanceof b){let e=t.subject;return`r:${e.publisher}/${e.package_}/${e.name}`}if(t instanceof K){let e=t.name??"";return`k:${t.namespace??""}/${e}`}if(typeof t=="object"&&t!==null&&typeof t.name=="string"&&typeof t.publisher=="string"){let e=t;return`u:${e.publisher}/${e.package_}/${e.name}`}return`o:${JSON.stringify(t)}`}function $n(t){return t==null?"":typeof t=="string"?t:typeof t=="number"||typeof t=="boolean"?String(t):t instanceof b?t.subject.name:t instanceof K?t.name??"":typeof t=="object"&&t!==null&&typeof t.name=="string"?t.name:""}function Ae(t,e,n){if(typeof t!="object"||t===null||t.kind!=="Document")throw new W(`Transformation "${e}" rule did not yield a Document for ${n}. Got: ${lt(t)}`)}function De(t,e,n){if(typeof t=="string")return t;if(Array.isArray(t)&&t.every(Vn))return t.map(r=>String(r)).join("");throw new W(`Transformation "${e}" artifactName did not yield a string for ${n}. Got: ${lt(t)}`)}function Vn(t){return typeof t=="string"||typeof t=="number"||typeof t=="boolean"}function lt(t){if(t===void 0)return"undefined";if(t===null)return"null";if(Array.isArray(t))return`array(${t.length})`;if(typeof t=="object"){let e=t.kind;return e?`object(kind=${e})`:"object"}return typeof t}function Ke(t,e){if(!t&&!e)return;let n={metadataRenames:e?.metadataRenames??t?.metadataRenames??new Map},r=e?.metadataKeys??t?.metadataKeys;r!==void 0&&(n.metadataKeys=r);let a=e?.trailingNewline??t?.trailingNewline;a!==void 0&&(n.trailingNewline=a);let i=e?.omitWrapper??t?.omitWrapper;return i!==void 0&&(n.omitWrapper=i),n}var R=class extends Error{constructor(n,r){super(n);this.cause=r;this.name="RenderError"}cause},ft={publisher:"kanonak.org",package_:"derivation",name:"default"},Be=class{constructor(e,n=new Re,r=new Ue){this.repository=e;this.parser=n;this.objectParser=r}repository;parser;objectParser;runner=new ge;cachedCatalog=void 0;invalidate(){this.cachedCatalog=void 0}async renderViaLook(e){let n=await this.getCatalog(),r=M(n,e.resource);if(!(r instanceof w))throw new R(`Resource not found: ${P(e.resource)}`);let a=new ye(n),i;if(e.format.name==="html")i=a.renderHtml(r);else if(e.format.name==="stylesheet")i=a.renderStylesheet(r);else throw new R(`LookRenderer does not support format ${P(e.format)} \u2014 only formats.html and formats.stylesheet are implemented in v0.1.`);return{content:i,format:e.format,filename:r.name}}async findDerivation(e){let n=await this.getCatalog(),r=M(n,e.resource);if(!(r instanceof w))return;let a=e.variant??ft;return Ne(r,e.format,a,n)}async render(e){if(e.format.name==="html"||e.format.name==="stylesheet"){let i=await this.getCatalog(),u=M(i,e.resource);if(u instanceof w){let l=new ye(i).findCascadedLook(u);if(l&&!An(l.sourceClass)){let p=await this.findDerivation(e);if(!p||jn(p))return this.renderViaLook({resource:e.resource,format:e.format})}}}let n=await this.findDerivation(e);if(!n)throw new R(`No derivation found for ${P(e.resource)} \u2192 format ${P(e.format)}`+(e.variant?` variant ${P(e.variant)}`:""));let r=Le(n.transformation.version),a={transformation:{publisher:n.transformation.publisher,package_:n.transformation.package_,name:n.transformation.name,...r?{version:r}:{}},input:e.resource,format:e.format};return e.omitWrapper!==void 0&&(a.omitWrapper=e.omitWrapper),this.runTransformation(a)}async runTransformation(e){let n=await this.getCatalog(),r=M(n,e.transformation);if(!(r instanceof w))throw new R(`Transformation not found: ${P(e.transformation)}`);let a=M(n,e.input);if(!(a instanceof w))throw new R(`Input resource not found: ${P(e.input)}`);let i=fe(r,n),u=Dn(i.outputs,e.format);if(!u)throw new R(`Transformation ${P(e.transformation)} declares outputs [${[...i.outputs].join(", ")}], none of which corresponds to format ${P(e.format)}`);let c;try{c=await this.runner.run({transformation:r,instances:[a],allKanonaks:n,repository:this.repository,parser:this.parser,objectParser:this.objectParser,outputFormat:u,...e.omitWrapper!==void 0?{runtimeOverride:{metadataRenames:new Map,omitWrapper:e.omitWrapper}}:{}})}catch(l){throw new R(`Transformation execution failed: ${l.message}`,l)}if(c.length===0)throw new R("Transformation produced no artifacts");return{content:c[0].content,format:e.format,filename:c[0].fileName}}async getCatalog(){return this.cachedCatalog||(this.cachedCatalog=await this.objectParser.parseKanonaks(this.repository)),this.cachedCatalog}};function P(t){return`${t.publisher}/${t.package_}/${t.name}`}function jn(t){return typeof t.source=="string"?!1:t.source.publisher==="kanonak.org"&&t.source.package_==="core-rdf"&&t.source.name==="Resource"}function An(t){return t.publisher==="kanonak.org"&&t.package_==="core-rdf"&&t.name==="Resource"}function Dn(t,e){let n=e.name;if(t.has(n))return n;for(let r of t)if(r.startsWith(n+"-")||r===n)return r}export{te as CssBackend,ft as DEFAULT_VARIANT,k as DOCAST,kt as DOCAST_PKG,yt as DOCAST_PUB,ae as DynamoDbBackend,pe as ExpressionEngineV3,I as ExpressionEvalErrorV3,x as HtmlBackend,Q as JsonBackend,Y as MarkdownFrontmatterBackend,ie as ReferenceResolver,R as RenderError,bn as SUPPORTED_FORMATS_V3,ee as SvgBackend,o as TX_V3,Xt as TX_V3_PKG,Jt as TX_V3_PUB,Qn as TX_V3_VERSION_MAJOR,Z as TomlBackend,Be as TransformationEngine,g as TransformationLoadErrorV3,W as TransformationRunnerErrorV3,ge as TransformationRunnerV3,ne as YamlBackend,fe as compileTransformationV3,X as renderMarkdownToHtml};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kanonak-protocol/sdk",
3
- "version": "3.45.0",
3
+ "version": "3.47.0",
4
4
  "description": "Kanonak Protocol SDK - Document repository and parsing implementations for TypeScript",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -113,7 +113,7 @@
113
113
  "yaml-parser"
114
114
  ],
115
115
  "dependencies": {
116
- "@kanonak-protocol/types": "^3.45.0",
116
+ "@kanonak-protocol/types": "^3.47.0",
117
117
  "ignore": "^7.0.5",
118
118
  "js-yaml": "^4.1.0",
119
119
  "yaml": "^2.7.0"
@@ -1 +0,0 @@
1
- import{a as S}from"./chunk-FMYLEPMC.js";import{c as v,d as u,g as j,j as p,k as h,l as k}from"./chunk-W6T7MOKY.js";function fe(t,n,e,a){let r=D(t);if(r.length>0){let i=r.find(f=>m(f.format,n)&&m(f.variant,e));return i?{transformation:i.transformation,source:"instance"}:void 0}let o=new Set,s=U(t);for(;s.length>0;){let i=s.shift(),f=y(i.subject);if(o.has(f))continue;o.add(f);let c=R(a,i.subject);if(!c)continue;let K=D(c).find(d=>m(d.format,n)&&m(d.variant,e));if(K)return{transformation:K.transformation,source:{publisher:i.subject.publisher,package_:i.subject.package_,name:i.subject.name}};for(let d of T(c))s.push(d)}let l={publisher:"kanonak.org",package_:"core-rdf",name:"Resource"};if(!o.has(y(l))){let i=R(a,l);if(i){let c=D(i).find(g=>m(g.format,n)&&m(g.variant,e));if(c)return{transformation:c.transformation,source:l}}}}function D(t){let n=[];for(let e of t.statement)if(e instanceof k&&b(e,"kanonak.org","derivation","derivations"))for(let a of e.object??[]){if(!(a instanceof S))continue;let r=E(a);r&&n.push(r)}return n}function E(t){let n,e,a;for(let r of t.statement)r instanceof p?b(r,"kanonak.org","derivation","format")?n=x(r):b(r,"kanonak.org","derivation","variant")&&(e=x(r)):r instanceof h&&b(r,"kanonak.org","derivation","transformation")&&(a=_(r.object));if(!(!n||!a))return e||(e={publisher:"kanonak.org",package_:"derivation",name:"default"}),{format:n,variant:e,transformation:a}}function _(t){let n,e,a,r;for(let o of t.statement){if(!(o instanceof j))continue;let s=o.predicate?.subject?.name;s==="publisher"?n=o.object:s==="package"?e=o.object:s==="version"?a=o.object:s==="name"&&(r=o.object)}if(!(!n||!e||!a||!r))return{publisher:n,package_:e,version:a,name:r}}function U(t){let n=[];for(let e of t.statement)e instanceof p&&e.predicate?.subject?.name==="type"&&e.object instanceof u&&n.push(e.object);return n}function T(t){let n=[];for(let e of t.statement)if(e instanceof p){if(e.predicate?.subject?.name!=="subClassOf")continue;e.object instanceof u&&n.push(e.object)}else if(e instanceof k){if(e.predicate?.subject?.name!=="subClassOf")continue;for(let a of e.object??[])a instanceof u&&n.push(a)}return n}function R(t,n){for(let e of t){if(!(e instanceof v)||e.name!==n.name)continue;if((e.namespace||"").startsWith(`${n.publisher}/${n.package_}@`))return e}}function b(t,n,e,a){let r=t.predicate?.subject;return r?r.publisher===n&&r.package_===e&&r.name===a:!1}function x(t){let n=t.object.subject;return{publisher:n.publisher,package_:n.package_,name:n.name}}function m(t,n){return t.publisher===n.publisher&&t.package_===n.package_&&t.name===n.name}function y(t){return`${t.publisher}/${t.package_}/${t.name}`}export{fe as a};