@kanonak-protocol/sdk 5.25.0 → 5.27.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser.d.ts +2 -0
- package/dist/browser.js +1 -1
- package/dist/chunk-4C7ZMXQT.js +68 -0
- package/dist/chunk-4VLLX3MZ.js +1 -0
- package/dist/chunk-CZY6OOTM.js +1 -0
- package/dist/{chunk-6YX2TDI5.js → chunk-KOV3AFBN.js} +1 -1
- package/dist/chunk-M7LXZN47.js +1 -0
- package/dist/chunk-NOPFCGB7.js +1 -0
- package/dist/chunk-RVR25FWW.js +2 -0
- package/dist/{chunk-5GFOZL7D.js → chunk-RWN5JZPU.js} +1 -1
- package/dist/chunk-ZZINR6NT.js +152 -0
- package/dist/graph/GraphBuilder.d.ts +2 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.js +1 -1
- package/dist/kanonaks/walkDefinedKanonaks.d.ts +10 -1
- package/dist/look/LookRenderer.d.ts +36 -0
- package/dist/parsing/index.js +1 -1
- package/dist/reasoning/KanonakVocabulary.d.ts +3 -0
- package/dist/reasoning/index.js +1 -1
- package/dist/resolution/ResourceTypeClassifier.d.ts +8 -0
- package/dist/resolution/index.js +1 -1
- package/dist/search/index.js +1 -1
- package/dist/server/index.js +18 -10
- package/dist/server/renderDiagnostics.d.ts +10 -0
- package/dist/shacl/index.d.ts +1 -0
- package/dist/shacl/uris.d.ts +1 -0
- package/dist/transformations/index.js +2 -2
- package/dist/transformations/v3/CompiledTransformationV3.d.ts +17 -1
- package/dist/transformations/v3/TransformationUriConstantsV3.d.ts +5 -0
- package/dist/uri-helpers/UriHelpers.d.ts +10 -0
- package/dist/uri-helpers/index.d.ts +1 -1
- package/dist/uri-helpers/index.js +1 -1
- package/dist/validation/index.d.ts +1 -1
- package/dist/validation/index.js +1 -1
- package/dist/validation/rules/repository/TxExpressionCompilesRule.d.ts +44 -0
- package/dist/validation/rules/repository/index.d.ts +1 -0
- package/package.json +2 -2
- package/dist/chunk-3XOXKMYB.js +0 -63
- package/dist/chunk-AND44TIS.js +0 -152
- package/dist/chunk-H6UAD2LP.js +0 -1
- package/dist/chunk-I3UXFEJA.js +0 -2
- package/dist/chunk-O6YV2SDB.js +0 -1
- package/dist/chunk-USQLCG3Q.js +0 -1
- package/dist/chunk-YU2VGLOT.js +0 -1
package/dist/chunk-AND44TIS.js
DELETED
|
@@ -1,152 +0,0 @@
|
|
|
1
|
-
import{a as Fn}from"./chunk-6VIUXP4N.js";import{a as V,c as Fe,h as u,m as Hn}from"./chunk-YU2VGLOT.js";import{a as xn}from"./chunk-KOWDHKBN.js";import{a as zn}from"./chunk-PEJALHXK.js";import{p as Nn,q as Dn,r as Bn}from"./chunk-O6YV2SDB.js";import{b as je,c as q,d as j,g as W,h as ie,i as ae,j as x,k as H,l as I,m as mn,n as fe,o as Pn,p as w,r as Me,s as he,v as hn,w as qe,y as An,z as Mn}from"./chunk-H6UAD2LP.js";import{a as Vn}from"./chunk-FUUTGGJS.js";import{c as en,e as nn,g as Tn}from"./chunk-QILEJIFU.js";var xe="kanonak.org",Yn="look",We="core-rdf",Tt={publisher:xe,package_:Yn,name:"displayLabel"},Ft={publisher:xe,package_:Yn,name:"displaySummary"},xt={publisher:xe,package_:We,name:"type"},Vt={publisher:xe,package_:We,name:"subClassOf"},Pt={publisher:xe,package_:We,name:"label"},At={publisher:xe,package_:We,name:"comment"},Gn=new Vn(xe,We,"Resource");function N(r,e){let n=qn(r,e,Tt)??Pt,t=qn(r,e,Ft)??At,a=hn(e,n)??e.name,s=hn(e,t);return{label:a,summary:s}}function qn(r,e,n){let t=qe(e,n);if(t)return t;let a=new Set,s=Wn(e,xt);for(;s.length>0;){let o=s.shift(),i=mn(o);if(a.has(i))continue;a.add(i);let c=Me(r,o);if(!c)continue;let l=qe(c,n);if(l)return l;s.push(...Wn(c,Vt))}if(!a.has(mn(Gn))){let o=Me(r,Gn);if(o){let i=qe(o,n);if(i)return i}}}function Wn(r,e){let n=qe(r,e);if(n)return[n];let t=[];for(let a of An(r,e))a instanceof j&&t.push(a.subject);return t}function Ye(r,e={}){let n=r.replace(/\r\n/g,`
|
|
2
|
-
`).split(`
|
|
3
|
-
`),t=[],a=0;for(;a<n.length;){let s=n[a];if(s.trim()===""){a++;continue}let o=/^(\s*)```(\S*)\s*$/.exec(s);if(o){let l=o[2],d=[];for(a++;a<n.length&&!/^(\s*)```\s*$/.test(n[a]);)d.push(n[a]),a++;a++;let f=d.join(`
|
|
4
|
-
`),p=l&&e.highlight?e.highlight(l,f):De(f),m=l?` class="language-${Jn(l)}"`:"";t.push(`<pre class="kan-code"><code${m}>${p}</code></pre>`);continue}let i=/^(#{1,6})\s+(.*)$/.exec(s);if(i){let l=i[1].length,d=Ne(i[2].trim());t.push(`<h${l}>${d}</h${l}>`),a++;continue}if(s.includes("|")&&a+1<n.length&&Xn(n[a+1])){let l=bn(s),d=Mt(n[a+1]);a+=2;let f=[];for(;a<n.length&&n[a].trim()!==""&&n[a].includes("|");)f.push(bn(n[a])),a++;t.push(Nt(l,d,f));continue}if(/^\s*[-*]\s+/.test(s)){let l=[];for(;a<n.length&&/^\s*[-*]\s+/.test(n[a]);){let d=[n[a].replace(/^\s*[-*]\s+/,"")];for(a++;a<n.length&&n[a].trim()!==""&&!/^\s*[-*]\s+/.test(n[a])&&!/^\s*\d+\.\s+/.test(n[a]);)d.push(n[a]),a++;a<n.length&&n[a].trim()===""&&a++,l.push(`<li>${Ne(d.join(" ").trim())}</li>`)}t.push(`<ul>
|
|
5
|
-
${l.join(`
|
|
6
|
-
`)}
|
|
7
|
-
</ul>`);continue}if(/^\s*\d+\.\s+/.test(s)){let l=[];for(;a<n.length&&/^\s*\d+\.\s+/.test(n[a]);){let d=[n[a].replace(/^\s*\d+\.\s+/,"")];for(a++;a<n.length&&n[a].trim()!==""&&!/^\s*\d+\.\s+/.test(n[a])&&!/^\s*[-*]\s+/.test(n[a]);)d.push(n[a]),a++;a<n.length&&n[a].trim()===""&&a++,l.push(`<li>${Ne(d.join(" ").trim())}</li>`)}t.push(`<ol>
|
|
8
|
-
${l.join(`
|
|
9
|
-
`)}
|
|
10
|
-
</ol>`);continue}let c=[s];for(a++;a<n.length&&n[a].trim()!==""&&!/^(#{1,6})\s+/.test(n[a])&&!/^(\s*)```/.test(n[a])&&!/^\s*[-*]\s+/.test(n[a])&&!/^\s*\d+\.\s+/.test(n[a])&&!(n[a].includes("|")&&a+1<n.length&&Xn(n[a+1]));)c.push(n[a]),a++;t.push(`<p>${Ne(c.join(" "))}</p>`)}return t.join(`
|
|
11
|
-
`)}function Xn(r){return r.includes("-")?/^[\s|:-]+$/.test(r):!1}function bn(r){let e=r.trim();return e.startsWith("|")&&(e=e.slice(1)),e.endsWith("|")&&(e=e.slice(0,-1)),e.split("|").map(n=>n.trim())}function Mt(r){return bn(r).map(e=>{let n=e.startsWith(":"),t=e.endsWith(":");return n&&t?"center":t?"right":n?"left":null})}function Nt(r,e,n){let t=o=>{let i=e[o];return i?` style="text-align:${i}"`:""},a=r.map((o,i)=>`<th${t(i)}>${Ne(o)}</th>`).join(""),s=n.map(o=>`<tr>${o.map((c,l)=>`<td${t(l)}>${Ne(c)}</td>`).join("")}</tr>`).join(`
|
|
12
|
-
`);return`<table>
|
|
13
|
-
<thead><tr>${a}</tr></thead>
|
|
14
|
-
<tbody>
|
|
15
|
-
${s}
|
|
16
|
-
</tbody>
|
|
17
|
-
</table>`}function Ne(r){let e=De(r);return e=e.replace(/`([^`\n]+)`/g,(n,t)=>`<code>${t}</code>`),e=e.replace(/\[([^\]]+)\]\(([^)\s]+)\)/g,(n,t,a)=>`<a href="${Jn(a)}">${t}</a>`),e=e.replace(/\*\*([^*\n]+)\*\*/g,(n,t)=>`<strong>${t}</strong>`),e=e.replace(/(^|[^*])\*([^*\n]+)\*(?!\*)/g,(n,t,a)=>`${t}<em>${a}</em>`),e=e.replace(/(^|[\s(])_([^_\n]+)_(?=[\s).,;:!?]|$)/g,(n,t,a)=>`${t}<em>${a}</em>`),e}function De(r){return r.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function Jn(r){return r.replace(/"/g,""").replace(/&/g,"&")}var Dt={publisher:"kanonak.org",package_:"core-rdf",name:"label"};function Pe(r){return typeof r=="object"&&r!==null&&r.kind==="raw-string"}var Ke=class extends Error{},Xe=class{constructor(e,n,t=new Map){this.resolver=e;this.catalog=n;this.fragments=t}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 Ke(`Unbound variable "${e.varName}"`);return n.get(e.varName)}case"concat":{let t=[];for(let a of e.parts){let s=await this.evaluate(a,n);if(s!=null)if(Array.isArray(s))for(let o of s)t.push(o);else t.push(s)}return t}case"fallback":{let t=await this.evaluate(e.primary,n);return Zn(t)?t: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 t=await this.evaluate(e.check,n);return Zn(t)}case"property-read":{let t=await this.evaluate(e.source,n);return tn(t,e.readProp)}case"traverse":{let t=await this.evaluate(e.source,n);if(!(t instanceof je))return;let a=Ht(t,e.through),s=[];for(let o of a){let i=he(this.catalog,o),c=i.length>0?i:[await this.resolver.resolveSubject(o,this.catalog)];for(let l of c){if(!l)continue;let d=new Map(n);d.set("input",l);let f=await this.evaluate(e.step,d);if(f!=null&&Ve(f)!==""){s.push(Ve(f));break}}}return s.join("")}case"uri-name":{let t=await this.evaluate(e.source,n);return Be(t)?t.name:t instanceof j?t.subject.name:t instanceof q?t.name:t instanceof V?t.name??"":void 0}case"uri-publisher":{let t=await this.evaluate(e.source,n);return vn(t)?.publisher}case"uri-package":{let t=await this.evaluate(e.source,n);return vn(t)?.package_}case"uri-version":{let t=await this.evaluate(e.source,n);return vn(t)?.version}case"subject-uri":{let t=await this.evaluate(e.source,n);if(t instanceof q){let a=t.namespace??"",s=t.name??"";return!a||!s?void 0:`${a}/${s}`}if(t instanceof j){let a=t.subject,s=a.version;return s&&typeof s.major=="number"?`${a.publisher}/${a.package_}@${s.major}.${s.minor}.${s.patch}/${a.name}`:`${a.publisher}/${a.package_}/${a.name}`}return}case"display-label":{let t=await this.resolver.resolveSubject({...e.labelTarget},this.catalog);return t?tn(t,e.labelSource):void 0}case"resolve-ref":{let t=await this.evaluate(e.source,n);return t instanceof q?t:t instanceof j?await this.resolver.resolveSubject(t.subject,this.catalog):Be(t)?await this.resolver.resolveSubject(t,this.catalog):void 0}case"normalize":{let t=await this.evaluate(e.source,n),a=t==null?"":Ve(t);return e.normKind==="trim-end"?a.replace(/[\s\r\n]+$/u,""):e.normKind==="to-upper"?a.toUpperCase():e.normKind==="to-lower"?a.toLowerCase():e.normKind==="first-char"?a.length===0?"":a.charAt(0):a}case"unescaped-string":{let t=await this.evaluate(e.source,n);return{kind:"raw-string",value:t==null?"":Ve(t)}}case"render-markdown":{let t=await this.evaluate(e.source,n);if(!(t instanceof je))return;let a;for(let o of t.statement){let i=$n(o);if(i&&fe(i,e.readProp)){a=o;break}}if(!(a instanceof Fe)){let o=tn(t,e.readProp);return o==null?void 0:Ve(o)}let s=await this.renderMarkdownLinks(a);return e.format==="html"?Ye(s):s}case"build-ast-node":{let t={kind:e.astClass.name};for(let a of e.set){let s=await this.evaluate(a.value,n);if(s==null||Array.isArray(s)&&s.length===0)continue;let o=a.field.name;Gt.has(o)&&(Array.isArray(s)&&s.every(i=>Qn(i))?s=s.map(i=>et(i)).join(""):Qn(s)&&(s=et(s))),t[o]=s}return t}case"call-fragment":{let t=this.fragments.get(e.fragmentKey);if(!t)throw new Ke(`ExpressionFragment ${e.fragmentKey} not found in registry`);return this.evaluate(t,n)}case"join":return(await this.evaluateList(e.source,n)).map(a=>a==null?"":Ve(a)).join(e.separator);case"count":return(await this.evaluateList(e.source,n)).length;case"sum":{let t=await this.evaluateList(e.source,n),a=0;for(let s of t)a+=pe(s,"Sum");return a}case"min":{let t=await this.evaluateList(e.source,n);if(t.length===0)throw new Ke("Min on an empty list is undefined; guard with IsSet");let a=pe(t[0],"Min");for(let s=1;s<t.length;s++){let o=pe(t[s],"Min");o<a&&(a=o)}return a}case"max":{let t=await this.evaluateList(e.source,n);if(t.length===0)throw new Ke("Max on an empty list is undefined; guard with IsSet");let a=pe(t[0],"Max");for(let s=1;s<t.length;s++){let o=pe(t[s],"Max");o>a&&(a=o)}return a}case"average":{let t=await this.evaluateList(e.source,n);if(t.length===0)throw new Ke("Average on an empty list is undefined; guard with IsSet");let a=0;for(let s of t)a+=pe(s,"Average");return a/t.length}case"for-each":{let t=await this.evaluateList(e.source,n),a=[];for(let s of t){let o=new Map(n);o.set(e.loopVar,ye(s));let i=await this.evaluate(e.emit,o);if(i!=null)if(Array.isArray(i))for(let c of i)a.push(c);else a.push(i)}return a}case"list-map":{let t=await this.evaluateList(e.source,n),a=[];for(let s of t){let o=new Map(n);o.set(e.loopVar,ye(s)),a.push(await this.evaluate(e.mapBody,o))}return a}case"filter":{let t=await this.evaluateList(e.source,n),a=[];for(let s of t){let o=new Map(n);o.set(e.loopVar,ye(s)),await this.evaluate(e.predicate,o)===!0&&a.push(s)}return a}case"partition-by":{let t=await this.evaluateList(e.source,n),a=new Map,s=[];for(let o of t){let i=new Map(n);i.set(e.loopVar,ye(o));let c=await this.evaluate(e.partitionKey,i),l=at(c),d=a.get(l);d||(d={kind:"Partition",key:c,members:[]},a.set(l,d),s.push(l)),d.members.push(o)}return s.map(o=>a.get(o))}case"distinct-by":{let t=await this.evaluateList(e.source,n),a=new Set,s=[];for(let o of t){let i=new Map(n);i.set(e.loopVar,ye(o));let c=await this.evaluate(e.distinctKey,i),l=at(c);a.has(l)||(a.add(l),s.push(o))}return s}case"all-statements":{let t=await this.evaluate(e.source,n);return t instanceof je?t.statement:[]}case"statement-predicate":{let t=await this.evaluate(e.source,n);if(yn(t)){let a=t.predicate;if(a instanceof j)return a}return}case"statement-value":{let t=await this.evaluate(e.source,n);return yn(t)?Yt(t):void 0}case"date-format":{let t=await this.evaluate(e.source,n),a=t==null?"":Ve(t);return a?Wt(a,e.format):""}case"add":{let t=pe(await this.evaluate(e.left,n),"Add"),a=pe(await this.evaluate(e.right,n),"Add");return t+a}case"subtract":{let t=pe(await this.evaluate(e.left,n),"Subtract"),a=pe(await this.evaluate(e.right,n),"Subtract");return t-a}case"multiply":{let t=pe(await this.evaluate(e.left,n),"Multiply"),a=pe(await this.evaluate(e.right,n),"Multiply");return t*a}case"divide":{let t=pe(await this.evaluate(e.left,n),"Divide"),a=pe(await this.evaluate(e.right,n),"Divide");if(a===0)throw new Ke("Divide by zero; guard with When");return t/a}case"reverse":{if(e.source.kind==="reverse")return this.evaluate(e.source.source,n);let t=await this.evaluateReverseIterator(e.source,n);return t!==void 0?t:[...await this.evaluateList(e.source,n)].reverse()}case"windowed-map":{let t=await this.evaluateList(e.source,n);if(t.length<e.windowSize)return[];let a=[];for(let s=0;s+e.windowSize<=t.length;s++){let o=t.slice(s,s+e.windowSize),i=new Map(n);i.set(e.windowVar,o);let c=await this.evaluate(e.windowBody,i);if(c!=null)if(Array.isArray(c))for(let l of c)a.push(l);else a.push(c)}return a}case"pairwise-map":{let t=await this.evaluateList(e.source,n);if(t.length<2)return[];let a=[];for(let s=0;s+1<t.length;s++){let o=new Map(n);o.set(e.firstVar,ye(t[s])),o.set(e.secondVar,ye(t[s+1]));let i=await this.evaluate(e.pairBody,o);if(i!=null)if(Array.isArray(i))for(let c of i)a.push(c);else a.push(i)}return a}case"scan":{let t=await this.evaluateList(e.source,n);if(t.length===0)return[];let a=await this.evaluate(e.initialState,n),s=[];for(let o of t){let i=new Map(n);i.set(e.stateVar,a),i.set(e.elementVar,ye(o));let c=await this.evaluate(e.accumulate,i);s.push(c),a=c}return s}case"list-item-at":{let t=await this.evaluateList(e.source,n),a=await this.evaluate(e.itemIndex,n);return typeof a!="number"||!Number.isInteger(a)||a<0||a>=t.length?void 0:t[a]}case"equals":{let t=await this.evaluate(e.left,n),a=await this.evaluate(e.right,n);return nt(t,a)}case"greater-than":{let t=await this.evaluate(e.left,n),a=await this.evaluate(e.right,n);return typeof t!="number"||typeof a!="number"?!1:t>a}case"less-than":{let t=await this.evaluate(e.left,n),a=await this.evaluate(e.right,n);return typeof t!="number"||typeof a!="number"?!1:t<a}case"greater-than-or-equal":{let t=await this.evaluate(e.left,n),a=await this.evaluate(e.right,n);return typeof t!="number"||typeof a!="number"?!1:t>=a}case"less-than-or-equal":{let t=await this.evaluate(e.left,n),a=await this.evaluate(e.right,n);return typeof t!="number"||typeof a!="number"?!1:t<=a}case"not":{let t=await this.evaluate(e.operand,n);return t===!0?!1:t===!1?!0:void 0}case"and":{for(let t of e.operands)if(await this.evaluate(t,n)!==!0)return!1;return!0}case"or":{for(let t of e.operands)if(await this.evaluate(t,n)===!0)return!0;return!1}case"contains":{let t=await this.evaluateList(e.haystack,n),a=await this.evaluate(e.needle,n);for(let s of t)if(nt(s,a))return!0;return!1}case"abs":{let t=pe(await this.evaluate(e.value,n),"Abs");return Math.abs(t)}case"negate":return-pe(await this.evaluate(e.value,n),"Negate");case"is-reference":{let t=await this.evaluate(e.check,n);return t instanceof j||t instanceof q}case"is-embedded":return await this.evaluate(e.check,n)instanceof V;case"is-list":{let t=await this.evaluate(e.check,n);return Array.isArray(t)}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 t=await this.evaluate(e.source,n);if(!yn(t))return;let a=t;return a instanceof W||a instanceof ie||a instanceof ae||a instanceof x||a instanceof H||a instanceof I?a.object:void 0}case"let":{let t=await this.evaluate(e.bindValue,n),a=new Map(n);return a.set(e.bindName,t),this.evaluate(e.body,a)}case"get-statement-by-name":{let t=await this.evaluate(e.inSubject,n),a=await this.evaluate(e.byName,n);if(!(t instanceof je)||typeof a!="string")return;for(let s of t.statement)if(s.predicate?.subject?.name===a)return s;return}default:{let t=e;throw new Ke("Unknown expression kind")}}}async renderMarkdownLinks(e){let n=e.object,t="",a=0;for(let s of e.links){if(t+=n.slice(a,s.startOffset),s.target){let o=s.target.subject,i=s.displayText??await this.resolveLabel(o)??o.name;t+=`[${i}](${Pn(o)})`}else t+=s.displayText??s.reference;a=s.endOffset}return t+=n.slice(a),t}async resolveLabel(e){let n=await this.resolver.resolveSubject(e,this.catalog);if(!n)return;let t=tn(n,Dt);return typeof t=="string"?t:void 0}async evaluateList(e,n){let t=await this.evaluate(e,n);return t==null?[]:Array.isArray(t)?t:[t]}async evaluateReverseIterator(e,n){if(e.kind==="pairwise-map"){let t=await this.evaluateList(e.source,n);if(t.length<2)return[];let a=[];for(let s=t.length-1;s>=1;s--){let o=new Map(n);o.set(e.firstVar,ye(t[s-1])),o.set(e.secondVar,ye(t[s]));let i=await this.evaluate(e.pairBody,o);if(i!=null)if(Array.isArray(i))for(let c of i)a.push(c);else a.push(i)}return a}if(e.kind==="for-each"){let t=await this.evaluateList(e.source,n),a=[];for(let s=t.length-1;s>=0;s--){let o=new Map(n);o.set(e.loopVar,ye(t[s]));let i=await this.evaluate(e.emit,o);if(i!=null)if(Array.isArray(i))for(let c of i)a.push(c);else a.push(i)}return a}if(e.kind==="list-map"){let t=await this.evaluateList(e.source,n),a=[];for(let s=t.length-1;s>=0;s--){let o=new Map(n);o.set(e.loopVar,ye(t[s])),a.push(await this.evaluate(e.mapBody,o))}return a}if(e.kind==="windowed-map"){let t=await this.evaluateList(e.source,n);if(t.length<e.windowSize)return[];let a=[];for(let s=t.length-e.windowSize;s>=0;s--){let o=t.slice(s,s+e.windowSize),i=new Map(n);i.set(e.windowVar,o);let c=await this.evaluate(e.windowBody,i);if(c!=null)if(Array.isArray(c))for(let l of c)a.push(l);else a.push(c)}return a}}};function tn(r,e){if(r instanceof je)return Bt(r,e);if(zt(r))return fe(e,u.key)?r.key:fe(e,u.members)?r.members:void 0}function Bt(r,e){for(let n of r.statement){let t=$n(n);if(!(!t||!fe(t,e))&&(n instanceof W||n instanceof ie||n instanceof ae||n instanceof x||n instanceof H||n instanceof I))return n.object}}function Ht(r,e){let n=[];for(let t of r.statement){let a=$n(t);if(!(!a||!fe(a,e))){if(t instanceof x)n.push(t.object.subject);else if(t instanceof I)for(let s of t.object)s instanceof j&&n.push(s.subject)}}return n}function $n(r){return r.predicate?.subject}function Ve(r){if(r==null)return"";if(typeof r=="string")return r;if(typeof r=="number"||typeof r=="boolean")return String(r);if(Pe(r))return r.value;if(r instanceof je)return r.name??"";if(r instanceof j)return r.subject.name;if(Be(r))return r.name;let e=r.value;return typeof e=="string"?e:typeof e=="number"||typeof e=="boolean"?String(e):""}function ye(r){return r!==null&&typeof r=="object"&&!Array.isArray(r)&&!(r instanceof je)&&!(r instanceof j)&&!(r instanceof V)&&"value"in r?r.value:r}function Zn(r){return r==null?!1:typeof r=="string"||Array.isArray(r)?r.length>0:typeof r=="boolean"?r===!0:!0}function Be(r){return typeof r=="object"&&r!==null&&typeof r.publisher=="string"&&typeof r.package_=="string"&&typeof r.name=="string"}function zt(r){return typeof r=="object"&&r!==null&&r.kind==="Partition"&&Array.isArray(r.members)}function pe(r,e){if(typeof r=="number"&&Number.isFinite(r))return r;throw new Ke(`${e} requires numeric elements; got ${qt(r)}`)}function vn(r){if(r instanceof q){let e=r.namespace??"",n=e.indexOf("/"),t=e.indexOf("@",n+1);return n<0||t<0?void 0:{publisher:e.substring(0,n),package_:e.substring(n+1,t),version:e.substring(t+1),name:r.name??""}}if(r instanceof j){let e=r.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(Be(r))return{publisher:r.publisher,package_:r.package_,version:"",name:r.name}}var Gt=new Set(["stringValue","text","rawContent","key","propertyKey","linkLabel"]);function Qn(r){return typeof r=="string"||typeof r=="number"||typeof r=="boolean"||Pe(r)}function et(r){return Pe(r)?r.value:String(r)}function qt(r){return r===void 0?"undefined":r===null?"null":Array.isArray(r)?`array(${r.length})`:typeof r}function Wt(r,e){let n=new Date(r);if(isNaN(n.getTime()))return"";let t=n.getUTCFullYear(),a=["January","February","March","April","May","June","July","August","September","October","November","December"][n.getUTCMonth()],s=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"][n.getUTCMonth()],o=n.getUTCDate(),i=(c,l=2)=>String(c).padStart(l,"0");switch(e){case"iso-date":return`${t}-${i(n.getUTCMonth()+1)}-${i(o)}`;case"iso-datetime":return`${t}-${i(n.getUTCMonth()+1)}-${i(o)}T${i(n.getUTCHours())}:${i(n.getUTCMinutes())}:${i(n.getUTCSeconds())}Z`;case"short-date":return`${s} ${o}`;case"long-date":return`${a} ${o}, ${t}`;case"year":return String(t);case"month-year":return`${a} ${t}`}}function nt(r,e){if(r==null||e===void 0||e===null)return!1;if(r===e)return!0;let n=typeof r=="object"&&"value"in r?r.value:void 0,t=typeof e=="object"&&"value"in e?e.value:void 0,a=n??r,s=t??e,o=tt(r),i=tt(e);return o&&i?o.publisher===i.publisher&&o.package_===i.package_&&o.name===i.name:typeof a=="string"&&typeof s=="string"||typeof a=="number"&&typeof s=="number"||typeof a=="boolean"&&typeof s=="boolean"?a===s:!1}function tt(r){if(r instanceof j){let e=r.subject;return{publisher:e.publisher,package_:e.package_,name:e.name}}if(r instanceof q){let e=r.namespace??"",n=e.indexOf("/"),t=e.indexOf("@",n+1);if(n<0)return;let a=e.substring(0,n),s=t>=0?e.substring(n+1,t):e.substring(n+1);return{publisher:a,package_:s,name:r.name??""}}if(Be(r))return{publisher:r.publisher,package_:r.package_,name:r.name}}function yn(r){return r instanceof W||r instanceof ie||r instanceof ae||r instanceof x||r instanceof H||r instanceof I}function Yt(r){return r instanceof W||r instanceof ie||r instanceof ae?String(r.object??""):r instanceof x?r.object?.subject?.name??"":r instanceof H?"[embedded]":r instanceof I?(r.object??[]).map(n=>{if(n instanceof j)return n.subject.name;let t=n.name;if(t&&t.length>0)return t;let a=n.value;return typeof a=="string"||typeof a=="number"||typeof a=="boolean"?String(a):"[embedded]"}).join(", "):""}function at(r){if(r===void 0)return"\0undef";if(r===null)return"\0null";if(typeof r=="string")return`s:${r}`;if(typeof r=="number")return`n:${r}`;if(typeof r=="boolean")return`b:${r}`;if(r instanceof j){let e=r.subject;return`r:${e.publisher}/${e.package_}/${e.name}`}if(r instanceof je){let e=r.name??"";return`k:${r.namespace??""}/${e}`}return Be(r)?`u:${r.publisher}/${r.package_}/${r.name}`:`o:${JSON.stringify(r)}`}var X=class extends Error{constructor(n,t){super(`${n} (at ${t})`);this.path=t}path};function Ys(r,e){let n=r.name,t=oa(e),a={catalog:e,depth:0};if(w(r,u.InstanceTransformation))return Xt(r,n,a,t);if(w(r,u.SetTransformation))return Jt(r,n,a,t);throw new X("Subject is not a recognized v3 transformation type \u2014 expected InstanceTransformation or SetTransformation",n)}function Xt(r,e,n,t){return{kind:"instance",name:r.name,inputPattern:lt(r,e),rule:an(r,u.rule,`${e}.rule`,n),artifactName:an(r,u.artifactName,`${e}.artifactName`,n),outputs:ut(r,`${e}.outputs`),overrides:dt(r,`${e}.formatOverrides`,n),fragments:t}}function Jt(r,e,n,t){let a=Ue(r,u.partitionBy);return{kind:"set",name:r.name,inputPattern:lt(r,e),rule:an(r,u.rule,`${e}.rule`,n),artifactName:an(r,u.artifactName,`${e}.artifactName`,n),outputs:ut(r,`${e}.outputs`),overrides:dt(r,`${e}.formatOverrides`,n),partitionBy:a,fragments:t}}function lt(r,e){let n=Je(r,u.inputPattern);if(!n)throw new X("inputPattern is required",e);return Zt(n,`${e}.inputPattern`)}function Zt(r,e){let n=Ue(r,u.matchesClass);if(!n)throw new X("matchesClass is required",e);let t=[];for(let o of ve(r,u.requires))if(o instanceof x)t.push(_n(o.object.subject));else if(o instanceof I)for(let i of o.object)i instanceof j&&t.push(_n(i.subject));let a=[],s=0;for(let o of ve(r,u.sortBy))if(o instanceof I)for(let i of o.object)i instanceof V&&a.push(rt(i,`${e}.sortBy[${s++}]`));else o instanceof H&&a.push(rt(o.object,`${e}.sortBy[${s++}]`));return{matchesClass:n,requires:t,sortBy:a}}function rt(r,e){let n=Ue(r,u.byProperty);if(!n)throw new X("SortKey.byProperty is required",e);let t=Ue(r,u.order);if(!t)throw new X("SortKey.order is required",e);if(fe(t,u.ascending))return{byProperty:n,order:"ascending"};if(fe(t,u.descending))return{byProperty:n,order:"descending"};throw new X(`SortKey.order must reference tx.ascending or tx.descending; got ${t.publisher}/${t.package_}/${t.name}`,e)}function an(r,e,n,t){let a=Je(r,e);if(!a)throw new X("expression is required",n);return Oe(a,n,t)}function Oe(r,e,n){if(w(r,u.StringLiteral))return{kind:"string-literal",value:be(r,u.stringLiteral,e)};if(w(r,u.IntegerLiteral))return{kind:"integer-literal",value:ct(r,u.integerLiteral,e)};if(w(r,u.DecimalLiteral))return{kind:"decimal-literal",value:ct(r,u.decimalLiteral,e)};if(w(r,u.BooleanLiteral))return{kind:"boolean-literal",value:la(r,u.booleanLiteral,e)};if(w(r,u.VarRef))return{kind:"var-ref",varName:be(r,u.varName,e)};if(w(r,u.PropertyRead))return{kind:"property-read",source:y(r,u.readSource,`${e}.readSource`,n),readProp:Ie(r,u.readProp,e,"readProp")};if(w(r,u.Traverse))return{kind:"traverse",source:y(r,u.traverseSource,`${e}.traverseSource`,n),through:Ie(r,u.through,e,"through"),step:y(r,u.step,`${e}.step`,n)};if(w(r,u.BuildAstNode))return{kind:"build-ast-node",astClass:Ie(r,u.astClass,e,"astClass"),set:ea(r,`${e}.set`,n)};if(w(r,u.When))return{kind:"when",condition:y(r,u.condition,`${e}.condition`,n),thenBuild:y(r,u.thenBuild,`${e}.thenBuild`,n),elseBuild:Qt(r,u.elseBuild,`${e}.elseBuild`,n)};if(w(r,u.Concat))return{kind:"concat",parts:Sn(r,u.parts,`${e}.parts`,n)};if(w(r,u.Fallback))return{kind:"fallback",primary:y(r,u.primary,`${e}.primary`,n),alternate:y(r,u.alternate,`${e}.alternate`,n)};if(w(r,u.UriName))return{kind:"uri-name",source:y(r,u.uriNameOf,`${e}.uriNameOf`,n)};if(w(r,u.UriPublisher))return{kind:"uri-publisher",source:y(r,u.uriPublisherOf,`${e}.uriPublisherOf`,n)};if(w(r,u.UriPackage))return{kind:"uri-package",source:y(r,u.uriPackageOf,`${e}.uriPackageOf`,n)};if(w(r,u.UriVersion))return{kind:"uri-version",source:y(r,u.uriVersionOf,`${e}.uriVersionOf`,n)};if(w(r,u.SubjectUri))return{kind:"subject-uri",source:y(r,u.subjectOf,`${e}.subjectOf`,n)};if(w(r,u.UriLiteral))return{kind:"uri-literal",refTo:Ie(r,u.refTo,e,"refTo")};if(w(r,u.DisplayLabel))return{kind:"display-label",labelTarget:Ie(r,u.labelTarget,e,"labelTarget"),labelSource:Ie(r,u.labelSource,e,"labelSource")};if(w(r,u.ResolveRef))return{kind:"resolve-ref",source:y(r,u.resolveSource,`${e}.resolveSource`,n)};if(w(r,u.Normalize))return{kind:"normalize",source:y(r,u.normSource,`${e}.normSource`,n),normKind:na(r,e)};if(w(r,u.UnescapedString))return{kind:"unescaped-string",source:y(r,u.unescapedSource,`${e}.unescapedSource`,n)};if(w(r,u.RenderMarkdown))return{kind:"render-markdown",source:y(r,u.renderSource,`${e}.renderSource`,n),readProp:Ie(r,u.renderProp,e,"renderProp"),format:ta(r,e)};if(w(r,u.IsSet))return{kind:"is-set",check:y(r,u.checkExpr,`${e}.checkExpr`,n)};if(w(r,u.CallFragment))return ra(r,e,n);if(w(r,u.Join))return{kind:"join",source:y(r,u.source,`${e}.source`,n),separator:be(r,u.separator,e)};if(w(r,u.Count))return{kind:"count",source:y(r,u.source,`${e}.source`,n)};if(w(r,u.Sum))return{kind:"sum",source:y(r,u.source,`${e}.source`,n)};if(w(r,u.Min))return{kind:"min",source:y(r,u.source,`${e}.source`,n)};if(w(r,u.Max))return{kind:"max",source:y(r,u.source,`${e}.source`,n)};if(w(r,u.Average))return{kind:"average",source:y(r,u.source,`${e}.source`,n)};if(w(r,u.ForEach))return{kind:"for-each",source:y(r,u.source,`${e}.source`,n),loopVar:be(r,u.loopVar,e),emit:y(r,u.emit,`${e}.emit`,n)};if(w(r,u.ListMap))return{kind:"list-map",source:y(r,u.source,`${e}.source`,n),loopVar:be(r,u.loopVar,e),mapBody:y(r,u.mapBody,`${e}.mapBody`,n)};if(w(r,u.Filter))return{kind:"filter",source:y(r,u.source,`${e}.source`,n),loopVar:be(r,u.loopVar,e),predicate:y(r,u.predicate,`${e}.predicate`,n)};if(w(r,u.PartitionBy))return{kind:"partition-by",source:y(r,u.source,`${e}.source`,n),loopVar:be(r,u.loopVar,e),partitionKey:y(r,u.partitionKey,`${e}.partitionKey`,n)};if(w(r,u.DistinctBy))return{kind:"distinct-by",source:y(r,u.source,`${e}.source`,n),loopVar:be(r,u.loopVar,e),distinctKey:y(r,u.distinctKey,`${e}.distinctKey`,n)};if(w(r,u.AllStatements))return{kind:"all-statements",source:y(r,u.statementsOf,`${e}.statementsOf`,n)};if(w(r,u.StatementPredicate))return{kind:"statement-predicate",source:y(r,u.predicateOf,`${e}.predicateOf`,n)};if(w(r,u.StatementValue))return{kind:"statement-value",source:y(r,u.valueOf,`${e}.valueOf`,n)};if(w(r,u.DateFormat))return{kind:"date-format",source:y(r,u.dateSource,`${e}.dateSource`,n),format:aa(r,e)};if(w(r,u.Add))return{kind:"add",left:y(r,u.arithLeft,`${e}.arithLeft`,n),right:y(r,u.arithRight,`${e}.arithRight`,n)};if(w(r,u.Subtract))return{kind:"subtract",left:y(r,u.arithLeft,`${e}.arithLeft`,n),right:y(r,u.arithRight,`${e}.arithRight`,n)};if(w(r,u.Multiply))return{kind:"multiply",left:y(r,u.arithLeft,`${e}.arithLeft`,n),right:y(r,u.arithRight,`${e}.arithRight`,n)};if(w(r,u.Divide))return{kind:"divide",left:y(r,u.arithLeft,`${e}.arithLeft`,n),right:y(r,u.arithRight,`${e}.arithRight`,n)};if(w(r,u.Reverse))return{kind:"reverse",source:y(r,u.source,`${e}.source`,n)};if(w(r,u.WindowedMap)){let t=ft(r,u.windowSize);if(t===void 0||!Number.isInteger(t)||t<1)throw new X("windowSize must be a positive integer",`${e}.windowSize`);return{kind:"windowed-map",source:y(r,u.source,`${e}.source`,n),windowSize:t,windowVar:be(r,u.windowVar,e),windowBody:y(r,u.windowBody,`${e}.windowBody`,n)}}if(w(r,u.PairwiseMap))return{kind:"pairwise-map",source:y(r,u.source,`${e}.source`,n),firstVar:be(r,u.firstVar,e),secondVar:be(r,u.secondVar,e),pairBody:y(r,u.pairBody,`${e}.pairBody`,n)};if(w(r,u.Scan))return{kind:"scan",source:y(r,u.source,`${e}.source`,n),initialState:y(r,u.initialState,`${e}.initialState`,n),stateVar:be(r,u.stateVar,e),elementVar:be(r,u.elementVar,e),accumulate:y(r,u.accumulate,`${e}.accumulate`,n)};if(w(r,u.ListItemAt))return{kind:"list-item-at",source:y(r,u.source,`${e}.source`,n),itemIndex:y(r,u.itemIndex,`${e}.itemIndex`,n)};if(w(r,u.Equals))return{kind:"equals",left:y(r,u.compareLeft,`${e}.compareLeft`,n),right:y(r,u.compareRight,`${e}.compareRight`,n)};if(w(r,u.GreaterThan))return{kind:"greater-than",left:y(r,u.compareLeft,`${e}.compareLeft`,n),right:y(r,u.compareRight,`${e}.compareRight`,n)};if(w(r,u.LessThan))return{kind:"less-than",left:y(r,u.compareLeft,`${e}.compareLeft`,n),right:y(r,u.compareRight,`${e}.compareRight`,n)};if(w(r,u.GreaterThanOrEqual))return{kind:"greater-than-or-equal",left:y(r,u.compareLeft,`${e}.compareLeft`,n),right:y(r,u.compareRight,`${e}.compareRight`,n)};if(w(r,u.LessThanOrEqual))return{kind:"less-than-or-equal",left:y(r,u.compareLeft,`${e}.compareLeft`,n),right:y(r,u.compareRight,`${e}.compareRight`,n)};if(w(r,u.Not))return{kind:"not",operand:y(r,u.operand,`${e}.operand`,n)};if(w(r,u.And))return{kind:"and",operands:Sn(r,u.operands,`${e}.operands`,n)};if(w(r,u.Or))return{kind:"or",operands:Sn(r,u.operands,`${e}.operands`,n)};if(w(r,u.Contains))return{kind:"contains",haystack:y(r,u.haystack,`${e}.haystack`,n),needle:y(r,u.needle,`${e}.needle`,n)};if(w(r,u.Abs))return{kind:"abs",value:y(r,u.value,`${e}.value`,n)};if(w(r,u.Negate))return{kind:"negate",value:y(r,u.value,`${e}.value`,n)};if(w(r,u.IsReference))return{kind:"is-reference",check:y(r,u.kindCheck,`${e}.kindCheck`,n)};if(w(r,u.IsEmbedded))return{kind:"is-embedded",check:y(r,u.kindCheck,`${e}.kindCheck`,n)};if(w(r,u.IsList))return{kind:"is-list",check:y(r,u.kindCheck,`${e}.kindCheck`,n)};if(w(r,u.IsString))return{kind:"is-string",check:y(r,u.kindCheck,`${e}.kindCheck`,n)};if(w(r,u.IsNumber))return{kind:"is-number",check:y(r,u.kindCheck,`${e}.kindCheck`,n)};if(w(r,u.IsBoolean))return{kind:"is-boolean",check:y(r,u.kindCheck,`${e}.kindCheck`,n)};if(w(r,u.StatementObject))return{kind:"statement-object",source:y(r,u.statementSource,`${e}.statementSource`,n)};if(w(r,u.Let))return{kind:"let",bindName:be(r,u.letName,e),bindValue:y(r,u.letValue,`${e}.letValue`,n),body:y(r,u.letBody,`${e}.letBody`,n)};if(w(r,u.GetStatementByName))return{kind:"get-statement-by-name",inSubject:y(r,u.inSubject,`${e}.inSubject`,n),byName:y(r,u.byName,`${e}.byName`,n)};throw new X("Expression is not of a recognized v3 type \u2014 embedded has no matching subclass of tx.Expression",e)}function y(r,e,n,t){let a=Je(r,e);if(!a)throw new X("child expression is required",n);return Oe(a,n,t)}function Qt(r,e,n,t){let a=Je(r,e);if(a)return Oe(a,n,t)}function Sn(r,e,n,t){let a=[],s=0;for(let o of ve(r,e))if(o instanceof I)for(let i of o.object)i instanceof V&&a.push(Oe(i,`${n}[${s++}]`,t));else o instanceof H&&a.push(Oe(o.object,`${n}[${s++}]`,t));return a}function ea(r,e,n){let t=[],a=0;for(let s of ve(r,u.set))if(s instanceof I)for(let o of s.object)o instanceof V&&t.push(st(o,`${e}[${a++}]`,n));else s instanceof H&&t.push(st(s.object,`${e}[${a++}]`,n));return t}function st(r,e,n){return{field:Ie(r,u.field,e,"field"),value:y(r,u.bindValue,`${e}.bindValue`,n)}}function na(r,e){let n=Ue(r,u.normKind);if(!n)throw new X("normKind is required",e);if(fe(n,u.NORM_TRIM_END))return"trim-end";if(fe(n,u.NORM_TO_UPPER))return"to-upper";if(fe(n,u.NORM_TO_LOWER))return"to-lower";if(fe(n,u.NORM_FIRST_CHAR))return"first-char";throw new X(`Unknown NormalizeKind: ${n.publisher}/${n.package_}/${n.name}`,e)}function ta(r,e){let n=Ue(r,u.renderFormat);if(!n)throw new X("renderFormat is required",e);if(fe(n,u.RENDER_HTML))return"html";if(fe(n,u.RENDER_MARKDOWN))return"markdown";throw new X(`Unknown RenderFormat: ${n.publisher}/${n.package_}/${n.name}`,e)}var ot=new Set(["iso-date","iso-datetime","short-date","long-date","year","month-year"]);function aa(r,e){let n=He(r,u.dateFormat);if(!n)throw new X("dateFormat is required",e);if(!ot.has(n))throw new X(`Unknown dateFormat "${n}"; supported: ${[...ot].join(", ")}`,e);return n}function ra(r,e,n){let t=Ue(r,u.fragmentRef);if(!t)throw new X("fragmentRef is required",e);if(!ia(n.catalog,t))throw new X(`ExpressionFragment not found: ${t.publisher}/${t.package_}/${t.name}`,e);return{kind:"call-fragment",fragmentKey:sa(t)}}function sa(r){return`${r.publisher}/${r.package_}/${r.name}`}function oa(r){let e=new Map,n=[];for(let t of r){if(!(t instanceof q)||!w(t,u.ExpressionFragment))continue;let a=Je(t,u.body);if(!a)continue;let s=(t.namespace||"").split("@")[0]||"",o=s.indexOf("/");if(o<0)continue;let i=s.substring(0,o),c=s.substring(o+1),l=`${i}/${c}/${t.name}`;n.push({key:l,subject:t,bodyEmb:a,pubPkgName:`${s}/${t.name}`})}for(let t of n){let a=Oe(t.bodyEmb,`fragment(${t.pubPkgName})`,{catalog:r,depth:0});e.set(t.key,a)}return e}function ia(r,e){for(let n of r)if(!(!(n instanceof q)||n.name!==e.name||!(n.namespace||"").startsWith(`${e.publisher}/${e.package_}@`))&&w(n,u.ExpressionFragment))return n}function ut(r,e){let n=new Set;for(let t of ve(r,u.outputs))if(t instanceof x)n.add(t.object.subject.name);else if(t instanceof I)for(let a of t.object)a instanceof j&&n.add(a.subject.name);if(n.size===0)throw new X("outputs is required (at least one OutputFormat)",e);return n}function dt(r,e,n){let t=new Map,a=0;for(let s of ve(r,u.formatOverrides))if(s instanceof I){for(let o of s.object)if(o instanceof V){let[i,c]=it(o,`${e}[${a++}]`);t.set(i,c)}}else if(s instanceof H){let[o,i]=it(s.object,`${e}[${a++}]`);t.set(o,i)}return t}function it(r,e){let n=Ue(r,u.formatTarget);if(!n)throw new X("formatTarget is required",e);let t=[];for(let i of ve(r,u.metadataKeys))if(i instanceof W)t.push(i.object);else if(i instanceof I)for(let c of i.object){let l=c.value;typeof l=="string"&&t.push(l)}let a=new Map;for(let i of ve(r,u.metadataRenames))if(i instanceof I){for(let c of i.object)if(c instanceof V){let l=He(c,u.fromKey),d=He(c,u.toKey);l&&d&&a.set(l,d)}}else if(i instanceof H){let c=i.object,l=He(c,u.fromKey),d=He(c,u.toKey);l&&d&&a.set(l,d)}let s=wn(r,u.trailingNewline),o=wn(r,u.omitWrapper);return[n.name,{metadataKeys:t.length>0?t:void 0,metadataRenames:a,trailingNewline:s,omitWrapper:o}]}function ca(r){return r.predicate?.subject}function ve(r,e){let n=[];for(let t of r.statement){let a=ca(t);a&&fe(a,e)&&n.push(t)}return n}function Je(r,e){for(let n of ve(r,e))if(n instanceof H)return n.object}function Ue(r,e){for(let n of ve(r,e))if(n instanceof x)return _n(n.object.subject)}function He(r,e){for(let n of ve(r,e))if(n instanceof W)return n.object}function ft(r,e){for(let n of ve(r,e))if(n instanceof ie)return n.object}function wn(r,e){for(let n of ve(r,e))if(n instanceof ae)return n.object}function be(r,e,n){let t=He(r,e);if(t===void 0)throw new X(`${e.name} (string) is required`,n);return t}function ct(r,e,n){let t=ft(r,e);if(t===void 0)throw new X(`${e.name} (number) is required`,n);return t}function la(r,e,n){let t=wn(r,e);if(t===void 0)throw new X(`${e.name} (boolean) is required`,n);return t}function Ie(r,e,n,t){let a=Ue(r,e);if(!a)throw new X(`${t} (URI reference) is required`,n);return a}function _n(r){return{publisher:r.publisher,package_:r.package_,name:r.name}}var rn=class{constructor(e,n,t){this.repository=e;this.parser=n;this.objectParser=t}repository;parser;objectParser;cache=new Map;async resolveSubject(e,n){let t=Me(n,e);if(t)return t;let a=e.version,s=a&&typeof a.major=="number"?`@${a.major}.${a.minor}.${a.patch}`:"",o=`${e.publisher}/${e.package_}${s}`,i=this.cache.get(o);if(!i){let l=await this.repository.getDocumentsByNamespaceAsync(e.publisher,e.package_);if(l.length===0)return;let d=a&&typeof a.major=="number"?l.find(p=>{let m=p.metadata?.namespace_?.version;return m&&m.major===a.major&&m.minor===a.minor&&m.patch===a.patch})??l[0]:l[0],f=new Mn(d,this.repository);i=await this.objectParser.parseKanonaks(f),this.cache.set(o,i)}let c=Me(i,e);if(c)return c;for(let l of i)if(l instanceof q&&l.name===e.name)return l}};var sn=class{byLang=new Map;constructor(e){for(let n of e){if(!n.language)continue;let t=[];for(let a of n.rules){if(!a.tokenClass||!a.pattern)continue;let s;try{s=new RegExp(a.pattern,"y")}catch{continue}t.push({tokenClass:a.tokenClass,re:s})}this.byLang.set(n.language,t)}}has(e){return this.byLang.has(e)}highlight(e,n){let t=this.byLang.get(e);return!t||t.length===0?De(n):n.split(`
|
|
18
|
-
`).map(a=>this.highlightLine(a,t)).join(`
|
|
19
|
-
`)}highlightLine(e,n){let t="",a=0;for(;a<e.length;){let s=!1;for(let o of n){o.re.lastIndex=a;let i=o.re.exec(e);if(i&&i[0].length>0){t+=`<span class="kan-tok-${o.tokenClass}">${De(i[0])}</span>`,a+=i[0].length,s=!0;break}}s||(t+=De(e[a]),a++)}return t}};var fn={publisher:"kanonak.org",package_:"derivation",name:"look"},pn={publisher:"kanonak.org",package_:"derivation",name:"tokens"},we={publisher:"kanonak.org",package_:"core-rdf",name:"Resource"},jn={publisher:"kanonak.org",package_:"core-rdf",name:"label"},pt={publisher:"kanonak.org",package_:"core-rdf",name:"comment"},ua={publisher:"kanonak.org",package_:"core-rdf",name:"range"},da={publisher:"kanonak.org",package_:"core-rdf",name:"Class"},fa={publisher:"kanonak.org",package_:"core-owl",name:"Class"},pa={publisher:"kanonak.org",package_:"look",name:"Hero"},ga={publisher:"kanonak.org",package_:"look",name:"PropertyList"},ka={publisher:"kanonak.org",package_:"look",name:"PropertyTable"},ma={publisher:"kanonak.org",package_:"look",name:"BadgeRow"},ha={publisher:"kanonak.org",package_:"look",name:"ChipRow"},ba={publisher:"kanonak.org",package_:"look",name:"ReferenceList"},va={publisher:"kanonak.org",package_:"look",name:"ReferencedBy"},ya={publisher:"kanonak.org",package_:"look",name:"Instances"},gt={publisher:"kanonak.org",package_:"look",name:"Markdown"},$a={publisher:"kanonak.org",package_:"look",name:"NavGroup"},Sa={publisher:"kanonak.org",package_:"look",name:"nav"},Kn={publisher:"kanonak.org",package_:"look",name:"NavLink"},wa={publisher:"kanonak.org",package_:"look",name:"footer"},_a={publisher:"kanonak.org",package_:"look",name:"text"},ja={publisher:"kanonak.org",package_:"look",name:"links"},kt={publisher:"kanonak.org",package_:"look",name:"target"},Ka={publisher:"kanonak.org",package_:"look",name:"ResourceGrid"},Ra={publisher:"kanonak.org",package_:"look",name:"Timeline"},Ea={publisher:"kanonak.org",package_:"look",name:"VersionDiff"},La={publisher:"kanonak.org",package_:"look",name:"Figure"},Oa={publisher:"kanonak.org",package_:"look",name:"Diagram"},Ua={publisher:"kanonak.org",package_:"look",name:"facets"},Ca={publisher:"kanonak.org",package_:"look",name:"relation"},Ia={publisher:"kanonak.org",package_:"look",name:"encode"},Ta={publisher:"kanonak.org",package_:"look",name:"cluster"},Fa={publisher:"kanonak.org",package_:"look",name:"connector"},xa={publisher:"kanonak.org",package_:"look",name:"channels"},Va={publisher:"kanonak.org",package_:"look",name:"mapPath"},Pa={publisher:"kanonak.org",package_:"look",name:"to"},Aa={publisher:"kanonak.org",package_:"look",name:"mark"},Ma={publisher:"kanonak.org",package_:"look",name:"expand"},Na={publisher:"kanonak.org",package_:"look",name:"edges"},Da={publisher:"kanonak.org",package_:"look",name:"nodeTier"},Ba={publisher:"kanonak.org",package_:"look",name:"diagramTier"},Ha={publisher:"kanonak.org",package_:"look",name:"nodeNote"},za={publisher:"kanonak.org",package_:"look",name:"edgeLabel"},Ga={publisher:"kanonak.org",package_:"look",name:"labelEdges"},qa={publisher:"kanonak.org",package_:"look",name:"edgeValue"},Wa={publisher:"kanonak.org",package_:"look",name:"figureTitle"},Ya={publisher:"kanonak.org",package_:"look",name:"titlePosition"},Xa=`(function(){
|
|
20
|
-
if(window.__kanDiagramZoom)return;window.__kanDiagramZoom=1;
|
|
21
|
-
var TIERS=['chip','icon','card','full'];
|
|
22
|
-
var css='.kan-dgm-tier[hidden]{display:none}.kan-dgm-tiers{position:relative}'
|
|
23
|
-
+'.kan-dgm-tiers>.kan-dgm-btn{opacity:0;transition:opacity .12s}.kan-dgm-tiers:hover>.kan-dgm-btn,.kan-dgm-btn:focus{opacity:1}'
|
|
24
|
-
+'#kan-dgm-modal{position:fixed;inset:0;z-index:9999;display:none;background:rgba(0,0,0,.85);cursor:grab}'
|
|
25
|
-
+'#kan-dgm-stage{position:absolute;top:50%;left:50%}'
|
|
26
|
-
+'#kan-dgm-bar{position:fixed;top:14px;left:50%;transform:translateX(-50%);display:flex;gap:9px;align-items:center;font:12px sans-serif;color:#cbd5e1;background:rgba(12,18,32,.92);border:1px solid #1e293b;border-radius:999px;padding:7px 14px;user-select:none}'
|
|
27
|
-
+'#kan-dgm-bar .pip{width:9px;height:9px;border-radius:50%;background:#334155;cursor:pointer}'
|
|
28
|
-
+'#kan-dgm-bar .pip.on{background:#38bdf8}'
|
|
29
|
-
+'#kan-dgm-lbl{min-width:32px;text-transform:capitalize}';
|
|
30
|
-
var sty=document.createElement('style');sty.textContent=css;(document.head||document.documentElement).appendChild(sty);
|
|
31
|
-
var S={cont:null,mode:'snap',tier:1,z:1,x:0,y:0,drag:0,sx:0,sy:0,lock:0};
|
|
32
|
-
function el(id){return document.getElementById(id);}
|
|
33
|
-
function modal(){var m=el('kan-dgm-modal');if(m)return m;
|
|
34
|
-
m=document.createElement('div');m.id='kan-dgm-modal';
|
|
35
|
-
var st=document.createElement('div');st.id='kan-dgm-stage';m.appendChild(st);
|
|
36
|
-
var bar=document.createElement('div');bar.id='kan-dgm-bar';
|
|
37
|
-
var lbl=document.createElement('span');lbl.id='kan-dgm-lbl';bar.appendChild(lbl);
|
|
38
|
-
for(var i=0;i<4;i++){(function(i){var p=document.createElement('span');p.className='pip';p.title=TIERS[i];p.addEventListener('click',function(e){e.stopPropagation();setTier(i);});bar.appendChild(p);})(i);}
|
|
39
|
-
var h=document.createElement('span');h.textContent='scroll: zoom \\u00b7 drag: pan \\u00b7 esc';h.style.cssText='margin-left:6px;color:#64748b';bar.appendChild(h);
|
|
40
|
-
m.appendChild(bar);m.addEventListener('click',function(e){if(e.target===m)close();});document.body.appendChild(m);return m;}
|
|
41
|
-
function apply(){var st=el('kan-dgm-stage');if(st)st.style.transform='translate(calc(-50% + '+S.x+'px),calc(-50% + '+S.y+'px)) scale('+S.z+')';}
|
|
42
|
-
function updBar(){var b=el('kan-dgm-bar');if(!b)return;var geo=S.mode==='geo';var ps=b.querySelectorAll('.pip');for(var i=0;i<ps.length;i++){ps[i].style.display=geo?'none':'';ps[i].className='pip'+(i===S.tier?' on':'');}el('kan-dgm-lbl').textContent=geo?'zoom':TIERS[S.tier];}
|
|
43
|
-
function sizeVisible(){var c=S.cont;if(!c||S.mode==='geo')return;var svg=c.querySelector('.kan-dgm-tier:not([hidden]) svg');if(svg){var vb=(svg.getAttribute('viewBox')||'0 0 800 600').split(' ');var w=parseFloat(vb[2])||800;svg.style.width=Math.min(w,window.innerWidth*0.92)+'px';svg.style.height='auto';svg.style.display='block';}apply();}
|
|
44
|
-
function setTier(i){i=Math.max(0,Math.min(3,i));S.tier=i;var c=S.cont;if(!c)return;var ts=c.querySelectorAll('.kan-dgm-tier');for(var j=0;j<ts.length;j++){if(ts[j].getAttribute('data-tier')===TIERS[i])ts[j].removeAttribute('hidden');else ts[j].setAttribute('hidden','');}sizeVisible();updBar();}
|
|
45
|
-
function uniq(root){var seq=(window.__kanMk=(window.__kanMk||0)+1);var map={};var mk=root.querySelectorAll('marker[id]');for(var i=0;i<mk.length;i++){var o=mk[i].getAttribute('id');var n=o+'_z'+seq;map[o]=n;mk[i].setAttribute('id',n);}var all=root.querySelectorAll('[marker-end],[marker-start],[marker-mid]');for(var j=0;j<all.length;j++){(function(e){['marker-end','marker-start','marker-mid'].forEach(function(a){var v=e.getAttribute(a);if(!v)return;var mm=v.match(/url\\(#(.+?)\\)/);if(mm&&map[mm[1]])e.setAttribute(a,'url(#'+map[mm[1]]+')');});})(all[j]);}}
|
|
46
|
-
function open(tiersEl){modal();var st=el('kan-dgm-stage');var c=tiersEl.cloneNode(true);uniq(c);var bb=c.querySelector('.kan-dgm-btn');if(bb&&bb.parentNode)bb.parentNode.removeChild(bb);st.innerHTML='';st.appendChild(c);S.cont=c;S.x=0;S.y=0;S.z=1;
|
|
47
|
-
S.mode=c.getAttribute('data-geo')?'geo':'snap';
|
|
48
|
-
var vis=c.querySelector('.kan-dgm-tier:not([hidden])');var t=vis?vis.getAttribute('data-tier'):'icon';S.tier=Math.max(0,TIERS.indexOf(t));
|
|
49
|
-
el('kan-dgm-modal').style.display='block';
|
|
50
|
-
if(S.mode==='geo'){var bw=c.getBoundingClientRect().width||600;S.z=Math.min(1.8,(window.innerWidth*0.9)/bw);if(!(S.z>0))S.z=1;}else sizeVisible();
|
|
51
|
-
apply();updBar();}
|
|
52
|
-
function close(){var m=el('kan-dgm-modal');if(m){m.style.display='none';el('kan-dgm-stage').innerHTML='';S.cont=null;}}
|
|
53
|
-
document.addEventListener('wheel',function(e){var m=el('kan-dgm-modal');if(!m||m.style.display==='none')return;e.preventDefault();
|
|
54
|
-
if(S.mode==='geo'){S.z*=e.deltaY<0?1.15:1/1.15;S.z=Math.max(.2,Math.min(S.z,9));apply();return;}
|
|
55
|
-
var n=Date.now();if(n-S.lock<200)return;S.lock=n;setTier(S.tier+(e.deltaY<0?1:-1));},{passive:false});
|
|
56
|
-
document.addEventListener('mousedown',function(e){var m=el('kan-dgm-modal');if(!m||m.style.display==='none')return;S.drag=1;S.sx=e.clientX-S.x;S.sy=e.clientY-S.y;m.style.cursor='grabbing';});
|
|
57
|
-
document.addEventListener('mousemove',function(e){if(!S.drag)return;S.x=e.clientX-S.sx;S.y=e.clientY-S.sy;apply();});
|
|
58
|
-
document.addEventListener('mouseup',function(){S.drag=0;var m=el('kan-dgm-modal');if(m)m.style.cursor='grab';});
|
|
59
|
-
document.addEventListener('keydown',function(e){if(e.key==='Escape')close();});
|
|
60
|
-
function enhance(){var cs=document.querySelectorAll('.kan-dgm-tiers');for(var i=0;i<cs.length;i++){(function(c){if(c.__kz)return;c.__kz=1;
|
|
61
|
-
var b=document.createElement('button');b.type='button';b.className='kan-dgm-btn';b.textContent='\\u2922';b.setAttribute('aria-label','Open and zoom');
|
|
62
|
-
b.style.cssText='position:absolute;top:6px;right:6px;z-index:3;border:1px solid var(--kan-border,#333);background:var(--kan-bg-card,#111);color:var(--kan-text,#ccc);border-radius:6px;width:28px;height:28px;cursor:pointer;font-size:15px;line-height:1;padding:0';
|
|
63
|
-
b.addEventListener('click',function(ev){ev.preventDefault();ev.stopPropagation();open(c);});c.appendChild(b);})(cs[i]);}}
|
|
64
|
-
if(document.readyState!=='loading')enhance();else document.addEventListener('DOMContentLoaded',enhance);
|
|
65
|
-
})();`,Ze={chip:56,icon:120,card:240,full:420},Ja=["chip","icon","card","full"],Za={56:"chip",120:"icon",240:"card",420:"full"},_e=11,Qa={publisher:"kanonak.org",package_:"look",name:"placement"},er={publisher:"kanonak.org",package_:"look",name:"width"},nr=4,tr={publisher:"kanonak.org",package_:"look",name:"StatRow"},ar={publisher:"kanonak.org",package_:"look",name:"Horizon"},rr={publisher:"kanonak.org",package_:"look",name:"PackageContents"},Rn={publisher:"kanonak.org",package_:"core-kanonak",name:"Package"},sr={publisher:"kanonak.org",package_:"core-kanonak",name:"Publisher"},or={publisher:"kanonak.org",package_:"look",name:"FeaturedResource"},ir={publisher:"kanonak.org",package_:"look",name:"PublisherPackages"},cr={publisher:"kanonak.org",package_:"look",name:"packages"},lr={publisher:"kanonak.org",package_:"code-grammars",name:"CodeGrammar"},ur={publisher:"kanonak.org",package_:"code-grammars",name:"language"},dr={publisher:"kanonak.org",package_:"code-grammars",name:"rule"},fr={publisher:"kanonak.org",package_:"code-grammars",name:"tokenClass"},pr={publisher:"kanonak.org",package_:"code-grammars",name:"pattern"},gr={publisher:"kanonak.org",package_:"look",name:"Links"},kr={publisher:"kanonak.org",package_:"link",name:"url"},mr={publisher:"kanonak.org",package_:"link",name:"links"};var hr={publisher:"kanonak.org",package_:"look",name:"Distribution"},br={publisher:"kanonak.org",package_:"look",name:"alphaPath"},vr={publisher:"kanonak.org",package_:"look",name:"betaPath"},En={publisher:"kanonak.org",package_:"look",name:"SectionHeading"},yr={publisher:"kanonak.org",package_:"look",name:"SectionNav"},mt={publisher:"kanonak.org",package_:"look",name:"heading"},$r={publisher:"kanonak.org",package_:"look",name:"note"},Sr={publisher:"kanonak.org",package_:"look",name:"VersionDelta"},wr={publisher:"kanonak.org",package_:"look",name:"TimePlot"},_r={publisher:"kanonak.org",package_:"look",name:"Details"},jr={publisher:"kanonak.org",package_:"look",name:"EmbeddedViews"},Kr={publisher:"kanonak.org",package_:"look",name:"ResourceCount"},Rr={publisher:"kanonak.org",package_:"look",name:"counts"},Er={publisher:"kanonak.org",package_:"look",name:"skip"},Lr={publisher:"kanonak.org",package_:"derivation",name:"derivations"},Or={publisher:"kanonak.org",package_:"look",name:"laneBy"},Ur={publisher:"kanonak.org",package_:"look",name:"stats"},Cr={publisher:"kanonak.org",package_:"look",name:"statPath"},Ir={publisher:"kanonak.org",package_:"look",name:"statLabel"},ht={publisher:"kanonak.org",package_:"look",name:"labelPath"},Tr={publisher:"kanonak.org",package_:"look",name:"badgePath"},bt={publisher:"kanonak.org",package_:"look",name:"BarMeter"},Fr={publisher:"kanonak.org",package_:"look",name:"cellAs"},xr={publisher:"kanonak.org",package_:"look",name:"variants"},Vr={publisher:"kanonak.org",package_:"look",name:"when"},Pr={publisher:"kanonak.org",package_:"look",name:"property"},vt={publisher:"kanonak.org",package_:"look",name:"equals"},Ar={publisher:"kanonak.org",package_:"look",name:"ResourceQuery"},Mr={publisher:"kanonak.org",package_:"look",name:"ofClass"},Nr={publisher:"kanonak.org",package_:"look",name:"direction"},Dr={publisher:"kanonak.org",package_:"look",name:"limit"},on={publisher:"kanonak.org",package_:"look",name:"orderBy"},yt={publisher:"kanonak.org",package_:"look",name:"track"},Qe={publisher:"kanonak.org",package_:"look",name:"metricPath"},Ln={publisher:"kanonak.org",package_:"look",name:"hueBy"},$t={publisher:"kanonak.org",package_:"look",name:"lowerPath"},St={publisher:"kanonak.org",package_:"look",name:"upperPath"},Br={publisher:"kanonak.org",package_:"look",name:"axisMin"},Hr={publisher:"kanonak.org",package_:"look",name:"axisMax"},zr={publisher:"kanonak.org",package_:"look",name:"valueLabel"};var wt={publisher:"kanonak.org",package_:"look",name:"semanticSvg"},Gr={publisher:"kanonak.org",package_:"look",name:"tierChip"},qr={publisher:"kanonak.org",package_:"look",name:"tierIcon"},Wr={publisher:"kanonak.org",package_:"look",name:"tierCard"},Yr={publisher:"kanonak.org",package_:"look",name:"tierFull"},Ce={publisher:"kanonak.org",package_:"core-rdf",name:"type"},_t={publisher:"kanonak.org",package_:"core-rdf",name:"subClassOf"},jt=6,On={publisher:"kanonak.org",package_:"look",name:"bands"},Xr={publisher:"kanonak.org",package_:"look",name:"title"},Jr={publisher:"kanonak.org",package_:"look",name:"eyebrow"},Zr={publisher:"kanonak.org",package_:"look",name:"subtitle"},Kt={publisher:"kanonak.org",package_:"look",name:"badges"},se={publisher:"kanonak.org",package_:"look",name:"source"},Qr={publisher:"kanonak.org",package_:"look",name:"via"},es={publisher:"kanonak.org",package_:"look",name:"size"},ns={publisher:"kanonak.org",package_:"look",name:"icon"},ts={publisher:"kanonak.org",package_:"look",name:"avatar"},as={publisher:"kanonak.org",package_:"look",name:"contents"},rs={publisher:"kanonak.org",package_:"look",name:"transitive"},ss={publisher:"kanonak.org",package_:"look",name:"chips"},Rt={publisher:"kanonak.org",package_:"look",name:"entries"},os={publisher:"kanonak.org",package_:"look",name:"urlForm"},kn=class r{constructor(e){this.catalog=e}catalog;linkMode="single-publisher";setLinkMode(e){return this.linkMode=e,this}get publisherFirst(){return this.linkMode==="open-world"}linkBase(e){return this.publisherFirst?`/${e}`:""}resourceHref(e,n,t="="){return zn.formatResourceUrl(e,t,{contextPublisher:n,...this.publisherFirst?{publisherFirst:!0}:{}})}packageHref(e,n,t){return`${this.linkBase(e)}/${n}${t?`/${t}`:""}`}publisherHref(e){return`${this.linkBase(e)}/`}_codeHighlighter;findCascadedLook(e){let n=ls(e)?void 0:cn(e);return n?{declaration:n,sourceClass:{publisher:ne(e),package_:this.uriOf(e).package_,name:e.name}}:this.lookFromTypeRefs(me(e))}lookFromTypeRefs(e){let n=new Set,t=[...e];for(;t.length>0;){let s=t.shift().subject,o=Y(s);if(n.has(o))continue;n.add(o);let i=he(this.catalog,s);for(let c of i){let l=cn(c);if(l)return{declaration:l,sourceClass:{publisher:s.publisher,package_:s.package_,name:s.name}}}for(let c of i)for(let l of un(c))t.push(l)}if(!n.has(Y(we)))for(let a of he(this.catalog,we)){let s=cn(a);if(s)return{declaration:s,sourceClass:{...we}}}}matchingVariants(e){let n=this.findCascadedLook(e);if(!n)return[];let t=this.gatherValueItems(z(n.declaration,xr)).filter(i=>i instanceof V);if(t.length===0)return[];let a=Z(this.catalog,n.sourceClass),s={namespace:a?.namespace??"",name:a?.name??n.sourceClass.name},o=[];for(let i of t){let c=this.readEmbeddedCarrier(i,Vr);if(!c)continue;let l=T(c,Pr);if(!l)continue;let d=T(c,vt);if(d){let p=z(e,l);this.gatherValueItems(p).filter(h=>h instanceof j).some(h=>Y(h.subject)===Y(d))&&o.push({variant:i,declaredBy:s});continue}let f=ee(c,vt);f!==void 0&&this.readPropertyValueText(e,l)===f&&o.push({variant:i,declaredBy:s})}return o}findCascadedTokens(e){let n=this.explainCascadedTokens(e),t=new Map;for(let[a,s]of n)t.set(a,s.value);return t}explainCascadedTokens(e){let n=new Map,t=(i,c,l)=>{for(let[d,f]of is(i))n.has(d)||n.set(d,{value:f,sourceNamespace:l?.namespace??i.namespace??"",sourceName:l?.name??i.name,level:c})};t(e,"instance");for(let{variant:i,declaredBy:c}of this.matchingVariants(e))t(i,"variant",c);let a=new Set,s=me(e);for(;s.length>0;){let i=s.shift(),c=Y(i.subject);if(a.has(c))continue;a.add(c);let l=c===Y(we)?"resource-floor":"class",d=he(this.catalog,i.subject);if(d.length!==0)for(let f of d){t(f,l);for(let p of un(f))s.push(p)}}let o=ne(e);if(o){let i=this.publisherSubject(o);i!==e&&t(i,"publisher")}if(!a.has(Y(we))){let i=he(this.catalog,we);for(let c of i)t(c,"resource-floor")}return n}async renderSvg(e){let n=N(this.catalog,e).label,t=(n.trim().charAt(0)||"?").toUpperCase(),a=`${e.namespace??""}/${e.name}`,s=this.collectCascadedSvgTiers(e),o=new Map([["input",e],["label",n],["firstLetter",t],["uri",a],["resourceKey",e.name]]),i=await this.evaluateTier(s.tierChip,o),c=await this.evaluateTier(s.tierIcon,o),l=await this.evaluateTier(s.tierCard,o),d=await this.evaluateTier(s.tierFull,o),p=[...this.findCascadedTokens(e)].map(([m,h])=>`--kan-${m}: ${h};`).join(" ");return`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 400" style="${Re(p)}">
|
|
66
|
-
<style>
|
|
67
|
-
.tier-chip,.tier-icon,.tier-card{display:none}
|
|
68
|
-
.tier-full{display:block}
|
|
69
|
-
@media (max-width:400px){.tier-full{display:none}.tier-card{display:block}}
|
|
70
|
-
@media (max-width:160px){.tier-card{display:none}.tier-icon{display:block}}
|
|
71
|
-
@media (max-width:60px){.tier-icon{display:none}.tier-chip{display:block}}
|
|
72
|
-
</style>
|
|
73
|
-
<g class="tier-chip">${i}</g>
|
|
74
|
-
<g class="tier-icon">${c}</g>
|
|
75
|
-
<g class="tier-card">${l}</g>
|
|
76
|
-
<g class="tier-full">${d}</g>
|
|
77
|
-
</svg>`}resolverInstance;expressionResolver(){if(!this.resolverInstance){let e=new xn,n=new Fn(e);this.resolverInstance=new rn(n,e,new Hn(e))}return this.resolverInstance}async evaluateTier(e,n){if(!e)return"";let t;try{t=Oe(e,"semanticSvg-tier",{catalog:this.catalog,depth:0})}catch{return""}let a=new Xe(this.expressionResolver(),this.catalog);if(t.kind==="concat"){let o=[];for(let i of t.parts){let c=await a.evaluate(i,n);o.push(Lt(i.kind,c))}return o.join("")}let s=await a.evaluate(t,n);return Lt(t.kind,s)}async evaluateCarrier(e,n){if(!e)return;let t;try{t=Oe(e,"look-carrier",{catalog:this.catalog,depth:0})}catch{return}let a=new Xe(this.expressionResolver(),this.catalog),s=new Map([["input",n]]),o=await a.evaluate(t,s),i=It(o);return i===""?void 0:i}async evaluateCarrierNum(e,n){let t=await this.evaluateCarrier(e,n);return t===void 0?NaN:parseFloat(t)}readEmbeddedCarrier(e,n){let t=z(e,n);return t instanceof H&&t.object instanceof V?t.object:void 0}referenceLabel(e){let n=e.subject,t=he(this.catalog,n);if(t.length===0){let a=Z(this.catalog,n);a&&t.push(a)}for(let a of t){let s=N(this.catalog,a);if(s.label!==a.name)return s.label}return n.name}collectCascadedSvgTiers(e){let n={},t=c=>{let l=z(c,wt);if(!(l instanceof H))return;let d=l.object,f=ln(d,Gr),p=ln(d,qr),m=ln(d,Wr),h=ln(d,Yr);n.tierChip===void 0&&f!==void 0&&(n.tierChip=f),n.tierIcon===void 0&&p!==void 0&&(n.tierIcon=p),n.tierCard===void 0&&m!==void 0&&(n.tierCard=m),n.tierFull===void 0&&h!==void 0&&(n.tierFull=h)};t(e);let a=e.namespace||"",s=a.indexOf("/");if(s>=0){let c=a.indexOf("@"),l={publisher:a.slice(0,s),package_:a.slice(s+1,c>=0?c:a.length),name:e.name};for(let d of he(this.catalog,l))t(d)}let o=new Set,i=me(e);for(;i.length>0;){let c=i.shift(),l=Y(c.subject);if(o.has(l))continue;o.add(l);let d=he(this.catalog,c.subject);for(let f of d){t(f);for(let p of un(f))i.push(p)}}if(!o.has(Y(we)))for(let c of he(this.catalog,we))t(c);return n}renderStylesheet(e){let n=this.explainStylesheet(e),t=[];for(let[o,i]of n.tokens)t.push(` --kan-${o}: ${i.value};`);let a=t.length>0?`:root {
|
|
78
|
-
${t.join(`
|
|
79
|
-
`)}
|
|
80
|
-
}`:":root { /* no tokens resolved */ }",s=n.baseStylesheet.css??"";return`${us(n)}
|
|
81
|
-
${a}
|
|
82
|
-
${s}`}explainStylesheet(e){let n=this.explainCascadedTokens(e),t=this.explainBaseStylesheet(ne(e)),a=this.findCascadedLook(e),s=[];return t.css||(t.problem==="content-property-unresolved"?s.push(`Base stylesheet asset ${t.sourceNamespace}/base-stylesheet is in the catalog but its site.content property did not resolve \u2014 the package was likely cached without its imports block. Pages will render UNSTYLED (CSS stops at :root). Fix: re-install it from its published source: kanonak install kanonak.org/look-styles`):s.push("No look-styles package in the render catalog \u2014 pages will render UNSTYLED (CSS stops at :root). The look stack is ambient (not imported): it must be in the workspace, the global cache, or fetchable from kanonak.org by the user running the render. Fix: kanonak install kanonak.org/look-styles")),n.size===0&&s.push("No design tokens resolved \u2014 the :root block is empty. The universal token floor lives on rdfs.Resource in kanonak.org/look-tokens; that package is missing from the render catalog. Fix: kanonak install kanonak.org/look-tokens"),a||s.push(`No look (band declaration) resolved for ${e.namespace}/${e.name} \u2014 the HTML body will be an empty comment. The universal look floor lives on rdfs.Resource in kanonak.org/universal-look. Fix: kanonak install kanonak.org/universal-look`),{resource:{namespace:e.namespace||"",name:e.name},tokens:n,baseStylesheet:t,...a?{look:{sourceClass:a.sourceClass}}:{},warnings:s}}findBaseStylesheet(e){return this.explainBaseStylesheet(e).css}explainBaseStylesheet(e){let n="kanonak.org/site/content",t=f=>this.uriOf(f).version??null,a=[],s,o,i,c;for(let f of this.catalog){if(!(f instanceof q)||f.name!=="base-stylesheet")continue;let p=f.namespace||"";if(p.startsWith(`${e}/look-styles@`)){a.push(p);let m=t(f);m&&(!o||en(m,o)>0)&&(s=f,o=m)}else if(p.startsWith("kanonak.org/look-styles@")){a.push(p);let m=t(f);m&&(!c||en(m,c)>0)&&(i=f,c=m)}}let l=s??i;if(!l)return{problem:"no-look-styles-in-catalog",candidates:a};let d=l===s?"publisher-override":"universal-default";for(let f of l.statement){let p=f.predicate?.subject;if(!p)continue;if(`${p.publisher}/${p.package_}/${p.name}`===n&&f instanceof W)return{css:f.object,sourceNamespace:l.namespace||"",scope:d,candidates:a}}return{problem:"content-property-unresolved",sourceNamespace:l.namespace||"",scope:d,candidates:a}}async renderHtml(e){let n=this.findCascadedLook(e);if(!n)return`<!-- LookRenderer: no derivation.look found for ${e.namespace}/${e.name} -->`;let t=Un(n.declaration);if(t.length===0){let i=n.declaration.unresolvedPredicates;return i.length>0?`<!-- LookRenderer: look declaration has no bands \u2014 unresolved predicates dropped from the parse: ${i.map(l=>`${l.key} (authored by ${l.sourceDoc})`).join(", ")}. An import in the authoring document did not resolve; see the render-stack warnings (/.well-known/kanonak-render). -->`:"<!-- LookRenderer: look declaration has no bands -->"}let a=ne(e),s=this.collectSectionHeadings(t);this.diagramScriptEmitted=!1,this.diagramArrowSeq=0;let o=[];for(let i of t){let c=ze(i);c&&M(c,En)&&o.push('<div style="clear:both"></div>'),o.push(this.applyBandPlacement(i,await this.renderBand(i,e,a,s)))}return o.push('<div style="clear:both"></div>'),o.join(`
|
|
83
|
-
`)}applyBandPlacement(e,n){let t=ee(e,Qa);if(t!=="floatLeft"&&t!=="floatRight")return n;let a=t==="floatLeft"?"left":"right",s=ee(e,er),o=s&&/^\d+(\.\d+)?(%|px|rem|em)$/.test(s)?s:"42%";return`<div class="kan-band-float kan-band-${a}" style="float:${a};width:${o};margin:${a==="left"?"0 1.25rem 0.75rem 0":"0 0 0.75rem 1.25rem"}">${n}</div>`}collectSectionHeadings(e){let n=[];for(let t of e){let a=ze(t);if(!a||!M(a,En))continue;let s=ee(t,mt);s&&n.push({slug:Ot(s),label:s})}return n}publisherSubject(e){for(let t of this.catalog){if(!(t instanceof q)||ne(t)!==e||!me(t).some(s=>M(s.subject,sr)))continue;return he(this.catalog,{publisher:e,package_:this.uriOf(t).package_,name:t.name})[0]??t}let n=new q;return n.namespace=e,n.name=e,n.statement=[x.parse("kanonak.org/core-rdf/type","kanonak.org/core-kanonak/Publisher"),W.parse("kanonak.org/core-rdf/label",e)],n}hasDeclaredView(e){let n=this.findCascadedLook(e);return n?!(a=>a.publisher===we.publisher&&a.package_===we.package_&&a.name===we.name||a.publisher===Rn.publisher&&a.package_===Rn.package_&&a.name===Rn.name)(n.sourceClass):!1}renderPackageVersionList(e,n,t){let a=ne(t),s=this.renderNavGroup(t,a),o=this.renderBreadcrumb(t,a,{bareOverview:!0}),i=n.map(l=>`<a class="kan-resource-card" href="${g(this.packageHref(a,e,l))}/"><h3 class="kan-resource-card-title">${g(l)}</h3></a>`).join(`
|
|
84
|
-
`),c=`<header class="kan-hero">
|
|
85
|
-
<span class="kan-hero-eyebrow">PACKAGE</span>
|
|
86
|
-
<h1 class="kan-hero-title">${g(e)}</h1>
|
|
87
|
-
</header>
|
|
88
|
-
<section class="kan-resource-grid">
|
|
89
|
-
${i}
|
|
90
|
-
</section>`;return`<!doctype html>
|
|
91
|
-
<html lang="en">
|
|
92
|
-
<head>
|
|
93
|
-
<meta charset="utf-8">
|
|
94
|
-
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
95
|
-
<title>${g(e)}</title>
|
|
96
|
-
<link rel="stylesheet" href="${g(t.name)}.css">
|
|
97
|
-
</head>
|
|
98
|
-
<body>
|
|
99
|
-
${s}
|
|
100
|
-
${o}
|
|
101
|
-
<main class="kan-main">
|
|
102
|
-
${c}
|
|
103
|
-
</main>
|
|
104
|
-
</body>
|
|
105
|
-
</html>
|
|
106
|
-
`}async renderDocument(e,n){let t=await this.renderHtml(e),a=N(this.catalog,e).label,s=n?.rootIndex?"index.css":`${e.name}.css`,o=!n?.rootIndex&&this.hasSvgDerivation(e)?`<figure class="kan-figure"><img src="${g(e.name)}.svg" alt=""></figure>
|
|
107
|
-
`:"",i=ne(e),c=this.renderNavGroup(e,i),l=this.renderSiteFooter(i),d=n?.rootIndex?"":this.renderBreadcrumb(e,i,n);return`<!doctype html>
|
|
108
|
-
<html lang="en">
|
|
109
|
-
<head>
|
|
110
|
-
<meta charset="utf-8">
|
|
111
|
-
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
112
|
-
<title>${g(a)}</title>
|
|
113
|
-
<link rel="stylesheet" href="${g(s)}">
|
|
114
|
-
</head>
|
|
115
|
-
<body>
|
|
116
|
-
${c}
|
|
117
|
-
${d}
|
|
118
|
-
<main class="kan-main">
|
|
119
|
-
${o}${t}
|
|
120
|
-
</main>
|
|
121
|
-
${l}
|
|
122
|
-
</body>
|
|
123
|
-
</html>
|
|
124
|
-
`}hasSvgDerivation(e){let n=new Set,t=me(e);for(;t.length>0;){let a=t.shift(),s=Y(a.subject);if(n.has(s))continue;n.add(s);let o=Z(this.catalog,a.subject);if(o){for(let i of o.statement)if(i instanceof I&&$e(i,"kanonak.org","derivation","derivations")){for(let c of i.object??[])if(c instanceof V)for(let l of c.statement){if(!(l instanceof x)||!$e(l,"kanonak.org","derivation","format")||!(l.object instanceof j))continue;let d=l.object.subject;if(d.publisher==="kanonak.org"&&d.package_==="formats"&&d.name==="svg")return!0}}for(let i of un(o))t.push(i)}}return!1}static BAND_DISPATCH=[[yr,(e,n)=>e.renderSectionNav(n.sections)],[pa,(e,n)=>e.renderHero(n.band,n.instance,n.contextPublisher)],[ga,(e,n)=>e.renderPropertyList(n.band,n.instance,n.contextPublisher)],[ka,(e,n)=>e.renderPropertyTable(n.band,n.instance,n.contextPublisher,n.pathPrefix)],[ma,(e,n)=>e.renderBadgeRow(n.band,n.instance,n.contextPublisher)],[ha,(e,n)=>e.renderChipRow(n.band,n.instance,n.contextPublisher)],[ba,(e,n)=>e.renderReferenceList(n.band,n.instance,n.contextPublisher)],[va,(e,n)=>e.renderReferencedBy(n.band,n.instance,n.contextPublisher)],[ya,(e,n)=>e.renderInstances(n.band,n.instance,n.contextPublisher)],[gt,(e,n)=>e.renderMarkdown(n.band,n.instance,n.contextPublisher)],[gr,(e,n)=>e.renderLinks(n.band,n.instance)],[$a,(e,n)=>e.renderNavGroup(n.instance,n.contextPublisher)],[Ka,(e,n)=>e.renderResourceGrid(n.band,n.contextPublisher,n.instance)],[Ra,(e,n)=>e.renderTimeline(n.band,n.contextPublisher)],[Ea,(e,n)=>e.renderVersionDiff(n.band,n.contextPublisher)],[La,(e,n)=>e.renderFigure(n.band,n.instance,n.contextPublisher)],[Oa,(e,n)=>e.renderDiagram(n.band,n.instance,n.contextPublisher)],[tr,(e,n)=>e.renderStatRow(n.band,n.instance)],[ar,(e,n)=>e.renderHorizon(n.band,n.instance,n.contextPublisher)],[rr,(e,n)=>e.renderPackageContents(n.instance,n.contextPublisher)],[or,(e,n)=>e.renderFeaturedResource(n.band,n.contextPublisher)],[ir,(e,n)=>e.renderPublisherPackages(n.band,n.contextPublisher)],[hr,(e,n)=>e.renderDistribution(n.band,n.instance)],[En,(e,n)=>e.renderSectionHeading(n.band)],[Sr,(e,n)=>e.renderVersionDelta(n.band,n.instance)],[wr,(e,n)=>e.renderTimePlot(n.band,n.instance,n.contextPublisher)],[_r,(e,n)=>e.renderDetails(n.band,n.instance,n.contextPublisher)],[jr,(e,n)=>e.renderEmbeddedViews(n.band,n.instance,n.contextPublisher,n.pathPrefix)],[Kr,(e,n)=>e.renderResourceCount(n.band,n.contextPublisher)],[bt,(e,n)=>e.renderBarMeter(n.band,n.instance)]];static bandDispatchUris(){return r.BAND_DISPATCH.map(([e])=>e)}uriOf(e){let n=Nn(e);return n?{publisher:n.publisher,package_:n.package_,name:n.name,...n.version?{version:n.version}:{}}:{publisher:ne(e),package_:"",name:e.name}}async renderBand(e,n,t,a=[],s=""){let o=ze(e);if(!o)return"<!-- LookRenderer: band has no rdf:type -->";let i={band:e,instance:n,contextPublisher:t,sections:a,pathPrefix:s};for(let[c,l]of r.BAND_DISPATCH)if(M(o,c))return l(this,i);return`<!-- LookRenderer: unsupported band ${o.publisher}/${o.package_}/${o.name} -->`}async collectTrackedSeries(e,n,t,a){let{hueBy:s,lowerPath:o,upperPath:i}=a??{},c=new Map,l=e.length;for(let d=0;d<e.length;d++){let f=e[d],p=this.readPropertyValueReferences(f,n);for(let m of p){let h=Z(this.catalog,{publisher:m.subject.publisher,package_:m.subject.package_,name:m.subject.name,...m.subject.version?{version:m.subject.version}:{}});if(!h)continue;let b=m.subject.name,k=c.get(b);k||(k={key:b,label:N(this.catalog,h).label,points:new Array(l).fill(null),...o?{lower:new Array(l).fill(null)}:{},...i?{upper:new Array(l).fill(null)}:{}},c.set(b,k));let $=await this.evaluateCarrierNum(t,h);if(Number.isFinite($)&&(k.points[d]=$),o&&k.lower){let v=await this.evaluateCarrierNum(o,h);Number.isFinite(v)&&(k.lower[d]=v)}if(i&&k.upper){let v=await this.evaluateCarrierNum(i,h);Number.isFinite(v)&&(k.upper[d]=v)}if(s){let v=await this.evaluateCarrierNum(s,h);Number.isFinite(v)&&(k.hue=v)}k.lastSubject=h}}return[...c.values()]}hrefForSubject(e,n,t="="){let a=this.uriOf(e),s=a.package_,o=a.version;return this.resourceHref({publisher:ne(e),package_:s,name:e.name,...o?{version:o}:{}},n,t)}async renderVersionDiff(e,n){let t=T(e,se);if(!t)return"<!-- LookRenderer.VersionDiff: no look.source -->";let a=this.readEmbeddedCarrier(e,Qe),s=T(e,yt);if(!s||!a)return"<!-- LookRenderer.VersionDiff: needs look.track + look.metricPath -->";let o=T(e,on),i=this.readEmbeddedCarrier(e,Ln),c=this.findInstancesOfClass(t,this.readTransitive(e));if(c.length===0)return"<!-- LookRenderer.VersionDiff: no instances -->";let l=m=>o?this.readPropertyValueText(m,o)??"":"",d=c.slice().sort((m,h)=>l(m).localeCompare(l(h))),f=await this.collectTrackedSeries(d,s,a,{hueBy:i});return f.length===0?"<!-- LookRenderer.VersionDiff: no tracked series -->":`<section class="kan-vdiff">${f.map((m,h)=>{let b=m.hue!==void 0?m.hue:Math.round(h*360/f.length),k=m.points.filter(U=>U!==null);if(k.length===0)return"";let $=k[0],v=k[k.length-1],_=v-$,K;if(Math.abs(_)>=.005){let U=_>0?"up":"down",D=_>0?"\u25B2":"\u25BC";K=`<span class="kan-vdiff-delta ${U}">${_>0?"+":""}${_.toFixed(2)} ${D}</span>`}else K='<span class="kan-vdiff-delta flat">\u2014</span>';let O=m.lastSubject&&this.isLinkable(ne(m.lastSubject),n)?`<a href="${g(this.hrefForSubject(m.lastSubject,n))}">${g(m.label)}</a>`:g(m.label);return`<div class="kan-vdiff-row" style="--kan-vdiff-hue:${b}"><span class="kan-vdiff-label">${O}</span><span class="kan-vdiff-start">${$.toFixed(2)}</span>`+this.sparkline(m.points,b)+`<span class="kan-vdiff-end">${v.toFixed(2)}</span>`+K+"</div>"}).join("")}</section>`}sparkline(e,n){let o=`hsl(${n},65%,60%)`,i=e.filter(k=>k!==null);if(i.length===0)return'<svg class="kan-vdiff-spark" viewBox="0 0 132 30" xmlns="http://www.w3.org/2000/svg"></svg>';let c=Math.min(...i),d=Math.max(...i)-c,f=e.length,p=k=>f<=1?132/2:4+k/(f-1)*124,m=k=>d<1e-9?30/2:26-(k-c)/d*22,h=[],b=[];return e.forEach((k,$)=>{if(k===null)return;let v=p($),_=m(k);h.push(`${v.toFixed(1)},${_.toFixed(1)}`),b.push(`<circle cx="${v.toFixed(1)}" cy="${_.toFixed(1)}" r="2" fill="${o}"/>`)}),`<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="${o}" stroke-width="1.5" stroke-linejoin="round" stroke-linecap="round"/>`+b.join("")+"</svg>"}svgUrlForSubject(e,n,t="="){return`${this.hrefForSubject(e,n,t)}.svg`}renderFigure(e,n,t){let a=n,s=T(e,se);if(s){let d=Z(this.catalog,s);d&&(a=d)}let o=this.svgUrlForSubject(a,t),i=N(this.catalog,a).label,c=ee(e,es);return`<figure class="kan-figure${c==="small"||c==="medium"||c==="large"?` kan-figure-${c}`:""}"><img class="kan-figure-img" src="${g(o)}" alt="${g(i)}" loading="lazy"/></figure>`}diagramArrowSeq=0;diagramScriptEmitted=!1;async renderDiagram(e,n,t,a=0,s=new Set){let o=this.gatherValueItems(z(e,Ua)).filter(h=>h instanceof V);if(o.length===0)return"<!-- LookRenderer.Diagram: no look.facets -->";let i=[];for(let h of o){let b=T(h,Ca);if(!b){i.push("<!-- LookRenderer.Diagram: facet has no resolvable look.relation -->");continue}let k=T(h,Ia),$=this.resolveFacetNodes(n,b);if($.length===0){i.push(`<!-- LookRenderer.Diagram: relation ${b.publisher}/${b.package_}/${b.name} resolved to 0 instances -->`);continue}let v=await this.resolveFacetChannels(h,$),_=z(h,Aa),K=_ instanceof H&&_.object instanceof V?_.object:void 0,O=ee(h,Da),U=O&&Ze[O]!==void 0?Ze[O]:void 0,D=U??this.classTierSize($),L=Za[D??Ze.icon]??"icon",le=this.readEmbeddedCarrier(h,Ha),C=T(h,Ma),B=C?Z(this.catalog,C):void 0;if(B){i.push(await this.renderDiagramExpand($,B,t,a,s,le,U));continue}if(k&&M(k,Fa)){let J=T(h,Na),ce=this.facetEdgeLabel(h,J??b),ue=this.readEmbeddedCarrier(h,qa);i.push(await this.embedTiers(L,E=>J?this.renderDiagramDag($,J,v,t,E,ce,ue):this.renderDiagramConnector(n,$,v,t,E,ce,ue)));continue}if(k&&!M(k,Ta)){i.push(`<!-- LookRenderer.Diagram: unknown encode role ${k.publisher}/${k.package_}/${k.name} -->`);continue}i.push(K?`<div class="kan-dgm-tiers" data-geo="1"><div class="kan-dgm-tier" data-tier="card">${await this.renderDiagramCluster($,v,K,t,D)}</div></div>`:await this.embedTiers(L,J=>this.renderDiagramCluster($,v,void 0,t,J)))}let c=ee(e,Wa),l=ee(e,Ya),d=h=>`<div class="kan-diagram-title" style="font-weight:600;font-size:0.95rem;color:var(--kan-text);${h}">${g(c)}</div>`,f=c&&l!=="bottom"?d("margin:0 0 .5rem"):"",p=c&&l==="bottom"?d("margin:.5rem 0 0"):"",m="";return a===0&&!this.diagramScriptEmitted&&(this.diagramScriptEmitted=!0,m=`<script>${Xa}</script>`),`<section class="kan-diagram">${f}${i.join("")}${p}${m}</section>`}async embedTiers(e,n){let t=[];for(let a of Ja){let s=await n(Ze[a]);t.push(`<div class="kan-dgm-tier" data-tier="${a}"${a===e?"":" hidden"}>${s}</div>`)}return`<div class="kan-dgm-tiers">${t.join("")}</div>`}async renderDiagramExpand(e,n,t,a,s,o,i){let c=[];for(let l of e){let d=`${l.namespace??""}/${l.name}`,f=await this.diagramNodeRow(l,t,i??56,o),m=a<nr&&!s.has(d)?await this.renderDiagram(n,l,t,a+1,new Set([...s,d])):"",h=m?`<div style="margin-left:30px;border-left:2px solid var(--kan-border);padding-left:14px;margin-top:6px">${m}</div>`:"";c.push(`<div class="kan-diagram-node" style="margin:6px 0">${f}${h}</div>`)}return`<figure class="kan-diagram-figure"><div class="kan-diagram-tree">${c.join("")}</div></figure>`}async diagramNodeRow(e,n,t=56,a){let s=this.hrefForSubject(e,n),o=this.svgUrlForSubject(e,n),i=N(this.catalog,e).label,c=a?await this.evaluateCarrier(a,e):void 0,l=c!==void 0?`<span class="kan-diagram-node-note" style="display:block;font-size:0.8em;color:var(--kan-text-dim)">${g(c)}</span>`:"";return`<a href="${g(s)}" style="display:inline-flex;align-items:center;gap:10px;text-decoration:none"><img src="${g(o)}" width="${t}" height="${t}" alt="" loading="lazy"/><span><span class="kan-diagram-node-label">${g(i)}</span>${l}</span></a>`}classTierSize(e){let n;for(let t of e)for(let a of me(t)){let s=Z(this.catalog,a.subject);if(!s)continue;let o=ee(s,Ba),i=o?Ze[o]:void 0;i!==void 0&&(n=n===void 0?i:Math.max(n,i))}return n}resolveFacetNodes(e,n){let t=[];for(let a of this.readPropertyValueReferences(e,n)){let s=a.subject,o=Z(this.catalog,{publisher:s.publisher,package_:s.package_,name:s.name,...s.version?{version:s.version}:{}});o&&t.push(o)}return t}async resolveFacetChannels(e,n){let t=this.gatherValueItems(z(e,xa)).filter(s=>s instanceof V),a=[];for(let s of t){let o=this.readEmbeddedCarrier(s,Va),i=ee(s,Pa);if(!o||!i)continue;let c=[];for(let h of n){let b=await this.evaluateCarrierNum(o,h);c.push(Number.isFinite(b)?b:NaN)}let l=c.filter(h=>Number.isFinite(h)),d=l.length?Math.min(...l):0,p=(l.length?Math.max(...l):0)-d,m=c.map(h=>Number.isFinite(h)&&p>0?(h-d)/p:.5);a.push({to:i,norm:m})}return a}facetEdgeLabel(e,n){let t=ee(e,za);if(t)return t;if(cs(e,Ga)&&n){let s=Z(this.catalog,n);if(s)return N(this.catalog,s).label}}async edgeText(e,n,t){let a=t&&n?await this.evaluateCarrier(t,n):void 0,s=[e,a].filter(o=>!!o);return s.length?s.join(" "):void 0}edgeLabelEl(e,n,t){return`<text x="${e.toFixed(1)}" y="${n.toFixed(1)}" text-anchor="middle" class="kan-diagram-edge-label" style="font-size:11px;paint-order:stroke;stroke:var(--kan-bg);stroke-width:3px;fill:var(--kan-text-dim)">${g(t)}</text>`}async renderDiagramCluster(e,n,t,a,s){let o=s??132,i=18,c=18,l=n.find(b=>b.to==="opacity");if(t){let b=[];for(let k=0;k<e.length;k++){let $=e[k],v=await this.renderBand(t,$,a),_=this.hrefForSubject($,a),K=N(this.catalog,$).label,O=l?`opacity:${(.4+l.norm[k]*.6).toFixed(2)};`:"";b.push(`<a class="kan-diagram-mark" href="${g(_)}" style="display:block;text-decoration:none;${O}">${v}<span class="kan-diagram-mark-label">${g(K)}</span></a>`)}return`<figure class="kan-diagram-figure"><div class="kan-diagram-marks" style="display:flex;flex-wrap:wrap;gap:18px;align-items:flex-start">${b.join("")}</div></figure>`}let d=Math.min(e.length,4),f=Math.ceil(e.length/d),p=c*2+d*o+(d-1)*i,m=c*2+f*o+(f-1)*i,h=e.map((b,k)=>{let $=k%d,v=Math.floor(k/d),_=c+$*(o+i),K=c+v*(o+i),O=l?.4+l.norm[k]*.6:1;return this.diagramTile(b,_,K,o,a,O)}).join("");return`<figure class="kan-diagram-figure"><svg class="kan-diagram-svg" viewBox="0 0 ${p} ${m}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">${h}</svg></figure>`}async renderDiagramConnector(e,n,t,a,s,o,i){let c=s??120,l=24,d=130,f=18,p=t.find(C=>C.to==="thickness"),m=t.find(C=>C.to==="opacity"),h=n.length,b=h*c+(h-1)*l,k=f*2+b,$=f*2+c+d+c,v=f,_=f+(b-c)/2,K=f+c+d,O=`kan-arrow-${this.diagramArrowSeq++}`,U=[],D=[],L=[];for(let C=0;C<n.length;C++){let B=n[C],J=f+C*(c+l),ce=v+c,ue=_+c/2,E=K-_e,Q=J+c/2,F=(ce+K)/2,S=p?1.5+p.norm[C]*5.5:2,A=m?.4+m.norm[C]*.6:1,G=m?` stroke-opacity="${A.toFixed(2)}"`:"";U.push(`<path d="M${ce.toFixed(1)},${ue.toFixed(1)} C${F.toFixed(1)},${ue.toFixed(1)} ${F.toFixed(1)},${Q.toFixed(1)} ${E.toFixed(1)},${Q.toFixed(1)}" class="kan-diagram-edge" fill="none" stroke="var(--kan-border)" stroke-width="${S.toFixed(1)}"${G} marker-end="url(#${O})"/>`);let R=await this.edgeText(o,B,i);R&&D.push(this.edgeLabelEl((ce+K)/2,(ue+Q)/2-5,R)),L.push(this.diagramTile(B,K,J,c,a,m?A:1))}let le=this.diagramTile(e,v,_,c,a);return`<figure class="kan-diagram-figure"><svg class="kan-diagram-svg" viewBox="0 0 ${$.toFixed(0)} ${k.toFixed(0)}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">${this.arrowMarkerDef(O,"var(--kan-border)")}${U.join("")}${D.join("")}${le}${L.join("")}</svg></figure>`}arrowMarkerDef(e,n){return`<defs><marker id="${e}" viewBox="0 0 ${_e} ${_e}" refX="0" refY="${(_e/2).toFixed(1)}" markerWidth="${_e}" markerHeight="${_e}" markerUnits="userSpaceOnUse" orient="auto"><path d="M0,1 L${_e},${(_e/2).toFixed(1)} L0,${_e-1}" fill="${n}"/></marker></defs>`}async renderDiagramDag(e,n,t,a,s,o,i){let c=s??110,l=110,d=22,f=18,p=new Map(e.map((S,A)=>[S.name,A])),m=new Set(e.map(S=>S.name)),h=new Map(e.map(S=>[S.name,[]])),b=new Map(e.map(S=>[S.name,[]]));for(let S of e)for(let A of this.readPropertyValueReferences(S,n)){let G=A.subject.name;G!==S.name&&m.has(G)&&(h.get(S.name).push(G),b.get(G).push(S.name))}let k=new Map,$=new Set,v=S=>{let A=k.get(S);if(A!==void 0)return A;if($.has(S))return 0;$.add(S);let G=0;for(let R of b.get(S)??[])G=Math.max(G,v(R)+1);return $.delete(S),k.set(S,G),G};for(let S of e)v(S.name);let _=Math.min(...k.values());if(_>0)for(let S of[...k.keys()])k.set(S,k.get(S)-_);let K=Math.max(0,...k.values()),O=Array.from({length:K+1},()=>[]);for(let S of e)O[k.get(S.name)].push(S);let U=Math.max(1,...O.map(S=>S.length)),D=!1;for(let[S,A]of h)for(let G of A)k.get(G)<=k.get(S)&&(D=!0);let L=D?84:0,le=U*c+(U-1)*d,C=f*2+(K+1)*c+K*l,B=f*2+L+le,J=new Map;O.forEach((S,A)=>{let G=S.length*c+(S.length-1)*d,R=f+L+(le-G)/2;S.forEach((P,ge)=>J.set(P.name,{x:f+A*(c+l),y:R+ge*(c+d)}))});let ce=t.find(S=>S.to==="thickness"),ue=`kan-arrow-${this.diagramArrowSeq++}`,E=[],Q=[];for(let[S,A]of h){let G=J.get(S);for(let R of A){let P=J.get(R),ge=P.x>=G.x,de=ce?1.5+ce.norm[p.get(S)]*4.5:2,ke,re,te;if(ge){let oe=G.x+c,Te=G.y+c/2,Le=P.x-_e,Ge=P.y+c/2,Ae=(oe+Le)/2;ke=`M${oe.toFixed(1)},${Te.toFixed(1)} C${Ae.toFixed(1)},${Te.toFixed(1)} ${Ae.toFixed(1)},${Ge.toFixed(1)} ${Le.toFixed(1)},${Ge.toFixed(1)}`,re=(oe+Le)/2,te=(Te+Ge)/2-5}else{let oe=G.x+c/2,Te=G.y,Le=P.x+c/2,Ge=P.y-_e,Ae=f+L*.2;ke=`M${oe.toFixed(1)},${Te.toFixed(1)} C${oe.toFixed(1)},${Ae.toFixed(1)} ${Le.toFixed(1)},${Ae.toFixed(1)} ${Le.toFixed(1)},${Ge.toFixed(1)}`,re=(oe+Le)/2,te=Ae+4}let Ee=ge?"":' stroke-dasharray="6 4"';E.push(`<path d="${ke}" class="kan-diagram-edge" fill="none" stroke="var(--kan-accent)" stroke-width="${de.toFixed(1)}" stroke-opacity="0.75"${Ee} marker-end="url(#${ue})"/>`);let Se=await this.edgeText(o,e[p.get(S)],i);Se&&Q.push(this.edgeLabelEl(re,te,Se))}}let F=e.map(S=>{let A=J.get(S.name);return this.diagramTile(S,A.x,A.y,c,a)}).join("");return`<figure class="kan-diagram-figure"><svg class="kan-diagram-svg" viewBox="0 0 ${C.toFixed(0)} ${B.toFixed(0)}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">${this.arrowMarkerDef(ue,"var(--kan-accent)")}${E.join("")}${Q.join("")}${F}</svg></figure>`}diagramTile(e,n,t,a,s,o=1){let i=this.hrefForSubject(e,s),c=this.svgUrlForSubject(e,s),l=N(this.catalog,e).label,d=o<1?` opacity="${o.toFixed(2)}"`:"";return`<a href="${g(i)}"><image href="${g(c)}" x="${n}" y="${t}" width="${a}" height="${a}"${d}><title>${g(l)}</title></image></a>`}async renderStatRow(e,n){let t=z(e,Ur),a=this.gatherValueItems(t).filter(o=>o instanceof V);if(a.length===0)return"<!-- LookRenderer.StatRow: no look.stats -->";let s=[];for(let o of a){let i=this.readEmbeddedCarrier(o,Cr);if(!i)continue;let c=await this.evaluateCarrier(i,n);if(c===void 0)continue;let l=ee(o,Ir)??"";s.push('<div class="kan-stat">'+(l?`<span class="kan-stat-label">${g(l)}</span>`:"")+`<span class="kan-stat-val">${g(c)}</span></div>`)}return s.length===0?"":`<div class="kan-stat-row">${s.join("")}</div>`}barMarkup(e){let n=Number(e);if(!Number.isFinite(n))return g(e);let t=Math.max(0,Math.min(1,n))*100;return`<span class="kan-bar-meter" role="img" aria-label="${g(e)}"><span class="kan-bar-fill" style="width:${t.toFixed(1)}%"></span></span><span class="kan-bar-value">${g(e)}</span>`}async renderBarMeter(e,n){let t=this.readEmbeddedCarrier(e,Qe);if(!t)return"<!-- LookRenderer.BarMeter: no look.metricPath -->";let a=await this.evaluateCarrier(t,n);return a===void 0?"":`<div class="kan-bar-row">${this.barMarkup(a)}</div>`}renderResourceCount(e,n){let t=z(e,Rr),a=this.gatherValueItems(t).filter(i=>i instanceof V);if(a.length===0)return"<!-- LookRenderer.ResourceCount: no look.counts -->";let s=this.readTransitive(e),o=[];for(let i of a){let c=T(i,se);if(!c)continue;let l=Z(this.catalog,c);if(!l)continue;let d=N(this.catalog,l).label,f=this.findInstancesOfClass(c,s).length,p=this.hrefForSubject(l,n);o.push(`<a class="kan-count" href="${g(p)}"><span class="kan-count-val">${f}</span><span class="kan-count-label">${g(d)}</span></a>`)}return o.length===0?"":`<div class="kan-count-row">${o.join("")}</div>`}renderHorizon(e,n,t){let a=T(e,se);if(!a)return"<!-- LookRenderer.Horizon: no look.source -->";let s=this.gatherValueItems(z(n,a)).filter(i=>i instanceof V);return s.length===0?"":`<section class="kan-horizon">${s.map(i=>this.renderConditionNode(i,t,0)).join("")}</section>`}renderConditionNode(e,n,t){let a=ze(e),s=a?this.readLabelForUri({publisher:a.publisher,package_:a.package_,name:a.name})??a.name:"Condition",o=[],i=[];for(let p of e.statement){let m=p.predicate?.subject;if(!m||M(m,Ce))continue;let h=this.readLabelForUri({publisher:m.publisher,package_:m.package_,name:m.name})??m.name;if(p instanceof W||p instanceof ie||p instanceof ae)o.push(`<div class="kan-cond-field"><span class="kan-cond-key">${g(h)}</span><span class="kan-cond-v">${g(String(p.object))}</span></div>`);else if(p instanceof x&&p.object instanceof j){let b=p.object.subject,k=this.readLabelForUri({publisher:b.publisher,package_:b.package_,name:b.name})??b.name;o.push(`<div class="kan-cond-field"><span class="kan-cond-key">${g(h)}</span><span class="kan-cond-v">${g(k)}</span></div>`)}else if(p instanceof H)i.push(this.renderConditionNode(p.object,n,t+1));else if(p instanceof I)for(let b of p.object??[])b instanceof V&&i.push(this.renderConditionNode(b,n,t+1))}let c=o.length?`<div class="kan-cond-fields">${o.join("")}</div>`:"",l=i.length?`<div class="kan-cond-children">${i.join("")}</div>`:"",d=i.length>0,f=d?`<span class="kan-cond-op">${g(s)}</span>`:`<div class="kan-cond-type">${g(s)}</div>`;return`<div class="kan-cond ${d?"kan-cond-branch":"kan-cond-leaf"}">${f}${c}${l}</div>`}renderSectionHeading(e){let n=e,t=ee(n,mt);if(!t)return"<!-- LookRenderer.SectionHeading: no look.heading -->";let a=ee(n,$r);return`<div class="kan-section" id="${Ot(t)}"><h2 class="kan-section-title">${g(t)}</h2>`+(a?`<p class="kan-section-note">${g(a)}</p>`:"")+"</div>"}renderSectionNav(e){return e.length===0?"<!-- LookRenderer.SectionNav: no section headings in this view -->":`<nav class="kan-section-nav" aria-label="On this page">${e.map(t=>`<a class="kan-section-nav-link" href="#${g(t.slug)}">${g(t.label)}</a>`).join("")}</nav>`}async renderVersionDelta(e,n){let t=this.readEmbeddedCarrier(e,Qe);if(!t)return"<!-- LookRenderer.VersionDelta: no look.metricPath -->";let a=async C=>{let B=await this.evaluateCarrierNum(t,C);return Number.isFinite(B)?B:void 0},s=await a(n);if(s===void 0)return"";let o=C=>this.uriOf(C).version??{major:0,minor:0,patch:0},i=(C,B)=>C.major-B.major||C.minor-B.minor||C.patch-B.patch,c={publisher:ne(n),package_:this.uriOf(n).package_,name:n.name},l=o(n),d,f;for(let C of he(this.catalog,c)){let B=o(C);i(B,l)<0&&(!f||i(B,f)>0)&&(d=C,f=B)}if(!d||!f)return'<div class="kan-delta kan-delta-first">First tracked in this version</div>';let p=await a(d);if(p===void 0)return"";let m=s-p,h=Math.abs(m)<.005?"flat":m>0?"up":"down",b=h==="up"?"\u25B2":h==="down"?"\u25BC":"\u2014",k=h==="up"?"#34d399":h==="down"?"#f87171":"var(--kan-text-faint)",$=`${f.major}.${f.minor}.${f.patch}`,v=320,_=46,K=14,O=30,U=C=>K+Math.min(1,Math.max(0,C))*(v-2*K),D=U(p),L=U(s),le=`<svg class="kan-delta-track" viewBox="0 0 ${v} ${_}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img"><line x1="${K}" y1="${O}" x2="${v-K}" y2="${O}" class="kan-delta-base"/><line x1="${D.toFixed(1)}" y1="${O}" x2="${L.toFixed(1)}" y2="${O}" stroke="${k}" stroke-width="3"/><circle cx="${D.toFixed(1)}" cy="${O}" r="4" class="kan-delta-prev"/><circle cx="${L.toFixed(1)}" cy="${O}" r="5.5" fill="${k}"/><text x="${D.toFixed(1)}" y="${O-9}" text-anchor="middle" class="kan-delta-tick kan-delta-tick-prev">${p.toFixed(2)}</text><text x="${L.toFixed(1)}" y="${O+17}" text-anchor="middle" class="kan-delta-tick">${s.toFixed(2)}</text></svg>`;return`<div class="kan-delta"><div class="kan-delta-head"><span class="kan-delta-vs">vs ${g($)}</span><span class="kan-delta-badge ${h}">${m>0?"+":""}${m.toFixed(2)} ${b}</span></div>`+le+"</div>"}async renderTimePlot(e,n,t){let a=T(e,se),s=T(e,on);if(!a||!s)return"<!-- LookRenderer.TimePlot: needs look.source + look.orderBy -->";let o=this.readEmbeddedCarrier(e,Or),i=this.readEmbeddedCarrier(e,ht),c=[];for(let E of this.readPropertyValueReferences(n,a)){let Q=Z(this.catalog,{publisher:E.subject.publisher,package_:E.subject.package_,name:E.subject.name,...E.subject.version?{version:E.subject.version}:{}});if(!Q)continue;let F=this.readPropertyValueText(Q,s)??"",S=Date.parse(F);if(!Number.isFinite(S))continue;let A=o?await this.evaluateCarrier(o,Q)??"":"",G=(i?await this.evaluateCarrier(i,Q):void 0)??N(this.catalog,Q).label;c.push({t:S,dateStr:F,lane:A,label:G,href:this.hrefForSubject(Q,t),linkable:this.isLinkable(ne(Q),t)})}if(c.length===0)return"<!-- LookRenderer.TimePlot: no dated points -->";let l=[];for(let E of c)l.includes(E.lane)||l.push(E.lane);let d=Math.min(...c.map(E=>E.t)),f=Math.max(...c.map(E=>E.t));f===d&&(f=d+1);let p=l.some(E=>E),m=720,h=p?96:16,b=18,k=12,$=24,v=36,_=k+l.length*v+$,K=h,O=m-b,U=O-K,D=E=>K+(E-d)/(f-d)*U,L=E=>k+E*v+v/2,le=E=>Math.round(E*360/Math.max(1,l.length)),C=[];l.forEach((E,Q)=>{let F=L(Q);C.push(`<line x1="${K}" y1="${F.toFixed(1)}" x2="${O}" y2="${F.toFixed(1)}" class="kan-plot-guide"/>`),E&&C.push(`<text x="${(h-8).toFixed(1)}" y="${(F+4).toFixed(1)}" text-anchor="end" class="kan-plot-lane">${Re(E)}</text>`)});let B={},J=[];for(let E of c){let Q=l.indexOf(E.lane),S=((B[E.lane]=(B[E.lane]??0)+1)%3-1)*7,A=D(E.t),G=L(Q)+S,R=`${dn(E.dateStr)} \xB7 ${E.label}`,P=`<circle cx="${A.toFixed(1)}" cy="${G.toFixed(1)}" r="5" fill="hsl(${le(Q)},65%,60%)" class="kan-plot-pt"><title>${Re(R)}</title></circle>`;J.push(E.linkable?`<a href="${g(E.href)}" class="kan-plot-link">${P}</a>`:P)}let ce=`<text x="${K}" y="${(_-6).toFixed(1)}" text-anchor="start" class="kan-plot-axis">${Re(dn(new Date(d).toISOString()))}</text><text x="${O}" y="${(_-6).toFixed(1)}" text-anchor="end" class="kan-plot-axis">${Re(dn(new Date(f).toISOString()))}</text>`;return`<section class="kan-plot">${`<svg class="kan-plot-svg" viewBox="0 0 ${m} ${_}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">`+C.join("")+J.join("")+ce+"</svg>"}</section>`}renderDetails(e,n,t){let a=Cn(e,Er),s=this.detailRows(n,t,a);return s?`<dl class="kan-details">${s}</dl>`:"<!-- LookRenderer.Details: no properties -->"}detailRows(e,n,t){let a=[];for(let s of e.statement){let o=s.predicate?.subject;if(!o||this.isMetaPredicate(o)||t.some(l=>M(l,o)))continue;let i=this.readLabelForUri({publisher:o.publisher,package_:o.package_,name:o.name})??o.name,c=this.detailValue(s,n,t);c&&a.push(`<dt class="kan-details-key">${g(i)}</dt><dd class="kan-details-val">${c}</dd>`)}return a.join("")}detailValue(e,n,t){if(e instanceof W)return Ct(e.object);if(e instanceof ie||e instanceof ae)return g(String(e.object));if(e instanceof x&&e.object instanceof j)return this.detailReferenceLink(e.object,n);if(e instanceof H)return this.detailEmbedded(e.object,n,t);if(e instanceof I){let a=e.object??[];return a.length>0&&a.every(s=>s instanceof V)?a.map(s=>this.detailEmbedded(s,n,t)).join(""):a.map(s=>s instanceof j?this.detailReferenceLink(s,n):s instanceof V?this.detailEmbedded(s,n,t):g(String(s))).filter(s=>s).join(", ")}return""}detailReferenceLink(e,n){let t=this.readLabelForUri({publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name})??e.subject.name;if(!this.isLinkable(e.subject.publisher,n))return`<span class="kan-link-plain">${g(t)}</span>`;let a=this.urlForReference(e,void 0,n);return`<img class="kan-md-chip" src="${g(`${a}.svg`)}" alt="" loading="lazy"><a class="kan-link" href="${g(a)}">${g(t)}</a>`}detailEmbedded(e,n,t){let a=ze(e),s=a?this.readLabelForUri({publisher:a.publisher,package_:a.package_,name:a.name})??a.name:"",o=this.detailRows(e,n,t);return'<div class="kan-details-embed">'+(s?`<span class="kan-details-type">${g(s)}</span>`:"")+(o?`<dl class="kan-details">${o}</dl>`:"")+"</div>"}rangeTypeRefs(e){let n=Z(this.catalog,e);if(!n)return[];let t=z(n,ua);return t instanceof x&&t.object instanceof j?[t.object]:[]}async renderEmbeddedViews(e,n,t,a=""){let s=T(e,se);if(!s)return"<!-- LookRenderer: EmbeddedViews missing look.source -->";let o=this.gatherValueItems(z(n,s)).filter(m=>m instanceof V);if(o.length===0)return"";let i=a?`${a}.${s.name}`:s.name,c=z(e,as),l=c instanceof ae?c.object===!0:c instanceof W&&c.object==="true",d=[],f=[];for(let m of o){let h=m,b=m.name?`${i}.${m.name}`:"";if(l&&b){let U=N(this.catalog,h).label||m.name||b;d.push(`<a class="kan-section-nav-link" href="#${g(b)}">${g(U)}</a>`)}let k=me(h),$=k.length>0?k:this.rangeTypeRefs(s),v=cn(h)?this.findCascadedLook(h):this.lookFromTypeRefs($),_="";if(v){let U=[];for(let D of Un(v.declaration))U.push(await this.renderBand(D,h,t,[],b));_=U.join(`
|
|
125
|
-
`)}else{let U=this.detailRows(m,t,[]);_=U?`<dl class="kan-details">${U}</dl>`:""}let K=b?` id="${g(b)}"`:"",O=b?this.anchorLink(b):"";f.push(`<section class="kan-embedded-view"${K}>${O}${_}</section>`)}return`<div class="kan-embedded-views">${d.length>0?`<nav class="kan-section-nav" aria-label="On this page">${d.join("")}</nav>
|
|
126
|
-
`:""}${f.join(`
|
|
127
|
-
`)}</div>`}anchorLink(e){return`<a class="kan-anchor" href="#${g(e)}" title="${g(e)}" aria-label="Link to this resource">#</a>`}isMetaPredicate(e){return M(e,Ce)||M(e,jn)||M(e,pt)||M(e,fn)||M(e,pn)||M(e,Lr)||M(e,wt)||M(e,mr)}renderPackageContents(e,n){let t=e.namespace||"";if(!t)return"";let a=this.catalog.filter(o=>o instanceof q&&o.namespace===t&&o.name!==e.name);return a.length===0?`<!-- LookRenderer.PackageContents: no members in ${t} -->`:(a.sort((o,i)=>{let c=N(this.catalog,o).label,l=N(this.catalog,i).label;return c.localeCompare(l)}),`<section class="kan-pkg-grid">${a.map(o=>{let i=N(this.catalog,o),c=i.label,l=i.summary,d=l?In(l,160):"",f=this.hrefForSubject(o,n),p=this.svgUrlForSubject(o,n);return`<a class="kan-pkg-card" href="${g(f)}"><img class="kan-pkg-card-svg" src="${g(p)}" alt="" loading="lazy"/><span class="kan-pkg-card-body"><span class="kan-pkg-card-title">${g(c)}</span>`+(d?`<span class="kan-pkg-card-comment">${g(d)}</span>`:"")+"</span></a>"}).join("")}</section>`)}renderReferencedBy(e,n,t){let a=T(e,Qr),s={publisher:ne(n),package_:this.uriOf(n).package_,name:n.name},o=Y(s),i=p=>this.uriOf(p).version??{major:0,minor:0,patch:0},c=(p,m)=>p.major-m.major||p.minor-m.minor||p.patch-m.patch,l=new Map;for(let p of this.catalog){if(!(p instanceof q))continue;let m=Y({publisher:ne(p),package_:this.uriOf(p).package_,name:p.name});if(m!==o)for(let h of p.statement){let b=h.predicate?.subject;if(!b||M(b,Ce)||a&&Y(b)!==Y(a))continue;let k=[];if(h instanceof x&&h.object instanceof j)k.push(h.object);else if(h instanceof I)for(let K of h.object??[])K instanceof j&&k.push(K);if(!k.some(K=>Y(K.subject)===o))continue;let $=Y(b),v=l.get($);v||(v={label:this.readLabelForUri(b)??b.name,best:new Map},l.set($,v));let _=v.best.get(m);(!_||c(i(p),i(_))>0)&&v.best.set(m,p)}}return l.size===0?"<!-- LookRenderer.ReferencedBy: no incoming references -->":`<div class="kan-section"><h2 class="kan-section-title">Referenced by</h2></div>${[...l.values()].sort((p,m)=>p.label.localeCompare(m.label)).map(p=>{let h=[...p.best.values()].sort((b,k)=>N(this.catalog,b).label.localeCompare(N(this.catalog,k).label)).map(b=>this.resourceCard(b,t,n.namespace??void 0)).join("");return`<div class="kan-rel-group"><h3 class="kan-rel-prop"><span class="kan-rel-dir" title="incoming \u2014 references this resource">\u2190</span> ${g(p.label)}</h3><section class="kan-pkg-grid">${h}</section></div>`}).join("")}`}resourceCard(e,n,t){let a=N(this.catalog,e),s=a.summary?In(a.summary,160):"",o=me(e).map($=>this.readLabelForUri({publisher:$.subject.publisher,package_:$.subject.package_,name:$.subject.name})??$.subject.name),c='<span class="kan-pkg-card-body">'+(o.length>0?`<span class="kan-card-types">${o.map($=>`<span class="kan-card-type">${g($)}</span>`).join("")}</span>`:"")+`<span class="kan-pkg-card-title">${g(a.label)}</span>`+(s?`<span class="kan-pkg-card-comment">${g(s)}</span>`:"")+"</span>",l=this.isLinkable(ne(e),n),d=l?`<a class="kan-pkg-card-link" href="${g(this.hrefForSubject(e,n))}"><img class="kan-pkg-card-svg" src="${g(this.svgUrlForSubject(e,n))}" alt="" loading="lazy"/>`+c+"</a>":`<span class="kan-pkg-card-link">${c}</span>`,f=e.namespace||"",p=this.uriOf(e),m=p.publisher,h=p.package_,b=p.version?nn(p.version):"",k="";if(h&&f!==t){let $=b?`<span class="kan-card-at">@</span><span class="kan-card-ver">${g(b)}</span>`:"";if(l){let v=`<span class="kan-card-pkg">${g(h)}</span>${$}`;k=`<a class="kan-pkg-card-foot" href="${g(this.packageHref(m,h,b||void 0))}" title="${g(b?`${h}@${b}`:h)}">${v}</a>`}else{let v=`<span class="kan-card-pub">${g(m)}/</span><span class="kan-card-pkg">${g(h)}</span>${$}`;k=`<span class="kan-pkg-card-foot" title="${g(b?`${m}/${h}@${b}`:`${m}/${h}`)}">${v}</span>`}}return`<div class="kan-pkg-card kan-pkg-card--foot">${d}${k}</div>`}renderInstances(e,n,t){let a={publisher:ne(n),package_:this.uriOf(n).package_,name:n.name},s=this.readTransitive(e),o=s?this.descendantTypeKeys(a):new Set([Y(a)]),i=k=>this.uriOf(k).version??{major:0,minor:0,patch:0},c=(k,$)=>k.major-$.major||k.minor-$.minor||k.patch-$.patch,l=new Map;for(let k of this.catalog){if(!(k instanceof q)||!me(k).some(K=>o.has(Y(K.subject))))continue;let v=Y({publisher:ne(k),package_:this.uriOf(k).package_,name:k.name}),_=l.get(v);(!_||c(i(k),i(_))>0)&&l.set(v,k)}let d=[...l.values()];if(d.length===0)return"<!-- LookRenderer.Instances: none -->";d.sort((k,$)=>N(this.catalog,k).label.localeCompare(N(this.catalog,$).label));let f=48,p=d.slice(0,f),m=p.map(k=>this.resourceCard(k,t,n.namespace??void 0)),h=d.length>f?` <span class="kan-count">${p.length} of ${d.length}</span>`:` <span class="kan-count">${d.length}</span>`;return`<div class="kan-section"><h2 class="kan-section-title">${s?"Instances (including subtypes)":"Instances"}${h}</h2></div><section class="kan-pkg-grid">${m.join("")}</section>`}descendantTypeKeys(e){let n=Y(e),t=new Set([n]),a=new Set;for(let s of this.catalog)if(s instanceof q)for(let o of me(s)){let i=o.subject,c=Y(i);a.has(c)||(a.add(c),Dn(this.catalog,i).some(l=>Y(l)===n)&&t.add(c))}return t}referencesTarget(e,n,t){for(let a of e.statement){let s=a.predicate?.subject;if(s&&M(s,Ce)||t&&!(s&&Y(s)===Y(t)))continue;let o=[];if(a instanceof x&&a.object instanceof j)o.push(a.object);else if(a instanceof I)for(let i of a.object??[])i instanceof j&&o.push(i);for(let i of o)if(Y(i.subject)===n)return!0}return!1}async renderFeaturedResource(e,n){let t=T(e,se);if(!t)return"<!-- LookRenderer.FeaturedResource: no look.source -->";let a=he(this.catalog,t),s=l=>this.uriOf(l).version??{major:0,minor:0,patch:0},o=a.length>0?a.slice().sort((l,d)=>{let f=s(l),p=s(d);return p.major-f.major||p.minor-f.minor||p.patch-f.patch})[0]:Z(this.catalog,t);if(!o)return`<!-- LookRenderer.FeaturedResource: ${t.publisher}/${t.package_}/${t.name} not found -->`;let i=await this.renderHtml(o),c=this.hrefForSubject(o,n);return`<section class="kan-featured"><a class="kan-featured-permalink" href="${g(c)}">View full resource \u2192</a>`+i+"</section>"}async renderDistribution(e,n){let t=async F=>{let S=this.readEmbeddedCarrier(e,F);if(!S)return;let A=await this.evaluateCarrierNum(S,n);return Number.isFinite(A)?A:void 0},a=await t(br),s=await t(vr);if(a===void 0||s===void 0||a<=0||s<=0)return"<!-- LookRenderer.Distribution: needs resolvable alphaPath + betaPath (> 0) -->";let o=await t(Qe)??a/(a+s),i=await t($t),c=await t(St),l=await t(Ln),d=l!==void 0?`hsl(${l},65%,60%)`:"var(--kan-accent)",f=F=>Number.isInteger(F)?String(F):F.toFixed(1),p=280,m=168,h={top:14,right:14,bottom:24,left:14},b=p-h.left-h.right,k=m-h.top-h.bottom,$=120,v=1e-4,_=[],K=[],O=0;for(let F=0;F<=$;F++){let S=F/$;S<v?S=v:S>1-v&&(S=1-v);let A=Math.exp((a-1)*Math.log(S)+(s-1)*Math.log(1-S));_.push(S),K.push(A),A>O&&(O=A)}let U=F=>h.left+Math.min(1,Math.max(0,F))*b,D=F=>h.top+(1-(O>0?F/O:0))*k,L=h.top+k,le=_.map((F,S)=>`${U(F).toFixed(1)},${D(K[S]).toFixed(1)}`),C=`M${U(0).toFixed(1)},${L.toFixed(1)} L${le.join(" L")} L${U(1).toFixed(1)},${L.toFixed(1)} Z`,B="";if(i!==void 0&&c!==void 0&&c>i){let F=[`${U(i).toFixed(1)},${L.toFixed(1)}`];for(let S=0;S<=$;S++)_[S]>=i&&_[S]<=c&&F.push(`${U(_[S]).toFixed(1)},${D(K[S]).toFixed(1)}`);F.push(`${U(c).toFixed(1)},${L.toFixed(1)}`),B=`<path d="M${F.join(" L")} Z" fill="${d}" fill-opacity="0.3"/>`}let J=U(o),ce=`<line x1="${J.toFixed(1)}" y1="${h.top.toFixed(1)}" x2="${J.toFixed(1)}" y2="${L.toFixed(1)}" stroke="${d}" stroke-width="1.5" stroke-dasharray="3 3"/><text x="${J.toFixed(1)}" y="${(h.top-3).toFixed(1)}" text-anchor="middle" class="kan-dist-mean">\u03BC ${o.toFixed(2)}</text>`,ue=`<text x="${U(0).toFixed(1)}" y="${(L+15).toFixed(1)}" text-anchor="start" class="kan-dist-axis">0</text><text x="${U(1).toFixed(1)}" y="${(L+15).toFixed(1)}" text-anchor="end" class="kan-dist-axis">1</text>`,E=`<svg class="kan-dist-svg" viewBox="0 0 ${p} ${m}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img"><line x1="${h.left}" y1="${L.toFixed(1)}" x2="${(p-h.right).toFixed(1)}" y2="${L.toFixed(1)}" class="kan-dist-base"/><path d="${C}" fill="${d}" fill-opacity="0.12"/>`+B+`<polyline points="${le.join(" ")}" fill="none" stroke="${d}" stroke-width="2"/>`+ce+ue+"</svg>",Q=i!==void 0&&c!==void 0?` \xB7 95% CI [${i.toFixed(2)}\u2013${c.toFixed(2)}]`:"";return`<figure class="kan-dist">${E}<figcaption class="kan-dist-caption">Beta(${f(a)}, ${f(s)})${Q}</figcaption></figure>`}renderPublisherPackages(e,n){let t=new Map;for(let c of this.catalog){if(!(c instanceof q)||ne(c)!==n)continue;let l=this.uriOf(c).package_;if(!l||c.name!==l)continue;let d=t.get(l),f=this.uriOf(c).version,p=d?this.uriOf(d).version:void 0;(!d||f&&(!p||en(f,p)>0))&&t.set(l,c)}let a,s=z(e,cr),o=s instanceof I?s.object??[]:s instanceof x&&s.object instanceof j?[s.object]:[];if(o.length>0){a=[];for(let c of o){if(!(c instanceof j))continue;let l=c.subject.package_,d=t.get(l);d&&a.push([l,d])}}else a=[...t.entries()].sort((c,l)=>c[0].localeCompare(l[0]));return a.length===0?"":`<section class="kan-pkg-grid">${a.map(([c,l])=>{let d=N(this.catalog,l),f=d.label,p=d.summary,m=p?In(p,160):"",h=this.svgUrlForSubject(l,n);return`<a class="kan-pkg-card" href="${g(this.packageHref(n,c))}"><img class="kan-pkg-card-svg" src="${g(h)}" alt="" loading="lazy"/><span class="kan-pkg-card-body"><span class="kan-pkg-card-title">${g(f)}</span>`+(m?`<span class="kan-pkg-card-comment">${g(m)}</span>`:"")+"</span></a>"}).join("")}</section>`}async renderTimeline(e,n){let t=T(e,se);if(!t)return"<!-- LookRenderer.Timeline: no look.source -->";let a=T(e,on),s=this.findInstancesOfClass(t,this.readTransitive(e));if(s.length===0)return"<!-- LookRenderer.Timeline: no instances -->";let o=f=>a?this.readPropertyValueText(f,a)??"":"",i=s.slice().sort((f,p)=>o(f).localeCompare(o(p))),c=T(e,yt),l=this.readEmbeddedCarrier(e,Qe);return c&&l?this.renderTrajectoryChart(i,c,l,e,n,o):`<section class="kan-timeline"><ol>
|
|
128
|
-
${i.map(f=>{let p=this.uriOf(f),m=p.package_,h=p.version,b=this.resourceHref({publisher:ne(f),package_:m,name:f.name,...h?{version:h}:{}},n),k=o(f),$=k?`<span class="kan-timeline-date">${g(k)}</span>`:"",v=h?nn(h):f.name;return`<li class="kan-timeline-node"><a href="${g(b)}"><span class="kan-timeline-key">${g(v)}</span>${$}</a></li>`}).join(`
|
|
129
|
-
`)}
|
|
130
|
-
</ol></section>`}async renderTrajectoryChart(e,n,t,a,s,o){let i=a,c=this.readEmbeddedCarrier(a,Ln),l=this.readEmbeddedCarrier(a,$t),d=this.readEmbeddedCarrier(a,St),f=ee(i,zr),p=Et(i,Br),m=Et(i,Hr),h=e.length,b=await this.collectTrackedSeries(e,n,t,{hueBy:c,lowerPath:l,upperPath:d});if(b.length===0)return"<!-- LookRenderer.Timeline: no tracked series -->";let k=[];for(let R of b){for(let P of R.points)P!==null&&k.push(P);for(let P of R.lower??[])P!==null&&k.push(P);for(let P of R.upper??[])P!==null&&k.push(P)}if(k.length===0)return"<!-- LookRenderer.Timeline: no metric values -->";let $=Math.min(...k),v=Math.max(...k);v-$<1e-9&&($-=.5,v+=.5);let _=(v-$)*.08,K=p!==void 0?p:$-_,O=m!==void 0?m:v+_;O-K<1e-9&&(O=K+1);let U=1e3,D=440,L={top:28,right:24,bottom:56,left:52},le=U-L.left-L.right,C=D-L.top-L.bottom,B=R=>h<=1?L.left+le/2:L.left+R/(h-1)*le,J=R=>L.top+(1-(R-K)/(O-K))*C,ce=(R,P)=>R.hue!==void 0?R.hue:Math.round(P*360/b.length),ue=[];for(let R=0;R<5;R++){let P=K+R*(O-K)/4,ge=J(P);ue.push(`<line x1="${L.left}" y1="${ge.toFixed(1)}" x2="${(U-L.right).toFixed(1)}" y2="${ge.toFixed(1)}" class="kan-fan-grid"/>`),ue.push(`<text x="${(L.left-8).toFixed(1)}" y="${(ge+4).toFixed(1)}" class="kan-fan-axis" text-anchor="end">${P.toFixed(2)}</text>`)}let E=[];e.forEach((R,P)=>{let ge=this.hrefForSubject(R,s),de=this.uriOf(R).version,ke=de?nn(de):"",re=B(P),te=dn(o(R));E.push(`<a href="${g(ge)}" class="kan-fan-xtick"><line x1="${re.toFixed(1)}" y1="${L.top}" x2="${re.toFixed(1)}" y2="${(D-L.bottom).toFixed(1)}" class="kan-fan-vline"/><text x="${re.toFixed(1)}" y="${(D-L.bottom+20).toFixed(1)}" class="kan-fan-xlabel" text-anchor="middle">${Re(ke||R.name)}</text>`+(te?`<text x="${re.toFixed(1)}" y="${(D-L.bottom+36).toFixed(1)}" class="kan-fan-xdate" text-anchor="middle">${Re(te)}</text>`:"")+"</a>")});let Q=[];b.forEach((R,P)=>{if(!R.lower||!R.upper)return;let ge=ce(R,P),de=[],ke=[];for(let te=0;te<h;te++){let Ee=R.upper[te],Se=R.lower[te];Ee==null||Se===null||Se===void 0||(de.push(`${B(te).toFixed(1)},${J(Ee).toFixed(1)}`),ke.unshift(`${B(te).toFixed(1)},${J(Se).toFixed(1)}`))}let re=de.concat(ke);re.length<3||Q.push(`<polygon class="kan-fan-band" points="${re.join(" ")}" fill="hsl(${ge},65%,60%)"/>`)});let F=[];b.forEach((R,P)=>{let de=`hsl(${ce(R,P)},65%,60%)`,ke=[],re=[];R.points.forEach((te,Ee)=>{if(te===null)return;let Se=B(Ee),oe=J(te);ke.push(`${Se.toFixed(1)},${oe.toFixed(1)}`),re.push(`<circle cx="${Se.toFixed(1)}" cy="${oe.toFixed(1)}" r="3.5" fill="${de}"/>`)}),ke.length!==0&&F.push(`<g class="kan-fan-series" data-series="${g(R.key)}"><polyline points="${ke.join(" ")}" fill="none" stroke="${de}" stroke-width="2" stroke-linejoin="round" stroke-linecap="round"/>`+re.join("")+"</g>")});let S=`<svg class="kan-fan-svg" viewBox="0 0 ${U} ${D}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">`+ue.join("")+E.join("")+Q.join("")+F.join("")+"</svg>",A=f?`${g(f)}=`:"",G=b.map((R,P)=>{let ge=ce(R,P),de=R.points.filter(oe=>oe!==null),ke=de.length?de[0]:void 0,re=de.length?de[de.length-1]:void 0,te="";if(re!==void 0&&ke!==void 0){let oe=re-ke;if(Math.abs(oe)>=.005){let Te=oe>0?"up":"down",Le=oe>0?"\u25B2":"\u25BC";te=` <span class="kan-fan-delta ${Te}">${oe>0?"+":""}${oe.toFixed(2)} ${Le}</span>`}else te=' <span class="kan-fan-delta flat">\u2014</span>'}let Ee=re!==void 0?`${A}${re.toFixed(2)}`:"\u2014",Se=R.lastSubject&&this.isLinkable(ne(R.lastSubject),s)?`<a href="${g(this.hrefForSubject(R.lastSubject,s))}">${g(R.label)}</a>`:g(R.label);return`<div class="kan-fan-legend-item" style="--kan-fan-hue:${ge}"><span class="kan-fan-swatch"></span><span class="kan-fan-legend-label">${Se}</span><span class="kan-fan-legend-cur">${Ee}${te}</span></div>`});return`<section class="kan-fan"><div class="kan-fan-chart">${S}</div><div class="kan-fan-legend">${G.join("")}</div></section>`}resolveResourceQuery(e){let n=i=>{let c=T(i,Mr);if(!c)return;let l=T(i,on),d=ee(i,Nr),f=this.readPropertyValueText(i,Dr),p=f!==void 0?Number(f):NaN;return{ofClass:c,...l?{orderBy:l}:{},descending:d==="descending",...Number.isInteger(p)&&p>0?{limit:p}:{}}},t=this.readEmbeddedCarrier(e,se);if(t)return n(t);let a=T(e,se);if(!a)return;let s=Z(this.catalog,a);return(s?me(s).some(i=>M(i.subject,Ar)):!1)&&s?n(s):{ofClass:a,descending:!1}}applyQueryShape(e,n){let t=e;if(n.orderBy){let a=s=>this.readPropertyValueText(s,n.orderBy)??"";t=t.slice().sort((s,o)=>a(s).localeCompare(a(o))),n.descending&&t.reverse()}return n.limit!==void 0&&(t=t.slice(0,n.limit)),t}renderResourceGrid(e,n,t){let a=this.resolveResourceQuery(e),s=T(e,se)??a?.ofClass;if(!s)return"<!-- LookRenderer.ResourceGrid: no look.source -->";let o=Z(this.catalog,s),i=o?Bn(this.catalog,o)!==void 0:!1,c=[];if(i&&t){let d=this.readPropertyValueReferences(t,s);for(let f of d){let p=Z(this.catalog,{publisher:f.subject.publisher,package_:f.subject.package_,name:f.subject.name,...f.subject.version?{version:f.subject.version}:{}});p&&c.push(p)}}else a?c=this.applyQueryShape(this.findInstancesOfClass(a.ofClass,this.readTransitive(e)),a):c=this.findInstancesOfClass(s,this.readTransitive(e));if(c.length===0)return`<!-- LookRenderer.ResourceGrid: no resources for ${s.publisher}/${s.package_}/${s.name} -->`;let l=[];for(let d of c){let f=N(this.catalog,d),p=f.label,m=f.summary,h=this.uriOf(d),b=h.package_,k=h.version,$=this.resourceHref({publisher:ne(d),package_:b,name:d.name,...k?{version:k}:{}},n),v=m?`<p class="kan-resource-card-subtitle">${g(m)}</p>`:"",_=`<h3 class="kan-resource-card-title">${g(p)}</h3>${v}`;l.push(this.isLinkable(ne(d),n)?`<a class="kan-resource-card" href="${g($)}">${_}</a>`:`<span class="kan-resource-card">${_}</span>`)}return`<section class="kan-resource-grid">
|
|
131
|
-
${l.join(`
|
|
132
|
-
`)}
|
|
133
|
-
</section>`}readTransitive(e){let n=z(e,rs);return n instanceof ae?n.object===!0:n instanceof W&&n.object==="true"}findInstancesOfClass(e,n=!1){let t=n?this.descendantTypeKeys(e):new Set([Y(e)]),a=[];for(let s of this.catalog)s instanceof q&&me(s).some(o=>t.has(Y(o.subject)))&&a.push(s);return a}renderBreadcrumb(e,n,t){let s=(e.namespace||"").split("/");if(s.length<2)return"";let o=s[0],i=s[1]??"",c=i.split("@")[0]??"",l=i.split("@")[1]??"";if(!o||!c)return"";if(t?.bareOverview)return`<nav class="kan-breadcrumb"><ol>
|
|
134
|
-
<li><a href="${g(this.publisherHref(o))}">${g(o)}</a></li>
|
|
135
|
-
<li aria-current="page">${g(c)}</li>
|
|
136
|
-
</ol></nav>`;let d=e.name,p=!!Z(this.catalog,{publisher:o,package_:c,name:c}),m=l?`${c}@${l}`:c,h=this.resourceHref({publisher:o,package_:c,name:c,...l?{version:Tn(l)}:{}},o),b=e.name===c,k=[];return k.push(`<li><a href="${g(this.publisherHref(o))}">${g(o)}</a></li>`),b?k.push(`<li aria-current="page">${g(m)}</li>`):(k.push(p?`<li><a href="${g(h)}">${g(m)}</a></li>`:`<li>${g(m)}</li>`),k.push(`<li aria-current="page">${g(d)}</li>`)),`<nav class="kan-breadcrumb"><ol>
|
|
137
|
-
${k.join(`
|
|
138
|
-
`)}
|
|
139
|
-
</ol></nav>`}renderNavGroup(e,n){let t=z(this.publisherSubject(n),Sa),a=t instanceof I?t.object??[]:t instanceof x&&t.object instanceof j?[t.object]:[];if(a.length===0)return"";let s=[];for(let o of a){if(!(o instanceof j))continue;let i=Z(this.catalog,{publisher:o.subject.publisher,package_:o.subject.package_,name:o.subject.name}),{href:c,label:l}=this.resolveNavEntry(o,i,n),d=this.hrefForSubject(e,n),f=c===d?' aria-current="page"':"";s.push(`<li><a class="kan-nav-link" href="${g(c)}"${f}>${g(l)}</a></li>`)}return`<nav class="kan-site-nav"><ul>
|
|
140
|
-
${s.join(`
|
|
141
|
-
`)}
|
|
142
|
-
</ul></nav>`}renderSiteFooter(e){let n=z(this.publisherSubject(e),wa),t;if(n instanceof H?t=n.object:n instanceof x&&n.object instanceof j&&(t=Z(this.catalog,{publisher:n.object.subject.publisher,package_:n.object.subject.package_,name:n.object.subject.name})),!t)return"";let a=ee(t,_a),s=z(t,ja),o=s instanceof I?s.object??[]:s instanceof x&&s.object instanceof j?[s.object]:[],i=[];for(let l of o){if(!(l instanceof j))continue;let d=Z(this.catalog,{publisher:l.subject.publisher,package_:l.subject.package_,name:l.subject.name}),{href:f,label:p}=this.resolveNavEntry(l,d,e);i.push(`<a class="kan-footer-link" href="${g(f)}">${g(p)}</a>`)}if(!a&&i.length===0)return"";let c=[];return i.length>0&&c.push(`<div class="kan-footer-links">${i.join("")}</div>`),a&&c.push(`<p class="kan-footer-text">${g(a)}</p>`),`<footer class="kan-site-footer">${c.join(`
|
|
143
|
-
`)}</footer>`}resolveNavEntry(e,n,t){if(n&&me(n).map(c=>c.subject).some(c=>c.publisher===Kn.publisher&&c.package_===Kn.package_&&c.name===Kn.name)){let c=ee(n,jn),l=z(n,kt);if(l instanceof x&&l.object instanceof j){let d=l.object,f=this.readLabelForUri({publisher:d.subject.publisher,package_:d.subject.package_,name:d.subject.name});return{href:this.urlForReference(d,kt,t),label:c??f??d.subject.name}}}let a=this.resourceHref({publisher:e.subject.publisher,package_:e.subject.package_,...e.subject.version?{version:e.subject.version}:{},name:e.subject.name},t,"*"),s=n?N(this.catalog,n).label:e.subject.name;return{href:a,label:s}}codeHighlighter(){return this._codeHighlighter||(this._codeHighlighter=new sn(this.collectGrammars())),this._codeHighlighter}collectGrammars(){let e=[];for(let n of this.catalog){if(!(n instanceof q)||!me(n).some(i=>M(i.subject,lr)))continue;let t=ee(n,ur);if(!t)continue;let a=z(n,dr),s=a instanceof I?a.object??[]:[],o=[];for(let i of s){if(!(i instanceof V))continue;let c=T(i,fr),l=ee(i,pr);!c||!l||o.push({tokenClass:c.name,pattern:l})}e.push({language:t,rules:o})}return e}renderLinks(e,n){let t=T(e,se);if(!t)return"";let a=z(n,t),s=[];a instanceof I?s=a.object??[]:a instanceof H?s=[a.object]:a instanceof x&&a.object instanceof j&&(s=[a.object]);let o=[];for(let i of s){let c;if(i instanceof V?c=i:i instanceof j&&(c=Z(this.catalog,{publisher:i.subject.publisher,package_:i.subject.package_,name:i.subject.name})),!c)continue;let l=ee(c,kr);if(!l)continue;let d=ee(c,jn)??l,f=ee(c,pt),p=f?` title="${g(f)}"`:"";o.push(`<a class="kan-extlink" href="${g(l)}"${p} target="_blank" rel="noopener noreferrer">${g(d)}</a>`)}return o.length===0?"":`<section class="kan-extlink-row">${o.join("")}</section>`}renderMarkdown(e,n,t){let a=T(e,se);if(!a)return"<!-- LookRenderer.Markdown: no look.source -->";let s=z(n,a),o=new Map,i;if(s instanceof Fe?i=this.resolveMarkdownLinks(s,t,o):s instanceof W?i=s.object:i=this.readPropertyValueText(n,a),!i)return"";let c=this.codeHighlighter(),l=Ye(i,{highlight:(d,f)=>c.highlight(d,f)});for(let[d,f]of o){let p=new RegExp('(<a href="'+Ut(d)+'">)([^<]*)(</a>)',"g");l=l.replace(p,`$1<img class="kan-md-chip" src="${g(f)}" alt="" loading="lazy">$2$3`)}return`<section class="kan-markdown">
|
|
144
|
-
${l}
|
|
145
|
-
</section>`}resolveMarkdownLinks(e,n,t){let a=e.object,s=[...e.links].sort((o,i)=>i.startOffset-o.startOffset);for(let o of s){let i;if(o.target&&this.isLinkable(o.target.subject.publisher,n)){let c=o.target.subject,l=(o.displayText??this.readLabelForUri({publisher:c.publisher,package_:c.package_,name:c.name})??o.reference).replace(/[[\]]/g,""),d=this.resourceHref({publisher:c.publisher,package_:c.package_,name:c.name,...c.version?{version:c.version}:{}},n);t&&t.set(d,`${d}.svg`),i=`[${l}](${d})`}else if(o.target){let c=o.target.subject;i=(o.displayText??this.readLabelForUri({publisher:c.publisher,package_:c.package_,name:c.name})??o.reference).replace(/[[\]]/g,"")}else i=o.displayText??o.reference;a=a.slice(0,o.startOffset)+i+a.slice(o.endOffset)}return a}renderRawMarkdown(e){let n=this.findCascadedLook(e);if(!n)return;let t=Un(n.declaration),a=[];for(let s of t){let o=ze(s);if(!o||!M(o,gt))continue;let i=T(s,se);if(!i)continue;let c=this.readPropertyValueText(e,i);c&&a.push(c)}return a.length>0?a.join(`
|
|
146
|
-
|
|
147
|
-
`):void 0}renderHero(e,n,t){let a=b=>{let k=z(e,b);return k instanceof ae?k.object===!0:k instanceof W&&k.object==="true"},s=a(ts),o=!s&&a(ns),i=s||o,l=[`<header class="${s?"kan-hero kan-hero-has-avatar":o?"kan-hero kan-hero-has-icon":"kan-hero"}">`];if(i){let b=this.svgUrlForSubject(n,t),k=s?"kan-hero-avatar":"kan-hero-icon";l.push(`<img class="${k}" src="${g(b)}" alt="" loading="lazy"/>`),l.push('<div class="kan-hero-text">')}let d=T(e,Jr);if(d){let b=this.readPropertyValueText(n,d);b&&l.push(`<span class="kan-hero-eyebrow">${g(gn(b)??b)}</span>`)}let f=T(e,Xr),p="";f&&(p=this.readPropertyValueText(n,f)??""),p||(p=N(this.catalog,n).label),l.push(`<h1 class="kan-hero-title">${g(gn(p)??p)}</h1>`);let m=T(e,Zr);if(m){let b=this.readPropertyValueText(n,m);b&&l.push(`<p class="kan-hero-subtitle">${g(gn(b)??b)}</p>`)}let h=T(e,Kt);if(h){let b=this.readPropertyValueReferences(n,h);if(b.length>0){let k=b.map($=>this.renderBadge($,Kt,t)).join("");l.push(`<div class="kan-hero-badges">${k}</div>`)}}return i&&l.push("</div>"),l.push("</header>"),l.join(`
|
|
148
|
-
`)}renderPropertyList(e,n,t){let a=T(e,se);if(!a)return"<!-- LookRenderer: PropertyList missing look.source -->";let s=this.readLabelForUri(a)??a.name,o=z(n,a),i=this.gatherValueItems(o),c=i.length>0?i.map(l=>`<li>${this.renderInlineValue(l,se,t)}</li>`).join(""):'<li class="kan-empty">(no values)</li>';return['<section class="kan-property-list">',`<h3 class="kan-property-list-title">${g(s)}</h3>`,`<ul class="kan-property-list-items">${c}</ul>`,"</section>"].join(`
|
|
149
|
-
`)}renderPropertyTable(e,n,t,a=""){let s=T(e,se);if(!s)return"<!-- LookRenderer: PropertyTable missing look.source -->";let o=this.gatherValueItems(z(n,s)).filter(d=>d instanceof V);if(o.length===0)return"";let i=this.readLabelForUri(s)??s.name,c=a?`${a}.${s.name}`:s.name,l=T(e,Fr);return this.renderEmbeddedTable(o,t,i,c,l)}renderEmbeddedTable(e,n,t,a,s){let o=[],i=new Set;for(let k of e)for(let $ of k.statement){let v=$.predicate?.subject;if(!v||this.isMetaPredicate(v))continue;let _=`${v.publisher}/${v.package_}/${v.name}`;i.has(_)||(i.add(_),o.push({uri:{publisher:v.publisher,package_:v.package_,name:v.name},label:this.readLabelForUri(v)??v.name}))}if(o.length===0)return"";let c=e.map(k=>N(this.catalog,k).label),l=e.some((k,$)=>c[$]!==""&&c[$]!==k.name),d=!!a,f=(d?'<th class="kan-anchor-col"></th>':"")+(l?"<th></th>":"")+o.map(k=>`<th>${g(k.label)}</th>`).join(""),p=e.map((k,$)=>{let v=d&&k.name?`${a}.${k.name}`:"",_=v?` id="${g(v)}"`:"",K=d?`<td class="kan-anchor-col">${v?this.anchorLink(v):""}</td>`:"",O=l?`<th scope="row">${g(c[$]??"")}</th>`:"",U=o.map(D=>{let L=z(k,D.uri);return L?`<td>${this.tableCellValue(L,n,s)}</td>`:"<td></td>"}).join("");return`<tr${_}>${K}${O}${U}</tr>`}).join(""),m=d&&a?` id="${g(a)}"`:"",h=d&&a?this.anchorLink(a):"",b=t?`<caption>${g(t)}${h}</caption>`:"";return`<table class="kan-property-table"${m}>${b}<thead><tr>${f}</tr></thead><tbody>${p}</tbody></table>`}tableCellValue(e,n,t){if(t&&M(t,bt)){if(e instanceof ie)return this.barMarkup(String(e.object));if(e instanceof W&&Number.isFinite(Number(e.object)))return this.barMarkup(e.object)}if(e instanceof Fe)return this.statementToMarkdownHtml(e,n);if(e instanceof W)return Ct(e.object);if(e instanceof ie||e instanceof ae)return g(String(e.object));if(e instanceof x&&e.object instanceof j)return this.detailReferenceLink(e.object,n);if(e instanceof H)return this.renderEmbeddedTable([e.object],n);if(e instanceof I){let a=e.object??[],s=a.filter(o=>o instanceof V);return s.length>0&&s.length===a.length?this.renderEmbeddedTable(s,n):a.map(o=>o instanceof j?this.detailReferenceLink(o,n):o instanceof V?this.renderEmbeddedTable([o],n):g(String(o))).filter(o=>o).join(", ")}return""}statementToMarkdownHtml(e,n){let t=new Map,a;if(e instanceof Fe?a=this.resolveMarkdownLinks(e,n,t):e instanceof W&&(a=e.object),!a)return"";let s=this.codeHighlighter(),o=Ye(a,{highlight:(i,c)=>s.highlight(i,c)});for(let[i,c]of t){let l=new RegExp('(<a href="'+Ut(i)+'">)([^<]*)(</a>)',"g");o=o.replace(l,`$1<img class="kan-md-chip" src="${g(c)}" alt="" loading="lazy">$2$3`)}return o}renderBadgeRow(e,n,t){let a=T(e,se);if(!a)return"<!-- LookRenderer: BadgeRow missing look.source -->";let s=this.readPropertyValueReferences(n,a);return s.length===0?"":`<div class="kan-badge-row">${s.map(i=>this.renderBadge(i,se,t)).join("")}</div>`}renderChipRow(e,n,t){let a=Cn(e,ss);if(a.length===0)return"<!-- LookRenderer: ChipRow has no look.chips -->";let s=[];for(let o of a){let i=z(n,o);if(!i)continue;let c=this.readLabelForUri(o)??o.name,l=this.renderStatementInlineValue(i,o,t);l&&s.push(`<span class="kan-chip"><span class="kan-chip-key">${g(c)}</span> <span class="kan-chip-val">${l}</span></span>`)}return s.length===0?"":`<div class="kan-chip-row">${s.join("")}</div>`}async renderReferenceList(e,n,t){let a=Cn(e,Rt);if(a.length===0)return"<!-- LookRenderer: ReferenceList has no look.entries -->";let s=this.readEmbeddedCarrier(e,ht),o=this.readEmbeddedCarrier(e,Tr),i=[];for(let c of a){let l=this.readPropertyValueReferences(n,c);if(l.length===0)continue;let d=this.readLabelForUri(c)??c.name;if(s){let f=[];for(let m of l)f.push(await this.renderDetailRow(m,s,o,t));let p=f.filter(m=>m).join("");p&&i.push(`<dt>${g(d)}</dt><dd><ul class="kan-ref-rows">${p}</ul></dd>`)}else{let f=l.map(p=>this.renderReferenceLink(p,Rt,t)).join(", ");i.push(`<dt>${g(d)}</dt><dd>${f}</dd>`)}}return i.length===0?"":`<dl class="kan-reference-list">${i.join("")}</dl>`}async renderDetailRow(e,n,t,a){let s=Z(this.catalog,{publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name,...e.subject.version?{version:e.subject.version}:{}});if(!s)return"";let o=await this.evaluateCarrier(n,s)??N(this.catalog,s).label,i="";if(t){let f=await this.evaluateCarrier(t,s);f&&(i=`<span class="kan-ref-badge">${g(f)}</span>`)}let c=`<span class="kan-ref-text">${g(o)}</span>${i}`;if(!this.isLinkable(ne(s),a))return`<li class="kan-ref-row"><span class="kan-ref-rowlink">${c}</span></li>`;let l=this.hrefForSubject(s,a),d=this.svgUrlForSubject(s,a);return`<li class="kan-ref-row"><a class="kan-ref-rowlink" href="${g(l)}"><img class="kan-ref-icon" src="${g(d)}" alt="" loading="lazy"/>`+c+"</a></li>"}readPropertyValueText(e,n){let t=z(e,n);if(t){if(t instanceof W)return t.object;if(t instanceof ie||t instanceof ae)return String(t.object);if(t instanceof x){let a=t.object;return this.readLabelForUri({publisher:a.subject.publisher,package_:a.subject.package_,name:a.subject.name})??a.subject.name}if(t instanceof H)return this.readEmbeddedText(t.object,0)||void 0;if(t instanceof I)return(t.object??[]).map(s=>s instanceof j?this.readLabelForUri({publisher:s.subject.publisher,package_:s.subject.package_,name:s.subject.name})??s.subject.name:s instanceof V?this.readEmbeddedText(s,0):String(s)).filter(s=>s).join(", ")}}readEmbeddedText(e,n){if(n>=jt)return"\u2026";let t=[];for(let a of e.statement){let s=a.predicate?.subject;if(!(s&&M(s,Ce)))if(a instanceof W)t.push(a.object);else if(a instanceof ie||a instanceof ae)t.push(String(a.object));else if(a instanceof x){let o=a.object;t.push(this.readLabelForUri({publisher:o.subject.publisher,package_:o.subject.package_,name:o.subject.name})??o.subject.name)}else a instanceof H&&t.push(this.readEmbeddedText(a.object,n+1))}return t.filter(a=>a).join(", ")}readPropertyValueReferences(e,n){let t=z(e,n);if(!t)return[];if(t instanceof x)return[t.object];if(t instanceof I){let a=[];for(let s of t.object??[])s instanceof j&&a.push(s);return a}return[]}gatherValueItems(e){return e?e instanceof I?e.object??[]:e instanceof x?[e.object]:e instanceof H?[e.object]:e instanceof W?[e.object]:e instanceof ie||e instanceof ae?[e.object]:[]:[]}renderInlineValue(e,n,t,a=0){return e instanceof j?this.renderReferenceLink(e,n,t):e instanceof V?this.renderEmbeddedInline(e,t,a):typeof e=="string"?g(e):typeof e=="number"||typeof e=="boolean"?g(String(e)):""}renderStatementInlineValue(e,n,t,a=0){return e instanceof W?g(e.object):e instanceof ie||e instanceof ae?g(String(e.object)):e instanceof x?this.renderReferenceLink(e.object,n,t):e instanceof H?this.renderEmbeddedInline(e.object,t,a):e instanceof I?(e.object??[]).map(o=>this.renderInlineValue(o,n,t,a)).filter(o=>o).join(", "):""}renderEmbeddedInline(e,n,t=0){if(t>=jt)return"\u2026";let a=[];for(let s of e.statement){let o=s.predicate?.subject;if(!o||M(o,Ce))continue;let i=this.readLabelForUri({publisher:o.publisher,package_:o.package_,name:o.name})??o.name,c=this.renderStatementInlineValue(s,o,n,t+1);c&&a.push(`<dt>${g(i)}</dt><dd>${c}</dd>`)}return a.length?`<dl class="kan-embedded">${a.join("")}</dl>`:""}renderReferenceLink(e,n,t){let a=this.readLabelForUri({publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name})??e.subject.name;if(!this.isLinkable(e.subject.publisher,t))return`<span class="kan-link-plain">${g(a)}</span>`;let s=this.urlForReference(e,n,t);return`<a class="kan-link" href="${g(s)}">${g(a)}</a>`}isLinkable(e,n){return this.publisherFirst||e===n}renderBadge(e,n,t){let a=this.readLabelForUri({publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name})??e.subject.name,s=this.readCommentForUri({publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name}),o=s?` title="${g(s)}"`:"";if(!this.isLinkable(e.subject.publisher,t))return`<span class="kan-badge"${o}>${g(a)}</span>`;let i=this.urlForReference(e,n,t);return`<a class="kan-badge" href="${g(i)}"${o}>${g(a)}</a>`}urlForReference(e,n,t){let a=n?this.getUrlFormForProperty(n):"=";return this.resourceHref({publisher:e.subject.publisher,package_:e.subject.package_,...e.subject.version?{version:e.subject.version}:{},name:e.subject.name},t,a)}getUrlFormForProperty(e){let n=Z(this.catalog,e);if(!n)return"=";let t=ee(n,os);return t==="*"||t==="^"||t==="~"||t==="="?t:"="}readLabelForUri(e){let n=Z(this.catalog,e);if(n)return N(this.catalog,n).label}readCommentForUri(e){let n=Z(this.catalog,e);if(n)return N(this.catalog,n).summary}};function is(r){let e=new Map;for(let n of r.statement){if(!(n instanceof H)||!$e(n,pn.publisher,pn.package_,pn.name))continue;let t=n.object;for(let a of t.statement){if(!(a instanceof W))continue;let s=a.predicate?.subject?.name;if(!s)continue;let o=a.object;e.has(s)||e.set(s,o)}}return e}function cn(r){for(let e of r.statement)if(e instanceof H&&$e(e,fn.publisher,fn.package_,fn.name))return e.object}function Un(r){for(let e of r.statement){if(!(e instanceof I)||!$e(e,On.publisher,On.package_,On.name))continue;let n=[];for(let t of e.object??[])t instanceof V&&n.push(t);return n}return[]}function ze(r){for(let e of r.statement)if(e instanceof x&&!(!e.predicate?.subject||!M(e.predicate.subject,Ce))&&e.object instanceof j){let n=e.object.subject;return{publisher:n.publisher,package_:n.package_,name:n.name}}}function T(r,e){for(let n of r.statement)if(n instanceof x&&$e(n,e.publisher,e.package_,e.name)&&n.object instanceof j){let t=n.object.subject;return{publisher:t.publisher,package_:t.package_,name:t.name}}}function Cn(r,e){for(let n of r.statement){if(!(n instanceof I)||!$e(n,e.publisher,e.package_,e.name))continue;let t=[];for(let a of n.object??[])a instanceof j&&t.push({publisher:a.subject.publisher,package_:a.subject.package_,name:a.subject.name});return t}return[]}function z(r,e){for(let n of r.statement)if($e(n,e.publisher,e.package_,e.name))return n}function ee(r,e){for(let n of r.statement)if(n instanceof W&&$e(n,e.publisher,e.package_,e.name))return n.object}function ln(r,e){for(let n of r.statement)if(n instanceof H&&$e(n,e.publisher,e.package_,e.name))return n.object}function Et(r,e){for(let n of r.statement)if(n instanceof ie&&$e(n,e.publisher,e.package_,e.name))return n.object}function cs(r,e){for(let n of r.statement)if(n instanceof ae&&$e(n,e.publisher,e.package_,e.name))return n.object===!0;return!1}function ls(r){for(let e of me(r))if(M(e.subject,da)||M(e.subject,fa))return!0;return!1}function me(r){let e=[];for(let n of r.statement)if(n instanceof x){if(!n.predicate?.subject||!M(n.predicate.subject,Ce))continue;n.object instanceof j&&e.push(n.object)}else if(n instanceof I){if(!n.predicate?.subject||!M(n.predicate.subject,Ce))continue;for(let t of n.object??[])t instanceof j&&e.push(t)}return e}function un(r){let e=[];for(let n of r.statement)if(n instanceof x){if(!n.predicate?.subject||!M(n.predicate.subject,_t))continue;n.object instanceof j&&e.push(n.object)}else if(n instanceof I){if(!n.predicate?.subject||!M(n.predicate.subject,_t))continue;for(let t of n.object??[])t instanceof j&&e.push(t)}return e}function Z(r,e){let n="version"in e?e.version:void 0;if(n){let t=`${e.publisher}/${e.package_}@${n.major}.${n.minor}.${n.patch}`;for(let a of r)if(a instanceof q&&a.name===e.name&&a.namespace===t)return a}for(let t of r){if(!(t instanceof q)||t.name!==e.name)continue;if((t.namespace||"").startsWith(`${e.publisher}/${e.package_}@`))return t}}function $e(r,e,n,t){let a=r.predicate?.subject;return a?a.publisher===e&&a.package_===n&&a.name===t:!1}function M(r,e){return r.publisher===e.publisher&&r.package_===e.package_&&r.name===e.name}function Y(r){return`${r.publisher}/${r.package_}/${r.name}`}function us(r){let e=s=>s.replace(/\*\//g,"* /"),n=[];n.push(` * kanonak stylesheet \u2014 ${e(r.resource.namespace)}/${e(r.resource.name)}`),n.push(" *");let t=new Map;for(let s of r.tokens.values()){let o=`${s.sourceNamespace} ${s.sourceName}`,i=t.get(o)??{count:0,level:s.level};i.count+=1,t.set(o,i)}if(t.size===0)n.push(" * :root tokens: NONE resolved");else{n.push(` * :root tokens (${r.tokens.size}):`);for(let[s,{count:o,level:i}]of t)n.push(` * ${o} from ${e(s)} (${i})`)}let a=r.baseStylesheet;if(a.css!==void 0)n.push(` * base CSS: ${e(a.sourceNamespace??"")}/base-stylesheet (${a.css.length} bytes, ${a.scope})`);else{n.push(" *"),n.push(" * !! WARNING: NO BASE STYLESHEET \u2014 this file contains only :root tokens."),n.push(" * !! Pages will appear UNSTYLED.");for(let s of r.warnings)n.push(` * !! ${e(s)}`);n.push(" * !! Full diagnostics: /.well-known/kanonak-render")}if(r.look){let s=r.look.sourceClass;n.push(` * look: ${e(s.publisher)}/${e(s.package_)}/${e(s.name)}`)}return`/*
|
|
150
|
-
${n.join(`
|
|
151
|
-
`)}
|
|
152
|
-
*/`}function ne(r){let e=r.namespace||"",n=e.indexOf("/");return n>=0?e.substring(0,n):e}function g(r){return r.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function Re(r){return r.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}function Lt(r,e){return e==null?"":Pe(e)?e.value:r==="string-literal"?typeof e=="string"?e:String(e):Array.isArray(e)?e.map(n=>Pe(n)?n.value:Re(typeof n=="string"?n:String(n))).join(""):Re(typeof e=="string"?e:String(e))}function It(r){if(r==null)return"";if(typeof r=="string")return r;if(typeof r=="number"||typeof r=="boolean")return String(r);if(Pe(r))return r.value;if(Array.isArray(r))return r.map(It).filter(n=>n!=="").join(", ");if(r instanceof j)return r.subject.name;if(r instanceof q||r instanceof V)return r.name??"";let e=r.value;return typeof e=="string"?e:typeof e=="number"||typeof e=="boolean"?String(e):""}function In(r,e){return r.length<=e?r:r.slice(0,e).replace(/\s+\S*$/,"")+"\u2026"}function Ot(r){return r.toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}function Ut(r){return r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Ct(r){let e=gn(r);return g(e||r)}function gn(r){let e=/^(\d{4})-(\d{2})-(\d{2})([T ]\d{2}:\d{2}(?::\d{2})?(?:\.\d+)?(?:Z|[+-]\d{2}:?\d{2})?)?$/.exec(r.trim());if(!e)return;let n=Date.parse(r);if(!Number.isFinite(n))return;let t=new Date(n),s=`${["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"][t.getUTCMonth()]} ${t.getUTCDate()}, ${t.getUTCFullYear()}`;if(!e[4])return s;let o=t.getUTCHours(),i=(o+11)%12+1,c=o>=12?"PM":"AM";return`${s} \xB7 ${i}:${String(t.getUTCMinutes()).padStart(2,"0")} ${c} UTC`}function dn(r){if(!r)return"";let e=/^(\d{4})-(\d{2})-(\d{2})/.exec(r);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)}`:r}function ds(){return new Set(kn.bandDispatchUris().map(r=>`${r.publisher}/${r.package_}/${r.name}`))}export{N as a,Ye as b,Pe as c,Ke as d,Xe as e,X as f,Ys as g,Oe as h,rn as i,kn as j,ds as k};
|
package/dist/chunk-H6UAD2LP.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as D}from"./chunk-FUUTGGJS.js";import{c as h,g as S}from"./chunk-QILEJIFU.js";var c=class{};var m=class extends c{statement=[];unresolvedPredicates=[];sourceDoc=""};var p=class extends m{namespace;name;icon};var a=class{predicate;object};var i=class extends a{carrier;lexical};var s=class n extends c{subject;static parse(e){let t=new n;return t.subject=D.parse(e),t}};var l=class n extends i{static parse(e,t){let r=new n;return r.predicate=s.parse(e),r.object=t,r}};var y=class n extends i{static parse(e,t){let r=new n;return r.predicate=s.parse(e),r.object=t,r}};var k=class extends i{};var f=class n extends a{static parse(e,t){let r=new n;return r.predicate=s.parse(e),r.object=s.parse(t),r}};var g=class extends a{};var b=class extends a{};function E(n){return`${n.publisher}/${n.package_}/${n.name}`}function x(n,e){return n.publisher===e.publisher&&n.package_===e.package_&&n.name===e.name}function $(n){let e=n.version;return e&&typeof e.major=="number"?`https://${n.publisher}/${n.package_}/${e.major}.${e.minor}.${e.patch}/${n.name}`:`https://${n.publisher}/${n.package_}/${n.name}`}function U(n,e){if(!(n instanceof m))return!1;for(let t of n.statement)if(t.predicate?.subject?.name==="type"&&t instanceof f){let o=t.object;if(x(o.subject,e))return!0}return!1}function A(n,e){let t=[];for(let r of n)r instanceof p&&U(r,e)&&t.push(r);return t}function P(n,e){let t=e.version,r=t&&typeof t.major=="number"?`${e.publisher}/${e.package_}@${t.major}.${t.minor}.${t.patch}`:void 0;for(let o of n){if(!(o instanceof p)||o.name!==e.name)continue;let u=o.namespace||"";if(r!==void 0){if(u===r)return o}else if(u.startsWith(`${e.publisher}/${e.package_}@`))return o}}function v(n,e){let t=[];for(let r of n){if(!(r instanceof p)||r.name!==e.name)continue;(r.namespace||"").startsWith(`${e.publisher}/${e.package_}@`)&&t.push(r)}return t.sort((r,o)=>{let u=S((r.namespace||"").split("@")[1]??""),K=S((o.namespace||"").split("@")[1]??"");return u?K?h(K,u):-1:K?1:0}),t}function d(n,e){for(let t of n.statement){let r=t.predicate;if(r?.subject&&x(r.subject,e))return t}}function I(n,e){return d(n,e)!==void 0}function R(n,e){let t=d(n,e);if(t&&(t instanceof l||t instanceof y||t instanceof k))return t.object}function V(n,e){let t=R(n,e);return typeof t=="string"?t:void 0}function w(n,e){let t=d(n,e);if(t instanceof f)return t.object.subject}function C(n,e){let t=d(n,e);if(t instanceof g)return t.object}function B(n,e){let t=d(n,e);return t instanceof b?t.object??[]:[]}var j=class{constructor(e,t){this.doc=e;this.broader=t}doc;broader;async getAllDocumentsAsync(){return[this.doc]}async getDocumentAsync(e){return this.broader.getDocumentAsync(e)}async getDocumentsByNamespaceAsync(e,t){return this.broader.getDocumentsByNamespaceAsync(e,t)}async getHighestCompatibleVersionAsync(e,t){return this.broader.getHighestCompatibleVersionAsync(e,t)}async saveDocumentAsync(){throw new Error("SingleDocumentRepository is read-only")}async deleteDocumentAsync(){throw new Error("SingleDocumentRepository is read-only")}async clearNamespaceAsync(){throw new Error("SingleDocumentRepository is read-only")}async getAllDocumentReferencesAsync(){return[]}async getDocumentContentAsync(e){return this.broader.getDocumentContentAsync(e)}async getDocumentUriAsync(e){return this.broader.getDocumentUriAsync(e)}};export{c as a,m as b,p as c,s as d,a as e,i as f,l as g,y as h,k as i,f as j,g as k,b as l,E as m,x as n,$ as o,U as p,A as q,P as r,v as s,I as t,R as u,V as v,w,C as x,B as y,j as z};
|
package/dist/chunk-I3UXFEJA.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{e as F}from"./chunk-P5VQEDBS.js";import{I as me,J as he}from"./chunk-3XOXKMYB.js";import{a as te,b as $,c as le,i as z,m as D}from"./chunk-YU2VGLOT.js";import{k as ue,o as O,p as x,q as ge,r as B,v as ye}from"./chunk-O6YV2SDB.js";import{b as ne,c as T,d as _,f as oe,g as se,h as ae,i as ie,j as ce,k as pe,l as L,m as K,r as G,t as de,v as I,w as fe,y as V}from"./chunk-H6UAD2LP.js";import{a as re}from"./chunk-FUUTGGJS.js";import{d as ee}from"./chunk-QILEJIFU.js";var Ce=(a=>(a.Class="Class",a.DatatypeProperty="DatatypeProperty",a.ObjectProperty="ObjectProperty",a.AnnotationProperty="AnnotationProperty",a.Instance="Instance",a.Datatype="Datatype",a.Unknown="Unknown",a))(Ce||{}),Se=(i=>(i.InstanceOf="instanceOf",i.SubClassOf="subClassOf",i.Domain="domain",i.Range="range",i.ObjectRelationship="objectRelationship",i.SubPropertyOf="subPropertyOf",i.PropertyValue="propertyValue",i.EmbeddedLink="embeddedLink",i))(Se||{}),H=class{static async buildFromRepository(n,t){let o=await new D().parseKanonaks(n),s=await n.getAllDocumentsAsync(),c=[],a=[],i=new Set,d=new Set,f=new Map;for(let g of o){let u=g;if(u.name&&(O.isClassType(u)&&i.add(u.name),g instanceof T)){let l=B(o,g);(l==="ObjectProperty"||l==="Property")&&d.add(u.name)}}for(let g of s)for(let[u,l]of Object.entries(g.body))d.has(u)&&l?.range&&typeof l.range=="string"&&f.set(u,l.range);let p=new Map;for(let g of o){let u=g;u.name&&p.set(u.name,u)}for(let g of s){let u=g.metadata.namespace_,l=u?`${u.publisher}/${u.package_}`:"",m=u?.version?`${u.version.major}.${u.version.minor}.${u.version.patch}`:"",b=ke(g);for(let[h,y]of Object.entries(g.body)){if(!y||typeof y!="object")continue;let C=p.get(h),k="Unknown";if(C){let R=C,j=C instanceof T?B(o,C):void 0;O.isClassType(R)?k="Class":j==="ObjectProperty"?k="ObjectProperty":j==="DatatypeProperty"?k="DatatypeProperty":j==="AnnotationProperty"?k="AnnotationProperty":O.isDatatypeType(R)?k="Datatype":j==="Property"?k="ObjectProperty":O.isInstanceOfKnownClass(R,i)&&(k="Instance")}let S=l&&m?`${l}/${h}@${m}`:h,Z={};for(let[R,j]of Object.entries(y))R!=="type"&&(typeof j!="object"||j===null)&&(Z[R]=j);c.push({id:S,label:y.label??h,type:k,namespace:l,properties:Z}),be(S,y,k,i,d,a,l,m,b,t),q(S,y,d,f,c,a,l,m,b),Le(S,C,a)}}return{nodes:c,edges:a}}static buildFromDocument(n,t){let r=[],o=[],s=n.metadata.namespace_,c=s?.version?`${s.version.major}.${s.version.minor}.${s.version.patch}`:"",a=s?`${s.publisher}/${s.package_}`:"",i=new Set,d=new Set,f=new Map,p=ke(n);for(let[l,m]of Object.entries(n.body)){let b=m?.type;b&&(Me(b,p)&&i.add(l),Ue(b,p)&&(d.add(l),m.range&&typeof m.range=="string"&&f.set(l,m.range)))}for(let[l,m]of Object.entries(n.body)){if(!m||typeof m!="object")continue;let b=m.type,h=Fe(b,l,i,p),y=a&&c?`${a}/${l}@${c}`:l,C={};for(let[k,S]of Object.entries(m))k!=="type"&&(typeof S!="object"||S===null)&&(C[k]=S);r.push({id:y,label:m.label??l,type:h,namespace:a,properties:C}),be(y,m,h,i,d,o,a,c,p,t),q(y,m,d,f,r,o,a,c,p)}let g=new Set(r.map(l=>l.id)),u=o.filter(l=>g.has(l.source)&&g.has(l.target));return{nodes:r,edges:u}}};function ke(e,n){let t=new Map;if(e.metadata?.imports)for(let[r,o]of Object.entries(e.metadata.imports))for(let s of o){let c=s.alias??s.packageName,a=s.version,i=`${a.major}.${a.minor}.${a.patch}`;t.set(c,{publisher:r,package_:s.packageName,version:i})}return t}var Oe={"kanonak.org/core-rdf/Class":"Class","kanonak.org/core-owl/Class":"Class","kanonak.org/core-rdfs/Class":"Class","kanonak.org/core-owl/ObjectProperty":"ObjectProperty","kanonak.org/core-owl/DatatypeProperty":"DatatypeProperty","kanonak.org/core-owl/AnnotationProperty":"AnnotationProperty","kanonak.org/core-rdf/Property":"ObjectProperty","kanonak.org/core-rdfs/Datatype":"Datatype"},De=new Set(["kanonak.org/core-owl/ObjectProperty","kanonak.org/core-owl/DatatypeProperty","kanonak.org/core-owl/AnnotationProperty","kanonak.org/core-rdf/Property"]);function W(e,n){if(e.includes(".")){let t=e.indexOf("."),r=e.substring(0,t),o=e.substring(t+1),s=n.get(r);if(s)return`${s.publisher}/${s.package_}/${o}`}return null}function Me(e,n){let t=W(e,n);return t?Oe[t]==="Class":!1}function Ue(e,n){let t=W(e,n);return t?De.has(t):!1}function Fe(e,n,t,r){if(!e||e==="Package")return"Unknown";let o=W(e,r);if(o){let c=Oe[o];if(c)return c;let a=o.split("/").pop()?.split("@")[0]??"";return t.has(a)?"Instance":"Unknown"}let s=e.split(".").pop()??e;return t.has(s)?"Instance":"Unknown"}var ve=new Set(["type","label","comment","version","publisher","imports","license","match","alias","package"]);function be(e,n,t,r,o,s,c,a,i,d){let f=n.type,p=n.subClassOf;if(p){let h=Array.isArray(p)?p:[p];for(let y of h)typeof y=="string"&&s.push({source:e,target:v(y,c,a,i),type:"subClassOf",label:"subClassOf"})}let g=n.subPropertyOf;if(g){let h=Array.isArray(g)?g:[g];for(let y of h)typeof y=="string"&&s.push({source:e,target:v(y,c,a,i),type:"subPropertyOf",label:"subPropertyOf"})}let u=n.domain,l=n.range;if(d?.includePropertyEdges){let h=[[u,"domain","domain"],[l,"range","range"]];for(let[y,C,k]of h)if(y!=null)for(let S of Array.isArray(y)?y:[y])typeof S=="string"&&s.push({source:e,target:v(S,c,a,i),type:C,label:k})}if(t==="Instance"&&f){let h=f.split(".").pop()??f;s.push({source:e,target:v(h,c,a,i),type:"instanceOf",label:"type"})}if(t==="Instance")for(let[h,y]of Object.entries(n)){if(ve.has(h)||!o.has(h))continue;let C=Array.isArray(y)?y:[y];for(let k of C)typeof k=="string"&&Ge(k)&&s.push({source:e,target:v(k,c,a,i),type:"propertyValue",label:h,propertyId:v(h,c,a,i)})}if((t==="ObjectProperty"||t==="DatatypeProperty"||u&&l)&&u&&l){let h=typeof u=="string"?u:null,y=typeof l=="string"?l:null;h&&y&&s.push({source:v(h,c,a,i),target:v(y,c,a,i),type:"objectRelationship",label:n.label??e.split("/").pop()??"",propertyId:e})}}function q(e,n,t,r,o,s,c,a,i){for(let[d,f]of Object.entries(n)){if(ve.has(d)||typeof f!="object"||f===null||Array.isArray(f))continue;let p=f,g=`${e}/${d}`,u=r.get(d),l=u?u.split(".").pop()??u:"Unknown",m={};for(let[h,y]of Object.entries(p))(typeof y!="object"||y===null)&&(m[h]=y);o.push({id:g,label:`${l} (embedded)`,type:"Instance",namespace:c,properties:m});let b=c&&a?`${c}/${d}@${a}`:d;s.push({source:e,target:g,type:"propertyValue",label:d,propertyId:t.has(d)?b:void 0}),u&&s.push({source:g,target:v(l,c,a,i),type:"instanceOf",label:"type (inferred)"}),q(g,p,t,r,o,s,c,a,i)}}function Le(e,n,t){let r=n?.statement;if(Array.isArray(r))for(let o of r){if(!(o instanceof le))continue;let s=o.predicate?.subject?.name??"";for(let c of o.links){let a=c.target?.subject;if(!a)continue;let i=a.version,d=i&&typeof i.major=="number"?`@${i.major}.${i.minor}.${i.patch}`:"";t.push({source:e,target:`${a.publisher}/${a.package_}/${a.name}${d}`,type:"embeddedLink",label:s})}}}function Ge(e){return!(!e||e.includes(" ")||e.includes(`
|
|
2
|
-
`)||e.startsWith("http://")||e.startsWith("https://")||/^\d{4}-\d{2}/.test(e)||/^\d+(\.\d+)?$/.test(e))}function v(e,n,t,r){if(e.includes("@")&&e.includes("/"))return e;if(e.includes(".")){let o=e.indexOf("."),s=e.substring(0,o),c=e.substring(o+1);if(r){let a=r.get(s);if(a)return`${a.publisher}/${a.package_}/${c}@${a.version}`}return n&&t?`${n}/${c}@${t}`:c}return n&&t?`${n}/${e}@${t}`:e}import{canonicalForm as Ve,canonicalHash as Be}from"@kanonak-protocol/canonical";function X(e){return typeof e=="object"&&e!==null&&Array.isArray(e.subjects)}import{CANONICAL_FORM_VERSION as en}from"@kanonak-protocol/canonical";function ze(e){return Ve(X(e)?e:Pe(e))}function He(e){return Be(X(e)?e:Pe(e))}function Pe(e){let n=[];for(let t of e)t instanceof T&&n.push({uri:Ze(t),statements:Y(t.statement)});return{subjects:n}}function Y(e){let n=[];for(let t of e){let r=Qe(t);if(!r)continue;if(t instanceof L&&qe(t.predicate.subject)){n.push(...Xe(t,r));continue}let o=Ye(t);o&&n.push({predicate:r,value:o})}return n}function qe(e){let n=ue("type");return n!==void 0&&e.name==="type"&&e.publisher===n.publisher&&e.package_===n.package_}var we=new TextEncoder;function We(e,n){let t=we.encode(e),r=we.encode(n),o=Math.min(t.length,r.length);for(let s=0;s<o;s++)if(t[s]!==r[s])return t[s]-r[s];return t.length-r.length}function Xe(e,n){let t=[];for(let r of e.object){if(!(r instanceof _))throw new Error(`canonicalForm: a multi-valued type statement must contain only entity references, got ${r.constructor?.name??typeof r}`);t.push(J(r))}t.sort(We);for(let r=1;r<t.length;r++)if(t[r-1]===t[r])throw new Error(`canonicalForm: duplicate type ${t[r]} in a multi-valued type statement`);return t.map(r=>({predicate:n,value:{ref:r}}))}function Ye(e){if(e instanceof oe&&e.carrier)return{lit:e.lexical??String(e.object),datatype:Te(e.carrier)};if(e instanceof se)return{raw:e.object};if(e instanceof ae)return{raw:e.lexical??String(e.object)};if(e instanceof ie)return{raw:e.lexical??String(e.object)};if(e instanceof ce)return{ref:J(e.object)};if(e instanceof pe)return je(e.object);if(e instanceof L)return{list:e.object.map(Je)}}function je(e){let n=Y(e.statement);return e.name&&e.name.length>0?{embed:{name:e.name,statements:n}}:{embed:{statements:n}}}function Je(e){if(e instanceof _)return{ref:J(e)};if(e instanceof te)return je(e);if(e instanceof $){if(e.carrier)return{lit:e.lexical??String(e.value),datatype:Te(e.carrier)};let n=e.value;if(typeof n=="string")return{raw:n};if(typeof n=="number")return{raw:String(n)};if(typeof n=="boolean")return{raw:String(n)}}if(e instanceof ne)return{embed:{statements:Y(e.statement)}};throw new Error(`canonicalForm: list item of unrecognized kind (${e.constructor?.name??typeof e}); add canonicalization support before hashing data that contains it`)}function Te(e){return e===z.LangString?"kanonak.org/core-rdf/langString":`kanonak.org/core-xsd/${e}`}function Qe(e){let n=e.predicate;if(n)return Ee(n.subject)}function Ze(e){let n=e.namespace??"",t=e.name??"";return`${n}/${t}`}function J(e){return Ee(e.subject)}function Ee(e){let n=e.version;return n&&typeof n.major=="number"?`${e.publisher}/${e.package_}@${n.major}.${n.minor}.${n.patch}/${e.name}`:`${e.publisher}/${e.package_}/${e.name}`}function A(e){let n=e.replace(/^https?:\/\//,"").replace(/^git:\/\//,"").replace(/\/+$/,"").trim();if(!n)throw new Error("Publisher host cannot be empty");return n}var nn="key_thumbprint",N=class{cache=new Map;prCache=new Map;async discoverProtectedResource(n){let t=A(n);if(this.prCache.has(t))return this.prCache.get(t);let r=`https://${t}/.well-known/oauth-protected-resource`,o=await tn(r),s=o&&Array.isArray(o.authorization_servers)?o.authorization_servers.filter(a=>typeof a=="string"):[],c=s.length>0?s:null;return this.prCache.set(t,c),c}async discover(n){let t=A(n);if(this.cache.has(t))return this.cache.get(t);let r=`https://${t}/.well-known/oauth-authorization-server`,o=await this.tryEndpoint(r);if(!o){let s=`https://${t}/.well-known/openid-configuration`;o=await this.tryEndpoint(s)}return this.cache.set(t,o),o}async supportsOAuth(n){return await this.discover(n)!==null}static supportsPkceS256(n){return n.codeChallengeMethodsSupported?.some(t=>t.toUpperCase()==="S256")??!1}static supportsDynamicRegistration(n){return!!n.registrationEndpoint}static supportsAuthorizationCode(n){return n.responseTypesSupported?.some(t=>t.toLowerCase()==="code")??!1}static supportsEnrollment(n){return!!n.enrollmentEndpoint}static supportsSession(n){return!!n.sessionEndpoint}async tryEndpoint(n){let t;try{t=await fetch(n)}catch(o){let s=o instanceof Error?o.message:String(o);return s.includes("ENOTFOUND")||s.includes("ECONNREFUSED")?(console.error(` OAuth discovery: ${n} \u2014 host unreachable (${s})`),console.error(" If the server is behind a VPN, ensure you are connected.")):s.includes("CERT")||s.includes("SSL")||s.includes("TLS")?(console.error(` OAuth discovery: ${n} \u2014 TLS error (${s})`),console.error(" If using a custom CA certificate, set NODE_EXTRA_CA_CERTS=/path/to/ca.pem")):console.error(` OAuth discovery: ${n} \u2014 network error: ${s}`),null}if(!t.ok)return t.status===404||(t.status===403?(console.error(` OAuth discovery: ${n} \u2014 HTTP 403 Forbidden`),console.error(" Access may be blocked by a firewall, proxy, or WAF.")):t.status>=500&&(console.error(` OAuth discovery: ${n} \u2014 HTTP ${t.status} server error`),console.error(" The authorization server returned an internal error. Contact your IDP administrator."))),null;let r;try{r=await t.json()}catch{return console.error(` OAuth discovery: ${n} \u2014 response is not valid JSON`),console.error(" The endpoint may be returning HTML instead of JSON. Check IDP configuration."),null}return{issuer:w(r.issuer),authorizationEndpoint:w(r.authorization_endpoint),tokenEndpoint:w(r.token_endpoint),registrationEndpoint:w(r.registration_endpoint),revocationEndpoint:w(r.revocation_endpoint),scopesSupported:P(r.scopes_supported),responseTypesSupported:P(r.response_types_supported),grantTypesSupported:P(r.grant_types_supported),codeChallengeMethodsSupported:P(r.code_challenge_methods_supported),tokenEndpointAuthMethodsSupported:P(r.token_endpoint_auth_methods_supported),dpopSigningAlgValuesSupported:P(r.dpop_signing_alg_values_supported),enrollmentEndpoint:w(r.enrollment_endpoint),enrollmentIssuanceProtocols:P(r.enrollment_issuance_protocols),enrollmentKeyTypes:P(r.enrollment_key_types),enrollmentScopesSupported:P(r.enrollment_scopes_supported),enrollmentConsentBindingParam:w(r.enrollment_consent_binding_param),sessionEndpoint:w(r.session_endpoint),sessionEndpointAuthMethod:w(r.session_endpoint_auth_method)}}};async function tn(e){try{let n=await fetch(e);return n.ok?await n.json():null}catch{return null}}function w(e){return typeof e=="string"?e:null}function P(e){return Array.isArray(e)?e.filter(n=>typeof n=="string"):null}function Re(e){let n=e.headers.get("WWW-Authenticate")??void 0,t=e.headers.get("DPoP-Nonce")??void 0;if(!n&&!t)return;let r={wwwAuthenticate:n??""};if(t&&(r.nonce=t),n){let o=n.match(/acr_values\s*=\s*"([^"]*)"/i);o&&(r.acrValues=o[1])}return r}function rn(e){try{return new URL(e).host}catch{return null}}function on(e,n={}){let t=n.discovery??new N,r=new Map,o=new Map,s=async i=>{let d=r.get(i);if(d!==void 0)return d;let f=null,p=await t.discoverProtectedResource(i).catch(()=>null);return p&&p.length>0&&(f=rn(p[0])),r.set(i,f),f},c=async(i,d)=>{if(!e)return null;if(!(d.forceRefresh||d.challenge)&&o.has(i))return o.get(i);let p=await e.resolve(i,d).catch(()=>null);return o.set(i,p),p},a=async(i,d,f,p)=>{let g=await s(d);if(!g)return{res:await F(i,{method:f,redirect:"manual"}),authed:!1};let u=await c(g,{method:f,url:i,...p}),l=u?.headers??{};return{res:await F(i,{method:f,redirect:"manual",headers:l}),authed:!!u}};return async(i,d,f="GET")=>{let p=await a(i,d,f,{});if((p.res.status===401||p.res.status===403)&&p.authed){let g=Re(p.res),u={forceRefresh:g===void 0};return g&&(u.challenge=g),(await a(i,d,f,u)).res}return p.res}}var _e="KANONAK_TOKEN";function sn(){return typeof process<"u"&&process.env?process.env:{}}function an(e){return`${_e}_${e.toUpperCase().replace(/[^A-Z0-9]+/g,"_")}`}var Q=class{tokens;env;constructor(n={}){this.tokens=n.tokens??{},this.env=n.env??sn()}async resolve(n,t){let r=A(n),o=this.tokens[r]??this.env[an(r)]??this.env[_e];return o?{headers:{Authorization:`Bearer ${o}`}}:null}};var E="kanonak.org",U="core-rdf",Ie="core-xsd",Ae={publisher:E,package_:U,name:"subClassOf"},Ne={publisher:E,package_:U,name:"label"},$e={publisher:E,package_:U,name:"comment"},Ke={publisher:E,package_:"core-owl",name:"oneOf"},xe=e=>e;function cn(e){let n=fe(e,Ae);if(n)return[n];let t=[];for(let r of V(e,Ae))r instanceof _&&t.push(r.subject);return t}function pn(e,n,t){if(n.publisher===E&&n.package_===U&&n.name==="Literal")return{kind:"datatype",uri:n};let o=G(e,n);if(o){let s=xe(o);if(O.isDatatypeType(s))return{kind:"datatype",uri:n};if(O.isClassType(s))return{kind:"class",uri:x(o)??n,localName:o.name}}return n.publisher===E&&n.package_===Ie?{kind:"datatype",uri:n}:t==="datatype"?{kind:"datatype",uri:n}:{kind:"class",uri:n,localName:n.name}}function ln(e,n,t){if(!n.range)throw new Error(`Property ${n.uri.publisher}/${n.uri.package_}/${n.uri.name} has no rdfs.range; every property must declare a range. Validate the ontology before introspecting it.`);let r=pn(e,n.range,n.kind),o=n.kind==="object"?"object":n.kind==="datatype"?"datatype":r.kind==="class"?"object":"datatype";return{uri:n.uri,localName:n.uri.name,kind:o,range:r,...n.label!==void 0?{label:n.label}:{},...n.comment!==void 0?{comment:n.comment}:{},...t??{}}}var M=e=>new re(E,Ie,e);function un(e){return typeof e=="boolean"?M("boolean"):typeof e=="number"?Number.isInteger(e)?M("integer"):M("decimal"):M("string")}function dn(e,n){let t=[];for(let r of V(n,Ke))if(r instanceof _){let o=G(e,r.subject),s=(o?x(o):void 0)??r.subject,c=o?I(o,Ne):void 0,a=o?I(o,$e):void 0;t.push({kind:"individual",uri:s,localName:s.name,...c!==void 0?{label:c}:{},...a!==void 0?{comment:a}:{}})}else r instanceof $&&t.push({kind:"literal",value:r.value,datatype:un(r.value)});return t}function fn(e,n,t,r){let o=ge(e,n),s=K(n);return ye(e,n).filter(a=>t?!0:a.domains.some(i=>K(i)===s)).map(a=>ln(e,a,he(r,o,a.uri)))}async function gn(e,n,t){let r=e.metadata?.namespace_;if(!r)throw new Error("buildOntologyModel: document has no namespace (publisher/package/version).");let o=t?.includeInherited??!1,s=await new D().parseKanonaks(n),c=me(s),a=[],i=[],d=new Set;for(let f of s){if(!(f instanceof T)||!O.isClassType(xe(f)))continue;let p=x(f);if(!p||p.publisher!==r.publisher||p.package_!==r.package_||p.version&&r.version&&!ee(p.version,r.version))continue;let g=K(p);if(d.has(g))continue;d.add(g);let u=cn(f).map(b=>({uri:b,localName:b.name})),l=I(f,Ne),m=I(f,$e);a.push({uri:p,localName:p.name,superClasses:u,properties:fn(s,p,o,c),...l!==void 0?{label:l}:{},...m!==void 0?{comment:m}:{}}),de(f,Ke)&&i.push({uri:p,localName:p.name,members:dn(s,f),...l!==void 0?{label:l}:{},...m!==void 0?{comment:m}:{}})}return{classes:a,enums:i}}export{Ce as a,Se as b,H as c,ze as d,He as e,en as f,A as g,nn as h,N as i,Re as j,on as k,Q as l,gn as m};
|
package/dist/chunk-O6YV2SDB.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as M,d as L,m as k,r as V,s as E,v as x,w as C,y as F}from"./chunk-H6UAD2LP.js";import{a as P}from"./chunk-FUUTGGJS.js";var B=class{cache=new Map;repository;logger;constructor(e,n){this.repository=e,this.logger=n}async resolveEntityAsync(e,n){let r=n.metadata?.namespace_?.toString()??"unknown",a=this.cache.get(r);if(a){let i=a.get(e);if(i)return i}let o=await this.buildEntityIndexAsyncInternal(n,new Set,"",new Map);return this.cache.set(r,o),o.get(e)??null}async resolveAllEntitiesAsync(e,n){let r=await this.buildAllEntitiesIndexAsync(n,new Set,"");if(e.includes(".")){let a=e.split("."),o=a[0],i=a[1],l=await this.findDocumentForAlias(n,o);return l?await this.resolveAllEntitiesAsync(i,l):[]}return r.filter(a=>a.entityName===e)}async buildAllEntitiesIndexAsync(e,n,r){let a=[],o=e.metadata?.namespace_?.toString()??"unknown";if(this.logger?.debug?.(`Building ALL entities index for namespace: ${o}`),n.has(o))return this.logger?.debug?.(`Skipping ${o} - already visited (circular import prevention)`),a;n.add(o);let i=r.length===0?o:`${r} \u2192 ${o}`;for(let[l,p]of Object.entries(e.body))if(!l.includes(".")&&p&&typeof p=="object"&&!Array.isArray(p)){if(!e.metadata.namespace_)continue;let d=e.metadata.namespace_.version??{major:1,minor:0,patch:0,toString:()=>"1.0.0",equals:()=>!1,getHashCode:()=>0,compareTo:()=>0};a.push({entityName:l,uri:new P(e.metadata.namespace_.publisher,e.metadata.namespace_.package_,l,d),entity:p,definedInNamespace:o,isImported:r.length>0,importPath:i})}if(this.logger?.debug?.(`Collected ${a.length} entities from ${o}`),e.metadata?.imports){let l=Object.values(e.metadata.imports).reduce((p,d)=>p+d.length,0);this.logger?.debug?.(`Processing ${l} import(s) for ${o}`);for(let[p,d]of Object.entries(e.metadata.imports))for(let g of d)try{this.logger?.debug?.(`Resolving import: ${p}/${g.packageName}`);let y=await this.repository.getHighestCompatibleVersionAsync(p,g);if(y){this.logger?.debug?.(`Successfully loaded import: ${y.metadata?.namespace_?.toString()}`);let f=await this.buildAllEntitiesIndexAsync(y,n,i);a.push(...f),this.logger?.debug?.(`Added ${f.length} entities from import ${y.metadata?.namespace_?.toString()}`)}else this.logger?.warn?.(`Failed to load import: ${p}/${g.packageName}`)}catch(y){let f=y;throw this.logger?.error?.(`Failed to process import ${p}/${g.packageName} for namespace ${o}. Error: ${f.message}`,f),new Error(`Failed to process import ${p}/${g.packageName} for namespace ${o}. See inner exception for details.`,{cause:y})}}return a}async buildEntityIndexAsync(e){return await this.buildEntityIndexAsyncInternal(e,new Set,"",new Map)}async buildEntityIndexAsyncInternal(e,n,r,a){let o=new Map,i=e.metadata?.namespace_?.toString()??"unknown";if(this.logger?.debug?.(`Building entity index for namespace: ${i}`),n.has(i))return this.logger?.debug?.(`Skipping ${i} - circular import in progress`),o;let l=a.get(i);if(l)return l;n.add(i);let p=r.length===0?i:`${r} \u2192 ${i}`,d=0;for(let[g,y]of Object.entries(e.body))if(!g.includes(".")&&y&&typeof y=="object"&&!Array.isArray(y)){if(!e.metadata.namespace_)continue;if(!o.has(g)){let f=e.metadata.namespace_.version??{major:1,minor:0,patch:0,toString:()=>"1.0.0",equals:()=>!1,getHashCode:()=>0,compareTo:()=>0};o.set(g,{entityName:g,uri:new P(e.metadata.namespace_.publisher,e.metadata.namespace_.package_,g,f),entity:y,definedInNamespace:i,isImported:r.length>0,importPath:p}),d++}}if(this.logger?.debug?.(`Indexed ${d} entities from ${i}`),e.metadata?.imports){let g=Object.values(e.metadata.imports).reduce((y,f)=>y+f.length,0);this.logger?.debug?.(`Processing ${g} import(s) for ${i}`);for(let[y,f]of Object.entries(e.metadata.imports))for(let S of f)try{this.logger?.debug?.(`Resolving import: ${y}/${S.packageName}`);let $=await this.repository.getHighestCompatibleVersionAsync(y,S);if($){this.logger?.debug?.(`Successfully loaded import: ${$.metadata?.namespace_?.toString()}`);let j=await this.buildEntityIndexAsyncInternal($,n,p,a),D=0;for(let[U,_]of j.entries()){let K=o.get(U);if(!K)o.set(U,_),D++;else if(K.isImported&&_.isImported&&(K.uri.publisher!==_.uri.publisher||K.uri.package_!==_.uri.package_)){let R=K.isAmbiguous?K:{...K,isAmbiguous:!0,ambiguousNamespaces:[K.definedInNamespace]};R.ambiguousNamespaces.includes(_.definedInNamespace)||R.ambiguousNamespaces.push(_.definedInNamespace),o.set(U,R),this.logger?.warn?.(`Ambiguous reference '${U}': defined in ${R.ambiguousNamespaces.join(", ")}`)}if(S.alias&&!U.includes(".")){let R=`${S.alias}.${U}`;o.has(R)||(o.set(R,_),D++)}}this.logger?.debug?.(`Merged ${D} entities from import ${$.metadata?.namespace_?.toString()}`)}else this.logger?.warn?.(`Failed to load import: ${y}/${S.packageName}`)}catch($){let j=$;throw this.logger?.error?.(`Failed to process import ${y}/${S.packageName} for namespace ${i}. Error: ${j.message}`,j),new Error(`Failed to process import ${y}/${S.packageName} for namespace ${i}. See inner exception for details.`,{cause:$})}}return n.delete(i),a.set(i,o),o}async findDocumentForAlias(e,n){if(!e.metadata?.imports)return null;for(let[r,a]of Object.entries(e.metadata.imports))for(let o of a){if(o.alias===n)return await this.repository.getHighestCompatibleVersionAsync(r,o);if(!o.alias&&o.packageName===n)return await this.repository.getHighestCompatibleVersionAsync(r,o)}return null}clearCache(){this.cache.clear()}clearCacheForDocument(e){this.cache.delete(e)}};var H=class t{static KNOWN_XSD_DATATYPES=new Set(["string","integer","int","boolean","decimal","float","double","date","datetime","time","duration","anyuri","base64binary","hexbinary","long","short","byte","nonnegativeinteger","positiveinteger","negativeinteger","nonpositiveinteger","unsignedint","unsignedlong","unsignedshort","unsignedbyte"]);resourceResolver;constructor(e){this.resourceResolver=e}isXsdDatatype(e){return e?e.publisher==="kanonak.org"&&e.package_==="core-xsd"&&t.KNOWN_XSD_DATATYPES.has(e.name.toLowerCase()):!1}isLiteralType(e){return e?e.publisher==="kanonak.org"&&e.package_==="core-rdf"&&e.name==="Literal":!1}isMarkdownDatatype(e){return e?e.publisher==="kanonak.org"&&e.package_==="core-prose"&&e.name==="Markdown":!1}isSubstitutableDatatype(e){return e?e.publisher==="kanonak.org"&&e.package_==="core-prose"&&(e.name==="SubstitutableString"||e.name==="Markdown"):!1}isKnownXsdDatatypeName(e){let n=e.includes(".")?e.split(".")[1]:e;return t.KNOWN_XSD_DATATYPES.has(n.toLowerCase())}async isClassTypeAsync(e,n){if(this.isKnownXsdDatatypeName(e))return!1;let r=await this.resourceResolver.resolveEntityAsync(e,n);if(r){let a=r.entity.type;if(a){let o=String(a);return o==="Class"||o==="rdfs.Class"||o.endsWith(".Class")}}return!0}getPropertyTypeClassification(e){if(!e||e.trim().length===0)return"Property";switch(e.includes(".")?e.split(".")[1]:e){case"DatatypeProperty":return"DatatypeProperty";case"ObjectProperty":return"ObjectProperty";case"AnnotationProperty":return"AnnotationProperty";case"Property":return"Property";default:return"Property"}}isEffectiveDatatypeProperty(e,n){return!!(e==="DatatypeProperty"||e==="Property"&&this.isXsdDatatype(n)||e==="Property"&&this.isLiteralType(n))}isEffectiveObjectProperty(e,n){return!!(e==="ObjectProperty"||e==="Property"&&n&&!this.isXsdDatatype(n)&&!this.isLiteralType(n))}};function q(t){if(!t||t.trim().length===0)throw new Error("Kanonak address string cannot be null or empty");let e=t.trim(),n=e.split("/");if(n.length===1){let r=n[0];if(!r)throw new Error(`Invalid Kanonak address: "${t}". Expected publisher, publisher/package[@version], or publisher/package[@version]/name.`);if(r.includes("@"))throw new Error(`Invalid Kanonak address: "${t}". A bare publisher cannot carry an @version qualifier \u2014 versions belong to packages.`);return{kind:"publisher",publisher:r}}if(n.length===2){let[r,a]=n;if(!r||!a)throw new Error(`Invalid Kanonak address: "${t}". Expected publisher/package[@version].`);let o=a.indexOf("@");if(o===-1)return{kind:"package",publisher:r,package_:a};let i=a.substring(0,o),l=a.substring(o+1);if(!i||!l)throw new Error(`Invalid Kanonak address: "${t}". Expected publisher/package[@version].`);let p=J(l);return{kind:"package",publisher:r,package_:i,version:p}}return{kind:"resource",uri:P.parse(e)}}function Ke(t){switch(t.kind){case"publisher":return t.publisher;case"package":return t.version?`${t.publisher}/${t.package_}@${t.version.major}.${t.version.minor}.${t.version.patch}`:`${t.publisher}/${t.package_}`;case"resource":return t.uri.toString()}}function J(t){let e=t.split(".").map(Number);return Q(e[0]||0,e[1]||0,e[2]||0)}function Q(t,e,n){return{major:t,minor:e,patch:n,toString:()=>`${t}.${e}.${n}`,equals:r=>!r||typeof r!="object"?!1:r.major===t&&r.minor===e&&r.patch===n,getHashCode:()=>t<<20|e<<10|n,compareTo:r=>t!==r.major?t-r.major:e!==r.minor?e-r.minor:n-r.patch}}function Se(t){return`${t.publisher}/${t.package_}/${t.name}`}function u(t,e,n){return`${t}/${e}/${n}`}function $e(t){return`${t.s}|${t.p}|${Z(t.o)}`}function Z(t){switch(t.kind){case"uri":return`u:${t.key}`;case"literal":return`l:${t.datatype}:${t.lexical}`;case"blank":return`b:${t.id}`}}function _e(t,e,n){return{s:t,p:e,o:{kind:"uri",key:n}}}var c="kanonak.org",s="core-rdf",m="core-owl",W="core-kanonak",O=new Map([["type",s],["subClassOf",s],["subPropertyOf",s],["domain",s],["range",s],["label",s],["comment",s],["seeAlso",s],["isDefinedBy",s],["member",s],["Resource",s],["Class",s],["Property",s],["Datatype",s],["Literal",s],["List",s],["ObjectProperty",m],["DatatypeProperty",m],["AnnotationProperty",m],["Thing",m],["Nothing",m],["Package",W]]),ee=new Set(["type","subClassOf","subPropertyOf","domain","range"]);function Ae(t){return O.has(t)}function Ue(t){let e=O.get(t);return e?{publisher:c,package_:e}:void 0}function I(t,e,n){if(!t||!t.name)return;let r=O.get(t.name);if(!r)return;let a=()=>{t.publisher=c,t.package_=r,n&&(t.version=n.get(r))};if(ee.has(t.name)){let o=t.publisher===c&&t.package_===r;t.publisher=c,t.package_=r,!o&&n&&(t.version=n.get(r));return}t.publisher===c&&t.package_===r||t.publisher&&t.publisher.length>0&&(!e||e(t))||a()}var X=class{type=u(c,s,"type");subClassOf=u(c,s,"subClassOf");subPropertyOf=u(c,s,"subPropertyOf");domain=u(c,s,"domain");range=u(c,s,"range");label=u(c,s,"label");comment=u(c,s,"comment");resource=u(c,s,"Resource");class_=u(c,s,"Class");datatype=u(c,s,"Datatype");literal=u(c,s,"Literal");equivalentClass=u(c,m,"equivalentClass");equivalentProperty=u(c,m,"equivalentProperty");inverseOf=u(c,m,"inverseOf");sameAs=u(c,m,"sameAs");transitiveProperty=u(c,m,"TransitiveProperty");symmetricProperty=u(c,m,"SymmetricProperty");objectProperty=u(c,m,"ObjectProperty");datatypeProperty=u(c,m,"DatatypeProperty");annotationProperty=u(c,m,"AnnotationProperty");package_=u(c,W,"Package")};var ne=new Set(["kanonak.org/core-rdf","kanonak.org/core-owl","kanonak.org/core-xsd","kanonak.org/core-kanonak"]);function b(t){let e=t;if(e.entity&&typeof e.entity=="object"){let n=e.entity.type;if(typeof n=="string"){let a={publisher:"",package_:"",name:n.includes(".")?n.substring(n.lastIndexOf(".")+1):n};return I(a),{publisher:a.publisher,package_:a.package_,name:a.name}}}if(e.statement&&Array.isArray(e.statement)){for(let n of e.statement)if(n.predicate?.subject?.name==="type"&&n.object?.subject){let r=n.object.subject,a={publisher:r.publisher??"",package_:r.package_??"",name:r.name};return I(a),{publisher:a.publisher,package_:a.package_,name:a.name}}}return null}function h(t,e){return ne.has(`${t}/${e}`)}var te=new Set(["Property","ObjectProperty","DatatypeProperty","AnnotationProperty"]);function N(t){if(h(t.publisher,t.package_))return te.has(t.name)?t.name:void 0}var Y=class t{static getTypeUri(e){return b(e)}static isCoreOntologyType(e){return h(e.publisher,e.package_)}static isClassType(e){let n=b(e);return n?h(n.publisher,n.package_)&&n.name==="Class":!1}static isDatatypeType(e){let n=b(e);return n?h(n.publisher,n.package_)&&n.name==="Datatype":!1}static isDatatypePropertyType(e){let n=b(e);return n?h(n.publisher,n.package_)&&n.name==="DatatypeProperty":!1}static isObjectPropertyType(e){let n=b(e);return n?h(n.publisher,n.package_)&&n.name==="ObjectProperty":!1}static isAnnotationPropertyType(e){let n=b(e);return n?h(n.publisher,n.package_)&&n.name==="AnnotationProperty":!1}static isGenericPropertyType(e){let n=b(e);return n?h(n.publisher,n.package_)&&n.name==="Property":!1}static isAnyPropertyType(e){let n=b(e);return!n||!h(n.publisher,n.package_)?!1:n.name==="Property"||n.name==="DatatypeProperty"||n.name==="ObjectProperty"||n.name==="AnnotationProperty"}static isSchemaDefinitionType(e){let n=b(e);return!n||!h(n.publisher,n.package_)?!1:n.name==="Class"||n.name==="Property"||n.name==="DatatypeProperty"||n.name==="ObjectProperty"||n.name==="AnnotationProperty"||n.name==="Datatype"}static isInstanceOfKnownClass(e,n){if(t.isSchemaDefinitionType(e))return!1;let r=b(e);return r?n.has(r.name):!1}};var v="kanonak.org",A="core-rdf",re={publisher:v,package_:A,name:"domain"},ae={publisher:v,package_:A,name:"range"},oe={publisher:v,package_:A,name:"subClassOf"},ie={publisher:v,package_:A,name:"type"},se={publisher:v,package_:A,name:"label"},pe={publisher:v,package_:A,name:"comment"},ce=new P(v,A,"Resource");function le(t){try{let e=q(`${t.namespace}/${t.name}`);return e.kind==="resource"?e.uri:void 0}catch{return}}function T(t,e){let n=C(t,e);if(n)return[n];let r=[];for(let a of F(t,e))a instanceof L&&r.push(a.subject);return r}function G(t,e){let n=[],r=new Set,a="version"in e?e.version:void 0,o=[new P(e.publisher,e.package_,e.name,a??void 0)];for(;o.length>0;){let i=o.shift(),l=k(i);if(r.has(l))continue;r.add(l),n.push(i);let p=ue(t,i);p&&o.push(...T(p,oe))}return n}function ue(t,e){return e.version&&typeof e.version.major=="number"?V(t,e)??E(t,e)[0]:E(t,e)[0]}function w(t,e){let n;for(let r of me(e)){let a=ye(t,r);if(a){if(a!=="Property")return a;n??=a}}return n}function ye(t,e){let n=N(e);if(n)return n;let r=z.get(t);r||(r=new Map,z.set(t,r));let a=e.version,o=a&&typeof a.major=="number"?`${k(e)}@${a.major}.${a.minor}.${a.patch}`:k(e),i=r.get(o);if(i!==void 0)return i??void 0;let l;for(let p of G(t,e)){let d=N(p);if(d){if(d!=="Property"){l=d;break}l??="Property"}}return r.set(o,l??null),l}var z=new WeakMap;function Te(t,e){return w(t,e)!==void 0}function Me(t,e){return w(t,e)==="ObjectProperty"}function Le(t,e){return w(t,e)==="DatatypeProperty"}function de(t,e){let n=new Set([k(ce)]);for(let r of G(t,e))n.add(k(r));return n}function ge(t,e){let n=de(t,e),r=[],a=new Set;for(let o of t){if(!(o instanceof M))continue;let i=w(t,o);if(!i)continue;let l=T(o,re);if(!l.some(g=>n.has(k(g))))continue;let p=le(o);if(!p)continue;let d=k(p);a.has(d)||(a.add(d),r.push({uri:p,label:x(o,se),comment:x(o,pe),kind:i==="ObjectProperty"?"object":i==="DatatypeProperty"?"datatype":"other",range:C(o,ae),domains:l}))}return r}function Ve(t,e,n){let r=ge(t,e).find(a=>k(a.uri)===k(n));return r?{ok:!0,descriptor:r}:{ok:!1,message:`Property ${n.publisher}/${n.package_}/${n.name} is not in scope for ${e.publisher}/${e.package_}/${e.name}.`}}function me(t){return T(t,ie)}export{B as a,H as b,q as c,Ke as d,Se as e,u as f,$e as g,Z as h,_e as i,Ae as j,Ue as k,I as l,X as m,N as n,Y as o,le as p,G as q,w as r,Te as s,Me as t,Le as u,ge as v,Ve as w,me as x};
|